It is certain that Jason is tired. It is certain that Sandra left the milk. There is a better than even chance that Greg is a frog. It is unlikely that if either 'Sandra left the milk' or 'Greg is a frog' but not both then Mary moved to the garden. It is unlikely that if 'Sandra left the milk and Greg is a frog' then Daniel got the football. It is probable that if 'Jason is tired' or 'Greg is a frog' or both then Bernhard is gray.
It is certain that either 'Jason is tired' or 'Sandra left the milk' but not both.
It is impossible that either 'Jason is tired' or 'Sandra left the milk' but not both.
It is certain that either 'Jason is tired' or 'Sandra left 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
  1.0::factA.
  1.0::factB.
  0.6::factC.
  %hop1
  0.2::factX:-xor(factB,factC).
  0.2::factY:-and(factB,factC).
  0.7::factZ:-or(factA,factC).

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

  query(conclusion).
  
Either 'Jason is tired' or 'Sandra left the milk' but not both.