It is unlikely that Emily is a mouse. It is impossible that Jeff went to the garden. It is improbable that Mary left the football. Chances are slight that if 'Mary left the football' or 'Jeff went to the garden' or both then Sandra took the milk. It is highly unlikely that if 'Emily is a mouse and Jeff went to the garden' then Greg is a frog. We doubt that if either 'Mary left the football' or 'Jeff went to the garden' but not both then Bernhard is green.
It is impossible that either 'Greg is a frog' or 'Jeff went to the garden' but not both.
It is impossible that either 'Greg is a frog' or 'Jeff went to the garden' but not both.
It is certain that either 'Greg is a frog' or 'Jeff went to the garden' 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.0::factB.
  0.1::factC.
  %hop1
  0.1::factX:-or(factC,factB).
  0.05::factY:-and(factA,factB).
  0.2::factZ:-xor(factC,factB).

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

  query(conclusion).
  
Either 'Greg is a frog' or 'Jeff went to the garden' but not both.