It is highly likely that Bernhard is a swan. It is highly unlikely that John put down the apple. There is almost no chance that Lily is white. Chances are about even that if either 'Lily is white' or 'John put down the apple' but not both then Jeff moved to the garden. It is probable that if either 'Lily is white' or 'John put down the apple' but not both then Brian is yellow. It is certain that if 'John put down the apple' or 'Lily is white' or both then Greg is a lion.
It is highly unlikely that either 'Jeff moved to the garden' or 'Greg is a lion' but not both.
It is highly unlikely that either 'Jeff moved to the garden' or 'Greg is a lion' but not both.
It is highly likely that either 'Jeff moved to the garden' or 'Greg is a lion' 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.05::factB.
  0.02::factC.
  %hop1
  0.5::factX:-xor(factC,factB).
  0.7::factY:-xor(factC,factB).
  1.0::factZ:-or(factB,factC).

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

  query(conclusion).
  
Either 'Jeff moved to the garden' or 'Greg is a lion' but not both.