context: It is probably the case that John went to the office. It is probably the case that Greg is a swan. It is certain that Julius is yellow. It is almost certain that if either 'John went to the office' or 'Julius is yellow' but not both then Gertrude is a sheep. It is probable that if 'Julius is yellow' or 'John went to the office' or both then Mary moved to the garden. It is probable that if 'Julius is yellow' or 'Greg is a swan' or both then Lily is a swan.
hypothesis: Chances are about even that either 'Lily is a swan' or 'John went to the office' but not both.
valid_hypothesis: Chances are about even that either 'Lily is a swan' or 'John went to the office' but not both.
invalid_hypothesis: It is certain that either 'Lily is a swan' or 'John went to the office' 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.
    1.0::factC.
    %hop1
    0.95::factX:-xor(factA,factC).
    0.7::factY:-or(factC,factA).
    0.7::factZ:-or(factC,factB).
  
    %hop2
    conclusion:-xor(factZ,factA).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Lily is a swan' or 'John went to the office' but not both.