Nominal/Manual/LamEx.thy
changeset 1656 c9d3dda79fe3
parent 1652 3b9c05d158f3
--- a/Nominal/Manual/LamEx.thy	Fri Mar 26 10:55:13 2010 +0100
+++ b/Nominal/Manual/LamEx.thy	Fri Mar 26 16:20:39 2010 +0100
@@ -95,8 +95,8 @@
        \<Longrightarrow> rLam a t \<approx>a rLam b s"
 
 lemma a3_inverse:
-  assumes "rLam a t \<approx> rLam b s"
-  shows "\<exists>pi. (rfv t - {atom a} = rfv s - {atom b} \<and> (rfv t - {atom a})\<sharp>* pi \<and> (pi \<bullet> t) \<approx> s)"
+  assumes "rLam a t \<approx>a rLam b s"
+  shows "\<exists>pi. (rfv t - {atom a} = rfv s - {atom b} \<and> (rfv t - {atom a})\<sharp>* pi \<and> (pi \<bullet> t) \<approx>a s)"
 using assms
 apply(erule_tac alpha.cases)
 apply(auto)
@@ -104,7 +104,7 @@
 
 text {* should be automatic with new version of eqvt-machinery *}
 lemma alpha_eqvt:
-  shows "t \<approx> s \<Longrightarrow> (pi \<bullet> t) \<approx> (pi \<bullet> s)"
+  shows "t \<approx>a s \<Longrightarrow> (pi \<bullet> t) \<approx>a (pi \<bullet> s)"
 apply(induct rule: alpha.induct)
 apply(simp add: a1)
 apply(simp add: a2)
@@ -126,7 +126,7 @@
 done
 
 lemma alpha_refl:
-  shows "t \<approx> t"
+  shows "t \<approx>a t"
 apply(induct t rule: rlam.induct)
 apply(simp add: a1)
 apply(simp add: a2)
@@ -136,7 +136,7 @@
 done
 
 lemma alpha_sym:
-  shows "t \<approx> s \<Longrightarrow> s \<approx> t"
+  shows "t \<approx>a s \<Longrightarrow> s \<approx>a t"
 apply(induct rule: alpha.induct)
 apply(simp add: a1)
 apply(simp add: a2)
@@ -152,7 +152,7 @@
 done
 
 lemma alpha_trans:
-  shows "t1 \<approx> t2 \<Longrightarrow> t2 \<approx> t3 \<Longrightarrow> t1 \<approx> t3"
+  shows "t1 \<approx>a t2 \<Longrightarrow> t2 \<approx>a t3 \<Longrightarrow> t1 \<approx>a t3"
 apply(induct arbitrary: t3 rule: alpha.induct)
 apply(erule alpha.cases)
 apply(simp_all)
@@ -188,22 +188,22 @@
   done
 
 lemma alpha_rfv:
-  shows "t \<approx> s \<Longrightarrow> rfv t = rfv s"
+  shows "t \<approx>a s \<Longrightarrow> rfv t = rfv s"
   apply(induct rule: alpha.induct)
   apply(simp_all)
   done
 
 inductive
-    alpha2 :: "rlam \<Rightarrow> rlam \<Rightarrow> bool" ("_ \<approx>2 _" [100, 100] 100)
+    alpha2 :: "rlam \<Rightarrow> rlam \<Rightarrow> bool" ("_ \<approx>a2 _" [100, 100] 100)
 where
-  a21: "a = b \<Longrightarrow> (rVar a) \<approx>2 (rVar b)"
-| a22: "\<lbrakk>t1 \<approx>2 t2; s1 \<approx>2 s2\<rbrakk> \<Longrightarrow> rApp t1 s1 \<approx>2 rApp t2 s2"
-| a23: "(a = b \<and> t \<approx>2 s) \<or> (a \<noteq> b \<and> ((a \<leftrightarrow> b) \<bullet> t) \<approx>2 s \<and> atom b \<notin> rfv t)\<Longrightarrow> rLam a t \<approx>2 rLam b s"
+  a21: "a = b \<Longrightarrow> (rVar a) \<approx>a2 (rVar b)"
+| a22: "\<lbrakk>t1 \<approx>a2 t2; s1 \<approx>a2 s2\<rbrakk> \<Longrightarrow> rApp t1 s1 \<approx>a2 rApp t2 s2"
+| a23: "(a = b \<and> t \<approx>a2 s) \<or> (a \<noteq> b \<and> ((a \<leftrightarrow> b) \<bullet> t) \<approx>a2 s \<and> atom b \<notin> rfv t)\<Longrightarrow> rLam a t \<approx>a2 rLam b s"
 
 lemma fv_vars:
   fixes a::name
   assumes a1: "\<forall>x \<in> rfv t - {atom a}. pi \<bullet> x = x"
-  shows "(pi \<bullet> t) \<approx>2 ((a \<leftrightarrow> (pi \<bullet> a)) \<bullet> t)"
+  shows "(pi \<bullet> t) \<approx>a2 ((a \<leftrightarrow> (pi \<bullet> a)) \<bullet> t)"
 using a1
 apply(induct t)
 apply(auto)
@@ -222,8 +222,8 @@
 
 
 lemma 
-  assumes a1: "t \<approx>2 s"
-  shows "t \<approx> s"
+  assumes a1: "t \<approx>a2 s"
+  shows "t \<approx>a s"
 using a1
 apply(induct)
 apply(rule alpha.intros)
@@ -254,8 +254,8 @@
 sorry
 
 lemma 
-  assumes a1: "t \<approx> s"
-  shows "t \<approx>2 s"
+  assumes a1: "t \<approx>a s"
+  shows "t \<approx>a2 s"
 using a1
 apply(induct)
 apply(rule alpha2.intros)
@@ -445,12 +445,12 @@
 done
 
 lemma rlam_distinct:
-  shows "\<not>(rVar nam \<approx> rApp rlam1' rlam2')"
-  and   "\<not>(rApp rlam1' rlam2' \<approx> rVar nam)"
-  and   "\<not>(rVar nam \<approx> rLam nam' rlam')"
-  and   "\<not>(rLam nam' rlam' \<approx> rVar nam)"
-  and   "\<not>(rApp rlam1 rlam2 \<approx> rLam nam' rlam')"
-  and   "\<not>(rLam nam' rlam' \<approx> rApp rlam1 rlam2)"
+  shows "\<not>(rVar nam \<approx>a rApp rlam1' rlam2')"
+  and   "\<not>(rApp rlam1' rlam2' \<approx>a rVar nam)"
+  and   "\<not>(rVar nam \<approx>a rLam nam' rlam')"
+  and   "\<not>(rLam nam' rlam' \<approx>a rVar nam)"
+  and   "\<not>(rApp rlam1 rlam2 \<approx>a rLam nam' rlam')"
+  and   "\<not>(rLam nam' rlam' \<approx>a rApp rlam1 rlam2)"
 apply auto
 apply (erule alpha.cases)
 apply (simp_all only: rlam.distinct)