There is a very good chance that Greg is gray. There is almost no chance that Jessica is a sheep. There is a very good chance that Sandra left the football. There is little chance that if 'Sandra left the football and Jessica is a sheep' then Lily is yellow. There is a very good chance that if 'Jessica is a sheep' or 'Greg is gray' or both then Bill went to the garden. It is certain that if 'Sandra left the football and Greg is gray' then John discarded the milk.
There is little chance that either 'Lily is yellow' or 'Bill went to the garden' but not both.
There is a better than even chance that either 'Lily is yellow' or 'Bill went to the garden' but not both.
There is little chance that either 'Lily is yellow' or 'Bill went to the garden' 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.02::factB.
  0.8::factC.
  %hop1
  0.1::factX:-and(factC,factB).
  0.8::factY:-or(factB,factA).
  1.0::factZ:-and(factC,factA).

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

  query(conclusion).
  
Either 'Lily is yellow' or 'Bill went to the garden' but not both.