It is impossible that John left the milk. It is likely that Daniel got the football. It is probable that Winona is a cat. It is highly likely that if 'Winona is a cat and Daniel got the football' then Bernhard is gray. There is a very good chance that if 'Winona is a cat' or 'John left the milk' or both then Lily is a frog. It is probable that if either 'Winona is a cat' or 'Daniel got the football' but not both then Mary went to the bedroom.
Chances are slight that either 'Daniel got the football' or 'Mary went to the bedroom' but not both.
It is probable that either 'Daniel got the football' or 'Mary went to the bedroom' but not both.
Chances are slight that either 'Daniel got the football' or 'Mary went to the bedroom' 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.7::factB.
  0.7::factC.
  %hop1
  0.9::factX:-and(factC,factB).
  0.8::factY:-or(factC,factA).
  0.7::factZ:-xor(factC,factB).

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

  query(conclusion).
  
Either 'Daniel got the football' or 'Mary went to the bedroom' but not both.