Nominal/Ex/TypeSchemes.thy
changeset 2982 4a00077c008f
parent 2981 c8acaded1777
child 3071 11f6a561eb4b
--- a/Nominal/Ex/TypeSchemes.thy	Tue Jul 19 19:09:06 2011 +0100
+++ b/Nominal/Ex/TypeSchemes.thy	Fri Jul 22 11:37:16 2011 +0100
@@ -288,26 +288,6 @@
 
 termination (eqvt) by lexicographic_order
 
-thm subst_substs.eqvt[no_vars]
-thm subst_def
-thm substs_def
-thm Sum_Type.Projr.simps
-
-lemma
- shows "(p \<bullet> subst x y) = subst (p \<bullet> x) (p \<bullet> y)"
- and   "(p \<bullet> substs x' y') = substs (p \<bullet> x') (p \<bullet> y')"
-unfolding subst_def substs_def
-thm permute_fun_app_eq
-thm Sum_Type.Projl_def sum_rec_def
-apply(simp add: permute_fun_def)
-unfolding subst_substs_sumC_def
-thm subst_substs.eqvt
-apply(case_tac x)
-apply(simp)
-apply(case_tac a)
-apply(simp)
-thm subst_def
-apply(simp)
 
 section {* defined as two separate nominal datatypes *}
 
@@ -383,17 +363,24 @@
   apply (rule, perm_simp, rule)
   apply auto[2]
   apply (rule_tac y="b" and c="a" in tys2.strong_exhaust)
-  apply auto
+  apply auto[1]
+  apply(simp)
+  apply(erule conjE)
   apply (erule Abs_res_fcb)
   apply (simp add: Abs_fresh_iff)
-  apply (simp add: Abs_fresh_iff)
-  apply auto[1]
-  apply (simp add: fresh_def fresh_star_def)
-  apply (rule contra_subsetD[OF  supp_subst])
-  apply simp
-  apply blast
+  apply(simp add: fresh_def)
+  apply(simp add: supp_Abs)
+  apply(rule impI)
+  apply(subgoal_tac "x \<notin> supp \<theta>")
+  prefer 2
+  apply(auto simp add: fresh_star_def fresh_def)[1]
+  apply(subgoal_tac "x \<in> supp t")
+  using supp_subst
+  apply(blast)
+  using supp_subst
+  apply(blast)
   apply clarify
-  apply (simp add: subst_eqvt)
+  apply (simp add: subst2.eqvt)
   apply (subst Abs_eq_iff)
   apply (rule_tac x="0::perm" in exI)
   apply (subgoal_tac "p \<bullet> \<theta>' = \<theta>'")
@@ -415,7 +402,6 @@
   apply blast
   done
 
-
 text {* Some Tests about Alpha-Equality *}
 
 lemma