We doubt that Lily is a frog. It is improbable that Yann is hungry. It is probably the case that Mary left the football. There is a better than even chance that if 'Yann is hungry' or 'Mary left the football' or both then Sandra put down the milk. There is little chance that if either 'Yann is hungry' or 'Mary left the football' but not both then Brian is a swan. It is impossible that if either 'Mary left the football' or 'Yann is hungry' but not both then Bernhard is gray.
It is highly likely that either 'Brian is a swan' or 'Lily is a frog' but not both.
It is probably not the case that either 'Brian is a swan' or 'Lily is a frog' but not both.
It is highly likely that either 'Brian is a swan' or 'Lily is a frog' 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.1::factB.
  0.7::factC.
  %hop1
  0.6::factX:-or(factB,factC).
  0.1::factY:-xor(factB,factC).
  0.0::factZ:-xor(factC,factB).

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

  query(conclusion).
  
Either 'Brian is a swan' or 'Lily is a frog' but not both.