It is unlikely that Lily is green. It is probable that Bernhard is gray. It is highly unlikely that Brian is a lion. There is a very good chance that if either 'Lily is green' or 'Brian is a lion' but not both then Julius is yellow. It is impossible that if 'Lily is green' or 'Bernhard is gray' or both then Mary went to the garden. Chances are about even that if 'Bernhard is gray and Lily is green' then Greg is a swan.
Chances are about even that 'Greg is a swan' or 'Mary went to the garden' or both.
It is highly unlikely that 'Greg is a swan' or 'Mary went to the garden' or both.
Chances are about even that 'Greg is a swan' or 'Mary 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.2::factA.
  0.7::factB.
  0.05::factC.
  %hop1
  0.8::factX:-xor(factA,factC).
  0.0::factY:-or(factA,factB).
  0.5::factZ:-and(factB,factA).

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

  query(conclusion).
  
'Greg is a swan' or 'Mary went to the garden' or both.