We doubt that Brian is white. It is probable that Sandra left the apple. It is highly likely that Lily is green. It is almost certain that if 'Sandra left the apple and Lily is green' then Bernhard is gray. Chances are slight that if 'Lily is green and Sandra left the apple' then Greg is a swan. It is probably not the case that if either 'Brian is white' or 'Lily is green' but not both then John moved to the garden.
It is certain that 'Greg is a swan and Lily is green'.
It is highly unlikely that 'Greg is a swan and Lily is green'.
It is certain that 'Greg is a swan and Lily is green'.

  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.2::factA.
  0.7::factB.
  0.9::factC.
  %hop1
  0.95::factX:-and(factB,factC).
  0.1::factY:-and(factC,factB).
  0.25::factZ:-xor(factA,factC).

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

  query(conclusion).
  
'Greg is a swan and Lily is green'.