It is impossible that John went to the bedroom. There is almost no chance that Gertrude is a cat. There is almost no chance that Bernhard is yellow. We doubt that if 'Gertrude is a cat and Bernhard is yellow' then Yann is hungry. We believe that if 'Gertrude is a cat and Bernhard is yellow' then Brian is green. It is highly likely that if 'Gertrude is a cat' or 'Bernhard is yellow' or both then Sandra dropped the milk.
It is highly unlikely that either 'Brian is green' or 'Sandra dropped the milk' but not both.
It is highly unlikely that either 'Brian is green' or 'Sandra dropped the milk' but not both.
It is likely that either 'Brian is green' or 'Sandra 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.0::factA.
  0.02::factB.
  0.02::factC.
  %hop1
  0.2::factX:-and(factB,factC).
  0.75::factY:-and(factB,factC).
  0.9::factZ:-or(factB,factC).

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

  query(conclusion).
  
Either 'Brian is green' or 'Sandra dropped the milk' but not both.