context: It is likely that Mary moved to the office. There is a very good chance that Lily is a rhino. It is highly unlikely that Brian is gray. It is highly unlikely that if 'Brian is gray' or 'Mary moved to the office' or both then Sandra took the apple. It is probably the case that if 'Brian is gray and Mary moved to the office' then Bernhard is green. It is probably not the case that if 'Lily is a rhino' or 'Brian is gray' or both then Julius is a swan.
hypothesis: There is a better than even chance that either 'Mary moved to the office' or 'Julius is a swan' but not both.
valid_hypothesis: There is a better than even chance that either 'Mary moved to the office' or 'Julius is a swan' but not both.
invalid_hypothesis: There is little chance that either 'Mary moved to the office' or 'Julius 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.7::factA.
    0.8::factB.
    0.05::factC.
    %hop1
    0.05::factX:-or(factC,factA).
    0.7::factY:-and(factC,factA).
    0.25::factZ:-or(factB,factC).
  
    %hop2
    conclusion:-xor(factA,factZ).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Mary moved to the office' or 'Julius is a swan' but not both.