It is improbable that Julius is a swan. It is impossible that Mary left the football. It is likely that Greg is gray. It is improbable that if either 'Greg is gray' or 'Julius is a swan' but not both then Lily is a rhino. It is highly likely that if 'Mary left the football and Greg is gray' then John moved to the garden. It is probably the case that if either 'Greg is gray' or 'Mary left the football' but not both then Daniel got the milk.
It is unlikely that either 'Lily is a rhino' or 'Julius is a swan' but not both.
It is unlikely that either 'Lily is a rhino' or 'Julius is a swan' but not both.
It is likely that either 'Lily is a rhino' or 'Julius is a swan' 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.1::factA.
  0.0::factB.
  0.7::factC.
  %hop1
  0.1::factX:-xor(factC,factA).
  0.9::factY:-and(factB,factC).
  0.7::factZ:-xor(factC,factB).

  %hop2
  conclusion:-xor(factX,factA).

  query(conclusion).
  
Either 'Lily is a rhino' or 'Julius is a swan' but not both.