It is probably the case that Lily is green. It is highly unlikely that Brian is white. It is probably not the case that John dropped the apple. There is almost no chance that if either 'John dropped the apple' or 'Lily is green' but not both then Julius is yellow. It is certain that if 'John dropped the apple' or 'Lily is green' or both then Bernhard is a rhino. It is highly unlikely that if 'Lily is green and Brian is white' then Greg is gray.
It is certain that 'Bernhard is a rhino and Greg is gray'.
It is impossible that 'Bernhard is a rhino and Greg is gray'.
It is certain that 'Bernhard is a rhino and Greg 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
  0.7::factA.
  0.05::factB.
  0.25::factC.
  %hop1
  0.02::factX:-xor(factC,factA).
  1.0::factY:-or(factC,factA).
  0.05::factZ:-and(factA,factB).

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

  query(conclusion).
  
'Bernhard is a rhino and Greg is gray'.