It is probably the case that Gertrude is a wolf. It is probably the case that Greg is gray. It is highly unlikely that Brian is a frog. It is probable that if either 'Gertrude is a wolf' or 'Brian is a frog' but not both then John went to the garden. We believe that if 'Greg is gray' or 'Brian is a frog' or both then Bernhard is green. Chances are slight that if either 'Gertrude is a wolf' or 'Brian is a frog' but not both then Julius is white.
We believe that 'John went to the garden' or 'Bernhard is green' or both.
We believe that 'John went to the garden' or 'Bernhard is green' or both.
It is highly unlikely that 'John went to the garden' or 'Bernhard is green' 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.7::factA.
  0.7::factB.
  0.05::factC.
  %hop1
  0.7::factX:-xor(factA,factC).
  0.75::factY:-or(factB,factC).
  0.1::factZ:-xor(factA,factC).

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

  query(conclusion).
  
'John went to the garden' or 'Bernhard is green' or both.