It is impossible that Brian is a lion. It is probably not the case that Sandra got the football. There is almost no chance that Mary put down the milk. It is certain that if 'Brian is a lion and Mary put down the milk' then Lily is white. It is highly likely that if 'Sandra got the football' or 'Brian is a lion' or both then John left the apple. It is probably the case that if 'Mary put down the milk' or 'Brian is a lion' or both then Yann is hungry.
There is almost no chance that either 'Lily is white' or 'Mary put down the milk' but not both.
There is almost no chance that either 'Lily is white' or 'Mary put down the milk' but not both.
It is probably the case that either 'Lily is white' or 'Mary put down 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.0::factA.
  0.25::factB.
  0.02::factC.
  %hop1
  1.0::factX:-and(factA,factC).
  0.9::factY:-or(factB,factA).
  0.7::factZ:-or(factC,factA).

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

  query(conclusion).
  
Either 'Lily is white' or 'Mary put down the milk' but not both.