There is almost no chance that Lily is yellow. We doubt that Mary dropped the apple. We doubt that Bernhard is gray. It is likely that if 'Lily is yellow and Mary dropped the apple' then Daniel took the milk. It is highly likely that if 'Lily is yellow' or 'Bernhard is gray' or both then Jessica is a sheep. It is highly likely that if 'Bernhard is gray and Lily is yellow' then Bill went to the garden.
It is highly likely that either 'Bill went to the garden' or 'Mary dropped the apple' but not both.
We doubt that either 'Bill went to the garden' or 'Mary dropped the apple' but not both.
It is highly likely that either 'Bill went to the garden' or 'Mary dropped the apple' 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.02::factA.
  0.2::factB.
  0.2::factC.
  %hop1
  0.7::factX:-and(factA,factB).
  0.9::factY:-or(factA,factC).
  0.9::factZ:-and(factC,factA).

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

  query(conclusion).
  
Either 'Bill went to the garden' or 'Mary dropped the apple' but not both.