We believe that Greg is a swan. Chances are slight that Bill moved to the office. It is unlikely that Mary dropped the milk. We doubt that if 'Greg is a swan and Mary dropped the milk' then John grabbed the apple. It is improbable that if 'Mary dropped the milk' or 'Bill moved to the office' or both then Julius is a swan. It is certain that if either 'Mary dropped the milk' or 'Greg is a swan' but not both then Bernhard is a lion.
It is likely that either 'Greg is a swan' or 'Bernhard is a lion' but not both.
We doubt that either 'Greg is a swan' or 'Bernhard is a lion' but not both.
It is likely that either 'Greg is a swan' or 'Bernhard 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.75::factA.
  0.1::factB.
  0.2::factC.
  %hop1
  0.2::factX:-and(factA,factC).
  0.1::factY:-or(factC,factB).
  1.0::factZ:-xor(factC,factA).

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

  query(conclusion).
  
Either 'Greg is a swan' or 'Bernhard is a lion' but not both.