It is highly unlikely that Brian is yellow. There is little chance that Daniel dropped the apple. It is improbable that Mary went to the kitchen. We doubt that if either 'Mary went to the kitchen' or 'Brian is yellow' but not both then Winona is a wolf. It is probably not the case that if either 'Daniel dropped the apple' or 'Brian is yellow' but not both then Lily is a frog. There is almost no chance that if 'Daniel dropped the apple' or 'Brian is yellow' or both then Greg is a swan.
It is probable that 'Winona is a wolf and Greg is a swan'.
It is impossible that 'Winona is a wolf and Greg is a swan'.
It is probable that 'Winona is a wolf and Greg is a swan'.

  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.05::factA.
  0.1::factB.
  0.1::factC.
  %hop1
  0.2::factX:-xor(factC,factA).
  0.25::factY:-xor(factB,factA).
  0.02::factZ:-or(factB,factA).

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

  query(conclusion).
  
'Winona is a wolf and Greg is a swan'.