We believe that John took the apple. We doubt that Lily is a lion. It is likely that Julius is a swan. It is probably the case that if 'Lily is a lion and John took the apple' then Jeff left the apple. We believe that if 'Lily is a lion' or 'John took the apple' or both then Bernhard is green. It is likely that if 'Lily is a lion' or 'John took the apple' or both then Greg is a frog.
We believe that 'John took the apple' or 'Jeff left the apple' or both.
We believe that 'John took the apple' or 'Jeff left the apple' or both.
It is impossible that 'John took the apple' or 'Jeff left the apple' 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.75::factA.
  0.2::factB.
  0.7::factC.
  %hop1
  0.7::factX:-and(factB,factA).
  0.75::factY:-or(factB,factA).
  0.7::factZ:-or(factB,factA).

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

  query(conclusion).
  
'John took the apple' or 'Jeff left the apple' or both.