context: It is probable that Julius is a swan. It is probable that Sumit is tired. Chances are about even that Mary grabbed the milk. We believe that if either 'Julius is a swan' or 'Sumit is tired' but not both then Bernhard is a swan. It is highly unlikely that if 'Sumit is tired and Mary grabbed the milk' then Greg is green. It is probably not the case that if either 'Mary grabbed the milk' or 'Julius is a swan' but not both then John went to the garden.
hypothesis: There is a better than even chance that either 'John went to the garden' or 'Sumit is tired' but not both.
valid_hypothesis: There is a better than even chance that either 'John went to the garden' or 'Sumit is tired' but not both.
invalid_hypothesis: It is improbable that either 'John went to the garden' or 'Sumit is tired' but not both.
problog: 
    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.7::factA.
    0.7::factB.
    0.5::factC.
    %hop1
    0.75::factX:-xor(factA,factB).
    0.05::factY:-and(factB,factC).
    0.25::factZ:-xor(factC,factA).
  
    %hop2
    conclusion:-xor(factZ,factB).
  
    query(conclusion).
    
hypothesis_assertion: Either 'John went to the garden' or 'Sumit is tired' but not both.