It is probable that Bernhard is yellow. It is probably not the case that Brian is a frog. It is probably not the case that Bill got the milk there. It is probable that if either 'Bill got the milk there' or 'Bernhard is yellow' but not both then Greg is a swan. We doubt that if 'Bernhard is yellow and Brian is a frog' then John moved to the office. Chances are about even that if 'Brian is a frog and Bernhard is yellow' then Lily is a lion.
It is impossible that 'Greg is a swan' or 'Bill got the milk there' or both.
There is a better than even chance that 'Greg is a swan' or 'Bill got the milk there' or both.
It is impossible that 'Greg is a swan' or 'Bill got the milk there' 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.25::factB.
  0.25::factC.
  %hop1
  0.7::factX:-xor(factC,factA).
  0.2::factY:-and(factA,factB).
  0.5::factZ:-and(factB,factA).

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

  query(conclusion).
  
'Greg is a swan' or 'Bill got the milk there' or both.