It is highly unlikely that Mary left the football. It is highly likely that Lily is white. It is likely that Bernhard is white. Chances are about even that if either 'Lily is white' or 'Bernhard is white' but not both then Gertrude is a wolf. It is probably the case that if 'Bernhard is white' or 'Lily is white' or both then John dropped the apple. It is unlikely that if 'Mary left the football and Bernhard is white' then Greg is a rhino.
It is certain that either 'Greg is a rhino' or 'Gertrude is a wolf' but not both.
We doubt that either 'Greg is a rhino' or 'Gertrude is a wolf' but not both.
It is certain that either 'Greg is a rhino' or 'Gertrude is a wolf' 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.05::factA.
  0.9::factB.
  0.7::factC.
  %hop1
  0.5::factX:-xor(factB,factC).
  0.7::factY:-or(factC,factB).
  0.2::factZ:-and(factA,factC).

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

  query(conclusion).
  
Either 'Greg is a rhino' or 'Gertrude is a wolf' but not both.