There is almost no chance that Yann is hungry. It is probable that Lily is yellow. It is highly unlikely that Bernhard is a lion. It is certain that if either 'Bernhard is a lion' or 'Yann is hungry' but not both then Greg is yellow. Chances are about even that if either 'Bernhard is a lion' or 'Yann is hungry' but not both then Julius is a swan. It is unlikely that if 'Yann is hungry' or 'Bernhard is a lion' or both then Sandra dropped the milk.
It is highly unlikely that 'Lily is yellow' or 'Yann is hungry' or both.
It is probably the case that 'Lily is yellow' or 'Yann is hungry' or both.
It is highly unlikely that 'Lily is yellow' or 'Yann is hungry' or both.

  and(A,B) :- A,B.
  or(A,B) :- A;B.
  nand(A,B) :- not(and(A,B)).
  nor(A,B) :- not(or(A,B)).
  xor(A,B) :- or(A,B), nand(A,B).

  %hop0
  0.02::factA.
  0.7::factB.
  0.05::factC.
  %hop1
  1.0::factX:-xor(factC,factA).
  0.5::factY:-xor(factC,factA).
  0.2::factZ:-or(factA,factC).

  %hop2
  conclusion:-or(factB,factA).

  query(conclusion).
  
'Lily is yellow' or 'Yann is hungry' or both.