There is a very good chance that John went to the garden. There is a very good chance that Brian is a frog. We believe that Julius is a swan. We doubt that if either 'John went to the garden' or 'Julius is a swan' but not both then Bernhard is a lion. It is highly unlikely that if 'John went to the garden' or 'Julius is a swan' or both then Jason is tired. It is probable that if either 'John went to the garden' or 'Julius is a swan' but not both then Sandra dropped the milk.
There is almost no chance that either 'John went to the garden' or 'Jason is tired' but not both.
We believe that either 'John went to the garden' or 'Jason is tired' but not both.
There is almost no chance that either 'John went to the garden' or 'Jason is tired' 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.8::factA.
  0.8::factB.
  0.75::factC.
  %hop1
  0.2::factX:-xor(factA,factC).
  0.05::factY:-or(factA,factC).
  0.7::factZ:-xor(factA,factC).

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

  query(conclusion).
  
Either 'John went to the garden' or 'Jason is tired' but not both.