now also final step is proved - the supp of lambdas is now completely characterised
--- a/Quot/Nominal/LamEx.thy Fri Jan 29 00:22:00 2010 +0100
+++ b/Quot/Nominal/LamEx.thy Fri Jan 29 07:09:52 2010 +0100
@@ -428,6 +428,11 @@
apply(lifting rfv_var rfv_app rfv_lam)
done
+lemma fv_eqvt:
+ shows "(p \<bullet> fv t) = fv (p \<bullet> t)"
+apply(lifting rfv_eqvt)
+done
+
lemma a1:
"a = b \<Longrightarrow> Var a = Var b"
by (lifting a1)
@@ -547,7 +552,7 @@
apply(simp add: Collect_imp_eq Collect_neg_eq)
done
-(* needs thinking *)
+(* supp for lam *)
lemma lam_supp1:
shows "(supp (atom x, t)) supports (Lam x t) "
apply(simp add: supports_def)
@@ -574,11 +579,24 @@
apply(simp add: lam_fsupp1)
done
+lemma supp_fv:
+ shows "supp t = fv t"
+apply(induct t rule: lam_induct)
+apply(simp add: var_supp)
+apply(simp add: app_supp)
+apply(subgoal_tac "supp (Lam name lam) = supp (Abs {atom name} lam)")
+apply(simp add: supp_Abs)
+apply(simp (no_asm) add: supp_def permute_set_eq atom_eqvt)
+apply(simp add: Lam_pseudo_inject)
+apply(simp add: abs_eq)
+apply(simp add: supp_eqvt[symmetric] fv_eqvt[symmetric])
+done
+
lemma lam_supp2:
shows "supp (Lam x t) = supp (Abs {atom x} t)"
apply(simp add: supp_def permute_set_eq atom_eqvt)
apply(simp add: Lam_pseudo_inject)
-apply(simp add: abs_eq)
+apply(simp add: abs_eq supp_fv)
sorry
lemma lam_supp: