There is a very good chance that Lily is white. There is almost no chance that Yann is bored. Chances are slight that Emily is a sheep. It is likely that if either 'Emily is a sheep' or 'Yann is bored' but not both then Greg is gray. It is impossible that if 'Lily is white and Yann is bored' then Jeff went to the bedroom. It is impossible that if 'Yann is bored' or 'Emily is a sheep' or both then Bernhard is a swan.
There is almost no chance that 'Greg is gray and Yann is bored'.
There is almost no chance that 'Greg is gray and Yann is bored'.
There is a better than even chance that 'Greg is gray and Yann is bored'.

  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.8::factA.
  0.02::factB.
  0.1::factC.
  %hop1
  0.7::factX:-xor(factC,factB).
  0.0::factY:-and(factA,factB).
  0.0::factZ:-or(factB,factC).

  %hop2
  conclusion:-and(factX,factB).

  query(conclusion).
  
'Greg is gray and Yann is bored'.