We doubt that Lily is gray. It is probably the case that Bernhard is green. It is unlikely that Julius is a frog. It is unlikely that if either 'Lily is gray' or 'Julius is a frog' but not both then Jessica is a cat. Chances are slight that if 'Lily is gray' or 'Julius is a frog' or both then Mary went to the kitchen. There is a very good chance that if either 'Bernhard is green' or 'Julius is a frog' but not both then Brian is a swan.
There is a better than even chance that either 'Lily is gray' or 'Bernhard is green' but not both.
There is a better than even chance that either 'Lily is gray' or 'Bernhard is green' but not both.
There is little chance that either 'Lily is gray' or 'Bernhard 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.2::factA.
  0.7::factB.
  0.2::factC.
  %hop1
  0.2::factX:-xor(factA,factC).
  0.1::factY:-or(factA,factC).
  0.8::factZ:-xor(factB,factC).

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

  query(conclusion).
  
Either 'Lily is gray' or 'Bernhard is green' but not both.