It is unlikely that Lily is a lion. It is almost certain that Daniel put down the milk. Chances are slight that Mary picked up the apple. It is unlikely that if either 'Mary picked up the apple' or 'Daniel put down the milk' but not both then Fred is in the office. It is probable that if 'Daniel put down the milk' or 'Lily is a lion' or both then Bernhard is gray. It is impossible that if either 'Mary picked up the apple' or 'Lily is a lion' but not both then Emily is a wolf.
It is highly unlikely that either 'Bernhard is gray' or 'Lily is a lion' but not both.
There is a better than even chance that either 'Bernhard is gray' or 'Lily is a lion' but not both.
It is highly unlikely that either 'Bernhard is gray' or 'Lily 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.2::factA.
  0.95::factB.
  0.1::factC.
  %hop1
  0.2::factX:-xor(factC,factB).
  0.7::factY:-or(factB,factA).
  0.0::factZ:-xor(factC,factA).

  %hop2
  conclusion:-xor(factY,factA).

  query(conclusion).
  
Either 'Bernhard is gray' or 'Lily is a lion' but not both.