Chances are slight that Daniel left the milk. It is likely that Mary moved to the office. There is little chance that Sandra got the milk. We doubt that if either 'Mary moved to the office' or 'Sandra got the milk' but not both then Julius is a frog. It is certain that if 'Daniel left the milk and Mary moved to the office' then Bernhard is a rhino. It is probable that if 'Sandra got the milk and Daniel left the milk' then Greg is a lion.
There is little chance that either 'Greg is a lion' or 'Sandra got the milk' but not both.
There is little chance that either 'Greg is a lion' or 'Sandra got the milk' but not both.
It is highly likely that either 'Greg is a lion' or 'Sandra got the milk' 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.1::factA.
  0.7::factB.
  0.1::factC.
  %hop1
  0.2::factX:-xor(factB,factC).
  1.0::factY:-and(factA,factB).
  0.7::factZ:-and(factC,factA).

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

  query(conclusion).
  
Either 'Greg is a lion' or 'Sandra got the milk' but not both.