We doubt that Mary went to the garden. It is highly unlikely that John grabbed the apple. There is little chance that Lily is a swan. It is unlikely that if either 'Lily is a swan' or 'Mary went to the garden' but not both then Brian is white. There is almost no chance that if 'John grabbed the apple and Mary went to the garden' then Antoine is hungry. Chances are about even that if 'Lily is a swan' or 'Mary went to the garden' or both then Bernhard is gray.
It is probably not the case that either 'Mary went to the garden' or 'Lily is a swan' but not both.
It is probably not the case that either 'Mary went to the garden' or 'Lily is a swan' but not both.
It is highly likely that either 'Mary went to the garden' 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.05::factB.
  0.1::factC.
  %hop1
  0.2::factX:-xor(factC,factA).
  0.02::factY:-and(factB,factA).
  0.5::factZ:-or(factC,factA).

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

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