context: It is unlikely that Mary picked up the milk. It is likely that Bernhard is gray. It is probably the case that John discarded the apple. Chances are slight that if 'Bernhard is gray and Mary picked up the milk' then Lily is a swan. It is almost certain that if either 'Bernhard is gray' or 'Mary picked up the milk' but not both then Jeff moved to the garden. It is probable that if either 'John discarded the apple' or 'Bernhard is gray' but not both then Brian is a frog.
hypothesis: It is probably not the case that 'Brian is a frog' or 'Jeff moved to the garden' or both.
valid_hypothesis: We believe that 'Brian is a frog' or 'Jeff moved to the garden' or both.
invalid_hypothesis: It is probably not the case that 'Brian is a frog' or 'Jeff moved to the garden' or 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.2::factA.
    0.7::factB.
    0.7::factC.
    %hop1
    0.1::factX:-and(factB,factA).
    0.95::factY:-xor(factB,factA).
    0.7::factZ:-xor(factC,factB).
  
    %hop2
    conclusion:-or(factZ,factY).
  
    query(conclusion).
    
hypothesis_assertion: 'Brian is a frog' or 'Jeff moved to the garden' or both.