There is a better than even chance that Bernhard is gray. There is almost no chance that Julius is a lion. It is highly unlikely that Jason is tired. It is almost certain that if either 'Bernhard is gray' or 'Julius is a lion' but not both then Lily is yellow. It is certain that if 'Bernhard is gray and Jason is tired' then John grabbed the apple. It is certain that if 'Bernhard is gray' or 'Jason is tired' or both then Greg is a frog.
It is impossible that 'Jason is tired and Julius is a lion'.
It is impossible that 'Jason is tired and Julius is a lion'.
It is highly likely that 'Jason is tired and Julius is a lion'.

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

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

  query(conclusion).
  
'Jason is tired and Julius is a lion'.