There is a better than even chance that Bernhard is gray. It is likely that John moved to the garden. We believe that Brian is a frog. It is highly likely that if 'Brian is a frog and John moved to the garden' then Jeff left the apple. It is probable that if either 'Brian is a frog' or 'John moved to the garden' but not both then Mary grabbed the milk. It is certain that if either 'Bernhard is gray' or 'John moved to the garden' but not both then Lily is a rhino.
Chances are about even that either 'Lily is a rhino' or 'Mary grabbed the milk' but not both.
Chances are about even that either 'Lily is a rhino' or 'Mary grabbed the milk' but not both.
It is certain that either 'Lily is a rhino' or 'Mary grabbed 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.6::factA.
  0.7::factB.
  0.75::factC.
  %hop1
  0.9::factX:-and(factC,factB).
  0.7::factY:-xor(factC,factB).
  1.0::factZ:-xor(factA,factB).

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

  query(conclusion).
  
Either 'Lily is a rhino' or 'Mary grabbed the milk' but not both.