It is certain that Bernhard is green. It is highly unlikely that John picked up the apple. It is certain that Mary dropped the milk. It is almost certain that if either 'John picked up the apple' or 'Bernhard is green' but not both then Jessica is a cat. It is improbable that if either 'Bernhard is green' or 'John picked up the apple' but not both then Winona is a sheep. There is little chance that if either 'Bernhard is green' or 'Mary dropped the milk' but not both then Lily is a lion.
It is probable that either 'Lily is a lion' or 'Winona is a sheep' but not both.
It is improbable that either 'Lily is a lion' or 'Winona is a sheep' but not both.
It is probable that either 'Lily is a lion' or 'Winona is a sheep' 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
  1.0::factA.
  0.05::factB.
  1.0::factC.
  %hop1
  0.95::factX:-xor(factB,factA).
  0.1::factY:-xor(factA,factB).
  0.1::factZ:-xor(factA,factC).

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

  query(conclusion).
  
Either 'Lily is a lion' or 'Winona is a sheep' but not both.