src/FOL/intprover.ML
changeset 21539 c5cf9243ad62
parent 17496 26535df536ae
child 31974 e81979a703a4
equal deleted inserted replaced
21538:678299eac351 21539:c5cf9243ad62
    39   not_to_imp (converts the assumption ~P to P-->False), and not_impE
    39   not_to_imp (converts the assumption ~P to P-->False), and not_impE
    40   (handles double negations).  Could instead rewrite by not_def as the first
    40   (handles double negations).  Could instead rewrite by not_def as the first
    41   step of an intuitionistic proof.
    41   step of an intuitionistic proof.
    42 *)
    42 *)
    43 val safe_brls = sort (make_ord lessb)
    43 val safe_brls = sort (make_ord lessb)
    44     [ (true,FalseE), (false,TrueI), (false,refl),
    44     [ (true, thm "FalseE"), (false, thm "TrueI"), (false, thm "refl"),
    45       (false,impI), (false,notI), (false,allI),
    45       (false, thm "impI"), (false, thm "notI"), (false, thm "allI"),
    46       (true,conjE), (true,exE),
    46       (true, thm "conjE"), (true, thm "exE"),
    47       (false,conjI), (true,conj_impE),
    47       (false, thm "conjI"), (true, thm "conj_impE"),
    48       (true,disj_impE), (true,disjE), 
    48       (true, thm "disj_impE"), (true, thm "disjE"), 
    49       (false,iffI), (true,iffE), (true,not_to_imp) ];
    49       (false, thm "iffI"), (true, thm "iffE"), (true, thm "not_to_imp") ];
    50 
    50 
    51 val haz_brls =
    51 val haz_brls =
    52     [ (false,disjI1), (false,disjI2), (false,exI), 
    52     [ (false, thm "disjI1"), (false, thm "disjI2"), (false, thm "exI"), 
    53       (true,allE), (true,not_impE), (true,imp_impE), (true,iff_impE),
    53       (true, thm "allE"), (true, thm "not_impE"), (true, thm "imp_impE"), (true, thm "iff_impE"),
    54       (true,all_impE), (true,ex_impE), (true,impE) ];
    54       (true, thm "all_impE"), (true, thm "ex_impE"), (true, thm "impE") ];
    55 
    55 
    56 val haz_dup_brls =
    56 val haz_dup_brls =
    57     [ (false,disjI1), (false,disjI2), (false,exI), 
    57     [ (false, thm "disjI1"), (false, thm "disjI2"), (false, thm "exI"),
    58       (true,all_dupE), (true,not_impE), (true,imp_impE), (true,iff_impE),
    58       (true, thm "all_dupE"), (true, thm "not_impE"), (true, thm "imp_impE"), (true, thm "iff_impE"),
    59       (true,all_impE), (true,ex_impE), (true,impE) ];
    59       (true, thm "all_impE"), (true, thm "ex_impE"), (true, thm "impE") ];
    60 
    60 
    61 (*0 subgoals vs 1 or more: the p in safep is for positive*)
    61 (*0 subgoals vs 1 or more: the p in safep is for positive*)
    62 val (safe0_brls, safep_brls) =
    62 val (safe0_brls, safep_brls) =
    63     List.partition (curry (op =) 0 o subgoals_of_brl) safe_brls;
    63     List.partition (curry (op =) 0 o subgoals_of_brl) safe_brls;
    64 
    64