It is certain that Mary left the football. It is probably the case that Julius is gray. It is probably the case that John picked up the apple. Chances are slight that if either 'Mary left the football' or 'Julius is gray' but not both then Greg is white. It is probably the case that if either 'Mary left the football' or 'Julius is gray' but not both then Fred dropped the milk. There is almost no chance that if either 'Mary left the football' or 'John picked up the apple' but not both then Lily is a rhino.
It is unlikely that either 'Fred dropped the milk' or 'Lily is a rhino' but not both.
It is unlikely that either 'Fred dropped the milk' or 'Lily is a rhino' but not both.
It is likely that either 'Fred dropped the milk' or 'Lily is a rhino' 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.
  0.7::factB.
  0.7::factC.
  %hop1
  0.1::factX:-xor(factA,factB).
  0.7::factY:-xor(factA,factB).
  0.02::factZ:-xor(factA,factC).

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

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