There is a better than even chance that Gertrude is a cat. It is probably the case that John went to the office. It is improbable that Julius is yellow. There is almost no chance that if either 'John went to the office' or 'Gertrude is a cat' but not both then Greg is a swan. There is a very good chance that if 'Julius is yellow and Gertrude is a cat' then Lily is a lion. It is probably not the case that if either 'John went to the office' or 'Julius is yellow' but not both then Bernhard is yellow.
There is a very good chance that either 'Bernhard is yellow' or 'Greg is a swan' but not both.
We doubt that either 'Bernhard is yellow' or 'Greg is a swan' but not both.
There is a very good chance that either 'Bernhard is yellow' 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
  0.6::factA.
  0.7::factB.
  0.1::factC.
  %hop1
  0.02::factX:-xor(factB,factA).
  0.8::factY:-and(factC,factA).
  0.25::factZ:-xor(factB,factC).

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

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