It is probable that Mary went to the hallway. Chances are slight that Brian is a lion. Chances are slight that Fred dropped the milk. It is impossible that if either 'Brian is a lion' or 'Mary went to the hallway' but not both then Julius is a swan. It is highly likely that if either 'Mary went to the hallway' or 'Brian is a lion' but not both then Greg is white. Chances are slight that if 'Fred dropped the milk' or 'Mary went to the hallway' or both then John moved to the office.
We believe that either 'Julius is a swan' or 'Fred dropped the milk' but not both.
It is improbable that either 'Julius is a swan' or 'Fred dropped the milk' but not both.
We believe that either 'Julius is a swan' or 'Fred dropped 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.7::factA.
  0.1::factB.
  0.1::factC.
  %hop1
  0.0::factX:-xor(factB,factA).
  0.9::factY:-xor(factA,factB).
  0.1::factZ:-or(factC,factA).

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

  query(conclusion).
  
Either 'Julius is a swan' or 'Fred dropped the milk' but not both.