We doubt that Jason is tired. It is likely that Mary got the milk. It is probably the case that Greg is yellow. It is highly unlikely that if either 'Greg is yellow' or 'Mary got the milk' but not both then Winona is a cat. It is probable that if either 'Mary got the milk' or 'Greg is yellow' but not both then John went to the bedroom. Chances are slight that if 'Jason is tired' or 'Greg is yellow' or both then Brian is green.
It is certain that either 'Brian is green' or 'Jason is tired' but not both.
It is probably not the case that either 'Brian is green' or 'Jason is tired' but not both.
It is certain that either 'Brian is green' or 'Jason is tired' 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.2::factA.
  0.7::factB.
  0.7::factC.
  %hop1
  0.05::factX:-xor(factC,factB).
  0.7::factY:-xor(factB,factC).
  0.1::factZ:-or(factA,factC).

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

  query(conclusion).
  
Either 'Brian is green' or 'Jason is tired' but not both.