It is certain that Greg is a frog. It is improbable that Brian is a rhino. It is probable that Daniel dropped the apple. It is highly likely that if 'Daniel dropped the apple' or 'Greg is a frog' or both then Lily is yellow. It is highly likely that if 'Brian is a rhino' or 'Daniel dropped the apple' or both then John went to the hallway. There is a very good chance that if either 'Daniel dropped the apple' or 'Greg is a frog' but not both then Mary moved to the office.
It is likely that either 'John went to the hallway' or 'Lily is yellow' but not both.
It is probably not the case that either 'John went to the hallway' or 'Lily is yellow' but not both.
It is likely that either 'John went to the hallway' or 'Lily is yellow' 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.1::factB.
  0.7::factC.
  %hop1
  0.9::factX:-or(factC,factA).
  0.9::factY:-or(factB,factC).
  0.8::factZ:-xor(factC,factA).

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

  query(conclusion).
  
Either 'John went to the hallway' or 'Lily is yellow' but not both.