Chances are slight that Brian is gray. It is impossible that Bernhard is a rhino. There is a very good chance that Winona is a sheep. It is certain that if 'Bernhard is a rhino and Winona is a sheep' then Gertrude is a mouse. It is likely that if either 'Brian is gray' or 'Winona is a sheep' but not both then Fred dropped the milk. It is impossible that if either 'Brian is gray' or 'Winona is a sheep' but not both then Lily is white.
There is little chance that either 'Lily is white' or 'Brian is gray' but not both.
There is little chance that either 'Lily is white' or 'Brian is gray' but not both.
It is probable that either 'Lily is white' or 'Brian is gray' 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.8::factC.
  %hop1
  1.0::factX:-and(factB,factC).
  0.7::factY:-xor(factA,factC).
  0.0::factZ:-xor(factA,factC).

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

  query(conclusion).
  
Either 'Lily is white' or 'Brian is gray' but not both.