context: It is highly unlikely that Lily is a swan. Chances are about even that Greg is yellow. There is almost no chance that John got the apple. It is probable that if 'John got the apple' or 'Greg is yellow' or both then Julius is a frog. There is a better than even chance that if 'Greg is yellow' or 'Lily is a swan' or both then Mary moved to the office. It is probably not the case that if 'Lily is a swan' or 'Greg is yellow' or both then Sandra took the football.
hypothesis: It is certain that either 'Mary moved to the office' or 'Lily is a swan' but not both.
valid_hypothesis: It is probably not the case that either 'Mary moved to the office' or 'Lily is a swan' but not both.
invalid_hypothesis: It is certain that either 'Mary moved to the office' or 'Lily is a swan' 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.05::factA.
    0.5::factB.
    0.02::factC.
    %hop1
    0.7::factX:-or(factC,factB).
    0.6::factY:-or(factB,factA).
    0.25::factZ:-or(factA,factB).
  
    %hop2
    conclusion:-xor(factY,factA).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Mary moved to the office' or 'Lily is a swan' but not both.