distinct names at toplevel
authorCezary Kaliszyk <kaliszyk@in.tum.de>
Wed, 02 Mar 2011 16:07:56 +0900
changeset 2739 b5ffcb30b6d0
parent 2738 7fd879774d9b
child 2741 651355113eee
distinct names at toplevel
Nominal/Ex/Lambda_add.thy
--- a/Nominal/Ex/Lambda_add.thy	Wed Mar 02 12:49:01 2011 +0900
+++ b/Nominal/Ex/Lambda_add.thy	Wed Mar 02 16:07:56 2011 +0900
@@ -128,6 +128,24 @@
   by (metis Rep_name_inject atom_name_def fresh_at_base lam.fresh(1))
 
 
+definition Lam_I_pre : "\<II> \<equiv> Lam[cx]. Var cx"
+
+lemma Lam_I : "\<II> = Lam[x]. Var x"
+  by (simp add: Lam_I_pre lam.eq_iff Abs1_eq_iff lam.fresh supp_at_base)
+     (metis Rep_name_inverse atom_name_def fresh_at_base)
+
+definition c1 :: name where "c1 \<equiv> Abs_name (Atom (Sort ''Lambda.name'' []) 1)"
+definition c2 :: name where "c2 \<equiv> Abs_name (Atom (Sort ''Lambda.name'' []) 2)"
+
+lemma c1_c2[simp]:
+  "c1 \<noteq> c2"
+  unfolding c1_def c2_def
+  by (simp add: Abs_name_inject)
+
+definition Lam_F_pre : "\<FF> \<equiv> Lam[c1]. Lam[c2]. Var c2"
+lemma Lam_F : "\<FF> = Lam[x]. Lam[y]. Var y"
+  by (simp add: Lam_F_pre lam.eq_iff Abs1_eq_iff lam.fresh supp_at_base)
+     (metis Rep_name_inverse atom_name_def fresh_at_base)
 
 end