We believe that Mary went to the office. There is almost no chance that Bernhard is gray. We believe that John put down the milk. It is probable that if 'Bernhard is gray' or 'John put down the milk' or both then Gertrude is a wolf. It is probably the case that if 'Bernhard is gray' or 'Mary went to the office' or both then Brian is a frog. There is a very good chance that if 'Bernhard is gray and Mary went to the office' then Jessica is a sheep.
It is probably not the case that either 'Gertrude is a wolf' or 'John put down the milk' but not both.
It is probably not the case that either 'Gertrude is a wolf' or 'John put down the milk' but not both.
It is almost certain that either 'Gertrude is a wolf' or 'John put down 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.75::factA.
  0.02::factB.
  0.75::factC.
  %hop1
  0.7::factX:-or(factB,factC).
  0.7::factY:-or(factB,factA).
  0.8::factZ:-and(factB,factA).

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

  query(conclusion).
  
Either 'Gertrude is a wolf' or 'John put down the milk' but not both.