It is probably not the case that Lily is green. It is likely that Bernhard is gray. It is highly unlikely that Julius is a rhino. There is a better than even chance that if either 'Julius is a rhino' or 'Lily is green' but not both then Mary put down the apple. It is unlikely that if 'Bernhard is gray' or 'Julius is a rhino' or both then Emily is a sheep. It is highly likely that if 'Lily is green and Bernhard is gray' then John discarded the milk.
It is unlikely that 'Lily is green and John discarded the milk'.
It is unlikely that 'Lily is green and John discarded the milk'.
It is probable that 'Lily is green and John discarded the milk'.

  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.25::factA.
  0.7::factB.
  0.05::factC.
  %hop1
  0.6::factX:-xor(factC,factA).
  0.2::factY:-or(factB,factC).
  0.9::factZ:-and(factA,factB).

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

  query(conclusion).
  
'Lily is green and John discarded the milk'.