equality of lst_binder and a few helper lemmas
[l]lst. T = [l]lst. S <-> T = S
--- a/Nominal/Ex/Classical.thy Sun Jun 26 21:42:07 2011 +0100
+++ b/Nominal/Ex/Classical.thy Mon Jun 27 04:01:55 2011 +0900
@@ -160,6 +160,24 @@
shows "f as x c = f bs y c"
*)
+lemma supp_zero_perm_zero:
+ shows "supp (p :: perm) = {} \<longleftrightarrow> p = 0"
+ by (metis supp_perm_singleton supp_zero_perm)
+
+lemma permute_atom_list_id:
+ shows "p \<bullet> l = l \<longleftrightarrow> supp p \<inter> set l = {}"
+ by (induct l) (auto simp add: supp_Nil supp_perm)
+
+lemma Abs_lst_binder_length:
+ shows "[xs]lst. T = [ys]lst. S \<Longrightarrow> length xs = length ys"
+ by (auto simp add: Abs_eq_iff alphas length_eqvt[symmetric] permute_pure)
+
+lemma Abs_lst_binder_eq:
+ shows "Abs_lst l T = Abs_lst l S \<longleftrightarrow> T = S"
+ by (rule, simp_all add: Abs_eq_iff2 alphas)
+ (metis fresh_star_zero inf_absorb1 permute_atom_list_id supp_perm_eq
+ supp_zero_perm_zero)
+
nominal_primrec
crename :: "trm \<Rightarrow> coname \<Rightarrow> coname \<Rightarrow> trm" ("_[_\<turnstile>c>_]" [100,100,100] 100)
where