It is improbable that Bernhard is green. It is highly unlikely that Greg is a swan. It is certain that John went to the hallway. It is impossible that if either 'John went to the hallway' or 'Greg is a swan' but not both then Lily is a rhino. Chances are about even that if 'Bernhard is green' or 'Greg is a swan' or both then Brian is a rhino. It is highly unlikely that if either 'John went to the hallway' or 'Greg is a swan' but not both then Winona is a wolf.
It is unlikely that either 'Bernhard is green' or 'John went to the hallway' but not both.
It is highly likely that either 'Bernhard is green' or 'John went to the hallway' but not both.
It is unlikely that either 'Bernhard is green' or 'John went to the hallway' 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.1::factA.
  0.05::factB.
  1.0::factC.
  %hop1
  0.0::factX:-xor(factC,factB).
  0.5::factY:-or(factA,factB).
  0.05::factZ:-xor(factC,factB).

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

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