We doubt that Lily is a swan. It is unlikely that Mary took the football. Chances are about even that Brian is green. It is impossible that if either 'Mary took the football' or 'Lily is a swan' but not both then Julius is gray. There is a better than even chance that if either 'Mary took the football' or 'Brian is green' but not both then John moved to the garden. Chances are about even that if 'Lily is a swan' or 'Mary took the football' or both then Bernhard is a frog.
It is certain that 'Bernhard is a frog' or 'John moved to the garden' or both.
Chances are about even that 'Bernhard is a frog' or 'John moved to the garden' or both.
It is certain that 'Bernhard is a frog' or 'John moved 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.2::factA.
  0.2::factB.
  0.5::factC.
  %hop1
  0.0::factX:-xor(factB,factA).
  0.6::factY:-xor(factB,factC).
  0.5::factZ:-or(factA,factB).

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

  query(conclusion).
  
'Bernhard is a frog' or 'John moved to the garden' or both.