It is probably not the case that Greg is a lion. We doubt that Bernhard is yellow. There is little chance that Jason is thirsty. It is likely that if either 'Bernhard is yellow' or 'Jason is thirsty' but not both then John picked up the milk. It is unlikely that if 'Jason is thirsty and Greg is a lion' then Mary moved to the garden. We doubt that if either 'Bernhard is yellow' or 'Greg is a lion' but not both then Brian is yellow.
It is probably not the case that either 'Mary moved to the garden' or 'Greg is a lion' but not both.
It is probably not the case that either 'Mary moved to the garden' or 'Greg is a lion' but not both.
There is a very good chance that either 'Mary moved to the garden' or 'Greg is a lion' 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.25::factA.
  0.2::factB.
  0.1::factC.
  %hop1
  0.7::factX:-xor(factB,factC).
  0.2::factY:-and(factC,factA).
  0.2::factZ:-xor(factB,factA).

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

  query(conclusion).
  
Either 'Mary moved to the garden' or 'Greg is a lion' but not both.