It is impossible that Mary went to the bedroom. It is almost certain that Brian is yellow. We doubt that Lily is a swan. It is likely that if either 'Lily is a swan' or 'Mary went to the bedroom' but not both then Winona is a wolf. There is almost no chance that if 'Mary went to the bedroom' or 'Brian is yellow' or both then Sandra dropped the apple. There is little chance that if 'Lily is a swan' or 'Brian is yellow' or both then Greg is gray.
It is likely that either 'Lily is a swan' or 'Greg is gray' but not both.
It is probably not the case that either 'Lily is a swan' or 'Greg is gray' but not both.
It is likely that either 'Lily is a swan' or 'Greg is gray' 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.95::factB.
  0.2::factC.
  %hop1
  0.7::factX:-xor(factC,factA).
  0.02::factY:-or(factA,factB).
  0.1::factZ:-or(factC,factB).

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

  query(conclusion).
  
Either 'Lily is a swan' or 'Greg is gray' but not both.