30 include BASIC_SIMPLIFIER |
30 include BASIC_SIMPLIFIER |
31 val map_ss: (Proof.context -> Proof.context) -> Context.generic -> Context.generic |
31 val map_ss: (Proof.context -> Proof.context) -> Context.generic -> Context.generic |
32 val attrib: (thm -> Proof.context -> Proof.context) -> attribute |
32 val attrib: (thm -> Proof.context -> Proof.context) -> attribute |
33 val simp_add: attribute |
33 val simp_add: attribute |
34 val simp_del: attribute |
34 val simp_del: attribute |
|
35 val simp_reorient: attribute |
35 val cong_add: attribute |
36 val cong_add: attribute |
36 val cong_del: attribute |
37 val cong_del: attribute |
37 val check_simproc: Proof.context -> xstring * Position.T -> string |
38 val check_simproc: Proof.context -> xstring * Position.T -> string |
38 val the_simproc: Proof.context -> string -> simproc |
39 val the_simproc: Proof.context -> string -> simproc |
39 type 'a simproc_spec = {lhss: 'a list, proc: morphism -> Proof.context -> cterm -> thm option} |
40 type 'a simproc_spec = {lhss: 'a list, proc: morphism -> Proof.context -> cterm -> thm option} |
87 |
88 |
88 fun attrib f = Thm.declaration_attribute (map_ss o f); |
89 fun attrib f = Thm.declaration_attribute (map_ss o f); |
89 |
90 |
90 val simp_add = attrib add_simp; |
91 val simp_add = attrib add_simp; |
91 val simp_del = attrib del_simp; |
92 val simp_del = attrib del_simp; |
|
93 val simp_reorient = attrib reorient_simp; |
92 val cong_add = attrib add_cong; |
94 val cong_add = attrib add_cong; |
93 val cong_del = attrib del_cong; |
95 val cong_del = attrib del_cong; |
94 |
96 |
95 |
97 |
96 (** named simprocs **) |
98 (** named simprocs **) |
338 |
341 |
339 val simp_modifiers = |
342 val simp_modifiers = |
340 [Args.$$$ simpN -- Args.colon >> K (Method.modifier simp_add \<^here>), |
343 [Args.$$$ simpN -- Args.colon >> K (Method.modifier simp_add \<^here>), |
341 Args.$$$ simpN -- Args.add -- Args.colon >> K (Method.modifier simp_add \<^here>), |
344 Args.$$$ simpN -- Args.add -- Args.colon >> K (Method.modifier simp_add \<^here>), |
342 Args.$$$ simpN -- Args.del -- Args.colon >> K (Method.modifier simp_del \<^here>), |
345 Args.$$$ simpN -- Args.del -- Args.colon >> K (Method.modifier simp_del \<^here>), |
|
346 Args.$$$ reorientN -- Args.colon >> K (Method.modifier simp_reorient \<^here>), |
343 Args.$$$ simpN -- Args.$$$ onlyN -- Args.colon >> |
347 Args.$$$ simpN -- Args.$$$ onlyN -- Args.colon >> |
344 K {init = Raw_Simplifier.clear_simpset, attribute = simp_add, pos = \<^here>}] |
348 K {init = Raw_Simplifier.clear_simpset, attribute = simp_add, pos = \<^here>}] |
345 @ cong_modifiers; |
349 @ cong_modifiers; |
346 |
350 |
347 val simp_modifiers' = |
351 val simp_modifiers' = |
348 [Args.add -- Args.colon >> K (Method.modifier simp_add \<^here>), |
352 [Args.add -- Args.colon >> K (Method.modifier simp_add \<^here>), |
349 Args.del -- Args.colon >> K (Method.modifier simp_del \<^here>), |
353 Args.del -- Args.colon >> K (Method.modifier simp_del \<^here>), |
|
354 Args.$$$ reorientN -- Args.colon >> K (Method.modifier simp_reorient \<^here>), |
350 Args.$$$ onlyN -- Args.colon >> |
355 Args.$$$ onlyN -- Args.colon >> |
351 K {init = Raw_Simplifier.clear_simpset, attribute = simp_add, pos = \<^here>}] |
356 K {init = Raw_Simplifier.clear_simpset, attribute = simp_add, pos = \<^here>}] |
352 @ cong_modifiers; |
357 @ cong_modifiers; |
353 |
358 |
354 val simp_options = |
359 val simp_options = |