We doubt that Mary picked up the milk. Chances are about even that Sandra dropped the milk. It is almost certain that Jeff went to the garden. There is almost no chance that if either 'Mary picked up the milk' or 'Jeff went to the garden' but not both then Lily is a swan. There is almost no chance that if either 'Mary picked up the milk' or 'Jeff went to the garden' but not both then Bernhard is a swan. There is little chance that if 'Jeff went to the garden and Sandra dropped the milk' then Greg is a frog.
It is probably the case that either 'Mary picked up the milk' or 'Lily is a swan' but not both.
It is unlikely that either 'Mary picked up the milk' or 'Lily is a swan' but not both.
It is probably the case that either 'Mary picked up the milk' or 'Lily is a swan' 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.5::factB.
  0.95::factC.
  %hop1
  0.02::factX:-xor(factA,factC).
  0.02::factY:-xor(factA,factC).
  0.1::factZ:-and(factC,factB).

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

  query(conclusion).
  
Either 'Mary picked up the milk' or 'Lily is a swan' but not both.