81 val addE2 : claset * (string * thm) -> claset |
81 val addE2 : claset * (string * thm) -> claset |
82 val addSD2 : claset * (string * thm) -> claset |
82 val addSD2 : claset * (string * thm) -> claset |
83 val addSE2 : claset * (string * thm) -> claset |
83 val addSE2 : claset * (string * thm) -> claset |
84 val appSWrappers : claset -> wrapper |
84 val appSWrappers : claset -> wrapper |
85 val appWrappers : claset -> wrapper |
85 val appWrappers : claset -> wrapper |
|
86 val trace_rules : bool ref |
86 |
87 |
87 val claset_ref_of_sg: Sign.sg -> claset ref |
88 val claset_ref_of_sg: Sign.sg -> claset ref |
88 val claset_ref_of: theory -> claset ref |
89 val claset_ref_of: theory -> claset ref |
89 val claset_of_sg: Sign.sg -> claset |
90 val claset_of_sg: Sign.sg -> claset |
90 val claset_of: theory -> claset |
91 val claset_of: theory -> claset |
162 val haz_intro_local: Proof.context attribute |
163 val haz_intro_local: Proof.context attribute |
163 val safe_dest_local: Proof.context attribute |
164 val safe_dest_local: Proof.context attribute |
164 val safe_elim_local: Proof.context attribute |
165 val safe_elim_local: Proof.context attribute |
165 val safe_intro_local: Proof.context attribute |
166 val safe_intro_local: Proof.context attribute |
166 val delrule_local: Proof.context attribute |
167 val delrule_local: Proof.context attribute |
167 val trace_rules: bool ref |
168 val cla_modifiers: (Args.T list -> (Proof.context attribute * Args.T list)) list |
|
169 val cla_method: (claset -> tactic) -> Args.src -> Proof.context -> Proof.method |
|
170 val cla_method': (claset -> int -> tactic) -> Args.src -> Proof.context -> Proof.method |
168 val single_tac: claset -> tthm list -> int -> tactic |
171 val single_tac: claset -> tthm list -> int -> tactic |
169 val setup: (theory -> theory) list |
172 val setup: (theory -> theory) list |
170 end; |
173 end; |
171 |
|
172 |
174 |
173 structure ClasetThyData: CLASET_THY_DATA = |
175 structure ClasetThyData: CLASET_THY_DATA = |
174 struct |
176 struct |
175 |
177 |
176 (* data kind claset -- forward declaration *) |
178 (* data kind claset -- forward declaration *) |
973 |
975 |
974 |
976 |
975 |
977 |
976 (** automatic methods **) |
978 (** automatic methods **) |
977 |
979 |
978 val cla_args = |
980 val cla_modifiers = |
979 Method.only_sectioned_args |
981 [Args.$$$ destN -- bang >> K haz_dest_local, |
980 [Args.$$$ destN -- bang >> K haz_dest_local, |
982 Args.$$$ destN >> K safe_dest_local, |
981 Args.$$$ destN >> K safe_dest_local, |
983 Args.$$$ elimN -- bang >> K haz_elim_local, |
982 Args.$$$ elimN -- bang >> K haz_elim_local, |
984 Args.$$$ elimN >> K safe_elim_local, |
983 Args.$$$ elimN >> K safe_elim_local, |
985 Args.$$$ introN -- bang >> K haz_intro_local, |
984 Args.$$$ introN -- bang >> K haz_intro_local, |
986 Args.$$$ introN >> K safe_intro_local, |
985 Args.$$$ introN >> K safe_intro_local, |
987 Args.$$$ delN >> K delrule_local]; |
986 Args.$$$ delN >> K delrule_local]; |
988 |
|
989 val cla_args = Method.only_sectioned_args cla_modifiers; |
987 |
990 |
988 fun cla_meth tac ctxt = Method.METHOD0 (tac (get_local_claset ctxt)); |
991 fun cla_meth tac ctxt = Method.METHOD0 (tac (get_local_claset ctxt)); |
989 fun cla_meth' tac ctxt = Method.METHOD0 (FIRSTGOAL (tac (get_local_claset ctxt))); |
992 fun cla_meth' tac ctxt = Method.METHOD0 (FIRSTGOAL (tac (get_local_claset ctxt))); |
990 |
993 |
991 val cla_method = cla_args o cla_meth; |
994 val cla_method = cla_args o cla_meth; |