equal
deleted
inserted
replaced
9 imports IFOL |
9 imports IFOL |
10 uses |
10 uses |
11 "~~/src/Provers/classical.ML" |
11 "~~/src/Provers/classical.ML" |
12 "~~/src/Provers/blast.ML" |
12 "~~/src/Provers/blast.ML" |
13 "~~/src/Provers/clasimp.ML" |
13 "~~/src/Provers/clasimp.ML" |
|
14 "~~/src/Tools/induct.ML" |
14 ("cladata.ML") |
15 ("cladata.ML") |
15 ("blastdata.ML") |
16 ("blastdata.ML") |
16 ("simpdata.ML") |
17 ("simpdata.ML") |
17 begin |
18 begin |
18 |
19 |
72 apply (rule excluded_middle [THEN disjE]) |
73 apply (rule excluded_middle [THEN disjE]) |
73 apply (erule r2) |
74 apply (erule r2) |
74 apply (erule r1) |
75 apply (erule r1) |
75 done |
76 done |
76 |
77 |
77 lemmas case_split = case_split_thm [case_names True False, cases type: o] |
78 lemmas case_split = case_split_thm [case_names True False] |
78 |
79 |
79 (*HOL's more natural case analysis tactic*) |
80 (*HOL's more natural case analysis tactic*) |
80 ML {* |
81 ML {* |
81 fun case_tac a = res_inst_tac [("P",a)] @{thm case_split_thm} |
82 fun case_tac a = res_inst_tac [("P",a)] @{thm case_split_thm} |
82 *} |
83 *} |
271 |
272 |
272 |
273 |
273 text {* Method setup. *} |
274 text {* Method setup. *} |
274 |
275 |
275 ML {* |
276 ML {* |
276 structure InductMethod = InductMethodFun |
277 structure Induct = InductFun |
277 (struct |
278 ( |
278 val cases_default = @{thm case_split} |
279 val cases_default = @{thm case_split} |
279 val atomize = @{thms induct_atomize} |
280 val atomize = @{thms induct_atomize} |
280 val rulify = @{thms induct_rulify} |
281 val rulify = @{thms induct_rulify} |
281 val rulify_fallback = @{thms induct_rulify_fallback} |
282 val rulify_fallback = @{thms induct_rulify_fallback} |
282 end); |
283 ); |
283 *} |
284 *} |
284 |
285 |
285 setup InductMethod.setup |
286 setup Induct.setup |
|
287 declare case_split [cases type: o] |
286 |
288 |
287 end |
289 end |