It is highly likely that Mary moved to the garden. It is highly likely that John grabbed the apple. It is almost certain that Bernhard is a rhino. We believe that if either 'Bernhard is a rhino' or 'John grabbed the apple' but not both then Greg is a lion. There is a very good chance that if 'John grabbed the apple' or 'Mary moved to the garden' or both then Jeff left the football. Chances are about even that if 'Mary moved to the garden' or 'Bernhard is a rhino' or both then Brian is a frog.
It is highly likely that either 'Bernhard is a rhino' or 'Greg is a lion' but not both.
It is highly likely that either 'Bernhard is a rhino' or 'Greg is a lion' but not both.
Chances are slight that either 'Bernhard is a rhino' or 'Greg is a lion' 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.9::factA.
  0.9::factB.
  0.95::factC.
  %hop1
  0.75::factX:-xor(factC,factB).
  0.8::factY:-or(factB,factA).
  0.5::factZ:-or(factA,factC).

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

  query(conclusion).
  
Either 'Bernhard is a rhino' or 'Greg is a lion' but not both.