We believe that Julius is a lion. We doubt that Sandra left the football. It is unlikely that Mary went to the office. Chances are slight that if 'Mary went to the office and Sandra left the football' then Brian is yellow. We believe that if either 'Sandra left the football' or 'Mary went to the office' but not both then Lily is a rhino. It is probably the case that if either 'Julius is a lion' or 'Sandra left the football' but not both then Bernhard is a swan.
It is probably not the case that either 'Brian is yellow' or 'Lily is a rhino' but not both.
It is probably not the case that either 'Brian is yellow' or 'Lily is a rhino' but not both.
It is probably the case that either 'Brian is yellow' 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
  0.75::factA.
  0.2::factB.
  0.2::factC.
  %hop1
  0.1::factX:-and(factC,factB).
  0.75::factY:-xor(factB,factC).
  0.7::factZ:-xor(factA,factB).

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

  query(conclusion).
  
Either 'Brian is yellow' or 'Lily is a rhino' but not both.