It is improbable that Lily is green. It is certain that Brian is a rhino. It is certain that Julius is yellow. It is impossible that if 'Julius is yellow' or 'Lily is green' or both then Mary went to the hallway. There is almost no chance that if either 'Julius is yellow' or 'Lily is green' but not both then Bernhard is a frog. It is probably the case that if 'Lily is green and Julius is yellow' then Greg is a swan.
It is impossible that 'Bernhard is a frog and Greg is a swan'.
It is impossible that 'Bernhard is a frog and Greg is a swan'.
It is highly likely that 'Bernhard is a frog and Greg is a swan'.

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

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

  query(conclusion).
  
'Bernhard is a frog and Greg is a swan'.