There is little chance that Brian is a frog. It is probably not the case that Lily is green. Chances are about even that Daniel grabbed the milk. There is a better than even chance that if 'Lily is green and Daniel grabbed the milk' then Greg is gray. It is impossible that if 'Brian is a frog' or 'Lily is green' or both then Mary went to the kitchen. It is almost certain that if either 'Brian is a frog' or 'Daniel grabbed the milk' but not both then John moved to the office.
It is almost certain that either 'John moved to the office' or 'Greg is gray' but not both.
Chances are about even that either 'John moved to the office' or 'Greg is gray' but not both.
It is almost certain that either 'John moved to the office' or 'Greg 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.1::factA.
  0.25::factB.
  0.5::factC.
  %hop1
  0.6::factX:-and(factB,factC).
  0.0::factY:-or(factA,factB).
  0.95::factZ:-xor(factA,factC).

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

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