It is impossible that Daniel put down the milk. It is certain that Jessica is a cat. It is probable that Lily is a swan. It is probably not the case that if 'Daniel put down the milk' or 'Jessica is a cat' or both then Antoine is thirsty. Chances are slight that if either 'Lily is a swan' or 'Jessica is a cat' but not both then Bernhard is gray. Chances are about even that if either 'Jessica is a cat' or 'Daniel put down the milk' but not both then Mary moved to the garden.
It is almost certain that 'Bernhard is gray and Mary moved to the garden'.
There is almost no chance that 'Bernhard is gray and Mary moved to the garden'.
It is almost certain that 'Bernhard is gray and Mary moved to the garden'.

  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.0::factA.
  1.0::factB.
  0.7::factC.
  %hop1
  0.25::factX:-or(factA,factB).
  0.1::factY:-xor(factC,factB).
  0.5::factZ:-xor(factB,factA).

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

  query(conclusion).
  
'Bernhard is gray and Mary moved to the garden'.