context: It is probable that Lily is gray. There is a very good chance that Greg is a frog. It is highly unlikely that Mary went to the office. There is a better than even chance that if either 'Mary went to the office' or 'Greg is a frog' but not both then Jeff discarded the milk. There is little chance that if either 'Lily is gray' or 'Mary went to the office' but not both then John dropped the milk. It is probably the case that if 'Mary went to the office and Lily is gray' then Brian is a swan.
hypothesis: It is probably not the case that either 'Greg is a frog' or 'Brian is a swan' but not both.
valid_hypothesis: There is a very good chance that either 'Greg is a frog' or 'Brian is a swan' but not both.
invalid_hypothesis: It is probably not the case that either 'Greg is a frog' or 'Brian 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.6::factX:-xor(factC,factB).
    0.1::factY:-xor(factA,factC).
    0.7::factZ:-and(factC,factA).
  
    %hop2
    conclusion:-xor(factB,factZ).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Greg is a frog' or 'Brian is a swan' but not both.