Added equivariance lemmas for induct_forall.
authorberghofe
Thu, 13 Sep 2007 18:08:08 +0200
changeset 24569 c80e1871098b
parent 24568 9a4cce088aec
child 24570 621b60b1df00
Added equivariance lemmas for induct_forall.
src/HOL/Nominal/nominal_atoms.ML
--- a/src/HOL/Nominal/nominal_atoms.ML	Thu Sep 13 18:06:50 2007 +0200
+++ b/src/HOL/Nominal/nominal_atoms.ML	Thu Sep 13 18:08:08 2007 +0200
@@ -21,6 +21,8 @@
 val finite_emptyI = @{thm "finite.emptyI"};
 val Collect_const = @{thm "Collect_const"};
 
+val inductive_forall_def = @{thm "induct_forall_def"};
+
 
 (* theory data *)
 
@@ -803,7 +805,13 @@
             ||>> PureThy.add_thmss [(("supp_atm", (inst_at [at_supp]) @ (inst_dj [dj_supp])),[])]
             ||>> PureThy.add_thmss [(("exists_fresh", inst_at [at_exists_fresh]),[])]
             ||>> PureThy.add_thmss [(("exists_fresh'", inst_at [at_exists_fresh']),[])]
-            ||>> PureThy.add_thmss [(("all_eqvt", inst_pt_at [all_eqvt]),[NominalThmDecls.eqvt_force_add])] 
+            ||>> PureThy.add_thmss
+              let
+                val thms1 = inst_pt_at [all_eqvt];
+                val thms2 = map (fold_rule [inductive_forall_def]) thms1
+              in
+                [(("all_eqvt", thms1 @ thms2), [NominalThmDecls.eqvt_force_add])]
+              end
             ||>> PureThy.add_thmss [(("ex_eqvt", inst_pt_at [ex_eqvt]),[NominalThmDecls.eqvt_force_add])]
             ||>> PureThy.add_thmss 
 	      let val thms1 = inst_at [at_fresh]