It is impossible that Mary moved to the office. There is a better than even chance that John went to the kitchen. There is little chance that Gertrude is a cat. It is probably the case that if 'Mary moved to the office and Gertrude is a cat' then Winona is a mouse. Chances are about even that if 'John went to the kitchen' or 'Mary moved to the office' or both then Julius is white. It is almost certain that if either 'John went to the kitchen' or 'Gertrude is a cat' but not both then Bernhard is a frog.
It is certain that either 'Mary moved to the office' or 'Winona is a mouse' but not both.
It is impossible that either 'Mary moved to the office' or 'Winona is a mouse' but not both.
It is certain that either 'Mary moved to the office' or 'Winona is a mouse' 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.0::factA.
  0.6::factB.
  0.1::factC.
  %hop1
  0.7::factX:-and(factA,factC).
  0.5::factY:-or(factB,factA).
  0.95::factZ:-xor(factB,factC).

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

  query(conclusion).
  
Either 'Mary moved to the office' or 'Winona is a mouse' but not both.