]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_1/pc3/fsubst0.ma
components: pc1, pc3, ty3, csubt, ex1
[helm.git] / matita / matita / contribs / lambdadelta / basic_1 / pc3 / fsubst0.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/pc3/left.ma".
18
19 include "basic_1/fsubst0/fwd.ma".
20
21 include "basic_1/csubst0/getl.ma".
22
23 theorem pc3_pr2_fsubst0:
24  \forall (c1: C).(\forall (t1: T).(\forall (t: T).((pr2 c1 t1 t) \to (\forall 
25 (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t2: T).((fsubst0 i u c1 
26 t1 c2 t2) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 
27 c2 t2 t)))))))))))
28 \def
29  \lambda (c1: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: (pr2 c1 t1 
30 t)).(let TMP_1 \def (\lambda (c: C).(\lambda (t0: T).(\lambda (t2: 
31 T).(\forall (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: 
32 T).((fsubst0 i u c t0 c2 t3) \to (\forall (e: C).((getl i c (CHead e (Bind 
33 Abbr) u)) \to (pc3 c2 t3 t2))))))))))) in (let TMP_47 \def (\lambda (c: 
34 C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: (pr0 t2 t3)).(\lambda (i: 
35 nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t0: T).(\lambda (H1: (fsubst0 
36 i u c t2 c2 t0)).(let TMP_2 \def (\lambda (c0: C).(\lambda (t4: T).(\forall 
37 (e: C).((getl i c (CHead e (Bind Abbr) u)) \to (pc3 c0 t4 t3))))) in (let 
38 TMP_21 \def (\lambda (t4: T).(\lambda (H2: (subst0 i u t2 t4)).(\lambda (e: 
39 C).(\lambda (H3: (getl i c (CHead e (Bind Abbr) u))).(let TMP_3 \def (pr0 t4 
40 t3) in (let TMP_4 \def (\lambda (w2: T).(pr0 t4 w2)) in (let TMP_5 \def 
41 (\lambda (w2: T).(subst0 i u t3 w2)) in (let TMP_6 \def (ex2 T TMP_4 TMP_5) 
42 in (let TMP_7 \def (pc3 c t4 t3) in (let TMP_9 \def (\lambda (H4: (pr0 t4 
43 t3)).(let TMP_8 \def (pr2_free c t4 t3 H4) in (pc3_pr2_r c t4 t3 TMP_8))) in 
44 (let TMP_18 \def (\lambda (H4: (ex2 T (\lambda (w2: T).(pr0 t4 w2)) (\lambda 
45 (w2: T).(subst0 i u t3 w2)))).(let TMP_10 \def (\lambda (w2: T).(pr0 t4 w2)) 
46 in (let TMP_11 \def (\lambda (w2: T).(subst0 i u t3 w2)) in (let TMP_12 \def 
47 (pc3 c t4 t3) in (let TMP_17 \def (\lambda (x: T).(\lambda (H5: (pr0 t4 
48 x)).(\lambda (H6: (subst0 i u t3 x)).(let TMP_13 \def (pr2_free c t4 x H5) in 
49 (let TMP_14 \def (pr0_refl t3) in (let TMP_15 \def (pr2_delta c e u i H3 t3 
50 t3 TMP_14 x H6) in (let TMP_16 \def (pc3_pr2_x c x t3 TMP_15) in (pc3_pr2_u c 
51 x t4 TMP_13 t3 TMP_16)))))))) in (ex2_ind T TMP_10 TMP_11 TMP_12 TMP_17 
52 H4)))))) in (let TMP_19 \def (pr0_refl u) in (let TMP_20 \def (pr0_subst0 t2 
53 t3 H0 u t4 i H2 u TMP_19) in (or_ind TMP_3 TMP_6 TMP_7 TMP_9 TMP_18 
54 TMP_20)))))))))))))) in (let TMP_23 \def (\lambda (c0: C).(\lambda (_: 
55 (csubst0 i u c c0)).(\lambda (e: C).(\lambda (_: (getl i c (CHead e (Bind 
56 Abbr) u))).(let TMP_22 \def (pr2_free c0 t2 t3 H0) in (pc3_pr2_r c0 t2 t3 
57 TMP_22)))))) in (let TMP_46 \def (\lambda (t4: T).(\lambda (H2: (subst0 i u 
58 t2 t4)).(\lambda (c0: C).(\lambda (H3: (csubst0 i u c c0)).(\lambda (e: 
59 C).(\lambda (H4: (getl i c (CHead e (Bind Abbr) u))).(let TMP_24 \def (pr0 t4 
60 t3) in (let TMP_25 \def (\lambda (w2: T).(pr0 t4 w2)) in (let TMP_26 \def 
61 (\lambda (w2: T).(subst0 i u t3 w2)) in (let TMP_27 \def (ex2 T TMP_25 
62 TMP_26) in (let TMP_28 \def (pc3 c0 t4 t3) in (let TMP_30 \def (\lambda (H5: 
63 (pr0 t4 t3)).(let TMP_29 \def (pr2_free c0 t4 t3 H5) in (pc3_pr2_r c0 t4 t3 
64 TMP_29))) in (let TMP_43 \def (\lambda (H5: (ex2 T (\lambda (w2: T).(pr0 t4 
65 w2)) (\lambda (w2: T).(subst0 i u t3 w2)))).(let TMP_31 \def (\lambda (w2: 
66 T).(pr0 t4 w2)) in (let TMP_32 \def (\lambda (w2: T).(subst0 i u t3 w2)) in 
67 (let TMP_33 \def (pc3 c0 t4 t3) in (let TMP_42 \def (\lambda (x: T).(\lambda 
68 (H6: (pr0 t4 x)).(\lambda (H7: (subst0 i u t3 x)).(let TMP_34 \def (pr2_free 
69 c0 t4 x H6) in (let TMP_35 \def (le_n i) in (let TMP_36 \def (Bind Abbr) in 
70 (let TMP_37 \def (CHead e TMP_36 u) in (let TMP_38 \def (csubst0_getl_ge i i 
71 TMP_35 c c0 u H3 TMP_37 H4) in (let TMP_39 \def (pr0_refl t3) in (let TMP_40 
72 \def (pr2_delta c0 e u i TMP_38 t3 t3 TMP_39 x H7) in (let TMP_41 \def 
73 (pc3_pr2_x c0 x t3 TMP_40) in (pc3_pr2_u c0 x t4 TMP_34 t3 TMP_41)))))))))))) 
74 in (ex2_ind T TMP_31 TMP_32 TMP_33 TMP_42 H5)))))) in (let TMP_44 \def 
75 (pr0_refl u) in (let TMP_45 \def (pr0_subst0 t2 t3 H0 u t4 i H2 u TMP_44) in 
76 (or_ind TMP_24 TMP_27 TMP_28 TMP_30 TMP_43 TMP_45)))))))))))))))) in 
77 (fsubst0_ind i u c t2 TMP_2 TMP_21 TMP_23 TMP_46 c2 t0 H1)))))))))))))) in 
78 (let TMP_549 \def (\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda 
79 (i: nat).(\lambda (H0: (getl i c (CHead d (Bind Abbr) u))).(\lambda (t2: 
80 T).(\lambda (t3: T).(\lambda (H1: (pr0 t2 t3)).(\lambda (t0: T).(\lambda (H2: 
81 (subst0 i u t3 t0)).(\lambda (i0: nat).(\lambda (u0: T).(\lambda (c2: 
82 C).(\lambda (t4: T).(\lambda (H3: (fsubst0 i0 u0 c t2 c2 t4)).(let TMP_48 
83 \def (\lambda (c0: C).(\lambda (t5: T).(\forall (e: C).((getl i0 c (CHead e 
84 (Bind Abbr) u0)) \to (pc3 c0 t5 t0))))) in (let TMP_55 \def (\lambda (t5: 
85 T).(\lambda (H4: (subst0 i0 u0 t2 t5)).(\lambda (e: C).(\lambda (H5: (getl i0 
86 c (CHead e (Bind Abbr) u0))).(let TMP_49 \def (pr0_refl t2) in (let TMP_50 
87 \def (pr2_delta c e u0 i0 H5 t2 t2 TMP_49 t5 H4) in (let TMP_51 \def 
88 (pc3_pr2_r c t2 t5 TMP_50) in (let TMP_52 \def (pc3_s c t5 t2 TMP_51) in (let 
89 TMP_53 \def (pr2_delta c d u i H0 t2 t3 H1 t0 H2) in (let TMP_54 \def 
90 (pc3_pr2_r c t2 t0 TMP_53) in (pc3_t t2 c t5 TMP_52 t0 TMP_54))))))))))) in 
91 (let TMP_284 \def (\lambda (c0: C).(\lambda (H4: (csubst0 i0 u0 c 
92 c0)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) u0))).(let 
93 TMP_56 \def (pc3 c0 t2 t0) in (let TMP_278 \def (\lambda (H6: (lt i i0)).(let 
94 TMP_57 \def (Bind Abbr) in (let TMP_58 \def (CHead d TMP_57 u) in (let H7 
95 \def (csubst0_getl_lt i0 i H6 c c0 u0 H4 TMP_58 H0) in (let TMP_59 \def (Bind 
96 Abbr) in (let TMP_60 \def (CHead d TMP_59 u) in (let TMP_61 \def (getl i c0 
97 TMP_60) in (let TMP_66 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: 
98 T).(\lambda (_: T).(let TMP_62 \def (Bind Abbr) in (let TMP_63 \def (CHead d 
99 TMP_62 u) in (let TMP_64 \def (Bind b) in (let TMP_65 \def (CHead e0 TMP_64 
100 u1) in (eq C TMP_63 TMP_65))))))))) in (let TMP_69 \def (\lambda (b: 
101 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(let TMP_67 \def (Bind b) 
102 in (let TMP_68 \def (CHead e0 TMP_67 w) in (getl i c0 TMP_68))))))) in (let 
103 TMP_72 \def (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: 
104 T).(let TMP_70 \def (S i) in (let TMP_71 \def (minus i0 TMP_70) in (subst0 
105 TMP_71 u0 u1 w))))))) in (let TMP_73 \def (ex3_4 B C T T TMP_66 TMP_69 
106 TMP_72) in (let TMP_78 \def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
107 C).(\lambda (u1: T).(let TMP_74 \def (Bind Abbr) in (let TMP_75 \def (CHead d 
108 TMP_74 u) in (let TMP_76 \def (Bind b) in (let TMP_77 \def (CHead e1 TMP_76 
109 u1) in (eq C TMP_75 TMP_77))))))))) in (let TMP_81 \def (\lambda (b: 
110 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_79 \def (Bind 
111 b) in (let TMP_80 \def (CHead e2 TMP_79 u1) in (getl i c0 TMP_80))))))) in 
112 (let TMP_84 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
113 (_: T).(let TMP_82 \def (S i) in (let TMP_83 \def (minus i0 TMP_82) in 
114 (csubst0 TMP_83 u0 e1 e2))))))) in (let TMP_85 \def (ex3_4 B C C T TMP_78 
115 TMP_81 TMP_84) in (let TMP_90 \def (\lambda (b: B).(\lambda (e1: C).(\lambda 
116 (_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_86 \def (Bind Abbr) in (let 
117 TMP_87 \def (CHead d TMP_86 u) in (let TMP_88 \def (Bind b) in (let TMP_89 
118 \def (CHead e1 TMP_88 u1) in (eq C TMP_87 TMP_89)))))))))) in (let TMP_93 
119 \def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
120 T).(\lambda (w: T).(let TMP_91 \def (Bind b) in (let TMP_92 \def (CHead e2 
121 TMP_91 w) in (getl i c0 TMP_92)))))))) in (let TMP_96 \def (\lambda (_: 
122 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(let 
123 TMP_94 \def (S i) in (let TMP_95 \def (minus i0 TMP_94) in (subst0 TMP_95 u0 
124 u1 w)))))))) in (let TMP_99 \def (\lambda (_: B).(\lambda (e1: C).(\lambda 
125 (e2: C).(\lambda (_: T).(\lambda (_: T).(let TMP_97 \def (S i) in (let TMP_98 
126 \def (minus i0 TMP_97) in (csubst0 TMP_98 u0 e1 e2)))))))) in (let TMP_100 
127 \def (ex4_5 B C C T T TMP_90 TMP_93 TMP_96 TMP_99) in (let TMP_101 \def (pc3 
128 c0 t2 t0) in (let TMP_103 \def (\lambda (H8: (getl i c0 (CHead d (Bind Abbr) 
129 u))).(let TMP_102 \def (pr2_delta c0 d u i H8 t2 t3 H1 t0 H2) in (pc3_pr2_r 
130 c0 t2 t0 TMP_102))) in (let TMP_168 \def (\lambda (H8: (ex3_4 B C T T 
131 (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C 
132 (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda 
133 (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) 
134 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 
135 (minus i0 (S i)) u0 u1 w))))))).(let TMP_108 \def (\lambda (b: B).(\lambda 
136 (e0: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_104 \def (Bind Abbr) in 
137 (let TMP_105 \def (CHead d TMP_104 u) in (let TMP_106 \def (Bind b) in (let 
138 TMP_107 \def (CHead e0 TMP_106 u1) in (eq C TMP_105 TMP_107))))))))) in (let 
139 TMP_111 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
140 T).(let TMP_109 \def (Bind b) in (let TMP_110 \def (CHead e0 TMP_109 w) in 
141 (getl i c0 TMP_110))))))) in (let TMP_114 \def (\lambda (_: B).(\lambda (_: 
142 C).(\lambda (u1: T).(\lambda (w: T).(let TMP_112 \def (S i) in (let TMP_113 
143 \def (minus i0 TMP_112) in (subst0 TMP_113 u0 u1 w))))))) in (let TMP_115 
144 \def (pc3 c0 t2 t0) in (let TMP_167 \def (\lambda (x0: B).(\lambda (x1: 
145 C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) 
146 u) (CHead x1 (Bind x0) x2))).(\lambda (H10: (getl i c0 (CHead x1 (Bind x0) 
147 x3))).(\lambda (H11: (subst0 (minus i0 (S i)) u0 x2 x3)).(let TMP_116 \def 
148 (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ _) 
149 \Rightarrow c3])) in (let TMP_117 \def (Bind Abbr) in (let TMP_118 \def 
150 (CHead d TMP_117 u) in (let TMP_119 \def (Bind x0) in (let TMP_120 \def 
151 (CHead x1 TMP_119 x2) in (let H12 \def (f_equal C C TMP_116 TMP_118 TMP_120 
152 H9) in (let TMP_121 \def (\lambda (e0: C).(match e0 with [(CSort _) 
153 \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k with [(Bind b) 
154 \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in (let TMP_122 \def (Bind 
155 Abbr) in (let TMP_123 \def (CHead d TMP_122 u) in (let TMP_124 \def (Bind x0) 
156 in (let TMP_125 \def (CHead x1 TMP_124 x2) in (let H13 \def (f_equal C B 
157 TMP_121 TMP_123 TMP_125 H9) in (let TMP_126 \def (\lambda (e0: C).(match e0 
158 with [(CSort _) \Rightarrow u | (CHead _ _ t5) \Rightarrow t5])) in (let 
159 TMP_127 \def (Bind Abbr) in (let TMP_128 \def (CHead d TMP_127 u) in (let 
160 TMP_129 \def (Bind x0) in (let TMP_130 \def (CHead x1 TMP_129 x2) in (let H14 
161 \def (f_equal C T TMP_126 TMP_128 TMP_130 H9) in (let TMP_165 \def (\lambda 
162 (H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let TMP_133 \def (\lambda 
163 (t5: T).(let TMP_131 \def (S i) in (let TMP_132 \def (minus i0 TMP_131) in 
164 (subst0 TMP_132 u0 t5 x3)))) in (let H17 \def (eq_ind_r T x2 TMP_133 H11 u 
165 H14) in (let TMP_136 \def (\lambda (c3: C).(let TMP_134 \def (Bind x0) in 
166 (let TMP_135 \def (CHead c3 TMP_134 x3) in (getl i c0 TMP_135)))) in (let H18 
167 \def (eq_ind_r C x1 TMP_136 H10 d H16) in (let TMP_139 \def (\lambda (b: 
168 B).(let TMP_137 \def (Bind b) in (let TMP_138 \def (CHead d TMP_137 x3) in 
169 (getl i c0 TMP_138)))) in (let H19 \def (eq_ind_r B x0 TMP_139 H18 Abbr H15) 
170 in (let TMP_140 \def (\lambda (t5: T).(subst0 i x3 t3 t5)) in (let TMP_145 
171 \def (\lambda (t5: T).(let TMP_141 \def (S i) in (let TMP_142 \def (minus i0 
172 TMP_141) in (let TMP_143 \def (plus TMP_142 i) in (let TMP_144 \def (S 
173 TMP_143) in (subst0 TMP_144 u0 t0 t5)))))) in (let TMP_146 \def (pc3 c0 t2 
174 t0) in (let TMP_161 \def (\lambda (x: T).(\lambda (H20: (subst0 i x3 t3 
175 x)).(\lambda (H21: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let 
176 TMP_147 \def (S i) in (let TMP_148 \def (minus i0 TMP_147) in (let TMP_149 
177 \def (plus TMP_148 i) in (let TMP_150 \def (S TMP_149) in (let TMP_151 \def 
178 (\lambda (n: nat).(subst0 n u0 t0 x)) in (let TMP_152 \def (lt_plus_minus_r i 
179 i0 H6) in (let H22 \def (eq_ind_r nat TMP_150 TMP_151 H21 i0 TMP_152) in (let 
180 TMP_153 \def (pr2_delta c0 d x3 i H19 t2 t3 H1 x H20) in (let TMP_154 \def 
181 (le_n i0) in (let TMP_155 \def (Bind Abbr) in (let TMP_156 \def (CHead e 
182 TMP_155 u0) in (let TMP_157 \def (csubst0_getl_ge i0 i0 TMP_154 c c0 u0 H4 
183 TMP_156 H5) in (let TMP_158 \def (pr0_refl t0) in (let TMP_159 \def 
184 (pr2_delta c0 e u0 i0 TMP_157 t0 t0 TMP_158 x H22) in (let TMP_160 \def 
185 (pc3_pr2_x c0 x t0 TMP_159) in (pc3_pr2_u c0 x t2 TMP_153 t0 
186 TMP_160))))))))))))))))))) in (let TMP_162 \def (S i) in (let TMP_163 \def 
187 (minus i0 TMP_162) in (let TMP_164 \def (subst0_subst0_back t3 t0 u i H2 x3 
188 u0 TMP_163 H17) in (ex2_ind T TMP_140 TMP_145 TMP_146 TMP_161 
189 TMP_164)))))))))))))))) in (let TMP_166 \def (TMP_165 H13) in (TMP_166 
190 H12)))))))))))))))))))))))))))) in (ex3_4_ind B C T T TMP_108 TMP_111 TMP_114 
191 TMP_115 TMP_167 H8))))))) in (let TMP_209 \def (\lambda (H8: (ex3_4 B C C T 
192 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C 
193 (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda 
194 (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) 
195 u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
196 T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(let TMP_173 \def (\lambda (b: 
197 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(let TMP_169 \def (Bind 
198 Abbr) in (let TMP_170 \def (CHead d TMP_169 u) in (let TMP_171 \def (Bind b) 
199 in (let TMP_172 \def (CHead e1 TMP_171 u1) in (eq C TMP_170 TMP_172))))))))) 
200 in (let TMP_176 \def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
201 C).(\lambda (u1: T).(let TMP_174 \def (Bind b) in (let TMP_175 \def (CHead e2 
202 TMP_174 u1) in (getl i c0 TMP_175))))))) in (let TMP_179 \def (\lambda (_: 
203 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(let TMP_177 \def (S i) 
204 in (let TMP_178 \def (minus i0 TMP_177) in (csubst0 TMP_178 u0 e1 e2))))))) 
205 in (let TMP_180 \def (pc3 c0 t2 t0) in (let TMP_208 \def (\lambda (x0: 
206 B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H9: (eq C 
207 (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3))).(\lambda (H10: (getl i c0 
208 (CHead x2 (Bind x0) x3))).(\lambda (H11: (csubst0 (minus i0 (S i)) u0 x1 
209 x2)).(let TMP_181 \def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow 
210 d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_182 \def (Bind Abbr) in (let 
211 TMP_183 \def (CHead d TMP_182 u) in (let TMP_184 \def (Bind x0) in (let 
212 TMP_185 \def (CHead x1 TMP_184 x3) in (let H12 \def (f_equal C C TMP_181 
213 TMP_183 TMP_185 H9) in (let TMP_186 \def (\lambda (e0: C).(match e0 with 
214 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k with [(Bind 
215 b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in (let TMP_187 \def (Bind 
216 Abbr) in (let TMP_188 \def (CHead d TMP_187 u) in (let TMP_189 \def (Bind x0) 
217 in (let TMP_190 \def (CHead x1 TMP_189 x3) in (let H13 \def (f_equal C B 
218 TMP_186 TMP_188 TMP_190 H9) in (let TMP_191 \def (\lambda (e0: C).(match e0 
219 with [(CSort _) \Rightarrow u | (CHead _ _ t5) \Rightarrow t5])) in (let 
220 TMP_192 \def (Bind Abbr) in (let TMP_193 \def (CHead d TMP_192 u) in (let 
221 TMP_194 \def (Bind x0) in (let TMP_195 \def (CHead x1 TMP_194 x3) in (let H14 
222 \def (f_equal C T TMP_191 TMP_193 TMP_195 H9) in (let TMP_206 \def (\lambda 
223 (H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let TMP_198 \def (\lambda 
224 (t5: T).(let TMP_196 \def (Bind x0) in (let TMP_197 \def (CHead x2 TMP_196 
225 t5) in (getl i c0 TMP_197)))) in (let H17 \def (eq_ind_r T x3 TMP_198 H10 u 
226 H14) in (let TMP_201 \def (\lambda (c3: C).(let TMP_199 \def (S i) in (let 
227 TMP_200 \def (minus i0 TMP_199) in (csubst0 TMP_200 u0 c3 x2)))) in (let H18 
228 \def (eq_ind_r C x1 TMP_201 H11 d H16) in (let TMP_204 \def (\lambda (b: 
229 B).(let TMP_202 \def (Bind b) in (let TMP_203 \def (CHead x2 TMP_202 u) in 
230 (getl i c0 TMP_203)))) in (let H19 \def (eq_ind_r B x0 TMP_204 H17 Abbr H15) 
231 in (let TMP_205 \def (pr2_delta c0 x2 u i H19 t2 t3 H1 t0 H2) in (pc3_pr2_r 
232 c0 t2 t0 TMP_205)))))))))) in (let TMP_207 \def (TMP_206 H13) in (TMP_207 
233 H12)))))))))))))))))))))))))))) in (ex3_4_ind B C C T TMP_173 TMP_176 TMP_179 
234 TMP_180 TMP_208 H8))))))) in (let TMP_277 \def (\lambda (H8: (ex4_5 B C C T T 
235 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
236 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda 
237 (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl 
238 i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
239 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) 
240 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
241 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))))).(let TMP_214 \def (\lambda 
242 (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let 
243 TMP_210 \def (Bind Abbr) in (let TMP_211 \def (CHead d TMP_210 u) in (let 
244 TMP_212 \def (Bind b) in (let TMP_213 \def (CHead e1 TMP_212 u1) in (eq C 
245 TMP_211 TMP_213)))))))))) in (let TMP_217 \def (\lambda (b: B).(\lambda (_: 
246 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(let TMP_215 \def (Bind 
247 b) in (let TMP_216 \def (CHead e2 TMP_215 w) in (getl i c0 TMP_216)))))))) in 
248 (let TMP_220 \def (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
249 (u1: T).(\lambda (w: T).(let TMP_218 \def (S i) in (let TMP_219 \def (minus 
250 i0 TMP_218) in (subst0 TMP_219 u0 u1 w)))))))) in (let TMP_223 \def (\lambda 
251 (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let 
252 TMP_221 \def (S i) in (let TMP_222 \def (minus i0 TMP_221) in (csubst0 
253 TMP_222 u0 e1 e2)))))))) in (let TMP_224 \def (pc3 c0 t2 t0) in (let TMP_276 
254 \def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: 
255 T).(\lambda (x4: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 
256 (Bind x0) x3))).(\lambda (H10: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda 
257 (H11: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H12: (csubst0 (minus i0 
258 (S i)) u0 x1 x2)).(let TMP_225 \def (\lambda (e0: C).(match e0 with [(CSort 
259 _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_226 \def 
260 (Bind Abbr) in (let TMP_227 \def (CHead d TMP_226 u) in (let TMP_228 \def 
261 (Bind x0) in (let TMP_229 \def (CHead x1 TMP_228 x3) in (let H13 \def 
262 (f_equal C C TMP_225 TMP_227 TMP_229 H9) in (let TMP_230 \def (\lambda (e0: 
263 C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow 
264 (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in 
265 (let TMP_231 \def (Bind Abbr) in (let TMP_232 \def (CHead d TMP_231 u) in 
266 (let TMP_233 \def (Bind x0) in (let TMP_234 \def (CHead x1 TMP_233 x3) in 
267 (let H14 \def (f_equal C B TMP_230 TMP_232 TMP_234 H9) in (let TMP_235 \def 
268 (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t5) 
269 \Rightarrow t5])) in (let TMP_236 \def (Bind Abbr) in (let TMP_237 \def 
270 (CHead d TMP_236 u) in (let TMP_238 \def (Bind x0) in (let TMP_239 \def 
271 (CHead x1 TMP_238 x3) in (let H15 \def (f_equal C T TMP_235 TMP_237 TMP_239 
272 H9) in (let TMP_274 \def (\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C 
273 d x1)).(let TMP_242 \def (\lambda (t5: T).(let TMP_240 \def (S i) in (let 
274 TMP_241 \def (minus i0 TMP_240) in (subst0 TMP_241 u0 t5 x4)))) in (let H18 
275 \def (eq_ind_r T x3 TMP_242 H11 u H15) in (let TMP_245 \def (\lambda (c3: 
276 C).(let TMP_243 \def (S i) in (let TMP_244 \def (minus i0 TMP_243) in 
277 (csubst0 TMP_244 u0 c3 x2)))) in (let H19 \def (eq_ind_r C x1 TMP_245 H12 d 
278 H17) in (let TMP_248 \def (\lambda (b: B).(let TMP_246 \def (Bind b) in (let 
279 TMP_247 \def (CHead x2 TMP_246 x4) in (getl i c0 TMP_247)))) in (let H20 \def 
280 (eq_ind_r B x0 TMP_248 H10 Abbr H16) in (let TMP_249 \def (\lambda (t5: 
281 T).(subst0 i x4 t3 t5)) in (let TMP_254 \def (\lambda (t5: T).(let TMP_250 
282 \def (S i) in (let TMP_251 \def (minus i0 TMP_250) in (let TMP_252 \def (plus 
283 TMP_251 i) in (let TMP_253 \def (S TMP_252) in (subst0 TMP_253 u0 t0 t5)))))) 
284 in (let TMP_255 \def (pc3 c0 t2 t0) in (let TMP_270 \def (\lambda (x: 
285 T).(\lambda (H21: (subst0 i x4 t3 x)).(\lambda (H22: (subst0 (S (plus (minus 
286 i0 (S i)) i)) u0 t0 x)).(let TMP_256 \def (S i) in (let TMP_257 \def (minus 
287 i0 TMP_256) in (let TMP_258 \def (plus TMP_257 i) in (let TMP_259 \def (S 
288 TMP_258) in (let TMP_260 \def (\lambda (n: nat).(subst0 n u0 t0 x)) in (let 
289 TMP_261 \def (lt_plus_minus_r i i0 H6) in (let H23 \def (eq_ind_r nat TMP_259 
290 TMP_260 H22 i0 TMP_261) in (let TMP_262 \def (pr2_delta c0 x2 x4 i H20 t2 t3 
291 H1 x H21) in (let TMP_263 \def (le_n i0) in (let TMP_264 \def (Bind Abbr) in 
292 (let TMP_265 \def (CHead e TMP_264 u0) in (let TMP_266 \def (csubst0_getl_ge 
293 i0 i0 TMP_263 c c0 u0 H4 TMP_265 H5) in (let TMP_267 \def (pr0_refl t0) in 
294 (let TMP_268 \def (pr2_delta c0 e u0 i0 TMP_266 t0 t0 TMP_267 x H23) in (let 
295 TMP_269 \def (pc3_pr2_x c0 x t0 TMP_268) in (pc3_pr2_u c0 x t2 TMP_262 t0 
296 TMP_269))))))))))))))))))) in (let TMP_271 \def (S i) in (let TMP_272 \def 
297 (minus i0 TMP_271) in (let TMP_273 \def (subst0_subst0_back t3 t0 u i H2 x4 
298 u0 TMP_272 H18) in (ex2_ind T TMP_249 TMP_254 TMP_255 TMP_270 
299 TMP_273)))))))))))))))) in (let TMP_275 \def (TMP_274 H14) in (TMP_275 
300 H13)))))))))))))))))))))))))))))) in (ex4_5_ind B C C T T TMP_214 TMP_217 
301 TMP_220 TMP_223 TMP_224 TMP_276 H8)))))))) in (or4_ind TMP_61 TMP_73 TMP_85 
302 TMP_100 TMP_101 TMP_103 TMP_168 TMP_209 TMP_277 H7)))))))))))))))))))))))))) 
303 in (let TMP_283 \def (\lambda (H6: (le i0 i)).(let TMP_279 \def (Bind Abbr) 
304 in (let TMP_280 \def (CHead d TMP_279 u) in (let TMP_281 \def 
305 (csubst0_getl_ge i0 i H6 c c0 u0 H4 TMP_280 H0) in (let TMP_282 \def 
306 (pr2_delta c0 d u i TMP_281 t2 t3 H1 t0 H2) in (pc3_pr2_r c0 t2 t0 
307 TMP_282)))))) in (lt_le_e i i0 TMP_56 TMP_278 TMP_283)))))))) in (let TMP_548 
308 \def (\lambda (t5: T).(\lambda (H4: (subst0 i0 u0 t2 t5)).(\lambda (c0: 
309 C).(\lambda (H5: (csubst0 i0 u0 c c0)).(\lambda (e: C).(\lambda (H6: (getl i0 
310 c (CHead e (Bind Abbr) u0))).(let TMP_285 \def (pc3 c0 t5 t0) in (let TMP_535 
311 \def (\lambda (H7: (lt i i0)).(let TMP_286 \def (Bind Abbr) in (let TMP_287 
312 \def (CHead d TMP_286 u) in (let H8 \def (csubst0_getl_lt i0 i H7 c c0 u0 H5 
313 TMP_287 H0) in (let TMP_288 \def (Bind Abbr) in (let TMP_289 \def (CHead d 
314 TMP_288 u) in (let TMP_290 \def (getl i c0 TMP_289) in (let TMP_295 \def 
315 (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(let 
316 TMP_291 \def (Bind Abbr) in (let TMP_292 \def (CHead d TMP_291 u) in (let 
317 TMP_293 \def (Bind b) in (let TMP_294 \def (CHead e0 TMP_293 u1) in (eq C 
318 TMP_292 TMP_294))))))))) in (let TMP_298 \def (\lambda (b: B).(\lambda (e0: 
319 C).(\lambda (_: T).(\lambda (w: T).(let TMP_296 \def (Bind b) in (let TMP_297 
320 \def (CHead e0 TMP_296 w) in (getl i c0 TMP_297))))))) in (let TMP_301 \def 
321 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(let TMP_299 
322 \def (S i) in (let TMP_300 \def (minus i0 TMP_299) in (subst0 TMP_300 u0 u1 
323 w))))))) in (let TMP_302 \def (ex3_4 B C T T TMP_295 TMP_298 TMP_301) in (let 
324 TMP_307 \def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
325 T).(let TMP_303 \def (Bind Abbr) in (let TMP_304 \def (CHead d TMP_303 u) in 
326 (let TMP_305 \def (Bind b) in (let TMP_306 \def (CHead e1 TMP_305 u1) in (eq 
327 C TMP_304 TMP_306))))))))) in (let TMP_310 \def (\lambda (b: B).(\lambda (_: 
328 C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_308 \def (Bind b) in (let 
329 TMP_309 \def (CHead e2 TMP_308 u1) in (getl i c0 TMP_309))))))) in (let 
330 TMP_313 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
331 T).(let TMP_311 \def (S i) in (let TMP_312 \def (minus i0 TMP_311) in 
332 (csubst0 TMP_312 u0 e1 e2))))))) in (let TMP_314 \def (ex3_4 B C C T TMP_307 
333 TMP_310 TMP_313) in (let TMP_319 \def (\lambda (b: B).(\lambda (e1: 
334 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_315 \def (Bind 
335 Abbr) in (let TMP_316 \def (CHead d TMP_315 u) in (let TMP_317 \def (Bind b) 
336 in (let TMP_318 \def (CHead e1 TMP_317 u1) in (eq C TMP_316 TMP_318)))))))))) 
337 in (let TMP_322 \def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
338 C).(\lambda (_: T).(\lambda (w: T).(let TMP_320 \def (Bind b) in (let TMP_321 
339 \def (CHead e2 TMP_320 w) in (getl i c0 TMP_321)))))))) in (let TMP_325 \def 
340 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: 
341 T).(let TMP_323 \def (S i) in (let TMP_324 \def (minus i0 TMP_323) in (subst0 
342 TMP_324 u0 u1 w)))))))) in (let TMP_328 \def (\lambda (_: B).(\lambda (e1: 
343 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let TMP_326 \def (S i) 
344 in (let TMP_327 \def (minus i0 TMP_326) in (csubst0 TMP_327 u0 e1 e2)))))))) 
345 in (let TMP_329 \def (ex4_5 B C C T T TMP_319 TMP_322 TMP_325 TMP_328) in 
346 (let TMP_330 \def (pc3 c0 t5 t0) in (let TMP_339 \def (\lambda (H9: (getl i 
347 c0 (CHead d (Bind Abbr) u))).(let TMP_331 \def (le_n i0) in (let TMP_332 \def 
348 (Bind Abbr) in (let TMP_333 \def (CHead e TMP_332 u0) in (let TMP_334 \def 
349 (csubst0_getl_ge i0 i0 TMP_331 c c0 u0 H5 TMP_333 H6) in (let TMP_335 \def 
350 (pr0_refl t2) in (let TMP_336 \def (pr2_delta c0 e u0 i0 TMP_334 t2 t2 
351 TMP_335 t5 H4) in (let TMP_337 \def (pr2_delta c0 d u i H9 t2 t3 H1 t0 H2) in 
352 (let TMP_338 \def (pc3_pr2_r c0 t2 t0 TMP_337) in (pc3_pr2_u2 c0 t2 t5 
353 TMP_336 t0 TMP_338)))))))))) in (let TMP_411 \def (\lambda (H9: (ex3_4 B C T 
354 T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C 
355 (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda 
356 (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) 
357 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 
358 (minus i0 (S i)) u0 u1 w))))))).(let TMP_344 \def (\lambda (b: B).(\lambda 
359 (e0: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_340 \def (Bind Abbr) in 
360 (let TMP_341 \def (CHead d TMP_340 u) in (let TMP_342 \def (Bind b) in (let 
361 TMP_343 \def (CHead e0 TMP_342 u1) in (eq C TMP_341 TMP_343))))))))) in (let 
362 TMP_347 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
363 T).(let TMP_345 \def (Bind b) in (let TMP_346 \def (CHead e0 TMP_345 w) in 
364 (getl i c0 TMP_346))))))) in (let TMP_350 \def (\lambda (_: B).(\lambda (_: 
365 C).(\lambda (u1: T).(\lambda (w: T).(let TMP_348 \def (S i) in (let TMP_349 
366 \def (minus i0 TMP_348) in (subst0 TMP_349 u0 u1 w))))))) in (let TMP_351 
367 \def (pc3 c0 t5 t0) in (let TMP_410 \def (\lambda (x0: B).(\lambda (x1: 
368 C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind 
369 Abbr) u) (CHead x1 (Bind x0) x2))).(\lambda (H11: (getl i c0 (CHead x1 (Bind 
370 x0) x3))).(\lambda (H12: (subst0 (minus i0 (S i)) u0 x2 x3)).(let TMP_352 
371 \def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ 
372 _) \Rightarrow c3])) in (let TMP_353 \def (Bind Abbr) in (let TMP_354 \def 
373 (CHead d TMP_353 u) in (let TMP_355 \def (Bind x0) in (let TMP_356 \def 
374 (CHead x1 TMP_355 x2) in (let H13 \def (f_equal C C TMP_352 TMP_354 TMP_356 
375 H10) in (let TMP_357 \def (\lambda (e0: C).(match e0 with [(CSort _) 
376 \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k with [(Bind b) 
377 \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in (let TMP_358 \def (Bind 
378 Abbr) in (let TMP_359 \def (CHead d TMP_358 u) in (let TMP_360 \def (Bind x0) 
379 in (let TMP_361 \def (CHead x1 TMP_360 x2) in (let H14 \def (f_equal C B 
380 TMP_357 TMP_359 TMP_361 H10) in (let TMP_362 \def (\lambda (e0: C).(match e0 
381 with [(CSort _) \Rightarrow u | (CHead _ _ t6) \Rightarrow t6])) in (let 
382 TMP_363 \def (Bind Abbr) in (let TMP_364 \def (CHead d TMP_363 u) in (let 
383 TMP_365 \def (Bind x0) in (let TMP_366 \def (CHead x1 TMP_365 x2) in (let H15 
384 \def (f_equal C T TMP_362 TMP_364 TMP_366 H10) in (let TMP_408 \def (\lambda 
385 (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let TMP_369 \def (\lambda 
386 (t6: T).(let TMP_367 \def (S i) in (let TMP_368 \def (minus i0 TMP_367) in 
387 (subst0 TMP_368 u0 t6 x3)))) in (let H18 \def (eq_ind_r T x2 TMP_369 H12 u 
388 H15) in (let TMP_372 \def (\lambda (c3: C).(let TMP_370 \def (Bind x0) in 
389 (let TMP_371 \def (CHead c3 TMP_370 x3) in (getl i c0 TMP_371)))) in (let H19 
390 \def (eq_ind_r C x1 TMP_372 H11 d H17) in (let TMP_375 \def (\lambda (b: 
391 B).(let TMP_373 \def (Bind b) in (let TMP_374 \def (CHead d TMP_373 x3) in 
392 (getl i c0 TMP_374)))) in (let H20 \def (eq_ind_r B x0 TMP_375 H19 Abbr H16) 
393 in (let TMP_376 \def (\lambda (t6: T).(subst0 i x3 t3 t6)) in (let TMP_381 
394 \def (\lambda (t6: T).(let TMP_377 \def (S i) in (let TMP_378 \def (minus i0 
395 TMP_377) in (let TMP_379 \def (plus TMP_378 i) in (let TMP_380 \def (S 
396 TMP_379) in (subst0 TMP_380 u0 t0 t6)))))) in (let TMP_382 \def (pc3 c0 t5 
397 t0) in (let TMP_404 \def (\lambda (x: T).(\lambda (H21: (subst0 i x3 t3 
398 x)).(\lambda (H22: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let 
399 TMP_383 \def (S i) in (let TMP_384 \def (minus i0 TMP_383) in (let TMP_385 
400 \def (plus TMP_384 i) in (let TMP_386 \def (S TMP_385) in (let TMP_387 \def 
401 (\lambda (n: nat).(subst0 n u0 t0 x)) in (let TMP_388 \def (lt_plus_minus_r i 
402 i0 H7) in (let H23 \def (eq_ind_r nat TMP_386 TMP_387 H22 i0 TMP_388) in (let 
403 TMP_389 \def (le_n i0) in (let TMP_390 \def (Bind Abbr) in (let TMP_391 \def 
404 (CHead e TMP_390 u0) in (let TMP_392 \def (csubst0_getl_ge i0 i0 TMP_389 c c0 
405 u0 H5 TMP_391 H6) in (let TMP_393 \def (pr0_refl t2) in (let TMP_394 \def 
406 (pr2_delta c0 e u0 i0 TMP_392 t2 t2 TMP_393 t5 H4) in (let TMP_395 \def 
407 (pr2_delta c0 d x3 i H20 t2 t3 H1 x H21) in (let TMP_396 \def (le_n i0) in 
408 (let TMP_397 \def (Bind Abbr) in (let TMP_398 \def (CHead e TMP_397 u0) in 
409 (let TMP_399 \def (csubst0_getl_ge i0 i0 TMP_396 c c0 u0 H5 TMP_398 H6) in 
410 (let TMP_400 \def (pr0_refl t0) in (let TMP_401 \def (pr2_delta c0 e u0 i0 
411 TMP_399 t0 t0 TMP_400 x H23) in (let TMP_402 \def (pc3_pr2_x c0 x t0 TMP_401) 
412 in (let TMP_403 \def (pc3_pr2_u c0 x t2 TMP_395 t0 TMP_402) in (pc3_pr2_u2 c0 
413 t2 t5 TMP_394 t0 TMP_403)))))))))))))))))))))))))) in (let TMP_405 \def (S i) 
414 in (let TMP_406 \def (minus i0 TMP_405) in (let TMP_407 \def 
415 (subst0_subst0_back t3 t0 u i H2 x3 u0 TMP_406 H18) in (ex2_ind T TMP_376 
416 TMP_381 TMP_382 TMP_404 TMP_407)))))))))))))))) in (let TMP_409 \def (TMP_408 
417 H14) in (TMP_409 H13)))))))))))))))))))))))))))) in (ex3_4_ind B C T T 
418 TMP_344 TMP_347 TMP_350 TMP_351 TMP_410 H9))))))) in (let TMP_459 \def 
419 (\lambda (H9: (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
420 C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) 
421 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 
422 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
423 C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(let TMP_416 
424 \def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(let 
425 TMP_412 \def (Bind Abbr) in (let TMP_413 \def (CHead d TMP_412 u) in (let 
426 TMP_414 \def (Bind b) in (let TMP_415 \def (CHead e1 TMP_414 u1) in (eq C 
427 TMP_413 TMP_415))))))))) in (let TMP_419 \def (\lambda (b: B).(\lambda (_: 
428 C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_417 \def (Bind b) in (let 
429 TMP_418 \def (CHead e2 TMP_417 u1) in (getl i c0 TMP_418))))))) in (let 
430 TMP_422 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
431 T).(let TMP_420 \def (S i) in (let TMP_421 \def (minus i0 TMP_420) in 
432 (csubst0 TMP_421 u0 e1 e2))))))) in (let TMP_423 \def (pc3 c0 t5 t0) in (let 
433 TMP_458 \def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: 
434 T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
435 x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) x3))).(\lambda (H12: 
436 (csubst0 (minus i0 (S i)) u0 x1 x2)).(let TMP_424 \def (\lambda (e0: 
437 C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) 
438 in (let TMP_425 \def (Bind Abbr) in (let TMP_426 \def (CHead d TMP_425 u) in 
439 (let TMP_427 \def (Bind x0) in (let TMP_428 \def (CHead x1 TMP_427 x3) in 
440 (let H13 \def (f_equal C C TMP_424 TMP_426 TMP_428 H10) in (let TMP_429 \def 
441 (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) 
442 \Rightarrow (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
443 Abbr])])) in (let TMP_430 \def (Bind Abbr) in (let TMP_431 \def (CHead d 
444 TMP_430 u) in (let TMP_432 \def (Bind x0) in (let TMP_433 \def (CHead x1 
445 TMP_432 x3) in (let H14 \def (f_equal C B TMP_429 TMP_431 TMP_433 H10) in 
446 (let TMP_434 \def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | 
447 (CHead _ _ t6) \Rightarrow t6])) in (let TMP_435 \def (Bind Abbr) in (let 
448 TMP_436 \def (CHead d TMP_435 u) in (let TMP_437 \def (Bind x0) in (let 
449 TMP_438 \def (CHead x1 TMP_437 x3) in (let H15 \def (f_equal C T TMP_434 
450 TMP_436 TMP_438 H10) in (let TMP_456 \def (\lambda (H16: (eq B Abbr 
451 x0)).(\lambda (H17: (eq C d x1)).(let TMP_441 \def (\lambda (t6: T).(let 
452 TMP_439 \def (Bind x0) in (let TMP_440 \def (CHead x2 TMP_439 t6) in (getl i 
453 c0 TMP_440)))) in (let H18 \def (eq_ind_r T x3 TMP_441 H11 u H15) in (let 
454 TMP_444 \def (\lambda (c3: C).(let TMP_442 \def (S i) in (let TMP_443 \def 
455 (minus i0 TMP_442) in (csubst0 TMP_443 u0 c3 x2)))) in (let H19 \def 
456 (eq_ind_r C x1 TMP_444 H12 d H17) in (let TMP_447 \def (\lambda (b: B).(let 
457 TMP_445 \def (Bind b) in (let TMP_446 \def (CHead x2 TMP_445 u) in (getl i c0 
458 TMP_446)))) in (let H20 \def (eq_ind_r B x0 TMP_447 H18 Abbr H16) in (let 
459 TMP_448 \def (le_n i0) in (let TMP_449 \def (Bind Abbr) in (let TMP_450 \def 
460 (CHead e TMP_449 u0) in (let TMP_451 \def (csubst0_getl_ge i0 i0 TMP_448 c c0 
461 u0 H5 TMP_450 H6) in (let TMP_452 \def (pr0_refl t2) in (let TMP_453 \def 
462 (pr2_delta c0 e u0 i0 TMP_451 t2 t2 TMP_452 t5 H4) in (let TMP_454 \def 
463 (pr2_delta c0 x2 u i H20 t2 t3 H1 t0 H2) in (let TMP_455 \def (pc3_pr2_r c0 
464 t2 t0 TMP_454) in (pc3_pr2_u2 c0 t2 t5 TMP_453 t0 TMP_455))))))))))))))))) in 
465 (let TMP_457 \def (TMP_456 H14) in (TMP_457 H13)))))))))))))))))))))))))))) 
466 in (ex3_4_ind B C C T TMP_416 TMP_419 TMP_422 TMP_423 TMP_458 H9))))))) in 
467 (let TMP_534 \def (\lambda (H9: (ex4_5 B C C T T (\lambda (b: B).(\lambda 
468 (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind 
469 Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: 
470 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e2 
471 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
472 (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) (\lambda (_: 
473 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
474 (minus i0 (S i)) u0 e1 e2)))))))).(let TMP_464 \def (\lambda (b: B).(\lambda 
475 (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_460 \def 
476 (Bind Abbr) in (let TMP_461 \def (CHead d TMP_460 u) in (let TMP_462 \def 
477 (Bind b) in (let TMP_463 \def (CHead e1 TMP_462 u1) in (eq C TMP_461 
478 TMP_463)))))))))) in (let TMP_467 \def (\lambda (b: B).(\lambda (_: 
479 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(let TMP_465 \def (Bind 
480 b) in (let TMP_466 \def (CHead e2 TMP_465 w) in (getl i c0 TMP_466)))))))) in 
481 (let TMP_470 \def (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
482 (u1: T).(\lambda (w: T).(let TMP_468 \def (S i) in (let TMP_469 \def (minus 
483 i0 TMP_468) in (subst0 TMP_469 u0 u1 w)))))))) in (let TMP_473 \def (\lambda 
484 (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let 
485 TMP_471 \def (S i) in (let TMP_472 \def (minus i0 TMP_471) in (csubst0 
486 TMP_472 u0 e1 e2)))))))) in (let TMP_474 \def (pc3 c0 t5 t0) in (let TMP_533 
487 \def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: 
488 T).(\lambda (x4: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 
489 (Bind x0) x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda 
490 (H12: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H13: (csubst0 (minus i0 
491 (S i)) u0 x1 x2)).(let TMP_475 \def (\lambda (e0: C).(match e0 with [(CSort 
492 _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_476 \def 
493 (Bind Abbr) in (let TMP_477 \def (CHead d TMP_476 u) in (let TMP_478 \def 
494 (Bind x0) in (let TMP_479 \def (CHead x1 TMP_478 x3) in (let H14 \def 
495 (f_equal C C TMP_475 TMP_477 TMP_479 H10) in (let TMP_480 \def (\lambda (e0: 
496 C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow 
497 (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in 
498 (let TMP_481 \def (Bind Abbr) in (let TMP_482 \def (CHead d TMP_481 u) in 
499 (let TMP_483 \def (Bind x0) in (let TMP_484 \def (CHead x1 TMP_483 x3) in 
500 (let H15 \def (f_equal C B TMP_480 TMP_482 TMP_484 H10) in (let TMP_485 \def 
501 (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t6) 
502 \Rightarrow t6])) in (let TMP_486 \def (Bind Abbr) in (let TMP_487 \def 
503 (CHead d TMP_486 u) in (let TMP_488 \def (Bind x0) in (let TMP_489 \def 
504 (CHead x1 TMP_488 x3) in (let H16 \def (f_equal C T TMP_485 TMP_487 TMP_489 
505 H10) in (let TMP_531 \def (\lambda (H17: (eq B Abbr x0)).(\lambda (H18: (eq C 
506 d x1)).(let TMP_492 \def (\lambda (t6: T).(let TMP_490 \def (S i) in (let 
507 TMP_491 \def (minus i0 TMP_490) in (subst0 TMP_491 u0 t6 x4)))) in (let H19 
508 \def (eq_ind_r T x3 TMP_492 H12 u H16) in (let TMP_495 \def (\lambda (c3: 
509 C).(let TMP_493 \def (S i) in (let TMP_494 \def (minus i0 TMP_493) in 
510 (csubst0 TMP_494 u0 c3 x2)))) in (let H20 \def (eq_ind_r C x1 TMP_495 H13 d 
511 H18) in (let TMP_498 \def (\lambda (b: B).(let TMP_496 \def (Bind b) in (let 
512 TMP_497 \def (CHead x2 TMP_496 x4) in (getl i c0 TMP_497)))) in (let H21 \def 
513 (eq_ind_r B x0 TMP_498 H11 Abbr H17) in (let TMP_499 \def (\lambda (t6: 
514 T).(subst0 i x4 t3 t6)) in (let TMP_504 \def (\lambda (t6: T).(let TMP_500 
515 \def (S i) in (let TMP_501 \def (minus i0 TMP_500) in (let TMP_502 \def (plus 
516 TMP_501 i) in (let TMP_503 \def (S TMP_502) in (subst0 TMP_503 u0 t0 t6)))))) 
517 in (let TMP_505 \def (pc3 c0 t5 t0) in (let TMP_527 \def (\lambda (x: 
518 T).(\lambda (H22: (subst0 i x4 t3 x)).(\lambda (H23: (subst0 (S (plus (minus 
519 i0 (S i)) i)) u0 t0 x)).(let TMP_506 \def (S i) in (let TMP_507 \def (minus 
520 i0 TMP_506) in (let TMP_508 \def (plus TMP_507 i) in (let TMP_509 \def (S 
521 TMP_508) in (let TMP_510 \def (\lambda (n: nat).(subst0 n u0 t0 x)) in (let 
522 TMP_511 \def (lt_plus_minus_r i i0 H7) in (let H24 \def (eq_ind_r nat TMP_509 
523 TMP_510 H23 i0 TMP_511) in (let TMP_512 \def (le_n i0) in (let TMP_513 \def 
524 (Bind Abbr) in (let TMP_514 \def (CHead e TMP_513 u0) in (let TMP_515 \def 
525 (csubst0_getl_ge i0 i0 TMP_512 c c0 u0 H5 TMP_514 H6) in (let TMP_516 \def 
526 (pr0_refl t2) in (let TMP_517 \def (pr2_delta c0 e u0 i0 TMP_515 t2 t2 
527 TMP_516 t5 H4) in (let TMP_518 \def (pr2_delta c0 x2 x4 i H21 t2 t3 H1 x H22) 
528 in (let TMP_519 \def (le_n i0) in (let TMP_520 \def (Bind Abbr) in (let 
529 TMP_521 \def (CHead e TMP_520 u0) in (let TMP_522 \def (csubst0_getl_ge i0 i0 
530 TMP_519 c c0 u0 H5 TMP_521 H6) in (let TMP_523 \def (pr0_refl t0) in (let 
531 TMP_524 \def (pr2_delta c0 e u0 i0 TMP_522 t0 t0 TMP_523 x H24) in (let 
532 TMP_525 \def (pc3_pr2_x c0 x t0 TMP_524) in (let TMP_526 \def (pc3_pr2_u c0 x 
533 t2 TMP_518 t0 TMP_525) in (pc3_pr2_u2 c0 t2 t5 TMP_517 t0 
534 TMP_526)))))))))))))))))))))))))) in (let TMP_528 \def (S i) in (let TMP_529 
535 \def (minus i0 TMP_528) in (let TMP_530 \def (subst0_subst0_back t3 t0 u i H2 
536 x4 u0 TMP_529 H19) in (ex2_ind T TMP_499 TMP_504 TMP_505 TMP_527 
537 TMP_530)))))))))))))))) in (let TMP_532 \def (TMP_531 H15) in (TMP_532 
538 H14)))))))))))))))))))))))))))))) in (ex4_5_ind B C C T T TMP_464 TMP_467 
539 TMP_470 TMP_473 TMP_474 TMP_533 H9)))))))) in (or4_ind TMP_290 TMP_302 
540 TMP_314 TMP_329 TMP_330 TMP_339 TMP_411 TMP_459 TMP_534 
541 H8)))))))))))))))))))))))))) in (let TMP_547 \def (\lambda (H7: (le i0 
542 i)).(let TMP_536 \def (le_n i0) in (let TMP_537 \def (Bind Abbr) in (let 
543 TMP_538 \def (CHead e TMP_537 u0) in (let TMP_539 \def (csubst0_getl_ge i0 i0 
544 TMP_536 c c0 u0 H5 TMP_538 H6) in (let TMP_540 \def (pr0_refl t2) in (let 
545 TMP_541 \def (pr2_delta c0 e u0 i0 TMP_539 t2 t2 TMP_540 t5 H4) in (let 
546 TMP_542 \def (Bind Abbr) in (let TMP_543 \def (CHead d TMP_542 u) in (let 
547 TMP_544 \def (csubst0_getl_ge i0 i H7 c c0 u0 H5 TMP_543 H0) in (let TMP_545 
548 \def (pr2_delta c0 d u i TMP_544 t2 t3 H1 t0 H2) in (let TMP_546 \def 
549 (pc3_pr2_r c0 t2 t0 TMP_545) in (pc3_pr2_u2 c0 t2 t5 TMP_541 t0 
550 TMP_546))))))))))))) in (lt_le_e i i0 TMP_285 TMP_535 TMP_547)))))))))) in 
551 (fsubst0_ind i0 u0 c t2 TMP_48 TMP_55 TMP_284 TMP_548 c2 t4 
552 H3)))))))))))))))))))) in (pr2_ind TMP_1 TMP_47 TMP_549 c1 t1 t H))))))).
553
554 theorem pc3_pr2_fsubst0_back:
555  \forall (c1: C).(\forall (t: T).(\forall (t1: T).((pr2 c1 t t1) \to (\forall 
556 (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t2: T).((fsubst0 i u c1 
557 t1 c2 t2) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 
558 c2 t t2)))))))))))
559 \def
560  \lambda (c1: C).(\lambda (t: T).(\lambda (t1: T).(\lambda (H: (pr2 c1 t 
561 t1)).(let TMP_1 \def (\lambda (c: C).(\lambda (t0: T).(\lambda (t2: 
562 T).(\forall (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: 
563 T).((fsubst0 i u c t2 c2 t3) \to (\forall (e: C).((getl i c (CHead e (Bind 
564 Abbr) u)) \to (pc3 c2 t0 t3))))))))))) in (let TMP_19 \def (\lambda (c: 
565 C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: (pr0 t2 t3)).(\lambda (i: 
566 nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t0: T).(\lambda (H1: (fsubst0 
567 i u c t3 c2 t0)).(let TMP_2 \def (\lambda (c0: C).(\lambda (t4: T).(\forall 
568 (e: C).((getl i c (CHead e (Bind Abbr) u)) \to (pc3 c0 t2 t4))))) in (let 
569 TMP_7 \def (\lambda (t4: T).(\lambda (H2: (subst0 i u t3 t4)).(\lambda (e: 
570 C).(\lambda (H3: (getl i c (CHead e (Bind Abbr) u))).(let TMP_3 \def 
571 (pr2_free c t2 t3 H0) in (let TMP_4 \def (pr0_refl t3) in (let TMP_5 \def 
572 (pr2_delta c e u i H3 t3 t3 TMP_4 t4 H2) in (let TMP_6 \def (pc3_pr2_r c t3 
573 t4 TMP_5) in (pc3_pr2_u c t3 t2 TMP_3 t4 TMP_6))))))))) in (let TMP_9 \def 
574 (\lambda (c0: C).(\lambda (_: (csubst0 i u c c0)).(\lambda (e: C).(\lambda 
575 (_: (getl i c (CHead e (Bind Abbr) u))).(let TMP_8 \def (pr2_free c0 t2 t3 
576 H0) in (pc3_pr2_r c0 t2 t3 TMP_8)))))) in (let TMP_18 \def (\lambda (t4: 
577 T).(\lambda (H2: (subst0 i u t3 t4)).(\lambda (c0: C).(\lambda (H3: (csubst0 
578 i u c c0)).(\lambda (e: C).(\lambda (H4: (getl i c (CHead e (Bind Abbr) 
579 u))).(let TMP_10 \def (pr2_free c0 t2 t3 H0) in (let TMP_11 \def (le_n i) in 
580 (let TMP_12 \def (Bind Abbr) in (let TMP_13 \def (CHead e TMP_12 u) in (let 
581 TMP_14 \def (csubst0_getl_ge i i TMP_11 c c0 u H3 TMP_13 H4) in (let TMP_15 
582 \def (pr0_refl t3) in (let TMP_16 \def (pr2_delta c0 e u i TMP_14 t3 t3 
583 TMP_15 t4 H2) in (let TMP_17 \def (pc3_pr2_r c0 t3 t4 TMP_16) in (pc3_pr2_u 
584 c0 t3 t2 TMP_10 t4 TMP_17))))))))))))))) in (fsubst0_ind i u c t3 TMP_2 TMP_7 
585 TMP_9 TMP_18 c2 t0 H1)))))))))))))) in (let TMP_529 \def (\lambda (c: 
586 C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c 
587 (CHead d (Bind Abbr) u))).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H1: 
588 (pr0 t2 t3)).(\lambda (t0: T).(\lambda (H2: (subst0 i u t3 t0)).(\lambda (i0: 
589 nat).(\lambda (u0: T).(\lambda (c2: C).(\lambda (t4: T).(\lambda (H3: 
590 (fsubst0 i0 u0 c t0 c2 t4)).(let TMP_20 \def (\lambda (c0: C).(\lambda (t5: 
591 T).(\forall (e: C).((getl i0 c (CHead e (Bind Abbr) u0)) \to (pc3 c0 t2 
592 t5))))) in (let TMP_31 \def (\lambda (t5: T).(\lambda (H4: (subst0 i0 u0 t0 
593 t5)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) u0))).(let 
594 TMP_21 \def (pr2_free c t2 t3 H1) in (let TMP_22 \def (pr3_pr2 c t2 t3 
595 TMP_21) in (let TMP_23 \def (pc3_pr3_r c t2 t3 TMP_22) in (let TMP_24 \def 
596 (pr0_refl t3) in (let TMP_25 \def (pr2_delta c d u i H0 t3 t3 TMP_24 t0 H2) 
597 in (let TMP_26 \def (pr0_refl t0) in (let TMP_27 \def (pr2_delta c e u0 i0 H5 
598 t0 t0 TMP_26 t5 H4) in (let TMP_28 \def (pr3_pr2 c t0 t5 TMP_27) in (let 
599 TMP_29 \def (pr3_sing c t0 t3 TMP_25 t5 TMP_28) in (let TMP_30 \def 
600 (pc3_pr3_r c t3 t5 TMP_29) in (pc3_t t3 c t2 TMP_23 t5 TMP_30))))))))))))))) 
601 in (let TMP_260 \def (\lambda (c0: C).(\lambda (H4: (csubst0 i0 u0 c 
602 c0)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) u0))).(let 
603 TMP_32 \def (pc3 c0 t2 t0) in (let TMP_254 \def (\lambda (H6: (lt i i0)).(let 
604 TMP_33 \def (Bind Abbr) in (let TMP_34 \def (CHead d TMP_33 u) in (let H7 
605 \def (csubst0_getl_lt i0 i H6 c c0 u0 H4 TMP_34 H0) in (let TMP_35 \def (Bind 
606 Abbr) in (let TMP_36 \def (CHead d TMP_35 u) in (let TMP_37 \def (getl i c0 
607 TMP_36) in (let TMP_42 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: 
608 T).(\lambda (_: T).(let TMP_38 \def (Bind Abbr) in (let TMP_39 \def (CHead d 
609 TMP_38 u) in (let TMP_40 \def (Bind b) in (let TMP_41 \def (CHead e0 TMP_40 
610 u1) in (eq C TMP_39 TMP_41))))))))) in (let TMP_45 \def (\lambda (b: 
611 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(let TMP_43 \def (Bind b) 
612 in (let TMP_44 \def (CHead e0 TMP_43 w) in (getl i c0 TMP_44))))))) in (let 
613 TMP_48 \def (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: 
614 T).(let TMP_46 \def (S i) in (let TMP_47 \def (minus i0 TMP_46) in (subst0 
615 TMP_47 u0 u1 w))))))) in (let TMP_49 \def (ex3_4 B C T T TMP_42 TMP_45 
616 TMP_48) in (let TMP_54 \def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
617 C).(\lambda (u1: T).(let TMP_50 \def (Bind Abbr) in (let TMP_51 \def (CHead d 
618 TMP_50 u) in (let TMP_52 \def (Bind b) in (let TMP_53 \def (CHead e1 TMP_52 
619 u1) in (eq C TMP_51 TMP_53))))))))) in (let TMP_57 \def (\lambda (b: 
620 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_55 \def (Bind 
621 b) in (let TMP_56 \def (CHead e2 TMP_55 u1) in (getl i c0 TMP_56))))))) in 
622 (let TMP_60 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
623 (_: T).(let TMP_58 \def (S i) in (let TMP_59 \def (minus i0 TMP_58) in 
624 (csubst0 TMP_59 u0 e1 e2))))))) in (let TMP_61 \def (ex3_4 B C C T TMP_54 
625 TMP_57 TMP_60) in (let TMP_66 \def (\lambda (b: B).(\lambda (e1: C).(\lambda 
626 (_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_62 \def (Bind Abbr) in (let 
627 TMP_63 \def (CHead d TMP_62 u) in (let TMP_64 \def (Bind b) in (let TMP_65 
628 \def (CHead e1 TMP_64 u1) in (eq C TMP_63 TMP_65)))))))))) in (let TMP_69 
629 \def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
630 T).(\lambda (w: T).(let TMP_67 \def (Bind b) in (let TMP_68 \def (CHead e2 
631 TMP_67 w) in (getl i c0 TMP_68)))))))) in (let TMP_72 \def (\lambda (_: 
632 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(let 
633 TMP_70 \def (S i) in (let TMP_71 \def (minus i0 TMP_70) in (subst0 TMP_71 u0 
634 u1 w)))))))) in (let TMP_75 \def (\lambda (_: B).(\lambda (e1: C).(\lambda 
635 (e2: C).(\lambda (_: T).(\lambda (_: T).(let TMP_73 \def (S i) in (let TMP_74 
636 \def (minus i0 TMP_73) in (csubst0 TMP_74 u0 e1 e2)))))))) in (let TMP_76 
637 \def (ex4_5 B C C T T TMP_66 TMP_69 TMP_72 TMP_75) in (let TMP_77 \def (pc3 
638 c0 t2 t0) in (let TMP_79 \def (\lambda (H8: (getl i c0 (CHead d (Bind Abbr) 
639 u))).(let TMP_78 \def (pr2_delta c0 d u i H8 t2 t3 H1 t0 H2) in (pc3_pr2_r c0 
640 t2 t0 TMP_78))) in (let TMP_144 \def (\lambda (H8: (ex3_4 B C T T (\lambda 
641 (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind 
642 Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: 
643 C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) 
644 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 
645 (minus i0 (S i)) u0 u1 w))))))).(let TMP_84 \def (\lambda (b: B).(\lambda 
646 (e0: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_80 \def (Bind Abbr) in (let 
647 TMP_81 \def (CHead d TMP_80 u) in (let TMP_82 \def (Bind b) in (let TMP_83 
648 \def (CHead e0 TMP_82 u1) in (eq C TMP_81 TMP_83))))))))) in (let TMP_87 \def 
649 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(let TMP_85 
650 \def (Bind b) in (let TMP_86 \def (CHead e0 TMP_85 w) in (getl i c0 
651 TMP_86))))))) in (let TMP_90 \def (\lambda (_: B).(\lambda (_: C).(\lambda 
652 (u1: T).(\lambda (w: T).(let TMP_88 \def (S i) in (let TMP_89 \def (minus i0 
653 TMP_88) in (subst0 TMP_89 u0 u1 w))))))) in (let TMP_91 \def (pc3 c0 t2 t0) 
654 in (let TMP_143 \def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: 
655 T).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 
656 (Bind x0) x2))).(\lambda (H10: (getl i c0 (CHead x1 (Bind x0) x3))).(\lambda 
657 (H11: (subst0 (minus i0 (S i)) u0 x2 x3)).(let TMP_92 \def (\lambda (e0: 
658 C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) 
659 in (let TMP_93 \def (Bind Abbr) in (let TMP_94 \def (CHead d TMP_93 u) in 
660 (let TMP_95 \def (Bind x0) in (let TMP_96 \def (CHead x1 TMP_95 x2) in (let 
661 H12 \def (f_equal C C TMP_92 TMP_94 TMP_96 H9) in (let TMP_97 \def (\lambda 
662 (e0: C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) 
663 \Rightarrow (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
664 Abbr])])) in (let TMP_98 \def (Bind Abbr) in (let TMP_99 \def (CHead d TMP_98 
665 u) in (let TMP_100 \def (Bind x0) in (let TMP_101 \def (CHead x1 TMP_100 x2) 
666 in (let H13 \def (f_equal C B TMP_97 TMP_99 TMP_101 H9) in (let TMP_102 \def 
667 (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t5) 
668 \Rightarrow t5])) in (let TMP_103 \def (Bind Abbr) in (let TMP_104 \def 
669 (CHead d TMP_103 u) in (let TMP_105 \def (Bind x0) in (let TMP_106 \def 
670 (CHead x1 TMP_105 x2) in (let H14 \def (f_equal C T TMP_102 TMP_104 TMP_106 
671 H9) in (let TMP_141 \def (\lambda (H15: (eq B Abbr x0)).(\lambda (H16: (eq C 
672 d x1)).(let TMP_109 \def (\lambda (t5: T).(let TMP_107 \def (S i) in (let 
673 TMP_108 \def (minus i0 TMP_107) in (subst0 TMP_108 u0 t5 x3)))) in (let H17 
674 \def (eq_ind_r T x2 TMP_109 H11 u H14) in (let TMP_112 \def (\lambda (c3: 
675 C).(let TMP_110 \def (Bind x0) in (let TMP_111 \def (CHead c3 TMP_110 x3) in 
676 (getl i c0 TMP_111)))) in (let H18 \def (eq_ind_r C x1 TMP_112 H10 d H16) in 
677 (let TMP_115 \def (\lambda (b: B).(let TMP_113 \def (Bind b) in (let TMP_114 
678 \def (CHead d TMP_113 x3) in (getl i c0 TMP_114)))) in (let H19 \def 
679 (eq_ind_r B x0 TMP_115 H18 Abbr H15) in (let TMP_116 \def (\lambda (t5: 
680 T).(subst0 i x3 t3 t5)) in (let TMP_121 \def (\lambda (t5: T).(let TMP_117 
681 \def (S i) in (let TMP_118 \def (minus i0 TMP_117) in (let TMP_119 \def (plus 
682 TMP_118 i) in (let TMP_120 \def (S TMP_119) in (subst0 TMP_120 u0 t0 t5)))))) 
683 in (let TMP_122 \def (pc3 c0 t2 t0) in (let TMP_137 \def (\lambda (x: 
684 T).(\lambda (H20: (subst0 i x3 t3 x)).(\lambda (H21: (subst0 (S (plus (minus 
685 i0 (S i)) i)) u0 t0 x)).(let TMP_123 \def (S i) in (let TMP_124 \def (minus 
686 i0 TMP_123) in (let TMP_125 \def (plus TMP_124 i) in (let TMP_126 \def (S 
687 TMP_125) in (let TMP_127 \def (\lambda (n: nat).(subst0 n u0 t0 x)) in (let 
688 TMP_128 \def (lt_plus_minus_r i i0 H6) in (let H22 \def (eq_ind_r nat TMP_126 
689 TMP_127 H21 i0 TMP_128) in (let TMP_129 \def (pr2_delta c0 d x3 i H19 t2 t3 
690 H1 x H20) in (let TMP_130 \def (le_n i0) in (let TMP_131 \def (Bind Abbr) in 
691 (let TMP_132 \def (CHead e TMP_131 u0) in (let TMP_133 \def (csubst0_getl_ge 
692 i0 i0 TMP_130 c c0 u0 H4 TMP_132 H5) in (let TMP_134 \def (pr0_refl t0) in 
693 (let TMP_135 \def (pr2_delta c0 e u0 i0 TMP_133 t0 t0 TMP_134 x H22) in (let 
694 TMP_136 \def (pc3_pr2_x c0 x t0 TMP_135) in (pc3_pr2_u c0 x t2 TMP_129 t0 
695 TMP_136))))))))))))))))))) in (let TMP_138 \def (S i) in (let TMP_139 \def 
696 (minus i0 TMP_138) in (let TMP_140 \def (subst0_subst0_back t3 t0 u i H2 x3 
697 u0 TMP_139 H17) in (ex2_ind T TMP_116 TMP_121 TMP_122 TMP_137 
698 TMP_140)))))))))))))))) in (let TMP_142 \def (TMP_141 H13) in (TMP_142 
699 H12)))))))))))))))))))))))))))) in (ex3_4_ind B C T T TMP_84 TMP_87 TMP_90 
700 TMP_91 TMP_143 H8))))))) in (let TMP_185 \def (\lambda (H8: (ex3_4 B C C T 
701 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C 
702 (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda 
703 (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) 
704 u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
705 T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(let TMP_149 \def (\lambda (b: 
706 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(let TMP_145 \def (Bind 
707 Abbr) in (let TMP_146 \def (CHead d TMP_145 u) in (let TMP_147 \def (Bind b) 
708 in (let TMP_148 \def (CHead e1 TMP_147 u1) in (eq C TMP_146 TMP_148))))))))) 
709 in (let TMP_152 \def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
710 C).(\lambda (u1: T).(let TMP_150 \def (Bind b) in (let TMP_151 \def (CHead e2 
711 TMP_150 u1) in (getl i c0 TMP_151))))))) in (let TMP_155 \def (\lambda (_: 
712 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(let TMP_153 \def (S i) 
713 in (let TMP_154 \def (minus i0 TMP_153) in (csubst0 TMP_154 u0 e1 e2))))))) 
714 in (let TMP_156 \def (pc3 c0 t2 t0) in (let TMP_184 \def (\lambda (x0: 
715 B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H9: (eq C 
716 (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3))).(\lambda (H10: (getl i c0 
717 (CHead x2 (Bind x0) x3))).(\lambda (H11: (csubst0 (minus i0 (S i)) u0 x1 
718 x2)).(let TMP_157 \def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow 
719 d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_158 \def (Bind Abbr) in (let 
720 TMP_159 \def (CHead d TMP_158 u) in (let TMP_160 \def (Bind x0) in (let 
721 TMP_161 \def (CHead x1 TMP_160 x3) in (let H12 \def (f_equal C C TMP_157 
722 TMP_159 TMP_161 H9) in (let TMP_162 \def (\lambda (e0: C).(match e0 with 
723 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k with [(Bind 
724 b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in (let TMP_163 \def (Bind 
725 Abbr) in (let TMP_164 \def (CHead d TMP_163 u) in (let TMP_165 \def (Bind x0) 
726 in (let TMP_166 \def (CHead x1 TMP_165 x3) in (let H13 \def (f_equal C B 
727 TMP_162 TMP_164 TMP_166 H9) in (let TMP_167 \def (\lambda (e0: C).(match e0 
728 with [(CSort _) \Rightarrow u | (CHead _ _ t5) \Rightarrow t5])) in (let 
729 TMP_168 \def (Bind Abbr) in (let TMP_169 \def (CHead d TMP_168 u) in (let 
730 TMP_170 \def (Bind x0) in (let TMP_171 \def (CHead x1 TMP_170 x3) in (let H14 
731 \def (f_equal C T TMP_167 TMP_169 TMP_171 H9) in (let TMP_182 \def (\lambda 
732 (H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let TMP_174 \def (\lambda 
733 (t5: T).(let TMP_172 \def (Bind x0) in (let TMP_173 \def (CHead x2 TMP_172 
734 t5) in (getl i c0 TMP_173)))) in (let H17 \def (eq_ind_r T x3 TMP_174 H10 u 
735 H14) in (let TMP_177 \def (\lambda (c3: C).(let TMP_175 \def (S i) in (let 
736 TMP_176 \def (minus i0 TMP_175) in (csubst0 TMP_176 u0 c3 x2)))) in (let H18 
737 \def (eq_ind_r C x1 TMP_177 H11 d H16) in (let TMP_180 \def (\lambda (b: 
738 B).(let TMP_178 \def (Bind b) in (let TMP_179 \def (CHead x2 TMP_178 u) in 
739 (getl i c0 TMP_179)))) in (let H19 \def (eq_ind_r B x0 TMP_180 H17 Abbr H15) 
740 in (let TMP_181 \def (pr2_delta c0 x2 u i H19 t2 t3 H1 t0 H2) in (pc3_pr2_r 
741 c0 t2 t0 TMP_181)))))))))) in (let TMP_183 \def (TMP_182 H13) in (TMP_183 
742 H12)))))))))))))))))))))))))))) in (ex3_4_ind B C C T TMP_149 TMP_152 TMP_155 
743 TMP_156 TMP_184 H8))))))) in (let TMP_253 \def (\lambda (H8: (ex4_5 B C C T T 
744 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
745 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda 
746 (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl 
747 i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
748 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) 
749 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
750 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))))).(let TMP_190 \def (\lambda 
751 (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let 
752 TMP_186 \def (Bind Abbr) in (let TMP_187 \def (CHead d TMP_186 u) in (let 
753 TMP_188 \def (Bind b) in (let TMP_189 \def (CHead e1 TMP_188 u1) in (eq C 
754 TMP_187 TMP_189)))))))))) in (let TMP_193 \def (\lambda (b: B).(\lambda (_: 
755 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(let TMP_191 \def (Bind 
756 b) in (let TMP_192 \def (CHead e2 TMP_191 w) in (getl i c0 TMP_192)))))))) in 
757 (let TMP_196 \def (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
758 (u1: T).(\lambda (w: T).(let TMP_194 \def (S i) in (let TMP_195 \def (minus 
759 i0 TMP_194) in (subst0 TMP_195 u0 u1 w)))))))) in (let TMP_199 \def (\lambda 
760 (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let 
761 TMP_197 \def (S i) in (let TMP_198 \def (minus i0 TMP_197) in (csubst0 
762 TMP_198 u0 e1 e2)))))))) in (let TMP_200 \def (pc3 c0 t2 t0) in (let TMP_252 
763 \def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: 
764 T).(\lambda (x4: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 
765 (Bind x0) x3))).(\lambda (H10: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda 
766 (H11: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H12: (csubst0 (minus i0 
767 (S i)) u0 x1 x2)).(let TMP_201 \def (\lambda (e0: C).(match e0 with [(CSort 
768 _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_202 \def 
769 (Bind Abbr) in (let TMP_203 \def (CHead d TMP_202 u) in (let TMP_204 \def 
770 (Bind x0) in (let TMP_205 \def (CHead x1 TMP_204 x3) in (let H13 \def 
771 (f_equal C C TMP_201 TMP_203 TMP_205 H9) in (let TMP_206 \def (\lambda (e0: 
772 C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow 
773 (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in 
774 (let TMP_207 \def (Bind Abbr) in (let TMP_208 \def (CHead d TMP_207 u) in 
775 (let TMP_209 \def (Bind x0) in (let TMP_210 \def (CHead x1 TMP_209 x3) in 
776 (let H14 \def (f_equal C B TMP_206 TMP_208 TMP_210 H9) in (let TMP_211 \def 
777 (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t5) 
778 \Rightarrow t5])) in (let TMP_212 \def (Bind Abbr) in (let TMP_213 \def 
779 (CHead d TMP_212 u) in (let TMP_214 \def (Bind x0) in (let TMP_215 \def 
780 (CHead x1 TMP_214 x3) in (let H15 \def (f_equal C T TMP_211 TMP_213 TMP_215 
781 H9) in (let TMP_250 \def (\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C 
782 d x1)).(let TMP_218 \def (\lambda (t5: T).(let TMP_216 \def (S i) in (let 
783 TMP_217 \def (minus i0 TMP_216) in (subst0 TMP_217 u0 t5 x4)))) in (let H18 
784 \def (eq_ind_r T x3 TMP_218 H11 u H15) in (let TMP_221 \def (\lambda (c3: 
785 C).(let TMP_219 \def (S i) in (let TMP_220 \def (minus i0 TMP_219) in 
786 (csubst0 TMP_220 u0 c3 x2)))) in (let H19 \def (eq_ind_r C x1 TMP_221 H12 d 
787 H17) in (let TMP_224 \def (\lambda (b: B).(let TMP_222 \def (Bind b) in (let 
788 TMP_223 \def (CHead x2 TMP_222 x4) in (getl i c0 TMP_223)))) in (let H20 \def 
789 (eq_ind_r B x0 TMP_224 H10 Abbr H16) in (let TMP_225 \def (\lambda (t5: 
790 T).(subst0 i x4 t3 t5)) in (let TMP_230 \def (\lambda (t5: T).(let TMP_226 
791 \def (S i) in (let TMP_227 \def (minus i0 TMP_226) in (let TMP_228 \def (plus 
792 TMP_227 i) in (let TMP_229 \def (S TMP_228) in (subst0 TMP_229 u0 t0 t5)))))) 
793 in (let TMP_231 \def (pc3 c0 t2 t0) in (let TMP_246 \def (\lambda (x: 
794 T).(\lambda (H21: (subst0 i x4 t3 x)).(\lambda (H22: (subst0 (S (plus (minus 
795 i0 (S i)) i)) u0 t0 x)).(let TMP_232 \def (S i) in (let TMP_233 \def (minus 
796 i0 TMP_232) in (let TMP_234 \def (plus TMP_233 i) in (let TMP_235 \def (S 
797 TMP_234) in (let TMP_236 \def (\lambda (n: nat).(subst0 n u0 t0 x)) in (let 
798 TMP_237 \def (lt_plus_minus_r i i0 H6) in (let H23 \def (eq_ind_r nat TMP_235 
799 TMP_236 H22 i0 TMP_237) in (let TMP_238 \def (pr2_delta c0 x2 x4 i H20 t2 t3 
800 H1 x H21) in (let TMP_239 \def (le_n i0) in (let TMP_240 \def (Bind Abbr) in 
801 (let TMP_241 \def (CHead e TMP_240 u0) in (let TMP_242 \def (csubst0_getl_ge 
802 i0 i0 TMP_239 c c0 u0 H4 TMP_241 H5) in (let TMP_243 \def (pr0_refl t0) in 
803 (let TMP_244 \def (pr2_delta c0 e u0 i0 TMP_242 t0 t0 TMP_243 x H23) in (let 
804 TMP_245 \def (pc3_pr2_x c0 x t0 TMP_244) in (pc3_pr2_u c0 x t2 TMP_238 t0 
805 TMP_245))))))))))))))))))) in (let TMP_247 \def (S i) in (let TMP_248 \def 
806 (minus i0 TMP_247) in (let TMP_249 \def (subst0_subst0_back t3 t0 u i H2 x4 
807 u0 TMP_248 H18) in (ex2_ind T TMP_225 TMP_230 TMP_231 TMP_246 
808 TMP_249)))))))))))))))) in (let TMP_251 \def (TMP_250 H14) in (TMP_251 
809 H13)))))))))))))))))))))))))))))) in (ex4_5_ind B C C T T TMP_190 TMP_193 
810 TMP_196 TMP_199 TMP_200 TMP_252 H8)))))))) in (or4_ind TMP_37 TMP_49 TMP_61 
811 TMP_76 TMP_77 TMP_79 TMP_144 TMP_185 TMP_253 H7)))))))))))))))))))))))))) in 
812 (let TMP_259 \def (\lambda (H6: (le i0 i)).(let TMP_255 \def (Bind Abbr) in 
813 (let TMP_256 \def (CHead d TMP_255 u) in (let TMP_257 \def (csubst0_getl_ge 
814 i0 i H6 c c0 u0 H4 TMP_256 H0) in (let TMP_258 \def (pr2_delta c0 d u i 
815 TMP_257 t2 t3 H1 t0 H2) in (pc3_pr2_r c0 t2 t0 TMP_258)))))) in (lt_le_e i i0 
816 TMP_32 TMP_254 TMP_259)))))))) in (let TMP_528 \def (\lambda (t5: T).(\lambda 
817 (H4: (subst0 i0 u0 t0 t5)).(\lambda (c0: C).(\lambda (H5: (csubst0 i0 u0 c 
818 c0)).(\lambda (e: C).(\lambda (H6: (getl i0 c (CHead e (Bind Abbr) u0))).(let 
819 TMP_261 \def (pc3 c0 t2 t5) in (let TMP_515 \def (\lambda (H7: (lt i 
820 i0)).(let TMP_262 \def (Bind Abbr) in (let TMP_263 \def (CHead d TMP_262 u) 
821 in (let H8 \def (csubst0_getl_lt i0 i H7 c c0 u0 H5 TMP_263 H0) in (let 
822 TMP_264 \def (Bind Abbr) in (let TMP_265 \def (CHead d TMP_264 u) in (let 
823 TMP_266 \def (getl i c0 TMP_265) in (let TMP_271 \def (\lambda (b: 
824 B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_267 \def (Bind 
825 Abbr) in (let TMP_268 \def (CHead d TMP_267 u) in (let TMP_269 \def (Bind b) 
826 in (let TMP_270 \def (CHead e0 TMP_269 u1) in (eq C TMP_268 TMP_270))))))))) 
827 in (let TMP_274 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
828 T).(\lambda (w: T).(let TMP_272 \def (Bind b) in (let TMP_273 \def (CHead e0 
829 TMP_272 w) in (getl i c0 TMP_273))))))) in (let TMP_277 \def (\lambda (_: 
830 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(let TMP_275 \def (S i) 
831 in (let TMP_276 \def (minus i0 TMP_275) in (subst0 TMP_276 u0 u1 w))))))) in 
832 (let TMP_278 \def (ex3_4 B C T T TMP_271 TMP_274 TMP_277) in (let TMP_283 
833 \def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(let 
834 TMP_279 \def (Bind Abbr) in (let TMP_280 \def (CHead d TMP_279 u) in (let 
835 TMP_281 \def (Bind b) in (let TMP_282 \def (CHead e1 TMP_281 u1) in (eq C 
836 TMP_280 TMP_282))))))))) in (let TMP_286 \def (\lambda (b: B).(\lambda (_: 
837 C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_284 \def (Bind b) in (let 
838 TMP_285 \def (CHead e2 TMP_284 u1) in (getl i c0 TMP_285))))))) in (let 
839 TMP_289 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
840 T).(let TMP_287 \def (S i) in (let TMP_288 \def (minus i0 TMP_287) in 
841 (csubst0 TMP_288 u0 e1 e2))))))) in (let TMP_290 \def (ex3_4 B C C T TMP_283 
842 TMP_286 TMP_289) in (let TMP_295 \def (\lambda (b: B).(\lambda (e1: 
843 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_291 \def (Bind 
844 Abbr) in (let TMP_292 \def (CHead d TMP_291 u) in (let TMP_293 \def (Bind b) 
845 in (let TMP_294 \def (CHead e1 TMP_293 u1) in (eq C TMP_292 TMP_294)))))))))) 
846 in (let TMP_298 \def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
847 C).(\lambda (_: T).(\lambda (w: T).(let TMP_296 \def (Bind b) in (let TMP_297 
848 \def (CHead e2 TMP_296 w) in (getl i c0 TMP_297)))))))) in (let TMP_301 \def 
849 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: 
850 T).(let TMP_299 \def (S i) in (let TMP_300 \def (minus i0 TMP_299) in (subst0 
851 TMP_300 u0 u1 w)))))))) in (let TMP_304 \def (\lambda (_: B).(\lambda (e1: 
852 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let TMP_302 \def (S i) 
853 in (let TMP_303 \def (minus i0 TMP_302) in (csubst0 TMP_303 u0 e1 e2)))))))) 
854 in (let TMP_305 \def (ex4_5 B C C T T TMP_295 TMP_298 TMP_301 TMP_304) in 
855 (let TMP_306 \def (pc3 c0 t2 t5) in (let TMP_319 \def (\lambda (H9: (getl i 
856 c0 (CHead d (Bind Abbr) u))).(let TMP_307 \def (pr2_free c0 t2 t3 H1) in (let 
857 TMP_308 \def (pr0_refl t3) in (let TMP_309 \def (pr2_delta c0 d u i H9 t3 t3 
858 TMP_308 t0 H2) in (let TMP_310 \def (le_n i0) in (let TMP_311 \def (Bind 
859 Abbr) in (let TMP_312 \def (CHead e TMP_311 u0) in (let TMP_313 \def 
860 (csubst0_getl_ge i0 i0 TMP_310 c c0 u0 H5 TMP_312 H6) in (let TMP_314 \def 
861 (pr0_refl t0) in (let TMP_315 \def (pr2_delta c0 e u0 i0 TMP_313 t0 t0 
862 TMP_314 t5 H4) in (let TMP_316 \def (pr3_pr2 c0 t0 t5 TMP_315) in (let 
863 TMP_317 \def (pr3_sing c0 t0 t3 TMP_309 t5 TMP_316) in (let TMP_318 \def 
864 (pc3_pr3_r c0 t3 t5 TMP_317) in (pc3_pr2_u c0 t3 t2 TMP_307 t5 
865 TMP_318)))))))))))))) in (let TMP_391 \def (\lambda (H9: (ex3_4 B C T T 
866 (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C 
867 (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda 
868 (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) 
869 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 
870 (minus i0 (S i)) u0 u1 w))))))).(let TMP_324 \def (\lambda (b: B).(\lambda 
871 (e0: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_320 \def (Bind Abbr) in 
872 (let TMP_321 \def (CHead d TMP_320 u) in (let TMP_322 \def (Bind b) in (let 
873 TMP_323 \def (CHead e0 TMP_322 u1) in (eq C TMP_321 TMP_323))))))))) in (let 
874 TMP_327 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
875 T).(let TMP_325 \def (Bind b) in (let TMP_326 \def (CHead e0 TMP_325 w) in 
876 (getl i c0 TMP_326))))))) in (let TMP_330 \def (\lambda (_: B).(\lambda (_: 
877 C).(\lambda (u1: T).(\lambda (w: T).(let TMP_328 \def (S i) in (let TMP_329 
878 \def (minus i0 TMP_328) in (subst0 TMP_329 u0 u1 w))))))) in (let TMP_331 
879 \def (pc3 c0 t2 t5) in (let TMP_390 \def (\lambda (x0: B).(\lambda (x1: 
880 C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind 
881 Abbr) u) (CHead x1 (Bind x0) x2))).(\lambda (H11: (getl i c0 (CHead x1 (Bind 
882 x0) x3))).(\lambda (H12: (subst0 (minus i0 (S i)) u0 x2 x3)).(let TMP_332 
883 \def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ 
884 _) \Rightarrow c3])) in (let TMP_333 \def (Bind Abbr) in (let TMP_334 \def 
885 (CHead d TMP_333 u) in (let TMP_335 \def (Bind x0) in (let TMP_336 \def 
886 (CHead x1 TMP_335 x2) in (let H13 \def (f_equal C C TMP_332 TMP_334 TMP_336 
887 H10) in (let TMP_337 \def (\lambda (e0: C).(match e0 with [(CSort _) 
888 \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k with [(Bind b) 
889 \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in (let TMP_338 \def (Bind 
890 Abbr) in (let TMP_339 \def (CHead d TMP_338 u) in (let TMP_340 \def (Bind x0) 
891 in (let TMP_341 \def (CHead x1 TMP_340 x2) in (let H14 \def (f_equal C B 
892 TMP_337 TMP_339 TMP_341 H10) in (let TMP_342 \def (\lambda (e0: C).(match e0 
893 with [(CSort _) \Rightarrow u | (CHead _ _ t6) \Rightarrow t6])) in (let 
894 TMP_343 \def (Bind Abbr) in (let TMP_344 \def (CHead d TMP_343 u) in (let 
895 TMP_345 \def (Bind x0) in (let TMP_346 \def (CHead x1 TMP_345 x2) in (let H15 
896 \def (f_equal C T TMP_342 TMP_344 TMP_346 H10) in (let TMP_388 \def (\lambda 
897 (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let TMP_349 \def (\lambda 
898 (t6: T).(let TMP_347 \def (S i) in (let TMP_348 \def (minus i0 TMP_347) in 
899 (subst0 TMP_348 u0 t6 x3)))) in (let H18 \def (eq_ind_r T x2 TMP_349 H12 u 
900 H15) in (let TMP_352 \def (\lambda (c3: C).(let TMP_350 \def (Bind x0) in 
901 (let TMP_351 \def (CHead c3 TMP_350 x3) in (getl i c0 TMP_351)))) in (let H19 
902 \def (eq_ind_r C x1 TMP_352 H11 d H17) in (let TMP_355 \def (\lambda (b: 
903 B).(let TMP_353 \def (Bind b) in (let TMP_354 \def (CHead d TMP_353 x3) in 
904 (getl i c0 TMP_354)))) in (let H20 \def (eq_ind_r B x0 TMP_355 H19 Abbr H16) 
905 in (let TMP_356 \def (\lambda (t6: T).(subst0 i x3 t3 t6)) in (let TMP_361 
906 \def (\lambda (t6: T).(let TMP_357 \def (S i) in (let TMP_358 \def (minus i0 
907 TMP_357) in (let TMP_359 \def (plus TMP_358 i) in (let TMP_360 \def (S 
908 TMP_359) in (subst0 TMP_360 u0 t0 t6)))))) in (let TMP_362 \def (pc3 c0 t2 
909 t5) in (let TMP_384 \def (\lambda (x: T).(\lambda (H21: (subst0 i x3 t3 
910 x)).(\lambda (H22: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let 
911 TMP_363 \def (S i) in (let TMP_364 \def (minus i0 TMP_363) in (let TMP_365 
912 \def (plus TMP_364 i) in (let TMP_366 \def (S TMP_365) in (let TMP_367 \def 
913 (\lambda (n: nat).(subst0 n u0 t0 x)) in (let TMP_368 \def (lt_plus_minus_r i 
914 i0 H7) in (let H23 \def (eq_ind_r nat TMP_366 TMP_367 H22 i0 TMP_368) in (let 
915 TMP_369 \def (pr2_delta c0 d x3 i H20 t2 t3 H1 x H21) in (let TMP_370 \def 
916 (le_n i0) in (let TMP_371 \def (Bind Abbr) in (let TMP_372 \def (CHead e 
917 TMP_371 u0) in (let TMP_373 \def (csubst0_getl_ge i0 i0 TMP_370 c c0 u0 H5 
918 TMP_372 H6) in (let TMP_374 \def (pr0_refl t0) in (let TMP_375 \def 
919 (pr2_delta c0 e u0 i0 TMP_373 t0 t0 TMP_374 x H23) in (let TMP_376 \def (le_n 
920 i0) in (let TMP_377 \def (Bind Abbr) in (let TMP_378 \def (CHead e TMP_377 
921 u0) in (let TMP_379 \def (csubst0_getl_ge i0 i0 TMP_376 c c0 u0 H5 TMP_378 
922 H6) in (let TMP_380 \def (pr0_refl t0) in (let TMP_381 \def (pr2_delta c0 e 
923 u0 i0 TMP_379 t0 t0 TMP_380 t5 H4) in (let TMP_382 \def (pc3_pr2_r c0 t0 t5 
924 TMP_381) in (let TMP_383 \def (pc3_pr2_u2 c0 t0 x TMP_375 t5 TMP_382) in 
925 (pc3_pr2_u c0 x t2 TMP_369 t5 TMP_383)))))))))))))))))))))))))) in (let 
926 TMP_385 \def (S i) in (let TMP_386 \def (minus i0 TMP_385) in (let TMP_387 
927 \def (subst0_subst0_back t3 t0 u i H2 x3 u0 TMP_386 H18) in (ex2_ind T 
928 TMP_356 TMP_361 TMP_362 TMP_384 TMP_387)))))))))))))))) in (let TMP_389 \def 
929 (TMP_388 H14) in (TMP_389 H13)))))))))))))))))))))))))))) in (ex3_4_ind B C T 
930 T TMP_324 TMP_327 TMP_330 TMP_331 TMP_390 H9))))))) in (let TMP_439 \def 
931 (\lambda (H9: (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
932 C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) 
933 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 
934 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
935 C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(let TMP_396 
936 \def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(let 
937 TMP_392 \def (Bind Abbr) in (let TMP_393 \def (CHead d TMP_392 u) in (let 
938 TMP_394 \def (Bind b) in (let TMP_395 \def (CHead e1 TMP_394 u1) in (eq C 
939 TMP_393 TMP_395))))))))) in (let TMP_399 \def (\lambda (b: B).(\lambda (_: 
940 C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_397 \def (Bind b) in (let 
941 TMP_398 \def (CHead e2 TMP_397 u1) in (getl i c0 TMP_398))))))) in (let 
942 TMP_402 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
943 T).(let TMP_400 \def (S i) in (let TMP_401 \def (minus i0 TMP_400) in 
944 (csubst0 TMP_401 u0 e1 e2))))))) in (let TMP_403 \def (pc3 c0 t2 t5) in (let 
945 TMP_438 \def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: 
946 T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
947 x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) x3))).(\lambda (H12: 
948 (csubst0 (minus i0 (S i)) u0 x1 x2)).(let TMP_404 \def (\lambda (e0: 
949 C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) 
950 in (let TMP_405 \def (Bind Abbr) in (let TMP_406 \def (CHead d TMP_405 u) in 
951 (let TMP_407 \def (Bind x0) in (let TMP_408 \def (CHead x1 TMP_407 x3) in 
952 (let H13 \def (f_equal C C TMP_404 TMP_406 TMP_408 H10) in (let TMP_409 \def 
953 (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) 
954 \Rightarrow (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
955 Abbr])])) in (let TMP_410 \def (Bind Abbr) in (let TMP_411 \def (CHead d 
956 TMP_410 u) in (let TMP_412 \def (Bind x0) in (let TMP_413 \def (CHead x1 
957 TMP_412 x3) in (let H14 \def (f_equal C B TMP_409 TMP_411 TMP_413 H10) in 
958 (let TMP_414 \def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | 
959 (CHead _ _ t6) \Rightarrow t6])) in (let TMP_415 \def (Bind Abbr) in (let 
960 TMP_416 \def (CHead d TMP_415 u) in (let TMP_417 \def (Bind x0) in (let 
961 TMP_418 \def (CHead x1 TMP_417 x3) in (let H15 \def (f_equal C T TMP_414 
962 TMP_416 TMP_418 H10) in (let TMP_436 \def (\lambda (H16: (eq B Abbr 
963 x0)).(\lambda (H17: (eq C d x1)).(let TMP_421 \def (\lambda (t6: T).(let 
964 TMP_419 \def (Bind x0) in (let TMP_420 \def (CHead x2 TMP_419 t6) in (getl i 
965 c0 TMP_420)))) in (let H18 \def (eq_ind_r T x3 TMP_421 H11 u H15) in (let 
966 TMP_424 \def (\lambda (c3: C).(let TMP_422 \def (S i) in (let TMP_423 \def 
967 (minus i0 TMP_422) in (csubst0 TMP_423 u0 c3 x2)))) in (let H19 \def 
968 (eq_ind_r C x1 TMP_424 H12 d H17) in (let TMP_427 \def (\lambda (b: B).(let 
969 TMP_425 \def (Bind b) in (let TMP_426 \def (CHead x2 TMP_425 u) in (getl i c0 
970 TMP_426)))) in (let H20 \def (eq_ind_r B x0 TMP_427 H18 Abbr H16) in (let 
971 TMP_428 \def (pr2_delta c0 x2 u i H20 t2 t3 H1 t0 H2) in (let TMP_429 \def 
972 (le_n i0) in (let TMP_430 \def (Bind Abbr) in (let TMP_431 \def (CHead e 
973 TMP_430 u0) in (let TMP_432 \def (csubst0_getl_ge i0 i0 TMP_429 c c0 u0 H5 
974 TMP_431 H6) in (let TMP_433 \def (pr0_refl t0) in (let TMP_434 \def 
975 (pr2_delta c0 e u0 i0 TMP_432 t0 t0 TMP_433 t5 H4) in (let TMP_435 \def 
976 (pc3_pr2_r c0 t0 t5 TMP_434) in (pc3_pr2_u c0 t0 t2 TMP_428 t5 
977 TMP_435))))))))))))))))) in (let TMP_437 \def (TMP_436 H14) in (TMP_437 
978 H13)))))))))))))))))))))))))))) in (ex3_4_ind B C C T TMP_396 TMP_399 TMP_402 
979 TMP_403 TMP_438 H9))))))) in (let TMP_514 \def (\lambda (H9: (ex4_5 B C C T T 
980 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
981 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda 
982 (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl 
983 i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
984 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) 
985 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
986 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))))).(let TMP_444 \def (\lambda 
987 (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let 
988 TMP_440 \def (Bind Abbr) in (let TMP_441 \def (CHead d TMP_440 u) in (let 
989 TMP_442 \def (Bind b) in (let TMP_443 \def (CHead e1 TMP_442 u1) in (eq C 
990 TMP_441 TMP_443)))))))))) in (let TMP_447 \def (\lambda (b: B).(\lambda (_: 
991 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(let TMP_445 \def (Bind 
992 b) in (let TMP_446 \def (CHead e2 TMP_445 w) in (getl i c0 TMP_446)))))))) in 
993 (let TMP_450 \def (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
994 (u1: T).(\lambda (w: T).(let TMP_448 \def (S i) in (let TMP_449 \def (minus 
995 i0 TMP_448) in (subst0 TMP_449 u0 u1 w)))))))) in (let TMP_453 \def (\lambda 
996 (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let 
997 TMP_451 \def (S i) in (let TMP_452 \def (minus i0 TMP_451) in (csubst0 
998 TMP_452 u0 e1 e2)))))))) in (let TMP_454 \def (pc3 c0 t2 t5) in (let TMP_513 
999 \def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: 
1000 T).(\lambda (x4: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 
1001 (Bind x0) x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda 
1002 (H12: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H13: (csubst0 (minus i0 
1003 (S i)) u0 x1 x2)).(let TMP_455 \def (\lambda (e0: C).(match e0 with [(CSort 
1004 _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_456 \def 
1005 (Bind Abbr) in (let TMP_457 \def (CHead d TMP_456 u) in (let TMP_458 \def 
1006 (Bind x0) in (let TMP_459 \def (CHead x1 TMP_458 x3) in (let H14 \def 
1007 (f_equal C C TMP_455 TMP_457 TMP_459 H10) in (let TMP_460 \def (\lambda (e0: 
1008 C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow 
1009 (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in 
1010 (let TMP_461 \def (Bind Abbr) in (let TMP_462 \def (CHead d TMP_461 u) in 
1011 (let TMP_463 \def (Bind x0) in (let TMP_464 \def (CHead x1 TMP_463 x3) in 
1012 (let H15 \def (f_equal C B TMP_460 TMP_462 TMP_464 H10) in (let TMP_465 \def 
1013 (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t6) 
1014 \Rightarrow t6])) in (let TMP_466 \def (Bind Abbr) in (let TMP_467 \def 
1015 (CHead d TMP_466 u) in (let TMP_468 \def (Bind x0) in (let TMP_469 \def 
1016 (CHead x1 TMP_468 x3) in (let H16 \def (f_equal C T TMP_465 TMP_467 TMP_469 
1017 H10) in (let TMP_511 \def (\lambda (H17: (eq B Abbr x0)).(\lambda (H18: (eq C 
1018 d x1)).(let TMP_472 \def (\lambda (t6: T).(let TMP_470 \def (S i) in (let 
1019 TMP_471 \def (minus i0 TMP_470) in (subst0 TMP_471 u0 t6 x4)))) in (let H19 
1020 \def (eq_ind_r T x3 TMP_472 H12 u H16) in (let TMP_475 \def (\lambda (c3: 
1021 C).(let TMP_473 \def (S i) in (let TMP_474 \def (minus i0 TMP_473) in 
1022 (csubst0 TMP_474 u0 c3 x2)))) in (let H20 \def (eq_ind_r C x1 TMP_475 H13 d 
1023 H18) in (let TMP_478 \def (\lambda (b: B).(let TMP_476 \def (Bind b) in (let 
1024 TMP_477 \def (CHead x2 TMP_476 x4) in (getl i c0 TMP_477)))) in (let H21 \def 
1025 (eq_ind_r B x0 TMP_478 H11 Abbr H17) in (let TMP_479 \def (\lambda (t6: 
1026 T).(subst0 i x4 t3 t6)) in (let TMP_484 \def (\lambda (t6: T).(let TMP_480 
1027 \def (S i) in (let TMP_481 \def (minus i0 TMP_480) in (let TMP_482 \def (plus 
1028 TMP_481 i) in (let TMP_483 \def (S TMP_482) in (subst0 TMP_483 u0 t0 t6)))))) 
1029 in (let TMP_485 \def (pc3 c0 t2 t5) in (let TMP_507 \def (\lambda (x: 
1030 T).(\lambda (H22: (subst0 i x4 t3 x)).(\lambda (H23: (subst0 (S (plus (minus 
1031 i0 (S i)) i)) u0 t0 x)).(let TMP_486 \def (S i) in (let TMP_487 \def (minus 
1032 i0 TMP_486) in (let TMP_488 \def (plus TMP_487 i) in (let TMP_489 \def (S 
1033 TMP_488) in (let TMP_490 \def (\lambda (n: nat).(subst0 n u0 t0 x)) in (let 
1034 TMP_491 \def (lt_plus_minus_r i i0 H7) in (let H24 \def (eq_ind_r nat TMP_489 
1035 TMP_490 H23 i0 TMP_491) in (let TMP_492 \def (pr2_delta c0 x2 x4 i H21 t2 t3 
1036 H1 x H22) in (let TMP_493 \def (le_n i0) in (let TMP_494 \def (Bind Abbr) in 
1037 (let TMP_495 \def (CHead e TMP_494 u0) in (let TMP_496 \def (csubst0_getl_ge 
1038 i0 i0 TMP_493 c c0 u0 H5 TMP_495 H6) in (let TMP_497 \def (pr0_refl t0) in 
1039 (let TMP_498 \def (pr2_delta c0 e u0 i0 TMP_496 t0 t0 TMP_497 x H24) in (let 
1040 TMP_499 \def (le_n i0) in (let TMP_500 \def (Bind Abbr) in (let TMP_501 \def 
1041 (CHead e TMP_500 u0) in (let TMP_502 \def (csubst0_getl_ge i0 i0 TMP_499 c c0 
1042 u0 H5 TMP_501 H6) in (let TMP_503 \def (pr0_refl t0) in (let TMP_504 \def 
1043 (pr2_delta c0 e u0 i0 TMP_502 t0 t0 TMP_503 t5 H4) in (let TMP_505 \def 
1044 (pc3_pr2_r c0 t0 t5 TMP_504) in (let TMP_506 \def (pc3_pr2_u2 c0 t0 x TMP_498 
1045 t5 TMP_505) in (pc3_pr2_u c0 x t2 TMP_492 t5 
1046 TMP_506)))))))))))))))))))))))))) in (let TMP_508 \def (S i) in (let TMP_509 
1047 \def (minus i0 TMP_508) in (let TMP_510 \def (subst0_subst0_back t3 t0 u i H2 
1048 x4 u0 TMP_509 H19) in (ex2_ind T TMP_479 TMP_484 TMP_485 TMP_507 
1049 TMP_510)))))))))))))))) in (let TMP_512 \def (TMP_511 H15) in (TMP_512 
1050 H14)))))))))))))))))))))))))))))) in (ex4_5_ind B C C T T TMP_444 TMP_447 
1051 TMP_450 TMP_453 TMP_454 TMP_513 H9)))))))) in (or4_ind TMP_266 TMP_278 
1052 TMP_290 TMP_305 TMP_306 TMP_319 TMP_391 TMP_439 TMP_514 
1053 H8)))))))))))))))))))))))))) in (let TMP_527 \def (\lambda (H7: (le i0 
1054 i)).(let TMP_516 \def (Bind Abbr) in (let TMP_517 \def (CHead d TMP_516 u) in 
1055 (let TMP_518 \def (csubst0_getl_ge i0 i H7 c c0 u0 H5 TMP_517 H0) in (let 
1056 TMP_519 \def (pr2_delta c0 d u i TMP_518 t2 t3 H1 t0 H2) in (let TMP_520 \def 
1057 (le_n i0) in (let TMP_521 \def (Bind Abbr) in (let TMP_522 \def (CHead e 
1058 TMP_521 u0) in (let TMP_523 \def (csubst0_getl_ge i0 i0 TMP_520 c c0 u0 H5 
1059 TMP_522 H6) in (let TMP_524 \def (pr0_refl t0) in (let TMP_525 \def 
1060 (pr2_delta c0 e u0 i0 TMP_523 t0 t0 TMP_524 t5 H4) in (let TMP_526 \def 
1061 (pc3_pr2_r c0 t0 t5 TMP_525) in (pc3_pr2_u c0 t0 t2 TMP_519 t5 
1062 TMP_526))))))))))))) in (lt_le_e i i0 TMP_261 TMP_515 TMP_527)))))))))) in 
1063 (fsubst0_ind i0 u0 c t0 TMP_20 TMP_31 TMP_260 TMP_528 c2 t4 
1064 H3)))))))))))))))))))) in (pr2_ind TMP_1 TMP_19 TMP_529 c1 t t1 H))))))).
1065
1066 theorem pc3_fsubst0:
1067  \forall (c1: C).(\forall (t1: T).(\forall (t: T).((pc3 c1 t1 t) \to (\forall 
1068 (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t2: T).((fsubst0 i u c1 
1069 t1 c2 t2) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 
1070 c2 t2 t)))))))))))
1071 \def
1072  \lambda (c1: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: (pc3 c1 t1 
1073 t)).(let TMP_1 \def (\lambda (t0: T).(\lambda (t2: T).(\forall (i: 
1074 nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: T).((fsubst0 i u c1 t0 c2 
1075 t3) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c2 t3 
1076 t2)))))))))) in (let TMP_14 \def (\lambda (t0: T).(\lambda (i: nat).(\lambda 
1077 (u: T).(\lambda (c2: C).(\lambda (t2: T).(\lambda (H0: (fsubst0 i u c1 t0 c2 
1078 t2)).(let TMP_2 \def (\lambda (c: C).(\lambda (t3: T).(\forall (e: C).((getl 
1079 i c1 (CHead e (Bind Abbr) u)) \to (pc3 c t3 t0))))) in (let TMP_5 \def 
1080 (\lambda (t3: T).(\lambda (H1: (subst0 i u t0 t3)).(\lambda (e: C).(\lambda 
1081 (H2: (getl i c1 (CHead e (Bind Abbr) u))).(let TMP_3 \def (pr0_refl t0) in 
1082 (let TMP_4 \def (pr2_delta c1 e u i H2 t0 t0 TMP_3 t3 H1) in (pc3_pr2_x c1 t3 
1083 t0 TMP_4))))))) in (let TMP_6 \def (\lambda (c0: C).(\lambda (_: (csubst0 i u 
1084 c1 c0)).(\lambda (e: C).(\lambda (_: (getl i c1 (CHead e (Bind Abbr) 
1085 u))).(pc3_refl c0 t0))))) in (let TMP_13 \def (\lambda (t3: T).(\lambda (H1: 
1086 (subst0 i u t0 t3)).(\lambda (c0: C).(\lambda (H2: (csubst0 i u c1 
1087 c0)).(\lambda (e: C).(\lambda (H3: (getl i c1 (CHead e (Bind Abbr) u))).(let 
1088 TMP_7 \def (le_n i) in (let TMP_8 \def (Bind Abbr) in (let TMP_9 \def (CHead 
1089 e TMP_8 u) in (let TMP_10 \def (csubst0_getl_ge i i TMP_7 c1 c0 u H2 TMP_9 
1090 H3) in (let TMP_11 \def (pr0_refl t0) in (let TMP_12 \def (pr2_delta c0 e u i 
1091 TMP_10 t0 t0 TMP_11 t3 H1) in (pc3_pr2_x c0 t3 t0 TMP_12))))))))))))) in 
1092 (fsubst0_ind i u c1 t0 TMP_2 TMP_5 TMP_6 TMP_13 c2 t2 H0))))))))))) in (let 
1093 TMP_29 \def (\lambda (t0: T).(\lambda (t2: T).(\lambda (H0: (pr2 c1 t0 
1094 t2)).(\lambda (t3: T).(\lambda (H1: (pc3 c1 t2 t3)).(\lambda (H2: ((\forall 
1095 (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t4: T).((fsubst0 i u c1 
1096 t2 c2 t4) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 
1097 c2 t4 t3)))))))))).(\lambda (i: nat).(\lambda (u: T).(\lambda (c2: 
1098 C).(\lambda (t4: T).(\lambda (H3: (fsubst0 i u c1 t0 c2 t4)).(let TMP_15 \def 
1099 (\lambda (c: C).(\lambda (t5: T).(\forall (e: C).((getl i c1 (CHead e (Bind 
1100 Abbr) u)) \to (pc3 c t5 t3))))) in (let TMP_18 \def (\lambda (t5: T).(\lambda 
1101 (H4: (subst0 i u t0 t5)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e 
1102 (Bind Abbr) u))).(let TMP_16 \def (fsubst0_snd i u c1 t0 t5 H4) in (let 
1103 TMP_17 \def (pc3_pr2_fsubst0 c1 t0 t2 H0 i u c1 t5 TMP_16 e H5) in (pc3_t t2 
1104 c1 t5 TMP_17 t3 H1))))))) in (let TMP_23 \def (\lambda (c0: C).(\lambda (H4: 
1105 (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e (Bind 
1106 Abbr) u))).(let TMP_19 \def (fsubst0_fst i u c1 t0 c0 H4) in (let TMP_20 \def 
1107 (pc3_pr2_fsubst0 c1 t0 t2 H0 i u c0 t0 TMP_19 e H5) in (let TMP_21 \def 
1108 (fsubst0_fst i u c1 t2 c0 H4) in (let TMP_22 \def (H2 i u c0 t2 TMP_21 e H5) 
1109 in (pc3_t t2 c0 t0 TMP_20 t3 TMP_22))))))))) in (let TMP_28 \def (\lambda 
1110 (t5: T).(\lambda (H4: (subst0 i u t0 t5)).(\lambda (c0: C).(\lambda (H5: 
1111 (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H6: (getl i c1 (CHead e (Bind 
1112 Abbr) u))).(let TMP_24 \def (fsubst0_both i u c1 t0 t5 H4 c0 H5) in (let 
1113 TMP_25 \def (pc3_pr2_fsubst0 c1 t0 t2 H0 i u c0 t5 TMP_24 e H6) in (let 
1114 TMP_26 \def (fsubst0_fst i u c1 t2 c0 H5) in (let TMP_27 \def (H2 i u c0 t2 
1115 TMP_26 e H6) in (pc3_t t2 c0 t5 TMP_25 t3 TMP_27))))))))))) in (fsubst0_ind i 
1116 u c1 t0 TMP_15 TMP_18 TMP_23 TMP_28 c2 t4 H3)))))))))))))))) in (let TMP_47 
1117 \def (\lambda (t0: T).(\lambda (t2: T).(\lambda (H0: (pr2 c1 t0 t2)).(\lambda 
1118 (t3: T).(\lambda (H1: (pc3 c1 t0 t3)).(\lambda (H2: ((\forall (i: 
1119 nat).(\forall (u: T).(\forall (c2: C).(\forall (t4: T).((fsubst0 i u c1 t0 c2 
1120 t4) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c2 t4 
1121 t3)))))))))).(\lambda (i: nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t4: 
1122 T).(\lambda (H3: (fsubst0 i u c1 t2 c2 t4)).(let TMP_30 \def (\lambda (c: 
1123 C).(\lambda (t5: T).(\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to 
1124 (pc3 c t5 t3))))) in (let TMP_34 \def (\lambda (t5: T).(\lambda (H4: (subst0 
1125 i u t2 t5)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e (Bind Abbr) 
1126 u))).(let TMP_31 \def (fsubst0_snd i u c1 t2 t5 H4) in (let TMP_32 \def 
1127 (pc3_pr2_fsubst0_back c1 t0 t2 H0 i u c1 t5 TMP_31 e H5) in (let TMP_33 \def 
1128 (pc3_s c1 t5 t0 TMP_32) in (pc3_t t0 c1 t5 TMP_33 t3 H1)))))))) in (let 
1129 TMP_40 \def (\lambda (c0: C).(\lambda (H4: (csubst0 i u c1 c0)).(\lambda (e: 
1130 C).(\lambda (H5: (getl i c1 (CHead e (Bind Abbr) u))).(let TMP_35 \def 
1131 (fsubst0_fst i u c1 t2 c0 H4) in (let TMP_36 \def (pc3_pr2_fsubst0_back c1 t0 
1132 t2 H0 i u c0 t2 TMP_35 e H5) in (let TMP_37 \def (pc3_s c0 t2 t0 TMP_36) in 
1133 (let TMP_38 \def (fsubst0_fst i u c1 t0 c0 H4) in (let TMP_39 \def (H2 i u c0 
1134 t0 TMP_38 e H5) in (pc3_t t0 c0 t2 TMP_37 t3 TMP_39)))))))))) in (let TMP_46 
1135 \def (\lambda (t5: T).(\lambda (H4: (subst0 i u t2 t5)).(\lambda (c0: 
1136 C).(\lambda (H5: (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H6: (getl i 
1137 c1 (CHead e (Bind Abbr) u))).(let TMP_41 \def (fsubst0_both i u c1 t2 t5 H4 
1138 c0 H5) in (let TMP_42 \def (pc3_pr2_fsubst0_back c1 t0 t2 H0 i u c0 t5 TMP_41 
1139 e H6) in (let TMP_43 \def (pc3_s c0 t5 t0 TMP_42) in (let TMP_44 \def 
1140 (fsubst0_fst i u c1 t0 c0 H5) in (let TMP_45 \def (H2 i u c0 t0 TMP_44 e H6) 
1141 in (pc3_t t0 c0 t5 TMP_43 t3 TMP_45)))))))))))) in (fsubst0_ind i u c1 t2 
1142 TMP_30 TMP_34 TMP_40 TMP_46 c2 t4 H3)))))))))))))))) in (pc3_ind_left c1 
1143 TMP_1 TMP_14 TMP_29 TMP_47 t1 t H)))))))).
1144