We doubt that Brian is yellow. There is little chance that Lily is a swan. It is probable that Greg is yellow. It is almost certain that if either 'Greg is yellow' or 'Lily is a swan' but not both then Emily is a sheep. We believe that if 'Brian is yellow and Greg is yellow' then John is in the garden. It is probably the case that if either 'Greg is yellow' or 'Brian is yellow' but not both then Sandra put down the milk.
It is highly likely that 'Emily is a sheep and John is in the garden'.
There is little chance that 'Emily is a sheep and John is in the garden'.
It is highly likely that 'Emily is a sheep and John is in 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.1::factB.
  0.7::factC.
  %hop1
  0.95::factX:-xor(factC,factB).
  0.75::factY:-and(factA,factC).
  0.7::factZ:-xor(factC,factA).

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

  query(conclusion).
  
'Emily is a sheep and John is in the garden'.