It is impossible that John went to the hallway. It is probably not the case that Lily is white. It is probably not the case that Fred moved to the office. There is almost no chance that if either 'Lily is white' or 'Fred moved to the office' but not both then Bernhard is a frog. It is highly likely that if 'John went to the hallway and Fred moved to the office' then Mary grabbed the milk. There is a better than even chance that if either 'John went to the hallway' or 'Fred moved to the office' but not both then Julius is a rhino.
It is probably the case that either 'Lily is white' or 'Bernhard is a frog' but not both.
It is probably not the case that either 'Lily is white' or 'Bernhard is a frog' but not both.
It is probably the case that either 'Lily is white' or 'Bernhard is a frog' 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.25::factB.
  0.25::factC.
  %hop1
  0.02::factX:-xor(factB,factC).
  0.9::factY:-and(factA,factC).
  0.6::factZ:-xor(factA,factC).

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

  query(conclusion).
  
Either 'Lily is white' or 'Bernhard is a frog' but not both.