src/HOL/Lambda/StrongNorm.thy
changeset 32960 69916a850301
parent 23750 a1db5f819d00
child 33640 0d82107dc07a
equal deleted inserted replaced
32959:23a8c5ac35f8 32960:69916a850301
     1 (*  Title:      HOL/Lambda/StrongNorm.thy
     1 (*  Title:      HOL/Lambda/StrongNorm.thy
     2     ID:         $Id$
       
     3     Author:     Stefan Berghofer
     2     Author:     Stefan Berghofer
     4     Copyright   2000 TU Muenchen
     3     Copyright   2000 TU Muenchen
     5 *)
     4 *)
     6 
     5 
     7 header {* Strong normalization for simply-typed lambda calculus *}
     6 header {* Strong normalization for simply-typed lambda calculus *}
   228         have "Abs r \<degree> a \<degree>\<degree> as \<rightarrow>\<^sub>\<beta> r[a/0] \<degree>\<degree> as"
   227         have "Abs r \<degree> a \<degree>\<degree> as \<rightarrow>\<^sub>\<beta> r[a/0] \<degree>\<degree> as"
   229           by (rule apps_preserves_beta) (rule beta.beta)
   228           by (rule apps_preserves_beta) (rule beta.beta)
   230         with T have "e\<langle>i:T\<rangle> \<turnstile> r[a/0] \<degree>\<degree> as : T'"
   229         with T have "e\<langle>i:T\<rangle> \<turnstile> r[a/0] \<degree>\<degree> as : T'"
   231           by (rule subject_reduction)
   230           by (rule subject_reduction)
   232         hence "IT ((r[a/0] \<degree>\<degree> as)[u/i])"
   231         hence "IT ((r[a/0] \<degree>\<degree> as)[u/i])"
   233 	  using uIT uT by (rule SI1)
   232           using uIT uT by (rule SI1)
   234         thus "IT (r[lift u 0/Suc i][a[u/i]/0] \<degree>\<degree> map (\<lambda>t. t[u/i]) as)"
   233         thus "IT (r[lift u 0/Suc i][a[u/i]/0] \<degree>\<degree> map (\<lambda>t. t[u/i]) as)"
   235           by (simp del: subst_map add: subst_subst subst_map [symmetric])
   234           by (simp del: subst_map add: subst_subst subst_map [symmetric])
   236         from T obtain U where "e\<langle>i:T\<rangle> \<turnstile> Abs r \<degree> a : U"
   235         from T obtain U where "e\<langle>i:T\<rangle> \<turnstile> Abs r \<degree> a : U"
   237           by (rule list_app_typeE) fast
   236           by (rule list_app_typeE) fast
   238         then obtain T'' where "e\<langle>i:T\<rangle> \<turnstile> a : T''" by cases simp_all
   237         then obtain T'' where "e\<langle>i:T\<rangle> \<turnstile> a : T''" by cases simp_all