It is certain that Lily is yellow. It is likely that Greg is a swan. Chances are slight that John went to the garden. It is probably the case that if 'John went to the garden and Lily is yellow' then Brian is white. There is a very good chance that if 'Greg is a swan' or 'Lily is yellow' or both then Bernhard is a rhino. It is unlikely that if either 'Greg is a swan' or 'Lily is yellow' but not both then Mary discarded the milk.
It is certain that 'Mary discarded the milk' or 'Lily is yellow' or both.
It is certain that 'Mary discarded the milk' or 'Lily is yellow' or both.
It is unlikely that 'Mary discarded the milk' or 'Lily is yellow' 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.7::factX:-and(factC,factA).
  0.8::factY:-or(factB,factA).
  0.2::factZ:-xor(factB,factA).

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

  query(conclusion).
  
'Mary discarded the milk' or 'Lily is yellow' or both.