It is likely that Brian is green. There is almost no chance that Julius is yellow. There is a very good chance that Bernhard is gray. There is a better than even chance that if either 'Bernhard is gray' or 'Brian is green' but not both then Greg is yellow. It is likely that if either 'Bernhard is gray' or 'Brian is green' but not both then Mary went to the kitchen. It is certain that if 'Bernhard is gray and Brian is green' then Lily is a swan.
It is impossible that 'Greg is yellow and Julius is yellow'.
It is impossible that 'Greg is yellow and Julius is yellow'.
It is likely that 'Greg is yellow and Julius is yellow'.

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

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

  query(conclusion).
  
'Greg is yellow and Julius is yellow'.