There is a better than even chance that John got the milk. It is almost certain that Fred went to the garden. Chances are slight that Bernhard is green. It is impossible that if 'John got the milk' or 'Bernhard is green' or both then Greg is gray. It is probably the case that if 'Bernhard is green and John got the milk' then Gertrude is a cat. It is highly likely that if 'Fred went to the garden and John got the milk' then Julius is a swan.
There is almost no chance that 'Greg is gray' or 'Julius is a swan' or both.
Chances are about even that 'Greg is gray' or 'Julius is a swan' or both.
There is almost no chance that 'Greg is gray' or 'Julius 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
  0.6::factA.
  0.95::factB.
  0.1::factC.
  %hop1
  0.0::factX:-or(factA,factC).
  0.7::factY:-and(factC,factA).
  0.9::factZ:-and(factB,factA).

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

  query(conclusion).
  
'Greg is gray' or 'Julius is a swan' or both.