It is highly unlikely that John went to the kitchen. It is impossible that Lily is a frog. It is likely that Bernhard is gray. It is highly unlikely that if either 'John went to the kitchen' or 'Lily is a frog' but not both then Mary dropped the apple. It is probably not the case that if either 'Bernhard is gray' or 'John went to the kitchen' but not both then Greg is a swan. There is a very good chance that if 'Bernhard is gray' or 'John went to the kitchen' or both then Gertrude is a cat.
It is impossible that 'John went to the kitchen' or 'Gertrude is a cat' or both.
There is a better than even chance that 'John went to the kitchen' or 'Gertrude is a cat' or both.
It is impossible that 'John went to the kitchen' or 'Gertrude is a cat' 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.05::factA.
  0.0::factB.
  0.7::factC.
  %hop1
  0.05::factX:-xor(factA,factB).
  0.25::factY:-xor(factC,factA).
  0.8::factZ:-or(factC,factA).

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

  query(conclusion).
  
'John went to the kitchen' or 'Gertrude is a cat' or both.