It is probably not the case that John went to the bedroom. It is probably the case that Bernhard is a swan. It is highly unlikely that Brian is a rhino. Chances are slight that if 'John went to the bedroom and Brian is a rhino' then Sandra left the football. It is improbable that if either 'Brian is a rhino' or 'Bernhard is a swan' but not both then Mary grabbed the milk. It is probably not the case that if either 'Bernhard is a swan' or 'Brian is a rhino' but not both then Lily is green.
It is probable that either 'Lily is green' or 'John went to the bedroom' but not both.
It is probably not the case that either 'Lily is green' or 'John went to the bedroom' but not both.
It is probable that either 'Lily is green' or 'John went to the bedroom' 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.25::factA.
  0.7::factB.
  0.05::factC.
  %hop1
  0.1::factX:-and(factA,factC).
  0.1::factY:-xor(factC,factB).
  0.25::factZ:-xor(factB,factC).

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

  query(conclusion).
  
Either 'Lily is green' or 'John went to the bedroom' but not both.