It is certain that Bernhard is gray. It is probable that Mary moved to the garden. Chances are about even that Julius is a rhino. It is likely that if 'Julius is a rhino and Bernhard is gray' then Jeff went to the bedroom. There is a better than even chance that if 'Julius is a rhino and Bernhard is gray' then John got the milk. It is highly likely that if either 'Bernhard is gray' or 'Julius is a rhino' but not both then Greg is yellow.
It is impossible that 'Greg is yellow and Bernhard is gray'.
Chances are about even that 'Greg is yellow and Bernhard is gray'.
It is impossible that 'Greg is yellow and Bernhard is gray'.

  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
  1.0::factA.
  0.7::factB.
  0.5::factC.
  %hop1
  0.7::factX:-and(factC,factA).
  0.6::factY:-and(factC,factA).
  0.9::factZ:-xor(factA,factC).

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

  query(conclusion).
  
'Greg is yellow and Bernhard is gray'.