More let-rec experiments
authorCezary Kaliszyk <kaliszyk@in.tum.de>
Wed, 03 Feb 2010 18:28:50 +0100
changeset 1058 afedef46d3ab
parent 1057 f81b506f62a7
child 1060 d5d887bb986a
More let-rec experiments
Quot/Nominal/Terms.thy
--- a/Quot/Nominal/Terms.thy	Wed Feb 03 17:36:25 2010 +0100
+++ b/Quot/Nominal/Terms.thy	Wed Feb 03 18:28:50 2010 +0100
@@ -902,6 +902,20 @@
 apply (simp add: permute_trm5_lts fresh_star_def)
 done
 
+lemma lets_ok2:
+  "(Lt5 (Lcons x (Vr5 x) (Lcons y (Vr5 y) Lnil)) (Ap5 (Vr5 x) (Vr5 y))) =
+   (Lt5 (Lcons y (Vr5 y) (Lcons x (Vr5 x) Lnil)) (Ap5 (Vr5 x) (Vr5 y)))"
+apply (subst alpha5_INJ)
+apply (rule conjI)
+apply (rule_tac x="0 :: perm" in exI)
+apply (simp only: alpha_gen)
+apply (simp add: permute_trm5_lts fresh_star_def)
+apply (rule_tac x="(x \<leftrightarrow> y)" in exI)
+apply (simp only: alpha_gen)
+apply (simp add: permute_trm5_lts fresh_star_def)
+done
+
+
 lemma lets_not_ok1:
   "x \<noteq> y \<Longrightarrow> (Lt5 (Lcons x (Vr5 x) (Lcons y (Vr5 y) Lnil)) (Ap5 (Vr5 x) (Vr5 y))) \<noteq>
              (Lt5 (Lcons y (Vr5 x) (Lcons x (Vr5 y) Lnil)) (Ap5 (Vr5 x) (Vr5 y)))"
@@ -915,9 +929,27 @@
 apply (simp only: alpha5_INJ(1))
 done
 
+lemma distinct_helper:
+  shows "\<not>(rVr5 x \<approx>5 rAp5 y z)"
+  apply auto
+  apply (erule alpha5.cases)
+  apply (simp_all only: rtrm5.distinct)
+  done
 
+lemma distinct_helper2:
+  shows "(Vr5 x) \<noteq> (Ap5 y z)"
+  by (lifting distinct_helper)
 
-
+lemma lets_nok:
+  "x \<noteq> y \<Longrightarrow> x \<noteq> z \<Longrightarrow> z \<noteq> y \<Longrightarrow>
+   (Lt5 (Lcons x (Ap5 (Vr5 z) (Vr5 z)) (Lcons y (Vr5 z) Lnil)) (Ap5 (Vr5 x) (Vr5 y))) \<noteq>
+   (Lt5 (Lcons y (Vr5 z) (Lcons x (Ap5 (Vr5 z) (Vr5 z)) Lnil)) (Ap5 (Vr5 x) (Vr5 y)))"
+apply (subst alpha5_INJ)
+apply (simp only: alpha_gen permute_trm5_lts fresh_star_def)
+apply (subst alpha5_INJ(5))
+apply (subst alpha5_INJ(5))
+apply (simp add: distinct_helper2)
+done
 
 text {* type schemes *} 
 datatype ty =