It is almost certain that Bernhard is a swan. It is impossible that Julius is gray. It is highly likely that Lily is white. It is unlikely that if either 'Julius is gray' or 'Bernhard is a swan' but not both then Brian is green. It is probably not the case that if 'Lily is white' or 'Julius is gray' or both then Greg is yellow. It is improbable that if either 'Lily is white' or 'Julius is gray' but not both then Mary went to the office.
It is highly likely that either 'Greg is yellow' or 'Brian is green' but not both.
It is probably not the case that either 'Greg is yellow' or 'Brian is green' but not both.
It is highly likely that either 'Greg is yellow' or 'Brian is green' 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.95::factA.
  0.0::factB.
  0.9::factC.
  %hop1
  0.2::factX:-xor(factB,factA).
  0.25::factY:-or(factC,factB).
  0.1::factZ:-xor(factC,factB).

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

  query(conclusion).
  
Either 'Greg is yellow' or 'Brian is green' but not both.