It is probable that Winona is a cat. There is little chance that John put down the milk. It is likely that Bernhard is yellow. Chances are about even that if either 'Bernhard is yellow' or 'Winona is a cat' but not both then Sandra got the football. It is almost certain that if 'Bernhard is yellow and John put down the milk' then Greg is gray. It is almost certain that if either 'John put down the milk' or 'Winona is a cat' but not both then Julius is a swan.
It is likely that 'Greg is gray' or 'Julius is a swan' or both.
It is likely that 'Greg is gray' or 'Julius is a swan' or both.
It is impossible that 'Greg is gray' or 'Julius is a swan' or 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.7::factC.
  %hop1
  0.5::factX:-xor(factC,factA).
  0.95::factY:-and(factC,factB).
  0.95::factZ:-xor(factB,factA).

  %hop2
  conclusion:-or(factY,factZ).

  query(conclusion).
  
'Greg is gray' or 'Julius is a swan' or both.