It is impossible that John picked up the milk. It is probably the case that Greg is a swan. It is probably not the case that Lily is gray. It is likely that if either 'Greg is a swan' or 'Lily is gray' but not both then Julius is a rhino. It is certain that if 'John picked up the milk' or 'Greg is a swan' or both then Mary moved to the garden. There is little chance that if 'John picked up the milk' or 'Greg is a swan' or both then Brian is green.
It is improbable that either 'Lily is gray' or 'Mary moved to the garden' but not both.
There is a better than even chance that either 'Lily is gray' or 'Mary moved to the garden' but not both.
It is improbable that either 'Lily is gray' or 'Mary moved to the garden' but not 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.7::factB.
  0.25::factC.
  %hop1
  0.7::factX:-xor(factB,factC).
  1.0::factY:-or(factA,factB).
  0.1::factZ:-or(factA,factB).

  %hop2
  conclusion:-xor(factC,factY).

  query(conclusion).
  
Either 'Lily is gray' or 'Mary moved to the garden' but not both.