It is probable that Mary moved to the garden. It is highly likely that Winona is a wolf. It is highly likely that Julius is white. It is highly unlikely that if either 'Julius is white' or 'Mary moved to the garden' but not both then Bernhard is gray. There is little chance that if 'Winona is a wolf' or 'Julius is white' or both then Brian is yellow. It is likely that if either 'Winona is a wolf' or 'Julius is white' but not both then Greg is a frog.
There is little chance that either 'Mary moved to the garden' or 'Brian is yellow' but not both.
It is likely that either 'Mary moved to the garden' or 'Brian is yellow' but not both.
There is little chance that either 'Mary moved to the garden' or 'Brian 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
  0.7::factA.
  0.9::factB.
  0.9::factC.
  %hop1
  0.05::factX:-xor(factC,factA).
  0.1::factY:-or(factB,factC).
  0.7::factZ:-xor(factB,factC).

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

  query(conclusion).
  
Either 'Mary moved to the garden' or 'Brian is yellow' but not both.