equal
deleted
inserted
replaced
37 val forall_conv: (cterm * Proof.context -> conv) -> Proof.context -> conv |
37 val forall_conv: (cterm * Proof.context -> conv) -> Proof.context -> conv |
38 val implies_conv: conv -> conv -> conv |
38 val implies_conv: conv -> conv -> conv |
39 val implies_concl_conv: conv -> conv |
39 val implies_concl_conv: conv -> conv |
40 val rewr_conv: thm -> conv |
40 val rewr_conv: thm -> conv |
41 val rewrs_conv: thm list -> conv |
41 val rewrs_conv: thm list -> conv |
|
42 val bottom_rewrs_conv: thm list -> Proof.context -> conv |
|
43 val top_rewrs_conv: thm list -> Proof.context -> conv |
|
44 val top_sweep_rewrs_conv: thm list -> Proof.context -> conv |
42 val sub_conv: (Proof.context -> conv) -> Proof.context -> conv |
45 val sub_conv: (Proof.context -> conv) -> Proof.context -> conv |
43 val bottom_conv: (Proof.context -> conv) -> Proof.context -> conv |
46 val bottom_conv: (Proof.context -> conv) -> Proof.context -> conv |
44 val top_conv: (Proof.context -> conv) -> Proof.context -> conv |
47 val top_conv: (Proof.context -> conv) -> Proof.context -> conv |
45 val top_sweep_conv: (Proof.context -> conv) -> Proof.context -> conv |
48 val top_sweep_conv: (Proof.context -> conv) -> Proof.context -> conv |
46 val params_conv: int -> (Proof.context -> conv) -> Proof.context -> conv |
49 val params_conv: int -> (Proof.context -> conv) -> Proof.context -> conv |
151 (case Thm.term_of ct of |
154 (case Thm.term_of ct of |
152 Const ("Pure.imp", _) $ _ $ _ => arg_conv cv ct |
155 Const ("Pure.imp", _) $ _ $ _ => arg_conv cv ct |
153 | _ => raise CTERM ("implies_concl_conv", [ct])); |
156 | _ => raise CTERM ("implies_concl_conv", [ct])); |
154 |
157 |
155 |
158 |
156 (* single rewrite step, cf. REWR_CONV in HOL *) |
159 (* rewrite steps *) |
157 |
160 |
|
161 (*cf. REWR_CONV in HOL*) |
158 fun rewr_conv rule ct = |
162 fun rewr_conv rule ct = |
159 let |
163 let |
160 val rule1 = Thm.incr_indexes (Thm.maxidx_of_cterm ct + 1) rule; |
164 val rule1 = Thm.incr_indexes (Thm.maxidx_of_cterm ct + 1) rule; |
161 val lhs = Thm.lhs_of rule1; |
165 val lhs = Thm.lhs_of rule1; |
162 val rule2 = Thm.rename_boundvars (Thm.term_of lhs) (Thm.term_of ct) rule1; |
166 val rule2 = Thm.rename_boundvars (Thm.term_of lhs) (Thm.term_of ct) rule1; |
170 in rule3 COMP Thm.trivial (Thm.mk_binop ceq ct (Thm.rhs_of rule3)) end; |
174 in rule3 COMP Thm.trivial (Thm.mk_binop ceq ct (Thm.rhs_of rule3)) end; |
171 in Thm.transitive rule4 (Thm.beta_conversion true (Thm.rhs_of rule4)) end; |
175 in Thm.transitive rule4 (Thm.beta_conversion true (Thm.rhs_of rule4)) end; |
172 |
176 |
173 fun rewrs_conv rules = first_conv (map rewr_conv rules); |
177 fun rewrs_conv rules = first_conv (map rewr_conv rules); |
174 |
178 |
|
179 fun bottom_rewrs_conv rewrs = bottom_conv (K (try_conv (rewrs_conv rewrs))); |
|
180 fun top_rewrs_conv rewrs = top_conv (K (try_conv (rewrs_conv rewrs))); |
|
181 fun top_sweep_rewrs_conv rewrs = top_sweep_conv (K (rewrs_conv rewrs)); |
|
182 |
175 |
183 |
176 (* conversions on HHF rules *) |
184 (* conversions on HHF rules *) |
177 |
185 |
178 (*rewrite B in \<And>x1 ... xn. B*) |
186 (*rewrite B in \<And>x1 ... xn. B*) |
179 fun params_conv n cv ctxt ct = |
187 fun params_conv n cv ctxt ct = |