It is likely that Lily is a swan. It is almost certain that Sandra took the milk. It is likely that Jeff moved to the garden. We doubt that if 'Sandra took the milk' or 'Jeff moved to the garden' or both then Mary is in the bathroom. It is improbable that if 'Jeff moved to the garden' or 'Lily is a swan' or both then Greg is white. It is highly unlikely that if either 'Sandra took the milk' or 'Lily is a swan' but not both then Gertrude is a mouse.
It is probably not the case that either 'Jeff moved to the garden' or 'Sandra took the milk' but not both.
It is probably not the case that either 'Jeff moved to the garden' or 'Sandra took the milk' but not both.
It is probable that either 'Jeff moved to the garden' or 'Sandra took 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.7::factA.
  0.95::factB.
  0.7::factC.
  %hop1
  0.2::factX:-or(factB,factC).
  0.1::factY:-or(factC,factA).
  0.05::factZ:-xor(factB,factA).

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

  query(conclusion).
  
Either 'Jeff moved to the garden' or 'Sandra took the milk' but not both.