There is a better than even chance that Fred left the football. We doubt that Bernhard is a swan. We doubt that Jeff moved to the office. It is probably not the case that if 'Bernhard is a swan and Fred left the football' then Greg is a rhino. Chances are about even that if 'Fred left the football and Jeff moved to the office' then Brian is green. There is almost no chance that if 'Fred left the football and Jeff moved to the office' then Sandra dropped the apple.
There is a very good chance that either 'Bernhard is a swan' or 'Greg is a rhino' but not both.
It is unlikely that either 'Bernhard is a swan' or 'Greg is a rhino' but not both.
There is a very good chance that either 'Bernhard is a swan' or 'Greg is a rhino' 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.6::factA.
  0.2::factB.
  0.2::factC.
  %hop1
  0.25::factX:-and(factB,factA).
  0.5::factY:-and(factA,factC).
  0.02::factZ:-and(factA,factC).

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

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