Quot/Nominal/Terms.thy
changeset 1032 135bf399c036
parent 1031 bcf6e7d20c20
child 1033 dce45db16063
equal deleted inserted replaced
1031:bcf6e7d20c20 1032:135bf399c036
   334 apply(simp add: alpha_gen.simps)
   334 apply(simp add: alpha_gen.simps)
   335 apply(simp add: supp_eqvt[symmetric] fv_trm1_eqvt[symmetric] bv1_eqvt)
   335 apply(simp add: supp_eqvt[symmetric] fv_trm1_eqvt[symmetric] bv1_eqvt)
   336 apply(simp add: Collect_imp_eq Collect_neg_eq)
   336 apply(simp add: Collect_imp_eq Collect_neg_eq)
   337 done
   337 done
   338 
   338 
       
   339 lemma trm1_supp:
       
   340   "supp (Vr1 x) = {atom x}"
       
   341   "supp (Ap1 t1 t2) = supp t1 \<union> supp t2"
       
   342   "supp (Lm1 x t) = (supp t) - {atom x}"
       
   343   "supp (Lt1 b t s) = supp t \<union> (supp s - bv1 b)"
       
   344   by (simp_all only: supp_fv fv_trm1)
       
   345 
       
   346 lemma trm1_induct_strong:
       
   347   assumes "\<And>name b. P b (Vr1 name)"
       
   348   and     "\<And>rtrm11 rtrm12 b. \<lbrakk>\<And>c. P c rtrm11; \<And>c. P c rtrm12\<rbrakk> \<Longrightarrow> P b (Ap1 rtrm11 rtrm12)"
       
   349   and     "\<And>name rtrm1 b. \<lbrakk>\<And>c. P c rtrm1; (atom name) \<sharp> b\<rbrakk> \<Longrightarrow> P b (Lm1 name rtrm1)"
       
   350   and     "\<And>bp rtrm11 rtrm12 b. \<lbrakk>\<And>c. P c rtrm11; \<And>c. P c rtrm12; bp1 bp \<sharp>* b\<rbrakk> \<Longrightarrow> P b (Lt1 bp rtrm11 rtrm12)"
       
   351   shows   "P a rtrma"
       
   352 
       
   353 
   339 section {*** lets with single assignments ***}
   354 section {*** lets with single assignments ***}
   340 
   355 
   341 datatype trm2 =
   356 datatype trm2 =
   342   Vr2 "name"
   357   Vr2 "name"
   343 | Ap2 "trm2" "trm2"
   358 | Ap2 "trm2" "trm2"