We believe that John went to the office. It is probable that Bernhard is gray. Chances are slight that Mary left the milk. Chances are about even that if either 'John went to the office' or 'Mary left the milk' but not both then Brian is yellow. It is improbable that if either 'Bernhard is gray' or 'Mary left the milk' but not both then Lily is a rhino. We doubt that if 'Bernhard is gray and John went to the office' then Greg is a swan.
There is little chance that either 'Lily is a rhino' or 'Bernhard is gray' but not both.
There is a better than even chance that either 'Lily is a rhino' or 'Bernhard is gray' but not both.
There is little chance that either 'Lily is a rhino' or 'Bernhard is gray' 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.75::factA.
  0.7::factB.
  0.1::factC.
  %hop1
  0.5::factX:-xor(factA,factC).
  0.1::factY:-xor(factB,factC).
  0.2::factZ:-and(factB,factA).

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

  query(conclusion).
  
Either 'Lily is a rhino' or 'Bernhard is gray' but not both.