Chances are slight that Brian is white. It is highly unlikely that Lily is a lion. There is a better than even chance that Bernhard is a swan. It is highly likely that if either 'Brian is white' or 'Lily is a lion' but not both then Julius is gray. It is highly unlikely that if either 'Brian is white' or 'Bernhard is a swan' but not both then John dropped the milk. There is a very good chance that if either 'Bernhard is a swan' or 'Lily is a lion' but not both then Jason is tired.
There is little chance that 'Julius is gray' or 'Brian is white' or both.
There is little chance that 'Julius is gray' or 'Brian is white' or both.
It is certain that 'Julius is gray' or 'Brian is white' 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.1::factA.
  0.05::factB.
  0.6::factC.
  %hop1
  0.9::factX:-xor(factA,factB).
  0.05::factY:-xor(factA,factC).
  0.8::factZ:-xor(factC,factB).

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

  query(conclusion).
  
'Julius is gray' or 'Brian is white' or both.