It is unlikely that Bernhard is yellow. It is probably the case that Mary went to the garden. We believe that Julius is a swan. It is probably the case that if 'Mary went to the garden' or 'Bernhard is yellow' or both then Lily is green. There is little chance that if 'Mary went to the garden and Bernhard is yellow' then Sumit is hungry. Chances are about even that if 'Mary went to the garden' or 'Julius is a swan' or both then Brian is a frog.
It is impossible that either 'Mary went to the garden' or 'Julius is a swan' but not both.
Chances are about even that either 'Mary went to the garden' or 'Julius is a swan' but not both.
It is impossible that either 'Mary went to the garden' or 'Julius 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.7::factB.
  0.75::factC.
  %hop1
  0.7::factX:-or(factB,factA).
  0.1::factY:-and(factB,factA).
  0.5::factZ:-or(factB,factC).

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

  query(conclusion).
  
Either 'Mary went to the garden' or 'Julius is a swan' but not both.