Nominal/Ex/Lambda_add.thy
changeset 2739 b5ffcb30b6d0
parent 2737 ff22039df778
child 2752 9f44608ea28d
equal deleted inserted replaced
2738:7fd879774d9b 2739:b5ffcb30b6d0
   126   apply simp
   126   apply simp
   127   apply (auto simp add: lam.eq_iff Abs1_eq_iff)
   127   apply (auto simp add: lam.eq_iff Abs1_eq_iff)
   128   by (metis Rep_name_inject atom_name_def fresh_at_base lam.fresh(1))
   128   by (metis Rep_name_inject atom_name_def fresh_at_base lam.fresh(1))
   129 
   129 
   130 
   130 
       
   131 definition Lam_I_pre : "\<II> \<equiv> Lam[cx]. Var cx"
       
   132 
       
   133 lemma Lam_I : "\<II> = Lam[x]. Var x"
       
   134   by (simp add: Lam_I_pre lam.eq_iff Abs1_eq_iff lam.fresh supp_at_base)
       
   135      (metis Rep_name_inverse atom_name_def fresh_at_base)
       
   136 
       
   137 definition c1 :: name where "c1 \<equiv> Abs_name (Atom (Sort ''Lambda.name'' []) 1)"
       
   138 definition c2 :: name where "c2 \<equiv> Abs_name (Atom (Sort ''Lambda.name'' []) 2)"
       
   139 
       
   140 lemma c1_c2[simp]:
       
   141   "c1 \<noteq> c2"
       
   142   unfolding c1_def c2_def
       
   143   by (simp add: Abs_name_inject)
       
   144 
       
   145 definition Lam_F_pre : "\<FF> \<equiv> Lam[c1]. Lam[c2]. Var c2"
       
   146 lemma Lam_F : "\<FF> = Lam[x]. Lam[y]. Var y"
       
   147   by (simp add: Lam_F_pre lam.eq_iff Abs1_eq_iff lam.fresh supp_at_base)
       
   148      (metis Rep_name_inverse atom_name_def fresh_at_base)
   131 
   149 
   132 end
   150 end
   133 
   151 
   134 
   152 
   135 
   153