It is certain that Bernhard is yellow. It is probable that Fred went to the garden. It is probable that Lily is green. There is almost no chance that if 'Lily is green' or 'Fred went to the garden' or both then Greg is yellow. Chances are slight that if 'Fred went to the garden' or 'Bernhard is yellow' or both then Brian is gray. Chances are slight that if 'Fred went to the garden' or 'Bernhard is yellow' or both then Sandra got the milk.
It is likely that either 'Fred went to the garden' or 'Greg is yellow' but not both.
It is likely that either 'Fred went to the garden' or 'Greg is yellow' but not both.
Chances are slight that either 'Fred went to the garden' or 'Greg is yellow' 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
  1.0::factA.
  0.7::factB.
  0.7::factC.
  %hop1
  0.02::factX:-or(factC,factB).
  0.1::factY:-or(factB,factA).
  0.1::factZ:-or(factB,factA).

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

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