We believe that Sumit is thirsty. It is highly unlikely that Mary grabbed the milk. Chances are about even that Greg is a frog. It is impossible that if 'Sumit is thirsty' or 'Greg is a frog' or both then Bernhard is green. It is probably not the case that if either 'Greg is a frog' or 'Mary grabbed the milk' but not both then Julius is a rhino. It is highly likely that if either 'Sumit is thirsty' or 'Mary grabbed the milk' but not both then John took the football.
It is probable that either 'John took the football' or 'Mary grabbed the milk' but not both.
It is probable that either 'John took the football' or 'Mary grabbed the milk' but not both.
It is improbable that either 'John took the football' or 'Mary grabbed the milk' 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.75::factA.
  0.05::factB.
  0.5::factC.
  %hop1
  0.0::factX:-or(factA,factC).
  0.25::factY:-xor(factC,factB).
  0.9::factZ:-xor(factA,factB).

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

  query(conclusion).
  
Either 'John took the football' or 'Mary grabbed the milk' but not both.