It is probable that Greg is yellow. It is impossible that Brian is a rhino. Chances are slight that Jeff went to the hallway. There is almost no chance that if either 'Greg is yellow' or 'Brian is a rhino' but not both then Lily is yellow. It is certain that if 'Jeff went to the hallway' or 'Greg is yellow' or both then Bernhard is gray. It is almost certain that if 'Jeff went to the hallway' or 'Brian is a rhino' or both then Emily is a sheep.
It is impossible that 'Brian is a rhino and Emily is a sheep'.
It is impossible that 'Brian is a rhino and Emily is a sheep'.
There is a very good chance that 'Brian is a rhino and Emily is a sheep'.

  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.0::factB.
  0.1::factC.
  %hop1
  0.02::factX:-xor(factA,factB).
  1.0::factY:-or(factC,factA).
  0.95::factZ:-or(factC,factB).

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

  query(conclusion).
  
'Brian is a rhino and Emily is a sheep'.