It is highly unlikely that Greg is a lion. It is unlikely that Brian is a swan. We doubt that Bernhard is gray. It is almost certain that if 'Bernhard is gray' or 'Brian is a swan' or both then Mary left the football. It is highly likely that if 'Bernhard is gray and Brian is a swan' then John grabbed the apple. It is probably not the case that if 'Brian is a swan and Greg is a lion' then Fred went to the garden.
We believe that 'Mary left the football' or 'Fred went to the garden' or both.
It is probably not the case that 'Mary left the football' or 'Fred went to the garden' or both.
We believe that 'Mary left the football' or 'Fred went to the garden' 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.2::factB.
  0.2::factC.
  %hop1
  0.95::factX:-or(factC,factB).
  0.9::factY:-and(factC,factB).
  0.25::factZ:-and(factB,factA).

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

  query(conclusion).
  
'Mary left the football' or 'Fred went to the garden' or both.