
diff -r b2d4ebff3bc9 -r 4f8bab472a83 Nominal/Test.thy
--- a/Nominal/Test.thy	Thu Mar 18 18:43:21 2010 +0100
+++ b/Nominal/Test.thy	Thu Mar 18 19:02:33 2010 +0100
@@ -108,10 +108,10 @@
   shows "P c lm"
 proof -
   have "\<And>p. P c (p \<bullet> lm)"
-    apply(induct lm arbitrary: c rule: lm_induct)
-    apply(simp only: lm_perm)
+    apply(induct lm arbitrary: c rule: lm.induct)
+    apply(simp only: lm.perm)
     apply(rule a1)
-    apply(simp only: lm_perm)
+    apply(simp only: lm.perm)
     apply(rule a2)
     apply(blast)[1]
     apply(assumption)
@@ -121,7 +121,7 @@
     apply(rule_tac t="p \<bullet> Lm name lm" and 
                    s="q \<bullet> p \<bullet> Lm name lm" in subst)
     defer
-    apply(simp add: lm_perm)
+    apply(simp add: lm.perm)
     apply(rule a3)
     apply(simp add: eqvts fresh_star_def)
     apply(drule_tac x="q + p" in meta_spec)
@@ -651,6 +651,28 @@
 thm mexp_body_defn_sexp_sbody_spec_tyty_path_trmtrm.inducts
 thm mexp_body_defn_sexp_sbody_spec_tyty_path_trmtrm.distinct
 
+lemma
+"fv_mexp j = supp j \<and> fv_body k = supp k \<and> 
+(fv_defn c = supp c \<and> fv_cbinders c = {a. infinite {b. \<not>alpha_cbinders ((a \<rightleftharpoons> b) \<bullet> c) c}}) \<and>
+fv_sexp d = supp d \<and> fv_sbody e = supp e \<and> 
+(fv_spec l = supp l \<and> fv_Cbinders l = {a. infinite {b. \<not>alpha_Cbinders ((a \<rightleftharpoons> b) \<bullet> l) l}}) \<and>
+fv_tyty g = supp g \<and> fv_path h = supp h \<and> fv_trmtrm i = supp i"
+apply(induct rule: mexp_body_defn_sexp_sbody_spec_tyty_path_trmtrm.induct)
+apply(simp_all only: mexp_body_defn_sexp_sbody_spec_tyty_path_trmtrm.fv)
+apply(simp_all only: supp_Abs[symmetric])
+apply(simp_all (no_asm) only: supp_def)
+apply(simp_all only: mexp_body_defn_sexp_sbody_spec_tyty_path_trmtrm.perm)
+apply(simp_all only: permute_ABS)
+apply(simp_all only: mexp_body_defn_sexp_sbody_spec_tyty_path_trmtrm.eq_iff Abs_eq_iff)
+apply(simp_all only: alpha_gen)
+apply(simp_all only: eqvts[symmetric] supp_Pair)
+apply(simp_all only: eqvts Pair_eq)
+apply(simp_all only: supp_at_base[symmetric,simplified supp_def])
+apply(simp_all only: infinite_Un[symmetric] Collect_disj_eq[symmetric])
+apply(simp_all only: de_Morgan_conj[symmetric])
+apply simp_all
+done
+
 (* example 3 from Peter Sewell's bestiary *)
 
 nominal_datatype exp =




