There is a better than even chance that Lily is a rhino. It is certain that Greg is yellow. It is almost certain that Bernhard is a lion. It is probably not the case that if 'Greg is yellow and Bernhard is a lion' then John dropped the milk. It is probably not the case that if 'Greg is yellow' or 'Bernhard is a lion' or both then Brian is a swan. There is little chance that if 'Bernhard is a lion' or 'Lily is a rhino' or both then Mary went to the bedroom.
We believe that either 'Greg is yellow' or 'John dropped the milk' but not both.
We believe that either 'Greg is yellow' or 'John dropped the milk' but not both.
We doubt that either 'Greg is yellow' or 'John dropped the milk' 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.
  1.0::factB.
  0.95::factC.
  %hop1
  0.25::factX:-and(factB,factC).
  0.25::factY:-or(factB,factC).
  0.1::factZ:-or(factC,factA).

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

  query(conclusion).
  
Either 'Greg is yellow' or 'John dropped the milk' but not both.