We doubt that Brian is a swan. There is a better than even chance that Mary is in the hallway. It is probably not the case that Bernhard is gray. It is probably the case that if either 'Bernhard is gray' or 'Brian is a swan' but not both then Jason is tired. It is probably the case that if either 'Mary is in the hallway' or 'Brian is a swan' but not both then Greg is yellow. There is little chance that if 'Brian is a swan and Mary is in the hallway' then John picked up the apple.
It is probably the case that 'Brian is a swan' or 'Jason is tired' or both.
It is probably not the case that 'Brian is a swan' or 'Jason is tired' or both.
It is probably the case that 'Brian is a swan' or 'Jason is tired' 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.2::factA.
  0.6::factB.
  0.25::factC.
  %hop1
  0.7::factX:-xor(factC,factA).
  0.7::factY:-xor(factB,factA).
  0.1::factZ:-and(factA,factB).

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

  query(conclusion).
  
'Brian is a swan' or 'Jason is tired' or both.