It is certain that Julius is gray. It is almost certain that Brian is a frog. It is almost certain that Jeff went to the garden. There is little chance that if 'Brian is a frog and Jeff went to the garden' then Bernhard is a swan. We believe that if 'Brian is a frog' or 'Jeff went to the garden' or both then John grabbed the milk. We doubt that if 'Julius is gray and Brian is a frog' then Jessica is a mouse.
We believe that either 'Jeff went to the garden' or 'Julius is gray' but not both.
It is highly unlikely that either 'Jeff went to the garden' or 'Julius is gray' but not both.
We believe that either 'Jeff went to the garden' or 'Julius is gray' 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
  1.0::factA.
  0.95::factB.
  0.95::factC.
  %hop1
  0.1::factX:-and(factB,factC).
  0.75::factY:-or(factB,factC).
  0.2::factZ:-and(factA,factB).

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

  query(conclusion).
  
Either 'Jeff went to the garden' or 'Julius is gray' but not both.