It is impossible that Brian is gray. There is almost no chance that Fred dropped the apple. We believe that John grabbed the milk. It is probably the case that if either 'John grabbed the milk' or 'Fred dropped the apple' but not both then Bernhard is a lion. It is probably not the case that if 'Fred dropped the apple and Brian is gray' then Greg is a rhino. It is probably the case that if 'Brian is gray' or 'Fred dropped the apple' or both then Mary got the football.
It is impossible that 'Mary got the football and Greg is a rhino'.
It is impossible that 'Mary got the football and Greg is a rhino'.
We believe that 'Mary got the football and Greg is a rhino'.

  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.0::factA.
  0.02::factB.
  0.75::factC.
  %hop1
  0.7::factX:-xor(factC,factB).
  0.25::factY:-and(factB,factA).
  0.7::factZ:-or(factA,factB).

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

  query(conclusion).
  
'Mary got the football and Greg is a rhino'.