We doubt that John moved to the garden. It is probably the case that Greg is a rhino. We doubt that Bernhard is gray. It is impossible that if either 'John moved to the garden' or 'Bernhard is gray' but not both then Sandra left the milk. It is impossible that if 'Greg is a rhino and John moved to the garden' then Julius is a frog. There is almost no chance that if either 'Bernhard is gray' or 'Greg is a rhino' but not both then Mary went to the office.
There is almost no chance that 'Mary went to the office' or 'Sandra left the milk' or both.
There is almost no chance that 'Mary went to the office' or 'Sandra left the milk' or both.
It is almost certain that 'Mary went to the office' or 'Sandra left the milk' 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
  0.2::factA.
  0.7::factB.
  0.2::factC.
  %hop1
  0.0::factX:-xor(factA,factC).
  0.0::factY:-and(factB,factA).
  0.02::factZ:-xor(factC,factB).

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

  query(conclusion).
  
'Mary went to the office' or 'Sandra left the milk' or both.