There is almost no chance that John went to the hallway. It is almost certain that Jeff moved to the office. It is unlikely that Greg is gray. It is likely that if 'Jeff moved to the office and John went to the hallway' then Bernhard is a swan. It is unlikely that if either 'Jeff moved to the office' or 'John went to the hallway' but not both then Mary left the milk. It is likely that if either 'John went to the hallway' or 'Greg is gray' but not both then Lily is green.
It is probable that 'Greg is gray' or 'Lily is green' or both.
It is unlikely that 'Greg is gray' or 'Lily is green' or both.
It is probable that 'Greg is gray' or 'Lily 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.02::factA.
  0.95::factB.
  0.2::factC.
  %hop1
  0.7::factX:-and(factB,factA).
  0.2::factY:-xor(factB,factA).
  0.7::factZ:-xor(factA,factC).

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

  query(conclusion).
  
'Greg is gray' or 'Lily is green' or both.