It is certain that Mary moved to the garden. It is probable that John got the milk. Chances are slight that Greg is white. It is highly likely that if either 'Mary moved to the garden' or 'John got the milk' but not both then Julius is a swan. It is highly unlikely that if either 'Greg is white' or 'Mary moved to the garden' but not both then Sandra left the milk. We doubt that if 'Greg is white' or 'John got the milk' or both then Bernhard is a swan.
It is probable that 'John got the milk' or 'Bernhard is a swan' or both.
It is probable that 'John got the milk' or 'Bernhard is a swan' or both.
There is little chance that 'John got the milk' or 'Bernhard is a swan' or 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
  1.0::factA.
  0.7::factB.
  0.1::factC.
  %hop1
  0.9::factX:-xor(factA,factB).
  0.05::factY:-xor(factC,factA).
  0.2::factZ:-or(factC,factB).

  %hop2
  conclusion:-or(factB,factZ).

  query(conclusion).
  
'John got the milk' or 'Bernhard is a swan' or both.