It is probably not the case that Mary discarded the milk. Chances are about even that Gertrude is a cat. It is certain that Julius is a lion. It is impossible that if either 'Mary discarded the milk' or 'Julius is a lion' but not both then Lily is a rhino. It is improbable that if 'Gertrude is a cat' or 'Mary discarded the milk' or both then Bernhard is white. Chances are slight that if 'Julius is a lion' or 'Mary discarded the milk' or both then John moved to the office.
It is certain that either 'Bernhard is white' or 'Mary discarded the milk' but not both.
It is probably not the case that either 'Bernhard is white' or 'Mary discarded the milk' but not both.
It is certain that either 'Bernhard is white' or 'Mary discarded 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.25::factA.
  0.5::factB.
  1.0::factC.
  %hop1
  0.0::factX:-xor(factA,factC).
  0.1::factY:-or(factB,factA).
  0.1::factZ:-or(factC,factA).

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

  query(conclusion).
  
Either 'Bernhard is white' or 'Mary discarded the milk' but not both.