We doubt that Winona is a mouse. We doubt that Brian is green. It is likely that Bill left the football. It is probably not the case that if either 'Brian is green' or 'Bill left the football' but not both then Mary got the apple. It is probably the case that if either 'Winona is a mouse' or 'Brian is green' but not both then Bernhard is yellow. There is a very good chance that if 'Bill left the football' or 'Brian is green' or both then Lily is a lion.
It is probably the case that either 'Bill left the football' or 'Lily is a lion' but not both.
We doubt that either 'Bill left the football' or 'Lily is a lion' but not both.
It is probably the case that either 'Bill left the football' 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.2::factB.
  0.7::factC.
  %hop1
  0.25::factX:-xor(factB,factC).
  0.7::factY:-xor(factA,factB).
  0.8::factZ:-or(factC,factB).

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

  query(conclusion).
  
Either 'Bill left the football' or 'Lily is a lion' but not both.