It is certain that Jeff put down the milk. There is almost no chance that Mary moved to the office. It is almost certain that John went to the hallway. It is certain that if 'Jeff put down the milk' or 'Mary moved to the office' or both then Brian is a frog. It is improbable that if either 'Mary moved to the office' or 'John went to the hallway' but not both then Julius is gray. Chances are about even that if either 'John went to the hallway' or 'Mary moved to the office' but not both then Sandra left the football.
There is a very good chance that either 'Mary moved to the office' or 'Julius is gray' but not both.
Chances are slight that either 'Mary moved to the office' or 'Julius is gray' but not both.
There is a very good chance that either 'Mary moved to the office' or 'Julius 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
  1.0::factA.
  0.02::factB.
  0.95::factC.
  %hop1
  1.0::factX:-or(factA,factB).
  0.1::factY:-xor(factB,factC).
  0.5::factZ:-xor(factC,factB).

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

  query(conclusion).
  
Either 'Mary moved to the office' or 'Julius is gray' but not both.