There is a better than even chance that Bernhard is a swan. It is almost certain that John went to the hallway. It is highly unlikely that Greg is yellow. There is little chance that if either 'Greg is yellow' or 'Bernhard is a swan' but not both then Jeff discarded the milk. Chances are slight that if either 'Greg is yellow' or 'Bernhard is a swan' but not both then Brian is yellow. It is highly unlikely that if 'Bernhard is a swan' or 'John went to the hallway' or both then Lily is gray.
It is improbable that 'Greg is yellow' or 'Brian is yellow' or both.
It is improbable that 'Greg is yellow' or 'Brian is yellow' or both.
It is almost certain that 'Greg is yellow' or 'Brian is yellow' 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.6::factA.
  0.95::factB.
  0.05::factC.
  %hop1
  0.1::factX:-xor(factC,factA).
  0.1::factY:-xor(factC,factA).
  0.05::factZ:-or(factA,factB).

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

  query(conclusion).
  
'Greg is yellow' or 'Brian is yellow' or both.