It is impossible that Greg is a swan. It is impossible that Mary grabbed the apple. There is little chance that Brian is yellow. It is probable that if either 'Brian is yellow' or 'Mary grabbed the apple' but not both then Emily is a sheep. There is little chance that if 'Mary grabbed the apple and Brian is yellow' then Lily is a frog. There is little chance that if 'Brian is yellow and Mary grabbed the apple' then John moved to the garden.
It is probable that 'Brian is yellow' or 'John moved to the garden' or both.
There is little chance that 'Brian is yellow' or 'John moved to the garden' or both.
It is probable that 'Brian is yellow' or 'John moved to the garden' or both.

  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.
  0.0::factB.
  0.1::factC.
  %hop1
  0.7::factX:-xor(factC,factB).
  0.1::factY:-and(factB,factC).
  0.1::factZ:-and(factC,factB).

  %hop2
  conclusion:-or(factC,factZ).

  query(conclusion).
  
'Brian is yellow' or 'John moved to the garden' or both.