It is probably not the case that Lily is a rhino. It is probable that Antoine is hungry. There is a very good chance that Bernhard is a lion. We believe that if 'Antoine is hungry' or 'Lily is a rhino' or both then John went to the hallway. It is probably not the case that if 'Bernhard is a lion' or 'Lily is a rhino' or both then Mary grabbed the milk. It is improbable that if 'Lily is a rhino and Bernhard is a lion' then Greg is yellow.
It is probably the case that either 'Mary grabbed the milk' or 'Greg is yellow' but not both.
It is unlikely that either 'Mary grabbed the milk' or 'Greg is yellow' but not both.
It is probably the case that either 'Mary grabbed the milk' or 'Greg is yellow' but not 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.25::factA.
  0.7::factB.
  0.8::factC.
  %hop1
  0.75::factX:-or(factB,factA).
  0.25::factY:-or(factC,factA).
  0.1::factZ:-and(factA,factC).

  %hop2
  conclusion:-xor(factY,factZ).

  query(conclusion).
  
Either 'Mary grabbed the milk' or 'Greg is yellow' but not both.