There is little chance that Greg is a lion. It is almost certain that John grabbed the apple. It is almost certain that Lily is white. It is impossible that if 'Lily is white and John grabbed the apple' then Fred moved to the office. It is probable that if 'Lily is white' or 'John grabbed the apple' or both then Mary went to the hallway. It is certain that if either 'Lily is white' or 'Greg is a lion' but not both then Bernhard is gray.
It is almost certain that either 'John grabbed the apple' or 'Fred moved to the office' but not both.
It is almost certain that either 'John grabbed the apple' or 'Fred moved to the office' but not both.
There is almost no chance that either 'John grabbed the apple' or 'Fred moved to the office' 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.95::factB.
  0.95::factC.
  %hop1
  0.0::factX:-and(factC,factB).
  0.7::factY:-or(factC,factB).
  1.0::factZ:-xor(factC,factA).

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

  query(conclusion).
  
Either 'John grabbed the apple' or 'Fred moved to the office' but not both.