It is probable that Sandra put down the milk. It is almost certain that Julius is a rhino. Chances are slight that Lily is a rhino. It is almost certain that if 'Julius is a rhino and Lily is a rhino' then Bernhard is a swan. It is highly unlikely that if 'Julius is a rhino' or 'Lily is a rhino' or both then Greg is gray. We believe that if either 'Sandra put down the milk' or 'Julius is a rhino' but not both then John discarded the apple.
It is probably not the case that 'John discarded the apple' or 'Greg is gray' or both.
It is probably not the case that 'John discarded the apple' or 'Greg is gray' or both.
It is probably the case that 'John discarded the apple' or 'Greg is gray' 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.7::factA.
  0.95::factB.
  0.1::factC.
  %hop1
  0.95::factX:-and(factB,factC).
  0.05::factY:-or(factB,factC).
  0.75::factZ:-xor(factA,factB).

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

  query(conclusion).
  
'John discarded the apple' or 'Greg is gray' or both.