We doubt that John went to the kitchen. We believe that Bernhard is a swan. There is almost no chance that Julius is gray. It is probable that if either 'Julius is gray' or 'Bernhard is a swan' but not both then Greg is yellow. It is impossible that if 'Bernhard is a swan and John went to the kitchen' then Mary moved to the garden. We doubt that if 'John went to the kitchen' or 'Julius is gray' or both then Brian is a lion.
It is impossible that 'Greg is yellow and Mary moved to the garden'.
It is impossible that 'Greg is yellow and Mary moved to the garden'.
There is a very good chance that 'Greg is yellow 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.2::factA.
  0.75::factB.
  0.02::factC.
  %hop1
  0.7::factX:-xor(factC,factB).
  0.0::factY:-and(factB,factA).
  0.2::factZ:-or(factA,factC).

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

  query(conclusion).
  
'Greg is yellow and Mary moved to the garden'.