It is certain that Julius is a swan. We doubt that Mary moved to the garden. There is little chance that John went to the bedroom. It is probably the case that if 'Julius is a swan' or 'John went to the bedroom' or both then Greg is a swan. It is likely that if 'Mary moved to the garden and Julius is a swan' then Fred is in the school. It is impossible that if either 'Mary moved to the garden' or 'John went to the bedroom' but not both then Daniel took the football.
It is probably not the case that either 'Julius is a swan' or 'Greg is a swan' but not both.
It is probably not the case that either 'Julius is a swan' or 'Greg is a swan' but not both.
It is probably the case that either 'Julius is a swan' or 'Greg is a swan' 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.2::factB.
  0.1::factC.
  %hop1
  0.7::factX:-or(factA,factC).
  0.7::factY:-and(factB,factA).
  0.0::factZ:-xor(factB,factC).

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

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