It is improbable that Lily is green. It is highly likely that Mary put down the milk. Chances are about even that Brian is gray. It is probably the case that if either 'Brian is gray' or 'Mary put down the milk' but not both then Bernhard is a swan. It is certain that if either 'Brian is gray' or 'Lily is green' but not both then Antoine is thirsty. It is probable that if 'Mary put down the milk' or 'Lily is green' or both then John discarded the apple.
It is almost certain that 'Lily is green and Brian is gray'.
It is highly unlikely that 'Lily is green and Brian is gray'.
It is almost certain that 'Lily is green and Brian 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.1::factA.
  0.9::factB.
  0.5::factC.
  %hop1
  0.7::factX:-xor(factC,factB).
  1.0::factY:-xor(factC,factA).
  0.7::factZ:-or(factB,factA).

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

  query(conclusion).
  
'Lily is green and Brian is gray'.