It is probable that John went to the kitchen. It is probably not the case that Greg is gray. There is little chance that Mary left the apple. It is highly unlikely that if either 'John went to the kitchen' or 'Mary left the apple' but not both then Bernhard is a frog. It is probable that if 'John went to the kitchen and Greg is gray' then Julius is a swan. It is impossible that if either 'Greg is gray' or 'Mary left the apple' but not both then Brian is a rhino.
It is likely that either 'Greg is gray' or 'Bernhard is a frog' but not both.
It is probably not the case that either 'Greg is gray' or 'Bernhard is a frog' but not both.
It is likely that either 'Greg is gray' or 'Bernhard is a frog' 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.25::factB.
  0.1::factC.
  %hop1
  0.05::factX:-xor(factA,factC).
  0.7::factY:-and(factA,factB).
  0.0::factZ:-xor(factB,factC).

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

  query(conclusion).
  
Either 'Greg is gray' or 'Bernhard is a frog' but not both.