It is improbable that Lily is gray. It is probable that Greg is a swan. It is highly likely that Mary went to the garden. It is probably the case that if 'Greg is a swan' or 'Mary went to the garden' or both then Fred moved to the office. It is unlikely that if either 'Lily is gray' or 'Mary went to the garden' but not both then Julius is yellow. There is almost no chance that if either 'Lily is gray' or 'Greg is a swan' but not both then John got the football.
Chances are about even that either 'Fred moved to the office' or 'Greg is a swan' but not both.
Chances are about even that either 'Fred moved to the office' or 'Greg is a swan' but not both.
It is impossible that either 'Fred moved to the office' or 'Greg 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.1::factA.
  0.7::factB.
  0.9::factC.
  %hop1
  0.7::factX:-or(factB,factC).
  0.2::factY:-xor(factA,factC).
  0.02::factZ:-xor(factA,factB).

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

  query(conclusion).
  
Either 'Fred moved to the office' or 'Greg is a swan' but not both.