We doubt that Julius is gray. It is certain that Winona is a sheep. It is impossible that Lily is white. It is unlikely that if either 'Julius is gray' or 'Winona is a sheep' but not both then Emily is a wolf. It is certain that if either 'Lily is white' or 'Winona is a sheep' but not both then Greg is yellow. There is almost no chance that if 'Winona is a sheep' or 'Julius is gray' or both then Mary went to the kitchen.
It is highly unlikely that either 'Greg is yellow' or 'Mary went to the kitchen' but not both.
It is certain that either 'Greg is yellow' or 'Mary went to the kitchen' but not both.
It is highly unlikely that either 'Greg is yellow' or 'Mary went to the kitchen' 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.2::factA.
  1.0::factB.
  0.0::factC.
  %hop1
  0.2::factX:-xor(factA,factB).
  1.0::factY:-xor(factC,factB).
  0.02::factZ:-or(factB,factA).

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

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