There is a very good chance that Gertrude is a sheep. It is probably the case that Lily is green. It is likely that Julius is a swan. Chances are slight that if 'Lily is green and Julius is a swan' then Sumit is thirsty. It is probably the case that if 'Julius is a swan and Gertrude is a sheep' then Brian is yellow. It is certain that if 'Gertrude is a sheep and Lily is green' then Mary went to the kitchen.
It is improbable that either 'Mary went to the kitchen' or 'Lily is green' but not both.
It is improbable that either 'Mary went to the kitchen' or 'Lily is green' but not both.
It is highly likely that either 'Mary went to the kitchen' or 'Lily is green' 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.8::factA.
  0.7::factB.
  0.7::factC.
  %hop1
  0.1::factX:-and(factB,factC).
  0.7::factY:-and(factC,factA).
  1.0::factZ:-and(factA,factB).

  %hop2
  conclusion:-xor(factZ,factB).

  query(conclusion).
  
Either 'Mary went to the kitchen' or 'Lily is green' but not both.