]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_1/subst1/props.ma
components: subst1 csubst0 csubst1 fsubst0
[helm.git] / matita / matita / contribs / lambdadelta / basic_1 / subst1 / props.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* This file was automatically generated: do not edit *********************)
16
17 include "basic_1/subst1/fwd.ma".
18
19 include "basic_1/subst0/props.ma".
20
21 theorem subst1_head:
22  \forall (v: T).(\forall (u1: T).(\forall (u2: T).(\forall (i: nat).((subst1 
23 i v u1 u2) \to (\forall (k: K).(\forall (t1: T).(\forall (t2: T).((subst1 (s 
24 k i) v t1 t2) \to (subst1 i v (THead k u1 t1) (THead k u2 t2))))))))))
25 \def
26  \lambda (v: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (i: nat).(\lambda 
27 (H: (subst1 i v u1 u2)).(let TMP_3 \def (\lambda (t: T).(\forall (k: 
28 K).(\forall (t1: T).(\forall (t2: T).((subst1 (s k i) v t1 t2) \to (let TMP_1 
29 \def (THead k u1 t1) in (let TMP_2 \def (THead k t t2) in (subst1 i v TMP_1 
30 TMP_2)))))))) in (let TMP_14 \def (\lambda (k: K).(\lambda (t1: T).(\lambda 
31 (t2: T).(\lambda (H0: (subst1 (s k i) v t1 t2)).(let TMP_4 \def (s k i) in 
32 (let TMP_7 \def (\lambda (t: T).(let TMP_5 \def (THead k u1 t1) in (let TMP_6 
33 \def (THead k u1 t) in (subst1 i v TMP_5 TMP_6)))) in (let TMP_8 \def (THead 
34 k u1 t1) in (let TMP_9 \def (subst1_refl i v TMP_8) in (let TMP_13 \def 
35 (\lambda (t3: T).(\lambda (H1: (subst0 (s k i) v t1 t3)).(let TMP_10 \def 
36 (THead k u1 t1) in (let TMP_11 \def (THead k u1 t3) in (let TMP_12 \def 
37 (subst0_snd k v t3 t1 i H1 u1) in (subst1_single i v TMP_10 TMP_11 
38 TMP_12)))))) in (subst1_ind TMP_4 v t1 TMP_7 TMP_9 TMP_13 t2 H0)))))))))) in 
39 (let TMP_27 \def (\lambda (t2: T).(\lambda (H0: (subst0 i v u1 t2)).(\lambda 
40 (k: K).(\lambda (t1: T).(\lambda (t0: T).(\lambda (H1: (subst1 (s k i) v t1 
41 t0)).(let TMP_15 \def (s k i) in (let TMP_18 \def (\lambda (t: T).(let TMP_16 
42 \def (THead k u1 t1) in (let TMP_17 \def (THead k t2 t) in (subst1 i v TMP_16 
43 TMP_17)))) in (let TMP_19 \def (THead k u1 t1) in (let TMP_20 \def (THead k 
44 t2 t1) in (let TMP_21 \def (subst0_fst v t2 u1 i H0 t1 k) in (let TMP_22 \def 
45 (subst1_single i v TMP_19 TMP_20 TMP_21) in (let TMP_26 \def (\lambda (t3: 
46 T).(\lambda (H2: (subst0 (s k i) v t1 t3)).(let TMP_23 \def (THead k u1 t1) 
47 in (let TMP_24 \def (THead k t2 t3) in (let TMP_25 \def (subst0_both v u1 t2 
48 i H0 k t1 t3 H2) in (subst1_single i v TMP_23 TMP_24 TMP_25)))))) in 
49 (subst1_ind TMP_15 v t1 TMP_18 TMP_22 TMP_26 t0 H1)))))))))))))) in 
50 (subst1_ind i v u1 TMP_3 TMP_14 TMP_27 u2 H)))))))).
51
52 theorem subst1_lift_lt:
53  \forall (t1: T).(\forall (t2: T).(\forall (u: T).(\forall (i: nat).((subst1 
54 i u t1 t2) \to (\forall (d: nat).((lt i d) \to (\forall (h: nat).(subst1 i 
55 (lift h (minus d (S i)) u) (lift h d t1) (lift h d t2)))))))))
56 \def
57  \lambda (t1: T).(\lambda (t2: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
58 (H: (subst1 i u t1 t2)).(let TMP_6 \def (\lambda (t: T).(\forall (d: 
59 nat).((lt i d) \to (\forall (h: nat).(let TMP_1 \def (S i) in (let TMP_2 \def 
60 (minus d TMP_1) in (let TMP_3 \def (lift h TMP_2 u) in (let TMP_4 \def (lift 
61 h d t1) in (let TMP_5 \def (lift h d t) in (subst1 i TMP_3 TMP_4 
62 TMP_5)))))))))) in (let TMP_11 \def (\lambda (d: nat).(\lambda (_: (lt i 
63 d)).(\lambda (h: nat).(let TMP_7 \def (S i) in (let TMP_8 \def (minus d 
64 TMP_7) in (let TMP_9 \def (lift h TMP_8 u) in (let TMP_10 \def (lift h d t1) 
65 in (subst1_refl i TMP_9 TMP_10)))))))) in (let TMP_18 \def (\lambda (t3: 
66 T).(\lambda (H0: (subst0 i u t1 t3)).(\lambda (d: nat).(\lambda (H1: (lt i 
67 d)).(\lambda (h: nat).(let TMP_12 \def (S i) in (let TMP_13 \def (minus d 
68 TMP_12) in (let TMP_14 \def (lift h TMP_13 u) in (let TMP_15 \def (lift h d 
69 t1) in (let TMP_16 \def (lift h d t3) in (let TMP_17 \def (subst0_lift_lt t1 
70 t3 u i H0 d H1 h) in (subst1_single i TMP_14 TMP_15 TMP_16 TMP_17)))))))))))) 
71 in (subst1_ind i u t1 TMP_6 TMP_11 TMP_18 t2 H)))))))).
72
73 theorem subst1_lift_ge:
74  \forall (t1: T).(\forall (t2: T).(\forall (u: T).(\forall (i: nat).(\forall 
75 (h: nat).((subst1 i u t1 t2) \to (\forall (d: nat).((le d i) \to (subst1 
76 (plus i h) u (lift h d t1) (lift h d t2)))))))))
77 \def
78  \lambda (t1: T).(\lambda (t2: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
79 (h: nat).(\lambda (H: (subst1 i u t1 t2)).(let TMP_4 \def (\lambda (t: 
80 T).(\forall (d: nat).((le d i) \to (let TMP_1 \def (plus i h) in (let TMP_2 
81 \def (lift h d t1) in (let TMP_3 \def (lift h d t) in (subst1 TMP_1 u TMP_2 
82 TMP_3))))))) in (let TMP_7 \def (\lambda (d: nat).(\lambda (_: (le d i)).(let 
83 TMP_5 \def (plus i h) in (let TMP_6 \def (lift h d t1) in (subst1_refl TMP_5 
84 u TMP_6))))) in (let TMP_12 \def (\lambda (t3: T).(\lambda (H0: (subst0 i u 
85 t1 t3)).(\lambda (d: nat).(\lambda (H1: (le d i)).(let TMP_8 \def (plus i h) 
86 in (let TMP_9 \def (lift h d t1) in (let TMP_10 \def (lift h d t3) in (let 
87 TMP_11 \def (subst0_lift_ge t1 t3 u i h H0 d H1) in (subst1_single TMP_8 u 
88 TMP_9 TMP_10 TMP_11))))))))) in (subst1_ind i u t1 TMP_4 TMP_7 TMP_12 t2 
89 H))))))))).
90
91 theorem subst1_ex:
92  \forall (u: T).(\forall (t1: T).(\forall (d: nat).(ex T (\lambda (t2: 
93 T).(subst1 d u t1 (lift (S O) d t2))))))
94 \def
95  \lambda (u: T).(\lambda (t1: T).(let TMP_4 \def (\lambda (t: T).(\forall (d: 
96 nat).(let TMP_3 \def (\lambda (t2: T).(let TMP_1 \def (S O) in (let TMP_2 
97 \def (lift TMP_1 d t2) in (subst1 d u t TMP_2)))) in (ex T TMP_3)))) in (let 
98 TMP_21 \def (\lambda (n: nat).(\lambda (d: nat).(let TMP_8 \def (\lambda (t2: 
99 T).(let TMP_5 \def (TSort n) in (let TMP_6 \def (S O) in (let TMP_7 \def 
100 (lift TMP_6 d t2) in (subst1 d u TMP_5 TMP_7))))) in (let TMP_9 \def (TSort 
101 n) in (let TMP_10 \def (TSort n) in (let TMP_12 \def (\lambda (t: T).(let 
102 TMP_11 \def (TSort n) in (subst1 d u TMP_11 t))) in (let TMP_13 \def (TSort 
103 n) in (let TMP_14 \def (subst1_refl d u TMP_13) in (let TMP_15 \def (S O) in 
104 (let TMP_16 \def (TSort n) in (let TMP_17 \def (lift TMP_15 d TMP_16) in (let 
105 TMP_18 \def (S O) in (let TMP_19 \def (lift_sort n TMP_18 d) in (let TMP_20 
106 \def (eq_ind_r T TMP_10 TMP_12 TMP_14 TMP_17 TMP_19) in (ex_intro T TMP_8 
107 TMP_9 TMP_20))))))))))))))) in (let TMP_92 \def (\lambda (n: nat).(\lambda 
108 (d: nat).(let TMP_25 \def (\lambda (t2: T).(let TMP_22 \def (TLRef n) in (let 
109 TMP_23 \def (S O) in (let TMP_24 \def (lift TMP_23 d t2) in (subst1 d u 
110 TMP_22 TMP_24))))) in (let TMP_26 \def (ex T TMP_25) in (let TMP_43 \def 
111 (\lambda (H: (lt n d)).(let TMP_30 \def (\lambda (t2: T).(let TMP_27 \def 
112 (TLRef n) in (let TMP_28 \def (S O) in (let TMP_29 \def (lift TMP_28 d t2) in 
113 (subst1 d u TMP_27 TMP_29))))) in (let TMP_31 \def (TLRef n) in (let TMP_32 
114 \def (TLRef n) in (let TMP_34 \def (\lambda (t: T).(let TMP_33 \def (TLRef n) 
115 in (subst1 d u TMP_33 t))) in (let TMP_35 \def (TLRef n) in (let TMP_36 \def 
116 (subst1_refl d u TMP_35) in (let TMP_37 \def (S O) in (let TMP_38 \def (TLRef 
117 n) in (let TMP_39 \def (lift TMP_37 d TMP_38) in (let TMP_40 \def (S O) in 
118 (let TMP_41 \def (lift_lref_lt n TMP_40 d H) in (let TMP_42 \def (eq_ind_r T 
119 TMP_32 TMP_34 TMP_36 TMP_39 TMP_41) in (ex_intro T TMP_30 TMP_31 
120 TMP_42)))))))))))))) in (let TMP_73 \def (\lambda (H: (eq nat n d)).(let 
121 TMP_48 \def (\lambda (n0: nat).(let TMP_47 \def (\lambda (t2: T).(let TMP_44 
122 \def (TLRef n) in (let TMP_45 \def (S O) in (let TMP_46 \def (lift TMP_45 n0 
123 t2) in (subst1 n0 u TMP_44 TMP_46))))) in (ex T TMP_47))) in (let TMP_52 \def 
124 (\lambda (t2: T).(let TMP_49 \def (TLRef n) in (let TMP_50 \def (S O) in (let 
125 TMP_51 \def (lift TMP_50 n t2) in (subst1 n u TMP_49 TMP_51))))) in (let 
126 TMP_53 \def (lift n O u) in (let TMP_54 \def (S O) in (let TMP_55 \def (plus 
127 TMP_54 n) in (let TMP_56 \def (lift TMP_55 O u) in (let TMP_58 \def (\lambda 
128 (t: T).(let TMP_57 \def (TLRef n) in (subst1 n u TMP_57 t))) in (let TMP_59 
129 \def (TLRef n) in (let TMP_60 \def (S n) in (let TMP_61 \def (lift TMP_60 O 
130 u) in (let TMP_62 \def (subst0_lref u n) in (let TMP_63 \def (subst1_single n 
131 u TMP_59 TMP_61 TMP_62) in (let TMP_64 \def (S O) in (let TMP_65 \def (lift n 
132 O u) in (let TMP_66 \def (lift TMP_64 n TMP_65) in (let TMP_67 \def (S O) in 
133 (let TMP_68 \def (le_plus_r O n) in (let TMP_69 \def (le_O_n n) in (let 
134 TMP_70 \def (lift_free u n TMP_67 O n TMP_68 TMP_69) in (let TMP_71 \def 
135 (eq_ind_r T TMP_56 TMP_58 TMP_63 TMP_66 TMP_70) in (let TMP_72 \def (ex_intro 
136 T TMP_52 TMP_53 TMP_71) in (eq_ind nat n TMP_48 TMP_72 d 
137 H))))))))))))))))))))))) in (let TMP_91 \def (\lambda (H: (lt d n)).(let 
138 TMP_77 \def (\lambda (t2: T).(let TMP_74 \def (TLRef n) in (let TMP_75 \def 
139 (S O) in (let TMP_76 \def (lift TMP_75 d t2) in (subst1 d u TMP_74 
140 TMP_76))))) in (let TMP_78 \def (pred n) in (let TMP_79 \def (TLRef TMP_78) 
141 in (let TMP_80 \def (TLRef n) in (let TMP_82 \def (\lambda (t: T).(let TMP_81 
142 \def (TLRef n) in (subst1 d u TMP_81 t))) in (let TMP_83 \def (TLRef n) in 
143 (let TMP_84 \def (subst1_refl d u TMP_83) in (let TMP_85 \def (S O) in (let 
144 TMP_86 \def (pred n) in (let TMP_87 \def (TLRef TMP_86) in (let TMP_88 \def 
145 (lift TMP_85 d TMP_87) in (let TMP_89 \def (lift_lref_gt d n H) in (let 
146 TMP_90 \def (eq_ind_r T TMP_80 TMP_82 TMP_84 TMP_88 TMP_89) in (ex_intro T 
147 TMP_77 TMP_79 TMP_90))))))))))))))) in (lt_eq_gt_e n d TMP_26 TMP_43 TMP_73 
148 TMP_91)))))))) in (let TMP_139 \def (\lambda (k: K).(\lambda (t: T).(\lambda 
149 (H: ((\forall (d: nat).(ex T (\lambda (t2: T).(subst1 d u t (lift (S O) d 
150 t2))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (d: nat).(ex T (\lambda 
151 (t2: T).(subst1 d u t0 (lift (S O) d t2))))))).(\lambda (d: nat).(let H_x 
152 \def (H d) in (let H1 \def H_x in (let TMP_95 \def (\lambda (t2: T).(let 
153 TMP_93 \def (S O) in (let TMP_94 \def (lift TMP_93 d t2) in (subst1 d u t 
154 TMP_94)))) in (let TMP_99 \def (\lambda (t2: T).(let TMP_96 \def (THead k t 
155 t0) in (let TMP_97 \def (S O) in (let TMP_98 \def (lift TMP_97 d t2) in 
156 (subst1 d u TMP_96 TMP_98))))) in (let TMP_100 \def (ex T TMP_99) in (let 
157 TMP_138 \def (\lambda (x: T).(\lambda (H2: (subst1 d u t (lift (S O) d 
158 x))).(let TMP_101 \def (s k d) in (let H_x0 \def (H0 TMP_101) in (let H3 \def 
159 H_x0 in (let TMP_106 \def (\lambda (t2: T).(let TMP_102 \def (s k d) in (let 
160 TMP_103 \def (S O) in (let TMP_104 \def (s k d) in (let TMP_105 \def (lift 
161 TMP_103 TMP_104 t2) in (subst1 TMP_102 u t0 TMP_105)))))) in (let TMP_110 
162 \def (\lambda (t2: T).(let TMP_107 \def (THead k t t0) in (let TMP_108 \def 
163 (S O) in (let TMP_109 \def (lift TMP_108 d t2) in (subst1 d u TMP_107 
164 TMP_109))))) in (let TMP_111 \def (ex T TMP_110) in (let TMP_137 \def 
165 (\lambda (x0: T).(\lambda (H4: (subst1 (s k d) u t0 (lift (S O) (s k d) 
166 x0))).(let TMP_115 \def (\lambda (t2: T).(let TMP_112 \def (THead k t t0) in 
167 (let TMP_113 \def (S O) in (let TMP_114 \def (lift TMP_113 d t2) in (subst1 d 
168 u TMP_112 TMP_114))))) in (let TMP_116 \def (THead k x x0) in (let TMP_117 
169 \def (S O) in (let TMP_118 \def (lift TMP_117 d x) in (let TMP_119 \def (S O) 
170 in (let TMP_120 \def (s k d) in (let TMP_121 \def (lift TMP_119 TMP_120 x0) 
171 in (let TMP_122 \def (THead k TMP_118 TMP_121) in (let TMP_124 \def (\lambda 
172 (t2: T).(let TMP_123 \def (THead k t t0) in (subst1 d u TMP_123 t2))) in (let 
173 TMP_125 \def (S O) in (let TMP_126 \def (lift TMP_125 d x) in (let TMP_127 
174 \def (S O) in (let TMP_128 \def (s k d) in (let TMP_129 \def (lift TMP_127 
175 TMP_128 x0) in (let TMP_130 \def (subst1_head u t TMP_126 d H2 k t0 TMP_129 
176 H4) in (let TMP_131 \def (S O) in (let TMP_132 \def (THead k x x0) in (let 
177 TMP_133 \def (lift TMP_131 d TMP_132) in (let TMP_134 \def (S O) in (let 
178 TMP_135 \def (lift_head k x x0 TMP_134 d) in (let TMP_136 \def (eq_ind_r T 
179 TMP_122 TMP_124 TMP_130 TMP_133 TMP_135) in (ex_intro T TMP_115 TMP_116 
180 TMP_136)))))))))))))))))))))))) in (ex_ind T TMP_106 TMP_111 TMP_137 
181 H3)))))))))) in (ex_ind T TMP_95 TMP_100 TMP_138 H1))))))))))))) in (T_ind 
182 TMP_4 TMP_21 TMP_92 TMP_139 t1)))))).
183
184 theorem subst1_lift_S:
185  \forall (u: T).(\forall (i: nat).(\forall (h: nat).((le h i) \to (subst1 i 
186 (TLRef h) (lift (S h) (S i) u) (lift (S h) i u)))))
187 \def
188  \lambda (u: T).(let TMP_7 \def (\lambda (t: T).(\forall (i: nat).(\forall 
189 (h: nat).((le h i) \to (let TMP_1 \def (TLRef h) in (let TMP_2 \def (S h) in 
190 (let TMP_3 \def (S i) in (let TMP_4 \def (lift TMP_2 TMP_3 t) in (let TMP_5 
191 \def (S h) in (let TMP_6 \def (lift TMP_5 i t) in (subst1 i TMP_1 TMP_4 
192 TMP_6))))))))))) in (let TMP_34 \def (\lambda (n: nat).(\lambda (i: 
193 nat).(\lambda (h: nat).(\lambda (_: (le h i)).(let TMP_8 \def (TSort n) in 
194 (let TMP_13 \def (\lambda (t: T).(let TMP_9 \def (TLRef h) in (let TMP_10 
195 \def (S h) in (let TMP_11 \def (TSort n) in (let TMP_12 \def (lift TMP_10 i 
196 TMP_11) in (subst1 i TMP_9 t TMP_12)))))) in (let TMP_14 \def (TSort n) in 
197 (let TMP_17 \def (\lambda (t: T).(let TMP_15 \def (TLRef h) in (let TMP_16 
198 \def (TSort n) in (subst1 i TMP_15 TMP_16 t)))) in (let TMP_18 \def (TLRef h) 
199 in (let TMP_19 \def (TSort n) in (let TMP_20 \def (subst1_refl i TMP_18 
200 TMP_19) in (let TMP_21 \def (S h) in (let TMP_22 \def (TSort n) in (let 
201 TMP_23 \def (lift TMP_21 i TMP_22) in (let TMP_24 \def (S h) in (let TMP_25 
202 \def (lift_sort n TMP_24 i) in (let TMP_26 \def (eq_ind_r T TMP_14 TMP_17 
203 TMP_20 TMP_23 TMP_25) in (let TMP_27 \def (S h) in (let TMP_28 \def (S i) in 
204 (let TMP_29 \def (TSort n) in (let TMP_30 \def (lift TMP_27 TMP_28 TMP_29) in 
205 (let TMP_31 \def (S h) in (let TMP_32 \def (S i) in (let TMP_33 \def 
206 (lift_sort n TMP_31 TMP_32) in (eq_ind_r T TMP_8 TMP_13 TMP_26 TMP_30 
207 TMP_33))))))))))))))))))))))))) in (let TMP_220 \def (\lambda (n: 
208 nat).(\lambda (i: nat).(\lambda (h: nat).(\lambda (H: (le h i)).(let TMP_35 
209 \def (TLRef h) in (let TMP_36 \def (S h) in (let TMP_37 \def (S i) in (let 
210 TMP_38 \def (TLRef n) in (let TMP_39 \def (lift TMP_36 TMP_37 TMP_38) in (let 
211 TMP_40 \def (S h) in (let TMP_41 \def (TLRef n) in (let TMP_42 \def (lift 
212 TMP_40 i TMP_41) in (let TMP_43 \def (subst1 i TMP_35 TMP_39 TMP_42) in (let 
213 TMP_79 \def (\lambda (H0: (lt n i)).(let TMP_44 \def (TLRef n) in (let TMP_49 
214 \def (\lambda (t: T).(let TMP_45 \def (TLRef h) in (let TMP_46 \def (S h) in 
215 (let TMP_47 \def (TLRef n) in (let TMP_48 \def (lift TMP_46 i TMP_47) in 
216 (subst1 i TMP_45 t TMP_48)))))) in (let TMP_50 \def (TLRef n) in (let TMP_53 
217 \def (\lambda (t: T).(let TMP_51 \def (TLRef h) in (let TMP_52 \def (TLRef n) 
218 in (subst1 i TMP_51 TMP_52 t)))) in (let TMP_54 \def (TLRef h) in (let TMP_55 
219 \def (TLRef n) in (let TMP_56 \def (subst1_refl i TMP_54 TMP_55) in (let 
220 TMP_57 \def (S h) in (let TMP_58 \def (TLRef n) in (let TMP_59 \def (lift 
221 TMP_57 i TMP_58) in (let TMP_60 \def (S h) in (let TMP_61 \def (lift_lref_lt 
222 n TMP_60 i H0) in (let TMP_62 \def (eq_ind_r T TMP_50 TMP_53 TMP_56 TMP_59 
223 TMP_61) in (let TMP_63 \def (S h) in (let TMP_64 \def (S i) in (let TMP_65 
224 \def (TLRef n) in (let TMP_66 \def (lift TMP_63 TMP_64 TMP_65) in (let TMP_67 
225 \def (S h) in (let TMP_68 \def (S i) in (let TMP_69 \def (S n) in (let TMP_70 
226 \def (S i) in (let TMP_71 \def (S n) in (let TMP_72 \def (S TMP_71) in (let 
227 TMP_73 \def (S i) in (let TMP_74 \def (S n) in (let TMP_75 \def (le_n_S 
228 TMP_74 i H0) in (let TMP_76 \def (le_S TMP_72 TMP_73 TMP_75) in (let TMP_77 
229 \def (le_S_n TMP_69 TMP_70 TMP_76) in (let TMP_78 \def (lift_lref_lt n TMP_67 
230 TMP_68 TMP_77) in (eq_ind_r T TMP_44 TMP_49 TMP_62 TMP_66 
231 TMP_78))))))))))))))))))))))))))))))) in (let TMP_174 \def (\lambda (H0: (eq 
232 nat n i)).(let TMP_80 \def (\lambda (n0: nat).(le h n0)) in (let H1 \def 
233 (eq_ind_r nat i TMP_80 H n H0) in (let TMP_89 \def (\lambda (n0: nat).(let 
234 TMP_81 \def (TLRef h) in (let TMP_82 \def (S h) in (let TMP_83 \def (S n0) in 
235 (let TMP_84 \def (TLRef n) in (let TMP_85 \def (lift TMP_82 TMP_83 TMP_84) in 
236 (let TMP_86 \def (S h) in (let TMP_87 \def (TLRef n) in (let TMP_88 \def 
237 (lift TMP_86 n0 TMP_87) in (subst1 n0 TMP_81 TMP_85 TMP_88)))))))))) in (let 
238 TMP_90 \def (TLRef n) in (let TMP_95 \def (\lambda (t: T).(let TMP_91 \def 
239 (TLRef h) in (let TMP_92 \def (S h) in (let TMP_93 \def (TLRef n) in (let 
240 TMP_94 \def (lift TMP_92 n TMP_93) in (subst1 n TMP_91 t TMP_94)))))) in (let 
241 TMP_96 \def (S h) in (let TMP_97 \def (plus n TMP_96) in (let TMP_98 \def 
242 (TLRef TMP_97) in (let TMP_101 \def (\lambda (t: T).(let TMP_99 \def (TLRef 
243 h) in (let TMP_100 \def (TLRef n) in (subst1 n TMP_99 TMP_100 t)))) in (let 
244 TMP_102 \def (plus n h) in (let TMP_103 \def (S TMP_102) in (let TMP_107 \def 
245 (\lambda (n0: nat).(let TMP_104 \def (TLRef h) in (let TMP_105 \def (TLRef n) 
246 in (let TMP_106 \def (TLRef n0) in (subst1 n TMP_104 TMP_105 TMP_106))))) in 
247 (let TMP_108 \def (plus h n) in (let TMP_113 \def (\lambda (n0: nat).(let 
248 TMP_109 \def (TLRef h) in (let TMP_110 \def (TLRef n) in (let TMP_111 \def (S 
249 n0) in (let TMP_112 \def (TLRef TMP_111) in (subst1 n TMP_109 TMP_110 
250 TMP_112)))))) in (let TMP_114 \def (S n) in (let TMP_115 \def (plus h 
251 TMP_114) in (let TMP_119 \def (\lambda (n0: nat).(let TMP_116 \def (TLRef h) 
252 in (let TMP_117 \def (TLRef n) in (let TMP_118 \def (TLRef n0) in (subst1 n 
253 TMP_116 TMP_117 TMP_118))))) in (let TMP_120 \def (S n) in (let TMP_121 \def 
254 (TLRef h) in (let TMP_122 \def (lift TMP_120 O TMP_121) in (let TMP_125 \def 
255 (\lambda (t: T).(let TMP_123 \def (TLRef h) in (let TMP_124 \def (TLRef n) in 
256 (subst1 n TMP_123 TMP_124 t)))) in (let TMP_126 \def (TLRef h) in (let 
257 TMP_127 \def (TLRef n) in (let TMP_128 \def (S n) in (let TMP_129 \def (TLRef 
258 h) in (let TMP_130 \def (lift TMP_128 O TMP_129) in (let TMP_131 \def (TLRef 
259 h) in (let TMP_132 \def (subst0_lref TMP_131 n) in (let TMP_133 \def 
260 (subst1_single n TMP_126 TMP_127 TMP_130 TMP_132) in (let TMP_134 \def (S n) 
261 in (let TMP_135 \def (plus h TMP_134) in (let TMP_136 \def (TLRef TMP_135) in 
262 (let TMP_137 \def (S n) in (let TMP_138 \def (le_O_n h) in (let TMP_139 \def 
263 (lift_lref_ge h TMP_137 O TMP_138) in (let TMP_140 \def (eq_ind T TMP_122 
264 TMP_125 TMP_133 TMP_136 TMP_139) in (let TMP_141 \def (plus h n) in (let 
265 TMP_142 \def (S TMP_141) in (let TMP_143 \def (plus h n) in (let TMP_144 \def 
266 (S TMP_143) in (let TMP_145 \def (S n) in (let TMP_146 \def (plus h TMP_145) 
267 in (let TMP_147 \def (plus_n_Sm h n) in (let TMP_148 \def (sym_eq nat TMP_144 
268 TMP_146 TMP_147) in (let TMP_149 \def (eq_ind nat TMP_115 TMP_119 TMP_140 
269 TMP_142 TMP_148) in (let TMP_150 \def (plus n h) in (let TMP_151 \def 
270 (plus_sym n h) in (let TMP_152 \def (eq_ind_r nat TMP_108 TMP_113 TMP_149 
271 TMP_150 TMP_151) in (let TMP_153 \def (S h) in (let TMP_154 \def (plus n 
272 TMP_153) in (let TMP_155 \def (plus_n_Sm n h) in (let TMP_156 \def (eq_ind 
273 nat TMP_103 TMP_107 TMP_152 TMP_154 TMP_155) in (let TMP_157 \def (S h) in 
274 (let TMP_158 \def (TLRef n) in (let TMP_159 \def (lift TMP_157 n TMP_158) in 
275 (let TMP_160 \def (S h) in (let TMP_161 \def (le_n n) in (let TMP_162 \def 
276 (lift_lref_ge n TMP_160 n TMP_161) in (let TMP_163 \def (eq_ind_r T TMP_98 
277 TMP_101 TMP_156 TMP_159 TMP_162) in (let TMP_164 \def (S h) in (let TMP_165 
278 \def (S n) in (let TMP_166 \def (TLRef n) in (let TMP_167 \def (lift TMP_164 
279 TMP_165 TMP_166) in (let TMP_168 \def (S h) in (let TMP_169 \def (S n) in 
280 (let TMP_170 \def (S n) in (let TMP_171 \def (le_n TMP_170) in (let TMP_172 
281 \def (lift_lref_lt n TMP_168 TMP_169 TMP_171) in (let TMP_173 \def (eq_ind_r 
282 T TMP_90 TMP_95 TMP_163 TMP_167 TMP_172) in (eq_ind nat n TMP_89 TMP_173 i 
283 H0))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) in 
284 (let TMP_219 \def (\lambda (H0: (lt i n)).(let TMP_175 \def (S h) in (let 
285 TMP_176 \def (plus n TMP_175) in (let TMP_177 \def (TLRef TMP_176) in (let 
286 TMP_182 \def (\lambda (t: T).(let TMP_178 \def (TLRef h) in (let TMP_179 \def 
287 (S h) in (let TMP_180 \def (TLRef n) in (let TMP_181 \def (lift TMP_179 i 
288 TMP_180) in (subst1 i TMP_178 t TMP_181)))))) in (let TMP_183 \def (S h) in 
289 (let TMP_184 \def (plus n TMP_183) in (let TMP_185 \def (TLRef TMP_184) in 
290 (let TMP_190 \def (\lambda (t: T).(let TMP_186 \def (TLRef h) in (let TMP_187 
291 \def (S h) in (let TMP_188 \def (plus n TMP_187) in (let TMP_189 \def (TLRef 
292 TMP_188) in (subst1 i TMP_186 TMP_189 t)))))) in (let TMP_191 \def (TLRef h) 
293 in (let TMP_192 \def (S h) in (let TMP_193 \def (plus n TMP_192) in (let 
294 TMP_194 \def (TLRef TMP_193) in (let TMP_195 \def (subst1_refl i TMP_191 
295 TMP_194) in (let TMP_196 \def (S h) in (let TMP_197 \def (TLRef n) in (let 
296 TMP_198 \def (lift TMP_196 i TMP_197) in (let TMP_199 \def (S h) in (let 
297 TMP_200 \def (S i) in (let TMP_201 \def (S n) in (let TMP_202 \def (S i) in 
298 (let TMP_203 \def (S TMP_202) in (let TMP_204 \def (S n) in (let TMP_205 \def 
299 (S i) in (let TMP_206 \def (le_n_S TMP_205 n H0) in (let TMP_207 \def (le_S 
300 TMP_203 TMP_204 TMP_206) in (let TMP_208 \def (le_S_n TMP_200 TMP_201 
301 TMP_207) in (let TMP_209 \def (le_S_n i n TMP_208) in (let TMP_210 \def 
302 (lift_lref_ge n TMP_199 i TMP_209) in (let TMP_211 \def (eq_ind_r T TMP_185 
303 TMP_190 TMP_195 TMP_198 TMP_210) in (let TMP_212 \def (S h) in (let TMP_213 
304 \def (S i) in (let TMP_214 \def (TLRef n) in (let TMP_215 \def (lift TMP_212 
305 TMP_213 TMP_214) in (let TMP_216 \def (S h) in (let TMP_217 \def (S i) in 
306 (let TMP_218 \def (lift_lref_ge n TMP_216 TMP_217 H0) in (eq_ind_r T TMP_177 
307 TMP_182 TMP_211 TMP_215 TMP_218)))))))))))))))))))))))))))))))))))))) in 
308 (lt_eq_gt_e n i TMP_43 TMP_79 TMP_174 TMP_219))))))))))))))))) in (let 
309 TMP_297 \def (\lambda (k: K).(\lambda (t: T).(\lambda (H: ((\forall (i: 
310 nat).(\forall (h: nat).((le h i) \to (subst1 i (TLRef h) (lift (S h) (S i) t) 
311 (lift (S h) i t))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (i: 
312 nat).(\forall (h: nat).((le h i) \to (subst1 i (TLRef h) (lift (S h) (S i) 
313 t0) (lift (S h) i t0))))))).(\lambda (i: nat).(\lambda (h: nat).(\lambda (H1: 
314 (le h i)).(let TMP_221 \def (S h) in (let TMP_222 \def (S i) in (let TMP_223 
315 \def (lift TMP_221 TMP_222 t) in (let TMP_224 \def (S h) in (let TMP_225 \def 
316 (S i) in (let TMP_226 \def (s k TMP_225) in (let TMP_227 \def (lift TMP_224 
317 TMP_226 t0) in (let TMP_228 \def (THead k TMP_223 TMP_227) in (let TMP_233 
318 \def (\lambda (t1: T).(let TMP_229 \def (TLRef h) in (let TMP_230 \def (S h) 
319 in (let TMP_231 \def (THead k t t0) in (let TMP_232 \def (lift TMP_230 i 
320 TMP_231) in (subst1 i TMP_229 t1 TMP_232)))))) in (let TMP_234 \def (S h) in 
321 (let TMP_235 \def (lift TMP_234 i t) in (let TMP_236 \def (S h) in (let 
322 TMP_237 \def (s k i) in (let TMP_238 \def (lift TMP_236 TMP_237 t0) in (let 
323 TMP_239 \def (THead k TMP_235 TMP_238) in (let TMP_249 \def (\lambda (t1: 
324 T).(let TMP_240 \def (TLRef h) in (let TMP_241 \def (S h) in (let TMP_242 
325 \def (S i) in (let TMP_243 \def (lift TMP_241 TMP_242 t) in (let TMP_244 \def 
326 (S h) in (let TMP_245 \def (S i) in (let TMP_246 \def (s k TMP_245) in (let 
327 TMP_247 \def (lift TMP_244 TMP_246 t0) in (let TMP_248 \def (THead k TMP_243 
328 TMP_247) in (subst1 i TMP_240 TMP_248 t1))))))))))) in (let TMP_250 \def 
329 (TLRef h) in (let TMP_251 \def (S h) in (let TMP_252 \def (S i) in (let 
330 TMP_253 \def (lift TMP_251 TMP_252 t) in (let TMP_254 \def (S h) in (let 
331 TMP_255 \def (lift TMP_254 i t) in (let TMP_256 \def (H i h H1) in (let 
332 TMP_257 \def (S h) in (let TMP_258 \def (S i) in (let TMP_259 \def (s k 
333 TMP_258) in (let TMP_260 \def (lift TMP_257 TMP_259 t0) in (let TMP_261 \def 
334 (S h) in (let TMP_262 \def (s k i) in (let TMP_263 \def (lift TMP_261 TMP_262 
335 t0) in (let TMP_264 \def (s k i) in (let TMP_265 \def (S TMP_264) in (let 
336 TMP_273 \def (\lambda (n: nat).(let TMP_266 \def (s k i) in (let TMP_267 \def 
337 (TLRef h) in (let TMP_268 \def (S h) in (let TMP_269 \def (lift TMP_268 n t0) 
338 in (let TMP_270 \def (S h) in (let TMP_271 \def (s k i) in (let TMP_272 \def 
339 (lift TMP_270 TMP_271 t0) in (subst1 TMP_266 TMP_267 TMP_269 TMP_272))))))))) 
340 in (let TMP_274 \def (s k i) in (let TMP_275 \def (s k i) in (let TMP_276 
341 \def (s_inc k i) in (let TMP_277 \def (le_trans h i TMP_275 H1 TMP_276) in 
342 (let TMP_278 \def (H0 TMP_274 h TMP_277) in (let TMP_279 \def (S i) in (let 
343 TMP_280 \def (s k TMP_279) in (let TMP_281 \def (s_S k i) in (let TMP_282 
344 \def (eq_ind_r nat TMP_265 TMP_273 TMP_278 TMP_280 TMP_281) in (let TMP_283 
345 \def (subst1_head TMP_250 TMP_253 TMP_255 i TMP_256 k TMP_260 TMP_263 
346 TMP_282) in (let TMP_284 \def (S h) in (let TMP_285 \def (THead k t t0) in 
347 (let TMP_286 \def (lift TMP_284 i TMP_285) in (let TMP_287 \def (S h) in (let 
348 TMP_288 \def (lift_head k t t0 TMP_287 i) in (let TMP_289 \def (eq_ind_r T 
349 TMP_239 TMP_249 TMP_283 TMP_286 TMP_288) in (let TMP_290 \def (S h) in (let 
350 TMP_291 \def (S i) in (let TMP_292 \def (THead k t t0) in (let TMP_293 \def 
351 (lift TMP_290 TMP_291 TMP_292) in (let TMP_294 \def (S h) in (let TMP_295 
352 \def (S i) in (let TMP_296 \def (lift_head k t t0 TMP_294 TMP_295) in 
353 (eq_ind_r T TMP_228 TMP_233 TMP_289 TMP_293 
354 TMP_296))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) in 
355 (T_ind TMP_7 TMP_34 TMP_220 TMP_297 u))))).
356