There is a very good chance that Mary moved to the garden. There is a better than even chance that Winona is a wolf. Chances are slight that Jason is thirsty. There is a better than even chance that if either 'Mary moved to the garden' or 'Winona is a wolf' but not both then Greg is yellow. Chances are slight that if 'Mary moved to the garden' or 'Winona is a wolf' or both then John left the apple. It is probably not the case that if either 'Winona is a wolf' or 'Jason is thirsty' but not both then Bernhard is white.
It is probably not the case that either 'Jason is thirsty' or 'Greg is yellow' but not both.
It is probably not the case that either 'Jason is thirsty' or 'Greg is yellow' but not both.
It is certain that either 'Jason is thirsty' 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.8::factA.
  0.6::factB.
  0.1::factC.
  %hop1
  0.6::factX:-xor(factA,factB).
  0.1::factY:-or(factA,factB).
  0.25::factZ:-xor(factB,factC).

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

  query(conclusion).
  
Either 'Jason is thirsty' or 'Greg is yellow' but not both.