We believe that Greg is a frog. We believe that Julius is gray. It is almost certain that Bill moved to the office. It is probably not the case that if 'Bill moved to the office and Greg is a frog' then Lily is a swan. Chances are slight that if 'Greg is a frog' or 'Julius is gray' or both then Mary went to the garden. It is highly likely that if either 'Julius is gray' or 'Bill moved to the office' but not both then Daniel took the milk.
It is impossible that either 'Lily is a swan' or 'Julius is gray' but not both.
It is probable that either 'Lily is a swan' or 'Julius is gray' but not both.
It is impossible that either 'Lily is a swan' 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
  0.75::factA.
  0.75::factB.
  0.95::factC.
  %hop1
  0.25::factX:-and(factC,factA).
  0.1::factY:-or(factA,factB).
  0.9::factZ:-xor(factB,factC).

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

  query(conclusion).
  
Either 'Lily is a swan' or 'Julius is gray' but not both.