There is little chance that Lily is a rhino. It is unlikely that Greg is white. It is highly unlikely that Jason is thirsty. We doubt that if either 'Greg is white' or 'Jason is thirsty' but not both then John got the apple. It is improbable that if either 'Jason is thirsty' or 'Lily is a rhino' but not both then Winona is a wolf. It is highly likely that if either 'Lily is a rhino' or 'Jason is thirsty' but not both then Mary took the milk.
It is likely that either 'Winona is a wolf' or 'Greg is white' but not both.
It is unlikely that either 'Winona is a wolf' or 'Greg is white' but not both.
It is likely that either 'Winona is a wolf' or 'Greg is white' 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.2::factB.
  0.05::factC.
  %hop1
  0.2::factX:-xor(factB,factC).
  0.1::factY:-xor(factC,factA).
  0.9::factZ:-xor(factA,factC).

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

  query(conclusion).
  
Either 'Winona is a wolf' or 'Greg is white' but not both.