It is highly likely that Lily is white. It is probably the case that Mary moved to the garden. It is likely that John went to the hallway. There is almost no chance that if 'Lily is white' or 'John went to the hallway' or both then Greg is a rhino. There is little chance that if 'Lily is white' or 'John went to the hallway' or both then Brian is green. There is a very good chance that if 'Lily is white and Mary moved to the garden' then Julius is a swan.
It is unlikely that either 'Mary moved to the garden' or 'Julius is a swan' but not both.
It is unlikely that either 'Mary moved to the garden' or 'Julius is a swan' but not both.
It is probably the case that either 'Mary moved to the garden' or 'Julius is a swan' 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.9::factA.
  0.7::factB.
  0.7::factC.
  %hop1
  0.02::factX:-or(factA,factC).
  0.1::factY:-or(factA,factC).
  0.8::factZ:-and(factA,factB).

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

  query(conclusion).
  
Either 'Mary moved to the garden' or 'Julius is a swan' but not both.