There is a very good chance that Brian is yellow. It is impossible that Bernhard is yellow. There is a very good chance that John dropped the apple. There is a better than even chance that if 'Bernhard is yellow' or 'Brian is yellow' or both then Julius is a rhino. There is a better than even chance that if 'Brian is yellow and Bernhard is yellow' then Lily is a frog. There is almost no chance that if 'Bernhard is yellow' or 'John dropped the apple' or both then Mary is in the hallway.
It is impossible that 'John dropped the apple and Lily is a frog'.
It is impossible that 'John dropped the apple and Lily is a frog'.
There is a very good chance that 'John dropped the apple and Lily is a frog'.

  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.8::factA.
  0.0::factB.
  0.8::factC.
  %hop1
  0.6::factX:-or(factB,factA).
  0.6::factY:-and(factA,factB).
  0.02::factZ:-or(factB,factC).

  %hop2
  conclusion:-and(factC,factY).

  query(conclusion).
  
'John dropped the apple and Lily is a frog'.