Chances are about even that Sandra left the football. It is highly likely that John got the apple. It is probable that Bernhard is gray. It is certain that if 'Sandra left the football and John got the apple' then Greg is a swan. It is almost certain that if 'Sandra left the football' or 'Bernhard is gray' or both then Lily is a rhino. It is highly likely that if either 'Sandra left the football' or 'John got the apple' but not both then Mary went to the bedroom.
Chances are about even that either 'Bernhard is gray' or 'Greg is a swan' but not both.
Chances are about even that either 'Bernhard is gray' or 'Greg is a swan' but not both.
It is highly unlikely that either 'Bernhard is gray' 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.5::factA.
  0.9::factB.
  0.7::factC.
  %hop1
  1.0::factX:-and(factA,factB).
  0.95::factY:-or(factA,factC).
  0.9::factZ:-xor(factA,factB).

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

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