It is likely that Fred moved to the office. There is a better than even chance that Bernhard is a rhino. There is a very good chance that Julius is a swan. There is a better than even chance that if 'Bernhard is a rhino and Fred moved to the office' then Lily is green. It is certain that if 'Julius is a swan' or 'Fred moved to the office' or both then Greg is white. There is little chance that if 'Fred moved to the office' or 'Bernhard is a rhino' or both then John dropped the apple.
It is highly likely that either 'Greg is white' or 'John dropped the apple' but not both.
It is highly likely that either 'Greg is white' or 'John dropped the apple' but not both.
It is impossible that either 'Greg is white' or 'John dropped the apple' 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.7::factA.
  0.6::factB.
  0.8::factC.
  %hop1
  0.6::factX:-and(factB,factA).
  1.0::factY:-or(factC,factA).
  0.1::factZ:-or(factA,factB).

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

  query(conclusion).
  
Either 'Greg is white' or 'John dropped the apple' but not both.