equal
deleted
inserted
replaced
8 |
8 |
9 signature INDUCT_METHOD = |
9 signature INDUCT_METHOD = |
10 sig |
10 sig |
11 val vars_of: term -> term list |
11 val vars_of: term -> term list |
12 val concls_of: thm -> term list |
12 val concls_of: thm -> term list |
13 val rewrite_cterm: thm list -> cterm -> cterm |
|
14 val simp_case_tac: bool -> simpset -> int -> tactic |
13 val simp_case_tac: bool -> simpset -> int -> tactic |
15 val setup: (theory -> theory) list |
14 val setup: (theory -> theory) list |
16 end; |
15 end; |
17 |
16 |
18 structure InductMethod: INDUCT_METHOD = |
17 structure InductMethod: INDUCT_METHOD = |
72 in |
71 in |
73 align "Rule has fewer variables than instantiations given" (vars_of tm) ts |
72 align "Rule has fewer variables than instantiations given" (vars_of tm) ts |
74 |> mapfilter prep_var |
73 |> mapfilter prep_var |
75 end; |
74 end; |
76 |
75 |
77 fun rewrite_cterm rews = |
|
78 #2 o Thm.dest_comb o #prop o Thm.crep_thm o Simplifier.full_rewrite (HOL_basic_ss addsimps rews); |
|
79 |
76 |
80 |
77 |
81 (* simplifying cases rules *) |
78 (* simplifying cases rules *) |
82 |
79 |
83 local |
80 local |
204 ... induct ... R - explicit rule |
201 ... induct ... R - explicit rule |
205 *) |
202 *) |
206 |
203 |
207 local |
204 local |
208 |
205 |
209 val atomize_cterm = Thm.cterm_fun AutoBind.drop_judgment o rewrite_cterm inductive_atomize; |
206 val atomize_cterm = Thm.cterm_fun AutoBind.drop_judgment o hol_rewrite_cterm inductive_atomize; |
210 val atomize_tac = Tactic.rewrite_goal_tac inductive_atomize; |
207 val atomize_tac = Tactic.rewrite_goal_tac inductive_atomize; |
211 val rulify_cterm = rewrite_cterm inductive_rulify2 o rewrite_cterm inductive_rulify1; |
208 val rulify_cterm = hol_rewrite_cterm inductive_rulify2 o hol_rewrite_cterm inductive_rulify1; |
212 |
209 |
213 val rulify_tac = |
210 val rulify_tac = |
214 Tactic.rewrite_goal_tac inductive_rulify1 THEN' |
211 Tactic.rewrite_goal_tac inductive_rulify1 THEN' |
215 Tactic.rewrite_goal_tac inductive_rulify2 THEN' |
212 Tactic.rewrite_goal_tac inductive_rulify2 THEN' |
216 Tactic.norm_hhf_tac; |
213 Tactic.norm_hhf_tac; |