Nominal-General/nominal_permeq.ML
changeset 1947 51f411b1197d
parent 1866 6d4e4bf9bce6
child 2064 2725853f43b9
--- a/Nominal-General/nominal_permeq.ML	Sun Apr 25 08:18:06 2010 +0200
+++ b/Nominal-General/nominal_permeq.ML	Sun Apr 25 09:13:16 2010 +0200
@@ -7,6 +7,11 @@
 sig
   val eqvt_tac: Proof.context -> thm list -> string list -> int -> tactic
   val eqvt_strict_tac: Proof.context -> thm list -> string list -> int -> tactic
+  
+  val perm_simp_meth: thm list * string list -> Proof.context -> Method.method
+  val perm_strict_simp_meth: thm list * string list -> Proof.context -> Method.method
+  val args_parser: (thm list * string list) context_parser
+
   val trace_eqvt: bool Config.T
   val setup: theory -> theory
 end;
@@ -157,4 +162,21 @@
 val setup =
   trace_eqvt_setup
 
+
+(** methods **)
+
+val add_thms_parser = Scan.optional (Scan.lift (Args.add -- Args.colon) |-- Attrib.thms) [];
+val exclude_consts_parser = Scan.optional (Scan.lift ((Args.$$$ "exclude") -- Args.colon) |-- 
+  (Scan.repeat (Args.const true))) []
+
+val args_parser =  
+  add_thms_parser -- exclude_consts_parser ||
+  exclude_consts_parser -- add_thms_parser >> swap
+
+fun perm_simp_meth (thms, consts) ctxt = 
+  SIMPLE_METHOD (HEADGOAL (eqvt_tac ctxt thms consts))
+
+fun perm_strict_simp_meth (thms, consts) ctxt = 
+  SIMPLE_METHOD (HEADGOAL (eqvt_strict_tac ctxt thms consts))
+
 end; (* structure *)
\ No newline at end of file