There is almost no chance that Jeff discarded the milk. Chances are slight that Lily is yellow. We doubt that Brian is a swan. It is almost certain that if either 'Jeff discarded the milk' or 'Lily is yellow' but not both then Julius is a rhino. It is probable that if either 'Jeff discarded the milk' or 'Lily is yellow' but not both then Fred went to the garden. It is impossible that if 'Jeff discarded the milk and Brian is a swan' then John grabbed the apple.
It is highly unlikely that either 'Fred went to the garden' or 'Julius is a rhino' but not both.
It is highly unlikely that either 'Fred went to the garden' or 'Julius is a rhino' but not both.
It is certain that either 'Fred went to the garden' or 'Julius 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
  0.02::factA.
  0.1::factB.
  0.2::factC.
  %hop1
  0.95::factX:-xor(factA,factB).
  0.7::factY:-xor(factA,factB).
  0.0::factZ:-and(factA,factC).

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

  query(conclusion).
  
Either 'Fred went to the garden' or 'Julius is a rhino' but not both.