]> matita.cs.unibo.it Git - helm.git/blob - matita/contribs/LAMBDA-TYPES/Level-1/LambdaDelta.ma
Generation of inductive and inversion principles for mutual
[helm.git] / matita / contribs / LAMBDA-TYPES / Level-1 / LambdaDelta.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 set "baseuri" "cic:/matita/LAMBDA-TYPES/Level-1/LambdaDelta".
18
19 include "LambdaDelta/theory.ma".
20
21 definition wadd:
22  ((nat \to nat)) \to (nat \to (nat \to nat))
23 \def
24  \lambda (f: ((nat \to nat))).(\lambda (w: nat).(\lambda (n: nat).(match n 
25 with [O \Rightarrow w | (S m) \Rightarrow (f m)]))).
26
27 definition weight_map:
28  ((nat \to nat)) \to (T \to nat)
29 \def
30  let rec weight_map (f: ((nat \to nat))) (t: T) on t: nat \def (match t with 
31 [(TSort _) \Rightarrow O | (TLRef n) \Rightarrow (f n) | (THead k u t0) 
32 \Rightarrow (match k with [(Bind b) \Rightarrow (match b with [Abbr 
33 \Rightarrow (S (plus (weight_map f u) (weight_map (wadd f (S (weight_map f 
34 u))) t0))) | Abst \Rightarrow (S (plus (weight_map f u) (weight_map (wadd f 
35 O) t0))) | Void \Rightarrow (S (plus (weight_map f u) (weight_map (wadd f O) 
36 t0)))]) | (Flat _) \Rightarrow (S (plus (weight_map f u) (weight_map f 
37 t0)))])]) in weight_map.
38
39 definition weight:
40  T \to nat
41 \def
42  weight_map (\lambda (_: nat).O).
43
44 definition tlt:
45  T \to (T \to Prop)
46 \def
47  \lambda (t1: T).(\lambda (t2: T).(lt (weight t1) (weight t2))).
48
49 theorem wadd_le:
50  \forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (n: 
51 nat).(le (f n) (g n)))) \to (\forall (v: nat).(\forall (w: nat).((le v w) \to 
52 (\forall (n: nat).(le (wadd f v n) (wadd g w n))))))))
53 \def
54  \lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H: 
55 ((\forall (n: nat).(le (f n) (g n))))).(\lambda (v: nat).(\lambda (w: 
56 nat).(\lambda (H0: (le v w)).(\lambda (n: nat).(nat_ind (\lambda (n0: 
57 nat).(le (wadd f v n0) (wadd g w n0))) H0 (\lambda (n0: nat).(\lambda (_: (le 
58 (wadd f v n0) (wadd g w n0))).(H n0))) n))))))).
59
60 theorem wadd_lt:
61  \forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (n: 
62 nat).(le (f n) (g n)))) \to (\forall (v: nat).(\forall (w: nat).((lt v w) \to 
63 (\forall (n: nat).(le (wadd f v n) (wadd g w n))))))))
64 \def
65  \lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H: 
66 ((\forall (n: nat).(le (f n) (g n))))).(\lambda (v: nat).(\lambda (w: 
67 nat).(\lambda (H0: (lt v w)).(\lambda (n: nat).(nat_ind (\lambda (n0: 
68 nat).(le (wadd f v n0) (wadd g w n0))) (le_S_n v w (le_S (S v) w H0)) 
69 (\lambda (n0: nat).(\lambda (_: (le (wadd f v n0) (wadd g w n0))).(H n0))) 
70 n))))))).
71
72 theorem wadd_O:
73  \forall (n: nat).(eq nat (wadd (\lambda (_: nat).O) O n) O)
74 \def
75  \lambda (n: nat).(nat_ind (\lambda (n0: nat).(eq nat (wadd (\lambda (_: 
76 nat).O) O n0) O)) (refl_equal nat O) (\lambda (n0: nat).(\lambda (_: (eq nat 
77 (wadd (\lambda (_: nat).O) O n0) O)).(refl_equal nat O))) n).
78
79 theorem weight_le:
80  \forall (t: T).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
81 nat))).(((\forall (n: nat).(le (f n) (g n)))) \to (le (weight_map f t) 
82 (weight_map g t)))))
83 \def
84  \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (f: ((nat \to 
85 nat))).(\forall (g: ((nat \to nat))).(((\forall (n: nat).(le (f n) (g n)))) 
86 \to (le (weight_map f t0) (weight_map g t0)))))) (\lambda (n: nat).(\lambda 
87 (f: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (_: ((\forall (n: 
88 nat).(le (f n) (g n))))).(le_n (weight_map g (TSort n))))))) (\lambda (n: 
89 nat).(\lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H: 
90 ((\forall (n: nat).(le (f n) (g n))))).(H n))))) (\lambda (k: K).(K_ind 
91 (\lambda (k0: K).(\forall (t0: T).(((\forall (f: ((nat \to nat))).(\forall 
92 (g: ((nat \to nat))).(((\forall (n: nat).(le (f n) (g n)))) \to (le 
93 (weight_map f t0) (weight_map g t0)))))) \to (\forall (t1: T).(((\forall (f: 
94 ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (n: nat).(le (f n) 
95 (g n)))) \to (le (weight_map f t1) (weight_map g t1)))))) \to (\forall (f: 
96 ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (n: nat).(le (f n) 
97 (g n)))) \to (le (weight_map f (THead k0 t0 t1)) (weight_map g (THead k0 t0 
98 t1))))))))))) (\lambda (b: B).(B_ind (\lambda (b0: B).(\forall (t0: 
99 T).(((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall 
100 (n: nat).(le (f n) (g n)))) \to (le (weight_map f t0) (weight_map g t0)))))) 
101 \to (\forall (t1: T).(((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
102 nat))).(((\forall (n: nat).(le (f n) (g n)))) \to (le (weight_map f t1) 
103 (weight_map g t1)))))) \to (\forall (f: ((nat \to nat))).(\forall (g: ((nat 
104 \to nat))).(((\forall (n: nat).(le (f n) (g n)))) \to (le (match b0 with 
105 [Abbr \Rightarrow (S (plus (weight_map f t0) (weight_map (wadd f (S 
106 (weight_map f t0))) t1))) | Abst \Rightarrow (S (plus (weight_map f t0) 
107 (weight_map (wadd f O) t1))) | Void \Rightarrow (S (plus (weight_map f t0) 
108 (weight_map (wadd f O) t1)))]) (match b0 with [Abbr \Rightarrow (S (plus 
109 (weight_map g t0) (weight_map (wadd g (S (weight_map g t0))) t1))) | Abst 
110 \Rightarrow (S (plus (weight_map g t0) (weight_map (wadd g O) t1))) | Void 
111 \Rightarrow (S (plus (weight_map g t0) (weight_map (wadd g O) 
112 t1)))])))))))))) (\lambda (t0: T).(\lambda (H: ((\forall (f: ((nat \to 
113 nat))).(\forall (g: ((nat \to nat))).(((\forall (n: nat).(le (f n) (g n)))) 
114 \to (le (weight_map f t0) (weight_map g t0))))))).(\lambda (t1: T).(\lambda 
115 (H0: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall 
116 (n: nat).(le (f n) (g n)))) \to (le (weight_map f t1) (weight_map g 
117 t1))))))).(\lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to 
118 nat))).(\lambda (H1: ((\forall (n: nat).(le (f n) (g n))))).(le_n_S (plus 
119 (weight_map f t0) (weight_map (wadd f (S (weight_map f t0))) t1)) (plus 
120 (weight_map g t0) (weight_map (wadd g (S (weight_map g t0))) t1)) 
121 (plus_le_compat (weight_map f t0) (weight_map g t0) (weight_map (wadd f (S 
122 (weight_map f t0))) t1) (weight_map (wadd g (S (weight_map g t0))) t1) (H f g 
123 H1) (H0 (wadd f (S (weight_map f t0))) (wadd g (S (weight_map g t0))) 
124 (\lambda (n: nat).(wadd_le f g H1 (S (weight_map f t0)) (S (weight_map g t0)) 
125 (le_n_S (weight_map f t0) (weight_map g t0) (H f g H1)) n)))))))))))) 
126 (\lambda (t0: T).(\lambda (H: ((\forall (f: ((nat \to nat))).(\forall (g: 
127 ((nat \to nat))).(((\forall (n: nat).(le (f n) (g n)))) \to (le (weight_map f 
128 t0) (weight_map g t0))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (f: 
129 ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (n: nat).(le (f n) 
130 (g n)))) \to (le (weight_map f t1) (weight_map g t1))))))).(\lambda (f: ((nat 
131 \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H1: ((\forall (n: nat).(le 
132 (f n) (g n))))).(le_S_n (S (plus (weight_map f t0) (weight_map (wadd f O) 
133 t1))) (S (plus (weight_map g t0) (weight_map (wadd g O) t1))) (le_n_S (S 
134 (plus (weight_map f t0) (weight_map (wadd f O) t1))) (S (plus (weight_map g 
135 t0) (weight_map (wadd g O) t1))) (le_n_S (plus (weight_map f t0) (weight_map 
136 (wadd f O) t1)) (plus (weight_map g t0) (weight_map (wadd g O) t1)) 
137 (plus_le_compat (weight_map f t0) (weight_map g t0) (weight_map (wadd f O) 
138 t1) (weight_map (wadd g O) t1) (H f g H1) (H0 (wadd f O) (wadd g O) (\lambda 
139 (n: nat).(wadd_le f g H1 O O (le_n O) n)))))))))))))) (\lambda (t0: 
140 T).(\lambda (H: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
141 nat))).(((\forall (n: nat).(le (f n) (g n)))) \to (le (weight_map f t0) 
142 (weight_map g t0))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (f: ((nat 
143 \to nat))).(\forall (g: ((nat \to nat))).(((\forall (n: nat).(le (f n) (g 
144 n)))) \to (le (weight_map f t1) (weight_map g t1))))))).(\lambda (f: ((nat 
145 \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H1: ((\forall (n: nat).(le 
146 (f n) (g n))))).(le_S_n (S (plus (weight_map f t0) (weight_map (wadd f O) 
147 t1))) (S (plus (weight_map g t0) (weight_map (wadd g O) t1))) (le_n_S (S 
148 (plus (weight_map f t0) (weight_map (wadd f O) t1))) (S (plus (weight_map g 
149 t0) (weight_map (wadd g O) t1))) (le_n_S (plus (weight_map f t0) (weight_map 
150 (wadd f O) t1)) (plus (weight_map g t0) (weight_map (wadd g O) t1)) 
151 (plus_le_compat (weight_map f t0) (weight_map g t0) (weight_map (wadd f O) 
152 t1) (weight_map (wadd g O) t1) (H f g H1) (H0 (wadd f O) (wadd g O) (\lambda 
153 (n: nat).(wadd_le f g H1 O O (le_n O) n)))))))))))))) b)) (\lambda (_: 
154 F).(\lambda (t0: T).(\lambda (H: ((\forall (f: ((nat \to nat))).(\forall (g: 
155 ((nat \to nat))).(((\forall (n: nat).(le (f n) (g n)))) \to (le (weight_map f 
156 t0) (weight_map g t0))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (f: 
157 ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (n: nat).(le (f n) 
158 (g n)))) \to (le (weight_map f t1) (weight_map g t1))))))).(\lambda (f0: 
159 ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H1: ((\forall (n: 
160 nat).(le (f0 n) (g n))))).(lt_le_S (plus (weight_map f0 t0) (weight_map f0 
161 t1)) (S (plus (weight_map g t0) (weight_map g t1))) (le_lt_n_Sm (plus 
162 (weight_map f0 t0) (weight_map f0 t1)) (plus (weight_map g t0) (weight_map g 
163 t1)) (plus_le_compat (weight_map f0 t0) (weight_map g t0) (weight_map f0 t1) 
164 (weight_map g t1) (H f0 g H1) (H0 f0 g H1)))))))))))) k)) t).
165
166 theorem weight_eq:
167  \forall (t: T).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
168 nat))).(((\forall (n: nat).(eq nat (f n) (g n)))) \to (eq nat (weight_map f 
169 t) (weight_map g t)))))
170 \def
171  \lambda (t: T).(\lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to 
172 nat))).(\lambda (H: ((\forall (n: nat).(eq nat (f n) (g n))))).(le_antisym 
173 (weight_map f t) (weight_map g t) (weight_le t f g (\lambda (n: 
174 nat).(eq_ind_r nat (g n) (\lambda (n0: nat).(le n0 (g n))) (le_n (g n)) (f n) 
175 (H n)))) (weight_le t g f (\lambda (n: nat).(eq_ind_r nat (g n) (\lambda (n0: 
176 nat).(le (g n) n0)) (le_n (g n)) (f n) (H n)))))))).
177
178 theorem weight_add_O:
179  \forall (t: T).(eq nat (weight_map (wadd (\lambda (_: nat).O) O) t) 
180 (weight_map (\lambda (_: nat).O) t))
181 \def
182  \lambda (t: T).(weight_eq t (wadd (\lambda (_: nat).O) O) (\lambda (_: 
183 nat).O) (\lambda (n: nat).(wadd_O n))).
184
185 theorem weight_add_S:
186  \forall (t: T).(\forall (m: nat).(le (weight_map (wadd (\lambda (_: nat).O) 
187 O) t) (weight_map (wadd (\lambda (_: nat).O) (S m)) t)))
188 \def
189  \lambda (t: T).(\lambda (m: nat).(weight_le t (wadd (\lambda (_: nat).O) O) 
190 (wadd (\lambda (_: nat).O) (S m)) (\lambda (n: nat).(le_S_n (wadd (\lambda 
191 (_: nat).O) O n) (wadd (\lambda (_: nat).O) (S m) n) (le_n_S (wadd (\lambda 
192 (_: nat).O) O n) (wadd (\lambda (_: nat).O) (S m) n) (wadd_le (\lambda (_: 
193 nat).O) (\lambda (_: nat).O) (\lambda (_: nat).(le_n O)) O (S m) (le_O_n (S 
194 m)) n)))))).
195
196 theorem tlt_trans:
197  \forall (v: T).(\forall (u: T).(\forall (t: T).((tlt u v) \to ((tlt v t) \to 
198 (tlt u t)))))
199 \def
200  \lambda (v: T).(\lambda (u: T).(\lambda (t: T).(\lambda (H: (lt (weight u) 
201 (weight v))).(\lambda (H0: (lt (weight v) (weight t))).(lt_trans (weight u) 
202 (weight v) (weight t) H H0))))).
203
204 theorem tlt_head_sx:
205  \forall (k: K).(\forall (u: T).(\forall (t: T).(tlt u (THead k u t))))
206 \def
207  \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (u: T).(\forall (t: T).(lt 
208 (weight_map (\lambda (_: nat).O) u) (weight_map (\lambda (_: nat).O) (THead 
209 k0 u t)))))) (\lambda (b: B).(B_ind (\lambda (b0: B).(\forall (u: T).(\forall 
210 (t: T).(lt (weight_map (\lambda (_: nat).O) u) (match b0 with [Abbr 
211 \Rightarrow (S (plus (weight_map (\lambda (_: nat).O) u) (weight_map (wadd 
212 (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) u))) t))) | Abst 
213 \Rightarrow (S (plus (weight_map (\lambda (_: nat).O) u) (weight_map (wadd 
214 (\lambda (_: nat).O) O) t))) | Void \Rightarrow (S (plus (weight_map (\lambda 
215 (_: nat).O) u) (weight_map (wadd (\lambda (_: nat).O) O) t)))]))))) (\lambda 
216 (u: T).(\lambda (t: T).(le_S_n (S (weight_map (\lambda (_: nat).O) u)) (S 
217 (plus (weight_map (\lambda (_: nat).O) u) (weight_map (wadd (\lambda (_: 
218 nat).O) (S (weight_map (\lambda (_: nat).O) u))) t))) (le_n_S (S (weight_map 
219 (\lambda (_: nat).O) u)) (S (plus (weight_map (\lambda (_: nat).O) u) 
220 (weight_map (wadd (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) 
221 u))) t))) (le_n_S (weight_map (\lambda (_: nat).O) u) (plus (weight_map 
222 (\lambda (_: nat).O) u) (weight_map (wadd (\lambda (_: nat).O) (S (weight_map 
223 (\lambda (_: nat).O) u))) t)) (le_plus_l (weight_map (\lambda (_: nat).O) u) 
224 (weight_map (wadd (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) 
225 u))) t))))))) (\lambda (u: T).(\lambda (t: T).(le_S_n (S (weight_map (\lambda 
226 (_: nat).O) u)) (S (plus (weight_map (\lambda (_: nat).O) u) (weight_map 
227 (wadd (\lambda (_: nat).O) O) t))) (le_n_S (S (weight_map (\lambda (_: 
228 nat).O) u)) (S (plus (weight_map (\lambda (_: nat).O) u) (weight_map (wadd 
229 (\lambda (_: nat).O) O) t))) (le_n_S (weight_map (\lambda (_: nat).O) u) 
230 (plus (weight_map (\lambda (_: nat).O) u) (weight_map (wadd (\lambda (_: 
231 nat).O) O) t)) (le_plus_l (weight_map (\lambda (_: nat).O) u) (weight_map 
232 (wadd (\lambda (_: nat).O) O) t))))))) (\lambda (u: T).(\lambda (t: 
233 T).(le_S_n (S (weight_map (\lambda (_: nat).O) u)) (S (plus (weight_map 
234 (\lambda (_: nat).O) u) (weight_map (wadd (\lambda (_: nat).O) O) t))) 
235 (le_n_S (S (weight_map (\lambda (_: nat).O) u)) (S (plus (weight_map (\lambda 
236 (_: nat).O) u) (weight_map (wadd (\lambda (_: nat).O) O) t))) (le_n_S 
237 (weight_map (\lambda (_: nat).O) u) (plus (weight_map (\lambda (_: nat).O) u) 
238 (weight_map (wadd (\lambda (_: nat).O) O) t)) (le_plus_l (weight_map (\lambda 
239 (_: nat).O) u) (weight_map (wadd (\lambda (_: nat).O) O) t))))))) b)) 
240 (\lambda (_: F).(\lambda (u: T).(\lambda (t: T).(le_S_n (S (weight_map 
241 (\lambda (_: nat).O) u)) (S (plus (weight_map (\lambda (_: nat).O) u) 
242 (weight_map (\lambda (_: nat).O) t))) (le_n_S (S (weight_map (\lambda (_: 
243 nat).O) u)) (S (plus (weight_map (\lambda (_: nat).O) u) (weight_map (\lambda 
244 (_: nat).O) t))) (le_n_S (weight_map (\lambda (_: nat).O) u) (plus 
245 (weight_map (\lambda (_: nat).O) u) (weight_map (\lambda (_: nat).O) t)) 
246 (le_plus_l (weight_map (\lambda (_: nat).O) u) (weight_map (\lambda (_: 
247 nat).O) t)))))))) k).
248
249 theorem tlt_head_dx:
250  \forall (k: K).(\forall (u: T).(\forall (t: T).(tlt t (THead k u t))))
251 \def
252  \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (u: T).(\forall (t: T).(lt 
253 (weight_map (\lambda (_: nat).O) t) (weight_map (\lambda (_: nat).O) (THead 
254 k0 u t)))))) (\lambda (b: B).(B_ind (\lambda (b0: B).(\forall (u: T).(\forall 
255 (t: T).(lt (weight_map (\lambda (_: nat).O) t) (match b0 with [Abbr 
256 \Rightarrow (S (plus (weight_map (\lambda (_: nat).O) u) (weight_map (wadd 
257 (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) u))) t))) | Abst 
258 \Rightarrow (S (plus (weight_map (\lambda (_: nat).O) u) (weight_map (wadd 
259 (\lambda (_: nat).O) O) t))) | Void \Rightarrow (S (plus (weight_map (\lambda 
260 (_: nat).O) u) (weight_map (wadd (\lambda (_: nat).O) O) t)))]))))) (\lambda 
261 (u: T).(\lambda (t: T).(lt_le_trans (weight_map (\lambda (_: nat).O) t) (S 
262 (weight_map (\lambda (_: nat).O) t)) (S (plus (weight_map (\lambda (_: 
263 nat).O) u) (weight_map (wadd (\lambda (_: nat).O) (S (weight_map (\lambda (_: 
264 nat).O) u))) t))) (lt_n_Sn (weight_map (\lambda (_: nat).O) t)) (le_n_S 
265 (weight_map (\lambda (_: nat).O) t) (plus (weight_map (\lambda (_: nat).O) u) 
266 (weight_map (wadd (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) 
267 u))) t)) (le_trans (weight_map (\lambda (_: nat).O) t) (weight_map (wadd 
268 (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) u))) t) (plus 
269 (weight_map (\lambda (_: nat).O) u) (weight_map (wadd (\lambda (_: nat).O) (S 
270 (weight_map (\lambda (_: nat).O) u))) t)) (eq_ind nat (weight_map (wadd 
271 (\lambda (_: nat).O) O) t) (\lambda (n: nat).(le n (weight_map (wadd (\lambda 
272 (_: nat).O) (S (weight_map (\lambda (_: nat).O) u))) t))) (weight_add_S t 
273 (weight_map (\lambda (_: nat).O) u)) (weight_map (\lambda (_: nat).O) t) 
274 (weight_add_O t)) (le_plus_r (weight_map (\lambda (_: nat).O) u) (weight_map 
275 (wadd (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) u))) t))))))) 
276 (\lambda (u: T).(\lambda (t: T).(eq_ind_r nat (weight_map (\lambda (_: 
277 nat).O) t) (\lambda (n: nat).(lt (weight_map (\lambda (_: nat).O) t) (S (plus 
278 (weight_map (\lambda (_: nat).O) u) n)))) (le_S_n (S (weight_map (\lambda (_: 
279 nat).O) t)) (S (plus (weight_map (\lambda (_: nat).O) u) (weight_map (\lambda 
280 (_: nat).O) t))) (le_n_S (S (weight_map (\lambda (_: nat).O) t)) (S (plus 
281 (weight_map (\lambda (_: nat).O) u) (weight_map (\lambda (_: nat).O) t))) 
282 (le_n_S (weight_map (\lambda (_: nat).O) t) (plus (weight_map (\lambda (_: 
283 nat).O) u) (weight_map (\lambda (_: nat).O) t)) (le_plus_r (weight_map 
284 (\lambda (_: nat).O) u) (weight_map (\lambda (_: nat).O) t))))) (weight_map 
285 (wadd (\lambda (_: nat).O) O) t) (weight_add_O t)))) (\lambda (u: T).(\lambda 
286 (t: T).(eq_ind_r nat (weight_map (\lambda (_: nat).O) t) (\lambda (n: 
287 nat).(lt (weight_map (\lambda (_: nat).O) t) (S (plus (weight_map (\lambda 
288 (_: nat).O) u) n)))) (le_S_n (S (weight_map (\lambda (_: nat).O) t)) (S (plus 
289 (weight_map (\lambda (_: nat).O) u) (weight_map (\lambda (_: nat).O) t))) 
290 (le_n_S (S (weight_map (\lambda (_: nat).O) t)) (S (plus (weight_map (\lambda 
291 (_: nat).O) u) (weight_map (\lambda (_: nat).O) t))) (le_n_S (weight_map 
292 (\lambda (_: nat).O) t) (plus (weight_map (\lambda (_: nat).O) u) (weight_map 
293 (\lambda (_: nat).O) t)) (le_plus_r (weight_map (\lambda (_: nat).O) u) 
294 (weight_map (\lambda (_: nat).O) t))))) (weight_map (wadd (\lambda (_: 
295 nat).O) O) t) (weight_add_O t)))) b)) (\lambda (_: F).(\lambda (u: 
296 T).(\lambda (t: T).(le_S_n (S (weight_map (\lambda (_: nat).O) t)) (S (plus 
297 (weight_map (\lambda (_: nat).O) u) (weight_map (\lambda (_: nat).O) t))) 
298 (le_n_S (S (weight_map (\lambda (_: nat).O) t)) (S (plus (weight_map (\lambda 
299 (_: nat).O) u) (weight_map (\lambda (_: nat).O) t))) (le_n_S (weight_map 
300 (\lambda (_: nat).O) t) (plus (weight_map (\lambda (_: nat).O) u) (weight_map 
301 (\lambda (_: nat).O) t)) (le_plus_r (weight_map (\lambda (_: nat).O) u) 
302 (weight_map (\lambda (_: nat).O) t)))))))) k).
303
304 theorem tlt_wf__q_ind:
305  \forall (P: ((T \to Prop))).(((\forall (n: nat).((\lambda (P: ((T \to 
306 Prop))).(\lambda (n0: nat).(\forall (t: T).((eq nat (weight t) n0) \to (P 
307 t))))) P n))) \to (\forall (t: T).(P t)))
308 \def
309  let Q \def (\lambda (P: ((T \to Prop))).(\lambda (n: nat).(\forall (t: 
310 T).((eq nat (weight t) n) \to (P t))))) in (\lambda (P: ((T \to 
311 Prop))).(\lambda (H: ((\forall (n: nat).(\forall (t: T).((eq nat (weight t) 
312 n) \to (P t)))))).(\lambda (t: T).(H (weight t) t (refl_equal nat (weight 
313 t)))))).
314
315 theorem tlt_wf_ind:
316  \forall (P: ((T \to Prop))).(((\forall (t: T).(((\forall (v: T).((tlt v t) 
317 \to (P v)))) \to (P t)))) \to (\forall (t: T).(P t)))
318 \def
319  let Q \def (\lambda (P: ((T \to Prop))).(\lambda (n: nat).(\forall (t: 
320 T).((eq nat (weight t) n) \to (P t))))) in (\lambda (P: ((T \to 
321 Prop))).(\lambda (H: ((\forall (t: T).(((\forall (v: T).((lt (weight v) 
322 (weight t)) \to (P v)))) \to (P t))))).(\lambda (t: T).(tlt_wf__q_ind 
323 (\lambda (t0: T).(P t0)) (\lambda (n: nat).(lt_wf_ind n (Q (\lambda (t0: 
324 T).(P t0))) (\lambda (n0: nat).(\lambda (H0: ((\forall (m: nat).((lt m n0) 
325 \to (Q (\lambda (t: T).(P t)) m))))).(\lambda (t0: T).(\lambda (H1: (eq nat 
326 (weight t0) n0)).(let H2 \def (eq_ind_r nat n0 (\lambda (n: nat).(\forall (m: 
327 nat).((lt m n) \to (\forall (t: T).((eq nat (weight t) m) \to (P t)))))) H0 
328 (weight t0) H1) in (H t0 (\lambda (v: T).(\lambda (H3: (lt (weight v) (weight 
329 t0))).(H2 (weight v) H3 v (refl_equal nat (weight v))))))))))))) t)))).
330
331 inductive iso: T \to (T \to Prop) \def
332 | iso_sort: \forall (n1: nat).(\forall (n2: nat).(iso (TSort n1) (TSort n2)))
333 | iso_lref: \forall (i1: nat).(\forall (i2: nat).(iso (TLRef i1) (TLRef i2)))
334 | iso_head: \forall (k: K).(\forall (v1: T).(\forall (v2: T).(\forall (t1: 
335 T).(\forall (t2: T).(iso (THead k v1 t1) (THead k v2 t2)))))).
336
337 theorem iso_flats_lref_bind_false:
338  \forall (f: F).(\forall (b: B).(\forall (i: nat).(\forall (v: T).(\forall 
339 (t: T).(\forall (vs: TList).((iso (THeads (Flat f) vs (TLRef i)) (THead (Bind 
340 b) v t)) \to (\forall (P: Prop).P)))))))
341 \def
342  \lambda (f: F).(\lambda (b: B).(\lambda (i: nat).(\lambda (v: T).(\lambda 
343 (t: T).(\lambda (vs: TList).(TList_ind (\lambda (t0: TList).((iso (THeads 
344 (Flat f) t0 (TLRef i)) (THead (Bind b) v t)) \to (\forall (P: Prop).P))) 
345 (\lambda (H: (iso (TLRef i) (THead (Bind b) v t))).(\lambda (P: Prop).(let H0 
346 \def (match H return (\lambda (t0: T).(\lambda (t1: T).(\lambda (_: (iso t0 
347 t1)).((eq T t0 (TLRef i)) \to ((eq T t1 (THead (Bind b) v t)) \to P))))) with 
348 [(iso_sort n1 n2) \Rightarrow (\lambda (H0: (eq T (TSort n1) (TLRef 
349 i))).(\lambda (H1: (eq T (TSort n2) (THead (Bind b) v t))).((let H2 \def 
350 (eq_ind T (TSort n1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
351 with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ 
352 _) \Rightarrow False])) I (TLRef i) H0) in (False_ind ((eq T (TSort n2) 
353 (THead (Bind b) v t)) \to P) H2)) H1))) | (iso_lref i1 i2) \Rightarrow 
354 (\lambda (H0: (eq T (TLRef i1) (TLRef i))).(\lambda (H1: (eq T (TLRef i2) 
355 (THead (Bind b) v t))).((let H2 \def (f_equal T nat (\lambda (e: T).(match e 
356 return (\lambda (_: T).nat) with [(TSort _) \Rightarrow i1 | (TLRef n) 
357 \Rightarrow n | (THead _ _ _) \Rightarrow i1])) (TLRef i1) (TLRef i) H0) in 
358 (eq_ind nat i (\lambda (_: nat).((eq T (TLRef i2) (THead (Bind b) v t)) \to 
359 P)) (\lambda (H3: (eq T (TLRef i2) (THead (Bind b) v t))).(let H4 \def 
360 (eq_ind T (TLRef i2) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
361 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ 
362 _) \Rightarrow False])) I (THead (Bind b) v t) H3) in (False_ind P H4))) i1 
363 (sym_eq nat i1 i H2))) H1))) | (iso_head k v1 v2 t1 t2) \Rightarrow (\lambda 
364 (H0: (eq T (THead k v1 t1) (TLRef i))).(\lambda (H1: (eq T (THead k v2 t2) 
365 (THead (Bind b) v t))).((let H2 \def (eq_ind T (THead k v1 t1) (\lambda (e: 
366 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
367 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef i) 
368 H0) in (False_ind ((eq T (THead k v2 t2) (THead (Bind b) v t)) \to P) H2)) 
369 H1)))]) in (H0 (refl_equal T (TLRef i)) (refl_equal T (THead (Bind b) v 
370 t)))))) (\lambda (t0: T).(\lambda (t1: TList).(\lambda (_: (((iso (THeads 
371 (Flat f) t1 (TLRef i)) (THead (Bind b) v t)) \to (\forall (P: 
372 Prop).P)))).(\lambda (H0: (iso (THead (Flat f) t0 (THeads (Flat f) t1 (TLRef 
373 i))) (THead (Bind b) v t))).(\lambda (P: Prop).(let H1 \def (match H0 return 
374 (\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (iso t2 t3)).((eq T t2 (THead 
375 (Flat f) t0 (THeads (Flat f) t1 (TLRef i)))) \to ((eq T t3 (THead (Bind b) v 
376 t)) \to P))))) with [(iso_sort n1 n2) \Rightarrow (\lambda (H1: (eq T (TSort 
377 n1) (THead (Flat f) t0 (THeads (Flat f) t1 (TLRef i))))).(\lambda (H2: (eq T 
378 (TSort n2) (THead (Bind b) v t))).((let H3 \def (eq_ind T (TSort n1) (\lambda 
379 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True 
380 | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (THead 
381 (Flat f) t0 (THeads (Flat f) t1 (TLRef i))) H1) in (False_ind ((eq T (TSort 
382 n2) (THead (Bind b) v t)) \to P) H3)) H2))) | (iso_lref i1 i2) \Rightarrow 
383 (\lambda (H1: (eq T (TLRef i1) (THead (Flat f) t0 (THeads (Flat f) t1 (TLRef 
384 i))))).(\lambda (H2: (eq T (TLRef i2) (THead (Bind b) v t))).((let H3 \def 
385 (eq_ind T (TLRef i1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
386 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ 
387 _) \Rightarrow False])) I (THead (Flat f) t0 (THeads (Flat f) t1 (TLRef i))) 
388 H1) in (False_ind ((eq T (TLRef i2) (THead (Bind b) v t)) \to P) H3)) H2))) | 
389 (iso_head k v1 v2 t2 t3) \Rightarrow (\lambda (H1: (eq T (THead k v1 t2) 
390 (THead (Flat f) t0 (THeads (Flat f) t1 (TLRef i))))).(\lambda (H2: (eq T 
391 (THead k v2 t3) (THead (Bind b) v t))).((let H3 \def (f_equal T T (\lambda 
392 (e: T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t2 | 
393 (TLRef _) \Rightarrow t2 | (THead _ _ t) \Rightarrow t])) (THead k v1 t2) 
394 (THead (Flat f) t0 (THeads (Flat f) t1 (TLRef i))) H1) in ((let H4 \def 
395 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
396 _) \Rightarrow v1 | (TLRef _) \Rightarrow v1 | (THead _ t _) \Rightarrow t])) 
397 (THead k v1 t2) (THead (Flat f) t0 (THeads (Flat f) t1 (TLRef i))) H1) in 
398 ((let H5 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) 
399 with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
400 \Rightarrow k])) (THead k v1 t2) (THead (Flat f) t0 (THeads (Flat f) t1 
401 (TLRef i))) H1) in (eq_ind K (Flat f) (\lambda (k0: K).((eq T v1 t0) \to ((eq 
402 T t2 (THeads (Flat f) t1 (TLRef i))) \to ((eq T (THead k0 v2 t3) (THead (Bind 
403 b) v t)) \to P)))) (\lambda (H6: (eq T v1 t0)).(eq_ind T t0 (\lambda (_: 
404 T).((eq T t2 (THeads (Flat f) t1 (TLRef i))) \to ((eq T (THead (Flat f) v2 
405 t3) (THead (Bind b) v t)) \to P))) (\lambda (H7: (eq T t2 (THeads (Flat f) t1 
406 (TLRef i)))).(eq_ind T (THeads (Flat f) t1 (TLRef i)) (\lambda (_: T).((eq T 
407 (THead (Flat f) v2 t3) (THead (Bind b) v t)) \to P)) (\lambda (H8: (eq T 
408 (THead (Flat f) v2 t3) (THead (Bind b) v t))).(let H9 \def (eq_ind T (THead 
409 (Flat f) v2 t3) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
410 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
411 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
412 False | (Flat _) \Rightarrow True])])) I (THead (Bind b) v t) H8) in 
413 (False_ind P H9))) t2 (sym_eq T t2 (THeads (Flat f) t1 (TLRef i)) H7))) v1 
414 (sym_eq T v1 t0 H6))) k (sym_eq K k (Flat f) H5))) H4)) H3)) H2)))]) in (H1 
415 (refl_equal T (THead (Flat f) t0 (THeads (Flat f) t1 (TLRef i)))) (refl_equal 
416 T (THead (Bind b) v t))))))))) vs)))))).
417
418 theorem iso_flats_flat_bind_false:
419  \forall (f1: F).(\forall (f2: F).(\forall (b: B).(\forall (v: T).(\forall 
420 (v2: T).(\forall (t: T).(\forall (t2: T).(\forall (vs: TList).((iso (THeads 
421 (Flat f1) vs (THead (Flat f2) v2 t2)) (THead (Bind b) v t)) \to (\forall (P: 
422 Prop).P)))))))))
423 \def
424  \lambda (f1: F).(\lambda (f2: F).(\lambda (b: B).(\lambda (v: T).(\lambda 
425 (v2: T).(\lambda (t: T).(\lambda (t2: T).(\lambda (vs: TList).(TList_ind 
426 (\lambda (t0: TList).((iso (THeads (Flat f1) t0 (THead (Flat f2) v2 t2)) 
427 (THead (Bind b) v t)) \to (\forall (P: Prop).P))) (\lambda (H: (iso (THead 
428 (Flat f2) v2 t2) (THead (Bind b) v t))).(\lambda (P: Prop).(let H0 \def 
429 (match H return (\lambda (t0: T).(\lambda (t1: T).(\lambda (_: (iso t0 
430 t1)).((eq T t0 (THead (Flat f2) v2 t2)) \to ((eq T t1 (THead (Bind b) v t)) 
431 \to P))))) with [(iso_sort n1 n2) \Rightarrow (\lambda (H0: (eq T (TSort n1) 
432 (THead (Flat f2) v2 t2))).(\lambda (H1: (eq T (TSort n2) (THead (Bind b) v 
433 t))).((let H2 \def (eq_ind T (TSort n1) (\lambda (e: T).(match e return 
434 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) 
435 \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (THead (Flat f2) v2 
436 t2) H0) in (False_ind ((eq T (TSort n2) (THead (Bind b) v t)) \to P) H2)) 
437 H1))) | (iso_lref i1 i2) \Rightarrow (\lambda (H0: (eq T (TLRef i1) (THead 
438 (Flat f2) v2 t2))).(\lambda (H1: (eq T (TLRef i2) (THead (Bind b) v 
439 t))).((let H2 \def (eq_ind T (TLRef i1) (\lambda (e: T).(match e return 
440 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
441 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead (Flat f2) v2 
442 t2) H0) in (False_ind ((eq T (TLRef i2) (THead (Bind b) v t)) \to P) H2)) 
443 H1))) | (iso_head k v1 v0 t1 t0) \Rightarrow (\lambda (H0: (eq T (THead k v1 
444 t1) (THead (Flat f2) v2 t2))).(\lambda (H1: (eq T (THead k v0 t0) (THead 
445 (Bind b) v t))).((let H2 \def (f_equal T T (\lambda (e: T).(match e return 
446 (\lambda (_: T).T) with [(TSort _) \Rightarrow t1 | (TLRef _) \Rightarrow t1 
447 | (THead _ _ t) \Rightarrow t])) (THead k v1 t1) (THead (Flat f2) v2 t2) H0) 
448 in ((let H3 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
449 T).T) with [(TSort _) \Rightarrow v1 | (TLRef _) \Rightarrow v1 | (THead _ t 
450 _) \Rightarrow t])) (THead k v1 t1) (THead (Flat f2) v2 t2) H0) in ((let H4 
451 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) with 
452 [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
453 \Rightarrow k])) (THead k v1 t1) (THead (Flat f2) v2 t2) H0) in (eq_ind K 
454 (Flat f2) (\lambda (k0: K).((eq T v1 v2) \to ((eq T t1 t2) \to ((eq T (THead 
455 k0 v0 t0) (THead (Bind b) v t)) \to P)))) (\lambda (H5: (eq T v1 v2)).(eq_ind 
456 T v2 (\lambda (_: T).((eq T t1 t2) \to ((eq T (THead (Flat f2) v0 t0) (THead 
457 (Bind b) v t)) \to P))) (\lambda (H6: (eq T t1 t2)).(eq_ind T t2 (\lambda (_: 
458 T).((eq T (THead (Flat f2) v0 t0) (THead (Bind b) v t)) \to P)) (\lambda (H7: 
459 (eq T (THead (Flat f2) v0 t0) (THead (Bind b) v t))).(let H8 \def (eq_ind T 
460 (THead (Flat f2) v0 t0) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
461 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ 
462 _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) 
463 \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind b) v t) H7) 
464 in (False_ind P H8))) t1 (sym_eq T t1 t2 H6))) v1 (sym_eq T v1 v2 H5))) k 
465 (sym_eq K k (Flat f2) H4))) H3)) H2)) H1)))]) in (H0 (refl_equal T (THead 
466 (Flat f2) v2 t2)) (refl_equal T (THead (Bind b) v t)))))) (\lambda (t0: 
467 T).(\lambda (t1: TList).(\lambda (_: (((iso (THeads (Flat f1) t1 (THead (Flat 
468 f2) v2 t2)) (THead (Bind b) v t)) \to (\forall (P: Prop).P)))).(\lambda (H0: 
469 (iso (THead (Flat f1) t0 (THeads (Flat f1) t1 (THead (Flat f2) v2 t2))) 
470 (THead (Bind b) v t))).(\lambda (P: Prop).(let H1 \def (match H0 return 
471 (\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (iso t3 t4)).((eq T t3 (THead 
472 (Flat f1) t0 (THeads (Flat f1) t1 (THead (Flat f2) v2 t2)))) \to ((eq T t4 
473 (THead (Bind b) v t)) \to P))))) with [(iso_sort n1 n2) \Rightarrow (\lambda 
474 (H1: (eq T (TSort n1) (THead (Flat f1) t0 (THeads (Flat f1) t1 (THead (Flat 
475 f2) v2 t2))))).(\lambda (H2: (eq T (TSort n2) (THead (Bind b) v t))).((let H3 
476 \def (eq_ind T (TSort n1) (\lambda (e: T).(match e return (\lambda (_: 
477 T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | 
478 (THead _ _ _) \Rightarrow False])) I (THead (Flat f1) t0 (THeads (Flat f1) t1 
479 (THead (Flat f2) v2 t2))) H1) in (False_ind ((eq T (TSort n2) (THead (Bind b) 
480 v t)) \to P) H3)) H2))) | (iso_lref i1 i2) \Rightarrow (\lambda (H1: (eq T 
481 (TLRef i1) (THead (Flat f1) t0 (THeads (Flat f1) t1 (THead (Flat f2) v2 
482 t2))))).(\lambda (H2: (eq T (TLRef i2) (THead (Bind b) v t))).((let H3 \def 
483 (eq_ind T (TLRef i1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
484 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ 
485 _) \Rightarrow False])) I (THead (Flat f1) t0 (THeads (Flat f1) t1 (THead 
486 (Flat f2) v2 t2))) H1) in (False_ind ((eq T (TLRef i2) (THead (Bind b) v t)) 
487 \to P) H3)) H2))) | (iso_head k v1 v0 t3 t4) \Rightarrow (\lambda (H1: (eq T 
488 (THead k v1 t3) (THead (Flat f1) t0 (THeads (Flat f1) t1 (THead (Flat f2) v2 
489 t2))))).(\lambda (H2: (eq T (THead k v0 t4) (THead (Bind b) v t))).((let H3 
490 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
491 [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t) 
492 \Rightarrow t])) (THead k v1 t3) (THead (Flat f1) t0 (THeads (Flat f1) t1 
493 (THead (Flat f2) v2 t2))) H1) in ((let H4 \def (f_equal T T (\lambda (e: 
494 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef 
495 _) \Rightarrow v1 | (THead _ t _) \Rightarrow t])) (THead k v1 t3) (THead 
496 (Flat f1) t0 (THeads (Flat f1) t1 (THead (Flat f2) v2 t2))) H1) in ((let H5 
497 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) with 
498 [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
499 \Rightarrow k])) (THead k v1 t3) (THead (Flat f1) t0 (THeads (Flat f1) t1 
500 (THead (Flat f2) v2 t2))) H1) in (eq_ind K (Flat f1) (\lambda (k0: K).((eq T 
501 v1 t0) \to ((eq T t3 (THeads (Flat f1) t1 (THead (Flat f2) v2 t2))) \to ((eq 
502 T (THead k0 v0 t4) (THead (Bind b) v t)) \to P)))) (\lambda (H6: (eq T v1 
503 t0)).(eq_ind T t0 (\lambda (_: T).((eq T t3 (THeads (Flat f1) t1 (THead (Flat 
504 f2) v2 t2))) \to ((eq T (THead (Flat f1) v0 t4) (THead (Bind b) v t)) \to 
505 P))) (\lambda (H7: (eq T t3 (THeads (Flat f1) t1 (THead (Flat f2) v2 
506 t2)))).(eq_ind T (THeads (Flat f1) t1 (THead (Flat f2) v2 t2)) (\lambda (_: 
507 T).((eq T (THead (Flat f1) v0 t4) (THead (Bind b) v t)) \to P)) (\lambda (H8: 
508 (eq T (THead (Flat f1) v0 t4) (THead (Bind b) v t))).(let H9 \def (eq_ind T 
509 (THead (Flat f1) v0 t4) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
510 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ 
511 _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) 
512 \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind b) v t) H8) 
513 in (False_ind P H9))) t3 (sym_eq T t3 (THeads (Flat f1) t1 (THead (Flat f2) 
514 v2 t2)) H7))) v1 (sym_eq T v1 t0 H6))) k (sym_eq K k (Flat f1) H5))) H4)) 
515 H3)) H2)))]) in (H1 (refl_equal T (THead (Flat f1) t0 (THeads (Flat f1) t1 
516 (THead (Flat f2) v2 t2)))) (refl_equal T (THead (Bind b) v t))))))))) 
517 vs)))))))).
518
519 theorem iso_trans:
520  \forall (t1: T).(\forall (t2: T).((iso t1 t2) \to (\forall (t3: T).((iso t2 
521 t3) \to (iso t1 t3)))))
522 \def
523  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (iso t1 t2)).(iso_ind (\lambda 
524 (t: T).(\lambda (t0: T).(\forall (t3: T).((iso t0 t3) \to (iso t t3))))) 
525 (\lambda (n1: nat).(\lambda (n2: nat).(\lambda (t3: T).(\lambda (H0: (iso 
526 (TSort n2) t3)).(let H1 \def (match H0 return (\lambda (t: T).(\lambda (t0: 
527 T).(\lambda (_: (iso t t0)).((eq T t (TSort n2)) \to ((eq T t0 t3) \to (iso 
528 (TSort n1) t3)))))) with [(iso_sort n0 n3) \Rightarrow (\lambda (H0: (eq T 
529 (TSort n0) (TSort n2))).(\lambda (H1: (eq T (TSort n3) t3)).((let H2 \def 
530 (f_equal T nat (\lambda (e: T).(match e return (\lambda (_: T).nat) with 
531 [(TSort n) \Rightarrow n | (TLRef _) \Rightarrow n0 | (THead _ _ _) 
532 \Rightarrow n0])) (TSort n0) (TSort n2) H0) in (eq_ind nat n2 (\lambda (_: 
533 nat).((eq T (TSort n3) t3) \to (iso (TSort n1) t3))) (\lambda (H3: (eq T 
534 (TSort n3) t3)).(eq_ind T (TSort n3) (\lambda (t: T).(iso (TSort n1) t)) 
535 (iso_sort n1 n3) t3 H3)) n0 (sym_eq nat n0 n2 H2))) H1))) | (iso_lref i1 i2) 
536 \Rightarrow (\lambda (H0: (eq T (TLRef i1) (TSort n2))).(\lambda (H1: (eq T 
537 (TLRef i2) t3)).((let H2 \def (eq_ind T (TLRef i1) (\lambda (e: T).(match e 
538 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
539 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (TSort n2) H0) in 
540 (False_ind ((eq T (TLRef i2) t3) \to (iso (TSort n1) t3)) H2)) H1))) | 
541 (iso_head k v1 v2 t1 t2) \Rightarrow (\lambda (H0: (eq T (THead k v1 t1) 
542 (TSort n2))).(\lambda (H1: (eq T (THead k v2 t2) t3)).((let H2 \def (eq_ind T 
543 (THead k v1 t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
544 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
545 \Rightarrow True])) I (TSort n2) H0) in (False_ind ((eq T (THead k v2 t2) t3) 
546 \to (iso (TSort n1) t3)) H2)) H1)))]) in (H1 (refl_equal T (TSort n2)) 
547 (refl_equal T t3))))))) (\lambda (i1: nat).(\lambda (i2: nat).(\lambda (t3: 
548 T).(\lambda (H0: (iso (TLRef i2) t3)).(let H1 \def (match H0 return (\lambda 
549 (t: T).(\lambda (t0: T).(\lambda (_: (iso t t0)).((eq T t (TLRef i2)) \to 
550 ((eq T t0 t3) \to (iso (TLRef i1) t3)))))) with [(iso_sort n1 n2) \Rightarrow 
551 (\lambda (H0: (eq T (TSort n1) (TLRef i2))).(\lambda (H1: (eq T (TSort n2) 
552 t3)).((let H2 \def (eq_ind T (TSort n1) (\lambda (e: T).(match e return 
553 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) 
554 \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (TLRef i2) H0) in 
555 (False_ind ((eq T (TSort n2) t3) \to (iso (TLRef i1) t3)) H2)) H1))) | 
556 (iso_lref i0 i3) \Rightarrow (\lambda (H0: (eq T (TLRef i0) (TLRef 
557 i2))).(\lambda (H1: (eq T (TLRef i3) t3)).((let H2 \def (f_equal T nat 
558 (\lambda (e: T).(match e return (\lambda (_: T).nat) with [(TSort _) 
559 \Rightarrow i0 | (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow i0])) 
560 (TLRef i0) (TLRef i2) H0) in (eq_ind nat i2 (\lambda (_: nat).((eq T (TLRef 
561 i3) t3) \to (iso (TLRef i1) t3))) (\lambda (H3: (eq T (TLRef i3) t3)).(eq_ind 
562 T (TLRef i3) (\lambda (t: T).(iso (TLRef i1) t)) (iso_lref i1 i3) t3 H3)) i0 
563 (sym_eq nat i0 i2 H2))) H1))) | (iso_head k v1 v2 t1 t2) \Rightarrow (\lambda 
564 (H0: (eq T (THead k v1 t1) (TLRef i2))).(\lambda (H1: (eq T (THead k v2 t2) 
565 t3)).((let H2 \def (eq_ind T (THead k v1 t1) (\lambda (e: T).(match e return 
566 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
567 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef i2) H0) in 
568 (False_ind ((eq T (THead k v2 t2) t3) \to (iso (TLRef i1) t3)) H2)) H1)))]) 
569 in (H1 (refl_equal T (TLRef i2)) (refl_equal T t3))))))) (\lambda (k: 
570 K).(\lambda (v1: T).(\lambda (v2: T).(\lambda (t3: T).(\lambda (t4: 
571 T).(\lambda (t5: T).(\lambda (H0: (iso (THead k v2 t4) t5)).(let H1 \def 
572 (match H0 return (\lambda (t: T).(\lambda (t0: T).(\lambda (_: (iso t 
573 t0)).((eq T t (THead k v2 t4)) \to ((eq T t0 t5) \to (iso (THead k v1 t3) 
574 t5)))))) with [(iso_sort n1 n2) \Rightarrow (\lambda (H0: (eq T (TSort n1) 
575 (THead k v2 t4))).(\lambda (H1: (eq T (TSort n2) t5)).((let H2 \def (eq_ind T 
576 (TSort n1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort 
577 _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
578 False])) I (THead k v2 t4) H0) in (False_ind ((eq T (TSort n2) t5) \to (iso 
579 (THead k v1 t3) t5)) H2)) H1))) | (iso_lref i1 i2) \Rightarrow (\lambda (H0: 
580 (eq T (TLRef i1) (THead k v2 t4))).(\lambda (H1: (eq T (TLRef i2) t5)).((let 
581 H2 \def (eq_ind T (TLRef i1) (\lambda (e: T).(match e return (\lambda (_: 
582 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | 
583 (THead _ _ _) \Rightarrow False])) I (THead k v2 t4) H0) in (False_ind ((eq T 
584 (TLRef i2) t5) \to (iso (THead k v1 t3) t5)) H2)) H1))) | (iso_head k0 v0 v3 
585 t0 t4) \Rightarrow (\lambda (H0: (eq T (THead k0 v0 t0) (THead k v2 
586 t4))).(\lambda (H1: (eq T (THead k0 v3 t4) t5)).((let H2 \def (f_equal T T 
587 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
588 \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
589 (THead k0 v0 t0) (THead k v2 t4) H0) in ((let H3 \def (f_equal T T (\lambda 
590 (e: T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow v0 | 
591 (TLRef _) \Rightarrow v0 | (THead _ t _) \Rightarrow t])) (THead k0 v0 t0) 
592 (THead k v2 t4) H0) in ((let H4 \def (f_equal T K (\lambda (e: T).(match e 
593 return (\lambda (_: T).K) with [(TSort _) \Rightarrow k0 | (TLRef _) 
594 \Rightarrow k0 | (THead k _ _) \Rightarrow k])) (THead k0 v0 t0) (THead k v2 
595 t4) H0) in (eq_ind K k (\lambda (k1: K).((eq T v0 v2) \to ((eq T t0 t4) \to 
596 ((eq T (THead k1 v3 t4) t5) \to (iso (THead k v1 t3) t5))))) (\lambda (H5: 
597 (eq T v0 v2)).(eq_ind T v2 (\lambda (_: T).((eq T t0 t4) \to ((eq T (THead k 
598 v3 t4) t5) \to (iso (THead k v1 t3) t5)))) (\lambda (H6: (eq T t0 
599 t4)).(eq_ind T t4 (\lambda (_: T).((eq T (THead k v3 t4) t5) \to (iso (THead 
600 k v1 t3) t5))) (\lambda (H7: (eq T (THead k v3 t4) t5)).(eq_ind T (THead k v3 
601 t4) (\lambda (t: T).(iso (THead k v1 t3) t)) (iso_head k v1 v3 t3 t4) t5 H7)) 
602 t0 (sym_eq T t0 t4 H6))) v0 (sym_eq T v0 v2 H5))) k0 (sym_eq K k0 k H4))) 
603 H3)) H2)) H1)))]) in (H1 (refl_equal T (THead k v2 t4)) (refl_equal T 
604 t5)))))))))) t1 t2 H))).
605
606 inductive C: Set \def
607 | CSort: nat \to C
608 | CHead: C \to (K \to (T \to C)).
609
610 definition r:
611  K \to (nat \to nat)
612 \def
613  \lambda (k: K).(\lambda (i: nat).(match k with [(Bind _) \Rightarrow i | 
614 (Flat _) \Rightarrow (S i)])).
615
616 definition clen:
617  C \to nat
618 \def
619  let rec clen (c: C) on c: nat \def (match c with [(CSort _) \Rightarrow O | 
620 (CHead c0 k _) \Rightarrow (s k (clen c0))]) in clen.
621
622 theorem r_S:
623  \forall (k: K).(\forall (i: nat).(eq nat (r k (S i)) (S (r k i))))
624 \def
625  \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(eq nat (r k0 (S 
626 i)) (S (r k0 i))))) (\lambda (b: B).(\lambda (i: nat).(refl_equal nat (S (r 
627 (Bind b) i))))) (\lambda (f: F).(\lambda (i: nat).(refl_equal nat (S (r (Flat 
628 f) i))))) k).
629
630 theorem r_plus:
631  \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (r k (plus i j)) 
632 (plus (r k i) j))))
633 \def
634  \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(\forall (j: 
635 nat).(eq nat (r k0 (plus i j)) (plus (r k0 i) j))))) (\lambda (b: B).(\lambda 
636 (i: nat).(\lambda (j: nat).(refl_equal nat (plus (r (Bind b) i) j))))) 
637 (\lambda (f: F).(\lambda (i: nat).(\lambda (j: nat).(refl_equal nat (plus (r 
638 (Flat f) i) j))))) k).
639
640 theorem r_plus_sym:
641  \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (r k (plus i j)) 
642 (plus i (r k j)))))
643 \def
644  \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(\forall (j: 
645 nat).(eq nat (r k0 (plus i j)) (plus i (r k0 j)))))) (\lambda (_: B).(\lambda 
646 (i: nat).(\lambda (j: nat).(refl_equal nat (plus i j))))) (\lambda (_: 
647 F).(\lambda (i: nat).(\lambda (j: nat).(plus_n_Sm i j)))) k).
648
649 theorem r_minus:
650  \forall (i: nat).(\forall (n: nat).((lt n i) \to (\forall (k: K).(eq nat 
651 (minus (r k i) (S n)) (r k (minus i (S n)))))))
652 \def
653  \lambda (i: nat).(\lambda (n: nat).(\lambda (H: (lt n i)).(\lambda (k: 
654 K).(K_ind (\lambda (k0: K).(eq nat (minus (r k0 i) (S n)) (r k0 (minus i (S 
655 n))))) (\lambda (_: B).(refl_equal nat (minus i (S n)))) (\lambda (_: 
656 F).(minus_x_Sy i n H)) k)))).
657
658 theorem r_dis:
659  \forall (k: K).(\forall (P: Prop).(((((\forall (i: nat).(eq nat (r k i) i))) 
660 \to P)) \to (((((\forall (i: nat).(eq nat (r k i) (S i)))) \to P)) \to P)))
661 \def
662  \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (P: Prop).(((((\forall (i: 
663 nat).(eq nat (r k0 i) i))) \to P)) \to (((((\forall (i: nat).(eq nat (r k0 i) 
664 (S i)))) \to P)) \to P)))) (\lambda (b: B).(\lambda (P: Prop).(\lambda (H: 
665 ((((\forall (i: nat).(eq nat (r (Bind b) i) i))) \to P))).(\lambda (_: 
666 ((((\forall (i: nat).(eq nat (r (Bind b) i) (S i)))) \to P))).(H (\lambda (i: 
667 nat).(refl_equal nat i))))))) (\lambda (f: F).(\lambda (P: Prop).(\lambda (_: 
668 ((((\forall (i: nat).(eq nat (r (Flat f) i) i))) \to P))).(\lambda (H0: 
669 ((((\forall (i: nat).(eq nat (r (Flat f) i) (S i)))) \to P))).(H0 (\lambda 
670 (i: nat).(refl_equal nat (S i)))))))) k).
671
672 theorem s_r:
673  \forall (k: K).(\forall (i: nat).(eq nat (s k (r k i)) (S i)))
674 \def
675  \lambda (k: K).(match k return (\lambda (k0: K).(\forall (i: nat).(eq nat (s 
676 k0 (r k0 i)) (S i)))) with [(Bind _) \Rightarrow (\lambda (i: 
677 nat).(refl_equal nat (S i))) | (Flat _) \Rightarrow (\lambda (i: 
678 nat).(refl_equal nat (S i)))]).
679
680 theorem r_arith0:
681  \forall (k: K).(\forall (i: nat).(eq nat (minus (r k (S i)) (S O)) (r k i)))
682 \def
683  \lambda (k: K).(\lambda (i: nat).(eq_ind_r nat (S (r k i)) (\lambda (n: 
684 nat).(eq nat (minus n (S O)) (r k i))) (eq_ind_r nat (r k i) (\lambda (n: 
685 nat).(eq nat n (r k i))) (refl_equal nat (r k i)) (minus (S (r k i)) (S O)) 
686 (minus_Sx_SO (r k i))) (r k (S i)) (r_S k i))).
687
688 theorem r_arith1:
689  \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (minus (r k (S 
690 i)) (S j)) (minus (r k i) j))))
691 \def
692  \lambda (k: K).(\lambda (i: nat).(\lambda (j: nat).(eq_ind_r nat (S (r k i)) 
693 (\lambda (n: nat).(eq nat (minus n (S j)) (minus (r k i) j))) (refl_equal nat 
694 (minus (r k i) j)) (r k (S i)) (r_S k i)))).
695
696 definition tweight:
697  T \to nat
698 \def
699  let rec tweight (t: T) on t: nat \def (match t with [(TSort _) \Rightarrow 
700 (S O) | (TLRef _) \Rightarrow (S O) | (THead _ u t0) \Rightarrow (S (plus 
701 (tweight u) (tweight t0)))]) in tweight.
702
703 definition cweight:
704  C \to nat
705 \def
706  let rec cweight (c: C) on c: nat \def (match c with [(CSort _) \Rightarrow O 
707 | (CHead c0 _ t) \Rightarrow (plus (cweight c0) (tweight t))]) in cweight.
708
709 definition clt:
710  C \to (C \to Prop)
711 \def
712  \lambda (c1: C).(\lambda (c2: C).(lt (cweight c1) (cweight c2))).
713
714 definition cle:
715  C \to (C \to Prop)
716 \def
717  \lambda (c1: C).(\lambda (c2: C).(le (cweight c1) (cweight c2))).
718
719 theorem tweight_lt:
720  \forall (t: T).(lt O (tweight t))
721 \def
722  \lambda (t: T).(match t return (\lambda (t0: T).(lt O (tweight t0))) with 
723 [(TSort _) \Rightarrow (le_n (S O)) | (TLRef _) \Rightarrow (le_n (S O)) | 
724 (THead _ t0 t1) \Rightarrow (le_S_n (S O) (S (plus (tweight t0) (tweight 
725 t1))) (le_n_S (S O) (S (plus (tweight t0) (tweight t1))) (le_n_S O (plus 
726 (tweight t0) (tweight t1)) (le_O_n (plus (tweight t0) (tweight t1))))))]).
727
728 theorem clt_cong:
729  \forall (c: C).(\forall (d: C).((clt c d) \to (\forall (k: K).(\forall (t: 
730 T).(clt (CHead c k t) (CHead d k t))))))
731 \def
732  \lambda (c: C).(\lambda (d: C).(\lambda (H: (lt (cweight c) (cweight 
733 d))).(\lambda (_: K).(\lambda (t: T).(lt_le_S (plus (cweight c) (tweight t)) 
734 (plus (cweight d) (tweight t)) (plus_lt_compat_r (cweight c) (cweight d) 
735 (tweight t) H)))))).
736
737 theorem clt_head:
738  \forall (k: K).(\forall (c: C).(\forall (u: T).(clt c (CHead c k u))))
739 \def
740  \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(eq_ind_r nat (plus (cweight 
741 c) O) (\lambda (n: nat).(lt n (plus (cweight c) (tweight u)))) (lt_le_S (plus 
742 (cweight c) O) (plus (cweight c) (tweight u)) (plus_le_lt_compat (cweight c) 
743 (cweight c) O (tweight u) (le_n (cweight c)) (tweight_lt u))) (cweight c) 
744 (plus_n_O (cweight c))))).
745
746 theorem clt_wf__q_ind:
747  \forall (P: ((C \to Prop))).(((\forall (n: nat).((\lambda (P: ((C \to 
748 Prop))).(\lambda (n0: nat).(\forall (c: C).((eq nat (cweight c) n0) \to (P 
749 c))))) P n))) \to (\forall (c: C).(P c)))
750 \def
751  let Q \def (\lambda (P: ((C \to Prop))).(\lambda (n: nat).(\forall (c: 
752 C).((eq nat (cweight c) n) \to (P c))))) in (\lambda (P: ((C \to 
753 Prop))).(\lambda (H: ((\forall (n: nat).(\forall (c: C).((eq nat (cweight c) 
754 n) \to (P c)))))).(\lambda (c: C).(H (cweight c) c (refl_equal nat (cweight 
755 c)))))).
756
757 theorem clt_wf_ind:
758  \forall (P: ((C \to Prop))).(((\forall (c: C).(((\forall (d: C).((clt d c) 
759 \to (P d)))) \to (P c)))) \to (\forall (c: C).(P c)))
760 \def
761  let Q \def (\lambda (P: ((C \to Prop))).(\lambda (n: nat).(\forall (c: 
762 C).((eq nat (cweight c) n) \to (P c))))) in (\lambda (P: ((C \to 
763 Prop))).(\lambda (H: ((\forall (c: C).(((\forall (d: C).((lt (cweight d) 
764 (cweight c)) \to (P d)))) \to (P c))))).(\lambda (c: C).(clt_wf__q_ind 
765 (\lambda (c0: C).(P c0)) (\lambda (n: nat).(lt_wf_ind n (Q (\lambda (c0: 
766 C).(P c0))) (\lambda (n0: nat).(\lambda (H0: ((\forall (m: nat).((lt m n0) 
767 \to (Q (\lambda (c: C).(P c)) m))))).(\lambda (c0: C).(\lambda (H1: (eq nat 
768 (cweight c0) n0)).(let H2 \def (eq_ind_r nat n0 (\lambda (n: nat).(\forall 
769 (m: nat).((lt m n) \to (\forall (c: C).((eq nat (cweight c) m) \to (P c)))))) 
770 H0 (cweight c0) H1) in (H c0 (\lambda (d: C).(\lambda (H3: (lt (cweight d) 
771 (cweight c0))).(H2 (cweight d) H3 d (refl_equal nat (cweight d))))))))))))) 
772 c)))).
773
774 definition CTail:
775  K \to (T \to (C \to C))
776 \def
777  let rec CTail (k: K) (t: T) (c: C) on c: C \def (match c with [(CSort n) 
778 \Rightarrow (CHead (CSort n) k t) | (CHead d h u) \Rightarrow (CHead (CTail k 
779 t d) h u)]) in CTail.
780
781 theorem chead_ctail:
782  \forall (c: C).(\forall (t: T).(\forall (k: K).(ex_3 K C T (\lambda (h: 
783 K).(\lambda (d: C).(\lambda (u: T).(eq C (CHead c k t) (CTail h u d))))))))
784 \def
785  \lambda (c: C).(C_ind (\lambda (c0: C).(\forall (t: T).(\forall (k: K).(ex_3 
786 K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C (CHead c0 k t) 
787 (CTail h u d))))))))) (\lambda (n: nat).(\lambda (t: T).(\lambda (k: 
788 K).(ex_3_intro K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C 
789 (CHead (CSort n) k t) (CTail h u d))))) k (CSort n) t (refl_equal C (CHead 
790 (CSort n) k t)))))) (\lambda (c0: C).(\lambda (H: ((\forall (t: T).(\forall 
791 (k: K).(ex_3 K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C 
792 (CHead c0 k t) (CTail h u d)))))))))).(\lambda (k: K).(\lambda (t: 
793 T).(\lambda (t0: T).(\lambda (k0: K).(let H_x \def (H t k) in (let H0 \def 
794 H_x in (ex_3_ind K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C 
795 (CHead c0 k t) (CTail h u d))))) (ex_3 K C T (\lambda (h: K).(\lambda (d: 
796 C).(\lambda (u: T).(eq C (CHead (CHead c0 k t) k0 t0) (CTail h u d)))))) 
797 (\lambda (x0: K).(\lambda (x1: C).(\lambda (x2: T).(\lambda (H1: (eq C (CHead 
798 c0 k t) (CTail x0 x2 x1))).(eq_ind_r C (CTail x0 x2 x1) (\lambda (c1: 
799 C).(ex_3 K C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C (CHead 
800 c1 k0 t0) (CTail h u d))))))) (ex_3_intro K C T (\lambda (h: K).(\lambda (d: 
801 C).(\lambda (u: T).(eq C (CHead (CTail x0 x2 x1) k0 t0) (CTail h u d))))) x0 
802 (CHead x1 k0 t0) x2 (refl_equal C (CHead (CTail x0 x2 x1) k0 t0))) (CHead c0 
803 k t) H1))))) H0))))))))) c).
804
805 theorem clt_thead:
806  \forall (k: K).(\forall (u: T).(\forall (c: C).(clt c (CTail k u c))))
807 \def
808  \lambda (k: K).(\lambda (u: T).(\lambda (c: C).(C_ind (\lambda (c0: C).(clt 
809 c0 (CTail k u c0))) (\lambda (n: nat).(clt_head k (CSort n) u)) (\lambda (c0: 
810 C).(\lambda (H: (clt c0 (CTail k u c0))).(\lambda (k0: K).(\lambda (t: 
811 T).(clt_cong c0 (CTail k u c0) H k0 t))))) c))).
812
813 theorem c_tail_ind:
814  \forall (P: ((C \to Prop))).(((\forall (n: nat).(P (CSort n)))) \to 
815 (((\forall (c: C).((P c) \to (\forall (k: K).(\forall (t: T).(P (CTail k t 
816 c))))))) \to (\forall (c: C).(P c))))
817 \def
818  \lambda (P: ((C \to Prop))).(\lambda (H: ((\forall (n: nat).(P (CSort 
819 n))))).(\lambda (H0: ((\forall (c: C).((P c) \to (\forall (k: K).(\forall (t: 
820 T).(P (CTail k t c)))))))).(\lambda (c: C).(clt_wf_ind (\lambda (c0: C).(P 
821 c0)) (\lambda (c0: C).(match c0 return (\lambda (c1: C).(((\forall (d: 
822 C).((clt d c1) \to (P d)))) \to (P c1))) with [(CSort n) \Rightarrow (\lambda 
823 (_: ((\forall (d: C).((clt d (CSort n)) \to (P d))))).(H n)) | (CHead c1 k t) 
824 \Rightarrow (\lambda (H1: ((\forall (d: C).((clt d (CHead c1 k t)) \to (P 
825 d))))).(let H_x \def (chead_ctail c1 t k) in (let H2 \def H_x in (ex_3_ind K 
826 C T (\lambda (h: K).(\lambda (d: C).(\lambda (u: T).(eq C (CHead c1 k t) 
827 (CTail h u d))))) (P (CHead c1 k t)) (\lambda (x0: K).(\lambda (x1: 
828 C).(\lambda (x2: T).(\lambda (H3: (eq C (CHead c1 k t) (CTail x0 x2 
829 x1))).(eq_ind_r C (CTail x0 x2 x1) (\lambda (c2: C).(P c2)) (let H4 \def 
830 (eq_ind C (CHead c1 k t) (\lambda (c: C).(\forall (d: C).((clt d c) \to (P 
831 d)))) H1 (CTail x0 x2 x1) H3) in (H0 x1 (H4 x1 (clt_thead x0 x2 x1)) x0 x2)) 
832 (CHead c1 k t) H3))))) H2))))])) c)))).
833
834 definition fweight:
835  C \to (T \to nat)
836 \def
837  \lambda (c: C).(\lambda (t: T).(plus (cweight c) (tweight t))).
838
839 definition flt:
840  C \to (T \to (C \to (T \to Prop)))
841 \def
842  \lambda (c1: C).(\lambda (t1: T).(\lambda (c2: C).(\lambda (t2: T).(lt 
843 (fweight c1 t1) (fweight c2 t2))))).
844
845 theorem flt_thead_sx:
846  \forall (k: K).(\forall (c: C).(\forall (u: T).(\forall (t: T).(flt c u c 
847 (THead k u t)))))
848 \def
849  \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(lt_le_S 
850 (plus (cweight c) (tweight u)) (plus (cweight c) (S (plus (tweight u) 
851 (tweight t)))) (plus_le_lt_compat (cweight c) (cweight c) (tweight u) (S 
852 (plus (tweight u) (tweight t))) (le_n (cweight c)) (le_lt_n_Sm (tweight u) 
853 (plus (tweight u) (tweight t)) (le_plus_l (tweight u) (tweight t)))))))).
854
855 theorem flt_thead_dx:
856  \forall (k: K).(\forall (c: C).(\forall (u: T).(\forall (t: T).(flt c t c 
857 (THead k u t)))))
858 \def
859  \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(lt_le_S 
860 (plus (cweight c) (tweight t)) (plus (cweight c) (S (plus (tweight u) 
861 (tweight t)))) (plus_le_lt_compat (cweight c) (cweight c) (tweight t) (S 
862 (plus (tweight u) (tweight t))) (le_n (cweight c)) (le_lt_n_Sm (tweight t) 
863 (plus (tweight u) (tweight t)) (le_plus_r (tweight u) (tweight t)))))))).
864
865 theorem flt_shift:
866  \forall (k: K).(\forall (c: C).(\forall (u: T).(\forall (t: T).(flt (CHead c 
867 k u) t c (THead k u t)))))
868 \def
869  \lambda (_: K).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(eq_ind nat 
870 (S (plus (cweight c) (plus (tweight u) (tweight t)))) (\lambda (n: nat).(lt 
871 (plus (plus (cweight c) (tweight u)) (tweight t)) n)) (eq_ind_r nat (plus 
872 (plus (cweight c) (tweight u)) (tweight t)) (\lambda (n: nat).(lt (plus (plus 
873 (cweight c) (tweight u)) (tweight t)) (S n))) (le_n (S (plus (plus (cweight 
874 c) (tweight u)) (tweight t)))) (plus (cweight c) (plus (tweight u) (tweight 
875 t))) (plus_assoc (cweight c) (tweight u) (tweight t))) (plus (cweight c) (S 
876 (plus (tweight u) (tweight t)))) (plus_n_Sm (cweight c) (plus (tweight u) 
877 (tweight t))))))).
878
879 theorem flt_arith0:
880  \forall (k: K).(\forall (c: C).(\forall (t: T).(\forall (i: nat).(flt c t 
881 (CHead c k t) (TLRef i)))))
882 \def
883  \lambda (_: K).(\lambda (c: C).(\lambda (t: T).(\lambda (_: nat).(le_S_n (S 
884 (plus (cweight c) (tweight t))) (plus (plus (cweight c) (tweight t)) (S O)) 
885 (lt_le_S (S (plus (cweight c) (tweight t))) (S (plus (plus (cweight c) 
886 (tweight t)) (S O))) (lt_n_S (plus (cweight c) (tweight t)) (plus (plus 
887 (cweight c) (tweight t)) (S O)) (lt_x_plus_x_Sy (plus (cweight c) (tweight 
888 t)) O))))))).
889
890 theorem flt_arith1:
891  \forall (k1: K).(\forall (c1: C).(\forall (c2: C).(\forall (t1: T).((cle 
892 (CHead c1 k1 t1) c2) \to (\forall (k2: K).(\forall (t2: T).(\forall (i: 
893 nat).(flt c1 t1 (CHead c2 k2 t2) (TLRef i)))))))))
894 \def
895  \lambda (_: K).(\lambda (c1: C).(\lambda (c2: C).(\lambda (t1: T).(\lambda 
896 (H: (le (plus (cweight c1) (tweight t1)) (cweight c2))).(\lambda (_: 
897 K).(\lambda (t2: T).(\lambda (_: nat).(le_lt_trans (plus (cweight c1) 
898 (tweight t1)) (cweight c2) (plus (plus (cweight c2) (tweight t2)) (S O)) H 
899 (eq_ind_r nat (plus (S O) (plus (cweight c2) (tweight t2))) (\lambda (n: 
900 nat).(lt (cweight c2) n)) (le_lt_n_Sm (cweight c2) (plus (cweight c2) 
901 (tweight t2)) (le_plus_l (cweight c2) (tweight t2))) (plus (plus (cweight c2) 
902 (tweight t2)) (S O)) (plus_comm (plus (cweight c2) (tweight t2)) (S 
903 O))))))))))).
904
905 theorem flt_arith2:
906  \forall (c1: C).(\forall (c2: C).(\forall (t1: T).(\forall (i: nat).((flt c1 
907 t1 c2 (TLRef i)) \to (\forall (k2: K).(\forall (t2: T).(\forall (j: nat).(flt 
908 c1 t1 (CHead c2 k2 t2) (TLRef j)))))))))
909 \def
910  \lambda (c1: C).(\lambda (c2: C).(\lambda (t1: T).(\lambda (_: nat).(\lambda 
911 (H: (lt (plus (cweight c1) (tweight t1)) (plus (cweight c2) (S O)))).(\lambda 
912 (_: K).(\lambda (t2: T).(\lambda (_: nat).(lt_le_trans (plus (cweight c1) 
913 (tweight t1)) (plus (cweight c2) (S O)) (plus (plus (cweight c2) (tweight 
914 t2)) (S O)) H (le_S_n (plus (cweight c2) (S O)) (plus (plus (cweight c2) 
915 (tweight t2)) (S O)) (lt_le_S (plus (cweight c2) (S O)) (S (plus (plus 
916 (cweight c2) (tweight t2)) (S O))) (le_lt_n_Sm (plus (cweight c2) (S O)) 
917 (plus (plus (cweight c2) (tweight t2)) (S O)) (plus_le_compat (cweight c2) 
918 (plus (cweight c2) (tweight t2)) (S O) (S O) (le_plus_l (cweight c2) (tweight 
919 t2)) (le_n (S O)))))))))))))).
920
921 theorem flt_wf__q_ind:
922  \forall (P: ((C \to (T \to Prop)))).(((\forall (n: nat).((\lambda (P: ((C 
923 \to (T \to Prop)))).(\lambda (n0: nat).(\forall (c: C).(\forall (t: T).((eq 
924 nat (fweight c t) n0) \to (P c t)))))) P n))) \to (\forall (c: C).(\forall 
925 (t: T).(P c t))))
926 \def
927  let Q \def (\lambda (P: ((C \to (T \to Prop)))).(\lambda (n: nat).(\forall 
928 (c: C).(\forall (t: T).((eq nat (fweight c t) n) \to (P c t)))))) in (\lambda 
929 (P: ((C \to (T \to Prop)))).(\lambda (H: ((\forall (n: nat).(\forall (c: 
930 C).(\forall (t: T).((eq nat (fweight c t) n) \to (P c t))))))).(\lambda (c: 
931 C).(\lambda (t: T).(H (fweight c t) c t (refl_equal nat (fweight c t))))))).
932
933 theorem flt_wf_ind:
934  \forall (P: ((C \to (T \to Prop)))).(((\forall (c2: C).(\forall (t2: 
935 T).(((\forall (c1: C).(\forall (t1: T).((flt c1 t1 c2 t2) \to (P c1 t1))))) 
936 \to (P c2 t2))))) \to (\forall (c: C).(\forall (t: T).(P c t))))
937 \def
938  let Q \def (\lambda (P: ((C \to (T \to Prop)))).(\lambda (n: nat).(\forall 
939 (c: C).(\forall (t: T).((eq nat (fweight c t) n) \to (P c t)))))) in (\lambda 
940 (P: ((C \to (T \to Prop)))).(\lambda (H: ((\forall (c2: C).(\forall (t2: 
941 T).(((\forall (c1: C).(\forall (t1: T).((flt c1 t1 c2 t2) \to (P c1 t1))))) 
942 \to (P c2 t2)))))).(\lambda (c: C).(\lambda (t: T).(flt_wf__q_ind P (\lambda 
943 (n: nat).(lt_wf_ind n (Q P) (\lambda (n0: nat).(\lambda (H0: ((\forall (m: 
944 nat).((lt m n0) \to (Q P m))))).(\lambda (c0: C).(\lambda (t0: T).(\lambda 
945 (H1: (eq nat (fweight c0 t0) n0)).(let H2 \def (eq_ind_r nat n0 (\lambda (n: 
946 nat).(\forall (m: nat).((lt m n) \to (\forall (c: C).(\forall (t: T).((eq nat 
947 (fweight c t) m) \to (P c t))))))) H0 (fweight c0 t0) H1) in (H c0 t0 
948 (\lambda (c1: C).(\lambda (t1: T).(\lambda (H3: (flt c1 t1 c0 t0)).(H2 
949 (fweight c1 t1) H3 c1 t1 (refl_equal nat (fweight c1 t1))))))))))))))) c 
950 t))))).
951
952 definition lref_map:
953  ((nat \to nat)) \to (nat \to (T \to T))
954 \def
955  let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t 
956 with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match 
957 (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u 
958 t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in 
959 lref_map.
960
961 definition lift:
962  nat \to (nat \to (T \to T))
963 \def
964  \lambda (h: nat).(\lambda (i: nat).(\lambda (t: T).(lref_map (\lambda (x: 
965 nat).(plus x h)) i t))).
966
967 definition lifts:
968  nat \to (nat \to (TList \to TList))
969 \def
970  let rec lifts (h: nat) (d: nat) (ts: TList) on ts: TList \def (match ts with 
971 [TNil \Rightarrow TNil | (TCons t ts0) \Rightarrow (TCons (lift h d t) (lifts 
972 h d ts0))]) in lifts.
973
974 theorem lift_sort:
975  \forall (n: nat).(\forall (h: nat).(\forall (d: nat).(eq T (lift h d (TSort 
976 n)) (TSort n))))
977 \def
978  \lambda (n: nat).(\lambda (_: nat).(\lambda (_: nat).(refl_equal T (TSort 
979 n)))).
980
981 theorem lift_lref_lt:
982  \forall (n: nat).(\forall (h: nat).(\forall (d: nat).((lt n d) \to (eq T 
983 (lift h d (TLRef n)) (TLRef n)))))
984 \def
985  \lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (lt n 
986 d)).(eq_ind bool true (\lambda (b: bool).(eq T (TLRef (match b with [true 
987 \Rightarrow n | false \Rightarrow (plus n h)])) (TLRef n))) (refl_equal T 
988 (TLRef n)) (blt n d) (sym_equal bool (blt n d) true (lt_blt d n H)))))).
989
990 theorem lift_lref_ge:
991  \forall (n: nat).(\forall (h: nat).(\forall (d: nat).((le d n) \to (eq T 
992 (lift h d (TLRef n)) (TLRef (plus n h))))))
993 \def
994  \lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (le d 
995 n)).(eq_ind bool false (\lambda (b: bool).(eq T (TLRef (match b with [true 
996 \Rightarrow n | false \Rightarrow (plus n h)])) (TLRef (plus n h)))) 
997 (refl_equal T (TLRef (plus n h))) (blt n d) (sym_equal bool (blt n d) false 
998 (le_bge d n H)))))).
999
1000 theorem lift_head:
1001  \forall (k: K).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall 
1002 (d: nat).(eq T (lift h d (THead k u t)) (THead k (lift h d u) (lift h (s k d) 
1003 t)))))))
1004 \def
1005  \lambda (k: K).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda 
1006 (d: nat).(refl_equal T (THead k (lift h d u) (lift h (s k d) t))))))).
1007
1008 theorem lift_bind:
1009  \forall (b: B).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall 
1010 (d: nat).(eq T (lift h d (THead (Bind b) u t)) (THead (Bind b) (lift h d u) 
1011 (lift h (S d) t)))))))
1012 \def
1013  \lambda (b: B).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda 
1014 (d: nat).(refl_equal T (THead (Bind b) (lift h d u) (lift h (S d) t))))))).
1015
1016 theorem lift_flat:
1017  \forall (f: F).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall 
1018 (d: nat).(eq T (lift h d (THead (Flat f) u t)) (THead (Flat f) (lift h d u) 
1019 (lift h d t)))))))
1020 \def
1021  \lambda (f: F).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda 
1022 (d: nat).(refl_equal T (THead (Flat f) (lift h d u) (lift h d t))))))).
1023
1024 theorem lift_gen_sort:
1025  \forall (h: nat).(\forall (d: nat).(\forall (n: nat).(\forall (t: T).((eq T 
1026 (TSort n) (lift h d t)) \to (eq T t (TSort n))))))
1027 \def
1028  \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (t: T).(T_ind 
1029 (\lambda (t0: T).((eq T (TSort n) (lift h d t0)) \to (eq T t0 (TSort n)))) 
1030 (\lambda (n0: nat).(\lambda (H: (eq T (TSort n) (lift h d (TSort 
1031 n0)))).(sym_eq T (TSort n) (TSort n0) H))) (\lambda (n0: nat).(\lambda (H: 
1032 (eq T (TSort n) (lift h d (TLRef n0)))).(lt_le_e n0 d (eq T (TLRef n0) (TSort 
1033 n)) (\lambda (H0: (lt n0 d)).(let H1 \def (eq_ind T (lift h d (TLRef n0)) 
1034 (\lambda (t: T).(eq T (TSort n) t)) H (TLRef n0) (lift_lref_lt n0 h d H0)) in 
1035 (let H2 \def (match H1 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T 
1036 t (TLRef n0)) \to (eq T (TLRef n0) (TSort n))))) with [refl_equal \Rightarrow 
1037 (\lambda (H1: (eq T (TSort n) (TLRef n0))).(let H2 \def (eq_ind T (TSort n) 
1038 (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
1039 \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
1040 False])) I (TLRef n0) H1) in (False_ind (eq T (TLRef n0) (TSort n)) H2)))]) 
1041 in (H2 (refl_equal T (TLRef n0)))))) (\lambda (H0: (le d n0)).(let H1 \def 
1042 (eq_ind T (lift h d (TLRef n0)) (\lambda (t: T).(eq T (TSort n) t)) H (TLRef 
1043 (plus n0 h)) (lift_lref_ge n0 h d H0)) in (let H2 \def (match H1 return 
1044 (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (TLRef (plus n0 h))) \to 
1045 (eq T (TLRef n0) (TSort n))))) with [refl_equal \Rightarrow (\lambda (H1: (eq 
1046 T (TSort n) (TLRef (plus n0 h)))).(let H2 \def (eq_ind T (TSort n) (\lambda 
1047 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True 
1048 | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (TLRef 
1049 (plus n0 h)) H1) in (False_ind (eq T (TLRef n0) (TSort n)) H2)))]) in (H2 
1050 (refl_equal T (TLRef (plus n0 h)))))))))) (\lambda (k: K).(\lambda (t0: 
1051 T).(\lambda (_: (((eq T (TSort n) (lift h d t0)) \to (eq T t0 (TSort 
1052 n))))).(\lambda (t1: T).(\lambda (_: (((eq T (TSort n) (lift h d t1)) \to (eq 
1053 T t1 (TSort n))))).(\lambda (H1: (eq T (TSort n) (lift h d (THead k t0 
1054 t1)))).(let H2 \def (eq_ind T (lift h d (THead k t0 t1)) (\lambda (t: T).(eq 
1055 T (TSort n) t)) H1 (THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k 
1056 t0 t1 h d)) in (let H3 \def (match H2 return (\lambda (t: T).(\lambda (_: (eq 
1057 ? ? t)).((eq T t (THead k (lift h d t0) (lift h (s k d) t1))) \to (eq T 
1058 (THead k t0 t1) (TSort n))))) with [refl_equal \Rightarrow (\lambda (H2: (eq 
1059 T (TSort n) (THead k (lift h d t0) (lift h (s k d) t1)))).(let H3 \def 
1060 (eq_ind T (TSort n) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
1061 with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ 
1062 _) \Rightarrow False])) I (THead k (lift h d t0) (lift h (s k d) t1)) H2) in 
1063 (False_ind (eq T (THead k t0 t1) (TSort n)) H3)))]) in (H3 (refl_equal T 
1064 (THead k (lift h d t0) (lift h (s k d) t1)))))))))))) t)))).
1065
1066 theorem lift_gen_lref:
1067  \forall (t: T).(\forall (d: nat).(\forall (h: nat).(\forall (i: nat).((eq T 
1068 (TLRef i) (lift h d t)) \to (or (land (lt i d) (eq T t (TLRef i))) (land (le 
1069 (plus d h) i) (eq T t (TLRef (minus i h)))))))))
1070 \def
1071  \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (d: nat).(\forall (h: 
1072 nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t0)) \to (or (land (lt i d) 
1073 (eq T t0 (TLRef i))) (land (le (plus d h) i) (eq T t0 (TLRef (minus i 
1074 h)))))))))) (\lambda (n: nat).(\lambda (d: nat).(\lambda (h: nat).(\lambda 
1075 (i: nat).(\lambda (H: (eq T (TLRef i) (lift h d (TSort n)))).(let H0 \def 
1076 (eq_ind T (lift h d (TSort n)) (\lambda (t: T).(eq T (TLRef i) t)) H (TSort 
1077 n) (lift_sort n h d)) in (let H1 \def (eq_ind T (TLRef i) (\lambda (ee: 
1078 T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
1079 (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (TSort n) 
1080 H0) in (False_ind (or (land (lt i d) (eq T (TSort n) (TLRef i))) (land (le 
1081 (plus d h) i) (eq T (TSort n) (TLRef (minus i h))))) H1)))))))) (\lambda (n: 
1082 nat).(\lambda (d: nat).(\lambda (h: nat).(\lambda (i: nat).(\lambda (H: (eq T 
1083 (TLRef i) (lift h d (TLRef n)))).(lt_le_e n d (or (land (lt i d) (eq T (TLRef 
1084 n) (TLRef i))) (land (le (plus d h) i) (eq T (TLRef n) (TLRef (minus i h))))) 
1085 (\lambda (H0: (lt n d)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda 
1086 (t: T).(eq T (TLRef i) t)) H (TLRef n) (lift_lref_lt n h d H0)) in (let H2 
1087 \def (f_equal T nat (\lambda (e: T).(match e return (\lambda (_: T).nat) with 
1088 [(TSort _) \Rightarrow i | (TLRef n) \Rightarrow n | (THead _ _ _) 
1089 \Rightarrow i])) (TLRef i) (TLRef n) H1) in (eq_ind_r nat n (\lambda (n0: 
1090 nat).(or (land (lt n0 d) (eq T (TLRef n) (TLRef n0))) (land (le (plus d h) 
1091 n0) (eq T (TLRef n) (TLRef (minus n0 h)))))) (or_introl (land (lt n d) (eq T 
1092 (TLRef n) (TLRef n))) (land (le (plus d h) n) (eq T (TLRef n) (TLRef (minus n 
1093 h)))) (conj (lt n d) (eq T (TLRef n) (TLRef n)) H0 (refl_equal T (TLRef n)))) 
1094 i H2)))) (\lambda (H0: (le d n)).(let H1 \def (eq_ind T (lift h d (TLRef n)) 
1095 (\lambda (t: T).(eq T (TLRef i) t)) H (TLRef (plus n h)) (lift_lref_ge n h d 
1096 H0)) in (let H2 \def (f_equal T nat (\lambda (e: T).(match e return (\lambda 
1097 (_: T).nat) with [(TSort _) \Rightarrow i | (TLRef n) \Rightarrow n | (THead 
1098 _ _ _) \Rightarrow i])) (TLRef i) (TLRef (plus n h)) H1) in (eq_ind_r nat 
1099 (plus n h) (\lambda (n0: nat).(or (land (lt n0 d) (eq T (TLRef n) (TLRef 
1100 n0))) (land (le (plus d h) n0) (eq T (TLRef n) (TLRef (minus n0 h)))))) 
1101 (eq_ind_r nat n (\lambda (n0: nat).(or (land (lt (plus n h) d) (eq T (TLRef 
1102 n) (TLRef (plus n h)))) (land (le (plus d h) (plus n h)) (eq T (TLRef n) 
1103 (TLRef n0))))) (or_intror (land (lt (plus n h) d) (eq T (TLRef n) (TLRef 
1104 (plus n h)))) (land (le (plus d h) (plus n h)) (eq T (TLRef n) (TLRef n))) 
1105 (conj (le (plus d h) (plus n h)) (eq T (TLRef n) (TLRef n)) (plus_le_compat d 
1106 n h h H0 (le_n h)) (refl_equal T (TLRef n)))) (minus (plus n h) h) 
1107 (minus_plus_r n h)) i H2)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda 
1108 (_: ((\forall (d: nat).(\forall (h: nat).(\forall (i: nat).((eq T (TLRef i) 
1109 (lift h d t0)) \to (or (land (lt i d) (eq T t0 (TLRef i))) (land (le (plus d 
1110 h) i) (eq T t0 (TLRef (minus i h))))))))))).(\lambda (t1: T).(\lambda (_: 
1111 ((\forall (d: nat).(\forall (h: nat).(\forall (i: nat).((eq T (TLRef i) (lift 
1112 h d t1)) \to (or (land (lt i d) (eq T t1 (TLRef i))) (land (le (plus d h) i) 
1113 (eq T t1 (TLRef (minus i h))))))))))).(\lambda (d: nat).(\lambda (h: 
1114 nat).(\lambda (i: nat).(\lambda (H1: (eq T (TLRef i) (lift h d (THead k t0 
1115 t1)))).(let H2 \def (eq_ind T (lift h d (THead k t0 t1)) (\lambda (t: T).(eq 
1116 T (TLRef i) t)) H1 (THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k 
1117 t0 t1 h d)) in (let H3 \def (eq_ind T (TLRef i) (\lambda (ee: T).(match ee 
1118 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
1119 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead k (lift h d 
1120 t0) (lift h (s k d) t1)) H2) in (False_ind (or (land (lt i d) (eq T (THead k 
1121 t0 t1) (TLRef i))) (land (le (plus d h) i) (eq T (THead k t0 t1) (TLRef 
1122 (minus i h))))) H3)))))))))))) t).
1123
1124 theorem lift_gen_lref_lt:
1125  \forall (h: nat).(\forall (d: nat).(\forall (n: nat).((lt n d) \to (\forall 
1126 (t: T).((eq T (TLRef n) (lift h d t)) \to (eq T t (TLRef n)))))))
1127 \def
1128  \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (H: (lt n 
1129 d)).(\lambda (t: T).(T_ind (\lambda (t0: T).((eq T (TLRef n) (lift h d t0)) 
1130 \to (eq T t0 (TLRef n)))) (\lambda (n0: nat).(\lambda (H0: (eq T (TLRef n) 
1131 (lift h d (TSort n0)))).(sym_eq T (TLRef n) (TSort n0) H0))) (\lambda (n0: 
1132 nat).(\lambda (H0: (eq T (TLRef n) (lift h d (TLRef n0)))).(lt_le_e n0 d (eq 
1133 T (TLRef n0) (TLRef n)) (\lambda (H1: (lt n0 d)).(let H2 \def (eq_ind T (lift 
1134 h d (TLRef n0)) (\lambda (t: T).(eq T (TLRef n) t)) H0 (TLRef n0) 
1135 (lift_lref_lt n0 h d H1)) in (sym_eq T (TLRef n) (TLRef n0) H2))) (\lambda 
1136 (H1: (le d n0)).(let H2 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t: 
1137 T).(eq T (TLRef n) t)) H0 (TLRef (plus n0 h)) (lift_lref_ge n0 h d H1)) in 
1138 (let H3 \def (match H2 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T 
1139 t (TLRef (plus n0 h))) \to (eq T (TLRef n0) (TLRef n))))) with [refl_equal 
1140 \Rightarrow (\lambda (H2: (eq T (TLRef n) (TLRef (plus n0 h)))).(let H3 \def 
1141 (f_equal T nat (\lambda (e: T).(match e return (\lambda (_: T).nat) with 
1142 [(TSort _) \Rightarrow n | (TLRef n) \Rightarrow n | (THead _ _ _) 
1143 \Rightarrow n])) (TLRef n) (TLRef (plus n0 h)) H2) in (eq_ind nat (plus n0 h) 
1144 (\lambda (n: nat).(eq T (TLRef n0) (TLRef n))) (let H0 \def (eq_ind nat n 
1145 (\lambda (n: nat).(lt n d)) H (plus n0 h) H3) in (le_false d n0 (eq T (TLRef 
1146 n0) (TLRef (plus n0 h))) H1 (lt_le_S n0 d (le_lt_trans n0 (plus n0 h) d 
1147 (le_plus_l n0 h) H0)))) n (sym_eq nat n (plus n0 h) H3))))]) in (H3 
1148 (refl_equal T (TLRef (plus n0 h)))))))))) (\lambda (k: K).(\lambda (t0: 
1149 T).(\lambda (_: (((eq T (TLRef n) (lift h d t0)) \to (eq T t0 (TLRef 
1150 n))))).(\lambda (t1: T).(\lambda (_: (((eq T (TLRef n) (lift h d t1)) \to (eq 
1151 T t1 (TLRef n))))).(\lambda (H2: (eq T (TLRef n) (lift h d (THead k t0 
1152 t1)))).(let H3 \def (eq_ind T (lift h d (THead k t0 t1)) (\lambda (t: T).(eq 
1153 T (TLRef n) t)) H2 (THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k 
1154 t0 t1 h d)) in (let H4 \def (match H3 return (\lambda (t: T).(\lambda (_: (eq 
1155 ? ? t)).((eq T t (THead k (lift h d t0) (lift h (s k d) t1))) \to (eq T 
1156 (THead k t0 t1) (TLRef n))))) with [refl_equal \Rightarrow (\lambda (H3: (eq 
1157 T (TLRef n) (THead k (lift h d t0) (lift h (s k d) t1)))).(let H4 \def 
1158 (eq_ind T (TLRef n) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
1159 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ 
1160 _) \Rightarrow False])) I (THead k (lift h d t0) (lift h (s k d) t1)) H3) in 
1161 (False_ind (eq T (THead k t0 t1) (TLRef n)) H4)))]) in (H4 (refl_equal T 
1162 (THead k (lift h d t0) (lift h (s k d) t1)))))))))))) t))))).
1163
1164 theorem lift_gen_lref_false:
1165  \forall (h: nat).(\forall (d: nat).(\forall (n: nat).((le d n) \to ((lt n 
1166 (plus d h)) \to (\forall (t: T).((eq T (TLRef n) (lift h d t)) \to (\forall 
1167 (P: Prop).P)))))))
1168 \def
1169  \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (H: (le d 
1170 n)).(\lambda (H0: (lt n (plus d h))).(\lambda (t: T).(T_ind (\lambda (t0: 
1171 T).((eq T (TLRef n) (lift h d t0)) \to (\forall (P: Prop).P))) (\lambda (n0: 
1172 nat).(\lambda (H1: (eq T (TLRef n) (lift h d (TSort n0)))).(\lambda (P: 
1173 Prop).(let H2 \def (match H1 return (\lambda (t: T).(\lambda (_: (eq ? ? 
1174 t)).((eq T t (lift h d (TSort n0))) \to P))) with [refl_equal \Rightarrow 
1175 (\lambda (H2: (eq T (TLRef n) (lift h d (TSort n0)))).(let H3 \def (eq_ind T 
1176 (TLRef n) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort 
1177 _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow 
1178 False])) I (lift h d (TSort n0)) H2) in (False_ind P H3)))]) in (H2 
1179 (refl_equal T (lift h d (TSort n0)))))))) (\lambda (n0: nat).(\lambda (H1: 
1180 (eq T (TLRef n) (lift h d (TLRef n0)))).(\lambda (P: Prop).(lt_le_e n0 d P 
1181 (\lambda (H2: (lt n0 d)).(let H3 \def (eq_ind T (lift h d (TLRef n0)) 
1182 (\lambda (t: T).(eq T (TLRef n) t)) H1 (TLRef n0) (lift_lref_lt n0 h d H2)) 
1183 in (let H4 \def (match H3 return (\lambda (t: T).(\lambda (_: (eq ? ? 
1184 t)).((eq T t (TLRef n0)) \to P))) with [refl_equal \Rightarrow (\lambda (H3: 
1185 (eq T (TLRef n) (TLRef n0))).(let H4 \def (f_equal T nat (\lambda (e: 
1186 T).(match e return (\lambda (_: T).nat) with [(TSort _) \Rightarrow n | 
1187 (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow n])) (TLRef n) (TLRef n0) 
1188 H3) in (eq_ind nat n0 (\lambda (_: nat).P) (let H1 \def (eq_ind_r nat n0 
1189 (\lambda (n: nat).(lt n d)) H2 n H4) in (le_false d n P H H1)) n (sym_eq nat 
1190 n n0 H4))))]) in (H4 (refl_equal T (TLRef n0)))))) (\lambda (H2: (le d 
1191 n0)).(let H3 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t: T).(eq T 
1192 (TLRef n) t)) H1 (TLRef (plus n0 h)) (lift_lref_ge n0 h d H2)) in (let H4 
1193 \def (match H3 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t 
1194 (TLRef (plus n0 h))) \to P))) with [refl_equal \Rightarrow (\lambda (H3: (eq 
1195 T (TLRef n) (TLRef (plus n0 h)))).(let H4 \def (f_equal T nat (\lambda (e: 
1196 T).(match e return (\lambda (_: T).nat) with [(TSort _) \Rightarrow n | 
1197 (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow n])) (TLRef n) (TLRef 
1198 (plus n0 h)) H3) in (eq_ind nat (plus n0 h) (\lambda (_: nat).P) (let H1 \def 
1199 (eq_ind nat n (\lambda (n: nat).(lt n (plus d h))) H0 (plus n0 h) H4) in 
1200 (le_false d n0 P H2 (lt_le_S n0 d (simpl_lt_plus_r h n0 d H1)))) n (sym_eq 
1201 nat n (plus n0 h) H4))))]) in (H4 (refl_equal T (TLRef (plus n0 h))))))))))) 
1202 (\lambda (k: K).(\lambda (t0: T).(\lambda (_: (((eq T (TLRef n) (lift h d 
1203 t0)) \to (\forall (P: Prop).P)))).(\lambda (t1: T).(\lambda (_: (((eq T 
1204 (TLRef n) (lift h d t1)) \to (\forall (P: Prop).P)))).(\lambda (H3: (eq T 
1205 (TLRef n) (lift h d (THead k t0 t1)))).(\lambda (P: Prop).(let H4 \def 
1206 (eq_ind T (lift h d (THead k t0 t1)) (\lambda (t: T).(eq T (TLRef n) t)) H3 
1207 (THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k t0 t1 h d)) in (let 
1208 H5 \def (match H4 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t 
1209 (THead k (lift h d t0) (lift h (s k d) t1))) \to P))) with [refl_equal 
1210 \Rightarrow (\lambda (H4: (eq T (TLRef n) (THead k (lift h d t0) (lift h (s k 
1211 d) t1)))).(let H5 \def (eq_ind T (TLRef n) (\lambda (e: T).(match e return 
1212 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
1213 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead k (lift h d 
1214 t0) (lift h (s k d) t1)) H4) in (False_ind P H5)))]) in (H5 (refl_equal T 
1215 (THead k (lift h d t0) (lift h (s k d) t1))))))))))))) t)))))).
1216
1217 theorem lift_gen_lref_ge:
1218  \forall (h: nat).(\forall (d: nat).(\forall (n: nat).((le d n) \to (\forall 
1219 (t: T).((eq T (TLRef (plus n h)) (lift h d t)) \to (eq T t (TLRef n)))))))
1220 \def
1221  \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (H: (le d 
1222 n)).(\lambda (t: T).(T_ind (\lambda (t0: T).((eq T (TLRef (plus n h)) (lift h 
1223 d t0)) \to (eq T t0 (TLRef n)))) (\lambda (n0: nat).(\lambda (H0: (eq T 
1224 (TLRef (plus n h)) (lift h d (TSort n0)))).(let H1 \def (match H0 return 
1225 (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (lift h d (TSort n0))) \to 
1226 (eq T (TSort n0) (TLRef n))))) with [refl_equal \Rightarrow (\lambda (H1: (eq 
1227 T (TLRef (plus n h)) (lift h d (TSort n0)))).(let H2 \def (eq_ind T (TLRef 
1228 (plus n h)) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
1229 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) 
1230 \Rightarrow False])) I (lift h d (TSort n0)) H1) in (False_ind (eq T (TSort 
1231 n0) (TLRef n)) H2)))]) in (H1 (refl_equal T (lift h d (TSort n0))))))) 
1232 (\lambda (n0: nat).(\lambda (H0: (eq T (TLRef (plus n h)) (lift h d (TLRef 
1233 n0)))).(lt_le_e n0 d (eq T (TLRef n0) (TLRef n)) (\lambda (H1: (lt n0 
1234 d)).(let H2 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t: T).(eq T (TLRef 
1235 (plus n h)) t)) H0 (TLRef n0) (lift_lref_lt n0 h d H1)) in (let H3 \def 
1236 (match H2 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (TLRef 
1237 n0)) \to (eq T (TLRef n0) (TLRef n))))) with [refl_equal \Rightarrow (\lambda 
1238 (H2: (eq T (TLRef (plus n h)) (TLRef n0))).(let H3 \def (f_equal T nat 
1239 (\lambda (e: T).(match e return (\lambda (_: T).nat) with [(TSort _) 
1240 \Rightarrow ((let rec plus (n: nat) on n: (nat \to nat) \def (\lambda (m: 
1241 nat).(match n with [O \Rightarrow m | (S p) \Rightarrow (S (plus p m))])) in 
1242 plus) n h) | (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow ((let rec 
1243 plus (n: nat) on n: (nat \to nat) \def (\lambda (m: nat).(match n with [O 
1244 \Rightarrow m | (S p) \Rightarrow (S (plus p m))])) in plus) n h)])) (TLRef 
1245 (plus n h)) (TLRef n0) H2) in (eq_ind nat (plus n h) (\lambda (n0: nat).(eq T 
1246 (TLRef n0) (TLRef n))) (let H0 \def (eq_ind_r nat n0 (\lambda (n: nat).(lt n 
1247 d)) H1 (plus n h) H3) in (le_false d n (eq T (TLRef (plus n h)) (TLRef n)) H 
1248 (lt_le_S n d (le_lt_trans n (plus n h) d (le_plus_l n h) H0)))) n0 H3)))]) in 
1249 (H3 (refl_equal T (TLRef n0)))))) (\lambda (H1: (le d n0)).(let H2 \def 
1250 (eq_ind T (lift h d (TLRef n0)) (\lambda (t: T).(eq T (TLRef (plus n h)) t)) 
1251 H0 (TLRef (plus n0 h)) (lift_lref_ge n0 h d H1)) in (let H3 \def (match H2 
1252 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (TLRef (plus n0 h))) 
1253 \to (eq T (TLRef n0) (TLRef n))))) with [refl_equal \Rightarrow (\lambda (H2: 
1254 (eq T (TLRef (plus n h)) (TLRef (plus n0 h)))).(let H3 \def (f_equal T nat 
1255 (\lambda (e: T).(match e return (\lambda (_: T).nat) with [(TSort _) 
1256 \Rightarrow ((let rec plus (n: nat) on n: (nat \to nat) \def (\lambda (m: 
1257 nat).(match n with [O \Rightarrow m | (S p) \Rightarrow (S (plus p m))])) in 
1258 plus) n h) | (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow ((let rec 
1259 plus (n: nat) on n: (nat \to nat) \def (\lambda (m: nat).(match n with [O 
1260 \Rightarrow m | (S p) \Rightarrow (S (plus p m))])) in plus) n h)])) (TLRef 
1261 (plus n h)) (TLRef (plus n0 h)) H2) in (eq_ind nat (plus n h) (\lambda (_: 
1262 nat).(eq T (TLRef n0) (TLRef n))) (f_equal nat T TLRef n0 n (simpl_plus_r h 
1263 n0 n (sym_eq nat (plus n h) (plus n0 h) H3))) (plus n0 h) H3)))]) in (H3 
1264 (refl_equal T (TLRef (plus n0 h)))))))))) (\lambda (k: K).(\lambda (t0: 
1265 T).(\lambda (_: (((eq T (TLRef (plus n h)) (lift h d t0)) \to (eq T t0 (TLRef 
1266 n))))).(\lambda (t1: T).(\lambda (_: (((eq T (TLRef (plus n h)) (lift h d 
1267 t1)) \to (eq T t1 (TLRef n))))).(\lambda (H2: (eq T (TLRef (plus n h)) (lift 
1268 h d (THead k t0 t1)))).(let H3 \def (eq_ind T (lift h d (THead k t0 t1)) 
1269 (\lambda (t: T).(eq T (TLRef (plus n h)) t)) H2 (THead k (lift h d t0) (lift 
1270 h (s k d) t1)) (lift_head k t0 t1 h d)) in (let H4 \def (match H3 return 
1271 (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead k (lift h d t0) 
1272 (lift h (s k d) t1))) \to (eq T (THead k t0 t1) (TLRef n))))) with 
1273 [refl_equal \Rightarrow (\lambda (H3: (eq T (TLRef (plus n h)) (THead k (lift 
1274 h d t0) (lift h (s k d) t1)))).(let H4 \def (eq_ind T (TLRef (plus n h)) 
1275 (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
1276 \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow 
1277 False])) I (THead k (lift h d t0) (lift h (s k d) t1)) H3) in (False_ind (eq 
1278 T (THead k t0 t1) (TLRef n)) H4)))]) in (H4 (refl_equal T (THead k (lift h d 
1279 t0) (lift h (s k d) t1)))))))))))) t))))).
1280
1281 theorem lift_gen_head:
1282  \forall (k: K).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h: 
1283 nat).(\forall (d: nat).((eq T (THead k u t) (lift h d x)) \to (ex3_2 T T 
1284 (\lambda (y: T).(\lambda (z: T).(eq T x (THead k y z)))) (\lambda (y: 
1285 T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
1286 T).(eq T t (lift h (s k d) z)))))))))))
1287 \def
1288  \lambda (k: K).(\lambda (u: T).(\lambda (t: T).(\lambda (x: T).(T_ind 
1289 (\lambda (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k u t) 
1290 (lift h d t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead 
1291 k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda 
1292 (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z))))))))) (\lambda (n: 
1293 nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k u t) 
1294 (lift h d (TSort n)))).(let H0 \def (match H return (\lambda (t0: T).(\lambda 
1295 (_: (eq ? ? t0)).((eq T t0 (lift h d (TSort n))) \to (ex3_2 T T (\lambda (y: 
1296 T).(\lambda (z: T).(eq T (TSort n) (THead k y z)))) (\lambda (y: T).(\lambda 
1297 (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift 
1298 h (s k d) z)))))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead k 
1299 u t) (lift h d (TSort n)))).(let H1 \def (eq_ind T (THead k u t) (\lambda (e: 
1300 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
1301 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (lift h d 
1302 (TSort n)) H0) in (False_ind (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T 
1303 (TSort n) (THead k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d 
1304 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z))))) H1)))]) 
1305 in (H0 (refl_equal T (lift h d (TSort n))))))))) (\lambda (n: nat).(\lambda 
1306 (h: nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k u t) (lift h d (TLRef 
1307 n)))).(lt_le_e n d (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) 
1308 (THead k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) 
1309 (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z))))) (\lambda (H0: 
1310 (lt n d)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda (t0: T).(eq T 
1311 (THead k u t) t0)) H (TLRef n) (lift_lref_lt n h d H0)) in (let H2 \def 
1312 (match H1 return (\lambda (t0: T).(\lambda (_: (eq ? ? t0)).((eq T t0 (TLRef 
1313 n)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead k y 
1314 z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: 
1315 T).(\lambda (z: T).(eq T t (lift h (s k d) z)))))))) with [refl_equal 
1316 \Rightarrow (\lambda (H1: (eq T (THead k u t) (TLRef n))).(let H2 \def 
1317 (eq_ind T (THead k u t) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
1318 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ 
1319 _) \Rightarrow True])) I (TLRef n) H1) in (False_ind (ex3_2 T T (\lambda (y: 
1320 T).(\lambda (z: T).(eq T (TLRef n) (THead k y z)))) (\lambda (y: T).(\lambda 
1321 (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift 
1322 h (s k d) z))))) H2)))]) in (H2 (refl_equal T (TLRef n)))))) (\lambda (H0: 
1323 (le d n)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda (t0: T).(eq T 
1324 (THead k u t) t0)) H (TLRef (plus n h)) (lift_lref_ge n h d H0)) in (let H2 
1325 \def (match H1 return (\lambda (t0: T).(\lambda (_: (eq ? ? t0)).((eq T t0 
1326 (TLRef (plus n h))) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T 
1327 (TLRef n) (THead k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d 
1328 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z)))))))) with 
1329 [refl_equal \Rightarrow (\lambda (H1: (eq T (THead k u t) (TLRef (plus n 
1330 h)))).(let H2 \def (eq_ind T (THead k u t) (\lambda (e: T).(match e return 
1331 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
1332 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef (plus n h)) 
1333 H1) in (False_ind (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) 
1334 (THead k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) 
1335 (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z))))) H2)))]) in (H2 
1336 (refl_equal T (TLRef (plus n h)))))))))))) (\lambda (k0: K).(\lambda (t0: 
1337 T).(\lambda (_: ((\forall (h: nat).(\forall (d: nat).((eq T (THead k u t) 
1338 (lift h d t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead 
1339 k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda 
1340 (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z)))))))))).(\lambda (t1: 
1341 T).(\lambda (_: ((\forall (h: nat).(\forall (d: nat).((eq T (THead k u t) 
1342 (lift h d t1)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t1 (THead 
1343 k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda 
1344 (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z)))))))))).(\lambda (h: 
1345 nat).(\lambda (d: nat).(\lambda (H1: (eq T (THead k u t) (lift h d (THead k0 
1346 t0 t1)))).(let H2 \def (eq_ind T (lift h d (THead k0 t0 t1)) (\lambda (t0: 
1347 T).(eq T (THead k u t) t0)) H1 (THead k0 (lift h d t0) (lift h (s k0 d) t1)) 
1348 (lift_head k0 t0 t1 h d)) in (let H3 \def (match H2 return (\lambda (t2: 
1349 T).(\lambda (_: (eq ? ? t2)).((eq T t2 (THead k0 (lift h d t0) (lift h (s k0 
1350 d) t1))) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k0 t0 
1351 t1) (THead k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) 
1352 (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z)))))))) with 
1353 [refl_equal \Rightarrow (\lambda (H2: (eq T (THead k u t) (THead k0 (lift h d 
1354 t0) (lift h (s k0 d) t1)))).(let H3 \def (f_equal T T (\lambda (e: T).(match 
1355 e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t | (TLRef _) 
1356 \Rightarrow t | (THead _ _ t) \Rightarrow t])) (THead k u t) (THead k0 (lift 
1357 h d t0) (lift h (s k0 d) t1)) H2) in ((let H4 \def (f_equal T T (\lambda (e: 
1358 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef 
1359 _) \Rightarrow u | (THead _ t _) \Rightarrow t])) (THead k u t) (THead k0 
1360 (lift h d t0) (lift h (s k0 d) t1)) H2) in ((let H5 \def (f_equal T K 
1361 (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort _) 
1362 \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) \Rightarrow k])) 
1363 (THead k u t) (THead k0 (lift h d t0) (lift h (s k0 d) t1)) H2) in (eq_ind K 
1364 k0 (\lambda (k: K).((eq T u (lift h d t0)) \to ((eq T t (lift h (s k0 d) t1)) 
1365 \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k0 t0 t1) (THead 
1366 k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda 
1367 (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z)))))))) (\lambda (H6: (eq T 
1368 u (lift h d t0))).(eq_ind T (lift h d t0) (\lambda (t2: T).((eq T t (lift h 
1369 (s k0 d) t1)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k0 
1370 t0 t1) (THead k0 y z)))) (\lambda (y: T).(\lambda (_: T).(eq T t2 (lift h d 
1371 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k0 d) z))))))) 
1372 (\lambda (H7: (eq T t (lift h (s k0 d) t1))).(eq_ind T (lift h (s k0 d) t1) 
1373 (\lambda (t: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k0 t0 
1374 t1) (THead k0 y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t0) 
1375 (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k0 d) 
1376 z)))))) (ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k0 t0 
1377 t1) (THead k0 y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t0) 
1378 (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h (s k0 d) t1) 
1379 (lift h (s k0 d) z)))) t0 t1 (refl_equal T (THead k0 t0 t1)) (refl_equal T 
1380 (lift h d t0)) (refl_equal T (lift h (s k0 d) t1))) t (sym_eq T t (lift h (s 
1381 k0 d) t1) H7))) u (sym_eq T u (lift h d t0) H6))) k (sym_eq K k k0 H5))) H4)) 
1382 H3)))]) in (H3 (refl_equal T (THead k0 (lift h d t0) (lift h (s k0 d) 
1383 t1)))))))))))))) x)))).
1384
1385 theorem lift_gen_bind:
1386  \forall (b: B).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h: 
1387 nat).(\forall (d: nat).((eq T (THead (Bind b) u t) (lift h d x)) \to (ex3_2 T 
1388 T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Bind b) y z)))) (\lambda 
1389 (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
1390 T).(eq T t (lift h (S d) z)))))))))))
1391 \def
1392  \lambda (b: B).(\lambda (u: T).(\lambda (t: T).(\lambda (x: T).(T_ind 
1393 (\lambda (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead (Bind b) u 
1394 t) (lift h d t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 
1395 (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d 
1396 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) z))))))))) 
1397 (\lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T 
1398 (THead (Bind b) u t) (lift h d (TSort n)))).(let H0 \def (match H return 
1399 (\lambda (t0: T).(\lambda (_: (eq ? ? t0)).((eq T t0 (lift h d (TSort n))) 
1400 \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TSort n) (THead (Bind 
1401 b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda 
1402 (_: T).(\lambda (z: T).(eq T t (lift h (S d) z)))))))) with [refl_equal 
1403 \Rightarrow (\lambda (H0: (eq T (THead (Bind b) u t) (lift h d (TSort 
1404 n)))).(let H1 \def (eq_ind T (THead (Bind b) u t) (\lambda (e: T).(match e 
1405 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
1406 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (lift h d (TSort n)) 
1407 H0) in (False_ind (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TSort n) 
1408 (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d 
1409 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) z))))) H1)))]) in 
1410 (H0 (refl_equal T (lift h d (TSort n))))))))) (\lambda (n: nat).(\lambda (h: 
1411 nat).(\lambda (d: nat).(\lambda (H: (eq T (THead (Bind b) u t) (lift h d 
1412 (TLRef n)))).(lt_le_e n d (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T 
1413 (TLRef n) (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u 
1414 (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) z))))) 
1415 (\lambda (H0: (lt n d)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda 
1416 (t0: T).(eq T (THead (Bind b) u t) t0)) H (TLRef n) (lift_lref_lt n h d H0)) 
1417 in (let H2 \def (match H1 return (\lambda (t0: T).(\lambda (_: (eq ? ? 
1418 t0)).((eq T t0 (TLRef n)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq 
1419 T (TLRef n) (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u 
1420 (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) 
1421 z)))))))) with [refl_equal \Rightarrow (\lambda (H1: (eq T (THead (Bind b) u 
1422 t) (TLRef n))).(let H2 \def (eq_ind T (THead (Bind b) u t) (\lambda (e: 
1423 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
1424 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) 
1425 H1) in (False_ind (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) 
1426 (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d 
1427 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) z))))) H2)))]) in 
1428 (H2 (refl_equal T (TLRef n)))))) (\lambda (H0: (le d n)).(let H1 \def (eq_ind 
1429 T (lift h d (TLRef n)) (\lambda (t0: T).(eq T (THead (Bind b) u t) t0)) H 
1430 (TLRef (plus n h)) (lift_lref_ge n h d H0)) in (let H2 \def (match H1 return 
1431 (\lambda (t0: T).(\lambda (_: (eq ? ? t0)).((eq T t0 (TLRef (plus n h))) \to 
1432 (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead (Bind b) y 
1433 z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: 
1434 T).(\lambda (z: T).(eq T t (lift h (S d) z)))))))) with [refl_equal 
1435 \Rightarrow (\lambda (H1: (eq T (THead (Bind b) u t) (TLRef (plus n 
1436 h)))).(let H2 \def (eq_ind T (THead (Bind b) u t) (\lambda (e: T).(match e 
1437 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
1438 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef (plus n h)) 
1439 H1) in (False_ind (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) 
1440 (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d 
1441 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) z))))) H2)))]) in 
1442 (H2 (refl_equal T (TLRef (plus n h)))))))))))) (\lambda (k: K).(\lambda (t0: 
1443 T).(\lambda (_: ((\forall (h: nat).(\forall (d: nat).((eq T (THead (Bind b) u 
1444 t) (lift h d t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 
1445 (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d 
1446 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) 
1447 z)))))))))).(\lambda (t1: T).(\lambda (_: ((\forall (h: nat).(\forall (d: 
1448 nat).((eq T (THead (Bind b) u t) (lift h d t1)) \to (ex3_2 T T (\lambda (y: 
1449 T).(\lambda (z: T).(eq T t1 (THead (Bind b) y z)))) (\lambda (y: T).(\lambda 
1450 (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift 
1451 h (S d) z)))))))))).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: (eq T 
1452 (THead (Bind b) u t) (lift h d (THead k t0 t1)))).(let H2 \def (eq_ind T 
1453 (lift h d (THead k t0 t1)) (\lambda (t0: T).(eq T (THead (Bind b) u t) t0)) 
1454 H1 (THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k t0 t1 h d)) in 
1455 (let H3 \def (match H2 return (\lambda (t2: T).(\lambda (_: (eq ? ? t2)).((eq 
1456 T t2 (THead k (lift h d t0) (lift h (s k d) t1))) \to (ex3_2 T T (\lambda (y: 
1457 T).(\lambda (z: T).(eq T (THead k t0 t1) (THead (Bind b) y z)))) (\lambda (y: 
1458 T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
1459 T).(eq T t (lift h (S d) z)))))))) with [refl_equal \Rightarrow (\lambda (H2: 
1460 (eq T (THead (Bind b) u t) (THead k (lift h d t0) (lift h (s k d) t1)))).(let 
1461 H3 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
1462 [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ _ t) 
1463 \Rightarrow t])) (THead (Bind b) u t) (THead k (lift h d t0) (lift h (s k d) 
1464 t1)) H2) in ((let H4 \def (f_equal T T (\lambda (e: T).(match e return 
1465 (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | 
1466 (THead _ t _) \Rightarrow t])) (THead (Bind b) u t) (THead k (lift h d t0) 
1467 (lift h (s k d) t1)) H2) in ((let H5 \def (f_equal T K (\lambda (e: T).(match 
1468 e return (\lambda (_: T).K) with [(TSort _) \Rightarrow (Bind b) | (TLRef _) 
1469 \Rightarrow (Bind b) | (THead k _ _) \Rightarrow k])) (THead (Bind b) u t) 
1470 (THead k (lift h d t0) (lift h (s k d) t1)) H2) in (eq_ind K (Bind b) 
1471 (\lambda (k: K).((eq T u (lift h d t0)) \to ((eq T t (lift h (s k d) t1)) \to 
1472 (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k t0 t1) (THead (Bind 
1473 b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda 
1474 (_: T).(\lambda (z: T).(eq T t (lift h (S d) z)))))))) (\lambda (H6: (eq T u 
1475 (lift h d t0))).(eq_ind T (lift h d t0) (\lambda (t2: T).((eq T t (lift h (s 
1476 (Bind b) d) t1)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead 
1477 (Bind b) t0 t1) (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T 
1478 t2 (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) 
1479 z))))))) (\lambda (H7: (eq T t (lift h (s (Bind b) d) t1))).(eq_ind T (lift h 
1480 (s (Bind b) d) t1) (\lambda (t: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: 
1481 T).(eq T (THead (Bind b) t0 t1) (THead (Bind b) y z)))) (\lambda (y: 
1482 T).(\lambda (_: T).(eq T (lift h d t0) (lift h d y)))) (\lambda (_: 
1483 T).(\lambda (z: T).(eq T t (lift h (S d) z)))))) (ex3_2_intro T T (\lambda 
1484 (y: T).(\lambda (z: T).(eq T (THead (Bind b) t0 t1) (THead (Bind b) y z)))) 
1485 (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t0) (lift h d y)))) (\lambda 
1486 (_: T).(\lambda (z: T).(eq T (lift h (s (Bind b) d) t1) (lift h (S d) z)))) 
1487 t0 t1 (refl_equal T (THead (Bind b) t0 t1)) (refl_equal T (lift h d t0)) 
1488 (refl_equal T (lift h (S d) t1))) t (sym_eq T t (lift h (s (Bind b) d) t1) 
1489 H7))) u (sym_eq T u (lift h d t0) H6))) k H5)) H4)) H3)))]) in (H3 
1490 (refl_equal T (THead k (lift h d t0) (lift h (s k d) t1)))))))))))))) x)))).
1491
1492 theorem lift_gen_flat:
1493  \forall (f: F).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h: 
1494 nat).(\forall (d: nat).((eq T (THead (Flat f) u t) (lift h d x)) \to (ex3_2 T 
1495 T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Flat f) y z)))) (\lambda 
1496 (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
1497 T).(eq T t (lift h d z)))))))))))
1498 \def
1499  \lambda (f: F).(\lambda (u: T).(\lambda (t: T).(\lambda (x: T).(T_ind 
1500 (\lambda (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead (Flat f) u 
1501 t) (lift h d t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 
1502 (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d 
1503 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h d z))))))))) (\lambda 
1504 (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T (THead (Flat 
1505 f) u t) (lift h d (TSort n)))).(let H0 \def (match H return (\lambda (t0: 
1506 T).(\lambda (_: (eq ? ? t0)).((eq T t0 (lift h d (TSort n))) \to (ex3_2 T T 
1507 (\lambda (y: T).(\lambda (z: T).(eq T (TSort n) (THead (Flat f) y z)))) 
1508 (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: 
1509 T).(\lambda (z: T).(eq T t (lift h d z)))))))) with [refl_equal \Rightarrow 
1510 (\lambda (H0: (eq T (THead (Flat f) u t) (lift h d (TSort n)))).(let H1 \def 
1511 (eq_ind T (THead (Flat f) u t) (\lambda (e: T).(match e return (\lambda (_: 
1512 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
1513 (THead _ _ _) \Rightarrow True])) I (lift h d (TSort n)) H0) in (False_ind 
1514 (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TSort n) (THead (Flat f) y 
1515 z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: 
1516 T).(\lambda (z: T).(eq T t (lift h d z))))) H1)))]) in (H0 (refl_equal T 
1517 (lift h d (TSort n))))))))) (\lambda (n: nat).(\lambda (h: nat).(\lambda (d: 
1518 nat).(\lambda (H: (eq T (THead (Flat f) u t) (lift h d (TLRef n)))).(lt_le_e 
1519 n d (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead (Flat 
1520 f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda 
1521 (_: T).(\lambda (z: T).(eq T t (lift h d z))))) (\lambda (H0: (lt n d)).(let 
1522 H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda (t0: T).(eq T (THead (Flat f) 
1523 u t) t0)) H (TLRef n) (lift_lref_lt n h d H0)) in (let H2 \def (match H1 
1524 return (\lambda (t0: T).(\lambda (_: (eq ? ? t0)).((eq T t0 (TLRef n)) \to 
1525 (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead (Flat f) y 
1526 z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: 
1527 T).(\lambda (z: T).(eq T t (lift h d z)))))))) with [refl_equal \Rightarrow 
1528 (\lambda (H1: (eq T (THead (Flat f) u t) (TLRef n))).(let H2 \def (eq_ind T 
1529 (THead (Flat f) u t) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
1530 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ 
1531 _) \Rightarrow True])) I (TLRef n) H1) in (False_ind (ex3_2 T T (\lambda (y: 
1532 T).(\lambda (z: T).(eq T (TLRef n) (THead (Flat f) y z)))) (\lambda (y: 
1533 T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
1534 T).(eq T t (lift h d z))))) H2)))]) in (H2 (refl_equal T (TLRef n)))))) 
1535 (\lambda (H0: (le d n)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda 
1536 (t0: T).(eq T (THead (Flat f) u t) t0)) H (TLRef (plus n h)) (lift_lref_ge n 
1537 h d H0)) in (let H2 \def (match H1 return (\lambda (t0: T).(\lambda (_: (eq ? 
1538 ? t0)).((eq T t0 (TLRef (plus n h))) \to (ex3_2 T T (\lambda (y: T).(\lambda 
1539 (z: T).(eq T (TLRef n) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: 
1540 T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h d 
1541 z)))))))) with [refl_equal \Rightarrow (\lambda (H1: (eq T (THead (Flat f) u 
1542 t) (TLRef (plus n h)))).(let H2 \def (eq_ind T (THead (Flat f) u t) (\lambda 
1543 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
1544 False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I 
1545 (TLRef (plus n h)) H1) in (False_ind (ex3_2 T T (\lambda (y: T).(\lambda (z: 
1546 T).(eq T (TLRef n) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: 
1547 T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h d 
1548 z))))) H2)))]) in (H2 (refl_equal T (TLRef (plus n h)))))))))))) (\lambda (k: 
1549 K).(\lambda (t0: T).(\lambda (_: ((\forall (h: nat).(\forall (d: nat).((eq T 
1550 (THead (Flat f) u t) (lift h d t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda 
1551 (z: T).(eq T t0 (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T 
1552 u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h d 
1553 z)))))))))).(\lambda (t1: T).(\lambda (_: ((\forall (h: nat).(\forall (d: 
1554 nat).((eq T (THead (Flat f) u t) (lift h d t1)) \to (ex3_2 T T (\lambda (y: 
1555 T).(\lambda (z: T).(eq T t1 (THead (Flat f) y z)))) (\lambda (y: T).(\lambda 
1556 (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift 
1557 h d z)))))))))).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: (eq T 
1558 (THead (Flat f) u t) (lift h d (THead k t0 t1)))).(let H2 \def (eq_ind T 
1559 (lift h d (THead k t0 t1)) (\lambda (t0: T).(eq T (THead (Flat f) u t) t0)) 
1560 H1 (THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k t0 t1 h d)) in 
1561 (let H3 \def (match H2 return (\lambda (t2: T).(\lambda (_: (eq ? ? t2)).((eq 
1562 T t2 (THead k (lift h d t0) (lift h (s k d) t1))) \to (ex3_2 T T (\lambda (y: 
1563 T).(\lambda (z: T).(eq T (THead k t0 t1) (THead (Flat f) y z)))) (\lambda (y: 
1564 T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
1565 T).(eq T t (lift h d z)))))))) with [refl_equal \Rightarrow (\lambda (H2: (eq 
1566 T (THead (Flat f) u t) (THead k (lift h d t0) (lift h (s k d) t1)))).(let H3 
1567 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
1568 [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ _ t) 
1569 \Rightarrow t])) (THead (Flat f) u t) (THead k (lift h d t0) (lift h (s k d) 
1570 t1)) H2) in ((let H4 \def (f_equal T T (\lambda (e: T).(match e return 
1571 (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | 
1572 (THead _ t _) \Rightarrow t])) (THead (Flat f) u t) (THead k (lift h d t0) 
1573 (lift h (s k d) t1)) H2) in ((let H5 \def (f_equal T K (\lambda (e: T).(match 
1574 e return (\lambda (_: T).K) with [(TSort _) \Rightarrow (Flat f) | (TLRef _) 
1575 \Rightarrow (Flat f) | (THead k _ _) \Rightarrow k])) (THead (Flat f) u t) 
1576 (THead k (lift h d t0) (lift h (s k d) t1)) H2) in (eq_ind K (Flat f) 
1577 (\lambda (k: K).((eq T u (lift h d t0)) \to ((eq T t (lift h (s k d) t1)) \to 
1578 (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k t0 t1) (THead (Flat 
1579 f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda 
1580 (_: T).(\lambda (z: T).(eq T t (lift h d z)))))))) (\lambda (H6: (eq T u 
1581 (lift h d t0))).(eq_ind T (lift h d t0) (\lambda (t2: T).((eq T t (lift h (s 
1582 (Flat f) d) t1)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead 
1583 (Flat f) t0 t1) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T 
1584 t2 (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h d z))))))) 
1585 (\lambda (H7: (eq T t (lift h (s (Flat f) d) t1))).(eq_ind T (lift h (s (Flat 
1586 f) d) t1) (\lambda (t: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T 
1587 (THead (Flat f) t0 t1) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: 
1588 T).(eq T (lift h d t0) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T 
1589 t (lift h d z)))))) (ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq T 
1590 (THead (Flat f) t0 t1) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: 
1591 T).(eq T (lift h d t0) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T 
1592 (lift h (s (Flat f) d) t1) (lift h d z)))) t0 t1 (refl_equal T (THead (Flat 
1593 f) t0 t1)) (refl_equal T (lift h d t0)) (refl_equal T (lift h d t1))) t 
1594 (sym_eq T t (lift h (s (Flat f) d) t1) H7))) u (sym_eq T u (lift h d t0) 
1595 H6))) k H5)) H4)) H3)))]) in (H3 (refl_equal T (THead k (lift h d t0) (lift h 
1596 (s k d) t1)))))))))))))) x)))).
1597
1598 theorem thead_x_lift_y_y:
1599  \forall (k: K).(\forall (t: T).(\forall (v: T).(\forall (h: nat).(\forall 
1600 (d: nat).((eq T (THead k v (lift h d t)) t) \to (\forall (P: Prop).P))))))
1601 \def
1602  \lambda (k: K).(\lambda (t: T).(T_ind (\lambda (t0: T).(\forall (v: 
1603 T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k v (lift h d t0)) t0) 
1604 \to (\forall (P: Prop).P)))))) (\lambda (n: nat).(\lambda (v: T).(\lambda (h: 
1605 nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k v (lift h d (TSort n))) 
1606 (TSort n))).(\lambda (P: Prop).(let H0 \def (eq_ind T (THead k v (lift h d 
1607 (TSort n))) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with 
1608 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
1609 \Rightarrow True])) I (TSort n) H) in (False_ind P H0)))))))) (\lambda (n: 
1610 nat).(\lambda (v: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T 
1611 (THead k v (lift h d (TLRef n))) (TLRef n))).(\lambda (P: Prop).(let H0 \def 
1612 (eq_ind T (THead k v (lift h d (TLRef n))) (\lambda (ee: T).(match ee return 
1613 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
1614 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) H) in 
1615 (False_ind P H0)))))))) (\lambda (k0: K).(\lambda (t0: T).(\lambda (_: 
1616 ((\forall (v: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k v (lift 
1617 h d t0)) t0) \to (\forall (P: Prop).P))))))).(\lambda (t1: T).(\lambda (H0: 
1618 ((\forall (v: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k v (lift 
1619 h d t1)) t1) \to (\forall (P: Prop).P))))))).(\lambda (v: T).(\lambda (h: 
1620 nat).(\lambda (d: nat).(\lambda (H1: (eq T (THead k v (lift h d (THead k0 t0 
1621 t1))) (THead k0 t0 t1))).(\lambda (P: Prop).(let H2 \def (f_equal T K 
1622 (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort _) 
1623 \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) \Rightarrow k])) 
1624 (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1) H1) in ((let H3 \def 
1625 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
1626 _) \Rightarrow v | (TLRef _) \Rightarrow v | (THead _ t _) \Rightarrow t])) 
1627 (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1) H1) in ((let H4 \def 
1628 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
1629 _) \Rightarrow (THead k0 ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: 
1630 T) on t: T \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) 
1631 \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | false 
1632 \Rightarrow (f i)])) | (THead k u t0) \Rightarrow (THead k (lref_map f d u) 
1633 (lref_map f (s k d) t0))]) in lref_map) (\lambda (x: nat).(plus x h)) d t0) 
1634 ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t 
1635 with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match 
1636 (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u 
1637 t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in 
1638 lref_map) (\lambda (x: nat).(plus x h)) (s k0 d) t1)) | (TLRef _) \Rightarrow 
1639 (THead k0 ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T 
1640 \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow 
1641 (TLRef (match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) 
1642 | (THead k u t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) 
1643 t0))]) in lref_map) (\lambda (x: nat).(plus x h)) d t0) ((let rec lref_map 
1644 (f: ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t with [(TSort n) 
1645 \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d) with 
1646 [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow 
1647 (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda 
1648 (x: nat).(plus x h)) (s k0 d) t1)) | (THead _ _ t) \Rightarrow t])) (THead k 
1649 v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1) H1) in (\lambda (_: (eq T v 
1650 t0)).(\lambda (H6: (eq K k k0)).(let H7 \def (eq_ind K k (\lambda (k: 
1651 K).(\forall (v: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k v 
1652 (lift h d t1)) t1) \to (\forall (P: Prop).P)))))) H0 k0 H6) in (let H8 \def 
1653 (eq_ind T (lift h d (THead k0 t0 t1)) (\lambda (t: T).(eq T t t1)) H4 (THead 
1654 k0 (lift h d t0) (lift h (s k0 d) t1)) (lift_head k0 t0 t1 h d)) in (H7 (lift 
1655 h d t0) h (s k0 d) H8 P)))))) H3)) H2)))))))))))) t)).
1656
1657 theorem lift_r:
1658  \forall (t: T).(\forall (d: nat).(eq T (lift O d t) t))
1659 \def
1660  \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (d: nat).(eq T (lift O d t0) 
1661 t0))) (\lambda (n: nat).(\lambda (_: nat).(refl_equal T (TSort n)))) (\lambda 
1662 (n: nat).(\lambda (d: nat).(lt_le_e n d (eq T (lift O d (TLRef n)) (TLRef n)) 
1663 (\lambda (H: (lt n d)).(eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (TLRef 
1664 n))) (refl_equal T (TLRef n)) (lift O d (TLRef n)) (lift_lref_lt n O d H))) 
1665 (\lambda (H: (le d n)).(eq_ind_r T (TLRef (plus n O)) (\lambda (t0: T).(eq T 
1666 t0 (TLRef n))) (f_equal nat T TLRef (plus n O) n (sym_eq nat n (plus n O) 
1667 (plus_n_O n))) (lift O d (TLRef n)) (lift_lref_ge n O d H)))))) (\lambda (k: 
1668 K).(\lambda (t0: T).(\lambda (H: ((\forall (d: nat).(eq T (lift O d t0) 
1669 t0)))).(\lambda (t1: T).(\lambda (H0: ((\forall (d: nat).(eq T (lift O d t1) 
1670 t1)))).(\lambda (d: nat).(eq_ind_r T (THead k (lift O d t0) (lift O (s k d) 
1671 t1)) (\lambda (t2: T).(eq T t2 (THead k t0 t1))) (sym_equal T (THead k t0 t1) 
1672 (THead k (lift O d t0) (lift O (s k d) t1)) (sym_equal T (THead k (lift O d 
1673 t0) (lift O (s k d) t1)) (THead k t0 t1) (sym_equal T (THead k t0 t1) (THead 
1674 k (lift O d t0) (lift O (s k d) t1)) (f_equal3 K T T T THead k k t0 (lift O d 
1675 t0) t1 (lift O (s k d) t1) (refl_equal K k) (sym_eq T (lift O d t0) t0 (H d)) 
1676 (sym_eq T (lift O (s k d) t1) t1 (H0 (s k d))))))) (lift O d (THead k t0 t1)) 
1677 (lift_head k t0 t1 O d)))))))) t).
1678
1679 theorem lift_lref_gt:
1680  \forall (d: nat).(\forall (n: nat).((lt d n) \to (eq T (lift (S O) d (TLRef 
1681 (pred n))) (TLRef n))))
1682 \def
1683  \lambda (d: nat).(\lambda (n: nat).(\lambda (H: (lt d n)).(eq_ind_r T (TLRef 
1684 (plus (pred n) (S O))) (\lambda (t: T).(eq T t (TLRef n))) (eq_ind nat (plus 
1685 (S O) (pred n)) (\lambda (n0: nat).(eq T (TLRef n0) (TLRef n))) (eq_ind nat n 
1686 (\lambda (n0: nat).(eq T (TLRef n0) (TLRef n))) (refl_equal T (TLRef n)) (S 
1687 (pred n)) (S_pred n d H)) (plus (pred n) (S O)) (plus_comm (S O) (pred n))) 
1688 (lift (S O) d (TLRef (pred n))) (lift_lref_ge (pred n) (S O) d (le_S_n d 
1689 (pred n) (eq_ind nat n (\lambda (n0: nat).(le (S d) n0)) H (S (pred n)) 
1690 (S_pred n d H))))))).
1691
1692 theorem lift_inj:
1693  \forall (x: T).(\forall (t: T).(\forall (h: nat).(\forall (d: nat).((eq T 
1694 (lift h d x) (lift h d t)) \to (eq T x t)))))
1695 \def
1696  \lambda (x: T).(T_ind (\lambda (t: T).(\forall (t0: T).(\forall (h: 
1697 nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to (eq T t 
1698 t0)))))) (\lambda (n: nat).(\lambda (t: T).(\lambda (h: nat).(\lambda (d: 
1699 nat).(\lambda (H: (eq T (lift h d (TSort n)) (lift h d t))).(let H0 \def 
1700 (eq_ind T (lift h d (TSort n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H 
1701 (TSort n) (lift_sort n h d)) in (sym_eq T t (TSort n) (lift_gen_sort h d n t 
1702 H0)))))))) (\lambda (n: nat).(\lambda (t: T).(\lambda (h: nat).(\lambda (d: 
1703 nat).(\lambda (H: (eq T (lift h d (TLRef n)) (lift h d t))).(lt_le_e n d (eq 
1704 T (TLRef n) t) (\lambda (H0: (lt n d)).(let H1 \def (eq_ind T (lift h d 
1705 (TLRef n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H (TLRef n) (lift_lref_lt 
1706 n h d H0)) in (sym_eq T t (TLRef n) (lift_gen_lref_lt h d n (lt_le_trans n d 
1707 d H0 (le_n d)) t H1)))) (\lambda (H0: (le d n)).(let H1 \def (eq_ind T (lift 
1708 h d (TLRef n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H (TLRef (plus n h)) 
1709 (lift_lref_ge n h d H0)) in (sym_eq T t (TLRef n) (lift_gen_lref_ge h d n H0 
1710 t H1)))))))))) (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (t: 
1711 T).(((\forall (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) 
1712 (lift h d t0)) \to (eq T t t0)))))) \to (\forall (t0: T).(((\forall (t: 
1713 T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t)) \to 
1714 (eq T t0 t)))))) \to (\forall (t1: T).(\forall (h: nat).(\forall (d: 
1715 nat).((eq T (lift h d (THead k0 t t0)) (lift h d t1)) \to (eq T (THead k0 t 
1716 t0) t1)))))))))) (\lambda (b: B).(\lambda (t: T).(\lambda (H: ((\forall (t0: 
1717 T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to 
1718 (eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (t: T).(\forall 
1719 (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t)) \to (eq T t0 
1720 t))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: 
1721 (eq T (lift h d (THead (Bind b) t t0)) (lift h d t1))).(let H2 \def (eq_ind T 
1722 (lift h d (THead (Bind b) t t0)) (\lambda (t: T).(eq T t (lift h d t1))) H1 
1723 (THead (Bind b) (lift h d t) (lift h (S d) t0)) (lift_bind b t t0 h d)) in 
1724 (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T t1 (THead (Bind b) y 
1725 z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t) (lift h d y)))) 
1726 (\lambda (_: T).(\lambda (z: T).(eq T (lift h (S d) t0) (lift h (S d) z)))) 
1727 (eq T (THead (Bind b) t t0) t1) (\lambda (x0: T).(\lambda (x1: T).(\lambda 
1728 (H3: (eq T t1 (THead (Bind b) x0 x1))).(\lambda (H4: (eq T (lift h d t) (lift 
1729 h d x0))).(\lambda (H5: (eq T (lift h (S d) t0) (lift h (S d) x1))).(eq_ind_r 
1730 T (THead (Bind b) x0 x1) (\lambda (t2: T).(eq T (THead (Bind b) t t0) t2)) 
1731 (sym_equal T (THead (Bind b) x0 x1) (THead (Bind b) t t0) (sym_equal T (THead 
1732 (Bind b) t t0) (THead (Bind b) x0 x1) (sym_equal T (THead (Bind b) x0 x1) 
1733 (THead (Bind b) t t0) (f_equal3 K T T T THead (Bind b) (Bind b) x0 t x1 t0 
1734 (refl_equal K (Bind b)) (sym_eq T t x0 (H x0 h d H4)) (sym_eq T t0 x1 (H0 x1 
1735 h (S d) H5)))))) t1 H3)))))) (lift_gen_bind b (lift h d t) (lift h (S d) t0) 
1736 t1 h d H2)))))))))))) (\lambda (f: F).(\lambda (t: T).(\lambda (H: ((\forall 
1737 (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) (lift h d 
1738 t0)) \to (eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (t: 
1739 T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t)) \to 
1740 (eq T t0 t))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d: 
1741 nat).(\lambda (H1: (eq T (lift h d (THead (Flat f) t t0)) (lift h d 
1742 t1))).(let H2 \def (eq_ind T (lift h d (THead (Flat f) t t0)) (\lambda (t: 
1743 T).(eq T t (lift h d t1))) H1 (THead (Flat f) (lift h d t) (lift h d t0)) 
1744 (lift_flat f t t0 h d)) in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq 
1745 T t1 (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d 
1746 t) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h d t0) (lift 
1747 h d z)))) (eq T (THead (Flat f) t t0) t1) (\lambda (x0: T).(\lambda (x1: 
1748 T).(\lambda (H3: (eq T t1 (THead (Flat f) x0 x1))).(\lambda (H4: (eq T (lift 
1749 h d t) (lift h d x0))).(\lambda (H5: (eq T (lift h d t0) (lift h d 
1750 x1))).(eq_ind_r T (THead (Flat f) x0 x1) (\lambda (t2: T).(eq T (THead (Flat 
1751 f) t t0) t2)) (sym_equal T (THead (Flat f) x0 x1) (THead (Flat f) t t0) 
1752 (sym_equal T (THead (Flat f) t t0) (THead (Flat f) x0 x1) (sym_equal T (THead 
1753 (Flat f) x0 x1) (THead (Flat f) t t0) (f_equal3 K T T T THead (Flat f) (Flat 
1754 f) x0 t x1 t0 (refl_equal K (Flat f)) (sym_eq T t x0 (H x0 h d H4)) (sym_eq T 
1755 t0 x1 (H0 x1 h d H5)))))) t1 H3)))))) (lift_gen_flat f (lift h d t) (lift h d 
1756 t0) t1 h d H2)))))))))))) k)) x).
1757
1758 theorem lift_gen_lift:
1759  \forall (t1: T).(\forall (x: T).(\forall (h1: nat).(\forall (h2: 
1760 nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift h1 d1 
1761 t1) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 
1762 t2))) (\lambda (t2: T).(eq T t1 (lift h2 d2 t2)))))))))))
1763 \def
1764  \lambda (t1: T).(T_ind (\lambda (t: T).(\forall (x: T).(\forall (h1: 
1765 nat).(\forall (h2: nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to 
1766 ((eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: 
1767 T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 d2 
1768 t2)))))))))))) (\lambda (n: nat).(\lambda (x: T).(\lambda (h1: nat).(\lambda 
1769 (h2: nat).(\lambda (d1: nat).(\lambda (d2: nat).(\lambda (_: (le d1 
1770 d2)).(\lambda (H0: (eq T (lift h1 d1 (TSort n)) (lift h2 (plus d2 h1) 
1771 x))).(let H1 \def (eq_ind T (lift h1 d1 (TSort n)) (\lambda (t: T).(eq T t 
1772 (lift h2 (plus d2 h1) x))) H0 (TSort n) (lift_sort n h1 d1)) in (eq_ind_r T 
1773 (TSort n) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift h1 d1 t2))) 
1774 (\lambda (t2: T).(eq T (TSort n) (lift h2 d2 t2))))) (ex_intro2 T (\lambda 
1775 (t2: T).(eq T (TSort n) (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TSort n) 
1776 (lift h2 d2 t2))) (TSort n) (eq_ind_r T (TSort n) (\lambda (t: T).(eq T 
1777 (TSort n) t)) (refl_equal T (TSort n)) (lift h1 d1 (TSort n)) (lift_sort n h1 
1778 d1)) (eq_ind_r T (TSort n) (\lambda (t: T).(eq T (TSort n) t)) (refl_equal T 
1779 (TSort n)) (lift h2 d2 (TSort n)) (lift_sort n h2 d2))) x (lift_gen_sort h2 
1780 (plus d2 h1) n x H1))))))))))) (\lambda (n: nat).(\lambda (x: T).(\lambda 
1781 (h1: nat).(\lambda (h2: nat).(\lambda (d1: nat).(\lambda (d2: nat).(\lambda 
1782 (H: (le d1 d2)).(\lambda (H0: (eq T (lift h1 d1 (TLRef n)) (lift h2 (plus d2 
1783 h1) x))).(lt_le_e n d1 (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 t2))) 
1784 (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2)))) (\lambda (H1: (lt n 
1785 d1)).(let H2 \def (eq_ind T (lift h1 d1 (TLRef n)) (\lambda (t: T).(eq T t 
1786 (lift h2 (plus d2 h1) x))) H0 (TLRef n) (lift_lref_lt n h1 d1 H1)) in 
1787 (eq_ind_r T (TLRef n) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift 
1788 h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))))) (ex_intro2 T 
1789 (\lambda (t2: T).(eq T (TLRef n) (lift h1 d1 t2))) (\lambda (t2: T).(eq T 
1790 (TLRef n) (lift h2 d2 t2))) (TLRef n) (eq_ind_r T (TLRef n) (\lambda (t: 
1791 T).(eq T (TLRef n) t)) (refl_equal T (TLRef n)) (lift h1 d1 (TLRef n)) 
1792 (lift_lref_lt n h1 d1 H1)) (eq_ind_r T (TLRef n) (\lambda (t: T).(eq T (TLRef 
1793 n) t)) (refl_equal T (TLRef n)) (lift h2 d2 (TLRef n)) (lift_lref_lt n h2 d2 
1794 (lt_le_trans n d1 d2 H1 H)))) x (lift_gen_lref_lt h2 (plus d2 h1) n 
1795 (lt_le_trans n d1 (plus d2 h1) H1 (le_plus_trans d1 d2 h1 H)) x H2)))) 
1796 (\lambda (H1: (le d1 n)).(let H2 \def (eq_ind T (lift h1 d1 (TLRef n)) 
1797 (\lambda (t: T).(eq T t (lift h2 (plus d2 h1) x))) H0 (TLRef (plus n h1)) 
1798 (lift_lref_ge n h1 d1 H1)) in (lt_le_e n d2 (ex2 T (\lambda (t2: T).(eq T x 
1799 (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2)))) 
1800 (\lambda (H3: (lt n d2)).(eq_ind_r T (TLRef (plus n h1)) (\lambda (t: T).(ex2 
1801 T (\lambda (t2: T).(eq T t (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) 
1802 (lift h2 d2 t2))))) (ex_intro2 T (\lambda (t2: T).(eq T (TLRef (plus n h1)) 
1803 (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))) (TLRef 
1804 n) (eq_ind_r T (TLRef (plus n h1)) (\lambda (t: T).(eq T (TLRef (plus n h1)) 
1805 t)) (refl_equal T (TLRef (plus n h1))) (lift h1 d1 (TLRef n)) (lift_lref_ge n 
1806 h1 d1 H1)) (eq_ind_r T (TLRef n) (\lambda (t: T).(eq T (TLRef n) t)) 
1807 (refl_equal T (TLRef n)) (lift h2 d2 (TLRef n)) (lift_lref_lt n h2 d2 H3))) x 
1808 (lift_gen_lref_lt h2 (plus d2 h1) (plus n h1) (plus_lt_compat_r n d2 h1 H3) x 
1809 H2))) (\lambda (H3: (le d2 n)).(lt_le_e n (plus d2 h2) (ex2 T (\lambda (t2: 
1810 T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 
1811 t2)))) (\lambda (H4: (lt n (plus d2 h2))).(lift_gen_lref_false h2 (plus d2 
1812 h1) (plus n h1) (le_S_n (plus d2 h1) (plus n h1) (lt_le_S (plus d2 h1) (S 
1813 (plus n h1)) (le_lt_n_Sm (plus d2 h1) (plus n h1) (plus_le_compat d2 n h1 h1 
1814 H3 (le_n h1))))) (eq_ind_r nat (plus (plus d2 h2) h1) (\lambda (n0: nat).(lt 
1815 (plus n h1) n0)) (lt_le_S (plus n h1) (plus (plus d2 h2) h1) 
1816 (plus_lt_compat_r n (plus d2 h2) h1 H4)) (plus (plus d2 h1) h2) 
1817 (plus_permute_2_in_3 d2 h1 h2)) x H2 (ex2 T (\lambda (t2: T).(eq T x (lift h1 
1818 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2)))))) (\lambda (H4: 
1819 (le (plus d2 h2) n)).(let H5 \def (eq_ind nat (plus n h1) (\lambda (n: 
1820 nat).(eq T (TLRef n) (lift h2 (plus d2 h1) x))) H2 (plus (minus (plus n h1) 
1821 h2) h2) (le_plus_minus_sym h2 (plus n h1) (le_plus_trans h2 n h1 
1822 (le_trans_plus_r d2 h2 n H4)))) in (eq_ind_r T (TLRef (minus (plus n h1) h2)) 
1823 (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift h1 d1 t2))) (\lambda 
1824 (t2: T).(eq T (TLRef n) (lift h2 d2 t2))))) (ex_intro2 T (\lambda (t2: T).(eq 
1825 T (TLRef (minus (plus n h1) h2)) (lift h1 d1 t2))) (\lambda (t2: T).(eq T 
1826 (TLRef n) (lift h2 d2 t2))) (TLRef (minus n h2)) (eq_ind_r nat (plus (minus n 
1827 h2) h1) (\lambda (n0: nat).(eq T (TLRef n0) (lift h1 d1 (TLRef (minus n 
1828 h2))))) (eq_ind_r T (TLRef (plus (minus n h2) h1)) (\lambda (t: T).(eq T 
1829 (TLRef (plus (minus n h2) h1)) t)) (refl_equal T (TLRef (plus (minus n h2) 
1830 h1))) (lift h1 d1 (TLRef (minus n h2))) (lift_lref_ge (minus n h2) h1 d1 
1831 (le_trans d1 d2 (minus n h2) H (le_minus d2 n h2 H4)))) (minus (plus n h1) 
1832 h2) (le_minus_plus h2 n (le_trans_plus_r d2 h2 n H4) h1)) (eq_ind_r nat (plus 
1833 (minus n h2) h2) (\lambda (n0: nat).(eq T (TLRef n0) (lift h2 d2 (TLRef 
1834 (minus n0 h2))))) (eq_ind_r T (TLRef (plus (minus (plus (minus n h2) h2) h2) 
1835 h2)) (\lambda (t: T).(eq T (TLRef (plus (minus n h2) h2)) t)) (f_equal nat T 
1836 TLRef (plus (minus n h2) h2) (plus (minus (plus (minus n h2) h2) h2) h2) 
1837 (f_equal2 nat nat nat plus (minus n h2) (minus (plus (minus n h2) h2) h2) h2 
1838 h2 (sym_eq nat (minus (plus (minus n h2) h2) h2) (minus n h2) (minus_plus_r 
1839 (minus n h2) h2)) (refl_equal nat h2))) (lift h2 d2 (TLRef (minus (plus 
1840 (minus n h2) h2) h2))) (lift_lref_ge (minus (plus (minus n h2) h2) h2) h2 d2 
1841 (le_minus d2 (plus (minus n h2) h2) h2 (plus_le_compat d2 (minus n h2) h2 h2 
1842 (le_minus d2 n h2 H4) (le_n h2))))) n (le_plus_minus_sym h2 n 
1843 (le_trans_plus_r d2 h2 n H4)))) x (lift_gen_lref_ge h2 (plus d2 h1) (minus 
1844 (plus n h1) h2) (arith0 h2 d2 n H4 h1) x H5)))))))))))))))))) (\lambda (k: 
1845 K).(\lambda (t: T).(\lambda (H: ((\forall (x: T).(\forall (h1: nat).(\forall 
1846 (h2: nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift 
1847 h1 d1 t) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift 
1848 h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 d2 t2))))))))))))).(\lambda 
1849 (t0: T).(\lambda (H0: ((\forall (x: T).(\forall (h1: nat).(\forall (h2: 
1850 nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift h1 d1 
1851 t0) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 
1852 t2))) (\lambda (t2: T).(eq T t0 (lift h2 d2 t2))))))))))))).(\lambda (x: 
1853 T).(\lambda (h1: nat).(\lambda (h2: nat).(\lambda (d1: nat).(\lambda (d2: 
1854 nat).(\lambda (H1: (le d1 d2)).(\lambda (H2: (eq T (lift h1 d1 (THead k t 
1855 t0)) (lift h2 (plus d2 h1) x))).(K_ind (\lambda (k0: K).((eq T (lift h1 d1 
1856 (THead k0 t t0)) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T 
1857 x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (THead k0 t t0) (lift h2 d2 
1858 t2)))))) (\lambda (b: B).(\lambda (H3: (eq T (lift h1 d1 (THead (Bind b) t 
1859 t0)) (lift h2 (plus d2 h1) x))).(let H4 \def (eq_ind T (lift h1 d1 (THead 
1860 (Bind b) t t0)) (\lambda (t: T).(eq T t (lift h2 (plus d2 h1) x))) H3 (THead 
1861 (Bind b) (lift h1 d1 t) (lift h1 (S d1) t0)) (lift_bind b t t0 h1 d1)) in 
1862 (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Bind b) y 
1863 z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h1 d1 t) (lift h2 (plus d2 
1864 h1) y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h1 (S d1) t0) (lift h2 
1865 (S (plus d2 h1)) z)))) (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 t2))) 
1866 (\lambda (t2: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t2)))) (\lambda (x0: 
1867 T).(\lambda (x1: T).(\lambda (H5: (eq T x (THead (Bind b) x0 x1))).(\lambda 
1868 (H6: (eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x0))).(\lambda (H7: (eq T 
1869 (lift h1 (S d1) t0) (lift h2 (S (plus d2 h1)) x1))).(eq_ind_r T (THead (Bind 
1870 b) x0 x1) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h1 d1 t3))) 
1871 (\lambda (t3: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t3))))) (ex2_ind T 
1872 (\lambda (t2: T).(eq T x0 (lift h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 
1873 d2 t2))) (ex2 T (\lambda (t2: T).(eq T (THead (Bind b) x0 x1) (lift h1 d1 
1874 t2))) (\lambda (t2: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t2)))) 
1875 (\lambda (x2: T).(\lambda (H8: (eq T x0 (lift h1 d1 x2))).(\lambda (H9: (eq T 
1876 t (lift h2 d2 x2))).(eq_ind_r T (lift h1 d1 x2) (\lambda (t2: T).(ex2 T 
1877 (\lambda (t3: T).(eq T (THead (Bind b) t2 x1) (lift h1 d1 t3))) (\lambda (t3: 
1878 T).(eq T (THead (Bind b) t t0) (lift h2 d2 t3))))) (eq_ind_r T (lift h2 d2 
1879 x2) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift h1 
1880 d1 x2) x1) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) t2 t0) 
1881 (lift h2 d2 t3))))) (let H10 \def (refl_equal nat (plus (S d2) h1)) in (let 
1882 H11 \def (eq_ind nat (S (plus d2 h1)) (\lambda (n: nat).(eq T (lift h1 (S d1) 
1883 t0) (lift h2 n x1))) H7 (plus (S d2) h1) H10) in (ex2_ind T (\lambda (t2: 
1884 T).(eq T x1 (lift h1 (S d1) t2))) (\lambda (t2: T).(eq T t0 (lift h2 (S d2) 
1885 t2))) (ex2 T (\lambda (t2: T).(eq T (THead (Bind b) (lift h1 d1 x2) x1) (lift 
1886 h1 d1 t2))) (\lambda (t2: T).(eq T (THead (Bind b) (lift h2 d2 x2) t0) (lift 
1887 h2 d2 t2)))) (\lambda (x3: T).(\lambda (H12: (eq T x1 (lift h1 (S d1) 
1888 x3))).(\lambda (H13: (eq T t0 (lift h2 (S d2) x3))).(eq_ind_r T (lift h1 (S 
1889 d1) x3) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift 
1890 h1 d1 x2) t2) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) (lift 
1891 h2 d2 x2) t0) (lift h2 d2 t3))))) (eq_ind_r T (lift h2 (S d2) x3) (\lambda 
1892 (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift h1 d1 x2) (lift 
1893 h1 (S d1) x3)) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) (lift 
1894 h2 d2 x2) t2) (lift h2 d2 t3))))) (ex_intro2 T (\lambda (t2: T).(eq T (THead 
1895 (Bind b) (lift h1 d1 x2) (lift h1 (S d1) x3)) (lift h1 d1 t2))) (\lambda (t2: 
1896 T).(eq T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3)) (lift h2 d2 
1897 t2))) (THead (Bind b) x2 x3) (eq_ind_r T (THead (Bind b) (lift h1 d1 x2) 
1898 (lift h1 (S d1) x3)) (\lambda (t2: T).(eq T (THead (Bind b) (lift h1 d1 x2) 
1899 (lift h1 (S d1) x3)) t2)) (refl_equal T (THead (Bind b) (lift h1 d1 x2) (lift 
1900 h1 (S d1) x3))) (lift h1 d1 (THead (Bind b) x2 x3)) (lift_bind b x2 x3 h1 
1901 d1)) (eq_ind_r T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3)) 
1902 (\lambda (t2: T).(eq T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3)) 
1903 t2)) (refl_equal T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3))) 
1904 (lift h2 d2 (THead (Bind b) x2 x3)) (lift_bind b x2 x3 h2 d2))) t0 H13) x1 
1905 H12)))) (H0 x1 h1 h2 (S d1) (S d2) (le_S_n (S d1) (S d2) (lt_le_S (S d1) (S 
1906 (S d2)) (lt_n_S d1 (S d2) (le_lt_n_Sm d1 d2 H1)))) H11)))) t H9) x0 H8)))) (H 
1907 x0 h1 h2 d1 d2 H1 H6)) x H5)))))) (lift_gen_bind b (lift h1 d1 t) (lift h1 (S 
1908 d1) t0) x h2 (plus d2 h1) H4))))) (\lambda (f: F).(\lambda (H3: (eq T (lift 
1909 h1 d1 (THead (Flat f) t t0)) (lift h2 (plus d2 h1) x))).(let H4 \def (eq_ind 
1910 T (lift h1 d1 (THead (Flat f) t t0)) (\lambda (t: T).(eq T t (lift h2 (plus 
1911 d2 h1) x))) H3 (THead (Flat f) (lift h1 d1 t) (lift h1 d1 t0)) (lift_flat f t 
1912 t0 h1 d1)) in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead 
1913 (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h1 d1 t) (lift 
1914 h2 (plus d2 h1) y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h1 d1 t0) 
1915 (lift h2 (plus d2 h1) z)))) (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 t2))) 
1916 (\lambda (t2: T).(eq T (THead (Flat f) t t0) (lift h2 d2 t2)))) (\lambda (x0: 
1917 T).(\lambda (x1: T).(\lambda (H5: (eq T x (THead (Flat f) x0 x1))).(\lambda 
1918 (H6: (eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x0))).(\lambda (H7: (eq T 
1919 (lift h1 d1 t0) (lift h2 (plus d2 h1) x1))).(eq_ind_r T (THead (Flat f) x0 
1920 x1) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h1 d1 t3))) 
1921 (\lambda (t3: T).(eq T (THead (Flat f) t t0) (lift h2 d2 t3))))) (ex2_ind T 
1922 (\lambda (t2: T).(eq T x0 (lift h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 
1923 d2 t2))) (ex2 T (\lambda (t2: T).(eq T (THead (Flat f) x0 x1) (lift h1 d1 
1924 t2))) (\lambda (t2: T).(eq T (THead (Flat f) t t0) (lift h2 d2 t2)))) 
1925 (\lambda (x2: T).(\lambda (H8: (eq T x0 (lift h1 d1 x2))).(\lambda (H9: (eq T 
1926 t (lift h2 d2 x2))).(eq_ind_r T (lift h1 d1 x2) (\lambda (t2: T).(ex2 T 
1927 (\lambda (t3: T).(eq T (THead (Flat f) t2 x1) (lift h1 d1 t3))) (\lambda (t3: 
1928 T).(eq T (THead (Flat f) t t0) (lift h2 d2 t3))))) (eq_ind_r T (lift h2 d2 
1929 x2) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Flat f) (lift h1 
1930 d1 x2) x1) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Flat f) t2 t0) 
1931 (lift h2 d2 t3))))) (ex2_ind T (\lambda (t2: T).(eq T x1 (lift h1 d1 t2))) 
1932 (\lambda (t2: T).(eq T t0 (lift h2 d2 t2))) (ex2 T (\lambda (t2: T).(eq T 
1933 (THead (Flat f) (lift h1 d1 x2) x1) (lift h1 d1 t2))) (\lambda (t2: T).(eq T 
1934 (THead (Flat f) (lift h2 d2 x2) t0) (lift h2 d2 t2)))) (\lambda (x3: 
1935 T).(\lambda (H10: (eq T x1 (lift h1 d1 x3))).(\lambda (H11: (eq T t0 (lift h2 
1936 d2 x3))).(eq_ind_r T (lift h1 d1 x3) (\lambda (t2: T).(ex2 T (\lambda (t3: 
1937 T).(eq T (THead (Flat f) (lift h1 d1 x2) t2) (lift h1 d1 t3))) (\lambda (t3: 
1938 T).(eq T (THead (Flat f) (lift h2 d2 x2) t0) (lift h2 d2 t3))))) (eq_ind_r T 
1939 (lift h2 d2 x3) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Flat 
1940 f) (lift h1 d1 x2) (lift h1 d1 x3)) (lift h1 d1 t3))) (\lambda (t3: T).(eq T 
1941 (THead (Flat f) (lift h2 d2 x2) t2) (lift h2 d2 t3))))) (ex_intro2 T (\lambda 
1942 (t2: T).(eq T (THead (Flat f) (lift h1 d1 x2) (lift h1 d1 x3)) (lift h1 d1 
1943 t2))) (\lambda (t2: T).(eq T (THead (Flat f) (lift h2 d2 x2) (lift h2 d2 x3)) 
1944 (lift h2 d2 t2))) (THead (Flat f) x2 x3) (eq_ind_r T (THead (Flat f) (lift h1 
1945 d1 x2) (lift h1 d1 x3)) (\lambda (t2: T).(eq T (THead (Flat f) (lift h1 d1 
1946 x2) (lift h1 d1 x3)) t2)) (refl_equal T (THead (Flat f) (lift h1 d1 x2) (lift 
1947 h1 d1 x3))) (lift h1 d1 (THead (Flat f) x2 x3)) (lift_flat f x2 x3 h1 d1)) 
1948 (eq_ind_r T (THead (Flat f) (lift h2 d2 x2) (lift h2 d2 x3)) (\lambda (t2: 
1949 T).(eq T (THead (Flat f) (lift h2 d2 x2) (lift h2 d2 x3)) t2)) (refl_equal T 
1950 (THead (Flat f) (lift h2 d2 x2) (lift h2 d2 x3))) (lift h2 d2 (THead (Flat f) 
1951 x2 x3)) (lift_flat f x2 x3 h2 d2))) t0 H11) x1 H10)))) (H0 x1 h1 h2 d1 d2 H1 
1952 H7)) t H9) x0 H8)))) (H x0 h1 h2 d1 d2 H1 H6)) x H5)))))) (lift_gen_flat f 
1953 (lift h1 d1 t) (lift h1 d1 t0) x h2 (plus d2 h1) H4))))) k H2))))))))))))) 
1954 t1).
1955
1956 theorem lift_free:
1957  \forall (t: T).(\forall (h: nat).(\forall (k: nat).(\forall (d: 
1958 nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to (eq T (lift k e 
1959 (lift h d t)) (lift (plus k h) d t))))))))
1960 \def
1961  \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: nat).(\forall (k: 
1962 nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to 
1963 (eq T (lift k e (lift h d t0)) (lift (plus k h) d t0))))))))) (\lambda (n: 
1964 nat).(\lambda (h: nat).(\lambda (k: nat).(\lambda (d: nat).(\lambda (e: 
1965 nat).(\lambda (_: (le e (plus d h))).(\lambda (_: (le d e)).(eq_ind_r T 
1966 (TSort n) (\lambda (t0: T).(eq T (lift k e t0) (lift (plus k h) d (TSort 
1967 n)))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq T t0 (lift (plus k h) d 
1968 (TSort n)))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq T (TSort n) t0)) 
1969 (refl_equal T (TSort n)) (lift (plus k h) d (TSort n)) (lift_sort n (plus k 
1970 h) d)) (lift k e (TSort n)) (lift_sort n k e)) (lift h d (TSort n)) 
1971 (lift_sort n h d))))))))) (\lambda (n: nat).(\lambda (h: nat).(\lambda (k: 
1972 nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H: (le e (plus d 
1973 h))).(\lambda (H0: (le d e)).(lt_le_e n d (eq T (lift k e (lift h d (TLRef 
1974 n))) (lift (plus k h) d (TLRef n))) (\lambda (H1: (lt n d)).(eq_ind_r T 
1975 (TLRef n) (\lambda (t0: T).(eq T (lift k e t0) (lift (plus k h) d (TLRef 
1976 n)))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (lift (plus k h) d 
1977 (TLRef n)))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) t0)) 
1978 (refl_equal T (TLRef n)) (lift (plus k h) d (TLRef n)) (lift_lref_lt n (plus 
1979 k h) d H1)) (lift k e (TLRef n)) (lift_lref_lt n k e (lt_le_trans n d e H1 
1980 H0))) (lift h d (TLRef n)) (lift_lref_lt n h d H1))) (\lambda (H1: (le d 
1981 n)).(eq_ind_r T (TLRef (plus n h)) (\lambda (t0: T).(eq T (lift k e t0) (lift 
1982 (plus k h) d (TLRef n)))) (eq_ind_r T (TLRef (plus (plus n h) k)) (\lambda 
1983 (t0: T).(eq T t0 (lift (plus k h) d (TLRef n)))) (eq_ind_r T (TLRef (plus n 
1984 (plus k h))) (\lambda (t0: T).(eq T (TLRef (plus (plus n h) k)) t0)) (f_equal 
1985 nat T TLRef (plus (plus n h) k) (plus n (plus k h)) 
1986 (plus_permute_2_in_3_assoc n h k)) (lift (plus k h) d (TLRef n)) 
1987 (lift_lref_ge n (plus k h) d H1)) (lift k e (TLRef (plus n h))) (lift_lref_ge 
1988 (plus n h) k e (le_trans e (plus d h) (plus n h) H (plus_le_compat d n h h H1 
1989 (le_n h))))) (lift h d (TLRef n)) (lift_lref_ge n h d H1))))))))))) (\lambda 
1990 (k: K).(\lambda (t0: T).(\lambda (H: ((\forall (h: nat).(\forall (k: 
1991 nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to 
1992 (eq T (lift k e (lift h d t0)) (lift (plus k h) d t0)))))))))).(\lambda (t1: 
1993 T).(\lambda (H0: ((\forall (h: nat).(\forall (k: nat).(\forall (d: 
1994 nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to (eq T (lift k e 
1995 (lift h d t1)) (lift (plus k h) d t1)))))))))).(\lambda (h: nat).(\lambda 
1996 (k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le e (plus d 
1997 h))).(\lambda (H2: (le d e)).(eq_ind_r T (THead k (lift h d t0) (lift h (s k 
1998 d) t1)) (\lambda (t2: T).(eq T (lift k0 e t2) (lift (plus k0 h) d (THead k t0 
1999 t1)))) (eq_ind_r T (THead k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift 
2000 h (s k d) t1))) (\lambda (t2: T).(eq T t2 (lift (plus k0 h) d (THead k t0 
2001 t1)))) (eq_ind_r T (THead k (lift (plus k0 h) d t0) (lift (plus k0 h) (s k d) 
2002 t1)) (\lambda (t2: T).(eq T (THead k (lift k0 e (lift h d t0)) (lift k0 (s k 
2003 e) (lift h (s k d) t1))) t2)) (f_equal3 K T T T THead k k (lift k0 e (lift h 
2004 d t0)) (lift (plus k0 h) d t0) (lift k0 (s k e) (lift h (s k d) t1)) (lift 
2005 (plus k0 h) (s k d) t1) (refl_equal K k) (H h k0 d e H1 H2) (H0 h k0 (s k d) 
2006 (s k e) (eq_ind nat (s k (plus d h)) (\lambda (n: nat).(le (s k e) n)) (s_le 
2007 k e (plus d h) H1) (plus (s k d) h) (s_plus k d h)) (s_le k d e H2))) (lift 
2008 (plus k0 h) d (THead k t0 t1)) (lift_head k t0 t1 (plus k0 h) d)) (lift k0 e 
2009 (THead k (lift h d t0) (lift h (s k d) t1))) (lift_head k (lift h d t0) (lift 
2010 h (s k d) t1) k0 e)) (lift h d (THead k t0 t1)) (lift_head k t0 t1 h 
2011 d))))))))))))) t).
2012
2013 theorem lift_d:
2014  \forall (t: T).(\forall (h: nat).(\forall (k: nat).(\forall (d: 
2015 nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k d) (lift k e t)) 
2016 (lift k e (lift h d t))))))))
2017 \def
2018  \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: nat).(\forall (k: 
2019 nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k 
2020 d) (lift k e t0)) (lift k e (lift h d t0))))))))) (\lambda (n: nat).(\lambda 
2021 (h: nat).(\lambda (k: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (_: 
2022 (le e d)).(eq_ind_r T (TSort n) (\lambda (t0: T).(eq T (lift h (plus k d) t0) 
2023 (lift k e (lift h d (TSort n))))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq 
2024 T t0 (lift k e (lift h d (TSort n))))) (eq_ind_r T (TSort n) (\lambda (t0: 
2025 T).(eq T (TSort n) (lift k e t0))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq 
2026 T (TSort n) t0)) (refl_equal T (TSort n)) (lift k e (TSort n)) (lift_sort n k 
2027 e)) (lift h d (TSort n)) (lift_sort n h d)) (lift h (plus k d) (TSort n)) 
2028 (lift_sort n h (plus k d))) (lift k e (TSort n)) (lift_sort n k e)))))))) 
2029 (\lambda (n: nat).(\lambda (h: nat).(\lambda (k: nat).(\lambda (d: 
2030 nat).(\lambda (e: nat).(\lambda (H: (le e d)).(lt_le_e n e (eq T (lift h 
2031 (plus k d) (lift k e (TLRef n))) (lift k e (lift h d (TLRef n)))) (\lambda 
2032 (H0: (lt n e)).(let H1 \def (lt_le_trans n e d H0 H) in (eq_ind_r T (TLRef n) 
2033 (\lambda (t0: T).(eq T (lift h (plus k d) t0) (lift k e (lift h d (TLRef 
2034 n))))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (lift k e (lift h d 
2035 (TLRef n))))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) (lift k 
2036 e t0))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) t0)) 
2037 (refl_equal T (TLRef n)) (lift k e (TLRef n)) (lift_lref_lt n k e H0)) (lift 
2038 h d (TLRef n)) (lift_lref_lt n h d H1)) (lift h (plus k d) (TLRef n)) 
2039 (lift_lref_lt n h (plus k d) (lt_le_trans n d (plus k d) H1 (le_plus_r k 
2040 d)))) (lift k e (TLRef n)) (lift_lref_lt n k e H0)))) (\lambda (H0: (le e 
2041 n)).(eq_ind_r T (TLRef (plus n k)) (\lambda (t0: T).(eq T (lift h (plus k d) 
2042 t0) (lift k e (lift h d (TLRef n))))) (eq_ind_r nat (plus d k) (\lambda (n0: 
2043 nat).(eq T (lift h n0 (TLRef (plus n k))) (lift k e (lift h d (TLRef n))))) 
2044 (lt_le_e n d (eq T (lift h (plus d k) (TLRef (plus n k))) (lift k e (lift h d 
2045 (TLRef n)))) (\lambda (H1: (lt n d)).(eq_ind_r T (TLRef (plus n k)) (\lambda 
2046 (t0: T).(eq T t0 (lift k e (lift h d (TLRef n))))) (eq_ind_r T (TLRef n) 
2047 (\lambda (t0: T).(eq T (TLRef (plus n k)) (lift k e t0))) (eq_ind_r T (TLRef 
2048 (plus n k)) (\lambda (t0: T).(eq T (TLRef (plus n k)) t0)) (refl_equal T 
2049 (TLRef (plus n k))) (lift k e (TLRef n)) (lift_lref_ge n k e H0)) (lift h d 
2050 (TLRef n)) (lift_lref_lt n h d H1)) (lift h (plus d k) (TLRef (plus n k))) 
2051 (lift_lref_lt (plus n k) h (plus d k) (lt_le_S (plus n k) (plus d k) 
2052 (plus_lt_compat_r n d k H1))))) (\lambda (H1: (le d n)).(eq_ind_r T (TLRef 
2053 (plus (plus n k) h)) (\lambda (t0: T).(eq T t0 (lift k e (lift h d (TLRef 
2054 n))))) (eq_ind_r T (TLRef (plus n h)) (\lambda (t0: T).(eq T (TLRef (plus 
2055 (plus n k) h)) (lift k e t0))) (eq_ind_r T (TLRef (plus (plus n h) k)) 
2056 (\lambda (t0: T).(eq T (TLRef (plus (plus n k) h)) t0)) (f_equal nat T TLRef 
2057 (plus (plus n k) h) (plus (plus n h) k) (sym_eq nat (plus (plus n h) k) (plus 
2058 (plus n k) h) (plus_permute_2_in_3 n h k))) (lift k e (TLRef (plus n h))) 
2059 (lift_lref_ge (plus n h) k e (le_S_n e (plus n h) (lt_le_S e (S (plus n h)) 
2060 (le_lt_n_Sm e (plus n h) (le_plus_trans e n h H0)))))) (lift h d (TLRef n)) 
2061 (lift_lref_ge n h d H1)) (lift h (plus d k) (TLRef (plus n k))) (lift_lref_ge 
2062 (plus n k) h (plus d k) (le_S_n (plus d k) (plus n k) (lt_le_S (plus d k) (S 
2063 (plus n k)) (le_lt_n_Sm (plus d k) (plus n k) (plus_le_compat d n k k H1 
2064 (le_n k))))))))) (plus k d) (plus_comm k d)) (lift k e (TLRef n)) 
2065 (lift_lref_ge n k e H0)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda 
2066 (H: ((\forall (h: nat).(\forall (k: nat).(\forall (d: nat).(\forall (e: 
2067 nat).((le e d) \to (eq T (lift h (plus k d) (lift k e t0)) (lift k e (lift h 
2068 d t0)))))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (h: nat).(\forall (k: 
2069 nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k 
2070 d) (lift k e t1)) (lift k e (lift h d t1)))))))))).(\lambda (h: nat).(\lambda 
2071 (k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le e 
2072 d)).(eq_ind_r T (THead k (lift k0 e t0) (lift k0 (s k e) t1)) (\lambda (t2: 
2073 T).(eq T (lift h (plus k0 d) t2) (lift k0 e (lift h d (THead k t0 t1))))) 
2074 (eq_ind_r T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h (s k (plus 
2075 k0 d)) (lift k0 (s k e) t1))) (\lambda (t2: T).(eq T t2 (lift k0 e (lift h d 
2076 (THead k t0 t1))))) (eq_ind_r T (THead k (lift h d t0) (lift h (s k d) t1)) 
2077 (\lambda (t2: T).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h 
2078 (s k (plus k0 d)) (lift k0 (s k e) t1))) (lift k0 e t2))) (eq_ind_r T (THead 
2079 k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift h (s k d) t1))) (\lambda 
2080 (t2: T).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h (s k (plus 
2081 k0 d)) (lift k0 (s k e) t1))) t2)) (eq_ind_r nat (plus k0 (s k d)) (\lambda 
2082 (n: nat).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h n (lift 
2083 k0 (s k e) t1))) (THead k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift h 
2084 (s k d) t1))))) (f_equal3 K T T T THead k k (lift h (plus k0 d) (lift k0 e 
2085 t0)) (lift k0 e (lift h d t0)) (lift h (plus k0 (s k d)) (lift k0 (s k e) 
2086 t1)) (lift k0 (s k e) (lift h (s k d) t1)) (refl_equal K k) (H h k0 d e H1) 
2087 (H0 h k0 (s k d) (s k e) (s_le k e d H1))) (s k (plus k0 d)) (s_plus_sym k k0 
2088 d)) (lift k0 e (THead k (lift h d t0) (lift h (s k d) t1))) (lift_head k 
2089 (lift h d t0) (lift h (s k d) t1) k0 e)) (lift h d (THead k t0 t1)) 
2090 (lift_head k t0 t1 h d)) (lift h (plus k0 d) (THead k (lift k0 e t0) (lift k0 
2091 (s k e) t1))) (lift_head k (lift k0 e t0) (lift k0 (s k e) t1) h (plus k0 
2092 d))) (lift k0 e (THead k t0 t1)) (lift_head k t0 t1 k0 e)))))))))))) t).
2093
2094 theorem lift_weight_map:
2095  \forall (t: T).(\forall (h: nat).(\forall (d: nat).(\forall (f: ((nat \to 
2096 nat))).(((\forall (m: nat).((le d m) \to (eq nat (f m) O)))) \to (eq nat 
2097 (weight_map f (lift h d t)) (weight_map f t))))))
2098 \def
2099  \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: nat).(\forall (d: 
2100 nat).(\forall (f: ((nat \to nat))).(((\forall (m: nat).((le d m) \to (eq nat 
2101 (f m) O)))) \to (eq nat (weight_map f (lift h d t0)) (weight_map f t0))))))) 
2102 (\lambda (n: nat).(\lambda (_: nat).(\lambda (d: nat).(\lambda (f: ((nat \to 
2103 nat))).(\lambda (_: ((\forall (m: nat).((le d m) \to (eq nat (f m) 
2104 O))))).(refl_equal nat (weight_map f (TSort n)))))))) (\lambda (n: 
2105 nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (f: ((nat \to 
2106 nat))).(\lambda (H: ((\forall (m: nat).((le d m) \to (eq nat (f m) 
2107 O))))).(lt_le_e n d (eq nat (weight_map f (lift h d (TLRef n))) (weight_map f 
2108 (TLRef n))) (\lambda (H0: (lt n d)).(eq_ind_r T (TLRef n) (\lambda (t0: 
2109 T).(eq nat (weight_map f t0) (weight_map f (TLRef n)))) (refl_equal nat 
2110 (weight_map f (TLRef n))) (lift h d (TLRef n)) (lift_lref_lt n h d H0))) 
2111 (\lambda (H0: (le d n)).(eq_ind_r T (TLRef (plus n h)) (\lambda (t0: T).(eq 
2112 nat (weight_map f t0) (weight_map f (TLRef n)))) (eq_ind_r nat O (\lambda 
2113 (n0: nat).(eq nat (f (plus n h)) n0)) (H (plus n h) (le_S_n d (plus n h) 
2114 (le_n_S d (plus n h) (le_plus_trans d n h H0)))) (f n) (H n H0)) (lift h d 
2115 (TLRef n)) (lift_lref_ge n h d H0))))))))) (\lambda (k: K).(\lambda (t0: 
2116 T).(\lambda (H: ((\forall (h: nat).(\forall (d: nat).(\forall (f: ((nat \to 
2117 nat))).(((\forall (m: nat).((le d m) \to (eq nat (f m) O)))) \to (eq nat 
2118 (weight_map f (lift h d t0)) (weight_map f t0)))))))).(\lambda (t1: 
2119 T).(\lambda (H0: ((\forall (h: nat).(\forall (d: nat).(\forall (f: ((nat \to 
2120 nat))).(((\forall (m: nat).((le d m) \to (eq nat (f m) O)))) \to (eq nat 
2121 (weight_map f (lift h d t1)) (weight_map f t1)))))))).(\lambda (h: 
2122 nat).(\lambda (d: nat).(\lambda (f: ((nat \to nat))).(\lambda (H1: ((\forall 
2123 (m: nat).((le d m) \to (eq nat (f m) O))))).(K_ind (\lambda (k0: K).(eq nat 
2124 (weight_map f (lift h d (THead k0 t0 t1))) (weight_map f (THead k0 t0 t1)))) 
2125 (\lambda (b: B).(eq_ind_r T (THead (Bind b) (lift h d t0) (lift h (s (Bind b) 
2126 d) t1)) (\lambda (t2: T).(eq nat (weight_map f t2) (weight_map f (THead (Bind 
2127 b) t0 t1)))) (B_ind (\lambda (b0: B).(eq nat (match b0 with [Abbr \Rightarrow 
2128 (S (plus (weight_map f (lift h d t0)) (weight_map (wadd f (S (weight_map f 
2129 (lift h d t0)))) (lift h (S d) t1)))) | Abst \Rightarrow (S (plus (weight_map 
2130 f (lift h d t0)) (weight_map (wadd f O) (lift h (S d) t1)))) | Void 
2131 \Rightarrow (S (plus (weight_map f (lift h d t0)) (weight_map (wadd f O) 
2132 (lift h (S d) t1))))]) (match b0 with [Abbr \Rightarrow (S (plus (weight_map 
2133 f t0) (weight_map (wadd f (S (weight_map f t0))) t1))) | Abst \Rightarrow (S 
2134 (plus (weight_map f t0) (weight_map (wadd f O) t1))) | Void \Rightarrow (S 
2135 (plus (weight_map f t0) (weight_map (wadd f O) t1)))]))) (eq_ind_r nat 
2136 (weight_map f t0) (\lambda (n: nat).(eq nat (S (plus n (weight_map (wadd f (S 
2137 n)) (lift h (S d) t1)))) (S (plus (weight_map f t0) (weight_map (wadd f (S 
2138 (weight_map f t0))) t1))))) (eq_ind_r nat (weight_map (wadd f (S (weight_map 
2139 f t0))) t1) (\lambda (n: nat).(eq nat (S (plus (weight_map f t0) n)) (S (plus 
2140 (weight_map f t0) (weight_map (wadd f (S (weight_map f t0))) t1))))) 
2141 (refl_equal nat (S (plus (weight_map f t0) (weight_map (wadd f (S (weight_map 
2142 f t0))) t1)))) (weight_map (wadd f (S (weight_map f t0))) (lift h (S d) t1)) 
2143 (H0 h (S d) (wadd f (S (weight_map f t0))) (\lambda (m: nat).(\lambda (H2: 
2144 (le (S d) m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S n))) (\lambda (n: 
2145 nat).(le d n)) (eq nat (wadd f (S (weight_map f t0)) m) O) (\lambda (x: 
2146 nat).(\lambda (H3: (eq nat m (S x))).(\lambda (H4: (le d x)).(eq_ind_r nat (S 
2147 x) (\lambda (n: nat).(eq nat (wadd f (S (weight_map f t0)) n) O)) (H1 x H4) m 
2148 H3)))) (le_gen_S d m H2)))))) (weight_map f (lift h d t0)) (H h d f H1)) 
2149 (eq_ind_r nat (weight_map (wadd f O) t1) (\lambda (n: nat).(eq nat (S (plus 
2150 (weight_map f (lift h d t0)) n)) (S (plus (weight_map f t0) (weight_map (wadd 
2151 f O) t1))))) (f_equal nat nat S (plus (weight_map f (lift h d t0)) 
2152 (weight_map (wadd f O) t1)) (plus (weight_map f t0) (weight_map (wadd f O) 
2153 t1)) (f_equal2 nat nat nat plus (weight_map f (lift h d t0)) (weight_map f 
2154 t0) (weight_map (wadd f O) t1) (weight_map (wadd f O) t1) (H h d f H1) 
2155 (refl_equal nat (weight_map (wadd f O) t1)))) (weight_map (wadd f O) (lift h 
2156 (S d) t1)) (H0 h (S d) (wadd f O) (\lambda (m: nat).(\lambda (H2: (le (S d) 
2157 m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S n))) (\lambda (n: nat).(le d 
2158 n)) (eq nat (wadd f O m) O) (\lambda (x: nat).(\lambda (H3: (eq nat m (S 
2159 x))).(\lambda (H4: (le d x)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat 
2160 (wadd f O n) O)) (H1 x H4) m H3)))) (le_gen_S d m H2)))))) (eq_ind_r nat 
2161 (weight_map (wadd f O) t1) (\lambda (n: nat).(eq nat (S (plus (weight_map f 
2162 (lift h d t0)) n)) (S (plus (weight_map f t0) (weight_map (wadd f O) t1))))) 
2163 (f_equal nat nat S (plus (weight_map f (lift h d t0)) (weight_map (wadd f O) 
2164 t1)) (plus (weight_map f t0) (weight_map (wadd f O) t1)) (f_equal2 nat nat 
2165 nat plus (weight_map f (lift h d t0)) (weight_map f t0) (weight_map (wadd f 
2166 O) t1) (weight_map (wadd f O) t1) (H h d f H1) (refl_equal nat (weight_map 
2167 (wadd f O) t1)))) (weight_map (wadd f O) (lift h (S d) t1)) (H0 h (S d) (wadd 
2168 f O) (\lambda (m: nat).(\lambda (H2: (le (S d) m)).(ex2_ind nat (\lambda (n: 
2169 nat).(eq nat m (S n))) (\lambda (n: nat).(le d n)) (eq nat (wadd f O m) O) 
2170 (\lambda (x: nat).(\lambda (H3: (eq nat m (S x))).(\lambda (H4: (le d 
2171 x)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (wadd f O n) O)) (H1 x H4) 
2172 m H3)))) (le_gen_S d m H2)))))) b) (lift h d (THead (Bind b) t0 t1)) 
2173 (lift_head (Bind b) t0 t1 h d))) (\lambda (f0: F).(eq_ind_r T (THead (Flat 
2174 f0) (lift h d t0) (lift h (s (Flat f0) d) t1)) (\lambda (t2: T).(eq nat 
2175 (weight_map f t2) (weight_map f (THead (Flat f0) t0 t1)))) (f_equal nat nat S 
2176 (plus (weight_map f (lift h d t0)) (weight_map f (lift h d t1))) (plus 
2177 (weight_map f t0) (weight_map f t1)) (f_equal2 nat nat nat plus (weight_map f 
2178 (lift h d t0)) (weight_map f t0) (weight_map f (lift h d t1)) (weight_map f 
2179 t1) (H h d f H1) (H0 h d f H1))) (lift h d (THead (Flat f0) t0 t1)) 
2180 (lift_head (Flat f0) t0 t1 h d))) k)))))))))) t).
2181
2182 theorem lift_weight:
2183  \forall (t: T).(\forall (h: nat).(\forall (d: nat).(eq nat (weight (lift h d 
2184 t)) (weight t))))
2185 \def
2186  \lambda (t: T).(\lambda (h: nat).(\lambda (d: nat).(lift_weight_map t h d 
2187 (\lambda (_: nat).O) (\lambda (m: nat).(\lambda (_: (le d m)).(refl_equal nat 
2188 O)))))).
2189
2190 theorem lift_weight_add:
2191  \forall (w: nat).(\forall (t: T).(\forall (h: nat).(\forall (d: 
2192 nat).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall 
2193 (m: nat).((lt m d) \to (eq nat (g m) (f m))))) \to ((eq nat (g d) w) \to 
2194 (((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f m))))) \to (eq nat 
2195 (weight_map f (lift h d t)) (weight_map g (lift (S h) d t)))))))))))
2196 \def
2197  \lambda (w: nat).(\lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: 
2198 nat).(\forall (d: nat).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
2199 nat))).(((\forall (m: nat).((lt m d) \to (eq nat (g m) (f m))))) \to ((eq nat 
2200 (g d) w) \to (((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f m))))) 
2201 \to (eq nat (weight_map f (lift h d t0)) (weight_map g (lift (S h) d 
2202 t0))))))))))) (\lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
2203 (f: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (_: ((\forall (m: 
2204 nat).((lt m d) \to (eq nat (g m) (f m)))))).(\lambda (_: (eq nat (g d) 
2205 w)).(\lambda (_: ((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f 
2206 m)))))).(refl_equal nat (weight_map g (lift (S h) d (TSort n)))))))))))) 
2207 (\lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (f: ((nat \to 
2208 nat))).(\lambda (g: ((nat \to nat))).(\lambda (H: ((\forall (m: nat).((lt m 
2209 d) \to (eq nat (g m) (f m)))))).(\lambda (_: (eq nat (g d) w)).(\lambda (H1: 
2210 ((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f m)))))).(lt_le_e n d 
2211 (eq nat (weight_map f (lift h d (TLRef n))) (weight_map g (lift (S h) d 
2212 (TLRef n)))) (\lambda (H2: (lt n d)).(eq_ind_r T (TLRef n) (\lambda (t0: 
2213 T).(eq nat (weight_map f t0) (weight_map g (lift (S h) d (TLRef n))))) 
2214 (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq nat (weight_map f (TLRef n)) 
2215 (weight_map g t0))) (sym_equal nat (g n) (f n) (H n H2)) (lift (S h) d (TLRef 
2216 n)) (lift_lref_lt n (S h) d H2)) (lift h d (TLRef n)) (lift_lref_lt n h d 
2217 H2))) (\lambda (H2: (le d n)).(eq_ind_r T (TLRef (plus n h)) (\lambda (t0: 
2218 T).(eq nat (weight_map f t0) (weight_map g (lift (S h) d (TLRef n))))) 
2219 (eq_ind_r T (TLRef (plus n (S h))) (\lambda (t0: T).(eq nat (weight_map f 
2220 (TLRef (plus n h))) (weight_map g t0))) (eq_ind nat (S (plus n h)) (\lambda 
2221 (n0: nat).(eq nat (f (plus n h)) (g n0))) (sym_equal nat (g (S (plus n h))) 
2222 (f (plus n h)) (H1 (plus n h) (le_plus_trans d n h H2))) (plus n (S h)) 
2223 (plus_n_Sm n h)) (lift (S h) d (TLRef n)) (lift_lref_ge n (S h) d H2)) (lift 
2224 h d (TLRef n)) (lift_lref_ge n h d H2)))))))))))) (\lambda (k: K).(\lambda 
2225 (t0: T).(\lambda (H: ((\forall (h: nat).(\forall (d: nat).(\forall (f: ((nat 
2226 \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).((lt m d) \to 
2227 (eq nat (g m) (f m))))) \to ((eq nat (g d) w) \to (((\forall (m: nat).((le d 
2228 m) \to (eq nat (g (S m)) (f m))))) \to (eq nat (weight_map f (lift h d t0)) 
2229 (weight_map g (lift (S h) d t0)))))))))))).(\lambda (t1: T).(\lambda (H0: 
2230 ((\forall (h: nat).(\forall (d: nat).(\forall (f: ((nat \to nat))).(\forall 
2231 (g: ((nat \to nat))).(((\forall (m: nat).((lt m d) \to (eq nat (g m) (f 
2232 m))))) \to ((eq nat (g d) w) \to (((\forall (m: nat).((le d m) \to (eq nat (g 
2233 (S m)) (f m))))) \to (eq nat (weight_map f (lift h d t1)) (weight_map g (lift 
2234 (S h) d t1)))))))))))).(\lambda (h: nat).(\lambda (d: nat).(\lambda (f: ((nat 
2235 \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H1: ((\forall (m: 
2236 nat).((lt m d) \to (eq nat (g m) (f m)))))).(\lambda (H2: (eq nat (g d) 
2237 w)).(\lambda (H3: ((\forall (m: nat).((le d m) \to (eq nat (g (S m)) (f 
2238 m)))))).(K_ind (\lambda (k0: K).(eq nat (weight_map f (lift h d (THead k0 t0 
2239 t1))) (weight_map g (lift (S h) d (THead k0 t0 t1))))) (\lambda (b: 
2240 B).(eq_ind_r T (THead (Bind b) (lift h d t0) (lift h (s (Bind b) d) t1)) 
2241 (\lambda (t2: T).(eq nat (weight_map f t2) (weight_map g (lift (S h) d (THead 
2242 (Bind b) t0 t1))))) (eq_ind_r T (THead (Bind b) (lift (S h) d t0) (lift (S h) 
2243 (s (Bind b) d) t1)) (\lambda (t2: T).(eq nat (weight_map f (THead (Bind b) 
2244 (lift h d t0) (lift h (s (Bind b) d) t1))) (weight_map g t2))) (B_ind 
2245 (\lambda (b0: B).(eq nat (match b0 with [Abbr \Rightarrow (S (plus 
2246 (weight_map f (lift h d t0)) (weight_map (wadd f (S (weight_map f (lift h d 
2247 t0)))) (lift h (S d) t1)))) | Abst \Rightarrow (S (plus (weight_map f (lift h 
2248 d t0)) (weight_map (wadd f O) (lift h (S d) t1)))) | Void \Rightarrow (S 
2249 (plus (weight_map f (lift h d t0)) (weight_map (wadd f O) (lift h (S d) 
2250 t1))))]) (match b0 with [Abbr \Rightarrow (S (plus (weight_map g (lift (S h) 
2251 d t0)) (weight_map (wadd g (S (weight_map g (lift (S h) d t0)))) (lift (S h) 
2252 (S d) t1)))) | Abst \Rightarrow (S (plus (weight_map g (lift (S h) d t0)) 
2253 (weight_map (wadd g O) (lift (S h) (S d) t1)))) | Void \Rightarrow (S (plus 
2254 (weight_map g (lift (S h) d t0)) (weight_map (wadd g O) (lift (S h) (S d) 
2255 t1))))]))) (f_equal nat nat S (plus (weight_map f (lift h d t0)) (weight_map 
2256 (wadd f (S (weight_map f (lift h d t0)))) (lift h (S d) t1))) (plus 
2257 (weight_map g (lift (S h) d t0)) (weight_map (wadd g (S (weight_map g (lift 
2258 (S h) d t0)))) (lift (S h) (S d) t1))) (f_equal2 nat nat nat plus (weight_map 
2259 f (lift h d t0)) (weight_map g (lift (S h) d t0)) (weight_map (wadd f (S 
2260 (weight_map f (lift h d t0)))) (lift h (S d) t1)) (weight_map (wadd g (S 
2261 (weight_map g (lift (S h) d t0)))) (lift (S h) (S d) t1)) (H h d f g H1 H2 
2262 H3) (H0 h (S d) (wadd f (S (weight_map f (lift h d t0)))) (wadd g (S 
2263 (weight_map g (lift (S h) d t0)))) (\lambda (m: nat).(\lambda (H4: (lt m (S 
2264 d))).(or_ind (eq nat m O) (ex2 nat (\lambda (m0: nat).(eq nat m (S m0))) 
2265 (\lambda (m0: nat).(lt m0 d))) (eq nat (wadd g (S (weight_map g (lift (S h) d 
2266 t0))) m) (wadd f (S (weight_map f (lift h d t0))) m)) (\lambda (H5: (eq nat m 
2267 O)).(eq_ind_r nat O (\lambda (n: nat).(eq nat (wadd g (S (weight_map g (lift 
2268 (S h) d t0))) n) (wadd f (S (weight_map f (lift h d t0))) n))) (f_equal nat 
2269 nat S (weight_map g (lift (S h) d t0)) (weight_map f (lift h d t0)) 
2270 (sym_equal nat (weight_map f (lift h d t0)) (weight_map g (lift (S h) d t0)) 
2271 (H h d f g H1 H2 H3))) m H5)) (\lambda (H5: (ex2 nat (\lambda (m0: nat).(eq 
2272 nat m (S m0))) (\lambda (m: nat).(lt m d)))).(ex2_ind nat (\lambda (m0: 
2273 nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d)) (eq nat (wadd g (S 
2274 (weight_map g (lift (S h) d t0))) m) (wadd f (S (weight_map f (lift h d t0))) 
2275 m)) (\lambda (x: nat).(\lambda (H6: (eq nat m (S x))).(\lambda (H7: (lt x 
2276 d)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (wadd g (S (weight_map g 
2277 (lift (S h) d t0))) n) (wadd f (S (weight_map f (lift h d t0))) n))) (H1 x 
2278 H7) m H6)))) H5)) (lt_gen_xS m d H4)))) H2 (\lambda (m: nat).(\lambda (H4: 
2279 (le (S d) m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S n))) (\lambda (n: 
2280 nat).(le d n)) (eq nat (g m) (wadd f (S (weight_map f (lift h d t0))) m)) 
2281 (\lambda (x: nat).(\lambda (H5: (eq nat m (S x))).(\lambda (H6: (le d 
2282 x)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (g n) (wadd f (S 
2283 (weight_map f (lift h d t0))) n))) (H3 x H6) m H5)))) (le_gen_S d m H4))))))) 
2284 (f_equal nat nat S (plus (weight_map f (lift h d t0)) (weight_map (wadd f O) 
2285 (lift h (S d) t1))) (plus (weight_map g (lift (S h) d t0)) (weight_map (wadd 
2286 g O) (lift (S h) (S d) t1))) (f_equal2 nat nat nat plus (weight_map f (lift h 
2287 d t0)) (weight_map g (lift (S h) d t0)) (weight_map (wadd f O) (lift h (S d) 
2288 t1)) (weight_map (wadd g O) (lift (S h) (S d) t1)) (H h d f g H1 H2 H3) (H0 h 
2289 (S d) (wadd f O) (wadd g O) (\lambda (m: nat).(\lambda (H4: (lt m (S 
2290 d))).(or_ind (eq nat m O) (ex2 nat (\lambda (m0: nat).(eq nat m (S m0))) 
2291 (\lambda (m0: nat).(lt m0 d))) (eq nat (wadd g O m) (wadd f O m)) (\lambda 
2292 (H5: (eq nat m O)).(eq_ind_r nat O (\lambda (n: nat).(eq nat (wadd g O n) 
2293 (wadd f O n))) (refl_equal nat O) m H5)) (\lambda (H5: (ex2 nat (\lambda (m0: 
2294 nat).(eq nat m (S m0))) (\lambda (m: nat).(lt m d)))).(ex2_ind nat (\lambda 
2295 (m0: nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d)) (eq nat (wadd g O 
2296 m) (wadd f O m)) (\lambda (x: nat).(\lambda (H6: (eq nat m (S x))).(\lambda 
2297 (H7: (lt x d)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (wadd g O n) 
2298 (wadd f O n))) (H1 x H7) m H6)))) H5)) (lt_gen_xS m d H4)))) H2 (\lambda (m: 
2299 nat).(\lambda (H4: (le (S d) m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S 
2300 n))) (\lambda (n: nat).(le d n)) (eq nat (g m) (wadd f O m)) (\lambda (x: 
2301 nat).(\lambda (H5: (eq nat m (S x))).(\lambda (H6: (le d x)).(eq_ind_r nat (S 
2302 x) (\lambda (n: nat).(eq nat (g n) (wadd f O n))) (H3 x H6) m H5)))) 
2303 (le_gen_S d m H4))))))) (f_equal nat nat S (plus (weight_map f (lift h d t0)) 
2304 (weight_map (wadd f O) (lift h (S d) t1))) (plus (weight_map g (lift (S h) d 
2305 t0)) (weight_map (wadd g O) (lift (S h) (S d) t1))) (f_equal2 nat nat nat 
2306 plus (weight_map f (lift h d t0)) (weight_map g (lift (S h) d t0)) 
2307 (weight_map (wadd f O) (lift h (S d) t1)) (weight_map (wadd g O) (lift (S h) 
2308 (S d) t1)) (H h d f g H1 H2 H3) (H0 h (S d) (wadd f O) (wadd g O) (\lambda 
2309 (m: nat).(\lambda (H4: (lt m (S d))).(or_ind (eq nat m O) (ex2 nat (\lambda 
2310 (m0: nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d))) (eq nat (wadd g O 
2311 m) (wadd f O m)) (\lambda (H5: (eq nat m O)).(eq_ind_r nat O (\lambda (n: 
2312 nat).(eq nat (wadd g O n) (wadd f O n))) (refl_equal nat O) m H5)) (\lambda 
2313 (H5: (ex2 nat (\lambda (m0: nat).(eq nat m (S m0))) (\lambda (m: nat).(lt m 
2314 d)))).(ex2_ind nat (\lambda (m0: nat).(eq nat m (S m0))) (\lambda (m0: 
2315 nat).(lt m0 d)) (eq nat (wadd g O m) (wadd f O m)) (\lambda (x: nat).(\lambda 
2316 (H6: (eq nat m (S x))).(\lambda (H7: (lt x d)).(eq_ind_r nat (S x) (\lambda 
2317 (n: nat).(eq nat (wadd g O n) (wadd f O n))) (H1 x H7) m H6)))) H5)) 
2318 (lt_gen_xS m d H4)))) H2 (\lambda (m: nat).(\lambda (H4: (le (S d) 
2319 m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S n))) (\lambda (n: nat).(le d 
2320 n)) (eq nat (g m) (wadd f O m)) (\lambda (x: nat).(\lambda (H5: (eq nat m (S 
2321 x))).(\lambda (H6: (le d x)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (g 
2322 n) (wadd f O n))) (H3 x H6) m H5)))) (le_gen_S d m H4))))))) b) (lift (S h) d 
2323 (THead (Bind b) t0 t1)) (lift_head (Bind b) t0 t1 (S h) d)) (lift h d (THead 
2324 (Bind b) t0 t1)) (lift_head (Bind b) t0 t1 h d))) (\lambda (f0: F).(eq_ind_r 
2325 T (THead (Flat f0) (lift h d t0) (lift h (s (Flat f0) d) t1)) (\lambda (t2: 
2326 T).(eq nat (weight_map f t2) (weight_map g (lift (S h) d (THead (Flat f0) t0 
2327 t1))))) (eq_ind_r T (THead (Flat f0) (lift (S h) d t0) (lift (S h) (s (Flat 
2328 f0) d) t1)) (\lambda (t2: T).(eq nat (weight_map f (THead (Flat f0) (lift h d 
2329 t0) (lift h (s (Flat f0) d) t1))) (weight_map g t2))) (f_equal nat nat S 
2330 (plus (weight_map f (lift h d t0)) (weight_map f (lift h d t1))) (plus 
2331 (weight_map g (lift (S h) d t0)) (weight_map g (lift (S h) d t1))) (f_equal2 
2332 nat nat nat plus (weight_map f (lift h d t0)) (weight_map g (lift (S h) d 
2333 t0)) (weight_map f (lift h d t1)) (weight_map g (lift (S h) d t1)) (H h d f g 
2334 H1 H2 H3) (H0 h d f g H1 H2 H3))) (lift (S h) d (THead (Flat f0) t0 t1)) 
2335 (lift_head (Flat f0) t0 t1 (S h) d)) (lift h d (THead (Flat f0) t0 t1)) 
2336 (lift_head (Flat f0) t0 t1 h d))) k))))))))))))) t)).
2337
2338 theorem lift_weight_add_O:
2339  \forall (w: nat).(\forall (t: T).(\forall (h: nat).(\forall (f: ((nat \to 
2340 nat))).(eq nat (weight_map f (lift h O t)) (weight_map (wadd f w) (lift (S h) 
2341 O t))))))
2342 \def
2343  \lambda (w: nat).(\lambda (t: T).(\lambda (h: nat).(\lambda (f: ((nat \to 
2344 nat))).(lift_weight_add (plus (wadd f w O) O) t h O f (wadd f w) (\lambda (m: 
2345 nat).(\lambda (H: (lt m O)).(let H0 \def (match H return (\lambda (n: 
2346 nat).(\lambda (_: (le ? n)).((eq nat n O) \to (eq nat (wadd f w m) (f m))))) 
2347 with [le_n \Rightarrow (\lambda (H0: (eq nat (S m) O)).(let H1 \def (eq_ind 
2348 nat (S m) (\lambda (e: nat).(match e return (\lambda (_: nat).Prop) with [O 
2349 \Rightarrow False | (S _) \Rightarrow True])) I O H0) in (False_ind (eq nat 
2350 (wadd f w m) (f m)) H1))) | (le_S m0 H0) \Rightarrow (\lambda (H1: (eq nat (S 
2351 m0) O)).((let H2 \def (eq_ind nat (S m0) (\lambda (e: nat).(match e return 
2352 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
2353 I O H1) in (False_ind ((le (S m) m0) \to (eq nat (wadd f w m) (f m))) H2)) 
2354 H0))]) in (H0 (refl_equal nat O))))) (plus_n_O (wadd f w O)) (\lambda (m: 
2355 nat).(\lambda (_: (le O m)).(refl_equal nat (f m)))))))).
2356
2357 theorem lift_tlt_dx:
2358  \forall (k: K).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall 
2359 (d: nat).(tlt t (THead k u (lift h d t)))))))
2360 \def
2361  \lambda (k: K).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda 
2362 (d: nat).(eq_ind nat (weight (lift h d t)) (\lambda (n: nat).(lt n (weight 
2363 (THead k u (lift h d t))))) (tlt_head_dx k u (lift h d t)) (weight t) 
2364 (lift_weight t h d)))))).
2365
2366 inductive PList: Set \def
2367 | PNil: PList
2368 | PCons: nat \to (nat \to (PList \to PList)).
2369
2370 definition PConsTail:
2371  PList \to (nat \to (nat \to PList))
2372 \def
2373  let rec PConsTail (hds: PList) on hds: (nat \to (nat \to PList)) \def 
2374 (\lambda (h0: nat).(\lambda (d0: nat).(match hds with [PNil \Rightarrow 
2375 (PCons h0 d0 PNil) | (PCons h d hds0) \Rightarrow (PCons h d (PConsTail hds0 
2376 h0 d0))]))) in PConsTail.
2377
2378 definition trans:
2379  PList \to (nat \to nat)
2380 \def
2381  let rec trans (hds: PList) on hds: (nat \to nat) \def (\lambda (i: 
2382 nat).(match hds with [PNil \Rightarrow i | (PCons h d hds0) \Rightarrow (let 
2383 j \def (trans hds0 i) in (match (blt j d) with [true \Rightarrow j | false 
2384 \Rightarrow (plus j h)]))])) in trans.
2385
2386 definition Ss:
2387  PList \to PList
2388 \def
2389  let rec Ss (hds: PList) on hds: PList \def (match hds with [PNil \Rightarrow 
2390 PNil | (PCons h d hds0) \Rightarrow (PCons h (S d) (Ss hds0))]) in Ss.
2391
2392 definition lift1:
2393  PList \to (T \to T)
2394 \def
2395  let rec lift1 (hds: PList) on hds: (T \to T) \def (\lambda (t: T).(match hds 
2396 with [PNil \Rightarrow t | (PCons h d hds0) \Rightarrow (lift h d (lift1 hds0 
2397 t))])) in lift1.
2398
2399 definition lifts1:
2400  PList \to (TList \to TList)
2401 \def
2402  let rec lifts1 (hds: PList) (ts: TList) on ts: TList \def (match ts with 
2403 [TNil \Rightarrow TNil | (TCons t ts0) \Rightarrow (TCons (lift1 hds t) 
2404 (lifts1 hds ts0))]) in lifts1.
2405
2406 theorem lift1_lref:
2407  \forall (hds: PList).(\forall (i: nat).(eq T (lift1 hds (TLRef i)) (TLRef 
2408 (trans hds i))))
2409 \def
2410  \lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall (i: nat).(eq T 
2411 (lift1 p (TLRef i)) (TLRef (trans p i))))) (\lambda (i: nat).(refl_equal T 
2412 (TLRef (trans PNil i)))) (\lambda (h: nat).(\lambda (d: nat).(\lambda (p: 
2413 PList).(\lambda (H: ((\forall (i: nat).(eq T (lift1 p (TLRef i)) (TLRef 
2414 (trans p i)))))).(\lambda (i: nat).(eq_ind_r T (TLRef (trans p i)) (\lambda 
2415 (t: T).(eq T (lift h d t) (TLRef (match (blt (trans p i) d) with [true 
2416 \Rightarrow (trans p i) | false \Rightarrow (plus (trans p i) h)])))) 
2417 (refl_equal T (TLRef (match (blt (trans p i) d) with [true \Rightarrow (trans 
2418 p i) | false \Rightarrow (plus (trans p i) h)]))) (lift1 p (TLRef i)) (H 
2419 i))))))) hds).
2420
2421 theorem lift1_bind:
2422  \forall (b: B).(\forall (hds: PList).(\forall (u: T).(\forall (t: T).(eq T 
2423 (lift1 hds (THead (Bind b) u t)) (THead (Bind b) (lift1 hds u) (lift1 (Ss 
2424 hds) t))))))
2425 \def
2426  \lambda (b: B).(\lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall 
2427 (u: T).(\forall (t: T).(eq T (lift1 p (THead (Bind b) u t)) (THead (Bind b) 
2428 (lift1 p u) (lift1 (Ss p) t)))))) (\lambda (u: T).(\lambda (t: T).(refl_equal 
2429 T (THead (Bind b) (lift1 PNil u) (lift1 (Ss PNil) t))))) (\lambda (h: 
2430 nat).(\lambda (d: nat).(\lambda (p: PList).(\lambda (H: ((\forall (u: 
2431 T).(\forall (t: T).(eq T (lift1 p (THead (Bind b) u t)) (THead (Bind b) 
2432 (lift1 p u) (lift1 (Ss p) t))))))).(\lambda (u: T).(\lambda (t: T).(eq_ind_r 
2433 T (THead (Bind b) (lift1 p u) (lift1 (Ss p) t)) (\lambda (t0: T).(eq T (lift 
2434 h d t0) (THead (Bind b) (lift h d (lift1 p u)) (lift h (S d) (lift1 (Ss p) 
2435 t))))) (eq_ind_r T (THead (Bind b) (lift h d (lift1 p u)) (lift h (S d) 
2436 (lift1 (Ss p) t))) (\lambda (t0: T).(eq T t0 (THead (Bind b) (lift h d (lift1 
2437 p u)) (lift h (S d) (lift1 (Ss p) t))))) (refl_equal T (THead (Bind b) (lift 
2438 h d (lift1 p u)) (lift h (S d) (lift1 (Ss p) t)))) (lift h d (THead (Bind b) 
2439 (lift1 p u) (lift1 (Ss p) t))) (lift_bind b (lift1 p u) (lift1 (Ss p) t) h 
2440 d)) (lift1 p (THead (Bind b) u t)) (H u t)))))))) hds)).
2441
2442 theorem lift1_flat:
2443  \forall (f: F).(\forall (hds: PList).(\forall (u: T).(\forall (t: T).(eq T 
2444 (lift1 hds (THead (Flat f) u t)) (THead (Flat f) (lift1 hds u) (lift1 hds 
2445 t))))))
2446 \def
2447  \lambda (f: F).(\lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall 
2448 (u: T).(\forall (t: T).(eq T (lift1 p (THead (Flat f) u t)) (THead (Flat f) 
2449 (lift1 p u) (lift1 p t)))))) (\lambda (u: T).(\lambda (t: T).(refl_equal T 
2450 (THead (Flat f) (lift1 PNil u) (lift1 PNil t))))) (\lambda (h: nat).(\lambda 
2451 (d: nat).(\lambda (p: PList).(\lambda (H: ((\forall (u: T).(\forall (t: 
2452 T).(eq T (lift1 p (THead (Flat f) u t)) (THead (Flat f) (lift1 p u) (lift1 p 
2453 t))))))).(\lambda (u: T).(\lambda (t: T).(eq_ind_r T (THead (Flat f) (lift1 p 
2454 u) (lift1 p t)) (\lambda (t0: T).(eq T (lift h d t0) (THead (Flat f) (lift h 
2455 d (lift1 p u)) (lift h d (lift1 p t))))) (eq_ind_r T (THead (Flat f) (lift h 
2456 d (lift1 p u)) (lift h d (lift1 p t))) (\lambda (t0: T).(eq T t0 (THead (Flat 
2457 f) (lift h d (lift1 p u)) (lift h d (lift1 p t))))) (refl_equal T (THead 
2458 (Flat f) (lift h d (lift1 p u)) (lift h d (lift1 p t)))) (lift h d (THead 
2459 (Flat f) (lift1 p u) (lift1 p t))) (lift_flat f (lift1 p u) (lift1 p t) h d)) 
2460 (lift1 p (THead (Flat f) u t)) (H u t)))))))) hds)).
2461
2462 theorem lift1_cons_tail:
2463  \forall (t: T).(\forall (h: nat).(\forall (d: nat).(\forall (hds: PList).(eq 
2464 T (lift1 (PConsTail hds h d) t) (lift1 hds (lift h d t))))))
2465 \def
2466  \lambda (t: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (hds: 
2467 PList).(PList_ind (\lambda (p: PList).(eq T (lift1 (PConsTail p h d) t) 
2468 (lift1 p (lift h d t)))) (refl_equal T (lift h d t)) (\lambda (n: 
2469 nat).(\lambda (n0: nat).(\lambda (p: PList).(\lambda (H: (eq T (lift1 
2470 (PConsTail p h d) t) (lift1 p (lift h d t)))).(eq_ind_r T (lift1 p (lift h d 
2471 t)) (\lambda (t0: T).(eq T (lift n n0 t0) (lift n n0 (lift1 p (lift h d 
2472 t))))) (refl_equal T (lift n n0 (lift1 p (lift h d t)))) (lift1 (PConsTail p 
2473 h d) t) H))))) hds)))).
2474
2475 theorem lifts1_flat:
2476  \forall (f: F).(\forall (hds: PList).(\forall (t: T).(\forall (ts: 
2477 TList).(eq T (lift1 hds (THeads (Flat f) ts t)) (THeads (Flat f) (lifts1 hds 
2478 ts) (lift1 hds t))))))
2479 \def
2480  \lambda (f: F).(\lambda (hds: PList).(\lambda (t: T).(\lambda (ts: 
2481 TList).(TList_ind (\lambda (t0: TList).(eq T (lift1 hds (THeads (Flat f) t0 
2482 t)) (THeads (Flat f) (lifts1 hds t0) (lift1 hds t)))) (refl_equal T (lift1 
2483 hds t)) (\lambda (t0: T).(\lambda (t1: TList).(\lambda (H: (eq T (lift1 hds 
2484 (THeads (Flat f) t1 t)) (THeads (Flat f) (lifts1 hds t1) (lift1 hds 
2485 t)))).(eq_ind_r T (THead (Flat f) (lift1 hds t0) (lift1 hds (THeads (Flat f) 
2486 t1 t))) (\lambda (t2: T).(eq T t2 (THead (Flat f) (lift1 hds t0) (THeads 
2487 (Flat f) (lifts1 hds t1) (lift1 hds t))))) (eq_ind_r T (THeads (Flat f) 
2488 (lifts1 hds t1) (lift1 hds t)) (\lambda (t2: T).(eq T (THead (Flat f) (lift1 
2489 hds t0) t2) (THead (Flat f) (lift1 hds t0) (THeads (Flat f) (lifts1 hds t1) 
2490 (lift1 hds t))))) (refl_equal T (THead (Flat f) (lift1 hds t0) (THeads (Flat 
2491 f) (lifts1 hds t1) (lift1 hds t)))) (lift1 hds (THeads (Flat f) t1 t)) H) 
2492 (lift1 hds (THead (Flat f) t0 (THeads (Flat f) t1 t))) (lift1_flat f hds t0 
2493 (THeads (Flat f) t1 t)))))) ts)))).
2494
2495 theorem lifts1_nil:
2496  \forall (ts: TList).(eq TList (lifts1 PNil ts) ts)
2497 \def
2498  \lambda (ts: TList).(TList_ind (\lambda (t: TList).(eq TList (lifts1 PNil t) 
2499 t)) (refl_equal TList TNil) (\lambda (t: T).(\lambda (t0: TList).(\lambda (H: 
2500 (eq TList (lifts1 PNil t0) t0)).(eq_ind_r TList t0 (\lambda (t1: TList).(eq 
2501 TList (TCons t t1) (TCons t t0))) (refl_equal TList (TCons t t0)) (lifts1 
2502 PNil t0) H)))) ts).
2503
2504 theorem lifts1_cons:
2505  \forall (h: nat).(\forall (d: nat).(\forall (hds: PList).(\forall (ts: 
2506 TList).(eq TList (lifts1 (PCons h d hds) ts) (lifts h d (lifts1 hds ts))))))
2507 \def
2508  \lambda (h: nat).(\lambda (d: nat).(\lambda (hds: PList).(\lambda (ts: 
2509 TList).(TList_ind (\lambda (t: TList).(eq TList (lifts1 (PCons h d hds) t) 
2510 (lifts h d (lifts1 hds t)))) (refl_equal TList TNil) (\lambda (t: T).(\lambda 
2511 (t0: TList).(\lambda (H: (eq TList (lifts1 (PCons h d hds) t0) (lifts h d 
2512 (lifts1 hds t0)))).(eq_ind_r TList (lifts h d (lifts1 hds t0)) (\lambda (t1: 
2513 TList).(eq TList (TCons (lift h d (lift1 hds t)) t1) (TCons (lift h d (lift1 
2514 hds t)) (lifts h d (lifts1 hds t0))))) (refl_equal TList (TCons (lift h d 
2515 (lift1 hds t)) (lifts h d (lifts1 hds t0)))) (lifts1 (PCons h d hds) t0) 
2516 H)))) ts)))).
2517
2518 theorem lift1_xhg:
2519  \forall (hds: PList).(\forall (t: T).(eq T (lift1 (Ss hds) (lift (S O) O t)) 
2520 (lift (S O) O (lift1 hds t))))
2521 \def
2522  \lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall (t: T).(eq T 
2523 (lift1 (Ss p) (lift (S O) O t)) (lift (S O) O (lift1 p t))))) (\lambda (t: 
2524 T).(refl_equal T (lift (S O) O t))) (\lambda (h: nat).(\lambda (d: 
2525 nat).(\lambda (p: PList).(\lambda (H: ((\forall (t: T).(eq T (lift1 (Ss p) 
2526 (lift (S O) O t)) (lift (S O) O (lift1 p t)))))).(\lambda (t: T).(eq_ind_r T 
2527 (lift (S O) O (lift1 p t)) (\lambda (t0: T).(eq T (lift h (S d) t0) (lift (S 
2528 O) O (lift h d (lift1 p t))))) (eq_ind nat (plus (S O) d) (\lambda (n: 
2529 nat).(eq T (lift h n (lift (S O) O (lift1 p t))) (lift (S O) O (lift h d 
2530 (lift1 p t))))) (eq_ind_r T (lift (S O) O (lift h d (lift1 p t))) (\lambda 
2531 (t0: T).(eq T t0 (lift (S O) O (lift h d (lift1 p t))))) (refl_equal T (lift 
2532 (S O) O (lift h d (lift1 p t)))) (lift h (plus (S O) d) (lift (S O) O (lift1 
2533 p t))) (lift_d (lift1 p t) h (S O) d O (le_O_n d))) (S d) (refl_equal nat (S 
2534 d))) (lift1 (Ss p) (lift (S O) O t)) (H t))))))) hds).
2535
2536 theorem lifts1_xhg:
2537  \forall (hds: PList).(\forall (ts: TList).(eq TList (lifts1 (Ss hds) (lifts 
2538 (S O) O ts)) (lifts (S O) O (lifts1 hds ts))))
2539 \def
2540  \lambda (hds: PList).(\lambda (ts: TList).(TList_ind (\lambda (t: TList).(eq 
2541 TList (lifts1 (Ss hds) (lifts (S O) O t)) (lifts (S O) O (lifts1 hds t)))) 
2542 (refl_equal TList TNil) (\lambda (t: T).(\lambda (t0: TList).(\lambda (H: (eq 
2543 TList (lifts1 (Ss hds) (lifts (S O) O t0)) (lifts (S O) O (lifts1 hds 
2544 t0)))).(eq_ind_r T (lift (S O) O (lift1 hds t)) (\lambda (t1: T).(eq TList 
2545 (TCons t1 (lifts1 (Ss hds) (lifts (S O) O t0))) (TCons (lift (S O) O (lift1 
2546 hds t)) (lifts (S O) O (lifts1 hds t0))))) (eq_ind_r TList (lifts (S O) O 
2547 (lifts1 hds t0)) (\lambda (t1: TList).(eq TList (TCons (lift (S O) O (lift1 
2548 hds t)) t1) (TCons (lift (S O) O (lift1 hds t)) (lifts (S O) O (lifts1 hds 
2549 t0))))) (refl_equal TList (TCons (lift (S O) O (lift1 hds t)) (lifts (S O) O 
2550 (lifts1 hds t0)))) (lifts1 (Ss hds) (lifts (S O) O t0)) H) (lift1 (Ss hds) 
2551 (lift (S O) O t)) (lift1_xhg hds t))))) ts)).
2552
2553 inductive cnt: T \to Prop \def
2554 | cnt_sort: \forall (n: nat).(cnt (TSort n))
2555 | cnt_head: \forall (t: T).((cnt t) \to (\forall (k: K).(\forall (v: T).(cnt 
2556 (THead k v t))))).
2557
2558 theorem cnt_lift:
2559  \forall (t: T).((cnt t) \to (\forall (i: nat).(\forall (d: nat).(cnt (lift i 
2560 d t)))))
2561 \def
2562  \lambda (t: T).(\lambda (H: (cnt t)).(cnt_ind (\lambda (t0: T).(\forall (i: 
2563 nat).(\forall (d: nat).(cnt (lift i d t0))))) (\lambda (n: nat).(\lambda (i: 
2564 nat).(\lambda (d: nat).(eq_ind_r T (TSort n) (\lambda (t0: T).(cnt t0)) 
2565 (cnt_sort n) (lift i d (TSort n)) (lift_sort n i d))))) (\lambda (t0: 
2566 T).(\lambda (_: (cnt t0)).(\lambda (H1: ((\forall (i: nat).(\forall (d: 
2567 nat).(cnt (lift i d t0)))))).(\lambda (k: K).(\lambda (v: T).(\lambda (i: 
2568 nat).(\lambda (d: nat).(eq_ind_r T (THead k (lift i d v) (lift i (s k d) t0)) 
2569 (\lambda (t1: T).(cnt t1)) (cnt_head (lift i (s k d) t0) (H1 i (s k d)) k 
2570 (lift i d v)) (lift i d (THead k v t0)) (lift_head k v t0 i d))))))))) t H)).
2571
2572 inductive drop: nat \to (nat \to (C \to (C \to Prop))) \def
2573 | drop_refl: \forall (c: C).(drop O O c c)
2574 | drop_drop: \forall (k: K).(\forall (h: nat).(\forall (c: C).(\forall (e: 
2575 C).((drop (r k h) O c e) \to (\forall (u: T).(drop (S h) O (CHead c k u) 
2576 e))))))
2577 | drop_skip: \forall (k: K).(\forall (h: nat).(\forall (d: nat).(\forall (c: 
2578 C).(\forall (e: C).((drop h (r k d) c e) \to (\forall (u: T).(drop h (S d) 
2579 (CHead c k (lift h (r k d) u)) (CHead e k u)))))))).
2580
2581 theorem drop_gen_sort:
2582  \forall (n: nat).(\forall (h: nat).(\forall (d: nat).(\forall (x: C).((drop 
2583 h d (CSort n) x) \to (and3 (eq C x (CSort n)) (eq nat h O) (eq nat d O))))))
2584 \def
2585  \lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (x: 
2586 C).(\lambda (H: (drop h d (CSort n) x)).(insert_eq C (CSort n) (\lambda (c: 
2587 C).(drop h d c x)) (and3 (eq C x (CSort n)) (eq nat h O) (eq nat d O)) 
2588 (\lambda (y: C).(\lambda (H0: (drop h d y x)).(drop_ind (\lambda (n0: 
2589 nat).(\lambda (n1: nat).(\lambda (c: C).(\lambda (c0: C).((eq C c (CSort n)) 
2590 \to (and3 (eq C c0 (CSort n)) (eq nat n0 O) (eq nat n1 O))))))) (\lambda (c: 
2591 C).(\lambda (H1: (eq C c (CSort n))).(let H2 \def (f_equal C C (\lambda (e: 
2592 C).e) c (CSort n) H1) in (eq_ind_r C (CSort n) (\lambda (c0: C).(and3 (eq C 
2593 c0 (CSort n)) (eq nat O O) (eq nat O O))) (and3_intro (eq C (CSort n) (CSort 
2594 n)) (eq nat O O) (eq nat O O) (refl_equal C (CSort n)) (refl_equal nat O) 
2595 (refl_equal nat O)) c H2)))) (\lambda (k: K).(\lambda (h0: nat).(\lambda (c: 
2596 C).(\lambda (e: C).(\lambda (_: (drop (r k h0) O c e)).(\lambda (_: (((eq C c 
2597 (CSort n)) \to (and3 (eq C e (CSort n)) (eq nat (r k h0) O) (eq nat O 
2598 O))))).(\lambda (u: T).(\lambda (H3: (eq C (CHead c k u) (CSort n))).(let H4 
2599 \def (eq_ind C (CHead c k u) (\lambda (ee: C).(match ee return (\lambda (_: 
2600 C).Prop) with [(CSort _) \Rightarrow False | (CHead _ _ _) \Rightarrow 
2601 True])) I (CSort n) H3) in (False_ind (and3 (eq C e (CSort n)) (eq nat (S h0) 
2602 O) (eq nat O O)) H4)))))))))) (\lambda (k: K).(\lambda (h0: nat).(\lambda 
2603 (d0: nat).(\lambda (c: C).(\lambda (e: C).(\lambda (_: (drop h0 (r k d0) c 
2604 e)).(\lambda (_: (((eq C c (CSort n)) \to (and3 (eq C e (CSort n)) (eq nat h0 
2605 O) (eq nat (r k d0) O))))).(\lambda (u: T).(\lambda (H3: (eq C (CHead c k 
2606 (lift h0 (r k d0) u)) (CSort n))).(let H4 \def (eq_ind C (CHead c k (lift h0 
2607 (r k d0) u)) (\lambda (ee: C).(match ee return (\lambda (_: C).Prop) with 
2608 [(CSort _) \Rightarrow False | (CHead _ _ _) \Rightarrow True])) I (CSort n) 
2609 H3) in (False_ind (and3 (eq C (CHead e k u) (CSort n)) (eq nat h0 O) (eq nat 
2610 (S d0) O)) H4))))))))))) h d y x H0))) H))))).
2611
2612 theorem drop_gen_refl:
2613  \forall (x: C).(\forall (e: C).((drop O O x e) \to (eq C x e)))
2614 \def
2615  \lambda (x: C).(\lambda (e: C).(\lambda (H: (drop O O x e)).(insert_eq nat O 
2616 (\lambda (n: nat).(drop n O x e)) (eq C x e) (\lambda (y: nat).(\lambda (H0: 
2617 (drop y O x e)).(insert_eq nat O (\lambda (n: nat).(drop y n x e)) ((eq nat y 
2618 O) \to (eq C x e)) (\lambda (y0: nat).(\lambda (H1: (drop y y0 x 
2619 e)).(drop_ind (\lambda (n: nat).(\lambda (n0: nat).(\lambda (c: C).(\lambda 
2620 (c0: C).((eq nat n0 O) \to ((eq nat n O) \to (eq C c c0))))))) (\lambda (c: 
2621 C).(\lambda (_: (eq nat O O)).(\lambda (_: (eq nat O O)).(refl_equal C c)))) 
2622 (\lambda (k: K).(\lambda (h: nat).(\lambda (c: C).(\lambda (e0: C).(\lambda 
2623 (_: (drop (r k h) O c e0)).(\lambda (_: (((eq nat O O) \to ((eq nat (r k h) 
2624 O) \to (eq C c e0))))).(\lambda (u: T).(\lambda (_: (eq nat O O)).(\lambda 
2625 (H5: (eq nat (S h) O)).(let H6 \def (eq_ind nat (S h) (\lambda (ee: 
2626 nat).(match ee return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S 
2627 _) \Rightarrow True])) I O H5) in (False_ind (eq C (CHead c k u) e0) 
2628 H6))))))))))) (\lambda (k: K).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
2629 (c: C).(\lambda (e0: C).(\lambda (H2: (drop h (r k d) c e0)).(\lambda (H3: 
2630 (((eq nat (r k d) O) \to ((eq nat h O) \to (eq C c e0))))).(\lambda (u: 
2631 T).(\lambda (H4: (eq nat (S d) O)).(\lambda (H5: (eq nat h O)).(let H6 \def 
2632 (f_equal nat nat (\lambda (e1: nat).e1) h O H5) in (let H7 \def (eq_ind nat h 
2633 (\lambda (n: nat).((eq nat (r k d) O) \to ((eq nat n O) \to (eq C c e0)))) H3 
2634 O H6) in (let H8 \def (eq_ind nat h (\lambda (n: nat).(drop n (r k d) c e0)) 
2635 H2 O H6) in (eq_ind_r nat O (\lambda (n: nat).(eq C (CHead c k (lift n (r k 
2636 d) u)) (CHead e0 k u))) (let H9 \def (eq_ind nat (S d) (\lambda (ee: 
2637 nat).(match ee return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S 
2638 _) \Rightarrow True])) I O H4) in (False_ind (eq C (CHead c k (lift O (r k d) 
2639 u)) (CHead e0 k u)) H9)) h H6)))))))))))))) y y0 x e H1))) H0))) H))).
2640
2641 theorem drop_gen_drop:
2642  \forall (k: K).(\forall (c: C).(\forall (x: C).(\forall (u: T).(\forall (h: 
2643 nat).((drop (S h) O (CHead c k u) x) \to (drop (r k h) O c x))))))
2644 \def
2645  \lambda (k: K).(\lambda (c: C).(\lambda (x: C).(\lambda (u: T).(\lambda (h: 
2646 nat).(\lambda (H: (drop (S h) O (CHead c k u) x)).(insert_eq C (CHead c k u) 
2647 (\lambda (c0: C).(drop (S h) O c0 x)) (drop (r k h) O c x) (\lambda (y: 
2648 C).(\lambda (H0: (drop (S h) O y x)).(insert_eq nat O (\lambda (n: nat).(drop 
2649 (S h) n y x)) ((eq C y (CHead c k u)) \to (drop (r k h) O c x)) (\lambda (y0: 
2650 nat).(\lambda (H1: (drop (S h) y0 y x)).(insert_eq nat (S h) (\lambda (n: 
2651 nat).(drop n y0 y x)) ((eq nat y0 O) \to ((eq C y (CHead c k u)) \to (drop (r 
2652 k h) O c x))) (\lambda (y1: nat).(\lambda (H2: (drop y1 y0 y x)).(drop_ind 
2653 (\lambda (n: nat).(\lambda (n0: nat).(\lambda (c0: C).(\lambda (c1: C).((eq 
2654 nat n (S h)) \to ((eq nat n0 O) \to ((eq C c0 (CHead c k u)) \to (drop (r k 
2655 h) O c c1)))))))) (\lambda (c0: C).(\lambda (H3: (eq nat O (S h))).(\lambda 
2656 (_: (eq nat O O)).(\lambda (_: (eq C c0 (CHead c k u))).(let H6 \def (match 
2657 H3 return (\lambda (n: nat).(\lambda (_: (eq ? ? n)).((eq nat n (S h)) \to 
2658 (drop (r k h) O c c0)))) with [refl_equal \Rightarrow (\lambda (H2: (eq nat O 
2659 (S h))).(let H3 \def (eq_ind nat O (\lambda (e: nat).(match e return (\lambda 
2660 (_: nat).Prop) with [O \Rightarrow True | (S _) \Rightarrow False])) I (S h) 
2661 H2) in (False_ind (drop (r k h) O c c0) H3)))]) in (H6 (refl_equal nat (S 
2662 h)))))))) (\lambda (k0: K).(\lambda (h0: nat).(\lambda (c0: C).(\lambda (e: 
2663 C).(\lambda (H3: (drop (r k0 h0) O c0 e)).(\lambda (_: (((eq nat (r k0 h0) (S 
2664 h)) \to ((eq nat O O) \to ((eq C c0 (CHead c k u)) \to (drop (r k h) O c 
2665 e)))))).(\lambda (u0: T).(\lambda (H5: (eq nat (S h0) (S h))).(\lambda (_: 
2666 (eq nat O O)).(\lambda (H7: (eq C (CHead c0 k0 u0) (CHead c k u))).(let H8 
2667 \def (match H5 return (\lambda (n: nat).(\lambda (_: (eq ? ? n)).((eq nat n 
2668 (S h)) \to (drop (r k h) O c e)))) with [refl_equal \Rightarrow (\lambda (H4: 
2669 (eq nat (S h0) (S h))).(let H5 \def (f_equal nat nat (\lambda (e0: 
2670 nat).(match e0 return (\lambda (_: nat).nat) with [O \Rightarrow h0 | (S n) 
2671 \Rightarrow n])) (S h0) (S h) H4) in (eq_ind nat h (\lambda (_: nat).(drop (r 
2672 k h) O c e)) (let H6 \def (match H7 return (\lambda (c0: C).(\lambda (_: (eq 
2673 ? ? c0)).((eq C c0 (CHead c k u)) \to (drop (r k h) O c e)))) with 
2674 [refl_equal \Rightarrow (\lambda (H4: (eq C (CHead c0 k0 u0) (CHead c k 
2675 u))).(let H6 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: 
2676 C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) \Rightarrow t])) (CHead 
2677 c0 k0 u0) (CHead c k u) H4) in ((let H7 \def (f_equal C K (\lambda (e0: 
2678 C).(match e0 return (\lambda (_: C).K) with [(CSort _) \Rightarrow k0 | 
2679 (CHead _ k _) \Rightarrow k])) (CHead c0 k0 u0) (CHead c k u) H4) in ((let H8 
2680 \def (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
2681 [(CSort _) \Rightarrow c0 | (CHead c _ _) \Rightarrow c])) (CHead c0 k0 u0) 
2682 (CHead c k u) H4) in (eq_ind C c (\lambda (_: C).((eq K k0 k) \to ((eq T u0 
2683 u) \to (drop (r k h) O c e)))) (\lambda (H9: (eq K k0 k)).(eq_ind K k 
2684 (\lambda (_: K).((eq T u0 u) \to (drop (r k h) O c e))) (\lambda (H10: (eq T 
2685 u0 u)).(eq_ind T u (\lambda (_: T).(drop (r k h) O c e)) (eq_ind nat h0 
2686 (\lambda (n: nat).(drop (r k n) O c e)) (eq_ind C c0 (\lambda (c: C).(drop (r 
2687 k h0) O c e)) (eq_ind K k0 (\lambda (k: K).(drop (r k h0) O c0 e)) H3 k H9) c 
2688 H8) h H5) u0 (sym_eq T u0 u H10))) k0 (sym_eq K k0 k H9))) c0 (sym_eq C c0 c 
2689 H8))) H7)) H6)))]) in (H6 (refl_equal C (CHead c k u)))) h0 (sym_eq nat h0 h 
2690 H5))))]) in (H8 (refl_equal nat (S h)))))))))))))) (\lambda (k0: K).(\lambda 
2691 (h0: nat).(\lambda (d: nat).(\lambda (c0: C).(\lambda (e: C).(\lambda (_: 
2692 (drop h0 (r k0 d) c0 e)).(\lambda (_: (((eq nat h0 (S h)) \to ((eq nat (r k0 
2693 d) O) \to ((eq C c0 (CHead c k u)) \to (drop (r k h) O c e)))))).(\lambda 
2694 (u0: T).(\lambda (_: (eq nat h0 (S h))).(\lambda (H6: (eq nat (S d) 
2695 O)).(\lambda (_: (eq C (CHead c0 k0 (lift h0 (r k0 d) u0)) (CHead c k 
2696 u))).(let H8 \def (match H6 return (\lambda (n: nat).(\lambda (_: (eq ? ? 
2697 n)).((eq nat n O) \to (drop (r k h) O c (CHead e k0 u0))))) with [refl_equal 
2698 \Rightarrow (\lambda (H4: (eq nat (S d) O)).(let H5 \def (eq_ind nat (S d) 
2699 (\lambda (e0: nat).(match e0 return (\lambda (_: nat).Prop) with [O 
2700 \Rightarrow False | (S _) \Rightarrow True])) I O H4) in (False_ind (drop (r 
2701 k h) O c (CHead e k0 u0)) H5)))]) in (H8 (refl_equal nat O)))))))))))))) y1 
2702 y0 y x H2))) H1))) H0))) H)))))).
2703
2704 theorem drop_gen_skip_r:
2705  \forall (c: C).(\forall (x: C).(\forall (u: T).(\forall (h: nat).(\forall 
2706 (d: nat).(\forall (k: K).((drop h (S d) x (CHead c k u)) \to (ex2 C (\lambda 
2707 (e: C).(eq C x (CHead e k (lift h (r k d) u)))) (\lambda (e: C).(drop h (r k 
2708 d) e c)))))))))
2709 \def
2710  \lambda (c: C).(\lambda (x: C).(\lambda (u: T).(\lambda (h: nat).(\lambda 
2711 (d: nat).(\lambda (k: K).(\lambda (H: (drop h (S d) x (CHead c k u))).(let H0 
2712 \def (match H return (\lambda (n: nat).(\lambda (n0: nat).(\lambda (c0: 
2713 C).(\lambda (c1: C).(\lambda (_: (drop n n0 c0 c1)).((eq nat n h) \to ((eq 
2714 nat n0 (S d)) \to ((eq C c0 x) \to ((eq C c1 (CHead c k u)) \to (ex2 C 
2715 (\lambda (e: C).(eq C x (CHead e k (lift h (r k d) u)))) (\lambda (e: 
2716 C).(drop h (r k d) e c)))))))))))) with [(drop_refl c0) \Rightarrow (\lambda 
2717 (H0: (eq nat O h)).(\lambda (H1: (eq nat O (S d))).(\lambda (H2: (eq C c0 
2718 x)).(\lambda (H3: (eq C c0 (CHead c k u))).(eq_ind nat O (\lambda (n: 
2719 nat).((eq nat O (S d)) \to ((eq C c0 x) \to ((eq C c0 (CHead c k u)) \to (ex2 
2720 C (\lambda (e: C).(eq C x (CHead e k (lift n (r k d) u)))) (\lambda (e: 
2721 C).(drop n (r k d) e c))))))) (\lambda (H4: (eq nat O (S d))).(let H5 \def 
2722 (eq_ind nat O (\lambda (e: nat).(match e return (\lambda (_: nat).Prop) with 
2723 [O \Rightarrow True | (S _) \Rightarrow False])) I (S d) H4) in (False_ind 
2724 ((eq C c0 x) \to ((eq C c0 (CHead c k u)) \to (ex2 C (\lambda (e: C).(eq C x 
2725 (CHead e k (lift O (r k d) u)))) (\lambda (e: C).(drop O (r k d) e c))))) 
2726 H5))) h H0 H1 H2 H3))))) | (drop_drop k0 h0 c0 e H0 u0) \Rightarrow (\lambda 
2727 (H1: (eq nat (S h0) h)).(\lambda (H2: (eq nat O (S d))).(\lambda (H3: (eq C 
2728 (CHead c0 k0 u0) x)).(\lambda (H4: (eq C e (CHead c k u))).(eq_ind nat (S h0) 
2729 (\lambda (n: nat).((eq nat O (S d)) \to ((eq C (CHead c0 k0 u0) x) \to ((eq C 
2730 e (CHead c k u)) \to ((drop (r k0 h0) O c0 e) \to (ex2 C (\lambda (e0: C).(eq 
2731 C x (CHead e0 k (lift n (r k d) u)))) (\lambda (e0: C).(drop n (r k d) e0 
2732 c)))))))) (\lambda (H5: (eq nat O (S d))).(let H6 \def (eq_ind nat O (\lambda 
2733 (e0: nat).(match e0 return (\lambda (_: nat).Prop) with [O \Rightarrow True | 
2734 (S _) \Rightarrow False])) I (S d) H5) in (False_ind ((eq C (CHead c0 k0 u0) 
2735 x) \to ((eq C e (CHead c k u)) \to ((drop (r k0 h0) O c0 e) \to (ex2 C 
2736 (\lambda (e0: C).(eq C x (CHead e0 k (lift (S h0) (r k d) u)))) (\lambda (e0: 
2737 C).(drop (S h0) (r k d) e0 c)))))) H6))) h H1 H2 H3 H4 H0))))) | (drop_skip 
2738 k0 h0 d0 c0 e H0 u0) \Rightarrow (\lambda (H1: (eq nat h0 h)).(\lambda (H2: 
2739 (eq nat (S d0) (S d))).(\lambda (H3: (eq C (CHead c0 k0 (lift h0 (r k0 d0) 
2740 u0)) x)).(\lambda (H4: (eq C (CHead e k0 u0) (CHead c k u))).(eq_ind nat h 
2741 (\lambda (n: nat).((eq nat (S d0) (S d)) \to ((eq C (CHead c0 k0 (lift n (r 
2742 k0 d0) u0)) x) \to ((eq C (CHead e k0 u0) (CHead c k u)) \to ((drop n (r k0 
2743 d0) c0 e) \to (ex2 C (\lambda (e0: C).(eq C x (CHead e0 k (lift h (r k d) 
2744 u)))) (\lambda (e0: C).(drop h (r k d) e0 c)))))))) (\lambda (H5: (eq nat (S 
2745 d0) (S d))).(let H6 \def (f_equal nat nat (\lambda (e0: nat).(match e0 return 
2746 (\lambda (_: nat).nat) with [O \Rightarrow d0 | (S n) \Rightarrow n])) (S d0) 
2747 (S d) H5) in (eq_ind nat d (\lambda (n: nat).((eq C (CHead c0 k0 (lift h (r 
2748 k0 n) u0)) x) \to ((eq C (CHead e k0 u0) (CHead c k u)) \to ((drop h (r k0 n) 
2749 c0 e) \to (ex2 C (\lambda (e0: C).(eq C x (CHead e0 k (lift h (r k d) u)))) 
2750 (\lambda (e0: C).(drop h (r k d) e0 c))))))) (\lambda (H7: (eq C (CHead c0 k0 
2751 (lift h (r k0 d) u0)) x)).(eq_ind C (CHead c0 k0 (lift h (r k0 d) u0)) 
2752 (\lambda (c1: C).((eq C (CHead e k0 u0) (CHead c k u)) \to ((drop h (r k0 d) 
2753 c0 e) \to (ex2 C (\lambda (e0: C).(eq C c1 (CHead e0 k (lift h (r k d) u)))) 
2754 (\lambda (e0: C).(drop h (r k d) e0 c)))))) (\lambda (H8: (eq C (CHead e k0 
2755 u0) (CHead c k u))).(let H9 \def (f_equal C T (\lambda (e0: C).(match e0 
2756 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) 
2757 \Rightarrow t])) (CHead e k0 u0) (CHead c k u) H8) in ((let H10 \def (f_equal 
2758 C K (\lambda (e0: C).(match e0 return (\lambda (_: C).K) with [(CSort _) 
2759 \Rightarrow k0 | (CHead _ k _) \Rightarrow k])) (CHead e k0 u0) (CHead c k u) 
2760 H8) in ((let H11 \def (f_equal C C (\lambda (e0: C).(match e0 return (\lambda 
2761 (_: C).C) with [(CSort _) \Rightarrow e | (CHead c _ _) \Rightarrow c])) 
2762 (CHead e k0 u0) (CHead c k u) H8) in (eq_ind C c (\lambda (c1: C).((eq K k0 
2763 k) \to ((eq T u0 u) \to ((drop h (r k0 d) c0 c1) \to (ex2 C (\lambda (e0: 
2764 C).(eq C (CHead c0 k0 (lift h (r k0 d) u0)) (CHead e0 k (lift h (r k d) u)))) 
2765 (\lambda (e0: C).(drop h (r k d) e0 c))))))) (\lambda (H12: (eq K k0 
2766 k)).(eq_ind K k (\lambda (k1: K).((eq T u0 u) \to ((drop h (r k1 d) c0 c) \to 
2767 (ex2 C (\lambda (e0: C).(eq C (CHead c0 k1 (lift h (r k1 d) u0)) (CHead e0 k 
2768 (lift h (r k d) u)))) (\lambda (e0: C).(drop h (r k d) e0 c)))))) (\lambda 
2769 (H13: (eq T u0 u)).(eq_ind T u (\lambda (t: T).((drop h (r k d) c0 c) \to 
2770 (ex2 C (\lambda (e0: C).(eq C (CHead c0 k (lift h (r k d) t)) (CHead e0 k 
2771 (lift h (r k d) u)))) (\lambda (e0: C).(drop h (r k d) e0 c))))) (\lambda 
2772 (H14: (drop h (r k d) c0 c)).(let H15 \def (eq_ind T u0 (\lambda (t: T).(eq C 
2773 (CHead c0 k0 (lift h (r k0 d) t)) x)) H7 u H13) in (let H16 \def (eq_ind K k0 
2774 (\lambda (k: K).(eq C (CHead c0 k (lift h (r k d) u)) x)) H15 k H12) in (let 
2775 H17 \def (eq_ind_r C x (\lambda (c0: C).(drop h (S d) c0 (CHead c k u))) H 
2776 (CHead c0 k (lift h (r k d) u)) H16) in (ex_intro2 C (\lambda (e0: C).(eq C 
2777 (CHead c0 k (lift h (r k d) u)) (CHead e0 k (lift h (r k d) u)))) (\lambda 
2778 (e0: C).(drop h (r k d) e0 c)) c0 (refl_equal C (CHead c0 k (lift h (r k d) 
2779 u))) H14))))) u0 (sym_eq T u0 u H13))) k0 (sym_eq K k0 k H12))) e (sym_eq C e 
2780 c H11))) H10)) H9))) x H7)) d0 (sym_eq nat d0 d H6)))) h0 (sym_eq nat h0 h 
2781 H1) H2 H3 H4 H0)))))]) in (H0 (refl_equal nat h) (refl_equal nat (S d)) 
2782 (refl_equal C x) (refl_equal C (CHead c k u)))))))))).
2783
2784 theorem drop_gen_skip_l:
2785  \forall (c: C).(\forall (x: C).(\forall (u: T).(\forall (h: nat).(\forall 
2786 (d: nat).(\forall (k: K).((drop h (S d) (CHead c k u) x) \to (ex3_2 C T 
2787 (\lambda (e: C).(\lambda (v: T).(eq C x (CHead e k v)))) (\lambda (_: 
2788 C).(\lambda (v: T).(eq T u (lift h (r k d) v)))) (\lambda (e: C).(\lambda (_: 
2789 T).(drop h (r k d) c e))))))))))
2790 \def
2791  \lambda (c: C).(\lambda (x: C).(\lambda (u: T).(\lambda (h: nat).(\lambda 
2792 (d: nat).(\lambda (k: K).(\lambda (H: (drop h (S d) (CHead c k u) x)).(let H0 
2793 \def (match H return (\lambda (n: nat).(\lambda (n0: nat).(\lambda (c0: 
2794 C).(\lambda (c1: C).(\lambda (_: (drop n n0 c0 c1)).((eq nat n h) \to ((eq 
2795 nat n0 (S d)) \to ((eq C c0 (CHead c k u)) \to ((eq C c1 x) \to (ex3_2 C T 
2796 (\lambda (e: C).(\lambda (v: T).(eq C x (CHead e k v)))) (\lambda (_: 
2797 C).(\lambda (v: T).(eq T u (lift h (r k d) v)))) (\lambda (e: C).(\lambda (_: 
2798 T).(drop h (r k d) c e))))))))))))) with [(drop_refl c0) \Rightarrow (\lambda 
2799 (H0: (eq nat O h)).(\lambda (H1: (eq nat O (S d))).(\lambda (H2: (eq C c0 
2800 (CHead c k u))).(\lambda (H3: (eq C c0 x)).(eq_ind nat O (\lambda (n: 
2801 nat).((eq nat O (S d)) \to ((eq C c0 (CHead c k u)) \to ((eq C c0 x) \to 
2802 (ex3_2 C T (\lambda (e: C).(\lambda (v: T).(eq C x (CHead e k v)))) (\lambda 
2803 (_: C).(\lambda (v: T).(eq T u (lift n (r k d) v)))) (\lambda (e: C).(\lambda 
2804 (_: T).(drop n (r k d) c e)))))))) (\lambda (H4: (eq nat O (S d))).(let H5 
2805 \def (eq_ind nat O (\lambda (e: nat).(match e return (\lambda (_: nat).Prop) 
2806 with [O \Rightarrow True | (S _) \Rightarrow False])) I (S d) H4) in 
2807 (False_ind ((eq C c0 (CHead c k u)) \to ((eq C c0 x) \to (ex3_2 C T (\lambda 
2808 (e: C).(\lambda (v: T).(eq C x (CHead e k v)))) (\lambda (_: C).(\lambda (v: 
2809 T).(eq T u (lift O (r k d) v)))) (\lambda (e: C).(\lambda (_: T).(drop O (r k 
2810 d) c e)))))) H5))) h H0 H1 H2 H3))))) | (drop_drop k0 h0 c0 e H0 u0) 
2811 \Rightarrow (\lambda (H1: (eq nat (S h0) h)).(\lambda (H2: (eq nat O (S 
2812 d))).(\lambda (H3: (eq C (CHead c0 k0 u0) (CHead c k u))).(\lambda (H4: (eq C 
2813 e x)).(eq_ind nat (S h0) (\lambda (n: nat).((eq nat O (S d)) \to ((eq C 
2814 (CHead c0 k0 u0) (CHead c k u)) \to ((eq C e x) \to ((drop (r k0 h0) O c0 e) 
2815 \to (ex3_2 C T (\lambda (e0: C).(\lambda (v: T).(eq C x (CHead e0 k v)))) 
2816 (\lambda (_: C).(\lambda (v: T).(eq T u (lift n (r k d) v)))) (\lambda (e0: 
2817 C).(\lambda (_: T).(drop n (r k d) c e0))))))))) (\lambda (H5: (eq nat O (S 
2818 d))).(let H6 \def (eq_ind nat O (\lambda (e0: nat).(match e0 return (\lambda 
2819 (_: nat).Prop) with [O \Rightarrow True | (S _) \Rightarrow False])) I (S d) 
2820 H5) in (False_ind ((eq C (CHead c0 k0 u0) (CHead c k u)) \to ((eq C e x) \to 
2821 ((drop (r k0 h0) O c0 e) \to (ex3_2 C T (\lambda (e0: C).(\lambda (v: T).(eq 
2822 C x (CHead e0 k v)))) (\lambda (_: C).(\lambda (v: T).(eq T u (lift (S h0) (r 
2823 k d) v)))) (\lambda (e0: C).(\lambda (_: T).(drop (S h0) (r k d) c e0))))))) 
2824 H6))) h H1 H2 H3 H4 H0))))) | (drop_skip k0 h0 d0 c0 e H0 u0) \Rightarrow 
2825 (\lambda (H1: (eq nat h0 h)).(\lambda (H2: (eq nat (S d0) (S d))).(\lambda 
2826 (H3: (eq C (CHead c0 k0 (lift h0 (r k0 d0) u0)) (CHead c k u))).(\lambda (H4: 
2827 (eq C (CHead e k0 u0) x)).(eq_ind nat h (\lambda (n: nat).((eq nat (S d0) (S 
2828 d)) \to ((eq C (CHead c0 k0 (lift n (r k0 d0) u0)) (CHead c k u)) \to ((eq C 
2829 (CHead e k0 u0) x) \to ((drop n (r k0 d0) c0 e) \to (ex3_2 C T (\lambda (e0: 
2830 C).(\lambda (v: T).(eq C x (CHead e0 k v)))) (\lambda (_: C).(\lambda (v: 
2831 T).(eq T u (lift h (r k d) v)))) (\lambda (e0: C).(\lambda (_: T).(drop h (r 
2832 k d) c e0))))))))) (\lambda (H5: (eq nat (S d0) (S d))).(let H6 \def (f_equal 
2833 nat nat (\lambda (e0: nat).(match e0 return (\lambda (_: nat).nat) with [O 
2834 \Rightarrow d0 | (S n) \Rightarrow n])) (S d0) (S d) H5) in (eq_ind nat d 
2835 (\lambda (n: nat).((eq C (CHead c0 k0 (lift h (r k0 n) u0)) (CHead c k u)) 
2836 \to ((eq C (CHead e k0 u0) x) \to ((drop h (r k0 n) c0 e) \to (ex3_2 C T 
2837 (\lambda (e0: C).(\lambda (v: T).(eq C x (CHead e0 k v)))) (\lambda (_: 
2838 C).(\lambda (v: T).(eq T u (lift h (r k d) v)))) (\lambda (e0: C).(\lambda 
2839 (_: T).(drop h (r k d) c e0)))))))) (\lambda (H7: (eq C (CHead c0 k0 (lift h 
2840 (r k0 d) u0)) (CHead c k u))).(let H8 \def (f_equal C T (\lambda (e0: 
2841 C).(match e0 return (\lambda (_: C).T) with [(CSort _) \Rightarrow ((let rec 
2842 lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t with 
2843 [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i 
2844 d) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) 
2845 \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) 
2846 (\lambda (x: nat).(plus x h)) (r k0 d) u0) | (CHead _ _ t) \Rightarrow t])) 
2847 (CHead c0 k0 (lift h (r k0 d) u0)) (CHead c k u) H7) in ((let H9 \def 
2848 (f_equal C K (\lambda (e0: C).(match e0 return (\lambda (_: C).K) with 
2849 [(CSort _) \Rightarrow k0 | (CHead _ k _) \Rightarrow k])) (CHead c0 k0 (lift 
2850 h (r k0 d) u0)) (CHead c k u) H7) in ((let H10 \def (f_equal C C (\lambda 
2851 (e0: C).(match e0 return (\lambda (_: C).C) with [(CSort _) \Rightarrow c0 | 
2852 (CHead c _ _) \Rightarrow c])) (CHead c0 k0 (lift h (r k0 d) u0)) (CHead c k 
2853 u) H7) in (eq_ind C c (\lambda (c1: C).((eq K k0 k) \to ((eq T (lift h (r k0 
2854 d) u0) u) \to ((eq C (CHead e k0 u0) x) \to ((drop h (r k0 d) c1 e) \to 
2855 (ex3_2 C T (\lambda (e0: C).(\lambda (v: T).(eq C x (CHead e0 k v)))) 
2856 (\lambda (_: C).(\lambda (v: T).(eq T u (lift h (r k d) v)))) (\lambda (e0: 
2857 C).(\lambda (_: T).(drop h (r k d) c e0))))))))) (\lambda (H11: (eq K k0 
2858 k)).(eq_ind K k (\lambda (k1: K).((eq T (lift h (r k1 d) u0) u) \to ((eq C 
2859 (CHead e k1 u0) x) \to ((drop h (r k1 d) c e) \to (ex3_2 C T (\lambda (e0: 
2860 C).(\lambda (v: T).(eq C x (CHead e0 k v)))) (\lambda (_: C).(\lambda (v: 
2861 T).(eq T u (lift h (r k d) v)))) (\lambda (e0: C).(\lambda (_: T).(drop h (r 
2862 k d) c e0)))))))) (\lambda (H12: (eq T (lift h (r k d) u0) u)).(eq_ind T 
2863 (lift h (r k d) u0) (\lambda (t: T).((eq C (CHead e k u0) x) \to ((drop h (r 
2864 k d) c e) \to (ex3_2 C T (\lambda (e0: C).(\lambda (v: T).(eq C x (CHead e0 k 
2865 v)))) (\lambda (_: C).(\lambda (v: T).(eq T t (lift h (r k d) v)))) (\lambda 
2866 (e0: C).(\lambda (_: T).(drop h (r k d) c e0))))))) (\lambda (H13: (eq C 
2867 (CHead e k u0) x)).(eq_ind C (CHead e k u0) (\lambda (c1: C).((drop h (r k d) 
2868 c e) \to (ex3_2 C T (\lambda (e0: C).(\lambda (v: T).(eq C c1 (CHead e0 k 
2869 v)))) (\lambda (_: C).(\lambda (v: T).(eq T (lift h (r k d) u0) (lift h (r k 
2870 d) v)))) (\lambda (e0: C).(\lambda (_: T).(drop h (r k d) c e0)))))) (\lambda 
2871 (H14: (drop h (r k d) c e)).(let H15 \def (eq_ind_r T u (\lambda (t: T).(drop 
2872 h (S d) (CHead c k t) x)) H (lift h (r k d) u0) H12) in (let H16 \def 
2873 (eq_ind_r C x (\lambda (c0: C).(drop h (S d) (CHead c k (lift h (r k d) u0)) 
2874 c0)) H15 (CHead e k u0) H13) in (ex3_2_intro C T (\lambda (e0: C).(\lambda 
2875 (v: T).(eq C (CHead e k u0) (CHead e0 k v)))) (\lambda (_: C).(\lambda (v: 
2876 T).(eq T (lift h (r k d) u0) (lift h (r k d) v)))) (\lambda (e0: C).(\lambda 
2877 (_: T).(drop h (r k d) c e0))) e u0 (refl_equal C (CHead e k u0)) (refl_equal 
2878 T (lift h (r k d) u0)) H14)))) x H13)) u H12)) k0 (sym_eq K k0 k H11))) c0 
2879 (sym_eq C c0 c H10))) H9)) H8))) d0 (sym_eq nat d0 d H6)))) h0 (sym_eq nat h0 
2880 h H1) H2 H3 H4 H0)))))]) in (H0 (refl_equal nat h) (refl_equal nat (S d)) 
2881 (refl_equal C (CHead c k u)) (refl_equal C x))))))))).
2882
2883 theorem drop_skip_bind:
2884  \forall (h: nat).(\forall (d: nat).(\forall (c: C).(\forall (e: C).((drop h 
2885 d c e) \to (\forall (b: B).(\forall (u: T).(drop h (S d) (CHead c (Bind b) 
2886 (lift h d u)) (CHead e (Bind b) u))))))))
2887 \def
2888  \lambda (h: nat).(\lambda (d: nat).(\lambda (c: C).(\lambda (e: C).(\lambda 
2889 (H: (drop h d c e)).(\lambda (b: B).(\lambda (u: T).(eq_ind nat (r (Bind b) 
2890 d) (\lambda (n: nat).(drop h (S d) (CHead c (Bind b) (lift h n u)) (CHead e 
2891 (Bind b) u))) (drop_skip (Bind b) h d c e H u) d (refl_equal nat d)))))))).
2892
2893 theorem drop_skip_flat:
2894  \forall (h: nat).(\forall (d: nat).(\forall (c: C).(\forall (e: C).((drop h 
2895 (S d) c e) \to (\forall (f: F).(\forall (u: T).(drop h (S d) (CHead c (Flat 
2896 f) (lift h (S d) u)) (CHead e (Flat f) u))))))))
2897 \def
2898  \lambda (h: nat).(\lambda (d: nat).(\lambda (c: C).(\lambda (e: C).(\lambda 
2899 (H: (drop h (S d) c e)).(\lambda (f: F).(\lambda (u: T).(eq_ind nat (r (Flat 
2900 f) d) (\lambda (n: nat).(drop h (S d) (CHead c (Flat f) (lift h n u)) (CHead 
2901 e (Flat f) u))) (drop_skip (Flat f) h d c e H u) (S d) (refl_equal nat (S 
2902 d))))))))).
2903
2904 theorem drop_S:
2905  \forall (b: B).(\forall (c: C).(\forall (e: C).(\forall (u: T).(\forall (h: 
2906 nat).((drop h O c (CHead e (Bind b) u)) \to (drop (S h) O c e))))))
2907 \def
2908  \lambda (b: B).(\lambda (c: C).(C_ind (\lambda (c0: C).(\forall (e: 
2909 C).(\forall (u: T).(\forall (h: nat).((drop h O c0 (CHead e (Bind b) u)) \to 
2910 (drop (S h) O c0 e)))))) (\lambda (n: nat).(\lambda (e: C).(\lambda (u: 
2911 T).(\lambda (h: nat).(\lambda (H: (drop h O (CSort n) (CHead e (Bind b) 
2912 u))).(and3_ind (eq C (CHead e (Bind b) u) (CSort n)) (eq nat h O) (eq nat O 
2913 O) (drop (S h) O (CSort n) e) (\lambda (H0: (eq C (CHead e (Bind b) u) (CSort 
2914 n))).(\lambda (H1: (eq nat h O)).(\lambda (_: (eq nat O O)).(eq_ind_r nat O 
2915 (\lambda (n0: nat).(drop (S n0) O (CSort n) e)) (let H3 \def (eq_ind C (CHead 
2916 e (Bind b) u) (\lambda (ee: C).(match ee return (\lambda (_: C).Prop) with 
2917 [(CSort _) \Rightarrow False | (CHead _ _ _) \Rightarrow True])) I (CSort n) 
2918 H0) in (False_ind (drop (S O) O (CSort n) e) H3)) h H1)))) (drop_gen_sort n h 
2919 O (CHead e (Bind b) u) H))))))) (\lambda (c0: C).(\lambda (H: ((\forall (e: 
2920 C).(\forall (u: T).(\forall (h: nat).((drop h O c0 (CHead e (Bind b) u)) \to 
2921 (drop (S h) O c0 e))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (e: 
2922 C).(\lambda (u: T).(\lambda (h: nat).(nat_ind (\lambda (n: nat).((drop n O 
2923 (CHead c0 k t) (CHead e (Bind b) u)) \to (drop (S n) O (CHead c0 k t) e))) 
2924 (\lambda (H0: (drop O O (CHead c0 k t) (CHead e (Bind b) u))).(let H1 \def 
2925 (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
2926 [(CSort _) \Rightarrow c0 | (CHead c _ _) \Rightarrow c])) (CHead c0 k t) 
2927 (CHead e (Bind b) u) (drop_gen_refl (CHead c0 k t) (CHead e (Bind b) u) H0)) 
2928 in ((let H2 \def (f_equal C K (\lambda (e0: C).(match e0 return (\lambda (_: 
2929 C).K) with [(CSort _) \Rightarrow k | (CHead _ k _) \Rightarrow k])) (CHead 
2930 c0 k t) (CHead e (Bind b) u) (drop_gen_refl (CHead c0 k t) (CHead e (Bind b) 
2931 u) H0)) in ((let H3 \def (f_equal C T (\lambda (e0: C).(match e0 return 
2932 (\lambda (_: C).T) with [(CSort _) \Rightarrow t | (CHead _ _ t) \Rightarrow 
2933 t])) (CHead c0 k t) (CHead e (Bind b) u) (drop_gen_refl (CHead c0 k t) (CHead 
2934 e (Bind b) u) H0)) in (\lambda (H4: (eq K k (Bind b))).(\lambda (H5: (eq C c0 
2935 e)).(eq_ind C c0 (\lambda (c1: C).(drop (S O) O (CHead c0 k t) c1)) (eq_ind_r 
2936 K (Bind b) (\lambda (k0: K).(drop (S O) O (CHead c0 k0 t) c0)) (drop_drop 
2937 (Bind b) O c0 c0 (drop_refl c0) t) k H4) e H5)))) H2)) H1))) (\lambda (n: 
2938 nat).(\lambda (_: (((drop n O (CHead c0 k t) (CHead e (Bind b) u)) \to (drop 
2939 (S n) O (CHead c0 k t) e)))).(\lambda (H1: (drop (S n) O (CHead c0 k t) 
2940 (CHead e (Bind b) u))).(drop_drop k (S n) c0 e (eq_ind_r nat (S (r k n)) 
2941 (\lambda (n0: nat).(drop n0 O c0 e)) (H e u (r k n) (drop_gen_drop k c0 
2942 (CHead e (Bind b) u) t n H1)) (r k (S n)) (r_S k n)) t)))) h)))))))) c)).
2943
2944 theorem drop_ctail:
2945  \forall (c1: C).(\forall (c2: C).(\forall (d: nat).(\forall (h: nat).((drop 
2946 h d c1 c2) \to (\forall (k: K).(\forall (u: T).(drop h d (CTail k u c1) 
2947 (CTail k u c2))))))))
2948 \def
2949  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).(\forall (d: 
2950 nat).(\forall (h: nat).((drop h d c c2) \to (\forall (k: K).(\forall (u: 
2951 T).(drop h d (CTail k u c) (CTail k u c2))))))))) (\lambda (n: nat).(\lambda 
2952 (c2: C).(\lambda (d: nat).(\lambda (h: nat).(\lambda (H: (drop h d (CSort n) 
2953 c2)).(\lambda (k: K).(\lambda (u: T).(and3_ind (eq C c2 (CSort n)) (eq nat h 
2954 O) (eq nat d O) (drop h d (CTail k u (CSort n)) (CTail k u c2)) (\lambda (H0: 
2955 (eq C c2 (CSort n))).(\lambda (H1: (eq nat h O)).(\lambda (H2: (eq nat d 
2956 O)).(eq_ind_r nat O (\lambda (n0: nat).(drop n0 d (CTail k u (CSort n)) 
2957 (CTail k u c2))) (eq_ind_r nat O (\lambda (n0: nat).(drop O n0 (CTail k u 
2958 (CSort n)) (CTail k u c2))) (eq_ind_r C (CSort n) (\lambda (c: C).(drop O O 
2959 (CTail k u (CSort n)) (CTail k u c))) (drop_refl (CTail k u (CSort n))) c2 
2960 H0) d H2) h H1)))) (drop_gen_sort n h d c2 H))))))))) (\lambda (c2: 
2961 C).(\lambda (IHc: ((\forall (c3: C).(\forall (d: nat).(\forall (h: 
2962 nat).((drop h d c2 c3) \to (\forall (k: K).(\forall (u: T).(drop h d (CTail k 
2963 u c2) (CTail k u c3)))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c3: 
2964 C).(\lambda (d: nat).(nat_ind (\lambda (n: nat).(\forall (h: nat).((drop h n 
2965 (CHead c2 k t) c3) \to (\forall (k0: K).(\forall (u: T).(drop h n (CTail k0 u 
2966 (CHead c2 k t)) (CTail k0 u c3))))))) (\lambda (h: nat).(nat_ind (\lambda (n: 
2967 nat).((drop n O (CHead c2 k t) c3) \to (\forall (k0: K).(\forall (u: T).(drop 
2968 n O (CTail k0 u (CHead c2 k t)) (CTail k0 u c3)))))) (\lambda (H: (drop O O 
2969 (CHead c2 k t) c3)).(\lambda (k0: K).(\lambda (u: T).(eq_ind C (CHead c2 k t) 
2970 (\lambda (c: C).(drop O O (CTail k0 u (CHead c2 k t)) (CTail k0 u c))) 
2971 (drop_refl (CTail k0 u (CHead c2 k t))) c3 (drop_gen_refl (CHead c2 k t) c3 
2972 H))))) (\lambda (n: nat).(\lambda (_: (((drop n O (CHead c2 k t) c3) \to 
2973 (\forall (k0: K).(\forall (u: T).(drop n O (CTail k0 u (CHead c2 k t)) (CTail 
2974 k0 u c3))))))).(\lambda (H0: (drop (S n) O (CHead c2 k t) c3)).(\lambda (k0: 
2975 K).(\lambda (u: T).(drop_drop k n (CTail k0 u c2) (CTail k0 u c3) (IHc c3 O 
2976 (r k n) (drop_gen_drop k c2 c3 t n H0) k0 u) t)))))) h)) (\lambda (n: 
2977 nat).(\lambda (H: ((\forall (h: nat).((drop h n (CHead c2 k t) c3) \to 
2978 (\forall (k0: K).(\forall (u: T).(drop h n (CTail k0 u (CHead c2 k t)) (CTail 
2979 k0 u c3)))))))).(\lambda (h: nat).(\lambda (H0: (drop h (S n) (CHead c2 k t) 
2980 c3)).(\lambda (k0: K).(\lambda (u: T).(ex3_2_ind C T (\lambda (e: C).(\lambda 
2981 (v: T).(eq C c3 (CHead e k v)))) (\lambda (_: C).(\lambda (v: T).(eq T t 
2982 (lift h (r k n) v)))) (\lambda (e: C).(\lambda (_: T).(drop h (r k n) c2 e))) 
2983 (drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u c3)) (\lambda (x0: 
2984 C).(\lambda (x1: T).(\lambda (H1: (eq C c3 (CHead x0 k x1))).(\lambda (H2: 
2985 (eq T t (lift h (r k n) x1))).(\lambda (H3: (drop h (r k n) c2 x0)).(let H4 
2986 \def (eq_ind C c3 (\lambda (c: C).(\forall (h: nat).((drop h n (CHead c2 k t) 
2987 c) \to (\forall (k0: K).(\forall (u: T).(drop h n (CTail k0 u (CHead c2 k t)) 
2988 (CTail k0 u c))))))) H (CHead x0 k x1) H1) in (eq_ind_r C (CHead x0 k x1) 
2989 (\lambda (c: C).(drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u c))) 
2990 (let H5 \def (eq_ind T t (\lambda (t: T).(\forall (h: nat).((drop h n (CHead 
2991 c2 k t) (CHead x0 k x1)) \to (\forall (k0: K).(\forall (u: T).(drop h n 
2992 (CTail k0 u (CHead c2 k t)) (CTail k0 u (CHead x0 k x1)))))))) H4 (lift h (r 
2993 k n) x1) H2) in (eq_ind_r T (lift h (r k n) x1) (\lambda (t0: T).(drop h (S 
2994 n) (CTail k0 u (CHead c2 k t0)) (CTail k0 u (CHead x0 k x1)))) (drop_skip k h 
2995 n (CTail k0 u c2) (CTail k0 u x0) (IHc x0 (r k n) h H3 k0 u) x1) t H2)) c3 
2996 H1))))))) (drop_gen_skip_l c2 c3 t h n k H0)))))))) d))))))) c1).
2997
2998 theorem drop_mono:
2999  \forall (c: C).(\forall (x1: C).(\forall (d: nat).(\forall (h: nat).((drop h 
3000 d c x1) \to (\forall (x2: C).((drop h d c x2) \to (eq C x1 x2)))))))
3001 \def
3002  \lambda (c: C).(C_ind (\lambda (c0: C).(\forall (x1: C).(\forall (d: 
3003 nat).(\forall (h: nat).((drop h d c0 x1) \to (\forall (x2: C).((drop h d c0 
3004 x2) \to (eq C x1 x2)))))))) (\lambda (n: nat).(\lambda (x1: C).(\lambda (d: 
3005 nat).(\lambda (h: nat).(\lambda (H: (drop h d (CSort n) x1)).(\lambda (x2: 
3006 C).(\lambda (H0: (drop h d (CSort n) x2)).(and3_ind (eq C x2 (CSort n)) (eq 
3007 nat h O) (eq nat d O) (eq C x1 x2) (\lambda (H1: (eq C x2 (CSort 
3008 n))).(\lambda (H2: (eq nat h O)).(\lambda (H3: (eq nat d O)).(and3_ind (eq C 
3009 x1 (CSort n)) (eq nat h O) (eq nat d O) (eq C x1 x2) (\lambda (H4: (eq C x1 
3010 (CSort n))).(\lambda (H5: (eq nat h O)).(\lambda (H6: (eq nat d O)).(eq_ind_r 
3011 C (CSort n) (\lambda (c0: C).(eq C x1 c0)) (let H7 \def (eq_ind nat h 
3012 (\lambda (n: nat).(eq nat n O)) H2 O H5) in (let H8 \def (eq_ind nat d 
3013 (\lambda (n: nat).(eq nat n O)) H3 O H6) in (eq_ind_r C (CSort n) (\lambda 
3014 (c0: C).(eq C c0 (CSort n))) (refl_equal C (CSort n)) x1 H4))) x2 H1)))) 
3015 (drop_gen_sort n h d x1 H))))) (drop_gen_sort n h d x2 H0))))))))) (\lambda 
3016 (c0: C).(\lambda (H: ((\forall (x1: C).(\forall (d: nat).(\forall (h: 
3017 nat).((drop h d c0 x1) \to (\forall (x2: C).((drop h d c0 x2) \to (eq C x1 
3018 x2))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (x1: C).(\lambda (d: 
3019 nat).(nat_ind (\lambda (n: nat).(\forall (h: nat).((drop h n (CHead c0 k t) 
3020 x1) \to (\forall (x2: C).((drop h n (CHead c0 k t) x2) \to (eq C x1 x2)))))) 
3021 (\lambda (h: nat).(nat_ind (\lambda (n: nat).((drop n O (CHead c0 k t) x1) 
3022 \to (\forall (x2: C).((drop n O (CHead c0 k t) x2) \to (eq C x1 x2))))) 
3023 (\lambda (H0: (drop O O (CHead c0 k t) x1)).(\lambda (x2: C).(\lambda (H1: 
3024 (drop O O (CHead c0 k t) x2)).(eq_ind C (CHead c0 k t) (\lambda (c1: C).(eq C 
3025 x1 c1)) (eq_ind C (CHead c0 k t) (\lambda (c1: C).(eq C c1 (CHead c0 k t))) 
3026 (refl_equal C (CHead c0 k t)) x1 (drop_gen_refl (CHead c0 k t) x1 H0)) x2 
3027 (drop_gen_refl (CHead c0 k t) x2 H1))))) (\lambda (n: nat).(\lambda (_: 
3028 (((drop n O (CHead c0 k t) x1) \to (\forall (x2: C).((drop n O (CHead c0 k t) 
3029 x2) \to (eq C x1 x2)))))).(\lambda (H1: (drop (S n) O (CHead c0 k t) 
3030 x1)).(\lambda (x2: C).(\lambda (H2: (drop (S n) O (CHead c0 k t) x2)).(H x1 O 
3031 (r k n) (drop_gen_drop k c0 x1 t n H1) x2 (drop_gen_drop k c0 x2 t n 
3032 H2))))))) h)) (\lambda (n: nat).(\lambda (H0: ((\forall (h: nat).((drop h n 
3033 (CHead c0 k t) x1) \to (\forall (x2: C).((drop h n (CHead c0 k t) x2) \to (eq 
3034 C x1 x2))))))).(\lambda (h: nat).(\lambda (H1: (drop h (S n) (CHead c0 k t) 
3035 x1)).(\lambda (x2: C).(\lambda (H2: (drop h (S n) (CHead c0 k t) 
3036 x2)).(ex3_2_ind C T (\lambda (e: C).(\lambda (v: T).(eq C x2 (CHead e k v)))) 
3037 (\lambda (_: C).(\lambda (v: T).(eq T t (lift h (r k n) v)))) (\lambda (e: 
3038 C).(\lambda (_: T).(drop h (r k n) c0 e))) (eq C x1 x2) (\lambda (x0: 
3039 C).(\lambda (x3: T).(\lambda (H3: (eq C x2 (CHead x0 k x3))).(\lambda (H4: 
3040 (eq T t (lift h (r k n) x3))).(\lambda (H5: (drop h (r k n) c0 
3041 x0)).(ex3_2_ind C T (\lambda (e: C).(\lambda (v: T).(eq C x1 (CHead e k v)))) 
3042 (\lambda (_: C).(\lambda (v: T).(eq T t (lift h (r k n) v)))) (\lambda (e: 
3043 C).(\lambda (_: T).(drop h (r k n) c0 e))) (eq C x1 x2) (\lambda (x4: 
3044 C).(\lambda (x5: T).(\lambda (H6: (eq C x1 (CHead x4 k x5))).(\lambda (H7: 
3045 (eq T t (lift h (r k n) x5))).(\lambda (H8: (drop h (r k n) c0 x4)).(eq_ind_r 
3046 C (CHead x0 k x3) (\lambda (c1: C).(eq C x1 c1)) (let H9 \def (eq_ind C x1 
3047 (\lambda (c: C).(\forall (h: nat).((drop h n (CHead c0 k t) c) \to (\forall 
3048 (x2: C).((drop h n (CHead c0 k t) x2) \to (eq C c x2)))))) H0 (CHead x4 k x5) 
3049 H6) in (eq_ind_r C (CHead x4 k x5) (\lambda (c1: C).(eq C c1 (CHead x0 k 
3050 x3))) (let H10 \def (eq_ind T t (\lambda (t: T).(\forall (h: nat).((drop h n 
3051 (CHead c0 k t) (CHead x4 k x5)) \to (\forall (x2: C).((drop h n (CHead c0 k 
3052 t) x2) \to (eq C (CHead x4 k x5) x2)))))) H9 (lift h (r k n) x5) H7) in (let 
3053 H11 \def (eq_ind T t (\lambda (t: T).(eq T t (lift h (r k n) x3))) H4 (lift h 
3054 (r k n) x5) H7) in (let H12 \def (eq_ind T x5 (\lambda (t: T).(\forall (h0: 
3055 nat).((drop h0 n (CHead c0 k (lift h (r k n) t)) (CHead x4 k t)) \to (\forall 
3056 (x2: C).((drop h0 n (CHead c0 k (lift h (r k n) t)) x2) \to (eq C (CHead x4 k 
3057 t) x2)))))) H10 x3 (lift_inj x5 x3 h (r k n) H11)) in (eq_ind_r T x3 (\lambda 
3058 (t0: T).(eq C (CHead x4 k t0) (CHead x0 k x3))) (sym_equal C (CHead x0 k x3) 
3059 (CHead x4 k x3) (sym_equal C (CHead x4 k x3) (CHead x0 k x3) (sym_equal C 
3060 (CHead x0 k x3) (CHead x4 k x3) (f_equal3 C K T C CHead x0 x4 k k x3 x3 (H x0 
3061 (r k n) h H5 x4 H8) (refl_equal K k) (refl_equal T x3))))) x5 (lift_inj x5 x3 
3062 h (r k n) H11))))) x1 H6)) x2 H3)))))) (drop_gen_skip_l c0 x1 t h n k 
3063 H1))))))) (drop_gen_skip_l c0 x2 t h n k H2)))))))) d))))))) c).
3064
3065 theorem drop_conf_lt:
3066  \forall (k: K).(\forall (i: nat).(\forall (u: T).(\forall (c0: C).(\forall 
3067 (c: C).((drop i O c (CHead c0 k u)) \to (\forall (e: C).(\forall (h: 
3068 nat).(\forall (d: nat).((drop h (S (plus i d)) c e) \to (ex3_2 T C (\lambda 
3069 (v: T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) (\lambda (v: T).(\lambda 
3070 (e0: C).(drop i O e (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: C).(drop 
3071 h (r k d) c0 e0)))))))))))))
3072 \def
3073  \lambda (k: K).(\lambda (i: nat).(nat_ind (\lambda (n: nat).(\forall (u: 
3074 T).(\forall (c0: C).(\forall (c: C).((drop n O c (CHead c0 k u)) \to (\forall 
3075 (e: C).(\forall (h: nat).(\forall (d: nat).((drop h (S (plus n d)) c e) \to 
3076 (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) 
3077 (\lambda (v: T).(\lambda (e0: C).(drop n O e (CHead e0 k v)))) (\lambda (_: 
3078 T).(\lambda (e0: C).(drop h (r k d) c0 e0))))))))))))) (\lambda (u: 
3079 T).(\lambda (c0: C).(\lambda (c: C).(\lambda (H: (drop O O c (CHead c0 k 
3080 u))).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H0: (drop 
3081 h (S (plus O d)) c e)).(let H1 \def (eq_ind C c (\lambda (c: C).(drop h (S 
3082 (plus O d)) c e)) H0 (CHead c0 k u) (drop_gen_refl c (CHead c0 k u) H)) in 
3083 (ex3_2_ind C T (\lambda (e0: C).(\lambda (v: T).(eq C e (CHead e0 k v)))) 
3084 (\lambda (_: C).(\lambda (v: T).(eq T u (lift h (r k (plus O d)) v)))) 
3085 (\lambda (e0: C).(\lambda (_: T).(drop h (r k (plus O d)) c0 e0))) (ex3_2 T C 
3086 (\lambda (v: T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) (\lambda (v: 
3087 T).(\lambda (e0: C).(drop O O e (CHead e0 k v)))) (\lambda (_: T).(\lambda 
3088 (e0: C).(drop h (r k d) c0 e0)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda 
3089 (H2: (eq C e (CHead x0 k x1))).(\lambda (H3: (eq T u (lift h (r k (plus O d)) 
3090 x1))).(\lambda (H4: (drop h (r k (plus O d)) c0 x0)).(eq_ind_r C (CHead x0 k 
3091 x1) (\lambda (c1: C).(ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift 
3092 h (r k d) v)))) (\lambda (v: T).(\lambda (e0: C).(drop O O c1 (CHead e0 k 
3093 v)))) (\lambda (_: T).(\lambda (e0: C).(drop h (r k d) c0 e0))))) (eq_ind_r T 
3094 (lift h (r k (plus O d)) x1) (\lambda (t: T).(ex3_2 T C (\lambda (v: 
3095 T).(\lambda (_: C).(eq T t (lift h (r k d) v)))) (\lambda (v: T).(\lambda 
3096 (e0: C).(drop O O (CHead x0 k x1) (CHead e0 k v)))) (\lambda (_: T).(\lambda 
3097 (e0: C).(drop h (r k d) c0 e0))))) (ex3_2_intro T C (\lambda (v: T).(\lambda 
3098 (_: C).(eq T (lift h (r k (plus O d)) x1) (lift h (r k d) v)))) (\lambda (v: 
3099 T).(\lambda (e0: C).(drop O O (CHead x0 k x1) (CHead e0 k v)))) (\lambda (_: 
3100 T).(\lambda (e0: C).(drop h (r k d) c0 e0))) x1 x0 (refl_equal T (lift h (r k 
3101 d) x1)) (drop_refl (CHead x0 k x1)) H4) u H3) e H2)))))) (drop_gen_skip_l c0 
3102 e u h (plus O d) k H1))))))))))) (\lambda (i0: nat).(\lambda (H: ((\forall 
3103 (u: T).(\forall (c0: C).(\forall (c: C).((drop i0 O c (CHead c0 k u)) \to 
3104 (\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h (S (plus i0 d)) 
3105 c e) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h (r k d) 
3106 v)))) (\lambda (v: T).(\lambda (e0: C).(drop i0 O e (CHead e0 k v)))) 
3107 (\lambda (_: T).(\lambda (e0: C).(drop h (r k d) c0 e0)))))))))))))).(\lambda 
3108 (u: T).(\lambda (c0: C).(\lambda (c: C).(C_ind (\lambda (c1: C).((drop (S i0) 
3109 O c1 (CHead c0 k u)) \to (\forall (e: C).(\forall (h: nat).(\forall (d: 
3110 nat).((drop h (S (plus (S i0) d)) c1 e) \to (ex3_2 T C (\lambda (v: 
3111 T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) (\lambda (v: T).(\lambda 
3112 (e0: C).(drop (S i0) O e (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: 
3113 C).(drop h (r k d) c0 e0)))))))))) (\lambda (n: nat).(\lambda (_: (drop (S 
3114 i0) O (CSort n) (CHead c0 k u))).(\lambda (e: C).(\lambda (h: nat).(\lambda 
3115 (d: nat).(\lambda (H1: (drop h (S (plus (S i0) d)) (CSort n) e)).(and3_ind 
3116 (eq C e (CSort n)) (eq nat h O) (eq nat (S (plus (S i0) d)) O) (ex3_2 T C 
3117 (\lambda (v: T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) (\lambda (v: 
3118 T).(\lambda (e0: C).(drop (S i0) O e (CHead e0 k v)))) (\lambda (_: 
3119 T).(\lambda (e0: C).(drop h (r k d) c0 e0)))) (\lambda (_: (eq C e (CSort 
3120 n))).(\lambda (_: (eq nat h O)).(\lambda (H4: (eq nat (S (plus (S i0) d)) 
3121 O)).(let H5 \def (eq_ind nat (S (plus (S i0) d)) (\lambda (ee: nat).(match ee 
3122 return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow 
3123 True])) I O H4) in (False_ind (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq 
3124 T u (lift h (r k d) v)))) (\lambda (v: T).(\lambda (e0: C).(drop (S i0) O e 
3125 (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: C).(drop h (r k d) c0 e0)))) 
3126 H5))))) (drop_gen_sort n h (S (plus (S i0) d)) e H1)))))))) (\lambda (c1: 
3127 C).(\lambda (H0: (((drop (S i0) O c1 (CHead c0 k u)) \to (\forall (e: 
3128 C).(\forall (h: nat).(\forall (d: nat).((drop h (S (plus (S i0) d)) c1 e) \to 
3129 (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) 
3130 (\lambda (v: T).(\lambda (e0: C).(drop (S i0) O e (CHead e0 k v)))) (\lambda 
3131 (_: T).(\lambda (e0: C).(drop h (r k d) c0 e0))))))))))).(\lambda (k0: 
3132 K).(K_ind (\lambda (k1: K).(\forall (t: T).((drop (S i0) O (CHead c1 k1 t) 
3133 (CHead c0 k u)) \to (\forall (e: C).(\forall (h: nat).(\forall (d: 
3134 nat).((drop h (S (plus (S i0) d)) (CHead c1 k1 t) e) \to (ex3_2 T C (\lambda 
3135 (v: T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) (\lambda (v: T).(\lambda 
3136 (e0: C).(drop (S i0) O e (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: 
3137 C).(drop h (r k d) c0 e0))))))))))) (\lambda (b: B).(\lambda (t: T).(\lambda 
3138 (H1: (drop (S i0) O (CHead c1 (Bind b) t) (CHead c0 k u))).(\lambda (e: 
3139 C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H2: (drop h (S (plus (S i0) 
3140 d)) (CHead c1 (Bind b) t) e)).(ex3_2_ind C T (\lambda (e0: C).(\lambda (v: 
3141 T).(eq C e (CHead e0 (Bind b) v)))) (\lambda (_: C).(\lambda (v: T).(eq T t 
3142 (lift h (r (Bind b) (plus (S i0) d)) v)))) (\lambda (e0: C).(\lambda (_: 
3143 T).(drop h (r (Bind b) (plus (S i0) d)) c1 e0))) (ex3_2 T C (\lambda (v: 
3144 T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) (\lambda (v: T).(\lambda 
3145 (e0: C).(drop (S i0) O e (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: 
3146 C).(drop h (r k d) c0 e0)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H3: 
3147 (eq C e (CHead x0 (Bind b) x1))).(\lambda (_: (eq T t (lift h (r (Bind b) 
3148 (plus (S i0) d)) x1))).(\lambda (H5: (drop h (r (Bind b) (plus (S i0) d)) c1 
3149 x0)).(eq_ind_r C (CHead x0 (Bind b) x1) (\lambda (c2: C).(ex3_2 T C (\lambda 
3150 (v: T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) (\lambda (v: T).(\lambda 
3151 (e0: C).(drop (S i0) O c2 (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: 
3152 C).(drop h (r k d) c0 e0))))) (let H6 \def (H u c0 c1 (drop_gen_drop (Bind b) 
3153 c1 (CHead c0 k u) t i0 H1) x0 h d H5) in (ex3_2_ind T C (\lambda (v: 
3154 T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) (\lambda (v: T).(\lambda 
3155 (e0: C).(drop i0 O x0 (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: 
3156 C).(drop h (r k d) c0 e0))) (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T 
3157 u (lift h (r k d) v)))) (\lambda (v: T).(\lambda (e0: C).(drop (S i0) O 
3158 (CHead x0 (Bind b) x1) (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: 
3159 C).(drop h (r k d) c0 e0)))) (\lambda (x2: T).(\lambda (x3: C).(\lambda (H7: 
3160 (eq T u (lift h (r k d) x2))).(\lambda (H8: (drop i0 O x0 (CHead x3 k 
3161 x2))).(\lambda (H9: (drop h (r k d) c0 x3)).(ex3_2_intro T C (\lambda (v: 
3162 T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) (\lambda (v: T).(\lambda 
3163 (e0: C).(drop (S i0) O (CHead x0 (Bind b) x1) (CHead e0 k v)))) (\lambda (_: 
3164 T).(\lambda (e0: C).(drop h (r k d) c0 e0))) x2 x3 H7 (drop_drop (Bind b) i0 
3165 x0 (CHead x3 k x2) H8 x1) H9)))))) H6)) e H3)))))) (drop_gen_skip_l c1 e t h 
3166 (plus (S i0) d) (Bind b) H2))))))))) (\lambda (f: F).(\lambda (t: T).(\lambda 
3167 (H1: (drop (S i0) O (CHead c1 (Flat f) t) (CHead c0 k u))).(\lambda (e: 
3168 C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H2: (drop h (S (plus (S i0) 
3169 d)) (CHead c1 (Flat f) t) e)).(ex3_2_ind C T (\lambda (e0: C).(\lambda (v: 
3170 T).(eq C e (CHead e0 (Flat f) v)))) (\lambda (_: C).(\lambda (v: T).(eq T t 
3171 (lift h (r (Flat f) (plus (S i0) d)) v)))) (\lambda (e0: C).(\lambda (_: 
3172 T).(drop h (r (Flat f) (plus (S i0) d)) c1 e0))) (ex3_2 T C (\lambda (v: 
3173 T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) (\lambda (v: T).(\lambda 
3174 (e0: C).(drop (S i0) O e (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: 
3175 C).(drop h (r k d) c0 e0)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H3: 
3176 (eq C e (CHead x0 (Flat f) x1))).(\lambda (_: (eq T t (lift h (r (Flat f) 
3177 (plus (S i0) d)) x1))).(\lambda (H5: (drop h (r (Flat f) (plus (S i0) d)) c1 
3178 x0)).(eq_ind_r C (CHead x0 (Flat f) x1) (\lambda (c2: C).(ex3_2 T C (\lambda 
3179 (v: T).(\lambda (_: C).(eq T u (lift h (r k d) v)))) (\lambda (v: T).(\lambda 
3180 (e0: C).(drop (S i0) O c2 (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: 
3181 C).(drop h (r k d) c0 e0))))) (ex3_2_ind T C (\lambda (v: T).(\lambda (_: 
3182 C).(eq T u (lift h (r k d) v)))) (\lambda (v: T).(\lambda (e0: C).(drop (S 
3183 i0) O x0 (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: C).(drop h (r k d) 
3184 c0 e0))) (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h (r k d) 
3185 v)))) (\lambda (v: T).(\lambda (e0: C).(drop (S i0) O (CHead x0 (Flat f) x1) 
3186 (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: C).(drop h (r k d) c0 e0)))) 
3187 (\lambda (x2: T).(\lambda (x3: C).(\lambda (H6: (eq T u (lift h (r k d) 
3188 x2))).(\lambda (H7: (drop (S i0) O x0 (CHead x3 k x2))).(\lambda (H8: (drop h 
3189 (r k d) c0 x3)).(ex3_2_intro T C (\lambda (v: T).(\lambda (_: C).(eq T u 
3190 (lift h (r k d) v)))) (\lambda (v: T).(\lambda (e0: C).(drop (S i0) O (CHead 
3191 x0 (Flat f) x1) (CHead e0 k v)))) (\lambda (_: T).(\lambda (e0: C).(drop h (r 
3192 k d) c0 e0))) x2 x3 H6 (drop_drop (Flat f) i0 x0 (CHead x3 k x2) H7 x1) 
3193 H8)))))) (H0 (drop_gen_drop (Flat f) c1 (CHead c0 k u) t i0 H1) x0 h d H5)) e 
3194 H3)))))) (drop_gen_skip_l c1 e t h (plus (S i0) d) (Flat f) H2))))))))) 
3195 k0)))) c)))))) i)).
3196
3197 theorem drop_conf_ge:
3198  \forall (i: nat).(\forall (a: C).(\forall (c: C).((drop i O c a) \to 
3199 (\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h d c e) \to ((le 
3200 (plus d h) i) \to (drop (minus i h) O e a)))))))))
3201 \def
3202  \lambda (i: nat).(nat_ind (\lambda (n: nat).(\forall (a: C).(\forall (c: 
3203 C).((drop n O c a) \to (\forall (e: C).(\forall (h: nat).(\forall (d: 
3204 nat).((drop h d c e) \to ((le (plus d h) n) \to (drop (minus n h) O e 
3205 a)))))))))) (\lambda (a: C).(\lambda (c: C).(\lambda (H: (drop O O c 
3206 a)).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H0: (drop h 
3207 d c e)).(\lambda (H1: (le (plus d h) O)).(let H2 \def (eq_ind C c (\lambda 
3208 (c: C).(drop h d c e)) H0 a (drop_gen_refl c a H)) in (let H3 \def (match H1 
3209 return (\lambda (n: nat).(\lambda (_: (le ? n)).((eq nat n O) \to (drop 
3210 (minus O h) O e a)))) with [le_n \Rightarrow (\lambda (H: (eq nat (plus d h) 
3211 O)).(let H3 \def (f_equal nat nat (\lambda (e0: nat).e0) (plus d h) O H) in 
3212 (eq_ind nat (plus d h) (\lambda (n: nat).(drop (minus n h) n e a)) (eq_ind_r 
3213 nat O (\lambda (n: nat).(drop (minus n h) n e a)) (and_ind (eq nat d O) (eq 
3214 nat h O) (drop O O e a) (\lambda (H0: (eq nat d O)).(\lambda (H1: (eq nat h 
3215 O)).(let H2 \def (eq_ind nat d (\lambda (n: nat).(drop h n a e)) H2 O H0) in 
3216 (let H4 \def (eq_ind nat h (\lambda (n: nat).(drop n O a e)) H2 O H1) in 
3217 (eq_ind C a (\lambda (c: C).(drop O O c a)) (drop_refl a) e (drop_gen_refl a 
3218 e H4)))))) (plus_O d h H3)) (plus d h) H3) O H3))) | (le_S m H) \Rightarrow 
3219 (\lambda (H2: (eq nat (S m) O)).((let H0 \def (eq_ind nat (S m) (\lambda (e0: 
3220 nat).(match e0 return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S 
3221 _) \Rightarrow True])) I O H2) in (False_ind ((le (plus d h) m) \to (drop 
3222 (minus O h) O e a)) H0)) H))]) in (H3 (refl_equal nat O)))))))))))) (\lambda 
3223 (i0: nat).(\lambda (H: ((\forall (a: C).(\forall (c: C).((drop i0 O c a) \to 
3224 (\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h d c e) \to ((le 
3225 (plus d h) i0) \to (drop (minus i0 h) O e a))))))))))).(\lambda (a: 
3226 C).(\lambda (c: C).(C_ind (\lambda (c0: C).((drop (S i0) O c0 a) \to (\forall 
3227 (e: C).(\forall (h: nat).(\forall (d: nat).((drop h d c0 e) \to ((le (plus d 
3228 h) (S i0)) \to (drop (minus (S i0) h) O e a)))))))) (\lambda (n: 
3229 nat).(\lambda (H0: (drop (S i0) O (CSort n) a)).(\lambda (e: C).(\lambda (h: 
3230 nat).(\lambda (d: nat).(\lambda (H1: (drop h d (CSort n) e)).(\lambda (H2: 
3231 (le (plus d h) (S i0))).(and3_ind (eq C e (CSort n)) (eq nat h O) (eq nat d 
3232 O) (drop (minus (S i0) h) O e a) (\lambda (H3: (eq C e (CSort n))).(\lambda 
3233 (H4: (eq nat h O)).(\lambda (H5: (eq nat d O)).(and3_ind (eq C a (CSort n)) 
3234 (eq nat (S i0) O) (eq nat O O) (drop (minus (S i0) h) O e a) (\lambda (H6: 
3235 (eq C a (CSort n))).(\lambda (H7: (eq nat (S i0) O)).(\lambda (_: (eq nat O 
3236 O)).(let H9 \def (eq_ind nat d (\lambda (n: nat).(le (plus n h) (S i0))) H2 O 
3237 H5) in (let H10 \def (eq_ind nat h (\lambda (n: nat).(le (plus O n) (S i0))) 
3238 H9 O H4) in (eq_ind_r nat O (\lambda (n0: nat).(drop (minus (S i0) n0) O e 
3239 a)) (eq_ind_r C (CSort n) (\lambda (c0: C).(drop (minus (S i0) O) O c0 a)) 
3240 (eq_ind_r C (CSort n) (\lambda (c0: C).(drop (minus (S i0) O) O (CSort n) 
3241 c0)) (let H11 \def (eq_ind nat (S i0) (\lambda (ee: nat).(match ee return 
3242 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
3243 I O H7) in (False_ind (drop (minus (S i0) O) O (CSort n) (CSort n)) H11)) a 
3244 H6) e H3) h H4)))))) (drop_gen_sort n (S i0) O a H0))))) (drop_gen_sort n h d 
3245 e H1))))))))) (\lambda (c0: C).(\lambda (H0: (((drop (S i0) O c0 a) \to 
3246 (\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h d c0 e) \to ((le 
3247 (plus d h) (S i0)) \to (drop (minus (S i0) h) O e a))))))))).(\lambda (k: 
3248 K).(K_ind (\lambda (k0: K).(\forall (t: T).((drop (S i0) O (CHead c0 k0 t) a) 
3249 \to (\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h d (CHead c0 
3250 k0 t) e) \to ((le (plus d h) (S i0)) \to (drop (minus (S i0) h) O e 
3251 a))))))))) (\lambda (b: B).(\lambda (t: T).(\lambda (H1: (drop (S i0) O 
3252 (CHead c0 (Bind b) t) a)).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: 
3253 nat).(\lambda (H2: (drop h d (CHead c0 (Bind b) t) e)).(\lambda (H3: (le 
3254 (plus d h) (S i0))).(nat_ind (\lambda (n: nat).((drop h n (CHead c0 (Bind b) 
3255 t) e) \to ((le (plus n h) (S i0)) \to (drop (minus (S i0) h) O e a)))) 
3256 (\lambda (H4: (drop h O (CHead c0 (Bind b) t) e)).(\lambda (H5: (le (plus O 
3257 h) (S i0))).(nat_ind (\lambda (n: nat).((drop n O (CHead c0 (Bind b) t) e) 
3258 \to ((le (plus O n) (S i0)) \to (drop (minus (S i0) n) O e a)))) (\lambda 
3259 (H6: (drop O O (CHead c0 (Bind b) t) e)).(\lambda (_: (le (plus O O) (S 
3260 i0))).(eq_ind C (CHead c0 (Bind b) t) (\lambda (c1: C).(drop (minus (S i0) O) 
3261 O c1 a)) (drop_drop (Bind b) i0 c0 a (drop_gen_drop (Bind b) c0 a t i0 H1) t) 
3262 e (drop_gen_refl (CHead c0 (Bind b) t) e H6)))) (\lambda (h0: nat).(\lambda 
3263 (_: (((drop h0 O (CHead c0 (Bind b) t) e) \to ((le (plus O h0) (S i0)) \to 
3264 (drop (minus (S i0) h0) O e a))))).(\lambda (H6: (drop (S h0) O (CHead c0 
3265 (Bind b) t) e)).(\lambda (H7: (le (plus O (S h0)) (S i0))).(H a c0 
3266 (drop_gen_drop (Bind b) c0 a t i0 H1) e h0 O (drop_gen_drop (Bind b) c0 e t 
3267 h0 H6) (le_S_n (plus O h0) i0 H7)))))) h H4 H5))) (\lambda (d0: nat).(\lambda 
3268 (_: (((drop h d0 (CHead c0 (Bind b) t) e) \to ((le (plus d0 h) (S i0)) \to 
3269 (drop (minus (S i0) h) O e a))))).(\lambda (H4: (drop h (S d0) (CHead c0 
3270 (Bind b) t) e)).(\lambda (H5: (le (plus (S d0) h) (S i0))).(ex3_2_ind C T 
3271 (\lambda (e0: C).(\lambda (v: T).(eq C e (CHead e0 (Bind b) v)))) (\lambda 
3272 (_: C).(\lambda (v: T).(eq T t (lift h (r (Bind b) d0) v)))) (\lambda (e0: 
3273 C).(\lambda (_: T).(drop h (r (Bind b) d0) c0 e0))) (drop (minus (S i0) h) O 
3274 e a) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (eq C e (CHead x0 (Bind 
3275 b) x1))).(\lambda (_: (eq T t (lift h (r (Bind b) d0) x1))).(\lambda (H8: 
3276 (drop h (r (Bind b) d0) c0 x0)).(eq_ind_r C (CHead x0 (Bind b) x1) (\lambda 
3277 (c1: C).(drop (minus (S i0) h) O c1 a)) (eq_ind nat (S (minus i0 h)) (\lambda 
3278 (n: nat).(drop n O (CHead x0 (Bind b) x1) a)) (drop_drop (Bind b) (minus i0 
3279 h) x0 a (H a c0 (drop_gen_drop (Bind b) c0 a t i0 H1) x0 h d0 H8 (le_S_n 
3280 (plus d0 h) i0 H5)) x1) (minus (S i0) h) (minus_Sn_m i0 h (le_trans_plus_r d0 
3281 h i0 (le_S_n (plus d0 h) i0 H5)))) e H6)))))) (drop_gen_skip_l c0 e t h d0 
3282 (Bind b) H4)))))) d H2 H3))))))))) (\lambda (f: F).(\lambda (t: T).(\lambda 
3283 (H1: (drop (S i0) O (CHead c0 (Flat f) t) a)).(\lambda (e: C).(\lambda (h: 
3284 nat).(\lambda (d: nat).(\lambda (H2: (drop h d (CHead c0 (Flat f) t) 
3285 e)).(\lambda (H3: (le (plus d h) (S i0))).(nat_ind (\lambda (n: nat).((drop h 
3286 n (CHead c0 (Flat f) t) e) \to ((le (plus n h) (S i0)) \to (drop (minus (S 
3287 i0) h) O e a)))) (\lambda (H4: (drop h O (CHead c0 (Flat f) t) e)).(\lambda 
3288 (H5: (le (plus O h) (S i0))).(nat_ind (\lambda (n: nat).((drop n O (CHead c0 
3289 (Flat f) t) e) \to ((le (plus O n) (S i0)) \to (drop (minus (S i0) n) O e 
3290 a)))) (\lambda (H6: (drop O O (CHead c0 (Flat f) t) e)).(\lambda (_: (le 
3291 (plus O O) (S i0))).(eq_ind C (CHead c0 (Flat f) t) (\lambda (c1: C).(drop 
3292 (minus (S i0) O) O c1 a)) (drop_drop (Flat f) i0 c0 a (drop_gen_drop (Flat f) 
3293 c0 a t i0 H1) t) e (drop_gen_refl (CHead c0 (Flat f) t) e H6)))) (\lambda 
3294 (h0: nat).(\lambda (_: (((drop h0 O (CHead c0 (Flat f) t) e) \to ((le (plus O 
3295 h0) (S i0)) \to (drop (minus (S i0) h0) O e a))))).(\lambda (H6: (drop (S h0) 
3296 O (CHead c0 (Flat f) t) e)).(\lambda (H7: (le (plus O (S h0)) (S i0))).(H0 
3297 (drop_gen_drop (Flat f) c0 a t i0 H1) e (S h0) O (drop_gen_drop (Flat f) c0 e 
3298 t h0 H6) H7))))) h H4 H5))) (\lambda (d0: nat).(\lambda (_: (((drop h d0 
3299 (CHead c0 (Flat f) t) e) \to ((le (plus d0 h) (S i0)) \to (drop (minus (S i0) 
3300 h) O e a))))).(\lambda (H4: (drop h (S d0) (CHead c0 (Flat f) t) e)).(\lambda 
3301 (H5: (le (plus (S d0) h) (S i0))).(ex3_2_ind C T (\lambda (e0: C).(\lambda 
3302 (v: T).(eq C e (CHead e0 (Flat f) v)))) (\lambda (_: C).(\lambda (v: T).(eq T 
3303 t (lift h (r (Flat f) d0) v)))) (\lambda (e0: C).(\lambda (_: T).(drop h (r 
3304 (Flat f) d0) c0 e0))) (drop (minus (S i0) h) O e a) (\lambda (x0: C).(\lambda 
3305 (x1: T).(\lambda (H6: (eq C e (CHead x0 (Flat f) x1))).(\lambda (_: (eq T t 
3306 (lift h (r (Flat f) d0) x1))).(\lambda (H8: (drop h (r (Flat f) d0) c0 
3307 x0)).(eq_ind_r C (CHead x0 (Flat f) x1) (\lambda (c1: C).(drop (minus (S i0) 
3308 h) O c1 a)) (let H9 \def (eq_ind_r nat (minus (S i0) h) (\lambda (n: 
3309 nat).(drop n O x0 a)) (H0 (drop_gen_drop (Flat f) c0 a t i0 H1) x0 h (S d0) 
3310 H8 H5) (S (minus i0 h)) (minus_Sn_m i0 h (le_trans_plus_r d0 h i0 (le_S_n 
3311 (plus d0 h) i0 H5)))) in (eq_ind nat (S (minus i0 h)) (\lambda (n: nat).(drop 
3312 n O (CHead x0 (Flat f) x1) a)) (drop_drop (Flat f) (minus i0 h) x0 a H9 x1) 
3313 (minus (S i0) h) (minus_Sn_m i0 h (le_trans_plus_r d0 h i0 (le_S_n (plus d0 
3314 h) i0 H5))))) e H6)))))) (drop_gen_skip_l c0 e t h d0 (Flat f) H4)))))) d H2 
3315 H3))))))))) k)))) c))))) i).
3316
3317 theorem drop_conf_rev:
3318  \forall (j: nat).(\forall (e1: C).(\forall (e2: C).((drop j O e1 e2) \to 
3319 (\forall (c2: C).(\forall (i: nat).((drop i O c2 e2) \to (ex2 C (\lambda (c1: 
3320 C).(drop j O c1 c2)) (\lambda (c1: C).(drop i j c1 e1)))))))))
3321 \def
3322  \lambda (j: nat).(nat_ind (\lambda (n: nat).(\forall (e1: C).(\forall (e2: 
3323 C).((drop n O e1 e2) \to (\forall (c2: C).(\forall (i: nat).((drop i O c2 e2) 
3324 \to (ex2 C (\lambda (c1: C).(drop n O c1 c2)) (\lambda (c1: C).(drop i n c1 
3325 e1)))))))))) (\lambda (e1: C).(\lambda (e2: C).(\lambda (H: (drop O O e1 
3326 e2)).(\lambda (c2: C).(\lambda (i: nat).(\lambda (H0: (drop i O c2 e2)).(let 
3327 H1 \def (eq_ind_r C e2 (\lambda (c: C).(drop i O c2 c)) H0 e1 (drop_gen_refl 
3328 e1 e2 H)) in (ex_intro2 C (\lambda (c1: C).(drop O O c1 c2)) (\lambda (c1: 
3329 C).(drop i O c1 e1)) c2 (drop_refl c2) H1)))))))) (\lambda (j0: nat).(\lambda 
3330 (IHj: ((\forall (e1: C).(\forall (e2: C).((drop j0 O e1 e2) \to (\forall (c2: 
3331 C).(\forall (i: nat).((drop i O c2 e2) \to (ex2 C (\lambda (c1: C).(drop j0 O 
3332 c1 c2)) (\lambda (c1: C).(drop i j0 c1 e1))))))))))).(\lambda (e1: C).(C_ind 
3333 (\lambda (c: C).(\forall (e2: C).((drop (S j0) O c e2) \to (\forall (c2: 
3334 C).(\forall (i: nat).((drop i O c2 e2) \to (ex2 C (\lambda (c1: C).(drop (S 
3335 j0) O c1 c2)) (\lambda (c1: C).(drop i (S j0) c1 c))))))))) (\lambda (n: 
3336 nat).(\lambda (e2: C).(\lambda (H: (drop (S j0) O (CSort n) e2)).(\lambda 
3337 (c2: C).(\lambda (i: nat).(\lambda (H0: (drop i O c2 e2)).(and3_ind (eq C e2 
3338 (CSort n)) (eq nat (S j0) O) (eq nat O O) (ex2 C (\lambda (c1: C).(drop (S 
3339 j0) O c1 c2)) (\lambda (c1: C).(drop i (S j0) c1 (CSort n)))) (\lambda (H1: 
3340 (eq C e2 (CSort n))).(\lambda (H2: (eq nat (S j0) O)).(\lambda (_: (eq nat O 
3341 O)).(let H4 \def (eq_ind C e2 (\lambda (c: C).(drop i O c2 c)) H0 (CSort n) 
3342 H1) in (let H5 \def (eq_ind nat (S j0) (\lambda (ee: nat).(match ee return 
3343 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
3344 I O H2) in (False_ind (ex2 C (\lambda (c1: C).(drop (S j0) O c1 c2)) (\lambda 
3345 (c1: C).(drop i (S j0) c1 (CSort n)))) H5)))))) (drop_gen_sort n (S j0) O e2 
3346 H)))))))) (\lambda (e2: C).(\lambda (IHe1: ((\forall (e3: C).((drop (S j0) O 
3347 e2 e3) \to (\forall (c2: C).(\forall (i: nat).((drop i O c2 e3) \to (ex2 C 
3348 (\lambda (c1: C).(drop (S j0) O c1 c2)) (\lambda (c1: C).(drop i (S j0) c1 
3349 e2)))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (e3: C).(\lambda (H: 
3350 (drop (S j0) O (CHead e2 k t) e3)).(\lambda (c2: C).(\lambda (i: 
3351 nat).(\lambda (H0: (drop i O c2 e3)).((match k return (\lambda (k0: K).((drop 
3352 (r k0 j0) O e2 e3) \to (ex2 C (\lambda (c1: C).(drop (S j0) O c1 c2)) 
3353 (\lambda (c1: C).(drop i (S j0) c1 (CHead e2 k0 t)))))) with [(Bind b) 
3354 \Rightarrow (\lambda (H1: (drop (r (Bind b) j0) O e2 e3)).(let H_x \def (IHj 
3355 e2 e3 H1 c2 i H0) in (let H2 \def H_x in (ex2_ind C (\lambda (c1: C).(drop j0 
3356 O c1 c2)) (\lambda (c1: C).(drop i j0 c1 e2)) (ex2 C (\lambda (c1: C).(drop 
3357 (S j0) O c1 c2)) (\lambda (c1: C).(drop i (S j0) c1 (CHead e2 (Bind b) t)))) 
3358 (\lambda (x: C).(\lambda (H3: (drop j0 O x c2)).(\lambda (H4: (drop i j0 x 
3359 e2)).(ex_intro2 C (\lambda (c1: C).(drop (S j0) O c1 c2)) (\lambda (c1: 
3360 C).(drop i (S j0) c1 (CHead e2 (Bind b) t))) (CHead x (Bind b) (lift i (r 
3361 (Bind b) j0) t)) (drop_drop (Bind b) j0 x c2 H3 (lift i (r (Bind b) j0) t)) 
3362 (drop_skip (Bind b) i j0 x e2 H4 t))))) H2)))) | (Flat f) \Rightarrow 
3363 (\lambda (H1: (drop (r (Flat f) j0) O e2 e3)).(let H_x \def (IHe1 e3 H1 c2 i 
3364 H0) in (let H2 \def H_x in (ex2_ind C (\lambda (c1: C).(drop (S j0) O c1 c2)) 
3365 (\lambda (c1: C).(drop i (S j0) c1 e2)) (ex2 C (\lambda (c1: C).(drop (S j0) 
3366 O c1 c2)) (\lambda (c1: C).(drop i (S j0) c1 (CHead e2 (Flat f) t)))) 
3367 (\lambda (x: C).(\lambda (H3: (drop (S j0) O x c2)).(\lambda (H4: (drop i (S 
3368 j0) x e2)).(ex_intro2 C (\lambda (c1: C).(drop (S j0) O c1 c2)) (\lambda (c1: 
3369 C).(drop i (S j0) c1 (CHead e2 (Flat f) t))) (CHead x (Flat f) (lift i (r 
3370 (Flat f) j0) t)) (drop_drop (Flat f) j0 x c2 H3 (lift i (r (Flat f) j0) t)) 
3371 (drop_skip (Flat f) i j0 x e2 H4 t))))) H2))))]) (drop_gen_drop k e2 e3 t j0 
3372 H))))))))))) e1)))) j).
3373
3374 theorem drop_trans_le:
3375  \forall (i: nat).(\forall (d: nat).((le i d) \to (\forall (c1: C).(\forall 
3376 (c2: C).(\forall (h: nat).((drop h d c1 c2) \to (\forall (e2: C).((drop i O 
3377 c2 e2) \to (ex2 C (\lambda (e1: C).(drop i O c1 e1)) (\lambda (e1: C).(drop h 
3378 (minus d i) e1 e2)))))))))))
3379 \def
3380  \lambda (i: nat).(nat_ind (\lambda (n: nat).(\forall (d: nat).((le n d) \to 
3381 (\forall (c1: C).(\forall (c2: C).(\forall (h: nat).((drop h d c1 c2) \to 
3382 (\forall (e2: C).((drop n O c2 e2) \to (ex2 C (\lambda (e1: C).(drop n O c1 
3383 e1)) (\lambda (e1: C).(drop h (minus d n) e1 e2)))))))))))) (\lambda (d: 
3384 nat).(\lambda (_: (le O d)).(\lambda (c1: C).(\lambda (c2: C).(\lambda (h: 
3385 nat).(\lambda (H0: (drop h d c1 c2)).(\lambda (e2: C).(\lambda (H1: (drop O O 
3386 c2 e2)).(let H2 \def (eq_ind C c2 (\lambda (c: C).(drop h d c1 c)) H0 e2 
3387 (drop_gen_refl c2 e2 H1)) in (eq_ind nat d (\lambda (n: nat).(ex2 C (\lambda 
3388 (e1: C).(drop O O c1 e1)) (\lambda (e1: C).(drop h n e1 e2)))) (ex_intro2 C 
3389 (\lambda (e1: C).(drop O O c1 e1)) (\lambda (e1: C).(drop h d e1 e2)) c1 
3390 (drop_refl c1) H2) (minus d O) (minus_n_O d))))))))))) (\lambda (i0: 
3391 nat).(\lambda (IHi: ((\forall (d: nat).((le i0 d) \to (\forall (c1: 
3392 C).(\forall (c2: C).(\forall (h: nat).((drop h d c1 c2) \to (\forall (e2: 
3393 C).((drop i0 O c2 e2) \to (ex2 C (\lambda (e1: C).(drop i0 O c1 e1)) (\lambda 
3394 (e1: C).(drop h (minus d i0) e1 e2))))))))))))).(\lambda (d: nat).(nat_ind 
3395 (\lambda (n: nat).((le (S i0) n) \to (\forall (c1: C).(\forall (c2: 
3396 C).(\forall (h: nat).((drop h n c1 c2) \to (\forall (e2: C).((drop (S i0) O 
3397 c2 e2) \to (ex2 C (\lambda (e1: C).(drop (S i0) O c1 e1)) (\lambda (e1: 
3398 C).(drop h (minus n (S i0)) e1 e2))))))))))) (\lambda (H: (le (S i0) 
3399 O)).(\lambda (c1: C).(\lambda (c2: C).(\lambda (h: nat).(\lambda (_: (drop h 
3400 O c1 c2)).(\lambda (e2: C).(\lambda (_: (drop (S i0) O c2 e2)).(let H2 \def 
3401 (match H return (\lambda (n: nat).(\lambda (_: (le ? n)).((eq nat n O) \to 
3402 (ex2 C (\lambda (e1: C).(drop (S i0) O c1 e1)) (\lambda (e1: C).(drop h 
3403 (minus O (S i0)) e1 e2)))))) with [le_n \Rightarrow (\lambda (H2: (eq nat (S 
3404 i0) O)).(let H3 \def (eq_ind nat (S i0) (\lambda (e: nat).(match e return 
3405 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
3406 I O H2) in (False_ind (ex2 C (\lambda (e1: C).(drop (S i0) O c1 e1)) (\lambda 
3407 (e1: C).(drop h (minus O (S i0)) e1 e2))) H3))) | (le_S m H2) \Rightarrow 
3408 (\lambda (H3: (eq nat (S m) O)).((let H4 \def (eq_ind nat (S m) (\lambda (e: 
3409 nat).(match e return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S 
3410 _) \Rightarrow True])) I O H3) in (False_ind ((le (S i0) m) \to (ex2 C 
3411 (\lambda (e1: C).(drop (S i0) O c1 e1)) (\lambda (e1: C).(drop h (minus O (S 
3412 i0)) e1 e2)))) H4)) H2))]) in (H2 (refl_equal nat O)))))))))) (\lambda (d0: 
3413 nat).(\lambda (_: (((le (S i0) d0) \to (\forall (c1: C).(\forall (c2: 
3414 C).(\forall (h: nat).((drop h d0 c1 c2) \to (\forall (e2: C).((drop (S i0) O 
3415 c2 e2) \to (ex2 C (\lambda (e1: C).(drop (S i0) O c1 e1)) (\lambda (e1: 
3416 C).(drop h (minus d0 (S i0)) e1 e2)))))))))))).(\lambda (H: (le (S i0) (S 
3417 d0))).(\lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).(\forall (h: 
3418 nat).((drop h (S d0) c c2) \to (\forall (e2: C).((drop (S i0) O c2 e2) \to 
3419 (ex2 C (\lambda (e1: C).(drop (S i0) O c e1)) (\lambda (e1: C).(drop h (minus 
3420 (S d0) (S i0)) e1 e2))))))))) (\lambda (n: nat).(\lambda (c2: C).(\lambda (h: 
3421 nat).(\lambda (H0: (drop h (S d0) (CSort n) c2)).(\lambda (e2: C).(\lambda 
3422 (H1: (drop (S i0) O c2 e2)).(and3_ind (eq C c2 (CSort n)) (eq nat h O) (eq 
3423 nat (S d0) O) (ex2 C (\lambda (e1: C).(drop (S i0) O (CSort n) e1)) (\lambda 
3424 (e1: C).(drop h (minus (S d0) (S i0)) e1 e2))) (\lambda (H2: (eq C c2 (CSort 
3425 n))).(\lambda (_: (eq nat h O)).(\lambda (_: (eq nat (S d0) O)).(let H5 \def 
3426 (eq_ind C c2 (\lambda (c: C).(drop (S i0) O c e2)) H1 (CSort n) H2) in 
3427 (and3_ind (eq C e2 (CSort n)) (eq nat (S i0) O) (eq nat O O) (ex2 C (\lambda 
3428 (e1: C).(drop (S i0) O (CSort n) e1)) (\lambda (e1: C).(drop h (minus (S d0) 
3429 (S i0)) e1 e2))) (\lambda (H6: (eq C e2 (CSort n))).(\lambda (H7: (eq nat (S 
3430 i0) O)).(\lambda (_: (eq nat O O)).(eq_ind_r C (CSort n) (\lambda (c: C).(ex2 
3431 C (\lambda (e1: C).(drop (S i0) O (CSort n) e1)) (\lambda (e1: C).(drop h 
3432 (minus (S d0) (S i0)) e1 c)))) (let H9 \def (eq_ind nat (S i0) (\lambda (ee: 
3433 nat).(match ee return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S 
3434 _) \Rightarrow True])) I O H7) in (False_ind (ex2 C (\lambda (e1: C).(drop (S 
3435 i0) O (CSort n) e1)) (\lambda (e1: C).(drop h (minus (S d0) (S i0)) e1 (CSort 
3436 n)))) H9)) e2 H6)))) (drop_gen_sort n (S i0) O e2 H5)))))) (drop_gen_sort n h 
3437 (S d0) c2 H0)))))))) (\lambda (c2: C).(\lambda (IHc: ((\forall (c3: 
3438 C).(\forall (h: nat).((drop h (S d0) c2 c3) \to (\forall (e2: C).((drop (S 
3439 i0) O c3 e2) \to (ex2 C (\lambda (e1: C).(drop (S i0) O c2 e1)) (\lambda (e1: 
3440 C).(drop h (minus (S d0) (S i0)) e1 e2)))))))))).(\lambda (k: K).(K_ind 
3441 (\lambda (k0: K).(\forall (t: T).(\forall (c3: C).(\forall (h: nat).((drop h 
3442 (S d0) (CHead c2 k0 t) c3) \to (\forall (e2: C).((drop (S i0) O c3 e2) \to 
3443 (ex2 C (\lambda (e1: C).(drop (S i0) O (CHead c2 k0 t) e1)) (\lambda (e1: 
3444 C).(drop h (minus (S d0) (S i0)) e1 e2)))))))))) (\lambda (b: B).(\lambda (t: 
3445 T).(\lambda (c3: C).(\lambda (h: nat).(\lambda (H0: (drop h (S d0) (CHead c2 
3446 (Bind b) t) c3)).(\lambda (e2: C).(\lambda (H1: (drop (S i0) O c3 
3447 e2)).(ex3_2_ind C T (\lambda (e: C).(\lambda (v: T).(eq C c3 (CHead e (Bind 
3448 b) v)))) (\lambda (_: C).(\lambda (v: T).(eq T t (lift h (r (Bind b) d0) 
3449 v)))) (\lambda (e: C).(\lambda (_: T).(drop h (r (Bind b) d0) c2 e))) (ex2 C 
3450 (\lambda (e1: C).(drop (S i0) O (CHead c2 (Bind b) t) e1)) (\lambda (e1: 
3451 C).(drop h (minus (S d0) (S i0)) e1 e2))) (\lambda (x0: C).(\lambda (x1: 
3452 T).(\lambda (H2: (eq C c3 (CHead x0 (Bind b) x1))).(\lambda (H3: (eq T t 
3453 (lift h (r (Bind b) d0) x1))).(\lambda (H4: (drop h (r (Bind b) d0) c2 
3454 x0)).(let H5 \def (eq_ind C c3 (\lambda (c: C).(drop (S i0) O c e2)) H1 
3455 (CHead x0 (Bind b) x1) H2) in (eq_ind_r T (lift h (r (Bind b) d0) x1) 
3456 (\lambda (t0: T).(ex2 C (\lambda (e1: C).(drop (S i0) O (CHead c2 (Bind b) 
3457 t0) e1)) (\lambda (e1: C).(drop h (minus (S d0) (S i0)) e1 e2)))) (ex2_ind C 
3458 (\lambda (e1: C).(drop i0 O c2 e1)) (\lambda (e1: C).(drop h (minus d0 i0) e1 
3459 e2)) (ex2 C (\lambda (e1: C).(drop (S i0) O (CHead c2 (Bind b) (lift h (r 
3460 (Bind b) d0) x1)) e1)) (\lambda (e1: C).(drop h (minus (S d0) (S i0)) e1 
3461 e2))) (\lambda (x: C).(\lambda (H6: (drop i0 O c2 x)).(\lambda (H7: (drop h 
3462 (minus d0 i0) x e2)).(ex_intro2 C (\lambda (e1: C).(drop (S i0) O (CHead c2 
3463 (Bind b) (lift h (r (Bind b) d0) x1)) e1)) (\lambda (e1: C).(drop h (minus (S 
3464 d0) (S i0)) e1 e2)) x (drop_drop (Bind b) i0 c2 x H6 (lift h (r (Bind b) d0) 
3465 x1)) H7)))) (IHi d0 (le_S_n i0 d0 H) c2 x0 h H4 e2 (drop_gen_drop (Bind b) x0 
3466 e2 x1 i0 H5))) t H3))))))) (drop_gen_skip_l c2 c3 t h d0 (Bind b) H0))))))))) 
3467 (\lambda (f: F).(\lambda (t: T).(\lambda (c3: C).(\lambda (h: nat).(\lambda 
3468 (H0: (drop h (S d0) (CHead c2 (Flat f) t) c3)).(\lambda (e2: C).(\lambda (H1: 
3469 (drop (S i0) O c3 e2)).(ex3_2_ind C T (\lambda (e: C).(\lambda (v: T).(eq C 
3470 c3 (CHead e (Flat f) v)))) (\lambda (_: C).(\lambda (v: T).(eq T t (lift h (r 
3471 (Flat f) d0) v)))) (\lambda (e: C).(\lambda (_: T).(drop h (r (Flat f) d0) c2 
3472 e))) (ex2 C (\lambda (e1: C).(drop (S i0) O (CHead c2 (Flat f) t) e1)) 
3473 (\lambda (e1: C).(drop h (minus (S d0) (S i0)) e1 e2))) (\lambda (x0: 
3474 C).(\lambda (x1: T).(\lambda (H2: (eq C c3 (CHead x0 (Flat f) x1))).(\lambda 
3475 (H3: (eq T t (lift h (r (Flat f) d0) x1))).(\lambda (H4: (drop h (r (Flat f) 
3476 d0) c2 x0)).(let H5 \def (eq_ind C c3 (\lambda (c: C).(drop (S i0) O c e2)) 
3477 H1 (CHead x0 (Flat f) x1) H2) in (eq_ind_r T (lift h (r (Flat f) d0) x1) 
3478 (\lambda (t0: T).(ex2 C (\lambda (e1: C).(drop (S i0) O (CHead c2 (Flat f) 
3479 t0) e1)) (\lambda (e1: C).(drop h (minus (S d0) (S i0)) e1 e2)))) (ex2_ind C 
3480 (\lambda (e1: C).(drop (S i0) O c2 e1)) (\lambda (e1: C).(drop h (minus (S 
3481 d0) (S i0)) e1 e2)) (ex2 C (\lambda (e1: C).(drop (S i0) O (CHead c2 (Flat f) 
3482 (lift h (r (Flat f) d0) x1)) e1)) (\lambda (e1: C).(drop h (minus (S d0) (S 
3483 i0)) e1 e2))) (\lambda (x: C).(\lambda (H6: (drop (S i0) O c2 x)).(\lambda 
3484 (H7: (drop h (minus (S d0) (S i0)) x e2)).(ex_intro2 C (\lambda (e1: C).(drop 
3485 (S i0) O (CHead c2 (Flat f) (lift h (r (Flat f) d0) x1)) e1)) (\lambda (e1: 
3486 C).(drop h (minus (S d0) (S i0)) e1 e2)) x (drop_drop (Flat f) i0 c2 x H6 
3487 (lift h (r (Flat f) d0) x1)) H7)))) (IHc x0 h H4 e2 (drop_gen_drop (Flat f) 
3488 x0 e2 x1 i0 H5))) t H3))))))) (drop_gen_skip_l c2 c3 t h d0 (Flat f) 
3489 H0))))))))) k)))) c1))))) d)))) i).
3490
3491 theorem drop_trans_ge:
3492  \forall (i: nat).(\forall (c1: C).(\forall (c2: C).(\forall (d: 
3493 nat).(\forall (h: nat).((drop h d c1 c2) \to (\forall (e2: C).((drop i O c2 
3494 e2) \to ((le d i) \to (drop (plus i h) O c1 e2)))))))))
3495 \def
3496  \lambda (i: nat).(nat_ind (\lambda (n: nat).(\forall (c1: C).(\forall (c2: 
3497 C).(\forall (d: nat).(\forall (h: nat).((drop h d c1 c2) \to (\forall (e2: 
3498 C).((drop n O c2 e2) \to ((le d n) \to (drop (plus n h) O c1 e2)))))))))) 
3499 (\lambda (c1: C).(\lambda (c2: C).(\lambda (d: nat).(\lambda (h: 
3500 nat).(\lambda (H: (drop h d c1 c2)).(\lambda (e2: C).(\lambda (H0: (drop O O 
3501 c2 e2)).(\lambda (H1: (le d O)).(eq_ind C c2 (\lambda (c: C).(drop (plus O h) 
3502 O c1 c)) (let H2 \def (match H1 return (\lambda (n: nat).(\lambda (_: (le ? 
3503 n)).((eq nat n O) \to (drop (plus O h) O c1 c2)))) with [le_n \Rightarrow 
3504 (\lambda (H0: (eq nat d O)).(eq_ind nat O (\lambda (_: nat).(drop (plus O h) 
3505 O c1 c2)) (let H2 \def (eq_ind nat d (\lambda (n: nat).(le n O)) H1 O H0) in 
3506 (let H3 \def (eq_ind nat d (\lambda (n: nat).(drop h n c1 c2)) H O H0) in 
3507 H3)) d (sym_eq nat d O H0))) | (le_S m H0) \Rightarrow (\lambda (H2: (eq nat 
3508 (S m) O)).((let H1 \def (eq_ind nat (S m) (\lambda (e: nat).(match e return 
3509 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
3510 I O H2) in (False_ind ((le d m) \to (drop (plus O h) O c1 c2)) H1)) H0))]) in 
3511 (H2 (refl_equal nat O))) e2 (drop_gen_refl c2 e2 H0)))))))))) (\lambda (i0: 
3512 nat).(\lambda (IHi: ((\forall (c1: C).(\forall (c2: C).(\forall (d: 
3513 nat).(\forall (h: nat).((drop h d c1 c2) \to (\forall (e2: C).((drop i0 O c2 
3514 e2) \to ((le d i0) \to (drop (plus i0 h) O c1 e2))))))))))).(\lambda (c1: 
3515 C).(C_ind (\lambda (c: C).(\forall (c2: C).(\forall (d: nat).(\forall (h: 
3516 nat).((drop h d c c2) \to (\forall (e2: C).((drop (S i0) O c2 e2) \to ((le d 
3517 (S i0)) \to (drop (plus (S i0) h) O c e2))))))))) (\lambda (n: nat).(\lambda 
3518 (c2: C).(\lambda (d: nat).(\lambda (h: nat).(\lambda (H: (drop h d (CSort n) 
3519 c2)).(\lambda (e2: C).(\lambda (H0: (drop (S i0) O c2 e2)).(\lambda (H1: (le 
3520 d (S i0))).(and3_ind (eq C c2 (CSort n)) (eq nat h O) (eq nat d O) (drop (S 
3521 (plus i0 h)) O (CSort n) e2) (\lambda (H2: (eq C c2 (CSort n))).(\lambda (H3: 
3522 (eq nat h O)).(\lambda (H4: (eq nat d O)).(eq_ind_r nat O (\lambda (n0: 
3523 nat).(drop (S (plus i0 n0)) O (CSort n) e2)) (let H5 \def (eq_ind nat d 
3524 (\lambda (n: nat).(le n (S i0))) H1 O H4) in (let H6 \def (eq_ind C c2 
3525 (\lambda (c: C).(drop (S i0) O c e2)) H0 (CSort n) H2) in (and3_ind (eq C e2 
3526 (CSort n)) (eq nat (S i0) O) (eq nat O O) (drop (S (plus i0 O)) O (CSort n) 
3527 e2) (\lambda (H7: (eq C e2 (CSort n))).(\lambda (H8: (eq nat (S i0) 
3528 O)).(\lambda (_: (eq nat O O)).(eq_ind_r C (CSort n) (\lambda (c: C).(drop (S 
3529 (plus i0 O)) O (CSort n) c)) (let H10 \def (eq_ind nat (S i0) (\lambda (ee: 
3530 nat).(match ee return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S 
3531 _) \Rightarrow True])) I O H8) in (False_ind (drop (S (plus i0 O)) O (CSort 
3532 n) (CSort n)) H10)) e2 H7)))) (drop_gen_sort n (S i0) O e2 H6)))) h H3)))) 
3533 (drop_gen_sort n h d c2 H)))))))))) (\lambda (c2: C).(\lambda (IHc: ((\forall 
3534 (c3: C).(\forall (d: nat).(\forall (h: nat).((drop h d c2 c3) \to (\forall 
3535 (e2: C).((drop (S i0) O c3 e2) \to ((le d (S i0)) \to (drop (S (plus i0 h)) O 
3536 c2 e2)))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c3: C).(\lambda (d: 
3537 nat).(nat_ind (\lambda (n: nat).(\forall (h: nat).((drop h n (CHead c2 k t) 
3538 c3) \to (\forall (e2: C).((drop (S i0) O c3 e2) \to ((le n (S i0)) \to (drop 
3539 (S (plus i0 h)) O (CHead c2 k t) e2))))))) (\lambda (h: nat).(nat_ind 
3540 (\lambda (n: nat).((drop n O (CHead c2 k t) c3) \to (\forall (e2: C).((drop 
3541 (S i0) O c3 e2) \to ((le O (S i0)) \to (drop (S (plus i0 n)) O (CHead c2 k t) 
3542 e2)))))) (\lambda (H: (drop O O (CHead c2 k t) c3)).(\lambda (e2: C).(\lambda 
3543 (H0: (drop (S i0) O c3 e2)).(\lambda (_: (le O (S i0))).(let H2 \def 
3544 (eq_ind_r C c3 (\lambda (c: C).(drop (S i0) O c e2)) H0 (CHead c2 k t) 
3545 (drop_gen_refl (CHead c2 k t) c3 H)) in (eq_ind nat i0 (\lambda (n: 
3546 nat).(drop (S n) O (CHead c2 k t) e2)) (drop_drop k i0 c2 e2 (drop_gen_drop k 
3547 c2 e2 t i0 H2) t) (plus i0 O) (plus_n_O i0))))))) (\lambda (n: nat).(\lambda 
3548 (_: (((drop n O (CHead c2 k t) c3) \to (\forall (e2: C).((drop (S i0) O c3 
3549 e2) \to ((le O (S i0)) \to (drop (S (plus i0 n)) O (CHead c2 k t) 
3550 e2))))))).(\lambda (H0: (drop (S n) O (CHead c2 k t) c3)).(\lambda (e2: 
3551 C).(\lambda (H1: (drop (S i0) O c3 e2)).(\lambda (H2: (le O (S i0))).(eq_ind 
3552 nat (S (plus i0 n)) (\lambda (n0: nat).(drop (S n0) O (CHead c2 k t) e2)) 
3553 (drop_drop k (S (plus i0 n)) c2 e2 (eq_ind_r nat (S (r k (plus i0 n))) 
3554 (\lambda (n0: nat).(drop n0 O c2 e2)) (eq_ind_r nat (plus i0 (r k n)) 
3555 (\lambda (n0: nat).(drop (S n0) O c2 e2)) (IHc c3 O (r k n) (drop_gen_drop k 
3556 c2 c3 t n H0) e2 H1 H2) (r k (plus i0 n)) (r_plus_sym k i0 n)) (r k (S (plus 
3557 i0 n))) (r_S k (plus i0 n))) t) (plus i0 (S n)) (plus_n_Sm i0 n)))))))) h)) 
3558 (\lambda (d0: nat).(\lambda (IHd: ((\forall (h: nat).((drop h d0 (CHead c2 k 
3559 t) c3) \to (\forall (e2: C).((drop (S i0) O c3 e2) \to ((le d0 (S i0)) \to 
3560 (drop (S (plus i0 h)) O (CHead c2 k t) e2)))))))).(\lambda (h: nat).(\lambda 
3561 (H: (drop h (S d0) (CHead c2 k t) c3)).(\lambda (e2: C).(\lambda (H0: (drop 
3562 (S i0) O c3 e2)).(\lambda (H1: (le (S d0) (S i0))).(ex3_2_ind C T (\lambda 
3563 (e: C).(\lambda (v: T).(eq C c3 (CHead e k v)))) (\lambda (_: C).(\lambda (v: 
3564 T).(eq T t (lift h (r k d0) v)))) (\lambda (e: C).(\lambda (_: T).(drop h (r 
3565 k d0) c2 e))) (drop (S (plus i0 h)) O (CHead c2 k t) e2) (\lambda (x0: 
3566 C).(\lambda (x1: T).(\lambda (H2: (eq C c3 (CHead x0 k x1))).(\lambda (H3: 
3567 (eq T t (lift h (r k d0) x1))).(\lambda (H4: (drop h (r k d0) c2 x0)).(let H5 
3568 \def (eq_ind C c3 (\lambda (c: C).(\forall (h: nat).((drop h d0 (CHead c2 k 
3569 t) c) \to (\forall (e2: C).((drop (S i0) O c e2) \to ((le d0 (S i0)) \to 
3570 (drop (S (plus i0 h)) O (CHead c2 k t) e2))))))) IHd (CHead x0 k x1) H2) in 
3571 (let H6 \def (eq_ind C c3 (\lambda (c: C).(drop (S i0) O c e2)) H0 (CHead x0 
3572 k x1) H2) in (let H7 \def (eq_ind T t (\lambda (t: T).(\forall (h: 
3573 nat).((drop h d0 (CHead c2 k t) (CHead x0 k x1)) \to (\forall (e2: C).((drop 
3574 (S i0) O (CHead x0 k x1) e2) \to ((le d0 (S i0)) \to (drop (S (plus i0 h)) O 
3575 (CHead c2 k t) e2))))))) H5 (lift h (r k d0) x1) H3) in (eq_ind_r T (lift h 
3576 (r k d0) x1) (\lambda (t0: T).(drop (S (plus i0 h)) O (CHead c2 k t0) e2)) 
3577 (drop_drop k (plus i0 h) c2 e2 (K_ind (\lambda (k0: K).((drop h (r k0 d0) c2 
3578 x0) \to ((drop (r k0 i0) O x0 e2) \to (drop (r k0 (plus i0 h)) O c2 e2)))) 
3579 (\lambda (b: B).(\lambda (H8: (drop h (r (Bind b) d0) c2 x0)).(\lambda (H9: 
3580 (drop (r (Bind b) i0) O x0 e2)).(IHi c2 x0 (r (Bind b) d0) h H8 e2 H9 (le_S_n 
3581 (r (Bind b) d0) i0 H1))))) (\lambda (f: F).(\lambda (H8: (drop h (r (Flat f) 
3582 d0) c2 x0)).(\lambda (H9: (drop (r (Flat f) i0) O x0 e2)).(IHc x0 (r (Flat f) 
3583 d0) h H8 e2 H9 H1)))) k H4 (drop_gen_drop k x0 e2 x1 i0 H6)) (lift h (r k d0) 
3584 x1)) t H3))))))))) (drop_gen_skip_l c2 c3 t h d0 k H))))))))) d))))))) c1)))) 
3585 i).
3586
3587 inductive drop1: PList \to (C \to (C \to Prop)) \def
3588 | drop1_nil: \forall (c: C).(drop1 PNil c c)
3589 | drop1_cons: \forall (c1: C).(\forall (c2: C).(\forall (h: nat).(\forall (d: 
3590 nat).((drop h d c1 c2) \to (\forall (c3: C).(\forall (hds: PList).((drop1 hds 
3591 c2 c3) \to (drop1 (PCons h d hds) c1 c3)))))))).
3592
3593 definition ctrans:
3594  PList \to (nat \to (T \to T))
3595 \def
3596  let rec ctrans (hds: PList) on hds: (nat \to (T \to T)) \def (\lambda (i: 
3597 nat).(\lambda (t: T).(match hds with [PNil \Rightarrow t | (PCons h d hds0) 
3598 \Rightarrow (let j \def (trans hds0 i) in (let u \def (ctrans hds0 i t) in 
3599 (match (blt j d) with [true \Rightarrow (lift h (minus d (S j)) u) | false 
3600 \Rightarrow u])))]))) in ctrans.
3601
3602 theorem drop1_skip_bind:
3603  \forall (b: B).(\forall (e: C).(\forall (hds: PList).(\forall (c: 
3604 C).(\forall (u: T).((drop1 hds c e) \to (drop1 (Ss hds) (CHead c (Bind b) 
3605 (lift1 hds u)) (CHead e (Bind b) u)))))))
3606 \def
3607  \lambda (b: B).(\lambda (e: C).(\lambda (hds: PList).(PList_ind (\lambda (p: 
3608 PList).(\forall (c: C).(\forall (u: T).((drop1 p c e) \to (drop1 (Ss p) 
3609 (CHead c (Bind b) (lift1 p u)) (CHead e (Bind b) u)))))) (\lambda (c: 
3610 C).(\lambda (u: T).(\lambda (H: (drop1 PNil c e)).(let H0 \def (match H 
3611 return (\lambda (p: PList).(\lambda (c0: C).(\lambda (c1: C).(\lambda (_: 
3612 (drop1 p c0 c1)).((eq PList p PNil) \to ((eq C c0 c) \to ((eq C c1 e) \to 
3613 (drop1 PNil (CHead c (Bind b) u) (CHead e (Bind b) u))))))))) with 
3614 [(drop1_nil c0) \Rightarrow (\lambda (_: (eq PList PNil PNil)).(\lambda (H1: 
3615 (eq C c0 c)).(\lambda (H2: (eq C c0 e)).(eq_ind C c (\lambda (c1: C).((eq C 
3616 c1 e) \to (drop1 PNil (CHead c (Bind b) u) (CHead e (Bind b) u)))) (\lambda 
3617 (H3: (eq C c e)).(eq_ind C e (\lambda (c: C).(drop1 PNil (CHead c (Bind b) u) 
3618 (CHead e (Bind b) u))) (drop1_nil (CHead e (Bind b) u)) c (sym_eq C c e H3))) 
3619 c0 (sym_eq C c0 c H1) H2)))) | (drop1_cons c1 c2 h d H0 c3 hds H1) 
3620 \Rightarrow (\lambda (H2: (eq PList (PCons h d hds) PNil)).(\lambda (H3: (eq 
3621 C c1 c)).(\lambda (H4: (eq C c3 e)).((let H5 \def (eq_ind PList (PCons h d 
3622 hds) (\lambda (e0: PList).(match e0 return (\lambda (_: PList).Prop) with 
3623 [PNil \Rightarrow False | (PCons _ _ _) \Rightarrow True])) I PNil H2) in 
3624 (False_ind ((eq C c1 c) \to ((eq C c3 e) \to ((drop h d c1 c2) \to ((drop1 
3625 hds c2 c3) \to (drop1 PNil (CHead c (Bind b) u) (CHead e (Bind b) u)))))) 
3626 H5)) H3 H4 H0 H1))))]) in (H0 (refl_equal PList PNil) (refl_equal C c) 
3627 (refl_equal C e)))))) (\lambda (n: nat).(\lambda (n0: nat).(\lambda (p: 
3628 PList).(\lambda (H: ((\forall (c: C).(\forall (u: T).((drop1 p c e) \to 
3629 (drop1 (Ss p) (CHead c (Bind b) (lift1 p u)) (CHead e (Bind b) 
3630 u))))))).(\lambda (c: C).(\lambda (u: T).(\lambda (H0: (drop1 (PCons n n0 p) 
3631 c e)).(let H1 \def (match H0 return (\lambda (p0: PList).(\lambda (c0: 
3632 C).(\lambda (c1: C).(\lambda (_: (drop1 p0 c0 c1)).((eq PList p0 (PCons n n0 
3633 p)) \to ((eq C c0 c) \to ((eq C c1 e) \to (drop1 (PCons n (S n0) (Ss p)) 
3634 (CHead c (Bind b) (lift n n0 (lift1 p u))) (CHead e (Bind b) u))))))))) with 
3635 [(drop1_nil c0) \Rightarrow (\lambda (H1: (eq PList PNil (PCons n n0 
3636 p))).(\lambda (H2: (eq C c0 c)).(\lambda (H3: (eq C c0 e)).((let H4 \def 
3637 (eq_ind PList PNil (\lambda (e0: PList).(match e0 return (\lambda (_: 
3638 PList).Prop) with [PNil \Rightarrow True | (PCons _ _ _) \Rightarrow False])) 
3639 I (PCons n n0 p) H1) in (False_ind ((eq C c0 c) \to ((eq C c0 e) \to (drop1 
3640 (PCons n (S n0) (Ss p)) (CHead c (Bind b) (lift n n0 (lift1 p u))) (CHead e 
3641 (Bind b) u)))) H4)) H2 H3)))) | (drop1_cons c1 c2 h d H1 c3 hds H2) 
3642 \Rightarrow (\lambda (H3: (eq PList (PCons h d hds) (PCons n n0 p))).(\lambda 
3643 (H4: (eq C c1 c)).(\lambda (H5: (eq C c3 e)).((let H6 \def (f_equal PList 
3644 PList (\lambda (e0: PList).(match e0 return (\lambda (_: PList).PList) with 
3645 [PNil \Rightarrow hds | (PCons _ _ p) \Rightarrow p])) (PCons h d hds) (PCons 
3646 n n0 p) H3) in ((let H7 \def (f_equal PList nat (\lambda (e0: PList).(match 
3647 e0 return (\lambda (_: PList).nat) with [PNil \Rightarrow d | (PCons _ n _) 
3648 \Rightarrow n])) (PCons h d hds) (PCons n n0 p) H3) in ((let H8 \def (f_equal 
3649 PList nat (\lambda (e0: PList).(match e0 return (\lambda (_: PList).nat) with 
3650 [PNil \Rightarrow h | (PCons n _ _) \Rightarrow n])) (PCons h d hds) (PCons n 
3651 n0 p) H3) in (eq_ind nat n (\lambda (n1: nat).((eq nat d n0) \to ((eq PList 
3652 hds p) \to ((eq C c1 c) \to ((eq C c3 e) \to ((drop n1 d c1 c2) \to ((drop1 
3653 hds c2 c3) \to (drop1 (PCons n (S n0) (Ss p)) (CHead c (Bind b) (lift n n0 
3654 (lift1 p u))) (CHead e (Bind b) u))))))))) (\lambda (H9: (eq nat d 
3655 n0)).(eq_ind nat n0 (\lambda (n1: nat).((eq PList hds p) \to ((eq C c1 c) \to 
3656 ((eq C c3 e) \to ((drop n n1 c1 c2) \to ((drop1 hds c2 c3) \to (drop1 (PCons 
3657 n (S n0) (Ss p)) (CHead c (Bind b) (lift n n0 (lift1 p u))) (CHead e (Bind b) 
3658 u)))))))) (\lambda (H10: (eq PList hds p)).(eq_ind PList p (\lambda (p0: 
3659 PList).((eq C c1 c) \to ((eq C c3 e) \to ((drop n n0 c1 c2) \to ((drop1 p0 c2 
3660 c3) \to (drop1 (PCons n (S n0) (Ss p)) (CHead c (Bind b) (lift n n0 (lift1 p 
3661 u))) (CHead e (Bind b) u))))))) (\lambda (H11: (eq C c1 c)).(eq_ind C c 
3662 (\lambda (c0: C).((eq C c3 e) \to ((drop n n0 c0 c2) \to ((drop1 p c2 c3) \to 
3663 (drop1 (PCons n (S n0) (Ss p)) (CHead c (Bind b) (lift n n0 (lift1 p u))) 
3664 (CHead e (Bind b) u)))))) (\lambda (H12: (eq C c3 e)).(eq_ind C e (\lambda 
3665 (c0: C).((drop n n0 c c2) \to ((drop1 p c2 c0) \to (drop1 (PCons n (S n0) (Ss 
3666 p)) (CHead c (Bind b) (lift n n0 (lift1 p u))) (CHead e (Bind b) u))))) 
3667 (\lambda (H13: (drop n n0 c c2)).(\lambda (H14: (drop1 p c2 e)).(drop1_cons 
3668 (CHead c (Bind b) (lift n n0 (lift1 p u))) (CHead c2 (Bind b) (lift1 p u)) n 
3669 (S n0) (drop_skip_bind n n0 c c2 H13 b (lift1 p u)) (CHead e (Bind b) u) (Ss 
3670 p) (H c2 u H14)))) c3 (sym_eq C c3 e H12))) c1 (sym_eq C c1 c H11))) hds 
3671 (sym_eq PList hds p H10))) d (sym_eq nat d n0 H9))) h (sym_eq nat h n H8))) 
3672 H7)) H6)) H4 H5 H1 H2))))]) in (H1 (refl_equal PList (PCons n n0 p)) 
3673 (refl_equal C c) (refl_equal C e)))))))))) hds))).
3674
3675 theorem drop1_cons_tail:
3676  \forall (c2: C).(\forall (c3: C).(\forall (h: nat).(\forall (d: nat).((drop 
3677 h d c2 c3) \to (\forall (hds: PList).(\forall (c1: C).((drop1 hds c1 c2) \to 
3678 (drop1 (PConsTail hds h d) c1 c3))))))))
3679 \def
3680  \lambda (c2: C).(\lambda (c3: C).(\lambda (h: nat).(\lambda (d: 
3681 nat).(\lambda (H: (drop h d c2 c3)).(\lambda (hds: PList).(PList_ind (\lambda 
3682 (p: PList).(\forall (c1: C).((drop1 p c1 c2) \to (drop1 (PConsTail p h d) c1 
3683 c3)))) (\lambda (c1: C).(\lambda (H0: (drop1 PNil c1 c2)).(let H1 \def (match 
3684 H0 return (\lambda (p: PList).(\lambda (c: C).(\lambda (c0: C).(\lambda (_: 
3685 (drop1 p c c0)).((eq PList p PNil) \to ((eq C c c1) \to ((eq C c0 c2) \to 
3686 (drop1 (PCons h d PNil) c1 c3)))))))) with [(drop1_nil c) \Rightarrow 
3687 (\lambda (_: (eq PList PNil PNil)).(\lambda (H2: (eq C c c1)).(\lambda (H3: 
3688 (eq C c c2)).(eq_ind C c1 (\lambda (c0: C).((eq C c0 c2) \to (drop1 (PCons h 
3689 d PNil) c1 c3))) (\lambda (H4: (eq C c1 c2)).(eq_ind C c2 (\lambda (c0: 
3690 C).(drop1 (PCons h d PNil) c0 c3)) (drop1_cons c2 c3 h d H c3 PNil (drop1_nil 
3691 c3)) c1 (sym_eq C c1 c2 H4))) c (sym_eq C c c1 H2) H3)))) | (drop1_cons c0 c4 
3692 h0 d0 H1 c5 hds H2) \Rightarrow (\lambda (H3: (eq PList (PCons h0 d0 hds) 
3693 PNil)).(\lambda (H4: (eq C c0 c1)).(\lambda (H5: (eq C c5 c2)).((let H6 \def 
3694 (eq_ind PList (PCons h0 d0 hds) (\lambda (e: PList).(match e return (\lambda 
3695 (_: PList).Prop) with [PNil \Rightarrow False | (PCons _ _ _) \Rightarrow 
3696 True])) I PNil H3) in (False_ind ((eq C c0 c1) \to ((eq C c5 c2) \to ((drop 
3697 h0 d0 c0 c4) \to ((drop1 hds c4 c5) \to (drop1 (PCons h d PNil) c1 c3))))) 
3698 H6)) H4 H5 H1 H2))))]) in (H1 (refl_equal PList PNil) (refl_equal C c1) 
3699 (refl_equal C c2))))) (\lambda (n: nat).(\lambda (n0: nat).(\lambda (p: 
3700 PList).(\lambda (H0: ((\forall (c1: C).((drop1 p c1 c2) \to (drop1 (PConsTail 
3701 p h d) c1 c3))))).(\lambda (c1: C).(\lambda (H1: (drop1 (PCons n n0 p) c1 
3702 c2)).(let H2 \def (match H1 return (\lambda (p0: PList).(\lambda (c: 
3703 C).(\lambda (c0: C).(\lambda (_: (drop1 p0 c c0)).((eq PList p0 (PCons n n0 
3704 p)) \to ((eq C c c1) \to ((eq C c0 c2) \to (drop1 (PCons n n0 (PConsTail p h 
3705 d)) c1 c3)))))))) with [(drop1_nil c) \Rightarrow (\lambda (H2: (eq PList 
3706 PNil (PCons n n0 p))).(\lambda (H3: (eq C c c1)).(\lambda (H4: (eq C c 
3707 c2)).((let H5 \def (eq_ind PList PNil (\lambda (e: PList).(match e return 
3708 (\lambda (_: PList).Prop) with [PNil \Rightarrow True | (PCons _ _ _) 
3709 \Rightarrow False])) I (PCons n n0 p) H2) in (False_ind ((eq C c c1) \to ((eq 
3710 C c c2) \to (drop1 (PCons n n0 (PConsTail p h d)) c1 c3))) H5)) H3 H4)))) | 
3711 (drop1_cons c0 c4 h0 d0 H2 c5 hds H3) \Rightarrow (\lambda (H4: (eq PList 
3712 (PCons h0 d0 hds) (PCons n n0 p))).(\lambda (H5: (eq C c0 c1)).(\lambda (H6: 
3713 (eq C c5 c2)).((let H7 \def (f_equal PList PList (\lambda (e: PList).(match e 
3714 return (\lambda (_: PList).PList) with [PNil \Rightarrow hds | (PCons _ _ p) 
3715 \Rightarrow p])) (PCons h0 d0 hds) (PCons n n0 p) H4) in ((let H8 \def 
3716 (f_equal PList nat (\lambda (e: PList).(match e return (\lambda (_: 
3717 PList).nat) with [PNil \Rightarrow d0 | (PCons _ n _) \Rightarrow n])) (PCons 
3718 h0 d0 hds) (PCons n n0 p) H4) in ((let H9 \def (f_equal PList nat (\lambda 
3719 (e: PList).(match e return (\lambda (_: PList).nat) with [PNil \Rightarrow h0 
3720 | (PCons n _ _) \Rightarrow n])) (PCons h0 d0 hds) (PCons n n0 p) H4) in 
3721 (eq_ind nat n (\lambda (n1: nat).((eq nat d0 n0) \to ((eq PList hds p) \to 
3722 ((eq C c0 c1) \to ((eq C c5 c2) \to ((drop n1 d0 c0 c4) \to ((drop1 hds c4 
3723 c5) \to (drop1 (PCons n n0 (PConsTail p h d)) c1 c3)))))))) (\lambda (H10: 
3724 (eq nat d0 n0)).(eq_ind nat n0 (\lambda (n1: nat).((eq PList hds p) \to ((eq 
3725 C c0 c1) \to ((eq C c5 c2) \to ((drop n n1 c0 c4) \to ((drop1 hds c4 c5) \to 
3726 (drop1 (PCons n n0 (PConsTail p h d)) c1 c3))))))) (\lambda (H11: (eq PList 
3727 hds p)).(eq_ind PList p (\lambda (p0: PList).((eq C c0 c1) \to ((eq C c5 c2) 
3728 \to ((drop n n0 c0 c4) \to ((drop1 p0 c4 c5) \to (drop1 (PCons n n0 
3729 (PConsTail p h d)) c1 c3)))))) (\lambda (H12: (eq C c0 c1)).(eq_ind C c1 
3730 (\lambda (c: C).((eq C c5 c2) \to ((drop n n0 c c4) \to ((drop1 p c4 c5) \to 
3731 (drop1 (PCons n n0 (PConsTail p h d)) c1 c3))))) (\lambda (H13: (eq C c5 
3732 c2)).(eq_ind C c2 (\lambda (c: C).((drop n n0 c1 c4) \to ((drop1 p c4 c) \to 
3733 (drop1 (PCons n n0 (PConsTail p h d)) c1 c3)))) (\lambda (H14: (drop n n0 c1 
3734 c4)).(\lambda (H15: (drop1 p c4 c2)).(drop1_cons c1 c4 n n0 H14 c3 (PConsTail 
3735 p h d) (H0 c4 H15)))) c5 (sym_eq C c5 c2 H13))) c0 (sym_eq C c0 c1 H12))) hds 
3736 (sym_eq PList hds p H11))) d0 (sym_eq nat d0 n0 H10))) h0 (sym_eq nat h0 n 
3737 H9))) H8)) H7)) H5 H6 H2 H3))))]) in (H2 (refl_equal PList (PCons n n0 p)) 
3738 (refl_equal C c1) (refl_equal C c2))))))))) hds)))))).
3739
3740 theorem lift1_free:
3741  \forall (hds: PList).(\forall (i: nat).(\forall (t: T).(eq T (lift1 hds 
3742 (lift (S i) O t)) (lift (S (trans hds i)) O (ctrans hds i t)))))
3743 \def
3744  \lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall (i: 
3745 nat).(\forall (t: T).(eq T (lift1 p (lift (S i) O t)) (lift (S (trans p i)) O 
3746 (ctrans p i t)))))) (\lambda (i: nat).(\lambda (t: T).(refl_equal T (lift (S 
3747 i) O t)))) (\lambda (h: nat).(\lambda (d: nat).(\lambda (hds0: 
3748 PList).(\lambda (H: ((\forall (i: nat).(\forall (t: T).(eq T (lift1 hds0 
3749 (lift (S i) O t)) (lift (S (trans hds0 i)) O (ctrans hds0 i t))))))).(\lambda 
3750 (i: nat).(\lambda (t: T).(eq_ind_r T (lift (S (trans hds0 i)) O (ctrans hds0 
3751 i t)) (\lambda (t0: T).(eq T (lift h d t0) (lift (S (match (blt (trans hds0 
3752 i) d) with [true \Rightarrow (trans hds0 i) | false \Rightarrow (plus (trans 
3753 hds0 i) h)])) O (match (blt (trans hds0 i) d) with [true \Rightarrow (lift h 
3754 (minus d (S (trans hds0 i))) (ctrans hds0 i t)) | false \Rightarrow (ctrans 
3755 hds0 i t)])))) (xinduction bool (blt (trans hds0 i) d) (\lambda (b: bool).(eq 
3756 T (lift h d (lift (S (trans hds0 i)) O (ctrans hds0 i t))) (lift (S (match b 
3757 with [true \Rightarrow (trans hds0 i) | false \Rightarrow (plus (trans hds0 
3758 i) h)])) O (match b with [true \Rightarrow (lift h (minus d (S (trans hds0 
3759 i))) (ctrans hds0 i t)) | false \Rightarrow (ctrans hds0 i t)])))) (\lambda 
3760 (x_x: bool).(bool_ind (\lambda (b: bool).((eq bool (blt (trans hds0 i) d) b) 
3761 \to (eq T (lift h d (lift (S (trans hds0 i)) O (ctrans hds0 i t))) (lift (S 
3762 (match b with [true \Rightarrow (trans hds0 i) | false \Rightarrow (plus 
3763 (trans hds0 i) h)])) O (match b with [true \Rightarrow (lift h (minus d (S 
3764 (trans hds0 i))) (ctrans hds0 i t)) | false \Rightarrow (ctrans hds0 i 
3765 t)]))))) (\lambda (H0: (eq bool (blt (trans hds0 i) d) true)).(eq_ind_r nat 
3766 (plus (S (trans hds0 i)) (minus d (S (trans hds0 i)))) (\lambda (n: nat).(eq 
3767 T (lift h n (lift (S (trans hds0 i)) O (ctrans hds0 i t))) (lift (S (trans 
3768 hds0 i)) O (lift h (minus d (S (trans hds0 i))) (ctrans hds0 i t))))) 
3769 (eq_ind_r T (lift (S (trans hds0 i)) O (lift h (minus d (S (trans hds0 i))) 
3770 (ctrans hds0 i t))) (\lambda (t0: T).(eq T t0 (lift (S (trans hds0 i)) O 
3771 (lift h (minus d (S (trans hds0 i))) (ctrans hds0 i t))))) (refl_equal T 
3772 (lift (S (trans hds0 i)) O (lift h (minus d (S (trans hds0 i))) (ctrans hds0 
3773 i t)))) (lift h (plus (S (trans hds0 i)) (minus d (S (trans hds0 i)))) (lift 
3774 (S (trans hds0 i)) O (ctrans hds0 i t))) (lift_d (ctrans hds0 i t) h (S 
3775 (trans hds0 i)) (minus d (S (trans hds0 i))) O (le_O_n (minus d (S (trans 
3776 hds0 i)))))) d (le_plus_minus (S (trans hds0 i)) d (bge_le (S (trans hds0 i)) 
3777 d (le_bge (S (trans hds0 i)) d (lt_le_S (trans hds0 i) d (blt_lt d (trans 
3778 hds0 i) H0))))))) (\lambda (H0: (eq bool (blt (trans hds0 i) d) 
3779 false)).(eq_ind_r T (lift (plus h (S (trans hds0 i))) O (ctrans hds0 i t)) 
3780 (\lambda (t0: T).(eq T t0 (lift (S (plus (trans hds0 i) h)) O (ctrans hds0 i 
3781 t)))) (eq_ind nat (S (plus h (trans hds0 i))) (\lambda (n: nat).(eq T (lift n 
3782 O (ctrans hds0 i t)) (lift (S (plus (trans hds0 i) h)) O (ctrans hds0 i t)))) 
3783 (eq_ind_r nat (plus (trans hds0 i) h) (\lambda (n: nat).(eq T (lift (S n) O 
3784 (ctrans hds0 i t)) (lift (S (plus (trans hds0 i) h)) O (ctrans hds0 i t)))) 
3785 (refl_equal T (lift (S (plus (trans hds0 i) h)) O (ctrans hds0 i t))) (plus h 
3786 (trans hds0 i)) (plus_comm h (trans hds0 i))) (plus h (S (trans hds0 i))) 
3787 (plus_n_Sm h (trans hds0 i))) (lift h d (lift (S (trans hds0 i)) O (ctrans 
3788 hds0 i t))) (lift_free (ctrans hds0 i t) (S (trans hds0 i)) h O d (eq_ind nat 
3789 (S (plus O (trans hds0 i))) (\lambda (n: nat).(le d n)) (eq_ind_r nat (plus 
3790 (trans hds0 i) O) (\lambda (n: nat).(le d (S n))) (le_S d (plus (trans hds0 
3791 i) O) (le_plus_trans d (trans hds0 i) O (bge_le d (trans hds0 i) H0))) (plus 
3792 O (trans hds0 i)) (plus_comm O (trans hds0 i))) (plus O (S (trans hds0 i))) 
3793 (plus_n_Sm O (trans hds0 i))) (le_O_n d)))) x_x))) (lift1 hds0 (lift (S i) O 
3794 t)) (H i t)))))))) hds).
3795
3796 inductive clear: C \to (C \to Prop) \def
3797 | clear_bind: \forall (b: B).(\forall (e: C).(\forall (u: T).(clear (CHead e 
3798 (Bind b) u) (CHead e (Bind b) u))))
3799 | clear_flat: \forall (e: C).(\forall (c: C).((clear e c) \to (\forall (f: 
3800 F).(\forall (u: T).(clear (CHead e (Flat f) u) c))))).
3801
3802 inductive getl (h:nat) (c1:C) (c2:C): Prop \def
3803 | getl_intro: \forall (e: C).((drop h O c1 e) \to ((clear e c2) \to (getl h 
3804 c1 c2))).
3805
3806 definition cimp:
3807  C \to (C \to Prop)
3808 \def
3809  \lambda (c1: C).(\lambda (c2: C).(\forall (b: B).(\forall (d1: C).(\forall 
3810 (w: T).(\forall (h: nat).((getl h c1 (CHead d1 (Bind b) w)) \to (ex C 
3811 (\lambda (d2: C).(getl h c2 (CHead d2 (Bind b) w)))))))))).
3812
3813 theorem clear_gen_sort:
3814  \forall (x: C).(\forall (n: nat).((clear (CSort n) x) \to (\forall (P: 
3815 Prop).P)))
3816 \def
3817  \lambda (x: C).(\lambda (n: nat).(\lambda (H: (clear (CSort n) x)).(\lambda 
3818 (P: Prop).(let H0 \def (match H return (\lambda (c: C).(\lambda (c0: 
3819 C).(\lambda (_: (clear c c0)).((eq C c (CSort n)) \to ((eq C c0 x) \to P))))) 
3820 with [(clear_bind b e u) \Rightarrow (\lambda (H0: (eq C (CHead e (Bind b) u) 
3821 (CSort n))).(\lambda (H1: (eq C (CHead e (Bind b) u) x)).((let H2 \def 
3822 (eq_ind C (CHead e (Bind b) u) (\lambda (e0: C).(match e0 return (\lambda (_: 
3823 C).Prop) with [(CSort _) \Rightarrow False | (CHead _ _ _) \Rightarrow 
3824 True])) I (CSort n) H0) in (False_ind ((eq C (CHead e (Bind b) u) x) \to P) 
3825 H2)) H1))) | (clear_flat e c H0 f u) \Rightarrow (\lambda (H1: (eq C (CHead e 
3826 (Flat f) u) (CSort n))).(\lambda (H2: (eq C c x)).((let H3 \def (eq_ind C 
3827 (CHead e (Flat f) u) (\lambda (e0: C).(match e0 return (\lambda (_: C).Prop) 
3828 with [(CSort _) \Rightarrow False | (CHead _ _ _) \Rightarrow True])) I 
3829 (CSort n) H1) in (False_ind ((eq C c x) \to ((clear e c) \to P)) H3)) H2 
3830 H0)))]) in (H0 (refl_equal C (CSort n)) (refl_equal C x)))))).
3831
3832 theorem clear_gen_bind:
3833  \forall (b: B).(\forall (e: C).(\forall (x: C).(\forall (u: T).((clear 
3834 (CHead e (Bind b) u) x) \to (eq C x (CHead e (Bind b) u))))))
3835 \def
3836  \lambda (b: B).(\lambda (e: C).(\lambda (x: C).(\lambda (u: T).(\lambda (H: 
3837 (clear (CHead e (Bind b) u) x)).(let H0 \def (match H return (\lambda (c: 
3838 C).(\lambda (c0: C).(\lambda (_: (clear c c0)).((eq C c (CHead e (Bind b) u)) 
3839 \to ((eq C c0 x) \to (eq C x (CHead e (Bind b) u))))))) with [(clear_bind b0 
3840 e0 u0) \Rightarrow (\lambda (H0: (eq C (CHead e0 (Bind b0) u0) (CHead e (Bind 
3841 b) u))).(\lambda (H1: (eq C (CHead e0 (Bind b0) u0) x)).((let H2 \def 
3842 (f_equal C T (\lambda (e1: C).(match e1 return (\lambda (_: C).T) with 
3843 [(CSort _) \Rightarrow u0 | (CHead _ _ t) \Rightarrow t])) (CHead e0 (Bind 
3844 b0) u0) (CHead e (Bind b) u) H0) in ((let H3 \def (f_equal C B (\lambda (e1: 
3845 C).(match e1 return (\lambda (_: C).B) with [(CSort _) \Rightarrow b0 | 
3846 (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
3847 \Rightarrow b | (Flat _) \Rightarrow b0])])) (CHead e0 (Bind b0) u0) (CHead e 
3848 (Bind b) u) H0) in ((let H4 \def (f_equal C C (\lambda (e1: C).(match e1 
3849 return (\lambda (_: C).C) with [(CSort _) \Rightarrow e0 | (CHead c _ _) 
3850 \Rightarrow c])) (CHead e0 (Bind b0) u0) (CHead e (Bind b) u) H0) in (eq_ind 
3851 C e (\lambda (c: C).((eq B b0 b) \to ((eq T u0 u) \to ((eq C (CHead c (Bind 
3852 b0) u0) x) \to (eq C x (CHead e (Bind b) u)))))) (\lambda (H5: (eq B b0 
3853 b)).(eq_ind B b (\lambda (b1: B).((eq T u0 u) \to ((eq C (CHead e (Bind b1) 
3854 u0) x) \to (eq C x (CHead e (Bind b) u))))) (\lambda (H6: (eq T u0 
3855 u)).(eq_ind T u (\lambda (t: T).((eq C (CHead e (Bind b) t) x) \to (eq C x 
3856 (CHead e (Bind b) u)))) (\lambda (H7: (eq C (CHead e (Bind b) u) x)).(eq_ind 
3857 C (CHead e (Bind b) u) (\lambda (c: C).(eq C c (CHead e (Bind b) u))) 
3858 (refl_equal C (CHead e (Bind b) u)) x H7)) u0 (sym_eq T u0 u H6))) b0 (sym_eq 
3859 B b0 b H5))) e0 (sym_eq C e0 e H4))) H3)) H2)) H1))) | (clear_flat e0 c H0 f 
3860 u0) \Rightarrow (\lambda (H1: (eq C (CHead e0 (Flat f) u0) (CHead e (Bind b) 
3861 u))).(\lambda (H2: (eq C c x)).((let H3 \def (eq_ind C (CHead e0 (Flat f) u0) 
3862 (\lambda (e1: C).(match e1 return (\lambda (_: C).Prop) with [(CSort _) 
3863 \Rightarrow False | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
3864 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
3865 (CHead e (Bind b) u) H1) in (False_ind ((eq C c x) \to ((clear e0 c) \to (eq 
3866 C x (CHead e (Bind b) u)))) H3)) H2 H0)))]) in (H0 (refl_equal C (CHead e 
3867 (Bind b) u)) (refl_equal C x))))))).
3868
3869 theorem clear_gen_flat:
3870  \forall (f: F).(\forall (e: C).(\forall (x: C).(\forall (u: T).((clear 
3871 (CHead e (Flat f) u) x) \to (clear e x)))))
3872 \def
3873  \lambda (f: F).(\lambda (e: C).(\lambda (x: C).(\lambda (u: T).(\lambda (H: 
3874 (clear (CHead e (Flat f) u) x)).(let H0 \def (match H return (\lambda (c: 
3875 C).(\lambda (c0: C).(\lambda (_: (clear c c0)).((eq C c (CHead e (Flat f) u)) 
3876 \to ((eq C c0 x) \to (clear e x)))))) with [(clear_bind b e0 u0) \Rightarrow 
3877 (\lambda (H0: (eq C (CHead e0 (Bind b) u0) (CHead e (Flat f) u))).(\lambda 
3878 (H1: (eq C (CHead e0 (Bind b) u0) x)).((let H2 \def (eq_ind C (CHead e0 (Bind 
3879 b) u0) (\lambda (e1: C).(match e1 return (\lambda (_: C).Prop) with [(CSort 
3880 _) \Rightarrow False | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
3881 K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I 
3882 (CHead e (Flat f) u) H0) in (False_ind ((eq C (CHead e0 (Bind b) u0) x) \to 
3883 (clear e x)) H2)) H1))) | (clear_flat e0 c H0 f0 u0) \Rightarrow (\lambda 
3884 (H1: (eq C (CHead e0 (Flat f0) u0) (CHead e (Flat f) u))).(\lambda (H2: (eq C 
3885 c x)).((let H3 \def (f_equal C T (\lambda (e1: C).(match e1 return (\lambda 
3886 (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) \Rightarrow t])) 
3887 (CHead e0 (Flat f0) u0) (CHead e (Flat f) u) H1) in ((let H4 \def (f_equal C 
3888 F (\lambda (e1: C).(match e1 return (\lambda (_: C).F) with [(CSort _) 
3889 \Rightarrow f0 | (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).F) 
3890 with [(Bind _) \Rightarrow f0 | (Flat f) \Rightarrow f])])) (CHead e0 (Flat 
3891 f0) u0) (CHead e (Flat f) u) H1) in ((let H5 \def (f_equal C C (\lambda (e1: 
3892 C).(match e1 return (\lambda (_: C).C) with [(CSort _) \Rightarrow e0 | 
3893 (CHead c _ _) \Rightarrow c])) (CHead e0 (Flat f0) u0) (CHead e (Flat f) u) 
3894 H1) in (eq_ind C e (\lambda (c0: C).((eq F f0 f) \to ((eq T u0 u) \to ((eq C 
3895 c x) \to ((clear c0 c) \to (clear e x)))))) (\lambda (H6: (eq F f0 
3896 f)).(eq_ind F f (\lambda (_: F).((eq T u0 u) \to ((eq C c x) \to ((clear e c) 
3897 \to (clear e x))))) (\lambda (H7: (eq T u0 u)).(eq_ind T u (\lambda (_: 
3898 T).((eq C c x) \to ((clear e c) \to (clear e x)))) (\lambda (H8: (eq C c 
3899 x)).(eq_ind C x (\lambda (c0: C).((clear e c0) \to (clear e x))) (\lambda 
3900 (H9: (clear e x)).H9) c (sym_eq C c x H8))) u0 (sym_eq T u0 u H7))) f0 
3901 (sym_eq F f0 f H6))) e0 (sym_eq C e0 e H5))) H4)) H3)) H2 H0)))]) in (H0 
3902 (refl_equal C (CHead e (Flat f) u)) (refl_equal C x))))))).
3903
3904 theorem clear_gen_flat_r:
3905  \forall (f: F).(\forall (x: C).(\forall (e: C).(\forall (u: T).((clear x 
3906 (CHead e (Flat f) u)) \to (\forall (P: Prop).P)))))
3907 \def
3908  \lambda (f: F).(\lambda (x: C).(\lambda (e: C).(\lambda (u: T).(\lambda (H: 
3909 (clear x (CHead e (Flat f) u))).(\lambda (P: Prop).(insert_eq C (CHead e 
3910 (Flat f) u) (\lambda (c: C).(clear x c)) P (\lambda (y: C).(\lambda (H0: 
3911 (clear x y)).(clear_ind (\lambda (_: C).(\lambda (c0: C).((eq C c0 (CHead e 
3912 (Flat f) u)) \to P))) (\lambda (b: B).(\lambda (e0: C).(\lambda (u0: 
3913 T).(\lambda (H1: (eq C (CHead e0 (Bind b) u0) (CHead e (Flat f) u))).(let H2 
3914 \def (eq_ind C (CHead e0 (Bind b) u0) (\lambda (ee: C).(match ee return 
3915 (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) 
3916 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
3917 True | (Flat _) \Rightarrow False])])) I (CHead e (Flat f) u) H1) in 
3918 (False_ind P H2)))))) (\lambda (e0: C).(\lambda (c: C).(\lambda (H1: (clear 
3919 e0 c)).(\lambda (H2: (((eq C c (CHead e (Flat f) u)) \to P))).(\lambda (_: 
3920 F).(\lambda (_: T).(\lambda (H3: (eq C c (CHead e (Flat f) u))).(let H4 \def 
3921 (eq_ind C c (\lambda (c: C).((eq C c (CHead e (Flat f) u)) \to P)) H2 (CHead 
3922 e (Flat f) u) H3) in (let H5 \def (eq_ind C c (\lambda (c: C).(clear e0 c)) 
3923 H1 (CHead e (Flat f) u) H3) in (H4 (refl_equal C (CHead e (Flat f) 
3924 u)))))))))))) x y H0))) H)))))).
3925
3926 theorem clear_gen_all:
3927  \forall (c1: C).(\forall (c2: C).((clear c1 c2) \to (ex_3 B C T (\lambda (b: 
3928 B).(\lambda (e: C).(\lambda (u: T).(eq C c2 (CHead e (Bind b) u))))))))
3929 \def
3930  \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (clear c1 c2)).(clear_ind 
3931 (\lambda (_: C).(\lambda (c0: C).(ex_3 B C T (\lambda (b: B).(\lambda (e: 
3932 C).(\lambda (u: T).(eq C c0 (CHead e (Bind b) u)))))))) (\lambda (b: 
3933 B).(\lambda (e: C).(\lambda (u: T).(ex_3_intro B C T (\lambda (b0: 
3934 B).(\lambda (e0: C).(\lambda (u0: T).(eq C (CHead e (Bind b) u) (CHead e0 
3935 (Bind b0) u0))))) b e u (refl_equal C (CHead e (Bind b) u)))))) (\lambda (e: 
3936 C).(\lambda (c: C).(\lambda (H0: (clear e c)).(\lambda (H1: (ex_3 B C T 
3937 (\lambda (b: B).(\lambda (e: C).(\lambda (u: T).(eq C c (CHead e (Bind b) 
3938 u))))))).(\lambda (_: F).(\lambda (_: T).(let H2 \def H1 in (ex_3_ind B C T 
3939 (\lambda (b: B).(\lambda (e0: C).(\lambda (u0: T).(eq C c (CHead e0 (Bind b) 
3940 u0))))) (ex_3 B C T (\lambda (b: B).(\lambda (e0: C).(\lambda (u0: T).(eq C c 
3941 (CHead e0 (Bind b) u0)))))) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: 
3942 T).(\lambda (H3: (eq C c (CHead x1 (Bind x0) x2))).(let H4 \def (eq_ind C c 
3943 (\lambda (c: C).(clear e c)) H0 (CHead x1 (Bind x0) x2) H3) in (eq_ind_r C 
3944 (CHead x1 (Bind x0) x2) (\lambda (c0: C).(ex_3 B C T (\lambda (b: B).(\lambda 
3945 (e0: C).(\lambda (u0: T).(eq C c0 (CHead e0 (Bind b) u0))))))) (ex_3_intro B 
3946 C T (\lambda (b: B).(\lambda (e0: C).(\lambda (u0: T).(eq C (CHead x1 (Bind 
3947 x0) x2) (CHead e0 (Bind b) u0))))) x0 x1 x2 (refl_equal C (CHead x1 (Bind x0) 
3948 x2))) c H3)))))) H2)))))))) c1 c2 H))).
3949
3950 theorem drop_clear:
3951  \forall (c1: C).(\forall (c2: C).(\forall (i: nat).((drop (S i) O c1 c2) \to 
3952 (ex2_3 B C T (\lambda (b: B).(\lambda (e: C).(\lambda (v: T).(clear c1 (CHead 
3953 e (Bind b) v))))) (\lambda (_: B).(\lambda (e: C).(\lambda (_: T).(drop i O e 
3954 c2))))))))
3955 \def
3956  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).(\forall (i: 
3957 nat).((drop (S i) O c c2) \to (ex2_3 B C T (\lambda (b: B).(\lambda (e: 
3958 C).(\lambda (v: T).(clear c (CHead e (Bind b) v))))) (\lambda (_: B).(\lambda 
3959 (e: C).(\lambda (_: T).(drop i O e c2))))))))) (\lambda (n: nat).(\lambda 
3960 (c2: C).(\lambda (i: nat).(\lambda (H: (drop (S i) O (CSort n) c2)).(and3_ind 
3961 (eq C c2 (CSort n)) (eq nat (S i) O) (eq nat O O) (ex2_3 B C T (\lambda (b: 
3962 B).(\lambda (e: C).(\lambda (v: T).(clear (CSort n) (CHead e (Bind b) v))))) 
3963 (\lambda (_: B).(\lambda (e: C).(\lambda (_: T).(drop i O e c2))))) (\lambda 
3964 (_: (eq C c2 (CSort n))).(\lambda (H1: (eq nat (S i) O)).(\lambda (_: (eq nat 
3965 O O)).(let H3 \def (eq_ind nat (S i) (\lambda (ee: nat).(match ee return 
3966 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
3967 I O H1) in (False_ind (ex2_3 B C T (\lambda (b: B).(\lambda (e: C).(\lambda 
3968 (v: T).(clear (CSort n) (CHead e (Bind b) v))))) (\lambda (_: B).(\lambda (e: 
3969 C).(\lambda (_: T).(drop i O e c2))))) H3))))) (drop_gen_sort n (S i) O c2 
3970 H)))))) (\lambda (c: C).(\lambda (H: ((\forall (c2: C).(\forall (i: 
3971 nat).((drop (S i) O c c2) \to (ex2_3 B C T (\lambda (b: B).(\lambda (e: 
3972 C).(\lambda (v: T).(clear c (CHead e (Bind b) v))))) (\lambda (_: B).(\lambda 
3973 (e: C).(\lambda (_: T).(drop i O e c2)))))))))).(\lambda (k: K).(\lambda (t: 
3974 T).(\lambda (c2: C).(\lambda (i: nat).(\lambda (H0: (drop (S i) O (CHead c k 
3975 t) c2)).((match k return (\lambda (k0: K).((drop (r k0 i) O c c2) \to (ex2_3 
3976 B C T (\lambda (b: B).(\lambda (e: C).(\lambda (v: T).(clear (CHead c k0 t) 
3977 (CHead e (Bind b) v))))) (\lambda (_: B).(\lambda (e: C).(\lambda (_: 
3978 T).(drop i O e c2))))))) with [(Bind b) \Rightarrow (\lambda (H1: (drop (r 
3979 (Bind b) i) O c c2)).(ex2_3_intro B C T (\lambda (b0: B).(\lambda (e: 
3980 C).(\lambda (v: T).(clear (CHead c (Bind b) t) (CHead e (Bind b0) v))))) 
3981 (\lambda (_: B).(\lambda (e: C).(\lambda (_: T).(drop i O e c2)))) b c t 
3982 (clear_bind b c t) H1)) | (Flat f) \Rightarrow (\lambda (H1: (drop (r (Flat 
3983 f) i) O c c2)).(let H2 \def (H c2 i H1) in (ex2_3_ind B C T (\lambda (b: 
3984 B).(\lambda (e: C).(\lambda (v: T).(clear c (CHead e (Bind b) v))))) (\lambda 
3985 (_: B).(\lambda (e: C).(\lambda (_: T).(drop i O e c2)))) (ex2_3 B C T 
3986 (\lambda (b: B).(\lambda (e: C).(\lambda (v: T).(clear (CHead c (Flat f) t) 
3987 (CHead e (Bind b) v))))) (\lambda (_: B).(\lambda (e: C).(\lambda (_: 
3988 T).(drop i O e c2))))) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: 
3989 T).(\lambda (H3: (clear c (CHead x1 (Bind x0) x2))).(\lambda (H4: (drop i O 
3990 x1 c2)).(ex2_3_intro B C T (\lambda (b: B).(\lambda (e: C).(\lambda (v: 
3991 T).(clear (CHead c (Flat f) t) (CHead e (Bind b) v))))) (\lambda (_: 
3992 B).(\lambda (e: C).(\lambda (_: T).(drop i O e c2)))) x0 x1 x2 (clear_flat c 
3993 (CHead x1 (Bind x0) x2) H3 f t) H4)))))) H2)))]) (drop_gen_drop k c c2 t i 
3994 H0))))))))) c1).
3995
3996 theorem drop_clear_O:
3997  \forall (b: B).(\forall (c: C).(\forall (e1: C).(\forall (u: T).((clear c 
3998 (CHead e1 (Bind b) u)) \to (\forall (e2: C).(\forall (i: nat).((drop i O e1 
3999 e2) \to (drop (S i) O c e2))))))))
4000 \def
4001  \lambda (b: B).(\lambda (c: C).(C_ind (\lambda (c0: C).(\forall (e1: 
4002 C).(\forall (u: T).((clear c0 (CHead e1 (Bind b) u)) \to (\forall (e2: 
4003 C).(\forall (i: nat).((drop i O e1 e2) \to (drop (S i) O c0 e2)))))))) 
4004 (\lambda (n: nat).(\lambda (e1: C).(\lambda (u: T).(\lambda (H: (clear (CSort 
4005 n) (CHead e1 (Bind b) u))).(\lambda (e2: C).(\lambda (i: nat).(\lambda (_: 
4006 (drop i O e1 e2)).(clear_gen_sort (CHead e1 (Bind b) u) n H (drop (S i) O 
4007 (CSort n) e2))))))))) (\lambda (c0: C).(\lambda (H: ((\forall (e1: 
4008 C).(\forall (u: T).((clear c0 (CHead e1 (Bind b) u)) \to (\forall (e2: 
4009 C).(\forall (i: nat).((drop i O e1 e2) \to (drop (S i) O c0 
4010 e2))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (e1: C).(\lambda (u: 
4011 T).(\lambda (H0: (clear (CHead c0 k t) (CHead e1 (Bind b) u))).(\lambda (e2: 
4012 C).(\lambda (i: nat).(\lambda (H1: (drop i O e1 e2)).((match k return 
4013 (\lambda (k0: K).((clear (CHead c0 k0 t) (CHead e1 (Bind b) u)) \to (drop (S 
4014 i) O (CHead c0 k0 t) e2))) with [(Bind b0) \Rightarrow (\lambda (H2: (clear 
4015 (CHead c0 (Bind b0) t) (CHead e1 (Bind b) u))).(let H3 \def (f_equal C C 
4016 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
4017 \Rightarrow e1 | (CHead c _ _) \Rightarrow c])) (CHead e1 (Bind b) u) (CHead 
4018 c0 (Bind b0) t) (clear_gen_bind b0 c0 (CHead e1 (Bind b) u) t H2)) in ((let 
4019 H4 \def (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) with 
4020 [(CSort _) \Rightarrow b | (CHead _ k _) \Rightarrow (match k return (\lambda 
4021 (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b])])) (CHead 
4022 e1 (Bind b) u) (CHead c0 (Bind b0) t) (clear_gen_bind b0 c0 (CHead e1 (Bind 
4023 b) u) t H2)) in ((let H5 \def (f_equal C T (\lambda (e: C).(match e return 
4024 (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow 
4025 t])) (CHead e1 (Bind b) u) (CHead c0 (Bind b0) t) (clear_gen_bind b0 c0 
4026 (CHead e1 (Bind b) u) t H2)) in (\lambda (H6: (eq B b b0)).(\lambda (H7: (eq 
4027 C e1 c0)).(let H8 \def (eq_ind C e1 (\lambda (c: C).(drop i O c e2)) H1 c0 
4028 H7) in (eq_ind B b (\lambda (b1: B).(drop (S i) O (CHead c0 (Bind b1) t) e2)) 
4029 (drop_drop (Bind b) i c0 e2 H8 t) b0 H6))))) H4)) H3))) | (Flat f) 
4030 \Rightarrow (\lambda (H2: (clear (CHead c0 (Flat f) t) (CHead e1 (Bind b) 
4031 u))).(drop_drop (Flat f) i c0 e2 (H e1 u (clear_gen_flat f c0 (CHead e1 (Bind 
4032 b) u) t H2) e2 i H1) t))]) H0))))))))))) c)).
4033
4034 theorem drop_clear_S:
4035  \forall (x2: C).(\forall (x1: C).(\forall (h: nat).(\forall (d: nat).((drop 
4036 h (S d) x1 x2) \to (\forall (b: B).(\forall (c2: C).(\forall (u: T).((clear 
4037 x2 (CHead c2 (Bind b) u)) \to (ex2 C (\lambda (c1: C).(clear x1 (CHead c1 
4038 (Bind b) (lift h d u)))) (\lambda (c1: C).(drop h d c1 c2)))))))))))
4039 \def
4040  \lambda (x2: C).(C_ind (\lambda (c: C).(\forall (x1: C).(\forall (h: 
4041 nat).(\forall (d: nat).((drop h (S d) x1 c) \to (\forall (b: B).(\forall (c2: 
4042 C).(\forall (u: T).((clear c (CHead c2 (Bind b) u)) \to (ex2 C (\lambda (c1: 
4043 C).(clear x1 (CHead c1 (Bind b) (lift h d u)))) (\lambda (c1: C).(drop h d c1 
4044 c2)))))))))))) (\lambda (n: nat).(\lambda (x1: C).(\lambda (h: nat).(\lambda 
4045 (d: nat).(\lambda (_: (drop h (S d) x1 (CSort n))).(\lambda (b: B).(\lambda 
4046 (c2: C).(\lambda (u: T).(\lambda (H0: (clear (CSort n) (CHead c2 (Bind b) 
4047 u))).(clear_gen_sort (CHead c2 (Bind b) u) n H0 (ex2 C (\lambda (c1: 
4048 C).(clear x1 (CHead c1 (Bind b) (lift h d u)))) (\lambda (c1: C).(drop h d c1 
4049 c2))))))))))))) (\lambda (c: C).(\lambda (H: ((\forall (x1: C).(\forall (h: 
4050 nat).(\forall (d: nat).((drop h (S d) x1 c) \to (\forall (b: B).(\forall (c2: 
4051 C).(\forall (u: T).((clear c (CHead c2 (Bind b) u)) \to (ex2 C (\lambda (c1: 
4052 C).(clear x1 (CHead c1 (Bind b) (lift h d u)))) (\lambda (c1: C).(drop h d c1 
4053 c2))))))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (x1: C).(\lambda (h: 
4054 nat).(\lambda (d: nat).(\lambda (H0: (drop h (S d) x1 (CHead c k 
4055 t))).(\lambda (b: B).(\lambda (c2: C).(\lambda (u: T).(\lambda (H1: (clear 
4056 (CHead c k t) (CHead c2 (Bind b) u))).(ex2_ind C (\lambda (e: C).(eq C x1 
4057 (CHead e k (lift h (r k d) t)))) (\lambda (e: C).(drop h (r k d) e c)) (ex2 C 
4058 (\lambda (c1: C).(clear x1 (CHead c1 (Bind b) (lift h d u)))) (\lambda (c1: 
4059 C).(drop h d c1 c2))) (\lambda (x: C).(\lambda (H2: (eq C x1 (CHead x k (lift 
4060 h (r k d) t)))).(\lambda (H3: (drop h (r k d) x c)).(eq_ind_r C (CHead x k 
4061 (lift h (r k d) t)) (\lambda (c0: C).(ex2 C (\lambda (c1: C).(clear c0 (CHead 
4062 c1 (Bind b) (lift h d u)))) (\lambda (c1: C).(drop h d c1 c2)))) ((match k 
4063 return (\lambda (k0: K).((clear (CHead c k0 t) (CHead c2 (Bind b) u)) \to 
4064 ((drop h (r k0 d) x c) \to (ex2 C (\lambda (c1: C).(clear (CHead x k0 (lift h 
4065 (r k0 d) t)) (CHead c1 (Bind b) (lift h d u)))) (\lambda (c1: C).(drop h d c1 
4066 c2)))))) with [(Bind b0) \Rightarrow (\lambda (H4: (clear (CHead c (Bind b0) 
4067 t) (CHead c2 (Bind b) u))).(\lambda (H5: (drop h (r (Bind b0) d) x c)).(let 
4068 H6 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with 
4069 [(CSort _) \Rightarrow c2 | (CHead c _ _) \Rightarrow c])) (CHead c2 (Bind b) 
4070 u) (CHead c (Bind b0) t) (clear_gen_bind b0 c (CHead c2 (Bind b) u) t H4)) in 
4071 ((let H7 \def (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) 
4072 with [(CSort _) \Rightarrow b | (CHead _ k _) \Rightarrow (match k return 
4073 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b])])) 
4074 (CHead c2 (Bind b) u) (CHead c (Bind b0) t) (clear_gen_bind b0 c (CHead c2 
4075 (Bind b) u) t H4)) in ((let H8 \def (f_equal C T (\lambda (e: C).(match e 
4076 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) 
4077 \Rightarrow t])) (CHead c2 (Bind b) u) (CHead c (Bind b0) t) (clear_gen_bind 
4078 b0 c (CHead c2 (Bind b) u) t H4)) in (\lambda (H9: (eq B b b0)).(\lambda 
4079 (H10: (eq C c2 c)).(eq_ind_r T t (\lambda (t0: T).(ex2 C (\lambda (c1: 
4080 C).(clear (CHead x (Bind b0) (lift h (r (Bind b0) d) t)) (CHead c1 (Bind b) 
4081 (lift h d t0)))) (\lambda (c1: C).(drop h d c1 c2)))) (eq_ind_r C c (\lambda 
4082 (c0: C).(ex2 C (\lambda (c1: C).(clear (CHead x (Bind b0) (lift h (r (Bind 
4083 b0) d) t)) (CHead c1 (Bind b) (lift h d t)))) (\lambda (c1: C).(drop h d c1 
4084 c0)))) (eq_ind_r B b0 (\lambda (b1: B).(ex2 C (\lambda (c1: C).(clear (CHead 
4085 x (Bind b0) (lift h (r (Bind b0) d) t)) (CHead c1 (Bind b1) (lift h d t)))) 
4086 (\lambda (c1: C).(drop h d c1 c)))) (ex_intro2 C (\lambda (c1: C).(clear 
4087 (CHead x (Bind b0) (lift h (r (Bind b0) d) t)) (CHead c1 (Bind b0) (lift h d 
4088 t)))) (\lambda (c1: C).(drop h d c1 c)) x (clear_bind b0 x (lift h d t)) H5) 
4089 b H9) c2 H10) u H8)))) H7)) H6)))) | (Flat f) \Rightarrow (\lambda (H4: 
4090 (clear (CHead c (Flat f) t) (CHead c2 (Bind b) u))).(\lambda (H5: (drop h (r 
4091 (Flat f) d) x c)).(let H6 \def (H x h d H5 b c2 u (clear_gen_flat f c (CHead 
4092 c2 (Bind b) u) t H4)) in (ex2_ind C (\lambda (c1: C).(clear x (CHead c1 (Bind 
4093 b) (lift h d u)))) (\lambda (c1: C).(drop h d c1 c2)) (ex2 C (\lambda (c1: 
4094 C).(clear (CHead x (Flat f) (lift h (r (Flat f) d) t)) (CHead c1 (Bind b) 
4095 (lift h d u)))) (\lambda (c1: C).(drop h d c1 c2))) (\lambda (x0: C).(\lambda 
4096 (H7: (clear x (CHead x0 (Bind b) (lift h d u)))).(\lambda (H8: (drop h d x0 
4097 c2)).(ex_intro2 C (\lambda (c1: C).(clear (CHead x (Flat f) (lift h (r (Flat 
4098 f) d) t)) (CHead c1 (Bind b) (lift h d u)))) (\lambda (c1: C).(drop h d c1 
4099 c2)) x0 (clear_flat x (CHead x0 (Bind b) (lift h d u)) H7 f (lift h (r (Flat 
4100 f) d) t)) H8)))) H6))))]) H1 H3) x1 H2)))) (drop_gen_skip_r c x1 t h d k 
4101 H0)))))))))))))) x2).
4102
4103 theorem clear_clear:
4104  \forall (c1: C).(\forall (c2: C).((clear c1 c2) \to (clear c2 c2)))
4105 \def
4106  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).((clear c c2) \to 
4107 (clear c2 c2)))) (\lambda (n: nat).(\lambda (c2: C).(\lambda (H: (clear 
4108 (CSort n) c2)).(clear_gen_sort c2 n H (clear c2 c2))))) (\lambda (c: 
4109 C).(\lambda (H: ((\forall (c2: C).((clear c c2) \to (clear c2 
4110 c2))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c2: C).(\lambda (H0: (clear 
4111 (CHead c k t) c2)).((match k return (\lambda (k0: K).((clear (CHead c k0 t) 
4112 c2) \to (clear c2 c2))) with [(Bind b) \Rightarrow (\lambda (H1: (clear 
4113 (CHead c (Bind b) t) c2)).(eq_ind_r C (CHead c (Bind b) t) (\lambda (c0: 
4114 C).(clear c0 c0)) (clear_bind b c t) c2 (clear_gen_bind b c c2 t H1))) | 
4115 (Flat f) \Rightarrow (\lambda (H1: (clear (CHead c (Flat f) t) c2)).(H c2 
4116 (clear_gen_flat f c c2 t H1)))]) H0))))))) c1).
4117
4118 theorem clear_mono:
4119  \forall (c: C).(\forall (c1: C).((clear c c1) \to (\forall (c2: C).((clear c 
4120 c2) \to (eq C c1 c2)))))
4121 \def
4122  \lambda (c: C).(C_ind (\lambda (c0: C).(\forall (c1: C).((clear c0 c1) \to 
4123 (\forall (c2: C).((clear c0 c2) \to (eq C c1 c2)))))) (\lambda (n: 
4124 nat).(\lambda (c1: C).(\lambda (_: (clear (CSort n) c1)).(\lambda (c2: 
4125 C).(\lambda (H0: (clear (CSort n) c2)).(clear_gen_sort c2 n H0 (eq C c1 
4126 c2))))))) (\lambda (c0: C).(\lambda (H: ((\forall (c1: C).((clear c0 c1) \to 
4127 (\forall (c2: C).((clear c0 c2) \to (eq C c1 c2))))))).(\lambda (k: 
4128 K).(\lambda (t: T).(\lambda (c1: C).(\lambda (H0: (clear (CHead c0 k t) 
4129 c1)).(\lambda (c2: C).(\lambda (H1: (clear (CHead c0 k t) c2)).((match k 
4130 return (\lambda (k0: K).((clear (CHead c0 k0 t) c1) \to ((clear (CHead c0 k0 
4131 t) c2) \to (eq C c1 c2)))) with [(Bind b) \Rightarrow (\lambda (H2: (clear 
4132 (CHead c0 (Bind b) t) c1)).(\lambda (H3: (clear (CHead c0 (Bind b) t) 
4133 c2)).(eq_ind_r C (CHead c0 (Bind b) t) (\lambda (c3: C).(eq C c1 c3)) 
4134 (eq_ind_r C (CHead c0 (Bind b) t) (\lambda (c3: C).(eq C c3 (CHead c0 (Bind 
4135 b) t))) (refl_equal C (CHead c0 (Bind b) t)) c1 (clear_gen_bind b c0 c1 t 
4136 H2)) c2 (clear_gen_bind b c0 c2 t H3)))) | (Flat f) \Rightarrow (\lambda (H2: 
4137 (clear (CHead c0 (Flat f) t) c1)).(\lambda (H3: (clear (CHead c0 (Flat f) t) 
4138 c2)).(H c1 (clear_gen_flat f c0 c1 t H2) c2 (clear_gen_flat f c0 c2 t 
4139 H3))))]) H0 H1))))))))) c).
4140
4141 theorem clear_trans:
4142  \forall (c1: C).(\forall (c: C).((clear c1 c) \to (\forall (c2: C).((clear c 
4143 c2) \to (clear c1 c2)))))
4144 \def
4145  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c0: C).((clear c c0) \to 
4146 (\forall (c2: C).((clear c0 c2) \to (clear c c2)))))) (\lambda (n: 
4147 nat).(\lambda (c: C).(\lambda (H: (clear (CSort n) c)).(\lambda (c2: 
4148 C).(\lambda (_: (clear c c2)).(clear_gen_sort c n H (clear (CSort n) 
4149 c2))))))) (\lambda (c: C).(\lambda (H: ((\forall (c0: C).((clear c c0) \to 
4150 (\forall (c2: C).((clear c0 c2) \to (clear c c2))))))).(\lambda (k: 
4151 K).(\lambda (t: T).(\lambda (c0: C).(\lambda (H0: (clear (CHead c k t) 
4152 c0)).(\lambda (c2: C).(\lambda (H1: (clear c0 c2)).((match k return (\lambda 
4153 (k0: K).((clear (CHead c k0 t) c0) \to (clear (CHead c k0 t) c2))) with 
4154 [(Bind b) \Rightarrow (\lambda (H2: (clear (CHead c (Bind b) t) c0)).(let H3 
4155 \def (eq_ind C c0 (\lambda (c: C).(clear c c2)) H1 (CHead c (Bind b) t) 
4156 (clear_gen_bind b c c0 t H2)) in (eq_ind_r C (CHead c (Bind b) t) (\lambda 
4157 (c3: C).(clear (CHead c (Bind b) t) c3)) (clear_bind b c t) c2 
4158 (clear_gen_bind b c c2 t H3)))) | (Flat f) \Rightarrow (\lambda (H2: (clear 
4159 (CHead c (Flat f) t) c0)).(clear_flat c c2 (H c0 (clear_gen_flat f c c0 t H2) 
4160 c2 H1) f t))]) H0))))))))) c1).
4161
4162 theorem clear_ctail:
4163  \forall (b: B).(\forall (c1: C).(\forall (c2: C).(\forall (u2: T).((clear c1 
4164 (CHead c2 (Bind b) u2)) \to (\forall (k: K).(\forall (u1: T).(clear (CTail k 
4165 u1 c1) (CHead (CTail k u1 c2) (Bind b) u2))))))))
4166 \def
4167  \lambda (b: B).(\lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: 
4168 C).(\forall (u2: T).((clear c (CHead c2 (Bind b) u2)) \to (\forall (k: 
4169 K).(\forall (u1: T).(clear (CTail k u1 c) (CHead (CTail k u1 c2) (Bind b) 
4170 u2)))))))) (\lambda (n: nat).(\lambda (c2: C).(\lambda (u2: T).(\lambda (H: 
4171 (clear (CSort n) (CHead c2 (Bind b) u2))).(\lambda (k: K).(\lambda (u1: 
4172 T).(match k return (\lambda (k0: K).(clear (CHead (CSort n) k0 u1) (CHead 
4173 (CTail k0 u1 c2) (Bind b) u2))) with [(Bind b0) \Rightarrow (clear_gen_sort 
4174 (CHead c2 (Bind b) u2) n H (clear (CHead (CSort n) (Bind b0) u1) (CHead 
4175 (CTail (Bind b0) u1 c2) (Bind b) u2))) | (Flat f) \Rightarrow (clear_gen_sort 
4176 (CHead c2 (Bind b) u2) n H (clear (CHead (CSort n) (Flat f) u1) (CHead (CTail 
4177 (Flat f) u1 c2) (Bind b) u2)))]))))))) (\lambda (c: C).(\lambda (H: ((\forall 
4178 (c2: C).(\forall (u2: T).((clear c (CHead c2 (Bind b) u2)) \to (\forall (k: 
4179 K).(\forall (u1: T).(clear (CTail k u1 c) (CHead (CTail k u1 c2) (Bind b) 
4180 u2))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c2: C).(\lambda (u2: 
4181 T).(\lambda (H0: (clear (CHead c k t) (CHead c2 (Bind b) u2))).(\lambda (k0: 
4182 K).(\lambda (u1: T).((match k return (\lambda (k1: K).((clear (CHead c k1 t) 
4183 (CHead c2 (Bind b) u2)) \to (clear (CHead (CTail k0 u1 c) k1 t) (CHead (CTail 
4184 k0 u1 c2) (Bind b) u2)))) with [(Bind b0) \Rightarrow (\lambda (H1: (clear 
4185 (CHead c (Bind b0) t) (CHead c2 (Bind b) u2))).(let H2 \def (f_equal C C 
4186 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
4187 \Rightarrow c2 | (CHead c _ _) \Rightarrow c])) (CHead c2 (Bind b) u2) (CHead 
4188 c (Bind b0) t) (clear_gen_bind b0 c (CHead c2 (Bind b) u2) t H1)) in ((let H3 
4189 \def (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) with 
4190 [(CSort _) \Rightarrow b | (CHead _ k _) \Rightarrow (match k return (\lambda 
4191 (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b])])) (CHead 
4192 c2 (Bind b) u2) (CHead c (Bind b0) t) (clear_gen_bind b0 c (CHead c2 (Bind b) 
4193 u2) t H1)) in ((let H4 \def (f_equal C T (\lambda (e: C).(match e return 
4194 (\lambda (_: C).T) with [(CSort _) \Rightarrow u2 | (CHead _ _ t) \Rightarrow 
4195 t])) (CHead c2 (Bind b) u2) (CHead c (Bind b0) t) (clear_gen_bind b0 c (CHead 
4196 c2 (Bind b) u2) t H1)) in (\lambda (H5: (eq B b b0)).(\lambda (H6: (eq C c2 
4197 c)).(eq_ind_r T t (\lambda (t0: T).(clear (CHead (CTail k0 u1 c) (Bind b0) t) 
4198 (CHead (CTail k0 u1 c2) (Bind b) t0))) (eq_ind_r C c (\lambda (c0: C).(clear 
4199 (CHead (CTail k0 u1 c) (Bind b0) t) (CHead (CTail k0 u1 c0) (Bind b) t))) 
4200 (eq_ind B b (\lambda (b1: B).(clear (CHead (CTail k0 u1 c) (Bind b1) t) 
4201 (CHead (CTail k0 u1 c) (Bind b) t))) (clear_bind b (CTail k0 u1 c) t) b0 H5) 
4202 c2 H6) u2 H4)))) H3)) H2))) | (Flat f) \Rightarrow (\lambda (H1: (clear 
4203 (CHead c (Flat f) t) (CHead c2 (Bind b) u2))).(clear_flat (CTail k0 u1 c) 
4204 (CHead (CTail k0 u1 c2) (Bind b) u2) (H c2 u2 (clear_gen_flat f c (CHead c2 
4205 (Bind b) u2) t H1) k0 u1) f t))]) H0)))))))))) c1)).
4206
4207 theorem getl_gen_all:
4208  \forall (c1: C).(\forall (c2: C).(\forall (i: nat).((getl i c1 c2) \to (ex2 
4209 C (\lambda (e: C).(drop i O c1 e)) (\lambda (e: C).(clear e c2))))))
4210 \def
4211  \lambda (c1: C).(\lambda (c2: C).(\lambda (i: nat).(\lambda (H: (getl i c1 
4212 c2)).(let H0 \def (match H return (\lambda (_: (getl ? ? ?)).(ex2 C (\lambda 
4213 (e: C).(drop i O c1 e)) (\lambda (e: C).(clear e c2)))) with [(getl_intro e 
4214 H0 H1) \Rightarrow (ex_intro2 C (\lambda (e0: C).(drop i O c1 e0)) (\lambda 
4215 (e0: C).(clear e0 c2)) e H0 H1)]) in H0)))).
4216
4217 theorem getl_gen_sort:
4218  \forall (n: nat).(\forall (h: nat).(\forall (x: C).((getl h (CSort n) x) \to 
4219 (\forall (P: Prop).P))))
4220 \def
4221  \lambda (n: nat).(\lambda (h: nat).(\lambda (x: C).(\lambda (H: (getl h 
4222 (CSort n) x)).(\lambda (P: Prop).(let H0 \def (getl_gen_all (CSort n) x h H) 
4223 in (ex2_ind C (\lambda (e: C).(drop h O (CSort n) e)) (\lambda (e: C).(clear 
4224 e x)) P (\lambda (x0: C).(\lambda (H1: (drop h O (CSort n) x0)).(\lambda (H2: 
4225 (clear x0 x)).(and3_ind (eq C x0 (CSort n)) (eq nat h O) (eq nat O O) P 
4226 (\lambda (H3: (eq C x0 (CSort n))).(\lambda (_: (eq nat h O)).(\lambda (_: 
4227 (eq nat O O)).(let H6 \def (eq_ind C x0 (\lambda (c: C).(clear c x)) H2 
4228 (CSort n) H3) in (clear_gen_sort x n H6 P))))) (drop_gen_sort n h O x0 
4229 H1))))) H0)))))).
4230
4231 theorem getl_gen_O:
4232  \forall (e: C).(\forall (x: C).((getl O e x) \to (clear e x)))
4233 \def
4234  \lambda (e: C).(\lambda (x: C).(\lambda (H: (getl O e x)).(let H0 \def 
4235 (getl_gen_all e x O H) in (ex2_ind C (\lambda (e0: C).(drop O O e e0)) 
4236 (\lambda (e0: C).(clear e0 x)) (clear e x) (\lambda (x0: C).(\lambda (H1: 
4237 (drop O O e x0)).(\lambda (H2: (clear x0 x)).(let H3 \def (eq_ind_r C x0 
4238 (\lambda (c: C).(clear c x)) H2 e (drop_gen_refl e x0 H1)) in H3)))) H0)))).
4239
4240 theorem getl_gen_S:
4241  \forall (k: K).(\forall (c: C).(\forall (x: C).(\forall (u: T).(\forall (h: 
4242 nat).((getl (S h) (CHead c k u) x) \to (getl (r k h) c x))))))
4243 \def
4244  \lambda (k: K).(\lambda (c: C).(\lambda (x: C).(\lambda (u: T).(\lambda (h: 
4245 nat).(\lambda (H: (getl (S h) (CHead c k u) x)).(let H0 \def (getl_gen_all 
4246 (CHead c k u) x (S h) H) in (ex2_ind C (\lambda (e: C).(drop (S h) O (CHead c 
4247 k u) e)) (\lambda (e: C).(clear e x)) (getl (r k h) c x) (\lambda (x0: 
4248 C).(\lambda (H1: (drop (S h) O (CHead c k u) x0)).(\lambda (H2: (clear x0 
4249 x)).(getl_intro (r k h) c x x0 (drop_gen_drop k c x0 u h H1) H2)))) H0))))))).
4250
4251 theorem getl_refl:
4252  \forall (b: B).(\forall (c: C).(\forall (u: T).(getl O (CHead c (Bind b) u) 
4253 (CHead c (Bind b) u))))
4254 \def
4255  \lambda (b: B).(\lambda (c: C).(\lambda (u: T).(getl_intro O (CHead c (Bind 
4256 b) u) (CHead c (Bind b) u) (CHead c (Bind b) u) (drop_refl (CHead c (Bind b) 
4257 u)) (clear_bind b c u)))).
4258
4259 theorem clear_getl_trans:
4260  \forall (i: nat).(\forall (c2: C).(\forall (c3: C).((getl i c2 c3) \to 
4261 (\forall (c1: C).((clear c1 c2) \to (getl i c1 c3))))))
4262 \def
4263  \lambda (i: nat).(nat_ind (\lambda (n: nat).(\forall (c2: C).(\forall (c3: 
4264 C).((getl n c2 c3) \to (\forall (c1: C).((clear c1 c2) \to (getl n c1 
4265 c3))))))) (\lambda (c2: C).(\lambda (c3: C).(\lambda (H: (getl O c2 
4266 c3)).(\lambda (c1: C).(\lambda (H0: (clear c1 c2)).(getl_intro O c1 c3 c1 
4267 (drop_refl c1) (clear_trans c1 c2 H0 c3 (getl_gen_O c2 c3 H)))))))) (\lambda 
4268 (n: nat).(\lambda (_: ((\forall (c2: C).(\forall (c3: C).((getl n c2 c3) \to 
4269 (\forall (c1: C).((clear c1 c2) \to (getl n c1 c3)))))))).(\lambda (c2: 
4270 C).(C_ind (\lambda (c: C).(\forall (c3: C).((getl (S n) c c3) \to (\forall 
4271 (c1: C).((clear c1 c) \to (getl (S n) c1 c3)))))) (\lambda (n0: nat).(\lambda 
4272 (c3: C).(\lambda (H0: (getl (S n) (CSort n0) c3)).(\lambda (c1: C).(\lambda 
4273 (_: (clear c1 (CSort n0))).(getl_gen_sort n0 (S n) c3 H0 (getl (S n) c1 
4274 c3))))))) (\lambda (c: C).(\lambda (_: ((\forall (c3: C).((getl (S n) c c3) 
4275 \to (\forall (c1: C).((clear c1 c) \to (getl (S n) c1 c3))))))).(\lambda (k: 
4276 K).(\lambda (t: T).(\lambda (c3: C).(\lambda (H1: (getl (S n) (CHead c k t) 
4277 c3)).(\lambda (c1: C).(\lambda (H2: (clear c1 (CHead c k t))).((match k 
4278 return (\lambda (k0: K).((getl (S n) (CHead c k0 t) c3) \to ((clear c1 (CHead 
4279 c k0 t)) \to (getl (S n) c1 c3)))) with [(Bind b) \Rightarrow (\lambda (H3: 
4280 (getl (S n) (CHead c (Bind b) t) c3)).(\lambda (H4: (clear c1 (CHead c (Bind 
4281 b) t))).(let H5 \def (getl_gen_all c c3 (r (Bind b) n) (getl_gen_S (Bind b) c 
4282 c3 t n H3)) in (ex2_ind C (\lambda (e: C).(drop n O c e)) (\lambda (e: 
4283 C).(clear e c3)) (getl (S n) c1 c3) (\lambda (x: C).(\lambda (H6: (drop n O c 
4284 x)).(\lambda (H7: (clear x c3)).(getl_intro (S n) c1 c3 x (drop_clear_O b c1 
4285 c t H4 x n H6) H7)))) H5)))) | (Flat f) \Rightarrow (\lambda (_: (getl (S n) 
4286 (CHead c (Flat f) t) c3)).(\lambda (H4: (clear c1 (CHead c (Flat f) 
4287 t))).(clear_gen_flat_r f c1 c t H4 (getl (S n) c1 c3))))]) H1 H2))))))))) 
4288 c2)))) i).
4289
4290 theorem getl_clear_trans:
4291  \forall (i: nat).(\forall (c1: C).(\forall (c2: C).((getl i c1 c2) \to 
4292 (\forall (c3: C).((clear c2 c3) \to (getl i c1 c3))))))
4293 \def
4294  \lambda (i: nat).(\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (getl i c1 
4295 c2)).(\lambda (c3: C).(\lambda (H0: (clear c2 c3)).(let H1 \def (getl_gen_all 
4296 c1 c2 i H) in (ex2_ind C (\lambda (e: C).(drop i O c1 e)) (\lambda (e: 
4297 C).(clear e c2)) (getl i c1 c3) (\lambda (x: C).(\lambda (H2: (drop i O c1 
4298 x)).(\lambda (H3: (clear x c2)).(let H4 \def (clear_gen_all x c2 H3) in 
4299 (ex_3_ind B C T (\lambda (b: B).(\lambda (e: C).(\lambda (u: T).(eq C c2 
4300 (CHead e (Bind b) u))))) (getl i c1 c3) (\lambda (x0: B).(\lambda (x1: 
4301 C).(\lambda (x2: T).(\lambda (H5: (eq C c2 (CHead x1 (Bind x0) x2))).(let H6 
4302 \def (eq_ind C c2 (\lambda (c: C).(clear x c)) H3 (CHead x1 (Bind x0) x2) H5) 
4303 in (let H7 \def (eq_ind C c2 (\lambda (c: C).(clear c c3)) H0 (CHead x1 (Bind 
4304 x0) x2) H5) in (eq_ind_r C (CHead x1 (Bind x0) x2) (\lambda (c: C).(getl i c1 
4305 c)) (getl_intro i c1 (CHead x1 (Bind x0) x2) x H2 H6) c3 (clear_gen_bind x0 
4306 x1 c3 x2 H7)))))))) H4))))) H1))))))).
4307
4308 theorem getl_head:
4309  \forall (k: K).(\forall (h: nat).(\forall (c: C).(\forall (e: C).((getl (r k 
4310 h) c e) \to (\forall (u: T).(getl (S h) (CHead c k u) e))))))
4311 \def
4312  \lambda (k: K).(\lambda (h: nat).(\lambda (c: C).(\lambda (e: C).(\lambda 
4313 (H: (getl (r k h) c e)).(\lambda (u: T).(let H0 \def (getl_gen_all c e (r k 
4314 h) H) in (ex2_ind C (\lambda (e0: C).(drop (r k h) O c e0)) (\lambda (e0: 
4315 C).(clear e0 e)) (getl (S h) (CHead c k u) e) (\lambda (x: C).(\lambda (H1: 
4316 (drop (r k h) O c x)).(\lambda (H2: (clear x e)).(getl_intro (S h) (CHead c k 
4317 u) e x (drop_drop k h c x H1 u) H2)))) H0))))))).
4318
4319 theorem getl_flat:
4320  \forall (c: C).(\forall (e: C).(\forall (h: nat).((getl h c e) \to (\forall 
4321 (f: F).(\forall (u: T).(getl h (CHead c (Flat f) u) e))))))
4322 \def
4323  \lambda (c: C).(\lambda (e: C).(\lambda (h: nat).(\lambda (H: (getl h c 
4324 e)).(\lambda (f: F).(\lambda (u: T).(let H0 \def (getl_gen_all c e h H) in 
4325 (ex2_ind C (\lambda (e0: C).(drop h O c e0)) (\lambda (e0: C).(clear e0 e)) 
4326 (getl h (CHead c (Flat f) u) e) (\lambda (x: C).(\lambda (H1: (drop h O c 
4327 x)).(\lambda (H2: (clear x e)).((match h return (\lambda (n: nat).((drop n O 
4328 c x) \to (getl n (CHead c (Flat f) u) e))) with [O \Rightarrow (\lambda (H3: 
4329 (drop O O c x)).(let H4 \def (eq_ind_r C x (\lambda (c: C).(clear c e)) H2 c 
4330 (drop_gen_refl c x H3)) in (getl_intro O (CHead c (Flat f) u) e (CHead c 
4331 (Flat f) u) (drop_refl (CHead c (Flat f) u)) (clear_flat c e H4 f u)))) | (S 
4332 n) \Rightarrow (\lambda (H3: (drop (S n) O c x)).(getl_intro (S n) (CHead c 
4333 (Flat f) u) e x (drop_drop (Flat f) n c x H3 u) H2))]) H1)))) H0))))))).
4334
4335 theorem getl_drop:
4336  \forall (b: B).(\forall (c: C).(\forall (e: C).(\forall (u: T).(\forall (h: 
4337 nat).((getl h c (CHead e (Bind b) u)) \to (drop (S h) O c e))))))
4338 \def
4339  \lambda (b: B).(\lambda (c: C).(C_ind (\lambda (c0: C).(\forall (e: 
4340 C).(\forall (u: T).(\forall (h: nat).((getl h c0 (CHead e (Bind b) u)) \to 
4341 (drop (S h) O c0 e)))))) (\lambda (n: nat).(\lambda (e: C).(\lambda (u: 
4342 T).(\lambda (h: nat).(\lambda (H: (getl h (CSort n) (CHead e (Bind b) 
4343 u))).(getl_gen_sort n h (CHead e (Bind b) u) H (drop (S h) O (CSort n) 
4344 e))))))) (\lambda (c0: C).(\lambda (H: ((\forall (e: C).(\forall (u: 
4345 T).(\forall (h: nat).((getl h c0 (CHead e (Bind b) u)) \to (drop (S h) O c0 
4346 e))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (e: C).(\lambda (u: 
4347 T).(\lambda (h: nat).(nat_ind (\lambda (n: nat).((getl n (CHead c0 k t) 
4348 (CHead e (Bind b) u)) \to (drop (S n) O (CHead c0 k t) e))) (\lambda (H0: 
4349 (getl O (CHead c0 k t) (CHead e (Bind b) u))).(K_ind (\lambda (k0: K).((clear 
4350 (CHead c0 k0 t) (CHead e (Bind b) u)) \to (drop (S O) O (CHead c0 k0 t) e))) 
4351 (\lambda (b0: B).(\lambda (H1: (clear (CHead c0 (Bind b0) t) (CHead e (Bind 
4352 b) u))).(let H2 \def (f_equal C C (\lambda (e0: C).(match e0 return (\lambda 
4353 (_: C).C) with [(CSort _) \Rightarrow e | (CHead c _ _) \Rightarrow c])) 
4354 (CHead e (Bind b) u) (CHead c0 (Bind b0) t) (clear_gen_bind b0 c0 (CHead e 
4355 (Bind b) u) t H1)) in ((let H3 \def (f_equal C B (\lambda (e0: C).(match e0 
4356 return (\lambda (_: C).B) with [(CSort _) \Rightarrow b | (CHead _ k _) 
4357 \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | 
4358 (Flat _) \Rightarrow b])])) (CHead e (Bind b) u) (CHead c0 (Bind b0) t) 
4359 (clear_gen_bind b0 c0 (CHead e (Bind b) u) t H1)) in ((let H4 \def (f_equal C 
4360 T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with [(CSort _) 
4361 \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead e (Bind b) u) (CHead c0 
4362 (Bind b0) t) (clear_gen_bind b0 c0 (CHead e (Bind b) u) t H1)) in (\lambda 
4363 (H5: (eq B b b0)).(\lambda (H6: (eq C e c0)).(eq_ind_r C c0 (\lambda (c1: 
4364 C).(drop (S O) O (CHead c0 (Bind b0) t) c1)) (eq_ind B b (\lambda (b1: 
4365 B).(drop (S O) O (CHead c0 (Bind b1) t) c0)) (drop_drop (Bind b) O c0 c0 
4366 (drop_refl c0) t) b0 H5) e H6)))) H3)) H2)))) (\lambda (f: F).(\lambda (H1: 
4367 (clear (CHead c0 (Flat f) t) (CHead e (Bind b) u))).(drop_clear_O b (CHead c0 
4368 (Flat f) t) e u (clear_flat c0 (CHead e (Bind b) u) (clear_gen_flat f c0 
4369 (CHead e (Bind b) u) t H1) f t) e O (drop_refl e)))) k (getl_gen_O (CHead c0 
4370 k t) (CHead e (Bind b) u) H0))) (\lambda (n: nat).(\lambda (_: (((getl n 
4371 (CHead c0 k t) (CHead e (Bind b) u)) \to (drop (S n) O (CHead c0 k t) 
4372 e)))).(\lambda (H1: (getl (S n) (CHead c0 k t) (CHead e (Bind b) 
4373 u))).(drop_drop k (S n) c0 e (eq_ind_r nat (S (r k n)) (\lambda (n0: 
4374 nat).(drop n0 O c0 e)) (H e u (r k n) (getl_gen_S k c0 (CHead e (Bind b) u) t 
4375 n H1)) (r k (S n)) (r_S k n)) t)))) h)))))))) c)).
4376
4377 theorem getl_clear_bind:
4378  \forall (b: B).(\forall (c: C).(\forall (e1: C).(\forall (v: T).((clear c 
4379 (CHead e1 (Bind b) v)) \to (\forall (e2: C).(\forall (n: nat).((getl n e1 e2) 
4380 \to (getl (S n) c e2))))))))
4381 \def
4382  \lambda (b: B).(\lambda (c: C).(C_ind (\lambda (c0: C).(\forall (e1: 
4383 C).(\forall (v: T).((clear c0 (CHead e1 (Bind b) v)) \to (\forall (e2: 
4384 C).(\forall (n: nat).((getl n e1 e2) \to (getl (S n) c0 e2)))))))) (\lambda 
4385 (n: nat).(\lambda (e1: C).(\lambda (v: T).(\lambda (H: (clear (CSort n) 
4386 (CHead e1 (Bind b) v))).(\lambda (e2: C).(\lambda (n0: nat).(\lambda (_: 
4387 (getl n0 e1 e2)).(clear_gen_sort (CHead e1 (Bind b) v) n H (getl (S n0) 
4388 (CSort n) e2))))))))) (\lambda (c0: C).(\lambda (H: ((\forall (e1: 
4389 C).(\forall (v: T).((clear c0 (CHead e1 (Bind b) v)) \to (\forall (e2: 
4390 C).(\forall (n: nat).((getl n e1 e2) \to (getl (S n) c0 e2))))))))).(\lambda 
4391 (k: K).(\lambda (t: T).(\lambda (e1: C).(\lambda (v: T).(\lambda (H0: (clear 
4392 (CHead c0 k t) (CHead e1 (Bind b) v))).(\lambda (e2: C).(\lambda (n: 
4393 nat).(\lambda (H1: (getl n e1 e2)).((match k return (\lambda (k0: K).((clear 
4394 (CHead c0 k0 t) (CHead e1 (Bind b) v)) \to (getl (S n) (CHead c0 k0 t) e2))) 
4395 with [(Bind b0) \Rightarrow (\lambda (H2: (clear (CHead c0 (Bind b0) t) 
4396 (CHead e1 (Bind b) v))).(let H3 \def (f_equal C C (\lambda (e: C).(match e 
4397 return (\lambda (_: C).C) with [(CSort _) \Rightarrow e1 | (CHead c _ _) 
4398 \Rightarrow c])) (CHead e1 (Bind b) v) (CHead c0 (Bind b0) t) (clear_gen_bind 
4399 b0 c0 (CHead e1 (Bind b) v) t H2)) in ((let H4 \def (f_equal C B (\lambda (e: 
4400 C).(match e return (\lambda (_: C).B) with [(CSort _) \Rightarrow b | (CHead 
4401 _ k _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
4402 \Rightarrow b | (Flat _) \Rightarrow b])])) (CHead e1 (Bind b) v) (CHead c0 
4403 (Bind b0) t) (clear_gen_bind b0 c0 (CHead e1 (Bind b) v) t H2)) in ((let H5 
4404 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
4405 [(CSort _) \Rightarrow v | (CHead _ _ t) \Rightarrow t])) (CHead e1 (Bind b) 
4406 v) (CHead c0 (Bind b0) t) (clear_gen_bind b0 c0 (CHead e1 (Bind b) v) t H2)) 
4407 in (\lambda (H6: (eq B b b0)).(\lambda (H7: (eq C e1 c0)).(let H8 \def 
4408 (eq_ind C e1 (\lambda (c: C).(getl n c e2)) H1 c0 H7) in (eq_ind B b (\lambda 
4409 (b1: B).(getl (S n) (CHead c0 (Bind b1) t) e2)) (getl_head (Bind b) n c0 e2 
4410 H8 t) b0 H6))))) H4)) H3))) | (Flat f) \Rightarrow (\lambda (H2: (clear 
4411 (CHead c0 (Flat f) t) (CHead e1 (Bind b) v))).(getl_flat c0 e2 (S n) (H e1 v 
4412 (clear_gen_flat f c0 (CHead e1 (Bind b) v) t H2) e2 n H1) f t))]) 
4413 H0))))))))))) c)).
4414
4415 theorem getl_ctail:
4416  \forall (b: B).(\forall (c: C).(\forall (d: C).(\forall (u: T).(\forall (i: 
4417 nat).((getl i c (CHead d (Bind b) u)) \to (\forall (k: K).(\forall (v: 
4418 T).(getl i (CTail k v c) (CHead (CTail k v d) (Bind b) u)))))))))
4419 \def
4420  \lambda (b: B).(\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: 
4421 nat).(\lambda (H: (getl i c (CHead d (Bind b) u))).(\lambda (k: K).(\lambda 
4422 (v: T).(let H0 \def (getl_gen_all c (CHead d (Bind b) u) i H) in (ex2_ind C 
4423 (\lambda (e: C).(drop i O c e)) (\lambda (e: C).(clear e (CHead d (Bind b) 
4424 u))) (getl i (CTail k v c) (CHead (CTail k v d) (Bind b) u)) (\lambda (x: 
4425 C).(\lambda (H1: (drop i O c x)).(\lambda (H2: (clear x (CHead d (Bind b) 
4426 u))).(getl_intro i (CTail k v c) (CHead (CTail k v d) (Bind b) u) (CTail k v 
4427 x) (drop_ctail c x O i H1 k v) (clear_ctail b x d u H2 k v))))) H0))))))))).
4428
4429 theorem getl_ctail_clen:
4430  \forall (b: B).(\forall (t: T).(\forall (c: C).(ex nat (\lambda (n: 
4431 nat).(getl (clen c) (CTail (Bind b) t c) (CHead (CSort n) (Bind b) t))))))
4432 \def
4433  \lambda (b: B).(\lambda (t: T).(\lambda (c: C).(C_ind (\lambda (c0: C).(ex 
4434 nat (\lambda (n: nat).(getl (clen c0) (CTail (Bind b) t c0) (CHead (CSort n) 
4435 (Bind b) t))))) (\lambda (n: nat).(ex_intro nat (\lambda (n0: nat).(getl O 
4436 (CHead (CSort n) (Bind b) t) (CHead (CSort n0) (Bind b) t))) n (getl_refl b 
4437 (CSort n) t))) (\lambda (c0: C).(\lambda (H: (ex nat (\lambda (n: nat).(getl 
4438 (clen c0) (CTail (Bind b) t c0) (CHead (CSort n) (Bind b) t))))).(\lambda (k: 
4439 K).(\lambda (t0: T).(let H0 \def H in (ex_ind nat (\lambda (n: nat).(getl 
4440 (clen c0) (CTail (Bind b) t c0) (CHead (CSort n) (Bind b) t))) (ex nat 
4441 (\lambda (n: nat).(getl (s k (clen c0)) (CHead (CTail (Bind b) t c0) k t0) 
4442 (CHead (CSort n) (Bind b) t)))) (\lambda (x: nat).(\lambda (H1: (getl (clen 
4443 c0) (CTail (Bind b) t c0) (CHead (CSort x) (Bind b) t))).(match k return 
4444 (\lambda (k0: K).(ex nat (\lambda (n: nat).(getl (s k0 (clen c0)) (CHead 
4445 (CTail (Bind b) t c0) k0 t0) (CHead (CSort n) (Bind b) t))))) with [(Bind b0) 
4446 \Rightarrow (ex_intro nat (\lambda (n: nat).(getl (S (clen c0)) (CHead (CTail 
4447 (Bind b) t c0) (Bind b0) t0) (CHead (CSort n) (Bind b) t))) x (getl_head 
4448 (Bind b0) (clen c0) (CTail (Bind b) t c0) (CHead (CSort x) (Bind b) t) H1 
4449 t0)) | (Flat f) \Rightarrow (ex_intro nat (\lambda (n: nat).(getl (clen c0) 
4450 (CHead (CTail (Bind b) t c0) (Flat f) t0) (CHead (CSort n) (Bind b) t))) x 
4451 (getl_flat (CTail (Bind b) t c0) (CHead (CSort x) (Bind b) t) (clen c0) H1 f 
4452 t0))]))) H0)))))) c))).
4453
4454 theorem getl_dec:
4455  \forall (c: C).(\forall (i: nat).(or (ex_3 C B T (\lambda (e: C).(\lambda 
4456 (b: B).(\lambda (v: T).(getl i c (CHead e (Bind b) v)))))) (\forall (d: 
4457 C).((getl i c d) \to (\forall (P: Prop).P)))))
4458 \def
4459  \lambda (c: C).(C_ind (\lambda (c0: C).(\forall (i: nat).(or (ex_3 C B T 
4460 (\lambda (e: C).(\lambda (b: B).(\lambda (v: T).(getl i c0 (CHead e (Bind b) 
4461 v)))))) (\forall (d: C).((getl i c0 d) \to (\forall (P: Prop).P)))))) 
4462 (\lambda (n: nat).(\lambda (i: nat).(or_intror (ex_3 C B T (\lambda (e: 
4463 C).(\lambda (b: B).(\lambda (v: T).(getl i (CSort n) (CHead e (Bind b) 
4464 v)))))) (\forall (d: C).((getl i (CSort n) d) \to (\forall (P: Prop).P))) 
4465 (\lambda (d: C).(\lambda (H: (getl i (CSort n) d)).(\lambda (P: 
4466 Prop).(getl_gen_sort n i d H P))))))) (\lambda (c0: C).(\lambda (H: ((\forall 
4467 (i: nat).(or (ex_3 C B T (\lambda (e: C).(\lambda (b: B).(\lambda (v: 
4468 T).(getl i c0 (CHead e (Bind b) v)))))) (\forall (d: C).((getl i c0 d) \to 
4469 (\forall (P: Prop).P))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (i: 
4470 nat).(match i return (\lambda (n: nat).(or (ex_3 C B T (\lambda (e: 
4471 C).(\lambda (b: B).(\lambda (v: T).(getl n (CHead c0 k t) (CHead e (Bind b) 
4472 v)))))) (\forall (d: C).((getl n (CHead c0 k t) d) \to (\forall (P: 
4473 Prop).P))))) with [O \Rightarrow (match k return (\lambda (k0: K).(or (ex_3 C 
4474 B T (\lambda (e: C).(\lambda (b: B).(\lambda (v: T).(getl O (CHead c0 k0 t) 
4475 (CHead e (Bind b) v)))))) (\forall (d: C).((getl O (CHead c0 k0 t) d) \to 
4476 (\forall (P: Prop).P))))) with [(Bind b) \Rightarrow (or_introl (ex_3 C B T 
4477 (\lambda (e: C).(\lambda (b0: B).(\lambda (v: T).(getl O (CHead c0 (Bind b) 
4478 t) (CHead e (Bind b0) v)))))) (\forall (d: C).((getl O (CHead c0 (Bind b) t) 
4479 d) \to (\forall (P: Prop).P))) (ex_3_intro C B T (\lambda (e: C).(\lambda 
4480 (b0: B).(\lambda (v: T).(getl O (CHead c0 (Bind b) t) (CHead e (Bind b0) 
4481 v))))) c0 b t (getl_refl b c0 t))) | (Flat f) \Rightarrow (let H_x \def (H O) 
4482 in (let H0 \def H_x in (or_ind (ex_3 C B T (\lambda (e: C).(\lambda (b: 
4483 B).(\lambda (v: T).(getl O c0 (CHead e (Bind b) v)))))) (\forall (d: 
4484 C).((getl O c0 d) \to (\forall (P: Prop).P))) (or (ex_3 C B T (\lambda (e: 
4485 C).(\lambda (b: B).(\lambda (v: T).(getl O (CHead c0 (Flat f) t) (CHead e 
4486 (Bind b) v)))))) (\forall (d: C).((getl O (CHead c0 (Flat f) t) d) \to 
4487 (\forall (P: Prop).P)))) (\lambda (H1: (ex_3 C B T (\lambda (e: C).(\lambda 
4488 (b: B).(\lambda (v: T).(getl O c0 (CHead e (Bind b) v))))))).(ex_3_ind C B T 
4489 (\lambda (e: C).(\lambda (b: B).(\lambda (v: T).(getl O c0 (CHead e (Bind b) 
4490 v))))) (or (ex_3 C B T (\lambda (e: C).(\lambda (b: B).(\lambda (v: T).(getl 
4491 O (CHead c0 (Flat f) t) (CHead e (Bind b) v)))))) (\forall (d: C).((getl O 
4492 (CHead c0 (Flat f) t) d) \to (\forall (P: Prop).P)))) (\lambda (x0: 
4493 C).(\lambda (x1: B).(\lambda (x2: T).(\lambda (H2: (getl O c0 (CHead x0 (Bind 
4494 x1) x2))).(or_introl (ex_3 C B T (\lambda (e: C).(\lambda (b: B).(\lambda (v: 
4495 T).(getl O (CHead c0 (Flat f) t) (CHead e (Bind b) v)))))) (\forall (d: 
4496 C).((getl O (CHead c0 (Flat f) t) d) \to (\forall (P: Prop).P))) (ex_3_intro 
4497 C B T (\lambda (e: C).(\lambda (b: B).(\lambda (v: T).(getl O (CHead c0 (Flat 
4498 f) t) (CHead e (Bind b) v))))) x0 x1 x2 (getl_flat c0 (CHead x0 (Bind x1) x2) 
4499 O H2 f t))))))) H1)) (\lambda (H1: ((\forall (d: C).((getl O c0 d) \to 
4500 (\forall (P: Prop).P))))).(or_intror (ex_3 C B T (\lambda (e: C).(\lambda (b: 
4501 B).(\lambda (v: T).(getl O (CHead c0 (Flat f) t) (CHead e (Bind b) v)))))) 
4502 (\forall (d: C).((getl O (CHead c0 (Flat f) t) d) \to (\forall (P: Prop).P))) 
4503 (\lambda (d: C).(\lambda (H2: (getl O (CHead c0 (Flat f) t) d)).(\lambda (P: 
4504 Prop).(H1 d (getl_intro O c0 d c0 (drop_refl c0) (clear_gen_flat f c0 d t 
4505 (getl_gen_O (CHead c0 (Flat f) t) d H2))) P)))))) H0)))]) | (S n) \Rightarrow 
4506 (let H_x \def (H (r k n)) in (let H0 \def H_x in (or_ind (ex_3 C B T (\lambda 
4507 (e: C).(\lambda (b: B).(\lambda (v: T).(getl (r k n) c0 (CHead e (Bind b) 
4508 v)))))) (\forall (d: C).((getl (r k n) c0 d) \to (\forall (P: Prop).P))) (or 
4509 (ex_3 C B T (\lambda (e: C).(\lambda (b: B).(\lambda (v: T).(getl (S n) 
4510 (CHead c0 k t) (CHead e (Bind b) v)))))) (\forall (d: C).((getl (S n) (CHead 
4511 c0 k t) d) \to (\forall (P: Prop).P)))) (\lambda (H1: (ex_3 C B T (\lambda 
4512 (e: C).(\lambda (b: B).(\lambda (v: T).(getl (r k n) c0 (CHead e (Bind b) 
4513 v))))))).(ex_3_ind C B T (\lambda (e: C).(\lambda (b: B).(\lambda (v: 
4514 T).(getl (r k n) c0 (CHead e (Bind b) v))))) (or (ex_3 C B T (\lambda (e: 
4515 C).(\lambda (b: B).(\lambda (v: T).(getl (S n) (CHead c0 k t) (CHead e (Bind 
4516 b) v)))))) (\forall (d: C).((getl (S n) (CHead c0 k t) d) \to (\forall (P: 
4517 Prop).P)))) (\lambda (x0: C).(\lambda (x1: B).(\lambda (x2: T).(\lambda (H2: 
4518 (getl (r k n) c0 (CHead x0 (Bind x1) x2))).(or_introl (ex_3 C B T (\lambda 
4519 (e: C).(\lambda (b: B).(\lambda (v: T).(getl (S n) (CHead c0 k t) (CHead e 
4520 (Bind b) v)))))) (\forall (d: C).((getl (S n) (CHead c0 k t) d) \to (\forall 
4521 (P: Prop).P))) (ex_3_intro C B T (\lambda (e: C).(\lambda (b: B).(\lambda (v: 
4522 T).(getl (S n) (CHead c0 k t) (CHead e (Bind b) v))))) x0 x1 x2 (getl_head k 
4523 n c0 (CHead x0 (Bind x1) x2) H2 t))))))) H1)) (\lambda (H1: ((\forall (d: 
4524 C).((getl (r k n) c0 d) \to (\forall (P: Prop).P))))).(or_intror (ex_3 C B T 
4525 (\lambda (e: C).(\lambda (b: B).(\lambda (v: T).(getl (S n) (CHead c0 k t) 
4526 (CHead e (Bind b) v)))))) (\forall (d: C).((getl (S n) (CHead c0 k t) d) \to 
4527 (\forall (P: Prop).P))) (\lambda (d: C).(\lambda (H2: (getl (S n) (CHead c0 k 
4528 t) d)).(\lambda (P: Prop).(H1 d (getl_gen_S k c0 d t n H2) P)))))) 
4529 H0)))])))))) c).
4530
4531 theorem clear_cle:
4532  \forall (c1: C).(\forall (c2: C).((clear c1 c2) \to (cle c2 c1)))
4533 \def
4534  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).((clear c c2) \to 
4535 (le (cweight c2) (cweight c))))) (\lambda (n: nat).(\lambda (c2: C).(\lambda 
4536 (H: (clear (CSort n) c2)).(clear_gen_sort c2 n H (le (cweight c2) O))))) 
4537 (\lambda (c: C).(\lambda (H: ((\forall (c2: C).((clear c c2) \to (le (cweight 
4538 c2) (cweight c)))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c2: 
4539 C).(\lambda (H0: (clear (CHead c k t) c2)).((match k return (\lambda (k0: 
4540 K).((clear (CHead c k0 t) c2) \to (le (cweight c2) (plus (cweight c) (tweight 
4541 t))))) with [(Bind b) \Rightarrow (\lambda (H1: (clear (CHead c (Bind b) t) 
4542 c2)).(eq_ind_r C (CHead c (Bind b) t) (\lambda (c0: C).(le (cweight c0) (plus 
4543 (cweight c) (tweight t)))) (le_n (plus (cweight c) (tweight t))) c2 
4544 (clear_gen_bind b c c2 t H1))) | (Flat f) \Rightarrow (\lambda (H1: (clear 
4545 (CHead c (Flat f) t) c2)).(le_S_n (cweight c2) (plus (cweight c) (tweight t)) 
4546 (le_n_S (cweight c2) (plus (cweight c) (tweight t)) (le_plus_trans (cweight 
4547 c2) (cweight c) (tweight t) (H c2 (clear_gen_flat f c c2 t H1))))))]) 
4548 H0))))))) c1).
4549
4550 theorem getl_flt:
4551  \forall (b: B).(\forall (c: C).(\forall (e: C).(\forall (u: T).(\forall (i: 
4552 nat).((getl i c (CHead e (Bind b) u)) \to (flt e u c (TLRef i)))))))
4553 \def
4554  \lambda (b: B).(\lambda (c: C).(C_ind (\lambda (c0: C).(\forall (e: 
4555 C).(\forall (u: T).(\forall (i: nat).((getl i c0 (CHead e (Bind b) u)) \to 
4556 (flt e u c0 (TLRef i))))))) (\lambda (n: nat).(\lambda (e: C).(\lambda (u: 
4557 T).(\lambda (i: nat).(\lambda (H: (getl i (CSort n) (CHead e (Bind b) 
4558 u))).(getl_gen_sort n i (CHead e (Bind b) u) H (flt e u (CSort n) (TLRef 
4559 i)))))))) (\lambda (c0: C).(\lambda (H: ((\forall (e: C).(\forall (u: 
4560 T).(\forall (i: nat).((getl i c0 (CHead e (Bind b) u)) \to (flt e u c0 (TLRef 
4561 i)))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (e: C).(\lambda (u: 
4562 T).(\lambda (i: nat).(match i return (\lambda (n: nat).((getl n (CHead c0 k 
4563 t) (CHead e (Bind b) u)) \to (flt e u (CHead c0 k t) (TLRef n)))) with [O 
4564 \Rightarrow (\lambda (H0: (getl O (CHead c0 k t) (CHead e (Bind b) 
4565 u))).((match k return (\lambda (k0: K).((clear (CHead c0 k0 t) (CHead e (Bind 
4566 b) u)) \to (flt e u (CHead c0 k0 t) (TLRef O)))) with [(Bind b0) \Rightarrow 
4567 (\lambda (H1: (clear (CHead c0 (Bind b0) t) (CHead e (Bind b) u))).(let H2 
4568 \def (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
4569 [(CSort _) \Rightarrow e | (CHead c _ _) \Rightarrow c])) (CHead e (Bind b) 
4570 u) (CHead c0 (Bind b0) t) (clear_gen_bind b0 c0 (CHead e (Bind b) u) t H1)) 
4571 in ((let H3 \def (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: 
4572 C).B) with [(CSort _) \Rightarrow b | (CHead _ k _) \Rightarrow (match k 
4573 return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
4574 b])])) (CHead e (Bind b) u) (CHead c0 (Bind b0) t) (clear_gen_bind b0 c0 
4575 (CHead e (Bind b) u) t H1)) in ((let H4 \def (f_equal C T (\lambda (e0: 
4576 C).(match e0 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead 
4577 _ _ t) \Rightarrow t])) (CHead e (Bind b) u) (CHead c0 (Bind b0) t) 
4578 (clear_gen_bind b0 c0 (CHead e (Bind b) u) t H1)) in (\lambda (H5: (eq B b 
4579 b0)).(\lambda (H6: (eq C e c0)).(eq_ind_r T t (\lambda (t0: T).(flt e t0 
4580 (CHead c0 (Bind b0) t) (TLRef O))) (eq_ind_r C c0 (\lambda (c1: C).(flt c1 t 
4581 (CHead c0 (Bind b0) t) (TLRef O))) (eq_ind B b (\lambda (b1: B).(flt c0 t 
4582 (CHead c0 (Bind b1) t) (TLRef O))) (flt_arith0 (Bind b) c0 t O) b0 H5) e H6) 
4583 u H4)))) H3)) H2))) | (Flat f) \Rightarrow (\lambda (H1: (clear (CHead c0 
4584 (Flat f) t) (CHead e (Bind b) u))).(flt_arith1 (Bind b) e c0 u (clear_cle c0 
4585 (CHead e (Bind b) u) (clear_gen_flat f c0 (CHead e (Bind b) u) t H1)) (Flat 
4586 f) t O))]) (getl_gen_O (CHead c0 k t) (CHead e (Bind b) u) H0))) | (S n) 
4587 \Rightarrow (\lambda (H0: (getl (S n) (CHead c0 k t) (CHead e (Bind b) 
4588 u))).(let H_y \def (H e u (r k n) (getl_gen_S k c0 (CHead e (Bind b) u) t n 
4589 H0)) in (flt_arith2 e c0 u (r k n) H_y k t (S n))))])))))))) c)).
4590
4591 theorem getl_gen_flat:
4592  \forall (f: F).(\forall (e: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
4593 nat).((getl i (CHead e (Flat f) v) d) \to (getl i e d))))))
4594 \def
4595  \lambda (f: F).(\lambda (e: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: 
4596 nat).(nat_ind (\lambda (n: nat).((getl n (CHead e (Flat f) v) d) \to (getl n 
4597 e d))) (\lambda (H: (getl O (CHead e (Flat f) v) d)).(getl_intro O e d e 
4598 (drop_refl e) (clear_gen_flat f e d v (getl_gen_O (CHead e (Flat f) v) d 
4599 H)))) (\lambda (n: nat).(\lambda (_: (((getl n (CHead e (Flat f) v) d) \to 
4600 (getl n e d)))).(\lambda (H0: (getl (S n) (CHead e (Flat f) v) 
4601 d)).(getl_gen_S (Flat f) e d v n H0)))) i))))).
4602
4603 theorem getl_gen_bind:
4604  \forall (b: B).(\forall (e: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
4605 nat).((getl i (CHead e (Bind b) v) d) \to (or (land (eq nat i O) (eq C d 
4606 (CHead e (Bind b) v))) (ex2 nat (\lambda (j: nat).(eq nat i (S j))) (\lambda 
4607 (j: nat).(getl j e d)))))))))
4608 \def
4609  \lambda (b: B).(\lambda (e: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: 
4610 nat).(nat_ind (\lambda (n: nat).((getl n (CHead e (Bind b) v) d) \to (or 
4611 (land (eq nat n O) (eq C d (CHead e (Bind b) v))) (ex2 nat (\lambda (j: 
4612 nat).(eq nat n (S j))) (\lambda (j: nat).(getl j e d)))))) (\lambda (H: (getl 
4613 O (CHead e (Bind b) v) d)).(eq_ind_r C (CHead e (Bind b) v) (\lambda (c: 
4614 C).(or (land (eq nat O O) (eq C c (CHead e (Bind b) v))) (ex2 nat (\lambda 
4615 (j: nat).(eq nat O (S j))) (\lambda (j: nat).(getl j e c))))) (or_introl 
4616 (land (eq nat O O) (eq C (CHead e (Bind b) v) (CHead e (Bind b) v))) (ex2 nat 
4617 (\lambda (j: nat).(eq nat O (S j))) (\lambda (j: nat).(getl j e (CHead e 
4618 (Bind b) v)))) (conj (eq nat O O) (eq C (CHead e (Bind b) v) (CHead e (Bind 
4619 b) v)) (refl_equal nat O) (refl_equal C (CHead e (Bind b) v)))) d 
4620 (clear_gen_bind b e d v (getl_gen_O (CHead e (Bind b) v) d H)))) (\lambda (n: 
4621 nat).(\lambda (_: (((getl n (CHead e (Bind b) v) d) \to (or (land (eq nat n 
4622 O) (eq C d (CHead e (Bind b) v))) (ex2 nat (\lambda (j: nat).(eq nat n (S 
4623 j))) (\lambda (j: nat).(getl j e d))))))).(\lambda (H0: (getl (S n) (CHead e 
4624 (Bind b) v) d)).(or_intror (land (eq nat (S n) O) (eq C d (CHead e (Bind b) 
4625 v))) (ex2 nat (\lambda (j: nat).(eq nat (S n) (S j))) (\lambda (j: nat).(getl 
4626 j e d))) (ex_intro2 nat (\lambda (j: nat).(eq nat (S n) (S j))) (\lambda (j: 
4627 nat).(getl j e d)) n (refl_equal nat (S n)) (getl_gen_S (Bind b) e d v n 
4628 H0)))))) i))))).
4629
4630 theorem getl_gen_tail:
4631  \forall (k: K).(\forall (b: B).(\forall (u1: T).(\forall (u2: T).(\forall 
4632 (c2: C).(\forall (c1: C).(\forall (i: nat).((getl i (CTail k u1 c1) (CHead c2 
4633 (Bind b) u2)) \to (or (ex2 C (\lambda (e: C).(eq C c2 (CTail k u1 e))) 
4634 (\lambda (e: C).(getl i c1 (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: 
4635 nat).(eq nat i (clen c1))) (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: 
4636 nat).(eq T u1 u2)) (\lambda (n: nat).(eq C c2 (CSort n))))))))))))
4637 \def
4638  \lambda (k: K).(\lambda (b: B).(\lambda (u1: T).(\lambda (u2: T).(\lambda 
4639 (c2: C).(\lambda (c1: C).(C_ind (\lambda (c: C).(\forall (i: nat).((getl i 
4640 (CTail k u1 c) (CHead c2 (Bind b) u2)) \to (or (ex2 C (\lambda (e: C).(eq C 
4641 c2 (CTail k u1 e))) (\lambda (e: C).(getl i c (CHead e (Bind b) u2)))) (ex4 
4642 nat (\lambda (_: nat).(eq nat i (clen c))) (\lambda (_: nat).(eq K k (Bind 
4643 b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda (n: nat).(eq C c2 (CSort 
4644 n)))))))) (\lambda (n: nat).(\lambda (i: nat).(match i return (\lambda (n0: 
4645 nat).((getl n0 (CTail k u1 (CSort n)) (CHead c2 (Bind b) u2)) \to (or (ex2 C 
4646 (\lambda (e: C).(eq C c2 (CTail k u1 e))) (\lambda (e: C).(getl n0 (CSort n) 
4647 (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq nat n0 (clen (CSort 
4648 n)))) (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 u2)) 
4649 (\lambda (n1: nat).(eq C c2 (CSort n1))))))) with [O \Rightarrow (\lambda (H: 
4650 (getl O (CHead (CSort n) k u1) (CHead c2 (Bind b) u2))).((match k return 
4651 (\lambda (k0: K).((clear (CHead (CSort n) k0 u1) (CHead c2 (Bind b) u2)) \to 
4652 (or (ex2 C (\lambda (e: C).(eq C c2 (CTail k0 u1 e))) (\lambda (e: C).(getl O 
4653 (CSort n) (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq nat O O)) 
4654 (\lambda (_: nat).(eq K k0 (Bind b))) (\lambda (_: nat).(eq T u1 u2)) 
4655 (\lambda (n0: nat).(eq C c2 (CSort n0))))))) with [(Bind b0) \Rightarrow 
4656 (\lambda (H0: (clear (CHead (CSort n) (Bind b0) u1) (CHead c2 (Bind b) 
4657 u2))).(let H1 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: 
4658 C).C) with [(CSort _) \Rightarrow c2 | (CHead c _ _) \Rightarrow c])) (CHead 
4659 c2 (Bind b) u2) (CHead (CSort n) (Bind b0) u1) (clear_gen_bind b0 (CSort n) 
4660 (CHead c2 (Bind b) u2) u1 H0)) in ((let H2 \def (f_equal C B (\lambda (e: 
4661 C).(match e return (\lambda (_: C).B) with [(CSort _) \Rightarrow b | (CHead 
4662 _ k _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
4663 \Rightarrow b | (Flat _) \Rightarrow b])])) (CHead c2 (Bind b) u2) (CHead 
4664 (CSort n) (Bind b0) u1) (clear_gen_bind b0 (CSort n) (CHead c2 (Bind b) u2) 
4665 u1 H0)) in ((let H3 \def (f_equal C T (\lambda (e: C).(match e return 
4666 (\lambda (_: C).T) with [(CSort _) \Rightarrow u2 | (CHead _ _ t) \Rightarrow 
4667 t])) (CHead c2 (Bind b) u2) (CHead (CSort n) (Bind b0) u1) (clear_gen_bind b0 
4668 (CSort n) (CHead c2 (Bind b) u2) u1 H0)) in (\lambda (H4: (eq B b 
4669 b0)).(\lambda (H5: (eq C c2 (CSort n))).(eq_ind_r C (CSort n) (\lambda (c: 
4670 C).(or (ex2 C (\lambda (e: C).(eq C c (CTail (Bind b0) u1 e))) (\lambda (e: 
4671 C).(getl O (CSort n) (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq 
4672 nat O O)) (\lambda (_: nat).(eq K (Bind b0) (Bind b))) (\lambda (_: nat).(eq 
4673 T u1 u2)) (\lambda (n0: nat).(eq C c (CSort n0)))))) (eq_ind_r T u1 (\lambda 
4674 (t: T).(or (ex2 C (\lambda (e: C).(eq C (CSort n) (CTail (Bind b0) u1 e))) 
4675 (\lambda (e: C).(getl O (CSort n) (CHead e (Bind b) t)))) (ex4 nat (\lambda 
4676 (_: nat).(eq nat O O)) (\lambda (_: nat).(eq K (Bind b0) (Bind b))) (\lambda 
4677 (_: nat).(eq T u1 t)) (\lambda (n0: nat).(eq C (CSort n) (CSort n0)))))) 
4678 (eq_ind_r B b0 (\lambda (b1: B).(or (ex2 C (\lambda (e: C).(eq C (CSort n) 
4679 (CTail (Bind b0) u1 e))) (\lambda (e: C).(getl O (CSort n) (CHead e (Bind b1) 
4680 u1)))) (ex4 nat (\lambda (_: nat).(eq nat O O)) (\lambda (_: nat).(eq K (Bind 
4681 b0) (Bind b1))) (\lambda (_: nat).(eq T u1 u1)) (\lambda (n0: nat).(eq C 
4682 (CSort n) (CSort n0)))))) (or_intror (ex2 C (\lambda (e: C).(eq C (CSort n) 
4683 (CTail (Bind b0) u1 e))) (\lambda (e: C).(getl O (CSort n) (CHead e (Bind b0) 
4684 u1)))) (ex4 nat (\lambda (_: nat).(eq nat O O)) (\lambda (_: nat).(eq K (Bind 
4685 b0) (Bind b0))) (\lambda (_: nat).(eq T u1 u1)) (\lambda (n0: nat).(eq C 
4686 (CSort n) (CSort n0)))) (ex4_intro nat (\lambda (_: nat).(eq nat O O)) 
4687 (\lambda (_: nat).(eq K (Bind b0) (Bind b0))) (\lambda (_: nat).(eq T u1 u1)) 
4688 (\lambda (n0: nat).(eq C (CSort n) (CSort n0))) n (refl_equal nat O) 
4689 (refl_equal K (Bind b0)) (refl_equal T u1) (refl_equal C (CSort n)))) b H4) 
4690 u2 H3) c2 H5)))) H2)) H1))) | (Flat f) \Rightarrow (\lambda (H0: (clear 
4691 (CHead (CSort n) (Flat f) u1) (CHead c2 (Bind b) u2))).(clear_gen_sort (CHead 
4692 c2 (Bind b) u2) n (clear_gen_flat f (CSort n) (CHead c2 (Bind b) u2) u1 H0) 
4693 (or (ex2 C (\lambda (e: C).(eq C c2 (CTail (Flat f) u1 e))) (\lambda (e: 
4694 C).(getl O (CSort n) (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq 
4695 nat O O)) (\lambda (_: nat).(eq K (Flat f) (Bind b))) (\lambda (_: nat).(eq T 
4696 u1 u2)) (\lambda (n0: nat).(eq C c2 (CSort n0)))))))]) (getl_gen_O (CHead 
4697 (CSort n) k u1) (CHead c2 (Bind b) u2) H))) | (S n0) \Rightarrow (\lambda (H: 
4698 (getl (S n0) (CHead (CSort n) k u1) (CHead c2 (Bind b) u2))).(getl_gen_sort n 
4699 (r k n0) (CHead c2 (Bind b) u2) (getl_gen_S k (CSort n) (CHead c2 (Bind b) 
4700 u2) u1 n0 H) (or (ex2 C (\lambda (e: C).(eq C c2 (CTail k u1 e))) (\lambda 
4701 (e: C).(getl (S n0) (CSort n) (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: 
4702 nat).(eq nat (S n0) O)) (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: 
4703 nat).(eq T u1 u2)) (\lambda (n1: nat).(eq C c2 (CSort n1)))))))]))) (\lambda 
4704 (c: C).(\lambda (H: ((\forall (i: nat).((getl i (CTail k u1 c) (CHead c2 
4705 (Bind b) u2)) \to (or (ex2 C (\lambda (e: C).(eq C c2 (CTail k u1 e))) 
4706 (\lambda (e: C).(getl i c (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: 
4707 nat).(eq nat i (clen c))) (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: 
4708 nat).(eq T u1 u2)) (\lambda (n: nat).(eq C c2 (CSort n))))))))).(\lambda (k0: 
4709 K).(\lambda (t: T).(\lambda (i: nat).(match i return (\lambda (n: nat).((getl 
4710 n (CTail k u1 (CHead c k0 t)) (CHead c2 (Bind b) u2)) \to (or (ex2 C (\lambda 
4711 (e: C).(eq C c2 (CTail k u1 e))) (\lambda (e: C).(getl n (CHead c k0 t) 
4712 (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq nat n (clen (CHead c 
4713 k0 t)))) (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 u2)) 
4714 (\lambda (n0: nat).(eq C c2 (CSort n0))))))) with [O \Rightarrow (\lambda 
4715 (H0: (getl O (CHead (CTail k u1 c) k0 t) (CHead c2 (Bind b) u2))).((match k0 
4716 return (\lambda (k1: K).((clear (CHead (CTail k u1 c) k1 t) (CHead c2 (Bind 
4717 b) u2)) \to (or (ex2 C (\lambda (e: C).(eq C c2 (CTail k u1 e))) (\lambda (e: 
4718 C).(getl O (CHead c k1 t) (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: 
4719 nat).(eq nat O (s k1 (clen c)))) (\lambda (_: nat).(eq K k (Bind b))) 
4720 (\lambda (_: nat).(eq T u1 u2)) (\lambda (n: nat).(eq C c2 (CSort n))))))) 
4721 with [(Bind b0) \Rightarrow (\lambda (H1: (clear (CHead (CTail k u1 c) (Bind 
4722 b0) t) (CHead c2 (Bind b) u2))).(let H2 \def (f_equal C C (\lambda (e: 
4723 C).(match e return (\lambda (_: C).C) with [(CSort _) \Rightarrow c2 | (CHead 
4724 c _ _) \Rightarrow c])) (CHead c2 (Bind b) u2) (CHead (CTail k u1 c) (Bind 
4725 b0) t) (clear_gen_bind b0 (CTail k u1 c) (CHead c2 (Bind b) u2) t H1)) in 
4726 ((let H3 \def (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) 
4727 with [(CSort _) \Rightarrow b | (CHead _ k _) \Rightarrow (match k return 
4728 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b])])) 
4729 (CHead c2 (Bind b) u2) (CHead (CTail k u1 c) (Bind b0) t) (clear_gen_bind b0 
4730 (CTail k u1 c) (CHead c2 (Bind b) u2) t H1)) in ((let H4 \def (f_equal C T 
4731 (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort _) 
4732 \Rightarrow u2 | (CHead _ _ t) \Rightarrow t])) (CHead c2 (Bind b) u2) (CHead 
4733 (CTail k u1 c) (Bind b0) t) (clear_gen_bind b0 (CTail k u1 c) (CHead c2 (Bind 
4734 b) u2) t H1)) in (\lambda (H5: (eq B b b0)).(\lambda (H6: (eq C c2 (CTail k 
4735 u1 c))).(eq_ind T u2 (\lambda (t0: T).(or (ex2 C (\lambda (e: C).(eq C c2 
4736 (CTail k u1 e))) (\lambda (e: C).(getl O (CHead c (Bind b0) t0) (CHead e 
4737 (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq nat O (s (Bind b0) (clen c)))) 
4738 (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda 
4739 (n: nat).(eq C c2 (CSort n)))))) (eq_ind B b (\lambda (b1: B).(or (ex2 C 
4740 (\lambda (e: C).(eq C c2 (CTail k u1 e))) (\lambda (e: C).(getl O (CHead c 
4741 (Bind b1) u2) (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq nat O 
4742 (s (Bind b1) (clen c)))) (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: 
4743 nat).(eq T u1 u2)) (\lambda (n: nat).(eq C c2 (CSort n)))))) (let H7 \def 
4744 (eq_ind C c2 (\lambda (c0: C).(\forall (i: nat).((getl i (CTail k u1 c) 
4745 (CHead c0 (Bind b) u2)) \to (or (ex2 C (\lambda (e: C).(eq C c0 (CTail k u1 
4746 e))) (\lambda (e: C).(getl i c (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: 
4747 nat).(eq nat i (clen c))) (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: 
4748 nat).(eq T u1 u2)) (\lambda (n: nat).(eq C c0 (CSort n)))))))) H (CTail k u1 
4749 c) H6) in (eq_ind_r C (CTail k u1 c) (\lambda (c0: C).(or (ex2 C (\lambda (e: 
4750 C).(eq C c0 (CTail k u1 e))) (\lambda (e: C).(getl O (CHead c (Bind b) u2) 
4751 (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq nat O (s (Bind b) 
4752 (clen c)))) (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 
4753 u2)) (\lambda (n: nat).(eq C c0 (CSort n)))))) (or_introl (ex2 C (\lambda (e: 
4754 C).(eq C (CTail k u1 c) (CTail k u1 e))) (\lambda (e: C).(getl O (CHead c 
4755 (Bind b) u2) (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq nat O (s 
4756 (Bind b) (clen c)))) (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: 
4757 nat).(eq T u1 u2)) (\lambda (n: nat).(eq C (CTail k u1 c) (CSort n)))) 
4758 (ex_intro2 C (\lambda (e: C).(eq C (CTail k u1 c) (CTail k u1 e))) (\lambda 
4759 (e: C).(getl O (CHead c (Bind b) u2) (CHead e (Bind b) u2))) c (refl_equal C 
4760 (CTail k u1 c)) (getl_refl b c u2))) c2 H6)) b0 H5) t H4)))) H3)) H2))) | 
4761 (Flat f) \Rightarrow (\lambda (H1: (clear (CHead (CTail k u1 c) (Flat f) t) 
4762 (CHead c2 (Bind b) u2))).(let H2 \def (H O (getl_intro O (CTail k u1 c) 
4763 (CHead c2 (Bind b) u2) (CTail k u1 c) (drop_refl (CTail k u1 c)) 
4764 (clear_gen_flat f (CTail k u1 c) (CHead c2 (Bind b) u2) t H1))) in (or_ind 
4765 (ex2 C (\lambda (e: C).(eq C c2 (CTail k u1 e))) (\lambda (e: C).(getl O c 
4766 (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq nat O (clen c))) 
4767 (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda 
4768 (n: nat).(eq C c2 (CSort n)))) (or (ex2 C (\lambda (e: C).(eq C c2 (CTail k 
4769 u1 e))) (\lambda (e: C).(getl O (CHead c (Flat f) t) (CHead e (Bind b) u2)))) 
4770 (ex4 nat (\lambda (_: nat).(eq nat O (s (Flat f) (clen c)))) (\lambda (_: 
4771 nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda (n: nat).(eq 
4772 C c2 (CSort n))))) (\lambda (H3: (ex2 C (\lambda (e: C).(eq C c2 (CTail k u1 
4773 e))) (\lambda (e: C).(getl O c (CHead e (Bind b) u2))))).(ex2_ind C (\lambda 
4774 (e: C).(eq C c2 (CTail k u1 e))) (\lambda (e: C).(getl O c (CHead e (Bind b) 
4775 u2))) (or (ex2 C (\lambda (e: C).(eq C c2 (CTail k u1 e))) (\lambda (e: 
4776 C).(getl O (CHead c (Flat f) t) (CHead e (Bind b) u2)))) (ex4 nat (\lambda 
4777 (_: nat).(eq nat O (s (Flat f) (clen c)))) (\lambda (_: nat).(eq K k (Bind 
4778 b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda (n: nat).(eq C c2 (CSort n))))) 
4779 (\lambda (x: C).(\lambda (H4: (eq C c2 (CTail k u1 x))).(\lambda (H5: (getl O 
4780 c (CHead x (Bind b) u2))).(eq_ind_r C (CTail k u1 x) (\lambda (c0: C).(or 
4781 (ex2 C (\lambda (e: C).(eq C c0 (CTail k u1 e))) (\lambda (e: C).(getl O 
4782 (CHead c (Flat f) t) (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq 
4783 nat O (s (Flat f) (clen c)))) (\lambda (_: nat).(eq K k (Bind b))) (\lambda 
4784 (_: nat).(eq T u1 u2)) (\lambda (n: nat).(eq C c0 (CSort n)))))) (or_introl 
4785 (ex2 C (\lambda (e: C).(eq C (CTail k u1 x) (CTail k u1 e))) (\lambda (e: 
4786 C).(getl O (CHead c (Flat f) t) (CHead e (Bind b) u2)))) (ex4 nat (\lambda 
4787 (_: nat).(eq nat O (s (Flat f) (clen c)))) (\lambda (_: nat).(eq K k (Bind 
4788 b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda (n: nat).(eq C (CTail k u1 x) 
4789 (CSort n)))) (ex_intro2 C (\lambda (e: C).(eq C (CTail k u1 x) (CTail k u1 
4790 e))) (\lambda (e: C).(getl O (CHead c (Flat f) t) (CHead e (Bind b) u2))) x 
4791 (refl_equal C (CTail k u1 x)) (getl_flat c (CHead x (Bind b) u2) O H5 f t))) 
4792 c2 H4)))) H3)) (\lambda (H3: (ex4 nat (\lambda (_: nat).(eq nat O (clen c))) 
4793 (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda 
4794 (n: nat).(eq C c2 (CSort n))))).(ex4_ind nat (\lambda (_: nat).(eq nat O 
4795 (clen c))) (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 
4796 u2)) (\lambda (n: nat).(eq C c2 (CSort n))) (or (ex2 C (\lambda (e: C).(eq C 
4797 c2 (CTail k u1 e))) (\lambda (e: C).(getl O (CHead c (Flat f) t) (CHead e 
4798 (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq nat O (s (Flat f) (clen c)))) 
4799 (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda 
4800 (n: nat).(eq C c2 (CSort n))))) (\lambda (x0: nat).(\lambda (H4: (eq nat O 
4801 (clen c))).(\lambda (H5: (eq K k (Bind b))).(\lambda (H6: (eq T u1 
4802 u2)).(\lambda (H7: (eq C c2 (CSort x0))).(eq_ind_r C (CSort x0) (\lambda (c0: 
4803 C).(or (ex2 C (\lambda (e: C).(eq C c0 (CTail k u1 e))) (\lambda (e: C).(getl 
4804 O (CHead c (Flat f) t) (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: 
4805 nat).(eq nat O (s (Flat f) (clen c)))) (\lambda (_: nat).(eq K k (Bind b))) 
4806 (\lambda (_: nat).(eq T u1 u2)) (\lambda (n: nat).(eq C c0 (CSort n)))))) 
4807 (eq_ind T u1 (\lambda (t0: T).(or (ex2 C (\lambda (e: C).(eq C (CSort x0) 
4808 (CTail k u1 e))) (\lambda (e: C).(getl O (CHead c (Flat f) t) (CHead e (Bind 
4809 b) t0)))) (ex4 nat (\lambda (_: nat).(eq nat O (s (Flat f) (clen c)))) 
4810 (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 t0)) (\lambda 
4811 (n: nat).(eq C (CSort x0) (CSort n)))))) (eq_ind_r K (Bind b) (\lambda (k1: 
4812 K).(or (ex2 C (\lambda (e: C).(eq C (CSort x0) (CTail k1 u1 e))) (\lambda (e: 
4813 C).(getl O (CHead c (Flat f) t) (CHead e (Bind b) u1)))) (ex4 nat (\lambda 
4814 (_: nat).(eq nat O (s (Flat f) (clen c)))) (\lambda (_: nat).(eq K k1 (Bind 
4815 b))) (\lambda (_: nat).(eq T u1 u1)) (\lambda (n: nat).(eq C (CSort x0) 
4816 (CSort n)))))) (or_intror (ex2 C (\lambda (e: C).(eq C (CSort x0) (CTail 
4817 (Bind b) u1 e))) (\lambda (e: C).(getl O (CHead c (Flat f) t) (CHead e (Bind 
4818 b) u1)))) (ex4 nat (\lambda (_: nat).(eq nat O (s (Flat f) (clen c)))) 
4819 (\lambda (_: nat).(eq K (Bind b) (Bind b))) (\lambda (_: nat).(eq T u1 u1)) 
4820 (\lambda (n: nat).(eq C (CSort x0) (CSort n)))) (ex4_intro nat (\lambda (_: 
4821 nat).(eq nat O (s (Flat f) (clen c)))) (\lambda (_: nat).(eq K (Bind b) (Bind 
4822 b))) (\lambda (_: nat).(eq T u1 u1)) (\lambda (n: nat).(eq C (CSort x0) 
4823 (CSort n))) x0 H4 (refl_equal K (Bind b)) (refl_equal T u1) (refl_equal C 
4824 (CSort x0)))) k H5) u2 H6) c2 H7)))))) H3)) H2)))]) (getl_gen_O (CHead (CTail 
4825 k u1 c) k0 t) (CHead c2 (Bind b) u2) H0))) | (S n) \Rightarrow (\lambda (H0: 
4826 (getl (S n) (CHead (CTail k u1 c) k0 t) (CHead c2 (Bind b) u2))).(let H_x 
4827 \def (H (r k0 n) (getl_gen_S k0 (CTail k u1 c) (CHead c2 (Bind b) u2) t n 
4828 H0)) in (let H1 \def H_x in (or_ind (ex2 C (\lambda (e: C).(eq C c2 (CTail k 
4829 u1 e))) (\lambda (e: C).(getl (r k0 n) c (CHead e (Bind b) u2)))) (ex4 nat 
4830 (\lambda (_: nat).(eq nat (r k0 n) (clen c))) (\lambda (_: nat).(eq K k (Bind 
4831 b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda (n0: nat).(eq C c2 (CSort 
4832 n0)))) (or (ex2 C (\lambda (e: C).(eq C c2 (CTail k u1 e))) (\lambda (e: 
4833 C).(getl (S n) (CHead c k0 t) (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: 
4834 nat).(eq nat (S n) (s k0 (clen c)))) (\lambda (_: nat).(eq K k (Bind b))) 
4835 (\lambda (_: nat).(eq T u1 u2)) (\lambda (n0: nat).(eq C c2 (CSort n0))))) 
4836 (\lambda (H2: (ex2 C (\lambda (e: C).(eq C c2 (CTail k u1 e))) (\lambda (e: 
4837 C).(getl (r k0 n) c (CHead e (Bind b) u2))))).(ex2_ind C (\lambda (e: C).(eq 
4838 C c2 (CTail k u1 e))) (\lambda (e: C).(getl (r k0 n) c (CHead e (Bind b) 
4839 u2))) (or (ex2 C (\lambda (e: C).(eq C c2 (CTail k u1 e))) (\lambda (e: 
4840 C).(getl (S n) (CHead c k0 t) (CHead e (Bind b) u2)))) (ex4 nat (\lambda (_: 
4841 nat).(eq nat (S n) (s k0 (clen c)))) (\lambda (_: nat).(eq K k (Bind b))) 
4842 (\lambda (_: nat).(eq T u1 u2)) (\lambda (n0: nat).(eq C c2 (CSort n0))))) 
4843 (\lambda (x: C).(\lambda (H3: (eq C c2 (CTail k u1 x))).(\lambda (H4: (getl 
4844 (r k0 n) c (CHead x (Bind b) u2))).(let H5 \def (eq_ind C c2 (\lambda (c0: 
4845 C).(getl (r k0 n) (CTail k u1 c) (CHead c0 (Bind b) u2))) (getl_gen_S k0 
4846 (CTail k u1 c) (CHead c2 (Bind b) u2) t n H0) (CTail k u1 x) H3) in (eq_ind_r 
4847 C (CTail k u1 x) (\lambda (c0: C).(or (ex2 C (\lambda (e: C).(eq C c0 (CTail 
4848 k u1 e))) (\lambda (e: C).(getl (S n) (CHead c k0 t) (CHead e (Bind b) u2)))) 
4849 (ex4 nat (\lambda (_: nat).(eq nat (S n) (s k0 (clen c)))) (\lambda (_: 
4850 nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda (n0: 
4851 nat).(eq C c0 (CSort n0)))))) (or_introl (ex2 C (\lambda (e: C).(eq C (CTail 
4852 k u1 x) (CTail k u1 e))) (\lambda (e: C).(getl (S n) (CHead c k0 t) (CHead e 
4853 (Bind b) u2)))) (ex4 nat (\lambda (_: nat).(eq nat (S n) (s k0 (clen c)))) 
4854 (\lambda (_: nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda 
4855 (n0: nat).(eq C (CTail k u1 x) (CSort n0)))) (ex_intro2 C (\lambda (e: C).(eq 
4856 C (CTail k u1 x) (CTail k u1 e))) (\lambda (e: C).(getl (S n) (CHead c k0 t) 
4857 (CHead e (Bind b) u2))) x (refl_equal C (CTail k u1 x)) (getl_head k0 n c 
4858 (CHead x (Bind b) u2) H4 t))) c2 H3))))) H2)) (\lambda (H2: (ex4 nat (\lambda 
4859 (_: nat).(eq nat (r k0 n) (clen c))) (\lambda (_: nat).(eq K k (Bind b))) 
4860 (\lambda (_: nat).(eq T u1 u2)) (\lambda (n: nat).(eq C c2 (CSort 
4861 n))))).(ex4_ind nat (\lambda (_: nat).(eq nat (r k0 n) (clen c))) (\lambda 
4862 (_: nat).(eq K k (Bind b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda (n0: 
4863 nat).(eq C c2 (CSort n0))) (or (ex2 C (\lambda (e: C).(eq C c2 (CTail k u1 
4864 e))) (\lambda (e: C).(getl (S n) (CHead c k0 t) (CHead e (Bind b) u2)))) (ex4 
4865 nat (\lambda (_: nat).(eq nat (S n) (s k0 (clen c)))) (\lambda (_: nat).(eq K 
4866 k (Bind b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda (n0: nat).(eq C c2 
4867 (CSort n0))))) (\lambda (x0: nat).(\lambda (H3: (eq nat (r k0 n) (clen 
4868 c))).(\lambda (H4: (eq K k (Bind b))).(\lambda (H5: (eq T u1 u2)).(\lambda 
4869 (H6: (eq C c2 (CSort x0))).(let H7 \def (eq_ind C c2 (\lambda (c0: C).(getl 
4870 (r k0 n) (CTail k u1 c) (CHead c0 (Bind b) u2))) (getl_gen_S k0 (CTail k u1 
4871 c) (CHead c2 (Bind b) u2) t n H0) (CSort x0) H6) in (eq_ind_r C (CSort x0) 
4872 (\lambda (c0: C).(or (ex2 C (\lambda (e: C).(eq C c0 (CTail k u1 e))) 
4873 (\lambda (e: C).(getl (S n) (CHead c k0 t) (CHead e (Bind b) u2)))) (ex4 nat 
4874 (\lambda (_: nat).(eq nat (S n) (s k0 (clen c)))) (\lambda (_: nat).(eq K k 
4875 (Bind b))) (\lambda (_: nat).(eq T u1 u2)) (\lambda (n0: nat).(eq C c0 (CSort 
4876 n0)))))) (let H8 \def (eq_ind_r T u2 (\lambda (t: T).(getl (r k0 n) (CTail k 
4877 u1 c) (CHead (CSort x0) (Bind b) t))) H7 u1 H5) in (eq_ind T u1 (\lambda (t0: 
4878 T).(or (ex2 C (\lambda (e: C).(eq C (CSort x0) (CTail k u1 e))) (\lambda (e: 
4879 C).(getl (S n) (CHead c k0 t) (CHead e (Bind b) t0)))) (ex4 nat (\lambda (_: 
4880 nat).(eq nat (S n) (s k0 (clen c)))) (\lambda (_: nat).(eq K k (Bind b))) 
4881 (\lambda (_: nat).(eq T u1 t0)) (\lambda (n0: nat).(eq C (CSort x0) (CSort 
4882 n0)))))) (let H9 \def (eq_ind K k (\lambda (k: K).(getl (r k0 n) (CTail k u1 
4883 c) (CHead (CSort x0) (Bind b) u1))) H8 (Bind b) H4) in (eq_ind_r K (Bind b) 
4884 (\lambda (k1: K).(or (ex2 C (\lambda (e: C).(eq C (CSort x0) (CTail k1 u1 
4885 e))) (\lambda (e: C).(getl (S n) (CHead c k0 t) (CHead e (Bind b) u1)))) (ex4 
4886 nat (\lambda (_: nat).(eq nat (S n) (s k0 (clen c)))) (\lambda (_: nat).(eq K 
4887 k1 (Bind b))) (\lambda (_: nat).(eq T u1 u1)) (\lambda (n0: nat).(eq C (CSort 
4888 x0) (CSort n0)))))) (eq_ind nat (r k0 n) (\lambda (n0: nat).(or (ex2 C 
4889 (\lambda (e: C).(eq C (CSort x0) (CTail (Bind b) u1 e))) (\lambda (e: 
4890 C).(getl (S n) (CHead c k0 t) (CHead e (Bind b) u1)))) (ex4 nat (\lambda (_: 
4891 nat).(eq nat (S n) (s k0 n0))) (\lambda (_: nat).(eq K (Bind b) (Bind b))) 
4892 (\lambda (_: nat).(eq T u1 u1)) (\lambda (n1: nat).(eq C (CSort x0) (CSort 
4893 n1)))))) (eq_ind_r nat (S n) (\lambda (n0: nat).(or (ex2 C (\lambda (e: 
4894 C).(eq C (CSort x0) (CTail (Bind b) u1 e))) (\lambda (e: C).(getl (S n) 
4895 (CHead c k0 t) (CHead e (Bind b) u1)))) (ex4 nat (\lambda (_: nat).(eq nat (S 
4896 n) n0)) (\lambda (_: nat).(eq K (Bind b) (Bind b))) (\lambda (_: nat).(eq T 
4897 u1 u1)) (\lambda (n1: nat).(eq C (CSort x0) (CSort n1)))))) (or_intror (ex2 C 
4898 (\lambda (e: C).(eq C (CSort x0) (CTail (Bind b) u1 e))) (\lambda (e: 
4899 C).(getl (S n) (CHead c k0 t) (CHead e (Bind b) u1)))) (ex4 nat (\lambda (_: 
4900 nat).(eq nat (S n) (S n))) (\lambda (_: nat).(eq K (Bind b) (Bind b))) 
4901 (\lambda (_: nat).(eq T u1 u1)) (\lambda (n0: nat).(eq C (CSort x0) (CSort 
4902 n0)))) (ex4_intro nat (\lambda (_: nat).(eq nat (S n) (S n))) (\lambda (_: 
4903 nat).(eq K (Bind b) (Bind b))) (\lambda (_: nat).(eq T u1 u1)) (\lambda (n0: 
4904 nat).(eq C (CSort x0) (CSort n0))) x0 (refl_equal nat (S n)) (refl_equal K 
4905 (Bind b)) (refl_equal T u1) (refl_equal C (CSort x0)))) (s k0 (r k0 n)) (s_r 
4906 k0 n)) (clen c) H3) k H4)) u2 H5)) c2 H6))))))) H2)) H1))))])))))) c1)))))).
4907
4908 theorem cimp_flat_sx:
4909  \forall (f: F).(\forall (c: C).(\forall (v: T).(cimp (CHead c (Flat f) v) 
4910 c)))
4911 \def
4912  \lambda (f: F).(\lambda (c: C).(\lambda (v: T).(\lambda (b: B).(\lambda (d1: 
4913 C).(\lambda (w: T).(\lambda (h: nat).(\lambda (H: (getl h (CHead c (Flat f) 
4914 v) (CHead d1 (Bind b) w))).((match h return (\lambda (n: nat).((getl n (CHead 
4915 c (Flat f) v) (CHead d1 (Bind b) w)) \to (ex C (\lambda (d2: C).(getl n c 
4916 (CHead d2 (Bind b) w)))))) with [O \Rightarrow (\lambda (H0: (getl O (CHead c 
4917 (Flat f) v) (CHead d1 (Bind b) w))).(ex_intro C (\lambda (d2: C).(getl O c 
4918 (CHead d2 (Bind b) w))) d1 (getl_intro O c (CHead d1 (Bind b) w) c (drop_refl 
4919 c) (clear_gen_flat f c (CHead d1 (Bind b) w) v (getl_gen_O (CHead c (Flat f) 
4920 v) (CHead d1 (Bind b) w) H0))))) | (S n) \Rightarrow (\lambda (H0: (getl (S 
4921 n) (CHead c (Flat f) v) (CHead d1 (Bind b) w))).(ex_intro C (\lambda (d2: 
4922 C).(getl (S n) c (CHead d2 (Bind b) w))) d1 (getl_gen_S (Flat f) c (CHead d1 
4923 (Bind b) w) v n H0)))]) H)))))))).
4924
4925 theorem cimp_flat_dx:
4926  \forall (f: F).(\forall (c: C).(\forall (v: T).(cimp c (CHead c (Flat f) 
4927 v))))
4928 \def
4929  \lambda (f: F).(\lambda (c: C).(\lambda (v: T).(\lambda (b: B).(\lambda (d1: 
4930 C).(\lambda (w: T).(\lambda (h: nat).(\lambda (H: (getl h c (CHead d1 (Bind 
4931 b) w))).(ex_intro C (\lambda (d2: C).(getl h (CHead c (Flat f) v) (CHead d2 
4932 (Bind b) w))) d1 (getl_flat c (CHead d1 (Bind b) w) h H f v))))))))).
4933
4934 theorem cimp_bind:
4935  \forall (c1: C).(\forall (c2: C).((cimp c1 c2) \to (\forall (b: B).(\forall 
4936 (v: T).(cimp (CHead c1 (Bind b) v) (CHead c2 (Bind b) v))))))
4937 \def
4938  \lambda (c1: C).(\lambda (c2: C).(\lambda (H: ((\forall (b: B).(\forall (d1: 
4939 C).(\forall (w: T).(\forall (h: nat).((getl h c1 (CHead d1 (Bind b) w)) \to 
4940 (ex C (\lambda (d2: C).(getl h c2 (CHead d2 (Bind b) w))))))))))).(\lambda 
4941 (b: B).(\lambda (v: T).(\lambda (b0: B).(\lambda (d1: C).(\lambda (w: 
4942 T).(\lambda (h: nat).(\lambda (H0: (getl h (CHead c1 (Bind b) v) (CHead d1 
4943 (Bind b0) w))).((match h return (\lambda (n: nat).((getl n (CHead c1 (Bind b) 
4944 v) (CHead d1 (Bind b0) w)) \to (ex C (\lambda (d2: C).(getl n (CHead c2 (Bind 
4945 b) v) (CHead d2 (Bind b0) w)))))) with [O \Rightarrow (\lambda (H1: (getl O 
4946 (CHead c1 (Bind b) v) (CHead d1 (Bind b0) w))).(let H2 \def (f_equal C C 
4947 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
4948 \Rightarrow d1 | (CHead c _ _) \Rightarrow c])) (CHead d1 (Bind b0) w) (CHead 
4949 c1 (Bind b) v) (clear_gen_bind b c1 (CHead d1 (Bind b0) w) v (getl_gen_O 
4950 (CHead c1 (Bind b) v) (CHead d1 (Bind b0) w) H1))) in ((let H3 \def (f_equal 
4951 C B (\lambda (e: C).(match e return (\lambda (_: C).B) with [(CSort _) 
4952 \Rightarrow b0 | (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).B) 
4953 with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b0])])) (CHead d1 (Bind 
4954 b0) w) (CHead c1 (Bind b) v) (clear_gen_bind b c1 (CHead d1 (Bind b0) w) v 
4955 (getl_gen_O (CHead c1 (Bind b) v) (CHead d1 (Bind b0) w) H1))) in ((let H4 
4956 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
4957 [(CSort _) \Rightarrow w | (CHead _ _ t) \Rightarrow t])) (CHead d1 (Bind b0) 
4958 w) (CHead c1 (Bind b) v) (clear_gen_bind b c1 (CHead d1 (Bind b0) w) v 
4959 (getl_gen_O (CHead c1 (Bind b) v) (CHead d1 (Bind b0) w) H1))) in (\lambda 
4960 (H5: (eq B b0 b)).(\lambda (_: (eq C d1 c1)).(eq_ind_r T v (\lambda (t: 
4961 T).(ex C (\lambda (d2: C).(getl O (CHead c2 (Bind b) v) (CHead d2 (Bind b0) 
4962 t))))) (eq_ind_r B b (\lambda (b1: B).(ex C (\lambda (d2: C).(getl O (CHead 
4963 c2 (Bind b) v) (CHead d2 (Bind b1) v))))) (ex_intro C (\lambda (d2: C).(getl 
4964 O (CHead c2 (Bind b) v) (CHead d2 (Bind b) v))) c2 (getl_refl b c2 v)) b0 H5) 
4965 w H4)))) H3)) H2))) | (S n) \Rightarrow (\lambda (H1: (getl (S n) (CHead c1 
4966 (Bind b) v) (CHead d1 (Bind b0) w))).(let H_x \def (H b0 d1 w (r (Bind b) n) 
4967 (getl_gen_S (Bind b) c1 (CHead d1 (Bind b0) w) v n H1)) in (let H2 \def H_x 
4968 in (ex_ind C (\lambda (d2: C).(getl (r (Bind b) n) c2 (CHead d2 (Bind b0) 
4969 w))) (ex C (\lambda (d2: C).(getl (S n) (CHead c2 (Bind b) v) (CHead d2 (Bind 
4970 b0) w)))) (\lambda (x: C).(\lambda (H3: (getl (r (Bind b) n) c2 (CHead x 
4971 (Bind b0) w))).(ex_intro C (\lambda (d2: C).(getl (S n) (CHead c2 (Bind b) v) 
4972 (CHead d2 (Bind b0) w))) x (getl_head (Bind b) n c2 (CHead x (Bind b0) w) H3 
4973 v)))) H2))))]) H0)))))))))).
4974
4975 theorem getl_mono:
4976  \forall (c: C).(\forall (x1: C).(\forall (h: nat).((getl h c x1) \to 
4977 (\forall (x2: C).((getl h c x2) \to (eq C x1 x2))))))
4978 \def
4979  \lambda (c: C).(\lambda (x1: C).(\lambda (h: nat).(\lambda (H: (getl h c 
4980 x1)).(\lambda (x2: C).(\lambda (H0: (getl h c x2)).(let H1 \def (getl_gen_all 
4981 c x2 h H0) in (ex2_ind C (\lambda (e: C).(drop h O c e)) (\lambda (e: 
4982 C).(clear e x2)) (eq C x1 x2) (\lambda (x: C).(\lambda (H2: (drop h O c 
4983 x)).(\lambda (H3: (clear x x2)).(let H4 \def (getl_gen_all c x1 h H) in 
4984 (ex2_ind C (\lambda (e: C).(drop h O c e)) (\lambda (e: C).(clear e x1)) (eq 
4985 C x1 x2) (\lambda (x0: C).(\lambda (H5: (drop h O c x0)).(\lambda (H6: (clear 
4986 x0 x1)).(let H7 \def (eq_ind C x (\lambda (c0: C).(drop h O c c0)) H2 x0 
4987 (drop_mono c x O h H2 x0 H5)) in (let H8 \def (eq_ind_r C x0 (\lambda (c0: 
4988 C).(drop h O c c0)) H7 x (drop_mono c x O h H2 x0 H5)) in (let H9 \def 
4989 (eq_ind_r C x0 (\lambda (c: C).(clear c x1)) H6 x (drop_mono c x O h H2 x0 
4990 H5)) in (clear_mono x x1 H9 x2 H3))))))) H4))))) H1))))))).
4991
4992 theorem getl_clear_conf:
4993  \forall (i: nat).(\forall (c1: C).(\forall (c3: C).((getl i c1 c3) \to 
4994 (\forall (c2: C).((clear c1 c2) \to (getl i c2 c3))))))
4995 \def
4996  \lambda (i: nat).(nat_ind (\lambda (n: nat).(\forall (c1: C).(\forall (c3: 
4997 C).((getl n c1 c3) \to (\forall (c2: C).((clear c1 c2) \to (getl n c2 
4998 c3))))))) (\lambda (c1: C).(\lambda (c3: C).(\lambda (H: (getl O c1 
4999 c3)).(\lambda (c2: C).(\lambda (H0: (clear c1 c2)).(eq_ind C c3 (\lambda (c: 
5000 C).(getl O c c3)) (let H1 \def (clear_gen_all c1 c3 (getl_gen_O c1 c3 H)) in 
5001 (ex_3_ind B C T (\lambda (b: B).(\lambda (e: C).(\lambda (u: T).(eq C c3 
5002 (CHead e (Bind b) u))))) (getl O c3 c3) (\lambda (x0: B).(\lambda (x1: 
5003 C).(\lambda (x2: T).(\lambda (H2: (eq C c3 (CHead x1 (Bind x0) x2))).(let H3 
5004 \def (eq_ind C c3 (\lambda (c: C).(clear c1 c)) (getl_gen_O c1 c3 H) (CHead 
5005 x1 (Bind x0) x2) H2) in (eq_ind_r C (CHead x1 (Bind x0) x2) (\lambda (c: 
5006 C).(getl O c c)) (getl_refl x0 x1 x2) c3 H2)))))) H1)) c2 (clear_mono c1 c3 
5007 (getl_gen_O c1 c3 H) c2 H0))))))) (\lambda (n: nat).(\lambda (_: ((\forall 
5008 (c1: C).(\forall (c3: C).((getl n c1 c3) \to (\forall (c2: C).((clear c1 c2) 
5009 \to (getl n c2 c3)))))))).(\lambda (c1: C).(C_ind (\lambda (c: C).(\forall 
5010 (c3: C).((getl (S n) c c3) \to (\forall (c2: C).((clear c c2) \to (getl (S n) 
5011 c2 c3)))))) (\lambda (n0: nat).(\lambda (c3: C).(\lambda (H0: (getl (S n) 
5012 (CSort n0) c3)).(\lambda (c2: C).(\lambda (_: (clear (CSort n0) 
5013 c2)).(getl_gen_sort n0 (S n) c3 H0 (getl (S n) c2 c3))))))) (\lambda (c: 
5014 C).(\lambda (H0: ((\forall (c3: C).((getl (S n) c c3) \to (\forall (c2: 
5015 C).((clear c c2) \to (getl (S n) c2 c3))))))).(\lambda (k: K).(\lambda (t: 
5016 T).(\lambda (c3: C).(\lambda (H1: (getl (S n) (CHead c k t) c3)).(\lambda 
5017 (c2: C).(\lambda (H2: (clear (CHead c k t) c2)).((match k return (\lambda 
5018 (k0: K).((getl (S n) (CHead c k0 t) c3) \to ((clear (CHead c k0 t) c2) \to 
5019 (getl (S n) c2 c3)))) with [(Bind b) \Rightarrow (\lambda (H3: (getl (S n) 
5020 (CHead c (Bind b) t) c3)).(\lambda (H4: (clear (CHead c (Bind b) t) 
5021 c2)).(eq_ind_r C (CHead c (Bind b) t) (\lambda (c0: C).(getl (S n) c0 c3)) 
5022 (getl_head (Bind b) n c c3 (getl_gen_S (Bind b) c c3 t n H3) t) c2 
5023 (clear_gen_bind b c c2 t H4)))) | (Flat f) \Rightarrow (\lambda (H3: (getl (S 
5024 n) (CHead c (Flat f) t) c3)).(\lambda (H4: (clear (CHead c (Flat f) t) 
5025 c2)).(H0 c3 (getl_gen_S (Flat f) c c3 t n H3) c2 (clear_gen_flat f c c2 t 
5026 H4))))]) H1 H2))))))))) c1)))) i).
5027
5028 theorem getl_drop_conf_lt:
5029  \forall (b: B).(\forall (c: C).(\forall (c0: C).(\forall (u: T).(\forall (i: 
5030 nat).((getl i c (CHead c0 (Bind b) u)) \to (\forall (e: C).(\forall (h: 
5031 nat).(\forall (d: nat).((drop h (S (plus i d)) c e) \to (ex3_2 T C (\lambda 
5032 (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
5033 C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop 
5034 h d c0 e0)))))))))))))
5035 \def
5036  \lambda (b: B).(\lambda (c: C).(C_ind (\lambda (c0: C).(\forall (c1: 
5037 C).(\forall (u: T).(\forall (i: nat).((getl i c0 (CHead c1 (Bind b) u)) \to 
5038 (\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h (S (plus i d)) 
5039 c0 e) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
5040 (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda 
5041 (_: T).(\lambda (e0: C).(drop h d c1 e0))))))))))))) (\lambda (n: 
5042 nat).(\lambda (c0: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H: (getl i 
5043 (CSort n) (CHead c0 (Bind b) u))).(\lambda (e: C).(\lambda (h: nat).(\lambda 
5044 (d: nat).(\lambda (_: (drop h (S (plus i d)) (CSort n) e)).(getl_gen_sort n i 
5045 (CHead c0 (Bind b) u) H (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u 
5046 (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) 
5047 v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c0 e0)))))))))))))) (\lambda 
5048 (c0: C).(\lambda (H: ((\forall (c1: C).(\forall (u: T).(\forall (i: 
5049 nat).((getl i c0 (CHead c1 (Bind b) u)) \to (\forall (e: C).(\forall (h: 
5050 nat).(\forall (d: nat).((drop h (S (plus i d)) c0 e) \to (ex3_2 T C (\lambda 
5051 (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
5052 C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop 
5053 h d c1 e0)))))))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c1: 
5054 C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i (CHead c0 k t) 
5055 (CHead c1 (Bind b) u))).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: 
5056 nat).(\lambda (H1: (drop h (S (plus i d)) (CHead c0 k t) e)).(let H2 \def 
5057 (getl_gen_all (CHead c0 k t) (CHead c1 (Bind b) u) i H0) in (ex2_ind C 
5058 (\lambda (e0: C).(drop i O (CHead c0 k t) e0)) (\lambda (e0: C).(clear e0 
5059 (CHead c1 (Bind b) u))) (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u 
5060 (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) 
5061 v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0)))) (\lambda (x: 
5062 C).(\lambda (H3: (drop i O (CHead c0 k t) x)).(\lambda (H4: (clear x (CHead 
5063 c1 (Bind b) u))).((match x return (\lambda (c2: C).((drop i O (CHead c0 k t) 
5064 c2) \to ((clear c2 (CHead c1 (Bind b) u)) \to (ex3_2 T C (\lambda (v: 
5065 T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
5066 C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop 
5067 h d c1 e0))))))) with [(CSort n) \Rightarrow (\lambda (_: (drop i O (CHead c0 
5068 k t) (CSort n))).(\lambda (H6: (clear (CSort n) (CHead c1 (Bind b) 
5069 u))).(clear_gen_sort (CHead c1 (Bind b) u) n H6 (ex3_2 T C (\lambda (v: 
5070 T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
5071 C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop 
5072 h d c1 e0))))))) | (CHead c2 k0 t0) \Rightarrow (\lambda (H5: (drop i O 
5073 (CHead c0 k t) (CHead c2 k0 t0))).(\lambda (H6: (clear (CHead c2 k0 t0) 
5074 (CHead c1 (Bind b) u))).((match k0 return (\lambda (k1: K).((drop i O (CHead 
5075 c0 k t) (CHead c2 k1 t0)) \to ((clear (CHead c2 k1 t0) (CHead c1 (Bind b) u)) 
5076 \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
5077 (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda 
5078 (_: T).(\lambda (e0: C).(drop h d c1 e0))))))) with [(Bind b0) \Rightarrow 
5079 (\lambda (H7: (drop i O (CHead c0 k t) (CHead c2 (Bind b0) t0))).(\lambda 
5080 (H8: (clear (CHead c2 (Bind b0) t0) (CHead c1 (Bind b) u))).(let H9 \def 
5081 (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
5082 [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 (Bind b) 
5083 u) (CHead c2 (Bind b0) t0) (clear_gen_bind b0 c2 (CHead c1 (Bind b) u) t0 
5084 H8)) in ((let H10 \def (f_equal C B (\lambda (e0: C).(match e0 return 
5085 (\lambda (_: C).B) with [(CSort _) \Rightarrow b | (CHead _ k _) \Rightarrow 
5086 (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) 
5087 \Rightarrow b])])) (CHead c1 (Bind b) u) (CHead c2 (Bind b0) t0) 
5088 (clear_gen_bind b0 c2 (CHead c1 (Bind b) u) t0 H8)) in ((let H11 \def 
5089 (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
5090 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead c1 (Bind b) 
5091 u) (CHead c2 (Bind b0) t0) (clear_gen_bind b0 c2 (CHead c1 (Bind b) u) t0 
5092 H8)) in (\lambda (H12: (eq B b b0)).(\lambda (H13: (eq C c1 c2)).(let H14 
5093 \def (eq_ind_r T t0 (\lambda (t0: T).(drop i O (CHead c0 k t) (CHead c2 (Bind 
5094 b0) t0))) H7 u H11) in (let H15 \def (eq_ind_r B b0 (\lambda (b: B).(drop i O 
5095 (CHead c0 k t) (CHead c2 (Bind b) u))) H14 b H12) in (let H16 \def (eq_ind_r 
5096 C c2 (\lambda (c: C).(drop i O (CHead c0 k t) (CHead c (Bind b) u))) H15 c1 
5097 H13) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h (r 
5098 (Bind b) d) v)))) (\lambda (v: T).(\lambda (e0: C).(drop i O e (CHead e0 
5099 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h (r (Bind b) d) c1 
5100 e0))) (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
5101 (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda 
5102 (_: T).(\lambda (e0: C).(drop h d c1 e0)))) (\lambda (x0: T).(\lambda (x1: 
5103 C).(\lambda (H17: (eq T u (lift h (r (Bind b) d) x0))).(\lambda (H18: (drop i 
5104 O e (CHead x1 (Bind b) x0))).(\lambda (H19: (drop h (r (Bind b) d) c1 
5105 x1)).(eq_ind_r T (lift h (r (Bind b) d) x0) (\lambda (t1: T).(ex3_2 T C 
5106 (\lambda (v: T).(\lambda (_: C).(eq T t1 (lift h d v)))) (\lambda (v: 
5107 T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: 
5108 T).(\lambda (e0: C).(drop h d c1 e0))))) (ex3_2_intro T C (\lambda (v: 
5109 T).(\lambda (_: C).(eq T (lift h (r (Bind b) d) x0) (lift h d v)))) (\lambda 
5110 (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: 
5111 T).(\lambda (e0: C).(drop h d c1 e0))) x0 x1 (refl_equal T (lift h d x0)) 
5112 (getl_intro i e (CHead x1 (Bind b) x0) (CHead x1 (Bind b) x0) H18 (clear_bind 
5113 b x1 x0)) H19) u H17)))))) (drop_conf_lt (Bind b) i u c1 (CHead c0 k t) H16 e 
5114 h d H1)))))))) H10)) H9)))) | (Flat f) \Rightarrow (\lambda (H7: (drop i O 
5115 (CHead c0 k t) (CHead c2 (Flat f) t0))).(\lambda (H8: (clear (CHead c2 (Flat 
5116 f) t0) (CHead c1 (Bind b) u))).((match i return (\lambda (n: nat).((drop h (S 
5117 (plus n d)) (CHead c0 k t) e) \to ((drop n O (CHead c0 k t) (CHead c2 (Flat 
5118 f) t0)) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d 
5119 v)))) (\lambda (v: T).(\lambda (e0: C).(getl n e (CHead e0 (Bind b) v)))) 
5120 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))))) with [O \Rightarrow 
5121 (\lambda (H9: (drop h (S (plus O d)) (CHead c0 k t) e)).(\lambda (H10: (drop 
5122 O O (CHead c0 k t) (CHead c2 (Flat f) t0))).(let H11 \def (f_equal C C 
5123 (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with [(CSort _) 
5124 \Rightarrow c0 | (CHead c _ _) \Rightarrow c])) (CHead c0 k t) (CHead c2 
5125 (Flat f) t0) (drop_gen_refl (CHead c0 k t) (CHead c2 (Flat f) t0) H10)) in 
5126 ((let H12 \def (f_equal C K (\lambda (e0: C).(match e0 return (\lambda (_: 
5127 C).K) with [(CSort _) \Rightarrow k | (CHead _ k _) \Rightarrow k])) (CHead 
5128 c0 k t) (CHead c2 (Flat f) t0) (drop_gen_refl (CHead c0 k t) (CHead c2 (Flat 
5129 f) t0) H10)) in ((let H13 \def (f_equal C T (\lambda (e0: C).(match e0 return 
5130 (\lambda (_: C).T) with [(CSort _) \Rightarrow t | (CHead _ _ t) \Rightarrow 
5131 t])) (CHead c0 k t) (CHead c2 (Flat f) t0) (drop_gen_refl (CHead c0 k t) 
5132 (CHead c2 (Flat f) t0) H10)) in (\lambda (H14: (eq K k (Flat f))).(\lambda 
5133 (H15: (eq C c0 c2)).(let H16 \def (eq_ind_r C c2 (\lambda (c: C).(clear c 
5134 (CHead c1 (Bind b) u))) (clear_gen_flat f c2 (CHead c1 (Bind b) u) t0 H8) c0 
5135 H15) in (let H17 \def (eq_ind K k (\lambda (k: K).(drop h (S (plus O d)) 
5136 (CHead c0 k t) e)) H9 (Flat f) H14) in (ex3_2_ind C T (\lambda (e0: 
5137 C).(\lambda (v: T).(eq C e (CHead e0 (Flat f) v)))) (\lambda (_: C).(\lambda 
5138 (v: T).(eq T t (lift h (r (Flat f) (plus O d)) v)))) (\lambda (e0: 
5139 C).(\lambda (_: T).(drop h (r (Flat f) (plus O d)) c0 e0))) (ex3_2 T C 
5140 (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: 
5141 T).(\lambda (e0: C).(getl O e (CHead e0 (Bind b) v)))) (\lambda (_: 
5142 T).(\lambda (e0: C).(drop h d c1 e0)))) (\lambda (x0: C).(\lambda (x1: 
5143 T).(\lambda (H18: (eq C e (CHead x0 (Flat f) x1))).(\lambda (H19: (eq T t 
5144 (lift h (r (Flat f) (plus O d)) x1))).(\lambda (H20: (drop h (r (Flat f) 
5145 (plus O d)) c0 x0)).(let H21 \def (f_equal T T (\lambda (e0: T).e0) t (lift h 
5146 (r (Flat f) (plus O d)) x1) H19) in (eq_ind_r C (CHead x0 (Flat f) x1) 
5147 (\lambda (c3: C).(ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d 
5148 v)))) (\lambda (v: T).(\lambda (e0: C).(getl O c3 (CHead e0 (Bind b) v)))) 
5149 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))) (let H22 \def (H c1 u O 
5150 (getl_intro O c0 (CHead c1 (Bind b) u) c0 (drop_refl c0) H16) x0 h d H20) in 
5151 (ex3_2_ind T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
5152 (\lambda (v: T).(\lambda (e0: C).(getl O x0 (CHead e0 (Bind b) v)))) (\lambda 
5153 (_: T).(\lambda (e0: C).(drop h d c1 e0))) (ex3_2 T C (\lambda (v: 
5154 T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
5155 C).(getl O (CHead x0 (Flat f) x1) (CHead e0 (Bind b) v)))) (\lambda (_: 
5156 T).(\lambda (e0: C).(drop h d c1 e0)))) (\lambda (x2: T).(\lambda (x3: 
5157 C).(\lambda (H23: (eq T u (lift h d x2))).(\lambda (H24: (getl O x0 (CHead x3 
5158 (Bind b) x2))).(\lambda (H25: (drop h d c1 x3)).(let H26 \def (eq_ind T u 
5159 (\lambda (t: T).(clear c0 (CHead c1 (Bind b) t))) H16 (lift h d x2) H23) in 
5160 (eq_ind_r T (lift h d x2) (\lambda (t1: T).(ex3_2 T C (\lambda (v: 
5161 T).(\lambda (_: C).(eq T t1 (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
5162 C).(getl O (CHead x0 (Flat f) x1) (CHead e0 (Bind b) v)))) (\lambda (_: 
5163 T).(\lambda (e0: C).(drop h d c1 e0))))) (ex3_2_intro T C (\lambda (v: 
5164 T).(\lambda (_: C).(eq T (lift h d x2) (lift h d v)))) (\lambda (v: 
5165 T).(\lambda (e0: C).(getl O (CHead x0 (Flat f) x1) (CHead e0 (Bind b) v)))) 
5166 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))) x2 x3 (refl_equal T (lift 
5167 h d x2)) (getl_flat x0 (CHead x3 (Bind b) x2) O H24 f x1) H25) u H23))))))) 
5168 H22)) e H18))))))) (drop_gen_skip_l c0 e t h (plus O d) (Flat f) H17))))))) 
5169 H12)) H11)))) | (S n) \Rightarrow (\lambda (H9: (drop h (S (plus (S n) d)) 
5170 (CHead c0 k t) e)).(\lambda (H10: (drop (S n) O (CHead c0 k t) (CHead c2 
5171 (Flat f) t0))).(ex3_2_ind C T (\lambda (e0: C).(\lambda (v: T).(eq C e (CHead 
5172 e0 k v)))) (\lambda (_: C).(\lambda (v: T).(eq T t (lift h (r k (plus (S n) 
5173 d)) v)))) (\lambda (e0: C).(\lambda (_: T).(drop h (r k (plus (S n) d)) c0 
5174 e0))) (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
5175 (\lambda (v: T).(\lambda (e0: C).(getl (S n) e (CHead e0 (Bind b) v)))) 
5176 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0)))) (\lambda (x0: 
5177 C).(\lambda (x1: T).(\lambda (H11: (eq C e (CHead x0 k x1))).(\lambda (H12: 
5178 (eq T t (lift h (r k (plus (S n) d)) x1))).(\lambda (H13: (drop h (r k (plus 
5179 (S n) d)) c0 x0)).(let H14 \def (f_equal T T (\lambda (e0: T).e0) t (lift h 
5180 (r k (plus (S n) d)) x1) H12) in (eq_ind_r C (CHead x0 k x1) (\lambda (c3: 
5181 C).(ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
5182 (\lambda (v: T).(\lambda (e0: C).(getl (S n) c3 (CHead e0 (Bind b) v)))) 
5183 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))) (let H15 \def (eq_ind 
5184 nat (r k (plus (S n) d)) (\lambda (n: nat).(drop h n c0 x0)) H13 (plus (r k 
5185 (S n)) d) (r_plus k (S n) d)) in (let H16 \def (eq_ind nat (r k (S n)) 
5186 (\lambda (n: nat).(drop h (plus n d) c0 x0)) H15 (S (r k n)) (r_S k n)) in 
5187 (let H17 \def (H c1 u (r k n) (getl_intro (r k n) c0 (CHead c1 (Bind b) u) 
5188 (CHead c2 (Flat f) t0) (drop_gen_drop k c0 (CHead c2 (Flat f) t0) t n H10) 
5189 (clear_flat c2 (CHead c1 (Bind b) u) (clear_gen_flat f c2 (CHead c1 (Bind b) 
5190 u) t0 H8) f t0)) x0 h d H16) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: 
5191 C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl (r k n) x0 
5192 (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))) 
5193 (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda 
5194 (v: T).(\lambda (e0: C).(getl (S n) (CHead x0 k x1) (CHead e0 (Bind b) v)))) 
5195 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0)))) (\lambda (x2: 
5196 T).(\lambda (x3: C).(\lambda (H18: (eq T u (lift h d x2))).(\lambda (H19: 
5197 (getl (r k n) x0 (CHead x3 (Bind b) x2))).(\lambda (H20: (drop h d c1 
5198 x3)).(let H21 \def (eq_ind T u (\lambda (t: T).(clear c2 (CHead c1 (Bind b) 
5199 t))) (clear_gen_flat f c2 (CHead c1 (Bind b) u) t0 H8) (lift h d x2) H18) in 
5200 (eq_ind_r T (lift h d x2) (\lambda (t1: T).(ex3_2 T C (\lambda (v: 
5201 T).(\lambda (_: C).(eq T t1 (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
5202 C).(getl (S n) (CHead x0 k x1) (CHead e0 (Bind b) v)))) (\lambda (_: 
5203 T).(\lambda (e0: C).(drop h d c1 e0))))) (ex3_2_intro T C (\lambda (v: 
5204 T).(\lambda (_: C).(eq T (lift h d x2) (lift h d v)))) (\lambda (v: 
5205 T).(\lambda (e0: C).(getl (S n) (CHead x0 k x1) (CHead e0 (Bind b) v)))) 
5206 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))) x2 x3 (refl_equal T (lift 
5207 h d x2)) (getl_head k n x0 (CHead x3 (Bind b) x2) H19 x1) H20) u H18))))))) 
5208 H17)))) e H11))))))) (drop_gen_skip_l c0 e t h (plus (S n) d) k H9))))]) H1 
5209 H7)))]) H5 H6)))]) H3 H4)))) H2)))))))))))))) c)).
5210
5211 theorem getl_drop_conf_ge:
5212  \forall (i: nat).(\forall (a: C).(\forall (c: C).((getl i c a) \to (\forall 
5213 (e: C).(\forall (h: nat).(\forall (d: nat).((drop h d c e) \to ((le (plus d 
5214 h) i) \to (getl (minus i h) e a)))))))))
5215 \def
5216  \lambda (i: nat).(\lambda (a: C).(\lambda (c: C).(\lambda (H: (getl i c 
5217 a)).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H0: (drop h 
5218 d c e)).(\lambda (H1: (le (plus d h) i)).(let H2 \def (getl_gen_all c a i H) 
5219 in (ex2_ind C (\lambda (e0: C).(drop i O c e0)) (\lambda (e0: C).(clear e0 
5220 a)) (getl (minus i h) e a) (\lambda (x: C).(\lambda (H3: (drop i O c 
5221 x)).(\lambda (H4: (clear x a)).(getl_intro (minus i h) e a x (drop_conf_ge i 
5222 x c H3 e h d H0 H1) H4)))) H2)))))))))).
5223
5224 theorem getl_conf_ge_drop:
5225  \forall (b: B).(\forall (c1: C).(\forall (e: C).(\forall (u: T).(\forall (i: 
5226 nat).((getl i c1 (CHead e (Bind b) u)) \to (\forall (c2: C).((drop (S O) i c1 
5227 c2) \to (drop i O c2 e))))))))
5228 \def
5229  \lambda (b: B).(\lambda (c1: C).(\lambda (e: C).(\lambda (u: T).(\lambda (i: 
5230 nat).(\lambda (H: (getl i c1 (CHead e (Bind b) u))).(\lambda (c2: C).(\lambda 
5231 (H0: (drop (S O) i c1 c2)).(let H3 \def (eq_ind nat (minus (S i) (S O)) 
5232 (\lambda (n: nat).(drop n O c2 e)) (drop_conf_ge (S i) e c1 (getl_drop b c1 e 
5233 u i H) c2 (S O) i H0 (eq_ind_r nat (plus (S O) i) (\lambda (n: nat).(le n (S 
5234 i))) (le_n (S i)) (plus i (S O)) (plus_comm i (S O)))) i (minus_Sx_SO i)) in 
5235 H3)))))))).
5236
5237 theorem getl_conf_le:
5238  \forall (i: nat).(\forall (a: C).(\forall (c: C).((getl i c a) \to (\forall 
5239 (e: C).(\forall (h: nat).((getl h c e) \to ((le h i) \to (getl (minus i h) e 
5240 a))))))))
5241 \def
5242  \lambda (i: nat).(\lambda (a: C).(\lambda (c: C).(\lambda (H: (getl i c 
5243 a)).(\lambda (e: C).(\lambda (h: nat).(\lambda (H0: (getl h c e)).(\lambda 
5244 (H1: (le h i)).(let H2 \def (getl_gen_all c e h H0) in (ex2_ind C (\lambda 
5245 (e0: C).(drop h O c e0)) (\lambda (e0: C).(clear e0 e)) (getl (minus i h) e 
5246 a) (\lambda (x: C).(\lambda (H3: (drop h O c x)).(\lambda (H4: (clear x 
5247 e)).(getl_clear_conf (minus i h) x a (getl_drop_conf_ge i a c H x h O H3 H1) 
5248 e H4)))) H2))))))))).
5249
5250 theorem getl_drop_conf_rev:
5251  \forall (j: nat).(\forall (e1: C).(\forall (e2: C).((drop j O e1 e2) \to 
5252 (\forall (b: B).(\forall (c2: C).(\forall (v2: T).(\forall (i: nat).((getl i 
5253 c2 (CHead e2 (Bind b) v2)) \to (ex2 C (\lambda (c1: C).(drop j O c1 c2)) 
5254 (\lambda (c1: C).(drop (S i) j c1 e1)))))))))))
5255 \def
5256  \lambda (j: nat).(\lambda (e1: C).(\lambda (e2: C).(\lambda (H: (drop j O e1 
5257 e2)).(\lambda (b: B).(\lambda (c2: C).(\lambda (v2: T).(\lambda (i: 
5258 nat).(\lambda (H0: (getl i c2 (CHead e2 (Bind b) v2))).(drop_conf_rev j e1 e2 
5259 H c2 (S i) (getl_drop b c2 e2 v2 i H0)))))))))).
5260
5261 theorem drop_getl_trans_lt:
5262  \forall (i: nat).(\forall (d: nat).((lt i d) \to (\forall (c1: C).(\forall 
5263 (c2: C).(\forall (h: nat).((drop h d c1 c2) \to (\forall (b: B).(\forall (e2: 
5264 C).(\forall (v: T).((getl i c2 (CHead e2 (Bind b) v)) \to (ex2 C (\lambda 
5265 (e1: C).(getl i c1 (CHead e1 (Bind b) (lift h (minus d (S i)) v)))) (\lambda 
5266 (e1: C).(drop h (minus d (S i)) e1 e2)))))))))))))
5267 \def
5268  \lambda (i: nat).(\lambda (d: nat).(\lambda (H: (lt i d)).(\lambda (c1: 
5269 C).(\lambda (c2: C).(\lambda (h: nat).(\lambda (H0: (drop h d c1 
5270 c2)).(\lambda (b: B).(\lambda (e2: C).(\lambda (v: T).(\lambda (H1: (getl i 
5271 c2 (CHead e2 (Bind b) v))).(let H2 \def (getl_gen_all c2 (CHead e2 (Bind b) 
5272 v) i H1) in (ex2_ind C (\lambda (e: C).(drop i O c2 e)) (\lambda (e: 
5273 C).(clear e (CHead e2 (Bind b) v))) (ex2 C (\lambda (e1: C).(getl i c1 (CHead 
5274 e1 (Bind b) (lift h (minus d (S i)) v)))) (\lambda (e1: C).(drop h (minus d 
5275 (S i)) e1 e2))) (\lambda (x: C).(\lambda (H3: (drop i O c2 x)).(\lambda (H4: 
5276 (clear x (CHead e2 (Bind b) v))).(ex2_ind C (\lambda (e1: C).(drop i O c1 
5277 e1)) (\lambda (e1: C).(drop h (minus d i) e1 x)) (ex2 C (\lambda (e1: 
5278 C).(getl i c1 (CHead e1 (Bind b) (lift h (minus d (S i)) v)))) (\lambda (e1: 
5279 C).(drop h (minus d (S i)) e1 e2))) (\lambda (x0: C).(\lambda (H5: (drop i O 
5280 c1 x0)).(\lambda (H6: (drop h (minus d i) x0 x)).(let H7 \def (eq_ind nat 
5281 (minus d i) (\lambda (n: nat).(drop h n x0 x)) H6 (S (minus d (S i))) 
5282 (minus_x_Sy d i H)) in (let H8 \def (drop_clear_S x x0 h (minus d (S i)) H7 b 
5283 e2 v H4) in (ex2_ind C (\lambda (c3: C).(clear x0 (CHead c3 (Bind b) (lift h 
5284 (minus d (S i)) v)))) (\lambda (c3: C).(drop h (minus d (S i)) c3 e2)) (ex2 C 
5285 (\lambda (e1: C).(getl i c1 (CHead e1 (Bind b) (lift h (minus d (S i)) v)))) 
5286 (\lambda (e1: C).(drop h (minus d (S i)) e1 e2))) (\lambda (x1: C).(\lambda 
5287 (H9: (clear x0 (CHead x1 (Bind b) (lift h (minus d (S i)) v)))).(\lambda 
5288 (H10: (drop h (minus d (S i)) x1 e2)).(ex_intro2 C (\lambda (e1: C).(getl i 
5289 c1 (CHead e1 (Bind b) (lift h (minus d (S i)) v)))) (\lambda (e1: C).(drop h 
5290 (minus d (S i)) e1 e2)) x1 (getl_intro i c1 (CHead x1 (Bind b) (lift h (minus 
5291 d (S i)) v)) x0 H5 H9) H10)))) H8)))))) (drop_trans_le i d (le_S_n i d (le_S 
5292 (S i) d H)) c1 c2 h H0 x H3))))) H2)))))))))))).
5293
5294 theorem drop_getl_trans_le:
5295  \forall (i: nat).(\forall (d: nat).((le i d) \to (\forall (c1: C).(\forall 
5296 (c2: C).(\forall (h: nat).((drop h d c1 c2) \to (\forall (e2: C).((getl i c2 
5297 e2) \to (ex3_2 C C (\lambda (e0: C).(\lambda (_: C).(drop i O c1 e0))) 
5298 (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d i) e0 e1))) (\lambda (_: 
5299 C).(\lambda (e1: C).(clear e1 e2))))))))))))
5300 \def
5301  \lambda (i: nat).(\lambda (d: nat).(\lambda (H: (le i d)).(\lambda (c1: 
5302 C).(\lambda (c2: C).(\lambda (h: nat).(\lambda (H0: (drop h d c1 
5303 c2)).(\lambda (e2: C).(\lambda (H1: (getl i c2 e2)).(let H2 \def 
5304 (getl_gen_all c2 e2 i H1) in (ex2_ind C (\lambda (e: C).(drop i O c2 e)) 
5305 (\lambda (e: C).(clear e e2)) (ex3_2 C C (\lambda (e0: C).(\lambda (_: 
5306 C).(drop i O c1 e0))) (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d i) 
5307 e0 e1))) (\lambda (_: C).(\lambda (e1: C).(clear e1 e2)))) (\lambda (x: 
5308 C).(\lambda (H3: (drop i O c2 x)).(\lambda (H4: (clear x e2)).(let H5 \def 
5309 (drop_trans_le i d H c1 c2 h H0 x H3) in (ex2_ind C (\lambda (e1: C).(drop i 
5310 O c1 e1)) (\lambda (e1: C).(drop h (minus d i) e1 x)) (ex3_2 C C (\lambda 
5311 (e0: C).(\lambda (_: C).(drop i O c1 e0))) (\lambda (e0: C).(\lambda (e1: 
5312 C).(drop h (minus d i) e0 e1))) (\lambda (_: C).(\lambda (e1: C).(clear e1 
5313 e2)))) (\lambda (x0: C).(\lambda (H6: (drop i O c1 x0)).(\lambda (H7: (drop h 
5314 (minus d i) x0 x)).(ex3_2_intro C C (\lambda (e0: C).(\lambda (_: C).(drop i 
5315 O c1 e0))) (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d i) e0 e1))) 
5316 (\lambda (_: C).(\lambda (e1: C).(clear e1 e2))) x0 x H6 H7 H4)))) H5))))) 
5317 H2)))))))))).
5318
5319 theorem drop_getl_trans_ge:
5320  \forall (i: nat).(\forall (c1: C).(\forall (c2: C).(\forall (d: 
5321 nat).(\forall (h: nat).((drop h d c1 c2) \to (\forall (e2: C).((getl i c2 e2) 
5322 \to ((le d i) \to (getl (plus i h) c1 e2)))))))))
5323 \def
5324  \lambda (i: nat).(\lambda (c1: C).(\lambda (c2: C).(\lambda (d: 
5325 nat).(\lambda (h: nat).(\lambda (H: (drop h d c1 c2)).(\lambda (e2: 
5326 C).(\lambda (H0: (getl i c2 e2)).(\lambda (H1: (le d i)).(let H2 \def 
5327 (getl_gen_all c2 e2 i H0) in (ex2_ind C (\lambda (e: C).(drop i O c2 e)) 
5328 (\lambda (e: C).(clear e e2)) (getl (plus i h) c1 e2) (\lambda (x: 
5329 C).(\lambda (H3: (drop i O c2 x)).(\lambda (H4: (clear x e2)).(getl_intro 
5330 (plus i h) c1 e2 x (drop_trans_ge i c1 c2 d h H x H3 H1) H4)))) H2)))))))))).
5331
5332 theorem getl_drop_trans:
5333  \forall (c1: C).(\forall (c2: C).(\forall (h: nat).((getl h c1 c2) \to 
5334 (\forall (e2: C).(\forall (i: nat).((drop (S i) O c2 e2) \to (drop (S (plus i 
5335 h)) O c1 e2)))))))
5336 \def
5337  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).(\forall (h: 
5338 nat).((getl h c c2) \to (\forall (e2: C).(\forall (i: nat).((drop (S i) O c2 
5339 e2) \to (drop (S (plus i h)) O c e2)))))))) (\lambda (n: nat).(\lambda (c2: 
5340 C).(\lambda (h: nat).(\lambda (H: (getl h (CSort n) c2)).(\lambda (e2: 
5341 C).(\lambda (i: nat).(\lambda (_: (drop (S i) O c2 e2)).(getl_gen_sort n h c2 
5342 H (drop (S (plus i h)) O (CSort n) e2))))))))) (\lambda (c2: C).(\lambda 
5343 (IHc: ((\forall (c3: C).(\forall (h: nat).((getl h c2 c3) \to (\forall (e2: 
5344 C).(\forall (i: nat).((drop (S i) O c3 e2) \to (drop (S (plus i h)) O c2 
5345 e2))))))))).(\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (t: T).(\forall 
5346 (c3: C).(\forall (h: nat).((getl h (CHead c2 k0 t) c3) \to (\forall (e2: 
5347 C).(\forall (i: nat).((drop (S i) O c3 e2) \to (drop (S (plus i h)) O (CHead 
5348 c2 k0 t) e2))))))))) (\lambda (b: B).(\lambda (t: T).(\lambda (c3: 
5349 C).(\lambda (h: nat).(nat_ind (\lambda (n: nat).((getl n (CHead c2 (Bind b) 
5350 t) c3) \to (\forall (e2: C).(\forall (i: nat).((drop (S i) O c3 e2) \to (drop 
5351 (S (plus i n)) O (CHead c2 (Bind b) t) e2)))))) (\lambda (H: (getl O (CHead 
5352 c2 (Bind b) t) c3)).(\lambda (e2: C).(\lambda (i: nat).(\lambda (H0: (drop (S 
5353 i) O c3 e2)).(let H1 \def (eq_ind C c3 (\lambda (c: C).(drop (S i) O c e2)) 
5354 H0 (CHead c2 (Bind b) t) (clear_gen_bind b c2 c3 t (getl_gen_O (CHead c2 
5355 (Bind b) t) c3 H))) in (eq_ind nat i (\lambda (n: nat).(drop (S n) O (CHead 
5356 c2 (Bind b) t) e2)) (drop_drop (Bind b) i c2 e2 (drop_gen_drop (Bind b) c2 e2 
5357 t i H1) t) (plus i O) (plus_n_O i))))))) (\lambda (n: nat).(\lambda (_: 
5358 (((getl n (CHead c2 (Bind b) t) c3) \to (\forall (e2: C).(\forall (i: 
5359 nat).((drop (S i) O c3 e2) \to (drop (S (plus i n)) O (CHead c2 (Bind b) t) 
5360 e2))))))).(\lambda (H0: (getl (S n) (CHead c2 (Bind b) t) c3)).(\lambda (e2: 
5361 C).(\lambda (i: nat).(\lambda (H1: (drop (S i) O c3 e2)).(eq_ind nat (plus (S 
5362 i) n) (\lambda (n0: nat).(drop (S n0) O (CHead c2 (Bind b) t) e2)) (drop_drop 
5363 (Bind b) (plus (S i) n) c2 e2 (IHc c3 n (getl_gen_S (Bind b) c2 c3 t n H0) e2 
5364 i H1) t) (plus i (S n)) (plus_Snm_nSm i n)))))))) h))))) (\lambda (f: 
5365 F).(\lambda (t: T).(\lambda (c3: C).(\lambda (h: nat).(nat_ind (\lambda (n: 
5366 nat).((getl n (CHead c2 (Flat f) t) c3) \to (\forall (e2: C).(\forall (i: 
5367 nat).((drop (S i) O c3 e2) \to (drop (S (plus i n)) O (CHead c2 (Flat f) t) 
5368 e2)))))) (\lambda (H: (getl O (CHead c2 (Flat f) t) c3)).(\lambda (e2: 
5369 C).(\lambda (i: nat).(\lambda (H0: (drop (S i) O c3 e2)).(drop_drop (Flat f) 
5370 (plus i O) c2 e2 (IHc c3 O (getl_intro O c2 c3 c2 (drop_refl c2) 
5371 (clear_gen_flat f c2 c3 t (getl_gen_O (CHead c2 (Flat f) t) c3 H))) e2 i H0) 
5372 t))))) (\lambda (n: nat).(\lambda (_: (((getl n (CHead c2 (Flat f) t) c3) \to 
5373 (\forall (e2: C).(\forall (i: nat).((drop (S i) O c3 e2) \to (drop (S (plus i 
5374 n)) O (CHead c2 (Flat f) t) e2))))))).(\lambda (H0: (getl (S n) (CHead c2 
5375 (Flat f) t) c3)).(\lambda (e2: C).(\lambda (i: nat).(\lambda (H1: (drop (S i) 
5376 O c3 e2)).(drop_drop (Flat f) (plus i (S n)) c2 e2 (IHc c3 (S n) (getl_gen_S 
5377 (Flat f) c2 c3 t n H0) e2 i H1) t))))))) h))))) k)))) c1).
5378
5379 theorem getl_trans:
5380  \forall (i: nat).(\forall (c1: C).(\forall (c2: C).(\forall (h: nat).((getl 
5381 h c1 c2) \to (\forall (e2: C).((getl i c2 e2) \to (getl (plus i h) c1 
5382 e2)))))))
5383 \def
5384  \lambda (i: nat).(\lambda (c1: C).(\lambda (c2: C).(\lambda (h: 
5385 nat).(\lambda (H: (getl h c1 c2)).(\lambda (e2: C).(\lambda (H0: (getl i c2 
5386 e2)).(let H1 \def (getl_gen_all c2 e2 i H0) in (ex2_ind C (\lambda (e: 
5387 C).(drop i O c2 e)) (\lambda (e: C).(clear e e2)) (getl (plus i h) c1 e2) 
5388 (\lambda (x: C).(\lambda (H2: (drop i O c2 x)).(\lambda (H3: (clear x 
5389 e2)).((match i return (\lambda (n: nat).((drop n O c2 x) \to (getl (plus n h) 
5390 c1 e2))) with [O \Rightarrow (\lambda (H4: (drop O O c2 x)).(let H5 \def 
5391 (eq_ind_r C x (\lambda (c: C).(clear c e2)) H3 c2 (drop_gen_refl c2 x H4)) in 
5392 (getl_clear_trans (plus O h) c1 c2 H e2 H5))) | (S n) \Rightarrow (\lambda 
5393 (H4: (drop (S n) O c2 x)).(let H_y \def (getl_drop_trans c1 c2 h H x n H4) in 
5394 (getl_intro (plus (S n) h) c1 e2 x H_y H3)))]) H2)))) H1)))))))).
5395
5396 theorem drop1_getl_trans:
5397  \forall (hds: PList).(\forall (c1: C).(\forall (c2: C).((drop1 hds c2 c1) 
5398 \to (\forall (b: B).(\forall (e1: C).(\forall (v: T).(\forall (i: nat).((getl 
5399 i c1 (CHead e1 (Bind b) v)) \to (ex C (\lambda (e2: C).(getl (trans hds i) c2 
5400 (CHead e2 (Bind b) (ctrans hds i v)))))))))))))
5401 \def
5402  \lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall (c1: 
5403 C).(\forall (c2: C).((drop1 p c2 c1) \to (\forall (b: B).(\forall (e1: 
5404 C).(\forall (v: T).(\forall (i: nat).((getl i c1 (CHead e1 (Bind b) v)) \to 
5405 (ex C (\lambda (e2: C).(getl (trans p i) c2 (CHead e2 (Bind b) (ctrans p i 
5406 v)))))))))))))) (\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (drop1 PNil c2 
5407 c1)).(\lambda (b: B).(\lambda (e1: C).(\lambda (v: T).(\lambda (i: 
5408 nat).(\lambda (H0: (getl i c1 (CHead e1 (Bind b) v))).(let H1 \def (match H 
5409 return (\lambda (p: PList).(\lambda (c: C).(\lambda (c0: C).(\lambda (_: 
5410 (drop1 p c c0)).((eq PList p PNil) \to ((eq C c c2) \to ((eq C c0 c1) \to (ex 
5411 C (\lambda (e2: C).(getl i c2 (CHead e2 (Bind b) v))))))))))) with 
5412 [(drop1_nil c) \Rightarrow (\lambda (_: (eq PList PNil PNil)).(\lambda (H2: 
5413 (eq C c c2)).(\lambda (H3: (eq C c c1)).(eq_ind C c2 (\lambda (c0: C).((eq C 
5414 c0 c1) \to (ex C (\lambda (e2: C).(getl i c2 (CHead e2 (Bind b) v)))))) 
5415 (\lambda (H4: (eq C c2 c1)).(eq_ind C c1 (\lambda (c0: C).(ex C (\lambda (e2: 
5416 C).(getl i c0 (CHead e2 (Bind b) v))))) (ex_intro C (\lambda (e2: C).(getl i 
5417 c1 (CHead e2 (Bind b) v))) e1 H0) c2 (sym_eq C c2 c1 H4))) c (sym_eq C c c2 
5418 H2) H3)))) | (drop1_cons c0 c3 h d H1 c4 hds H2) \Rightarrow (\lambda (H3: 
5419 (eq PList (PCons h d hds) PNil)).(\lambda (H4: (eq C c0 c2)).(\lambda (H5: 
5420 (eq C c4 c1)).((let H6 \def (eq_ind PList (PCons h d hds) (\lambda (e: 
5421 PList).(match e return (\lambda (_: PList).Prop) with [PNil \Rightarrow False 
5422 | (PCons _ _ _) \Rightarrow True])) I PNil H3) in (False_ind ((eq C c0 c2) 
5423 \to ((eq C c4 c1) \to ((drop h d c0 c3) \to ((drop1 hds c3 c4) \to (ex C 
5424 (\lambda (e2: C).(getl i c2 (CHead e2 (Bind b) v)))))))) H6)) H4 H5 H1 
5425 H2))))]) in (H1 (refl_equal PList PNil) (refl_equal C c2) (refl_equal C 
5426 c1))))))))))) (\lambda (h: nat).(\lambda (d: nat).(\lambda (hds0: 
5427 PList).(\lambda (H: ((\forall (c1: C).(\forall (c2: C).((drop1 hds0 c2 c1) 
5428 \to (\forall (b: B).(\forall (e1: C).(\forall (v: T).(\forall (i: nat).((getl 
5429 i c1 (CHead e1 (Bind b) v)) \to (ex C (\lambda (e2: C).(getl (trans hds0 i) 
5430 c2 (CHead e2 (Bind b) (ctrans hds0 i v))))))))))))))).(\lambda (c1: 
5431 C).(\lambda (c2: C).(\lambda (H0: (drop1 (PCons h d hds0) c2 c1)).(\lambda 
5432 (b: B).(\lambda (e1: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H1: (getl 
5433 i c1 (CHead e1 (Bind b) v))).(let H2 \def (match H0 return (\lambda (p: 
5434 PList).(\lambda (c: C).(\lambda (c0: C).(\lambda (_: (drop1 p c c0)).((eq 
5435 PList p (PCons h d hds0)) \to ((eq C c c2) \to ((eq C c0 c1) \to (ex C 
5436 (\lambda (e2: C).(getl (match (blt (trans hds0 i) d) with [true \Rightarrow 
5437 (trans hds0 i) | false \Rightarrow (plus (trans hds0 i) h)]) c2 (CHead e2 
5438 (Bind b) (match (blt (trans hds0 i) d) with [true \Rightarrow (lift h (minus 
5439 d (S (trans hds0 i))) (ctrans hds0 i v)) | false \Rightarrow (ctrans hds0 i 
5440 v)])))))))))))) with [(drop1_nil c) \Rightarrow (\lambda (H2: (eq PList PNil 
5441 (PCons h d hds0))).(\lambda (H3: (eq C c c2)).(\lambda (H4: (eq C c 
5442 c1)).((let H5 \def (eq_ind PList PNil (\lambda (e: PList).(match e return 
5443 (\lambda (_: PList).Prop) with [PNil \Rightarrow True | (PCons _ _ _) 
5444 \Rightarrow False])) I (PCons h d hds0) H2) in (False_ind ((eq C c c2) \to 
5445 ((eq C c c1) \to (ex C (\lambda (e2: C).(getl (match (blt (trans hds0 i) d) 
5446 with [true \Rightarrow (trans hds0 i) | false \Rightarrow (plus (trans hds0 
5447 i) h)]) c2 (CHead e2 (Bind b) (match (blt (trans hds0 i) d) with [true 
5448 \Rightarrow (lift h (minus d (S (trans hds0 i))) (ctrans hds0 i v)) | false 
5449 \Rightarrow (ctrans hds0 i v)]))))))) H5)) H3 H4)))) | (drop1_cons c0 c3 h0 
5450 d0 H2 c4 hds0 H3) \Rightarrow (\lambda (H4: (eq PList (PCons h0 d0 hds0) 
5451 (PCons h d hds0))).(\lambda (H5: (eq C c0 c2)).(\lambda (H6: (eq C c4 
5452 c1)).((let H7 \def (f_equal PList PList (\lambda (e: PList).(match e return 
5453 (\lambda (_: PList).PList) with [PNil \Rightarrow hds0 | (PCons _ _ p) 
5454 \Rightarrow p])) (PCons h0 d0 hds0) (PCons h d hds0) H4) in ((let H8 \def 
5455 (f_equal PList nat (\lambda (e: PList).(match e return (\lambda (_: 
5456 PList).nat) with [PNil \Rightarrow d0 | (PCons _ n _) \Rightarrow n])) (PCons 
5457 h0 d0 hds0) (PCons h d hds0) H4) in ((let H9 \def (f_equal PList nat (\lambda 
5458 (e: PList).(match e return (\lambda (_: PList).nat) with [PNil \Rightarrow h0 
5459 | (PCons n _ _) \Rightarrow n])) (PCons h0 d0 hds0) (PCons h d hds0) H4) in 
5460 (eq_ind nat h (\lambda (n: nat).((eq nat d0 d) \to ((eq PList hds0 hds0) \to 
5461 ((eq C c0 c2) \to ((eq C c4 c1) \to ((drop n d0 c0 c3) \to ((drop1 hds0 c3 
5462 c4) \to (ex C (\lambda (e2: C).(getl (match (blt (trans hds0 i) d) with [true 
5463 \Rightarrow (trans hds0 i) | false \Rightarrow (plus (trans hds0 i) h)]) c2 
5464 (CHead e2 (Bind b) (match (blt (trans hds0 i) d) with [true \Rightarrow (lift 
5465 h (minus d (S (trans hds0 i))) (ctrans hds0 i v)) | false \Rightarrow (ctrans 
5466 hds0 i v)])))))))))))) (\lambda (H10: (eq nat d0 d)).(eq_ind nat d (\lambda 
5467 (n: nat).((eq PList hds0 hds0) \to ((eq C c0 c2) \to ((eq C c4 c1) \to ((drop 
5468 h n c0 c3) \to ((drop1 hds0 c3 c4) \to (ex C (\lambda (e2: C).(getl (match 
5469 (blt (trans hds0 i) d) with [true \Rightarrow (trans hds0 i) | false 
5470 \Rightarrow (plus (trans hds0 i) h)]) c2 (CHead e2 (Bind b) (match (blt 
5471 (trans hds0 i) d) with [true \Rightarrow (lift h (minus d (S (trans hds0 i))) 
5472 (ctrans hds0 i v)) | false \Rightarrow (ctrans hds0 i v)]))))))))))) (\lambda 
5473 (H11: (eq PList hds0 hds0)).(eq_ind PList hds0 (\lambda (p: PList).((eq C c0 
5474 c2) \to ((eq C c4 c1) \to ((drop h d c0 c3) \to ((drop1 p c3 c4) \to (ex C 
5475 (\lambda (e2: C).(getl (match (blt (trans hds0 i) d) with [true \Rightarrow 
5476 (trans hds0 i) | false \Rightarrow (plus (trans hds0 i) h)]) c2 (CHead e2 
5477 (Bind b) (match (blt (trans hds0 i) d) with [true \Rightarrow (lift h (minus 
5478 d (S (trans hds0 i))) (ctrans hds0 i v)) | false \Rightarrow (ctrans hds0 i 
5479 v)])))))))))) (\lambda (H12: (eq C c0 c2)).(eq_ind C c2 (\lambda (c: C).((eq 
5480 C c4 c1) \to ((drop h d c c3) \to ((drop1 hds0 c3 c4) \to (ex C (\lambda (e2: 
5481 C).(getl (match (blt (trans hds0 i) d) with [true \Rightarrow (trans hds0 i) 
5482 | false \Rightarrow (plus (trans hds0 i) h)]) c2 (CHead e2 (Bind b) (match 
5483 (blt (trans hds0 i) d) with [true \Rightarrow (lift h (minus d (S (trans hds0 
5484 i))) (ctrans hds0 i v)) | false \Rightarrow (ctrans hds0 i v)]))))))))) 
5485 (\lambda (H13: (eq C c4 c1)).(eq_ind C c1 (\lambda (c: C).((drop h d c2 c3) 
5486 \to ((drop1 hds0 c3 c) \to (ex C (\lambda (e2: C).(getl (match (blt (trans 
5487 hds0 i) d) with [true \Rightarrow (trans hds0 i) | false \Rightarrow (plus 
5488 (trans hds0 i) h)]) c2 (CHead e2 (Bind b) (match (blt (trans hds0 i) d) with 
5489 [true \Rightarrow (lift h (minus d (S (trans hds0 i))) (ctrans hds0 i v)) | 
5490 false \Rightarrow (ctrans hds0 i v)])))))))) (\lambda (H14: (drop h d c2 
5491 c3)).(\lambda (H15: (drop1 hds0 c3 c1)).(xinduction bool (blt (trans hds0 i) 
5492 d) (\lambda (b0: bool).(ex C (\lambda (e2: C).(getl (match b0 with [true 
5493 \Rightarrow (trans hds0 i) | false \Rightarrow (plus (trans hds0 i) h)]) c2 
5494 (CHead e2 (Bind b) (match b0 with [true \Rightarrow (lift h (minus d (S 
5495 (trans hds0 i))) (ctrans hds0 i v)) | false \Rightarrow (ctrans hds0 i 
5496 v)])))))) (\lambda (x_x: bool).(bool_ind (\lambda (b0: bool).((eq bool (blt 
5497 (trans hds0 i) d) b0) \to (ex C (\lambda (e2: C).(getl (match b0 with [true 
5498 \Rightarrow (trans hds0 i) | false \Rightarrow (plus (trans hds0 i) h)]) c2 
5499 (CHead e2 (Bind b) (match b0 with [true \Rightarrow (lift h (minus d (S 
5500 (trans hds0 i))) (ctrans hds0 i v)) | false \Rightarrow (ctrans hds0 i 
5501 v)]))))))) (\lambda (H0: (eq bool (blt (trans hds0 i) d) true)).(let H_x \def 
5502 (H c1 c3 H15 b e1 v i H1) in (let H16 \def H_x in (ex_ind C (\lambda (e2: 
5503 C).(getl (trans hds0 i) c3 (CHead e2 (Bind b) (ctrans hds0 i v)))) (ex C 
5504 (\lambda (e2: C).(getl (trans hds0 i) c2 (CHead e2 (Bind b) (lift h (minus d 
5505 (S (trans hds0 i))) (ctrans hds0 i v)))))) (\lambda (x: C).(\lambda (H17: 
5506 (getl (trans hds0 i) c3 (CHead x (Bind b) (ctrans hds0 i v)))).(let H_x0 \def 
5507 (drop_getl_trans_lt (trans hds0 i) d (le_S_n (S (trans hds0 i)) d (lt_le_S (S 
5508 (trans hds0 i)) (S d) (blt_lt (S d) (S (trans hds0 i)) H0))) c2 c3 h H14 b x 
5509 (ctrans hds0 i v) H17) in (let H \def H_x0 in (ex2_ind C (\lambda (e1: 
5510 C).(getl (trans hds0 i) c2 (CHead e1 (Bind b) (lift h (minus d (S (trans hds0 
5511 i))) (ctrans hds0 i v))))) (\lambda (e1: C).(drop h (minus d (S (trans hds0 
5512 i))) e1 x)) (ex C (\lambda (e2: C).(getl (trans hds0 i) c2 (CHead e2 (Bind b) 
5513 (lift h (minus d (S (trans hds0 i))) (ctrans hds0 i v)))))) (\lambda (x0: 
5514 C).(\lambda (H1: (getl (trans hds0 i) c2 (CHead x0 (Bind b) (lift h (minus d 
5515 (S (trans hds0 i))) (ctrans hds0 i v))))).(\lambda (_: (drop h (minus d (S 
5516 (trans hds0 i))) x0 x)).(ex_intro C (\lambda (e2: C).(getl (trans hds0 i) c2 
5517 (CHead e2 (Bind b) (lift h (minus d (S (trans hds0 i))) (ctrans hds0 i v))))) 
5518 x0 H1)))) H))))) H16)))) (\lambda (H0: (eq bool (blt (trans hds0 i) d) 
5519 false)).(let H_x \def (H c1 c3 H15 b e1 v i H1) in (let H16 \def H_x in 
5520 (ex_ind C (\lambda (e2: C).(getl (trans hds0 i) c3 (CHead e2 (Bind b) (ctrans 
5521 hds0 i v)))) (ex C (\lambda (e2: C).(getl (plus (trans hds0 i) h) c2 (CHead 
5522 e2 (Bind b) (ctrans hds0 i v))))) (\lambda (x: C).(\lambda (H17: (getl (trans 
5523 hds0 i) c3 (CHead x (Bind b) (ctrans hds0 i v)))).(let H \def 
5524 (drop_getl_trans_ge (trans hds0 i) c2 c3 d h H14 (CHead x (Bind b) (ctrans 
5525 hds0 i v)) H17) in (ex_intro C (\lambda (e2: C).(getl (plus (trans hds0 i) h) 
5526 c2 (CHead e2 (Bind b) (ctrans hds0 i v)))) x (H (bge_le d (trans hds0 i) 
5527 H0)))))) H16)))) x_x))))) c4 (sym_eq C c4 c1 H13))) c0 (sym_eq C c0 c2 H12))) 
5528 hds0 (sym_eq PList hds0 hds0 H11))) d0 (sym_eq nat d0 d H10))) h0 (sym_eq nat 
5529 h0 h H9))) H8)) H7)) H5 H6 H2 H3))))]) in (H2 (refl_equal PList (PCons h d 
5530 hds0)) (refl_equal C c2) (refl_equal C c1))))))))))))))) hds).
5531
5532 theorem cimp_getl_conf:
5533  \forall (c1: C).(\forall (c2: C).((cimp c1 c2) \to (\forall (b: B).(\forall 
5534 (d1: C).(\forall (w: T).(\forall (i: nat).((getl i c1 (CHead d1 (Bind b) w)) 
5535 \to (ex2 C (\lambda (d2: C).(cimp d1 d2)) (\lambda (d2: C).(getl i c2 (CHead 
5536 d2 (Bind b) w)))))))))))
5537 \def
5538  \lambda (c1: C).(\lambda (c2: C).(\lambda (H: ((\forall (b: B).(\forall (d1: 
5539 C).(\forall (w: T).(\forall (h: nat).((getl h c1 (CHead d1 (Bind b) w)) \to 
5540 (ex C (\lambda (d2: C).(getl h c2 (CHead d2 (Bind b) w))))))))))).(\lambda 
5541 (b: B).(\lambda (d1: C).(\lambda (w: T).(\lambda (i: nat).(\lambda (H0: (getl 
5542 i c1 (CHead d1 (Bind b) w))).(let H_x \def (H b d1 w i H0) in (let H1 \def 
5543 H_x in (ex_ind C (\lambda (d2: C).(getl i c2 (CHead d2 (Bind b) w))) (ex2 C 
5544 (\lambda (d2: C).(\forall (b0: B).(\forall (d3: C).(\forall (w0: T).(\forall 
5545 (h: nat).((getl h d1 (CHead d3 (Bind b0) w0)) \to (ex C (\lambda (d4: 
5546 C).(getl h d2 (CHead d4 (Bind b0) w0)))))))))) (\lambda (d2: C).(getl i c2 
5547 (CHead d2 (Bind b) w)))) (\lambda (x: C).(\lambda (H2: (getl i c2 (CHead x 
5548 (Bind b) w))).(ex_intro2 C (\lambda (d2: C).(\forall (b0: B).(\forall (d3: 
5549 C).(\forall (w0: T).(\forall (h: nat).((getl h d1 (CHead d3 (Bind b0) w0)) 
5550 \to (ex C (\lambda (d4: C).(getl h d2 (CHead d4 (Bind b0) w0)))))))))) 
5551 (\lambda (d2: C).(getl i c2 (CHead d2 (Bind b) w))) x (\lambda (b0: 
5552 B).(\lambda (d0: C).(\lambda (w0: T).(\lambda (h: nat).(\lambda (H3: (getl h 
5553 d1 (CHead d0 (Bind b0) w0))).(let H_y \def (getl_trans (S h) c1 (CHead d1 
5554 (Bind b) w) i H0) in (let H_x0 \def (H b0 d0 w0 (plus (S h) i) (H_y (CHead d0 
5555 (Bind b0) w0) (getl_head (Bind b) h d1 (CHead d0 (Bind b0) w0) H3 w))) in 
5556 (let H4 \def H_x0 in (ex_ind C (\lambda (d2: C).(getl (plus (S h) i) c2 
5557 (CHead d2 (Bind b0) w0))) (ex C (\lambda (d2: C).(getl h x (CHead d2 (Bind 
5558 b0) w0)))) (\lambda (x0: C).(\lambda (H5: (getl (plus (S h) i) c2 (CHead x0 
5559 (Bind b0) w0))).(let H_y0 \def (getl_conf_le (plus (S h) i) (CHead x0 (Bind 
5560 b0) w0) c2 H5 (CHead x (Bind b) w) i H2) in (let H6 \def (eq_ind nat (minus 
5561 (plus (S h) i) i) (\lambda (n: nat).(getl n (CHead x (Bind b) w) (CHead x0 
5562 (Bind b0) w0))) (H_y0 (le_plus_r (S h) i)) (S h) (minus_plus_r (S h) i)) in 
5563 (ex_intro C (\lambda (d2: C).(getl h x (CHead d2 (Bind b0) w0))) x0 
5564 (getl_gen_S (Bind b) x (CHead x0 (Bind b0) w0) w h H6)))))) H4))))))))) H2))) 
5565 H1)))))))))).
5566
5567 inductive subst0: nat \to (T \to (T \to (T \to Prop))) \def
5568 | subst0_lref: \forall (v: T).(\forall (i: nat).(subst0 i v (TLRef i) (lift 
5569 (S i) O v)))
5570 | subst0_fst: \forall (v: T).(\forall (u2: T).(\forall (u1: T).(\forall (i: 
5571 nat).((subst0 i v u1 u2) \to (\forall (t: T).(\forall (k: K).(subst0 i v 
5572 (THead k u1 t) (THead k u2 t))))))))
5573 | subst0_snd: \forall (k: K).(\forall (v: T).(\forall (t2: T).(\forall (t1: 
5574 T).(\forall (i: nat).((subst0 (s k i) v t1 t2) \to (\forall (u: T).(subst0 i 
5575 v (THead k u t1) (THead k u t2))))))))
5576 | subst0_both: \forall (v: T).(\forall (u1: T).(\forall (u2: T).(\forall (i: 
5577 nat).((subst0 i v u1 u2) \to (\forall (k: K).(\forall (t1: T).(\forall (t2: 
5578 T).((subst0 (s k i) v t1 t2) \to (subst0 i v (THead k u1 t1) (THead k u2 
5579 t2)))))))))).
5580
5581 theorem subst0_gen_sort:
5582  \forall (v: T).(\forall (x: T).(\forall (i: nat).(\forall (n: nat).((subst0 
5583 i v (TSort n) x) \to (\forall (P: Prop).P)))))
5584 \def
5585  \lambda (v: T).(\lambda (x: T).(\lambda (i: nat).(\lambda (n: nat).(\lambda 
5586 (H: (subst0 i v (TSort n) x)).(\lambda (P: Prop).(let H0 \def (match H return 
5587 (\lambda (n0: nat).(\lambda (t: T).(\lambda (t0: T).(\lambda (t1: T).(\lambda 
5588 (_: (subst0 n0 t t0 t1)).((eq nat n0 i) \to ((eq T t v) \to ((eq T t0 (TSort 
5589 n)) \to ((eq T t1 x) \to P))))))))) with [(subst0_lref v0 i0) \Rightarrow 
5590 (\lambda (H0: (eq nat i0 i)).(\lambda (H1: (eq T v0 v)).(\lambda (H2: (eq T 
5591 (TLRef i0) (TSort n))).(\lambda (H3: (eq T (lift (S i0) O v0) x)).(eq_ind nat 
5592 i (\lambda (n0: nat).((eq T v0 v) \to ((eq T (TLRef n0) (TSort n)) \to ((eq T 
5593 (lift (S n0) O v0) x) \to P)))) (\lambda (H4: (eq T v0 v)).(eq_ind T v 
5594 (\lambda (t: T).((eq T (TLRef i) (TSort n)) \to ((eq T (lift (S i) O t) x) 
5595 \to P))) (\lambda (H5: (eq T (TLRef i) (TSort n))).(let H6 \def (eq_ind T 
5596 (TLRef i) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort 
5597 _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow 
5598 False])) I (TSort n) H5) in (False_ind ((eq T (lift (S i) O v) x) \to P) 
5599 H6))) v0 (sym_eq T v0 v H4))) i0 (sym_eq nat i0 i H0) H1 H2 H3))))) | 
5600 (subst0_fst v0 u2 u1 i0 H0 t k) \Rightarrow (\lambda (H1: (eq nat i0 
5601 i)).(\lambda (H2: (eq T v0 v)).(\lambda (H3: (eq T (THead k u1 t) (TSort 
5602 n))).(\lambda (H4: (eq T (THead k u2 t) x)).(eq_ind nat i (\lambda (n0: 
5603 nat).((eq T v0 v) \to ((eq T (THead k u1 t) (TSort n)) \to ((eq T (THead k u2 
5604 t) x) \to ((subst0 n0 v0 u1 u2) \to P))))) (\lambda (H5: (eq T v0 v)).(eq_ind 
5605 T v (\lambda (t0: T).((eq T (THead k u1 t) (TSort n)) \to ((eq T (THead k u2 
5606 t) x) \to ((subst0 i t0 u1 u2) \to P)))) (\lambda (H6: (eq T (THead k u1 t) 
5607 (TSort n))).(let H7 \def (eq_ind T (THead k u1 t) (\lambda (e: T).(match e 
5608 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
5609 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H6) in 
5610 (False_ind ((eq T (THead k u2 t) x) \to ((subst0 i v u1 u2) \to P)) H7))) v0 
5611 (sym_eq T v0 v H5))) i0 (sym_eq nat i0 i H1) H2 H3 H4 H0))))) | (subst0_snd k 
5612 v0 t2 t1 i0 H0 u) \Rightarrow (\lambda (H1: (eq nat i0 i)).(\lambda (H2: (eq 
5613 T v0 v)).(\lambda (H3: (eq T (THead k u t1) (TSort n))).(\lambda (H4: (eq T 
5614 (THead k u t2) x)).(eq_ind nat i (\lambda (n0: nat).((eq T v0 v) \to ((eq T 
5615 (THead k u t1) (TSort n)) \to ((eq T (THead k u t2) x) \to ((subst0 (s k n0) 
5616 v0 t1 t2) \to P))))) (\lambda (H5: (eq T v0 v)).(eq_ind T v (\lambda (t: 
5617 T).((eq T (THead k u t1) (TSort n)) \to ((eq T (THead k u t2) x) \to ((subst0 
5618 (s k i) t t1 t2) \to P)))) (\lambda (H6: (eq T (THead k u t1) (TSort 
5619 n))).(let H7 \def (eq_ind T (THead k u t1) (\lambda (e: T).(match e return 
5620 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
5621 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H6) in 
5622 (False_ind ((eq T (THead k u t2) x) \to ((subst0 (s k i) v t1 t2) \to P)) 
5623 H7))) v0 (sym_eq T v0 v H5))) i0 (sym_eq nat i0 i H1) H2 H3 H4 H0))))) | 
5624 (subst0_both v0 u1 u2 i0 H0 k t1 t2 H1) \Rightarrow (\lambda (H2: (eq nat i0 
5625 i)).(\lambda (H3: (eq T v0 v)).(\lambda (H4: (eq T (THead k u1 t1) (TSort 
5626 n))).(\lambda (H5: (eq T (THead k u2 t2) x)).(eq_ind nat i (\lambda (n0: 
5627 nat).((eq T v0 v) \to ((eq T (THead k u1 t1) (TSort n)) \to ((eq T (THead k 
5628 u2 t2) x) \to ((subst0 n0 v0 u1 u2) \to ((subst0 (s k n0) v0 t1 t2) \to 
5629 P)))))) (\lambda (H6: (eq T v0 v)).(eq_ind T v (\lambda (t: T).((eq T (THead 
5630 k u1 t1) (TSort n)) \to ((eq T (THead k u2 t2) x) \to ((subst0 i t u1 u2) \to 
5631 ((subst0 (s k i) t t1 t2) \to P))))) (\lambda (H7: (eq T (THead k u1 t1) 
5632 (TSort n))).(let H8 \def (eq_ind T (THead k u1 t1) (\lambda (e: T).(match e 
5633 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
5634 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H7) in 
5635 (False_ind ((eq T (THead k u2 t2) x) \to ((subst0 i v u1 u2) \to ((subst0 (s 
5636 k i) v t1 t2) \to P))) H8))) v0 (sym_eq T v0 v H6))) i0 (sym_eq nat i0 i H2) 
5637 H3 H4 H5 H0 H1)))))]) in (H0 (refl_equal nat i) (refl_equal T v) (refl_equal 
5638 T (TSort n)) (refl_equal T x)))))))).
5639
5640 theorem subst0_gen_lref:
5641  \forall (v: T).(\forall (x: T).(\forall (i: nat).(\forall (n: nat).((subst0 
5642 i v (TLRef n) x) \to (land (eq nat n i) (eq T x (lift (S n) O v)))))))
5643 \def
5644  \lambda (v: T).(\lambda (x: T).(\lambda (i: nat).(\lambda (n: nat).(\lambda 
5645 (H: (subst0 i v (TLRef n) x)).(let H0 \def (match H return (\lambda (n0: 
5646 nat).(\lambda (t: T).(\lambda (t0: T).(\lambda (t1: T).(\lambda (_: (subst0 
5647 n0 t t0 t1)).((eq nat n0 i) \to ((eq T t v) \to ((eq T t0 (TLRef n)) \to ((eq 
5648 T t1 x) \to (land (eq nat n i) (eq T x (lift (S n) O v)))))))))))) with 
5649 [(subst0_lref v0 i0) \Rightarrow (\lambda (H0: (eq nat i0 i)).(\lambda (H1: 
5650 (eq T v0 v)).(\lambda (H2: (eq T (TLRef i0) (TLRef n))).(\lambda (H3: (eq T 
5651 (lift (S i0) O v0) x)).(eq_ind nat i (\lambda (n0: nat).((eq T v0 v) \to ((eq 
5652 T (TLRef n0) (TLRef n)) \to ((eq T (lift (S n0) O v0) x) \to (land (eq nat n 
5653 i) (eq T x (lift (S n) O v))))))) (\lambda (H4: (eq T v0 v)).(eq_ind T v 
5654 (\lambda (t: T).((eq T (TLRef i) (TLRef n)) \to ((eq T (lift (S i) O t) x) 
5655 \to (land (eq nat n i) (eq T x (lift (S n) O v)))))) (\lambda (H5: (eq T 
5656 (TLRef i) (TLRef n))).(let H6 \def (f_equal T nat (\lambda (e: T).(match e 
5657 return (\lambda (_: T).nat) with [(TSort _) \Rightarrow i | (TLRef n) 
5658 \Rightarrow n | (THead _ _ _) \Rightarrow i])) (TLRef i) (TLRef n) H5) in 
5659 (eq_ind nat n (\lambda (n0: nat).((eq T (lift (S n0) O v) x) \to (land (eq 
5660 nat n n0) (eq T x (lift (S n) O v))))) (\lambda (H7: (eq T (lift (S n) O v) 
5661 x)).(eq_ind T (lift (S n) O v) (\lambda (t: T).(land (eq nat n n) (eq T t 
5662 (lift (S n) O v)))) (conj (eq nat n n) (eq T (lift (S n) O v) (lift (S n) O 
5663 v)) (refl_equal nat n) (refl_equal T (lift (S n) O v))) x H7)) i (sym_eq nat 
5664 i n H6)))) v0 (sym_eq T v0 v H4))) i0 (sym_eq nat i0 i H0) H1 H2 H3))))) | 
5665 (subst0_fst v0 u2 u1 i0 H0 t k) \Rightarrow (\lambda (H1: (eq nat i0 
5666 i)).(\lambda (H2: (eq T v0 v)).(\lambda (H3: (eq T (THead k u1 t) (TLRef 
5667 n))).(\lambda (H4: (eq T (THead k u2 t) x)).(eq_ind nat i (\lambda (n0: 
5668 nat).((eq T v0 v) \to ((eq T (THead k u1 t) (TLRef n)) \to ((eq T (THead k u2 
5669 t) x) \to ((subst0 n0 v0 u1 u2) \to (land (eq nat n i) (eq T x (lift (S n) O 
5670 v)))))))) (\lambda (H5: (eq T v0 v)).(eq_ind T v (\lambda (t0: T).((eq T 
5671 (THead k u1 t) (TLRef n)) \to ((eq T (THead k u2 t) x) \to ((subst0 i t0 u1 
5672 u2) \to (land (eq nat n i) (eq T x (lift (S n) O v))))))) (\lambda (H6: (eq T 
5673 (THead k u1 t) (TLRef n))).(let H7 \def (eq_ind T (THead k u1 t) (\lambda (e: 
5674 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
5675 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) 
5676 H6) in (False_ind ((eq T (THead k u2 t) x) \to ((subst0 i v u1 u2) \to (land 
5677 (eq nat n i) (eq T x (lift (S n) O v))))) H7))) v0 (sym_eq T v0 v H5))) i0 
5678 (sym_eq nat i0 i H1) H2 H3 H4 H0))))) | (subst0_snd k v0 t2 t1 i0 H0 u) 
5679 \Rightarrow (\lambda (H1: (eq nat i0 i)).(\lambda (H2: (eq T v0 v)).(\lambda 
5680 (H3: (eq T (THead k u t1) (TLRef n))).(\lambda (H4: (eq T (THead k u t2) 
5681 x)).(eq_ind nat i (\lambda (n0: nat).((eq T v0 v) \to ((eq T (THead k u t1) 
5682 (TLRef n)) \to ((eq T (THead k u t2) x) \to ((subst0 (s k n0) v0 t1 t2) \to 
5683 (land (eq nat n i) (eq T x (lift (S n) O v)))))))) (\lambda (H5: (eq T v0 
5684 v)).(eq_ind T v (\lambda (t: T).((eq T (THead k u t1) (TLRef n)) \to ((eq T 
5685 (THead k u t2) x) \to ((subst0 (s k i) t t1 t2) \to (land (eq nat n i) (eq T 
5686 x (lift (S n) O v))))))) (\lambda (H6: (eq T (THead k u t1) (TLRef n))).(let 
5687 H7 \def (eq_ind T (THead k u t1) (\lambda (e: T).(match e return (\lambda (_: 
5688 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
5689 (THead _ _ _) \Rightarrow True])) I (TLRef n) H6) in (False_ind ((eq T (THead 
5690 k u t2) x) \to ((subst0 (s k i) v t1 t2) \to (land (eq nat n i) (eq T x (lift 
5691 (S n) O v))))) H7))) v0 (sym_eq T v0 v H5))) i0 (sym_eq nat i0 i H1) H2 H3 H4 
5692 H0))))) | (subst0_both v0 u1 u2 i0 H0 k t1 t2 H1) \Rightarrow (\lambda (H2: 
5693 (eq nat i0 i)).(\lambda (H3: (eq T v0 v)).(\lambda (H4: (eq T (THead k u1 t1) 
5694 (TLRef n))).(\lambda (H5: (eq T (THead k u2 t2) x)).(eq_ind nat i (\lambda 
5695 (n0: nat).((eq T v0 v) \to ((eq T (THead k u1 t1) (TLRef n)) \to ((eq T 
5696 (THead k u2 t2) x) \to ((subst0 n0 v0 u1 u2) \to ((subst0 (s k n0) v0 t1 t2) 
5697 \to (land (eq nat n i) (eq T x (lift (S n) O v))))))))) (\lambda (H6: (eq T 
5698 v0 v)).(eq_ind T v (\lambda (t: T).((eq T (THead k u1 t1) (TLRef n)) \to ((eq 
5699 T (THead k u2 t2) x) \to ((subst0 i t u1 u2) \to ((subst0 (s k i) t t1 t2) 
5700 \to (land (eq nat n i) (eq T x (lift (S n) O v)))))))) (\lambda (H7: (eq T 
5701 (THead k u1 t1) (TLRef n))).(let H8 \def (eq_ind T (THead k u1 t1) (\lambda 
5702 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
5703 False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I 
5704 (TLRef n) H7) in (False_ind ((eq T (THead k u2 t2) x) \to ((subst0 i v u1 u2) 
5705 \to ((subst0 (s k i) v t1 t2) \to (land (eq nat n i) (eq T x (lift (S n) O 
5706 v)))))) H8))) v0 (sym_eq T v0 v H6))) i0 (sym_eq nat i0 i H2) H3 H4 H5 H0 
5707 H1)))))]) in (H0 (refl_equal nat i) (refl_equal T v) (refl_equal T (TLRef n)) 
5708 (refl_equal T x))))))).
5709
5710 theorem subst0_gen_head:
5711  \forall (k: K).(\forall (v: T).(\forall (u1: T).(\forall (t1: T).(\forall 
5712 (x: T).(\forall (i: nat).((subst0 i v (THead k u1 t1) x) \to (or3 (ex2 T 
5713 (\lambda (u2: T).(eq T x (THead k u2 t1))) (\lambda (u2: T).(subst0 i v u1 
5714 u2))) (ex2 T (\lambda (t2: T).(eq T x (THead k u1 t2))) (\lambda (t2: 
5715 T).(subst0 (s k i) v t1 t2))) (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
5716 T).(eq T x (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v u1 
5717 u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i) v t1 t2)))))))))))
5718 \def
5719  \lambda (k: K).(\lambda (v: T).(\lambda (u1: T).(\lambda (t1: T).(\lambda 
5720 (x: T).(\lambda (i: nat).(\lambda (H: (subst0 i v (THead k u1 t1) x)).(let H0 
5721 \def (match H return (\lambda (n: nat).(\lambda (t: T).(\lambda (t0: 
5722 T).(\lambda (t2: T).(\lambda (_: (subst0 n t t0 t2)).((eq nat n i) \to ((eq T 
5723 t v) \to ((eq T t0 (THead k u1 t1)) \to ((eq T t2 x) \to (or3 (ex2 T (\lambda 
5724 (u2: T).(eq T x (THead k u2 t1))) (\lambda (u2: T).(subst0 i v u1 u2))) (ex2 
5725 T (\lambda (t3: T).(eq T x (THead k u1 t3))) (\lambda (t3: T).(subst0 (s k i) 
5726 v t1 t3))) (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead k u2 
5727 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v u1 u2))) (\lambda (_: 
5728 T).(\lambda (t3: T).(subst0 (s k i) v t1 t3)))))))))))))) with [(subst0_lref 
5729 v0 i0) \Rightarrow (\lambda (H0: (eq nat i0 i)).(\lambda (H1: (eq T v0 
5730 v)).(\lambda (H2: (eq T (TLRef i0) (THead k u1 t1))).(\lambda (H3: (eq T 
5731 (lift (S i0) O v0) x)).(eq_ind nat i (\lambda (n: nat).((eq T v0 v) \to ((eq 
5732 T (TLRef n) (THead k u1 t1)) \to ((eq T (lift (S n) O v0) x) \to (or3 (ex2 T 
5733 (\lambda (u2: T).(eq T x (THead k u2 t1))) (\lambda (u2: T).(subst0 i v u1 
5734 u2))) (ex2 T (\lambda (t2: T).(eq T x (THead k u1 t2))) (\lambda (t2: 
5735 T).(subst0 (s k i) v t1 t2))) (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
5736 T).(eq T x (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v u1 
5737 u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i) v t1 t2))))))))) 
5738 (\lambda (H4: (eq T v0 v)).(eq_ind T v (\lambda (t: T).((eq T (TLRef i) 
5739 (THead k u1 t1)) \to ((eq T (lift (S i) O t) x) \to (or3 (ex2 T (\lambda (u2: 
5740 T).(eq T x (THead k u2 t1))) (\lambda (u2: T).(subst0 i v u1 u2))) (ex2 T 
5741 (\lambda (t2: T).(eq T x (THead k u1 t2))) (\lambda (t2: T).(subst0 (s k i) v 
5742 t1 t2))) (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead k u2 
5743 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v u1 u2))) (\lambda (_: 
5744 T).(\lambda (t2: T).(subst0 (s k i) v t1 t2)))))))) (\lambda (H5: (eq T 
5745 (TLRef i) (THead k u1 t1))).(let H6 \def (eq_ind T (TLRef i) (\lambda (e: 
5746 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
5747 (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead k u1 
5748 t1) H5) in (False_ind ((eq T (lift (S i) O v) x) \to (or3 (ex2 T (\lambda 
5749 (u2: T).(eq T x (THead k u2 t1))) (\lambda (u2: T).(subst0 i v u1 u2))) (ex2 
5750 T (\lambda (t2: T).(eq T x (THead k u1 t2))) (\lambda (t2: T).(subst0 (s k i) 
5751 v t1 t2))) (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead k u2 
5752 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v u1 u2))) (\lambda (_: 
5753 T).(\lambda (t2: T).(subst0 (s k i) v t1 t2)))))) H6))) v0 (sym_eq T v0 v 
5754 H4))) i0 (sym_eq nat i0 i H0) H1 H2 H3))))) | (subst0_fst v0 u2 u0 i0 H0 t 
5755 k0) \Rightarrow (\lambda (H1: (eq nat i0 i)).(\lambda (H2: (eq T v0 
5756 v)).(\lambda (H3: (eq T (THead k0 u0 t) (THead k u1 t1))).(\lambda (H4: (eq T 
5757 (THead k0 u2 t) x)).(eq_ind nat i (\lambda (n: nat).((eq T v0 v) \to ((eq T 
5758 (THead k0 u0 t) (THead k u1 t1)) \to ((eq T (THead k0 u2 t) x) \to ((subst0 n 
5759 v0 u0 u2) \to (or3 (ex2 T (\lambda (u3: T).(eq T x (THead k u3 t1))) (\lambda 
5760 (u3: T).(subst0 i v u1 u3))) (ex2 T (\lambda (t2: T).(eq T x (THead k u1 
5761 t2))) (\lambda (t2: T).(subst0 (s k i) v t1 t2))) (ex3_2 T T (\lambda (u3: 
5762 T).(\lambda (t2: T).(eq T x (THead k u3 t2)))) (\lambda (u3: T).(\lambda (_: 
5763 T).(subst0 i v u1 u3))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i) v t1 
5764 t2)))))))))) (\lambda (H5: (eq T v0 v)).(eq_ind T v (\lambda (t0: T).((eq T 
5765 (THead k0 u0 t) (THead k u1 t1)) \to ((eq T (THead k0 u2 t) x) \to ((subst0 i 
5766 t0 u0 u2) \to (or3 (ex2 T (\lambda (u3: T).(eq T x (THead k u3 t1))) (\lambda 
5767 (u3: T).(subst0 i v u1 u3))) (ex2 T (\lambda (t2: T).(eq T x (THead k u1 
5768 t2))) (\lambda (t2: T).(subst0 (s k i) v t1 t2))) (ex3_2 T T (\lambda (u3: 
5769 T).(\lambda (t2: T).(eq T x (THead k u3 t2)))) (\lambda (u3: T).(\lambda (_: 
5770 T).(subst0 i v u1 u3))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i) v t1 
5771 t2))))))))) (\lambda (H6: (eq T (THead k0 u0 t) (THead k u1 t1))).(let H7 
5772 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
5773 [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ _ t) 
5774 \Rightarrow t])) (THead k0 u0 t) (THead k u1 t1) H6) in ((let H8 \def 
5775 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
5776 _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) 
5777 (THead k0 u0 t) (THead k u1 t1) H6) in ((let H9 \def (f_equal T K (\lambda 
5778 (e: T).(match e return (\lambda (_: T).K) with [(TSort _) \Rightarrow k0 | 
5779 (TLRef _) \Rightarrow k0 | (THead k _ _) \Rightarrow k])) (THead k0 u0 t) 
5780 (THead k u1 t1) H6) in (eq_ind K k (\lambda (k1: K).((eq T u0 u1) \to ((eq T 
5781 t t1) \to ((eq T (THead k1 u2 t) x) \to ((subst0 i v u0 u2) \to (or3 (ex2 T 
5782 (\lambda (u3: T).(eq T x (THead k u3 t1))) (\lambda (u3: T).(subst0 i v u1 
5783 u3))) (ex2 T (\lambda (t2: T).(eq T x (THead k u1 t2))) (\lambda (t2: 
5784 T).(subst0 (s k i) v t1 t2))) (ex3_2 T T (\lambda (u3: T).(\lambda (t2: 
5785 T).(eq T x (THead k u3 t2)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i v u1 
5786 u3))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i) v t1 t2)))))))))) 
5787 (\lambda (H10: (eq T u0 u1)).(eq_ind T u1 (\lambda (t0: T).((eq T t t1) \to 
5788 ((eq T (THead k u2 t) x) \to ((subst0 i v t0 u2) \to (or3 (ex2 T (\lambda 
5789 (u3: T).(eq T x (THead k u3 t1))) (\lambda (u3: T).(subst0 i v u1 u3))) (ex2 
5790 T (\lambda (t2: T).(eq T x (THead k u1 t2))) (\lambda (t2: T).(subst0 (s k i) 
5791 v t1 t2))) (ex3_2 T T (\lambda (u3: T).(\lambda (t2: T).(eq T x (THead k u3 
5792 t2)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i v u1 u3))) (\lambda (_: 
5793 T).(\lambda (t2: T).(subst0 (s k i) v t1 t2))))))))) (\lambda (H11: (eq T t 
5794 t1)).(eq_ind T t1 (\lambda (t0: T).((eq T (THead k u2 t0) x) \to ((subst0 i v 
5795 u1 u2) \to (or3 (ex2 T (\lambda (u3: T).(eq T x (THead k u3 t1))) (\lambda 
5796 (u3: T).(subst0 i v u1 u3))) (ex2 T (\lambda (t2: T).(eq T x (THead k u1 
5797 t2))) (\lambda (t2: T).(subst0 (s k i) v t1 t2))) (ex3_2 T T (\lambda (u3: 
5798 T).(\lambda (t2: T).(eq T x (THead k u3 t2)))) (\lambda (u3: T).(\lambda (_: 
5799 T).(subst0 i v u1 u3))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i) v t1 
5800 t2)))))))) (\lambda (H12: (eq T (THead k u2 t1) x)).(eq_ind T (THead k u2 t1) 
5801 (\lambda (t0: T).((subst0 i v u1 u2) \to (or3 (ex2 T (\lambda (u3: T).(eq T 
5802 t0 (THead k u3 t1))) (\lambda (u3: T).(subst0 i v u1 u3))) (ex2 T (\lambda 
5803 (t2: T).(eq T t0 (THead k u1 t2))) (\lambda (t2: T).(subst0 (s k i) v t1 
5804 t2))) (ex3_2 T T (\lambda (u3: T).(\lambda (t2: T).(eq T t0 (THead k u3 
5805 t2)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i v u1 u3))) (\lambda (_: 
5806 T).(\lambda (t2: T).(subst0 (s k i) v t1 t2))))))) (\lambda (H13: (subst0 i v 
5807 u1 u2)).(or3_intro0 (ex2 T (\lambda (u3: T).(eq T (THead k u2 t1) (THead k u3 
5808 t1))) (\lambda (u3: T).(subst0 i v u1 u3))) (ex2 T (\lambda (t2: T).(eq T 
5809 (THead k u2 t1) (THead k u1 t2))) (\lambda (t2: T).(subst0 (s k i) v t1 t2))) 
5810 (ex3_2 T T (\lambda (u3: T).(\lambda (t2: T).(eq T (THead k u2 t1) (THead k 
5811 u3 t2)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i v u1 u3))) (\lambda (_: 
5812 T).(\lambda (t2: T).(subst0 (s k i) v t1 t2)))) (ex_intro2 T (\lambda (u3: 
5813 T).(eq T (THead k u2 t1) (THead k u3 t1))) (\lambda (u3: T).(subst0 i v u1 
5814 u3)) u2 (refl_equal T (THead k u2 t1)) H13))) x H12)) t (sym_eq T t t1 H11))) 
5815 u0 (sym_eq T u0 u1 H10))) k0 (sym_eq K k0 k H9))) H8)) H7))) v0 (sym_eq T v0 
5816 v H5))) i0 (sym_eq nat i0 i H1) H2 H3 H4 H0))))) | (subst0_snd k0 v0 t2 t0 i0 
5817 H0 u) \Rightarrow (\lambda (H1: (eq nat i0 i)).(\lambda (H2: (eq T v0 
5818 v)).(\lambda (H3: (eq T (THead k0 u t0) (THead k u1 t1))).(\lambda (H4: (eq T 
5819 (THead k0 u t2) x)).(eq_ind nat i (\lambda (n: nat).((eq T v0 v) \to ((eq T 
5820 (THead k0 u t0) (THead k u1 t1)) \to ((eq T (THead k0 u t2) x) \to ((subst0 
5821 (s k0 n) v0 t0 t2) \to (or3 (ex2 T (\lambda (u2: T).(eq T x (THead k u2 t1))) 
5822 (\lambda (u2: T).(subst0 i v u1 u2))) (ex2 T (\lambda (t3: T).(eq T x (THead 
5823 k u1 t3))) (\lambda (t3: T).(subst0 (s k i) v t1 t3))) (ex3_2 T T (\lambda 
5824 (u2: T).(\lambda (t3: T).(eq T x (THead k u2 t3)))) (\lambda (u2: T).(\lambda 
5825 (_: T).(subst0 i v u1 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i) 
5826 v t1 t3)))))))))) (\lambda (H5: (eq T v0 v)).(eq_ind T v (\lambda (t: T).((eq 
5827 T (THead k0 u t0) (THead k u1 t1)) \to ((eq T (THead k0 u t2) x) \to ((subst0 
5828 (s k0 i) t t0 t2) \to (or3 (ex2 T (\lambda (u2: T).(eq T x (THead k u2 t1))) 
5829 (\lambda (u2: T).(subst0 i v u1 u2))) (ex2 T (\lambda (t3: T).(eq T x (THead 
5830 k u1 t3))) (\lambda (t3: T).(subst0 (s k i) v t1 t3))) (ex3_2 T T (\lambda 
5831 (u2: T).(\lambda (t3: T).(eq T x (THead k u2 t3)))) (\lambda (u2: T).(\lambda 
5832 (_: T).(subst0 i v u1 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i) 
5833 v t1 t3))))))))) (\lambda (H6: (eq T (THead k0 u t0) (THead k u1 t1))).(let 
5834 H7 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
5835 [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) 
5836 \Rightarrow t])) (THead k0 u t0) (THead k u1 t1) H6) in ((let H8 \def 
5837 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
5838 _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t _) \Rightarrow t])) 
5839 (THead k0 u t0) (THead k u1 t1) H6) in ((let H9 \def (f_equal T K (\lambda 
5840 (e: T).(match e return (\lambda (_: T).K) with [(TSort _) \Rightarrow k0 | 
5841 (TLRef _) \Rightarrow k0 | (THead k _ _) \Rightarrow k])) (THead k0 u t0) 
5842 (THead k u1 t1) H6) in (eq_ind K k (\lambda (k1: K).((eq T u u1) \to ((eq T 
5843 t0 t1) \to ((eq T (THead k1 u t2) x) \to ((subst0 (s k1 i) v t0 t2) \to (or3 
5844 (ex2 T (\lambda (u2: T).(eq T x (THead k u2 t1))) (\lambda (u2: T).(subst0 i 
5845 v u1 u2))) (ex2 T (\lambda (t3: T).(eq T x (THead k u1 t3))) (\lambda (t3: 
5846 T).(subst0 (s k i) v t1 t3))) (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
5847 T).(eq T x (THead k u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v u1 
5848 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i) v t1 t3)))))))))) 
5849 (\lambda (H10: (eq T u u1)).(eq_ind T u1 (\lambda (t: T).((eq T t0 t1) \to 
5850 ((eq T (THead k t t2) x) \to ((subst0 (s k i) v t0 t2) \to (or3 (ex2 T 
5851 (\lambda (u2: T).(eq T x (THead k u2 t1))) (\lambda (u2: T).(subst0 i v u1 
5852 u2))) (ex2 T (\lambda (t3: T).(eq T x (THead k u1 t3))) (\lambda (t3: 
5853 T).(subst0 (s k i) v t1 t3))) (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
5854 T).(eq T x (THead k u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v u1 
5855 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i) v t1 t3))))))))) 
5856 (\lambda (H11: (eq T t0 t1)).(eq_ind T t1 (\lambda (t: T).((eq T (THead k u1 
5857 t2) x) \to ((subst0 (s k i) v t t2) \to (or3 (ex2 T (\lambda (u2: T).(eq T x 
5858 (THead k u2 t1))) (\lambda (u2: T).(subst0 i v u1 u2))) (ex2 T (\lambda (t3: 
5859 T).(eq T x (THead k u1 t3))) (\lambda (t3: T).(subst0 (s k i) v t1 t3))) 
5860 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead k u2 t3)))) 
5861 (\lambda (u2: T).(\lambda (_: T).(subst0 i v u1 u2))) (\lambda (_: 
5862 T).(\lambda (t3: T).(subst0 (s k i) v t1 t3)))))))) (\lambda (H12: (eq T 
5863 (THead k u1 t2) x)).(eq_ind T (THead k u1 t2) (\lambda (t: T).((subst0 (s k 
5864 i) v t1 t2) \to (or3 (ex2 T (\lambda (u2: T).(eq T t (THead k u2 t1))) 
5865 (\lambda (u2: T).(subst0 i v u1 u2))) (ex2 T (\lambda (t3: T).(eq T t (THead 
5866 k u1 t3))) (\lambda (t3: T).(subst0 (s k i) v t1 t3))) (ex3_2 T T (\lambda 
5867 (u2: T).(\lambda (t3: T).(eq T t (THead k u2 t3)))) (\lambda (u2: T).(\lambda 
5868 (_: T).(subst0 i v u1 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i) 
5869 v t1 t3))))))) (\lambda (H13: (subst0 (s k i) v t1 t2)).(or3_intro1 (ex2 T 
5870 (\lambda (u2: T).(eq T (THead k u1 t2) (THead k u2 t1))) (\lambda (u2: 
5871 T).(subst0 i v u1 u2))) (ex2 T (\lambda (t3: T).(eq T (THead k u1 t2) (THead 
5872 k u1 t3))) (\lambda (t3: T).(subst0 (s k i) v t1 t3))) (ex3_2 T T (\lambda 
5873 (u2: T).(\lambda (t3: T).(eq T (THead k u1 t2) (THead k u2 t3)))) (\lambda 
5874 (u2: T).(\lambda (_: T).(subst0 i v u1 u2))) (\lambda (_: T).(\lambda (t3: 
5875 T).(subst0 (s k i) v t1 t3)))) (ex_intro2 T (\lambda (t3: T).(eq T (THead k 
5876 u1 t2) (THead k u1 t3))) (\lambda (t3: T).(subst0 (s k i) v t1 t3)) t2 
5877 (refl_equal T (THead k u1 t2)) H13))) x H12)) t0 (sym_eq T t0 t1 H11))) u 
5878 (sym_eq T u u1 H10))) k0 (sym_eq K k0 k H9))) H8)) H7))) v0 (sym_eq T v0 v 
5879 H5))) i0 (sym_eq nat i0 i H1) H2 H3 H4 H0))))) | (subst0_both v0 u0 u2 i0 H0 
5880 k0 t0 t2 H1) \Rightarrow (\lambda (H2: (eq nat i0 i)).(\lambda (H3: (eq T v0 
5881 v)).(\lambda (H4: (eq T (THead k0 u0 t0) (THead k u1 t1))).(\lambda (H5: (eq 
5882 T (THead k0 u2 t2) x)).(eq_ind nat i (\lambda (n: nat).((eq T v0 v) \to ((eq 
5883 T (THead k0 u0 t0) (THead k u1 t1)) \to ((eq T (THead k0 u2 t2) x) \to 
5884 ((subst0 n v0 u0 u2) \to ((subst0 (s k0 n) v0 t0 t2) \to (or3 (ex2 T (\lambda 
5885 (u3: T).(eq T x (THead k u3 t1))) (\lambda (u3: T).(subst0 i v u1 u3))) (ex2 
5886 T (\lambda (t3: T).(eq T x (THead k u1 t3))) (\lambda (t3: T).(subst0 (s k i) 
5887 v t1 t3))) (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead k u3 
5888 t3)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i v u1 u3))) (\lambda (_: 
5889 T).(\lambda (t3: T).(subst0 (s k i) v t1 t3))))))))))) (\lambda (H6: (eq T v0 
5890 v)).(eq_ind T v (\lambda (t: T).((eq T (THead k0 u0 t0) (THead k u1 t1)) \to 
5891 ((eq T (THead k0 u2 t2) x) \to ((subst0 i t u0 u2) \to ((subst0 (s k0 i) t t0 
5892 t2) \to (or3 (ex2 T (\lambda (u3: T).(eq T x (THead k u3 t1))) (\lambda (u3: 
5893 T).(subst0 i v u1 u3))) (ex2 T (\lambda (t3: T).(eq T x (THead k u1 t3))) 
5894 (\lambda (t3: T).(subst0 (s k i) v t1 t3))) (ex3_2 T T (\lambda (u3: 
5895 T).(\lambda (t3: T).(eq T x (THead k u3 t3)))) (\lambda (u3: T).(\lambda (_: 
5896 T).(subst0 i v u1 u3))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i) v t1 
5897 t3)))))))))) (\lambda (H7: (eq T (THead k0 u0 t0) (THead k u1 t1))).(let H8 
5898 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
5899 [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) 
5900 \Rightarrow t])) (THead k0 u0 t0) (THead k u1 t1) H7) in ((let H9 \def 
5901 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
5902 _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) 
5903 (THead k0 u0 t0) (THead k u1 t1) H7) in ((let H10 \def (f_equal T K (\lambda 
5904 (e: T).(match e return (\lambda (_: T).K) with [(TSort _) \Rightarrow k0 | 
5905 (TLRef _) \Rightarrow k0 | (THead k _ _) \Rightarrow k])) (THead k0 u0 t0) 
5906 (THead k u1 t1) H7) in (eq_ind K k (\lambda (k1: K).((eq T u0 u1) \to ((eq T 
5907 t0 t1) \to ((eq T (THead k1 u2 t2) x) \to ((subst0 i v u0 u2) \to ((subst0 (s 
5908 k1 i) v t0 t2) \to (or3 (ex2 T (\lambda (u3: T).(eq T x (THead k u3 t1))) 
5909 (\lambda (u3: T).(subst0 i v u1 u3))) (ex2 T (\lambda (t3: T).(eq T x (THead 
5910 k u1 t3))) (\lambda (t3: T).(subst0 (s k i) v t1 t3))) (ex3_2 T T (\lambda 
5911 (u3: T).(\lambda (t3: T).(eq T x (THead k u3 t3)))) (\lambda (u3: T).(\lambda 
5912 (_: T).(subst0 i v u1 u3))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i) 
5913 v t1 t3))))))))))) (\lambda (H11: (eq T u0 u1)).(eq_ind T u1 (\lambda (t: 
5914 T).((eq T t0 t1) \to ((eq T (THead k u2 t2) x) \to ((subst0 i v t u2) \to 
5915 ((subst0 (s k i) v t0 t2) \to (or3 (ex2 T (\lambda (u3: T).(eq T x (THead k 
5916 u3 t1))) (\lambda (u3: T).(subst0 i v u1 u3))) (ex2 T (\lambda (t3: T).(eq T 
5917 x (THead k u1 t3))) (\lambda (t3: T).(subst0 (s k i) v t1 t3))) (ex3_2 T T 
5918 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead k u3 t3)))) (\lambda (u3: 
5919 T).(\lambda (_: T).(subst0 i v u1 u3))) (\lambda (_: T).(\lambda (t3: 
5920 T).(subst0 (s k i) v t1 t3)))))))))) (\lambda (H12: (eq T t0 t1)).(eq_ind T 
5921 t1 (\lambda (t: T).((eq T (THead k u2 t2) x) \to ((subst0 i v u1 u2) \to 
5922 ((subst0 (s k i) v t t2) \to (or3 (ex2 T (\lambda (u3: T).(eq T x (THead k u3 
5923 t1))) (\lambda (u3: T).(subst0 i v u1 u3))) (ex2 T (\lambda (t3: T).(eq T x 
5924 (THead k u1 t3))) (\lambda (t3: T).(subst0 (s k i) v t1 t3))) (ex3_2 T T 
5925 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead k u3 t3)))) (\lambda (u3: 
5926 T).(\lambda (_: T).(subst0 i v u1 u3))) (\lambda (_: T).(\lambda (t3: 
5927 T).(subst0 (s k i) v t1 t3))))))))) (\lambda (H13: (eq T (THead k u2 t2) 
5928 x)).(eq_ind T (THead k u2 t2) (\lambda (t: T).((subst0 i v u1 u2) \to 
5929 ((subst0 (s k i) v t1 t2) \to (or3 (ex2 T (\lambda (u3: T).(eq T t (THead k 
5930 u3 t1))) (\lambda (u3: T).(subst0 i v u1 u3))) (ex2 T (\lambda (t3: T).(eq T 
5931 t (THead k u1 t3))) (\lambda (t3: T).(subst0 (s k i) v t1 t3))) (ex3_2 T T 
5932 (\lambda (u3: T).(\lambda (t3: T).(eq T t (THead k u3 t3)))) (\lambda (u3: 
5933 T).(\lambda (_: T).(subst0 i v u1 u3))) (\lambda (_: T).(\lambda (t3: 
5934 T).(subst0 (s k i) v t1 t3)))))))) (\lambda (H14: (subst0 i v u1 
5935 u2)).(\lambda (H15: (subst0 (s k i) v t1 t2)).(or3_intro2 (ex2 T (\lambda 
5936 (u3: T).(eq T (THead k u2 t2) (THead k u3 t1))) (\lambda (u3: T).(subst0 i v 
5937 u1 u3))) (ex2 T (\lambda (t3: T).(eq T (THead k u2 t2) (THead k u1 t3))) 
5938 (\lambda (t3: T).(subst0 (s k i) v t1 t3))) (ex3_2 T T (\lambda (u3: 
5939 T).(\lambda (t3: T).(eq T (THead k u2 t2) (THead k u3 t3)))) (\lambda (u3: 
5940 T).(\lambda (_: T).(subst0 i v u1 u3))) (\lambda (_: T).(\lambda (t3: 
5941 T).(subst0 (s k i) v t1 t3)))) (ex3_2_intro T T (\lambda (u3: T).(\lambda 
5942 (t3: T).(eq T (THead k u2 t2) (THead k u3 t3)))) (\lambda (u3: T).(\lambda 
5943 (_: T).(subst0 i v u1 u3))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i) 
5944 v t1 t3))) u2 t2 (refl_equal T (THead k u2 t2)) H14 H15)))) x H13)) t0 
5945 (sym_eq T t0 t1 H12))) u0 (sym_eq T u0 u1 H11))) k0 (sym_eq K k0 k H10))) 
5946 H9)) H8))) v0 (sym_eq T v0 v H6))) i0 (sym_eq nat i0 i H2) H3 H4 H5 H0 
5947 H1)))))]) in (H0 (refl_equal nat i) (refl_equal T v) (refl_equal T (THead k 
5948 u1 t1)) (refl_equal T x))))))))).
5949
5950 theorem subst0_refl:
5951  \forall (u: T).(\forall (t: T).(\forall (d: nat).((subst0 d u t t) \to 
5952 (\forall (P: Prop).P))))
5953 \def
5954  \lambda (u: T).(\lambda (t: T).(T_ind (\lambda (t0: T).(\forall (d: 
5955 nat).((subst0 d u t0 t0) \to (\forall (P: Prop).P)))) (\lambda (n: 
5956 nat).(\lambda (d: nat).(\lambda (H: (subst0 d u (TSort n) (TSort 
5957 n))).(\lambda (P: Prop).(subst0_gen_sort u (TSort n) d n H P))))) (\lambda 
5958 (n: nat).(\lambda (d: nat).(\lambda (H: (subst0 d u (TLRef n) (TLRef 
5959 n))).(\lambda (P: Prop).(and_ind (eq nat n d) (eq T (TLRef n) (lift (S n) O 
5960 u)) P (\lambda (_: (eq nat n d)).(\lambda (H1: (eq T (TLRef n) (lift (S n) O 
5961 u))).(lift_gen_lref_false (S n) O n (le_O_n n) (le_n (plus O (S n))) u H1 
5962 P))) (subst0_gen_lref u (TLRef n) d n H)))))) (\lambda (k: K).(\lambda (t0: 
5963 T).(\lambda (H: ((\forall (d: nat).((subst0 d u t0 t0) \to (\forall (P: 
5964 Prop).P))))).(\lambda (t1: T).(\lambda (H0: ((\forall (d: nat).((subst0 d u 
5965 t1 t1) \to (\forall (P: Prop).P))))).(\lambda (d: nat).(\lambda (H1: (subst0 
5966 d u (THead k t0 t1) (THead k t0 t1))).(\lambda (P: Prop).(or3_ind (ex2 T 
5967 (\lambda (u2: T).(eq T (THead k t0 t1) (THead k u2 t1))) (\lambda (u2: 
5968 T).(subst0 d u t0 u2))) (ex2 T (\lambda (t2: T).(eq T (THead k t0 t1) (THead 
5969 k t0 t2))) (\lambda (t2: T).(subst0 (s k d) u t1 t2))) (ex3_2 T T (\lambda 
5970 (u2: T).(\lambda (t2: T).(eq T (THead k t0 t1) (THead k u2 t2)))) (\lambda 
5971 (u2: T).(\lambda (_: T).(subst0 d u t0 u2))) (\lambda (_: T).(\lambda (t2: 
5972 T).(subst0 (s k d) u t1 t2)))) P (\lambda (H2: (ex2 T (\lambda (u2: T).(eq T 
5973 (THead k t0 t1) (THead k u2 t1))) (\lambda (u2: T).(subst0 d u t0 
5974 u2)))).(ex2_ind T (\lambda (u2: T).(eq T (THead k t0 t1) (THead k u2 t1))) 
5975 (\lambda (u2: T).(subst0 d u t0 u2)) P (\lambda (x: T).(\lambda (H3: (eq T 
5976 (THead k t0 t1) (THead k x t1))).(\lambda (H4: (subst0 d u t0 x)).(let H5 
5977 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
5978 [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ t _) 
5979 \Rightarrow t])) (THead k t0 t1) (THead k x t1) H3) in (let H6 \def (eq_ind_r 
5980 T x (\lambda (t: T).(subst0 d u t0 t)) H4 t0 H5) in (H d H6 P)))))) H2)) 
5981 (\lambda (H2: (ex2 T (\lambda (t2: T).(eq T (THead k t0 t1) (THead k t0 t2))) 
5982 (\lambda (t2: T).(subst0 (s k d) u t1 t2)))).(ex2_ind T (\lambda (t2: T).(eq 
5983 T (THead k t0 t1) (THead k t0 t2))) (\lambda (t2: T).(subst0 (s k d) u t1 
5984 t2)) P (\lambda (x: T).(\lambda (H3: (eq T (THead k t0 t1) (THead k t0 
5985 x))).(\lambda (H4: (subst0 (s k d) u t1 x)).(let H5 \def (f_equal T T 
5986 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
5987 \Rightarrow t1 | (TLRef _) \Rightarrow t1 | (THead _ _ t) \Rightarrow t])) 
5988 (THead k t0 t1) (THead k t0 x) H3) in (let H6 \def (eq_ind_r T x (\lambda (t: 
5989 T).(subst0 (s k d) u t1 t)) H4 t1 H5) in (H0 (s k d) H6 P)))))) H2)) (\lambda 
5990 (H2: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T (THead k t0 t1) 
5991 (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 d u t0 u2))) 
5992 (\lambda (_: T).(\lambda (t2: T).(subst0 (s k d) u t1 t2))))).(ex3_2_ind T T 
5993 (\lambda (u2: T).(\lambda (t2: T).(eq T (THead k t0 t1) (THead k u2 t2)))) 
5994 (\lambda (u2: T).(\lambda (_: T).(subst0 d u t0 u2))) (\lambda (_: 
5995 T).(\lambda (t2: T).(subst0 (s k d) u t1 t2))) P (\lambda (x0: T).(\lambda 
5996 (x1: T).(\lambda (H3: (eq T (THead k t0 t1) (THead k x0 x1))).(\lambda (H4: 
5997 (subst0 d u t0 x0)).(\lambda (H5: (subst0 (s k d) u t1 x1)).(let H6 \def 
5998 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
5999 _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ t _) \Rightarrow t])) 
6000 (THead k t0 t1) (THead k x0 x1) H3) in ((let H7 \def (f_equal T T (\lambda 
6001 (e: T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t1 | 
6002 (TLRef _) \Rightarrow t1 | (THead _ _ t) \Rightarrow t])) (THead k t0 t1) 
6003 (THead k x0 x1) H3) in (\lambda (H8: (eq T t0 x0)).(let H9 \def (eq_ind_r T 
6004 x1 (\lambda (t: T).(subst0 (s k d) u t1 t)) H5 t1 H7) in (let H10 \def 
6005 (eq_ind_r T x0 (\lambda (t: T).(subst0 d u t0 t)) H4 t0 H8) in (H d H10 
6006 P))))) H6))))))) H2)) (subst0_gen_head k u t0 t1 (THead k t0 t1) d 
6007 H1)))))))))) t)).
6008
6009 theorem subst0_gen_lift_lt:
6010  \forall (u: T).(\forall (t1: T).(\forall (x: T).(\forall (i: nat).(\forall 
6011 (h: nat).(\forall (d: nat).((subst0 i (lift h d u) (lift h (S (plus i d)) t1) 
6012 x) \to (ex2 T (\lambda (t2: T).(eq T x (lift h (S (plus i d)) t2))) (\lambda 
6013 (t2: T).(subst0 i u t1 t2)))))))))
6014 \def
6015  \lambda (u: T).(\lambda (t1: T).(T_ind (\lambda (t: T).(\forall (x: 
6016 T).(\forall (i: nat).(\forall (h: nat).(\forall (d: nat).((subst0 i (lift h d 
6017 u) (lift h (S (plus i d)) t) x) \to (ex2 T (\lambda (t2: T).(eq T x (lift h 
6018 (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u t t2))))))))) (\lambda (n: 
6019 nat).(\lambda (x: T).(\lambda (i: nat).(\lambda (h: nat).(\lambda (d: 
6020 nat).(\lambda (H: (subst0 i (lift h d u) (lift h (S (plus i d)) (TSort n)) 
6021 x)).(let H0 \def (eq_ind T (lift h (S (plus i d)) (TSort n)) (\lambda (t: 
6022 T).(subst0 i (lift h d u) t x)) H (TSort n) (lift_sort n h (S (plus i d)))) 
6023 in (subst0_gen_sort (lift h d u) x i n H0 (ex2 T (\lambda (t2: T).(eq T x 
6024 (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u (TSort n) 
6025 t2))))))))))) (\lambda (n: nat).(\lambda (x: T).(\lambda (i: nat).(\lambda 
6026 (h: nat).(\lambda (d: nat).(\lambda (H: (subst0 i (lift h d u) (lift h (S 
6027 (plus i d)) (TLRef n)) x)).(lt_le_e n (S (plus i d)) (ex2 T (\lambda (t2: 
6028 T).(eq T x (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u (TLRef 
6029 n) t2))) (\lambda (H0: (lt n (S (plus i d)))).(let H1 \def (eq_ind T (lift h 
6030 (S (plus i d)) (TLRef n)) (\lambda (t: T).(subst0 i (lift h d u) t x)) H 
6031 (TLRef n) (lift_lref_lt n h (S (plus i d)) H0)) in (and_ind (eq nat n i) (eq 
6032 T x (lift (S n) O (lift h d u))) (ex2 T (\lambda (t2: T).(eq T x (lift h (S 
6033 (plus i d)) t2))) (\lambda (t2: T).(subst0 i u (TLRef n) t2))) (\lambda (H2: 
6034 (eq nat n i)).(\lambda (H3: (eq T x (lift (S n) O (lift h d u)))).(eq_ind_r T 
6035 (lift (S n) O (lift h d u)) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t 
6036 (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u (TLRef n) t2)))) 
6037 (eq_ind_r nat i (\lambda (n0: nat).(ex2 T (\lambda (t2: T).(eq T (lift (S n0) 
6038 O (lift h d u)) (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u 
6039 (TLRef n0) t2)))) (eq_ind T (lift h (plus (S i) d) (lift (S i) O u)) (\lambda 
6040 (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift h (S (plus i d)) t2))) (\lambda 
6041 (t2: T).(subst0 i u (TLRef i) t2)))) (ex_intro2 T (\lambda (t2: T).(eq T 
6042 (lift h (S (plus i d)) (lift (S i) O u)) (lift h (S (plus i d)) t2))) 
6043 (\lambda (t2: T).(subst0 i u (TLRef i) t2)) (lift (S i) O u) (refl_equal T 
6044 (lift h (S (plus i d)) (lift (S i) O u))) (subst0_lref u i)) (lift (S i) O 
6045 (lift h d u)) (lift_d u h (S i) d O (le_O_n d))) n H2) x H3))) 
6046 (subst0_gen_lref (lift h d u) x i n H1)))) (\lambda (H0: (le (S (plus i d)) 
6047 n)).(let H1 \def (eq_ind T (lift h (S (plus i d)) (TLRef n)) (\lambda (t: 
6048 T).(subst0 i (lift h d u) t x)) H (TLRef (plus n h)) (lift_lref_ge n h (S 
6049 (plus i d)) H0)) in (and_ind (eq nat (plus n h) i) (eq T x (lift (S (plus n 
6050 h)) O (lift h d u))) (ex2 T (\lambda (t2: T).(eq T x (lift h (S (plus i d)) 
6051 t2))) (\lambda (t2: T).(subst0 i u (TLRef n) t2))) (\lambda (H2: (eq nat 
6052 (plus n h) i)).(\lambda (_: (eq T x (lift (S (plus n h)) O (lift h d 
6053 u)))).(let H4 \def (eq_ind_r nat i (\lambda (n0: nat).(le (S (plus n0 d)) n)) 
6054 H0 (plus n h) H2) in (le_false n (plus (plus n h) d) (ex2 T (\lambda (t2: 
6055 T).(eq T x (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u (TLRef 
6056 n) t2))) (le_plus_trans n (plus n h) d (le_plus_l n h)) H4)))) 
6057 (subst0_gen_lref (lift h d u) x i (plus n h) H1))))))))))) (\lambda (k: 
6058 K).(\lambda (t: T).(\lambda (H: ((\forall (x: T).(\forall (i: nat).(\forall 
6059 (h: nat).(\forall (d: nat).((subst0 i (lift h d u) (lift h (S (plus i d)) t) 
6060 x) \to (ex2 T (\lambda (t2: T).(eq T x (lift h (S (plus i d)) t2))) (\lambda 
6061 (t2: T).(subst0 i u t t2)))))))))).(\lambda (t0: T).(\lambda (H0: ((\forall 
6062 (x: T).(\forall (i: nat).(\forall (h: nat).(\forall (d: nat).((subst0 i (lift 
6063 h d u) (lift h (S (plus i d)) t0) x) \to (ex2 T (\lambda (t2: T).(eq T x 
6064 (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u t0 
6065 t2)))))))))).(\lambda (x: T).(\lambda (i: nat).(\lambda (h: nat).(\lambda (d: 
6066 nat).(\lambda (H1: (subst0 i (lift h d u) (lift h (S (plus i d)) (THead k t 
6067 t0)) x)).(let H2 \def (eq_ind T (lift h (S (plus i d)) (THead k t t0)) 
6068 (\lambda (t: T).(subst0 i (lift h d u) t x)) H1 (THead k (lift h (S (plus i 
6069 d)) t) (lift h (s k (S (plus i d))) t0)) (lift_head k t t0 h (S (plus i d)))) 
6070 in (or3_ind (ex2 T (\lambda (u2: T).(eq T x (THead k u2 (lift h (s k (S (plus 
6071 i d))) t0)))) (\lambda (u2: T).(subst0 i (lift h d u) (lift h (S (plus i d)) 
6072 t) u2))) (ex2 T (\lambda (t2: T).(eq T x (THead k (lift h (S (plus i d)) t) 
6073 t2))) (\lambda (t2: T).(subst0 (s k i) (lift h d u) (lift h (s k (S (plus i 
6074 d))) t0) t2))) (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead k 
6075 u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i (lift h d u) (lift h (S 
6076 (plus i d)) t) u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i) (lift h 
6077 d u) (lift h (s k (S (plus i d))) t0) t2)))) (ex2 T (\lambda (t2: T).(eq T x 
6078 (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u (THead k t t0) 
6079 t2))) (\lambda (H3: (ex2 T (\lambda (u2: T).(eq T x (THead k u2 (lift h (s k 
6080 (S (plus i d))) t0)))) (\lambda (u2: T).(subst0 i (lift h d u) (lift h (S 
6081 (plus i d)) t) u2)))).(ex2_ind T (\lambda (u2: T).(eq T x (THead k u2 (lift h 
6082 (s k (S (plus i d))) t0)))) (\lambda (u2: T).(subst0 i (lift h d u) (lift h 
6083 (S (plus i d)) t) u2)) (ex2 T (\lambda (t2: T).(eq T x (lift h (S (plus i d)) 
6084 t2))) (\lambda (t2: T).(subst0 i u (THead k t t0) t2))) (\lambda (x0: 
6085 T).(\lambda (H4: (eq T x (THead k x0 (lift h (s k (S (plus i d))) 
6086 t0)))).(\lambda (H5: (subst0 i (lift h d u) (lift h (S (plus i d)) t) 
6087 x0)).(eq_ind_r T (THead k x0 (lift h (s k (S (plus i d))) t0)) (\lambda (t2: 
6088 T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h (S (plus i d)) t3))) (\lambda 
6089 (t3: T).(subst0 i u (THead k t t0) t3)))) (ex2_ind T (\lambda (t2: T).(eq T 
6090 x0 (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u t t2)) (ex2 T 
6091 (\lambda (t2: T).(eq T (THead k x0 (lift h (s k (S (plus i d))) t0)) (lift h 
6092 (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u (THead k t t0) t2))) 
6093 (\lambda (x1: T).(\lambda (H6: (eq T x0 (lift h (S (plus i d)) x1))).(\lambda 
6094 (H7: (subst0 i u t x1)).(eq_ind_r T (lift h (S (plus i d)) x1) (\lambda (t2: 
6095 T).(ex2 T (\lambda (t3: T).(eq T (THead k t2 (lift h (s k (S (plus i d))) 
6096 t0)) (lift h (S (plus i d)) t3))) (\lambda (t3: T).(subst0 i u (THead k t t0) 
6097 t3)))) (eq_ind T (lift h (S (plus i d)) (THead k x1 t0)) (\lambda (t2: 
6098 T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h (S (plus i d)) t3))) (\lambda 
6099 (t3: T).(subst0 i u (THead k t t0) t3)))) (ex_intro2 T (\lambda (t2: T).(eq T 
6100 (lift h (S (plus i d)) (THead k x1 t0)) (lift h (S (plus i d)) t2))) (\lambda 
6101 (t2: T).(subst0 i u (THead k t t0) t2)) (THead k x1 t0) (refl_equal T (lift h 
6102 (S (plus i d)) (THead k x1 t0))) (subst0_fst u x1 t i H7 t0 k)) (THead k 
6103 (lift h (S (plus i d)) x1) (lift h (s k (S (plus i d))) t0)) (lift_head k x1 
6104 t0 h (S (plus i d)))) x0 H6)))) (H x0 i h d H5)) x H4)))) H3)) (\lambda (H3: 
6105 (ex2 T (\lambda (t2: T).(eq T x (THead k (lift h (S (plus i d)) t) t2))) 
6106 (\lambda (t2: T).(subst0 (s k i) (lift h d u) (lift h (s k (S (plus i d))) 
6107 t0) t2)))).(ex2_ind T (\lambda (t2: T).(eq T x (THead k (lift h (S (plus i 
6108 d)) t) t2))) (\lambda (t2: T).(subst0 (s k i) (lift h d u) (lift h (s k (S 
6109 (plus i d))) t0) t2)) (ex2 T (\lambda (t2: T).(eq T x (lift h (S (plus i d)) 
6110 t2))) (\lambda (t2: T).(subst0 i u (THead k t t0) t2))) (\lambda (x0: 
6111 T).(\lambda (H4: (eq T x (THead k (lift h (S (plus i d)) t) x0))).(\lambda 
6112 (H5: (subst0 (s k i) (lift h d u) (lift h (s k (S (plus i d))) t0) 
6113 x0)).(eq_ind_r T (THead k (lift h (S (plus i d)) t) x0) (\lambda (t2: T).(ex2 
6114 T (\lambda (t3: T).(eq T t2 (lift h (S (plus i d)) t3))) (\lambda (t3: 
6115 T).(subst0 i u (THead k t t0) t3)))) (let H6 \def (eq_ind nat (s k (S (plus i 
6116 d))) (\lambda (n: nat).(subst0 (s k i) (lift h d u) (lift h n t0) x0)) H5 (S 
6117 (s k (plus i d))) (s_S k (plus i d))) in (let H7 \def (eq_ind nat (s k (plus 
6118 i d)) (\lambda (n: nat).(subst0 (s k i) (lift h d u) (lift h (S n) t0) x0)) 
6119 H6 (plus (s k i) d) (s_plus k i d)) in (ex2_ind T (\lambda (t2: T).(eq T x0 
6120 (lift h (S (plus (s k i) d)) t2))) (\lambda (t2: T).(subst0 (s k i) u t0 t2)) 
6121 (ex2 T (\lambda (t2: T).(eq T (THead k (lift h (S (plus i d)) t) x0) (lift h 
6122 (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u (THead k t t0) t2))) 
6123 (\lambda (x1: T).(\lambda (H8: (eq T x0 (lift h (S (plus (s k i) d)) 
6124 x1))).(\lambda (H9: (subst0 (s k i) u t0 x1)).(eq_ind_r T (lift h (S (plus (s 
6125 k i) d)) x1) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead k (lift h 
6126 (S (plus i d)) t) t2) (lift h (S (plus i d)) t3))) (\lambda (t3: T).(subst0 i 
6127 u (THead k t t0) t3)))) (eq_ind nat (s k (plus i d)) (\lambda (n: nat).(ex2 T 
6128 (\lambda (t2: T).(eq T (THead k (lift h (S (plus i d)) t) (lift h (S n) x1)) 
6129 (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u (THead k t t0) 
6130 t2)))) (eq_ind nat (s k (S (plus i d))) (\lambda (n: nat).(ex2 T (\lambda 
6131 (t2: T).(eq T (THead k (lift h (S (plus i d)) t) (lift h n x1)) (lift h (S 
6132 (plus i d)) t2))) (\lambda (t2: T).(subst0 i u (THead k t t0) t2)))) (eq_ind 
6133 T (lift h (S (plus i d)) (THead k t x1)) (\lambda (t2: T).(ex2 T (\lambda 
6134 (t3: T).(eq T t2 (lift h (S (plus i d)) t3))) (\lambda (t3: T).(subst0 i u 
6135 (THead k t t0) t3)))) (ex_intro2 T (\lambda (t2: T).(eq T (lift h (S (plus i 
6136 d)) (THead k t x1)) (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u 
6137 (THead k t t0) t2)) (THead k t x1) (refl_equal T (lift h (S (plus i d)) 
6138 (THead k t x1))) (subst0_snd k u x1 t0 i H9 t)) (THead k (lift h (S (plus i 
6139 d)) t) (lift h (s k (S (plus i d))) x1)) (lift_head k t x1 h (S (plus i d)))) 
6140 (S (s k (plus i d))) (s_S k (plus i d))) (plus (s k i) d) (s_plus k i d)) x0 
6141 H8)))) (H0 x0 (s k i) h d H7)))) x H4)))) H3)) (\lambda (H3: (ex3_2 T T 
6142 (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead k u2 t2)))) (\lambda (u2: 
6143 T).(\lambda (_: T).(subst0 i (lift h d u) (lift h (S (plus i d)) t) u2))) 
6144 (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i) (lift h d u) (lift h (s k (S 
6145 (plus i d))) t0) t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t2: T).(eq 
6146 T x (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i (lift h d 
6147 u) (lift h (S (plus i d)) t) u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 
6148 (s k i) (lift h d u) (lift h (s k (S (plus i d))) t0) t2))) (ex2 T (\lambda 
6149 (t2: T).(eq T x (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u 
6150 (THead k t t0) t2))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H4: (eq T x 
6151 (THead k x0 x1))).(\lambda (H5: (subst0 i (lift h d u) (lift h (S (plus i d)) 
6152 t) x0)).(\lambda (H6: (subst0 (s k i) (lift h d u) (lift h (s k (S (plus i 
6153 d))) t0) x1)).(eq_ind_r T (THead k x0 x1) (\lambda (t2: T).(ex2 T (\lambda 
6154 (t3: T).(eq T t2 (lift h (S (plus i d)) t3))) (\lambda (t3: T).(subst0 i u 
6155 (THead k t t0) t3)))) (let H7 \def (eq_ind nat (s k (S (plus i d))) (\lambda 
6156 (n: nat).(subst0 (s k i) (lift h d u) (lift h n t0) x1)) H6 (S (s k (plus i 
6157 d))) (s_S k (plus i d))) in (let H8 \def (eq_ind nat (s k (plus i d)) 
6158 (\lambda (n: nat).(subst0 (s k i) (lift h d u) (lift h (S n) t0) x1)) H7 
6159 (plus (s k i) d) (s_plus k i d)) in (ex2_ind T (\lambda (t2: T).(eq T x1 
6160 (lift h (S (plus (s k i) d)) t2))) (\lambda (t2: T).(subst0 (s k i) u t0 t2)) 
6161 (ex2 T (\lambda (t2: T).(eq T (THead k x0 x1) (lift h (S (plus i d)) t2))) 
6162 (\lambda (t2: T).(subst0 i u (THead k t t0) t2))) (\lambda (x2: T).(\lambda 
6163 (H9: (eq T x1 (lift h (S (plus (s k i) d)) x2))).(\lambda (H10: (subst0 (s k 
6164 i) u t0 x2)).(ex2_ind T (\lambda (t2: T).(eq T x0 (lift h (S (plus i d)) 
6165 t2))) (\lambda (t2: T).(subst0 i u t t2)) (ex2 T (\lambda (t2: T).(eq T 
6166 (THead k x0 x1) (lift h (S (plus i d)) t2))) (\lambda (t2: T).(subst0 i u 
6167 (THead k t t0) t2))) (\lambda (x3: T).(\lambda (H11: (eq T x0 (lift h (S 
6168 (plus i d)) x3))).(\lambda (H12: (subst0 i u t x3)).(eq_ind_r T (lift h (S 
6169 (plus i d)) x3) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead k t2 
6170 x1) (lift h (S (plus i d)) t3))) (\lambda (t3: T).(subst0 i u (THead k t t0) 
6171 t3)))) (eq_ind_r T (lift h (S (plus (s k i) d)) x2) (\lambda (t2: T).(ex2 T 
6172 (\lambda (t3: T).(eq T (THead k (lift h (S (plus i d)) x3) t2) (lift h (S 
6173 (plus i d)) t3))) (\lambda (t3: T).(subst0 i u (THead k t t0) t3)))) (eq_ind 
6174 nat (s k (plus i d)) (\lambda (n: nat).(ex2 T (\lambda (t2: T).(eq T (THead k 
6175 (lift h (S (plus i d)) x3) (lift h (S n) x2)) (lift h (S (plus i d)) t2))) 
6176 (\lambda (t2: T).(subst0 i u (THead k t t0) t2)))) (eq_ind nat (s k (S (plus 
6177 i d))) (\lambda (n: nat).(ex2 T (\lambda (t2: T).(eq T (THead k (lift h (S 
6178 (plus i d)) x3) (lift h n x2)) (lift h (S (plus i d)) t2))) (\lambda (t2: 
6179 T).(subst0 i u (THead k t t0) t2)))) (eq_ind T (lift h (S (plus i d)) (THead 
6180 k x3 x2)) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h (S (plus 
6181 i d)) t3))) (\lambda (t3: T).(subst0 i u (THead k t t0) t3)))) (ex_intro2 T 
6182 (\lambda (t2: T).(eq T (lift h (S (plus i d)) (THead k x3 x2)) (lift h (S 
6183 (plus i d)) t2))) (\lambda (t2: T).(subst0 i u (THead k t t0) t2)) (THead k 
6184 x3 x2) (refl_equal T (lift h (S (plus i d)) (THead k x3 x2))) (subst0_both u 
6185 t x3 i H12 k t0 x2 H10)) (THead k (lift h (S (plus i d)) x3) (lift h (s k (S 
6186 (plus i d))) x2)) (lift_head k x3 x2 h (S (plus i d)))) (S (s k (plus i d))) 
6187 (s_S k (plus i d))) (plus (s k i) d) (s_plus k i d)) x1 H9) x0 H11)))) (H x0 
6188 i h d H5))))) (H0 x1 (s k i) h d H8)))) x H4)))))) H3)) (subst0_gen_head k 
6189 (lift h d u) (lift h (S (plus i d)) t) (lift h (s k (S (plus i d))) t0) x i 
6190 H2))))))))))))) t1)).
6191
6192 theorem subst0_gen_lift_false:
6193  \forall (t: T).(\forall (u: T).(\forall (x: T).(\forall (h: nat).(\forall 
6194 (d: nat).(\forall (i: nat).((le d i) \to ((lt i (plus d h)) \to ((subst0 i u 
6195 (lift h d t) x) \to (\forall (P: Prop).P)))))))))
6196 \def
6197  \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (u: T).(\forall (x: 
6198 T).(\forall (h: nat).(\forall (d: nat).(\forall (i: nat).((le d i) \to ((lt i 
6199 (plus d h)) \to ((subst0 i u (lift h d t0) x) \to (\forall (P: 
6200 Prop).P)))))))))) (\lambda (n: nat).(\lambda (u: T).(\lambda (x: T).(\lambda 
6201 (h: nat).(\lambda (d: nat).(\lambda (i: nat).(\lambda (_: (le d i)).(\lambda 
6202 (_: (lt i (plus d h))).(\lambda (H1: (subst0 i u (lift h d (TSort n)) 
6203 x)).(\lambda (P: Prop).(let H2 \def (eq_ind T (lift h d (TSort n)) (\lambda 
6204 (t: T).(subst0 i u t x)) H1 (TSort n) (lift_sort n h d)) in (subst0_gen_sort 
6205 u x i n H2 P)))))))))))) (\lambda (n: nat).(\lambda (u: T).(\lambda (x: 
6206 T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (i: nat).(\lambda (H: (le d 
6207 i)).(\lambda (H0: (lt i (plus d h))).(\lambda (H1: (subst0 i u (lift h d 
6208 (TLRef n)) x)).(\lambda (P: Prop).(lt_le_e n d P (\lambda (H2: (lt n d)).(let 
6209 H3 \def (eq_ind T (lift h d (TLRef n)) (\lambda (t: T).(subst0 i u t x)) H1 
6210 (TLRef n) (lift_lref_lt n h d H2)) in (and_ind (eq nat n i) (eq T x (lift (S 
6211 n) O u)) P (\lambda (H4: (eq nat n i)).(\lambda (_: (eq T x (lift (S n) O 
6212 u))).(let H6 \def (eq_ind nat n (\lambda (n: nat).(lt n d)) H2 i H4) in 
6213 (le_false d i P H H6)))) (subst0_gen_lref u x i n H3)))) (\lambda (H2: (le d 
6214 n)).(let H3 \def (eq_ind T (lift h d (TLRef n)) (\lambda (t: T).(subst0 i u t 
6215 x)) H1 (TLRef (plus n h)) (lift_lref_ge n h d H2)) in (and_ind (eq nat (plus 
6216 n h) i) (eq T x (lift (S (plus n h)) O u)) P (\lambda (H4: (eq nat (plus n h) 
6217 i)).(\lambda (_: (eq T x (lift (S (plus n h)) O u))).(let H6 \def (eq_ind_r 
6218 nat i (\lambda (n: nat).(lt n (plus d h))) H0 (plus n h) H4) in (le_false d n 
6219 P H2 (lt_le_S n d (simpl_lt_plus_r h n d H6)))))) (subst0_gen_lref u x i 
6220 (plus n h) H3))))))))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda (H: 
6221 ((\forall (u: T).(\forall (x: T).(\forall (h: nat).(\forall (d: nat).(\forall 
6222 (i: nat).((le d i) \to ((lt i (plus d h)) \to ((subst0 i u (lift h d t0) x) 
6223 \to (\forall (P: Prop).P))))))))))).(\lambda (t1: T).(\lambda (H0: ((\forall 
6224 (u: T).(\forall (x: T).(\forall (h: nat).(\forall (d: nat).(\forall (i: 
6225 nat).((le d i) \to ((lt i (plus d h)) \to ((subst0 i u (lift h d t1) x) \to 
6226 (\forall (P: Prop).P))))))))))).(\lambda (u: T).(\lambda (x: T).(\lambda (h: 
6227 nat).(\lambda (d: nat).(\lambda (i: nat).(\lambda (H1: (le d i)).(\lambda 
6228 (H2: (lt i (plus d h))).(\lambda (H3: (subst0 i u (lift h d (THead k t0 t1)) 
6229 x)).(\lambda (P: Prop).(let H4 \def (eq_ind T (lift h d (THead k t0 t1)) 
6230 (\lambda (t: T).(subst0 i u t x)) H3 (THead k (lift h d t0) (lift h (s k d) 
6231 t1)) (lift_head k t0 t1 h d)) in (or3_ind (ex2 T (\lambda (u2: T).(eq T x 
6232 (THead k u2 (lift h (s k d) t1)))) (\lambda (u2: T).(subst0 i u (lift h d t0) 
6233 u2))) (ex2 T (\lambda (t2: T).(eq T x (THead k (lift h d t0) t2))) (\lambda 
6234 (t2: T).(subst0 (s k i) u (lift h (s k d) t1) t2))) (ex3_2 T T (\lambda (u2: 
6235 T).(\lambda (t2: T).(eq T x (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: 
6236 T).(subst0 i u (lift h d t0) u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 
6237 (s k i) u (lift h (s k d) t1) t2)))) P (\lambda (H5: (ex2 T (\lambda (u2: 
6238 T).(eq T x (THead k u2 (lift h (s k d) t1)))) (\lambda (u2: T).(subst0 i u 
6239 (lift h d t0) u2)))).(ex2_ind T (\lambda (u2: T).(eq T x (THead k u2 (lift h 
6240 (s k d) t1)))) (\lambda (u2: T).(subst0 i u (lift h d t0) u2)) P (\lambda 
6241 (x0: T).(\lambda (_: (eq T x (THead k x0 (lift h (s k d) t1)))).(\lambda (H7: 
6242 (subst0 i u (lift h d t0) x0)).(H u x0 h d i H1 H2 H7 P)))) H5)) (\lambda 
6243 (H5: (ex2 T (\lambda (t2: T).(eq T x (THead k (lift h d t0) t2))) (\lambda 
6244 (t2: T).(subst0 (s k i) u (lift h (s k d) t1) t2)))).(ex2_ind T (\lambda (t2: 
6245 T).(eq T x (THead k (lift h d t0) t2))) (\lambda (t2: T).(subst0 (s k i) u 
6246 (lift h (s k d) t1) t2)) P (\lambda (x0: T).(\lambda (_: (eq T x (THead k 
6247 (lift h d t0) x0))).(\lambda (H7: (subst0 (s k i) u (lift h (s k d) t1) 
6248 x0)).(H0 u x0 h (s k d) (s k i) (s_le k d i H1) (eq_ind nat (s k (plus d h)) 
6249 (\lambda (n: nat).(lt (s k i) n)) (lt_le_S (s k i) (s k (plus d h)) (s_lt k i 
6250 (plus d h) H2)) (plus (s k d) h) (s_plus k d h)) H7 P)))) H5)) (\lambda (H5: 
6251 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead k u2 t2)))) 
6252 (\lambda (u2: T).(\lambda (_: T).(subst0 i u (lift h d t0) u2))) (\lambda (_: 
6253 T).(\lambda (t2: T).(subst0 (s k i) u (lift h (s k d) t1) t2))))).(ex3_2_ind 
6254 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead k u2 t2)))) (\lambda 
6255 (u2: T).(\lambda (_: T).(subst0 i u (lift h d t0) u2))) (\lambda (_: 
6256 T).(\lambda (t2: T).(subst0 (s k i) u (lift h (s k d) t1) t2))) P (\lambda 
6257 (x0: T).(\lambda (x1: T).(\lambda (_: (eq T x (THead k x0 x1))).(\lambda (H7: 
6258 (subst0 i u (lift h d t0) x0)).(\lambda (_: (subst0 (s k i) u (lift h (s k d) 
6259 t1) x1)).(H u x0 h d i H1 H2 H7 P)))))) H5)) (subst0_gen_head k u (lift h d 
6260 t0) (lift h (s k d) t1) x i H4))))))))))))))))) t).
6261
6262 theorem subst0_gen_lift_ge:
6263  \forall (u: T).(\forall (t1: T).(\forall (x: T).(\forall (i: nat).(\forall 
6264 (h: nat).(\forall (d: nat).((subst0 i u (lift h d t1) x) \to ((le (plus d h) 
6265 i) \to (ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda (t2: 
6266 T).(subst0 (minus i h) u t1 t2))))))))))
6267 \def
6268  \lambda (u: T).(\lambda (t1: T).(T_ind (\lambda (t: T).(\forall (x: 
6269 T).(\forall (i: nat).(\forall (h: nat).(\forall (d: nat).((subst0 i u (lift h 
6270 d t) x) \to ((le (plus d h) i) \to (ex2 T (\lambda (t2: T).(eq T x (lift h d 
6271 t2))) (\lambda (t2: T).(subst0 (minus i h) u t t2)))))))))) (\lambda (n: 
6272 nat).(\lambda (x: T).(\lambda (i: nat).(\lambda (h: nat).(\lambda (d: 
6273 nat).(\lambda (H: (subst0 i u (lift h d (TSort n)) x)).(\lambda (_: (le (plus 
6274 d h) i)).(let H1 \def (eq_ind T (lift h d (TSort n)) (\lambda (t: T).(subst0 
6275 i u t x)) H (TSort n) (lift_sort n h d)) in (subst0_gen_sort u x i n H1 (ex2 
6276 T (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(subst0 (minus i 
6277 h) u (TSort n) t2)))))))))))) (\lambda (n: nat).(\lambda (x: T).(\lambda (i: 
6278 nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (subst0 i u (lift h d 
6279 (TLRef n)) x)).(\lambda (H0: (le (plus d h) i)).(lt_le_e n d (ex2 T (\lambda 
6280 (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(subst0 (minus i h) u (TLRef 
6281 n) t2))) (\lambda (H1: (lt n d)).(let H2 \def (eq_ind T (lift h d (TLRef n)) 
6282 (\lambda (t: T).(subst0 i u t x)) H (TLRef n) (lift_lref_lt n h d H1)) in 
6283 (and_ind (eq nat n i) (eq T x (lift (S n) O u)) (ex2 T (\lambda (t2: T).(eq T 
6284 x (lift h d t2))) (\lambda (t2: T).(subst0 (minus i h) u (TLRef n) t2))) 
6285 (\lambda (H3: (eq nat n i)).(\lambda (_: (eq T x (lift (S n) O u))).(let H5 
6286 \def (eq_ind nat n (\lambda (n: nat).(lt n d)) H1 i H3) in (le_false (plus d 
6287 h) i (ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(subst0 
6288 (minus i h) u (TLRef n) t2))) H0 (le_plus_trans (S i) d h H5))))) 
6289 (subst0_gen_lref u x i n H2)))) (\lambda (H1: (le d n)).(let H2 \def (eq_ind 
6290 T (lift h d (TLRef n)) (\lambda (t: T).(subst0 i u t x)) H (TLRef (plus n h)) 
6291 (lift_lref_ge n h d H1)) in (and_ind (eq nat (plus n h) i) (eq T x (lift (S 
6292 (plus n h)) O u)) (ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda 
6293 (t2: T).(subst0 (minus i h) u (TLRef n) t2))) (\lambda (H3: (eq nat (plus n 
6294 h) i)).(\lambda (H4: (eq T x (lift (S (plus n h)) O u))).(eq_ind nat (plus n 
6295 h) (\lambda (n0: nat).(ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) 
6296 (\lambda (t2: T).(subst0 (minus n0 h) u (TLRef n) t2)))) (eq_ind_r T (lift (S 
6297 (plus n h)) O u) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift h d 
6298 t2))) (\lambda (t2: T).(subst0 (minus (plus n h) h) u (TLRef n) t2)))) 
6299 (eq_ind_r nat n (\lambda (n0: nat).(ex2 T (\lambda (t2: T).(eq T (lift (S 
6300 (plus n h)) O u) (lift h d t2))) (\lambda (t2: T).(subst0 n0 u (TLRef n) 
6301 t2)))) (ex_intro2 T (\lambda (t2: T).(eq T (lift (S (plus n h)) O u) (lift h 
6302 d t2))) (\lambda (t2: T).(subst0 n u (TLRef n) t2)) (lift (S n) O u) 
6303 (eq_ind_r T (lift (plus h (S n)) O u) (\lambda (t: T).(eq T (lift (S (plus n 
6304 h)) O u) t)) (eq_ind_r nat (plus h n) (\lambda (n0: nat).(eq T (lift (S n0) O 
6305 u) (lift (plus h (S n)) O u))) (eq_ind_r nat (plus h (S n)) (\lambda (n0: 
6306 nat).(eq T (lift n0 O u) (lift (plus h (S n)) O u))) (refl_equal T (lift 
6307 (plus h (S n)) O u)) (S (plus h n)) (plus_n_Sm h n)) (plus n h) (plus_comm n 
6308 h)) (lift h d (lift (S n) O u)) (lift_free u (S n) h O d (le_trans d (S n) 
6309 (plus O (S n)) (le_S d n H1) (le_n (plus O (S n)))) (le_O_n d))) (subst0_lref 
6310 u n)) (minus (plus n h) h) (minus_plus_r n h)) x H4) i H3))) (subst0_gen_lref 
6311 u x i (plus n h) H2)))))))))))) (\lambda (k: K).(\lambda (t: T).(\lambda (H: 
6312 ((\forall (x: T).(\forall (i: nat).(\forall (h: nat).(\forall (d: 
6313 nat).((subst0 i u (lift h d t) x) \to ((le (plus d h) i) \to (ex2 T (\lambda 
6314 (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(subst0 (minus i h) u t 
6315 t2))))))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (x: T).(\forall (i: 
6316 nat).(\forall (h: nat).(\forall (d: nat).((subst0 i u (lift h d t0) x) \to 
6317 ((le (plus d h) i) \to (ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) 
6318 (\lambda (t2: T).(subst0 (minus i h) u t0 t2))))))))))).(\lambda (x: 
6319 T).(\lambda (i: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: 
6320 (subst0 i u (lift h d (THead k t t0)) x)).(\lambda (H2: (le (plus d h) 
6321 i)).(let H3 \def (eq_ind T (lift h d (THead k t t0)) (\lambda (t: T).(subst0 
6322 i u t x)) H1 (THead k (lift h d t) (lift h (s k d) t0)) (lift_head k t t0 h 
6323 d)) in (or3_ind (ex2 T (\lambda (u2: T).(eq T x (THead k u2 (lift h (s k d) 
6324 t0)))) (\lambda (u2: T).(subst0 i u (lift h d t) u2))) (ex2 T (\lambda (t2: 
6325 T).(eq T x (THead k (lift h d t) t2))) (\lambda (t2: T).(subst0 (s k i) u 
6326 (lift h (s k d) t0) t2))) (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T 
6327 x (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u (lift h d 
6328 t) u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i) u (lift h (s k d) 
6329 t0) t2)))) (ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda (t2: 
6330 T).(subst0 (minus i h) u (THead k t t0) t2))) (\lambda (H4: (ex2 T (\lambda 
6331 (u2: T).(eq T x (THead k u2 (lift h (s k d) t0)))) (\lambda (u2: T).(subst0 i 
6332 u (lift h d t) u2)))).(ex2_ind T (\lambda (u2: T).(eq T x (THead k u2 (lift h 
6333 (s k d) t0)))) (\lambda (u2: T).(subst0 i u (lift h d t) u2)) (ex2 T (\lambda 
6334 (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(subst0 (minus i h) u (THead 
6335 k t t0) t2))) (\lambda (x0: T).(\lambda (H5: (eq T x (THead k x0 (lift h (s k 
6336 d) t0)))).(\lambda (H6: (subst0 i u (lift h d t) x0)).(eq_ind_r T (THead k x0 
6337 (lift h (s k d) t0)) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T t2 (lift 
6338 h d t3))) (\lambda (t3: T).(subst0 (minus i h) u (THead k t t0) t3)))) 
6339 (ex2_ind T (\lambda (t2: T).(eq T x0 (lift h d t2))) (\lambda (t2: T).(subst0 
6340 (minus i h) u t t2)) (ex2 T (\lambda (t2: T).(eq T (THead k x0 (lift h (s k 
6341 d) t0)) (lift h d t2))) (\lambda (t2: T).(subst0 (minus i h) u (THead k t t0) 
6342 t2))) (\lambda (x1: T).(\lambda (H7: (eq T x0 (lift h d x1))).(\lambda (H8: 
6343 (subst0 (minus i h) u t x1)).(eq_ind_r T (lift h d x1) (\lambda (t2: T).(ex2 
6344 T (\lambda (t3: T).(eq T (THead k t2 (lift h (s k d) t0)) (lift h d t3))) 
6345 (\lambda (t3: T).(subst0 (minus i h) u (THead k t t0) t3)))) (eq_ind T (lift 
6346 h d (THead k x1 t0)) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T t2 (lift 
6347 h d t3))) (\lambda (t3: T).(subst0 (minus i h) u (THead k t t0) t3)))) 
6348 (ex_intro2 T (\lambda (t2: T).(eq T (lift h d (THead k x1 t0)) (lift h d 
6349 t2))) (\lambda (t2: T).(subst0 (minus i h) u (THead k t t0) t2)) (THead k x1 
6350 t0) (refl_equal T (lift h d (THead k x1 t0))) (subst0_fst u x1 t (minus i h) 
6351 H8 t0 k)) (THead k (lift h d x1) (lift h (s k d) t0)) (lift_head k x1 t0 h 
6352 d)) x0 H7)))) (H x0 i h d H6 H2)) x H5)))) H4)) (\lambda (H4: (ex2 T (\lambda 
6353 (t2: T).(eq T x (THead k (lift h d t) t2))) (\lambda (t2: T).(subst0 (s k i) 
6354 u (lift h (s k d) t0) t2)))).(ex2_ind T (\lambda (t2: T).(eq T x (THead k 
6355 (lift h d t) t2))) (\lambda (t2: T).(subst0 (s k i) u (lift h (s k d) t0) 
6356 t2)) (ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(subst0 
6357 (minus i h) u (THead k t t0) t2))) (\lambda (x0: T).(\lambda (H5: (eq T x 
6358 (THead k (lift h d t) x0))).(\lambda (H6: (subst0 (s k i) u (lift h (s k d) 
6359 t0) x0)).(eq_ind_r T (THead k (lift h d t) x0) (\lambda (t2: T).(ex2 T 
6360 (\lambda (t3: T).(eq T t2 (lift h d t3))) (\lambda (t3: T).(subst0 (minus i 
6361 h) u (THead k t t0) t3)))) (ex2_ind T (\lambda (t2: T).(eq T x0 (lift h (s k 
6362 d) t2))) (\lambda (t2: T).(subst0 (minus (s k i) h) u t0 t2)) (ex2 T (\lambda 
6363 (t2: T).(eq T (THead k (lift h d t) x0) (lift h d t2))) (\lambda (t2: 
6364 T).(subst0 (minus i h) u (THead k t t0) t2))) (\lambda (x1: T).(\lambda (H7: 
6365 (eq T x0 (lift h (s k d) x1))).(\lambda (H8: (subst0 (minus (s k i) h) u t0 
6366 x1)).(eq_ind_r T (lift h (s k d) x1) (\lambda (t2: T).(ex2 T (\lambda (t3: 
6367 T).(eq T (THead k (lift h d t) t2) (lift h d t3))) (\lambda (t3: T).(subst0 
6368 (minus i h) u (THead k t t0) t3)))) (eq_ind T (lift h d (THead k t x1)) 
6369 (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h d t3))) (\lambda 
6370 (t3: T).(subst0 (minus i h) u (THead k t t0) t3)))) (let H9 \def (eq_ind_r 
6371 nat (minus (s k i) h) (\lambda (n: nat).(subst0 n u t0 x1)) H8 (s k (minus i 
6372 h)) (s_minus k i h (le_trans_plus_r d h i H2))) in (ex_intro2 T (\lambda (t2: 
6373 T).(eq T (lift h d (THead k t x1)) (lift h d t2))) (\lambda (t2: T).(subst0 
6374 (minus i h) u (THead k t t0) t2)) (THead k t x1) (refl_equal T (lift h d 
6375 (THead k t x1))) (subst0_snd k u x1 t0 (minus i h) H9 t))) (THead k (lift h d 
6376 t) (lift h (s k d) x1)) (lift_head k t x1 h d)) x0 H7)))) (H0 x0 (s k i) h (s 
6377 k d) H6 (eq_ind nat (s k (plus d h)) (\lambda (n: nat).(le n (s k i))) (s_le 
6378 k (plus d h) i H2) (plus (s k d) h) (s_plus k d h)))) x H5)))) H4)) (\lambda 
6379 (H4: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead k u2 t2)))) 
6380 (\lambda (u2: T).(\lambda (_: T).(subst0 i u (lift h d t) u2))) (\lambda (_: 
6381 T).(\lambda (t2: T).(subst0 (s k i) u (lift h (s k d) t0) t2))))).(ex3_2_ind 
6382 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead k u2 t2)))) (\lambda 
6383 (u2: T).(\lambda (_: T).(subst0 i u (lift h d t) u2))) (\lambda (_: 
6384 T).(\lambda (t2: T).(subst0 (s k i) u (lift h (s k d) t0) t2))) (ex2 T 
6385 (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(subst0 (minus i h) 
6386 u (THead k t t0) t2))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H5: (eq T 
6387 x (THead k x0 x1))).(\lambda (H6: (subst0 i u (lift h d t) x0)).(\lambda (H7: 
6388 (subst0 (s k i) u (lift h (s k d) t0) x1)).(eq_ind_r T (THead k x0 x1) 
6389 (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h d t3))) (\lambda 
6390 (t3: T).(subst0 (minus i h) u (THead k t t0) t3)))) (ex2_ind T (\lambda (t2: 
6391 T).(eq T x1 (lift h (s k d) t2))) (\lambda (t2: T).(subst0 (minus (s k i) h) 
6392 u t0 t2)) (ex2 T (\lambda (t2: T).(eq T (THead k x0 x1) (lift h d t2))) 
6393 (\lambda (t2: T).(subst0 (minus i h) u (THead k t t0) t2))) (\lambda (x2: 
6394 T).(\lambda (H8: (eq T x1 (lift h (s k d) x2))).(\lambda (H9: (subst0 (minus 
6395 (s k i) h) u t0 x2)).(ex2_ind T (\lambda (t2: T).(eq T x0 (lift h d t2))) 
6396 (\lambda (t2: T).(subst0 (minus i h) u t t2)) (ex2 T (\lambda (t2: T).(eq T 
6397 (THead k x0 x1) (lift h d t2))) (\lambda (t2: T).(subst0 (minus i h) u (THead 
6398 k t t0) t2))) (\lambda (x3: T).(\lambda (H10: (eq T x0 (lift h d 
6399 x3))).(\lambda (H11: (subst0 (minus i h) u t x3)).(eq_ind_r T (lift h d x3) 
6400 (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead k t2 x1) (lift h d 
6401 t3))) (\lambda (t3: T).(subst0 (minus i h) u (THead k t t0) t3)))) (eq_ind_r 
6402 T (lift h (s k d) x2) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead k 
6403 (lift h d x3) t2) (lift h d t3))) (\lambda (t3: T).(subst0 (minus i h) u 
6404 (THead k t t0) t3)))) (eq_ind T (lift h d (THead k x3 x2)) (\lambda (t2: 
6405 T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h d t3))) (\lambda (t3: T).(subst0 
6406 (minus i h) u (THead k t t0) t3)))) (let H12 \def (eq_ind_r nat (minus (s k 
6407 i) h) (\lambda (n: nat).(subst0 n u t0 x2)) H9 (s k (minus i h)) (s_minus k i 
6408 h (le_trans_plus_r d h i H2))) in (ex_intro2 T (\lambda (t2: T).(eq T (lift h 
6409 d (THead k x3 x2)) (lift h d t2))) (\lambda (t2: T).(subst0 (minus i h) u 
6410 (THead k t t0) t2)) (THead k x3 x2) (refl_equal T (lift h d (THead k x3 x2))) 
6411 (subst0_both u t x3 (minus i h) H11 k t0 x2 H12))) (THead k (lift h d x3) 
6412 (lift h (s k d) x2)) (lift_head k x3 x2 h d)) x1 H8) x0 H10)))) (H x0 i h d 
6413 H6 H2))))) (H0 x1 (s k i) h (s k d) H7 (eq_ind nat (s k (plus d h)) (\lambda 
6414 (n: nat).(le n (s k i))) (s_le k (plus d h) i H2) (plus (s k d) h) (s_plus k 
6415 d h)))) x H5)))))) H4)) (subst0_gen_head k u (lift h d t) (lift h (s k d) t0) 
6416 x i H3)))))))))))))) t1)).
6417
6418 theorem subst0_lift_lt:
6419  \forall (t1: T).(\forall (t2: T).(\forall (u: T).(\forall (i: nat).((subst0 
6420 i u t1 t2) \to (\forall (d: nat).((lt i d) \to (\forall (h: nat).(subst0 i 
6421 (lift h (minus d (S i)) u) (lift h d t1) (lift h d t2)))))))))
6422 \def
6423  \lambda (t1: T).(\lambda (t2: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
6424 (H: (subst0 i u t1 t2)).(subst0_ind (\lambda (n: nat).(\lambda (t: 
6425 T).(\lambda (t0: T).(\lambda (t3: T).(\forall (d: nat).((lt n d) \to (\forall 
6426 (h: nat).(subst0 n (lift h (minus d (S n)) t) (lift h d t0) (lift h d 
6427 t3))))))))) (\lambda (v: T).(\lambda (i0: nat).(\lambda (d: nat).(\lambda 
6428 (H0: (lt i0 d)).(\lambda (h: nat).(eq_ind_r T (TLRef i0) (\lambda (t: 
6429 T).(subst0 i0 (lift h (minus d (S i0)) v) t (lift h d (lift (S i0) O v)))) 
6430 (let w \def (minus d (S i0)) in (eq_ind nat (plus (S i0) (minus d (S i0))) 
6431 (\lambda (n: nat).(subst0 i0 (lift h w v) (TLRef i0) (lift h n (lift (S i0) O 
6432 v)))) (eq_ind_r T (lift (S i0) O (lift h (minus d (S i0)) v)) (\lambda (t: 
6433 T).(subst0 i0 (lift h w v) (TLRef i0) t)) (subst0_lref (lift h (minus d (S 
6434 i0)) v) i0) (lift h (plus (S i0) (minus d (S i0))) (lift (S i0) O v)) (lift_d 
6435 v h (S i0) (minus d (S i0)) O (le_O_n (minus d (S i0))))) d (le_plus_minus_r 
6436 (S i0) d H0))) (lift h d (TLRef i0)) (lift_lref_lt i0 h d H0))))))) (\lambda 
6437 (v: T).(\lambda (u2: T).(\lambda (u1: T).(\lambda (i0: nat).(\lambda (_: 
6438 (subst0 i0 v u1 u2)).(\lambda (H1: ((\forall (d: nat).((lt i0 d) \to (\forall 
6439 (h: nat).(subst0 i0 (lift h (minus d (S i0)) v) (lift h d u1) (lift h d 
6440 u2))))))).(\lambda (t: T).(\lambda (k: K).(\lambda (d: nat).(\lambda (H2: (lt 
6441 i0 d)).(\lambda (h: nat).(eq_ind_r T (THead k (lift h d u1) (lift h (s k d) 
6442 t)) (\lambda (t0: T).(subst0 i0 (lift h (minus d (S i0)) v) t0 (lift h d 
6443 (THead k u2 t)))) (eq_ind_r T (THead k (lift h d u2) (lift h (s k d) t)) 
6444 (\lambda (t0: T).(subst0 i0 (lift h (minus d (S i0)) v) (THead k (lift h d 
6445 u1) (lift h (s k d) t)) t0)) (subst0_fst (lift h (minus d (S i0)) v) (lift h 
6446 d u2) (lift h d u1) i0 (H1 d H2 h) (lift h (s k d) t) k) (lift h d (THead k 
6447 u2 t)) (lift_head k u2 t h d)) (lift h d (THead k u1 t)) (lift_head k u1 t h 
6448 d))))))))))))) (\lambda (k: K).(\lambda (v: T).(\lambda (t0: T).(\lambda (t3: 
6449 T).(\lambda (i0: nat).(\lambda (_: (subst0 (s k i0) v t3 t0)).(\lambda (H1: 
6450 ((\forall (d: nat).((lt (s k i0) d) \to (\forall (h: nat).(subst0 (s k i0) 
6451 (lift h (minus d (S (s k i0))) v) (lift h d t3) (lift h d t0))))))).(\lambda 
6452 (u0: T).(\lambda (d: nat).(\lambda (H2: (lt i0 d)).(\lambda (h: nat).(let H3 
6453 \def (eq_ind_r nat (S (s k i0)) (\lambda (n: nat).(\forall (d: nat).((lt (s k 
6454 i0) d) \to (\forall (h: nat).(subst0 (s k i0) (lift h (minus d n) v) (lift h 
6455 d t3) (lift h d t0)))))) H1 (s k (S i0)) (s_S k i0)) in (eq_ind_r T (THead k 
6456 (lift h d u0) (lift h (s k d) t3)) (\lambda (t: T).(subst0 i0 (lift h (minus 
6457 d (S i0)) v) t (lift h d (THead k u0 t0)))) (eq_ind_r T (THead k (lift h d 
6458 u0) (lift h (s k d) t0)) (\lambda (t: T).(subst0 i0 (lift h (minus d (S i0)) 
6459 v) (THead k (lift h d u0) (lift h (s k d) t3)) t)) (eq_ind nat (minus (s k d) 
6460 (s k (S i0))) (\lambda (n: nat).(subst0 i0 (lift h n v) (THead k (lift h d 
6461 u0) (lift h (s k d) t3)) (THead k (lift h d u0) (lift h (s k d) t0)))) 
6462 (subst0_snd k (lift h (minus (s k d) (s k (S i0))) v) (lift h (s k d) t0) 
6463 (lift h (s k d) t3) i0 (H3 (s k d) (s_lt k i0 d H2) h) (lift h d u0)) (minus 
6464 d (S i0)) (minus_s_s k d (S i0))) (lift h d (THead k u0 t0)) (lift_head k u0 
6465 t0 h d)) (lift h d (THead k u0 t3)) (lift_head k u0 t3 h d)))))))))))))) 
6466 (\lambda (v: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (i0: nat).(\lambda 
6467 (_: (subst0 i0 v u1 u2)).(\lambda (H1: ((\forall (d: nat).((lt i0 d) \to 
6468 (\forall (h: nat).(subst0 i0 (lift h (minus d (S i0)) v) (lift h d u1) (lift 
6469 h d u2))))))).(\lambda (k: K).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: 
6470 (subst0 (s k i0) v t0 t3)).(\lambda (H3: ((\forall (d: nat).((lt (s k i0) d) 
6471 \to (\forall (h: nat).(subst0 (s k i0) (lift h (minus d (S (s k i0))) v) 
6472 (lift h d t0) (lift h d t3))))))).(\lambda (d: nat).(\lambda (H4: (lt i0 
6473 d)).(\lambda (h: nat).(let H5 \def (eq_ind_r nat (S (s k i0)) (\lambda (n: 
6474 nat).(\forall (d: nat).((lt (s k i0) d) \to (\forall (h: nat).(subst0 (s k 
6475 i0) (lift h (minus d n) v) (lift h d t0) (lift h d t3)))))) H3 (s k (S i0)) 
6476 (s_S k i0)) in (eq_ind_r T (THead k (lift h d u1) (lift h (s k d) t0)) 
6477 (\lambda (t: T).(subst0 i0 (lift h (minus d (S i0)) v) t (lift h d (THead k 
6478 u2 t3)))) (eq_ind_r T (THead k (lift h d u2) (lift h (s k d) t3)) (\lambda 
6479 (t: T).(subst0 i0 (lift h (minus d (S i0)) v) (THead k (lift h d u1) (lift h 
6480 (s k d) t0)) t)) (subst0_both (lift h (minus d (S i0)) v) (lift h d u1) (lift 
6481 h d u2) i0 (H1 d H4 h) k (lift h (s k d) t0) (lift h (s k d) t3) (eq_ind nat 
6482 (minus (s k d) (s k (S i0))) (\lambda (n: nat).(subst0 (s k i0) (lift h n v) 
6483 (lift h (s k d) t0) (lift h (s k d) t3))) (H5 (s k d) (lt_le_S (s k i0) (s k 
6484 d) (s_lt k i0 d H4)) h) (minus d (S i0)) (minus_s_s k d (S i0)))) (lift h d 
6485 (THead k u2 t3)) (lift_head k u2 t3 h d)) (lift h d (THead k u1 t0)) 
6486 (lift_head k u1 t0 h d))))))))))))))))) i u t1 t2 H))))).
6487
6488 theorem subst0_lift_ge:
6489  \forall (t1: T).(\forall (t2: T).(\forall (u: T).(\forall (i: nat).(\forall 
6490 (h: nat).((subst0 i u t1 t2) \to (\forall (d: nat).((le d i) \to (subst0 
6491 (plus i h) u (lift h d t1) (lift h d t2)))))))))
6492 \def
6493  \lambda (t1: T).(\lambda (t2: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
6494 (h: nat).(\lambda (H: (subst0 i u t1 t2)).(subst0_ind (\lambda (n: 
6495 nat).(\lambda (t: T).(\lambda (t0: T).(\lambda (t3: T).(\forall (d: nat).((le 
6496 d n) \to (subst0 (plus n h) t (lift h d t0) (lift h d t3)))))))) (\lambda (v: 
6497 T).(\lambda (i0: nat).(\lambda (d: nat).(\lambda (H0: (le d i0)).(eq_ind_r T 
6498 (TLRef (plus i0 h)) (\lambda (t: T).(subst0 (plus i0 h) v t (lift h d (lift 
6499 (S i0) O v)))) (eq_ind_r T (lift (plus h (S i0)) O v) (\lambda (t: T).(subst0 
6500 (plus i0 h) v (TLRef (plus i0 h)) t)) (eq_ind nat (S (plus h i0)) (\lambda 
6501 (n: nat).(subst0 (plus i0 h) v (TLRef (plus i0 h)) (lift n O v))) (eq_ind_r 
6502 nat (plus h i0) (\lambda (n: nat).(subst0 n v (TLRef n) (lift (S (plus h i0)) 
6503 O v))) (subst0_lref v (plus h i0)) (plus i0 h) (plus_comm i0 h)) (plus h (S 
6504 i0)) (plus_n_Sm h i0)) (lift h d (lift (S i0) O v)) (lift_free v (S i0) h O d 
6505 (le_S d i0 H0) (le_O_n d))) (lift h d (TLRef i0)) (lift_lref_ge i0 h d 
6506 H0)))))) (\lambda (v: T).(\lambda (u2: T).(\lambda (u1: T).(\lambda (i0: 
6507 nat).(\lambda (_: (subst0 i0 v u1 u2)).(\lambda (H1: ((\forall (d: nat).((le 
6508 d i0) \to (subst0 (plus i0 h) v (lift h d u1) (lift h d u2)))))).(\lambda (t: 
6509 T).(\lambda (k: K).(\lambda (d: nat).(\lambda (H2: (le d i0)).(eq_ind_r T 
6510 (THead k (lift h d u1) (lift h (s k d) t)) (\lambda (t0: T).(subst0 (plus i0 
6511 h) v t0 (lift h d (THead k u2 t)))) (eq_ind_r T (THead k (lift h d u2) (lift 
6512 h (s k d) t)) (\lambda (t0: T).(subst0 (plus i0 h) v (THead k (lift h d u1) 
6513 (lift h (s k d) t)) t0)) (subst0_fst v (lift h d u2) (lift h d u1) (plus i0 
6514 h) (H1 d H2) (lift h (s k d) t) k) (lift h d (THead k u2 t)) (lift_head k u2 
6515 t h d)) (lift h d (THead k u1 t)) (lift_head k u1 t h d)))))))))))) (\lambda 
6516 (k: K).(\lambda (v: T).(\lambda (t0: T).(\lambda (t3: T).(\lambda (i0: 
6517 nat).(\lambda (_: (subst0 (s k i0) v t3 t0)).(\lambda (H1: ((\forall (d: 
6518 nat).((le d (s k i0)) \to (subst0 (plus (s k i0) h) v (lift h d t3) (lift h d 
6519 t0)))))).(\lambda (u0: T).(\lambda (d: nat).(\lambda (H2: (le d i0)).(let H3 
6520 \def (eq_ind_r nat (plus (s k i0) h) (\lambda (n: nat).(\forall (d: nat).((le 
6521 d (s k i0)) \to (subst0 n v (lift h d t3) (lift h d t0))))) H1 (s k (plus i0 
6522 h)) (s_plus k i0 h)) in (eq_ind_r T (THead k (lift h d u0) (lift h (s k d) 
6523 t3)) (\lambda (t: T).(subst0 (plus i0 h) v t (lift h d (THead k u0 t0)))) 
6524 (eq_ind_r T (THead k (lift h d u0) (lift h (s k d) t0)) (\lambda (t: 
6525 T).(subst0 (plus i0 h) v (THead k (lift h d u0) (lift h (s k d) t3)) t)) 
6526 (subst0_snd k v (lift h (s k d) t0) (lift h (s k d) t3) (plus i0 h) (H3 (s k 
6527 d) (s_le k d i0 H2)) (lift h d u0)) (lift h d (THead k u0 t0)) (lift_head k 
6528 u0 t0 h d)) (lift h d (THead k u0 t3)) (lift_head k u0 t3 h d))))))))))))) 
6529 (\lambda (v: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (i0: nat).(\lambda 
6530 (_: (subst0 i0 v u1 u2)).(\lambda (H1: ((\forall (d: nat).((le d i0) \to 
6531 (subst0 (plus i0 h) v (lift h d u1) (lift h d u2)))))).(\lambda (k: 
6532 K).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (subst0 (s k i0) v t0 
6533 t3)).(\lambda (H3: ((\forall (d: nat).((le d (s k i0)) \to (subst0 (plus (s k 
6534 i0) h) v (lift h d t0) (lift h d t3)))))).(\lambda (d: nat).(\lambda (H4: (le 
6535 d i0)).(let H5 \def (eq_ind_r nat (plus (s k i0) h) (\lambda (n: 
6536 nat).(\forall (d: nat).((le d (s k i0)) \to (subst0 n v (lift h d t0) (lift h 
6537 d t3))))) H3 (s k (plus i0 h)) (s_plus k i0 h)) in (eq_ind_r T (THead k (lift 
6538 h d u1) (lift h (s k d) t0)) (\lambda (t: T).(subst0 (plus i0 h) v t (lift h 
6539 d (THead k u2 t3)))) (eq_ind_r T (THead k (lift h d u2) (lift h (s k d) t3)) 
6540 (\lambda (t: T).(subst0 (plus i0 h) v (THead k (lift h d u1) (lift h (s k d) 
6541 t0)) t)) (subst0_both v (lift h d u1) (lift h d u2) (plus i0 h) (H1 d H4) k 
6542 (lift h (s k d) t0) (lift h (s k d) t3) (H5 (s k d) (s_le k d i0 H4))) (lift 
6543 h d (THead k u2 t3)) (lift_head k u2 t3 h d)) (lift h d (THead k u1 t0)) 
6544 (lift_head k u1 t0 h d)))))))))))))))) i u t1 t2 H)))))).
6545
6546 theorem subst0_lift_ge_S:
6547  \forall (t1: T).(\forall (t2: T).(\forall (u: T).(\forall (i: nat).((subst0 
6548 i u t1 t2) \to (\forall (d: nat).((le d i) \to (subst0 (S i) u (lift (S O) d 
6549 t1) (lift (S O) d t2))))))))
6550 \def
6551  \lambda (t1: T).(\lambda (t2: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
6552 (H: (subst0 i u t1 t2)).(\lambda (d: nat).(\lambda (H0: (le d i)).(eq_ind nat 
6553 (plus i (S O)) (\lambda (n: nat).(subst0 n u (lift (S O) d t1) (lift (S O) d 
6554 t2))) (subst0_lift_ge t1 t2 u i (S O) H d H0) (S i) (eq_ind_r nat (plus (S O) 
6555 i) (\lambda (n: nat).(eq nat n (S i))) (refl_equal nat (S i)) (plus i (S O)) 
6556 (plus_comm i (S O)))))))))).
6557
6558 theorem subst0_lift_ge_s:
6559  \forall (t1: T).(\forall (t2: T).(\forall (u: T).(\forall (i: nat).((subst0 
6560 i u t1 t2) \to (\forall (d: nat).((le d i) \to (\forall (b: B).(subst0 (s 
6561 (Bind b) i) u (lift (S O) d t1) (lift (S O) d t2)))))))))
6562 \def
6563  \lambda (t1: T).(\lambda (t2: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
6564 (H: (subst0 i u t1 t2)).(\lambda (d: nat).(\lambda (H0: (le d i)).(\lambda 
6565 (_: B).(subst0_lift_ge_S t1 t2 u i H d H0)))))))).
6566
6567 theorem subst0_subst0:
6568  \forall (t1: T).(\forall (t2: T).(\forall (u2: T).(\forall (j: nat).((subst0 
6569 j u2 t1 t2) \to (\forall (u1: T).(\forall (u: T).(\forall (i: nat).((subst0 i 
6570 u u1 u2) \to (ex2 T (\lambda (t: T).(subst0 j u1 t1 t)) (\lambda (t: 
6571 T).(subst0 (S (plus i j)) u t t2)))))))))))
6572 \def
6573  \lambda (t1: T).(\lambda (t2: T).(\lambda (u2: T).(\lambda (j: nat).(\lambda 
6574 (H: (subst0 j u2 t1 t2)).(subst0_ind (\lambda (n: nat).(\lambda (t: 
6575 T).(\lambda (t0: T).(\lambda (t3: T).(\forall (u1: T).(\forall (u: 
6576 T).(\forall (i: nat).((subst0 i u u1 t) \to (ex2 T (\lambda (t4: T).(subst0 n 
6577 u1 t0 t4)) (\lambda (t4: T).(subst0 (S (plus i n)) u t4 t3))))))))))) 
6578 (\lambda (v: T).(\lambda (i: nat).(\lambda (u1: T).(\lambda (u: T).(\lambda 
6579 (i0: nat).(\lambda (H0: (subst0 i0 u u1 v)).(eq_ind nat (plus i0 (S i)) 
6580 (\lambda (n: nat).(ex2 T (\lambda (t: T).(subst0 i u1 (TLRef i) t)) (\lambda 
6581 (t: T).(subst0 n u t (lift (S i) O v))))) (ex_intro2 T (\lambda (t: 
6582 T).(subst0 i u1 (TLRef i) t)) (\lambda (t: T).(subst0 (plus i0 (S i)) u t 
6583 (lift (S i) O v))) (lift (S i) O u1) (subst0_lref u1 i) (subst0_lift_ge u1 v 
6584 u i0 (S i) H0 O (le_O_n i0))) (S (plus i0 i)) (sym_eq nat (S (plus i0 i)) 
6585 (plus i0 (S i)) (plus_n_Sm i0 i))))))))) (\lambda (v: T).(\lambda (u0: 
6586 T).(\lambda (u1: T).(\lambda (i: nat).(\lambda (_: (subst0 i v u1 
6587 u0)).(\lambda (H1: ((\forall (u2: T).(\forall (u: T).(\forall (i0: 
6588 nat).((subst0 i0 u u2 v) \to (ex2 T (\lambda (t: T).(subst0 i u2 u1 t)) 
6589 (\lambda (t: T).(subst0 (S (plus i0 i)) u t u0))))))))).(\lambda (t: 
6590 T).(\lambda (k: K).(\lambda (u3: T).(\lambda (u: T).(\lambda (i0: 
6591 nat).(\lambda (H2: (subst0 i0 u u3 v)).(ex2_ind T (\lambda (t0: T).(subst0 i 
6592 u3 u1 t0)) (\lambda (t0: T).(subst0 (S (plus i0 i)) u t0 u0)) (ex2 T (\lambda 
6593 (t0: T).(subst0 i u3 (THead k u1 t) t0)) (\lambda (t0: T).(subst0 (S (plus i0 
6594 i)) u t0 (THead k u0 t)))) (\lambda (x: T).(\lambda (H3: (subst0 i u3 u1 
6595 x)).(\lambda (H4: (subst0 (S (plus i0 i)) u x u0)).(ex_intro2 T (\lambda (t0: 
6596 T).(subst0 i u3 (THead k u1 t) t0)) (\lambda (t0: T).(subst0 (S (plus i0 i)) 
6597 u t0 (THead k u0 t))) (THead k x t) (subst0_fst u3 x u1 i H3 t k) (subst0_fst 
6598 u u0 x (S (plus i0 i)) H4 t k))))) (H1 u3 u i0 H2)))))))))))))) (\lambda (k: 
6599 K).(\lambda (v: T).(\lambda (t0: T).(\lambda (t3: T).(\lambda (i: 
6600 nat).(\lambda (_: (subst0 (s k i) v t3 t0)).(\lambda (H1: ((\forall (u1: 
6601 T).(\forall (u: T).(\forall (i0: nat).((subst0 i0 u u1 v) \to (ex2 T (\lambda 
6602 (t: T).(subst0 (s k i) u1 t3 t)) (\lambda (t: T).(subst0 (S (plus i0 (s k 
6603 i))) u t t0))))))))).(\lambda (u: T).(\lambda (u1: T).(\lambda (u0: 
6604 T).(\lambda (i0: nat).(\lambda (H2: (subst0 i0 u0 u1 v)).(ex2_ind T (\lambda 
6605 (t: T).(subst0 (s k i) u1 t3 t)) (\lambda (t: T).(subst0 (S (plus i0 (s k 
6606 i))) u0 t t0)) (ex2 T (\lambda (t: T).(subst0 i u1 (THead k u t3) t)) 
6607 (\lambda (t: T).(subst0 (S (plus i0 i)) u0 t (THead k u t0)))) (\lambda (x: 
6608 T).(\lambda (H3: (subst0 (s k i) u1 t3 x)).(\lambda (H4: (subst0 (S (plus i0 
6609 (s k i))) u0 x t0)).(let H5 \def (eq_ind_r nat (plus i0 (s k i)) (\lambda (n: 
6610 nat).(subst0 (S n) u0 x t0)) H4 (s k (plus i0 i)) (s_plus_sym k i0 i)) in 
6611 (let H6 \def (eq_ind_r nat (S (s k (plus i0 i))) (\lambda (n: nat).(subst0 n 
6612 u0 x t0)) H5 (s k (S (plus i0 i))) (s_S k (plus i0 i))) in (ex_intro2 T 
6613 (\lambda (t: T).(subst0 i u1 (THead k u t3) t)) (\lambda (t: T).(subst0 (S 
6614 (plus i0 i)) u0 t (THead k u t0))) (THead k u x) (subst0_snd k u1 x t3 i H3 
6615 u) (subst0_snd k u0 t0 x (S (plus i0 i)) H6 u))))))) (H1 u1 u0 i0 
6616 H2)))))))))))))) (\lambda (v: T).(\lambda (u1: T).(\lambda (u0: T).(\lambda 
6617 (i: nat).(\lambda (_: (subst0 i v u1 u0)).(\lambda (H1: ((\forall (u2: 
6618 T).(\forall (u: T).(\forall (i0: nat).((subst0 i0 u u2 v) \to (ex2 T (\lambda 
6619 (t: T).(subst0 i u2 u1 t)) (\lambda (t: T).(subst0 (S (plus i0 i)) u t 
6620 u0))))))))).(\lambda (k: K).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: 
6621 (subst0 (s k i) v t0 t3)).(\lambda (H3: ((\forall (u1: T).(\forall (u: 
6622 T).(\forall (i0: nat).((subst0 i0 u u1 v) \to (ex2 T (\lambda (t: T).(subst0 
6623 (s k i) u1 t0 t)) (\lambda (t: T).(subst0 (S (plus i0 (s k i))) u t 
6624 t3))))))))).(\lambda (u3: T).(\lambda (u: T).(\lambda (i0: nat).(\lambda (H4: 
6625 (subst0 i0 u u3 v)).(ex2_ind T (\lambda (t: T).(subst0 (s k i) u3 t0 t)) 
6626 (\lambda (t: T).(subst0 (S (plus i0 (s k i))) u t t3)) (ex2 T (\lambda (t: 
6627 T).(subst0 i u3 (THead k u1 t0) t)) (\lambda (t: T).(subst0 (S (plus i0 i)) u 
6628 t (THead k u0 t3)))) (\lambda (x: T).(\lambda (H5: (subst0 (s k i) u3 t0 
6629 x)).(\lambda (H6: (subst0 (S (plus i0 (s k i))) u x t3)).(ex2_ind T (\lambda 
6630 (t: T).(subst0 i u3 u1 t)) (\lambda (t: T).(subst0 (S (plus i0 i)) u t u0)) 
6631 (ex2 T (\lambda (t: T).(subst0 i u3 (THead k u1 t0) t)) (\lambda (t: 
6632 T).(subst0 (S (plus i0 i)) u t (THead k u0 t3)))) (\lambda (x0: T).(\lambda 
6633 (H7: (subst0 i u3 u1 x0)).(\lambda (H8: (subst0 (S (plus i0 i)) u x0 
6634 u0)).(let H9 \def (eq_ind_r nat (plus i0 (s k i)) (\lambda (n: nat).(subst0 
6635 (S n) u x t3)) H6 (s k (plus i0 i)) (s_plus_sym k i0 i)) in (let H10 \def 
6636 (eq_ind_r nat (S (s k (plus i0 i))) (\lambda (n: nat).(subst0 n u x t3)) H9 
6637 (s k (S (plus i0 i))) (s_S k (plus i0 i))) in (ex_intro2 T (\lambda (t: 
6638 T).(subst0 i u3 (THead k u1 t0) t)) (\lambda (t: T).(subst0 (S (plus i0 i)) u 
6639 t (THead k u0 t3))) (THead k x0 x) (subst0_both u3 u1 x0 i H7 k t0 x H5) 
6640 (subst0_both u x0 u0 (S (plus i0 i)) H8 k x t3 H10))))))) (H1 u3 u i0 H4))))) 
6641 (H3 u3 u i0 H4))))))))))))))))) j u2 t1 t2 H))))).
6642
6643 theorem subst0_subst0_back:
6644  \forall (t1: T).(\forall (t2: T).(\forall (u2: T).(\forall (j: nat).((subst0 
6645 j u2 t1 t2) \to (\forall (u1: T).(\forall (u: T).(\forall (i: nat).((subst0 i 
6646 u u2 u1) \to (ex2 T (\lambda (t: T).(subst0 j u1 t1 t)) (\lambda (t: 
6647 T).(subst0 (S (plus i j)) u t2 t)))))))))))
6648 \def
6649  \lambda (t1: T).(\lambda (t2: T).(\lambda (u2: T).(\lambda (j: nat).(\lambda 
6650 (H: (subst0 j u2 t1 t2)).(subst0_ind (\lambda (n: nat).(\lambda (t: 
6651 T).(\lambda (t0: T).(\lambda (t3: T).(\forall (u1: T).(\forall (u: 
6652 T).(\forall (i: nat).((subst0 i u t u1) \to (ex2 T (\lambda (t4: T).(subst0 n 
6653 u1 t0 t4)) (\lambda (t4: T).(subst0 (S (plus i n)) u t3 t4))))))))))) 
6654 (\lambda (v: T).(\lambda (i: nat).(\lambda (u1: T).(\lambda (u: T).(\lambda 
6655 (i0: nat).(\lambda (H0: (subst0 i0 u v u1)).(eq_ind nat (plus i0 (S i)) 
6656 (\lambda (n: nat).(ex2 T (\lambda (t: T).(subst0 i u1 (TLRef i) t)) (\lambda 
6657 (t: T).(subst0 n u (lift (S i) O v) t)))) (ex_intro2 T (\lambda (t: 
6658 T).(subst0 i u1 (TLRef i) t)) (\lambda (t: T).(subst0 (plus i0 (S i)) u (lift 
6659 (S i) O v) t)) (lift (S i) O u1) (subst0_lref u1 i) (subst0_lift_ge v u1 u i0 
6660 (S i) H0 O (le_O_n i0))) (S (plus i0 i)) (sym_eq nat (S (plus i0 i)) (plus i0 
6661 (S i)) (plus_n_Sm i0 i))))))))) (\lambda (v: T).(\lambda (u0: T).(\lambda 
6662 (u1: T).(\lambda (i: nat).(\lambda (_: (subst0 i v u1 u0)).(\lambda (H1: 
6663 ((\forall (u2: T).(\forall (u: T).(\forall (i0: nat).((subst0 i0 u v u2) \to 
6664 (ex2 T (\lambda (t: T).(subst0 i u2 u1 t)) (\lambda (t: T).(subst0 (S (plus 
6665 i0 i)) u u0 t))))))))).(\lambda (t: T).(\lambda (k: K).(\lambda (u3: 
6666 T).(\lambda (u: T).(\lambda (i0: nat).(\lambda (H2: (subst0 i0 u v 
6667 u3)).(ex2_ind T (\lambda (t0: T).(subst0 i u3 u1 t0)) (\lambda (t0: 
6668 T).(subst0 (S (plus i0 i)) u u0 t0)) (ex2 T (\lambda (t0: T).(subst0 i u3 
6669 (THead k u1 t) t0)) (\lambda (t0: T).(subst0 (S (plus i0 i)) u (THead k u0 t) 
6670 t0))) (\lambda (x: T).(\lambda (H3: (subst0 i u3 u1 x)).(\lambda (H4: (subst0 
6671 (S (plus i0 i)) u u0 x)).(ex_intro2 T (\lambda (t0: T).(subst0 i u3 (THead k 
6672 u1 t) t0)) (\lambda (t0: T).(subst0 (S (plus i0 i)) u (THead k u0 t) t0)) 
6673 (THead k x t) (subst0_fst u3 x u1 i H3 t k) (subst0_fst u x u0 (S (plus i0 
6674 i)) H4 t k))))) (H1 u3 u i0 H2)))))))))))))) (\lambda (k: K).(\lambda (v: 
6675 T).(\lambda (t0: T).(\lambda (t3: T).(\lambda (i: nat).(\lambda (_: (subst0 
6676 (s k i) v t3 t0)).(\lambda (H1: ((\forall (u1: T).(\forall (u: T).(\forall 
6677 (i0: nat).((subst0 i0 u v u1) \to (ex2 T (\lambda (t: T).(subst0 (s k i) u1 
6678 t3 t)) (\lambda (t: T).(subst0 (S (plus i0 (s k i))) u t0 t))))))))).(\lambda 
6679 (u: T).(\lambda (u1: T).(\lambda (u0: T).(\lambda (i0: nat).(\lambda (H2: 
6680 (subst0 i0 u0 v u1)).(ex2_ind T (\lambda (t: T).(subst0 (s k i) u1 t3 t)) 
6681 (\lambda (t: T).(subst0 (S (plus i0 (s k i))) u0 t0 t)) (ex2 T (\lambda (t: 
6682 T).(subst0 i u1 (THead k u t3) t)) (\lambda (t: T).(subst0 (S (plus i0 i)) u0 
6683 (THead k u t0) t))) (\lambda (x: T).(\lambda (H3: (subst0 (s k i) u1 t3 
6684 x)).(\lambda (H4: (subst0 (S (plus i0 (s k i))) u0 t0 x)).(let H5 \def 
6685 (eq_ind_r nat (plus i0 (s k i)) (\lambda (n: nat).(subst0 (S n) u0 t0 x)) H4 
6686 (s k (plus i0 i)) (s_plus_sym k i0 i)) in (let H6 \def (eq_ind_r nat (S (s k 
6687 (plus i0 i))) (\lambda (n: nat).(subst0 n u0 t0 x)) H5 (s k (S (plus i0 i))) 
6688 (s_S k (plus i0 i))) in (ex_intro2 T (\lambda (t: T).(subst0 i u1 (THead k u 
6689 t3) t)) (\lambda (t: T).(subst0 (S (plus i0 i)) u0 (THead k u t0) t)) (THead 
6690 k u x) (subst0_snd k u1 x t3 i H3 u) (subst0_snd k u0 x t0 (S (plus i0 i)) H6 
6691 u))))))) (H1 u1 u0 i0 H2)))))))))))))) (\lambda (v: T).(\lambda (u1: 
6692 T).(\lambda (u0: T).(\lambda (i: nat).(\lambda (_: (subst0 i v u1 
6693 u0)).(\lambda (H1: ((\forall (u2: T).(\forall (u: T).(\forall (i0: 
6694 nat).((subst0 i0 u v u2) \to (ex2 T (\lambda (t: T).(subst0 i u2 u1 t)) 
6695 (\lambda (t: T).(subst0 (S (plus i0 i)) u u0 t))))))))).(\lambda (k: 
6696 K).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (subst0 (s k i) v t0 
6697 t3)).(\lambda (H3: ((\forall (u1: T).(\forall (u: T).(\forall (i0: 
6698 nat).((subst0 i0 u v u1) \to (ex2 T (\lambda (t: T).(subst0 (s k i) u1 t0 t)) 
6699 (\lambda (t: T).(subst0 (S (plus i0 (s k i))) u t3 t))))))))).(\lambda (u3: 
6700 T).(\lambda (u: T).(\lambda (i0: nat).(\lambda (H4: (subst0 i0 u v 
6701 u3)).(ex2_ind T (\lambda (t: T).(subst0 (s k i) u3 t0 t)) (\lambda (t: 
6702 T).(subst0 (S (plus i0 (s k i))) u t3 t)) (ex2 T (\lambda (t: T).(subst0 i u3 
6703 (THead k u1 t0) t)) (\lambda (t: T).(subst0 (S (plus i0 i)) u (THead k u0 t3) 
6704 t))) (\lambda (x: T).(\lambda (H5: (subst0 (s k i) u3 t0 x)).(\lambda (H6: 
6705 (subst0 (S (plus i0 (s k i))) u t3 x)).(ex2_ind T (\lambda (t: T).(subst0 i 
6706 u3 u1 t)) (\lambda (t: T).(subst0 (S (plus i0 i)) u u0 t)) (ex2 T (\lambda 
6707 (t: T).(subst0 i u3 (THead k u1 t0) t)) (\lambda (t: T).(subst0 (S (plus i0 
6708 i)) u (THead k u0 t3) t))) (\lambda (x0: T).(\lambda (H7: (subst0 i u3 u1 
6709 x0)).(\lambda (H8: (subst0 (S (plus i0 i)) u u0 x0)).(let H9 \def (eq_ind_r 
6710 nat (plus i0 (s k i)) (\lambda (n: nat).(subst0 (S n) u t3 x)) H6 (s k (plus 
6711 i0 i)) (s_plus_sym k i0 i)) in (let H10 \def (eq_ind_r nat (S (s k (plus i0 
6712 i))) (\lambda (n: nat).(subst0 n u t3 x)) H9 (s k (S (plus i0 i))) (s_S k 
6713 (plus i0 i))) in (ex_intro2 T (\lambda (t: T).(subst0 i u3 (THead k u1 t0) 
6714 t)) (\lambda (t: T).(subst0 (S (plus i0 i)) u (THead k u0 t3) t)) (THead k x0 
6715 x) (subst0_both u3 u1 x0 i H7 k t0 x H5) (subst0_both u u0 x0 (S (plus i0 i)) 
6716 H8 k t3 x H10))))))) (H1 u3 u i0 H4))))) (H3 u3 u i0 H4))))))))))))))))) j u2 
6717 t1 t2 H))))).
6718
6719 theorem subst0_trans:
6720  \forall (t2: T).(\forall (t1: T).(\forall (v: T).(\forall (i: nat).((subst0 
6721 i v t1 t2) \to (\forall (t3: T).((subst0 i v t2 t3) \to (subst0 i v t1 
6722 t3)))))))
6723 \def
6724  \lambda (t2: T).(\lambda (t1: T).(\lambda (v: T).(\lambda (i: nat).(\lambda 
6725 (H: (subst0 i v t1 t2)).(subst0_ind (\lambda (n: nat).(\lambda (t: 
6726 T).(\lambda (t0: T).(\lambda (t3: T).(\forall (t4: T).((subst0 n t t3 t4) \to 
6727 (subst0 n t t0 t4))))))) (\lambda (v0: T).(\lambda (i0: nat).(\lambda (t3: 
6728 T).(\lambda (H0: (subst0 i0 v0 (lift (S i0) O v0) t3)).(subst0_gen_lift_false 
6729 v0 v0 t3 (S i0) O i0 (le_O_n i0) (le_n (plus O (S i0))) H0 (subst0 i0 v0 
6730 (TLRef i0) t3)))))) (\lambda (v0: T).(\lambda (u2: T).(\lambda (u1: 
6731 T).(\lambda (i0: nat).(\lambda (H0: (subst0 i0 v0 u1 u2)).(\lambda (H1: 
6732 ((\forall (t3: T).((subst0 i0 v0 u2 t3) \to (subst0 i0 v0 u1 t3))))).(\lambda 
6733 (t: T).(\lambda (k: K).(\lambda (t3: T).(\lambda (H2: (subst0 i0 v0 (THead k 
6734 u2 t) t3)).(or3_ind (ex2 T (\lambda (u3: T).(eq T t3 (THead k u3 t))) 
6735 (\lambda (u3: T).(subst0 i0 v0 u2 u3))) (ex2 T (\lambda (t4: T).(eq T t3 
6736 (THead k u2 t4))) (\lambda (t4: T).(subst0 (s k i0) v0 t t4))) (ex3_2 T T 
6737 (\lambda (u3: T).(\lambda (t4: T).(eq T t3 (THead k u3 t4)))) (\lambda (u3: 
6738 T).(\lambda (_: T).(subst0 i0 v0 u2 u3))) (\lambda (_: T).(\lambda (t4: 
6739 T).(subst0 (s k i0) v0 t t4)))) (subst0 i0 v0 (THead k u1 t) t3) (\lambda 
6740 (H3: (ex2 T (\lambda (u2: T).(eq T t3 (THead k u2 t))) (\lambda (u3: 
6741 T).(subst0 i0 v0 u2 u3)))).(ex2_ind T (\lambda (u3: T).(eq T t3 (THead k u3 
6742 t))) (\lambda (u3: T).(subst0 i0 v0 u2 u3)) (subst0 i0 v0 (THead k u1 t) t3) 
6743 (\lambda (x: T).(\lambda (H4: (eq T t3 (THead k x t))).(\lambda (H5: (subst0 
6744 i0 v0 u2 x)).(eq_ind_r T (THead k x t) (\lambda (t0: T).(subst0 i0 v0 (THead 
6745 k u1 t) t0)) (subst0_fst v0 x u1 i0 (H1 x H5) t k) t3 H4)))) H3)) (\lambda 
6746 (H3: (ex2 T (\lambda (t2: T).(eq T t3 (THead k u2 t2))) (\lambda (t2: 
6747 T).(subst0 (s k i0) v0 t t2)))).(ex2_ind T (\lambda (t4: T).(eq T t3 (THead k 
6748 u2 t4))) (\lambda (t4: T).(subst0 (s k i0) v0 t t4)) (subst0 i0 v0 (THead k 
6749 u1 t) t3) (\lambda (x: T).(\lambda (H4: (eq T t3 (THead k u2 x))).(\lambda 
6750 (H5: (subst0 (s k i0) v0 t x)).(eq_ind_r T (THead k u2 x) (\lambda (t0: 
6751 T).(subst0 i0 v0 (THead k u1 t) t0)) (subst0_both v0 u1 u2 i0 H0 k t x H5) t3 
6752 H4)))) H3)) (\lambda (H3: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T 
6753 t3 (THead k u2 t2)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v0 u2 u3))) 
6754 (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i0) v0 t t2))))).(ex3_2_ind T T 
6755 (\lambda (u3: T).(\lambda (t4: T).(eq T t3 (THead k u3 t4)))) (\lambda (u3: 
6756 T).(\lambda (_: T).(subst0 i0 v0 u2 u3))) (\lambda (_: T).(\lambda (t4: 
6757 T).(subst0 (s k i0) v0 t t4))) (subst0 i0 v0 (THead k u1 t) t3) (\lambda (x0: 
6758 T).(\lambda (x1: T).(\lambda (H4: (eq T t3 (THead k x0 x1))).(\lambda (H5: 
6759 (subst0 i0 v0 u2 x0)).(\lambda (H6: (subst0 (s k i0) v0 t x1)).(eq_ind_r T 
6760 (THead k x0 x1) (\lambda (t0: T).(subst0 i0 v0 (THead k u1 t) t0)) 
6761 (subst0_both v0 u1 x0 i0 (H1 x0 H5) k t x1 H6) t3 H4)))))) H3)) 
6762 (subst0_gen_head k v0 u2 t t3 i0 H2)))))))))))) (\lambda (k: K).(\lambda (v0: 
6763 T).(\lambda (t0: T).(\lambda (t3: T).(\lambda (i0: nat).(\lambda (H0: (subst0 
6764 (s k i0) v0 t3 t0)).(\lambda (H1: ((\forall (t4: T).((subst0 (s k i0) v0 t0 
6765 t4) \to (subst0 (s k i0) v0 t3 t4))))).(\lambda (u: T).(\lambda (t4: 
6766 T).(\lambda (H2: (subst0 i0 v0 (THead k u t0) t4)).(or3_ind (ex2 T (\lambda 
6767 (u2: T).(eq T t4 (THead k u2 t0))) (\lambda (u2: T).(subst0 i0 v0 u u2))) 
6768 (ex2 T (\lambda (t5: T).(eq T t4 (THead k u t5))) (\lambda (t5: T).(subst0 (s 
6769 k i0) v0 t0 t5))) (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 
6770 (THead k u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i0 v0 u u2))) 
6771 (\lambda (_: T).(\lambda (t5: T).(subst0 (s k i0) v0 t0 t5)))) (subst0 i0 v0 
6772 (THead k u t3) t4) (\lambda (H3: (ex2 T (\lambda (u2: T).(eq T t4 (THead k u2 
6773 t0))) (\lambda (u2: T).(subst0 i0 v0 u u2)))).(ex2_ind T (\lambda (u2: T).(eq 
6774 T t4 (THead k u2 t0))) (\lambda (u2: T).(subst0 i0 v0 u u2)) (subst0 i0 v0 
6775 (THead k u t3) t4) (\lambda (x: T).(\lambda (H4: (eq T t4 (THead k x 
6776 t0))).(\lambda (H5: (subst0 i0 v0 u x)).(eq_ind_r T (THead k x t0) (\lambda 
6777 (t: T).(subst0 i0 v0 (THead k u t3) t)) (subst0_both v0 u x i0 H5 k t3 t0 H0) 
6778 t4 H4)))) H3)) (\lambda (H3: (ex2 T (\lambda (t2: T).(eq T t4 (THead k u 
6779 t2))) (\lambda (t2: T).(subst0 (s k i0) v0 t0 t2)))).(ex2_ind T (\lambda (t5: 
6780 T).(eq T t4 (THead k u t5))) (\lambda (t5: T).(subst0 (s k i0) v0 t0 t5)) 
6781 (subst0 i0 v0 (THead k u t3) t4) (\lambda (x: T).(\lambda (H4: (eq T t4 
6782 (THead k u x))).(\lambda (H5: (subst0 (s k i0) v0 t0 x)).(eq_ind_r T (THead k 
6783 u x) (\lambda (t: T).(subst0 i0 v0 (THead k u t3) t)) (subst0_snd k v0 x t3 
6784 i0 (H1 x H5) u) t4 H4)))) H3)) (\lambda (H3: (ex3_2 T T (\lambda (u2: 
6785 T).(\lambda (t2: T).(eq T t4 (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: 
6786 T).(subst0 i0 v0 u u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i0) v0 
6787 t0 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead k 
6788 u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i0 v0 u u2))) (\lambda (_: 
6789 T).(\lambda (t5: T).(subst0 (s k i0) v0 t0 t5))) (subst0 i0 v0 (THead k u t3) 
6790 t4) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H4: (eq T t4 (THead k x0 
6791 x1))).(\lambda (H5: (subst0 i0 v0 u x0)).(\lambda (H6: (subst0 (s k i0) v0 t0 
6792 x1)).(eq_ind_r T (THead k x0 x1) (\lambda (t: T).(subst0 i0 v0 (THead k u t3) 
6793 t)) (subst0_both v0 u x0 i0 H5 k t3 x1 (H1 x1 H6)) t4 H4)))))) H3)) 
6794 (subst0_gen_head k v0 u t0 t4 i0 H2)))))))))))) (\lambda (v0: T).(\lambda 
6795 (u1: T).(\lambda (u2: T).(\lambda (i0: nat).(\lambda (H0: (subst0 i0 v0 u1 
6796 u2)).(\lambda (H1: ((\forall (t3: T).((subst0 i0 v0 u2 t3) \to (subst0 i0 v0 
6797 u1 t3))))).(\lambda (k: K).(\lambda (t0: T).(\lambda (t3: T).(\lambda (H2: 
6798 (subst0 (s k i0) v0 t0 t3)).(\lambda (H3: ((\forall (t4: T).((subst0 (s k i0) 
6799 v0 t3 t4) \to (subst0 (s k i0) v0 t0 t4))))).(\lambda (t4: T).(\lambda (H4: 
6800 (subst0 i0 v0 (THead k u2 t3) t4)).(or3_ind (ex2 T (\lambda (u3: T).(eq T t4 
6801 (THead k u3 t3))) (\lambda (u3: T).(subst0 i0 v0 u2 u3))) (ex2 T (\lambda 
6802 (t5: T).(eq T t4 (THead k u2 t5))) (\lambda (t5: T).(subst0 (s k i0) v0 t3 
6803 t5))) (ex3_2 T T (\lambda (u3: T).(\lambda (t5: T).(eq T t4 (THead k u3 
6804 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v0 u2 u3))) (\lambda (_: 
6805 T).(\lambda (t5: T).(subst0 (s k i0) v0 t3 t5)))) (subst0 i0 v0 (THead k u1 
6806 t0) t4) (\lambda (H5: (ex2 T (\lambda (u2: T).(eq T t4 (THead k u2 t3))) 
6807 (\lambda (u3: T).(subst0 i0 v0 u2 u3)))).(ex2_ind T (\lambda (u3: T).(eq T t4 
6808 (THead k u3 t3))) (\lambda (u3: T).(subst0 i0 v0 u2 u3)) (subst0 i0 v0 (THead 
6809 k u1 t0) t4) (\lambda (x: T).(\lambda (H6: (eq T t4 (THead k x t3))).(\lambda 
6810 (H7: (subst0 i0 v0 u2 x)).(eq_ind_r T (THead k x t3) (\lambda (t: T).(subst0 
6811 i0 v0 (THead k u1 t0) t)) (subst0_both v0 u1 x i0 (H1 x H7) k t0 t3 H2) t4 
6812 H6)))) H5)) (\lambda (H5: (ex2 T (\lambda (t2: T).(eq T t4 (THead k u2 t2))) 
6813 (\lambda (t2: T).(subst0 (s k i0) v0 t3 t2)))).(ex2_ind T (\lambda (t5: 
6814 T).(eq T t4 (THead k u2 t5))) (\lambda (t5: T).(subst0 (s k i0) v0 t3 t5)) 
6815 (subst0 i0 v0 (THead k u1 t0) t4) (\lambda (x: T).(\lambda (H6: (eq T t4 
6816 (THead k u2 x))).(\lambda (H7: (subst0 (s k i0) v0 t3 x)).(eq_ind_r T (THead 
6817 k u2 x) (\lambda (t: T).(subst0 i0 v0 (THead k u1 t0) t)) (subst0_both v0 u1 
6818 u2 i0 H0 k t0 x (H3 x H7)) t4 H6)))) H5)) (\lambda (H5: (ex3_2 T T (\lambda 
6819 (u2: T).(\lambda (t2: T).(eq T t4 (THead k u2 t2)))) (\lambda (u3: 
6820 T).(\lambda (_: T).(subst0 i0 v0 u2 u3))) (\lambda (_: T).(\lambda (t2: 
6821 T).(subst0 (s k i0) v0 t3 t2))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda 
6822 (t5: T).(eq T t4 (THead k u3 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 
6823 i0 v0 u2 u3))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s k i0) v0 t3 t5))) 
6824 (subst0 i0 v0 (THead k u1 t0) t4) (\lambda (x0: T).(\lambda (x1: T).(\lambda 
6825 (H6: (eq T t4 (THead k x0 x1))).(\lambda (H7: (subst0 i0 v0 u2 x0)).(\lambda 
6826 (H8: (subst0 (s k i0) v0 t3 x1)).(eq_ind_r T (THead k x0 x1) (\lambda (t: 
6827 T).(subst0 i0 v0 (THead k u1 t0) t)) (subst0_both v0 u1 x0 i0 (H1 x0 H7) k t0 
6828 x1 (H3 x1 H8)) t4 H6)))))) H5)) (subst0_gen_head k v0 u2 t3 t4 i0 
6829 H4))))))))))))))) i v t1 t2 H))))).
6830
6831 theorem subst0_confluence_neq:
6832  \forall (t0: T).(\forall (t1: T).(\forall (u1: T).(\forall (i1: 
6833 nat).((subst0 i1 u1 t0 t1) \to (\forall (t2: T).(\forall (u2: T).(\forall 
6834 (i2: nat).((subst0 i2 u2 t0 t2) \to ((not (eq nat i1 i2)) \to (ex2 T (\lambda 
6835 (t: T).(subst0 i2 u2 t1 t)) (\lambda (t: T).(subst0 i1 u1 t2 t))))))))))))
6836 \def
6837  \lambda (t0: T).(\lambda (t1: T).(\lambda (u1: T).(\lambda (i1: 
6838 nat).(\lambda (H: (subst0 i1 u1 t0 t1)).(subst0_ind (\lambda (n: 
6839 nat).(\lambda (t: T).(\lambda (t2: T).(\lambda (t3: T).(\forall (t4: 
6840 T).(\forall (u2: T).(\forall (i2: nat).((subst0 i2 u2 t2 t4) \to ((not (eq 
6841 nat n i2)) \to (ex2 T (\lambda (t5: T).(subst0 i2 u2 t3 t5)) (\lambda (t5: 
6842 T).(subst0 n t t4 t5)))))))))))) (\lambda (v: T).(\lambda (i: nat).(\lambda 
6843 (t2: T).(\lambda (u2: T).(\lambda (i2: nat).(\lambda (H0: (subst0 i2 u2 
6844 (TLRef i) t2)).(\lambda (H1: (not (eq nat i i2))).(and_ind (eq nat i i2) (eq 
6845 T t2 (lift (S i) O u2)) (ex2 T (\lambda (t: T).(subst0 i2 u2 (lift (S i) O v) 
6846 t)) (\lambda (t: T).(subst0 i v t2 t))) (\lambda (H2: (eq nat i i2)).(\lambda 
6847 (H3: (eq T t2 (lift (S i) O u2))).(let H4 \def (eq_ind nat i (\lambda (n: 
6848 nat).(not (eq nat n i2))) H1 i2 H2) in (eq_ind_r T (lift (S i) O u2) (\lambda 
6849 (t: T).(ex2 T (\lambda (t3: T).(subst0 i2 u2 (lift (S i) O v) t3)) (\lambda 
6850 (t3: T).(subst0 i v t t3)))) (let H5 \def (match (H4 (refl_equal nat i2)) 
6851 return (\lambda (_: False).(ex2 T (\lambda (t: T).(subst0 i2 u2 (lift (S i) O 
6852 v) t)) (\lambda (t: T).(subst0 i v (lift (S i) O u2) t)))) with []) in H5) t2 
6853 H3)))) (subst0_gen_lref u2 t2 i2 i H0))))))))) (\lambda (v: T).(\lambda (u2: 
6854 T).(\lambda (u0: T).(\lambda (i: nat).(\lambda (H0: (subst0 i v u0 
6855 u2)).(\lambda (H1: ((\forall (t2: T).(\forall (u3: T).(\forall (i2: 
6856 nat).((subst0 i2 u3 u0 t2) \to ((not (eq nat i i2)) \to (ex2 T (\lambda (t: 
6857 T).(subst0 i2 u3 u2 t)) (\lambda (t: T).(subst0 i v t2 t)))))))))).(\lambda 
6858 (t: T).(\lambda (k: K).(\lambda (t2: T).(\lambda (u3: T).(\lambda (i2: 
6859 nat).(\lambda (H2: (subst0 i2 u3 (THead k u0 t) t2)).(\lambda (H3: (not (eq 
6860 nat i i2))).(or3_ind (ex2 T (\lambda (u4: T).(eq T t2 (THead k u4 t))) 
6861 (\lambda (u4: T).(subst0 i2 u3 u0 u4))) (ex2 T (\lambda (t3: T).(eq T t2 
6862 (THead k u0 t3))) (\lambda (t3: T).(subst0 (s k i2) u3 t t3))) (ex3_2 T T 
6863 (\lambda (u4: T).(\lambda (t3: T).(eq T t2 (THead k u4 t3)))) (\lambda (u4: 
6864 T).(\lambda (_: T).(subst0 i2 u3 u0 u4))) (\lambda (_: T).(\lambda (t3: 
6865 T).(subst0 (s k i2) u3 t t3)))) (ex2 T (\lambda (t3: T).(subst0 i2 u3 (THead 
6866 k u2 t) t3)) (\lambda (t3: T).(subst0 i v t2 t3))) (\lambda (H4: (ex2 T 
6867 (\lambda (u2: T).(eq T t2 (THead k u2 t))) (\lambda (u2: T).(subst0 i2 u3 u0 
6868 u2)))).(ex2_ind T (\lambda (u4: T).(eq T t2 (THead k u4 t))) (\lambda (u4: 
6869 T).(subst0 i2 u3 u0 u4)) (ex2 T (\lambda (t3: T).(subst0 i2 u3 (THead k u2 t) 
6870 t3)) (\lambda (t3: T).(subst0 i v t2 t3))) (\lambda (x: T).(\lambda (H5: (eq 
6871 T t2 (THead k x t))).(\lambda (H6: (subst0 i2 u3 u0 x)).(eq_ind_r T (THead k 
6872 x t) (\lambda (t3: T).(ex2 T (\lambda (t4: T).(subst0 i2 u3 (THead k u2 t) 
6873 t4)) (\lambda (t4: T).(subst0 i v t3 t4)))) (ex2_ind T (\lambda (t3: 
6874 T).(subst0 i2 u3 u2 t3)) (\lambda (t3: T).(subst0 i v x t3)) (ex2 T (\lambda 
6875 (t3: T).(subst0 i2 u3 (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i v (THead 
6876 k x t) t3))) (\lambda (x0: T).(\lambda (H7: (subst0 i2 u3 u2 x0)).(\lambda 
6877 (H8: (subst0 i v x x0)).(ex_intro2 T (\lambda (t3: T).(subst0 i2 u3 (THead k 
6878 u2 t) t3)) (\lambda (t3: T).(subst0 i v (THead k x t) t3)) (THead k x0 t) 
6879 (subst0_fst u3 x0 u2 i2 H7 t k) (subst0_fst v x0 x i H8 t k))))) (H1 x u3 i2 
6880 H6 H3)) t2 H5)))) H4)) (\lambda (H4: (ex2 T (\lambda (t3: T).(eq T t2 (THead 
6881 k u0 t3))) (\lambda (t2: T).(subst0 (s k i2) u3 t t2)))).(ex2_ind T (\lambda 
6882 (t3: T).(eq T t2 (THead k u0 t3))) (\lambda (t3: T).(subst0 (s k i2) u3 t 
6883 t3)) (ex2 T (\lambda (t3: T).(subst0 i2 u3 (THead k u2 t) t3)) (\lambda (t3: 
6884 T).(subst0 i v t2 t3))) (\lambda (x: T).(\lambda (H5: (eq T t2 (THead k u0 
6885 x))).(\lambda (H6: (subst0 (s k i2) u3 t x)).(eq_ind_r T (THead k u0 x) 
6886 (\lambda (t3: T).(ex2 T (\lambda (t4: T).(subst0 i2 u3 (THead k u2 t) t4)) 
6887 (\lambda (t4: T).(subst0 i v t3 t4)))) (ex_intro2 T (\lambda (t3: T).(subst0 
6888 i2 u3 (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i v (THead k u0 x) t3)) 
6889 (THead k u2 x) (subst0_snd k u3 x t i2 H6 u2) (subst0_fst v u2 u0 i H0 x k)) 
6890 t2 H5)))) H4)) (\lambda (H4: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq 
6891 T t2 (THead k u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i2 u3 u0 
6892 u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i2) u3 t 
6893 t2))))).(ex3_2_ind T T (\lambda (u4: T).(\lambda (t3: T).(eq T t2 (THead k u4 
6894 t3)))) (\lambda (u4: T).(\lambda (_: T).(subst0 i2 u3 u0 u4))) (\lambda (_: 
6895 T).(\lambda (t3: T).(subst0 (s k i2) u3 t t3))) (ex2 T (\lambda (t3: 
6896 T).(subst0 i2 u3 (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i v t2 t3))) 
6897 (\lambda (x0: T).(\lambda (x1: T).(\lambda (H5: (eq T t2 (THead k x0 
6898 x1))).(\lambda (H6: (subst0 i2 u3 u0 x0)).(\lambda (H7: (subst0 (s k i2) u3 t 
6899 x1)).(eq_ind_r T (THead k x0 x1) (\lambda (t3: T).(ex2 T (\lambda (t4: 
6900 T).(subst0 i2 u3 (THead k u2 t) t4)) (\lambda (t4: T).(subst0 i v t3 t4)))) 
6901 (ex2_ind T (\lambda (t3: T).(subst0 i2 u3 u2 t3)) (\lambda (t3: T).(subst0 i 
6902 v x0 t3)) (ex2 T (\lambda (t3: T).(subst0 i2 u3 (THead k u2 t) t3)) (\lambda 
6903 (t3: T).(subst0 i v (THead k x0 x1) t3))) (\lambda (x: T).(\lambda (H8: 
6904 (subst0 i2 u3 u2 x)).(\lambda (H9: (subst0 i v x0 x)).(ex_intro2 T (\lambda 
6905 (t3: T).(subst0 i2 u3 (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i v (THead 
6906 k x0 x1) t3)) (THead k x x1) (subst0_both u3 u2 x i2 H8 k t x1 H7) 
6907 (subst0_fst v x x0 i H9 x1 k))))) (H1 x0 u3 i2 H6 H3)) t2 H5)))))) H4)) 
6908 (subst0_gen_head k u3 u0 t t2 i2 H2))))))))))))))) (\lambda (k: K).(\lambda 
6909 (v: T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (i: nat).(\lambda (H0: 
6910 (subst0 (s k i) v t3 t2)).(\lambda (H1: ((\forall (t4: T).(\forall (u2: 
6911 T).(\forall (i2: nat).((subst0 i2 u2 t3 t4) \to ((not (eq nat (s k i) i2)) 
6912 \to (ex2 T (\lambda (t: T).(subst0 i2 u2 t2 t)) (\lambda (t: T).(subst0 (s k 
6913 i) v t4 t)))))))))).(\lambda (u: T).(\lambda (t4: T).(\lambda (u2: 
6914 T).(\lambda (i2: nat).(\lambda (H2: (subst0 i2 u2 (THead k u t3) 
6915 t4)).(\lambda (H3: (not (eq nat i i2))).(or3_ind (ex2 T (\lambda (u3: T).(eq 
6916 T t4 (THead k u3 t3))) (\lambda (u3: T).(subst0 i2 u2 u u3))) (ex2 T (\lambda 
6917 (t5: T).(eq T t4 (THead k u t5))) (\lambda (t5: T).(subst0 (s k i2) u2 t3 
6918 t5))) (ex3_2 T T (\lambda (u3: T).(\lambda (t5: T).(eq T t4 (THead k u3 
6919 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i2 u2 u u3))) (\lambda (_: 
6920 T).(\lambda (t5: T).(subst0 (s k i2) u2 t3 t5)))) (ex2 T (\lambda (t: 
6921 T).(subst0 i2 u2 (THead k u t2) t)) (\lambda (t: T).(subst0 i v t4 t))) 
6922 (\lambda (H4: (ex2 T (\lambda (u2: T).(eq T t4 (THead k u2 t3))) (\lambda 
6923 (u3: T).(subst0 i2 u2 u u3)))).(ex2_ind T (\lambda (u3: T).(eq T t4 (THead k 
6924 u3 t3))) (\lambda (u3: T).(subst0 i2 u2 u u3)) (ex2 T (\lambda (t: T).(subst0 
6925 i2 u2 (THead k u t2) t)) (\lambda (t: T).(subst0 i v t4 t))) (\lambda (x: 
6926 T).(\lambda (H5: (eq T t4 (THead k x t3))).(\lambda (H6: (subst0 i2 u2 u 
6927 x)).(eq_ind_r T (THead k x t3) (\lambda (t: T).(ex2 T (\lambda (t5: 
6928 T).(subst0 i2 u2 (THead k u t2) t5)) (\lambda (t5: T).(subst0 i v t t5)))) 
6929 (ex_intro2 T (\lambda (t: T).(subst0 i2 u2 (THead k u t2) t)) (\lambda (t: 
6930 T).(subst0 i v (THead k x t3) t)) (THead k x t2) (subst0_fst u2 x u i2 H6 t2 
6931 k) (subst0_snd k v t2 t3 i H0 x)) t4 H5)))) H4)) (\lambda (H4: (ex2 T 
6932 (\lambda (t2: T).(eq T t4 (THead k u t2))) (\lambda (t2: T).(subst0 (s k i2) 
6933 u2 t3 t2)))).(ex2_ind T (\lambda (t5: T).(eq T t4 (THead k u t5))) (\lambda 
6934 (t5: T).(subst0 (s k i2) u2 t3 t5)) (ex2 T (\lambda (t: T).(subst0 i2 u2 
6935 (THead k u t2) t)) (\lambda (t: T).(subst0 i v t4 t))) (\lambda (x: 
6936 T).(\lambda (H5: (eq T t4 (THead k u x))).(\lambda (H6: (subst0 (s k i2) u2 
6937 t3 x)).(eq_ind_r T (THead k u x) (\lambda (t: T).(ex2 T (\lambda (t5: 
6938 T).(subst0 i2 u2 (THead k u t2) t5)) (\lambda (t5: T).(subst0 i v t t5)))) 
6939 (ex2_ind T (\lambda (t: T).(subst0 (s k i2) u2 t2 t)) (\lambda (t: T).(subst0 
6940 (s k i) v x t)) (ex2 T (\lambda (t: T).(subst0 i2 u2 (THead k u t2) t)) 
6941 (\lambda (t: T).(subst0 i v (THead k u x) t))) (\lambda (x0: T).(\lambda (H7: 
6942 (subst0 (s k i2) u2 t2 x0)).(\lambda (H8: (subst0 (s k i) v x x0)).(ex_intro2 
6943 T (\lambda (t: T).(subst0 i2 u2 (THead k u t2) t)) (\lambda (t: T).(subst0 i 
6944 v (THead k u x) t)) (THead k u x0) (subst0_snd k u2 x0 t2 i2 H7 u) 
6945 (subst0_snd k v x0 x i H8 u))))) (H1 x u2 (s k i2) H6 (\lambda (H7: (eq nat 
6946 (s k i) (s k i2))).(H3 (s_inj k i i2 H7))))) t4 H5)))) H4)) (\lambda (H4: 
6947 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead k u2 t2)))) 
6948 (\lambda (u3: T).(\lambda (_: T).(subst0 i2 u2 u u3))) (\lambda (_: 
6949 T).(\lambda (t2: T).(subst0 (s k i2) u2 t3 t2))))).(ex3_2_ind T T (\lambda 
6950 (u3: T).(\lambda (t5: T).(eq T t4 (THead k u3 t5)))) (\lambda (u3: 
6951 T).(\lambda (_: T).(subst0 i2 u2 u u3))) (\lambda (_: T).(\lambda (t5: 
6952 T).(subst0 (s k i2) u2 t3 t5))) (ex2 T (\lambda (t: T).(subst0 i2 u2 (THead k 
6953 u t2) t)) (\lambda (t: T).(subst0 i v t4 t))) (\lambda (x0: T).(\lambda (x1: 
6954 T).(\lambda (H5: (eq T t4 (THead k x0 x1))).(\lambda (H6: (subst0 i2 u2 u 
6955 x0)).(\lambda (H7: (subst0 (s k i2) u2 t3 x1)).(eq_ind_r T (THead k x0 x1) 
6956 (\lambda (t: T).(ex2 T (\lambda (t5: T).(subst0 i2 u2 (THead k u t2) t5)) 
6957 (\lambda (t5: T).(subst0 i v t t5)))) (ex2_ind T (\lambda (t: T).(subst0 (s k 
6958 i2) u2 t2 t)) (\lambda (t: T).(subst0 (s k i) v x1 t)) (ex2 T (\lambda (t: 
6959 T).(subst0 i2 u2 (THead k u t2) t)) (\lambda (t: T).(subst0 i v (THead k x0 
6960 x1) t))) (\lambda (x: T).(\lambda (H8: (subst0 (s k i2) u2 t2 x)).(\lambda 
6961 (H9: (subst0 (s k i) v x1 x)).(ex_intro2 T (\lambda (t: T).(subst0 i2 u2 
6962 (THead k u t2) t)) (\lambda (t: T).(subst0 i v (THead k x0 x1) t)) (THead k 
6963 x0 x) (subst0_both u2 u x0 i2 H6 k t2 x H8) (subst0_snd k v x x1 i H9 x0))))) 
6964 (H1 x1 u2 (s k i2) H7 (\lambda (H8: (eq nat (s k i) (s k i2))).(H3 (s_inj k i 
6965 i2 H8))))) t4 H5)))))) H4)) (subst0_gen_head k u2 u t3 t4 i2 
6966 H2))))))))))))))) (\lambda (v: T).(\lambda (u0: T).(\lambda (u2: T).(\lambda 
6967 (i: nat).(\lambda (H0: (subst0 i v u0 u2)).(\lambda (H1: ((\forall (t2: 
6968 T).(\forall (u3: T).(\forall (i2: nat).((subst0 i2 u3 u0 t2) \to ((not (eq 
6969 nat i i2)) \to (ex2 T (\lambda (t: T).(subst0 i2 u3 u2 t)) (\lambda (t: 
6970 T).(subst0 i v t2 t)))))))))).(\lambda (k: K).(\lambda (t2: T).(\lambda (t3: 
6971 T).(\lambda (H2: (subst0 (s k i) v t2 t3)).(\lambda (H3: ((\forall (t4: 
6972 T).(\forall (u2: T).(\forall (i2: nat).((subst0 i2 u2 t2 t4) \to ((not (eq 
6973 nat (s k i) i2)) \to (ex2 T (\lambda (t: T).(subst0 i2 u2 t3 t)) (\lambda (t: 
6974 T).(subst0 (s k i) v t4 t)))))))))).(\lambda (t4: T).(\lambda (u3: 
6975 T).(\lambda (i2: nat).(\lambda (H4: (subst0 i2 u3 (THead k u0 t2) 
6976 t4)).(\lambda (H5: (not (eq nat i i2))).(or3_ind (ex2 T (\lambda (u4: T).(eq 
6977 T t4 (THead k u4 t2))) (\lambda (u4: T).(subst0 i2 u3 u0 u4))) (ex2 T 
6978 (\lambda (t5: T).(eq T t4 (THead k u0 t5))) (\lambda (t5: T).(subst0 (s k i2) 
6979 u3 t2 t5))) (ex3_2 T T (\lambda (u4: T).(\lambda (t5: T).(eq T t4 (THead k u4 
6980 t5)))) (\lambda (u4: T).(\lambda (_: T).(subst0 i2 u3 u0 u4))) (\lambda (_: 
6981 T).(\lambda (t5: T).(subst0 (s k i2) u3 t2 t5)))) (ex2 T (\lambda (t: 
6982 T).(subst0 i2 u3 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i v t4 t))) 
6983 (\lambda (H6: (ex2 T (\lambda (u2: T).(eq T t4 (THead k u2 t2))) (\lambda 
6984 (u2: T).(subst0 i2 u3 u0 u2)))).(ex2_ind T (\lambda (u4: T).(eq T t4 (THead k 
6985 u4 t2))) (\lambda (u4: T).(subst0 i2 u3 u0 u4)) (ex2 T (\lambda (t: 
6986 T).(subst0 i2 u3 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i v t4 t))) 
6987 (\lambda (x: T).(\lambda (H7: (eq T t4 (THead k x t2))).(\lambda (H8: (subst0 
6988 i2 u3 u0 x)).(eq_ind_r T (THead k x t2) (\lambda (t: T).(ex2 T (\lambda (t5: 
6989 T).(subst0 i2 u3 (THead k u2 t3) t5)) (\lambda (t5: T).(subst0 i v t t5)))) 
6990 (ex2_ind T (\lambda (t: T).(subst0 i2 u3 u2 t)) (\lambda (t: T).(subst0 i v x 
6991 t)) (ex2 T (\lambda (t: T).(subst0 i2 u3 (THead k u2 t3) t)) (\lambda (t: 
6992 T).(subst0 i v (THead k x t2) t))) (\lambda (x0: T).(\lambda (H9: (subst0 i2 
6993 u3 u2 x0)).(\lambda (H10: (subst0 i v x x0)).(ex_intro2 T (\lambda (t: 
6994 T).(subst0 i2 u3 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i v (THead k x 
6995 t2) t)) (THead k x0 t3) (subst0_fst u3 x0 u2 i2 H9 t3 k) (subst0_both v x x0 
6996 i H10 k t2 t3 H2))))) (H1 x u3 i2 H8 H5)) t4 H7)))) H6)) (\lambda (H6: (ex2 T 
6997 (\lambda (t2: T).(eq T t4 (THead k u0 t2))) (\lambda (t3: T).(subst0 (s k i2) 
6998 u3 t2 t3)))).(ex2_ind T (\lambda (t5: T).(eq T t4 (THead k u0 t5))) (\lambda 
6999 (t5: T).(subst0 (s k i2) u3 t2 t5)) (ex2 T (\lambda (t: T).(subst0 i2 u3 
7000 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i v t4 t))) (\lambda (x: 
7001 T).(\lambda (H7: (eq T t4 (THead k u0 x))).(\lambda (H8: (subst0 (s k i2) u3 
7002 t2 x)).(eq_ind_r T (THead k u0 x) (\lambda (t: T).(ex2 T (\lambda (t5: 
7003 T).(subst0 i2 u3 (THead k u2 t3) t5)) (\lambda (t5: T).(subst0 i v t t5)))) 
7004 (ex2_ind T (\lambda (t: T).(subst0 (s k i2) u3 t3 t)) (\lambda (t: T).(subst0 
7005 (s k i) v x t)) (ex2 T (\lambda (t: T).(subst0 i2 u3 (THead k u2 t3) t)) 
7006 (\lambda (t: T).(subst0 i v (THead k u0 x) t))) (\lambda (x0: T).(\lambda 
7007 (H9: (subst0 (s k i2) u3 t3 x0)).(\lambda (H10: (subst0 (s k i) v x 
7008 x0)).(ex_intro2 T (\lambda (t: T).(subst0 i2 u3 (THead k u2 t3) t)) (\lambda 
7009 (t: T).(subst0 i v (THead k u0 x) t)) (THead k u2 x0) (subst0_snd k u3 x0 t3 
7010 i2 H9 u2) (subst0_both v u0 u2 i H0 k x x0 H10))))) (H3 x u3 (s k i2) H8 
7011 (\lambda (H9: (eq nat (s k i) (s k i2))).(H5 (s_inj k i i2 H9))))) t4 H7)))) 
7012 H6)) (\lambda (H6: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 
7013 (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i2 u3 u0 u2))) 
7014 (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i2) u3 t2 t3))))).(ex3_2_ind T 
7015 T (\lambda (u4: T).(\lambda (t5: T).(eq T t4 (THead k u4 t5)))) (\lambda (u4: 
7016 T).(\lambda (_: T).(subst0 i2 u3 u0 u4))) (\lambda (_: T).(\lambda (t5: 
7017 T).(subst0 (s k i2) u3 t2 t5))) (ex2 T (\lambda (t: T).(subst0 i2 u3 (THead k 
7018 u2 t3) t)) (\lambda (t: T).(subst0 i v t4 t))) (\lambda (x0: T).(\lambda (x1: 
7019 T).(\lambda (H7: (eq T t4 (THead k x0 x1))).(\lambda (H8: (subst0 i2 u3 u0 
7020 x0)).(\lambda (H9: (subst0 (s k i2) u3 t2 x1)).(eq_ind_r T (THead k x0 x1) 
7021 (\lambda (t: T).(ex2 T (\lambda (t5: T).(subst0 i2 u3 (THead k u2 t3) t5)) 
7022 (\lambda (t5: T).(subst0 i v t t5)))) (ex2_ind T (\lambda (t: T).(subst0 i2 
7023 u3 u2 t)) (\lambda (t: T).(subst0 i v x0 t)) (ex2 T (\lambda (t: T).(subst0 
7024 i2 u3 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i v (THead k x0 x1) t))) 
7025 (\lambda (x: T).(\lambda (H10: (subst0 i2 u3 u2 x)).(\lambda (H11: (subst0 i 
7026 v x0 x)).(ex2_ind T (\lambda (t: T).(subst0 (s k i2) u3 t3 t)) (\lambda (t: 
7027 T).(subst0 (s k i) v x1 t)) (ex2 T (\lambda (t: T).(subst0 i2 u3 (THead k u2 
7028 t3) t)) (\lambda (t: T).(subst0 i v (THead k x0 x1) t))) (\lambda (x2: 
7029 T).(\lambda (H12: (subst0 (s k i2) u3 t3 x2)).(\lambda (H13: (subst0 (s k i) 
7030 v x1 x2)).(ex_intro2 T (\lambda (t: T).(subst0 i2 u3 (THead k u2 t3) t)) 
7031 (\lambda (t: T).(subst0 i v (THead k x0 x1) t)) (THead k x x2) (subst0_both 
7032 u3 u2 x i2 H10 k t3 x2 H12) (subst0_both v x0 x i H11 k x1 x2 H13))))) (H3 x1 
7033 u3 (s k i2) H9 (\lambda (H12: (eq nat (s k i) (s k i2))).(H5 (s_inj k i i2 
7034 H12)))))))) (H1 x0 u3 i2 H8 H5)) t4 H7)))))) H6)) (subst0_gen_head k u3 u0 t2 
7035 t4 i2 H4)))))))))))))))))) i1 u1 t0 t1 H))))).
7036
7037 theorem subst0_confluence_eq:
7038  \forall (t0: T).(\forall (t1: T).(\forall (u: T).(\forall (i: nat).((subst0 
7039 i u t0 t1) \to (\forall (t2: T).((subst0 i u t0 t2) \to (or4 (eq T t1 t2) 
7040 (ex2 T (\lambda (t: T).(subst0 i u t1 t)) (\lambda (t: T).(subst0 i u t2 t))) 
7041 (subst0 i u t1 t2) (subst0 i u t2 t1))))))))
7042 \def
7043  \lambda (t0: T).(\lambda (t1: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
7044 (H: (subst0 i u t0 t1)).(subst0_ind (\lambda (n: nat).(\lambda (t: 
7045 T).(\lambda (t2: T).(\lambda (t3: T).(\forall (t4: T).((subst0 n t t2 t4) \to 
7046 (or4 (eq T t3 t4) (ex2 T (\lambda (t5: T).(subst0 n t t3 t5)) (\lambda (t5: 
7047 T).(subst0 n t t4 t5))) (subst0 n t t3 t4) (subst0 n t t4 t3)))))))) (\lambda 
7048 (v: T).(\lambda (i0: nat).(\lambda (t2: T).(\lambda (H0: (subst0 i0 v (TLRef 
7049 i0) t2)).(and_ind (eq nat i0 i0) (eq T t2 (lift (S i0) O v)) (or4 (eq T (lift 
7050 (S i0) O v) t2) (ex2 T (\lambda (t: T).(subst0 i0 v (lift (S i0) O v) t)) 
7051 (\lambda (t: T).(subst0 i0 v t2 t))) (subst0 i0 v (lift (S i0) O v) t2) 
7052 (subst0 i0 v t2 (lift (S i0) O v))) (\lambda (_: (eq nat i0 i0)).(\lambda 
7053 (H2: (eq T t2 (lift (S i0) O v))).(or4_intro0 (eq T (lift (S i0) O v) t2) 
7054 (ex2 T (\lambda (t: T).(subst0 i0 v (lift (S i0) O v) t)) (\lambda (t: 
7055 T).(subst0 i0 v t2 t))) (subst0 i0 v (lift (S i0) O v) t2) (subst0 i0 v t2 
7056 (lift (S i0) O v)) (sym_eq T t2 (lift (S i0) O v) H2)))) (subst0_gen_lref v 
7057 t2 i0 i0 H0)))))) (\lambda (v: T).(\lambda (u2: T).(\lambda (u1: T).(\lambda 
7058 (i0: nat).(\lambda (H0: (subst0 i0 v u1 u2)).(\lambda (H1: ((\forall (t2: 
7059 T).((subst0 i0 v u1 t2) \to (or4 (eq T u2 t2) (ex2 T (\lambda (t: T).(subst0 
7060 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v t2 t))) (subst0 i0 v u2 t2) (subst0 
7061 i0 v t2 u2)))))).(\lambda (t: T).(\lambda (k: K).(\lambda (t2: T).(\lambda 
7062 (H2: (subst0 i0 v (THead k u1 t) t2)).(or3_ind (ex2 T (\lambda (u3: T).(eq T 
7063 t2 (THead k u3 t))) (\lambda (u3: T).(subst0 i0 v u1 u3))) (ex2 T (\lambda 
7064 (t3: T).(eq T t2 (THead k u1 t3))) (\lambda (t3: T).(subst0 (s k i0) v t 
7065 t3))) (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T t2 (THead k u3 
7066 t3)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v u1 u3))) (\lambda (_: 
7067 T).(\lambda (t3: T).(subst0 (s k i0) v t t3)))) (or4 (eq T (THead k u2 t) t2) 
7068 (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: 
7069 T).(subst0 i0 v t2 t3))) (subst0 i0 v (THead k u2 t) t2) (subst0 i0 v t2 
7070 (THead k u2 t))) (\lambda (H3: (ex2 T (\lambda (u2: T).(eq T t2 (THead k u2 
7071 t))) (\lambda (u2: T).(subst0 i0 v u1 u2)))).(ex2_ind T (\lambda (u3: T).(eq 
7072 T t2 (THead k u3 t))) (\lambda (u3: T).(subst0 i0 v u1 u3)) (or4 (eq T (THead 
7073 k u2 t) t2) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda 
7074 (t3: T).(subst0 i0 v t2 t3))) (subst0 i0 v (THead k u2 t) t2) (subst0 i0 v t2 
7075 (THead k u2 t))) (\lambda (x: T).(\lambda (H4: (eq T t2 (THead k x 
7076 t))).(\lambda (H5: (subst0 i0 v u1 x)).(eq_ind_r T (THead k x t) (\lambda 
7077 (t3: T).(or4 (eq T (THead k u2 t) t3) (ex2 T (\lambda (t4: T).(subst0 i0 v 
7078 (THead k u2 t) t4)) (\lambda (t4: T).(subst0 i0 v t3 t4))) (subst0 i0 v 
7079 (THead k u2 t) t3) (subst0 i0 v t3 (THead k u2 t)))) (or4_ind (eq T u2 x) 
7080 (ex2 T (\lambda (t3: T).(subst0 i0 v u2 t3)) (\lambda (t3: T).(subst0 i0 v x 
7081 t3))) (subst0 i0 v u2 x) (subst0 i0 v x u2) (or4 (eq T (THead k u2 t) (THead 
7082 k x t)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda 
7083 (t3: T).(subst0 i0 v (THead k x t) t3))) (subst0 i0 v (THead k u2 t) (THead k 
7084 x t)) (subst0 i0 v (THead k x t) (THead k u2 t))) (\lambda (H6: (eq T u2 
7085 x)).(eq_ind_r T x (\lambda (t3: T).(or4 (eq T (THead k t3 t) (THead k x t)) 
7086 (ex2 T (\lambda (t4: T).(subst0 i0 v (THead k t3 t) t4)) (\lambda (t4: 
7087 T).(subst0 i0 v (THead k x t) t4))) (subst0 i0 v (THead k t3 t) (THead k x 
7088 t)) (subst0 i0 v (THead k x t) (THead k t3 t)))) (or4_intro0 (eq T (THead k x 
7089 t) (THead k x t)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k x t) t3)) 
7090 (\lambda (t3: T).(subst0 i0 v (THead k x t) t3))) (subst0 i0 v (THead k x t) 
7091 (THead k x t)) (subst0 i0 v (THead k x t) (THead k x t)) (refl_equal T (THead 
7092 k x t))) u2 H6)) (\lambda (H6: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) 
7093 (\lambda (t: T).(subst0 i0 v x t)))).(ex2_ind T (\lambda (t3: T).(subst0 i0 v 
7094 u2 t3)) (\lambda (t3: T).(subst0 i0 v x t3)) (or4 (eq T (THead k u2 t) (THead 
7095 k x t)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda 
7096 (t3: T).(subst0 i0 v (THead k x t) t3))) (subst0 i0 v (THead k u2 t) (THead k 
7097 x t)) (subst0 i0 v (THead k x t) (THead k u2 t))) (\lambda (x0: T).(\lambda 
7098 (H7: (subst0 i0 v u2 x0)).(\lambda (H8: (subst0 i0 v x x0)).(or4_intro1 (eq T 
7099 (THead k u2 t) (THead k x t)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k 
7100 u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k x t) t3))) (subst0 i0 v 
7101 (THead k u2 t) (THead k x t)) (subst0 i0 v (THead k x t) (THead k u2 t)) 
7102 (ex_intro2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: 
7103 T).(subst0 i0 v (THead k x t) t3)) (THead k x0 t) (subst0_fst v x0 u2 i0 H7 t 
7104 k) (subst0_fst v x0 x i0 H8 t k)))))) H6)) (\lambda (H6: (subst0 i0 v u2 
7105 x)).(or4_intro2 (eq T (THead k u2 t) (THead k x t)) (ex2 T (\lambda (t3: 
7106 T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k x 
7107 t) t3))) (subst0 i0 v (THead k u2 t) (THead k x t)) (subst0 i0 v (THead k x 
7108 t) (THead k u2 t)) (subst0_fst v x u2 i0 H6 t k))) (\lambda (H6: (subst0 i0 v 
7109 x u2)).(or4_intro3 (eq T (THead k u2 t) (THead k x t)) (ex2 T (\lambda (t3: 
7110 T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k x 
7111 t) t3))) (subst0 i0 v (THead k u2 t) (THead k x t)) (subst0 i0 v (THead k x 
7112 t) (THead k u2 t)) (subst0_fst v u2 x i0 H6 t k))) (H1 x H5)) t2 H4)))) H3)) 
7113 (\lambda (H3: (ex2 T (\lambda (t3: T).(eq T t2 (THead k u1 t3))) (\lambda 
7114 (t2: T).(subst0 (s k i0) v t t2)))).(ex2_ind T (\lambda (t3: T).(eq T t2 
7115 (THead k u1 t3))) (\lambda (t3: T).(subst0 (s k i0) v t t3)) (or4 (eq T 
7116 (THead k u2 t) t2) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) 
7117 (\lambda (t3: T).(subst0 i0 v t2 t3))) (subst0 i0 v (THead k u2 t) t2) 
7118 (subst0 i0 v t2 (THead k u2 t))) (\lambda (x: T).(\lambda (H4: (eq T t2 
7119 (THead k u1 x))).(\lambda (H5: (subst0 (s k i0) v t x)).(eq_ind_r T (THead k 
7120 u1 x) (\lambda (t3: T).(or4 (eq T (THead k u2 t) t3) (ex2 T (\lambda (t4: 
7121 T).(subst0 i0 v (THead k u2 t) t4)) (\lambda (t4: T).(subst0 i0 v t3 t4))) 
7122 (subst0 i0 v (THead k u2 t) t3) (subst0 i0 v t3 (THead k u2 t)))) (or4_ind 
7123 (eq T u2 u2) (ex2 T (\lambda (t3: T).(subst0 i0 v u2 t3)) (\lambda (t3: 
7124 T).(subst0 i0 v u2 t3))) (subst0 i0 v u2 u2) (subst0 i0 v u2 u2) (or4 (eq T 
7125 (THead k u2 t) (THead k u1 x)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k 
7126 u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 x) t3))) (subst0 i0 v 
7127 (THead k u2 t) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t))) 
7128 (\lambda (_: (eq T u2 u2)).(or4_intro1 (eq T (THead k u2 t) (THead k u1 x)) 
7129 (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: 
7130 T).(subst0 i0 v (THead k u1 x) t3))) (subst0 i0 v (THead k u2 t) (THead k u1 
7131 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t)) (ex_intro2 T (\lambda (t3: 
7132 T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 
7133 x) t3)) (THead k u2 x) (subst0_snd k v x t i0 H5 u2) (subst0_fst v u2 u1 i0 
7134 H0 x k)))) (\lambda (H6: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda 
7135 (t: T).(subst0 i0 v u2 t)))).(ex2_ind T (\lambda (t3: T).(subst0 i0 v u2 t3)) 
7136 (\lambda (t3: T).(subst0 i0 v u2 t3)) (or4 (eq T (THead k u2 t) (THead k u1 
7137 x)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: 
7138 T).(subst0 i0 v (THead k u1 x) t3))) (subst0 i0 v (THead k u2 t) (THead k u1 
7139 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t))) (\lambda (x0: T).(\lambda 
7140 (_: (subst0 i0 v u2 x0)).(\lambda (_: (subst0 i0 v u2 x0)).(or4_intro1 (eq T 
7141 (THead k u2 t) (THead k u1 x)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k 
7142 u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 x) t3))) (subst0 i0 v 
7143 (THead k u2 t) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t)) 
7144 (ex_intro2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: 
7145 T).(subst0 i0 v (THead k u1 x) t3)) (THead k u2 x) (subst0_snd k v x t i0 H5 
7146 u2) (subst0_fst v u2 u1 i0 H0 x k)))))) H6)) (\lambda (_: (subst0 i0 v u2 
7147 u2)).(or4_intro1 (eq T (THead k u2 t) (THead k u1 x)) (ex2 T (\lambda (t3: 
7148 T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 
7149 x) t3))) (subst0 i0 v (THead k u2 t) (THead k u1 x)) (subst0 i0 v (THead k u1 
7150 x) (THead k u2 t)) (ex_intro2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) 
7151 t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 x) t3)) (THead k u2 x) 
7152 (subst0_snd k v x t i0 H5 u2) (subst0_fst v u2 u1 i0 H0 x k)))) (\lambda (_: 
7153 (subst0 i0 v u2 u2)).(or4_intro1 (eq T (THead k u2 t) (THead k u1 x)) (ex2 T 
7154 (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 
7155 v (THead k u1 x) t3))) (subst0 i0 v (THead k u2 t) (THead k u1 x)) (subst0 i0 
7156 v (THead k u1 x) (THead k u2 t)) (ex_intro2 T (\lambda (t3: T).(subst0 i0 v 
7157 (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 x) t3)) (THead 
7158 k u2 x) (subst0_snd k v x t i0 H5 u2) (subst0_fst v u2 u1 i0 H0 x k)))) (H1 
7159 u2 H0)) t2 H4)))) H3)) (\lambda (H3: (ex3_2 T T (\lambda (u2: T).(\lambda 
7160 (t3: T).(eq T t2 (THead k u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 
7161 i0 v u1 u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i0) v t 
7162 t2))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t3: T).(eq T t2 (THead k u3 
7163 t3)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v u1 u3))) (\lambda (_: 
7164 T).(\lambda (t3: T).(subst0 (s k i0) v t t3))) (or4 (eq T (THead k u2 t) t2) 
7165 (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: 
7166 T).(subst0 i0 v t2 t3))) (subst0 i0 v (THead k u2 t) t2) (subst0 i0 v t2 
7167 (THead k u2 t))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H4: (eq T t2 
7168 (THead k x0 x1))).(\lambda (H5: (subst0 i0 v u1 x0)).(\lambda (H6: (subst0 (s 
7169 k i0) v t x1)).(eq_ind_r T (THead k x0 x1) (\lambda (t3: T).(or4 (eq T (THead 
7170 k u2 t) t3) (ex2 T (\lambda (t4: T).(subst0 i0 v (THead k u2 t) t4)) (\lambda 
7171 (t4: T).(subst0 i0 v t3 t4))) (subst0 i0 v (THead k u2 t) t3) (subst0 i0 v t3 
7172 (THead k u2 t)))) (or4_ind (eq T u2 x0) (ex2 T (\lambda (t3: T).(subst0 i0 v 
7173 u2 t3)) (\lambda (t3: T).(subst0 i0 v x0 t3))) (subst0 i0 v u2 x0) (subst0 i0 
7174 v x0 u2) (or4 (eq T (THead k u2 t) (THead k x0 x1)) (ex2 T (\lambda (t3: 
7175 T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k x0 
7176 x1) t3))) (subst0 i0 v (THead k u2 t) (THead k x0 x1)) (subst0 i0 v (THead k 
7177 x0 x1) (THead k u2 t))) (\lambda (H7: (eq T u2 x0)).(eq_ind_r T x0 (\lambda 
7178 (t3: T).(or4 (eq T (THead k t3 t) (THead k x0 x1)) (ex2 T (\lambda (t4: 
7179 T).(subst0 i0 v (THead k t3 t) t4)) (\lambda (t4: T).(subst0 i0 v (THead k x0 
7180 x1) t4))) (subst0 i0 v (THead k t3 t) (THead k x0 x1)) (subst0 i0 v (THead k 
7181 x0 x1) (THead k t3 t)))) (or4_intro2 (eq T (THead k x0 t) (THead k x0 x1)) 
7182 (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k x0 t) t3)) (\lambda (t3: 
7183 T).(subst0 i0 v (THead k x0 x1) t3))) (subst0 i0 v (THead k x0 t) (THead k x0 
7184 x1)) (subst0 i0 v (THead k x0 x1) (THead k x0 t)) (subst0_snd k v x1 t i0 H6 
7185 x0)) u2 H7)) (\lambda (H7: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) 
7186 (\lambda (t: T).(subst0 i0 v x0 t)))).(ex2_ind T (\lambda (t3: T).(subst0 i0 
7187 v u2 t3)) (\lambda (t3: T).(subst0 i0 v x0 t3)) (or4 (eq T (THead k u2 t) 
7188 (THead k x0 x1)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) 
7189 (\lambda (t3: T).(subst0 i0 v (THead k x0 x1) t3))) (subst0 i0 v (THead k u2 
7190 t) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t))) (\lambda 
7191 (x: T).(\lambda (H8: (subst0 i0 v u2 x)).(\lambda (H9: (subst0 i0 v x0 
7192 x)).(or4_intro1 (eq T (THead k u2 t) (THead k x0 x1)) (ex2 T (\lambda (t3: 
7193 T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k x0 
7194 x1) t3))) (subst0 i0 v (THead k u2 t) (THead k x0 x1)) (subst0 i0 v (THead k 
7195 x0 x1) (THead k u2 t)) (ex_intro2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 
7196 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k x0 x1) t3)) (THead k x x1) 
7197 (subst0_both v u2 x i0 H8 k t x1 H6) (subst0_fst v x x0 i0 H9 x1 k)))))) H7)) 
7198 (\lambda (H7: (subst0 i0 v u2 x0)).(or4_intro2 (eq T (THead k u2 t) (THead k 
7199 x0 x1)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda 
7200 (t3: T).(subst0 i0 v (THead k x0 x1) t3))) (subst0 i0 v (THead k u2 t) (THead 
7201 k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t)) (subst0_both v u2 x0 
7202 i0 H7 k t x1 H6))) (\lambda (H7: (subst0 i0 v x0 u2)).(or4_intro1 (eq T 
7203 (THead k u2 t) (THead k x0 x1)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k 
7204 u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k x0 x1) t3))) (subst0 i0 v 
7205 (THead k u2 t) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t)) 
7206 (ex_intro2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: 
7207 T).(subst0 i0 v (THead k x0 x1) t3)) (THead k u2 x1) (subst0_snd k v x1 t i0 
7208 H6 u2) (subst0_fst v u2 x0 i0 H7 x1 k)))) (H1 x0 H5)) t2 H4)))))) H3)) 
7209 (subst0_gen_head k v u1 t t2 i0 H2)))))))))))) (\lambda (k: K).(\lambda (v: 
7210 T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (i0: nat).(\lambda (H0: (subst0 
7211 (s k i0) v t3 t2)).(\lambda (H1: ((\forall (t4: T).((subst0 (s k i0) v t3 t4) 
7212 \to (or4 (eq T t2 t4) (ex2 T (\lambda (t: T).(subst0 (s k i0) v t2 t)) 
7213 (\lambda (t: T).(subst0 (s k i0) v t4 t))) (subst0 (s k i0) v t2 t4) (subst0 
7214 (s k i0) v t4 t2)))))).(\lambda (u0: T).(\lambda (t4: T).(\lambda (H2: 
7215 (subst0 i0 v (THead k u0 t3) t4)).(or3_ind (ex2 T (\lambda (u2: T).(eq T t4 
7216 (THead k u2 t3))) (\lambda (u2: T).(subst0 i0 v u0 u2))) (ex2 T (\lambda (t5: 
7217 T).(eq T t4 (THead k u0 t5))) (\lambda (t5: T).(subst0 (s k i0) v t3 t5))) 
7218 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead k u2 t5)))) 
7219 (\lambda (u2: T).(\lambda (_: T).(subst0 i0 v u0 u2))) (\lambda (_: 
7220 T).(\lambda (t5: T).(subst0 (s k i0) v t3 t5)))) (or4 (eq T (THead k u0 t2) 
7221 t4) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: 
7222 T).(subst0 i0 v t4 t))) (subst0 i0 v (THead k u0 t2) t4) (subst0 i0 v t4 
7223 (THead k u0 t2))) (\lambda (H3: (ex2 T (\lambda (u2: T).(eq T t4 (THead k u2 
7224 t3))) (\lambda (u2: T).(subst0 i0 v u0 u2)))).(ex2_ind T (\lambda (u2: T).(eq 
7225 T t4 (THead k u2 t3))) (\lambda (u2: T).(subst0 i0 v u0 u2)) (or4 (eq T 
7226 (THead k u0 t2) t4) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u0 t2) t)) 
7227 (\lambda (t: T).(subst0 i0 v t4 t))) (subst0 i0 v (THead k u0 t2) t4) (subst0 
7228 i0 v t4 (THead k u0 t2))) (\lambda (x: T).(\lambda (H4: (eq T t4 (THead k x 
7229 t3))).(\lambda (H5: (subst0 i0 v u0 x)).(eq_ind_r T (THead k x t3) (\lambda 
7230 (t: T).(or4 (eq T (THead k u0 t2) t) (ex2 T (\lambda (t5: T).(subst0 i0 v 
7231 (THead k u0 t2) t5)) (\lambda (t5: T).(subst0 i0 v t t5))) (subst0 i0 v 
7232 (THead k u0 t2) t) (subst0 i0 v t (THead k u0 t2)))) (or4_ind (eq T t2 t2) 
7233 (ex2 T (\lambda (t: T).(subst0 (s k i0) v t2 t)) (\lambda (t: T).(subst0 (s k 
7234 i0) v t2 t))) (subst0 (s k i0) v t2 t2) (subst0 (s k i0) v t2 t2) (or4 (eq T 
7235 (THead k u0 t2) (THead k x t3)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7236 u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x t3) t))) (subst0 i0 v 
7237 (THead k u0 t2) (THead k x t3)) (subst0 i0 v (THead k x t3) (THead k u0 t2))) 
7238 (\lambda (_: (eq T t2 t2)).(or4_intro1 (eq T (THead k u0 t2) (THead k x t3)) 
7239 (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: 
7240 T).(subst0 i0 v (THead k x t3) t))) (subst0 i0 v (THead k u0 t2) (THead k x 
7241 t3)) (subst0 i0 v (THead k x t3) (THead k u0 t2)) (ex_intro2 T (\lambda (t: 
7242 T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x 
7243 t3) t)) (THead k x t2) (subst0_fst v x u0 i0 H5 t2 k) (subst0_snd k v t2 t3 
7244 i0 H0 x)))) (\lambda (H6: (ex2 T (\lambda (t: T).(subst0 (s k i0) v t2 t)) 
7245 (\lambda (t: T).(subst0 (s k i0) v t2 t)))).(ex2_ind T (\lambda (t: 
7246 T).(subst0 (s k i0) v t2 t)) (\lambda (t: T).(subst0 (s k i0) v t2 t)) (or4 
7247 (eq T (THead k u0 t2) (THead k x t3)) (ex2 T (\lambda (t: T).(subst0 i0 v 
7248 (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x t3) t))) (subst0 
7249 i0 v (THead k u0 t2) (THead k x t3)) (subst0 i0 v (THead k x t3) (THead k u0 
7250 t2))) (\lambda (x0: T).(\lambda (_: (subst0 (s k i0) v t2 x0)).(\lambda (_: 
7251 (subst0 (s k i0) v t2 x0)).(or4_intro1 (eq T (THead k u0 t2) (THead k x t3)) 
7252 (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: 
7253 T).(subst0 i0 v (THead k x t3) t))) (subst0 i0 v (THead k u0 t2) (THead k x 
7254 t3)) (subst0 i0 v (THead k x t3) (THead k u0 t2)) (ex_intro2 T (\lambda (t: 
7255 T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x 
7256 t3) t)) (THead k x t2) (subst0_fst v x u0 i0 H5 t2 k) (subst0_snd k v t2 t3 
7257 i0 H0 x)))))) H6)) (\lambda (_: (subst0 (s k i0) v t2 t2)).(or4_intro1 (eq T 
7258 (THead k u0 t2) (THead k x t3)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7259 u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x t3) t))) (subst0 i0 v 
7260 (THead k u0 t2) (THead k x t3)) (subst0 i0 v (THead k x t3) (THead k u0 t2)) 
7261 (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: 
7262 T).(subst0 i0 v (THead k x t3) t)) (THead k x t2) (subst0_fst v x u0 i0 H5 t2 
7263 k) (subst0_snd k v t2 t3 i0 H0 x)))) (\lambda (_: (subst0 (s k i0) v t2 
7264 t2)).(or4_intro1 (eq T (THead k u0 t2) (THead k x t3)) (ex2 T (\lambda (t: 
7265 T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x 
7266 t3) t))) (subst0 i0 v (THead k u0 t2) (THead k x t3)) (subst0 i0 v (THead k x 
7267 t3) (THead k u0 t2)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u0 
7268 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x t3) t)) (THead k x t2) 
7269 (subst0_fst v x u0 i0 H5 t2 k) (subst0_snd k v t2 t3 i0 H0 x)))) (H1 t2 H0)) 
7270 t4 H4)))) H3)) (\lambda (H3: (ex2 T (\lambda (t2: T).(eq T t4 (THead k u0 
7271 t2))) (\lambda (t2: T).(subst0 (s k i0) v t3 t2)))).(ex2_ind T (\lambda (t5: 
7272 T).(eq T t4 (THead k u0 t5))) (\lambda (t5: T).(subst0 (s k i0) v t3 t5)) 
7273 (or4 (eq T (THead k u0 t2) t4) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7274 u0 t2) t)) (\lambda (t: T).(subst0 i0 v t4 t))) (subst0 i0 v (THead k u0 t2) 
7275 t4) (subst0 i0 v t4 (THead k u0 t2))) (\lambda (x: T).(\lambda (H4: (eq T t4 
7276 (THead k u0 x))).(\lambda (H5: (subst0 (s k i0) v t3 x)).(eq_ind_r T (THead k 
7277 u0 x) (\lambda (t: T).(or4 (eq T (THead k u0 t2) t) (ex2 T (\lambda (t5: 
7278 T).(subst0 i0 v (THead k u0 t2) t5)) (\lambda (t5: T).(subst0 i0 v t t5))) 
7279 (subst0 i0 v (THead k u0 t2) t) (subst0 i0 v t (THead k u0 t2)))) (or4_ind 
7280 (eq T t2 x) (ex2 T (\lambda (t: T).(subst0 (s k i0) v t2 t)) (\lambda (t: 
7281 T).(subst0 (s k i0) v x t))) (subst0 (s k i0) v t2 x) (subst0 (s k i0) v x 
7282 t2) (or4 (eq T (THead k u0 t2) (THead k u0 x)) (ex2 T (\lambda (t: T).(subst0 
7283 i0 v (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k u0 x) t))) 
7284 (subst0 i0 v (THead k u0 t2) (THead k u0 x)) (subst0 i0 v (THead k u0 x) 
7285 (THead k u0 t2))) (\lambda (H6: (eq T t2 x)).(eq_ind_r T x (\lambda (t: 
7286 T).(or4 (eq T (THead k u0 t) (THead k u0 x)) (ex2 T (\lambda (t5: T).(subst0 
7287 i0 v (THead k u0 t) t5)) (\lambda (t5: T).(subst0 i0 v (THead k u0 x) t5))) 
7288 (subst0 i0 v (THead k u0 t) (THead k u0 x)) (subst0 i0 v (THead k u0 x) 
7289 (THead k u0 t)))) (or4_intro0 (eq T (THead k u0 x) (THead k u0 x)) (ex2 T 
7290 (\lambda (t: T).(subst0 i0 v (THead k u0 x) t)) (\lambda (t: T).(subst0 i0 v 
7291 (THead k u0 x) t))) (subst0 i0 v (THead k u0 x) (THead k u0 x)) (subst0 i0 v 
7292 (THead k u0 x) (THead k u0 x)) (refl_equal T (THead k u0 x))) t2 H6)) 
7293 (\lambda (H6: (ex2 T (\lambda (t: T).(subst0 (s k i0) v t2 t)) (\lambda (t: 
7294 T).(subst0 (s k i0) v x t)))).(ex2_ind T (\lambda (t: T).(subst0 (s k i0) v 
7295 t2 t)) (\lambda (t: T).(subst0 (s k i0) v x t)) (or4 (eq T (THead k u0 t2) 
7296 (THead k u0 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u0 t2) t)) 
7297 (\lambda (t: T).(subst0 i0 v (THead k u0 x) t))) (subst0 i0 v (THead k u0 t2) 
7298 (THead k u0 x)) (subst0 i0 v (THead k u0 x) (THead k u0 t2))) (\lambda (x0: 
7299 T).(\lambda (H7: (subst0 (s k i0) v t2 x0)).(\lambda (H8: (subst0 (s k i0) v 
7300 x x0)).(or4_intro1 (eq T (THead k u0 t2) (THead k u0 x)) (ex2 T (\lambda (t: 
7301 T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k u0 
7302 x) t))) (subst0 i0 v (THead k u0 t2) (THead k u0 x)) (subst0 i0 v (THead k u0 
7303 x) (THead k u0 t2)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u0 t2) 
7304 t)) (\lambda (t: T).(subst0 i0 v (THead k u0 x) t)) (THead k u0 x0) 
7305 (subst0_snd k v x0 t2 i0 H7 u0) (subst0_snd k v x0 x i0 H8 u0)))))) H6)) 
7306 (\lambda (H6: (subst0 (s k i0) v t2 x)).(or4_intro2 (eq T (THead k u0 t2) 
7307 (THead k u0 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u0 t2) t)) 
7308 (\lambda (t: T).(subst0 i0 v (THead k u0 x) t))) (subst0 i0 v (THead k u0 t2) 
7309 (THead k u0 x)) (subst0 i0 v (THead k u0 x) (THead k u0 t2)) (subst0_snd k v 
7310 x t2 i0 H6 u0))) (\lambda (H6: (subst0 (s k i0) v x t2)).(or4_intro3 (eq T 
7311 (THead k u0 t2) (THead k u0 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7312 u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k u0 x) t))) (subst0 i0 v 
7313 (THead k u0 t2) (THead k u0 x)) (subst0 i0 v (THead k u0 x) (THead k u0 t2)) 
7314 (subst0_snd k v t2 x i0 H6 u0))) (H1 x H5)) t4 H4)))) H3)) (\lambda (H3: 
7315 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead k u2 t2)))) 
7316 (\lambda (u2: T).(\lambda (_: T).(subst0 i0 v u0 u2))) (\lambda (_: 
7317 T).(\lambda (t2: T).(subst0 (s k i0) v t3 t2))))).(ex3_2_ind T T (\lambda 
7318 (u2: T).(\lambda (t5: T).(eq T t4 (THead k u2 t5)))) (\lambda (u2: 
7319 T).(\lambda (_: T).(subst0 i0 v u0 u2))) (\lambda (_: T).(\lambda (t5: 
7320 T).(subst0 (s k i0) v t3 t5))) (or4 (eq T (THead k u0 t2) t4) (ex2 T (\lambda 
7321 (t: T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v t4 t))) 
7322 (subst0 i0 v (THead k u0 t2) t4) (subst0 i0 v t4 (THead k u0 t2))) (\lambda 
7323 (x0: T).(\lambda (x1: T).(\lambda (H4: (eq T t4 (THead k x0 x1))).(\lambda 
7324 (H5: (subst0 i0 v u0 x0)).(\lambda (H6: (subst0 (s k i0) v t3 x1)).(eq_ind_r 
7325 T (THead k x0 x1) (\lambda (t: T).(or4 (eq T (THead k u0 t2) t) (ex2 T 
7326 (\lambda (t5: T).(subst0 i0 v (THead k u0 t2) t5)) (\lambda (t5: T).(subst0 
7327 i0 v t t5))) (subst0 i0 v (THead k u0 t2) t) (subst0 i0 v t (THead k u0 
7328 t2)))) (or4_ind (eq T t2 x1) (ex2 T (\lambda (t: T).(subst0 (s k i0) v t2 t)) 
7329 (\lambda (t: T).(subst0 (s k i0) v x1 t))) (subst0 (s k i0) v t2 x1) (subst0 
7330 (s k i0) v x1 t2) (or4 (eq T (THead k u0 t2) (THead k x0 x1)) (ex2 T (\lambda 
7331 (t: T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k 
7332 x0 x1) t))) (subst0 i0 v (THead k u0 t2) (THead k x0 x1)) (subst0 i0 v (THead 
7333 k x0 x1) (THead k u0 t2))) (\lambda (H7: (eq T t2 x1)).(eq_ind_r T x1 
7334 (\lambda (t: T).(or4 (eq T (THead k u0 t) (THead k x0 x1)) (ex2 T (\lambda 
7335 (t5: T).(subst0 i0 v (THead k u0 t) t5)) (\lambda (t5: T).(subst0 i0 v (THead 
7336 k x0 x1) t5))) (subst0 i0 v (THead k u0 t) (THead k x0 x1)) (subst0 i0 v 
7337 (THead k x0 x1) (THead k u0 t)))) (or4_intro2 (eq T (THead k u0 x1) (THead k 
7338 x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u0 x1) t)) (\lambda (t: 
7339 T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k u0 x1) (THead k x0 
7340 x1)) (subst0 i0 v (THead k x0 x1) (THead k u0 x1)) (subst0_fst v x0 u0 i0 H5 
7341 x1 k)) t2 H7)) (\lambda (H7: (ex2 T (\lambda (t: T).(subst0 (s k i0) v t2 t)) 
7342 (\lambda (t: T).(subst0 (s k i0) v x1 t)))).(ex2_ind T (\lambda (t: 
7343 T).(subst0 (s k i0) v t2 t)) (\lambda (t: T).(subst0 (s k i0) v x1 t)) (or4 
7344 (eq T (THead k u0 t2) (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v 
7345 (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 
7346 i0 v (THead k u0 t2) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k 
7347 u0 t2))) (\lambda (x: T).(\lambda (H8: (subst0 (s k i0) v t2 x)).(\lambda 
7348 (H9: (subst0 (s k i0) v x1 x)).(or4_intro1 (eq T (THead k u0 t2) (THead k x0 
7349 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: 
7350 T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k u0 t2) (THead k x0 
7351 x1)) (subst0 i0 v (THead k x0 x1) (THead k u0 t2)) (ex_intro2 T (\lambda (t: 
7352 T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 
7353 x1) t)) (THead k x0 x) (subst0_both v u0 x0 i0 H5 k t2 x H8) (subst0_snd k v 
7354 x x1 i0 H9 x0)))))) H7)) (\lambda (H7: (subst0 (s k i0) v t2 x1)).(or4_intro2 
7355 (eq T (THead k u0 t2) (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v 
7356 (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 
7357 i0 v (THead k u0 t2) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k 
7358 u0 t2)) (subst0_both v u0 x0 i0 H5 k t2 x1 H7))) (\lambda (H7: (subst0 (s k 
7359 i0) v x1 t2)).(or4_intro1 (eq T (THead k u0 t2) (THead k x0 x1)) (ex2 T 
7360 (\lambda (t: T).(subst0 i0 v (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v 
7361 (THead k x0 x1) t))) (subst0 i0 v (THead k u0 t2) (THead k x0 x1)) (subst0 i0 
7362 v (THead k x0 x1) (THead k u0 t2)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v 
7363 (THead k u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t)) (THead k 
7364 x0 t2) (subst0_fst v x0 u0 i0 H5 t2 k) (subst0_snd k v t2 x1 i0 H7 x0)))) (H1 
7365 x1 H6)) t4 H4)))))) H3)) (subst0_gen_head k v u0 t3 t4 i0 H2)))))))))))) 
7366 (\lambda (v: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (i0: nat).(\lambda 
7367 (H0: (subst0 i0 v u1 u2)).(\lambda (H1: ((\forall (t2: T).((subst0 i0 v u1 
7368 t2) \to (or4 (eq T u2 t2) (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda 
7369 (t: T).(subst0 i0 v t2 t))) (subst0 i0 v u2 t2) (subst0 i0 v t2 
7370 u2)))))).(\lambda (k: K).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H2: 
7371 (subst0 (s k i0) v t2 t3)).(\lambda (H3: ((\forall (t4: T).((subst0 (s k i0) 
7372 v t2 t4) \to (or4 (eq T t3 t4) (ex2 T (\lambda (t: T).(subst0 (s k i0) v t3 
7373 t)) (\lambda (t: T).(subst0 (s k i0) v t4 t))) (subst0 (s k i0) v t3 t4) 
7374 (subst0 (s k i0) v t4 t3)))))).(\lambda (t4: T).(\lambda (H4: (subst0 i0 v 
7375 (THead k u1 t2) t4)).(or3_ind (ex2 T (\lambda (u3: T).(eq T t4 (THead k u3 
7376 t2))) (\lambda (u3: T).(subst0 i0 v u1 u3))) (ex2 T (\lambda (t5: T).(eq T t4 
7377 (THead k u1 t5))) (\lambda (t5: T).(subst0 (s k i0) v t2 t5))) (ex3_2 T T 
7378 (\lambda (u3: T).(\lambda (t5: T).(eq T t4 (THead k u3 t5)))) (\lambda (u3: 
7379 T).(\lambda (_: T).(subst0 i0 v u1 u3))) (\lambda (_: T).(\lambda (t5: 
7380 T).(subst0 (s k i0) v t2 t5)))) (or4 (eq T (THead k u2 t3) t4) (ex2 T 
7381 (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v 
7382 t4 t))) (subst0 i0 v (THead k u2 t3) t4) (subst0 i0 v t4 (THead k u2 t3))) 
7383 (\lambda (H5: (ex2 T (\lambda (u2: T).(eq T t4 (THead k u2 t2))) (\lambda 
7384 (u2: T).(subst0 i0 v u1 u2)))).(ex2_ind T (\lambda (u3: T).(eq T t4 (THead k 
7385 u3 t2))) (\lambda (u3: T).(subst0 i0 v u1 u3)) (or4 (eq T (THead k u2 t3) t4) 
7386 (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7387 T).(subst0 i0 v t4 t))) (subst0 i0 v (THead k u2 t3) t4) (subst0 i0 v t4 
7388 (THead k u2 t3))) (\lambda (x: T).(\lambda (H6: (eq T t4 (THead k x 
7389 t2))).(\lambda (H7: (subst0 i0 v u1 x)).(eq_ind_r T (THead k x t2) (\lambda 
7390 (t: T).(or4 (eq T (THead k u2 t3) t) (ex2 T (\lambda (t5: T).(subst0 i0 v 
7391 (THead k u2 t3) t5)) (\lambda (t5: T).(subst0 i0 v t t5))) (subst0 i0 v 
7392 (THead k u2 t3) t) (subst0 i0 v t (THead k u2 t3)))) (or4_ind (eq T t3 t3) 
7393 (ex2 T (\lambda (t: T).(subst0 (s k i0) v t3 t)) (\lambda (t: T).(subst0 (s k 
7394 i0) v t3 t))) (subst0 (s k i0) v t3 t3) (subst0 (s k i0) v t3 t3) (or4 (eq T 
7395 (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7396 u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v 
7397 (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3))) 
7398 (\lambda (_: (eq T t3 t3)).(or4_ind (eq T u2 x) (ex2 T (\lambda (t: 
7399 T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v x t))) (subst0 i0 v u2 x) 
7400 (subst0 i0 v x u2) (or4 (eq T (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda 
7401 (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k 
7402 x t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k 
7403 x t2) (THead k u2 t3))) (\lambda (H9: (eq T u2 x)).(eq_ind_r T x (\lambda (t: 
7404 T).(or4 (eq T (THead k t t3) (THead k x t2)) (ex2 T (\lambda (t5: T).(subst0 
7405 i0 v (THead k t t3) t5)) (\lambda (t5: T).(subst0 i0 v (THead k x t2) t5))) 
7406 (subst0 i0 v (THead k t t3) (THead k x t2)) (subst0 i0 v (THead k x t2) 
7407 (THead k t t3)))) (or4_intro3 (eq T (THead k x t3) (THead k x t2)) (ex2 T 
7408 (\lambda (t: T).(subst0 i0 v (THead k x t3) t)) (\lambda (t: T).(subst0 i0 v 
7409 (THead k x t2) t))) (subst0 i0 v (THead k x t3) (THead k x t2)) (subst0 i0 v 
7410 (THead k x t2) (THead k x t3)) (subst0_snd k v t3 t2 i0 H2 x)) u2 H9)) 
7411 (\lambda (H9: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: 
7412 T).(subst0 i0 v x t)))).(ex2_ind T (\lambda (t: T).(subst0 i0 v u2 t)) 
7413 (\lambda (t: T).(subst0 i0 v x t)) (or4 (eq T (THead k u2 t3) (THead k x t2)) 
7414 (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7415 T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x 
7416 t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3))) (\lambda (x0: T).(\lambda 
7417 (H10: (subst0 i0 v u2 x0)).(\lambda (H11: (subst0 i0 v x x0)).(or4_intro1 (eq 
7418 T (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead 
7419 k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v 
7420 (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3)) 
7421 (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7422 T).(subst0 i0 v (THead k x t2) t)) (THead k x0 t3) (subst0_fst v x0 u2 i0 H10 
7423 t3 k) (subst0_both v x x0 i0 H11 k t2 t3 H2)))))) H9)) (\lambda (H9: (subst0 
7424 i0 v u2 x)).(or4_intro1 (eq T (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda 
7425 (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k 
7426 x t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k 
7427 x t2) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u2 
7428 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x t2) t)) (THead k x t3) 
7429 (subst0_fst v x u2 i0 H9 t3 k) (subst0_snd k v t3 t2 i0 H2 x)))) (\lambda 
7430 (H9: (subst0 i0 v x u2)).(or4_intro3 (eq T (THead k u2 t3) (THead k x t2)) 
7431 (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7432 T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x 
7433 t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3)) (subst0_both v x u2 i0 H9 k 
7434 t2 t3 H2))) (H1 x H7))) (\lambda (H8: (ex2 T (\lambda (t: T).(subst0 (s k i0) 
7435 v t3 t)) (\lambda (t: T).(subst0 (s k i0) v t3 t)))).(ex2_ind T (\lambda (t: 
7436 T).(subst0 (s k i0) v t3 t)) (\lambda (t: T).(subst0 (s k i0) v t3 t)) (or4 
7437 (eq T (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v 
7438 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 
7439 i0 v (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k u2 
7440 t3))) (\lambda (x0: T).(\lambda (_: (subst0 (s k i0) v t3 x0)).(\lambda (_: 
7441 (subst0 (s k i0) v t3 x0)).(or4_ind (eq T u2 x) (ex2 T (\lambda (t: 
7442 T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v x t))) (subst0 i0 v u2 x) 
7443 (subst0 i0 v x u2) (or4 (eq T (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda 
7444 (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k 
7445 x t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k 
7446 x t2) (THead k u2 t3))) (\lambda (H11: (eq T u2 x)).(eq_ind_r T x (\lambda 
7447 (t: T).(or4 (eq T (THead k t t3) (THead k x t2)) (ex2 T (\lambda (t5: 
7448 T).(subst0 i0 v (THead k t t3) t5)) (\lambda (t5: T).(subst0 i0 v (THead k x 
7449 t2) t5))) (subst0 i0 v (THead k t t3) (THead k x t2)) (subst0 i0 v (THead k x 
7450 t2) (THead k t t3)))) (or4_intro3 (eq T (THead k x t3) (THead k x t2)) (ex2 T 
7451 (\lambda (t: T).(subst0 i0 v (THead k x t3) t)) (\lambda (t: T).(subst0 i0 v 
7452 (THead k x t2) t))) (subst0 i0 v (THead k x t3) (THead k x t2)) (subst0 i0 v 
7453 (THead k x t2) (THead k x t3)) (subst0_snd k v t3 t2 i0 H2 x)) u2 H11)) 
7454 (\lambda (H11: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: 
7455 T).(subst0 i0 v x t)))).(ex2_ind T (\lambda (t: T).(subst0 i0 v u2 t)) 
7456 (\lambda (t: T).(subst0 i0 v x t)) (or4 (eq T (THead k u2 t3) (THead k x t2)) 
7457 (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7458 T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x 
7459 t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3))) (\lambda (x1: T).(\lambda 
7460 (H12: (subst0 i0 v u2 x1)).(\lambda (H13: (subst0 i0 v x x1)).(or4_intro1 (eq 
7461 T (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead 
7462 k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v 
7463 (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3)) 
7464 (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7465 T).(subst0 i0 v (THead k x t2) t)) (THead k x1 t3) (subst0_fst v x1 u2 i0 H12 
7466 t3 k) (subst0_both v x x1 i0 H13 k t2 t3 H2)))))) H11)) (\lambda (H11: 
7467 (subst0 i0 v u2 x)).(or4_intro1 (eq T (THead k u2 t3) (THead k x t2)) (ex2 T 
7468 (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v 
7469 (THead k x t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x t2)) (subst0 i0 v 
7470 (THead k x t2) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v 
7471 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x t2) t)) (THead k 
7472 x t3) (subst0_fst v x u2 i0 H11 t3 k) (subst0_snd k v t3 t2 i0 H2 x)))) 
7473 (\lambda (H11: (subst0 i0 v x u2)).(or4_intro3 (eq T (THead k u2 t3) (THead k 
7474 x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7475 T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x 
7476 t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3)) (subst0_both v x u2 i0 H11 
7477 k t2 t3 H2))) (H1 x H7))))) H8)) (\lambda (_: (subst0 (s k i0) v t3 
7478 t3)).(or4_ind (eq T u2 x) (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda 
7479 (t: T).(subst0 i0 v x t))) (subst0 i0 v u2 x) (subst0 i0 v x u2) (or4 (eq T 
7480 (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7481 u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v 
7482 (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3))) 
7483 (\lambda (H9: (eq T u2 x)).(eq_ind_r T x (\lambda (t: T).(or4 (eq T (THead k 
7484 t t3) (THead k x t2)) (ex2 T (\lambda (t5: T).(subst0 i0 v (THead k t t3) 
7485 t5)) (\lambda (t5: T).(subst0 i0 v (THead k x t2) t5))) (subst0 i0 v (THead k 
7486 t t3) (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k t t3)))) 
7487 (or4_intro3 (eq T (THead k x t3) (THead k x t2)) (ex2 T (\lambda (t: 
7488 T).(subst0 i0 v (THead k x t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x 
7489 t2) t))) (subst0 i0 v (THead k x t3) (THead k x t2)) (subst0 i0 v (THead k x 
7490 t2) (THead k x t3)) (subst0_snd k v t3 t2 i0 H2 x)) u2 H9)) (\lambda (H9: 
7491 (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v x 
7492 t)))).(ex2_ind T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 
7493 i0 v x t)) (or4 (eq T (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda (t: 
7494 T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x 
7495 t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k x 
7496 t2) (THead k u2 t3))) (\lambda (x0: T).(\lambda (H10: (subst0 i0 v u2 
7497 x0)).(\lambda (H11: (subst0 i0 v x x0)).(or4_intro1 (eq T (THead k u2 t3) 
7498 (THead k x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7499 (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v (THead k u2 t3) 
7500 (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3)) (ex_intro2 T 
7501 (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v 
7502 (THead k x t2) t)) (THead k x0 t3) (subst0_fst v x0 u2 i0 H10 t3 k) 
7503 (subst0_both v x x0 i0 H11 k t2 t3 H2)))))) H9)) (\lambda (H9: (subst0 i0 v 
7504 u2 x)).(or4_intro1 (eq T (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda (t: 
7505 T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x 
7506 t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k x 
7507 t2) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u2 
7508 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x t2) t)) (THead k x t3) 
7509 (subst0_fst v x u2 i0 H9 t3 k) (subst0_snd k v t3 t2 i0 H2 x)))) (\lambda 
7510 (H9: (subst0 i0 v x u2)).(or4_intro3 (eq T (THead k u2 t3) (THead k x t2)) 
7511 (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7512 T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x 
7513 t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3)) (subst0_both v x u2 i0 H9 k 
7514 t2 t3 H2))) (H1 x H7))) (\lambda (_: (subst0 (s k i0) v t3 t3)).(or4_ind (eq 
7515 T u2 x) (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 
7516 v x t))) (subst0 i0 v u2 x) (subst0 i0 v x u2) (or4 (eq T (THead k u2 t3) 
7517 (THead k x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7518 (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v (THead k u2 t3) 
7519 (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3))) (\lambda (H9: 
7520 (eq T u2 x)).(eq_ind_r T x (\lambda (t: T).(or4 (eq T (THead k t t3) (THead k 
7521 x t2)) (ex2 T (\lambda (t5: T).(subst0 i0 v (THead k t t3) t5)) (\lambda (t5: 
7522 T).(subst0 i0 v (THead k x t2) t5))) (subst0 i0 v (THead k t t3) (THead k x 
7523 t2)) (subst0 i0 v (THead k x t2) (THead k t t3)))) (or4_intro3 (eq T (THead k 
7524 x t3) (THead k x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k x t3) t)) 
7525 (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v (THead k x t3) 
7526 (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k x t3)) (subst0_snd k v 
7527 t3 t2 i0 H2 x)) u2 H9)) (\lambda (H9: (ex2 T (\lambda (t: T).(subst0 i0 v u2 
7528 t)) (\lambda (t: T).(subst0 i0 v x t)))).(ex2_ind T (\lambda (t: T).(subst0 
7529 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v x t)) (or4 (eq T (THead k u2 t3) 
7530 (THead k x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7531 (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v (THead k u2 t3) 
7532 (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3))) (\lambda (x0: 
7533 T).(\lambda (H10: (subst0 i0 v u2 x0)).(\lambda (H11: (subst0 i0 v x 
7534 x0)).(or4_intro1 (eq T (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda (t: 
7535 T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x 
7536 t2) t))) (subst0 i0 v (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k x 
7537 t2) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u2 
7538 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x t2) t)) (THead k x0 t3) 
7539 (subst0_fst v x0 u2 i0 H10 t3 k) (subst0_both v x x0 i0 H11 k t2 t3 H2)))))) 
7540 H9)) (\lambda (H9: (subst0 i0 v u2 x)).(or4_intro1 (eq T (THead k u2 t3) 
7541 (THead k x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7542 (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v (THead k u2 t3) 
7543 (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3)) (ex_intro2 T 
7544 (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v 
7545 (THead k x t2) t)) (THead k x t3) (subst0_fst v x u2 i0 H9 t3 k) (subst0_snd 
7546 k v t3 t2 i0 H2 x)))) (\lambda (H9: (subst0 i0 v x u2)).(or4_intro3 (eq T 
7547 (THead k u2 t3) (THead k x t2)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7548 u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v 
7549 (THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3)) 
7550 (subst0_both v x u2 i0 H9 k t2 t3 H2))) (H1 x H7))) (H3 t3 H2)) t4 H6)))) 
7551 H5)) (\lambda (H5: (ex2 T (\lambda (t2: T).(eq T t4 (THead k u1 t2))) 
7552 (\lambda (t3: T).(subst0 (s k i0) v t2 t3)))).(ex2_ind T (\lambda (t5: T).(eq 
7553 T t4 (THead k u1 t5))) (\lambda (t5: T).(subst0 (s k i0) v t2 t5)) (or4 (eq T 
7554 (THead k u2 t3) t4) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7555 (\lambda (t: T).(subst0 i0 v t4 t))) (subst0 i0 v (THead k u2 t3) t4) (subst0 
7556 i0 v t4 (THead k u2 t3))) (\lambda (x: T).(\lambda (H6: (eq T t4 (THead k u1 
7557 x))).(\lambda (H7: (subst0 (s k i0) v t2 x)).(eq_ind_r T (THead k u1 x) 
7558 (\lambda (t: T).(or4 (eq T (THead k u2 t3) t) (ex2 T (\lambda (t5: T).(subst0 
7559 i0 v (THead k u2 t3) t5)) (\lambda (t5: T).(subst0 i0 v t t5))) (subst0 i0 v 
7560 (THead k u2 t3) t) (subst0 i0 v t (THead k u2 t3)))) (or4_ind (eq T t3 x) 
7561 (ex2 T (\lambda (t: T).(subst0 (s k i0) v t3 t)) (\lambda (t: T).(subst0 (s k 
7562 i0) v x t))) (subst0 (s k i0) v t3 x) (subst0 (s k i0) v x t3) (or4 (eq T 
7563 (THead k u2 t3) (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7564 u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v 
7565 (THead k u2 t3) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t3))) 
7566 (\lambda (H8: (eq T t3 x)).(eq_ind_r T x (\lambda (t: T).(or4 (eq T (THead k 
7567 u2 t) (THead k u1 x)) (ex2 T (\lambda (t5: T).(subst0 i0 v (THead k u2 t) 
7568 t5)) (\lambda (t5: T).(subst0 i0 v (THead k u1 x) t5))) (subst0 i0 v (THead k 
7569 u2 t) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t)))) (or4_ind 
7570 (eq T u2 u2) (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: 
7571 T).(subst0 i0 v u2 t))) (subst0 i0 v u2 u2) (subst0 i0 v u2 u2) (or4 (eq T 
7572 (THead k u2 x) (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7573 u2 x) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v 
7574 (THead k u2 x) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 x))) 
7575 (\lambda (_: (eq T u2 u2)).(or4_intro3 (eq T (THead k u2 x) (THead k u1 x)) 
7576 (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 x) t)) (\lambda (t: 
7577 T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v (THead k u2 x) (THead k u1 
7578 x)) (subst0 i0 v (THead k u1 x) (THead k u2 x)) (subst0_fst v u2 u1 i0 H0 x 
7579 k))) (\lambda (H9: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: 
7580 T).(subst0 i0 v u2 t)))).(ex2_ind T (\lambda (t: T).(subst0 i0 v u2 t)) 
7581 (\lambda (t: T).(subst0 i0 v u2 t)) (or4 (eq T (THead k u2 x) (THead k u1 x)) 
7582 (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 x) t)) (\lambda (t: 
7583 T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v (THead k u2 x) (THead k u1 
7584 x)) (subst0 i0 v (THead k u1 x) (THead k u2 x))) (\lambda (x0: T).(\lambda 
7585 (_: (subst0 i0 v u2 x0)).(\lambda (_: (subst0 i0 v u2 x0)).(or4_intro3 (eq T 
7586 (THead k u2 x) (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7587 u2 x) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v 
7588 (THead k u2 x) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 x)) 
7589 (subst0_fst v u2 u1 i0 H0 x k))))) H9)) (\lambda (_: (subst0 i0 v u2 
7590 u2)).(or4_intro3 (eq T (THead k u2 x) (THead k u1 x)) (ex2 T (\lambda (t: 
7591 T).(subst0 i0 v (THead k u2 x) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 
7592 x) t))) (subst0 i0 v (THead k u2 x) (THead k u1 x)) (subst0 i0 v (THead k u1 
7593 x) (THead k u2 x)) (subst0_fst v u2 u1 i0 H0 x k))) (\lambda (_: (subst0 i0 v 
7594 u2 u2)).(or4_intro3 (eq T (THead k u2 x) (THead k u1 x)) (ex2 T (\lambda (t: 
7595 T).(subst0 i0 v (THead k u2 x) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 
7596 x) t))) (subst0 i0 v (THead k u2 x) (THead k u1 x)) (subst0 i0 v (THead k u1 
7597 x) (THead k u2 x)) (subst0_fst v u2 u1 i0 H0 x k))) (H1 u2 H0)) t3 H8)) 
7598 (\lambda (H8: (ex2 T (\lambda (t: T).(subst0 (s k i0) v t3 t)) (\lambda (t: 
7599 T).(subst0 (s k i0) v x t)))).(ex2_ind T (\lambda (t: T).(subst0 (s k i0) v 
7600 t3 t)) (\lambda (t: T).(subst0 (s k i0) v x t)) (or4 (eq T (THead k u2 t3) 
7601 (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7602 (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v (THead k u2 t3) 
7603 (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t3))) (\lambda (x0: 
7604 T).(\lambda (H9: (subst0 (s k i0) v t3 x0)).(\lambda (H10: (subst0 (s k i0) v 
7605 x x0)).(or4_ind (eq T u2 u2) (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) 
7606 (\lambda (t: T).(subst0 i0 v u2 t))) (subst0 i0 v u2 u2) (subst0 i0 v u2 u2) 
7607 (or4 (eq T (THead k u2 t3) (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 
7608 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) 
7609 (subst0 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v (THead k u1 x) 
7610 (THead k u2 t3))) (\lambda (_: (eq T u2 u2)).(or4_intro1 (eq T (THead k u2 
7611 t3) (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7612 (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v (THead k u2 t3) 
7613 (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t3)) (ex_intro2 T 
7614 (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v 
7615 (THead k u1 x) t)) (THead k u2 x0) (subst0_snd k v x0 t3 i0 H9 u2) 
7616 (subst0_both v u1 u2 i0 H0 k x x0 H10)))) (\lambda (H11: (ex2 T (\lambda (t: 
7617 T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v u2 t)))).(ex2_ind T 
7618 (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v u2 t)) (or4 
7619 (eq T (THead k u2 t3) (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v 
7620 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) (subst0 
7621 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 
7622 t3))) (\lambda (x1: T).(\lambda (_: (subst0 i0 v u2 x1)).(\lambda (_: (subst0 
7623 i0 v u2 x1)).(or4_intro1 (eq T (THead k u2 t3) (THead k u1 x)) (ex2 T 
7624 (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v 
7625 (THead k u1 x) t))) (subst0 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v 
7626 (THead k u1 x) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v 
7627 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t)) (THead k 
7628 u2 x0) (subst0_snd k v x0 t3 i0 H9 u2) (subst0_both v u1 u2 i0 H0 k x x0 
7629 H10)))))) H11)) (\lambda (_: (subst0 i0 v u2 u2)).(or4_intro1 (eq T (THead k 
7630 u2 t3) (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) 
7631 t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v (THead k u2 
7632 t3) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t3)) (ex_intro2 T 
7633 (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v 
7634 (THead k u1 x) t)) (THead k u2 x0) (subst0_snd k v x0 t3 i0 H9 u2) 
7635 (subst0_both v u1 u2 i0 H0 k x x0 H10)))) (\lambda (_: (subst0 i0 v u2 
7636 u2)).(or4_intro1 (eq T (THead k u2 t3) (THead k u1 x)) (ex2 T (\lambda (t: 
7637 T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 
7638 x) t))) (subst0 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v (THead k u1 
7639 x) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) 
7640 t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t)) (THead k u2 x0) 
7641 (subst0_snd k v x0 t3 i0 H9 u2) (subst0_both v u1 u2 i0 H0 k x x0 H10)))) (H1 
7642 u2 H0))))) H8)) (\lambda (H8: (subst0 (s k i0) v t3 x)).(or4_ind (eq T u2 u2) 
7643 (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v u2 
7644 t))) (subst0 i0 v u2 u2) (subst0 i0 v u2 u2) (or4 (eq T (THead k u2 t3) 
7645 (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7646 (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v (THead k u2 t3) 
7647 (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t3))) (\lambda (_: 
7648 (eq T u2 u2)).(or4_intro1 (eq T (THead k u2 t3) (THead k u1 x)) (ex2 T 
7649 (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v 
7650 (THead k u1 x) t))) (subst0 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v 
7651 (THead k u1 x) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v 
7652 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t)) (THead k 
7653 u2 x) (subst0_snd k v x t3 i0 H8 u2) (subst0_fst v u2 u1 i0 H0 x k)))) 
7654 (\lambda (H9: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: 
7655 T).(subst0 i0 v u2 t)))).(ex2_ind T (\lambda (t: T).(subst0 i0 v u2 t)) 
7656 (\lambda (t: T).(subst0 i0 v u2 t)) (or4 (eq T (THead k u2 t3) (THead k u1 
7657 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7658 T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v (THead k u2 t3) (THead k u1 
7659 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t3))) (\lambda (x0: T).(\lambda 
7660 (_: (subst0 i0 v u2 x0)).(\lambda (_: (subst0 i0 v u2 x0)).(or4_intro1 (eq T 
7661 (THead k u2 t3) (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7662 u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v 
7663 (THead k u2 t3) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t3)) 
7664 (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7665 T).(subst0 i0 v (THead k u1 x) t)) (THead k u2 x) (subst0_snd k v x t3 i0 H8 
7666 u2) (subst0_fst v u2 u1 i0 H0 x k)))))) H9)) (\lambda (_: (subst0 i0 v u2 
7667 u2)).(or4_intro1 (eq T (THead k u2 t3) (THead k u1 x)) (ex2 T (\lambda (t: 
7668 T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 
7669 x) t))) (subst0 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v (THead k u1 
7670 x) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) 
7671 t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t)) (THead k u2 x) 
7672 (subst0_snd k v x t3 i0 H8 u2) (subst0_fst v u2 u1 i0 H0 x k)))) (\lambda (_: 
7673 (subst0 i0 v u2 u2)).(or4_intro1 (eq T (THead k u2 t3) (THead k u1 x)) (ex2 T 
7674 (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v 
7675 (THead k u1 x) t))) (subst0 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v 
7676 (THead k u1 x) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v 
7677 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t)) (THead k 
7678 u2 x) (subst0_snd k v x t3 i0 H8 u2) (subst0_fst v u2 u1 i0 H0 x k)))) (H1 u2 
7679 H0))) (\lambda (H8: (subst0 (s k i0) v x t3)).(or4_ind (eq T u2 u2) (ex2 T 
7680 (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v u2 t))) 
7681 (subst0 i0 v u2 u2) (subst0 i0 v u2 u2) (or4 (eq T (THead k u2 t3) (THead k 
7682 u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7683 T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v (THead k u2 t3) (THead k u1 
7684 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t3))) (\lambda (_: (eq T u2 
7685 u2)).(or4_intro3 (eq T (THead k u2 t3) (THead k u1 x)) (ex2 T (\lambda (t: 
7686 T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 
7687 x) t))) (subst0 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v (THead k u1 
7688 x) (THead k u2 t3)) (subst0_both v u1 u2 i0 H0 k x t3 H8))) (\lambda (H9: 
7689 (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v u2 
7690 t)))).(ex2_ind T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 
7691 i0 v u2 t)) (or4 (eq T (THead k u2 t3) (THead k u1 x)) (ex2 T (\lambda (t: 
7692 T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 
7693 x) t))) (subst0 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v (THead k u1 
7694 x) (THead k u2 t3))) (\lambda (x0: T).(\lambda (_: (subst0 i0 v u2 
7695 x0)).(\lambda (_: (subst0 i0 v u2 x0)).(or4_intro3 (eq T (THead k u2 t3) 
7696 (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7697 (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) (subst0 i0 v (THead k u2 t3) 
7698 (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t3)) (subst0_both v 
7699 u1 u2 i0 H0 k x t3 H8))))) H9)) (\lambda (_: (subst0 i0 v u2 u2)).(or4_intro3 
7700 (eq T (THead k u2 t3) (THead k u1 x)) (ex2 T (\lambda (t: T).(subst0 i0 v 
7701 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 x) t))) (subst0 
7702 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 
7703 t3)) (subst0_both v u1 u2 i0 H0 k x t3 H8))) (\lambda (_: (subst0 i0 v u2 
7704 u2)).(or4_intro3 (eq T (THead k u2 t3) (THead k u1 x)) (ex2 T (\lambda (t: 
7705 T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1 
7706 x) t))) (subst0 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v (THead k u1 
7707 x) (THead k u2 t3)) (subst0_both v u1 u2 i0 H0 k x t3 H8))) (H1 u2 H0))) (H3 
7708 x H7)) t4 H6)))) H5)) (\lambda (H5: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
7709 T).(eq T t4 (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i0 v 
7710 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i0) v t2 
7711 t3))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t5: T).(eq T t4 (THead k u3 
7712 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v u1 u3))) (\lambda (_: 
7713 T).(\lambda (t5: T).(subst0 (s k i0) v t2 t5))) (or4 (eq T (THead k u2 t3) 
7714 t4) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7715 T).(subst0 i0 v t4 t))) (subst0 i0 v (THead k u2 t3) t4) (subst0 i0 v t4 
7716 (THead k u2 t3))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H6: (eq T t4 
7717 (THead k x0 x1))).(\lambda (H7: (subst0 i0 v u1 x0)).(\lambda (H8: (subst0 (s 
7718 k i0) v t2 x1)).(eq_ind_r T (THead k x0 x1) (\lambda (t: T).(or4 (eq T (THead 
7719 k u2 t3) t) (ex2 T (\lambda (t5: T).(subst0 i0 v (THead k u2 t3) t5)) 
7720 (\lambda (t5: T).(subst0 i0 v t t5))) (subst0 i0 v (THead k u2 t3) t) (subst0 
7721 i0 v t (THead k u2 t3)))) (or4_ind (eq T t3 x1) (ex2 T (\lambda (t: 
7722 T).(subst0 (s k i0) v t3 t)) (\lambda (t: T).(subst0 (s k i0) v x1 t))) 
7723 (subst0 (s k i0) v t3 x1) (subst0 (s k i0) v x1 t3) (or4 (eq T (THead k u2 
7724 t3) (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7725 (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k u2 
7726 t3) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t3))) (\lambda 
7727 (H9: (eq T t3 x1)).(eq_ind_r T x1 (\lambda (t: T).(or4 (eq T (THead k u2 t) 
7728 (THead k x0 x1)) (ex2 T (\lambda (t5: T).(subst0 i0 v (THead k u2 t) t5)) 
7729 (\lambda (t5: T).(subst0 i0 v (THead k x0 x1) t5))) (subst0 i0 v (THead k u2 
7730 t) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t)))) (or4_ind 
7731 (eq T u2 x0) (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: 
7732 T).(subst0 i0 v x0 t))) (subst0 i0 v u2 x0) (subst0 i0 v x0 u2) (or4 (eq T 
7733 (THead k u2 x1) (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k 
7734 u2 x1) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v 
7735 (THead k u2 x1) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 
7736 x1))) (\lambda (H10: (eq T u2 x0)).(eq_ind_r T x0 (\lambda (t: T).(or4 (eq T 
7737 (THead k t x1) (THead k x0 x1)) (ex2 T (\lambda (t5: T).(subst0 i0 v (THead k 
7738 t x1) t5)) (\lambda (t5: T).(subst0 i0 v (THead k x0 x1) t5))) (subst0 i0 v 
7739 (THead k t x1) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k t 
7740 x1)))) (or4_intro0 (eq T (THead k x0 x1) (THead k x0 x1)) (ex2 T (\lambda (t: 
7741 T).(subst0 i0 v (THead k x0 x1) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 
7742 x1) t))) (subst0 i0 v (THead k x0 x1) (THead k x0 x1)) (subst0 i0 v (THead k 
7743 x0 x1) (THead k x0 x1)) (refl_equal T (THead k x0 x1))) u2 H10)) (\lambda 
7744 (H10: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v 
7745 x0 t)))).(ex2_ind T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: 
7746 T).(subst0 i0 v x0 t)) (or4 (eq T (THead k u2 x1) (THead k x0 x1)) (ex2 T 
7747 (\lambda (t: T).(subst0 i0 v (THead k u2 x1) t)) (\lambda (t: T).(subst0 i0 v 
7748 (THead k x0 x1) t))) (subst0 i0 v (THead k u2 x1) (THead k x0 x1)) (subst0 i0 
7749 v (THead k x0 x1) (THead k u2 x1))) (\lambda (x: T).(\lambda (H11: (subst0 i0 
7750 v u2 x)).(\lambda (H12: (subst0 i0 v x0 x)).(or4_intro1 (eq T (THead k u2 x1) 
7751 (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 x1) t)) 
7752 (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k u2 
7753 x1) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 x1)) (ex_intro2 
7754 T (\lambda (t: T).(subst0 i0 v (THead k u2 x1) t)) (\lambda (t: T).(subst0 i0 
7755 v (THead k x0 x1) t)) (THead k x x1) (subst0_fst v x u2 i0 H11 x1 k) 
7756 (subst0_fst v x x0 i0 H12 x1 k)))))) H10)) (\lambda (H10: (subst0 i0 v u2 
7757 x0)).(or4_intro2 (eq T (THead k u2 x1) (THead k x0 x1)) (ex2 T (\lambda (t: 
7758 T).(subst0 i0 v (THead k u2 x1) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 
7759 x1) t))) (subst0 i0 v (THead k u2 x1) (THead k x0 x1)) (subst0 i0 v (THead k 
7760 x0 x1) (THead k u2 x1)) (subst0_fst v x0 u2 i0 H10 x1 k))) (\lambda (H10: 
7761 (subst0 i0 v x0 u2)).(or4_intro3 (eq T (THead k u2 x1) (THead k x0 x1)) (ex2 
7762 T (\lambda (t: T).(subst0 i0 v (THead k u2 x1) t)) (\lambda (t: T).(subst0 i0 
7763 v (THead k x0 x1) t))) (subst0 i0 v (THead k u2 x1) (THead k x0 x1)) (subst0 
7764 i0 v (THead k x0 x1) (THead k u2 x1)) (subst0_fst v u2 x0 i0 H10 x1 k))) (H1 
7765 x0 H7)) t3 H9)) (\lambda (H9: (ex2 T (\lambda (t: T).(subst0 (s k i0) v t3 
7766 t)) (\lambda (t: T).(subst0 (s k i0) v x1 t)))).(ex2_ind T (\lambda (t: 
7767 T).(subst0 (s k i0) v t3 t)) (\lambda (t: T).(subst0 (s k i0) v x1 t)) (or4 
7768 (eq T (THead k u2 t3) (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v 
7769 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 
7770 i0 v (THead k u2 t3) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k 
7771 u2 t3))) (\lambda (x: T).(\lambda (H10: (subst0 (s k i0) v t3 x)).(\lambda 
7772 (H11: (subst0 (s k i0) v x1 x)).(or4_ind (eq T u2 x0) (ex2 T (\lambda (t: 
7773 T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v x0 t))) (subst0 i0 v u2 
7774 x0) (subst0 i0 v x0 u2) (or4 (eq T (THead k u2 t3) (THead k x0 x1)) (ex2 T 
7775 (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v 
7776 (THead k x0 x1) t))) (subst0 i0 v (THead k u2 t3) (THead k x0 x1)) (subst0 i0 
7777 v (THead k x0 x1) (THead k u2 t3))) (\lambda (H12: (eq T u2 x0)).(eq_ind_r T 
7778 x0 (\lambda (t: T).(or4 (eq T (THead k t t3) (THead k x0 x1)) (ex2 T (\lambda 
7779 (t5: T).(subst0 i0 v (THead k t t3) t5)) (\lambda (t5: T).(subst0 i0 v (THead 
7780 k x0 x1) t5))) (subst0 i0 v (THead k t t3) (THead k x0 x1)) (subst0 i0 v 
7781 (THead k x0 x1) (THead k t t3)))) (or4_intro1 (eq T (THead k x0 t3) (THead k 
7782 x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k x0 t3) t)) (\lambda (t: 
7783 T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k x0 t3) (THead k x0 
7784 x1)) (subst0 i0 v (THead k x0 x1) (THead k x0 t3)) (ex_intro2 T (\lambda (t: 
7785 T).(subst0 i0 v (THead k x0 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 
7786 x1) t)) (THead k x0 x) (subst0_snd k v x t3 i0 H10 x0) (subst0_snd k v x x1 
7787 i0 H11 x0))) u2 H12)) (\lambda (H12: (ex2 T (\lambda (t: T).(subst0 i0 v u2 
7788 t)) (\lambda (t: T).(subst0 i0 v x0 t)))).(ex2_ind T (\lambda (t: T).(subst0 
7789 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v x0 t)) (or4 (eq T (THead k u2 t3) 
7790 (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7791 (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k u2 
7792 t3) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t3))) (\lambda 
7793 (x2: T).(\lambda (H13: (subst0 i0 v u2 x2)).(\lambda (H14: (subst0 i0 v x0 
7794 x2)).(or4_intro1 (eq T (THead k u2 t3) (THead k x0 x1)) (ex2 T (\lambda (t: 
7795 T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 
7796 x1) t))) (subst0 i0 v (THead k u2 t3) (THead k x0 x1)) (subst0 i0 v (THead k 
7797 x0 x1) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u2 
7798 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t)) (THead k x2 x) 
7799 (subst0_both v u2 x2 i0 H13 k t3 x H10) (subst0_both v x0 x2 i0 H14 k x1 x 
7800 H11)))))) H12)) (\lambda (H12: (subst0 i0 v u2 x0)).(or4_intro1 (eq T (THead 
7801 k u2 t3) (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) 
7802 t)) (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k 
7803 u2 t3) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t3)) 
7804 (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7805 T).(subst0 i0 v (THead k x0 x1) t)) (THead k x0 x) (subst0_both v u2 x0 i0 
7806 H12 k t3 x H10) (subst0_snd k v x x1 i0 H11 x0)))) (\lambda (H12: (subst0 i0 
7807 v x0 u2)).(or4_intro1 (eq T (THead k u2 t3) (THead k x0 x1)) (ex2 T (\lambda 
7808 (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k 
7809 x0 x1) t))) (subst0 i0 v (THead k u2 t3) (THead k x0 x1)) (subst0 i0 v (THead 
7810 k x0 x1) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k 
7811 u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t)) (THead k u2 x) 
7812 (subst0_snd k v x t3 i0 H10 u2) (subst0_both v x0 u2 i0 H12 k x1 x H11)))) 
7813 (H1 x0 H7))))) H9)) (\lambda (H9: (subst0 (s k i0) v t3 x1)).(or4_ind (eq T 
7814 u2 x0) (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 
7815 v x0 t))) (subst0 i0 v u2 x0) (subst0 i0 v x0 u2) (or4 (eq T (THead k u2 t3) 
7816 (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7817 (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k u2 
7818 t3) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t3))) (\lambda 
7819 (H10: (eq T u2 x0)).(eq_ind_r T x0 (\lambda (t: T).(or4 (eq T (THead k t t3) 
7820 (THead k x0 x1)) (ex2 T (\lambda (t5: T).(subst0 i0 v (THead k t t3) t5)) 
7821 (\lambda (t5: T).(subst0 i0 v (THead k x0 x1) t5))) (subst0 i0 v (THead k t 
7822 t3) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k t t3)))) 
7823 (or4_intro2 (eq T (THead k x0 t3) (THead k x0 x1)) (ex2 T (\lambda (t: 
7824 T).(subst0 i0 v (THead k x0 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 
7825 x1) t))) (subst0 i0 v (THead k x0 t3) (THead k x0 x1)) (subst0 i0 v (THead k 
7826 x0 x1) (THead k x0 t3)) (subst0_snd k v x1 t3 i0 H9 x0)) u2 H10)) (\lambda 
7827 (H10: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: T).(subst0 i0 v 
7828 x0 t)))).(ex2_ind T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: 
7829 T).(subst0 i0 v x0 t)) (or4 (eq T (THead k u2 t3) (THead k x0 x1)) (ex2 T 
7830 (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v 
7831 (THead k x0 x1) t))) (subst0 i0 v (THead k u2 t3) (THead k x0 x1)) (subst0 i0 
7832 v (THead k x0 x1) (THead k u2 t3))) (\lambda (x: T).(\lambda (H11: (subst0 i0 
7833 v u2 x)).(\lambda (H12: (subst0 i0 v x0 x)).(or4_intro1 (eq T (THead k u2 t3) 
7834 (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) 
7835 (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k u2 
7836 t3) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t3)) (ex_intro2 
7837 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 
7838 v (THead k x0 x1) t)) (THead k x x1) (subst0_both v u2 x i0 H11 k t3 x1 H9) 
7839 (subst0_fst v x x0 i0 H12 x1 k)))))) H10)) (\lambda (H10: (subst0 i0 v u2 
7840 x0)).(or4_intro2 (eq T (THead k u2 t3) (THead k x0 x1)) (ex2 T (\lambda (t: 
7841 T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 
7842 x1) t))) (subst0 i0 v (THead k u2 t3) (THead k x0 x1)) (subst0 i0 v (THead k 
7843 x0 x1) (THead k u2 t3)) (subst0_both v u2 x0 i0 H10 k t3 x1 H9))) (\lambda 
7844 (H10: (subst0 i0 v x0 u2)).(or4_intro1 (eq T (THead k u2 t3) (THead k x0 x1)) 
7845 (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7846 T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k u2 t3) (THead k x0 
7847 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t3)) (ex_intro2 T (\lambda (t: 
7848 T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 
7849 x1) t)) (THead k u2 x1) (subst0_snd k v x1 t3 i0 H9 u2) (subst0_fst v u2 x0 
7850 i0 H10 x1 k)))) (H1 x0 H7))) (\lambda (H9: (subst0 (s k i0) v x1 
7851 t3)).(or4_ind (eq T u2 x0) (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) 
7852 (\lambda (t: T).(subst0 i0 v x0 t))) (subst0 i0 v u2 x0) (subst0 i0 v x0 u2) 
7853 (or4 (eq T (THead k u2 t3) (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 
7854 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) 
7855 (subst0 i0 v (THead k u2 t3) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) 
7856 (THead k u2 t3))) (\lambda (H10: (eq T u2 x0)).(eq_ind_r T x0 (\lambda (t: 
7857 T).(or4 (eq T (THead k t t3) (THead k x0 x1)) (ex2 T (\lambda (t5: T).(subst0 
7858 i0 v (THead k t t3) t5)) (\lambda (t5: T).(subst0 i0 v (THead k x0 x1) t5))) 
7859 (subst0 i0 v (THead k t t3) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) 
7860 (THead k t t3)))) (or4_intro3 (eq T (THead k x0 t3) (THead k x0 x1)) (ex2 T 
7861 (\lambda (t: T).(subst0 i0 v (THead k x0 t3) t)) (\lambda (t: T).(subst0 i0 v 
7862 (THead k x0 x1) t))) (subst0 i0 v (THead k x0 t3) (THead k x0 x1)) (subst0 i0 
7863 v (THead k x0 x1) (THead k x0 t3)) (subst0_snd k v t3 x1 i0 H9 x0)) u2 H10)) 
7864 (\lambda (H10: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda (t: 
7865 T).(subst0 i0 v x0 t)))).(ex2_ind T (\lambda (t: T).(subst0 i0 v u2 t)) 
7866 (\lambda (t: T).(subst0 i0 v x0 t)) (or4 (eq T (THead k u2 t3) (THead k x0 
7867 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: 
7868 T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k u2 t3) (THead k x0 
7869 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t3))) (\lambda (x: T).(\lambda 
7870 (H11: (subst0 i0 v u2 x)).(\lambda (H12: (subst0 i0 v x0 x)).(or4_intro1 (eq 
7871 T (THead k u2 t3) (THead k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead 
7872 k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v 
7873 (THead k u2 t3) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 
7874 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda 
7875 (t: T).(subst0 i0 v (THead k x0 x1) t)) (THead k x t3) (subst0_fst v x u2 i0 
7876 H11 t3 k) (subst0_both v x0 x i0 H12 k x1 t3 H9)))))) H10)) (\lambda (H10: 
7877 (subst0 i0 v u2 x0)).(or4_intro1 (eq T (THead k u2 t3) (THead k x0 x1)) (ex2 
7878 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 
7879 v (THead k x0 x1) t))) (subst0 i0 v (THead k u2 t3) (THead k x0 x1)) (subst0 
7880 i0 v (THead k x0 x1) (THead k u2 t3)) (ex_intro2 T (\lambda (t: T).(subst0 i0 
7881 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x0 x1) t)) (THead 
7882 k x0 t3) (subst0_fst v x0 u2 i0 H10 t3 k) (subst0_snd k v t3 x1 i0 H9 x0)))) 
7883 (\lambda (H10: (subst0 i0 v x0 u2)).(or4_intro3 (eq T (THead k u2 t3) (THead 
7884 k x0 x1)) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda 
7885 (t: T).(subst0 i0 v (THead k x0 x1) t))) (subst0 i0 v (THead k u2 t3) (THead 
7886 k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t3)) (subst0_both v x0 u2 
7887 i0 H10 k x1 t3 H9))) (H1 x0 H7))) (H3 x1 H8)) t4 H6)))))) H5)) 
7888 (subst0_gen_head k v u1 t2 t4 i0 H4))))))))))))))) i u t0 t1 H))))).
7889
7890 theorem subst0_confluence_lift:
7891  \forall (t0: T).(\forall (t1: T).(\forall (u: T).(\forall (i: nat).((subst0 
7892 i u t0 (lift (S O) i t1)) \to (\forall (t2: T).((subst0 i u t0 (lift (S O) i 
7893 t2)) \to (eq T t1 t2)))))))
7894 \def
7895  \lambda (t0: T).(\lambda (t1: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
7896 (H: (subst0 i u t0 (lift (S O) i t1))).(\lambda (t2: T).(\lambda (H0: (subst0 
7897 i u t0 (lift (S O) i t2))).(or4_ind (eq T (lift (S O) i t2) (lift (S O) i 
7898 t1)) (ex2 T (\lambda (t: T).(subst0 i u (lift (S O) i t2) t)) (\lambda (t: 
7899 T).(subst0 i u (lift (S O) i t1) t))) (subst0 i u (lift (S O) i t2) (lift (S 
7900 O) i t1)) (subst0 i u (lift (S O) i t1) (lift (S O) i t2)) (eq T t1 t2) 
7901 (\lambda (H1: (eq T (lift (S O) i t2) (lift (S O) i t1))).(let H2 \def 
7902 (sym_equal T (lift (S O) i t2) (lift (S O) i t1) H1) in (lift_inj t1 t2 (S O) 
7903 i H2))) (\lambda (H1: (ex2 T (\lambda (t: T).(subst0 i u (lift (S O) i t2) 
7904 t)) (\lambda (t: T).(subst0 i u (lift (S O) i t1) t)))).(ex2_ind T (\lambda 
7905 (t: T).(subst0 i u (lift (S O) i t2) t)) (\lambda (t: T).(subst0 i u (lift (S 
7906 O) i t1) t)) (eq T t1 t2) (\lambda (x: T).(\lambda (_: (subst0 i u (lift (S 
7907 O) i t2) x)).(\lambda (H3: (subst0 i u (lift (S O) i t1) 
7908 x)).(subst0_gen_lift_false t1 u x (S O) i i (le_n i) (eq_ind_r nat (plus (S 
7909 O) i) (\lambda (n: nat).(lt i n)) (le_n (plus (S O) i)) (plus i (S O)) 
7910 (plus_comm i (S O))) H3 (eq T t1 t2))))) H1)) (\lambda (H1: (subst0 i u (lift 
7911 (S O) i t2) (lift (S O) i t1))).(subst0_gen_lift_false t2 u (lift (S O) i t1) 
7912 (S O) i i (le_n i) (eq_ind_r nat (plus (S O) i) (\lambda (n: nat).(lt i n)) 
7913 (le_n (plus (S O) i)) (plus i (S O)) (plus_comm i (S O))) H1 (eq T t1 t2))) 
7914 (\lambda (H1: (subst0 i u (lift (S O) i t1) (lift (S O) i 
7915 t2))).(subst0_gen_lift_false t1 u (lift (S O) i t2) (S O) i i (le_n i) 
7916 (eq_ind_r nat (plus (S O) i) (\lambda (n: nat).(lt i n)) (le_n (plus (S O) 
7917 i)) (plus i (S O)) (plus_comm i (S O))) H1 (eq T t1 t2))) 
7918 (subst0_confluence_eq t0 (lift (S O) i t2) u i H0 (lift (S O) i t1) H)))))))).
7919
7920 theorem subst0_weight_le:
7921  \forall (u: T).(\forall (t: T).(\forall (z: T).(\forall (d: nat).((subst0 d 
7922 u t z) \to (\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
7923 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
7924 d) O u)) (g d)) \to (le (weight_map f z) (weight_map g t))))))))))
7925 \def
7926  \lambda (u: T).(\lambda (t: T).(\lambda (z: T).(\lambda (d: nat).(\lambda 
7927 (H: (subst0 d u t z)).(subst0_ind (\lambda (n: nat).(\lambda (t0: T).(\lambda 
7928 (t1: T).(\lambda (t2: T).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
7929 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
7930 n) O t0)) (g n)) \to (le (weight_map f t2) (weight_map g t1)))))))))) 
7931 (\lambda (v: T).(\lambda (i: nat).(\lambda (f: ((nat \to nat))).(\lambda (g: 
7932 ((nat \to nat))).(\lambda (_: ((\forall (m: nat).(le (f m) (g m))))).(\lambda 
7933 (H1: (lt (weight_map f (lift (S i) O v)) (g i))).(le_S_n (weight_map f (lift 
7934 (S i) O v)) (weight_map g (TLRef i)) (le_S (S (weight_map f (lift (S i) O 
7935 v))) (weight_map g (TLRef i)) H1)))))))) (\lambda (v: T).(\lambda (u2: 
7936 T).(\lambda (u1: T).(\lambda (i: nat).(\lambda (_: (subst0 i v u1 
7937 u2)).(\lambda (H1: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
7938 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
7939 i) O v)) (g i)) \to (le (weight_map f u2) (weight_map g u1)))))))).(\lambda 
7940 (t0: T).(\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (f: ((nat \to 
7941 nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) (g m)))) 
7942 \to ((lt (weight_map f (lift (S i) O v)) (g i)) \to (le (weight_map f (THead 
7943 k0 u2 t0)) (weight_map g (THead k0 u1 t0)))))))) (\lambda (b: B).(B_ind 
7944 (\lambda (b0: B).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
7945 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
7946 i) O v)) (g i)) \to (le (weight_map f (THead (Bind b0) u2 t0)) (weight_map g 
7947 (THead (Bind b0) u1 t0)))))))) (\lambda (f: ((nat \to nat))).(\lambda (g: 
7948 ((nat \to nat))).(\lambda (H2: ((\forall (m: nat).(le (f m) (g 
7949 m))))).(\lambda (H3: (lt (weight_map f (lift (S i) O v)) (g i))).(le_n_S 
7950 (plus (weight_map f u2) (weight_map (wadd f (S (weight_map f u2))) t0)) (plus 
7951 (weight_map g u1) (weight_map (wadd g (S (weight_map g u1))) t0)) 
7952 (plus_le_compat (weight_map f u2) (weight_map g u1) (weight_map (wadd f (S 
7953 (weight_map f u2))) t0) (weight_map (wadd g (S (weight_map g u1))) t0) (H1 f 
7954 g H2 H3) (weight_le t0 (wadd f (S (weight_map f u2))) (wadd g (S (weight_map 
7955 g u1))) (\lambda (n: nat).(wadd_le f g H2 (S (weight_map f u2)) (S 
7956 (weight_map g u1)) (le_n_S (weight_map f u2) (weight_map g u1) (H1 f g H2 
7957 H3)) n))))))))) (\lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to 
7958 nat))).(\lambda (H2: ((\forall (m: nat).(le (f m) (g m))))).(\lambda (H3: (lt 
7959 (weight_map f (lift (S i) O v)) (g i))).(le_n_S (plus (weight_map f u2) 
7960 (weight_map (wadd f O) t0)) (plus (weight_map g u1) (weight_map (wadd g O) 
7961 t0)) (plus_le_compat (weight_map f u2) (weight_map g u1) (weight_map (wadd f 
7962 O) t0) (weight_map (wadd g O) t0) (H1 f g H2 H3) (weight_le t0 (wadd f O) 
7963 (wadd g O) (\lambda (n: nat).(wadd_le f g H2 O O (le_n O) n))))))))) (\lambda 
7964 (f: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H2: ((\forall 
7965 (m: nat).(le (f m) (g m))))).(\lambda (H3: (lt (weight_map f (lift (S i) O 
7966 v)) (g i))).(le_n_S (plus (weight_map f u2) (weight_map (wadd f O) t0)) (plus 
7967 (weight_map g u1) (weight_map (wadd g O) t0)) (plus_le_compat (weight_map f 
7968 u2) (weight_map g u1) (weight_map (wadd f O) t0) (weight_map (wadd g O) t0) 
7969 (H1 f g H2 H3) (weight_le t0 (wadd f O) (wadd g O) (\lambda (n: nat).(wadd_le 
7970 f g H2 O O (le_n O) n))))))))) b)) (\lambda (_: F).(\lambda (f0: ((nat \to 
7971 nat))).(\lambda (g: ((nat \to nat))).(\lambda (H2: ((\forall (m: nat).(le (f0 
7972 m) (g m))))).(\lambda (H3: (lt (weight_map f0 (lift (S i) O v)) (g 
7973 i))).(lt_le_S (plus (weight_map f0 u2) (weight_map f0 t0)) (S (plus 
7974 (weight_map g u1) (weight_map g t0))) (le_lt_n_Sm (plus (weight_map f0 u2) 
7975 (weight_map f0 t0)) (plus (weight_map g u1) (weight_map g t0)) 
7976 (plus_le_compat (weight_map f0 u2) (weight_map g u1) (weight_map f0 t0) 
7977 (weight_map g t0) (H1 f0 g H2 H3) (weight_le t0 f0 g H2))))))))) k))))))))) 
7978 (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (v: T).(\forall (t2: 
7979 T).(\forall (t1: T).(\forall (i: nat).((subst0 (s k0 i) v t1 t2) \to 
7980 (((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: 
7981 nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S (s k0 i)) O v)) (g (s 
7982 k0 i))) \to (le (weight_map f t2) (weight_map g t1))))))) \to (\forall (u0: 
7983 T).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: 
7984 nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S i) O v)) (g i)) \to 
7985 (le (weight_map f (THead k0 u0 t2)) (weight_map g (THead k0 u0 
7986 t1))))))))))))))) (\lambda (b: B).(B_ind (\lambda (b0: B).(\forall (v: 
7987 T).(\forall (t2: T).(\forall (t1: T).(\forall (i: nat).((subst0 (s (Bind b0) 
7988 i) v t1 t2) \to (((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
7989 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
7990 (s (Bind b0) i)) O v)) (g (s (Bind b0) i))) \to (le (weight_map f t2) 
7991 (weight_map g t1))))))) \to (\forall (u0: T).(\forall (f: ((nat \to 
7992 nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) (g m)))) 
7993 \to ((lt (weight_map f (lift (S i) O v)) (g i)) \to (le (weight_map f (THead 
7994 (Bind b0) u0 t2)) (weight_map g (THead (Bind b0) u0 t1))))))))))))))) 
7995 (\lambda (v: T).(\lambda (t2: T).(\lambda (t1: T).(\lambda (i: nat).(\lambda 
7996 (_: (subst0 (S i) v t1 t2)).(\lambda (H1: ((\forall (f: ((nat \to 
7997 nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) (g m)))) 
7998 \to ((lt (weight_map f (lift (S (S i)) O v)) (g (S i))) \to (le (weight_map f 
7999 t2) (weight_map g t1)))))))).(\lambda (u0: T).(\lambda (f: ((nat \to 
8000 nat))).(\lambda (g: ((nat \to nat))).(\lambda (H2: ((\forall (m: nat).(le (f 
8001 m) (g m))))).(\lambda (H3: (lt (weight_map f (lift (S i) O v)) (g 
8002 i))).(le_n_S (plus (weight_map f u0) (weight_map (wadd f (S (weight_map f 
8003 u0))) t2)) (plus (weight_map g u0) (weight_map (wadd g (S (weight_map g u0))) 
8004 t1)) (plus_le_compat (weight_map f u0) (weight_map g u0) (weight_map (wadd f 
8005 (S (weight_map f u0))) t2) (weight_map (wadd g (S (weight_map g u0))) t1) 
8006 (weight_le u0 f g H2) (H1 (wadd f (S (weight_map f u0))) (wadd g (S 
8007 (weight_map g u0))) (\lambda (m: nat).(wadd_le f g H2 (S (weight_map f u0)) 
8008 (S (weight_map g u0)) (le_n_S (weight_map f u0) (weight_map g u0) (weight_le 
8009 u0 f g H2)) m)) (lt_le_S (weight_map (wadd f (S (weight_map f u0))) (lift (S 
8010 (S i)) O v)) (wadd g (S (weight_map g u0)) (S i)) (eq_ind nat (weight_map f 
8011 (lift (S i) O v)) (\lambda (n: nat).(lt n (g i))) H3 (weight_map (wadd f (S 
8012 (weight_map f u0))) (lift (S (S i)) O v)) (lift_weight_add_O (S (weight_map f 
8013 u0)) v (S i) f))))))))))))))))) (\lambda (v: T).(\lambda (t2: T).(\lambda 
8014 (t1: T).(\lambda (i: nat).(\lambda (_: (subst0 (S i) v t1 t2)).(\lambda (H1: 
8015 ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: 
8016 nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S (S i)) O v)) (g (S 
8017 i))) \to (le (weight_map f t2) (weight_map g t1)))))))).(\lambda (u0: 
8018 T).(\lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H2: 
8019 ((\forall (m: nat).(le (f m) (g m))))).(\lambda (H3: (lt (weight_map f (lift 
8020 (S i) O v)) (g i))).(le_n_S (plus (weight_map f u0) (weight_map (wadd f O) 
8021 t2)) (plus (weight_map g u0) (weight_map (wadd g O) t1)) (plus_le_compat 
8022 (weight_map f u0) (weight_map g u0) (weight_map (wadd f O) t2) (weight_map 
8023 (wadd g O) t1) (weight_le u0 f g H2) (H1 (wadd f O) (wadd g O) (\lambda (m: 
8024 nat).(wadd_le f g H2 O O (le_n O) m)) (eq_ind nat (weight_map f (lift (S i) O 
8025 v)) (\lambda (n: nat).(lt n (g i))) H3 (weight_map (wadd f O) (lift (S (S i)) 
8026 O v)) (lift_weight_add_O O v (S i) f)))))))))))))))) (\lambda (v: T).(\lambda 
8027 (t2: T).(\lambda (t1: T).(\lambda (i: nat).(\lambda (_: (subst0 (S i) v t1 
8028 t2)).(\lambda (H1: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8029 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8030 (S i)) O v)) (g (S i))) \to (le (weight_map f t2) (weight_map g 
8031 t1)))))))).(\lambda (u0: T).(\lambda (f: ((nat \to nat))).(\lambda (g: ((nat 
8032 \to nat))).(\lambda (H2: ((\forall (m: nat).(le (f m) (g m))))).(\lambda (H3: 
8033 (lt (weight_map f (lift (S i) O v)) (g i))).(le_n_S (plus (weight_map f u0) 
8034 (weight_map (wadd f O) t2)) (plus (weight_map g u0) (weight_map (wadd g O) 
8035 t1)) (plus_le_compat (weight_map f u0) (weight_map g u0) (weight_map (wadd f 
8036 O) t2) (weight_map (wadd g O) t1) (weight_le u0 f g H2) (H1 (wadd f O) (wadd 
8037 g O) (\lambda (m: nat).(wadd_le f g H2 O O (le_n O) m)) (eq_ind nat 
8038 (weight_map f (lift (S i) O v)) (\lambda (n: nat).(lt n (g i))) H3 
8039 (weight_map (wadd f O) (lift (S (S i)) O v)) (lift_weight_add_O O v (S i) 
8040 f)))))))))))))))) b)) (\lambda (_: F).(\lambda (v: T).(\lambda (t2: 
8041 T).(\lambda (t1: T).(\lambda (i: nat).(\lambda (_: (subst0 i v t1 
8042 t2)).(\lambda (H1: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8043 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8044 i) O v)) (g i)) \to (le (weight_map f t2) (weight_map g t1)))))))).(\lambda 
8045 (u0: T).(\lambda (f0: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda 
8046 (H2: ((\forall (m: nat).(le (f0 m) (g m))))).(\lambda (H3: (lt (weight_map f0 
8047 (lift (S i) O v)) (g i))).(lt_le_S (plus (weight_map f0 u0) (weight_map f0 
8048 t2)) (S (plus (weight_map g u0) (weight_map g t1))) (le_lt_n_Sm (plus 
8049 (weight_map f0 u0) (weight_map f0 t2)) (plus (weight_map g u0) (weight_map g 
8050 t1)) (plus_le_compat (weight_map f0 u0) (weight_map g u0) (weight_map f0 t2) 
8051 (weight_map g t1) (weight_le u0 f0 g H2) (H1 f0 g H2 H3)))))))))))))))) k)) 
8052 (\lambda (v: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (i: nat).(\lambda 
8053 (_: (subst0 i v u1 u2)).(\lambda (H1: ((\forall (f: ((nat \to nat))).(\forall 
8054 (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt 
8055 (weight_map f (lift (S i) O v)) (g i)) \to (le (weight_map f u2) (weight_map 
8056 g u1)))))))).(\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (t1: 
8057 T).(\forall (t2: T).((subst0 (s k0 i) v t1 t2) \to (((\forall (f: ((nat \to 
8058 nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) (g m)))) 
8059 \to ((lt (weight_map f (lift (S (s k0 i)) O v)) (g (s k0 i))) \to (le 
8060 (weight_map f t2) (weight_map g t1))))))) \to (\forall (f: ((nat \to 
8061 nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) (g m)))) 
8062 \to ((lt (weight_map f (lift (S i) O v)) (g i)) \to (le (weight_map f (THead 
8063 k0 u2 t2)) (weight_map g (THead k0 u1 t1)))))))))))) (\lambda (b: B).(B_ind 
8064 (\lambda (b0: B).(\forall (t1: T).(\forall (t2: T).((subst0 (s (Bind b0) i) v 
8065 t1 t2) \to (((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8066 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8067 (s (Bind b0) i)) O v)) (g (s (Bind b0) i))) \to (le (weight_map f t2) 
8068 (weight_map g t1))))))) \to (\forall (f: ((nat \to nat))).(\forall (g: ((nat 
8069 \to nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f 
8070 (lift (S i) O v)) (g i)) \to (le (weight_map f (THead (Bind b0) u2 t2)) 
8071 (weight_map g (THead (Bind b0) u1 t1)))))))))))) (\lambda (t1: T).(\lambda 
8072 (t2: T).(\lambda (_: (subst0 (S i) v t1 t2)).(\lambda (H3: ((\forall (f: 
8073 ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) 
8074 (g m)))) \to ((lt (weight_map f (lift (S (S i)) O v)) (g (S i))) \to (le 
8075 (weight_map f t2) (weight_map g t1)))))))).(\lambda (f: ((nat \to 
8076 nat))).(\lambda (g: ((nat \to nat))).(\lambda (H4: ((\forall (m: nat).(le (f 
8077 m) (g m))))).(\lambda (H5: (lt (weight_map f (lift (S i) O v)) (g 
8078 i))).(le_n_S (plus (weight_map f u2) (weight_map (wadd f (S (weight_map f 
8079 u2))) t2)) (plus (weight_map g u1) (weight_map (wadd g (S (weight_map g u1))) 
8080 t1)) (plus_le_compat (weight_map f u2) (weight_map g u1) (weight_map (wadd f 
8081 (S (weight_map f u2))) t2) (weight_map (wadd g (S (weight_map g u1))) t1) (H1 
8082 f g H4 H5) (H3 (wadd f (S (weight_map f u2))) (wadd g (S (weight_map g u1))) 
8083 (\lambda (m: nat).(wadd_le f g H4 (S (weight_map f u2)) (S (weight_map g u1)) 
8084 (le_n_S (weight_map f u2) (weight_map g u1) (H1 f g H4 H5)) m)) (lt_le_S 
8085 (weight_map (wadd f (S (weight_map f u2))) (lift (S (S i)) O v)) (wadd g (S 
8086 (weight_map g u1)) (S i)) (eq_ind nat (weight_map f (lift (S i) O v)) 
8087 (\lambda (n: nat).(lt n (g i))) H5 (weight_map (wadd f (S (weight_map f u2))) 
8088 (lift (S (S i)) O v)) (lift_weight_add_O (S (weight_map f u2)) v (S i) 
8089 f)))))))))))))) (\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (subst0 (S i) 
8090 v t1 t2)).(\lambda (H3: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8091 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8092 (S i)) O v)) (g (S i))) \to (le (weight_map f t2) (weight_map g 
8093 t1)))))))).(\lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to 
8094 nat))).(\lambda (H4: ((\forall (m: nat).(le (f m) (g m))))).(\lambda (H5: (lt 
8095 (weight_map f (lift (S i) O v)) (g i))).(le_n_S (plus (weight_map f u2) 
8096 (weight_map (wadd f O) t2)) (plus (weight_map g u1) (weight_map (wadd g O) 
8097 t1)) (plus_le_compat (weight_map f u2) (weight_map g u1) (weight_map (wadd f 
8098 O) t2) (weight_map (wadd g O) t1) (H1 f g H4 H5) (H3 (wadd f O) (wadd g O) 
8099 (\lambda (m: nat).(wadd_le f g H4 O O (le_n O) m)) (eq_ind nat (weight_map f 
8100 (lift (S i) O v)) (\lambda (n: nat).(lt n (g i))) H5 (weight_map (wadd f O) 
8101 (lift (S (S i)) O v)) (lift_weight_add_O O v (S i) f))))))))))))) (\lambda 
8102 (t1: T).(\lambda (t2: T).(\lambda (_: (subst0 (S i) v t1 t2)).(\lambda (H3: 
8103 ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: 
8104 nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S (S i)) O v)) (g (S 
8105 i))) \to (le (weight_map f t2) (weight_map g t1)))))))).(\lambda (f: ((nat 
8106 \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H4: ((\forall (m: nat).(le 
8107 (f m) (g m))))).(\lambda (H5: (lt (weight_map f (lift (S i) O v)) (g 
8108 i))).(le_n_S (plus (weight_map f u2) (weight_map (wadd f O) t2)) (plus 
8109 (weight_map g u1) (weight_map (wadd g O) t1)) (plus_le_compat (weight_map f 
8110 u2) (weight_map g u1) (weight_map (wadd f O) t2) (weight_map (wadd g O) t1) 
8111 (H1 f g H4 H5) (H3 (wadd f O) (wadd g O) (\lambda (m: nat).(wadd_le f g H4 O 
8112 O (le_n O) m)) (eq_ind nat (weight_map f (lift (S i) O v)) (\lambda (n: 
8113 nat).(lt n (g i))) H5 (weight_map (wadd f O) (lift (S (S i)) O v)) 
8114 (lift_weight_add_O O v (S i) f))))))))))))) b)) (\lambda (_: F).(\lambda (t1: 
8115 T).(\lambda (t2: T).(\lambda (_: (subst0 i v t1 t2)).(\lambda (H3: ((\forall 
8116 (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f 
8117 m) (g m)))) \to ((lt (weight_map f (lift (S i) O v)) (g i)) \to (le 
8118 (weight_map f t2) (weight_map g t1)))))))).(\lambda (f0: ((nat \to 
8119 nat))).(\lambda (g: ((nat \to nat))).(\lambda (H4: ((\forall (m: nat).(le (f0 
8120 m) (g m))))).(\lambda (H5: (lt (weight_map f0 (lift (S i) O v)) (g 
8121 i))).(lt_le_S (plus (weight_map f0 u2) (weight_map f0 t2)) (S (plus 
8122 (weight_map g u1) (weight_map g t1))) (le_lt_n_Sm (plus (weight_map f0 u2) 
8123 (weight_map f0 t2)) (plus (weight_map g u1) (weight_map g t1)) 
8124 (plus_le_compat (weight_map f0 u2) (weight_map g u1) (weight_map f0 t2) 
8125 (weight_map g t1) (H1 f0 g H4 H5) (H3 f0 g H4 H5))))))))))))) k)))))))) d u t 
8126 z H))))).
8127
8128 theorem subst0_weight_lt:
8129  \forall (u: T).(\forall (t: T).(\forall (z: T).(\forall (d: nat).((subst0 d 
8130 u t z) \to (\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8131 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8132 d) O u)) (g d)) \to (lt (weight_map f z) (weight_map g t))))))))))
8133 \def
8134  \lambda (u: T).(\lambda (t: T).(\lambda (z: T).(\lambda (d: nat).(\lambda 
8135 (H: (subst0 d u t z)).(subst0_ind (\lambda (n: nat).(\lambda (t0: T).(\lambda 
8136 (t1: T).(\lambda (t2: T).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8137 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8138 n) O t0)) (g n)) \to (lt (weight_map f t2) (weight_map g t1)))))))))) 
8139 (\lambda (v: T).(\lambda (i: nat).(\lambda (f: ((nat \to nat))).(\lambda (g: 
8140 ((nat \to nat))).(\lambda (_: ((\forall (m: nat).(le (f m) (g m))))).(\lambda 
8141 (H1: (lt (weight_map f (lift (S i) O v)) (g i))).H1)))))) (\lambda (v: 
8142 T).(\lambda (u2: T).(\lambda (u1: T).(\lambda (i: nat).(\lambda (_: (subst0 i 
8143 v u1 u2)).(\lambda (H1: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8144 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8145 i) O v)) (g i)) \to (lt (weight_map f u2) (weight_map g u1)))))))).(\lambda 
8146 (t0: T).(\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (f: ((nat \to 
8147 nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) (g m)))) 
8148 \to ((lt (weight_map f (lift (S i) O v)) (g i)) \to (lt (weight_map f (THead 
8149 k0 u2 t0)) (weight_map g (THead k0 u1 t0)))))))) (\lambda (b: B).(B_ind 
8150 (\lambda (b0: B).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8151 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8152 i) O v)) (g i)) \to (lt (weight_map f (THead (Bind b0) u2 t0)) (weight_map g 
8153 (THead (Bind b0) u1 t0)))))))) (\lambda (f: ((nat \to nat))).(\lambda (g: 
8154 ((nat \to nat))).(\lambda (H2: ((\forall (m: nat).(le (f m) (g 
8155 m))))).(\lambda (H3: (lt (weight_map f (lift (S i) O v)) (g i))).(lt_n_S 
8156 (plus (weight_map f u2) (weight_map (wadd f (S (weight_map f u2))) t0)) (plus 
8157 (weight_map g u1) (weight_map (wadd g (S (weight_map g u1))) t0)) 
8158 (plus_lt_le_compat (weight_map f u2) (weight_map g u1) (weight_map (wadd f (S 
8159 (weight_map f u2))) t0) (weight_map (wadd g (S (weight_map g u1))) t0) (H1 f 
8160 g H2 H3) (weight_le t0 (wadd f (S (weight_map f u2))) (wadd g (S (weight_map 
8161 g u1))) (\lambda (n: nat).(wadd_le f g H2 (S (weight_map f u2)) (S 
8162 (weight_map g u1)) (le_S (S (weight_map f u2)) (weight_map g u1) (lt_le_S 
8163 (weight_map f u2) (weight_map g u1) (H1 f g H2 H3))) n))))))))) (\lambda (f: 
8164 ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H2: ((\forall (m: 
8165 nat).(le (f m) (g m))))).(\lambda (H3: (lt (weight_map f (lift (S i) O v)) (g 
8166 i))).(lt_n_S (plus (weight_map f u2) (weight_map (wadd f O) t0)) (plus 
8167 (weight_map g u1) (weight_map (wadd g O) t0)) (plus_lt_le_compat (weight_map 
8168 f u2) (weight_map g u1) (weight_map (wadd f O) t0) (weight_map (wadd g O) t0) 
8169 (H1 f g H2 H3) (weight_le t0 (wadd f O) (wadd g O) (\lambda (n: nat).(le_S_n 
8170 (wadd f O n) (wadd g O n) (le_n_S (wadd f O n) (wadd g O n) (wadd_le f g H2 O 
8171 O (le_n O) n))))))))))) (\lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to 
8172 nat))).(\lambda (H2: ((\forall (m: nat).(le (f m) (g m))))).(\lambda (H3: (lt 
8173 (weight_map f (lift (S i) O v)) (g i))).(lt_n_S (plus (weight_map f u2) 
8174 (weight_map (wadd f O) t0)) (plus (weight_map g u1) (weight_map (wadd g O) 
8175 t0)) (plus_lt_le_compat (weight_map f u2) (weight_map g u1) (weight_map (wadd 
8176 f O) t0) (weight_map (wadd g O) t0) (H1 f g H2 H3) (weight_le t0 (wadd f O) 
8177 (wadd g O) (\lambda (n: nat).(le_S_n (wadd f O n) (wadd g O n) (le_n_S (wadd 
8178 f O n) (wadd g O n) (wadd_le f g H2 O O (le_n O) n))))))))))) b)) (\lambda 
8179 (_: F).(\lambda (f0: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda 
8180 (H2: ((\forall (m: nat).(le (f0 m) (g m))))).(\lambda (H3: (lt (weight_map f0 
8181 (lift (S i) O v)) (g i))).(lt_n_S (plus (weight_map f0 u2) (weight_map f0 
8182 t0)) (plus (weight_map g u1) (weight_map g t0)) (plus_lt_le_compat 
8183 (weight_map f0 u2) (weight_map g u1) (weight_map f0 t0) (weight_map g t0) (H1 
8184 f0 g H2 H3) (weight_le t0 f0 g H2)))))))) k))))))))) (\lambda (k: K).(K_ind 
8185 (\lambda (k0: K).(\forall (v: T).(\forall (t2: T).(\forall (t1: T).(\forall 
8186 (i: nat).((subst0 (s k0 i) v t1 t2) \to (((\forall (f: ((nat \to 
8187 nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) (g m)))) 
8188 \to ((lt (weight_map f (lift (S (s k0 i)) O v)) (g (s k0 i))) \to (lt 
8189 (weight_map f t2) (weight_map g t1))))))) \to (\forall (u0: T).(\forall (f: 
8190 ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) 
8191 (g m)))) \to ((lt (weight_map f (lift (S i) O v)) (g i)) \to (lt (weight_map 
8192 f (THead k0 u0 t2)) (weight_map g (THead k0 u0 t1))))))))))))))) (\lambda (b: 
8193 B).(B_ind (\lambda (b0: B).(\forall (v: T).(\forall (t2: T).(\forall (t1: 
8194 T).(\forall (i: nat).((subst0 (s (Bind b0) i) v t1 t2) \to (((\forall (f: 
8195 ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) 
8196 (g m)))) \to ((lt (weight_map f (lift (S (s (Bind b0) i)) O v)) (g (s (Bind 
8197 b0) i))) \to (lt (weight_map f t2) (weight_map g t1))))))) \to (\forall (u0: 
8198 T).(\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: 
8199 nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S i) O v)) (g i)) \to 
8200 (lt (weight_map f (THead (Bind b0) u0 t2)) (weight_map g (THead (Bind b0) u0 
8201 t1))))))))))))))) (\lambda (v: T).(\lambda (t2: T).(\lambda (t1: T).(\lambda 
8202 (i: nat).(\lambda (_: (subst0 (S i) v t1 t2)).(\lambda (H1: ((\forall (f: 
8203 ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) 
8204 (g m)))) \to ((lt (weight_map f (lift (S (S i)) O v)) (g (S i))) \to (lt 
8205 (weight_map f t2) (weight_map g t1)))))))).(\lambda (u0: T).(\lambda (f: 
8206 ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H2: ((\forall (m: 
8207 nat).(le (f m) (g m))))).(\lambda (H3: (lt (weight_map f (lift (S i) O v)) (g 
8208 i))).(lt_n_S (plus (weight_map f u0) (weight_map (wadd f (S (weight_map f 
8209 u0))) t2)) (plus (weight_map g u0) (weight_map (wadd g (S (weight_map g u0))) 
8210 t1)) (plus_le_lt_compat (weight_map f u0) (weight_map g u0) (weight_map (wadd 
8211 f (S (weight_map f u0))) t2) (weight_map (wadd g (S (weight_map g u0))) t1) 
8212 (weight_le u0 f g H2) (H1 (wadd f (S (weight_map f u0))) (wadd g (S 
8213 (weight_map g u0))) (\lambda (m: nat).(wadd_le f g H2 (S (weight_map f u0)) 
8214 (S (weight_map g u0)) (lt_le_S (weight_map f u0) (S (weight_map g u0)) 
8215 (le_lt_n_Sm (weight_map f u0) (weight_map g u0) (weight_le u0 f g H2))) m)) 
8216 (lt_le_S (weight_map (wadd f (S (weight_map f u0))) (lift (S (S i)) O v)) 
8217 (wadd g (S (weight_map g u0)) (S i)) (eq_ind nat (weight_map f (lift (S i) O 
8218 v)) (\lambda (n: nat).(lt n (g i))) H3 (weight_map (wadd f (S (weight_map f 
8219 u0))) (lift (S (S i)) O v)) (lift_weight_add_O (S (weight_map f u0)) v (S i) 
8220 f))))))))))))))))) (\lambda (v: T).(\lambda (t2: T).(\lambda (t1: T).(\lambda 
8221 (i: nat).(\lambda (_: (subst0 (S i) v t1 t2)).(\lambda (H1: ((\forall (f: 
8222 ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) 
8223 (g m)))) \to ((lt (weight_map f (lift (S (S i)) O v)) (g (S i))) \to (lt 
8224 (weight_map f t2) (weight_map g t1)))))))).(\lambda (u0: T).(\lambda (f: 
8225 ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H2: ((\forall (m: 
8226 nat).(le (f m) (g m))))).(\lambda (H3: (lt (weight_map f (lift (S i) O v)) (g 
8227 i))).(lt_n_S (plus (weight_map f u0) (weight_map (wadd f O) t2)) (plus 
8228 (weight_map g u0) (weight_map (wadd g O) t1)) (plus_le_lt_compat (weight_map 
8229 f u0) (weight_map g u0) (weight_map (wadd f O) t2) (weight_map (wadd g O) t1) 
8230 (weight_le u0 f g H2) (H1 (wadd f O) (wadd g O) (\lambda (m: nat).(wadd_le f 
8231 g H2 O O (le_n O) m)) (eq_ind nat (weight_map f (lift (S i) O v)) (\lambda 
8232 (n: nat).(lt n (g i))) H3 (weight_map (wadd f O) (lift (S (S i)) O v)) 
8233 (lift_weight_add_O O v (S i) f)))))))))))))))) (\lambda (v: T).(\lambda (t2: 
8234 T).(\lambda (t1: T).(\lambda (i: nat).(\lambda (_: (subst0 (S i) v t1 
8235 t2)).(\lambda (H1: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8236 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8237 (S i)) O v)) (g (S i))) \to (lt (weight_map f t2) (weight_map g 
8238 t1)))))))).(\lambda (u0: T).(\lambda (f: ((nat \to nat))).(\lambda (g: ((nat 
8239 \to nat))).(\lambda (H2: ((\forall (m: nat).(le (f m) (g m))))).(\lambda (H3: 
8240 (lt (weight_map f (lift (S i) O v)) (g i))).(lt_n_S (plus (weight_map f u0) 
8241 (weight_map (wadd f O) t2)) (plus (weight_map g u0) (weight_map (wadd g O) 
8242 t1)) (plus_le_lt_compat (weight_map f u0) (weight_map g u0) (weight_map (wadd 
8243 f O) t2) (weight_map (wadd g O) t1) (weight_le u0 f g H2) (H1 (wadd f O) 
8244 (wadd g O) (\lambda (m: nat).(wadd_le f g H2 O O (le_n O) m)) (eq_ind nat 
8245 (weight_map f (lift (S i) O v)) (\lambda (n: nat).(lt n (g i))) H3 
8246 (weight_map (wadd f O) (lift (S (S i)) O v)) (lift_weight_add_O O v (S i) 
8247 f)))))))))))))))) b)) (\lambda (_: F).(\lambda (v: T).(\lambda (t2: 
8248 T).(\lambda (t1: T).(\lambda (i: nat).(\lambda (_: (subst0 i v t1 
8249 t2)).(\lambda (H1: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8250 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8251 i) O v)) (g i)) \to (lt (weight_map f t2) (weight_map g t1)))))))).(\lambda 
8252 (u0: T).(\lambda (f0: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda 
8253 (H2: ((\forall (m: nat).(le (f0 m) (g m))))).(\lambda (H3: (lt (weight_map f0 
8254 (lift (S i) O v)) (g i))).(lt_n_S (plus (weight_map f0 u0) (weight_map f0 
8255 t2)) (plus (weight_map g u0) (weight_map g t1)) (plus_le_lt_compat 
8256 (weight_map f0 u0) (weight_map g u0) (weight_map f0 t2) (weight_map g t1) 
8257 (weight_le u0 f0 g H2) (H1 f0 g H2 H3))))))))))))))) k)) (\lambda (v: 
8258 T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (i: nat).(\lambda (_: (subst0 i 
8259 v u1 u2)).(\lambda (H1: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8260 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8261 i) O v)) (g i)) \to (lt (weight_map f u2) (weight_map g u1)))))))).(\lambda 
8262 (k: K).(K_ind (\lambda (k0: K).(\forall (t1: T).(\forall (t2: T).((subst0 (s 
8263 k0 i) v t1 t2) \to (((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8264 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8265 (s k0 i)) O v)) (g (s k0 i))) \to (lt (weight_map f t2) (weight_map g 
8266 t1))))))) \to (\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8267 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8268 i) O v)) (g i)) \to (lt (weight_map f (THead k0 u2 t2)) (weight_map g (THead 
8269 k0 u1 t1)))))))))))) (\lambda (b: B).(B_ind (\lambda (b0: B).(\forall (t1: 
8270 T).(\forall (t2: T).((subst0 (s (Bind b0) i) v t1 t2) \to (((\forall (f: 
8271 ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) 
8272 (g m)))) \to ((lt (weight_map f (lift (S (s (Bind b0) i)) O v)) (g (s (Bind 
8273 b0) i))) \to (lt (weight_map f t2) (weight_map g t1))))))) \to (\forall (f: 
8274 ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: nat).(le (f m) 
8275 (g m)))) \to ((lt (weight_map f (lift (S i) O v)) (g i)) \to (lt (weight_map 
8276 f (THead (Bind b0) u2 t2)) (weight_map g (THead (Bind b0) u1 t1)))))))))))) 
8277 (\lambda (t1: T).(\lambda (t2: T).(\lambda (H2: (subst0 (S i) v t1 
8278 t2)).(\lambda (_: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8279 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8280 (S i)) O v)) (g (S i))) \to (lt (weight_map f t2) (weight_map g 
8281 t1)))))))).(\lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to 
8282 nat))).(\lambda (H4: ((\forall (m: nat).(le (f m) (g m))))).(\lambda (H5: (lt 
8283 (weight_map f (lift (S i) O v)) (g i))).(lt_n_S (plus (weight_map f u2) 
8284 (weight_map (wadd f (S (weight_map f u2))) t2)) (plus (weight_map g u1) 
8285 (weight_map (wadd g (S (weight_map g u1))) t1)) (plus_lt_le_compat 
8286 (weight_map f u2) (weight_map g u1) (weight_map (wadd f (S (weight_map f 
8287 u2))) t2) (weight_map (wadd g (S (weight_map g u1))) t1) (H1 f g H4 H5) 
8288 (subst0_weight_le v t1 t2 (S i) H2 (wadd f (S (weight_map f u2))) (wadd g (S 
8289 (weight_map g u1))) (\lambda (m: nat).(wadd_le f g H4 (S (weight_map f u2)) 
8290 (S (weight_map g u1)) (le_S (S (weight_map f u2)) (weight_map g u1) (lt_le_S 
8291 (weight_map f u2) (weight_map g u1) (H1 f g H4 H5))) m)) (lt_le_S (weight_map 
8292 (wadd f (S (weight_map f u2))) (lift (S (S i)) O v)) (wadd g (S (weight_map g 
8293 u1)) (S i)) (eq_ind nat (weight_map f (lift (S i) O v)) (\lambda (n: nat).(lt 
8294 n (g i))) H5 (weight_map (wadd f (S (weight_map f u2))) (lift (S (S i)) O v)) 
8295 (lift_weight_add_O (S (weight_map f u2)) v (S i) f)))))))))))))) (\lambda 
8296 (t1: T).(\lambda (t2: T).(\lambda (_: (subst0 (S i) v t1 t2)).(\lambda (H3: 
8297 ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to nat))).(((\forall (m: 
8298 nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S (S i)) O v)) (g (S 
8299 i))) \to (lt (weight_map f t2) (weight_map g t1)))))))).(\lambda (f: ((nat 
8300 \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H4: ((\forall (m: nat).(le 
8301 (f m) (g m))))).(\lambda (H5: (lt (weight_map f (lift (S i) O v)) (g 
8302 i))).(lt_n_S (plus (weight_map f u2) (weight_map (wadd f O) t2)) (plus 
8303 (weight_map g u1) (weight_map (wadd g O) t1)) (plus_lt_compat (weight_map f 
8304 u2) (weight_map g u1) (weight_map (wadd f O) t2) (weight_map (wadd g O) t1) 
8305 (H1 f g H4 H5) (H3 (wadd f O) (wadd g O) (\lambda (m: nat).(le_S_n (wadd f O 
8306 m) (wadd g O m) (le_n_S (wadd f O m) (wadd g O m) (wadd_le f g H4 O O (le_n 
8307 O) m)))) (lt_le_S (weight_map (wadd f O) (lift (S (S i)) O v)) (wadd g O (S 
8308 i)) (eq_ind nat (weight_map f (lift (S i) O v)) (\lambda (n: nat).(lt n (g 
8309 i))) H5 (weight_map (wadd f O) (lift (S (S i)) O v)) (lift_weight_add_O O v 
8310 (S i) f)))))))))))))) (\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (subst0 
8311 (S i) v t1 t2)).(\lambda (H3: ((\forall (f: ((nat \to nat))).(\forall (g: 
8312 ((nat \to nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map 
8313 f (lift (S (S i)) O v)) (g (S i))) \to (lt (weight_map f t2) (weight_map g 
8314 t1)))))))).(\lambda (f: ((nat \to nat))).(\lambda (g: ((nat \to 
8315 nat))).(\lambda (H4: ((\forall (m: nat).(le (f m) (g m))))).(\lambda (H5: (lt 
8316 (weight_map f (lift (S i) O v)) (g i))).(lt_n_S (plus (weight_map f u2) 
8317 (weight_map (wadd f O) t2)) (plus (weight_map g u1) (weight_map (wadd g O) 
8318 t1)) (plus_lt_compat (weight_map f u2) (weight_map g u1) (weight_map (wadd f 
8319 O) t2) (weight_map (wadd g O) t1) (H1 f g H4 H5) (H3 (wadd f O) (wadd g O) 
8320 (\lambda (m: nat).(le_S_n (wadd f O m) (wadd g O m) (le_n_S (wadd f O m) 
8321 (wadd g O m) (wadd_le f g H4 O O (le_n O) m)))) (lt_le_S (weight_map (wadd f 
8322 O) (lift (S (S i)) O v)) (wadd g O (S i)) (eq_ind nat (weight_map f (lift (S 
8323 i) O v)) (\lambda (n: nat).(lt n (g i))) H5 (weight_map (wadd f O) (lift (S 
8324 (S i)) O v)) (lift_weight_add_O O v (S i) f)))))))))))))) b)) (\lambda (_: 
8325 F).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (subst0 i v t1 
8326 t2)).(\lambda (H3: ((\forall (f: ((nat \to nat))).(\forall (g: ((nat \to 
8327 nat))).(((\forall (m: nat).(le (f m) (g m)))) \to ((lt (weight_map f (lift (S 
8328 i) O v)) (g i)) \to (lt (weight_map f t2) (weight_map g t1)))))))).(\lambda 
8329 (f0: ((nat \to nat))).(\lambda (g: ((nat \to nat))).(\lambda (H4: ((\forall 
8330 (m: nat).(le (f0 m) (g m))))).(\lambda (H5: (lt (weight_map f0 (lift (S i) O 
8331 v)) (g i))).(lt_n_S (plus (weight_map f0 u2) (weight_map f0 t2)) (plus 
8332 (weight_map g u1) (weight_map g t1)) (plus_lt_compat (weight_map f0 u2) 
8333 (weight_map g u1) (weight_map f0 t2) (weight_map g t1) (H1 f0 g H4 H5) (H3 f0 
8334 g H4 H5)))))))))))) k)))))))) d u t z H))))).
8335
8336 theorem subst0_tlt_head:
8337  \forall (u: T).(\forall (t: T).(\forall (z: T).((subst0 O u t z) \to (tlt 
8338 (THead (Bind Abbr) u z) (THead (Bind Abbr) u t)))))
8339 \def
8340  \lambda (u: T).(\lambda (t: T).(\lambda (z: T).(\lambda (H: (subst0 O u t 
8341 z)).(lt_n_S (plus (weight_map (\lambda (_: nat).O) u) (weight_map (wadd 
8342 (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) u))) z)) (plus 
8343 (weight_map (\lambda (_: nat).O) u) (weight_map (wadd (\lambda (_: nat).O) (S 
8344 (weight_map (\lambda (_: nat).O) u))) t)) (plus_le_lt_compat (weight_map 
8345 (\lambda (_: nat).O) u) (weight_map (\lambda (_: nat).O) u) (weight_map (wadd 
8346 (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) u))) z) (weight_map 
8347 (wadd (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) u))) t) (le_n 
8348 (weight_map (\lambda (_: nat).O) u)) (subst0_weight_lt u t z O H (wadd 
8349 (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) u))) (wadd (\lambda 
8350 (_: nat).O) (S (weight_map (\lambda (_: nat).O) u))) (\lambda (m: nat).(le_n 
8351 (wadd (\lambda (_: nat).O) (S (weight_map (\lambda (_: nat).O) u)) m))) 
8352 (eq_ind nat (weight_map (\lambda (_: nat).O) (lift O O u)) (\lambda (n: 
8353 nat).(lt n (S (weight_map (\lambda (_: nat).O) u)))) (eq_ind_r T u (\lambda 
8354 (t0: T).(lt (weight_map (\lambda (_: nat).O) t0) (S (weight_map (\lambda (_: 
8355 nat).O) u)))) (le_n (S (weight_map (\lambda (_: nat).O) u))) (lift O O u) 
8356 (lift_r u O)) (weight_map (wadd (\lambda (_: nat).O) (S (weight_map (\lambda 
8357 (_: nat).O) u))) (lift (S O) O u)) (lift_weight_add_O (S (weight_map (\lambda 
8358 (_: nat).O) u)) u O (\lambda (_: nat).O))))))))).
8359
8360 theorem subst0_tlt:
8361  \forall (u: T).(\forall (t: T).(\forall (z: T).((subst0 O u t z) \to (tlt z 
8362 (THead (Bind Abbr) u t)))))
8363 \def
8364  \lambda (u: T).(\lambda (t: T).(\lambda (z: T).(\lambda (H: (subst0 O u t 
8365 z)).(tlt_trans (THead (Bind Abbr) u z) z (THead (Bind Abbr) u t) (tlt_head_dx 
8366 (Bind Abbr) u z) (subst0_tlt_head u t z H))))).
8367
8368 theorem dnf_dec:
8369  \forall (w: T).(\forall (t: T).(\forall (d: nat).(ex T (\lambda (v: T).(or 
8370 (subst0 d w t (lift (S O) d v)) (eq T t (lift (S O) d v)))))))
8371 \def
8372  \lambda (w: T).(\lambda (t: T).(T_ind (\lambda (t0: T).(\forall (d: nat).(ex 
8373 T (\lambda (v: T).(or (subst0 d w t0 (lift (S O) d v)) (eq T t0 (lift (S O) d 
8374 v))))))) (\lambda (n: nat).(\lambda (d: nat).(ex_intro T (\lambda (v: T).(or 
8375 (subst0 d w (TSort n) (lift (S O) d v)) (eq T (TSort n) (lift (S O) d v)))) 
8376 (TSort n) (eq_ind_r T (TSort n) (\lambda (t0: T).(or (subst0 d w (TSort n) 
8377 t0) (eq T (TSort n) t0))) (or_intror (subst0 d w (TSort n) (TSort n)) (eq T 
8378 (TSort n) (TSort n)) (refl_equal T (TSort n))) (lift (S O) d (TSort n)) 
8379 (lift_sort n (S O) d))))) (\lambda (n: nat).(\lambda (d: nat).(lt_eq_gt_e n d 
8380 (ex T (\lambda (v: T).(or (subst0 d w (TLRef n) (lift (S O) d v)) (eq T 
8381 (TLRef n) (lift (S O) d v))))) (\lambda (H: (lt n d)).(ex_intro T (\lambda 
8382 (v: T).(or (subst0 d w (TLRef n) (lift (S O) d v)) (eq T (TLRef n) (lift (S 
8383 O) d v)))) (TLRef n) (eq_ind_r T (TLRef n) (\lambda (t0: T).(or (subst0 d w 
8384 (TLRef n) t0) (eq T (TLRef n) t0))) (or_intror (subst0 d w (TLRef n) (TLRef 
8385 n)) (eq T (TLRef n) (TLRef n)) (refl_equal T (TLRef n))) (lift (S O) d (TLRef 
8386 n)) (lift_lref_lt n (S O) d H)))) (\lambda (H: (eq nat n d)).(eq_ind nat n 
8387 (\lambda (n0: nat).(ex T (\lambda (v: T).(or (subst0 n0 w (TLRef n) (lift (S 
8388 O) n0 v)) (eq T (TLRef n) (lift (S O) n0 v)))))) (ex_intro T (\lambda (v: 
8389 T).(or (subst0 n w (TLRef n) (lift (S O) n v)) (eq T (TLRef n) (lift (S O) n 
8390 v)))) (lift n O w) (eq_ind_r T (lift (plus (S O) n) O w) (\lambda (t0: T).(or 
8391 (subst0 n w (TLRef n) t0) (eq T (TLRef n) t0))) (or_introl (subst0 n w (TLRef 
8392 n) (lift (S n) O w)) (eq T (TLRef n) (lift (S n) O w)) (subst0_lref w n)) 
8393 (lift (S O) n (lift n O w)) (lift_free w n (S O) O n (le_n (plus O n)) 
8394 (le_O_n n)))) d H)) (\lambda (H: (lt d n)).(ex_intro T (\lambda (v: T).(or 
8395 (subst0 d w (TLRef n) (lift (S O) d v)) (eq T (TLRef n) (lift (S O) d v)))) 
8396 (TLRef (pred n)) (eq_ind_r T (TLRef n) (\lambda (t0: T).(or (subst0 d w 
8397 (TLRef n) t0) (eq T (TLRef n) t0))) (or_intror (subst0 d w (TLRef n) (TLRef 
8398 n)) (eq T (TLRef n) (TLRef n)) (refl_equal T (TLRef n))) (lift (S O) d (TLRef 
8399 (pred n))) (lift_lref_gt d n H))))))) (\lambda (k: K).(\lambda (t0: 
8400 T).(\lambda (H: ((\forall (d: nat).(ex T (\lambda (v: T).(or (subst0 d w t0 
8401 (lift (S O) d v)) (eq T t0 (lift (S O) d v)))))))).(\lambda (t1: T).(\lambda 
8402 (H0: ((\forall (d: nat).(ex T (\lambda (v: T).(or (subst0 d w t1 (lift (S O) 
8403 d v)) (eq T t1 (lift (S O) d v)))))))).(\lambda (d: nat).(let H_x \def (H d) 
8404 in (let H1 \def H_x in (ex_ind T (\lambda (v: T).(or (subst0 d w t0 (lift (S 
8405 O) d v)) (eq T t0 (lift (S O) d v)))) (ex T (\lambda (v: T).(or (subst0 d w 
8406 (THead k t0 t1) (lift (S O) d v)) (eq T (THead k t0 t1) (lift (S O) d v))))) 
8407 (\lambda (x: T).(\lambda (H2: (or (subst0 d w t0 (lift (S O) d x)) (eq T t0 
8408 (lift (S O) d x)))).(or_ind (subst0 d w t0 (lift (S O) d x)) (eq T t0 (lift 
8409 (S O) d x)) (ex T (\lambda (v: T).(or (subst0 d w (THead k t0 t1) (lift (S O) 
8410 d v)) (eq T (THead k t0 t1) (lift (S O) d v))))) (\lambda (H3: (subst0 d w t0 
8411 (lift (S O) d x))).(let H_x0 \def (H0 (s k d)) in (let H4 \def H_x0 in 
8412 (ex_ind T (\lambda (v: T).(or (subst0 (s k d) w t1 (lift (S O) (s k d) v)) 
8413 (eq T t1 (lift (S O) (s k d) v)))) (ex T (\lambda (v: T).(or (subst0 d w 
8414 (THead k t0 t1) (lift (S O) d v)) (eq T (THead k t0 t1) (lift (S O) d v))))) 
8415 (\lambda (x0: T).(\lambda (H5: (or (subst0 (s k d) w t1 (lift (S O) (s k d) 
8416 x0)) (eq T t1 (lift (S O) (s k d) x0)))).(or_ind (subst0 (s k d) w t1 (lift 
8417 (S O) (s k d) x0)) (eq T t1 (lift (S O) (s k d) x0)) (ex T (\lambda (v: 
8418 T).(or (subst0 d w (THead k t0 t1) (lift (S O) d v)) (eq T (THead k t0 t1) 
8419 (lift (S O) d v))))) (\lambda (H6: (subst0 (s k d) w t1 (lift (S O) (s k d) 
8420 x0))).(ex_intro T (\lambda (v: T).(or (subst0 d w (THead k t0 t1) (lift (S O) 
8421 d v)) (eq T (THead k t0 t1) (lift (S O) d v)))) (THead k x x0) (eq_ind_r T 
8422 (THead k (lift (S O) d x) (lift (S O) (s k d) x0)) (\lambda (t2: T).(or 
8423 (subst0 d w (THead k t0 t1) t2) (eq T (THead k t0 t1) t2))) (or_introl 
8424 (subst0 d w (THead k t0 t1) (THead k (lift (S O) d x) (lift (S O) (s k d) 
8425 x0))) (eq T (THead k t0 t1) (THead k (lift (S O) d x) (lift (S O) (s k d) 
8426 x0))) (subst0_both w t0 (lift (S O) d x) d H3 k t1 (lift (S O) (s k d) x0) 
8427 H6)) (lift (S O) d (THead k x x0)) (lift_head k x x0 (S O) d)))) (\lambda 
8428 (H6: (eq T t1 (lift (S O) (s k d) x0))).(eq_ind_r T (lift (S O) (s k d) x0) 
8429 (\lambda (t2: T).(ex T (\lambda (v: T).(or (subst0 d w (THead k t0 t2) (lift 
8430 (S O) d v)) (eq T (THead k t0 t2) (lift (S O) d v)))))) (ex_intro T (\lambda 
8431 (v: T).(or (subst0 d w (THead k t0 (lift (S O) (s k d) x0)) (lift (S O) d v)) 
8432 (eq T (THead k t0 (lift (S O) (s k d) x0)) (lift (S O) d v)))) (THead k x x0) 
8433 (eq_ind_r T (THead k (lift (S O) d x) (lift (S O) (s k d) x0)) (\lambda (t2: 
8434 T).(or (subst0 d w (THead k t0 (lift (S O) (s k d) x0)) t2) (eq T (THead k t0 
8435 (lift (S O) (s k d) x0)) t2))) (or_introl (subst0 d w (THead k t0 (lift (S O) 
8436 (s k d) x0)) (THead k (lift (S O) d x) (lift (S O) (s k d) x0))) (eq T (THead 
8437 k t0 (lift (S O) (s k d) x0)) (THead k (lift (S O) d x) (lift (S O) (s k d) 
8438 x0))) (subst0_fst w (lift (S O) d x) t0 d H3 (lift (S O) (s k d) x0) k)) 
8439 (lift (S O) d (THead k x x0)) (lift_head k x x0 (S O) d))) t1 H6)) H5))) 
8440 H4)))) (\lambda (H3: (eq T t0 (lift (S O) d x))).(let H_x0 \def (H0 (s k d)) 
8441 in (let H4 \def H_x0 in (ex_ind T (\lambda (v: T).(or (subst0 (s k d) w t1 
8442 (lift (S O) (s k d) v)) (eq T t1 (lift (S O) (s k d) v)))) (ex T (\lambda (v: 
8443 T).(or (subst0 d w (THead k t0 t1) (lift (S O) d v)) (eq T (THead k t0 t1) 
8444 (lift (S O) d v))))) (\lambda (x0: T).(\lambda (H5: (or (subst0 (s k d) w t1 
8445 (lift (S O) (s k d) x0)) (eq T t1 (lift (S O) (s k d) x0)))).(or_ind (subst0 
8446 (s k d) w t1 (lift (S O) (s k d) x0)) (eq T t1 (lift (S O) (s k d) x0)) (ex T 
8447 (\lambda (v: T).(or (subst0 d w (THead k t0 t1) (lift (S O) d v)) (eq T 
8448 (THead k t0 t1) (lift (S O) d v))))) (\lambda (H6: (subst0 (s k d) w t1 (lift 
8449 (S O) (s k d) x0))).(eq_ind_r T (lift (S O) d x) (\lambda (t2: T).(ex T 
8450 (\lambda (v: T).(or (subst0 d w (THead k t2 t1) (lift (S O) d v)) (eq T 
8451 (THead k t2 t1) (lift (S O) d v)))))) (ex_intro T (\lambda (v: T).(or (subst0 
8452 d w (THead k (lift (S O) d x) t1) (lift (S O) d v)) (eq T (THead k (lift (S 
8453 O) d x) t1) (lift (S O) d v)))) (THead k x x0) (eq_ind_r T (THead k (lift (S 
8454 O) d x) (lift (S O) (s k d) x0)) (\lambda (t2: T).(or (subst0 d w (THead k 
8455 (lift (S O) d x) t1) t2) (eq T (THead k (lift (S O) d x) t1) t2))) (or_introl 
8456 (subst0 d w (THead k (lift (S O) d x) t1) (THead k (lift (S O) d x) (lift (S 
8457 O) (s k d) x0))) (eq T (THead k (lift (S O) d x) t1) (THead k (lift (S O) d 
8458 x) (lift (S O) (s k d) x0))) (subst0_snd k w (lift (S O) (s k d) x0) t1 d H6 
8459 (lift (S O) d x))) (lift (S O) d (THead k x x0)) (lift_head k x x0 (S O) d))) 
8460 t0 H3)) (\lambda (H6: (eq T t1 (lift (S O) (s k d) x0))).(eq_ind_r T (lift (S 
8461 O) (s k d) x0) (\lambda (t2: T).(ex T (\lambda (v: T).(or (subst0 d w (THead 
8462 k t0 t2) (lift (S O) d v)) (eq T (THead k t0 t2) (lift (S O) d v)))))) 
8463 (eq_ind_r T (lift (S O) d x) (\lambda (t2: T).(ex T (\lambda (v: T).(or 
8464 (subst0 d w (THead k t2 (lift (S O) (s k d) x0)) (lift (S O) d v)) (eq T 
8465 (THead k t2 (lift (S O) (s k d) x0)) (lift (S O) d v)))))) (ex_intro T 
8466 (\lambda (v: T).(or (subst0 d w (THead k (lift (S O) d x) (lift (S O) (s k d) 
8467 x0)) (lift (S O) d v)) (eq T (THead k (lift (S O) d x) (lift (S O) (s k d) 
8468 x0)) (lift (S O) d v)))) (THead k x x0) (eq_ind_r T (THead k (lift (S O) d x) 
8469 (lift (S O) (s k d) x0)) (\lambda (t2: T).(or (subst0 d w (THead k (lift (S 
8470 O) d x) (lift (S O) (s k d) x0)) t2) (eq T (THead k (lift (S O) d x) (lift (S 
8471 O) (s k d) x0)) t2))) (or_intror (subst0 d w (THead k (lift (S O) d x) (lift 
8472 (S O) (s k d) x0)) (THead k (lift (S O) d x) (lift (S O) (s k d) x0))) (eq T 
8473 (THead k (lift (S O) d x) (lift (S O) (s k d) x0)) (THead k (lift (S O) d x) 
8474 (lift (S O) (s k d) x0))) (refl_equal T (THead k (lift (S O) d x) (lift (S O) 
8475 (s k d) x0)))) (lift (S O) d (THead k x x0)) (lift_head k x x0 (S O) d))) t0 
8476 H3) t1 H6)) H5))) H4)))) H2))) H1))))))))) t)).
8477
8478 inductive subst1 (i:nat) (v:T) (t1:T): T \to Prop \def
8479 | subst1_refl: subst1 i v t1 t1
8480 | subst1_single: \forall (t2: T).((subst0 i v t1 t2) \to (subst1 i v t1 t2)).
8481
8482 theorem subst1_head:
8483  \forall (v: T).(\forall (u1: T).(\forall (u2: T).(\forall (i: nat).((subst1 
8484 i v u1 u2) \to (\forall (k: K).(\forall (t1: T).(\forall (t2: T).((subst1 (s 
8485 k i) v t1 t2) \to (subst1 i v (THead k u1 t1) (THead k u2 t2))))))))))
8486 \def
8487  \lambda (v: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (i: nat).(\lambda 
8488 (H: (subst1 i v u1 u2)).(subst1_ind i v u1 (\lambda (t: T).(\forall (k: 
8489 K).(\forall (t1: T).(\forall (t2: T).((subst1 (s k i) v t1 t2) \to (subst1 i 
8490 v (THead k u1 t1) (THead k t t2))))))) (\lambda (k: K).(\lambda (t1: 
8491 T).(\lambda (t2: T).(\lambda (H0: (subst1 (s k i) v t1 t2)).(subst1_ind (s k 
8492 i) v t1 (\lambda (t: T).(subst1 i v (THead k u1 t1) (THead k u1 t))) 
8493 (subst1_refl i v (THead k u1 t1)) (\lambda (t3: T).(\lambda (H1: (subst0 (s k 
8494 i) v t1 t3)).(subst1_single i v (THead k u1 t1) (THead k u1 t3) (subst0_snd k 
8495 v t3 t1 i H1 u1)))) t2 H0))))) (\lambda (t2: T).(\lambda (H0: (subst0 i v u1 
8496 t2)).(\lambda (k: K).(\lambda (t1: T).(\lambda (t0: T).(\lambda (H1: (subst1 
8497 (s k i) v t1 t0)).(subst1_ind (s k i) v t1 (\lambda (t: T).(subst1 i v (THead 
8498 k u1 t1) (THead k t2 t))) (subst1_single i v (THead k u1 t1) (THead k t2 t1) 
8499 (subst0_fst v t2 u1 i H0 t1 k)) (\lambda (t3: T).(\lambda (H2: (subst0 (s k 
8500 i) v t1 t3)).(subst1_single i v (THead k u1 t1) (THead k t2 t3) (subst0_both 
8501 v u1 t2 i H0 k t1 t3 H2)))) t0 H1))))))) u2 H))))).
8502
8503 theorem subst1_gen_sort:
8504  \forall (v: T).(\forall (x: T).(\forall (i: nat).(\forall (n: nat).((subst1 
8505 i v (TSort n) x) \to (eq T x (TSort n))))))
8506 \def
8507  \lambda (v: T).(\lambda (x: T).(\lambda (i: nat).(\lambda (n: nat).(\lambda 
8508 (H: (subst1 i v (TSort n) x)).(subst1_ind i v (TSort n) (\lambda (t: T).(eq T 
8509 t (TSort n))) (refl_equal T (TSort n)) (\lambda (t2: T).(\lambda (H0: (subst0 
8510 i v (TSort n) t2)).(subst0_gen_sort v t2 i n H0 (eq T t2 (TSort n))))) x 
8511 H))))).
8512
8513 theorem subst1_gen_lref:
8514  \forall (v: T).(\forall (x: T).(\forall (i: nat).(\forall (n: nat).((subst1 
8515 i v (TLRef n) x) \to (or (eq T x (TLRef n)) (land (eq nat n i) (eq T x (lift 
8516 (S n) O v))))))))
8517 \def
8518  \lambda (v: T).(\lambda (x: T).(\lambda (i: nat).(\lambda (n: nat).(\lambda 
8519 (H: (subst1 i v (TLRef n) x)).(subst1_ind i v (TLRef n) (\lambda (t: T).(or 
8520 (eq T t (TLRef n)) (land (eq nat n i) (eq T t (lift (S n) O v))))) (or_introl 
8521 (eq T (TLRef n) (TLRef n)) (land (eq nat n i) (eq T (TLRef n) (lift (S n) O 
8522 v))) (refl_equal T (TLRef n))) (\lambda (t2: T).(\lambda (H0: (subst0 i v 
8523 (TLRef n) t2)).(and_ind (eq nat n i) (eq T t2 (lift (S n) O v)) (or (eq T t2 
8524 (TLRef n)) (land (eq nat n i) (eq T t2 (lift (S n) O v)))) (\lambda (H1: (eq 
8525 nat n i)).(\lambda (H2: (eq T t2 (lift (S n) O v))).(or_intror (eq T t2 
8526 (TLRef n)) (land (eq nat n i) (eq T t2 (lift (S n) O v))) (conj (eq nat n i) 
8527 (eq T t2 (lift (S n) O v)) H1 H2)))) (subst0_gen_lref v t2 i n H0)))) x 
8528 H))))).
8529
8530 theorem subst1_gen_head:
8531  \forall (k: K).(\forall (v: T).(\forall (u1: T).(\forall (t1: T).(\forall 
8532 (x: T).(\forall (i: nat).((subst1 i v (THead k u1 t1) x) \to (ex3_2 T T 
8533 (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead k u2 t2)))) (\lambda (u2: 
8534 T).(\lambda (_: T).(subst1 i v u1 u2))) (\lambda (_: T).(\lambda (t2: 
8535 T).(subst1 (s k i) v t1 t2))))))))))
8536 \def
8537  \lambda (k: K).(\lambda (v: T).(\lambda (u1: T).(\lambda (t1: T).(\lambda 
8538 (x: T).(\lambda (i: nat).(\lambda (H: (subst1 i v (THead k u1 t1) 
8539 x)).(subst1_ind i v (THead k u1 t1) (\lambda (t: T).(ex3_2 T T (\lambda (u2: 
8540 T).(\lambda (t2: T).(eq T t (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: 
8541 T).(subst1 i v u1 u2))) (\lambda (_: T).(\lambda (t2: T).(subst1 (s k i) v t1 
8542 t2))))) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t2: T).(eq T (THead k u1 
8543 t1) (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst1 i v u1 u2))) 
8544 (\lambda (_: T).(\lambda (t2: T).(subst1 (s k i) v t1 t2))) u1 t1 (refl_equal 
8545 T (THead k u1 t1)) (subst1_refl i v u1) (subst1_refl (s k i) v t1)) (\lambda 
8546 (t2: T).(\lambda (H0: (subst0 i v (THead k u1 t1) t2)).(or3_ind (ex2 T 
8547 (\lambda (u2: T).(eq T t2 (THead k u2 t1))) (\lambda (u2: T).(subst0 i v u1 
8548 u2))) (ex2 T (\lambda (t3: T).(eq T t2 (THead k u1 t3))) (\lambda (t3: 
8549 T).(subst0 (s k i) v t1 t3))) (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
8550 T).(eq T t2 (THead k u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v 
8551 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i) v t1 t3)))) (ex3_2 
8552 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead k u2 t3)))) (\lambda 
8553 (u2: T).(\lambda (_: T).(subst1 i v u1 u2))) (\lambda (_: T).(\lambda (t3: 
8554 T).(subst1 (s k i) v t1 t3)))) (\lambda (H1: (ex2 T (\lambda (u2: T).(eq T t2 
8555 (THead k u2 t1))) (\lambda (u2: T).(subst0 i v u1 u2)))).(ex2_ind T (\lambda 
8556 (u2: T).(eq T t2 (THead k u2 t1))) (\lambda (u2: T).(subst0 i v u1 u2)) 
8557 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead k u2 t3)))) 
8558 (\lambda (u2: T).(\lambda (_: T).(subst1 i v u1 u2))) (\lambda (_: 
8559 T).(\lambda (t3: T).(subst1 (s k i) v t1 t3)))) (\lambda (x0: T).(\lambda 
8560 (H2: (eq T t2 (THead k x0 t1))).(\lambda (H3: (subst0 i v u1 
8561 x0)).(ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead k u2 
8562 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst1 i v u1 u2))) (\lambda (_: 
8563 T).(\lambda (t3: T).(subst1 (s k i) v t1 t3))) x0 t1 H2 (subst1_single i v u1 
8564 x0 H3) (subst1_refl (s k i) v t1))))) H1)) (\lambda (H1: (ex2 T (\lambda (t3: 
8565 T).(eq T t2 (THead k u1 t3))) (\lambda (t2: T).(subst0 (s k i) v t1 
8566 t2)))).(ex2_ind T (\lambda (t3: T).(eq T t2 (THead k u1 t3))) (\lambda (t3: 
8567 T).(subst0 (s k i) v t1 t3)) (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq 
8568 T t2 (THead k u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst1 i v u1 u2))) 
8569 (\lambda (_: T).(\lambda (t3: T).(subst1 (s k i) v t1 t3)))) (\lambda (x0: 
8570 T).(\lambda (H2: (eq T t2 (THead k u1 x0))).(\lambda (H3: (subst0 (s k i) v 
8571 t1 x0)).(ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead k 
8572 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst1 i v u1 u2))) (\lambda (_: 
8573 T).(\lambda (t3: T).(subst1 (s k i) v t1 t3))) u1 x0 H2 (subst1_refl i v u1) 
8574 (subst1_single (s k i) v t1 x0 H3))))) H1)) (\lambda (H1: (ex3_2 T T (\lambda 
8575 (u2: T).(\lambda (t3: T).(eq T t2 (THead k u2 t3)))) (\lambda (u2: 
8576 T).(\lambda (_: T).(subst0 i v u1 u2))) (\lambda (_: T).(\lambda (t2: 
8577 T).(subst0 (s k i) v t1 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: 
8578 T).(eq T t2 (THead k u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v 
8579 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i) v t1 t3))) (ex3_2 T 
8580 T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead k u2 t3)))) (\lambda (u2: 
8581 T).(\lambda (_: T).(subst1 i v u1 u2))) (\lambda (_: T).(\lambda (t3: 
8582 T).(subst1 (s k i) v t1 t3)))) (\lambda (x0: T).(\lambda (x1: T).(\lambda 
8583 (H2: (eq T t2 (THead k x0 x1))).(\lambda (H3: (subst0 i v u1 x0)).(\lambda 
8584 (H4: (subst0 (s k i) v t1 x1)).(ex3_2_intro T T (\lambda (u2: T).(\lambda 
8585 (t3: T).(eq T t2 (THead k u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst1 
8586 i v u1 u2))) (\lambda (_: T).(\lambda (t3: T).(subst1 (s k i) v t1 t3))) x0 
8587 x1 H2 (subst1_single i v u1 x0 H3) (subst1_single (s k i) v t1 x1 H4))))))) 
8588 H1)) (subst0_gen_head k v u1 t1 t2 i H0)))) x H))))))).
8589
8590 theorem subst1_gen_lift_lt:
8591  \forall (u: T).(\forall (t1: T).(\forall (x: T).(\forall (i: nat).(\forall 
8592 (h: nat).(\forall (d: nat).((subst1 i (lift h d u) (lift h (S (plus i d)) t1) 
8593 x) \to (ex2 T (\lambda (t2: T).(eq T x (lift h (S (plus i d)) t2))) (\lambda 
8594 (t2: T).(subst1 i u t1 t2)))))))))
8595 \def
8596  \lambda (u: T).(\lambda (t1: T).(\lambda (x: T).(\lambda (i: nat).(\lambda 
8597 (h: nat).(\lambda (d: nat).(\lambda (H: (subst1 i (lift h d u) (lift h (S 
8598 (plus i d)) t1) x)).(subst1_ind i (lift h d u) (lift h (S (plus i d)) t1) 
8599 (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift h (S (plus i d)) t2))) 
8600 (\lambda (t2: T).(subst1 i u t1 t2)))) (ex_intro2 T (\lambda (t2: T).(eq T 
8601 (lift h (S (plus i d)) t1) (lift h (S (plus i d)) t2))) (\lambda (t2: 
8602 T).(subst1 i u t1 t2)) t1 (refl_equal T (lift h (S (plus i d)) t1)) 
8603 (subst1_refl i u t1)) (\lambda (t2: T).(\lambda (H0: (subst0 i (lift h d u) 
8604 (lift h (S (plus i d)) t1) t2)).(ex2_ind T (\lambda (t3: T).(eq T t2 (lift h 
8605 (S (plus i d)) t3))) (\lambda (t3: T).(subst0 i u t1 t3)) (ex2 T (\lambda 
8606 (t3: T).(eq T t2 (lift h (S (plus i d)) t3))) (\lambda (t3: T).(subst1 i u t1 
8607 t3))) (\lambda (x0: T).(\lambda (H1: (eq T t2 (lift h (S (plus i d)) 
8608 x0))).(\lambda (H2: (subst0 i u t1 x0)).(ex_intro2 T (\lambda (t3: T).(eq T 
8609 t2 (lift h (S (plus i d)) t3))) (\lambda (t3: T).(subst1 i u t1 t3)) x0 H1 
8610 (subst1_single i u t1 x0 H2))))) (subst0_gen_lift_lt u t1 t2 i h d H0)))) x 
8611 H))))))).
8612
8613 theorem subst1_gen_lift_eq:
8614  \forall (t: T).(\forall (u: T).(\forall (x: T).(\forall (h: nat).(\forall 
8615 (d: nat).(\forall (i: nat).((le d i) \to ((lt i (plus d h)) \to ((subst1 i u 
8616 (lift h d t) x) \to (eq T x (lift h d t))))))))))
8617 \def
8618  \lambda (t: T).(\lambda (u: T).(\lambda (x: T).(\lambda (h: nat).(\lambda 
8619 (d: nat).(\lambda (i: nat).(\lambda (H: (le d i)).(\lambda (H0: (lt i (plus d 
8620 h))).(\lambda (H1: (subst1 i u (lift h d t) x)).(subst1_ind i u (lift h d t) 
8621 (\lambda (t0: T).(eq T t0 (lift h d t))) (refl_equal T (lift h d t)) (\lambda 
8622 (t2: T).(\lambda (H2: (subst0 i u (lift h d t) t2)).(subst0_gen_lift_false t 
8623 u t2 h d i H H0 H2 (eq T t2 (lift h d t))))) x H1))))))))).
8624
8625 theorem subst1_gen_lift_ge:
8626  \forall (u: T).(\forall (t1: T).(\forall (x: T).(\forall (i: nat).(\forall 
8627 (h: nat).(\forall (d: nat).((subst1 i u (lift h d t1) x) \to ((le (plus d h) 
8628 i) \to (ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda (t2: 
8629 T).(subst1 (minus i h) u t1 t2))))))))))
8630 \def
8631  \lambda (u: T).(\lambda (t1: T).(\lambda (x: T).(\lambda (i: nat).(\lambda 
8632 (h: nat).(\lambda (d: nat).(\lambda (H: (subst1 i u (lift h d t1) 
8633 x)).(\lambda (H0: (le (plus d h) i)).(subst1_ind i u (lift h d t1) (\lambda 
8634 (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift h d t2))) (\lambda (t2: 
8635 T).(subst1 (minus i h) u t1 t2)))) (ex_intro2 T (\lambda (t2: T).(eq T (lift 
8636 h d t1) (lift h d t2))) (\lambda (t2: T).(subst1 (minus i h) u t1 t2)) t1 
8637 (refl_equal T (lift h d t1)) (subst1_refl (minus i h) u t1)) (\lambda (t2: 
8638 T).(\lambda (H1: (subst0 i u (lift h d t1) t2)).(ex2_ind T (\lambda (t3: 
8639 T).(eq T t2 (lift h d t3))) (\lambda (t3: T).(subst0 (minus i h) u t1 t3)) 
8640 (ex2 T (\lambda (t3: T).(eq T t2 (lift h d t3))) (\lambda (t3: T).(subst1 
8641 (minus i h) u t1 t3))) (\lambda (x0: T).(\lambda (H2: (eq T t2 (lift h d 
8642 x0))).(\lambda (H3: (subst0 (minus i h) u t1 x0)).(ex_intro2 T (\lambda (t3: 
8643 T).(eq T t2 (lift h d t3))) (\lambda (t3: T).(subst1 (minus i h) u t1 t3)) x0 
8644 H2 (subst1_single (minus i h) u t1 x0 H3))))) (subst0_gen_lift_ge u t1 t2 i h 
8645 d H1 H0)))) x H)))))))).
8646
8647 theorem subst1_lift_lt:
8648  \forall (t1: T).(\forall (t2: T).(\forall (u: T).(\forall (i: nat).((subst1 
8649 i u t1 t2) \to (\forall (d: nat).((lt i d) \to (\forall (h: nat).(subst1 i 
8650 (lift h (minus d (S i)) u) (lift h d t1) (lift h d t2)))))))))
8651 \def
8652  \lambda (t1: T).(\lambda (t2: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
8653 (H: (subst1 i u t1 t2)).(subst1_ind i u t1 (\lambda (t: T).(\forall (d: 
8654 nat).((lt i d) \to (\forall (h: nat).(subst1 i (lift h (minus d (S i)) u) 
8655 (lift h d t1) (lift h d t)))))) (\lambda (d: nat).(\lambda (_: (lt i 
8656 d)).(\lambda (h: nat).(subst1_refl i (lift h (minus d (S i)) u) (lift h d 
8657 t1))))) (\lambda (t3: T).(\lambda (H0: (subst0 i u t1 t3)).(\lambda (d: 
8658 nat).(\lambda (H1: (lt i d)).(\lambda (h: nat).(subst1_single i (lift h 
8659 (minus d (S i)) u) (lift h d t1) (lift h d t3) (subst0_lift_lt t1 t3 u i H0 d 
8660 H1 h))))))) t2 H))))).
8661
8662 theorem subst1_lift_ge:
8663  \forall (t1: T).(\forall (t2: T).(\forall (u: T).(\forall (i: nat).(\forall 
8664 (h: nat).((subst1 i u t1 t2) \to (\forall (d: nat).((le d i) \to (subst1 
8665 (plus i h) u (lift h d t1) (lift h d t2)))))))))
8666 \def
8667  \lambda (t1: T).(\lambda (t2: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
8668 (h: nat).(\lambda (H: (subst1 i u t1 t2)).(subst1_ind i u t1 (\lambda (t: 
8669 T).(\forall (d: nat).((le d i) \to (subst1 (plus i h) u (lift h d t1) (lift h 
8670 d t))))) (\lambda (d: nat).(\lambda (_: (le d i)).(subst1_refl (plus i h) u 
8671 (lift h d t1)))) (\lambda (t3: T).(\lambda (H0: (subst0 i u t1 t3)).(\lambda 
8672 (d: nat).(\lambda (H1: (le d i)).(subst1_single (plus i h) u (lift h d t1) 
8673 (lift h d t3) (subst0_lift_ge t1 t3 u i h H0 d H1)))))) t2 H)))))).
8674
8675 theorem subst1_ex:
8676  \forall (u: T).(\forall (t1: T).(\forall (d: nat).(ex T (\lambda (t2: 
8677 T).(subst1 d u t1 (lift (S O) d t2))))))
8678 \def
8679  \lambda (u: T).(\lambda (t1: T).(T_ind (\lambda (t: T).(\forall (d: nat).(ex 
8680 T (\lambda (t2: T).(subst1 d u t (lift (S O) d t2)))))) (\lambda (n: 
8681 nat).(\lambda (d: nat).(ex_intro T (\lambda (t2: T).(subst1 d u (TSort n) 
8682 (lift (S O) d t2))) (TSort n) (eq_ind_r T (TSort n) (\lambda (t: T).(subst1 d 
8683 u (TSort n) t)) (subst1_refl d u (TSort n)) (lift (S O) d (TSort n)) 
8684 (lift_sort n (S O) d))))) (\lambda (n: nat).(\lambda (d: nat).(lt_eq_gt_e n d 
8685 (ex T (\lambda (t2: T).(subst1 d u (TLRef n) (lift (S O) d t2)))) (\lambda 
8686 (H: (lt n d)).(ex_intro T (\lambda (t2: T).(subst1 d u (TLRef n) (lift (S O) 
8687 d t2))) (TLRef n) (eq_ind_r T (TLRef n) (\lambda (t: T).(subst1 d u (TLRef n) 
8688 t)) (subst1_refl d u (TLRef n)) (lift (S O) d (TLRef n)) (lift_lref_lt n (S 
8689 O) d H)))) (\lambda (H: (eq nat n d)).(eq_ind nat n (\lambda (n0: nat).(ex T 
8690 (\lambda (t2: T).(subst1 n0 u (TLRef n) (lift (S O) n0 t2))))) (ex_intro T 
8691 (\lambda (t2: T).(subst1 n u (TLRef n) (lift (S O) n t2))) (lift n O u) 
8692 (eq_ind_r T (lift (plus (S O) n) O u) (\lambda (t: T).(subst1 n u (TLRef n) 
8693 t)) (subst1_single n u (TLRef n) (lift (S n) O u) (subst0_lref u n)) (lift (S 
8694 O) n (lift n O u)) (lift_free u n (S O) O n (le_n (plus O n)) (le_O_n n)))) d 
8695 H)) (\lambda (H: (lt d n)).(ex_intro T (\lambda (t2: T).(subst1 d u (TLRef n) 
8696 (lift (S O) d t2))) (TLRef (pred n)) (eq_ind_r T (TLRef n) (\lambda (t: 
8697 T).(subst1 d u (TLRef n) t)) (subst1_refl d u (TLRef n)) (lift (S O) d (TLRef 
8698 (pred n))) (lift_lref_gt d n H))))))) (\lambda (k: K).(\lambda (t: 
8699 T).(\lambda (H: ((\forall (d: nat).(ex T (\lambda (t2: T).(subst1 d u t (lift 
8700 (S O) d t2))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (d: nat).(ex T 
8701 (\lambda (t2: T).(subst1 d u t0 (lift (S O) d t2))))))).(\lambda (d: 
8702 nat).(let H_x \def (H d) in (let H1 \def H_x in (ex_ind T (\lambda (t2: 
8703 T).(subst1 d u t (lift (S O) d t2))) (ex T (\lambda (t2: T).(subst1 d u 
8704 (THead k t t0) (lift (S O) d t2)))) (\lambda (x: T).(\lambda (H2: (subst1 d u 
8705 t (lift (S O) d x))).(let H_x0 \def (H0 (s k d)) in (let H3 \def H_x0 in 
8706 (ex_ind T (\lambda (t2: T).(subst1 (s k d) u t0 (lift (S O) (s k d) t2))) (ex 
8707 T (\lambda (t2: T).(subst1 d u (THead k t t0) (lift (S O) d t2)))) (\lambda 
8708 (x0: T).(\lambda (H4: (subst1 (s k d) u t0 (lift (S O) (s k d) 
8709 x0))).(ex_intro T (\lambda (t2: T).(subst1 d u (THead k t t0) (lift (S O) d 
8710 t2))) (THead k x x0) (eq_ind_r T (THead k (lift (S O) d x) (lift (S O) (s k 
8711 d) x0)) (\lambda (t2: T).(subst1 d u (THead k t t0) t2)) (subst1_head u t 
8712 (lift (S O) d x) d H2 k t0 (lift (S O) (s k d) x0) H4) (lift (S O) d (THead k 
8713 x x0)) (lift_head k x x0 (S O) d))))) H3))))) H1))))))))) t1)).
8714
8715 theorem subst1_subst1:
8716  \forall (t1: T).(\forall (t2: T).(\forall (u2: T).(\forall (j: nat).((subst1 
8717 j u2 t1 t2) \to (\forall (u1: T).(\forall (u: T).(\forall (i: nat).((subst1 i 
8718 u u1 u2) \to (ex2 T (\lambda (t: T).(subst1 j u1 t1 t)) (\lambda (t: 
8719 T).(subst1 (S (plus i j)) u t t2)))))))))))
8720 \def
8721  \lambda (t1: T).(\lambda (t2: T).(\lambda (u2: T).(\lambda (j: nat).(\lambda 
8722 (H: (subst1 j u2 t1 t2)).(subst1_ind j u2 t1 (\lambda (t: T).(\forall (u1: 
8723 T).(\forall (u: T).(\forall (i: nat).((subst1 i u u1 u2) \to (ex2 T (\lambda 
8724 (t0: T).(subst1 j u1 t1 t0)) (\lambda (t0: T).(subst1 (S (plus i j)) u t0 
8725 t)))))))) (\lambda (u1: T).(\lambda (u: T).(\lambda (i: nat).(\lambda (_: 
8726 (subst1 i u u1 u2)).(ex_intro2 T (\lambda (t: T).(subst1 j u1 t1 t)) (\lambda 
8727 (t: T).(subst1 (S (plus i j)) u t t1)) t1 (subst1_refl j u1 t1) (subst1_refl 
8728 (S (plus i j)) u t1)))))) (\lambda (t3: T).(\lambda (H0: (subst0 j u2 t1 
8729 t3)).(\lambda (u1: T).(\lambda (u: T).(\lambda (i: nat).(\lambda (H1: (subst1 
8730 i u u1 u2)).(insert_eq T u2 (\lambda (t: T).(subst1 i u u1 t)) (ex2 T 
8731 (\lambda (t: T).(subst1 j u1 t1 t)) (\lambda (t: T).(subst1 (S (plus i j)) u 
8732 t t3))) (\lambda (y: T).(\lambda (H2: (subst1 i u u1 y)).(subst1_ind i u u1 
8733 (\lambda (t: T).((eq T t u2) \to (ex2 T (\lambda (t0: T).(subst1 j u1 t1 t0)) 
8734 (\lambda (t0: T).(subst1 (S (plus i j)) u t0 t3))))) (\lambda (H3: (eq T u1 
8735 u2)).(eq_ind_r T u2 (\lambda (t: T).(ex2 T (\lambda (t0: T).(subst1 j t t1 
8736 t0)) (\lambda (t0: T).(subst1 (S (plus i j)) u t0 t3)))) (ex_intro2 T 
8737 (\lambda (t: T).(subst1 j u2 t1 t)) (\lambda (t: T).(subst1 (S (plus i j)) u 
8738 t t3)) t3 (subst1_single j u2 t1 t3 H0) (subst1_refl (S (plus i j)) u t3)) u1 
8739 H3)) (\lambda (t0: T).(\lambda (H3: (subst0 i u u1 t0)).(\lambda (H4: (eq T 
8740 t0 u2)).(let H5 \def (eq_ind T t0 (\lambda (t: T).(subst0 i u u1 t)) H3 u2 
8741 H4) in (ex2_ind T (\lambda (t: T).(subst0 j u1 t1 t)) (\lambda (t: T).(subst0 
8742 (S (plus i j)) u t t3)) (ex2 T (\lambda (t: T).(subst1 j u1 t1 t)) (\lambda 
8743 (t: T).(subst1 (S (plus i j)) u t t3))) (\lambda (x: T).(\lambda (H6: (subst0 
8744 j u1 t1 x)).(\lambda (H7: (subst0 (S (plus i j)) u x t3)).(ex_intro2 T 
8745 (\lambda (t: T).(subst1 j u1 t1 t)) (\lambda (t: T).(subst1 (S (plus i j)) u 
8746 t t3)) x (subst1_single j u1 t1 x H6) (subst1_single (S (plus i j)) u x t3 
8747 H7))))) (subst0_subst0 t1 t3 u2 j H0 u1 u i H5)))))) y H2))) H1))))))) t2 
8748 H))))).
8749
8750 theorem subst1_subst1_back:
8751  \forall (t1: T).(\forall (t2: T).(\forall (u2: T).(\forall (j: nat).((subst1 
8752 j u2 t1 t2) \to (\forall (u1: T).(\forall (u: T).(\forall (i: nat).((subst1 i 
8753 u u2 u1) \to (ex2 T (\lambda (t: T).(subst1 j u1 t1 t)) (\lambda (t: 
8754 T).(subst1 (S (plus i j)) u t2 t)))))))))))
8755 \def
8756  \lambda (t1: T).(\lambda (t2: T).(\lambda (u2: T).(\lambda (j: nat).(\lambda 
8757 (H: (subst1 j u2 t1 t2)).(subst1_ind j u2 t1 (\lambda (t: T).(\forall (u1: 
8758 T).(\forall (u: T).(\forall (i: nat).((subst1 i u u2 u1) \to (ex2 T (\lambda 
8759 (t0: T).(subst1 j u1 t1 t0)) (\lambda (t0: T).(subst1 (S (plus i j)) u t 
8760 t0)))))))) (\lambda (u1: T).(\lambda (u: T).(\lambda (i: nat).(\lambda (_: 
8761 (subst1 i u u2 u1)).(ex_intro2 T (\lambda (t: T).(subst1 j u1 t1 t)) (\lambda 
8762 (t: T).(subst1 (S (plus i j)) u t1 t)) t1 (subst1_refl j u1 t1) (subst1_refl 
8763 (S (plus i j)) u t1)))))) (\lambda (t3: T).(\lambda (H0: (subst0 j u2 t1 
8764 t3)).(\lambda (u1: T).(\lambda (u: T).(\lambda (i: nat).(\lambda (H1: (subst1 
8765 i u u2 u1)).(subst1_ind i u u2 (\lambda (t: T).(ex2 T (\lambda (t0: 
8766 T).(subst1 j t t1 t0)) (\lambda (t0: T).(subst1 (S (plus i j)) u t3 t0)))) 
8767 (ex_intro2 T (\lambda (t: T).(subst1 j u2 t1 t)) (\lambda (t: T).(subst1 (S 
8768 (plus i j)) u t3 t)) t3 (subst1_single j u2 t1 t3 H0) (subst1_refl (S (plus i 
8769 j)) u t3)) (\lambda (t0: T).(\lambda (H2: (subst0 i u u2 t0)).(ex2_ind T 
8770 (\lambda (t: T).(subst0 j t0 t1 t)) (\lambda (t: T).(subst0 (S (plus i j)) u 
8771 t3 t)) (ex2 T (\lambda (t: T).(subst1 j t0 t1 t)) (\lambda (t: T).(subst1 (S 
8772 (plus i j)) u t3 t))) (\lambda (x: T).(\lambda (H3: (subst0 j t0 t1 
8773 x)).(\lambda (H4: (subst0 (S (plus i j)) u t3 x)).(ex_intro2 T (\lambda (t: 
8774 T).(subst1 j t0 t1 t)) (\lambda (t: T).(subst1 (S (plus i j)) u t3 t)) x 
8775 (subst1_single j t0 t1 x H3) (subst1_single (S (plus i j)) u t3 x H4))))) 
8776 (subst0_subst0_back t1 t3 u2 j H0 t0 u i H2)))) u1 H1))))))) t2 H))))).
8777
8778 theorem subst1_trans:
8779  \forall (t2: T).(\forall (t1: T).(\forall (v: T).(\forall (i: nat).((subst1 
8780 i v t1 t2) \to (\forall (t3: T).((subst1 i v t2 t3) \to (subst1 i v t1 
8781 t3)))))))
8782 \def
8783  \lambda (t2: T).(\lambda (t1: T).(\lambda (v: T).(\lambda (i: nat).(\lambda 
8784 (H: (subst1 i v t1 t2)).(subst1_ind i v t1 (\lambda (t: T).(\forall (t3: 
8785 T).((subst1 i v t t3) \to (subst1 i v t1 t3)))) (\lambda (t3: T).(\lambda 
8786 (H0: (subst1 i v t1 t3)).H0)) (\lambda (t3: T).(\lambda (H0: (subst0 i v t1 
8787 t3)).(\lambda (t4: T).(\lambda (H1: (subst1 i v t3 t4)).(subst1_ind i v t3 
8788 (\lambda (t: T).(subst1 i v t1 t)) (subst1_single i v t1 t3 H0) (\lambda (t0: 
8789 T).(\lambda (H2: (subst0 i v t3 t0)).(subst1_single i v t1 t0 (subst0_trans 
8790 t3 t1 v i H0 t0 H2)))) t4 H1))))) t2 H))))).
8791
8792 theorem subst1_confluence_neq:
8793  \forall (t0: T).(\forall (t1: T).(\forall (u1: T).(\forall (i1: 
8794 nat).((subst1 i1 u1 t0 t1) \to (\forall (t2: T).(\forall (u2: T).(\forall 
8795 (i2: nat).((subst1 i2 u2 t0 t2) \to ((not (eq nat i1 i2)) \to (ex2 T (\lambda 
8796 (t: T).(subst1 i2 u2 t1 t)) (\lambda (t: T).(subst1 i1 u1 t2 t))))))))))))
8797 \def
8798  \lambda (t0: T).(\lambda (t1: T).(\lambda (u1: T).(\lambda (i1: 
8799 nat).(\lambda (H: (subst1 i1 u1 t0 t1)).(subst1_ind i1 u1 t0 (\lambda (t: 
8800 T).(\forall (t2: T).(\forall (u2: T).(\forall (i2: nat).((subst1 i2 u2 t0 t2) 
8801 \to ((not (eq nat i1 i2)) \to (ex2 T (\lambda (t3: T).(subst1 i2 u2 t t3)) 
8802 (\lambda (t3: T).(subst1 i1 u1 t2 t3))))))))) (\lambda (t2: T).(\lambda (u2: 
8803 T).(\lambda (i2: nat).(\lambda (H0: (subst1 i2 u2 t0 t2)).(\lambda (_: (not 
8804 (eq nat i1 i2))).(ex_intro2 T (\lambda (t: T).(subst1 i2 u2 t0 t)) (\lambda 
8805 (t: T).(subst1 i1 u1 t2 t)) t2 H0 (subst1_refl i1 u1 t2))))))) (\lambda (t2: 
8806 T).(\lambda (H0: (subst0 i1 u1 t0 t2)).(\lambda (t3: T).(\lambda (u2: 
8807 T).(\lambda (i2: nat).(\lambda (H1: (subst1 i2 u2 t0 t3)).(\lambda (H2: (not 
8808 (eq nat i1 i2))).(subst1_ind i2 u2 t0 (\lambda (t: T).(ex2 T (\lambda (t4: 
8809 T).(subst1 i2 u2 t2 t4)) (\lambda (t4: T).(subst1 i1 u1 t t4)))) (ex_intro2 T 
8810 (\lambda (t: T).(subst1 i2 u2 t2 t)) (\lambda (t: T).(subst1 i1 u1 t0 t)) t2 
8811 (subst1_refl i2 u2 t2) (subst1_single i1 u1 t0 t2 H0)) (\lambda (t4: 
8812 T).(\lambda (H3: (subst0 i2 u2 t0 t4)).(ex2_ind T (\lambda (t: T).(subst0 i1 
8813 u1 t4 t)) (\lambda (t: T).(subst0 i2 u2 t2 t)) (ex2 T (\lambda (t: T).(subst1 
8814 i2 u2 t2 t)) (\lambda (t: T).(subst1 i1 u1 t4 t))) (\lambda (x: T).(\lambda 
8815 (H4: (subst0 i1 u1 t4 x)).(\lambda (H5: (subst0 i2 u2 t2 x)).(ex_intro2 T 
8816 (\lambda (t: T).(subst1 i2 u2 t2 t)) (\lambda (t: T).(subst1 i1 u1 t4 t)) x 
8817 (subst1_single i2 u2 t2 x H5) (subst1_single i1 u1 t4 x H4))))) 
8818 (subst0_confluence_neq t0 t4 u2 i2 H3 t2 u1 i1 H0 (sym_not_eq nat i1 i2 
8819 H2))))) t3 H1)))))))) t1 H))))).
8820
8821 theorem subst1_confluence_eq:
8822  \forall (t0: T).(\forall (t1: T).(\forall (u: T).(\forall (i: nat).((subst1 
8823 i u t0 t1) \to (\forall (t2: T).((subst1 i u t0 t2) \to (ex2 T (\lambda (t: 
8824 T).(subst1 i u t1 t)) (\lambda (t: T).(subst1 i u t2 t)))))))))
8825 \def
8826  \lambda (t0: T).(\lambda (t1: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
8827 (H: (subst1 i u t0 t1)).(subst1_ind i u t0 (\lambda (t: T).(\forall (t2: 
8828 T).((subst1 i u t0 t2) \to (ex2 T (\lambda (t3: T).(subst1 i u t t3)) 
8829 (\lambda (t3: T).(subst1 i u t2 t3)))))) (\lambda (t2: T).(\lambda (H0: 
8830 (subst1 i u t0 t2)).(ex_intro2 T (\lambda (t: T).(subst1 i u t0 t)) (\lambda 
8831 (t: T).(subst1 i u t2 t)) t2 H0 (subst1_refl i u t2)))) (\lambda (t2: 
8832 T).(\lambda (H0: (subst0 i u t0 t2)).(\lambda (t3: T).(\lambda (H1: (subst1 i 
8833 u t0 t3)).(subst1_ind i u t0 (\lambda (t: T).(ex2 T (\lambda (t4: T).(subst1 
8834 i u t2 t4)) (\lambda (t4: T).(subst1 i u t t4)))) (ex_intro2 T (\lambda (t: 
8835 T).(subst1 i u t2 t)) (\lambda (t: T).(subst1 i u t0 t)) t2 (subst1_refl i u 
8836 t2) (subst1_single i u t0 t2 H0)) (\lambda (t4: T).(\lambda (H2: (subst0 i u 
8837 t0 t4)).(or4_ind (eq T t4 t2) (ex2 T (\lambda (t: T).(subst0 i u t4 t)) 
8838 (\lambda (t: T).(subst0 i u t2 t))) (subst0 i u t4 t2) (subst0 i u t2 t4) 
8839 (ex2 T (\lambda (t: T).(subst1 i u t2 t)) (\lambda (t: T).(subst1 i u t4 t))) 
8840 (\lambda (H3: (eq T t4 t2)).(eq_ind_r T t2 (\lambda (t: T).(ex2 T (\lambda 
8841 (t5: T).(subst1 i u t2 t5)) (\lambda (t5: T).(subst1 i u t t5)))) (ex_intro2 
8842 T (\lambda (t: T).(subst1 i u t2 t)) (\lambda (t: T).(subst1 i u t2 t)) t2 
8843 (subst1_refl i u t2) (subst1_refl i u t2)) t4 H3)) (\lambda (H3: (ex2 T 
8844 (\lambda (t: T).(subst0 i u t4 t)) (\lambda (t: T).(subst0 i u t2 
8845 t)))).(ex2_ind T (\lambda (t: T).(subst0 i u t4 t)) (\lambda (t: T).(subst0 i 
8846 u t2 t)) (ex2 T (\lambda (t: T).(subst1 i u t2 t)) (\lambda (t: T).(subst1 i 
8847 u t4 t))) (\lambda (x: T).(\lambda (H4: (subst0 i u t4 x)).(\lambda (H5: 
8848 (subst0 i u t2 x)).(ex_intro2 T (\lambda (t: T).(subst1 i u t2 t)) (\lambda 
8849 (t: T).(subst1 i u t4 t)) x (subst1_single i u t2 x H5) (subst1_single i u t4 
8850 x H4))))) H3)) (\lambda (H3: (subst0 i u t4 t2)).(ex_intro2 T (\lambda (t: 
8851 T).(subst1 i u t2 t)) (\lambda (t: T).(subst1 i u t4 t)) t2 (subst1_refl i u 
8852 t2) (subst1_single i u t4 t2 H3))) (\lambda (H3: (subst0 i u t2 
8853 t4)).(ex_intro2 T (\lambda (t: T).(subst1 i u t2 t)) (\lambda (t: T).(subst1 
8854 i u t4 t)) t4 (subst1_single i u t2 t4 H3) (subst1_refl i u t4))) 
8855 (subst0_confluence_eq t0 t4 u i H2 t2 H0)))) t3 H1))))) t1 H))))).
8856
8857 theorem subst1_confluence_lift:
8858  \forall (t0: T).(\forall (t1: T).(\forall (u: T).(\forall (i: nat).((subst1 
8859 i u t0 (lift (S O) i t1)) \to (\forall (t2: T).((subst1 i u t0 (lift (S O) i 
8860 t2)) \to (eq T t1 t2)))))))
8861 \def
8862  \lambda (t0: T).(\lambda (t1: T).(\lambda (u: T).(\lambda (i: nat).(\lambda 
8863 (H: (subst1 i u t0 (lift (S O) i t1))).(insert_eq T (lift (S O) i t1) 
8864 (\lambda (t: T).(subst1 i u t0 t)) (\forall (t2: T).((subst1 i u t0 (lift (S 
8865 O) i t2)) \to (eq T t1 t2))) (\lambda (y: T).(\lambda (H0: (subst1 i u t0 
8866 y)).(subst1_ind i u t0 (\lambda (t: T).((eq T t (lift (S O) i t1)) \to 
8867 (\forall (t2: T).((subst1 i u t0 (lift (S O) i t2)) \to (eq T t1 t2))))) 
8868 (\lambda (H1: (eq T t0 (lift (S O) i t1))).(\lambda (t2: T).(\lambda (H2: 
8869 (subst1 i u t0 (lift (S O) i t2))).(let H3 \def (eq_ind T t0 (\lambda (t: 
8870 T).(subst1 i u t (lift (S O) i t2))) H2 (lift (S O) i t1) H1) in (let H4 \def 
8871 (sym_equal T (lift (S O) i t2) (lift (S O) i t1) (subst1_gen_lift_eq t1 u 
8872 (lift (S O) i t2) (S O) i i (le_n i) (eq_ind_r nat (plus (S O) i) (\lambda 
8873 (n: nat).(lt i n)) (le_n (plus (S O) i)) (plus i (S O)) (plus_comm i (S O))) 
8874 H3)) in (lift_inj t1 t2 (S O) i H4)))))) (\lambda (t2: T).(\lambda (H1: 
8875 (subst0 i u t0 t2)).(\lambda (H2: (eq T t2 (lift (S O) i t1))).(\lambda (t3: 
8876 T).(\lambda (H3: (subst1 i u t0 (lift (S O) i t3))).(let H4 \def (eq_ind T t2 
8877 (\lambda (t: T).(subst0 i u t0 t)) H1 (lift (S O) i t1) H2) in (insert_eq T 
8878 (lift (S O) i t3) (\lambda (t: T).(subst1 i u t0 t)) (eq T t1 t3) (\lambda 
8879 (y0: T).(\lambda (H5: (subst1 i u t0 y0)).(subst1_ind i u t0 (\lambda (t: 
8880 T).((eq T t (lift (S O) i t3)) \to (eq T t1 t3))) (\lambda (H6: (eq T t0 
8881 (lift (S O) i t3))).(let H7 \def (eq_ind T t0 (\lambda (t: T).(subst0 i u t 
8882 (lift (S O) i t1))) H4 (lift (S O) i t3) H6) in (subst0_gen_lift_false t3 u 
8883 (lift (S O) i t1) (S O) i i (le_n i) (eq_ind_r nat (plus (S O) i) (\lambda 
8884 (n: nat).(lt i n)) (le_n (plus (S O) i)) (plus i (S O)) (plus_comm i (S O))) 
8885 H7 (eq T t1 t3)))) (\lambda (t4: T).(\lambda (H6: (subst0 i u t0 
8886 t4)).(\lambda (H7: (eq T t4 (lift (S O) i t3))).(let H8 \def (eq_ind T t4 
8887 (\lambda (t: T).(subst0 i u t0 t)) H6 (lift (S O) i t3) H7) in (sym_eq T t3 
8888 t1 (subst0_confluence_lift t0 t3 u i H8 t1 H4)))))) y0 H5))) H3))))))) y 
8889 H0))) H))))).
8890
8891 inductive csubst0: nat \to (T \to (C \to (C \to Prop))) \def
8892 | csubst0_snd: \forall (k: K).(\forall (i: nat).(\forall (v: T).(\forall (u1: 
8893 T).(\forall (u2: T).((subst0 i v u1 u2) \to (\forall (c: C).(csubst0 (s k i) 
8894 v (CHead c k u1) (CHead c k u2))))))))
8895 | csubst0_fst: \forall (k: K).(\forall (i: nat).(\forall (c1: C).(\forall 
8896 (c2: C).(\forall (v: T).((csubst0 i v c1 c2) \to (\forall (u: T).(csubst0 (s 
8897 k i) v (CHead c1 k u) (CHead c2 k u))))))))
8898 | csubst0_both: \forall (k: K).(\forall (i: nat).(\forall (v: T).(\forall 
8899 (u1: T).(\forall (u2: T).((subst0 i v u1 u2) \to (\forall (c1: C).(\forall 
8900 (c2: C).((csubst0 i v c1 c2) \to (csubst0 (s k i) v (CHead c1 k u1) (CHead c2 
8901 k u2)))))))))).
8902
8903 theorem csubst0_snd_bind:
8904  \forall (b: B).(\forall (i: nat).(\forall (v: T).(\forall (u1: T).(\forall 
8905 (u2: T).((subst0 i v u1 u2) \to (\forall (c: C).(csubst0 (S i) v (CHead c 
8906 (Bind b) u1) (CHead c (Bind b) u2))))))))
8907 \def
8908  \lambda (b: B).(\lambda (i: nat).(\lambda (v: T).(\lambda (u1: T).(\lambda 
8909 (u2: T).(\lambda (H: (subst0 i v u1 u2)).(\lambda (c: C).(eq_ind nat (s (Bind 
8910 b) i) (\lambda (n: nat).(csubst0 n v (CHead c (Bind b) u1) (CHead c (Bind b) 
8911 u2))) (csubst0_snd (Bind b) i v u1 u2 H c) (S i) (refl_equal nat (S 
8912 i))))))))).
8913
8914 theorem csubst0_fst_bind:
8915  \forall (b: B).(\forall (i: nat).(\forall (c1: C).(\forall (c2: C).(\forall 
8916 (v: T).((csubst0 i v c1 c2) \to (\forall (u: T).(csubst0 (S i) v (CHead c1 
8917 (Bind b) u) (CHead c2 (Bind b) u))))))))
8918 \def
8919  \lambda (b: B).(\lambda (i: nat).(\lambda (c1: C).(\lambda (c2: C).(\lambda 
8920 (v: T).(\lambda (H: (csubst0 i v c1 c2)).(\lambda (u: T).(eq_ind nat (s (Bind 
8921 b) i) (\lambda (n: nat).(csubst0 n v (CHead c1 (Bind b) u) (CHead c2 (Bind b) 
8922 u))) (csubst0_fst (Bind b) i c1 c2 v H u) (S i) (refl_equal nat (S i))))))))).
8923
8924 theorem csubst0_both_bind:
8925  \forall (b: B).(\forall (i: nat).(\forall (v: T).(\forall (u1: T).(\forall 
8926 (u2: T).((subst0 i v u1 u2) \to (\forall (c1: C).(\forall (c2: C).((csubst0 i 
8927 v c1 c2) \to (csubst0 (S i) v (CHead c1 (Bind b) u1) (CHead c2 (Bind b) 
8928 u2))))))))))
8929 \def
8930  \lambda (b: B).(\lambda (i: nat).(\lambda (v: T).(\lambda (u1: T).(\lambda 
8931 (u2: T).(\lambda (H: (subst0 i v u1 u2)).(\lambda (c1: C).(\lambda (c2: 
8932 C).(\lambda (H0: (csubst0 i v c1 c2)).(eq_ind nat (s (Bind b) i) (\lambda (n: 
8933 nat).(csubst0 n v (CHead c1 (Bind b) u1) (CHead c2 (Bind b) u2))) 
8934 (csubst0_both (Bind b) i v u1 u2 H c1 c2 H0) (S i) (refl_equal nat (S 
8935 i))))))))))).
8936
8937 theorem csubst0_gen_sort:
8938  \forall (x: C).(\forall (v: T).(\forall (i: nat).(\forall (n: nat).((csubst0 
8939 i v (CSort n) x) \to (\forall (P: Prop).P)))))
8940 \def
8941  \lambda (x: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (n: nat).(\lambda 
8942 (H: (csubst0 i v (CSort n) x)).(\lambda (P: Prop).(let H0 \def (match H 
8943 return (\lambda (n0: nat).(\lambda (t: T).(\lambda (c: C).(\lambda (c0: 
8944 C).(\lambda (_: (csubst0 n0 t c c0)).((eq nat n0 i) \to ((eq T t v) \to ((eq 
8945 C c (CSort n)) \to ((eq C c0 x) \to P))))))))) with [(csubst0_snd k i0 v0 u1 
8946 u2 H0 c) \Rightarrow (\lambda (H1: (eq nat (s k i0) i)).(\lambda (H2: (eq T 
8947 v0 v)).(\lambda (H3: (eq C (CHead c k u1) (CSort n))).(\lambda (H4: (eq C 
8948 (CHead c k u2) x)).(eq_ind nat (s k i0) (\lambda (_: nat).((eq T v0 v) \to 
8949 ((eq C (CHead c k u1) (CSort n)) \to ((eq C (CHead c k u2) x) \to ((subst0 i0 
8950 v0 u1 u2) \to P))))) (\lambda (H5: (eq T v0 v)).(eq_ind T v (\lambda (t: 
8951 T).((eq C (CHead c k u1) (CSort n)) \to ((eq C (CHead c k u2) x) \to ((subst0 
8952 i0 t u1 u2) \to P)))) (\lambda (H6: (eq C (CHead c k u1) (CSort n))).(let H7 
8953 \def (eq_ind C (CHead c k u1) (\lambda (e: C).(match e return (\lambda (_: 
8954 C).Prop) with [(CSort _) \Rightarrow False | (CHead _ _ _) \Rightarrow 
8955 True])) I (CSort n) H6) in (False_ind ((eq C (CHead c k u2) x) \to ((subst0 
8956 i0 v u1 u2) \to P)) H7))) v0 (sym_eq T v0 v H5))) i H1 H2 H3 H4 H0))))) | 
8957 (csubst0_fst k i0 c1 c2 v0 H0 u) \Rightarrow (\lambda (H1: (eq nat (s k i0) 
8958 i)).(\lambda (H2: (eq T v0 v)).(\lambda (H3: (eq C (CHead c1 k u) (CSort 
8959 n))).(\lambda (H4: (eq C (CHead c2 k u) x)).(eq_ind nat (s k i0) (\lambda (_: 
8960 nat).((eq T v0 v) \to ((eq C (CHead c1 k u) (CSort n)) \to ((eq C (CHead c2 k 
8961 u) x) \to ((csubst0 i0 v0 c1 c2) \to P))))) (\lambda (H5: (eq T v0 
8962 v)).(eq_ind T v (\lambda (t: T).((eq C (CHead c1 k u) (CSort n)) \to ((eq C 
8963 (CHead c2 k u) x) \to ((csubst0 i0 t c1 c2) \to P)))) (\lambda (H6: (eq C 
8964 (CHead c1 k u) (CSort n))).(let H7 \def (eq_ind C (CHead c1 k u) (\lambda (e: 
8965 C).(match e return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | 
8966 (CHead _ _ _) \Rightarrow True])) I (CSort n) H6) in (False_ind ((eq C (CHead 
8967 c2 k u) x) \to ((csubst0 i0 v c1 c2) \to P)) H7))) v0 (sym_eq T v0 v H5))) i 
8968 H1 H2 H3 H4 H0))))) | (csubst0_both k i0 v0 u1 u2 H0 c1 c2 H1) \Rightarrow 
8969 (\lambda (H2: (eq nat (s k i0) i)).(\lambda (H3: (eq T v0 v)).(\lambda (H4: 
8970 (eq C (CHead c1 k u1) (CSort n))).(\lambda (H5: (eq C (CHead c2 k u2) 
8971 x)).(eq_ind nat (s k i0) (\lambda (_: nat).((eq T v0 v) \to ((eq C (CHead c1 
8972 k u1) (CSort n)) \to ((eq C (CHead c2 k u2) x) \to ((subst0 i0 v0 u1 u2) \to 
8973 ((csubst0 i0 v0 c1 c2) \to P)))))) (\lambda (H6: (eq T v0 v)).(eq_ind T v 
8974 (\lambda (t: T).((eq C (CHead c1 k u1) (CSort n)) \to ((eq C (CHead c2 k u2) 
8975 x) \to ((subst0 i0 t u1 u2) \to ((csubst0 i0 t c1 c2) \to P))))) (\lambda 
8976 (H7: (eq C (CHead c1 k u1) (CSort n))).(let H8 \def (eq_ind C (CHead c1 k u1) 
8977 (\lambda (e: C).(match e return (\lambda (_: C).Prop) with [(CSort _) 
8978 \Rightarrow False | (CHead _ _ _) \Rightarrow True])) I (CSort n) H7) in 
8979 (False_ind ((eq C (CHead c2 k u2) x) \to ((subst0 i0 v u1 u2) \to ((csubst0 
8980 i0 v c1 c2) \to P))) H8))) v0 (sym_eq T v0 v H6))) i H2 H3 H4 H5 H0 H1)))))]) 
8981 in (H0 (refl_equal nat i) (refl_equal T v) (refl_equal C (CSort n)) 
8982 (refl_equal C x)))))))).
8983
8984 theorem csubst0_gen_head:
8985  \forall (k: K).(\forall (c1: C).(\forall (x: C).(\forall (u1: T).(\forall 
8986 (v: T).(\forall (i: nat).((csubst0 i v (CHead c1 k u1) x) \to (or3 (ex3_2 T 
8987 nat (\lambda (_: T).(\lambda (j: nat).(eq nat i (s k j)))) (\lambda (u2: 
8988 T).(\lambda (_: nat).(eq C x (CHead c1 k u2)))) (\lambda (u2: T).(\lambda (j: 
8989 nat).(subst0 j v u1 u2)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
8990 nat i (s k j)))) (\lambda (c2: C).(\lambda (_: nat).(eq C x (CHead c2 k 
8991 u1)))) (\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 c2)))) (ex4_3 T C 
8992 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat i (s k j))))) 
8993 (\lambda (u2: T).(\lambda (c2: C).(\lambda (_: nat).(eq C x (CHead c2 k 
8994 u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
8995 u2)))) (\lambda (_: T).(\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 
8996 c2))))))))))))
8997 \def
8998  \lambda (k: K).(\lambda (c1: C).(\lambda (x: C).(\lambda (u1: T).(\lambda 
8999 (v: T).(\lambda (i: nat).(\lambda (H: (csubst0 i v (CHead c1 k u1) x)).(let 
9000 H0 \def (match H return (\lambda (n: nat).(\lambda (t: T).(\lambda (c: 
9001 C).(\lambda (c0: C).(\lambda (_: (csubst0 n t c c0)).((eq nat n i) \to ((eq T 
9002 t v) \to ((eq C c (CHead c1 k u1)) \to ((eq C c0 x) \to (or3 (ex3_2 T nat 
9003 (\lambda (_: T).(\lambda (j: nat).(eq nat i (s k j)))) (\lambda (u2: 
9004 T).(\lambda (_: nat).(eq C x (CHead c1 k u2)))) (\lambda (u2: T).(\lambda (j: 
9005 nat).(subst0 j v u1 u2)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
9006 nat i (s k j)))) (\lambda (c2: C).(\lambda (_: nat).(eq C x (CHead c2 k 
9007 u1)))) (\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 c2)))) (ex4_3 T C 
9008 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat i (s k j))))) 
9009 (\lambda (u2: T).(\lambda (c2: C).(\lambda (_: nat).(eq C x (CHead c2 k 
9010 u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
9011 u2)))) (\lambda (_: T).(\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 
9012 c2))))))))))))))) with [(csubst0_snd k0 i0 v0 u0 u2 H0 c) \Rightarrow 
9013 (\lambda (H1: (eq nat (s k0 i0) i)).(\lambda (H2: (eq T v0 v)).(\lambda (H3: 
9014 (eq C (CHead c k0 u0) (CHead c1 k u1))).(\lambda (H4: (eq C (CHead c k0 u2) 
9015 x)).(eq_ind nat (s k0 i0) (\lambda (n: nat).((eq T v0 v) \to ((eq C (CHead c 
9016 k0 u0) (CHead c1 k u1)) \to ((eq C (CHead c k0 u2) x) \to ((subst0 i0 v0 u0 
9017 u2) \to (or3 (ex3_2 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat n (s k 
9018 j)))) (\lambda (u3: T).(\lambda (_: nat).(eq C x (CHead c1 k u3)))) (\lambda 
9019 (u3: T).(\lambda (j: nat).(subst0 j v u1 u3)))) (ex3_2 C nat (\lambda (_: 
9020 C).(\lambda (j: nat).(eq nat n (s k j)))) (\lambda (c2: C).(\lambda (_: 
9021 nat).(eq C x (CHead c2 k u1)))) (\lambda (c2: C).(\lambda (j: nat).(csubst0 j 
9022 v c1 c2)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: 
9023 nat).(eq nat n (s k j))))) (\lambda (u3: T).(\lambda (c2: C).(\lambda (_: 
9024 nat).(eq C x (CHead c2 k u3))))) (\lambda (u3: T).(\lambda (_: C).(\lambda 
9025 (j: nat).(subst0 j v u1 u3)))) (\lambda (_: T).(\lambda (c2: C).(\lambda (j: 
9026 nat).(csubst0 j v c1 c2))))))))))) (\lambda (H5: (eq T v0 v)).(eq_ind T v 
9027 (\lambda (t: T).((eq C (CHead c k0 u0) (CHead c1 k u1)) \to ((eq C (CHead c 
9028 k0 u2) x) \to ((subst0 i0 t u0 u2) \to (or3 (ex3_2 T nat (\lambda (_: 
9029 T).(\lambda (j: nat).(eq nat (s k0 i0) (s k j)))) (\lambda (u3: T).(\lambda 
9030 (_: nat).(eq C x (CHead c1 k u3)))) (\lambda (u3: T).(\lambda (j: 
9031 nat).(subst0 j v u1 u3)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
9032 nat (s k0 i0) (s k j)))) (\lambda (c2: C).(\lambda (_: nat).(eq C x (CHead c2 
9033 k u1)))) (\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 c2)))) (ex4_3 T C 
9034 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k0 i0) (s k 
9035 j))))) (\lambda (u3: T).(\lambda (c2: C).(\lambda (_: nat).(eq C x (CHead c2 
9036 k u3))))) (\lambda (u3: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
9037 u3)))) (\lambda (_: T).(\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 
9038 c2)))))))))) (\lambda (H6: (eq C (CHead c k0 u0) (CHead c1 k u1))).(let H7 
9039 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
9040 [(CSort _) \Rightarrow u0 | (CHead _ _ t) \Rightarrow t])) (CHead c k0 u0) 
9041 (CHead c1 k u1) H6) in ((let H8 \def (f_equal C K (\lambda (e: C).(match e 
9042 return (\lambda (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) 
9043 \Rightarrow k])) (CHead c k0 u0) (CHead c1 k u1) H6) in ((let H9 \def 
9044 (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort 
9045 _) \Rightarrow c | (CHead c _ _) \Rightarrow c])) (CHead c k0 u0) (CHead c1 k 
9046 u1) H6) in (eq_ind C c1 (\lambda (c0: C).((eq K k0 k) \to ((eq T u0 u1) \to 
9047 ((eq C (CHead c0 k0 u2) x) \to ((subst0 i0 v u0 u2) \to (or3 (ex3_2 T nat 
9048 (\lambda (_: T).(\lambda (j: nat).(eq nat (s k0 i0) (s k j)))) (\lambda (u3: 
9049 T).(\lambda (_: nat).(eq C x (CHead c1 k u3)))) (\lambda (u3: T).(\lambda (j: 
9050 nat).(subst0 j v u1 u3)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
9051 nat (s k0 i0) (s k j)))) (\lambda (c2: C).(\lambda (_: nat).(eq C x (CHead c2 
9052 k u1)))) (\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 c2)))) (ex4_3 T C 
9053 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k0 i0) (s k 
9054 j))))) (\lambda (u3: T).(\lambda (c2: C).(\lambda (_: nat).(eq C x (CHead c2 
9055 k u3))))) (\lambda (u3: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
9056 u3)))) (\lambda (_: T).(\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 
9057 c2))))))))))) (\lambda (H10: (eq K k0 k)).(eq_ind K k (\lambda (k1: K).((eq T 
9058 u0 u1) \to ((eq C (CHead c1 k1 u2) x) \to ((subst0 i0 v u0 u2) \to (or3 
9059 (ex3_2 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat (s k1 i0) (s k j)))) 
9060 (\lambda (u3: T).(\lambda (_: nat).(eq C x (CHead c1 k u3)))) (\lambda (u3: 
9061 T).(\lambda (j: nat).(subst0 j v u1 u3)))) (ex3_2 C nat (\lambda (_: 
9062 C).(\lambda (j: nat).(eq nat (s k1 i0) (s k j)))) (\lambda (c2: C).(\lambda 
9063 (_: nat).(eq C x (CHead c2 k u1)))) (\lambda (c2: C).(\lambda (j: 
9064 nat).(csubst0 j v c1 c2)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: 
9065 C).(\lambda (j: nat).(eq nat (s k1 i0) (s k j))))) (\lambda (u3: T).(\lambda 
9066 (c2: C).(\lambda (_: nat).(eq C x (CHead c2 k u3))))) (\lambda (u3: 
9067 T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 u3)))) (\lambda (_: 
9068 T).(\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 c2)))))))))) (\lambda 
9069 (H11: (eq T u0 u1)).(eq_ind T u1 (\lambda (t: T).((eq C (CHead c1 k u2) x) 
9070 \to ((subst0 i0 v t u2) \to (or3 (ex3_2 T nat (\lambda (_: T).(\lambda (j: 
9071 nat).(eq nat (s k i0) (s k j)))) (\lambda (u3: T).(\lambda (_: nat).(eq C x 
9072 (CHead c1 k u3)))) (\lambda (u3: T).(\lambda (j: nat).(subst0 j v u1 u3)))) 
9073 (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) 
9074 (\lambda (c2: C).(\lambda (_: nat).(eq C x (CHead c2 k u1)))) (\lambda (c2: 
9075 C).(\lambda (j: nat).(csubst0 j v c1 c2)))) (ex4_3 T C nat (\lambda (_: 
9076 T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k i0) (s k j))))) (\lambda 
9077 (u3: T).(\lambda (c2: C).(\lambda (_: nat).(eq C x (CHead c2 k u3))))) 
9078 (\lambda (u3: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 u3)))) 
9079 (\lambda (_: T).(\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 
9080 c2))))))))) (\lambda (H12: (eq C (CHead c1 k u2) x)).(eq_ind C (CHead c1 k 
9081 u2) (\lambda (c0: C).((subst0 i0 v u1 u2) \to (or3 (ex3_2 T nat (\lambda (_: 
9082 T).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) (\lambda (u3: T).(\lambda 
9083 (_: nat).(eq C c0 (CHead c1 k u3)))) (\lambda (u3: T).(\lambda (j: 
9084 nat).(subst0 j v u1 u3)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
9085 nat (s k i0) (s k j)))) (\lambda (c2: C).(\lambda (_: nat).(eq C c0 (CHead c2 
9086 k u1)))) (\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 c2)))) (ex4_3 T C 
9087 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k i0) (s k 
9088 j))))) (\lambda (u3: T).(\lambda (c2: C).(\lambda (_: nat).(eq C c0 (CHead c2 
9089 k u3))))) (\lambda (u3: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
9090 u3)))) (\lambda (_: T).(\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 
9091 c2)))))))) (\lambda (H13: (subst0 i0 v u1 u2)).(let H \def (eq_ind K k0 
9092 (\lambda (k: K).(eq nat (s k i0) i)) H1 k H10) in (or3_intro0 (ex3_2 T nat 
9093 (\lambda (_: T).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) (\lambda (u3: 
9094 T).(\lambda (_: nat).(eq C (CHead c1 k u2) (CHead c1 k u3)))) (\lambda (u3: 
9095 T).(\lambda (j: nat).(subst0 j v u1 u3)))) (ex3_2 C nat (\lambda (_: 
9096 C).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) (\lambda (c2: C).(\lambda 
9097 (_: nat).(eq C (CHead c1 k u2) (CHead c2 k u1)))) (\lambda (c2: C).(\lambda 
9098 (j: nat).(csubst0 j v c1 c2)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: 
9099 C).(\lambda (j: nat).(eq nat (s k i0) (s k j))))) (\lambda (u3: T).(\lambda 
9100 (c2: C).(\lambda (_: nat).(eq C (CHead c1 k u2) (CHead c2 k u3))))) (\lambda 
9101 (u3: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 u3)))) (\lambda (_: 
9102 T).(\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 c2))))) (ex3_2_intro T 
9103 nat (\lambda (_: T).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) (\lambda 
9104 (u3: T).(\lambda (_: nat).(eq C (CHead c1 k u2) (CHead c1 k u3)))) (\lambda 
9105 (u3: T).(\lambda (j: nat).(subst0 j v u1 u3))) u2 i0 (refl_equal nat (s k 
9106 i0)) (refl_equal C (CHead c1 k u2)) H13)))) x H12)) u0 (sym_eq T u0 u1 H11))) 
9107 k0 (sym_eq K k0 k H10))) c (sym_eq C c c1 H9))) H8)) H7))) v0 (sym_eq T v0 v 
9108 H5))) i H1 H2 H3 H4 H0))))) | (csubst0_fst k0 i0 c0 c2 v0 H0 u) \Rightarrow 
9109 (\lambda (H1: (eq nat (s k0 i0) i)).(\lambda (H2: (eq T v0 v)).(\lambda (H3: 
9110 (eq C (CHead c0 k0 u) (CHead c1 k u1))).(\lambda (H4: (eq C (CHead c2 k0 u) 
9111 x)).(eq_ind nat (s k0 i0) (\lambda (n: nat).((eq T v0 v) \to ((eq C (CHead c0 
9112 k0 u) (CHead c1 k u1)) \to ((eq C (CHead c2 k0 u) x) \to ((csubst0 i0 v0 c0 
9113 c2) \to (or3 (ex3_2 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat n (s k 
9114 j)))) (\lambda (u2: T).(\lambda (_: nat).(eq C x (CHead c1 k u2)))) (\lambda 
9115 (u2: T).(\lambda (j: nat).(subst0 j v u1 u2)))) (ex3_2 C nat (\lambda (_: 
9116 C).(\lambda (j: nat).(eq nat n (s k j)))) (\lambda (c3: C).(\lambda (_: 
9117 nat).(eq C x (CHead c3 k u1)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j 
9118 v c1 c3)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: 
9119 nat).(eq nat n (s k j))))) (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: 
9120 nat).(eq C x (CHead c3 k u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda 
9121 (j: nat).(subst0 j v u1 u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: 
9122 nat).(csubst0 j v c1 c3))))))))))) (\lambda (H5: (eq T v0 v)).(eq_ind T v 
9123 (\lambda (t: T).((eq C (CHead c0 k0 u) (CHead c1 k u1)) \to ((eq C (CHead c2 
9124 k0 u) x) \to ((csubst0 i0 t c0 c2) \to (or3 (ex3_2 T nat (\lambda (_: 
9125 T).(\lambda (j: nat).(eq nat (s k0 i0) (s k j)))) (\lambda (u2: T).(\lambda 
9126 (_: nat).(eq C x (CHead c1 k u2)))) (\lambda (u2: T).(\lambda (j: 
9127 nat).(subst0 j v u1 u2)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
9128 nat (s k0 i0) (s k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 
9129 k u1)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3)))) (ex4_3 T C 
9130 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k0 i0) (s k 
9131 j))))) (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 
9132 k u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
9133 u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 
9134 c3)))))))))) (\lambda (H6: (eq C (CHead c0 k0 u) (CHead c1 k u1))).(let H7 
9135 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
9136 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead c0 k0 u) 
9137 (CHead c1 k u1) H6) in ((let H8 \def (f_equal C K (\lambda (e: C).(match e 
9138 return (\lambda (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) 
9139 \Rightarrow k])) (CHead c0 k0 u) (CHead c1 k u1) H6) in ((let H9 \def 
9140 (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort 
9141 _) \Rightarrow c0 | (CHead c _ _) \Rightarrow c])) (CHead c0 k0 u) (CHead c1 
9142 k u1) H6) in (eq_ind C c1 (\lambda (c: C).((eq K k0 k) \to ((eq T u u1) \to 
9143 ((eq C (CHead c2 k0 u) x) \to ((csubst0 i0 v c c2) \to (or3 (ex3_2 T nat 
9144 (\lambda (_: T).(\lambda (j: nat).(eq nat (s k0 i0) (s k j)))) (\lambda (u2: 
9145 T).(\lambda (_: nat).(eq C x (CHead c1 k u2)))) (\lambda (u2: T).(\lambda (j: 
9146 nat).(subst0 j v u1 u2)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
9147 nat (s k0 i0) (s k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 
9148 k u1)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3)))) (ex4_3 T C 
9149 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k0 i0) (s k 
9150 j))))) (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 
9151 k u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
9152 u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 
9153 c3))))))))))) (\lambda (H10: (eq K k0 k)).(eq_ind K k (\lambda (k1: K).((eq T 
9154 u u1) \to ((eq C (CHead c2 k1 u) x) \to ((csubst0 i0 v c1 c2) \to (or3 (ex3_2 
9155 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat (s k1 i0) (s k j)))) (\lambda 
9156 (u2: T).(\lambda (_: nat).(eq C x (CHead c1 k u2)))) (\lambda (u2: 
9157 T).(\lambda (j: nat).(subst0 j v u1 u2)))) (ex3_2 C nat (\lambda (_: 
9158 C).(\lambda (j: nat).(eq nat (s k1 i0) (s k j)))) (\lambda (c3: C).(\lambda 
9159 (_: nat).(eq C x (CHead c3 k u1)))) (\lambda (c3: C).(\lambda (j: 
9160 nat).(csubst0 j v c1 c3)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: 
9161 C).(\lambda (j: nat).(eq nat (s k1 i0) (s k j))))) (\lambda (u2: T).(\lambda 
9162 (c3: C).(\lambda (_: nat).(eq C x (CHead c3 k u2))))) (\lambda (u2: 
9163 T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 u2)))) (\lambda (_: 
9164 T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3)))))))))) (\lambda 
9165 (H11: (eq T u u1)).(eq_ind T u1 (\lambda (t: T).((eq C (CHead c2 k t) x) \to 
9166 ((csubst0 i0 v c1 c2) \to (or3 (ex3_2 T nat (\lambda (_: T).(\lambda (j: 
9167 nat).(eq nat (s k i0) (s k j)))) (\lambda (u2: T).(\lambda (_: nat).(eq C x 
9168 (CHead c1 k u2)))) (\lambda (u2: T).(\lambda (j: nat).(subst0 j v u1 u2)))) 
9169 (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) 
9170 (\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 k u1)))) (\lambda (c3: 
9171 C).(\lambda (j: nat).(csubst0 j v c1 c3)))) (ex4_3 T C nat (\lambda (_: 
9172 T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k i0) (s k j))))) (\lambda 
9173 (u2: T).(\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 k u2))))) 
9174 (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 u2)))) 
9175 (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 
9176 c3))))))))) (\lambda (H12: (eq C (CHead c2 k u1) x)).(eq_ind C (CHead c2 k 
9177 u1) (\lambda (c: C).((csubst0 i0 v c1 c2) \to (or3 (ex3_2 T nat (\lambda (_: 
9178 T).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) (\lambda (u2: T).(\lambda 
9179 (_: nat).(eq C c (CHead c1 k u2)))) (\lambda (u2: T).(\lambda (j: 
9180 nat).(subst0 j v u1 u2)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
9181 nat (s k i0) (s k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C c (CHead c3 
9182 k u1)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3)))) (ex4_3 T C 
9183 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k i0) (s k 
9184 j))))) (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: nat).(eq C c (CHead c3 
9185 k u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
9186 u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 
9187 c3)))))))) (\lambda (H13: (csubst0 i0 v c1 c2)).(let H \def (eq_ind K k0 
9188 (\lambda (k: K).(eq nat (s k i0) i)) H1 k H10) in (or3_intro1 (ex3_2 T nat 
9189 (\lambda (_: T).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) (\lambda (u2: 
9190 T).(\lambda (_: nat).(eq C (CHead c2 k u1) (CHead c1 k u2)))) (\lambda (u2: 
9191 T).(\lambda (j: nat).(subst0 j v u1 u2)))) (ex3_2 C nat (\lambda (_: 
9192 C).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) (\lambda (c3: C).(\lambda 
9193 (_: nat).(eq C (CHead c2 k u1) (CHead c3 k u1)))) (\lambda (c3: C).(\lambda 
9194 (j: nat).(csubst0 j v c1 c3)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: 
9195 C).(\lambda (j: nat).(eq nat (s k i0) (s k j))))) (\lambda (u2: T).(\lambda 
9196 (c3: C).(\lambda (_: nat).(eq C (CHead c2 k u1) (CHead c3 k u2))))) (\lambda 
9197 (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 u2)))) (\lambda (_: 
9198 T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3))))) (ex3_2_intro C 
9199 nat (\lambda (_: C).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) (\lambda 
9200 (c3: C).(\lambda (_: nat).(eq C (CHead c2 k u1) (CHead c3 k u1)))) (\lambda 
9201 (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3))) c2 i0 (refl_equal nat (s k 
9202 i0)) (refl_equal C (CHead c2 k u1)) H13)))) x H12)) u (sym_eq T u u1 H11))) 
9203 k0 (sym_eq K k0 k H10))) c0 (sym_eq C c0 c1 H9))) H8)) H7))) v0 (sym_eq T v0 
9204 v H5))) i H1 H2 H3 H4 H0))))) | (csubst0_both k0 i0 v0 u0 u2 H0 c0 c2 H1) 
9205 \Rightarrow (\lambda (H2: (eq nat (s k0 i0) i)).(\lambda (H3: (eq T v0 
9206 v)).(\lambda (H4: (eq C (CHead c0 k0 u0) (CHead c1 k u1))).(\lambda (H5: (eq 
9207 C (CHead c2 k0 u2) x)).(eq_ind nat (s k0 i0) (\lambda (n: nat).((eq T v0 v) 
9208 \to ((eq C (CHead c0 k0 u0) (CHead c1 k u1)) \to ((eq C (CHead c2 k0 u2) x) 
9209 \to ((subst0 i0 v0 u0 u2) \to ((csubst0 i0 v0 c0 c2) \to (or3 (ex3_2 T nat 
9210 (\lambda (_: T).(\lambda (j: nat).(eq nat n (s k j)))) (\lambda (u3: 
9211 T).(\lambda (_: nat).(eq C x (CHead c1 k u3)))) (\lambda (u3: T).(\lambda (j: 
9212 nat).(subst0 j v u1 u3)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
9213 nat n (s k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 k 
9214 u1)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3)))) (ex4_3 T C 
9215 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat n (s k j))))) 
9216 (\lambda (u3: T).(\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 k 
9217 u3))))) (\lambda (u3: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
9218 u3)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 
9219 c3)))))))))))) (\lambda (H6: (eq T v0 v)).(eq_ind T v (\lambda (t: T).((eq C 
9220 (CHead c0 k0 u0) (CHead c1 k u1)) \to ((eq C (CHead c2 k0 u2) x) \to ((subst0 
9221 i0 t u0 u2) \to ((csubst0 i0 t c0 c2) \to (or3 (ex3_2 T nat (\lambda (_: 
9222 T).(\lambda (j: nat).(eq nat (s k0 i0) (s k j)))) (\lambda (u3: T).(\lambda 
9223 (_: nat).(eq C x (CHead c1 k u3)))) (\lambda (u3: T).(\lambda (j: 
9224 nat).(subst0 j v u1 u3)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
9225 nat (s k0 i0) (s k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 
9226 k u1)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3)))) (ex4_3 T C 
9227 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k0 i0) (s k 
9228 j))))) (\lambda (u3: T).(\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 
9229 k u3))))) (\lambda (u3: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
9230 u3)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 
9231 c3))))))))))) (\lambda (H7: (eq C (CHead c0 k0 u0) (CHead c1 k u1))).(let H8 
9232 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
9233 [(CSort _) \Rightarrow u0 | (CHead _ _ t) \Rightarrow t])) (CHead c0 k0 u0) 
9234 (CHead c1 k u1) H7) in ((let H9 \def (f_equal C K (\lambda (e: C).(match e 
9235 return (\lambda (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) 
9236 \Rightarrow k])) (CHead c0 k0 u0) (CHead c1 k u1) H7) in ((let H10 \def 
9237 (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort 
9238 _) \Rightarrow c0 | (CHead c _ _) \Rightarrow c])) (CHead c0 k0 u0) (CHead c1 
9239 k u1) H7) in (eq_ind C c1 (\lambda (c: C).((eq K k0 k) \to ((eq T u0 u1) \to 
9240 ((eq C (CHead c2 k0 u2) x) \to ((subst0 i0 v u0 u2) \to ((csubst0 i0 v c c2) 
9241 \to (or3 (ex3_2 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat (s k0 i0) (s 
9242 k j)))) (\lambda (u3: T).(\lambda (_: nat).(eq C x (CHead c1 k u3)))) 
9243 (\lambda (u3: T).(\lambda (j: nat).(subst0 j v u1 u3)))) (ex3_2 C nat 
9244 (\lambda (_: C).(\lambda (j: nat).(eq nat (s k0 i0) (s k j)))) (\lambda (c3: 
9245 C).(\lambda (_: nat).(eq C x (CHead c3 k u1)))) (\lambda (c3: C).(\lambda (j: 
9246 nat).(csubst0 j v c1 c3)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: 
9247 C).(\lambda (j: nat).(eq nat (s k0 i0) (s k j))))) (\lambda (u3: T).(\lambda 
9248 (c3: C).(\lambda (_: nat).(eq C x (CHead c3 k u3))))) (\lambda (u3: 
9249 T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 u3)))) (\lambda (_: 
9250 T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3)))))))))))) (\lambda 
9251 (H11: (eq K k0 k)).(eq_ind K k (\lambda (k1: K).((eq T u0 u1) \to ((eq C 
9252 (CHead c2 k1 u2) x) \to ((subst0 i0 v u0 u2) \to ((csubst0 i0 v c1 c2) \to 
9253 (or3 (ex3_2 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat (s k1 i0) (s k 
9254 j)))) (\lambda (u3: T).(\lambda (_: nat).(eq C x (CHead c1 k u3)))) (\lambda 
9255 (u3: T).(\lambda (j: nat).(subst0 j v u1 u3)))) (ex3_2 C nat (\lambda (_: 
9256 C).(\lambda (j: nat).(eq nat (s k1 i0) (s k j)))) (\lambda (c3: C).(\lambda 
9257 (_: nat).(eq C x (CHead c3 k u1)))) (\lambda (c3: C).(\lambda (j: 
9258 nat).(csubst0 j v c1 c3)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: 
9259 C).(\lambda (j: nat).(eq nat (s k1 i0) (s k j))))) (\lambda (u3: T).(\lambda 
9260 (c3: C).(\lambda (_: nat).(eq C x (CHead c3 k u3))))) (\lambda (u3: 
9261 T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 u3)))) (\lambda (_: 
9262 T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3))))))))))) (\lambda 
9263 (H12: (eq T u0 u1)).(eq_ind T u1 (\lambda (t: T).((eq C (CHead c2 k u2) x) 
9264 \to ((subst0 i0 v t u2) \to ((csubst0 i0 v c1 c2) \to (or3 (ex3_2 T nat 
9265 (\lambda (_: T).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) (\lambda (u3: 
9266 T).(\lambda (_: nat).(eq C x (CHead c1 k u3)))) (\lambda (u3: T).(\lambda (j: 
9267 nat).(subst0 j v u1 u3)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
9268 nat (s k i0) (s k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 
9269 k u1)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3)))) (ex4_3 T C 
9270 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k i0) (s k 
9271 j))))) (\lambda (u3: T).(\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 
9272 k u3))))) (\lambda (u3: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
9273 u3)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 
9274 c3)))))))))) (\lambda (H13: (eq C (CHead c2 k u2) x)).(eq_ind C (CHead c2 k 
9275 u2) (\lambda (c: C).((subst0 i0 v u1 u2) \to ((csubst0 i0 v c1 c2) \to (or3 
9276 (ex3_2 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) 
9277 (\lambda (u3: T).(\lambda (_: nat).(eq C c (CHead c1 k u3)))) (\lambda (u3: 
9278 T).(\lambda (j: nat).(subst0 j v u1 u3)))) (ex3_2 C nat (\lambda (_: 
9279 C).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) (\lambda (c3: C).(\lambda 
9280 (_: nat).(eq C c (CHead c3 k u1)))) (\lambda (c3: C).(\lambda (j: 
9281 nat).(csubst0 j v c1 c3)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: 
9282 C).(\lambda (j: nat).(eq nat (s k i0) (s k j))))) (\lambda (u3: T).(\lambda 
9283 (c3: C).(\lambda (_: nat).(eq C c (CHead c3 k u3))))) (\lambda (u3: 
9284 T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 u3)))) (\lambda (_: 
9285 T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3))))))))) (\lambda 
9286 (H14: (subst0 i0 v u1 u2)).(\lambda (H15: (csubst0 i0 v c1 c2)).(let H \def 
9287 (eq_ind K k0 (\lambda (k: K).(eq nat (s k i0) i)) H2 k H11) in (or3_intro2 
9288 (ex3_2 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) 
9289 (\lambda (u3: T).(\lambda (_: nat).(eq C (CHead c2 k u2) (CHead c1 k u3)))) 
9290 (\lambda (u3: T).(\lambda (j: nat).(subst0 j v u1 u3)))) (ex3_2 C nat 
9291 (\lambda (_: C).(\lambda (j: nat).(eq nat (s k i0) (s k j)))) (\lambda (c3: 
9292 C).(\lambda (_: nat).(eq C (CHead c2 k u2) (CHead c3 k u1)))) (\lambda (c3: 
9293 C).(\lambda (j: nat).(csubst0 j v c1 c3)))) (ex4_3 T C nat (\lambda (_: 
9294 T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k i0) (s k j))))) (\lambda 
9295 (u3: T).(\lambda (c3: C).(\lambda (_: nat).(eq C (CHead c2 k u2) (CHead c3 k 
9296 u3))))) (\lambda (u3: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
9297 u3)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 
9298 c3))))) (ex4_3_intro T C nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: 
9299 nat).(eq nat (s k i0) (s k j))))) (\lambda (u3: T).(\lambda (c3: C).(\lambda 
9300 (_: nat).(eq C (CHead c2 k u2) (CHead c3 k u3))))) (\lambda (u3: T).(\lambda 
9301 (_: C).(\lambda (j: nat).(subst0 j v u1 u3)))) (\lambda (_: T).(\lambda (c3: 
9302 C).(\lambda (j: nat).(csubst0 j v c1 c3)))) u2 c2 i0 (refl_equal nat (s k 
9303 i0)) (refl_equal C (CHead c2 k u2)) H14 H15))))) x H13)) u0 (sym_eq T u0 u1 
9304 H12))) k0 (sym_eq K k0 k H11))) c0 (sym_eq C c0 c1 H10))) H9)) H8))) v0 
9305 (sym_eq T v0 v H6))) i H2 H3 H4 H5 H0 H1)))))]) in (H0 (refl_equal nat i) 
9306 (refl_equal T v) (refl_equal C (CHead c1 k u1)) (refl_equal C x))))))))).
9307
9308 theorem csubst0_drop_gt:
9309  \forall (n: nat).(\forall (i: nat).((lt i n) \to (\forall (c1: C).(\forall 
9310 (c2: C).(\forall (v: T).((csubst0 i v c1 c2) \to (\forall (e: C).((drop n O 
9311 c1 e) \to (drop n O c2 e)))))))))
9312 \def
9313  \lambda (n: nat).(nat_ind (\lambda (n0: nat).(\forall (i: nat).((lt i n0) 
9314 \to (\forall (c1: C).(\forall (c2: C).(\forall (v: T).((csubst0 i v c1 c2) 
9315 \to (\forall (e: C).((drop n0 O c1 e) \to (drop n0 O c2 e)))))))))) (\lambda 
9316 (i: nat).(\lambda (H: (lt i O)).(\lambda (c1: C).(\lambda (c2: C).(\lambda 
9317 (v: T).(\lambda (_: (csubst0 i v c1 c2)).(\lambda (e: C).(\lambda (_: (drop O 
9318 O c1 e)).(let H2 \def (match H return (\lambda (n: nat).(\lambda (_: (le ? 
9319 n)).((eq nat n O) \to (drop O O c2 e)))) with [le_n \Rightarrow (\lambda (H2: 
9320 (eq nat (S i) O)).(let H3 \def (eq_ind nat (S i) (\lambda (e0: nat).(match e0 
9321 return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow 
9322 True])) I O H2) in (False_ind (drop O O c2 e) H3))) | (le_S m H2) \Rightarrow 
9323 (\lambda (H3: (eq nat (S m) O)).((let H4 \def (eq_ind nat (S m) (\lambda (e0: 
9324 nat).(match e0 return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S 
9325 _) \Rightarrow True])) I O H3) in (False_ind ((le (S i) m) \to (drop O O c2 
9326 e)) H4)) H2))]) in (H2 (refl_equal nat O))))))))))) (\lambda (n0: 
9327 nat).(\lambda (H: ((\forall (i: nat).((lt i n0) \to (\forall (c1: C).(\forall 
9328 (c2: C).(\forall (v: T).((csubst0 i v c1 c2) \to (\forall (e: C).((drop n0 O 
9329 c1 e) \to (drop n0 O c2 e))))))))))).(\lambda (i: nat).(\lambda (H0: (lt i (S 
9330 n0))).(\lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).(\forall (v: 
9331 T).((csubst0 i v c c2) \to (\forall (e: C).((drop (S n0) O c e) \to (drop (S 
9332 n0) O c2 e))))))) (\lambda (n1: nat).(\lambda (c2: C).(\lambda (v: 
9333 T).(\lambda (_: (csubst0 i v (CSort n1) c2)).(\lambda (e: C).(\lambda (H2: 
9334 (drop (S n0) O (CSort n1) e)).(and3_ind (eq C e (CSort n1)) (eq nat (S n0) O) 
9335 (eq nat O O) (drop (S n0) O c2 e) (\lambda (H3: (eq C e (CSort n1))).(\lambda 
9336 (H4: (eq nat (S n0) O)).(\lambda (_: (eq nat O O)).(eq_ind_r C (CSort n1) 
9337 (\lambda (c: C).(drop (S n0) O c2 c)) (let H6 \def (eq_ind nat (S n0) 
9338 (\lambda (ee: nat).(match ee return (\lambda (_: nat).Prop) with [O 
9339 \Rightarrow False | (S _) \Rightarrow True])) I O H4) in (False_ind (drop (S 
9340 n0) O c2 (CSort n1)) H6)) e H3)))) (drop_gen_sort n1 (S n0) O e H2)))))))) 
9341 (\lambda (c: C).(\lambda (H1: ((\forall (c2: C).(\forall (v: T).((csubst0 i v 
9342 c c2) \to (\forall (e: C).((drop (S n0) O c e) \to (drop (S n0) O c2 
9343 e)))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c2: C).(\lambda (v: 
9344 T).(\lambda (H2: (csubst0 i v (CHead c k t) c2)).(\lambda (e: C).(\lambda 
9345 (H3: (drop (S n0) O (CHead c k t) e)).(or3_ind (ex3_2 T nat (\lambda (_: 
9346 T).(\lambda (j: nat).(eq nat i (s k j)))) (\lambda (u2: T).(\lambda (_: 
9347 nat).(eq C c2 (CHead c k u2)))) (\lambda (u2: T).(\lambda (j: nat).(subst0 j 
9348 v t u2)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq nat i (s k 
9349 j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k t)))) (\lambda 
9350 (c3: C).(\lambda (j: nat).(csubst0 j v c c3)))) (ex4_3 T C nat (\lambda (_: 
9351 T).(\lambda (_: C).(\lambda (j: nat).(eq nat i (s k j))))) (\lambda (u2: 
9352 T).(\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k u2))))) (\lambda 
9353 (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v t u2)))) (\lambda (_: 
9354 T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c c3))))) (drop (S n0) O 
9355 c2 e) (\lambda (H4: (ex3_2 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat i 
9356 (s k j)))) (\lambda (u2: T).(\lambda (_: nat).(eq C c2 (CHead c k u2)))) 
9357 (\lambda (u2: T).(\lambda (j: nat).(subst0 j v t u2))))).(ex3_2_ind T nat 
9358 (\lambda (_: T).(\lambda (j: nat).(eq nat i (s k j)))) (\lambda (u2: 
9359 T).(\lambda (_: nat).(eq C c2 (CHead c k u2)))) (\lambda (u2: T).(\lambda (j: 
9360 nat).(subst0 j v t u2))) (drop (S n0) O c2 e) (\lambda (x0: T).(\lambda (x1: 
9361 nat).(\lambda (H5: (eq nat i (s k x1))).(\lambda (H6: (eq C c2 (CHead c k 
9362 x0))).(\lambda (_: (subst0 x1 v t x0)).(eq_ind_r C (CHead c k x0) (\lambda 
9363 (c0: C).(drop (S n0) O c0 e)) (let H8 \def (eq_ind nat i (\lambda (n: 
9364 nat).(\forall (c2: C).(\forall (v: T).((csubst0 n v c c2) \to (\forall (e: 
9365 C).((drop (S n0) O c e) \to (drop (S n0) O c2 e))))))) H1 (s k x1) H5) in 
9366 (let H9 \def (eq_ind nat i (\lambda (n: nat).(lt n (S n0))) H0 (s k x1) H5) 
9367 in ((match k return (\lambda (k0: K).((drop (r k0 n0) O c e) \to (((\forall 
9368 (c2: C).(\forall (v: T).((csubst0 (s k0 x1) v c c2) \to (\forall (e: 
9369 C).((drop (S n0) O c e) \to (drop (S n0) O c2 e))))))) \to ((lt (s k0 x1) (S 
9370 n0)) \to (drop (S n0) O (CHead c k0 x0) e))))) with [(Bind b) \Rightarrow 
9371 (\lambda (H10: (drop (r (Bind b) n0) O c e)).(\lambda (_: ((\forall (c2: 
9372 C).(\forall (v: T).((csubst0 (s (Bind b) x1) v c c2) \to (\forall (e: 
9373 C).((drop (S n0) O c e) \to (drop (S n0) O c2 e)))))))).(\lambda (_: (lt (s 
9374 (Bind b) x1) (S n0))).(drop_drop (Bind b) n0 c e H10 x0)))) | (Flat f) 
9375 \Rightarrow (\lambda (H10: (drop (r (Flat f) n0) O c e)).(\lambda (_: 
9376 ((\forall (c2: C).(\forall (v: T).((csubst0 (s (Flat f) x1) v c c2) \to 
9377 (\forall (e: C).((drop (S n0) O c e) \to (drop (S n0) O c2 e)))))))).(\lambda 
9378 (H12: (lt (s (Flat f) x1) (S n0))).(or_ind (eq nat x1 O) (ex2 nat (\lambda 
9379 (m: nat).(eq nat x1 (S m))) (\lambda (m: nat).(lt m n0))) (drop (S n0) O 
9380 (CHead c (Flat f) x0) e) (\lambda (_: (eq nat x1 O)).(drop_drop (Flat f) n0 c 
9381 e H10 x0)) (\lambda (H13: (ex2 nat (\lambda (m: nat).(eq nat x1 (S m))) 
9382 (\lambda (m: nat).(lt m n0)))).(ex2_ind nat (\lambda (m: nat).(eq nat x1 (S 
9383 m))) (\lambda (m: nat).(lt m n0)) (drop (S n0) O (CHead c (Flat f) x0) e) 
9384 (\lambda (x: nat).(\lambda (_: (eq nat x1 (S x))).(\lambda (_: (lt x 
9385 n0)).(drop_drop (Flat f) n0 c e H10 x0)))) H13)) (lt_gen_xS x1 n0 H12)))))]) 
9386 (drop_gen_drop k c e t n0 H3) H8 H9))) c2 H6)))))) H4)) (\lambda (H4: (ex3_2 
9387 C nat (\lambda (_: C).(\lambda (j: nat).(eq nat i (s k j)))) (\lambda (c3: 
9388 C).(\lambda (_: nat).(eq C c2 (CHead c3 k t)))) (\lambda (c2: C).(\lambda (j: 
9389 nat).(csubst0 j v c c2))))).(ex3_2_ind C nat (\lambda (_: C).(\lambda (j: 
9390 nat).(eq nat i (s k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead 
9391 c3 k t)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c c3))) (drop (S 
9392 n0) O c2 e) (\lambda (x0: C).(\lambda (x1: nat).(\lambda (H5: (eq nat i (s k 
9393 x1))).(\lambda (H6: (eq C c2 (CHead x0 k t))).(\lambda (H7: (csubst0 x1 v c 
9394 x0)).(eq_ind_r C (CHead x0 k t) (\lambda (c0: C).(drop (S n0) O c0 e)) (let 
9395 H8 \def (eq_ind nat i (\lambda (n: nat).(\forall (c2: C).(\forall (v: 
9396 T).((csubst0 n v c c2) \to (\forall (e: C).((drop (S n0) O c e) \to (drop (S 
9397 n0) O c2 e))))))) H1 (s k x1) H5) in (let H9 \def (eq_ind nat i (\lambda (n: 
9398 nat).(lt n (S n0))) H0 (s k x1) H5) in ((match k return (\lambda (k0: 
9399 K).((drop (r k0 n0) O c e) \to (((\forall (c2: C).(\forall (v: T).((csubst0 
9400 (s k0 x1) v c c2) \to (\forall (e: C).((drop (S n0) O c e) \to (drop (S n0) O 
9401 c2 e))))))) \to ((lt (s k0 x1) (S n0)) \to (drop (S n0) O (CHead x0 k0 t) 
9402 e))))) with [(Bind b) \Rightarrow (\lambda (H10: (drop (r (Bind b) n0) O c 
9403 e)).(\lambda (_: ((\forall (c2: C).(\forall (v: T).((csubst0 (s (Bind b) x1) 
9404 v c c2) \to (\forall (e: C).((drop (S n0) O c e) \to (drop (S n0) O c2 
9405 e)))))))).(\lambda (H12: (lt (s (Bind b) x1) (S n0))).(drop_drop (Bind b) n0 
9406 x0 e (H x1 (lt_S_n x1 n0 H12) c x0 v H7 e H10) t)))) | (Flat f) \Rightarrow 
9407 (\lambda (H10: (drop (r (Flat f) n0) O c e)).(\lambda (H11: ((\forall (c2: 
9408 C).(\forall (v: T).((csubst0 (s (Flat f) x1) v c c2) \to (\forall (e: 
9409 C).((drop (S n0) O c e) \to (drop (S n0) O c2 e)))))))).(\lambda (H12: (lt (s 
9410 (Flat f) x1) (S n0))).(or_ind (eq nat x1 O) (ex2 nat (\lambda (m: nat).(eq 
9411 nat x1 (S m))) (\lambda (m: nat).(lt m n0))) (drop (S n0) O (CHead x0 (Flat 
9412 f) t) e) (\lambda (_: (eq nat x1 O)).(drop_drop (Flat f) n0 x0 e (H11 x0 v H7 
9413 e H10) t)) (\lambda (H13: (ex2 nat (\lambda (m: nat).(eq nat x1 (S m))) 
9414 (\lambda (m: nat).(lt m n0)))).(ex2_ind nat (\lambda (m: nat).(eq nat x1 (S 
9415 m))) (\lambda (m: nat).(lt m n0)) (drop (S n0) O (CHead x0 (Flat f) t) e) 
9416 (\lambda (x: nat).(\lambda (_: (eq nat x1 (S x))).(\lambda (_: (lt x 
9417 n0)).(drop_drop (Flat f) n0 x0 e (H11 x0 v H7 e H10) t)))) H13)) (lt_gen_xS 
9418 x1 n0 H12)))))]) (drop_gen_drop k c e t n0 H3) H8 H9))) c2 H6)))))) H4)) 
9419 (\lambda (H4: (ex4_3 T C nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: 
9420 nat).(eq nat i (s k j))))) (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: 
9421 nat).(eq C c2 (CHead c3 k u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda 
9422 (j: nat).(subst0 j v t u2)))) (\lambda (_: T).(\lambda (c2: C).(\lambda (j: 
9423 nat).(csubst0 j v c c2)))))).(ex4_3_ind T C nat (\lambda (_: T).(\lambda (_: 
9424 C).(\lambda (j: nat).(eq nat i (s k j))))) (\lambda (u2: T).(\lambda (c3: 
9425 C).(\lambda (_: nat).(eq C c2 (CHead c3 k u2))))) (\lambda (u2: T).(\lambda 
9426 (_: C).(\lambda (j: nat).(subst0 j v t u2)))) (\lambda (_: T).(\lambda (c3: 
9427 C).(\lambda (j: nat).(csubst0 j v c c3)))) (drop (S n0) O c2 e) (\lambda (x0: 
9428 T).(\lambda (x1: C).(\lambda (x2: nat).(\lambda (H5: (eq nat i (s k 
9429 x2))).(\lambda (H6: (eq C c2 (CHead x1 k x0))).(\lambda (_: (subst0 x2 v t 
9430 x0)).(\lambda (H8: (csubst0 x2 v c x1)).(eq_ind_r C (CHead x1 k x0) (\lambda 
9431 (c0: C).(drop (S n0) O c0 e)) (let H9 \def (eq_ind nat i (\lambda (n: 
9432 nat).(\forall (c2: C).(\forall (v: T).((csubst0 n v c c2) \to (\forall (e: 
9433 C).((drop (S n0) O c e) \to (drop (S n0) O c2 e))))))) H1 (s k x2) H5) in 
9434 (let H10 \def (eq_ind nat i (\lambda (n: nat).(lt n (S n0))) H0 (s k x2) H5) 
9435 in ((match k return (\lambda (k0: K).((drop (r k0 n0) O c e) \to (((\forall 
9436 (c2: C).(\forall (v: T).((csubst0 (s k0 x2) v c c2) \to (\forall (e: 
9437 C).((drop (S n0) O c e) \to (drop (S n0) O c2 e))))))) \to ((lt (s k0 x2) (S 
9438 n0)) \to (drop (S n0) O (CHead x1 k0 x0) e))))) with [(Bind b) \Rightarrow 
9439 (\lambda (H11: (drop (r (Bind b) n0) O c e)).(\lambda (_: ((\forall (c2: 
9440 C).(\forall (v: T).((csubst0 (s (Bind b) x2) v c c2) \to (\forall (e: 
9441 C).((drop (S n0) O c e) \to (drop (S n0) O c2 e)))))))).(\lambda (H13: (lt (s 
9442 (Bind b) x2) (S n0))).(drop_drop (Bind b) n0 x1 e (H x2 (lt_S_n x2 n0 H13) c 
9443 x1 v H8 e H11) x0)))) | (Flat f) \Rightarrow (\lambda (H11: (drop (r (Flat f) 
9444 n0) O c e)).(\lambda (H12: ((\forall (c2: C).(\forall (v: T).((csubst0 (s 
9445 (Flat f) x2) v c c2) \to (\forall (e: C).((drop (S n0) O c e) \to (drop (S 
9446 n0) O c2 e)))))))).(\lambda (H13: (lt (s (Flat f) x2) (S n0))).(or_ind (eq 
9447 nat x2 O) (ex2 nat (\lambda (m: nat).(eq nat x2 (S m))) (\lambda (m: nat).(lt 
9448 m n0))) (drop (S n0) O (CHead x1 (Flat f) x0) e) (\lambda (_: (eq nat x2 
9449 O)).(drop_drop (Flat f) n0 x1 e (H12 x1 v H8 e H11) x0)) (\lambda (H14: (ex2 
9450 nat (\lambda (m: nat).(eq nat x2 (S m))) (\lambda (m: nat).(lt m 
9451 n0)))).(ex2_ind nat (\lambda (m: nat).(eq nat x2 (S m))) (\lambda (m: 
9452 nat).(lt m n0)) (drop (S n0) O (CHead x1 (Flat f) x0) e) (\lambda (x: 
9453 nat).(\lambda (_: (eq nat x2 (S x))).(\lambda (_: (lt x n0)).(drop_drop (Flat 
9454 f) n0 x1 e (H12 x1 v H8 e H11) x0)))) H14)) (lt_gen_xS x2 n0 H13)))))]) 
9455 (drop_gen_drop k c e t n0 H3) H9 H10))) c2 H6)))))))) H4)) (csubst0_gen_head 
9456 k c c2 t v i H2))))))))))) c1)))))) n).
9457
9458 theorem csubst0_drop_gt_back:
9459  \forall (n: nat).(\forall (i: nat).((lt i n) \to (\forall (c1: C).(\forall 
9460 (c2: C).(\forall (v: T).((csubst0 i v c1 c2) \to (\forall (e: C).((drop n O 
9461 c2 e) \to (drop n O c1 e)))))))))
9462 \def
9463  \lambda (n: nat).(nat_ind (\lambda (n0: nat).(\forall (i: nat).((lt i n0) 
9464 \to (\forall (c1: C).(\forall (c2: C).(\forall (v: T).((csubst0 i v c1 c2) 
9465 \to (\forall (e: C).((drop n0 O c2 e) \to (drop n0 O c1 e)))))))))) (\lambda 
9466 (i: nat).(\lambda (H: (lt i O)).(\lambda (c1: C).(\lambda (c2: C).(\lambda 
9467 (v: T).(\lambda (_: (csubst0 i v c1 c2)).(\lambda (e: C).(\lambda (_: (drop O 
9468 O c2 e)).(let H2 \def (match H return (\lambda (n: nat).(\lambda (_: (le ? 
9469 n)).((eq nat n O) \to (drop O O c1 e)))) with [le_n \Rightarrow (\lambda (H2: 
9470 (eq nat (S i) O)).(let H3 \def (eq_ind nat (S i) (\lambda (e0: nat).(match e0 
9471 return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow 
9472 True])) I O H2) in (False_ind (drop O O c1 e) H3))) | (le_S m H2) \Rightarrow 
9473 (\lambda (H3: (eq nat (S m) O)).((let H4 \def (eq_ind nat (S m) (\lambda (e0: 
9474 nat).(match e0 return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S 
9475 _) \Rightarrow True])) I O H3) in (False_ind ((le (S i) m) \to (drop O O c1 
9476 e)) H4)) H2))]) in (H2 (refl_equal nat O))))))))))) (\lambda (n0: 
9477 nat).(\lambda (H: ((\forall (i: nat).((lt i n0) \to (\forall (c1: C).(\forall 
9478 (c2: C).(\forall (v: T).((csubst0 i v c1 c2) \to (\forall (e: C).((drop n0 O 
9479 c2 e) \to (drop n0 O c1 e))))))))))).(\lambda (i: nat).(\lambda (H0: (lt i (S 
9480 n0))).(\lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).(\forall (v: 
9481 T).((csubst0 i v c c2) \to (\forall (e: C).((drop (S n0) O c2 e) \to (drop (S 
9482 n0) O c e))))))) (\lambda (n1: nat).(\lambda (c2: C).(\lambda (v: T).(\lambda 
9483 (H1: (csubst0 i v (CSort n1) c2)).(\lambda (e: C).(\lambda (_: (drop (S n0) O 
9484 c2 e)).(csubst0_gen_sort c2 v i n1 H1 (drop (S n0) O (CSort n1) e)))))))) 
9485 (\lambda (c: C).(\lambda (H1: ((\forall (c2: C).(\forall (v: T).((csubst0 i v 
9486 c c2) \to (\forall (e: C).((drop (S n0) O c2 e) \to (drop (S n0) O c 
9487 e)))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c2: C).(\lambda (v: 
9488 T).(\lambda (H2: (csubst0 i v (CHead c k t) c2)).(\lambda (e: C).(\lambda 
9489 (H3: (drop (S n0) O c2 e)).(or3_ind (ex3_2 T nat (\lambda (_: T).(\lambda (j: 
9490 nat).(eq nat i (s k j)))) (\lambda (u2: T).(\lambda (_: nat).(eq C c2 (CHead 
9491 c k u2)))) (\lambda (u2: T).(\lambda (j: nat).(subst0 j v t u2)))) (ex3_2 C 
9492 nat (\lambda (_: C).(\lambda (j: nat).(eq nat i (s k j)))) (\lambda (c3: 
9493 C).(\lambda (_: nat).(eq C c2 (CHead c3 k t)))) (\lambda (c3: C).(\lambda (j: 
9494 nat).(csubst0 j v c c3)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: 
9495 C).(\lambda (j: nat).(eq nat i (s k j))))) (\lambda (u2: T).(\lambda (c3: 
9496 C).(\lambda (_: nat).(eq C c2 (CHead c3 k u2))))) (\lambda (u2: T).(\lambda 
9497 (_: C).(\lambda (j: nat).(subst0 j v t u2)))) (\lambda (_: T).(\lambda (c3: 
9498 C).(\lambda (j: nat).(csubst0 j v c c3))))) (drop (S n0) O (CHead c k t) e) 
9499 (\lambda (H4: (ex3_2 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat i (s k 
9500 j)))) (\lambda (u2: T).(\lambda (_: nat).(eq C c2 (CHead c k u2)))) (\lambda 
9501 (u2: T).(\lambda (j: nat).(subst0 j v t u2))))).(ex3_2_ind T nat (\lambda (_: 
9502 T).(\lambda (j: nat).(eq nat i (s k j)))) (\lambda (u2: T).(\lambda (_: 
9503 nat).(eq C c2 (CHead c k u2)))) (\lambda (u2: T).(\lambda (j: nat).(subst0 j 
9504 v t u2))) (drop (S n0) O (CHead c k t) e) (\lambda (x0: T).(\lambda (x1: 
9505 nat).(\lambda (H5: (eq nat i (s k x1))).(\lambda (H6: (eq C c2 (CHead c k 
9506 x0))).(\lambda (_: (subst0 x1 v t x0)).(let H8 \def (eq_ind C c2 (\lambda (c: 
9507 C).(drop (S n0) O c e)) H3 (CHead c k x0) H6) in (let H9 \def (eq_ind nat i 
9508 (\lambda (n: nat).(\forall (c2: C).(\forall (v: T).((csubst0 n v c c2) \to 
9509 (\forall (e: C).((drop (S n0) O c2 e) \to (drop (S n0) O c e))))))) H1 (s k 
9510 x1) H5) in (let H10 \def (eq_ind nat i (\lambda (n: nat).(lt n (S n0))) H0 (s 
9511 k x1) H5) in ((match k return (\lambda (k0: K).(((\forall (c2: C).(\forall 
9512 (v: T).((csubst0 (s k0 x1) v c c2) \to (\forall (e: C).((drop (S n0) O c2 e) 
9513 \to (drop (S n0) O c e))))))) \to ((lt (s k0 x1) (S n0)) \to ((drop (r k0 n0) 
9514 O c e) \to (drop (S n0) O (CHead c k0 t) e))))) with [(Bind b) \Rightarrow 
9515 (\lambda (_: ((\forall (c2: C).(\forall (v: T).((csubst0 (s (Bind b) x1) v c 
9516 c2) \to (\forall (e: C).((drop (S n0) O c2 e) \to (drop (S n0) O c 
9517 e)))))))).(\lambda (_: (lt (s (Bind b) x1) (S n0))).(\lambda (H13: (drop (r 
9518 (Bind b) n0) O c e)).(drop_drop (Bind b) n0 c e H13 t)))) | (Flat f) 
9519 \Rightarrow (\lambda (_: ((\forall (c2: C).(\forall (v: T).((csubst0 (s (Flat 
9520 f) x1) v c c2) \to (\forall (e: C).((drop (S n0) O c2 e) \to (drop (S n0) O c 
9521 e)))))))).(\lambda (H12: (lt (s (Flat f) x1) (S n0))).(\lambda (H13: (drop (r 
9522 (Flat f) n0) O c e)).(or_ind (eq nat x1 O) (ex2 nat (\lambda (m: nat).(eq nat 
9523 x1 (S m))) (\lambda (m: nat).(lt m n0))) (drop (S n0) O (CHead c (Flat f) t) 
9524 e) (\lambda (_: (eq nat x1 O)).(drop_drop (Flat f) n0 c e H13 t)) (\lambda 
9525 (H14: (ex2 nat (\lambda (m: nat).(eq nat x1 (S m))) (\lambda (m: nat).(lt m 
9526 n0)))).(ex2_ind nat (\lambda (m: nat).(eq nat x1 (S m))) (\lambda (m: 
9527 nat).(lt m n0)) (drop (S n0) O (CHead c (Flat f) t) e) (\lambda (x: 
9528 nat).(\lambda (_: (eq nat x1 (S x))).(\lambda (_: (lt x n0)).(drop_drop (Flat 
9529 f) n0 c e H13 t)))) H14)) (lt_gen_xS x1 n0 H12)))))]) H9 H10 (drop_gen_drop k 
9530 c e x0 n0 H8)))))))))) H4)) (\lambda (H4: (ex3_2 C nat (\lambda (_: 
9531 C).(\lambda (j: nat).(eq nat i (s k j)))) (\lambda (c3: C).(\lambda (_: 
9532 nat).(eq C c2 (CHead c3 k t)))) (\lambda (c2: C).(\lambda (j: nat).(csubst0 j 
9533 v c c2))))).(ex3_2_ind C nat (\lambda (_: C).(\lambda (j: nat).(eq nat i (s k 
9534 j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k t)))) (\lambda 
9535 (c3: C).(\lambda (j: nat).(csubst0 j v c c3))) (drop (S n0) O (CHead c k t) 
9536 e) (\lambda (x0: C).(\lambda (x1: nat).(\lambda (H5: (eq nat i (s k 
9537 x1))).(\lambda (H6: (eq C c2 (CHead x0 k t))).(\lambda (H7: (csubst0 x1 v c 
9538 x0)).(let H8 \def (eq_ind C c2 (\lambda (c: C).(drop (S n0) O c e)) H3 (CHead 
9539 x0 k t) H6) in (let H9 \def (eq_ind nat i (\lambda (n: nat).(\forall (c2: 
9540 C).(\forall (v: T).((csubst0 n v c c2) \to (\forall (e: C).((drop (S n0) O c2 
9541 e) \to (drop (S n0) O c e))))))) H1 (s k x1) H5) in (let H10 \def (eq_ind nat 
9542 i (\lambda (n: nat).(lt n (S n0))) H0 (s k x1) H5) in ((match k return 
9543 (\lambda (k0: K).(((\forall (c2: C).(\forall (v: T).((csubst0 (s k0 x1) v c 
9544 c2) \to (\forall (e: C).((drop (S n0) O c2 e) \to (drop (S n0) O c e))))))) 
9545 \to ((lt (s k0 x1) (S n0)) \to ((drop (r k0 n0) O x0 e) \to (drop (S n0) O 
9546 (CHead c k0 t) e))))) with [(Bind b) \Rightarrow (\lambda (_: ((\forall (c2: 
9547 C).(\forall (v: T).((csubst0 (s (Bind b) x1) v c c2) \to (\forall (e: 
9548 C).((drop (S n0) O c2 e) \to (drop (S n0) O c e)))))))).(\lambda (H12: (lt (s 
9549 (Bind b) x1) (S n0))).(\lambda (H13: (drop (r (Bind b) n0) O x0 
9550 e)).(drop_drop (Bind b) n0 c e (H x1 (lt_S_n x1 n0 H12) c x0 v H7 e H13) 
9551 t)))) | (Flat f) \Rightarrow (\lambda (H11: ((\forall (c2: C).(\forall (v: 
9552 T).((csubst0 (s (Flat f) x1) v c c2) \to (\forall (e: C).((drop (S n0) O c2 
9553 e) \to (drop (S n0) O c e)))))))).(\lambda (H12: (lt (s (Flat f) x1) (S 
9554 n0))).(\lambda (H13: (drop (r (Flat f) n0) O x0 e)).(or_ind (eq nat x1 O) 
9555 (ex2 nat (\lambda (m: nat).(eq nat x1 (S m))) (\lambda (m: nat).(lt m n0))) 
9556 (drop (S n0) O (CHead c (Flat f) t) e) (\lambda (_: (eq nat x1 O)).(drop_drop 
9557 (Flat f) n0 c e (H11 x0 v H7 e H13) t)) (\lambda (H14: (ex2 nat (\lambda (m: 
9558 nat).(eq nat x1 (S m))) (\lambda (m: nat).(lt m n0)))).(ex2_ind nat (\lambda 
9559 (m: nat).(eq nat x1 (S m))) (\lambda (m: nat).(lt m n0)) (drop (S n0) O 
9560 (CHead c (Flat f) t) e) (\lambda (x: nat).(\lambda (_: (eq nat x1 (S 
9561 x))).(\lambda (_: (lt x n0)).(drop_drop (Flat f) n0 c e (H11 x0 v H7 e H13) 
9562 t)))) H14)) (lt_gen_xS x1 n0 H12)))))]) H9 H10 (drop_gen_drop k x0 e t n0 
9563 H8)))))))))) H4)) (\lambda (H4: (ex4_3 T C nat (\lambda (_: T).(\lambda (_: 
9564 C).(\lambda (j: nat).(eq nat i (s k j))))) (\lambda (u2: T).(\lambda (c3: 
9565 C).(\lambda (_: nat).(eq C c2 (CHead c3 k u2))))) (\lambda (u2: T).(\lambda 
9566 (_: C).(\lambda (j: nat).(subst0 j v t u2)))) (\lambda (_: T).(\lambda (c2: 
9567 C).(\lambda (j: nat).(csubst0 j v c c2)))))).(ex4_3_ind T C nat (\lambda (_: 
9568 T).(\lambda (_: C).(\lambda (j: nat).(eq nat i (s k j))))) (\lambda (u2: 
9569 T).(\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k u2))))) (\lambda 
9570 (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v t u2)))) (\lambda (_: 
9571 T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c c3)))) (drop (S n0) O 
9572 (CHead c k t) e) (\lambda (x0: T).(\lambda (x1: C).(\lambda (x2: 
9573 nat).(\lambda (H5: (eq nat i (s k x2))).(\lambda (H6: (eq C c2 (CHead x1 k 
9574 x0))).(\lambda (_: (subst0 x2 v t x0)).(\lambda (H8: (csubst0 x2 v c 
9575 x1)).(let H9 \def (eq_ind C c2 (\lambda (c: C).(drop (S n0) O c e)) H3 (CHead 
9576 x1 k x0) H6) in (let H10 \def (eq_ind nat i (\lambda (n: nat).(\forall (c2: 
9577 C).(\forall (v: T).((csubst0 n v c c2) \to (\forall (e: C).((drop (S n0) O c2 
9578 e) \to (drop (S n0) O c e))))))) H1 (s k x2) H5) in (let H11 \def (eq_ind nat 
9579 i (\lambda (n: nat).(lt n (S n0))) H0 (s k x2) H5) in ((match k return 
9580 (\lambda (k0: K).(((\forall (c2: C).(\forall (v: T).((csubst0 (s k0 x2) v c 
9581 c2) \to (\forall (e: C).((drop (S n0) O c2 e) \to (drop (S n0) O c e))))))) 
9582 \to ((lt (s k0 x2) (S n0)) \to ((drop (r k0 n0) O x1 e) \to (drop (S n0) O 
9583 (CHead c k0 t) e))))) with [(Bind b) \Rightarrow (\lambda (_: ((\forall (c2: 
9584 C).(\forall (v: T).((csubst0 (s (Bind b) x2) v c c2) \to (\forall (e: 
9585 C).((drop (S n0) O c2 e) \to (drop (S n0) O c e)))))))).(\lambda (H13: (lt (s 
9586 (Bind b) x2) (S n0))).(\lambda (H14: (drop (r (Bind b) n0) O x1 
9587 e)).(drop_drop (Bind b) n0 c e (H x2 (lt_S_n x2 n0 H13) c x1 v H8 e H14) 
9588 t)))) | (Flat f) \Rightarrow (\lambda (H12: ((\forall (c2: C).(\forall (v: 
9589 T).((csubst0 (s (Flat f) x2) v c c2) \to (\forall (e: C).((drop (S n0) O c2 
9590 e) \to (drop (S n0) O c e)))))))).(\lambda (H13: (lt (s (Flat f) x2) (S 
9591 n0))).(\lambda (H14: (drop (r (Flat f) n0) O x1 e)).(or_ind (eq nat x2 O) 
9592 (ex2 nat (\lambda (m: nat).(eq nat x2 (S m))) (\lambda (m: nat).(lt m n0))) 
9593 (drop (S n0) O (CHead c (Flat f) t) e) (\lambda (_: (eq nat x2 O)).(drop_drop 
9594 (Flat f) n0 c e (H12 x1 v H8 e H14) t)) (\lambda (H15: (ex2 nat (\lambda (m: 
9595 nat).(eq nat x2 (S m))) (\lambda (m: nat).(lt m n0)))).(ex2_ind nat (\lambda 
9596 (m: nat).(eq nat x2 (S m))) (\lambda (m: nat).(lt m n0)) (drop (S n0) O 
9597 (CHead c (Flat f) t) e) (\lambda (x: nat).(\lambda (_: (eq nat x2 (S 
9598 x))).(\lambda (_: (lt x n0)).(drop_drop (Flat f) n0 c e (H12 x1 v H8 e H14) 
9599 t)))) H15)) (lt_gen_xS x2 n0 H13)))))]) H10 H11 (drop_gen_drop k x1 e x0 n0 
9600 H9)))))))))))) H4)) (csubst0_gen_head k c c2 t v i H2))))))))))) c1)))))) n).
9601
9602 theorem csubst0_drop_lt:
9603  \forall (n: nat).(\forall (i: nat).((lt n i) \to (\forall (c1: C).(\forall 
9604 (c2: C).(\forall (v: T).((csubst0 i v c1 c2) \to (\forall (e: C).((drop n O 
9605 c1 e) \to (or4 (drop n O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
9606 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: 
9607 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop n O c2 (CHead e0 k 
9608 w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
9609 T).(subst0 (minus i (s k n)) v u w)))))) (ex3_4 K C C T (\lambda (k: 
9610 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
9611 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
9612 T).(drop n O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
9613 (e2: C).(\lambda (_: T).(csubst0 (minus i (s k n)) v e1 e2)))))) (ex4_5 K C C 
9614 T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda 
9615 (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
9616 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop n O c2 (CHead e2 k w))))))) 
9617 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
9618 T).(subst0 (minus i (s k n)) v u w)))))) (\lambda (k: K).(\lambda (e1: 
9619 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (s k 
9620 n)) v e1 e2))))))))))))))))
9621 \def
9622  \lambda (n: nat).(nat_ind (\lambda (n0: nat).(\forall (i: nat).((lt n0 i) 
9623 \to (\forall (c1: C).(\forall (c2: C).(\forall (v: T).((csubst0 i v c1 c2) 
9624 \to (\forall (e: C).((drop n0 O c1 e) \to (or4 (drop n0 O c2 e) (ex3_4 K C T 
9625 T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
9626 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
9627 (w: T).(drop n0 O c2 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
9628 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k n0)) v u w)))))) 
9629 (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
9630 T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
9631 C).(\lambda (u: T).(drop n0 O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda 
9632 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (s k n0)) v e1 
9633 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
9634 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
9635 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop n0 
9636 O c2 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
9637 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k n0)) v u w)))))) 
9638 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
9639 (_: T).(csubst0 (minus i (s k n0)) v e1 e2))))))))))))))))) (\lambda (i: 
9640 nat).(\lambda (_: (lt O i)).(\lambda (c1: C).(\lambda (c2: C).(\lambda (v: 
9641 T).(\lambda (H0: (csubst0 i v c1 c2)).(\lambda (e: C).(\lambda (H1: (drop O O 
9642 c1 e)).(eq_ind C c1 (\lambda (c: C).(or4 (drop O O c2 c) (ex3_4 K C T T 
9643 (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c 
9644 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
9645 (w: T).(drop O O c2 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
9646 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k O)) v u w)))))) 
9647 (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
9648 T).(eq C c (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
9649 C).(\lambda (u: T).(drop O O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda 
9650 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (s k O)) v e1 
9651 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
9652 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 k u))))))) (\lambda (k: 
9653 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O 
9654 c2 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
9655 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k O)) v u w)))))) 
9656 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
9657 (_: T).(csubst0 (minus i (s k O)) v e1 e2))))))))) (csubst0_ind (\lambda (n0: 
9658 nat).(\lambda (t: T).(\lambda (c: C).(\lambda (c0: C).(or4 (drop O O c0 c) 
9659 (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
9660 T).(eq C c (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
9661 T).(\lambda (w: T).(drop O O c0 (CHead e0 k w)))))) (\lambda (k: K).(\lambda 
9662 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus n0 (s k O)) t u w)))))) 
9663 (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
9664 T).(eq C c (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
9665 C).(\lambda (u: T).(drop O O c0 (CHead e2 k u)))))) (\lambda (k: K).(\lambda 
9666 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus n0 (s k O)) t e1 
9667 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
9668 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 k u))))))) (\lambda (k: 
9669 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O 
9670 c0 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
9671 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus n0 (s k O)) t u w)))))) 
9672 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
9673 (_: T).(csubst0 (minus n0 (s k O)) t e1 e2)))))))))))) (\lambda (k: 
9674 K).(\lambda (i0: nat).(\lambda (v0: T).(\lambda (u1: T).(\lambda (u2: 
9675 T).(\lambda (H2: (subst0 i0 v0 u1 u2)).(\lambda (c: C).(let H3 \def (eq_ind_r 
9676 nat i0 (\lambda (n: nat).(subst0 n v0 u1 u2)) H2 (minus (s k i0) (s k O)) 
9677 (s_arith0 k i0)) in (or4_intro1 (drop O O (CHead c k u2) (CHead c k u1)) 
9678 (ex3_4 K C T T (\lambda (k0: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
9679 T).(eq C (CHead c k u1) (CHead e0 k0 u)))))) (\lambda (k0: K).(\lambda (e0: 
9680 C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c k u2) (CHead e0 k0 
9681 w)))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
9682 T).(subst0 (minus (s k i0) (s k0 O)) v0 u w)))))) (ex3_4 K C C T (\lambda 
9683 (k0: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead c k u1) 
9684 (CHead e1 k0 u)))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (e2: 
9685 C).(\lambda (u: T).(drop O O (CHead c k u2) (CHead e2 k0 u)))))) (\lambda 
9686 (k0: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s 
9687 k i0) (s k0 O)) v0 e1 e2)))))) (ex4_5 K C C T T (\lambda (k0: K).(\lambda 
9688 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead c k u1) 
9689 (CHead e1 k0 u))))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (e2: 
9690 C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c k u2) (CHead e2 k0 
9691 w))))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
9692 T).(\lambda (w: T).(subst0 (minus (s k i0) (s k0 O)) v0 u w)))))) (\lambda 
9693 (k0: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: 
9694 T).(csubst0 (minus (s k i0) (s k0 O)) v0 e1 e2))))))) (ex3_4_intro K C T T 
9695 (\lambda (k0: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C 
9696 (CHead c k u1) (CHead e0 k0 u)))))) (\lambda (k0: K).(\lambda (e0: 
9697 C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c k u2) (CHead e0 k0 
9698 w)))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
9699 T).(subst0 (minus (s k i0) (s k0 O)) v0 u w))))) k c u1 u2 (refl_equal C 
9700 (CHead c k u1)) (drop_refl (CHead c k u2)) H3)))))))))) (\lambda (k: 
9701 K).(\lambda (i0: nat).(\lambda (c3: C).(\lambda (c4: C).(\lambda (v0: 
9702 T).(\lambda (H2: (csubst0 i0 v0 c3 c4)).(\lambda (H3: (or4 (drop O O c4 c3) 
9703 (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
9704 T).(eq C c3 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
9705 T).(\lambda (w: T).(drop O O c4 (CHead e0 k w)))))) (\lambda (k: K).(\lambda 
9706 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (s k O)) v0 u 
9707 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
9708 C).(\lambda (u: T).(eq C c3 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: 
9709 C).(\lambda (e2: C).(\lambda (u: T).(drop O O c4 (CHead e2 k u)))))) (\lambda 
9710 (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 
9711 (s k O)) v0 e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
9712 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e1 k 
9713 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
9714 T).(\lambda (w: T).(drop O O c4 (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
9715 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (s k 
9716 O)) v0 u w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
9717 (_: T).(\lambda (_: T).(csubst0 (minus i0 (s k O)) v0 e1 e2))))))))).(\lambda 
9718 (u: T).(let H4 \def (eq_ind_r nat i0 (\lambda (n: nat).(csubst0 n v0 c3 c4)) 
9719 H2 (minus (s k i0) (s k O)) (s_arith0 k i0)) in (let H5 \def (eq_ind_r nat i0 
9720 (\lambda (n: nat).(or4 (drop O O c4 c3) (ex3_4 K C T T (\lambda (k: 
9721 K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e0 k 
9722 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
9723 T).(drop O O c4 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
9724 (u: T).(\lambda (w: T).(subst0 (minus n (s k O)) v0 u w)))))) (ex3_4 K C C T 
9725 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c3 
9726 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda 
9727 (u: T).(drop O O c4 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
9728 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus n (s k O)) v0 e1 e2)))))) 
9729 (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda 
9730 (u: T).(\lambda (_: T).(eq C c3 (CHead e1 k u))))))) (\lambda (k: K).(\lambda 
9731 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O c4 (CHead 
9732 e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
9733 T).(\lambda (w: T).(subst0 (minus n (s k O)) v0 u w)))))) (\lambda (k: 
9734 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
9735 (minus n (s k O)) v0 e1 e2))))))))) H3 (minus (s k i0) (s k O)) (s_arith0 k 
9736 i0)) in (or4_intro2 (drop O O (CHead c4 k u) (CHead c3 k u)) (ex3_4 K C T T 
9737 (\lambda (k0: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C 
9738 (CHead c3 k u) (CHead e0 k0 u0)))))) (\lambda (k0: K).(\lambda (e0: 
9739 C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 k u) (CHead e0 k0 
9740 w)))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
9741 T).(subst0 (minus (s k i0) (s k0 O)) v0 u0 w)))))) (ex3_4 K C C T (\lambda 
9742 (k0: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead c3 k 
9743 u) (CHead e1 k0 u0)))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (e2: 
9744 C).(\lambda (u0: T).(drop O O (CHead c4 k u) (CHead e2 k0 u0)))))) (\lambda 
9745 (k0: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s 
9746 k i0) (s k0 O)) v0 e1 e2)))))) (ex4_5 K C C T T (\lambda (k0: K).(\lambda 
9747 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead c3 k u) 
9748 (CHead e1 k0 u0))))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (e2: 
9749 C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 k u) (CHead e2 k0 
9750 w))))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: 
9751 T).(\lambda (w: T).(subst0 (minus (s k i0) (s k0 O)) v0 u0 w)))))) (\lambda 
9752 (k0: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: 
9753 T).(csubst0 (minus (s k i0) (s k0 O)) v0 e1 e2))))))) (ex3_4_intro K C C T 
9754 (\lambda (k0: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C 
9755 (CHead c3 k u) (CHead e1 k0 u0)))))) (\lambda (k0: K).(\lambda (_: 
9756 C).(\lambda (e2: C).(\lambda (u0: T).(drop O O (CHead c4 k u) (CHead e2 k0 
9757 u0)))))) (\lambda (k0: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
9758 T).(csubst0 (minus (s k i0) (s k0 O)) v0 e1 e2))))) k c3 c4 u (refl_equal C 
9759 (CHead c3 k u)) (drop_refl (CHead c4 k u)) H4)))))))))))) (\lambda (k: 
9760 K).(\lambda (i0: nat).(\lambda (v0: T).(\lambda (u1: T).(\lambda (u2: 
9761 T).(\lambda (H2: (subst0 i0 v0 u1 u2)).(\lambda (c3: C).(\lambda (c4: 
9762 C).(\lambda (H3: (csubst0 i0 v0 c3 c4)).(\lambda (_: (or4 (drop O O c4 c3) 
9763 (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
9764 T).(eq C c3 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
9765 T).(\lambda (w: T).(drop O O c4 (CHead e0 k w)))))) (\lambda (k: K).(\lambda 
9766 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (s k O)) v0 u 
9767 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
9768 C).(\lambda (u: T).(eq C c3 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: 
9769 C).(\lambda (e2: C).(\lambda (u: T).(drop O O c4 (CHead e2 k u)))))) (\lambda 
9770 (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 
9771 (s k O)) v0 e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
9772 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e1 k 
9773 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
9774 T).(\lambda (w: T).(drop O O c4 (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
9775 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (s k 
9776 O)) v0 u w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
9777 (_: T).(\lambda (_: T).(csubst0 (minus i0 (s k O)) v0 e1 e2))))))))).(let H5 
9778 \def (eq_ind_r nat i0 (\lambda (n: nat).(subst0 n v0 u1 u2)) H2 (minus (s k 
9779 i0) (s k O)) (s_arith0 k i0)) in (let H6 \def (eq_ind_r nat i0 (\lambda (n: 
9780 nat).(csubst0 n v0 c3 c4)) H3 (minus (s k i0) (s k O)) (s_arith0 k i0)) in 
9781 (or4_intro3 (drop O O (CHead c4 k u2) (CHead c3 k u1)) (ex3_4 K C T T 
9782 (\lambda (k0: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C 
9783 (CHead c3 k u1) (CHead e0 k0 u)))))) (\lambda (k0: K).(\lambda (e0: 
9784 C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 k u2) (CHead e0 k0 
9785 w)))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
9786 T).(subst0 (minus (s k i0) (s k0 O)) v0 u w)))))) (ex3_4 K C C T (\lambda 
9787 (k0: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead c3 k 
9788 u1) (CHead e1 k0 u)))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (e2: 
9789 C).(\lambda (u: T).(drop O O (CHead c4 k u2) (CHead e2 k0 u)))))) (\lambda 
9790 (k0: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s 
9791 k i0) (s k0 O)) v0 e1 e2)))))) (ex4_5 K C C T T (\lambda (k0: K).(\lambda 
9792 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead c3 k u1) 
9793 (CHead e1 k0 u))))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (e2: 
9794 C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 k u2) (CHead e2 k0 
9795 w))))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
9796 T).(\lambda (w: T).(subst0 (minus (s k i0) (s k0 O)) v0 u w)))))) (\lambda 
9797 (k0: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: 
9798 T).(csubst0 (minus (s k i0) (s k0 O)) v0 e1 e2))))))) (ex4_5_intro K C C T T 
9799 (\lambda (k0: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda 
9800 (_: T).(eq C (CHead c3 k u1) (CHead e1 k0 u))))))) (\lambda (k0: K).(\lambda 
9801 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 k 
9802 u2) (CHead e2 k0 w))))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (_: 
9803 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k i0) (s k0 O)) v0 u 
9804 w)))))) (\lambda (k0: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
9805 T).(\lambda (_: T).(csubst0 (minus (s k i0) (s k0 O)) v0 e1 e2)))))) k c3 c4 
9806 u1 u2 (refl_equal C (CHead c3 k u1)) (drop_refl (CHead c4 k u2)) H5 
9807 H6)))))))))))))) i v c1 c2 H0) e (drop_gen_refl c1 e H1)))))))))) (\lambda 
9808 (n0: nat).(\lambda (IHn: ((\forall (i: nat).((lt n0 i) \to (\forall (c1: 
9809 C).(\forall (c2: C).(\forall (v: T).((csubst0 i v c1 c2) \to (\forall (e: 
9810 C).((drop n0 O c1 e) \to (or4 (drop n0 O c2 e) (ex3_4 K C T T (\lambda (k: 
9811 K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k 
9812 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
9813 T).(drop n0 O c2 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
9814 (u: T).(\lambda (w: T).(subst0 (minus i (s k n0)) v u w)))))) (ex3_4 K C C T 
9815 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
9816 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda 
9817 (u: T).(drop n0 O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
9818 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (s k n0)) v e1 e2)))))) 
9819 (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda 
9820 (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: K).(\lambda 
9821 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c2 (CHead 
9822 e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
9823 T).(\lambda (w: T).(subst0 (minus i (s k n0)) v u w)))))) (\lambda (k: 
9824 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
9825 (minus i (s k n0)) v e1 e2)))))))))))))))))).(\lambda (i: nat).(\lambda (H: 
9826 (lt (S n0) i)).(\lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: 
9827 C).(\forall (v: T).((csubst0 i v c c2) \to (\forall (e: C).((drop (S n0) O c 
9828 e) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
9829 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: 
9830 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead 
9831 e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
9832 T).(subst0 (minus i (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
9833 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
9834 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
9835 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
9836 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (s k (S n0))) v e1 
9837 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
9838 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
9839 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
9840 n0) O c2 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
9841 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k (S n0))) v u w)))))) 
9842 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
9843 (_: T).(csubst0 (minus i (s k (S n0))) v e1 e2)))))))))))))) (\lambda (n1: 
9844 nat).(\lambda (c2: C).(\lambda (v: T).(\lambda (_: (csubst0 i v (CSort n1) 
9845 c2)).(\lambda (e: C).(\lambda (H1: (drop (S n0) O (CSort n1) e)).(and3_ind 
9846 (eq C e (CSort n1)) (eq nat (S n0) O) (eq nat O O) (or4 (drop (S n0) O c2 e) 
9847 (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
9848 T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
9849 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k: 
9850 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k (S 
9851 n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda 
9852 (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda 
9853 (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c2 (CHead e2 k u)))))) 
9854 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
9855 (minus i (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: 
9856 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
9857 (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
9858 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) 
9859 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
9860 T).(subst0 (minus i (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
9861 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (s k (S 
9862 n0))) v e1 e2)))))))) (\lambda (H2: (eq C e (CSort n1))).(\lambda (H3: (eq 
9863 nat (S n0) O)).(\lambda (_: (eq nat O O)).(eq_ind_r C (CSort n1) (\lambda (c: 
9864 C).(or4 (drop (S n0) O c2 c) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
9865 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 k u)))))) (\lambda (k: 
9866 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead 
9867 e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
9868 T).(subst0 (minus i (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
9869 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 k 
9870 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
9871 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
9872 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (s k (S n0))) v e1 
9873 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
9874 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 k u))))))) (\lambda (k: 
9875 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
9876 n0) O c2 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
9877 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k (S n0))) v u w)))))) 
9878 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
9879 (_: T).(csubst0 (minus i (s k (S n0))) v e1 e2))))))))) (let H5 \def (eq_ind 
9880 nat (S n0) (\lambda (ee: nat).(match ee return (\lambda (_: nat).Prop) with 
9881 [O \Rightarrow False | (S _) \Rightarrow True])) I O H3) in (False_ind (or4 
9882 (drop (S n0) O c2 (CSort n1)) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
9883 C).(\lambda (u: T).(\lambda (_: T).(eq C (CSort n1) (CHead e0 k u)))))) 
9884 (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) 
9885 O c2 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: 
9886 T).(\lambda (w: T).(subst0 (minus i (s k (S n0))) v u w)))))) (ex3_4 K C C T 
9887 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CSort 
9888 n1) (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
9889 C).(\lambda (u: T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: 
9890 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (s k 
9891 (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
9892 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CSort n1) (CHead e1 
9893 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
9894 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) (\lambda (k: 
9895 K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
9896 (minus i (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
9897 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (s k (S n0))) v e1 
9898 e2)))))))) H5)) e H2)))) (drop_gen_sort n1 (S n0) O e H1)))))))) (\lambda (c: 
9899 C).(\lambda (H0: ((\forall (c2: C).(\forall (v: T).((csubst0 i v c c2) \to 
9900 (\forall (e: C).((drop (S n0) O c e) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C 
9901 T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
9902 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
9903 (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
9904 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k (S n0))) v u w)))))) 
9905 (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
9906 T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
9907 C).(\lambda (u: T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: 
9908 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (s k 
9909 (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
9910 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k 
9911 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
9912 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) (\lambda (k: 
9913 K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
9914 (minus i (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
9915 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (s k (S n0))) v e1 
9916 e2))))))))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c2: C).(\lambda 
9917 (v: T).(\lambda (H1: (csubst0 i v (CHead c k t) c2)).(\lambda (e: C).(\lambda 
9918 (H2: (drop (S n0) O (CHead c k t) e)).(let H3 \def (match H1 return (\lambda 
9919 (n: nat).(\lambda (t0: T).(\lambda (c0: C).(\lambda (c1: C).(\lambda (_: 
9920 (csubst0 n t0 c0 c1)).((eq nat n i) \to ((eq T t0 v) \to ((eq C c0 (CHead c k 
9921 t)) \to ((eq C c1 c2) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda 
9922 (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k 
9923 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
9924 T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
9925 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k (S n0))) v u w)))))) 
9926 (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
9927 T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
9928 C).(\lambda (u: T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: 
9929 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (s k 
9930 (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
9931 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k 
9932 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
9933 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) (\lambda (k: 
9934 K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
9935 (minus i (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
9936 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (s k (S n0))) v e1 
9937 e2))))))))))))))))) with [(csubst0_snd k0 i0 v0 u1 u2 H3 c0) \Rightarrow 
9938 (\lambda (H4: (eq nat (s k0 i0) i)).(\lambda (H5: (eq T v0 v)).(\lambda (H6: 
9939 (eq C (CHead c0 k0 u1) (CHead c k t))).(\lambda (H7: (eq C (CHead c0 k0 u2) 
9940 c2)).(eq_ind nat (s k0 i0) (\lambda (n: nat).((eq T v0 v) \to ((eq C (CHead 
9941 c0 k0 u1) (CHead c k t)) \to ((eq C (CHead c0 k0 u2) c2) \to ((subst0 i0 v0 
9942 u1 u2) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda 
9943 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda 
9944 (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 
9945 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda 
9946 (w: T).(subst0 (minus n (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
9947 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
9948 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
9949 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
9950 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus n (s k (S n0))) v e1 
9951 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
9952 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
9953 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
9954 n0) O c2 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
9955 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus n (s k (S n0))) v u w)))))) 
9956 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
9957 (_: T).(csubst0 (minus n (s k (S n0))) v e1 e2))))))))))))) (\lambda (H8: (eq 
9958 T v0 v)).(eq_ind T v (\lambda (t0: T).((eq C (CHead c0 k0 u1) (CHead c k t)) 
9959 \to ((eq C (CHead c0 k0 u2) c2) \to ((subst0 i0 t0 u1 u2) \to (or4 (drop (S 
9960 n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: 
9961 T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: 
9962 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) 
9963 (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
9964 (minus (s k0 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
9965 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
9966 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
9967 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
9968 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k0 i0) (s k (S n0))) v 
9969 e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
9970 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
9971 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
9972 n0) O c2 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
9973 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k0 i0) (s k (S n0))) v u 
9974 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
9975 T).(\lambda (_: T).(csubst0 (minus (s k0 i0) (s k (S n0))) v e1 
9976 e2)))))))))))) (\lambda (H9: (eq C (CHead c0 k0 u1) (CHead c k t))).(let H10 
9977 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
9978 [(CSort _) \Rightarrow u1 | (CHead _ _ t) \Rightarrow t])) (CHead c0 k0 u1) 
9979 (CHead c k t) H9) in ((let H11 \def (f_equal C K (\lambda (e0: C).(match e0 
9980 return (\lambda (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) 
9981 \Rightarrow k])) (CHead c0 k0 u1) (CHead c k t) H9) in ((let H12 \def 
9982 (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
9983 [(CSort _) \Rightarrow c0 | (CHead c _ _) \Rightarrow c])) (CHead c0 k0 u1) 
9984 (CHead c k t) H9) in (eq_ind C c (\lambda (c: C).((eq K k0 k) \to ((eq T u1 
9985 t) \to ((eq C (CHead c k0 u2) c2) \to ((subst0 i0 v u1 u2) \to (or4 (drop (S 
9986 n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: 
9987 T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: 
9988 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) 
9989 (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
9990 (minus (s k0 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
9991 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
9992 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
9993 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
9994 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k0 i0) (s k (S n0))) v 
9995 e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
9996 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
9997 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
9998 n0) O c2 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
9999 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k0 i0) (s k (S n0))) v u 
10000 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10001 T).(\lambda (_: T).(csubst0 (minus (s k0 i0) (s k (S n0))) v e1 
10002 e2))))))))))))) (\lambda (H13: (eq K k0 k)).(eq_ind K k (\lambda (k: K).((eq 
10003 T u1 t) \to ((eq C (CHead c k u2) c2) \to ((subst0 i0 v u1 u2) \to (or4 (drop 
10004 (S n0) O c2 e) (ex3_4 K C T T (\lambda (k1: K).(\lambda (e0: C).(\lambda (u: 
10005 T).(\lambda (_: T).(eq C e (CHead e0 k1 u)))))) (\lambda (k1: K).(\lambda 
10006 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k1 
10007 w)))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10008 T).(subst0 (minus (s k i0) (s k1 (S n0))) v u w)))))) (ex3_4 K C C T (\lambda 
10009 (k1: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k1 
10010 u)))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
10011 T).(drop (S n0) O c2 (CHead e2 k1 u)))))) (\lambda (k1: K).(\lambda (e1: 
10012 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v 
10013 e1 e2)))))) (ex4_5 K C C T T (\lambda (k1: K).(\lambda (e1: C).(\lambda (_: 
10014 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k1 u))))))) (\lambda 
10015 (k1: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
10016 T).(drop (S n0) O c2 (CHead e2 k1 w))))))) (\lambda (k1: K).(\lambda (_: 
10017 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k i0) (s 
10018 k1 (S n0))) v u w)))))) (\lambda (k1: K).(\lambda (e1: C).(\lambda (e2: 
10019 C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v 
10020 e1 e2)))))))))))) (\lambda (H14: (eq T u1 t)).(eq_ind T t (\lambda (t: 
10021 T).((eq C (CHead c k u2) c2) \to ((subst0 i0 v t u2) \to (or4 (drop (S n0) O 
10022 c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: 
10023 T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: 
10024 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) 
10025 (\lambda (k1: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
10026 (minus (s k i0) (s k1 (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
10027 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
10028 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
10029 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k1: K).(\lambda (e1: 
10030 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v 
10031 e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10032 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
10033 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
10034 n0) O c2 (CHead e2 k w))))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (_: 
10035 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k i0) (s k1 (S n0))) v u 
10036 w)))))) (\lambda (k1: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10037 T).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v e1 e2))))))))))) 
10038 (\lambda (H15: (eq C (CHead c k u2) c2)).(eq_ind C (CHead c k u2) (\lambda 
10039 (c: C).((subst0 i0 v t u2) \to (or4 (drop (S n0) O c e) (ex3_4 K C T T 
10040 (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
10041 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
10042 (w: T).(drop (S n0) O c (CHead e0 k w)))))) (\lambda (k1: K).(\lambda (_: 
10043 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k i0) (s k1 (S n0))) v u 
10044 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10045 C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: 
10046 C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c (CHead e2 k u)))))) 
10047 (\lambda (k1: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10048 (minus (s k i0) (s k1 (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: 
10049 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
10050 (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10051 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c (CHead e2 k w))))))) 
10052 (\lambda (k1: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10053 T).(subst0 (minus (s k i0) (s k1 (S n0))) v u w)))))) (\lambda (k1: 
10054 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10055 (minus (s k i0) (s k1 (S n0))) v e1 e2)))))))))) (\lambda (_: (subst0 i0 v t 
10056 u2)).(let H1 \def (eq_ind K k0 (\lambda (k: K).(eq nat (s k i0) i)) H4 k H13) 
10057 in (let H17 \def (eq_ind_r nat i (\lambda (n: nat).(\forall (c2: C).(\forall 
10058 (v: T).((csubst0 n v c c2) \to (\forall (e: C).((drop (S n0) O c e) \to (or4 
10059 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda 
10060 (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda 
10061 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) 
10062 (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
10063 (minus n (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda 
10064 (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda 
10065 (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c2 
10066 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: 
10067 C).(\lambda (_: T).(csubst0 (minus n (s k (S n0))) v e1 e2)))))) (ex4_5 K C C 
10068 T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda 
10069 (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
10070 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k 
10071 w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
10072 T).(\lambda (w: T).(subst0 (minus n (s k (S n0))) v u w)))))) (\lambda (k: 
10073 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10074 (minus n (s k (S n0))) v e1 e2)))))))))))))) H0 (s k i0) H1) in (let H18 \def 
10075 (eq_ind_r nat i (\lambda (n: nat).(lt (S n0) n)) H (s k i0) H1) in (K_ind 
10076 (\lambda (k: K).((drop (r k n0) O c e) \to (((\forall (c2: C).(\forall (v: 
10077 T).((csubst0 (s k i0) v c c2) \to (\forall (e: C).((drop (S n0) O c e) \to 
10078 (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
10079 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: 
10080 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead 
10081 e0 k w)))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10082 T).(subst0 (minus (s k i0) (s k0 (S n0))) v u w)))))) (ex3_4 K C C T (\lambda 
10083 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
10084 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
10085 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k0: K).(\lambda (e1: 
10086 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k i0) (s k0 (S n0))) v 
10087 e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10088 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
10089 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
10090 n0) O c2 (CHead e2 k w))))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (_: 
10091 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k i0) (s k0 (S n0))) v u 
10092 w)))))) (\lambda (k0: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10093 T).(\lambda (_: T).(csubst0 (minus (s k i0) (s k0 (S n0))) v e1 
10094 e2)))))))))))))) \to ((lt (S n0) (s k i0)) \to (or4 (drop (S n0) O (CHead c k 
10095 u2) e) (ex3_4 K C T T (\lambda (k1: K).(\lambda (e0: C).(\lambda (u: 
10096 T).(\lambda (_: T).(eq C e (CHead e0 k1 u)))))) (\lambda (k1: K).(\lambda 
10097 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c k u2) (CHead 
10098 e0 k1 w)))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10099 T).(subst0 (minus (s k i0) (s k1 (S n0))) v u w)))))) (ex3_4 K C C T (\lambda 
10100 (k1: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k1 
10101 u)))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
10102 T).(drop (S n0) O (CHead c k u2) (CHead e2 k1 u)))))) (\lambda (k1: 
10103 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k i0) 
10104 (s k1 (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k1: K).(\lambda (e1: 
10105 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k1 
10106 u))))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10107 T).(\lambda (w: T).(drop (S n0) O (CHead c k u2) (CHead e2 k1 w))))))) 
10108 (\lambda (k1: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10109 T).(subst0 (minus (s k i0) (s k1 (S n0))) v u w)))))) (\lambda (k1: 
10110 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10111 (minus (s k i0) (s k1 (S n0))) v e1 e2)))))))))))) (\lambda (b: B).(\lambda 
10112 (H2: (drop (r (Bind b) n0) O c e)).(\lambda (_: ((\forall (c2: C).(\forall 
10113 (v: T).((csubst0 (s (Bind b) i0) v c c2) \to (\forall (e: C).((drop (S n0) O 
10114 c e) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda 
10115 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda 
10116 (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 
10117 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda 
10118 (w: T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (ex3_4 K C C 
10119 T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
10120 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda 
10121 (u: T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
10122 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S 
10123 n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
10124 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k 
10125 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10126 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) (\lambda (k: 
10127 K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
10128 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda 
10129 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s 
10130 (Bind b) i0) (s k (S n0))) v e1 e2))))))))))))))).(\lambda (_: (lt (S n0) (s 
10131 (Bind b) i0))).(or4_intro0 (drop (S n0) O (CHead c (Bind b) u2) e) (ex3_4 K C 
10132 T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
10133 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
10134 (w: T).(drop (S n0) O (CHead c (Bind b) u2) (CHead e0 k w)))))) (\lambda (k: 
10135 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) 
10136 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
10137 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: 
10138 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c 
10139 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
10140 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
10141 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10142 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
10143 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
10144 n0) O (CHead c (Bind b) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: 
10145 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) 
10146 i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: 
10147 C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S 
10148 n0))) v e1 e2))))))) (drop_drop (Bind b) n0 c e H2 u2)))))) (\lambda (f: 
10149 F).(\lambda (H2: (drop (r (Flat f) n0) O c e)).(\lambda (_: ((\forall (c2: 
10150 C).(\forall (v: T).((csubst0 (s (Flat f) i0) v c c2) \to (\forall (e: 
10151 C).((drop (S n0) O c e) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda 
10152 (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k 
10153 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
10154 T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
10155 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S 
10156 n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda 
10157 (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda 
10158 (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c2 (CHead e2 k u)))))) 
10159 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10160 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10161 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
10162 e (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10163 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) 
10164 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10165 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: 
10166 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10167 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2))))))))))))))).(\lambda (_: (lt 
10168 (S n0) (s (Flat f) i0))).(or4_intro0 (drop (S n0) O (CHead c (Flat f) u2) e) 
10169 (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
10170 T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10171 T).(\lambda (w: T).(drop (S n0) O (CHead c (Flat f) u2) (CHead e0 k w)))))) 
10172 (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
10173 (minus (s (Flat f) i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
10174 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
10175 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
10176 T).(drop (S n0) O (CHead c (Flat f) u2) (CHead e2 k u)))))) (\lambda (k: 
10177 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat 
10178 f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
10179 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k 
10180 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10181 T).(\lambda (w: T).(drop (S n0) O (CHead c (Flat f) u2) (CHead e2 k w))))))) 
10182 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10183 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: 
10184 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10185 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2))))))) (drop_drop (Flat f) n0 c 
10186 e H2 u2)))))) k (drop_gen_drop k c e t n0 H2) H17 H18))))) c2 H15)) u1 
10187 (sym_eq T u1 t H14))) k0 (sym_eq K k0 k H13))) c0 (sym_eq C c0 c H12))) H11)) 
10188 H10))) v0 (sym_eq T v0 v H8))) i H4 H5 H6 H7 H3))))) | (csubst0_fst k0 i0 c1 
10189 c0 v0 H3 u) \Rightarrow (\lambda (H4: (eq nat (s k0 i0) i)).(\lambda (H5: (eq 
10190 T v0 v)).(\lambda (H6: (eq C (CHead c1 k0 u) (CHead c k t))).(\lambda (H7: 
10191 (eq C (CHead c0 k0 u) c2)).(eq_ind nat (s k0 i0) (\lambda (n: nat).((eq T v0 
10192 v) \to ((eq C (CHead c1 k0 u) (CHead c k t)) \to ((eq C (CHead c0 k0 u) c2) 
10193 \to ((csubst0 i0 v0 c1 c0) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T 
10194 (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e 
10195 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10196 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k: 
10197 K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus n (s k (S 
10198 n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda 
10199 (_: C).(\lambda (u0: T).(eq C e (CHead e1 k u0)))))) (\lambda (k: K).(\lambda 
10200 (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O c2 (CHead e2 k 
10201 u0)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10202 T).(csubst0 (minus n (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10203 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
10204 C e (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10205 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) 
10206 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10207 T).(subst0 (minus n (s k (S n0))) v u0 w)))))) (\lambda (k: K).(\lambda (e1: 
10208 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus n (s k (S 
10209 n0))) v e1 e2))))))))))))) (\lambda (H8: (eq T v0 v)).(eq_ind T v (\lambda 
10210 (t0: T).((eq C (CHead c1 k0 u) (CHead c k t)) \to ((eq C (CHead c0 k0 u) c2) 
10211 \to ((csubst0 i0 t0 c1 c0) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T 
10212 (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e 
10213 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10214 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k: 
10215 K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s k0 i0) 
10216 (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
10217 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k u0)))))) (\lambda (k: 
10218 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O c2 (CHead 
10219 e2 k u0)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10220 T).(csubst0 (minus (s k0 i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T 
10221 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda 
10222 (_: T).(eq C e (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
10223 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k 
10224 w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: 
10225 T).(\lambda (w: T).(subst0 (minus (s k0 i0) (s k (S n0))) v u0 w)))))) 
10226 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
10227 (_: T).(csubst0 (minus (s k0 i0) (s k (S n0))) v e1 e2)))))))))))) (\lambda 
10228 (H9: (eq C (CHead c1 k0 u) (CHead c k t))).(let H10 \def (f_equal C T 
10229 (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with [(CSort _) 
10230 \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead c1 k0 u) (CHead c k t) 
10231 H9) in ((let H11 \def (f_equal C K (\lambda (e0: C).(match e0 return (\lambda 
10232 (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) \Rightarrow k])) 
10233 (CHead c1 k0 u) (CHead c k t) H9) in ((let H12 \def (f_equal C C (\lambda 
10234 (e0: C).(match e0 return (\lambda (_: C).C) with [(CSort _) \Rightarrow c1 | 
10235 (CHead c _ _) \Rightarrow c])) (CHead c1 k0 u) (CHead c k t) H9) in (eq_ind C 
10236 c (\lambda (c: C).((eq K k0 k) \to ((eq T u t) \to ((eq C (CHead c0 k0 u) c2) 
10237 \to ((csubst0 i0 v c c0) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T 
10238 (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e 
10239 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10240 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k: 
10241 K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s k0 i0) 
10242 (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
10243 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k u0)))))) (\lambda (k: 
10244 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O c2 (CHead 
10245 e2 k u0)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10246 T).(csubst0 (minus (s k0 i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T 
10247 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda 
10248 (_: T).(eq C e (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
10249 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k 
10250 w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: 
10251 T).(\lambda (w: T).(subst0 (minus (s k0 i0) (s k (S n0))) v u0 w)))))) 
10252 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
10253 (_: T).(csubst0 (minus (s k0 i0) (s k (S n0))) v e1 e2))))))))))))) (\lambda 
10254 (H13: (eq K k0 k)).(eq_ind K k (\lambda (k: K).((eq T u t) \to ((eq C (CHead 
10255 c0 k u) c2) \to ((csubst0 i0 v c c0) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C 
10256 T T (\lambda (k1: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C 
10257 e (CHead e0 k1 u0)))))) (\lambda (k1: K).(\lambda (e0: C).(\lambda (_: 
10258 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k1 w)))))) (\lambda (k1: 
10259 K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s k i0) 
10260 (s k1 (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k1: K).(\lambda (e1: 
10261 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k1 u0)))))) (\lambda 
10262 (k1: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O c2 
10263 (CHead e2 k1 u0)))))) (\lambda (k1: K).(\lambda (e1: C).(\lambda (e2: 
10264 C).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v e1 e2)))))) 
10265 (ex4_5 K C C T T (\lambda (k1: K).(\lambda (e1: C).(\lambda (_: C).(\lambda 
10266 (u0: T).(\lambda (_: T).(eq C e (CHead e1 k1 u0))))))) (\lambda (k1: 
10267 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
10268 n0) O c2 (CHead e2 k1 w))))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (_: 
10269 C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s k i0) (s k1 (S n0))) v 
10270 u0 w)))))) (\lambda (k1: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10271 T).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v e1 
10272 e2)))))))))))) (\lambda (H14: (eq T u t)).(eq_ind T t (\lambda (t: T).((eq C 
10273 (CHead c0 k t) c2) \to ((csubst0 i0 v c c0) \to (or4 (drop (S n0) O c2 e) 
10274 (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: 
10275 T).(eq C e (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10276 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k1: 
10277 K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s k i0) 
10278 (s k1 (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
10279 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k u0)))))) (\lambda (k: 
10280 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O c2 (CHead 
10281 e2 k u0)))))) (\lambda (k1: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10282 T).(csubst0 (minus (s k i0) (s k1 (S n0))) v e1 e2)))))) (ex4_5 K C C T T 
10283 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda 
10284 (_: T).(eq C e (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
10285 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k 
10286 w))))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: 
10287 T).(\lambda (w: T).(subst0 (minus (s k i0) (s k1 (S n0))) v u0 w)))))) 
10288 (\lambda (k1: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
10289 (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v e1 e2))))))))))) (\lambda 
10290 (H15: (eq C (CHead c0 k t) c2)).(eq_ind C (CHead c0 k t) (\lambda (c2: 
10291 C).((csubst0 i0 v c c0) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda 
10292 (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 k 
10293 u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
10294 T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k1: K).(\lambda (_: 
10295 C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s k i0) (s k1 (S n0))) v 
10296 u0 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10297 C).(\lambda (u0: T).(eq C e (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: 
10298 C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O c2 (CHead e2 k u0)))))) 
10299 (\lambda (k1: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10300 (minus (s k i0) (s k1 (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: 
10301 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e 
10302 (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10303 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) 
10304 (\lambda (k1: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda 
10305 (w: T).(subst0 (minus (s k i0) (s k1 (S n0))) v u0 w)))))) (\lambda (k1: 
10306 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10307 (minus (s k i0) (s k1 (S n0))) v e1 e2)))))))))) (\lambda (H16: (csubst0 i0 v 
10308 c c0)).(let H1 \def (eq_ind K k0 (\lambda (k: K).(eq nat (s k i0) i)) H4 k 
10309 H13) in (let H17 \def (eq_ind_r nat i (\lambda (n: nat).(\forall (c2: 
10310 C).(\forall (v: T).((csubst0 n v c c2) \to (\forall (e: C).((drop (S n0) O c 
10311 e) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
10312 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: 
10313 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead 
10314 e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10315 T).(subst0 (minus n (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
10316 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
10317 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
10318 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
10319 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus n (s k (S n0))) v e1 
10320 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10321 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
10322 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
10323 n0) O c2 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
10324 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus n (s k (S n0))) v u w)))))) 
10325 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
10326 (_: T).(csubst0 (minus n (s k (S n0))) v e1 e2)))))))))))))) H0 (s k i0) H1) 
10327 in (let H18 \def (eq_ind_r nat i (\lambda (n: nat).(lt (S n0) n)) H (s k i0) 
10328 H1) in (K_ind (\lambda (k: K).((drop (r k n0) O c e) \to (((\forall (c2: 
10329 C).(\forall (v: T).((csubst0 (s k i0) v c c2) \to (\forall (e: C).((drop (S 
10330 n0) O c e) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: 
10331 K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k 
10332 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
10333 T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k0: K).(\lambda (_: 
10334 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k i0) (s k0 (S n0))) v u 
10335 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10336 C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: 
10337 C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c2 (CHead e2 k u)))))) 
10338 (\lambda (k0: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10339 (minus (s k i0) (s k0 (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: 
10340 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
10341 (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10342 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) 
10343 (\lambda (k0: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10344 T).(subst0 (minus (s k i0) (s k0 (S n0))) v u w)))))) (\lambda (k0: 
10345 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10346 (minus (s k i0) (s k0 (S n0))) v e1 e2)))))))))))))) \to ((lt (S n0) (s k 
10347 i0)) \to (or4 (drop (S n0) O (CHead c0 k t) e) (ex3_4 K C T T (\lambda (k1: 
10348 K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 k1 
10349 u0)))))) (\lambda (k1: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
10350 T).(drop (S n0) O (CHead c0 k t) (CHead e0 k1 w)))))) (\lambda (k1: 
10351 K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s k i0) 
10352 (s k1 (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k1: K).(\lambda (e1: 
10353 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k1 u0)))))) (\lambda 
10354 (k1: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O 
10355 (CHead c0 k t) (CHead e2 k1 u0)))))) (\lambda (k1: K).(\lambda (e1: 
10356 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v 
10357 e1 e2)))))) (ex4_5 K C C T T (\lambda (k1: K).(\lambda (e1: C).(\lambda (_: 
10358 C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 k1 u0))))))) (\lambda 
10359 (k1: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
10360 T).(drop (S n0) O (CHead c0 k t) (CHead e2 k1 w))))))) (\lambda (k1: 
10361 K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10362 (minus (s k i0) (s k1 (S n0))) v u0 w)))))) (\lambda (k1: K).(\lambda (e1: 
10363 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s k i0) 
10364 (s k1 (S n0))) v e1 e2)))))))))))) (\lambda (b: B).(\lambda (H2: (drop (r 
10365 (Bind b) n0) O c e)).(\lambda (_: ((\forall (c2: C).(\forall (v: T).((csubst0 
10366 (s (Bind b) i0) v c c2) \to (\forall (e: C).((drop (S n0) O c e) \to (or4 
10367 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda 
10368 (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda 
10369 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) 
10370 (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
10371 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
10372 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
10373 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
10374 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
10375 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S 
10376 n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
10377 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k 
10378 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10379 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) (\lambda (k: 
10380 K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
10381 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda 
10382 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s 
10383 (Bind b) i0) (s k (S n0))) v e1 e2))))))))))))))).(\lambda (H: (lt (S n0) (s 
10384 (Bind b) i0))).(let H19 \def (IHn i0 (le_S_n (S n0) i0 H) c c0 v H16 e H2) in 
10385 (or4_ind (drop n0 O c0 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
10386 C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 k u0)))))) (\lambda (k: 
10387 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e0 k 
10388 w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10389 T).(subst0 (minus i0 (s k n0)) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10390 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k 
10391 u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
10392 T).(drop n0 O c0 (CHead e2 k u0)))))) (\lambda (k: K).(\lambda (e1: 
10393 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (s k n0)) v e1 
10394 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10395 C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 k u0))))))) (\lambda 
10396 (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop 
10397 n0 O c0 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
10398 C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus i0 (s k n0)) v u0 w)))))) 
10399 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
10400 (_: T).(csubst0 (minus i0 (s k n0)) v e1 e2))))))) (or4 (drop (S n0) O (CHead 
10401 c0 (Bind b) t) e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda 
10402 (u0: T).(\lambda (_: T).(eq C e (CHead e0 k u0)))))) (\lambda (k: K).(\lambda 
10403 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) 
10404 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda 
10405 (w: T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C 
10406 T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e 
10407 (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10408 C).(\lambda (u0: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k u0)))))) 
10409 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10410 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10411 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
10412 C e (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10413 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) 
10414 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda 
10415 (u0: T).(\lambda (w: T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 
10416 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10417 T).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
10418 e2)))))))) (\lambda (H20: (drop n0 O c0 e)).(or4_intro0 (drop (S n0) O (CHead 
10419 c0 (Bind b) t) e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda 
10420 (u0: T).(\lambda (_: T).(eq C e (CHead e0 k u0)))))) (\lambda (k: K).(\lambda 
10421 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) 
10422 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda 
10423 (w: T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C 
10424 T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e 
10425 (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10426 C).(\lambda (u0: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k u0)))))) 
10427 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10428 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10429 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
10430 C e (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10431 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) 
10432 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda 
10433 (u0: T).(\lambda (w: T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 
10434 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10435 T).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
10436 e2))))))) (drop_drop (Bind b) n0 c0 e H20 t))) (\lambda (H20: (ex3_4 K C T T 
10437 (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
10438 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
10439 (w: T).(drop n0 O c0 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
10440 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (s k n0)) v u 
10441 w))))))).(ex3_4_ind K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: 
10442 T).(\lambda (_: T).(eq C e (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: 
10443 C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e0 k w)))))) (\lambda 
10444 (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus i0 (s 
10445 k n0)) v u0 w))))) (or4 (drop (S n0) O (CHead c0 (Bind b) t) e) (ex3_4 K C T 
10446 T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e 
10447 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10448 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e0 k w)))))) 
10449 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10450 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10451 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k 
10452 u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
10453 T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k u0)))))) (\lambda (k: 
10454 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind 
10455 b) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
10456 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 k 
10457 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10458 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k w))))))) 
10459 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10460 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10461 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10462 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (x0: 
10463 K).(\lambda (x1: C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H21: (eq C e 
10464 (CHead x1 x0 x2))).(\lambda (H22: (drop n0 O c0 (CHead x1 x0 x3))).(\lambda 
10465 (H23: (subst0 (minus i0 (s x0 n0)) v x2 x3)).(eq_ind_r C (CHead x1 x0 x2) 
10466 (\lambda (c: C).(or4 (drop (S n0) O (CHead c0 (Bind b) t) c) (ex3_4 K C T T 
10467 (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C c 
10468 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10469 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e0 k w)))))) 
10470 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10471 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10472 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C c (CHead e1 k 
10473 u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
10474 T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k u0)))))) (\lambda (k: 
10475 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind 
10476 b) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
10477 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C c (CHead e1 k 
10478 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10479 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k w))))))) 
10480 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10481 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10482 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10483 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2))))))))) (or4_intro1 (drop (S 
10484 n0) O (CHead c0 (Bind b) t) (CHead x1 x0 x2)) (ex3_4 K C T T (\lambda (k: 
10485 K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 x0 x2) 
10486 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10487 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e0 k w)))))) 
10488 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10489 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10490 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead x1 x0 x2) 
10491 (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10492 C).(\lambda (u0: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k u0)))))) 
10493 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10494 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10495 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
10496 C (CHead x1 x0 x2) (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: 
10497 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 
10498 (Bind b) t) (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
10499 C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s (Bind b) i0) (s k (S 
10500 n0))) v u0 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
10501 (_: T).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
10502 e2))))))) (ex3_4_intro K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: 
10503 T).(\lambda (_: T).(eq C (CHead x1 x0 x2) (CHead e0 k u0)))))) (\lambda (k: 
10504 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 
10505 (Bind b) t) (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u0: 
10506 T).(\lambda (w: T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 w))))) 
10507 x0 x1 x2 x3 (refl_equal C (CHead x1 x0 x2)) (drop_drop (Bind b) n0 c0 (CHead 
10508 x1 x0 x3) H22 t) (eq_ind_r nat (S (s x0 n0)) (\lambda (n: nat).(subst0 (minus 
10509 (s (Bind b) i0) n) v x2 x3)) H23 (s x0 (S n0)) (s_S x0 n0)))) e H21)))))))) 
10510 H20)) (\lambda (H20: (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda 
10511 (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda 
10512 (_: C).(\lambda (e2: C).(\lambda (u: T).(drop n0 O c0 (CHead e2 k u)))))) 
10513 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10514 (minus i0 (s k n0)) v e1 e2))))))).(ex3_4_ind K C C T (\lambda (k: 
10515 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k 
10516 u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
10517 T).(drop n0 O c0 (CHead e2 k u0)))))) (\lambda (k: K).(\lambda (e1: 
10518 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (s k n0)) v e1 e2))))) 
10519 (or4 (drop (S n0) O (CHead c0 (Bind b) t) e) (ex3_4 K C T T (\lambda (k: 
10520 K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 k 
10521 u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
10522 T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e0 k w)))))) (\lambda (k: 
10523 K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s (Bind 
10524 b) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda 
10525 (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k u0)))))) 
10526 (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (S 
10527 n0) O (CHead c0 (Bind b) t) (CHead e2 k u0)))))) (\lambda (k: K).(\lambda 
10528 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k 
10529 (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
10530 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 k 
10531 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10532 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k w))))))) 
10533 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10534 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10535 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10536 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (x0: 
10537 K).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H21: (eq C e 
10538 (CHead x1 x0 x3))).(\lambda (H22: (drop n0 O c0 (CHead x2 x0 x3))).(\lambda 
10539 (H23: (csubst0 (minus i0 (s x0 n0)) v x1 x2)).(eq_ind_r C (CHead x1 x0 x3) 
10540 (\lambda (c: C).(or4 (drop (S n0) O (CHead c0 (Bind b) t) c) (ex3_4 K C T T 
10541 (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C c 
10542 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10543 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e0 k w)))))) 
10544 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10545 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10546 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C c (CHead e1 k 
10547 u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
10548 T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k u0)))))) (\lambda (k: 
10549 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind 
10550 b) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
10551 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C c (CHead e1 k 
10552 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10553 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k w))))))) 
10554 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10555 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10556 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10557 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2))))))))) (or4_intro2 (drop (S 
10558 n0) O (CHead c0 (Bind b) t) (CHead x1 x0 x3)) (ex3_4 K C T T (\lambda (k: 
10559 K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) 
10560 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10561 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e0 k w)))))) 
10562 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10563 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10564 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead x1 x0 x3) 
10565 (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10566 C).(\lambda (u0: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k u0)))))) 
10567 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10568 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10569 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
10570 C (CHead x1 x0 x3) (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: 
10571 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 
10572 (Bind b) t) (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
10573 C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s (Bind b) i0) (s k (S 
10574 n0))) v u0 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
10575 (_: T).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
10576 e2))))))) (ex3_4_intro K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10577 C).(\lambda (u0: T).(eq C (CHead x1 x0 x3) (CHead e1 k u0)))))) (\lambda (k: 
10578 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O (CHead c0 
10579 (Bind b) t) (CHead e2 k u0)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
10580 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
10581 e2))))) x0 x1 x2 x3 (refl_equal C (CHead x1 x0 x3)) (drop_drop (Bind b) n0 c0 
10582 (CHead x2 x0 x3) H22 t) (eq_ind_r nat (S (s x0 n0)) (\lambda (n: 
10583 nat).(csubst0 (minus (s (Bind b) i0) n) v x1 x2)) H23 (s x0 (S n0)) (s_S x0 
10584 n0)))) e H21)))))))) H20)) (\lambda (H20: (ex4_5 K C C T T (\lambda (k: 
10585 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
10586 (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10587 C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e2 k w))))))) 
10588 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10589 T).(subst0 (minus i0 (s k n0)) v u w)))))) (\lambda (k: K).(\lambda (e1: 
10590 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (s k 
10591 n0)) v e1 e2)))))))).(ex4_5_ind K C C T T (\lambda (k: K).(\lambda (e1: 
10592 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 k 
10593 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10594 T).(\lambda (w: T).(drop n0 O c0 (CHead e2 k w))))))) (\lambda (k: 
10595 K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10596 (minus i0 (s k n0)) v u0 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
10597 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (s k n0)) v e1 
10598 e2)))))) (or4 (drop (S n0) O (CHead c0 (Bind b) t) e) (ex3_4 K C T T (\lambda 
10599 (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 k 
10600 u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
10601 T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e0 k w)))))) (\lambda (k: 
10602 K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s (Bind 
10603 b) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda 
10604 (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k u0)))))) 
10605 (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (S 
10606 n0) O (CHead c0 (Bind b) t) (CHead e2 k u0)))))) (\lambda (k: K).(\lambda 
10607 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k 
10608 (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
10609 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 k 
10610 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10611 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k w))))))) 
10612 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10613 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10614 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10615 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (x0: 
10616 K).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: 
10617 T).(\lambda (H21: (eq C e (CHead x1 x0 x3))).(\lambda (H22: (drop n0 O c0 
10618 (CHead x2 x0 x4))).(\lambda (H23: (subst0 (minus i0 (s x0 n0)) v x3 
10619 x4)).(\lambda (H24: (csubst0 (minus i0 (s x0 n0)) v x1 x2)).(eq_ind_r C 
10620 (CHead x1 x0 x3) (\lambda (c: C).(or4 (drop (S n0) O (CHead c0 (Bind b) t) c) 
10621 (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: 
10622 T).(eq C c (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10623 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e0 k w)))))) 
10624 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10625 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10626 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C c (CHead e1 k 
10627 u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
10628 T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k u0)))))) (\lambda (k: 
10629 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind 
10630 b) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
10631 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C c (CHead e1 k 
10632 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10633 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k w))))))) 
10634 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10635 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10636 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10637 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2))))))))) (or4_intro3 (drop (S 
10638 n0) O (CHead c0 (Bind b) t) (CHead x1 x0 x3)) (ex3_4 K C T T (\lambda (k: 
10639 K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) 
10640 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10641 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e0 k w)))))) 
10642 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10643 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10644 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead x1 x0 x3) 
10645 (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10646 C).(\lambda (u0: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k u0)))))) 
10647 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10648 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10649 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
10650 C (CHead x1 x0 x3) (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: 
10651 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 
10652 (Bind b) t) (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
10653 C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s (Bind b) i0) (s k (S 
10654 n0))) v u0 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
10655 (_: T).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
10656 e2))))))) (ex4_5_intro K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda 
10657 (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e1 k 
10658 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10659 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) t) (CHead e2 k w))))))) 
10660 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10661 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10662 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10663 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2)))))) x0 x1 x2 x3 x4 (refl_equal 
10664 C (CHead x1 x0 x3)) (drop_drop (Bind b) n0 c0 (CHead x2 x0 x4) H22 t) 
10665 (eq_ind_r nat (S (s x0 n0)) (\lambda (n: nat).(subst0 (minus (s (Bind b) i0) 
10666 n) v x3 x4)) H23 (s x0 (S n0)) (s_S x0 n0)) (eq_ind_r nat (S (s x0 n0)) 
10667 (\lambda (n: nat).(csubst0 (minus (s (Bind b) i0) n) v x1 x2)) H24 (s x0 (S 
10668 n0)) (s_S x0 n0)))) e H21)))))))))) H20)) H19)))))) (\lambda (f: F).(\lambda 
10669 (H2: (drop (r (Flat f) n0) O c e)).(\lambda (H0: ((\forall (c2: C).(\forall 
10670 (v: T).((csubst0 (s (Flat f) i0) v c c2) \to (\forall (e: C).((drop (S n0) O 
10671 c e) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda 
10672 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda 
10673 (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 
10674 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda 
10675 (w: T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u w)))))) (ex3_4 K C C 
10676 T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
10677 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda 
10678 (u: T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
10679 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S 
10680 n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
10681 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k 
10682 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10683 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) (\lambda (k: 
10684 K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
10685 (minus (s (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda 
10686 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s 
10687 (Flat f) i0) (s k (S n0))) v e1 e2))))))))))))))).(\lambda (_: (lt (S n0) (s 
10688 (Flat f) i0))).(let H19 \def (H0 c0 v H16 e H2) in (or4_ind (drop (S n0) O c0 
10689 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda 
10690 (_: T).(eq C e (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda 
10691 (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead e0 k w)))))) (\lambda (k: 
10692 K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus i0 (s k (S 
10693 n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda 
10694 (_: C).(\lambda (u0: T).(eq C e (CHead e1 k u0)))))) (\lambda (k: K).(\lambda 
10695 (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O c0 (CHead e2 k 
10696 u0)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10697 T).(csubst0 (minus i0 (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10698 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
10699 C e (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10700 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead e2 k w))))))) 
10701 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10702 T).(subst0 (minus i0 (s k (S n0))) v u0 w)))))) (\lambda (k: K).(\lambda (e1: 
10703 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (s k 
10704 (S n0))) v e1 e2))))))) (or4 (drop (S n0) O (CHead c0 (Flat f) t) e) (ex3_4 K 
10705 C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C 
10706 e (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10707 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e0 k w)))))) 
10708 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10709 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10710 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k 
10711 u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
10712 T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k u0)))))) (\lambda (k: 
10713 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat 
10714 f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
10715 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 k 
10716 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10717 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k w))))))) 
10718 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10719 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10720 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10721 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (H20: (drop (S 
10722 n0) O c0 e)).(or4_intro0 (drop (S n0) O (CHead c0 (Flat f) t) e) (ex3_4 K C T 
10723 T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e 
10724 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10725 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e0 k w)))))) 
10726 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10727 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10728 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k 
10729 u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
10730 T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k u0)))))) (\lambda (k: 
10731 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat 
10732 f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
10733 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 k 
10734 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10735 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k w))))))) 
10736 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10737 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10738 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10739 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2))))))) (drop_drop (Flat f) n0 c0 
10740 e H20 t))) (\lambda (H20: (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
10741 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: 
10742 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead 
10743 e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10744 T).(subst0 (minus i0 (s k (S n0))) v u w))))))).(ex3_4_ind K C T T (\lambda 
10745 (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 k 
10746 u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
10747 T).(drop (S n0) O c0 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
10748 C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus i0 (s k (S n0))) v u0 
10749 w))))) (or4 (drop (S n0) O (CHead c0 (Flat f) t) e) (ex3_4 K C T T (\lambda 
10750 (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 k 
10751 u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
10752 T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e0 k w)))))) (\lambda (k: 
10753 K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s (Flat 
10754 f) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda 
10755 (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k u0)))))) 
10756 (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (S 
10757 n0) O (CHead c0 (Flat f) t) (CHead e2 k u0)))))) (\lambda (k: K).(\lambda 
10758 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k 
10759 (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
10760 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 k 
10761 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10762 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k w))))))) 
10763 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10764 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10765 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10766 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (x0: 
10767 K).(\lambda (x1: C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H21: (eq C e 
10768 (CHead x1 x0 x2))).(\lambda (H22: (drop (S n0) O c0 (CHead x1 x0 
10769 x3))).(\lambda (H23: (subst0 (minus i0 (s x0 (S n0))) v x2 x3)).(eq_ind_r C 
10770 (CHead x1 x0 x2) (\lambda (c: C).(or4 (drop (S n0) O (CHead c0 (Flat f) t) c) 
10771 (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: 
10772 T).(eq C c (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10773 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e0 k w)))))) 
10774 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10775 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10776 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C c (CHead e1 k 
10777 u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
10778 T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k u0)))))) (\lambda (k: 
10779 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat 
10780 f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
10781 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C c (CHead e1 k 
10782 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10783 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k w))))))) 
10784 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10785 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10786 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10787 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2))))))))) (or4_intro1 (drop (S 
10788 n0) O (CHead c0 (Flat f) t) (CHead x1 x0 x2)) (ex3_4 K C T T (\lambda (k: 
10789 K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 x0 x2) 
10790 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10791 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e0 k w)))))) 
10792 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10793 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10794 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead x1 x0 x2) 
10795 (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10796 C).(\lambda (u0: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k u0)))))) 
10797 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10798 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10799 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
10800 C (CHead x1 x0 x2) (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: 
10801 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 
10802 (Flat f) t) (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
10803 C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S 
10804 n0))) v u0 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
10805 (_: T).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
10806 e2))))))) (ex3_4_intro K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: 
10807 T).(\lambda (_: T).(eq C (CHead x1 x0 x2) (CHead e0 k u0)))))) (\lambda (k: 
10808 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 
10809 (Flat f) t) (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u0: 
10810 T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w))))) 
10811 x0 x1 x2 x3 (refl_equal C (CHead x1 x0 x2)) (drop_drop (Flat f) n0 c0 (CHead 
10812 x1 x0 x3) H22 t) H23)) e H21)))))))) H20)) (\lambda (H20: (ex3_4 K C C T 
10813 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
10814 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda 
10815 (u: T).(drop (S n0) O c0 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
10816 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (s k (S n0))) v e1 
10817 e2))))))).(ex3_4_ind K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10818 C).(\lambda (u0: T).(eq C e (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: 
10819 C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O c0 (CHead e2 k u0)))))) 
10820 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10821 (minus i0 (s k (S n0))) v e1 e2))))) (or4 (drop (S n0) O (CHead c0 (Flat f) 
10822 t) e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: 
10823 T).(\lambda (_: T).(eq C e (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: 
10824 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) 
10825 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda 
10826 (w: T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C 
10827 T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e 
10828 (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10829 C).(\lambda (u0: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k u0)))))) 
10830 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10831 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10832 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
10833 C e (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10834 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) 
10835 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda 
10836 (u0: T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 
10837 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10838 T).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
10839 e2)))))))) (\lambda (x0: K).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: 
10840 T).(\lambda (H21: (eq C e (CHead x1 x0 x3))).(\lambda (H22: (drop (S n0) O c0 
10841 (CHead x2 x0 x3))).(\lambda (H23: (csubst0 (minus i0 (s x0 (S n0))) v x1 
10842 x2)).(eq_ind_r C (CHead x1 x0 x3) (\lambda (c: C).(or4 (drop (S n0) O (CHead 
10843 c0 (Flat f) t) c) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda 
10844 (u0: T).(\lambda (_: T).(eq C c (CHead e0 k u0)))))) (\lambda (k: K).(\lambda 
10845 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) 
10846 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda 
10847 (w: T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C 
10848 T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C c 
10849 (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10850 C).(\lambda (u0: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k u0)))))) 
10851 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10852 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10853 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
10854 C c (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10855 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) 
10856 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda 
10857 (u0: T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 
10858 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
10859 T).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
10860 e2))))))))) (or4_intro2 (drop (S n0) O (CHead c0 (Flat f) t) (CHead x1 x0 
10861 x3)) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: 
10862 T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e0 k u0)))))) (\lambda (k: 
10863 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 
10864 (Flat f) t) (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u0: 
10865 T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) 
10866 (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: 
10867 T).(eq C (CHead x1 x0 x3) (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: 
10868 C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O (CHead c0 (Flat f) t) 
10869 (CHead e2 k u0)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: 
10870 C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
10871 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10872 C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e1 k 
10873 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10874 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k w))))))) 
10875 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10876 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10877 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10878 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2))))))) (ex3_4_intro K C C T 
10879 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C 
10880 (CHead x1 x0 x3) (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: 
10881 C).(\lambda (e2: C).(\lambda (u0: T).(drop (S n0) O (CHead c0 (Flat f) t) 
10882 (CHead e2 k u0)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: 
10883 C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2))))) 
10884 x0 x1 x2 x3 (refl_equal C (CHead x1 x0 x3)) (drop_drop (Flat f) n0 c0 (CHead 
10885 x2 x0 x3) H22 t) H23)) e H21)))))))) H20)) (\lambda (H20: (ex4_5 K C C T T 
10886 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
10887 T).(eq C e (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10888 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead e2 k w))))))) 
10889 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
10890 T).(subst0 (minus i0 (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
10891 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (s k 
10892 (S n0))) v e1 e2)))))))).(ex4_5_ind K C C T T (\lambda (k: K).(\lambda (e1: 
10893 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 k 
10894 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10895 T).(\lambda (w: T).(drop (S n0) O c0 (CHead e2 k w))))))) (\lambda (k: 
10896 K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10897 (minus i0 (s k (S n0))) v u0 w)))))) (\lambda (k: K).(\lambda (e1: 
10898 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (s k 
10899 (S n0))) v e1 e2)))))) (or4 (drop (S n0) O (CHead c0 (Flat f) t) e) (ex3_4 K 
10900 C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C 
10901 e (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10902 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e0 k w)))))) 
10903 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10904 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10905 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 k 
10906 u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
10907 T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k u0)))))) (\lambda (k: 
10908 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat 
10909 f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
10910 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 k 
10911 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10912 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k w))))))) 
10913 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10914 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10915 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10916 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (x0: 
10917 K).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: 
10918 T).(\lambda (H21: (eq C e (CHead x1 x0 x3))).(\lambda (H22: (drop (S n0) O c0 
10919 (CHead x2 x0 x4))).(\lambda (H23: (subst0 (minus i0 (s x0 (S n0))) v x3 
10920 x4)).(\lambda (H24: (csubst0 (minus i0 (s x0 (S n0))) v x1 x2)).(eq_ind_r C 
10921 (CHead x1 x0 x3) (\lambda (c: C).(or4 (drop (S n0) O (CHead c0 (Flat f) t) c) 
10922 (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: 
10923 T).(eq C c (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10924 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e0 k w)))))) 
10925 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10926 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10927 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C c (CHead e1 k 
10928 u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
10929 T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k u0)))))) (\lambda (k: 
10930 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat 
10931 f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
10932 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C c (CHead e1 k 
10933 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10934 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k w))))))) 
10935 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10936 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10937 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10938 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2))))))))) (or4_intro3 (drop (S 
10939 n0) O (CHead c0 (Flat f) t) (CHead x1 x0 x3)) (ex3_4 K C T T (\lambda (k: 
10940 K).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) 
10941 (CHead e0 k u0)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
10942 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e0 k w)))))) 
10943 (\lambda (k: K).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 
10944 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (ex3_4 K C C T (\lambda (k: 
10945 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead x1 x0 x3) 
10946 (CHead e1 k u0)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
10947 C).(\lambda (u0: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k u0)))))) 
10948 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
10949 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda 
10950 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
10951 C (CHead x1 x0 x3) (CHead e1 k u0))))))) (\lambda (k: K).(\lambda (_: 
10952 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 
10953 (Flat f) t) (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
10954 C).(\lambda (u0: T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S 
10955 n0))) v u0 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
10956 (_: T).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
10957 e2))))))) (ex4_5_intro K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda 
10958 (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e1 k 
10959 u0))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
10960 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) t) (CHead e2 k w))))))) 
10961 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
10962 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u0 w)))))) (\lambda (k: 
10963 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
10964 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2)))))) x0 x1 x2 x3 x4 (refl_equal 
10965 C (CHead x1 x0 x3)) (drop_drop (Flat f) n0 c0 (CHead x2 x0 x4) H22 t) H23 
10966 H24)) e H21)))))))))) H20)) H19)))))) k (drop_gen_drop k c e t n0 H2) H17 
10967 H18))))) c2 H15)) u (sym_eq T u t H14))) k0 (sym_eq K k0 k H13))) c1 (sym_eq 
10968 C c1 c H12))) H11)) H10))) v0 (sym_eq T v0 v H8))) i H4 H5 H6 H7 H3))))) | 
10969 (csubst0_both k0 i0 v0 u1 u2 H3 c1 c0 H4) \Rightarrow (\lambda (H5: (eq nat 
10970 (s k0 i0) i)).(\lambda (H6: (eq T v0 v)).(\lambda (H7: (eq C (CHead c1 k0 u1) 
10971 (CHead c k t))).(\lambda (H8: (eq C (CHead c0 k0 u2) c2)).(eq_ind nat (s k0 
10972 i0) (\lambda (n: nat).((eq T v0 v) \to ((eq C (CHead c1 k0 u1) (CHead c k t)) 
10973 \to ((eq C (CHead c0 k0 u2) c2) \to ((subst0 i0 v0 u1 u2) \to ((csubst0 i0 v0 
10974 c1 c0) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda 
10975 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda 
10976 (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 
10977 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda 
10978 (w: T).(subst0 (minus n (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
10979 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
10980 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
10981 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
10982 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus n (s k (S n0))) v e1 
10983 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10984 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
10985 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
10986 n0) O c2 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
10987 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus n (s k (S n0))) v u w)))))) 
10988 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
10989 (_: T).(csubst0 (minus n (s k (S n0))) v e1 e2)))))))))))))) (\lambda (H9: 
10990 (eq T v0 v)).(eq_ind T v (\lambda (t0: T).((eq C (CHead c1 k0 u1) (CHead c k 
10991 t)) \to ((eq C (CHead c0 k0 u2) c2) \to ((subst0 i0 t0 u1 u2) \to ((csubst0 
10992 i0 t0 c1 c0) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: 
10993 K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k 
10994 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
10995 T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
10996 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k0 i0) (s k (S n0))) v u 
10997 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
10998 C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: 
10999 C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c2 (CHead e2 k u)))))) 
11000 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
11001 (minus (s k0 i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: 
11002 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
11003 (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
11004 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) 
11005 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11006 T).(subst0 (minus (s k0 i0) (s k (S n0))) v u w)))))) (\lambda (k: 
11007 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11008 (minus (s k0 i0) (s k (S n0))) v e1 e2))))))))))))) (\lambda (H10: (eq C 
11009 (CHead c1 k0 u1) (CHead c k t))).(let H11 \def (f_equal C T (\lambda (e0: 
11010 C).(match e0 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u1 | 
11011 (CHead _ _ t) \Rightarrow t])) (CHead c1 k0 u1) (CHead c k t) H10) in ((let 
11012 H12 \def (f_equal C K (\lambda (e0: C).(match e0 return (\lambda (_: C).K) 
11013 with [(CSort _) \Rightarrow k0 | (CHead _ k _) \Rightarrow k])) (CHead c1 k0 
11014 u1) (CHead c k t) H10) in ((let H13 \def (f_equal C C (\lambda (e0: C).(match 
11015 e0 return (\lambda (_: C).C) with [(CSort _) \Rightarrow c1 | (CHead c _ _) 
11016 \Rightarrow c])) (CHead c1 k0 u1) (CHead c k t) H10) in (eq_ind C c (\lambda 
11017 (c: C).((eq K k0 k) \to ((eq T u1 t) \to ((eq C (CHead c0 k0 u2) c2) \to 
11018 ((subst0 i0 v u1 u2) \to ((csubst0 i0 v c c0) \to (or4 (drop (S n0) O c2 e) 
11019 (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
11020 T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
11021 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k: 
11022 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k0 i0) 
11023 (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11024 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: 
11025 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c2 (CHead 
11026 e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
11027 T).(csubst0 (minus (s k0 i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T 
11028 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
11029 T).(eq C e (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
11030 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) 
11031 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11032 T).(subst0 (minus (s k0 i0) (s k (S n0))) v u w)))))) (\lambda (k: 
11033 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11034 (minus (s k0 i0) (s k (S n0))) v e1 e2)))))))))))))) (\lambda (H14: (eq K k0 
11035 k)).(eq_ind K k (\lambda (k: K).((eq T u1 t) \to ((eq C (CHead c0 k u2) c2) 
11036 \to ((subst0 i0 v u1 u2) \to ((csubst0 i0 v c c0) \to (or4 (drop (S n0) O c2 
11037 e) (ex3_4 K C T T (\lambda (k1: K).(\lambda (e0: C).(\lambda (u: T).(\lambda 
11038 (_: T).(eq C e (CHead e0 k1 u)))))) (\lambda (k1: K).(\lambda (e0: 
11039 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k1 w)))))) 
11040 (\lambda (k1: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
11041 (minus (s k i0) (s k1 (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k1: 
11042 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k1 
11043 u)))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
11044 T).(drop (S n0) O c2 (CHead e2 k1 u)))))) (\lambda (k1: K).(\lambda (e1: 
11045 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v 
11046 e1 e2)))))) (ex4_5 K C C T T (\lambda (k1: K).(\lambda (e1: C).(\lambda (_: 
11047 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k1 u))))))) (\lambda 
11048 (k1: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
11049 T).(drop (S n0) O c2 (CHead e2 k1 w))))))) (\lambda (k1: K).(\lambda (_: 
11050 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k i0) (s 
11051 k1 (S n0))) v u w)))))) (\lambda (k1: K).(\lambda (e1: C).(\lambda (e2: 
11052 C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v 
11053 e1 e2))))))))))))) (\lambda (H15: (eq T u1 t)).(eq_ind T t (\lambda (t: 
11054 T).((eq C (CHead c0 k u2) c2) \to ((subst0 i0 v t u2) \to ((csubst0 i0 v c 
11055 c0) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda 
11056 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda 
11057 (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 
11058 (CHead e0 k w)))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (u: T).(\lambda 
11059 (w: T).(subst0 (minus (s k i0) (s k1 (S n0))) v u w)))))) (ex3_4 K C C T 
11060 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
11061 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda 
11062 (u: T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k1: K).(\lambda (e1: 
11063 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v 
11064 e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11065 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11066 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11067 n0) O c2 (CHead e2 k w))))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (_: 
11068 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k i0) (s k1 (S n0))) v u 
11069 w)))))) (\lambda (k1: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
11070 T).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v e1 
11071 e2)))))))))))) (\lambda (H16: (eq C (CHead c0 k u2) c2)).(eq_ind C (CHead c0 
11072 k u2) (\lambda (c2: C).((subst0 i0 v t u2) \to ((csubst0 i0 v c c0) \to (or4 
11073 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda 
11074 (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda 
11075 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) 
11076 (\lambda (k1: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
11077 (minus (s k i0) (s k1 (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
11078 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
11079 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
11080 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k1: K).(\lambda (e1: 
11081 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v 
11082 e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11083 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11084 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11085 n0) O c2 (CHead e2 k w))))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (_: 
11086 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k i0) (s k1 (S n0))) v u 
11087 w)))))) (\lambda (k1: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
11088 T).(\lambda (_: T).(csubst0 (minus (s k i0) (s k1 (S n0))) v e1 e2))))))))))) 
11089 (\lambda (_: (subst0 i0 v t u2)).(\lambda (H18: (csubst0 i0 v c c0)).(let H1 
11090 \def (eq_ind K k0 (\lambda (k: K).(eq nat (s k i0) i)) H5 k H14) in (let H19 
11091 \def (eq_ind_r nat i (\lambda (n: nat).(\forall (c2: C).(\forall (v: 
11092 T).((csubst0 n v c c2) \to (\forall (e: C).((drop (S n0) O c e) \to (or4 
11093 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda 
11094 (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda 
11095 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) 
11096 (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
11097 (minus n (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda 
11098 (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda 
11099 (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c2 
11100 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: 
11101 C).(\lambda (_: T).(csubst0 (minus n (s k (S n0))) v e1 e2)))))) (ex4_5 K C C 
11102 T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda 
11103 (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
11104 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k 
11105 w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
11106 T).(\lambda (w: T).(subst0 (minus n (s k (S n0))) v u w)))))) (\lambda (k: 
11107 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11108 (minus n (s k (S n0))) v e1 e2)))))))))))))) H0 (s k i0) H1) in (let H20 \def 
11109 (eq_ind_r nat i (\lambda (n: nat).(lt (S n0) n)) H (s k i0) H1) in (K_ind 
11110 (\lambda (k: K).((drop (r k n0) O c e) \to (((\forall (c2: C).(\forall (v: 
11111 T).((csubst0 (s k i0) v c c2) \to (\forall (e: C).((drop (S n0) O c e) \to 
11112 (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
11113 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: 
11114 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead 
11115 e0 k w)))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11116 T).(subst0 (minus (s k i0) (s k0 (S n0))) v u w)))))) (ex3_4 K C C T (\lambda 
11117 (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
11118 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
11119 T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k0: K).(\lambda (e1: 
11120 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k i0) (s k0 (S n0))) v 
11121 e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11122 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11123 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11124 n0) O c2 (CHead e2 k w))))))) (\lambda (k0: K).(\lambda (_: C).(\lambda (_: 
11125 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s k i0) (s k0 (S n0))) v u 
11126 w)))))) (\lambda (k0: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
11127 T).(\lambda (_: T).(csubst0 (minus (s k i0) (s k0 (S n0))) v e1 
11128 e2)))))))))))))) \to ((lt (S n0) (s k i0)) \to (or4 (drop (S n0) O (CHead c0 
11129 k u2) e) (ex3_4 K C T T (\lambda (k1: K).(\lambda (e0: C).(\lambda (u: 
11130 T).(\lambda (_: T).(eq C e (CHead e0 k1 u)))))) (\lambda (k1: K).(\lambda 
11131 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 k u2) (CHead 
11132 e0 k1 w)))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11133 T).(subst0 (minus (s k i0) (s k1 (S n0))) v u w)))))) (ex3_4 K C C T (\lambda 
11134 (k1: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k1 
11135 u)))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
11136 T).(drop (S n0) O (CHead c0 k u2) (CHead e2 k1 u)))))) (\lambda (k1: 
11137 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s k i0) 
11138 (s k1 (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k1: K).(\lambda (e1: 
11139 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k1 
11140 u))))))) (\lambda (k1: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11141 T).(\lambda (w: T).(drop (S n0) O (CHead c0 k u2) (CHead e2 k1 w))))))) 
11142 (\lambda (k1: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11143 T).(subst0 (minus (s k i0) (s k1 (S n0))) v u w)))))) (\lambda (k1: 
11144 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11145 (minus (s k i0) (s k1 (S n0))) v e1 e2)))))))))))) (\lambda (b: B).(\lambda 
11146 (H2: (drop (r (Bind b) n0) O c e)).(\lambda (_: ((\forall (c2: C).(\forall 
11147 (v: T).((csubst0 (s (Bind b) i0) v c c2) \to (\forall (e: C).((drop (S n0) O 
11148 c e) \to (or4 (drop (S n0) O c2 e) (ex3_4 K C T T (\lambda (k: K).(\lambda 
11149 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda 
11150 (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 
11151 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda 
11152 (w: T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (ex3_4 K C C 
11153 T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
11154 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda 
11155 (u: T).(drop (S n0) O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
11156 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S 
11157 n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: 
11158 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k 
11159 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11160 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k w))))))) (\lambda (k: 
11161 K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
11162 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda 
11163 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s 
11164 (Bind b) i0) (s k (S n0))) v e1 e2))))))))))))))).(\lambda (H: (lt (S n0) (s 
11165 (Bind b) i0))).(let H21 \def (IHn i0 (le_S_n (S n0) i0 H) c c0 v H18 e H2) in 
11166 (or4_ind (drop n0 O c0 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
11167 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: 
11168 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e0 k 
11169 w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11170 T).(subst0 (minus i0 (s k n0)) v u w)))))) (ex3_4 K C C T (\lambda (k: 
11171 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
11172 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
11173 T).(drop n0 O c0 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
11174 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (s k n0)) v e1 
11175 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11176 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11177 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop n0 
11178 O c0 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
11179 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (s k n0)) v u w)))))) 
11180 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
11181 (_: T).(csubst0 (minus i0 (s k n0)) v e1 e2))))))) (or4 (drop (S n0) O (CHead 
11182 c0 (Bind b) u2) e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda 
11183 (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda 
11184 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) u2) 
11185 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda 
11186 (w: T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (ex3_4 K C C 
11187 T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
11188 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda 
11189 (u: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: 
11190 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind 
11191 b) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
11192 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k 
11193 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11194 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e2 k w))))))) 
11195 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11196 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: 
11197 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11198 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (H22: (drop n0 
11199 O c0 e)).(or4_intro0 (drop (S n0) O (CHead c0 (Bind b) u2) e) (ex3_4 K C T T 
11200 (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
11201 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
11202 (w: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e0 k w)))))) (\lambda (k: 
11203 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) 
11204 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11205 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: 
11206 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11207 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11208 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
11209 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11210 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11211 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11212 n0) O (CHead c0 (Bind b) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11213 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11214 (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11215 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Bind 
11216 b) i0) (s k (S n0))) v e1 e2))))))) (drop_drop (Bind b) n0 c0 e H22 u2))) 
11217 (\lambda (H22: (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: 
11218 T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: 
11219 C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e0 k w)))))) (\lambda 
11220 (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (s k 
11221 n0)) v u w))))))).(ex3_4_ind K C T T (\lambda (k: K).(\lambda (e0: 
11222 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: 
11223 K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e0 k 
11224 w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11225 T).(subst0 (minus i0 (s k n0)) v u w))))) (or4 (drop (S n0) O (CHead c0 (Bind 
11226 b) u2) e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: 
11227 T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: 
11228 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) u2) 
11229 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda 
11230 (w: T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (ex3_4 K C C 
11231 T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
11232 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda 
11233 (u: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: 
11234 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind 
11235 b) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
11236 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k 
11237 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11238 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e2 k w))))))) 
11239 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11240 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: 
11241 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11242 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (x0: 
11243 K).(\lambda (x1: C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H23: (eq C e 
11244 (CHead x1 x0 x2))).(\lambda (H24: (drop n0 O c0 (CHead x1 x0 x3))).(\lambda 
11245 (H25: (subst0 (minus i0 (s x0 n0)) v x2 x3)).(eq_ind_r C (CHead x1 x0 x2) 
11246 (\lambda (c: C).(or4 (drop (S n0) O (CHead c0 (Bind b) u2) c) (ex3_4 K C T T 
11247 (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c 
11248 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
11249 (w: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e0 k w)))))) (\lambda (k: 
11250 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) 
11251 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11252 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 k u)))))) (\lambda (k: 
11253 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11254 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11255 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
11256 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11257 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 k u))))))) (\lambda (k: 
11258 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11259 n0) O (CHead c0 (Bind b) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11260 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11261 (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11262 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Bind 
11263 b) i0) (s k (S n0))) v e1 e2))))))))) (or4_intro1 (drop (S n0) O (CHead c0 
11264 (Bind b) u2) (CHead x1 x0 x2)) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
11265 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x2) (CHead e0 k u)))))) 
11266 (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) 
11267 O (CHead c0 (Bind b) u2) (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
11268 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) i0) (s k (S 
11269 n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda 
11270 (_: C).(\lambda (u: T).(eq C (CHead x1 x0 x2) (CHead e1 k u)))))) (\lambda 
11271 (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead 
11272 c0 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11273 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
11274 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11275 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x2) (CHead e1 k 
11276 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11277 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e2 k w))))))) 
11278 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11279 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: 
11280 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11281 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2))))))) (ex3_4_intro K C T T 
11282 (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead 
11283 x1 x0 x2) (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
11284 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e0 k w)))))) 
11285 (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
11286 (minus (s (Bind b) i0) (s k (S n0))) v u w))))) x0 x1 x2 x3 (refl_equal C 
11287 (CHead x1 x0 x2)) (drop_drop (Bind b) n0 c0 (CHead x1 x0 x3) H24 u2) 
11288 (eq_ind_r nat (S (s x0 n0)) (\lambda (n: nat).(subst0 (minus (s (Bind b) i0) 
11289 n) v x2 x3)) H25 (s x0 (S n0)) (s_S x0 n0)))) e H23)))))))) H22)) (\lambda 
11290 (H22: (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11291 C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: 
11292 C).(\lambda (e2: C).(\lambda (u: T).(drop n0 O c0 (CHead e2 k u)))))) 
11293 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
11294 (minus i0 (s k n0)) v e1 e2))))))).(ex3_4_ind K C C T (\lambda (k: 
11295 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
11296 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
11297 T).(drop n0 O c0 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
11298 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (s k n0)) v e1 e2))))) 
11299 (or4 (drop (S n0) O (CHead c0 (Bind b) u2) e) (ex3_4 K C T T (\lambda (k: 
11300 K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k 
11301 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
11302 T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e0 k w)))))) (\lambda (k: 
11303 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) 
11304 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11305 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: 
11306 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11307 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11308 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
11309 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11310 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11311 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11312 n0) O (CHead c0 (Bind b) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11313 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11314 (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11315 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Bind 
11316 b) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (x0: K).(\lambda (x1: 
11317 C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H23: (eq C e (CHead x1 x0 
11318 x3))).(\lambda (H24: (drop n0 O c0 (CHead x2 x0 x3))).(\lambda (H25: (csubst0 
11319 (minus i0 (s x0 n0)) v x1 x2)).(eq_ind_r C (CHead x1 x0 x3) (\lambda (c: 
11320 C).(or4 (drop (S n0) O (CHead c0 (Bind b) u2) c) (ex3_4 K C T T (\lambda (k: 
11321 K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 k 
11322 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
11323 T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e0 k w)))))) (\lambda (k: 
11324 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) 
11325 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11326 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 k u)))))) (\lambda (k: 
11327 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11328 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11329 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
11330 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11331 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 k u))))))) (\lambda (k: 
11332 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11333 n0) O (CHead c0 (Bind b) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11334 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11335 (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11336 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Bind 
11337 b) i0) (s k (S n0))) v e1 e2))))))))) (or4_intro2 (drop (S n0) O (CHead c0 
11338 (Bind b) u2) (CHead x1 x0 x3)) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
11339 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e0 k u)))))) 
11340 (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) 
11341 O (CHead c0 (Bind b) u2) (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
11342 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) i0) (s k (S 
11343 n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda 
11344 (_: C).(\lambda (u: T).(eq C (CHead x1 x0 x3) (CHead e1 k u)))))) (\lambda 
11345 (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead 
11346 c0 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11347 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
11348 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11349 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e1 k 
11350 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11351 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e2 k w))))))) 
11352 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11353 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: 
11354 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11355 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2))))))) (ex3_4_intro K C C T 
11356 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead 
11357 x1 x0 x3) (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
11358 C).(\lambda (u: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e2 k u)))))) 
11359 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
11360 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2))))) x0 x1 x2 x3 (refl_equal C 
11361 (CHead x1 x0 x3)) (drop_drop (Bind b) n0 c0 (CHead x2 x0 x3) H24 u2) 
11362 (eq_ind_r nat (S (s x0 n0)) (\lambda (n: nat).(csubst0 (minus (s (Bind b) i0) 
11363 n) v x1 x2)) H25 (s x0 (S n0)) (s_S x0 n0)))) e H23)))))))) H22)) (\lambda 
11364 (H22: (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11365 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11366 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop n0 
11367 O c0 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
11368 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (s k n0)) v u w)))))) 
11369 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
11370 (_: T).(csubst0 (minus i0 (s k n0)) v e1 e2)))))))).(ex4_5_ind K C C T T 
11371 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
11372 T).(eq C e (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
11373 C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e2 k w))))))) 
11374 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11375 T).(subst0 (minus i0 (s k n0)) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11376 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (s k 
11377 n0)) v e1 e2)))))) (or4 (drop (S n0) O (CHead c0 (Bind b) u2) e) (ex3_4 K C T 
11378 T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
11379 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
11380 (w: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e0 k w)))))) (\lambda (k: 
11381 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) 
11382 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11383 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: 
11384 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11385 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11386 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
11387 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11388 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11389 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11390 n0) O (CHead c0 (Bind b) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11391 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11392 (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11393 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Bind 
11394 b) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (x0: K).(\lambda (x1: 
11395 C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: T).(\lambda (H23: (eq C e 
11396 (CHead x1 x0 x3))).(\lambda (H24: (drop n0 O c0 (CHead x2 x0 x4))).(\lambda 
11397 (H25: (subst0 (minus i0 (s x0 n0)) v x3 x4)).(\lambda (H26: (csubst0 (minus 
11398 i0 (s x0 n0)) v x1 x2)).(eq_ind_r C (CHead x1 x0 x3) (\lambda (c: C).(or4 
11399 (drop (S n0) O (CHead c0 (Bind b) u2) c) (ex3_4 K C T T (\lambda (k: 
11400 K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 k 
11401 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
11402 T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e0 k w)))))) (\lambda (k: 
11403 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) 
11404 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11405 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 k u)))))) (\lambda (k: 
11406 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11407 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11408 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
11409 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11410 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 k u))))))) (\lambda (k: 
11411 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11412 n0) O (CHead c0 (Bind b) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11413 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11414 (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11415 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Bind 
11416 b) i0) (s k (S n0))) v e1 e2))))))))) (or4_intro3 (drop (S n0) O (CHead c0 
11417 (Bind b) u2) (CHead x1 x0 x3)) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
11418 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e0 k u)))))) 
11419 (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) 
11420 O (CHead c0 (Bind b) u2) (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
11421 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) i0) (s k (S 
11422 n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda 
11423 (_: C).(\lambda (u: T).(eq C (CHead x1 x0 x3) (CHead e1 k u)))))) (\lambda 
11424 (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead 
11425 c0 (Bind b) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11426 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
11427 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11428 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e1 k 
11429 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11430 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Bind b) u2) (CHead e2 k w))))))) 
11431 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11432 T).(subst0 (minus (s (Bind b) i0) (s k (S n0))) v u w)))))) (\lambda (k: 
11433 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11434 (minus (s (Bind b) i0) (s k (S n0))) v e1 e2))))))) (ex4_5_intro K C C T T 
11435 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
11436 T).(eq C (CHead x1 x0 x3) (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: 
11437 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 
11438 (Bind b) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
11439 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Bind b) i0) (s k (S 
11440 n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
11441 (_: T).(\lambda (_: T).(csubst0 (minus (s (Bind b) i0) (s k (S n0))) v e1 
11442 e2)))))) x0 x1 x2 x3 x4 (refl_equal C (CHead x1 x0 x3)) (drop_drop (Bind b) 
11443 n0 c0 (CHead x2 x0 x4) H24 u2) (eq_ind_r nat (S (s x0 n0)) (\lambda (n: 
11444 nat).(subst0 (minus (s (Bind b) i0) n) v x3 x4)) H25 (s x0 (S n0)) (s_S x0 
11445 n0)) (eq_ind_r nat (S (s x0 n0)) (\lambda (n: nat).(csubst0 (minus (s (Bind 
11446 b) i0) n) v x1 x2)) H26 (s x0 (S n0)) (s_S x0 n0)))) e H23)))))))))) H22)) 
11447 H21)))))) (\lambda (f: F).(\lambda (H2: (drop (r (Flat f) n0) O c 
11448 e)).(\lambda (H0: ((\forall (c2: C).(\forall (v: T).((csubst0 (s (Flat f) i0) 
11449 v c c2) \to (\forall (e: C).((drop (S n0) O c e) \to (or4 (drop (S n0) O c2 
11450 e) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda 
11451 (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda 
11452 (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 k w)))))) (\lambda (k: 
11453 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) 
11454 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11455 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: 
11456 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c2 (CHead 
11457 e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
11458 T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T 
11459 T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda 
11460 (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
11461 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 k 
11462 w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
11463 T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u w)))))) 
11464 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
11465 (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11466 e2))))))))))))))).(\lambda (_: (lt (S n0) (s (Flat f) i0))).(let H21 \def (H0 
11467 c0 v H18 e H2) in (or4_ind (drop (S n0) O c0 e) (ex3_4 K C T T (\lambda (k: 
11468 K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k 
11469 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
11470 T).(drop (S n0) O c0 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
11471 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (s k (S n0))) v u 
11472 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11473 C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: 
11474 C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c0 (CHead e2 k u)))))) 
11475 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
11476 (minus i0 (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: 
11477 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
11478 (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
11479 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead e2 k w))))))) 
11480 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11481 T).(subst0 (minus i0 (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11482 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (s k 
11483 (S n0))) v e1 e2))))))) (or4 (drop (S n0) O (CHead c0 (Flat f) u2) e) (ex3_4 
11484 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq 
11485 C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
11486 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e0 k w)))))) 
11487 (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
11488 (minus (s (Flat f) i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: 
11489 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k 
11490 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
11491 T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e2 k u)))))) (\lambda (k: 
11492 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat 
11493 f) i0) (s k (S n0))) v e1 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda 
11494 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k 
11495 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11496 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e2 k w))))))) 
11497 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11498 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: 
11499 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11500 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (H22: (drop (S 
11501 n0) O c0 e)).(or4_intro0 (drop (S n0) O (CHead c0 (Flat f) u2) e) (ex3_4 K C 
11502 T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
11503 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
11504 (w: T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e0 k w)))))) (\lambda (k: 
11505 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) 
11506 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11507 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: 
11508 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11509 (Flat f) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11510 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11511 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11512 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11513 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11514 n0) O (CHead c0 (Flat f) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11515 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11516 (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11517 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Flat 
11518 f) i0) (s k (S n0))) v e1 e2))))))) (drop_drop (Flat f) n0 c0 e H22 u2))) 
11519 (\lambda (H22: (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: 
11520 T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: 
11521 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead e0 k w)))))) 
11522 (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
11523 (minus i0 (s k (S n0))) v u w))))))).(ex3_4_ind K C T T (\lambda (k: 
11524 K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k 
11525 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
11526 T).(drop (S n0) O c0 (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
11527 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (s k (S n0))) v u w))))) 
11528 (or4 (drop (S n0) O (CHead c0 (Flat f) u2) e) (ex3_4 K C T T (\lambda (k: 
11529 K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k 
11530 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
11531 T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e0 k w)))))) (\lambda (k: 
11532 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) 
11533 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11534 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: 
11535 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11536 (Flat f) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11537 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11538 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11539 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11540 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11541 n0) O (CHead c0 (Flat f) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11542 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11543 (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11544 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Flat 
11545 f) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (x0: K).(\lambda (x1: 
11546 C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H23: (eq C e (CHead x1 x0 
11547 x2))).(\lambda (H24: (drop (S n0) O c0 (CHead x1 x0 x3))).(\lambda (H25: 
11548 (subst0 (minus i0 (s x0 (S n0))) v x2 x3)).(eq_ind_r C (CHead x1 x0 x2) 
11549 (\lambda (c: C).(or4 (drop (S n0) O (CHead c0 (Flat f) u2) c) (ex3_4 K C T T 
11550 (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c 
11551 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
11552 (w: T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e0 k w)))))) (\lambda (k: 
11553 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) 
11554 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11555 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 k u)))))) (\lambda (k: 
11556 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11557 (Flat f) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11558 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11559 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11560 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 k u))))))) (\lambda (k: 
11561 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11562 n0) O (CHead c0 (Flat f) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11563 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11564 (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11565 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Flat 
11566 f) i0) (s k (S n0))) v e1 e2))))))))) (or4_intro1 (drop (S n0) O (CHead c0 
11567 (Flat f) u2) (CHead x1 x0 x2)) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
11568 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x2) (CHead e0 k u)))))) 
11569 (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) 
11570 O (CHead c0 (Flat f) u2) (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
11571 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S 
11572 n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda 
11573 (_: C).(\lambda (u: T).(eq C (CHead x1 x0 x2) (CHead e1 k u)))))) (\lambda 
11574 (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead 
11575 c0 (Flat f) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11576 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11577 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11578 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x2) (CHead e1 k 
11579 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11580 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e2 k w))))))) 
11581 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11582 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: 
11583 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11584 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2))))))) (ex3_4_intro K C T T 
11585 (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead 
11586 x1 x0 x2) (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
11587 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e0 k w)))))) 
11588 (\lambda (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
11589 (minus (s (Flat f) i0) (s k (S n0))) v u w))))) x0 x1 x2 x3 (refl_equal C 
11590 (CHead x1 x0 x2)) (drop_drop (Flat f) n0 c0 (CHead x1 x0 x3) H24 u2) H25)) e 
11591 H23)))))))) H22)) (\lambda (H22: (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11592 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: 
11593 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c0 (CHead 
11594 e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
11595 T).(csubst0 (minus i0 (s k (S n0))) v e1 e2))))))).(ex3_4_ind K C C T 
11596 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
11597 (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda 
11598 (u: T).(drop (S n0) O c0 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: 
11599 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (s k (S n0))) v e1 
11600 e2))))) (or4 (drop (S n0) O (CHead c0 (Flat f) u2) e) (ex3_4 K C T T (\lambda 
11601 (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k 
11602 u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
11603 T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e0 k w)))))) (\lambda (k: 
11604 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) 
11605 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11606 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: 
11607 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11608 (Flat f) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11609 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11610 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11611 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11612 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11613 n0) O (CHead c0 (Flat f) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11614 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11615 (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11616 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Flat 
11617 f) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (x0: K).(\lambda (x1: 
11618 C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H23: (eq C e (CHead x1 x0 
11619 x3))).(\lambda (H24: (drop (S n0) O c0 (CHead x2 x0 x3))).(\lambda (H25: 
11620 (csubst0 (minus i0 (s x0 (S n0))) v x1 x2)).(eq_ind_r C (CHead x1 x0 x3) 
11621 (\lambda (c: C).(or4 (drop (S n0) O (CHead c0 (Flat f) u2) c) (ex3_4 K C T T 
11622 (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c 
11623 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
11624 (w: T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e0 k w)))))) (\lambda (k: 
11625 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) 
11626 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11627 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 k u)))))) (\lambda (k: 
11628 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11629 (Flat f) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11630 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11631 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11632 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 k u))))))) (\lambda (k: 
11633 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11634 n0) O (CHead c0 (Flat f) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11635 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11636 (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11637 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Flat 
11638 f) i0) (s k (S n0))) v e1 e2))))))))) (or4_intro2 (drop (S n0) O (CHead c0 
11639 (Flat f) u2) (CHead x1 x0 x3)) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
11640 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e0 k u)))))) 
11641 (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) 
11642 O (CHead c0 (Flat f) u2) (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
11643 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S 
11644 n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda 
11645 (_: C).(\lambda (u: T).(eq C (CHead x1 x0 x3) (CHead e1 k u)))))) (\lambda 
11646 (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead 
11647 c0 (Flat f) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11648 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11649 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11650 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e1 k 
11651 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11652 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e2 k w))))))) 
11653 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11654 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: 
11655 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11656 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2))))))) (ex3_4_intro K C C T 
11657 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead 
11658 x1 x0 x3) (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
11659 C).(\lambda (u: T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e2 k u)))))) 
11660 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
11661 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2))))) x0 x1 x2 x3 (refl_equal C 
11662 (CHead x1 x0 x3)) (drop_drop (Flat f) n0 c0 (CHead x2 x0 x3) H24 u2) H25)) e 
11663 H23)))))))) H22)) (\lambda (H22: (ex4_5 K C C T T (\lambda (k: K).(\lambda 
11664 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k 
11665 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11666 T).(\lambda (w: T).(drop (S n0) O c0 (CHead e2 k w))))))) (\lambda (k: 
11667 K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
11668 (minus i0 (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11669 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (s k (S n0))) v e1 
11670 e2)))))))).(ex4_5_ind K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11671 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11672 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11673 n0) O c0 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
11674 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (s k (S n0))) v u 
11675 w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
11676 T).(\lambda (_: T).(csubst0 (minus i0 (s k (S n0))) v e1 e2)))))) (or4 (drop 
11677 (S n0) O (CHead c0 (Flat f) u2) e) (ex3_4 K C T T (\lambda (k: K).(\lambda 
11678 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 k u)))))) (\lambda 
11679 (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead 
11680 c0 (Flat f) u2) (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
11681 (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u 
11682 w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11683 C).(\lambda (u: T).(eq C e (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: 
11684 C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 (Flat f) u2) 
11685 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: 
11686 C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11687 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11688 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 k u))))))) (\lambda (k: 
11689 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11690 n0) O (CHead c0 (Flat f) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11691 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11692 (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11693 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Flat 
11694 f) i0) (s k (S n0))) v e1 e2)))))))) (\lambda (x0: K).(\lambda (x1: 
11695 C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: T).(\lambda (H23: (eq C e 
11696 (CHead x1 x0 x3))).(\lambda (H24: (drop (S n0) O c0 (CHead x2 x0 
11697 x4))).(\lambda (H25: (subst0 (minus i0 (s x0 (S n0))) v x3 x4)).(\lambda 
11698 (H26: (csubst0 (minus i0 (s x0 (S n0))) v x1 x2)).(eq_ind_r C (CHead x1 x0 
11699 x3) (\lambda (c: C).(or4 (drop (S n0) O (CHead c0 (Flat f) u2) c) (ex3_4 K C 
11700 T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c 
11701 (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda 
11702 (w: T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e0 k w)))))) (\lambda (k: 
11703 K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) 
11704 i0) (s k (S n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: 
11705 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 k u)))))) (\lambda (k: 
11706 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead c0 
11707 (Flat f) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11708 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11709 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11710 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 k u))))))) (\lambda (k: 
11711 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
11712 n0) O (CHead c0 (Flat f) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
11713 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s 
11714 (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: 
11715 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus (s (Flat 
11716 f) i0) (s k (S n0))) v e1 e2))))))))) (or4_intro3 (drop (S n0) O (CHead c0 
11717 (Flat f) u2) (CHead x1 x0 x3)) (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: 
11718 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e0 k u)))))) 
11719 (\lambda (k: K).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) 
11720 O (CHead c0 (Flat f) u2) (CHead e0 k w)))))) (\lambda (k: K).(\lambda (_: 
11721 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S 
11722 n0))) v u w)))))) (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda 
11723 (_: C).(\lambda (u: T).(eq C (CHead x1 x0 x3) (CHead e1 k u)))))) (\lambda 
11724 (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O (CHead 
11725 c0 (Flat f) u2) (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
11726 (e2: C).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11727 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
11728 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 x0 x3) (CHead e1 k 
11729 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11730 T).(\lambda (w: T).(drop (S n0) O (CHead c0 (Flat f) u2) (CHead e2 k w))))))) 
11731 (\lambda (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11732 T).(subst0 (minus (s (Flat f) i0) (s k (S n0))) v u w)))))) (\lambda (k: 
11733 K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11734 (minus (s (Flat f) i0) (s k (S n0))) v e1 e2))))))) (ex4_5_intro K C C T T 
11735 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
11736 T).(eq C (CHead x1 x0 x3) (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: 
11737 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O (CHead c0 
11738 (Flat f) u2) (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda 
11739 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus (s (Flat f) i0) (s k (S 
11740 n0))) v u w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
11741 (_: T).(\lambda (_: T).(csubst0 (minus (s (Flat f) i0) (s k (S n0))) v e1 
11742 e2)))))) x0 x1 x2 x3 x4 (refl_equal C (CHead x1 x0 x3)) (drop_drop (Flat f) 
11743 n0 c0 (CHead x2 x0 x4) H24 u2) H25 H26)) e H23)))))))))) H22)) H21)))))) k 
11744 (drop_gen_drop k c e t n0 H2) H19 H20)))))) c2 H16)) u1 (sym_eq T u1 t H15))) 
11745 k0 (sym_eq K k0 k H14))) c1 (sym_eq C c1 c H13))) H12)) H11))) v0 (sym_eq T 
11746 v0 v H9))) i H5 H6 H7 H8 H3 H4)))))]) in (H3 (refl_equal nat i) (refl_equal T 
11747 v) (refl_equal C (CHead c k t)) (refl_equal C c2)))))))))))) c1)))))) n).
11748
11749 theorem csubst0_drop_eq:
11750  \forall (n: nat).(\forall (c1: C).(\forall (c2: C).(\forall (v: T).((csubst0 
11751 n v c1 c2) \to (\forall (e: C).((drop n O c1 e) \to (or4 (drop n O c2 e) 
11752 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
11753 T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: 
11754 C).(\lambda (_: T).(\lambda (w: T).(drop n O c2 (CHead e0 (Flat f) w)))))) 
11755 (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u 
11756 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
11757 C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: 
11758 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop n O c2 (CHead e2 
11759 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
11760 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
11761 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 
11762 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
11763 (_: T).(\lambda (w: T).(drop n O c2 (CHead e2 (Flat f) w))))))) (\lambda (_: 
11764 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
11765 v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
11766 T).(\lambda (_: T).(csubst0 O v e1 e2))))))))))))))
11767 \def
11768  \lambda (n: nat).(nat_ind (\lambda (n0: nat).(\forall (c1: C).(\forall (c2: 
11769 C).(\forall (v: T).((csubst0 n0 v c1 c2) \to (\forall (e: C).((drop n0 O c1 
11770 e) \to (or4 (drop n0 O c2 e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
11771 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) 
11772 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop n0 O 
11773 c2 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
11774 T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: 
11775 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat 
11776 f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
11777 T).(drop n0 O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
11778 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
11779 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
11780 T).(eq C e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: 
11781 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c2 (CHead e2 
11782 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
11783 (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
11784 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
11785 e2))))))))))))))) (\lambda (c1: C).(\lambda (c2: C).(\lambda (v: T).(\lambda 
11786 (H: (csubst0 O v c1 c2)).(\lambda (e: C).(\lambda (H0: (drop O O c1 
11787 e)).(eq_ind C c1 (\lambda (c: C).(or4 (drop O O c2 c) (ex3_4 F C T T (\lambda 
11788 (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 
11789 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
11790 (w: T).(drop O O c2 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: 
11791 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T 
11792 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c 
11793 (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
11794 C).(\lambda (u: T).(drop O O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: 
11795 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
11796 (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
11797 (u: T).(\lambda (_: T).(eq C c (CHead e1 (Flat f) u))))))) (\lambda (f: 
11798 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O 
11799 c2 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
11800 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: 
11801 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11802 O v e1 e2))))))))) (insert_eq nat O (\lambda (n0: nat).(csubst0 n0 v c1 c2)) 
11803 (or4 (drop O O c2 c1) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
11804 C).(\lambda (u: T).(\lambda (_: T).(eq C c1 (CHead e0 (Flat f) u)))))) 
11805 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop O O c2 
11806 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
11807 T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: 
11808 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c1 (CHead e1 (Flat 
11809 f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
11810 T).(drop O O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
11811 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
11812 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
11813 T).(eq C c1 (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: 
11814 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O c2 (CHead e2 
11815 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
11816 (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
11817 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
11818 e2)))))))) (\lambda (y: nat).(\lambda (H1: (csubst0 y v c1 c2)).(csubst0_ind 
11819 (\lambda (n0: nat).(\lambda (t: T).(\lambda (c: C).(\lambda (c0: C).((eq nat 
11820 n0 O) \to (or4 (drop O O c0 c) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
11821 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 (Flat f) u)))))) 
11822 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop O O c0 
11823 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
11824 T).(\lambda (w: T).(subst0 O t u w)))))) (ex3_4 F C C T (\lambda (f: 
11825 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 (Flat 
11826 f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
11827 T).(drop O O c0 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
11828 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O t e1 e2)))))) (ex4_5 F C C T T 
11829 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
11830 T).(eq C c (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: 
11831 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O c0 (CHead e2 
11832 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
11833 (u: T).(\lambda (w: T).(subst0 O t u w)))))) (\lambda (_: F).(\lambda (e1: 
11834 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O t e1 
11835 e2))))))))))))) (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: 
11836 nat).(\forall (v0: T).(\forall (u1: T).(\forall (u2: T).((subst0 i v0 u1 u2) 
11837 \to (\forall (c: C).((eq nat (s k0 i) O) \to (or4 (drop O O (CHead c k0 u2) 
11838 (CHead c k0 u1)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: 
11839 T).(\lambda (_: T).(eq C (CHead c k0 u1) (CHead e0 (Flat f) u)))))) (\lambda 
11840 (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c k0 
11841 u2) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
11842 T).(\lambda (w: T).(subst0 O v0 u w)))))) (ex3_4 F C C T (\lambda (f: 
11843 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead c k0 u1) 
11844 (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
11845 C).(\lambda (u: T).(drop O O (CHead c k0 u2) (CHead e2 (Flat f) u)))))) 
11846 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
11847 v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
11848 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead c k0 u1) (CHead e1 (Flat f) 
11849 u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
11850 T).(\lambda (w: T).(drop O O (CHead c k0 u2) (CHead e2 (Flat f) w))))))) 
11851 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11852 T).(subst0 O v0 u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
11853 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 e2)))))))))))))))) 
11854 (\lambda (b: B).(\lambda (i: nat).(\lambda (v0: T).(\lambda (u1: T).(\lambda 
11855 (u2: T).(\lambda (_: (subst0 i v0 u1 u2)).(\lambda (c: C).(\lambda (H3: (eq 
11856 nat (S i) O)).(let H4 \def (eq_ind nat (S i) (\lambda (ee: nat).(match ee 
11857 return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow 
11858 True])) I O H3) in (False_ind (or4 (drop O O (CHead c (Bind b) u2) (CHead c 
11859 (Bind b) u1)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: 
11860 T).(\lambda (_: T).(eq C (CHead c (Bind b) u1) (CHead e0 (Flat f) u)))))) 
11861 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop O O 
11862 (CHead c (Bind b) u2) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: 
11863 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) (ex3_4 F C C T 
11864 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead 
11865 c (Bind b) u1) (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
11866 C).(\lambda (e2: C).(\lambda (u: T).(drop O O (CHead c (Bind b) u2) (CHead e2 
11867 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
11868 (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
11869 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead c (Bind 
11870 b) u1) (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda 
11871 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c (Bind b) u2) 
11872 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
11873 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) (\lambda (_: 
11874 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
11875 O v0 e1 e2)))))))) H4)))))))))) (\lambda (f: F).(\lambda (i: nat).(\lambda 
11876 (v0: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H2: (subst0 i v0 u1 
11877 u2)).(\lambda (c: C).(\lambda (H3: (eq nat i O)).(let H4 \def (eq_ind nat i 
11878 (\lambda (n: nat).(subst0 n v0 u1 u2)) H2 O H3) in (or4_intro1 (drop O O 
11879 (CHead c (Flat f) u2) (CHead c (Flat f) u1)) (ex3_4 F C T T (\lambda (f0: 
11880 F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead c (Flat f) 
11881 u1) (CHead e0 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda 
11882 (_: T).(\lambda (w: T).(drop O O (CHead c (Flat f) u2) (CHead e0 (Flat f0) 
11883 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11884 T).(subst0 O v0 u w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: 
11885 C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead c (Flat f) u1) (CHead e1 
11886 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
11887 (u: T).(drop O O (CHead c (Flat f) u2) (CHead e2 (Flat f0) u)))))) (\lambda 
11888 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 
11889 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
11890 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead c (Flat f) u1) (CHead e1 
11891 (Flat f0) u))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
11892 (_: T).(\lambda (w: T).(drop O O (CHead c (Flat f) u2) (CHead e2 (Flat f0) 
11893 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
11894 T).(\lambda (w: T).(subst0 O v0 u w)))))) (\lambda (_: F).(\lambda (e1: 
11895 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 
11896 e2))))))) (ex3_4_intro F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u: 
11897 T).(\lambda (_: T).(eq C (CHead c (Flat f) u1) (CHead e0 (Flat f0) u)))))) 
11898 (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop O O 
11899 (CHead c (Flat f) u2) (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda 
11900 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w))))) f c u1 u2 
11901 (refl_equal C (CHead c (Flat f) u1)) (drop_refl (CHead c (Flat f) u2)) 
11902 H4))))))))))) k)) (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: 
11903 nat).(\forall (c3: C).(\forall (c4: C).(\forall (v0: T).((csubst0 i v0 c3 c4) 
11904 \to ((((eq nat i O) \to (or4 (drop O O c4 c3) (ex3_4 F C T T (\lambda (f: 
11905 F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e0 (Flat 
11906 f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
11907 T).(drop O O c4 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: 
11908 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) (ex3_4 F C C T 
11909 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c3 
11910 (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
11911 C).(\lambda (u: T).(drop O O c4 (CHead e2 (Flat f) u)))))) (\lambda (_: 
11912 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 
11913 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
11914 C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e1 (Flat f) u))))))) 
11915 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
11916 T).(drop O O c4 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
11917 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) 
11918 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
11919 (_: T).(csubst0 O v0 e1 e2)))))))))) \to (\forall (u: T).((eq nat (s k0 i) O) 
11920 \to (or4 (drop O O (CHead c4 k0 u) (CHead c3 k0 u)) (ex3_4 F C T T (\lambda 
11921 (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead c3 k0 
11922 u) (CHead e0 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
11923 T).(\lambda (w: T).(drop O O (CHead c4 k0 u) (CHead e0 (Flat f) w)))))) 
11924 (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v0 
11925 u0 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
11926 C).(\lambda (u0: T).(eq C (CHead c3 k0 u) (CHead e1 (Flat f) u0)))))) 
11927 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop O O 
11928 (CHead c4 k0 u) (CHead e2 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: 
11929 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T 
11930 T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda 
11931 (_: T).(eq C (CHead c3 k0 u) (CHead e1 (Flat f) u0))))))) (\lambda (f: 
11932 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O 
11933 (CHead c4 k0 u) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
11934 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v0 u0 w)))))) 
11935 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
11936 (_: T).(csubst0 O v0 e1 e2))))))))))))))))) (\lambda (b: B).(\lambda (i: 
11937 nat).(\lambda (c3: C).(\lambda (c4: C).(\lambda (v0: T).(\lambda (_: (csubst0 
11938 i v0 c3 c4)).(\lambda (_: (((eq nat i O) \to (or4 (drop O O c4 c3) (ex3_4 F C 
11939 T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c3 
11940 (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
11941 T).(\lambda (w: T).(drop O O c4 (CHead e0 (Flat f) w)))))) (\lambda (_: 
11942 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) 
11943 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
11944 T).(eq C c3 (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
11945 C).(\lambda (e2: C).(\lambda (u: T).(drop O O c4 (CHead e2 (Flat f) u)))))) 
11946 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
11947 v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
11948 C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e1 (Flat f) u))))))) 
11949 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
11950 T).(drop O O c4 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
11951 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) 
11952 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
11953 (_: T).(csubst0 O v0 e1 e2))))))))))).(\lambda (u: T).(\lambda (H4: (eq nat 
11954 (S i) O)).(let H5 \def (eq_ind nat (S i) (\lambda (ee: nat).(match ee return 
11955 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
11956 I O H4) in (False_ind (or4 (drop O O (CHead c4 (Bind b) u) (CHead c3 (Bind b) 
11957 u)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda 
11958 (_: T).(eq C (CHead c3 (Bind b) u) (CHead e0 (Flat f) u0)))))) (\lambda (f: 
11959 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 (Bind 
11960 b) u) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
11961 (u0: T).(\lambda (w: T).(subst0 O v0 u0 w)))))) (ex3_4 F C C T (\lambda (f: 
11962 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead c3 (Bind b) 
11963 u) (CHead e1 (Flat f) u0)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
11964 C).(\lambda (u0: T).(drop O O (CHead c4 (Bind b) u) (CHead e2 (Flat f) 
11965 u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
11966 T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: 
11967 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead c3 (Bind b) 
11968 u) (CHead e1 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
11969 C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 (Bind b) u) (CHead e2 
11970 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
11971 (u0: T).(\lambda (w: T).(subst0 O v0 u0 w)))))) (\lambda (_: F).(\lambda (e1: 
11972 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 
11973 e2)))))))) H5))))))))))) (\lambda (f: F).(\lambda (i: nat).(\lambda (c3: 
11974 C).(\lambda (c4: C).(\lambda (v0: T).(\lambda (H2: (csubst0 i v0 c3 
11975 c4)).(\lambda (H3: (((eq nat i O) \to (or4 (drop O O c4 c3) (ex3_4 F C T T 
11976 (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c3 
11977 (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
11978 T).(\lambda (w: T).(drop O O c4 (CHead e0 (Flat f) w)))))) (\lambda (_: 
11979 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) 
11980 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
11981 T).(eq C c3 (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
11982 C).(\lambda (e2: C).(\lambda (u: T).(drop O O c4 (CHead e2 (Flat f) u)))))) 
11983 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
11984 v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
11985 C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e1 (Flat f) u))))))) 
11986 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
11987 T).(drop O O c4 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
11988 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) 
11989 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
11990 (_: T).(csubst0 O v0 e1 e2))))))))))).(\lambda (u: T).(\lambda (H4: (eq nat i 
11991 O)).(let H5 \def (eq_ind nat i (\lambda (n: nat).((eq nat n O) \to (or4 (drop 
11992 O O c4 c3) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: 
11993 T).(\lambda (_: T).(eq C c3 (CHead e0 (Flat f) u)))))) (\lambda (f: 
11994 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop O O c4 (CHead e0 
11995 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
11996 T).(subst0 O v0 u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
11997 C).(\lambda (_: C).(\lambda (u: T).(eq C c3 (CHead e1 (Flat f) u)))))) 
11998 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop O O c4 
11999 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
12000 C).(\lambda (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: 
12001 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C c3 
12002 (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12003 C).(\lambda (_: T).(\lambda (w: T).(drop O O c4 (CHead e2 (Flat f) w))))))) 
12004 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
12005 T).(subst0 O v0 u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
12006 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 e2)))))))))) H3 O H4) in 
12007 (let H6 \def (eq_ind nat i (\lambda (n: nat).(csubst0 n v0 c3 c4)) H2 O H4) 
12008 in (or4_intro2 (drop O O (CHead c4 (Flat f) u) (CHead c3 (Flat f) u)) (ex3_4 
12009 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: 
12010 T).(eq C (CHead c3 (Flat f) u) (CHead e0 (Flat f0) u0)))))) (\lambda (f0: 
12011 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 (Flat 
12012 f) u) (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
12013 (u0: T).(\lambda (w: T).(subst0 O v0 u0 w)))))) (ex3_4 F C C T (\lambda (f0: 
12014 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead c3 (Flat f) 
12015 u) (CHead e1 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda 
12016 (e2: C).(\lambda (u0: T).(drop O O (CHead c4 (Flat f) u) (CHead e2 (Flat f0) 
12017 u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12018 T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: 
12019 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead c3 (Flat f) 
12020 u) (CHead e1 (Flat f0) u0))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda 
12021 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 (Flat f) u) 
12022 (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
12023 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v0 u0 w)))))) (\lambda (_: 
12024 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
12025 O v0 e1 e2))))))) (ex3_4_intro F C C T (\lambda (f0: F).(\lambda (e1: 
12026 C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead c3 (Flat f) u) (CHead e1 
12027 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
12028 (u0: T).(drop O O (CHead c4 (Flat f) u) (CHead e2 (Flat f0) u0)))))) (\lambda 
12029 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 
12030 e2))))) f c3 c4 u (refl_equal C (CHead c3 (Flat f) u)) (drop_refl (CHead c4 
12031 (Flat f) u)) H6))))))))))))) k)) (\lambda (k: K).(K_ind (\lambda (k0: 
12032 K).(\forall (i: nat).(\forall (v0: T).(\forall (u1: T).(\forall (u2: 
12033 T).((subst0 i v0 u1 u2) \to (\forall (c3: C).(\forall (c4: C).((csubst0 i v0 
12034 c3 c4) \to ((((eq nat i O) \to (or4 (drop O O c4 c3) (ex3_4 F C T T (\lambda 
12035 (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e0 
12036 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
12037 (w: T).(drop O O c4 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: 
12038 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) (ex3_4 F C C T 
12039 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c3 
12040 (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12041 C).(\lambda (u: T).(drop O O c4 (CHead e2 (Flat f) u)))))) (\lambda (_: 
12042 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 
12043 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12044 C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e1 (Flat f) u))))))) 
12045 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
12046 T).(drop O O c4 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
12047 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) 
12048 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
12049 (_: T).(csubst0 O v0 e1 e2)))))))))) \to ((eq nat (s k0 i) O) \to (or4 (drop 
12050 O O (CHead c4 k0 u2) (CHead c3 k0 u1)) (ex3_4 F C T T (\lambda (f: 
12051 F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead c3 k0 u1) 
12052 (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12053 T).(\lambda (w: T).(drop O O (CHead c4 k0 u2) (CHead e0 (Flat f) w)))))) 
12054 (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 
12055 u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12056 C).(\lambda (u: T).(eq C (CHead c3 k0 u1) (CHead e1 (Flat f) u)))))) (\lambda 
12057 (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop O O (CHead c4 
12058 k0 u2) (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12059 (e2: C).(\lambda (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda 
12060 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
12061 (CHead c3 k0 u1) (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: 
12062 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 k0 
12063 u2) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
12064 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) (\lambda (_: 
12065 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
12066 O v0 e1 e2))))))))))))))))))) (\lambda (b: B).(\lambda (i: nat).(\lambda (v0: 
12067 T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (_: (subst0 i v0 u1 
12068 u2)).(\lambda (c3: C).(\lambda (c4: C).(\lambda (_: (csubst0 i v0 c3 
12069 c4)).(\lambda (_: (((eq nat i O) \to (or4 (drop O O c4 c3) (ex3_4 F C T T 
12070 (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c3 
12071 (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12072 T).(\lambda (w: T).(drop O O c4 (CHead e0 (Flat f) w)))))) (\lambda (_: 
12073 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) 
12074 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
12075 T).(eq C c3 (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
12076 C).(\lambda (e2: C).(\lambda (u: T).(drop O O c4 (CHead e2 (Flat f) u)))))) 
12077 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
12078 v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12079 C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e1 (Flat f) u))))))) 
12080 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
12081 T).(drop O O c4 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
12082 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) 
12083 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
12084 (_: T).(csubst0 O v0 e1 e2))))))))))).(\lambda (H5: (eq nat (S i) O)).(let H6 
12085 \def (eq_ind nat (S i) (\lambda (ee: nat).(match ee return (\lambda (_: 
12086 nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) I O H5) in 
12087 (False_ind (or4 (drop O O (CHead c4 (Bind b) u2) (CHead c3 (Bind b) u1)) 
12088 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
12089 T).(eq C (CHead c3 (Bind b) u1) (CHead e0 (Flat f) u)))))) (\lambda (f: 
12090 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 (Bind 
12091 b) u2) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
12092 (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) (ex3_4 F C C T (\lambda (f: 
12093 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead c3 (Bind b) 
12094 u1) (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12095 C).(\lambda (u: T).(drop O O (CHead c4 (Bind b) u2) (CHead e2 (Flat f) 
12096 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12097 T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: 
12098 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead c3 (Bind b) 
12099 u1) (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12100 C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 (Bind b) u2) (CHead e2 
12101 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
12102 (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) (\lambda (_: F).(\lambda (e1: 
12103 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 
12104 e2)))))))) H6))))))))))))) (\lambda (f: F).(\lambda (i: nat).(\lambda (v0: 
12105 T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H2: (subst0 i v0 u1 
12106 u2)).(\lambda (c3: C).(\lambda (c4: C).(\lambda (H3: (csubst0 i v0 c3 
12107 c4)).(\lambda (H4: (((eq nat i O) \to (or4 (drop O O c4 c3) (ex3_4 F C T T 
12108 (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c3 
12109 (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12110 T).(\lambda (w: T).(drop O O c4 (CHead e0 (Flat f) w)))))) (\lambda (_: 
12111 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) 
12112 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
12113 T).(eq C c3 (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
12114 C).(\lambda (e2: C).(\lambda (u: T).(drop O O c4 (CHead e2 (Flat f) u)))))) 
12115 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
12116 v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12117 C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e1 (Flat f) u))))))) 
12118 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
12119 T).(drop O O c4 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
12120 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) 
12121 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
12122 (_: T).(csubst0 O v0 e1 e2))))))))))).(\lambda (H5: (eq nat i O)).(let H6 
12123 \def (eq_ind nat i (\lambda (n: nat).((eq nat n O) \to (or4 (drop O O c4 c3) 
12124 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
12125 T).(eq C c3 (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: 
12126 C).(\lambda (_: T).(\lambda (w: T).(drop O O c4 (CHead e0 (Flat f) w)))))) 
12127 (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 
12128 u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12129 C).(\lambda (u: T).(eq C c3 (CHead e1 (Flat f) u)))))) (\lambda (f: 
12130 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop O O c4 (CHead e2 
12131 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
12132 (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
12133 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C c3 (CHead e1 
12134 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
12135 (_: T).(\lambda (w: T).(drop O O c4 (CHead e2 (Flat f) w))))))) (\lambda (_: 
12136 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
12137 v0 u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12138 T).(\lambda (_: T).(csubst0 O v0 e1 e2)))))))))) H4 O H5) in (let H7 \def 
12139 (eq_ind nat i (\lambda (n: nat).(csubst0 n v0 c3 c4)) H3 O H5) in (let H8 
12140 \def (eq_ind nat i (\lambda (n: nat).(subst0 n v0 u1 u2)) H2 O H5) in 
12141 (or4_intro3 (drop O O (CHead c4 (Flat f) u2) (CHead c3 (Flat f) u1)) (ex3_4 F 
12142 C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C 
12143 (CHead c3 (Flat f) u1) (CHead e0 (Flat f0) u)))))) (\lambda (f0: F).(\lambda 
12144 (e0: C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 (Flat f) u2) 
12145 (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
12146 T).(\lambda (w: T).(subst0 O v0 u w)))))) (ex3_4 F C C T (\lambda (f0: 
12147 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead c3 (Flat f) 
12148 u1) (CHead e1 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda 
12149 (e2: C).(\lambda (u: T).(drop O O (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) 
12150 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12151 T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: 
12152 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead c3 (Flat f) 
12153 u1) (CHead e1 (Flat f0) u))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda 
12154 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 (Flat f) u2) 
12155 (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
12156 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) (\lambda (_: 
12157 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
12158 O v0 e1 e2))))))) (ex4_5_intro F C C T T (\lambda (f0: F).(\lambda (e1: 
12159 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead c3 (Flat f) 
12160 u1) (CHead e1 (Flat f0) u))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda 
12161 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop O O (CHead c4 (Flat f) u2) 
12162 (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
12163 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v0 u w)))))) (\lambda (_: 
12164 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
12165 O v0 e1 e2)))))) f c3 c4 u1 u2 (refl_equal C (CHead c3 (Flat f) u1)) 
12166 (drop_refl (CHead c4 (Flat f) u2)) H8 H7)))))))))))))))) k)) y v c1 c2 H1))) 
12167 H) e (drop_gen_refl c1 e H0)))))))) (\lambda (n0: nat).(\lambda (IHn: 
12168 ((\forall (c1: C).(\forall (c2: C).(\forall (v: T).((csubst0 n0 v c1 c2) \to 
12169 (\forall (e: C).((drop n0 O c1 e) \to (or4 (drop n0 O c2 e) (ex3_4 F C T T 
12170 (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
12171 (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12172 T).(\lambda (w: T).(drop n0 O c2 (CHead e0 (Flat f) w)))))) (\lambda (_: 
12173 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
12174 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
12175 T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
12176 C).(\lambda (e2: C).(\lambda (u: T).(drop n0 O c2 (CHead e2 (Flat f) u)))))) 
12177 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
12178 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12179 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u))))))) 
12180 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
12181 T).(drop n0 O c2 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
12182 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
12183 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
12184 (_: T).(csubst0 O v e1 e2)))))))))))))))).(\lambda (c1: C).(C_ind (\lambda 
12185 (c: C).(\forall (c2: C).(\forall (v: T).((csubst0 (S n0) v c c2) \to (\forall 
12186 (e: C).((drop (S n0) O c e) \to (or4 (drop (S n0) O c2 e) (ex3_4 F C T T 
12187 (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
12188 (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12189 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 (Flat f) w)))))) (\lambda (_: 
12190 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
12191 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
12192 T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
12193 C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c2 (CHead e2 (Flat f) 
12194 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12195 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: 
12196 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) 
12197 u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
12198 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 (Flat f) w))))))) (\lambda (_: 
12199 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
12200 v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12201 T).(\lambda (_: T).(csubst0 O v e1 e2)))))))))))))) (\lambda (n1: 
12202 nat).(\lambda (c2: C).(\lambda (v: T).(\lambda (_: (csubst0 (S n0) v (CSort 
12203 n1) c2)).(\lambda (e: C).(\lambda (H0: (drop (S n0) O (CSort n1) 
12204 e)).(and3_ind (eq C e (CSort n1)) (eq nat (S n0) O) (eq nat O O) (or4 (drop 
12205 (S n0) O c2 e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: 
12206 T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: 
12207 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead 
12208 e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda 
12209 (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12210 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) 
12211 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) 
12212 O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12213 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
12214 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
12215 e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12216 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 (Flat f) 
12217 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
12218 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
12219 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12220 e2)))))))) (\lambda (H1: (eq C e (CSort n1))).(\lambda (H2: (eq nat (S n0) 
12221 O)).(\lambda (_: (eq nat O O)).(eq_ind_r C (CSort n1) (\lambda (c: C).(or4 
12222 (drop (S n0) O c2 c) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
12223 (u: T).(\lambda (_: T).(eq C c (CHead e0 (Flat f) u)))))) (\lambda (f: 
12224 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead 
12225 e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda 
12226 (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12227 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 (Flat f) u)))))) 
12228 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) 
12229 O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12230 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
12231 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
12232 c (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12233 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 (Flat f) 
12234 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
12235 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
12236 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12237 e2))))))))) (let H4 \def (eq_ind nat (S n0) (\lambda (ee: nat).(match ee 
12238 return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow 
12239 True])) I O H2) in (False_ind (or4 (drop (S n0) O c2 (CSort n1)) (ex3_4 F C T 
12240 T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C 
12241 (CSort n1) (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: 
12242 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 (Flat f) 
12243 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
12244 T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12245 C).(\lambda (_: C).(\lambda (u: T).(eq C (CSort n1) (CHead e1 (Flat f) 
12246 u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
12247 T).(drop (S n0) O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
12248 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
12249 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
12250 T).(eq C (CSort n1) (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: 
12251 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead 
12252 e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
12253 (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
12254 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12255 e2)))))))) H4)) e H1)))) (drop_gen_sort n1 (S n0) O e H0)))))))) (\lambda (c: 
12256 C).(\lambda (H: ((\forall (c2: C).(\forall (v: T).((csubst0 (S n0) v c c2) 
12257 \to (\forall (e: C).((drop (S n0) O c e) \to (or4 (drop (S n0) O c2 e) (ex3_4 
12258 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq 
12259 C e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12260 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e0 (Flat f) w)))))) (\lambda (_: 
12261 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
12262 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
12263 T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
12264 C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c2 (CHead e2 (Flat f) 
12265 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12266 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: 
12267 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) 
12268 u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
12269 T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 (Flat f) w))))))) (\lambda (_: 
12270 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
12271 v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12272 T).(\lambda (_: T).(csubst0 O v e1 e2))))))))))))))).(\lambda (k: K).(\lambda 
12273 (t: T).(\lambda (c2: C).(\lambda (v: T).(\lambda (H0: (csubst0 (S n0) v 
12274 (CHead c k t) c2)).(\lambda (e: C).(\lambda (H1: (drop (S n0) O (CHead c k t) 
12275 e)).(let H2 \def (match H0 return (\lambda (n: nat).(\lambda (t0: T).(\lambda 
12276 (c0: C).(\lambda (c1: C).(\lambda (_: (csubst0 n t0 c0 c1)).((eq nat n (S 
12277 n0)) \to ((eq T t0 v) \to ((eq C c0 (CHead c k t)) \to ((eq C c1 c2) \to (or4 
12278 (drop (S n0) O c2 e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
12279 (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: 
12280 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead 
12281 e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda 
12282 (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12283 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) 
12284 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) 
12285 O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12286 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
12287 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
12288 e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12289 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c2 (CHead e2 (Flat f) 
12290 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
12291 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
12292 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12293 e2))))))))))))))))) with [(csubst0_snd k0 i v0 u1 u2 H2 c0) \Rightarrow 
12294 (\lambda (H3: (eq nat (s k0 i) (S n0))).(\lambda (H4: (eq T v0 v)).(\lambda 
12295 (H5: (eq C (CHead c0 k0 u1) (CHead c k t))).(\lambda (H6: (eq C (CHead c0 k0 
12296 u2) c2)).((let H7 \def (f_equal nat nat (\lambda (e0: nat).e0) (s k0 i) (S 
12297 n0) H3) in (eq_ind nat (s k0 i) (\lambda (n: nat).((eq T v0 v) \to ((eq C 
12298 (CHead c0 k0 u1) (CHead c k t)) \to ((eq C (CHead c0 k0 u2) c2) \to ((subst0 
12299 i v0 u1 u2) \to (or4 (drop n O c2 e) (ex3_4 F C T T (\lambda (f: F).(\lambda 
12300 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) 
12301 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop n O c2 
12302 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
12303 T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: 
12304 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat 
12305 f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
12306 T).(drop n O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
12307 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
12308 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
12309 T).(eq C e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: 
12310 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop n O c2 (CHead e2 
12311 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
12312 (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
12313 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12314 e2))))))))))))) (\lambda (H8: (eq T v0 v)).(eq_ind T v (\lambda (t0: T).((eq 
12315 C (CHead c0 k0 u1) (CHead c k t)) \to ((eq C (CHead c0 k0 u2) c2) \to 
12316 ((subst0 i t0 u1 u2) \to (or4 (drop (s k0 i) O c2 e) (ex3_4 F C T T (\lambda 
12317 (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 
12318 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
12319 (w: T).(drop (s k0 i) O c2 (CHead e0 (Flat f) w)))))) (\lambda (_: 
12320 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
12321 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
12322 T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
12323 C).(\lambda (e2: C).(\lambda (u: T).(drop (s k0 i) O c2 (CHead e2 (Flat f) 
12324 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12325 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: 
12326 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) 
12327 u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
12328 T).(\lambda (w: T).(drop (s k0 i) O c2 (CHead e2 (Flat f) w))))))) (\lambda 
12329 (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
12330 T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
12331 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))))))) (\lambda 
12332 (H9: (eq C (CHead c0 k0 u1) (CHead c k t))).(let H10 \def (f_equal C T 
12333 (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with [(CSort _) 
12334 \Rightarrow u1 | (CHead _ _ t) \Rightarrow t])) (CHead c0 k0 u1) (CHead c k 
12335 t) H9) in ((let H11 \def (f_equal C K (\lambda (e0: C).(match e0 return 
12336 (\lambda (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) \Rightarrow 
12337 k])) (CHead c0 k0 u1) (CHead c k t) H9) in ((let H12 \def (f_equal C C 
12338 (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with [(CSort _) 
12339 \Rightarrow c0 | (CHead c _ _) \Rightarrow c])) (CHead c0 k0 u1) (CHead c k 
12340 t) H9) in (eq_ind C c (\lambda (c: C).((eq K k0 k) \to ((eq T u1 t) \to ((eq 
12341 C (CHead c k0 u2) c2) \to ((subst0 i v u1 u2) \to (or4 (drop (s k0 i) O c2 e) 
12342 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
12343 T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: 
12344 C).(\lambda (_: T).(\lambda (w: T).(drop (s k0 i) O c2 (CHead e0 (Flat f) 
12345 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
12346 T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12347 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) 
12348 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s k0 
12349 i) O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12350 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
12351 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
12352 e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12353 C).(\lambda (_: T).(\lambda (w: T).(drop (s k0 i) O c2 (CHead e2 (Flat f) 
12354 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
12355 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
12356 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12357 e2))))))))))))) (\lambda (H13: (eq K k0 k)).(eq_ind K k (\lambda (k: K).((eq 
12358 T u1 t) \to ((eq C (CHead c k u2) c2) \to ((subst0 i v u1 u2) \to (or4 (drop 
12359 (s k i) O c2 e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: 
12360 T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: 
12361 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O c2 (CHead 
12362 e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda 
12363 (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12364 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) 
12365 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s k 
12366 i) O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12367 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
12368 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
12369 e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12370 C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O c2 (CHead e2 (Flat f) 
12371 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
12372 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
12373 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12374 e2)))))))))))) (\lambda (H14: (eq T u1 t)).(eq_ind T t (\lambda (t: T).((eq C 
12375 (CHead c k u2) c2) \to ((subst0 i v t u2) \to (or4 (drop (s k i) O c2 e) 
12376 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
12377 T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: 
12378 C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O c2 (CHead e0 (Flat f) 
12379 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
12380 T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12381 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) 
12382 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s k 
12383 i) O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12384 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
12385 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
12386 e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12387 C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O c2 (CHead e2 (Flat f) 
12388 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
12389 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
12390 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12391 e2))))))))))) (\lambda (H15: (eq C (CHead c k u2) c2)).(eq_ind C (CHead c k 
12392 u2) (\lambda (c: C).((subst0 i v t u2) \to (or4 (drop (s k i) O c e) (ex3_4 F 
12393 C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C 
12394 e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12395 T).(\lambda (w: T).(drop (s k i) O c (CHead e0 (Flat f) w)))))) (\lambda (_: 
12396 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
12397 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
12398 T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
12399 C).(\lambda (e2: C).(\lambda (u: T).(drop (s k i) O c (CHead e2 (Flat f) 
12400 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12401 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: 
12402 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) 
12403 u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
12404 T).(\lambda (w: T).(drop (s k i) O c (CHead e2 (Flat f) w))))))) (\lambda (_: 
12405 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
12406 v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12407 T).(\lambda (_: T).(csubst0 O v e1 e2)))))))))) (\lambda (H16: (subst0 i v t 
12408 u2)).(let H0 \def (eq_ind K k0 (\lambda (k: K).(eq nat (s k i) (S n0))) H7 k 
12409 H13) in (K_ind (\lambda (k: K).((drop (r k n0) O c e) \to ((eq nat (s k i) (S 
12410 n0)) \to (or4 (drop (s k i) O (CHead c k u2) e) (ex3_4 F C T T (\lambda (f: 
12411 F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat 
12412 f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
12413 T).(drop (s k i) O (CHead c k u2) (CHead e0 (Flat f) w)))))) (\lambda (_: 
12414 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
12415 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
12416 T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
12417 C).(\lambda (e2: C).(\lambda (u: T).(drop (s k i) O (CHead c k u2) (CHead e2 
12418 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
12419 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
12420 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 
12421 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
12422 (_: T).(\lambda (w: T).(drop (s k i) O (CHead c k u2) (CHead e2 (Flat f) 
12423 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
12424 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
12425 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12426 e2))))))))))) (\lambda (b: B).(\lambda (H1: (drop (r (Bind b) n0) O c 
12427 e)).(\lambda (H17: (eq nat (s (Bind b) i) (S n0))).(let H18 \def (f_equal nat 
12428 nat (\lambda (e0: nat).(match e0 return (\lambda (_: nat).nat) with [O 
12429 \Rightarrow i | (S n) \Rightarrow n])) (S i) (S n0) H17) in (let H19 \def 
12430 (eq_ind nat i (\lambda (n: nat).(subst0 n v t u2)) H16 n0 H18) in (eq_ind_r 
12431 nat n0 (\lambda (n: nat).(or4 (drop (s (Bind b) n) O (CHead c (Bind b) u2) e) 
12432 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
12433 T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: 
12434 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n) O (CHead c (Bind b) 
12435 u2) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
12436 T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: 
12437 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat 
12438 f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
12439 T).(drop (s (Bind b) n) O (CHead c (Bind b) u2) (CHead e2 (Flat f) u)))))) 
12440 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
12441 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12442 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u))))))) 
12443 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
12444 T).(drop (s (Bind b) n) O (CHead c (Bind b) u2) (CHead e2 (Flat f) w))))))) 
12445 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
12446 T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
12447 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))))) (or4_intro0 
12448 (drop (s (Bind b) n0) O (CHead c (Bind b) u2) e) (ex3_4 F C T T (\lambda (f: 
12449 F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat 
12450 f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
12451 T).(drop (s (Bind b) n0) O (CHead c (Bind b) u2) (CHead e0 (Flat f) w)))))) 
12452 (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u 
12453 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12454 C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: 
12455 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s (Bind b) n0) O 
12456 (CHead c (Bind b) u2) (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda 
12457 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
12458 C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
12459 T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u))))))) (\lambda (f: 
12460 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
12461 (Bind b) n0) O (CHead c (Bind b) u2) (CHead e2 (Flat f) w))))))) (\lambda (_: 
12462 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
12463 v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12464 T).(\lambda (_: T).(csubst0 O v e1 e2))))))) (drop_drop (Bind b) n0 c e H1 
12465 u2)) i H18)))))) (\lambda (f: F).(\lambda (H1: (drop (r (Flat f) n0) O c 
12466 e)).(\lambda (H17: (eq nat (s (Flat f) i) (S n0))).(let H18 \def (f_equal nat 
12467 nat (\lambda (e0: nat).e0) i (S n0) H17) in (let H19 \def (eq_ind nat i 
12468 (\lambda (n: nat).(subst0 n v t u2)) H16 (S n0) H18) in (eq_ind_r nat (S n0) 
12469 (\lambda (n: nat).(or4 (drop (s (Flat f) n) O (CHead c (Flat f) u2) e) (ex3_4 
12470 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq 
12471 C e (CHead e0 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda 
12472 (_: T).(\lambda (w: T).(drop (s (Flat f) n) O (CHead c (Flat f) u2) (CHead e0 
12473 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda 
12474 (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: 
12475 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f0) u)))))) 
12476 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s 
12477 (Flat f) n) O (CHead c (Flat f) u2) (CHead e2 (Flat f0) u)))))) (\lambda (_: 
12478 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
12479 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
12480 (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f0) u))))))) (\lambda (f0: 
12481 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
12482 (Flat f) n) O (CHead c (Flat f) u2) (CHead e2 (Flat f0) w))))))) (\lambda (_: 
12483 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
12484 v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12485 T).(\lambda (_: T).(csubst0 O v e1 e2))))))))) (or4_intro0 (drop (s (Flat f) 
12486 (S n0)) O (CHead c (Flat f) u2) e) (ex3_4 F C T T (\lambda (f0: F).(\lambda 
12487 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f0) u)))))) 
12488 (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
12489 (Flat f) (S n0)) O (CHead c (Flat f) u2) (CHead e0 (Flat f0) w)))))) (\lambda 
12490 (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
12491 (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
12492 T).(eq C e (CHead e1 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: 
12493 C).(\lambda (e2: C).(\lambda (u: T).(drop (s (Flat f) (S n0)) O (CHead c 
12494 (Flat f) u2) (CHead e2 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: 
12495 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
12496 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda 
12497 (_: T).(eq C e (CHead e1 (Flat f0) u))))))) (\lambda (f0: F).(\lambda (_: 
12498 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) 
12499 O (CHead c (Flat f) u2) (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda 
12500 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
12501 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
12502 (_: T).(csubst0 O v e1 e2))))))) (drop_drop (Flat f) n0 c e H1 u2)) i 
12503 H18)))))) k (drop_gen_drop k c e t n0 H1) H0))) c2 H15)) u1 (sym_eq T u1 t 
12504 H14))) k0 (sym_eq K k0 k H13))) c0 (sym_eq C c0 c H12))) H11)) H10))) v0 
12505 (sym_eq T v0 v H8))) (S n0) H7)) H4 H5 H6 H2))))) | (csubst0_fst k0 i c1 c0 
12506 v0 H2 u) \Rightarrow (\lambda (H3: (eq nat (s k0 i) (S n0))).(\lambda (H4: 
12507 (eq T v0 v)).(\lambda (H5: (eq C (CHead c1 k0 u) (CHead c k t))).(\lambda 
12508 (H6: (eq C (CHead c0 k0 u) c2)).((let H7 \def (f_equal nat nat (\lambda (e0: 
12509 nat).e0) (s k0 i) (S n0) H3) in (eq_ind nat (s k0 i) (\lambda (n: nat).((eq T 
12510 v0 v) \to ((eq C (CHead c1 k0 u) (CHead c k t)) \to ((eq C (CHead c0 k0 u) 
12511 c2) \to ((csubst0 i v0 c1 c0) \to (or4 (drop n O c2 e) (ex3_4 F C T T 
12512 (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e 
12513 (CHead e0 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12514 T).(\lambda (w: T).(drop n O c2 (CHead e0 (Flat f) w)))))) (\lambda (_: 
12515 F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
12516 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: 
12517 T).(eq C e (CHead e1 (Flat f) u0)))))) (\lambda (f: F).(\lambda (_: 
12518 C).(\lambda (e2: C).(\lambda (u0: T).(drop n O c2 (CHead e2 (Flat f) u0)))))) 
12519 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
12520 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12521 C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u0))))))) 
12522 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
12523 T).(drop n O c2 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
12524 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
12525 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
12526 (_: T).(csubst0 O v e1 e2))))))))))))) (\lambda (H8: (eq T v0 v)).(eq_ind T v 
12527 (\lambda (t0: T).((eq C (CHead c1 k0 u) (CHead c k t)) \to ((eq C (CHead c0 
12528 k0 u) c2) \to ((csubst0 i t0 c1 c0) \to (or4 (drop (s k0 i) O c2 e) (ex3_4 F 
12529 C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C 
12530 e (CHead e0 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12531 T).(\lambda (w: T).(drop (s k0 i) O c2 (CHead e0 (Flat f) w)))))) (\lambda 
12532 (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 
12533 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12534 C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f) u0)))))) (\lambda (f: 
12535 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s k0 i) O c2 
12536 (CHead e2 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
12537 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: 
12538 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e 
12539 (CHead e1 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12540 C).(\lambda (_: T).(\lambda (w: T).(drop (s k0 i) O c2 (CHead e2 (Flat f) 
12541 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: 
12542 T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
12543 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12544 e2)))))))))))) (\lambda (H9: (eq C (CHead c1 k0 u) (CHead c k t))).(let H10 
12545 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
12546 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead c1 k0 u) 
12547 (CHead c k t) H9) in ((let H11 \def (f_equal C K (\lambda (e0: C).(match e0 
12548 return (\lambda (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) 
12549 \Rightarrow k])) (CHead c1 k0 u) (CHead c k t) H9) in ((let H12 \def (f_equal 
12550 C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with [(CSort _) 
12551 \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k0 u) (CHead c k t) 
12552 H9) in (eq_ind C c (\lambda (c: C).((eq K k0 k) \to ((eq T u t) \to ((eq C 
12553 (CHead c0 k0 u) c2) \to ((csubst0 i v c c0) \to (or4 (drop (s k0 i) O c2 e) 
12554 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: 
12555 T).(eq C e (CHead e0 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: 
12556 C).(\lambda (_: T).(\lambda (w: T).(drop (s k0 i) O c2 (CHead e0 (Flat f) 
12557 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
12558 T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12559 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f) u0)))))) 
12560 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s k0 
12561 i) O c2 (CHead e2 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12562 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
12563 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
12564 C e (CHead e1 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda 
12565 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s k0 i) O c2 (CHead e2 (Flat 
12566 f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: 
12567 T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
12568 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12569 e2))))))))))))) (\lambda (H13: (eq K k0 k)).(eq_ind K k (\lambda (k: K).((eq 
12570 T u t) \to ((eq C (CHead c0 k u) c2) \to ((csubst0 i v c c0) \to (or4 (drop 
12571 (s k i) O c2 e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: 
12572 T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u0)))))) (\lambda (f: 
12573 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O c2 (CHead 
12574 e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda 
12575 (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12576 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f) u0)))))) 
12577 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s k 
12578 i) O c2 (CHead e2 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12579 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
12580 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
12581 C e (CHead e1 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda 
12582 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O c2 (CHead e2 (Flat f) 
12583 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: 
12584 T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
12585 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12586 e2)))))))))))) (\lambda (H14: (eq T u t)).(eq_ind T t (\lambda (t: T).((eq C 
12587 (CHead c0 k t) c2) \to ((csubst0 i v c c0) \to (or4 (drop (s k i) O c2 e) 
12588 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: 
12589 T).(eq C e (CHead e0 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: 
12590 C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O c2 (CHead e0 (Flat f) 
12591 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
12592 T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12593 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f) u0)))))) 
12594 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s k 
12595 i) O c2 (CHead e2 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12596 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
12597 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
12598 C e (CHead e1 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda 
12599 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O c2 (CHead e2 (Flat f) 
12600 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: 
12601 T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
12602 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12603 e2))))))))))) (\lambda (H15: (eq C (CHead c0 k t) c2)).(eq_ind C (CHead c0 k 
12604 t) (\lambda (c2: C).((csubst0 i v c c0) \to (or4 (drop (s k i) O c2 e) (ex3_4 
12605 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq 
12606 C e (CHead e0 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12607 T).(\lambda (w: T).(drop (s k i) O c2 (CHead e0 (Flat f) w)))))) (\lambda (_: 
12608 F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
12609 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: 
12610 T).(eq C e (CHead e1 (Flat f) u0)))))) (\lambda (f: F).(\lambda (_: 
12611 C).(\lambda (e2: C).(\lambda (u0: T).(drop (s k i) O c2 (CHead e2 (Flat f) 
12612 u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12613 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: 
12614 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat 
12615 f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
12616 T).(\lambda (w: T).(drop (s k i) O c2 (CHead e2 (Flat f) w))))))) (\lambda 
12617 (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
12618 T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
12619 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))))) (\lambda 
12620 (H16: (csubst0 i v c c0)).(let H0 \def (eq_ind K k0 (\lambda (k: K).(eq nat 
12621 (s k i) (S n0))) H7 k H13) in (K_ind (\lambda (k: K).((drop (r k n0) O c e) 
12622 \to ((eq nat (s k i) (S n0)) \to (or4 (drop (s k i) O (CHead c0 k t) e) 
12623 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: 
12624 T).(eq C e (CHead e0 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: 
12625 C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O (CHead c0 k t) (CHead e0 
12626 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda 
12627 (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12628 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f) u0)))))) 
12629 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s k 
12630 i) O (CHead c0 k t) (CHead e2 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: 
12631 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
12632 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda 
12633 (_: T).(eq C e (CHead e1 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: 
12634 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O (CHead c0 
12635 k t) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
12636 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: 
12637 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
12638 O v e1 e2))))))))))) (\lambda (b: B).(\lambda (H1: (drop (r (Bind b) n0) O c 
12639 e)).(\lambda (H17: (eq nat (s (Bind b) i) (S n0))).(let H18 \def (f_equal nat 
12640 nat (\lambda (e0: nat).(match e0 return (\lambda (_: nat).nat) with [O 
12641 \Rightarrow i | (S n) \Rightarrow n])) (S i) (S n0) H17) in (let H19 \def 
12642 (eq_ind nat i (\lambda (n: nat).(csubst0 n v c c0)) H16 n0 H18) in (eq_ind_r 
12643 nat n0 (\lambda (n: nat).(or4 (drop (s (Bind b) n) O (CHead c0 (Bind b) t) e) 
12644 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: 
12645 T).(eq C e (CHead e0 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: 
12646 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n) O (CHead c0 (Bind b) 
12647 t) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: 
12648 T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f: 
12649 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat 
12650 f) u0)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
12651 T).(drop (s (Bind b) n) O (CHead c0 (Bind b) t) (CHead e2 (Flat f) u0)))))) 
12652 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
12653 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12654 C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u0))))))) 
12655 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
12656 T).(drop (s (Bind b) n) O (CHead c0 (Bind b) t) (CHead e2 (Flat f) w))))))) 
12657 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
12658 T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
12659 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))))) (let H \def 
12660 (IHn c c0 v H19 e H1) in (or4_ind (drop n0 O c0 e) (ex3_4 F C T T (\lambda 
12661 (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 
12662 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
12663 (w: T).(drop n0 O c0 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: 
12664 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T 
12665 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e 
12666 (CHead e1 (Flat f) u0)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12667 C).(\lambda (u0: T).(drop n0 O c0 (CHead e2 (Flat f) u0)))))) (\lambda (_: 
12668 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
12669 (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
12670 (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u0))))))) (\lambda (f: 
12671 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop n0 
12672 O c0 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
12673 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: 
12674 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
12675 O v e1 e2))))))) (or4 (drop (s (Bind b) n0) O (CHead c0 (Bind b) t) e) (ex3_4 
12676 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq 
12677 C e (CHead e0 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12678 T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e0 
12679 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda 
12680 (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12681 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f) u0)))))) 
12682 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s 
12683 (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 (Flat f) u0)))))) (\lambda (_: 
12684 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
12685 (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
12686 (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u0))))))) (\lambda (f: 
12687 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
12688 (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 (Flat f) w))))))) (\lambda (_: 
12689 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O 
12690 v u0 w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12691 T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda (H20: (drop n0 O c0 
12692 e)).(or4_intro0 (drop (s (Bind b) n0) O (CHead c0 (Bind b) t) e) (ex3_4 F C T 
12693 T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e 
12694 (CHead e0 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
12695 T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e0 
12696 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda 
12697 (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12698 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f) u0)))))) 
12699 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s 
12700 (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 (Flat f) u0)))))) (\lambda (_: 
12701 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
12702 (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
12703 (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u0))))))) (\lambda (f: 
12704 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
12705 (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 (Flat f) w))))))) (\lambda (_: 
12706 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O 
12707 v u0 w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12708 T).(\lambda (_: T).(csubst0 O v e1 e2))))))) (drop_drop (Bind b) n0 c0 e H20 
12709 t))) (\lambda (H20: (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
12710 (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: 
12711 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e0 
12712 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
12713 T).(subst0 O v u w))))))).(ex3_4_ind F C T T (\lambda (f: F).(\lambda (e0: 
12714 C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u0)))))) 
12715 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop n0 O 
12716 c0 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: 
12717 T).(\lambda (w: T).(subst0 O v u0 w))))) (or4 (drop (s (Bind b) n0) O (CHead 
12718 c0 (Bind b) t) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
12719 (u0: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u0)))))) (\lambda (f: 
12720 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O 
12721 (CHead c0 (Bind b) t) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: 
12722 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T 
12723 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e 
12724 (CHead e1 (Flat f) u0)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12725 C).(\lambda (u0: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 
12726 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
12727 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
12728 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 
12729 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
12730 (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead 
12731 e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
12732 (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
12733 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12734 e2)))))))) (\lambda (x0: F).(\lambda (x1: C).(\lambda (x2: T).(\lambda (x3: 
12735 T).(\lambda (H21: (eq C e (CHead x1 (Flat x0) x2))).(\lambda (H22: (drop n0 O 
12736 c0 (CHead x1 (Flat x0) x3))).(\lambda (H23: (subst0 O v x2 x3)).(eq_ind_r C 
12737 (CHead x1 (Flat x0) x2) (\lambda (c: C).(or4 (drop (s (Bind b) n0) O (CHead 
12738 c0 (Bind b) t) c) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
12739 (u0: T).(\lambda (_: T).(eq C c (CHead e0 (Flat f) u0)))))) (\lambda (f: 
12740 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O 
12741 (CHead c0 (Bind b) t) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: 
12742 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T 
12743 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C c 
12744 (CHead e1 (Flat f) u0)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12745 C).(\lambda (u0: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 
12746 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
12747 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
12748 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C c (CHead e1 
12749 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
12750 (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead 
12751 e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
12752 (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
12753 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12754 e2))))))))) (or4_intro1 (drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead 
12755 x1 (Flat x0) x2)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
12756 (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x2) (CHead e0 (Flat f) 
12757 u0)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
12758 T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e0 (Flat f) w)))))) 
12759 (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v 
12760 u0 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12761 C).(\lambda (u0: T).(eq C (CHead x1 (Flat x0) x2) (CHead e1 (Flat f) u0)))))) 
12762 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s 
12763 (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 (Flat f) u0)))))) (\lambda (_: 
12764 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
12765 (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
12766 (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x2) (CHead e1 (Flat f) 
12767 u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
12768 T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 
12769 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
12770 (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
12771 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
12772 (ex3_4_intro F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: 
12773 T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x2) (CHead e0 (Flat f) u0)))))) 
12774 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
12775 (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e0 (Flat f) w)))))) (\lambda (_: 
12776 F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w))))) x0 
12777 x1 x2 x3 (refl_equal C (CHead x1 (Flat x0) x2)) (drop_drop (Bind b) n0 c0 
12778 (CHead x1 (Flat x0) x3) H22 t) H23)) e H21)))))))) H20)) (\lambda (H20: 
12779 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
12780 T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
12781 C).(\lambda (e2: C).(\lambda (u: T).(drop n0 O c0 (CHead e2 (Flat f) u)))))) 
12782 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
12783 v e1 e2))))))).(ex3_4_ind F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda 
12784 (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f) u0)))))) (\lambda (f: 
12785 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop n0 O c0 (CHead e2 
12786 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
12787 (_: T).(csubst0 O v e1 e2))))) (or4 (drop (s (Bind b) n0) O (CHead c0 (Bind 
12788 b) t) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u0: 
12789 T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u0)))))) (\lambda (f: 
12790 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O 
12791 (CHead c0 (Bind b) t) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: 
12792 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T 
12793 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e 
12794 (CHead e1 (Flat f) u0)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12795 C).(\lambda (u0: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 
12796 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
12797 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
12798 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 
12799 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
12800 (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead 
12801 e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
12802 (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
12803 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12804 e2)))))))) (\lambda (x0: F).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: 
12805 T).(\lambda (H21: (eq C e (CHead x1 (Flat x0) x3))).(\lambda (H22: (drop n0 O 
12806 c0 (CHead x2 (Flat x0) x3))).(\lambda (H23: (csubst0 O v x1 x2)).(eq_ind_r C 
12807 (CHead x1 (Flat x0) x3) (\lambda (c: C).(or4 (drop (s (Bind b) n0) O (CHead 
12808 c0 (Bind b) t) c) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
12809 (u0: T).(\lambda (_: T).(eq C c (CHead e0 (Flat f) u0)))))) (\lambda (f: 
12810 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O 
12811 (CHead c0 (Bind b) t) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: 
12812 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T 
12813 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C c 
12814 (CHead e1 (Flat f) u0)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
12815 C).(\lambda (u0: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 
12816 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
12817 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
12818 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C c (CHead e1 
12819 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
12820 (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead 
12821 e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
12822 (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
12823 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
12824 e2))))))))) (or4_intro2 (drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead 
12825 x1 (Flat x0) x3)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
12826 (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x3) (CHead e0 (Flat f) 
12827 u0)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
12828 T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e0 (Flat f) w)))))) 
12829 (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v 
12830 u0 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12831 C).(\lambda (u0: T).(eq C (CHead x1 (Flat x0) x3) (CHead e1 (Flat f) u0)))))) 
12832 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s 
12833 (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 (Flat f) u0)))))) (\lambda (_: 
12834 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
12835 (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
12836 (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x3) (CHead e1 (Flat f) 
12837 u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
12838 T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 
12839 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
12840 (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
12841 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
12842 (ex3_4_intro F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
12843 C).(\lambda (u0: T).(eq C (CHead x1 (Flat x0) x3) (CHead e1 (Flat f) u0)))))) 
12844 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s 
12845 (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 (Flat f) u0)))))) (\lambda (_: 
12846 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2))))) 
12847 x0 x1 x2 x3 (refl_equal C (CHead x1 (Flat x0) x3)) (drop_drop (Bind b) n0 c0 
12848 (CHead x2 (Flat x0) x3) H22 t) H23)) e H21)))))))) H20)) (\lambda (H20: 
12849 (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
12850 (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u))))))) (\lambda (f: 
12851 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop n0 
12852 O c0 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
12853 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: 
12854 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
12855 O v e1 e2)))))))).(ex4_5_ind F C C T T (\lambda (f: F).(\lambda (e1: 
12856 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat 
12857 f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
12858 T).(\lambda (w: T).(drop n0 O c0 (CHead e2 (Flat f) w))))))) (\lambda (_: 
12859 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O 
12860 v u0 w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12861 T).(\lambda (_: T).(csubst0 O v e1 e2)))))) (or4 (drop (s (Bind b) n0) O 
12862 (CHead c0 (Bind b) t) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
12863 C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u0)))))) 
12864 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
12865 (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e0 (Flat f) w)))))) (\lambda (_: 
12866 F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
12867 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: 
12868 T).(eq C e (CHead e1 (Flat f) u0)))))) (\lambda (f: F).(\lambda (_: 
12869 C).(\lambda (e2: C).(\lambda (u0: T).(drop (s (Bind b) n0) O (CHead c0 (Bind 
12870 b) t) (CHead e2 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12871 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
12872 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
12873 C e (CHead e1 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda 
12874 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 
12875 (Bind b) t) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
12876 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
12877 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
12878 (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x0: F).(\lambda (x1: C).(\lambda 
12879 (x2: C).(\lambda (x3: T).(\lambda (x4: T).(\lambda (H21: (eq C e (CHead x1 
12880 (Flat x0) x3))).(\lambda (H22: (drop n0 O c0 (CHead x2 (Flat x0) 
12881 x4))).(\lambda (H23: (subst0 O v x3 x4)).(\lambda (H24: (csubst0 O v x1 
12882 x2)).(eq_ind_r C (CHead x1 (Flat x0) x3) (\lambda (c: C).(or4 (drop (s (Bind 
12883 b) n0) O (CHead c0 (Bind b) t) c) (ex3_4 F C T T (\lambda (f: F).(\lambda 
12884 (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C c (CHead e0 (Flat f) u0)))))) 
12885 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
12886 (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e0 (Flat f) w)))))) (\lambda (_: 
12887 F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
12888 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: 
12889 T).(eq C c (CHead e1 (Flat f) u0)))))) (\lambda (f: F).(\lambda (_: 
12890 C).(\lambda (e2: C).(\lambda (u0: T).(drop (s (Bind b) n0) O (CHead c0 (Bind 
12891 b) t) (CHead e2 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
12892 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
12893 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
12894 C c (CHead e1 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda 
12895 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 
12896 (Bind b) t) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
12897 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
12898 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
12899 (_: T).(csubst0 O v e1 e2))))))))) (or4_intro3 (drop (s (Bind b) n0) O (CHead 
12900 c0 (Bind b) t) (CHead x1 (Flat x0) x3)) (ex3_4 F C T T (\lambda (f: 
12901 F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat 
12902 x0) x3) (CHead e0 (Flat f) u0)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda 
12903 (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead 
12904 e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda 
12905 (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
12906 C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead x1 (Flat x0) x3) (CHead e1 
12907 (Flat f) u0)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
12908 (u0: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) t) (CHead e2 (Flat f) 
12909 u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12910 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: 
12911 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) 
12912 x3) (CHead e1 (Flat f) u0))))))) (\lambda (f: F).(\lambda (_: C).(\lambda 
12913 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 
12914 (Bind b) t) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
12915 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
12916 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
12917 (_: T).(csubst0 O v e1 e2))))))) (ex4_5_intro F C C T T (\lambda (f: 
12918 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C 
12919 (CHead x1 (Flat x0) x3) (CHead e1 (Flat f) u0))))))) (\lambda (f: F).(\lambda 
12920 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) 
12921 O (CHead c0 (Bind b) t) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda 
12922 (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 
12923 w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12924 T).(\lambda (_: T).(csubst0 O v e1 e2)))))) x0 x1 x2 x3 x4 (refl_equal C 
12925 (CHead x1 (Flat x0) x3)) (drop_drop (Bind b) n0 c0 (CHead x2 (Flat x0) x4) 
12926 H22 t) H23 H24)) e H21)))))))))) H20)) H)) i H18)))))) (\lambda (f: 
12927 F).(\lambda (H1: (drop (r (Flat f) n0) O c e)).(\lambda (H17: (eq nat (s 
12928 (Flat f) i) (S n0))).(let H18 \def (f_equal nat nat (\lambda (e0: nat).e0) i 
12929 (S n0) H17) in (let H19 \def (eq_ind nat i (\lambda (n: nat).(csubst0 n v c 
12930 c0)) H16 (S n0) H18) in (eq_ind_r nat (S n0) (\lambda (n: nat).(or4 (drop (s 
12931 (Flat f) n) O (CHead c0 (Flat f) t) e) (ex3_4 F C T T (\lambda (f0: 
12932 F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 (Flat 
12933 f0) u0)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
12934 T).(drop (s (Flat f) n) O (CHead c0 (Flat f) t) (CHead e0 (Flat f0) w)))))) 
12935 (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v 
12936 u0 w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
12937 C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f0) u0)))))) (\lambda (f0: 
12938 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s (Flat f) n) O 
12939 (CHead c0 (Flat f) t) (CHead e2 (Flat f0) u0)))))) (\lambda (_: F).(\lambda 
12940 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
12941 C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: 
12942 T).(\lambda (_: T).(eq C e (CHead e1 (Flat f0) u0))))))) (\lambda (f0: 
12943 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
12944 (Flat f) n) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) w))))))) (\lambda (_: 
12945 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O 
12946 v u0 w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12947 T).(\lambda (_: T).(csubst0 O v e1 e2))))))))) (let H20 \def (H c0 v H19 e 
12948 H1) in (or4_ind (drop (S n0) O c0 e) (ex3_4 F C T T (\lambda (f0: F).(\lambda 
12949 (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f0) u0)))))) 
12950 (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
12951 n0) O c0 (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
12952 (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f0: 
12953 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat 
12954 f0) u0)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
12955 T).(drop (S n0) O c0 (CHead e2 (Flat f0) u0)))))) (\lambda (_: F).(\lambda 
12956 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
12957 C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: 
12958 T).(\lambda (_: T).(eq C e (CHead e1 (Flat f0) u0))))))) (\lambda (f0: 
12959 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S 
12960 n0) O c0 (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: 
12961 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
12962 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
12963 (_: T).(csubst0 O v e1 e2))))))) (or4 (drop (s (Flat f) (S n0)) O (CHead c0 
12964 (Flat f) t) e) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u0: 
12965 T).(\lambda (_: T).(eq C e (CHead e0 (Flat f0) u0)))))) (\lambda (f0: 
12966 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) 
12967 O (CHead c0 (Flat f) t) (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda 
12968 (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T 
12969 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e 
12970 (CHead e1 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
12971 C).(\lambda (u0: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead 
12972 e2 (Flat f0) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
12973 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
12974 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e 
12975 (CHead e1 (Flat f0) u0))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
12976 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
12977 (Flat f) t) (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: 
12978 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
12979 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
12980 (_: T).(csubst0 O v e1 e2)))))))) (\lambda (H21: (drop (S n0) O c0 
12981 e)).(or4_intro0 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) e) (ex3_4 F 
12982 C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq 
12983 C e (CHead e0 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda 
12984 (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) 
12985 (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: 
12986 T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f0: 
12987 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat 
12988 f0) u0)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
12989 T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) 
12990 u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
12991 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: 
12992 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat 
12993 f0) u0))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
12994 T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead 
12995 e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
12996 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: 
12997 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
12998 O v e1 e2))))))) (drop_drop (Flat f) n0 c0 e H21 t))) (\lambda (H21: (ex3_4 F 
12999 C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13000 e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
13001 T).(\lambda (w: T).(drop (S n0) O c0 (CHead e0 (Flat f) w)))))) (\lambda (_: 
13002 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u 
13003 w))))))).(ex3_4_ind F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u0: 
13004 T).(\lambda (_: T).(eq C e (CHead e0 (Flat f0) u0)))))) (\lambda (f0: 
13005 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead 
13006 e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: 
13007 T).(\lambda (w: T).(subst0 O v u0 w))))) (or4 (drop (s (Flat f) (S n0)) O 
13008 (CHead c0 (Flat f) t) e) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
13009 C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f0) u0)))))) 
13010 (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13011 (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e0 (Flat f0) w)))))) (\lambda 
13012 (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 
13013 w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
13014 C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f0) u0)))))) (\lambda (f0: 
13015 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s (Flat f) (S 
13016 n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) u0)))))) (\lambda (_: 
13017 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
13018 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
13019 (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f0) u0))))))) (\lambda (f0: 
13020 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13021 (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) w))))))) 
13022 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
13023 T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13024 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x0: 
13025 F).(\lambda (x1: C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H22: (eq C e 
13026 (CHead x1 (Flat x0) x2))).(\lambda (H23: (drop (S n0) O c0 (CHead x1 (Flat 
13027 x0) x3))).(\lambda (H24: (subst0 O v x2 x3)).(eq_ind_r C (CHead x1 (Flat x0) 
13028 x2) (\lambda (c: C).(or4 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) c) 
13029 (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda 
13030 (_: T).(eq C c (CHead e0 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (e0: 
13031 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13032 (Flat f) t) (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: 
13033 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T 
13034 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C c 
13035 (CHead e1 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13036 C).(\lambda (u0: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead 
13037 e2 (Flat f0) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13038 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
13039 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C c 
13040 (CHead e1 (Flat f0) u0))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13041 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13042 (Flat f) t) (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: 
13043 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
13044 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13045 (_: T).(csubst0 O v e1 e2))))))))) (or4_intro1 (drop (s (Flat f) (S n0)) O 
13046 (CHead c0 (Flat f) t) (CHead x1 (Flat x0) x2)) (ex3_4 F C T T (\lambda (f0: 
13047 F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat 
13048 x0) x2) (CHead e0 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (e0: 
13049 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13050 (Flat f) t) (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: 
13051 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T 
13052 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C 
13053 (CHead x1 (Flat x0) x2) (CHead e1 (Flat f0) u0)))))) (\lambda (f0: 
13054 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s (Flat f) (S 
13055 n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) u0)))))) (\lambda (_: 
13056 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
13057 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
13058 (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x2) (CHead e1 (Flat f0) 
13059 u0))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
13060 T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead 
13061 e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
13062 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: 
13063 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
13064 O v e1 e2))))))) (ex3_4_intro F C T T (\lambda (f0: F).(\lambda (e0: 
13065 C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x2) (CHead e0 
13066 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
13067 (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e0 (Flat f0) 
13068 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
13069 T).(subst0 O v u0 w))))) x0 x1 x2 x3 (refl_equal C (CHead x1 (Flat x0) x2)) 
13070 (drop_drop (Flat f) n0 c0 (CHead x1 (Flat x0) x3) H23 t) H24)) e H22)))))))) 
13071 H21)) (\lambda (H21: (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda 
13072 (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: 
13073 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S n0) O c0 (CHead 
13074 e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13075 C).(\lambda (_: T).(csubst0 O v e1 e2))))))).(ex3_4_ind F C C T (\lambda (f0: 
13076 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat 
13077 f0) u0)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: 
13078 T).(drop (S n0) O c0 (CHead e2 (Flat f0) u0)))))) (\lambda (_: F).(\lambda 
13079 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2))))) (or4 (drop 
13080 (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) e) (ex3_4 F C T T (\lambda (f0: 
13081 F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 (Flat 
13082 f0) u0)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
13083 T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e0 (Flat f0) 
13084 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
13085 T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: 
13086 C).(\lambda (_: C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f0) u0)))))) 
13087 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s 
13088 (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) u0)))))) 
13089 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
13090 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
13091 C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f0) u0))))))) 
13092 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13093 (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) 
13094 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: 
13095 T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
13096 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13097 e2)))))))) (\lambda (x0: F).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: 
13098 T).(\lambda (H22: (eq C e (CHead x1 (Flat x0) x3))).(\lambda (H23: (drop (S 
13099 n0) O c0 (CHead x2 (Flat x0) x3))).(\lambda (H24: (csubst0 O v x1 
13100 x2)).(eq_ind_r C (CHead x1 (Flat x0) x3) (\lambda (c: C).(or4 (drop (s (Flat 
13101 f) (S n0)) O (CHead c0 (Flat f) t) c) (ex3_4 F C T T (\lambda (f0: 
13102 F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C c (CHead e0 (Flat 
13103 f0) u0)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
13104 T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e0 (Flat f0) 
13105 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
13106 T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: 
13107 C).(\lambda (_: C).(\lambda (u0: T).(eq C c (CHead e1 (Flat f0) u0)))))) 
13108 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s 
13109 (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) u0)))))) 
13110 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
13111 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
13112 C).(\lambda (u0: T).(\lambda (_: T).(eq C c (CHead e1 (Flat f0) u0))))))) 
13113 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13114 (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) 
13115 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: 
13116 T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: 
13117 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13118 e2))))))))) (or4_intro2 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) 
13119 (CHead x1 (Flat x0) x3)) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
13120 C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x3) (CHead e0 
13121 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
13122 (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e0 (Flat f0) 
13123 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
13124 T).(subst0 O v u0 w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: 
13125 C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead x1 (Flat x0) x3) (CHead e1 
13126 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
13127 (u0: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) 
13128 u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
13129 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: 
13130 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) 
13131 x3) (CHead e1 (Flat f0) u0))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda 
13132 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13133 (Flat f) t) (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: 
13134 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
13135 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13136 (_: T).(csubst0 O v e1 e2))))))) (ex3_4_intro F C C T (\lambda (f0: 
13137 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead x1 (Flat 
13138 x0) x3) (CHead e1 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (_: 
13139 C).(\lambda (e2: C).(\lambda (u0: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13140 (Flat f) t) (CHead e2 (Flat f0) u0)))))) (\lambda (_: F).(\lambda (e1: 
13141 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2))))) x0 x1 x2 x3 
13142 (refl_equal C (CHead x1 (Flat x0) x3)) (drop_drop (Flat f) n0 c0 (CHead x2 
13143 (Flat x0) x3) H23 t) H24)) e H22)))))))) H21)) (\lambda (H21: (ex4_5 F C C T 
13144 T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda 
13145 (_: T).(eq C e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: 
13146 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead 
13147 e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
13148 (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
13149 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13150 e2)))))))).(ex4_5_ind F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda 
13151 (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f0) u0))))))) 
13152 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13153 (w: T).(drop (S n0) O c0 (CHead e2 (Flat f0) w))))))) (\lambda (_: 
13154 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O 
13155 v u0 w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
13156 T).(\lambda (_: T).(csubst0 O v e1 e2)))))) (or4 (drop (s (Flat f) (S n0)) O 
13157 (CHead c0 (Flat f) t) e) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
13158 C).(\lambda (u0: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f0) u0)))))) 
13159 (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13160 (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e0 (Flat f0) w)))))) (\lambda 
13161 (_: F).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 
13162 w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
13163 C).(\lambda (u0: T).(eq C e (CHead e1 (Flat f0) u0)))))) (\lambda (f0: 
13164 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s (Flat f) (S 
13165 n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) u0)))))) (\lambda (_: 
13166 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
13167 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
13168 (u0: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f0) u0))))))) (\lambda (f0: 
13169 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13170 (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) w))))))) 
13171 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: 
13172 T).(subst0 O v u0 w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13173 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x0: 
13174 F).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: 
13175 T).(\lambda (H22: (eq C e (CHead x1 (Flat x0) x3))).(\lambda (H23: (drop (S 
13176 n0) O c0 (CHead x2 (Flat x0) x4))).(\lambda (H24: (subst0 O v x3 
13177 x4)).(\lambda (H25: (csubst0 O v x1 x2)).(eq_ind_r C (CHead x1 (Flat x0) x3) 
13178 (\lambda (c: C).(or4 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) c) 
13179 (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u0: T).(\lambda 
13180 (_: T).(eq C c (CHead e0 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (e0: 
13181 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13182 (Flat f) t) (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: 
13183 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T 
13184 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C c 
13185 (CHead e1 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13186 C).(\lambda (u0: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead 
13187 e2 (Flat f0) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13188 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
13189 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C c 
13190 (CHead e1 (Flat f0) u0))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13191 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13192 (Flat f) t) (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: 
13193 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
13194 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13195 (_: T).(csubst0 O v e1 e2))))))))) (or4_intro3 (drop (s (Flat f) (S n0)) O 
13196 (CHead c0 (Flat f) t) (CHead x1 (Flat x0) x3)) (ex3_4 F C T T (\lambda (f0: 
13197 F).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat 
13198 x0) x3) (CHead e0 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (e0: 
13199 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13200 (Flat f) t) (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: 
13201 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (ex3_4 F C C T 
13202 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C 
13203 (CHead x1 (Flat x0) x3) (CHead e1 (Flat f0) u0)))))) (\lambda (f0: 
13204 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(drop (s (Flat f) (S 
13205 n0)) O (CHead c0 (Flat f) t) (CHead e2 (Flat f0) u0)))))) (\lambda (_: 
13206 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
13207 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
13208 (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x3) (CHead e1 (Flat f0) 
13209 u0))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
13210 T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) t) (CHead 
13211 e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
13212 C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) (\lambda (_: 
13213 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
13214 O v e1 e2))))))) (ex4_5_intro F C C T T (\lambda (f0: F).(\lambda (e1: 
13215 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) 
13216 x3) (CHead e1 (Flat f0) u0))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda 
13217 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13218 (Flat f) t) (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: 
13219 C).(\lambda (_: C).(\lambda (u0: T).(\lambda (w: T).(subst0 O v u0 w)))))) 
13220 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13221 (_: T).(csubst0 O v e1 e2)))))) x0 x1 x2 x3 x4 (refl_equal C (CHead x1 (Flat 
13222 x0) x3)) (drop_drop (Flat f) n0 c0 (CHead x2 (Flat x0) x4) H23 t) H24 H25)) e 
13223 H22)))))))))) H21)) H20)) i H18)))))) k (drop_gen_drop k c e t n0 H1) H0))) 
13224 c2 H15)) u (sym_eq T u t H14))) k0 (sym_eq K k0 k H13))) c1 (sym_eq C c1 c 
13225 H12))) H11)) H10))) v0 (sym_eq T v0 v H8))) (S n0) H7)) H4 H5 H6 H2))))) | 
13226 (csubst0_both k0 i v0 u1 u2 H2 c1 c0 H3) \Rightarrow (\lambda (H4: (eq nat (s 
13227 k0 i) (S n0))).(\lambda (H5: (eq T v0 v)).(\lambda (H6: (eq C (CHead c1 k0 
13228 u1) (CHead c k t))).(\lambda (H7: (eq C (CHead c0 k0 u2) c2)).((let H8 \def 
13229 (f_equal nat nat (\lambda (e0: nat).e0) (s k0 i) (S n0) H4) in (eq_ind nat (s 
13230 k0 i) (\lambda (n: nat).((eq T v0 v) \to ((eq C (CHead c1 k0 u1) (CHead c k 
13231 t)) \to ((eq C (CHead c0 k0 u2) c2) \to ((subst0 i v0 u1 u2) \to ((csubst0 i 
13232 v0 c1 c0) \to (or4 (drop n O c2 e) (ex3_4 F C T T (\lambda (f: F).(\lambda 
13233 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) 
13234 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop n O c2 
13235 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
13236 T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: 
13237 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat 
13238 f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
13239 T).(drop n O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
13240 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
13241 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
13242 T).(eq C e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: 
13243 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop n O c2 (CHead e2 
13244 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
13245 (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
13246 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13247 e2)))))))))))))) (\lambda (H9: (eq T v0 v)).(eq_ind T v (\lambda (t0: T).((eq 
13248 C (CHead c1 k0 u1) (CHead c k t)) \to ((eq C (CHead c0 k0 u2) c2) \to 
13249 ((subst0 i t0 u1 u2) \to ((csubst0 i t0 c1 c0) \to (or4 (drop (s k0 i) O c2 
13250 e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda 
13251 (_: T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: 
13252 C).(\lambda (_: T).(\lambda (w: T).(drop (s k0 i) O c2 (CHead e0 (Flat f) 
13253 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13254 T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
13255 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) 
13256 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s k0 
13257 i) O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
13258 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
13259 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13260 e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
13261 C).(\lambda (_: T).(\lambda (w: T).(drop (s k0 i) O c2 (CHead e2 (Flat f) 
13262 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
13263 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
13264 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13265 e2))))))))))))) (\lambda (H10: (eq C (CHead c1 k0 u1) (CHead c k t))).(let 
13266 H11 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) 
13267 with [(CSort _) \Rightarrow u1 | (CHead _ _ t) \Rightarrow t])) (CHead c1 k0 
13268 u1) (CHead c k t) H10) in ((let H12 \def (f_equal C K (\lambda (e0: C).(match 
13269 e0 return (\lambda (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) 
13270 \Rightarrow k])) (CHead c1 k0 u1) (CHead c k t) H10) in ((let H13 \def 
13271 (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
13272 [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k0 u1) 
13273 (CHead c k t) H10) in (eq_ind C c (\lambda (c: C).((eq K k0 k) \to ((eq T u1 
13274 t) \to ((eq C (CHead c0 k0 u2) c2) \to ((subst0 i v u1 u2) \to ((csubst0 i v 
13275 c c0) \to (or4 (drop (s k0 i) O c2 e) (ex3_4 F C T T (\lambda (f: F).(\lambda 
13276 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) 
13277 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s k0 
13278 i) O c2 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
13279 (u: T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: 
13280 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat 
13281 f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
13282 T).(drop (s k0 i) O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda 
13283 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
13284 C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
13285 T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u))))))) (\lambda (f: 
13286 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13287 k0 i) O c2 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
13288 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13289 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13290 (_: T).(csubst0 O v e1 e2)))))))))))))) (\lambda (H14: (eq K k0 k)).(eq_ind K 
13291 k (\lambda (k: K).((eq T u1 t) \to ((eq C (CHead c0 k u2) c2) \to ((subst0 i 
13292 v u1 u2) \to ((csubst0 i v c c0) \to (or4 (drop (s k i) O c2 e) (ex3_4 F C T 
13293 T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
13294 (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
13295 T).(\lambda (w: T).(drop (s k i) O c2 (CHead e0 (Flat f) w)))))) (\lambda (_: 
13296 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13297 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
13298 T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
13299 C).(\lambda (e2: C).(\lambda (u: T).(drop (s k i) O c2 (CHead e2 (Flat f) 
13300 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
13301 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: 
13302 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) 
13303 u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
13304 T).(\lambda (w: T).(drop (s k i) O c2 (CHead e2 (Flat f) w))))))) (\lambda 
13305 (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13306 T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13307 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))))))))) (\lambda 
13308 (H15: (eq T u1 t)).(eq_ind T t (\lambda (t: T).((eq C (CHead c0 k u2) c2) \to 
13309 ((subst0 i v t u2) \to ((csubst0 i v c c0) \to (or4 (drop (s k i) O c2 e) 
13310 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
13311 T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: 
13312 C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O c2 (CHead e0 (Flat f) 
13313 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13314 T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
13315 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) 
13316 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s k 
13317 i) O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
13318 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
13319 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13320 e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
13321 C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O c2 (CHead e2 (Flat f) 
13322 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
13323 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
13324 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13325 e2)))))))))))) (\lambda (H16: (eq C (CHead c0 k u2) c2)).(eq_ind C (CHead c0 
13326 k u2) (\lambda (c2: C).((subst0 i v t u2) \to ((csubst0 i v c c0) \to (or4 
13327 (drop (s k i) O c2 e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
13328 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) 
13329 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s k 
13330 i) O c2 (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
13331 (u: T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: 
13332 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat 
13333 f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
13334 T).(drop (s k i) O c2 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda 
13335 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
13336 C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
13337 T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u))))))) (\lambda (f: 
13338 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13339 k i) O c2 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: 
13340 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13341 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13342 (_: T).(csubst0 O v e1 e2))))))))))) (\lambda (H17: (subst0 i v t 
13343 u2)).(\lambda (H18: (csubst0 i v c c0)).(let H0 \def (eq_ind K k0 (\lambda 
13344 (k: K).(eq nat (s k i) (S n0))) H8 k H14) in (K_ind (\lambda (k: K).((drop (r 
13345 k n0) O c e) \to ((eq nat (s k i) (S n0)) \to (or4 (drop (s k i) O (CHead c0 
13346 k u2) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: 
13347 T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: 
13348 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s k i) O (CHead c0 
13349 k u2) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
13350 T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: 
13351 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat 
13352 f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
13353 T).(drop (s k i) O (CHead c0 k u2) (CHead e2 (Flat f) u)))))) (\lambda (_: 
13354 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
13355 (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
13356 (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u))))))) (\lambda (f: 
13357 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13358 k i) O (CHead c0 k u2) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda 
13359 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13360 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13361 (_: T).(csubst0 O v e1 e2))))))))))) (\lambda (b: B).(\lambda (H1: (drop (r 
13362 (Bind b) n0) O c e)).(\lambda (H19: (eq nat (s (Bind b) i) (S n0))).(let H20 
13363 \def (f_equal nat nat (\lambda (e0: nat).(match e0 return (\lambda (_: 
13364 nat).nat) with [O \Rightarrow i | (S n) \Rightarrow n])) (S i) (S n0) H19) in 
13365 (let H21 \def (eq_ind nat i (\lambda (n: nat).(csubst0 n v c c0)) H18 n0 H20) 
13366 in (let H22 \def (eq_ind nat i (\lambda (n: nat).(subst0 n v t u2)) H17 n0 
13367 H20) in (eq_ind_r nat n0 (\lambda (n: nat).(or4 (drop (s (Bind b) n) O (CHead 
13368 c0 (Bind b) u2) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
13369 (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: 
13370 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n) O 
13371 (CHead c0 (Bind b) u2) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda 
13372 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T 
13373 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
13374 (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
13375 C).(\lambda (u: T).(drop (s (Bind b) n) O (CHead c0 (Bind b) u2) (CHead e2 
13376 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
13377 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
13378 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 
13379 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
13380 (_: T).(\lambda (w: T).(drop (s (Bind b) n) O (CHead c0 (Bind b) u2) (CHead 
13381 e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
13382 (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
13383 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13384 e2))))))))) (let H \def (IHn c c0 v H21 e H1) in (or4_ind (drop n0 O c0 e) 
13385 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
13386 T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: 
13387 C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e0 (Flat f) w)))))) 
13388 (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u 
13389 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
13390 C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: 
13391 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop n0 O c0 (CHead e2 
13392 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
13393 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
13394 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 
13395 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
13396 (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e2 (Flat f) w))))))) (\lambda (_: 
13397 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
13398 v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
13399 T).(\lambda (_: T).(csubst0 O v e1 e2))))))) (or4 (drop (s (Bind b) n0) O 
13400 (CHead c0 (Bind b) u2) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
13401 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) 
13402 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13403 (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e0 (Flat f) w)))))) (\lambda (_: 
13404 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13405 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
13406 T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
13407 C).(\lambda (e2: C).(\lambda (u: T).(drop (s (Bind b) n0) O (CHead c0 (Bind 
13408 b) u2) (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
13409 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
13410 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13411 e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
13412 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) 
13413 u2) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
13414 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: 
13415 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
13416 O v e1 e2)))))))) (\lambda (H23: (drop n0 O c0 e)).(or4_intro0 (drop (s (Bind 
13417 b) n0) O (CHead c0 (Bind b) u2) e) (ex3_4 F C T T (\lambda (f: F).(\lambda 
13418 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) 
13419 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13420 (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e0 (Flat f) w)))))) (\lambda (_: 
13421 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13422 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
13423 T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
13424 C).(\lambda (e2: C).(\lambda (u: T).(drop (s (Bind b) n0) O (CHead c0 (Bind 
13425 b) u2) (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
13426 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
13427 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13428 e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
13429 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) 
13430 u2) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
13431 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: 
13432 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
13433 O v e1 e2))))))) (drop_drop (Bind b) n0 c0 e H23 u2))) (\lambda (H23: (ex3_4 
13434 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq 
13435 C e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
13436 T).(\lambda (w: T).(drop n0 O c0 (CHead e0 (Flat f) w)))))) (\lambda (_: 
13437 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u 
13438 w))))))).(ex3_4_ind F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: 
13439 T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: 
13440 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e0 
13441 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13442 T).(subst0 O v u w))))) (or4 (drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) 
13443 e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda 
13444 (_: T).(eq C e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: 
13445 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) 
13446 u2) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
13447 T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: 
13448 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat 
13449 f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
13450 T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) u)))))) 
13451 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
13452 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
13453 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u))))))) 
13454 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
13455 T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) w))))))) 
13456 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13457 T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13458 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x0: 
13459 F).(\lambda (x1: C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H24: (eq C e 
13460 (CHead x1 (Flat x0) x2))).(\lambda (H25: (drop n0 O c0 (CHead x1 (Flat x0) 
13461 x3))).(\lambda (H26: (subst0 O v x2 x3)).(eq_ind_r C (CHead x1 (Flat x0) x2) 
13462 (\lambda (c: C).(or4 (drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) c) (ex3_4 
13463 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq 
13464 C c (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
13465 T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e0 
13466 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13467 T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
13468 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 (Flat f) u)))))) 
13469 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s 
13470 (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) u)))))) (\lambda (_: 
13471 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
13472 (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
13473 (u: T).(\lambda (_: T).(eq C c (CHead e1 (Flat f) u))))))) (\lambda (f: 
13474 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13475 (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) w))))))) (\lambda 
13476 (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13477 T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13478 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))))) (or4_intro1 
13479 (drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead x1 (Flat x0) x2)) 
13480 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
13481 T).(eq C (CHead x1 (Flat x0) x2) (CHead e0 (Flat f) u)))))) (\lambda (f: 
13482 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O 
13483 (CHead c0 (Bind b) u2) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda 
13484 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T 
13485 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead 
13486 x1 (Flat x0) x2) (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
13487 C).(\lambda (e2: C).(\lambda (u: T).(drop (s (Bind b) n0) O (CHead c0 (Bind 
13488 b) u2) (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
13489 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
13490 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13491 (CHead x1 (Flat x0) x2) (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda 
13492 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) 
13493 O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda 
13494 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13495 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13496 (_: T).(csubst0 O v e1 e2))))))) (ex3_4_intro F C T T (\lambda (f: 
13497 F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) 
13498 x2) (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
13499 T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e0 
13500 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13501 T).(subst0 O v u w))))) x0 x1 x2 x3 (refl_equal C (CHead x1 (Flat x0) x2)) 
13502 (drop_drop (Bind b) n0 c0 (CHead x1 (Flat x0) x3) H25 u2) H26)) e H24)))))))) 
13503 H23)) (\lambda (H23: (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda 
13504 (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: 
13505 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop n0 O c0 (CHead e2 
13506 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
13507 (_: T).(csubst0 O v e1 e2))))))).(ex3_4_ind F C C T (\lambda (f: F).(\lambda 
13508 (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) 
13509 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop n0 O 
13510 c0 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13511 C).(\lambda (_: T).(csubst0 O v e1 e2))))) (or4 (drop (s (Bind b) n0) O 
13512 (CHead c0 (Bind b) u2) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
13513 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f) u)))))) 
13514 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13515 (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e0 (Flat f) w)))))) (\lambda (_: 
13516 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13517 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
13518 T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
13519 C).(\lambda (e2: C).(\lambda (u: T).(drop (s (Bind b) n0) O (CHead c0 (Bind 
13520 b) u2) (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
13521 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
13522 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13523 e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
13524 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) 
13525 u2) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
13526 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: 
13527 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
13528 O v e1 e2)))))))) (\lambda (x0: F).(\lambda (x1: C).(\lambda (x2: C).(\lambda 
13529 (x3: T).(\lambda (H24: (eq C e (CHead x1 (Flat x0) x3))).(\lambda (H25: (drop 
13530 n0 O c0 (CHead x2 (Flat x0) x3))).(\lambda (H26: (csubst0 O v x1 
13531 x2)).(eq_ind_r C (CHead x1 (Flat x0) x3) (\lambda (c: C).(or4 (drop (s (Bind 
13532 b) n0) O (CHead c0 (Bind b) u2) c) (ex3_4 F C T T (\lambda (f: F).(\lambda 
13533 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 (Flat f) u)))))) 
13534 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13535 (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e0 (Flat f) w)))))) (\lambda (_: 
13536 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13537 (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
13538 T).(eq C c (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
13539 C).(\lambda (e2: C).(\lambda (u: T).(drop (s (Bind b) n0) O (CHead c0 (Bind 
13540 b) u2) (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
13541 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
13542 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13543 c (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
13544 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) 
13545 u2) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
13546 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: 
13547 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
13548 O v e1 e2))))))))) (or4_intro2 (drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) 
13549 (CHead x1 (Flat x0) x3)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
13550 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x3) (CHead e0 
13551 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
13552 (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e0 (Flat f) 
13553 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13554 T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
13555 C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead x1 (Flat x0) x3) (CHead e1 
13556 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
13557 (u: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) 
13558 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
13559 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: 
13560 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) 
13561 x3) (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
13562 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) 
13563 u2) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
13564 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: 
13565 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
13566 O v e1 e2))))))) (ex3_4_intro F C C T (\lambda (f: F).(\lambda (e1: 
13567 C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead x1 (Flat x0) x3) (CHead e1 
13568 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
13569 (u: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) 
13570 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
13571 T).(csubst0 O v e1 e2))))) x0 x1 x2 x3 (refl_equal C (CHead x1 (Flat x0) x3)) 
13572 (drop_drop (Bind b) n0 c0 (CHead x2 (Flat x0) x3) H25 u2) H26)) e H24)))))))) 
13573 H23)) (\lambda (H23: (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: 
13574 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) 
13575 u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
13576 T).(\lambda (w: T).(drop n0 O c0 (CHead e2 (Flat f) w))))))) (\lambda (_: 
13577 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
13578 v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
13579 T).(\lambda (_: T).(csubst0 O v e1 e2)))))))).(ex4_5_ind F C C T T (\lambda 
13580 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13581 e (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
13582 C).(\lambda (_: T).(\lambda (w: T).(drop n0 O c0 (CHead e2 (Flat f) w))))))) 
13583 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13584 T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13585 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))) (or4 (drop (s 
13586 (Bind b) n0) O (CHead c0 (Bind b) u2) e) (ex3_4 F C T T (\lambda (f: 
13587 F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat 
13588 f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
13589 T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e0 (Flat f) w)))))) 
13590 (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u 
13591 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
13592 C).(\lambda (u: T).(eq C e (CHead e1 (Flat f) u)))))) (\lambda (f: 
13593 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s (Bind b) n0) O 
13594 (CHead c0 (Bind b) u2) (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda 
13595 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
13596 C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
13597 T).(\lambda (_: T).(eq C e (CHead e1 (Flat f) u))))))) (\lambda (f: 
13598 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13599 (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) w))))))) (\lambda 
13600 (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13601 T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13602 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x0: 
13603 F).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: 
13604 T).(\lambda (H24: (eq C e (CHead x1 (Flat x0) x3))).(\lambda (H25: (drop n0 O 
13605 c0 (CHead x2 (Flat x0) x4))).(\lambda (H26: (subst0 O v x3 x4)).(\lambda 
13606 (H27: (csubst0 O v x1 x2)).(eq_ind_r C (CHead x1 (Flat x0) x3) (\lambda (c: 
13607 C).(or4 (drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) c) (ex3_4 F C T T 
13608 (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c 
13609 (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
13610 T).(\lambda (w: T).(drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e0 
13611 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13612 T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: 
13613 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 (Flat f) u)))))) 
13614 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s 
13615 (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) u)))))) (\lambda (_: 
13616 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
13617 (ex4_5 F C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
13618 (u: T).(\lambda (_: T).(eq C c (CHead e1 (Flat f) u))))))) (\lambda (f: 
13619 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13620 (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) w))))))) (\lambda 
13621 (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13622 T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13623 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))))) (or4_intro3 
13624 (drop (s (Bind b) n0) O (CHead c0 (Bind b) u2) (CHead x1 (Flat x0) x3)) 
13625 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
13626 T).(eq C (CHead x1 (Flat x0) x3) (CHead e0 (Flat f) u)))))) (\lambda (f: 
13627 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) O 
13628 (CHead c0 (Bind b) u2) (CHead e0 (Flat f) w)))))) (\lambda (_: F).(\lambda 
13629 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T 
13630 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead 
13631 x1 (Flat x0) x3) (CHead e1 (Flat f) u)))))) (\lambda (f: F).(\lambda (_: 
13632 C).(\lambda (e2: C).(\lambda (u: T).(drop (s (Bind b) n0) O (CHead c0 (Bind 
13633 b) u2) (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
13634 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
13635 (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13636 (CHead x1 (Flat x0) x3) (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda 
13637 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) 
13638 O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda 
13639 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13640 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13641 (_: T).(csubst0 O v e1 e2))))))) (ex4_5_intro F C C T T (\lambda (f: 
13642 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13643 (CHead x1 (Flat x0) x3) (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda 
13644 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Bind b) n0) 
13645 O (CHead c0 (Bind b) u2) (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda 
13646 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13647 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13648 (_: T).(csubst0 O v e1 e2)))))) x0 x1 x2 x3 x4 (refl_equal C (CHead x1 (Flat 
13649 x0) x3)) (drop_drop (Bind b) n0 c0 (CHead x2 (Flat x0) x4) H25 u2) H26 H27)) 
13650 e H24)))))))))) H23)) H)) i H20))))))) (\lambda (f: F).(\lambda (H1: (drop (r 
13651 (Flat f) n0) O c e)).(\lambda (H19: (eq nat (s (Flat f) i) (S n0))).(let H20 
13652 \def (f_equal nat nat (\lambda (e0: nat).e0) i (S n0) H19) in (let H21 \def 
13653 (eq_ind nat i (\lambda (n: nat).(csubst0 n v c c0)) H18 (S n0) H20) in (let 
13654 H22 \def (eq_ind nat i (\lambda (n: nat).(subst0 n v t u2)) H17 (S n0) H20) 
13655 in (eq_ind_r nat (S n0) (\lambda (n: nat).(or4 (drop (s (Flat f) n) O (CHead 
13656 c0 (Flat f) u2) e) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda 
13657 (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f0) u)))))) (\lambda (f0: 
13658 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) n) O 
13659 (CHead c0 (Flat f) u2) (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda 
13660 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T 
13661 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
13662 (CHead e1 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13663 C).(\lambda (u: T).(drop (s (Flat f) n) O (CHead c0 (Flat f) u2) (CHead e2 
13664 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
13665 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda 
13666 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 
13667 (Flat f0) u))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
13668 (_: T).(\lambda (w: T).(drop (s (Flat f) n) O (CHead c0 (Flat f) u2) (CHead 
13669 e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
13670 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: 
13671 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
13672 O v e1 e2))))))))) (let H23 \def (H c0 v H21 e H1) in (or4_ind (drop (S n0) O 
13673 c0 e) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u: 
13674 T).(\lambda (_: T).(eq C e (CHead e0 (Flat f0) u)))))) (\lambda (f0: 
13675 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead 
13676 e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda 
13677 (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: 
13678 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f0) u)))))) 
13679 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (S 
13680 n0) O c0 (CHead e2 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: 
13681 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
13682 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda 
13683 (_: T).(eq C e (CHead e1 (Flat f0) u))))))) (\lambda (f0: F).(\lambda (_: 
13684 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead 
13685 e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
13686 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: 
13687 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
13688 O v e1 e2))))))) (or4 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) e) 
13689 (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
13690 T).(eq C e (CHead e0 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e0: 
13691 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13692 (Flat f) u2) (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: 
13693 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T 
13694 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
13695 (CHead e1 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13696 C).(\lambda (u: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead 
13697 e2 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13698 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
13699 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
13700 (CHead e1 (Flat f0) u))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13701 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13702 (Flat f) u2) (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: 
13703 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13704 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13705 (_: T).(csubst0 O v e1 e2)))))))) (\lambda (H24: (drop (S n0) O c0 
13706 e)).(or4_intro0 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) e) (ex3_4 
13707 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq 
13708 C e (CHead e0 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda 
13709 (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) 
13710 (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
13711 T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f0: 
13712 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat 
13713 f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
13714 T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) 
13715 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
13716 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: 
13717 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat 
13718 f0) u))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
13719 T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead 
13720 e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
13721 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: 
13722 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
13723 O v e1 e2))))))) (drop_drop (Flat f) n0 c0 e H24 u2))) (\lambda (H24: (ex3_4 
13724 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq 
13725 C e (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
13726 T).(\lambda (w: T).(drop (S n0) O c0 (CHead e0 (Flat f) w)))))) (\lambda (_: 
13727 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u 
13728 w))))))).(ex3_4_ind F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u: 
13729 T).(\lambda (_: T).(eq C e (CHead e0 (Flat f0) u)))))) (\lambda (f0: 
13730 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead 
13731 e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda 
13732 (w: T).(subst0 O v u w))))) (or4 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat 
13733 f) u2) e) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u: 
13734 T).(\lambda (_: T).(eq C e (CHead e0 (Flat f0) u)))))) (\lambda (f0: 
13735 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) 
13736 O (CHead c0 (Flat f) u2) (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda 
13737 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T 
13738 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
13739 (CHead e1 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13740 C).(\lambda (u: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead 
13741 e2 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13742 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
13743 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
13744 (CHead e1 (Flat f0) u))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13745 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13746 (Flat f) u2) (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: 
13747 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13748 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13749 (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x0: F).(\lambda (x1: C).(\lambda 
13750 (x2: T).(\lambda (x3: T).(\lambda (H25: (eq C e (CHead x1 (Flat x0) 
13751 x2))).(\lambda (H26: (drop (S n0) O c0 (CHead x1 (Flat x0) x3))).(\lambda 
13752 (H27: (subst0 O v x2 x3)).(eq_ind_r C (CHead x1 (Flat x0) x2) (\lambda (c: 
13753 C).(or4 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) c) (ex3_4 F C T T 
13754 (\lambda (f0: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c 
13755 (CHead e0 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: 
13756 T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead 
13757 e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda 
13758 (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: 
13759 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 (Flat f0) u)))))) 
13760 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s 
13761 (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) u)))))) 
13762 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
13763 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
13764 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 (Flat f0) u))))))) 
13765 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13766 (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) 
13767 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
13768 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
13769 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13770 e2))))))))) (or4_intro1 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) 
13771 (CHead x1 (Flat x0) x2)) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
13772 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x2) (CHead e0 
13773 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
13774 (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e0 (Flat f0) 
13775 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13776 T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: 
13777 C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead x1 (Flat x0) x2) (CHead e1 
13778 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
13779 (u: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) 
13780 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
13781 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: 
13782 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) 
13783 x2) (CHead e1 (Flat f0) u))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda 
13784 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13785 (Flat f) u2) (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: 
13786 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13787 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13788 (_: T).(csubst0 O v e1 e2))))))) (ex3_4_intro F C T T (\lambda (f0: 
13789 F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) 
13790 x2) (CHead e0 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda 
13791 (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) 
13792 (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
13793 T).(\lambda (w: T).(subst0 O v u w))))) x0 x1 x2 x3 (refl_equal C (CHead x1 
13794 (Flat x0) x2)) (drop_drop (Flat f) n0 c0 (CHead x1 (Flat x0) x3) H26 u2) 
13795 H27)) e H25)))))))) H24)) (\lambda (H24: (ex3_4 F C C T (\lambda (f: 
13796 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat 
13797 f) u)))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
13798 T).(drop (S n0) O c0 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
13799 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2))))))).(ex3_4_ind F C 
13800 C T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
13801 (CHead e1 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13802 C).(\lambda (u: T).(drop (S n0) O c0 (CHead e2 (Flat f0) u)))))) (\lambda (_: 
13803 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2))))) 
13804 (or4 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) e) (ex3_4 F C T T 
13805 (\lambda (f0: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
13806 (CHead e0 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: 
13807 T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead 
13808 e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda 
13809 (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: 
13810 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Flat f0) u)))))) 
13811 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s 
13812 (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) u)))))) 
13813 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
13814 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
13815 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f0) u))))))) 
13816 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13817 (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) 
13818 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
13819 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
13820 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13821 e2)))))))) (\lambda (x0: F).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: 
13822 T).(\lambda (H25: (eq C e (CHead x1 (Flat x0) x3))).(\lambda (H26: (drop (S 
13823 n0) O c0 (CHead x2 (Flat x0) x3))).(\lambda (H27: (csubst0 O v x1 
13824 x2)).(eq_ind_r C (CHead x1 (Flat x0) x3) (\lambda (c: C).(or4 (drop (s (Flat 
13825 f) (S n0)) O (CHead c0 (Flat f) u2) c) (ex3_4 F C T T (\lambda (f0: 
13826 F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 (Flat 
13827 f0) u)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
13828 T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e0 (Flat f0) 
13829 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13830 T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: 
13831 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 (Flat f0) u)))))) 
13832 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s 
13833 (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) u)))))) 
13834 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
13835 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
13836 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 (Flat f0) u))))))) 
13837 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13838 (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) 
13839 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
13840 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
13841 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13842 e2))))))))) (or4_intro2 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) 
13843 (CHead x1 (Flat x0) x3)) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
13844 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x3) (CHead e0 
13845 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
13846 (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e0 (Flat f0) 
13847 w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13848 T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: 
13849 C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead x1 (Flat x0) x3) (CHead e1 
13850 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
13851 (u: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) 
13852 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
13853 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (e1: 
13854 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) 
13855 x3) (CHead e1 (Flat f0) u))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda 
13856 (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13857 (Flat f) u2) (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: 
13858 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13859 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13860 (_: T).(csubst0 O v e1 e2))))))) (ex3_4_intro F C C T (\lambda (f0: 
13861 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead x1 (Flat x0) 
13862 x3) (CHead e1 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda 
13863 (e2: C).(\lambda (u: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) 
13864 (CHead e2 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13865 C).(\lambda (_: T).(csubst0 O v e1 e2))))) x0 x1 x2 x3 (refl_equal C (CHead 
13866 x1 (Flat x0) x3)) (drop_drop (Flat f) n0 c0 (CHead x2 (Flat x0) x3) H26 u2) 
13867 H27)) e H25)))))))) H24)) (\lambda (H24: (ex4_5 F C C T T (\lambda (f: 
13868 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
13869 (CHead e1 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
13870 C).(\lambda (_: T).(\lambda (w: T).(drop (S n0) O c0 (CHead e2 (Flat f) 
13871 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
13872 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
13873 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13874 e2)))))))).(ex4_5_ind F C C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda 
13875 (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Flat f0) u))))))) 
13876 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13877 (w: T).(drop (S n0) O c0 (CHead e2 (Flat f0) w))))))) (\lambda (_: 
13878 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
13879 v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
13880 T).(\lambda (_: T).(csubst0 O v e1 e2)))))) (or4 (drop (s (Flat f) (S n0)) O 
13881 (CHead c0 (Flat f) u2) e) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
13882 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Flat f0) u)))))) 
13883 (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13884 (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e0 (Flat f0) w)))))) 
13885 (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u 
13886 w)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
13887 C).(\lambda (u: T).(eq C e (CHead e1 (Flat f0) u)))))) (\lambda (f0: 
13888 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop (s (Flat f) (S n0)) 
13889 O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) u)))))) (\lambda (_: F).(\lambda 
13890 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
13891 C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
13892 T).(\lambda (_: T).(eq C e (CHead e1 (Flat f0) u))))))) (\lambda (f0: 
13893 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13894 (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) w))))))) 
13895 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13896 T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13897 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x0: 
13898 F).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: 
13899 T).(\lambda (H25: (eq C e (CHead x1 (Flat x0) x3))).(\lambda (H26: (drop (S 
13900 n0) O c0 (CHead x2 (Flat x0) x4))).(\lambda (H27: (subst0 O v x3 
13901 x4)).(\lambda (H28: (csubst0 O v x1 x2)).(eq_ind_r C (CHead x1 (Flat x0) x3) 
13902 (\lambda (c: C).(or4 (drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) c) 
13903 (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
13904 T).(eq C c (CHead e0 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e0: 
13905 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13906 (Flat f) u2) (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: 
13907 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T 
13908 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c 
13909 (CHead e1 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13910 C).(\lambda (u: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead 
13911 e2 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13912 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
13913 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C c 
13914 (CHead e1 (Flat f0) u))))))) (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
13915 C).(\lambda (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 
13916 (Flat f) u2) (CHead e2 (Flat f0) w))))))) (\lambda (_: F).(\lambda (_: 
13917 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) 
13918 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13919 (_: T).(csubst0 O v e1 e2))))))))) (or4_intro3 (drop (s (Flat f) (S n0)) O 
13920 (CHead c0 (Flat f) u2) (CHead x1 (Flat x0) x3)) (ex3_4 F C T T (\lambda (f0: 
13921 F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) 
13922 x3) (CHead e0 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda 
13923 (_: T).(\lambda (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) 
13924 (CHead e0 (Flat f0) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: 
13925 T).(\lambda (w: T).(subst0 O v u w)))))) (ex3_4 F C C T (\lambda (f0: 
13926 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead x1 (Flat x0) 
13927 x3) (CHead e1 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (_: C).(\lambda 
13928 (e2: C).(\lambda (u: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) 
13929 (CHead e2 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13930 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
13931 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
13932 (CHead x1 (Flat x0) x3) (CHead e1 (Flat f0) u))))))) (\lambda (f0: 
13933 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop (s 
13934 (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) w))))))) 
13935 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
13936 T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
13937 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) (ex4_5_intro F C 
13938 C T T (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
13939 T).(\lambda (_: T).(eq C (CHead x1 (Flat x0) x3) (CHead e1 (Flat f0) u))))))) 
13940 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13941 (w: T).(drop (s (Flat f) (S n0)) O (CHead c0 (Flat f) u2) (CHead e2 (Flat f0) 
13942 w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: 
13943 T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: F).(\lambda (e1: 
13944 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
13945 x0 x1 x2 x3 x4 (refl_equal C (CHead x1 (Flat x0) x3)) (drop_drop (Flat f) n0 
13946 c0 (CHead x2 (Flat x0) x4) H26 u2) H27 H28)) e H25)))))))))) H24)) H23)) i 
13947 H20))))))) k (drop_gen_drop k c e t n0 H1) H0)))) c2 H16)) u1 (sym_eq T u1 t 
13948 H15))) k0 (sym_eq K k0 k H14))) c1 (sym_eq C c1 c H13))) H12)) H11))) v0 
13949 (sym_eq T v0 v H9))) (S n0) H8)) H5 H6 H7 H2 H3)))))]) in (H2 (refl_equal nat 
13950 (S n0)) (refl_equal T v) (refl_equal C (CHead c k t)) (refl_equal C 
13951 c2)))))))))))) c1)))) n).
13952
13953 theorem csubst0_drop_eq_back:
13954  \forall (n: nat).(\forall (c1: C).(\forall (c2: C).(\forall (v: T).((csubst0 
13955 n v c1 c2) \to (\forall (e: C).((drop n O c2 e) \to (or4 (drop n O c1 e) 
13956 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: 
13957 T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
13958 C).(\lambda (u1: T).(\lambda (_: T).(drop n O c1 (CHead e0 (Flat f) u1)))))) 
13959 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v 
13960 u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
13961 C).(\lambda (u: T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: 
13962 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop n O c1 (CHead e1 
13963 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
13964 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: 
13965 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat 
13966 f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
13967 T).(\lambda (_: T).(drop n O c1 (CHead e1 (Flat f) u1))))))) (\lambda (_: 
13968 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
13969 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
13970 (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))))))))))
13971 \def
13972  \lambda (n: nat).(nat_ind (\lambda (n0: nat).(\forall (c1: C).(\forall (c2: 
13973 C).(\forall (v: T).((csubst0 n0 v c1 c2) \to (\forall (e: C).((drop n0 O c2 
13974 e) \to (or4 (drop n0 O c1 e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
13975 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f) u2)))))) 
13976 (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop n0 O 
13977 c1 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
13978 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
13979 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
13980 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
13981 T).(drop n0 O c1 (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
13982 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
13983 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
13984 (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
13985 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop n0 O c1 (CHead e1 
13986 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
13987 (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda 
13988 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
13989 e2))))))))))))))) (\lambda (c1: C).(\lambda (c2: C).(\lambda (v: T).(\lambda 
13990 (H: (csubst0 O v c1 c2)).(\lambda (e: C).(\lambda (H0: (drop O O c2 
13991 e)).(eq_ind C c2 (\lambda (c: C).(or4 (drop O O c1 c) (ex3_4 F C T T (\lambda 
13992 (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c (CHead e0 
13993 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda 
13994 (_: T).(drop O O c1 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: 
13995 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T 
13996 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C c 
13997 (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
13998 C).(\lambda (u: T).(drop O O c1 (CHead e1 (Flat f) u)))))) (\lambda (_: 
13999 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
14000 (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
14001 (_: T).(\lambda (u2: T).(eq C c (CHead e2 (Flat f) u2))))))) (\lambda (f: 
14002 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop O 
14003 O c1 (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
14004 (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
14005 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
14006 O v e1 e2))))))))) (insert_eq nat O (\lambda (n0: nat).(csubst0 n0 v c1 c2)) 
14007 (or4 (drop O O c1 c2) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
14008 C).(\lambda (_: T).(\lambda (u2: T).(eq C c2 (CHead e0 (Flat f) u2)))))) 
14009 (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop O O 
14010 c1 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
14011 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
14012 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C c2 (CHead e2 (Flat 
14013 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
14014 T).(drop O O c1 (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
14015 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
14016 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14017 (u2: T).(eq C c2 (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
14018 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop O O c1 (CHead e1 
14019 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
14020 (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda 
14021 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
14022 e2)))))))) (\lambda (y: nat).(\lambda (H1: (csubst0 y v c1 c2)).(csubst0_ind 
14023 (\lambda (n0: nat).(\lambda (t: T).(\lambda (c: C).(\lambda (c0: C).((eq nat 
14024 n0 O) \to (or4 (drop O O c c0) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
14025 C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 (CHead e0 (Flat f) u2)))))) 
14026 (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop O O c 
14027 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
14028 T).(\lambda (u2: T).(subst0 O t u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
14029 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C c0 (CHead e2 (Flat 
14030 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
14031 T).(drop O O c (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
14032 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O t e1 e2)))))) (ex4_5 F C C T T 
14033 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14034 (u2: T).(eq C c0 (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
14035 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop O O c (CHead e1 
14036 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
14037 (u1: T).(\lambda (u2: T).(subst0 O t u1 u2)))))) (\lambda (_: F).(\lambda 
14038 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O t e1 
14039 e2))))))))))))) (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: 
14040 nat).(\forall (v0: T).(\forall (u1: T).(\forall (u2: T).((subst0 i v0 u1 u2) 
14041 \to (\forall (c: C).((eq nat (s k0 i) O) \to (or4 (drop O O (CHead c k0 u1) 
14042 (CHead c k0 u2)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
14043 T).(\lambda (u4: T).(eq C (CHead c k0 u2) (CHead e0 (Flat f) u4)))))) 
14044 (\lambda (f: F).(\lambda (e0: C).(\lambda (u3: T).(\lambda (_: T).(drop O O 
14045 (CHead c k0 u1) (CHead e0 (Flat f) u3)))))) (\lambda (_: F).(\lambda (_: 
14046 C).(\lambda (u3: T).(\lambda (u4: T).(subst0 O v0 u3 u4)))))) (ex3_4 F C C T 
14047 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C (CHead 
14048 c k0 u2) (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda 
14049 (_: C).(\lambda (u: T).(drop O O (CHead c k0 u1) (CHead e1 (Flat f) u)))))) 
14050 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
14051 v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14052 C).(\lambda (_: T).(\lambda (u4: T).(eq C (CHead c k0 u2) (CHead e2 (Flat f) 
14053 u4))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u3: 
14054 T).(\lambda (_: T).(drop O O (CHead c k0 u1) (CHead e1 (Flat f) u3))))))) 
14055 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u3: T).(\lambda 
14056 (u4: T).(subst0 O v0 u3 u4)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
14057 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 e2)))))))))))))))) 
14058 (\lambda (b: B).(\lambda (i: nat).(\lambda (v0: T).(\lambda (u1: T).(\lambda 
14059 (u2: T).(\lambda (_: (subst0 i v0 u1 u2)).(\lambda (c: C).(\lambda (H3: (eq 
14060 nat (S i) O)).(let H4 \def (eq_ind nat (S i) (\lambda (ee: nat).(match ee 
14061 return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow 
14062 True])) I O H3) in (False_ind (or4 (drop O O (CHead c (Bind b) u1) (CHead c 
14063 (Bind b) u2)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
14064 T).(\lambda (u4: T).(eq C (CHead c (Bind b) u2) (CHead e0 (Flat f) u4)))))) 
14065 (\lambda (f: F).(\lambda (e0: C).(\lambda (u3: T).(\lambda (_: T).(drop O O 
14066 (CHead c (Bind b) u1) (CHead e0 (Flat f) u3)))))) (\lambda (_: F).(\lambda 
14067 (_: C).(\lambda (u3: T).(\lambda (u4: T).(subst0 O v0 u3 u4)))))) (ex3_4 F C 
14068 C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C 
14069 (CHead c (Bind b) u2) (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda 
14070 (e1: C).(\lambda (_: C).(\lambda (u: T).(drop O O (CHead c (Bind b) u1) 
14071 (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
14072 C).(\lambda (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: 
14073 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u4: T).(eq C 
14074 (CHead c (Bind b) u2) (CHead e2 (Flat f) u4))))))) (\lambda (f: F).(\lambda 
14075 (e1: C).(\lambda (_: C).(\lambda (u3: T).(\lambda (_: T).(drop O O (CHead c 
14076 (Bind b) u1) (CHead e1 (Flat f) u3))))))) (\lambda (_: F).(\lambda (_: 
14077 C).(\lambda (_: C).(\lambda (u3: T).(\lambda (u4: T).(subst0 O v0 u3 u4)))))) 
14078 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14079 (_: T).(csubst0 O v0 e1 e2)))))))) H4)))))))))) (\lambda (f: F).(\lambda (i: 
14080 nat).(\lambda (v0: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H2: (subst0 
14081 i v0 u1 u2)).(\lambda (c: C).(\lambda (H3: (eq nat i O)).(let H4 \def (eq_ind 
14082 nat i (\lambda (n: nat).(subst0 n v0 u1 u2)) H2 O H3) in (or4_intro1 (drop O 
14083 O (CHead c (Flat f) u1) (CHead c (Flat f) u2)) (ex3_4 F C T T (\lambda (f0: 
14084 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u4: T).(eq C (CHead c (Flat f) 
14085 u2) (CHead e0 (Flat f0) u4)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda 
14086 (u3: T).(\lambda (_: T).(drop O O (CHead c (Flat f) u1) (CHead e0 (Flat f0) 
14087 u3)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u3: T).(\lambda (u4: 
14088 T).(subst0 O v0 u3 u4)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: 
14089 C).(\lambda (e2: C).(\lambda (u: T).(eq C (CHead c (Flat f) u2) (CHead e2 
14090 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
14091 (u: T).(drop O O (CHead c (Flat f) u1) (CHead e1 (Flat f0) u)))))) (\lambda 
14092 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 
14093 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
14094 C).(\lambda (_: T).(\lambda (u4: T).(eq C (CHead c (Flat f) u2) (CHead e2 
14095 (Flat f0) u4))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
14096 C).(\lambda (u3: T).(\lambda (_: T).(drop O O (CHead c (Flat f) u1) (CHead e1 
14097 (Flat f0) u3))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
14098 (u3: T).(\lambda (u4: T).(subst0 O v0 u3 u4)))))) (\lambda (_: F).(\lambda 
14099 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 
14100 e2))))))) (ex3_4_intro F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: 
14101 T).(\lambda (u4: T).(eq C (CHead c (Flat f) u2) (CHead e0 (Flat f0) u4)))))) 
14102 (\lambda (f0: F).(\lambda (e0: C).(\lambda (u3: T).(\lambda (_: T).(drop O O 
14103 (CHead c (Flat f) u1) (CHead e0 (Flat f0) u3)))))) (\lambda (_: F).(\lambda 
14104 (_: C).(\lambda (u3: T).(\lambda (u4: T).(subst0 O v0 u3 u4))))) f c u1 u2 
14105 (refl_equal C (CHead c (Flat f) u2)) (drop_refl (CHead c (Flat f) u1)) 
14106 H4))))))))))) k)) (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: 
14107 nat).(\forall (c3: C).(\forall (c4: C).(\forall (v0: T).((csubst0 i v0 c3 c4) 
14108 \to ((((eq nat i O) \to (or4 (drop O O c3 c4) (ex3_4 F C T T (\lambda (f: 
14109 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 (CHead e0 (Flat 
14110 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
14111 T).(drop O O c3 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: 
14112 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) (ex3_4 F C C T 
14113 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C c4 
14114 (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
14115 C).(\lambda (u: T).(drop O O c3 (CHead e1 (Flat f) u)))))) (\lambda (_: 
14116 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 
14117 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14118 C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 (CHead e2 (Flat f) u2))))))) 
14119 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14120 (_: T).(drop O O c3 (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14121 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) 
14122 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14123 (_: T).(csubst0 O v0 e1 e2)))))))))) \to (\forall (u: T).((eq nat (s k0 i) O) 
14124 \to (or4 (drop O O (CHead c3 k0 u) (CHead c4 k0 u)) (ex3_4 F C T T (\lambda 
14125 (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead c4 k0 
14126 u) (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: 
14127 T).(\lambda (_: T).(drop O O (CHead c3 k0 u) (CHead e0 (Flat f) u1)))))) 
14128 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O 
14129 v0 u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14130 C).(\lambda (u0: T).(eq C (CHead c4 k0 u) (CHead e2 (Flat f) u0)))))) 
14131 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(drop O O 
14132 (CHead c3 k0 u) (CHead e1 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: 
14133 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T 
14134 T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14135 (u2: T).(eq C (CHead c4 k0 u) (CHead e2 (Flat f) u2))))))) (\lambda (f: 
14136 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop O 
14137 O (CHead c3 k0 u) (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14138 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) 
14139 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14140 (_: T).(csubst0 O v0 e1 e2))))))))))))))))) (\lambda (b: B).(\lambda (i: 
14141 nat).(\lambda (c3: C).(\lambda (c4: C).(\lambda (v0: T).(\lambda (_: (csubst0 
14142 i v0 c3 c4)).(\lambda (_: (((eq nat i O) \to (or4 (drop O O c3 c4) (ex3_4 F C 
14143 T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C 
14144 c4 (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: 
14145 T).(\lambda (_: T).(drop O O c3 (CHead e0 (Flat f) u1)))))) (\lambda (_: 
14146 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) 
14147 (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
14148 T).(eq C c4 (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14149 C).(\lambda (_: C).(\lambda (u: T).(drop O O c3 (CHead e1 (Flat f) u)))))) 
14150 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
14151 v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14152 C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 (CHead e2 (Flat f) u2))))))) 
14153 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14154 (_: T).(drop O O c3 (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14155 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) 
14156 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14157 (_: T).(csubst0 O v0 e1 e2))))))))))).(\lambda (u: T).(\lambda (H4: (eq nat 
14158 (S i) O)).(let H5 \def (eq_ind nat (S i) (\lambda (ee: nat).(match ee return 
14159 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
14160 I O H4) in (False_ind (or4 (drop O O (CHead c3 (Bind b) u) (CHead c4 (Bind b) 
14161 u)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
14162 (u2: T).(eq C (CHead c4 (Bind b) u) (CHead e0 (Flat f) u2)))))) (\lambda (f: 
14163 F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop O O (CHead c3 
14164 (Bind b) u) (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: 
14165 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) (ex3_4 F C C T 
14166 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u0: T).(eq C 
14167 (CHead c4 (Bind b) u) (CHead e2 (Flat f) u0)))))) (\lambda (f: F).(\lambda 
14168 (e1: C).(\lambda (_: C).(\lambda (u0: T).(drop O O (CHead c3 (Bind b) u) 
14169 (CHead e1 (Flat f) u0)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
14170 C).(\lambda (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: 
14171 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C 
14172 (CHead c4 (Bind b) u) (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda 
14173 (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop O O (CHead c3 
14174 (Bind b) u) (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14175 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) 
14176 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14177 (_: T).(csubst0 O v0 e1 e2)))))))) H5))))))))))) (\lambda (f: F).(\lambda (i: 
14178 nat).(\lambda (c3: C).(\lambda (c4: C).(\lambda (v0: T).(\lambda (H2: 
14179 (csubst0 i v0 c3 c4)).(\lambda (H3: (((eq nat i O) \to (or4 (drop O O c3 c4) 
14180 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: 
14181 T).(eq C c4 (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
14182 C).(\lambda (u1: T).(\lambda (_: T).(drop O O c3 (CHead e0 (Flat f) u1)))))) 
14183 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O 
14184 v0 u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14185 C).(\lambda (u: T).(eq C c4 (CHead e2 (Flat f) u)))))) (\lambda (f: 
14186 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop O O c3 (CHead e1 
14187 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14188 (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
14189 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 (CHead e2 
14190 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
14191 (u1: T).(\lambda (_: T).(drop O O c3 (CHead e1 (Flat f) u1))))))) (\lambda 
14192 (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
14193 T).(subst0 O v0 u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
14194 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 e2))))))))))).(\lambda 
14195 (u: T).(\lambda (H4: (eq nat i O)).(let H5 \def (eq_ind nat i (\lambda (n: 
14196 nat).((eq nat n O) \to (or4 (drop O O c3 c4) (ex3_4 F C T T (\lambda (f: 
14197 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 (CHead e0 (Flat 
14198 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
14199 T).(drop O O c3 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: 
14200 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) (ex3_4 F C C T 
14201 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C c4 
14202 (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
14203 C).(\lambda (u: T).(drop O O c3 (CHead e1 (Flat f) u)))))) (\lambda (_: 
14204 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 
14205 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14206 C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 (CHead e2 (Flat f) u2))))))) 
14207 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14208 (_: T).(drop O O c3 (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14209 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) 
14210 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14211 (_: T).(csubst0 O v0 e1 e2)))))))))) H3 O H4) in (let H6 \def (eq_ind nat i 
14212 (\lambda (n: nat).(csubst0 n v0 c3 c4)) H2 O H4) in (or4_intro2 (drop O O 
14213 (CHead c3 (Flat f) u) (CHead c4 (Flat f) u)) (ex3_4 F C T T (\lambda (f0: 
14214 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead c4 (Flat f) 
14215 u) (CHead e0 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda 
14216 (u1: T).(\lambda (_: T).(drop O O (CHead c3 (Flat f) u) (CHead e0 (Flat f0) 
14217 u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
14218 T).(subst0 O v0 u1 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: 
14219 C).(\lambda (e2: C).(\lambda (u0: T).(eq C (CHead c4 (Flat f) u) (CHead e2 
14220 (Flat f0) u0)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
14221 (u0: T).(drop O O (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u0)))))) (\lambda 
14222 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 
14223 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
14224 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead c4 (Flat f) u) (CHead e2 
14225 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
14226 C).(\lambda (u1: T).(\lambda (_: T).(drop O O (CHead c3 (Flat f) u) (CHead e1 
14227 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
14228 (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) (\lambda (_: F).(\lambda 
14229 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 
14230 e2))))))) (ex3_4_intro F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
14231 C).(\lambda (u0: T).(eq C (CHead c4 (Flat f) u) (CHead e2 (Flat f0) u0)))))) 
14232 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(drop O O 
14233 (CHead c3 (Flat f) u) (CHead e1 (Flat f0) u0)))))) (\lambda (_: F).(\lambda 
14234 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 e2))))) f c3 c4 u 
14235 (refl_equal C (CHead c4 (Flat f) u)) (drop_refl (CHead c3 (Flat f) u)) 
14236 H6))))))))))))) k)) (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: 
14237 nat).(\forall (v0: T).(\forall (u1: T).(\forall (u2: T).((subst0 i v0 u1 u2) 
14238 \to (\forall (c3: C).(\forall (c4: C).((csubst0 i v0 c3 c4) \to ((((eq nat i 
14239 O) \to (or4 (drop O O c3 c4) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
14240 C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 (CHead e0 (Flat f) u2)))))) 
14241 (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop O O 
14242 c3 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
14243 T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
14244 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C c4 (CHead e2 (Flat 
14245 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
14246 T).(drop O O c3 (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
14247 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T 
14248 T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14249 (u2: T).(eq C c4 (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
14250 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop O O c3 (CHead e1 
14251 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
14252 (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) (\lambda (_: F).(\lambda 
14253 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 
14254 e2)))))))))) \to ((eq nat (s k0 i) O) \to (or4 (drop O O (CHead c3 k0 u1) 
14255 (CHead c4 k0 u2)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
14256 (_: T).(\lambda (u4: T).(eq C (CHead c4 k0 u2) (CHead e0 (Flat f) u4)))))) 
14257 (\lambda (f: F).(\lambda (e0: C).(\lambda (u3: T).(\lambda (_: T).(drop O O 
14258 (CHead c3 k0 u1) (CHead e0 (Flat f) u3)))))) (\lambda (_: F).(\lambda (_: 
14259 C).(\lambda (u3: T).(\lambda (u4: T).(subst0 O v0 u3 u4)))))) (ex3_4 F C C T 
14260 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C (CHead 
14261 c4 k0 u2) (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14262 C).(\lambda (_: C).(\lambda (u: T).(drop O O (CHead c3 k0 u1) (CHead e1 (Flat 
14263 f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
14264 T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: 
14265 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u4: T).(eq C (CHead c4 k0 u2) 
14266 (CHead e2 (Flat f) u4))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
14267 C).(\lambda (u3: T).(\lambda (_: T).(drop O O (CHead c3 k0 u1) (CHead e1 
14268 (Flat f) u3))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
14269 (u3: T).(\lambda (u4: T).(subst0 O v0 u3 u4)))))) (\lambda (_: F).(\lambda 
14270 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 
14271 e2))))))))))))))))))) (\lambda (b: B).(\lambda (i: nat).(\lambda (v0: 
14272 T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (_: (subst0 i v0 u1 
14273 u2)).(\lambda (c3: C).(\lambda (c4: C).(\lambda (_: (csubst0 i v0 c3 
14274 c4)).(\lambda (_: (((eq nat i O) \to (or4 (drop O O c3 c4) (ex3_4 F C T T 
14275 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 
14276 (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: 
14277 T).(\lambda (_: T).(drop O O c3 (CHead e0 (Flat f) u1)))))) (\lambda (_: 
14278 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) 
14279 (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
14280 T).(eq C c4 (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14281 C).(\lambda (_: C).(\lambda (u: T).(drop O O c3 (CHead e1 (Flat f) u)))))) 
14282 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
14283 v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14284 C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 (CHead e2 (Flat f) u2))))))) 
14285 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14286 (_: T).(drop O O c3 (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14287 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) 
14288 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14289 (_: T).(csubst0 O v0 e1 e2))))))))))).(\lambda (H5: (eq nat (S i) O)).(let H6 
14290 \def (eq_ind nat (S i) (\lambda (ee: nat).(match ee return (\lambda (_: 
14291 nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) I O H5) in 
14292 (False_ind (or4 (drop O O (CHead c3 (Bind b) u1) (CHead c4 (Bind b) u2)) 
14293 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u4: 
14294 T).(eq C (CHead c4 (Bind b) u2) (CHead e0 (Flat f) u4)))))) (\lambda (f: 
14295 F).(\lambda (e0: C).(\lambda (u3: T).(\lambda (_: T).(drop O O (CHead c3 
14296 (Bind b) u1) (CHead e0 (Flat f) u3)))))) (\lambda (_: F).(\lambda (_: 
14297 C).(\lambda (u3: T).(\lambda (u4: T).(subst0 O v0 u3 u4)))))) (ex3_4 F C C T 
14298 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C (CHead 
14299 c4 (Bind b) u2) (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14300 C).(\lambda (_: C).(\lambda (u: T).(drop O O (CHead c3 (Bind b) u1) (CHead e1 
14301 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14302 (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
14303 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u4: T).(eq C (CHead c4 
14304 (Bind b) u2) (CHead e2 (Flat f) u4))))))) (\lambda (f: F).(\lambda (e1: 
14305 C).(\lambda (_: C).(\lambda (u3: T).(\lambda (_: T).(drop O O (CHead c3 (Bind 
14306 b) u1) (CHead e1 (Flat f) u3))))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
14307 (_: C).(\lambda (u3: T).(\lambda (u4: T).(subst0 O v0 u3 u4)))))) (\lambda 
14308 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: 
14309 T).(csubst0 O v0 e1 e2)))))))) H6))))))))))))) (\lambda (f: F).(\lambda (i: 
14310 nat).(\lambda (v0: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H2: (subst0 
14311 i v0 u1 u2)).(\lambda (c3: C).(\lambda (c4: C).(\lambda (H3: (csubst0 i v0 c3 
14312 c4)).(\lambda (H4: (((eq nat i O) \to (or4 (drop O O c3 c4) (ex3_4 F C T T 
14313 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 
14314 (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: 
14315 T).(\lambda (_: T).(drop O O c3 (CHead e0 (Flat f) u1)))))) (\lambda (_: 
14316 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) 
14317 (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
14318 T).(eq C c4 (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14319 C).(\lambda (_: C).(\lambda (u: T).(drop O O c3 (CHead e1 (Flat f) u)))))) 
14320 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
14321 v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14322 C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 (CHead e2 (Flat f) u2))))))) 
14323 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14324 (_: T).(drop O O c3 (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14325 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v0 u1 u2)))))) 
14326 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14327 (_: T).(csubst0 O v0 e1 e2))))))))))).(\lambda (H5: (eq nat i O)).(let H6 
14328 \def (eq_ind nat i (\lambda (n: nat).((eq nat n O) \to (or4 (drop O O c3 c4) 
14329 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: 
14330 T).(eq C c4 (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
14331 C).(\lambda (u1: T).(\lambda (_: T).(drop O O c3 (CHead e0 (Flat f) u1)))))) 
14332 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O 
14333 v0 u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14334 C).(\lambda (u: T).(eq C c4 (CHead e2 (Flat f) u)))))) (\lambda (f: 
14335 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop O O c3 (CHead e1 
14336 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14337 (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
14338 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C c4 (CHead e2 
14339 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
14340 (u1: T).(\lambda (_: T).(drop O O c3 (CHead e1 (Flat f) u1))))))) (\lambda 
14341 (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
14342 T).(subst0 O v0 u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
14343 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 e2)))))))))) H4 O H5) in 
14344 (let H7 \def (eq_ind nat i (\lambda (n: nat).(csubst0 n v0 c3 c4)) H3 O H5) 
14345 in (let H8 \def (eq_ind nat i (\lambda (n: nat).(subst0 n v0 u1 u2)) H2 O H5) 
14346 in (or4_intro3 (drop O O (CHead c3 (Flat f) u1) (CHead c4 (Flat f) u2)) 
14347 (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
14348 (u4: T).(eq C (CHead c4 (Flat f) u2) (CHead e0 (Flat f0) u4)))))) (\lambda 
14349 (f0: F).(\lambda (e0: C).(\lambda (u3: T).(\lambda (_: T).(drop O O (CHead c3 
14350 (Flat f) u1) (CHead e0 (Flat f0) u3)))))) (\lambda (_: F).(\lambda (_: 
14351 C).(\lambda (u3: T).(\lambda (u4: T).(subst0 O v0 u3 u4)))))) (ex3_4 F C C T 
14352 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C 
14353 (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) u)))))) (\lambda (f0: F).(\lambda 
14354 (e1: C).(\lambda (_: C).(\lambda (u: T).(drop O O (CHead c3 (Flat f) u1) 
14355 (CHead e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
14356 C).(\lambda (_: T).(csubst0 O v0 e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
14357 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u4: T).(eq C 
14358 (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) u4))))))) (\lambda (f0: 
14359 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u3: T).(\lambda (_: T).(drop O 
14360 O (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u3))))))) (\lambda (_: 
14361 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u3: T).(\lambda (u4: T).(subst0 
14362 O v0 u3 u4)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14363 (_: T).(\lambda (_: T).(csubst0 O v0 e1 e2))))))) (ex4_5_intro F C C T T 
14364 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14365 (u4: T).(eq C (CHead c4 (Flat f) u2) (CHead e2 (Flat f0) u4))))))) (\lambda 
14366 (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u3: T).(\lambda (_: 
14367 T).(drop O O (CHead c3 (Flat f) u1) (CHead e1 (Flat f0) u3))))))) (\lambda 
14368 (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u3: T).(\lambda (u4: 
14369 T).(subst0 O v0 u3 u4)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
14370 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v0 e1 e2)))))) f c3 c4 u1 u2 
14371 (refl_equal C (CHead c4 (Flat f) u2)) (drop_refl (CHead c3 (Flat f) u1)) H8 
14372 H7)))))))))))))))) k)) y v c1 c2 H1))) H) e (drop_gen_refl c2 e H0)))))))) 
14373 (\lambda (n0: nat).(\lambda (IHn: ((\forall (c1: C).(\forall (c2: C).(\forall 
14374 (v: T).((csubst0 n0 v c1 c2) \to (\forall (e: C).((drop n0 O c2 e) \to (or4 
14375 (drop n0 O c1 e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
14376 T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: 
14377 F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop n0 O c1 (CHead e0 
14378 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14379 (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: 
14380 C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat f) u)))))) 
14381 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop n0 O 
14382 c1 (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
14383 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: 
14384 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
14385 (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
14386 C).(\lambda (u1: T).(\lambda (_: T).(drop n0 O c1 (CHead e1 (Flat f) 
14387 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
14388 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
14389 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
14390 e2)))))))))))))))).(\lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: 
14391 C).(\forall (v: T).((csubst0 (S n0) v c c2) \to (\forall (e: C).((drop (S n0) 
14392 O c2 e) \to (or4 (drop (S n0) O c e) (ex3_4 F C T T (\lambda (f: F).(\lambda 
14393 (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f) u2)))))) 
14394 (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14395 n0) O c (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
14396 (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
14397 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
14398 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
14399 T).(drop (S n0) O c (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
14400 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
14401 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14402 (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
14403 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O c (CHead 
14404 e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
14405 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
14406 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
14407 O v e1 e2)))))))))))))) (\lambda (n1: nat).(\lambda (c2: C).(\lambda (v: 
14408 T).(\lambda (H: (csubst0 (S n0) v (CSort n1) c2)).(\lambda (e: C).(\lambda 
14409 (_: (drop (S n0) O c2 e)).(csubst0_gen_sort c2 v (S n0) n1 H (or4 (drop (S 
14410 n0) O (CSort n1) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
14411 (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: 
14412 F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CSort 
14413 n1) (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
14414 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
14415 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
14416 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
14417 T).(drop (S n0) O (CSort n1) (CHead e1 (Flat f) u)))))) (\lambda (_: 
14418 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
14419 (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
14420 (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) (\lambda (f: 
14421 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14422 n0) O (CSort n1) (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14423 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14424 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14425 (_: T).(csubst0 O v e1 e2))))))))))))))) (\lambda (c: C).(\lambda (H: 
14426 ((\forall (c2: C).(\forall (v: T).((csubst0 (S n0) v c c2) \to (\forall (e: 
14427 C).((drop (S n0) O c2 e) \to (or4 (drop (S n0) O c e) (ex3_4 F C T T (\lambda 
14428 (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 
14429 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda 
14430 (_: T).(drop (S n0) O c (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda 
14431 (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C 
14432 T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e 
14433 (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
14434 C).(\lambda (u: T).(drop (S n0) O c (CHead e1 (Flat f) u)))))) (\lambda (_: 
14435 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
14436 (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
14437 (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) (\lambda (f: 
14438 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14439 n0) O c (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
14440 (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
14441 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
14442 O v e1 e2))))))))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c2: 
14443 C).(\lambda (v: T).(\lambda (H0: (csubst0 (S n0) v (CHead c k t) 
14444 c2)).(\lambda (e: C).(\lambda (H1: (drop (S n0) O c2 e)).(or3_ind (ex3_2 T 
14445 nat (\lambda (_: T).(\lambda (j: nat).(eq nat (S n0) (s k j)))) (\lambda (u2: 
14446 T).(\lambda (_: nat).(eq C c2 (CHead c k u2)))) (\lambda (u2: T).(\lambda (j: 
14447 nat).(subst0 j v t u2)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
14448 nat (S n0) (s k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k 
14449 t)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c c3)))) (ex4_3 T C nat 
14450 (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat (S n0) (s k j))))) 
14451 (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k 
14452 u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v t 
14453 u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c 
14454 c3))))) (or4 (drop (S n0) O (CHead c k t) e) (ex3_4 F C T T (\lambda (f: 
14455 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat 
14456 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
14457 T).(drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)))))) (\lambda (_: 
14458 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14459 (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
14460 T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14461 C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c k t) (CHead e1 
14462 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14463 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: 
14464 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat 
14465 f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
14466 T).(\lambda (_: T).(drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1))))))) 
14467 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14468 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
14469 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda 
14470 (H2: (ex3_2 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat (S n0) (s k j)))) 
14471 (\lambda (u2: T).(\lambda (_: nat).(eq C c2 (CHead c k u2)))) (\lambda (u2: 
14472 T).(\lambda (j: nat).(subst0 j v t u2))))).(ex3_2_ind T nat (\lambda (_: 
14473 T).(\lambda (j: nat).(eq nat (S n0) (s k j)))) (\lambda (u2: T).(\lambda (_: 
14474 nat).(eq C c2 (CHead c k u2)))) (\lambda (u2: T).(\lambda (j: nat).(subst0 j 
14475 v t u2))) (or4 (drop (S n0) O (CHead c k t) e) (ex3_4 F C T T (\lambda (f: 
14476 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat 
14477 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
14478 T).(drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)))))) (\lambda (_: 
14479 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14480 (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
14481 T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14482 C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c k t) (CHead e1 
14483 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14484 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: 
14485 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat 
14486 f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
14487 T).(\lambda (_: T).(drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1))))))) 
14488 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14489 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
14490 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda 
14491 (x0: T).(\lambda (x1: nat).(\lambda (H3: (eq nat (S n0) (s k x1))).(\lambda 
14492 (H4: (eq C c2 (CHead c k x0))).(\lambda (H5: (subst0 x1 v t x0)).(let H6 \def 
14493 (eq_ind C c2 (\lambda (c: C).(drop (S n0) O c e)) H1 (CHead c k x0) H4) in 
14494 ((match k return (\lambda (k0: K).((eq nat (S n0) (s k0 x1)) \to ((drop (r k0 
14495 n0) O c e) \to (or4 (drop (S n0) O (CHead c k0 t) e) (ex3_4 F C T T (\lambda 
14496 (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 
14497 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda 
14498 (_: T).(drop (S n0) O (CHead c k0 t) (CHead e0 (Flat f) u1)))))) (\lambda (_: 
14499 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14500 (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
14501 T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14502 C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c k0 t) (CHead e1 
14503 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14504 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: 
14505 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat 
14506 f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
14507 T).(\lambda (_: T).(drop (S n0) O (CHead c k0 t) (CHead e1 (Flat f) u1))))))) 
14508 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14509 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
14510 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))))))) with 
14511 [(Bind b) \Rightarrow (\lambda (H7: (eq nat (S n0) (s (Bind b) x1))).(\lambda 
14512 (H8: (drop (r (Bind b) n0) O c e)).(let H9 \def (f_equal nat nat (\lambda 
14513 (e0: nat).(match e0 return (\lambda (_: nat).nat) with [O \Rightarrow n0 | (S 
14514 n) \Rightarrow n])) (S n0) (S x1) H7) in (let H10 \def (eq_ind_r nat x1 
14515 (\lambda (n: nat).(subst0 n v t x0)) H5 n0 H9) in (or4_intro0 (drop (S n0) O 
14516 (CHead c (Bind b) t) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
14517 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f) u2)))))) 
14518 (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14519 n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) (\lambda (_: 
14520 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14521 (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
14522 T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14523 C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c (Bind b) t) (CHead 
14524 e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
14525 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: 
14526 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
14527 (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
14528 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) 
14529 (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
14530 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
14531 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
14532 O v e1 e2))))))) (drop_drop (Bind b) n0 c e H8 t)))))) | (Flat f) \Rightarrow 
14533 (\lambda (H7: (eq nat (S n0) (s (Flat f) x1))).(\lambda (H8: (drop (r (Flat 
14534 f) n0) O c e)).(let H9 \def (f_equal nat nat (\lambda (e0: nat).e0) (S n0) x1 
14535 H7) in (let H10 \def (eq_ind_r nat x1 (\lambda (n: nat).(subst0 n v t x0)) H5 
14536 (S n0) H9) in (or4_intro0 (drop (S n0) O (CHead c (Flat f) t) e) (ex3_4 F C T 
14537 T (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
14538 (CHead e0 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: 
14539 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) 
14540 u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
14541 T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: 
14542 C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat f0) u)))))) 
14543 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S 
14544 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: 
14545 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
14546 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
14547 (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f0) u2))))))) (\lambda (f0: 
14548 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14549 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1))))))) (\lambda (_: 
14550 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
14551 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14552 (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) (drop_drop (Flat f) n0 c e 
14553 H8 t))))))]) H3 (drop_gen_drop k c e x0 n0 H6)))))))) H2)) (\lambda (H2: 
14554 (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq nat (S n0) (s k j)))) 
14555 (\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k t)))) (\lambda (c2: 
14556 C).(\lambda (j: nat).(csubst0 j v c c2))))).(ex3_2_ind C nat (\lambda (_: 
14557 C).(\lambda (j: nat).(eq nat (S n0) (s k j)))) (\lambda (c3: C).(\lambda (_: 
14558 nat).(eq C c2 (CHead c3 k t)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j 
14559 v c c3))) (or4 (drop (S n0) O (CHead c k t) e) (ex3_4 F C T T (\lambda (f: 
14560 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat 
14561 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
14562 T).(drop (S n0) O (CHead c k t) (CHead e0 (Flat f) u1)))))) (\lambda (_: 
14563 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14564 (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
14565 T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14566 C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c k t) (CHead e1 
14567 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14568 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: 
14569 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat 
14570 f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
14571 T).(\lambda (_: T).(drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u1))))))) 
14572 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14573 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
14574 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda 
14575 (x0: C).(\lambda (x1: nat).(\lambda (H3: (eq nat (S n0) (s k x1))).(\lambda 
14576 (H4: (eq C c2 (CHead x0 k t))).(\lambda (H5: (csubst0 x1 v c x0)).(let H6 
14577 \def (eq_ind C c2 (\lambda (c: C).(drop (S n0) O c e)) H1 (CHead x0 k t) H4) 
14578 in ((match k return (\lambda (k0: K).((eq nat (S n0) (s k0 x1)) \to ((drop (r 
14579 k0 n0) O x0 e) \to (or4 (drop (S n0) O (CHead c k0 t) e) (ex3_4 F C T T 
14580 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
14581 (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: 
14582 T).(\lambda (_: T).(drop (S n0) O (CHead c k0 t) (CHead e0 (Flat f) u1)))))) 
14583 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v 
14584 u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14585 C).(\lambda (u: T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: 
14586 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
14587 k0 t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
14588 (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda 
14589 (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq 
14590 C e (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda 
14591 (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c k0 t) (CHead 
14592 e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
14593 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
14594 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
14595 O v e1 e2))))))))))) with [(Bind b) \Rightarrow (\lambda (H7: (eq nat (S n0) 
14596 (s (Bind b) x1))).(\lambda (H8: (drop (r (Bind b) n0) O x0 e)).(let H9 \def 
14597 (f_equal nat nat (\lambda (e0: nat).(match e0 return (\lambda (_: nat).nat) 
14598 with [O \Rightarrow n0 | (S n) \Rightarrow n])) (S n0) (S x1) H7) in (let H10 
14599 \def (eq_ind_r nat x1 (\lambda (n: nat).(csubst0 n v c x0)) H5 n0 H9) in (let 
14600 H11 \def (IHn c x0 v H10 e H8) in (or4_ind (drop n0 O c e) (ex3_4 F C T T 
14601 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
14602 (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: 
14603 T).(\lambda (_: T).(drop n0 O c (CHead e0 (Flat f) u1)))))) (\lambda (_: 
14604 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14605 (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
14606 T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14607 C).(\lambda (_: C).(\lambda (u: T).(drop n0 O c (CHead e1 (Flat f) u)))))) 
14608 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
14609 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14610 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) 
14611 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14612 (_: T).(drop n0 O c (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14613 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14614 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14615 (_: T).(csubst0 O v e1 e2))))))) (or4 (drop (S n0) O (CHead c (Bind b) t) e) 
14616 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: 
14617 T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
14618 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) 
14619 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
14620 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
14621 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
14622 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
14623 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda 
14624 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 
14625 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14626 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) 
14627 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14628 (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1))))))) 
14629 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14630 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
14631 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda 
14632 (H12: (drop n0 O c e)).(or4_intro0 (drop (S n0) O (CHead c (Bind b) t) e) 
14633 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: 
14634 T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
14635 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) 
14636 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
14637 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
14638 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
14639 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
14640 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda 
14641 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 
14642 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14643 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) 
14644 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14645 (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1))))))) 
14646 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14647 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
14648 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) (drop_drop 
14649 (Bind b) n0 c e H12 t))) (\lambda (H12: (ex3_4 F C T T (\lambda (f: 
14650 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat 
14651 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
14652 T).(drop n0 O c (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: 
14653 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2))))))).(ex3_4_ind F C 
14654 T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
14655 (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: 
14656 T).(\lambda (_: T).(drop n0 O c (CHead e0 (Flat f) u1)))))) (\lambda (_: 
14657 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2))))) 
14658 (or4 (drop (S n0) O (CHead c (Bind b) t) e) (ex3_4 F C T T (\lambda (f: 
14659 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat 
14660 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
14661 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) (\lambda 
14662 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
14663 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14664 C).(\lambda (u: T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: 
14665 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
14666 (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
14667 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
14668 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14669 (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
14670 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
14671 (Bind b) t) (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14672 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14673 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14674 (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x2: F).(\lambda (x3: C).(\lambda 
14675 (x4: T).(\lambda (x5: T).(\lambda (H13: (eq C e (CHead x3 (Flat x2) 
14676 x5))).(\lambda (H14: (drop n0 O c (CHead x3 (Flat x2) x4))).(\lambda (H15: 
14677 (subst0 O v x4 x5)).(eq_ind_r C (CHead x3 (Flat x2) x5) (\lambda (c0: C).(or4 
14678 (drop (S n0) O (CHead c (Bind b) t) c0) (ex3_4 F C T T (\lambda (f: 
14679 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 (CHead e0 (Flat 
14680 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
14681 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) (\lambda 
14682 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
14683 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14684 C).(\lambda (u: T).(eq C c0 (CHead e2 (Flat f) u)))))) (\lambda (f: 
14685 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
14686 (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
14687 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
14688 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14689 (u2: T).(eq C c0 (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
14690 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
14691 (Bind b) t) (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14692 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14693 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14694 (_: T).(csubst0 O v e1 e2))))))))) (or4_intro1 (drop (S n0) O (CHead c (Bind 
14695 b) t) (CHead x3 (Flat x2) x5)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
14696 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x3 (Flat x2) x5) (CHead e0 
14697 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda 
14698 (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) 
14699 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v 
14700 u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14701 C).(\lambda (u: T).(eq C (CHead x3 (Flat x2) x5) (CHead e2 (Flat f) u)))))) 
14702 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) 
14703 O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda 
14704 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
14705 C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
14706 T).(\lambda (u2: T).(eq C (CHead x3 (Flat x2) x5) (CHead e2 (Flat f) 
14707 u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
14708 T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) 
14709 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
14710 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
14711 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
14712 (ex3_4_intro F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
14713 T).(\lambda (u2: T).(eq C (CHead x3 (Flat x2) x5) (CHead e0 (Flat f) u2)))))) 
14714 (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14715 n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) (\lambda (_: 
14716 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2))))) 
14717 x2 x3 x4 x5 (refl_equal C (CHead x3 (Flat x2) x5)) (drop_drop (Bind b) n0 c 
14718 (CHead x3 (Flat x2) x4) H14 t) H15)) e H13)))))))) H12)) (\lambda (H12: 
14719 (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
14720 T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
14721 C).(\lambda (_: C).(\lambda (u: T).(drop n0 O c (CHead e1 (Flat f) u)))))) 
14722 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
14723 v e1 e2))))))).(ex3_4_ind F C C T (\lambda (f: F).(\lambda (_: C).(\lambda 
14724 (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: 
14725 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop n0 O c (CHead e1 
14726 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14727 (_: T).(csubst0 O v e1 e2))))) (or4 (drop (S n0) O (CHead c (Bind b) t) e) 
14728 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: 
14729 T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
14730 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) 
14731 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
14732 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
14733 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
14734 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
14735 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda 
14736 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 
14737 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14738 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) 
14739 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14740 (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1))))))) 
14741 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14742 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
14743 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda 
14744 (x2: F).(\lambda (x3: C).(\lambda (x4: C).(\lambda (x5: T).(\lambda (H13: (eq 
14745 C e (CHead x4 (Flat x2) x5))).(\lambda (H14: (drop n0 O c (CHead x3 (Flat x2) 
14746 x5))).(\lambda (H15: (csubst0 O v x3 x4)).(eq_ind_r C (CHead x4 (Flat x2) x5) 
14747 (\lambda (c0: C).(or4 (drop (S n0) O (CHead c (Bind b) t) c0) (ex3_4 F C T T 
14748 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 
14749 (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: 
14750 T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) 
14751 u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
14752 T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: 
14753 C).(\lambda (e2: C).(\lambda (u: T).(eq C c0 (CHead e2 (Flat f) u)))))) 
14754 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) 
14755 O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda 
14756 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
14757 C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
14758 T).(\lambda (u2: T).(eq C c0 (CHead e2 (Flat f) u2))))))) (\lambda (f: 
14759 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14760 n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1))))))) (\lambda (_: 
14761 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
14762 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14763 (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))))) (or4_intro2 (drop (S n0) O 
14764 (CHead c (Bind b) t) (CHead x4 (Flat x2) x5)) (ex3_4 F C T T (\lambda (f: 
14765 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x4 (Flat 
14766 x2) x5) (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda 
14767 (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat 
14768 f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
14769 T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: 
14770 C).(\lambda (e2: C).(\lambda (u: T).(eq C (CHead x4 (Flat x2) x5) (CHead e2 
14771 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
14772 (u: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) 
14773 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
14774 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14775 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x4 (Flat x2) x5) (CHead e2 
14776 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
14777 (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat 
14778 f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
14779 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
14780 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
14781 (ex3_4_intro F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14782 C).(\lambda (u: T).(eq C (CHead x4 (Flat x2) x5) (CHead e2 (Flat f) u)))))) 
14783 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) 
14784 O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda 
14785 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2))))) x2 x3 x4 x5 
14786 (refl_equal C (CHead x4 (Flat x2) x5)) (drop_drop (Bind b) n0 c (CHead x3 
14787 (Flat x2) x5) H14 t) H15)) e H13)))))))) H12)) (\lambda (H12: (ex4_5 F C C T 
14788 T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14789 (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
14790 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop n0 O c (CHead e1 
14791 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
14792 (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda 
14793 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
14794 e2)))))))).(ex4_5_ind F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14795 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) 
14796 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14797 (_: T).(drop n0 O c (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14798 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14799 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14800 (_: T).(csubst0 O v e1 e2)))))) (or4 (drop (S n0) O (CHead c (Bind b) t) e) 
14801 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: 
14802 T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
14803 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) 
14804 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
14805 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
14806 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
14807 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
14808 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda 
14809 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 
14810 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14811 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) 
14812 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14813 (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1))))))) 
14814 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
14815 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
14816 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda 
14817 (x2: F).(\lambda (x3: C).(\lambda (x4: C).(\lambda (x5: T).(\lambda (x6: 
14818 T).(\lambda (H13: (eq C e (CHead x4 (Flat x2) x6))).(\lambda (H14: (drop n0 O 
14819 c (CHead x3 (Flat x2) x5))).(\lambda (H15: (subst0 O v x5 x6)).(\lambda (H16: 
14820 (csubst0 O v x3 x4)).(eq_ind_r C (CHead x4 (Flat x2) x6) (\lambda (c0: 
14821 C).(or4 (drop (S n0) O (CHead c (Bind b) t) c0) (ex3_4 F C T T (\lambda (f: 
14822 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 (CHead e0 (Flat 
14823 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
14824 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) (\lambda 
14825 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
14826 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14827 C).(\lambda (u: T).(eq C c0 (CHead e2 (Flat f) u)))))) (\lambda (f: 
14828 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
14829 (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
14830 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
14831 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14832 (u2: T).(eq C c0 (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
14833 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
14834 (Bind b) t) (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
14835 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14836 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14837 (_: T).(csubst0 O v e1 e2))))))))) (or4_intro3 (drop (S n0) O (CHead c (Bind 
14838 b) t) (CHead x4 (Flat x2) x6)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
14839 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x4 (Flat x2) x6) (CHead e0 
14840 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda 
14841 (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) 
14842 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v 
14843 u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14844 C).(\lambda (u: T).(eq C (CHead x4 (Flat x2) x6) (CHead e2 (Flat f) u)))))) 
14845 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) 
14846 O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda 
14847 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
14848 C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
14849 T).(\lambda (u2: T).(eq C (CHead x4 (Flat x2) x6) (CHead e2 (Flat f) 
14850 u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
14851 T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) 
14852 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
14853 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
14854 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
14855 (ex4_5_intro F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
14856 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x4 (Flat x2) x6) (CHead e2 
14857 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
14858 (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat 
14859 f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
14860 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
14861 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
14862 x2 x3 x4 x5 x6 (refl_equal C (CHead x4 (Flat x2) x6)) (drop_drop (Bind b) n0 
14863 c (CHead x3 (Flat x2) x5) H14 t) H15 H16)) e H13)))))))))) H12)) H11)))))) | 
14864 (Flat f) \Rightarrow (\lambda (H7: (eq nat (S n0) (s (Flat f) x1))).(\lambda 
14865 (H8: (drop (r (Flat f) n0) O x0 e)).(let H9 \def (f_equal nat nat (\lambda 
14866 (e0: nat).e0) (S n0) x1 H7) in (let H10 \def (eq_ind_r nat x1 (\lambda (n: 
14867 nat).(csubst0 n v c x0)) H5 (S n0) H9) in (let H11 \def (H x0 v H10 e H8) in 
14868 (or4_ind (drop (S n0) O c e) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
14869 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f0) u2)))))) 
14870 (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14871 n0) O c (CHead e0 (Flat f0) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
14872 (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f0: 
14873 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
14874 f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
14875 T).(drop (S n0) O c (CHead e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: 
14876 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
14877 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14878 (u2: T).(eq C e (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: 
14879 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O c (CHead 
14880 e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
14881 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
14882 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
14883 O v e1 e2))))))) (or4 (drop (S n0) O (CHead c (Flat f) t) e) (ex3_4 F C T T 
14884 (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
14885 (CHead e0 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: 
14886 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) 
14887 u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
14888 T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: 
14889 C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat f0) u)))))) 
14890 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S 
14891 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: 
14892 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
14893 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
14894 (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f0) u2))))))) (\lambda (f0: 
14895 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14896 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1))))))) (\lambda (_: 
14897 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
14898 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14899 (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda (H12: (drop (S n0) 
14900 O c e)).(or4_intro0 (drop (S n0) O (CHead c (Flat f) t) e) (ex3_4 F C T T 
14901 (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
14902 (CHead e0 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: 
14903 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) 
14904 u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
14905 T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: 
14906 C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat f0) u)))))) 
14907 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S 
14908 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: 
14909 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
14910 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
14911 (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f0) u2))))))) (\lambda (f0: 
14912 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14913 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1))))))) (\lambda (_: 
14914 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
14915 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
14916 (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) (drop_drop (Flat f) n0 c e 
14917 H12 t))) (\lambda (H12: (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
14918 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f) u2)))))) 
14919 (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14920 n0) O c (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
14921 (u1: T).(\lambda (u2: T).(subst0 O v u1 u2))))))).(ex3_4_ind F C T T (\lambda 
14922 (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 
14923 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: 
14924 T).(\lambda (_: T).(drop (S n0) O c (CHead e0 (Flat f0) u1)))))) (\lambda (_: 
14925 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2))))) 
14926 (or4 (drop (S n0) O (CHead c (Flat f) t) e) (ex3_4 F C T T (\lambda (f0: 
14927 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat 
14928 f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
14929 T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda 
14930 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
14931 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
14932 C).(\lambda (u: T).(eq C e (CHead e2 (Flat f0) u)))))) (\lambda (f0: 
14933 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
14934 (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: 
14935 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
14936 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14937 (u2: T).(eq C e (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: 
14938 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
14939 (Flat f) t) (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: 
14940 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14941 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14942 (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x2: F).(\lambda (x3: C).(\lambda 
14943 (x4: T).(\lambda (x5: T).(\lambda (H13: (eq C e (CHead x3 (Flat x2) 
14944 x5))).(\lambda (H14: (drop (S n0) O c (CHead x3 (Flat x2) x4))).(\lambda 
14945 (H15: (subst0 O v x4 x5)).(eq_ind_r C (CHead x3 (Flat x2) x5) (\lambda (c0: 
14946 C).(or4 (drop (S n0) O (CHead c (Flat f) t) c0) (ex3_4 F C T T (\lambda (f0: 
14947 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 (CHead e0 (Flat 
14948 f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
14949 T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda 
14950 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
14951 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
14952 C).(\lambda (u: T).(eq C c0 (CHead e2 (Flat f0) u)))))) (\lambda (f0: 
14953 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
14954 (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: 
14955 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
14956 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14957 (u2: T).(eq C c0 (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: 
14958 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
14959 (Flat f) t) (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: 
14960 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
14961 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
14962 (_: T).(csubst0 O v e1 e2))))))))) (or4_intro1 (drop (S n0) O (CHead c (Flat 
14963 f) t) (CHead x3 (Flat x2) x5)) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
14964 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x3 (Flat x2) x5) (CHead e0 
14965 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: 
14966 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) 
14967 u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
14968 T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: 
14969 C).(\lambda (e2: C).(\lambda (u: T).(eq C (CHead x3 (Flat x2) x5) (CHead e2 
14970 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
14971 (u: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) 
14972 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
14973 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
14974 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x3 (Flat x2) x5) (CHead e2 
14975 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
14976 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
14977 (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
14978 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
14979 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
14980 O v e1 e2))))))) (ex3_4_intro F C T T (\lambda (f0: F).(\lambda (e0: 
14981 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x3 (Flat x2) x5) (CHead e0 
14982 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: 
14983 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) 
14984 u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
14985 T).(subst0 O v u1 u2))))) x2 x3 x4 x5 (refl_equal C (CHead x3 (Flat x2) x5)) 
14986 (drop_drop (Flat f) n0 c (CHead x3 (Flat x2) x4) H14 t) H15)) e H13)))))))) 
14987 H12)) (\lambda (H12: (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda 
14988 (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: 
14989 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O c (CHead 
14990 e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
14991 C).(\lambda (_: T).(csubst0 O v e1 e2))))))).(ex3_4_ind F C C T (\lambda (f0: 
14992 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
14993 f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
14994 T).(drop (S n0) O c (CHead e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: 
14995 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2))))) (or4 (drop (S n0) 
14996 O (CHead c (Flat f) t) e) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
14997 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f0) u2)))))) 
14998 (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
14999 n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda (_: 
15000 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15001 (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
15002 T).(eq C e (CHead e2 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: 
15003 C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c (Flat f) t) (CHead 
15004 e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
15005 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
15006 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
15007 (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
15008 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
15009 (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
15010 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
15011 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
15012 O v e1 e2)))))))) (\lambda (x2: F).(\lambda (x3: C).(\lambda (x4: C).(\lambda 
15013 (x5: T).(\lambda (H13: (eq C e (CHead x4 (Flat x2) x5))).(\lambda (H14: (drop 
15014 (S n0) O c (CHead x3 (Flat x2) x5))).(\lambda (H15: (csubst0 O v x3 
15015 x4)).(eq_ind_r C (CHead x4 (Flat x2) x5) (\lambda (c0: C).(or4 (drop (S n0) O 
15016 (CHead c (Flat f) t) c0) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
15017 C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 (CHead e0 (Flat f0) u2)))))) 
15018 (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
15019 n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda (_: 
15020 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15021 (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
15022 T).(eq C c0 (CHead e2 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: 
15023 C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c (Flat f) t) (CHead 
15024 e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
15025 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
15026 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 
15027 (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
15028 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
15029 (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
15030 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
15031 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
15032 O v e1 e2))))))))) (or4_intro2 (drop (S n0) O (CHead c (Flat f) t) (CHead x4 
15033 (Flat x2) x5)) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: 
15034 T).(\lambda (u2: T).(eq C (CHead x4 (Flat x2) x5) (CHead e0 (Flat f0) 
15035 u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
15036 T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda 
15037 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
15038 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15039 C).(\lambda (u: T).(eq C (CHead x4 (Flat x2) x5) (CHead e2 (Flat f0) u)))))) 
15040 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S 
15041 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: 
15042 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
15043 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
15044 (_: T).(\lambda (u2: T).(eq C (CHead x4 (Flat x2) x5) (CHead e2 (Flat f0) 
15045 u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
15046 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) 
15047 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
15048 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
15049 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
15050 (ex3_4_intro F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15051 C).(\lambda (u: T).(eq C (CHead x4 (Flat x2) x5) (CHead e2 (Flat f0) u)))))) 
15052 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S 
15053 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: 
15054 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2))))) 
15055 x2 x3 x4 x5 (refl_equal C (CHead x4 (Flat x2) x5)) (drop_drop (Flat f) n0 c 
15056 (CHead x3 (Flat x2) x5) H14 t) H15)) e H13)))))))) H12)) (\lambda (H12: 
15057 (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
15058 (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) (\lambda (f: 
15059 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
15060 n0) O c (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
15061 (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
15062 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
15063 O v e1 e2)))))))).(ex4_5_ind F C C T T (\lambda (f0: F).(\lambda (_: 
15064 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat 
15065 f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
15066 T).(\lambda (_: T).(drop (S n0) O c (CHead e1 (Flat f0) u1))))))) (\lambda 
15067 (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
15068 T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
15069 C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))) (or4 (drop (S n0) 
15070 O (CHead c (Flat f) t) e) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
15071 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f0) u2)))))) 
15072 (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
15073 n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda (_: 
15074 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15075 (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
15076 T).(eq C e (CHead e2 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: 
15077 C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c (Flat f) t) (CHead 
15078 e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
15079 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
15080 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
15081 (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
15082 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
15083 (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
15084 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
15085 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
15086 O v e1 e2)))))))) (\lambda (x2: F).(\lambda (x3: C).(\lambda (x4: C).(\lambda 
15087 (x5: T).(\lambda (x6: T).(\lambda (H13: (eq C e (CHead x4 (Flat x2) 
15088 x6))).(\lambda (H14: (drop (S n0) O c (CHead x3 (Flat x2) x5))).(\lambda 
15089 (H15: (subst0 O v x5 x6)).(\lambda (H16: (csubst0 O v x3 x4)).(eq_ind_r C 
15090 (CHead x4 (Flat x2) x6) (\lambda (c0: C).(or4 (drop (S n0) O (CHead c (Flat 
15091 f) t) c0) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: 
15092 T).(\lambda (u2: T).(eq C c0 (CHead e0 (Flat f0) u2)))))) (\lambda (f0: 
15093 F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15094 (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda (_: F).(\lambda (_: 
15095 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T 
15096 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C c0 
15097 (CHead e2 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
15098 C).(\lambda (u: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) 
15099 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
15100 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: 
15101 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 (CHead e2 (Flat 
15102 f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
15103 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) 
15104 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
15105 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
15106 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
15107 e2))))))))) (or4_intro3 (drop (S n0) O (CHead c (Flat f) t) (CHead x4 (Flat 
15108 x2) x6)) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: 
15109 T).(\lambda (u2: T).(eq C (CHead x4 (Flat x2) x6) (CHead e0 (Flat f0) 
15110 u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
15111 T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda 
15112 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
15113 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15114 C).(\lambda (u: T).(eq C (CHead x4 (Flat x2) x6) (CHead e2 (Flat f0) u)))))) 
15115 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S 
15116 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: 
15117 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
15118 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
15119 (_: T).(\lambda (u2: T).(eq C (CHead x4 (Flat x2) x6) (CHead e2 (Flat f0) 
15120 u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
15121 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) 
15122 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
15123 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
15124 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
15125 (ex4_5_intro F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15126 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x4 (Flat x2) x6) (CHead e2 
15127 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
15128 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
15129 (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
15130 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
15131 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
15132 O v e1 e2)))))) x2 x3 x4 x5 x6 (refl_equal C (CHead x4 (Flat x2) x6)) 
15133 (drop_drop (Flat f) n0 c (CHead x3 (Flat x2) x5) H14 t) H15 H16)) e 
15134 H13)))))))))) H12)) H11))))))]) H3 (drop_gen_drop k x0 e t n0 H6)))))))) H2)) 
15135 (\lambda (H2: (ex4_3 T C nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: 
15136 nat).(eq nat (S n0) (s k j))))) (\lambda (u2: T).(\lambda (c3: C).(\lambda 
15137 (_: nat).(eq C c2 (CHead c3 k u2))))) (\lambda (u2: T).(\lambda (_: 
15138 C).(\lambda (j: nat).(subst0 j v t u2)))) (\lambda (_: T).(\lambda (c2: 
15139 C).(\lambda (j: nat).(csubst0 j v c c2)))))).(ex4_3_ind T C nat (\lambda (_: 
15140 T).(\lambda (_: C).(\lambda (j: nat).(eq nat (S n0) (s k j))))) (\lambda (u2: 
15141 T).(\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k u2))))) (\lambda 
15142 (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v t u2)))) (\lambda (_: 
15143 T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c c3)))) (or4 (drop (S n0) 
15144 O (CHead c k t) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda 
15145 (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: 
15146 F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15147 k t) (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
15148 (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
15149 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
15150 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
15151 T).(drop (S n0) O (CHead c k t) (CHead e1 (Flat f) u)))))) (\lambda (_: 
15152 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
15153 (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
15154 (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) (\lambda (f: 
15155 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
15156 n0) O (CHead c k t) (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
15157 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15158 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15159 (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x0: T).(\lambda (x1: C).(\lambda 
15160 (x2: nat).(\lambda (H3: (eq nat (S n0) (s k x2))).(\lambda (H4: (eq C c2 
15161 (CHead x1 k x0))).(\lambda (H5: (subst0 x2 v t x0)).(\lambda (H6: (csubst0 x2 
15162 v c x1)).(let H7 \def (eq_ind C c2 (\lambda (c: C).(drop (S n0) O c e)) H1 
15163 (CHead x1 k x0) H4) in ((match k return (\lambda (k0: K).((eq nat (S n0) (s 
15164 k0 x2)) \to ((drop (r k0 n0) O x1 e) \to (or4 (drop (S n0) O (CHead c k0 t) 
15165 e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
15166 (u2: T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
15167 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c k0 t) (CHead e0 
15168 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15169 (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: 
15170 C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat f) u)))))) 
15171 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) 
15172 O (CHead c k0 t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
15173 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
15174 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15175 (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
15176 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15177 k0 t) (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
15178 (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
15179 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
15180 O v e1 e2))))))))))) with [(Bind b) \Rightarrow (\lambda (H8: (eq nat (S n0) 
15181 (s (Bind b) x2))).(\lambda (H9: (drop (r (Bind b) n0) O x1 e)).(let H10 \def 
15182 (f_equal nat nat (\lambda (e0: nat).(match e0 return (\lambda (_: nat).nat) 
15183 with [O \Rightarrow n0 | (S n) \Rightarrow n])) (S n0) (S x2) H8) in (let H11 
15184 \def (eq_ind_r nat x2 (\lambda (n: nat).(csubst0 n v c x1)) H6 n0 H10) in 
15185 (let H12 \def (eq_ind_r nat x2 (\lambda (n: nat).(subst0 n v t x0)) H5 n0 
15186 H10) in (let H13 \def (IHn c x1 v H11 e H9) in (or4_ind (drop n0 O c e) 
15187 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: 
15188 T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
15189 C).(\lambda (u1: T).(\lambda (_: T).(drop n0 O c (CHead e0 (Flat f) u1)))))) 
15190 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v 
15191 u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15192 C).(\lambda (u: T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: 
15193 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop n0 O c (CHead e1 
15194 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
15195 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: 
15196 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat 
15197 f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
15198 T).(\lambda (_: T).(drop n0 O c (CHead e1 (Flat f) u1))))))) (\lambda (_: 
15199 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
15200 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
15201 (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) (or4 (drop (S n0) O (CHead c 
15202 (Bind b) t) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
15203 T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: 
15204 F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15205 (Bind b) t) (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: 
15206 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T 
15207 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e 
15208 (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
15209 C).(\lambda (u: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) 
15210 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
15211 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: 
15212 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat 
15213 f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
15214 T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) 
15215 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
15216 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
15217 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
15218 e2)))))))) (\lambda (H14: (drop n0 O c e)).(or4_intro0 (drop (S n0) O (CHead 
15219 c (Bind b) t) e) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
15220 T).(\lambda (u2: T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: 
15221 F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15222 (Bind b) t) (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: 
15223 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T 
15224 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e 
15225 (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
15226 C).(\lambda (u: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) 
15227 u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
15228 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: 
15229 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat 
15230 f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
15231 T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) 
15232 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
15233 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
15234 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
15235 (drop_drop (Bind b) n0 c e H14 t))) (\lambda (H14: (ex3_4 F C T T (\lambda 
15236 (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 
15237 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda 
15238 (_: T).(drop n0 O c (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: 
15239 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2))))))).(ex3_4_ind F C 
15240 T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
15241 (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: 
15242 T).(\lambda (_: T).(drop n0 O c (CHead e0 (Flat f) u1)))))) (\lambda (_: 
15243 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2))))) 
15244 (or4 (drop (S n0) O (CHead c (Bind b) t) e) (ex3_4 F C T T (\lambda (f: 
15245 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat 
15246 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
15247 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) (\lambda 
15248 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
15249 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15250 C).(\lambda (u: T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: 
15251 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
15252 (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
15253 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
15254 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15255 (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
15256 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15257 (Bind b) t) (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
15258 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15259 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15260 (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x3: F).(\lambda (x4: C).(\lambda 
15261 (x5: T).(\lambda (x6: T).(\lambda (H15: (eq C e (CHead x4 (Flat x3) 
15262 x6))).(\lambda (H16: (drop n0 O c (CHead x4 (Flat x3) x5))).(\lambda (H17: 
15263 (subst0 O v x5 x6)).(eq_ind_r C (CHead x4 (Flat x3) x6) (\lambda (c0: C).(or4 
15264 (drop (S n0) O (CHead c (Bind b) t) c0) (ex3_4 F C T T (\lambda (f: 
15265 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 (CHead e0 (Flat 
15266 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
15267 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) (\lambda 
15268 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
15269 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15270 C).(\lambda (u: T).(eq C c0 (CHead e2 (Flat f) u)))))) (\lambda (f: 
15271 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
15272 (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
15273 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
15274 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15275 (u2: T).(eq C c0 (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
15276 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15277 (Bind b) t) (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
15278 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15279 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15280 (_: T).(csubst0 O v e1 e2))))))))) (or4_intro1 (drop (S n0) O (CHead c (Bind 
15281 b) t) (CHead x4 (Flat x3) x6)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
15282 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x4 (Flat x3) x6) (CHead e0 
15283 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda 
15284 (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) 
15285 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v 
15286 u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15287 C).(\lambda (u: T).(eq C (CHead x4 (Flat x3) x6) (CHead e2 (Flat f) u)))))) 
15288 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) 
15289 O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda 
15290 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
15291 C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
15292 T).(\lambda (u2: T).(eq C (CHead x4 (Flat x3) x6) (CHead e2 (Flat f) 
15293 u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
15294 T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) 
15295 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
15296 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
15297 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
15298 (ex3_4_intro F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
15299 T).(\lambda (u2: T).(eq C (CHead x4 (Flat x3) x6) (CHead e0 (Flat f) u2)))))) 
15300 (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
15301 n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) (\lambda (_: 
15302 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2))))) 
15303 x3 x4 x5 x6 (refl_equal C (CHead x4 (Flat x3) x6)) (drop_drop (Bind b) n0 c 
15304 (CHead x4 (Flat x3) x5) H16 t) H17)) e H15)))))))) H14)) (\lambda (H14: 
15305 (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
15306 T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: 
15307 C).(\lambda (_: C).(\lambda (u: T).(drop n0 O c (CHead e1 (Flat f) u)))))) 
15308 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
15309 v e1 e2))))))).(ex3_4_ind F C C T (\lambda (f: F).(\lambda (_: C).(\lambda 
15310 (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat f) u)))))) (\lambda (f: 
15311 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop n0 O c (CHead e1 
15312 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
15313 (_: T).(csubst0 O v e1 e2))))) (or4 (drop (S n0) O (CHead c (Bind b) t) e) 
15314 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: 
15315 T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
15316 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) 
15317 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
15318 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
15319 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
15320 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
15321 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda 
15322 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 
15323 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15324 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) 
15325 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15326 (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1))))))) 
15327 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15328 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
15329 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda 
15330 (x3: F).(\lambda (x4: C).(\lambda (x5: C).(\lambda (x6: T).(\lambda (H15: (eq 
15331 C e (CHead x5 (Flat x3) x6))).(\lambda (H16: (drop n0 O c (CHead x4 (Flat x3) 
15332 x6))).(\lambda (H17: (csubst0 O v x4 x5)).(eq_ind_r C (CHead x5 (Flat x3) x6) 
15333 (\lambda (c0: C).(or4 (drop (S n0) O (CHead c (Bind b) t) c0) (ex3_4 F C T T 
15334 (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 
15335 (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: 
15336 T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) 
15337 u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
15338 T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: 
15339 C).(\lambda (e2: C).(\lambda (u: T).(eq C c0 (CHead e2 (Flat f) u)))))) 
15340 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) 
15341 O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda 
15342 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
15343 C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
15344 T).(\lambda (u2: T).(eq C c0 (CHead e2 (Flat f) u2))))))) (\lambda (f: 
15345 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
15346 n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1))))))) (\lambda (_: 
15347 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
15348 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
15349 (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))))) (or4_intro2 (drop (S n0) O 
15350 (CHead c (Bind b) t) (CHead x5 (Flat x3) x6)) (ex3_4 F C T T (\lambda (f: 
15351 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x5 (Flat 
15352 x3) x6) (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda 
15353 (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat 
15354 f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
15355 T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: 
15356 C).(\lambda (e2: C).(\lambda (u: T).(eq C (CHead x5 (Flat x3) x6) (CHead e2 
15357 (Flat f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
15358 (u: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) 
15359 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
15360 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15361 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x5 (Flat x3) x6) (CHead e2 
15362 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
15363 (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat 
15364 f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
15365 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
15366 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
15367 (ex3_4_intro F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15368 C).(\lambda (u: T).(eq C (CHead x5 (Flat x3) x6) (CHead e2 (Flat f) u)))))) 
15369 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) 
15370 O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda 
15371 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2))))) x3 x4 x5 x6 
15372 (refl_equal C (CHead x5 (Flat x3) x6)) (drop_drop (Bind b) n0 c (CHead x4 
15373 (Flat x3) x6) H16 t) H17)) e H15)))))))) H14)) (\lambda (H14: (ex4_5 F C C T 
15374 T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15375 (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
15376 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop n0 O c (CHead e1 
15377 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda 
15378 (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda 
15379 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 
15380 e2)))))))).(ex4_5_ind F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15381 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) 
15382 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15383 (_: T).(drop n0 O c (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
15384 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15385 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15386 (_: T).(csubst0 O v e1 e2)))))) (or4 (drop (S n0) O (CHead c (Bind b) t) e) 
15387 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: 
15388 T).(eq C e (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
15389 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) 
15390 (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
15391 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: 
15392 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
15393 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
15394 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda 
15395 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 
15396 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15397 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) 
15398 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15399 (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) u1))))))) 
15400 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15401 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
15402 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda 
15403 (x3: F).(\lambda (x4: C).(\lambda (x5: C).(\lambda (x6: T).(\lambda (x7: 
15404 T).(\lambda (H15: (eq C e (CHead x5 (Flat x3) x7))).(\lambda (H16: (drop n0 O 
15405 c (CHead x4 (Flat x3) x6))).(\lambda (H17: (subst0 O v x6 x7)).(\lambda (H18: 
15406 (csubst0 O v x4 x5)).(eq_ind_r C (CHead x5 (Flat x3) x7) (\lambda (c0: 
15407 C).(or4 (drop (S n0) O (CHead c (Bind b) t) c0) (ex3_4 F C T T (\lambda (f: 
15408 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 (CHead e0 (Flat 
15409 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
15410 T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) (\lambda 
15411 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
15412 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15413 C).(\lambda (u: T).(eq C c0 (CHead e2 (Flat f) u)))))) (\lambda (f: 
15414 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
15415 (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
15416 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
15417 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15418 (u2: T).(eq C c0 (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: 
15419 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15420 (Bind b) t) (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: 
15421 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15422 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15423 (_: T).(csubst0 O v e1 e2))))))))) (or4_intro3 (drop (S n0) O (CHead c (Bind 
15424 b) t) (CHead x5 (Flat x3) x7)) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: 
15425 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x5 (Flat x3) x7) (CHead e0 
15426 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda 
15427 (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e0 (Flat f) u1)))))) 
15428 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v 
15429 u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15430 C).(\lambda (u: T).(eq C (CHead x5 (Flat x3) x7) (CHead e2 (Flat f) u)))))) 
15431 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) 
15432 O (CHead c (Bind b) t) (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda 
15433 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C 
15434 C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
15435 T).(\lambda (u2: T).(eq C (CHead x5 (Flat x3) x7) (CHead e2 (Flat f) 
15436 u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
15437 T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat f) 
15438 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
15439 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
15440 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
15441 (ex4_5_intro F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15442 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x5 (Flat x3) x7) (CHead e2 
15443 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
15444 (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Bind b) t) (CHead e1 (Flat 
15445 f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
15446 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
15447 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
15448 x3 x4 x5 x6 x7 (refl_equal C (CHead x5 (Flat x3) x7)) (drop_drop (Bind b) n0 
15449 c (CHead x4 (Flat x3) x6) H16 t) H17 H18)) e H15)))))))))) H14)) H13))))))) | 
15450 (Flat f) \Rightarrow (\lambda (H8: (eq nat (S n0) (s (Flat f) x2))).(\lambda 
15451 (H9: (drop (r (Flat f) n0) O x1 e)).(let H10 \def (f_equal nat nat (\lambda 
15452 (e0: nat).e0) (S n0) x2 H8) in (let H11 \def (eq_ind_r nat x2 (\lambda (n: 
15453 nat).(csubst0 n v c x1)) H6 (S n0) H10) in (let H12 \def (eq_ind_r nat x2 
15454 (\lambda (n: nat).(subst0 n v t x0)) H5 (S n0) H10) in (let H13 \def (H x1 v 
15455 H11 e H9) in (or4_ind (drop (S n0) O c e) (ex3_4 F C T T (\lambda (f0: 
15456 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat 
15457 f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
15458 T).(drop (S n0) O c (CHead e0 (Flat f0) u1)))))) (\lambda (_: F).(\lambda (_: 
15459 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T 
15460 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e 
15461 (CHead e2 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
15462 C).(\lambda (u: T).(drop (S n0) O c (CHead e1 (Flat f0) u)))))) (\lambda (_: 
15463 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
15464 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
15465 (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f0) u2))))))) (\lambda (f0: 
15466 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
15467 n0) O c (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: 
15468 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15469 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15470 (_: T).(csubst0 O v e1 e2))))))) (or4 (drop (S n0) O (CHead c (Flat f) t) e) 
15471 (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
15472 (u2: T).(eq C e (CHead e0 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: 
15473 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
15474 (CHead e0 (Flat f0) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
15475 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f0: 
15476 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
15477 f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
15478 T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda 
15479 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 
15480 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15481 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f0) u2))))))) 
15482 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15483 (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1))))))) 
15484 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15485 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
15486 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda 
15487 (H14: (drop (S n0) O c e)).(or4_intro0 (drop (S n0) O (CHead c (Flat f) t) e) 
15488 (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda 
15489 (u2: T).(eq C e (CHead e0 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: 
15490 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
15491 (CHead e0 (Flat f0) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
15492 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f0: 
15493 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
15494 f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
15495 T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda 
15496 (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 
15497 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15498 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f0) u2))))))) 
15499 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15500 (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1))))))) 
15501 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15502 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
15503 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) (drop_drop 
15504 (Flat f) n0 c e H14 t))) (\lambda (H14: (ex3_4 F C T T (\lambda (f: 
15505 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat 
15506 f) u2)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
15507 T).(drop (S n0) O c (CHead e0 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: 
15508 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2))))))).(ex3_4_ind F C 
15509 T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C 
15510 e (CHead e0 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda 
15511 (u1: T).(\lambda (_: T).(drop (S n0) O c (CHead e0 (Flat f0) u1)))))) 
15512 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v 
15513 u1 u2))))) (or4 (drop (S n0) O (CHead c (Flat f) t) e) (ex3_4 F C T T 
15514 (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e 
15515 (CHead e0 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: 
15516 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) 
15517 u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
15518 T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: 
15519 C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat f0) u)))))) 
15520 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S 
15521 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: 
15522 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
15523 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
15524 (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f0) u2))))))) (\lambda (f0: 
15525 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
15526 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1))))))) (\lambda (_: 
15527 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
15528 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
15529 (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x3: F).(\lambda 
15530 (x4: C).(\lambda (x5: T).(\lambda (x6: T).(\lambda (H15: (eq C e (CHead x4 
15531 (Flat x3) x6))).(\lambda (H16: (drop (S n0) O c (CHead x4 (Flat x3) 
15532 x5))).(\lambda (H17: (subst0 O v x5 x6)).(eq_ind_r C (CHead x4 (Flat x3) x6) 
15533 (\lambda (c0: C).(or4 (drop (S n0) O (CHead c (Flat f) t) c0) (ex3_4 F C T T 
15534 (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 
15535 (CHead e0 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: 
15536 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) 
15537 u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
15538 T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: 
15539 C).(\lambda (e2: C).(\lambda (u: T).(eq C c0 (CHead e2 (Flat f0) u)))))) 
15540 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S 
15541 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: 
15542 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
15543 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
15544 (_: T).(\lambda (u2: T).(eq C c0 (CHead e2 (Flat f0) u2))))))) (\lambda (f0: 
15545 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
15546 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u1))))))) (\lambda (_: 
15547 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
15548 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
15549 (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))))) (or4_intro1 (drop (S n0) O 
15550 (CHead c (Flat f) t) (CHead x4 (Flat x3) x6)) (ex3_4 F C T T (\lambda (f0: 
15551 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x4 (Flat 
15552 x3) x6) (CHead e0 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: 
15553 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
15554 (CHead e0 (Flat f0) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
15555 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f0: 
15556 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C (CHead x4 (Flat x3) 
15557 x6) (CHead e2 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda 
15558 (_: C).(\lambda (u: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat 
15559 f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
15560 T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: 
15561 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x4 (Flat 
15562 x3) x6) (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: 
15563 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15564 (Flat f) t) (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: 
15565 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15566 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15567 (_: T).(csubst0 O v e1 e2))))))) (ex3_4_intro F C T T (\lambda (f0: 
15568 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x4 (Flat 
15569 x3) x6) (CHead e0 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: 
15570 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
15571 (CHead e0 (Flat f0) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: 
15572 T).(\lambda (u2: T).(subst0 O v u1 u2))))) x3 x4 x5 x6 (refl_equal C (CHead 
15573 x4 (Flat x3) x6)) (drop_drop (Flat f) n0 c (CHead x4 (Flat x3) x5) H16 t) 
15574 H17)) e H15)))))))) H14)) (\lambda (H14: (ex3_4 F C C T (\lambda (f: 
15575 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e (CHead e2 (Flat 
15576 f) u)))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
15577 T).(drop (S n0) O c (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: 
15578 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2))))))).(ex3_4_ind F C 
15579 C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C e 
15580 (CHead e2 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
15581 C).(\lambda (u: T).(drop (S n0) O c (CHead e1 (Flat f0) u)))))) (\lambda (_: 
15582 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2))))) 
15583 (or4 (drop (S n0) O (CHead c (Flat f) t) e) (ex3_4 F C T T (\lambda (f0: 
15584 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat 
15585 f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
15586 T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda 
15587 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
15588 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15589 C).(\lambda (u: T).(eq C e (CHead e2 (Flat f0) u)))))) (\lambda (f0: 
15590 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
15591 (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: 
15592 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
15593 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15594 (u2: T).(eq C e (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: 
15595 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15596 (Flat f) t) (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: 
15597 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15598 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15599 (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x3: F).(\lambda (x4: C).(\lambda 
15600 (x5: C).(\lambda (x6: T).(\lambda (H15: (eq C e (CHead x5 (Flat x3) 
15601 x6))).(\lambda (H16: (drop (S n0) O c (CHead x4 (Flat x3) x6))).(\lambda 
15602 (H17: (csubst0 O v x4 x5)).(eq_ind_r C (CHead x5 (Flat x3) x6) (\lambda (c0: 
15603 C).(or4 (drop (S n0) O (CHead c (Flat f) t) c0) (ex3_4 F C T T (\lambda (f0: 
15604 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 (CHead e0 (Flat 
15605 f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
15606 T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda 
15607 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
15608 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15609 C).(\lambda (u: T).(eq C c0 (CHead e2 (Flat f0) u)))))) (\lambda (f0: 
15610 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
15611 (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: 
15612 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
15613 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15614 (u2: T).(eq C c0 (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: 
15615 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15616 (Flat f) t) (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: 
15617 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15618 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15619 (_: T).(csubst0 O v e1 e2))))))))) (or4_intro2 (drop (S n0) O (CHead c (Flat 
15620 f) t) (CHead x5 (Flat x3) x6)) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
15621 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x5 (Flat x3) x6) (CHead e0 
15622 (Flat f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: 
15623 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) 
15624 u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
15625 T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: 
15626 C).(\lambda (e2: C).(\lambda (u: T).(eq C (CHead x5 (Flat x3) x6) (CHead e2 
15627 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
15628 (u: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) 
15629 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
15630 v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15631 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x5 (Flat x3) x6) (CHead e2 
15632 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
15633 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
15634 (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
15635 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
15636 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
15637 O v e1 e2))))))) (ex3_4_intro F C C T (\lambda (f0: F).(\lambda (_: 
15638 C).(\lambda (e2: C).(\lambda (u: T).(eq C (CHead x5 (Flat x3) x6) (CHead e2 
15639 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda 
15640 (u: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) 
15641 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O 
15642 v e1 e2))))) x3 x4 x5 x6 (refl_equal C (CHead x5 (Flat x3) x6)) (drop_drop 
15643 (Flat f) n0 c (CHead x4 (Flat x3) x6) H16 t) H17)) e H15)))))))) H14)) 
15644 (\lambda (H14: (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
15645 C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e2 (Flat f) u2))))))) 
15646 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15647 (_: T).(drop (S n0) O c (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda 
15648 (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
15649 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
15650 T).(\lambda (_: T).(csubst0 O v e1 e2)))))))).(ex4_5_ind F C C T T (\lambda 
15651 (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq 
15652 C e (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda 
15653 (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O c (CHead e1 (Flat f0) 
15654 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
15655 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
15656 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
15657 (or4 (drop (S n0) O (CHead c (Flat f) t) e) (ex3_4 F C T T (\lambda (f0: 
15658 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(eq C e (CHead e0 (Flat 
15659 f0) u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
15660 T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda 
15661 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
15662 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15663 C).(\lambda (u: T).(eq C e (CHead e2 (Flat f0) u)))))) (\lambda (f0: 
15664 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c 
15665 (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: 
15666 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T 
15667 (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15668 (u2: T).(eq C e (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: 
15669 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c 
15670 (Flat f) t) (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: 
15671 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15672 (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15673 (_: T).(csubst0 O v e1 e2)))))))) (\lambda (x3: F).(\lambda (x4: C).(\lambda 
15674 (x5: C).(\lambda (x6: T).(\lambda (x7: T).(\lambda (H15: (eq C e (CHead x5 
15675 (Flat x3) x7))).(\lambda (H16: (drop (S n0) O c (CHead x4 (Flat x3) 
15676 x6))).(\lambda (H17: (subst0 O v x6 x7)).(\lambda (H18: (csubst0 O v x4 
15677 x5)).(eq_ind_r C (CHead x5 (Flat x3) x7) (\lambda (c0: C).(or4 (drop (S n0) O 
15678 (CHead c (Flat f) t) c0) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: 
15679 C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 (CHead e0 (Flat f0) u2)))))) 
15680 (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop (S 
15681 n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda (_: 
15682 F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) 
15683 (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
15684 T).(eq C c0 (CHead e2 (Flat f0) u)))))) (\lambda (f0: F).(\lambda (e1: 
15685 C).(\lambda (_: C).(\lambda (u: T).(drop (S n0) O (CHead c (Flat f) t) (CHead 
15686 e1 (Flat f0) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
15687 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f0: 
15688 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C c0 
15689 (CHead e2 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
15690 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
15691 (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
15692 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
15693 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
15694 O v e1 e2))))))))) (or4_intro3 (drop (S n0) O (CHead c (Flat f) t) (CHead x5 
15695 (Flat x3) x7)) (ex3_4 F C T T (\lambda (f0: F).(\lambda (e0: C).(\lambda (_: 
15696 T).(\lambda (u2: T).(eq C (CHead x5 (Flat x3) x7) (CHead e0 (Flat f0) 
15697 u2)))))) (\lambda (f0: F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
15698 T).(drop (S n0) O (CHead c (Flat f) t) (CHead e0 (Flat f0) u1)))))) (\lambda 
15699 (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 
15700 u2)))))) (ex3_4 F C C T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15701 C).(\lambda (u: T).(eq C (CHead x5 (Flat x3) x7) (CHead e2 (Flat f0) u)))))) 
15702 (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop (S 
15703 n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) u)))))) (\lambda (_: 
15704 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 O v e1 e2)))))) 
15705 (ex4_5 F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
15706 (_: T).(\lambda (u2: T).(eq C (CHead x5 (Flat x3) x7) (CHead e2 (Flat f0) 
15707 u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
15708 T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) (CHead e1 (Flat f0) 
15709 u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
15710 T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: 
15711 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) 
15712 (ex4_5_intro F C C T T (\lambda (f0: F).(\lambda (_: C).(\lambda (e2: 
15713 C).(\lambda (_: T).(\lambda (u2: T).(eq C (CHead x5 (Flat x3) x7) (CHead e2 
15714 (Flat f0) u2))))))) (\lambda (f0: F).(\lambda (e1: C).(\lambda (_: 
15715 C).(\lambda (u1: T).(\lambda (_: T).(drop (S n0) O (CHead c (Flat f) t) 
15716 (CHead e1 (Flat f0) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
15717 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
15718 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
15719 O v e1 e2)))))) x3 x4 x5 x6 x7 (refl_equal C (CHead x5 (Flat x3) x7)) 
15720 (drop_drop (Flat f) n0 c (CHead x4 (Flat x3) x6) H16 t) H17 H18)) e 
15721 H15)))))))))) H14)) H13)))))))]) H3 (drop_gen_drop k x1 e x0 n0 H7)))))))))) 
15722 H2)) (csubst0_gen_head k c c2 t v (S n0) H0))))))))))) c1)))) n).
15723
15724 theorem csubst0_clear_O:
15725  \forall (c1: C).(\forall (c2: C).(\forall (v: T).((csubst0 O v c1 c2) \to 
15726 (\forall (c: C).((clear c1 c) \to (clear c2 c))))))
15727 \def
15728  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).(\forall (v: 
15729 T).((csubst0 O v c c2) \to (\forall (c0: C).((clear c c0) \to (clear c2 
15730 c0))))))) (\lambda (n: nat).(\lambda (c2: C).(\lambda (v: T).(\lambda (H: 
15731 (csubst0 O v (CSort n) c2)).(\lambda (c: C).(\lambda (_: (clear (CSort n) 
15732 c)).(csubst0_gen_sort c2 v O n H (clear c2 c)))))))) (\lambda (c: C).(\lambda 
15733 (H: ((\forall (c2: C).(\forall (v: T).((csubst0 O v c c2) \to (\forall (c0: 
15734 C).((clear c c0) \to (clear c2 c0)))))))).(\lambda (k: K).(\lambda (t: 
15735 T).(\lambda (c2: C).(\lambda (v: T).(\lambda (H0: (csubst0 O v (CHead c k t) 
15736 c2)).(\lambda (c0: C).(\lambda (H1: (clear (CHead c k t) c0)).(or3_ind (ex3_2 
15737 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat O (s k j)))) (\lambda (u2: 
15738 T).(\lambda (_: nat).(eq C c2 (CHead c k u2)))) (\lambda (u2: T).(\lambda (j: 
15739 nat).(subst0 j v t u2)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq 
15740 nat O (s k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k 
15741 t)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c c3)))) (ex4_3 T C nat 
15742 (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat O (s k j))))) 
15743 (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k 
15744 u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v t 
15745 u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c 
15746 c3))))) (clear c2 c0) (\lambda (H2: (ex3_2 T nat (\lambda (_: T).(\lambda (j: 
15747 nat).(eq nat O (s k j)))) (\lambda (u2: T).(\lambda (_: nat).(eq C c2 (CHead 
15748 c k u2)))) (\lambda (u2: T).(\lambda (j: nat).(subst0 j v t 
15749 u2))))).(ex3_2_ind T nat (\lambda (_: T).(\lambda (j: nat).(eq nat O (s k 
15750 j)))) (\lambda (u2: T).(\lambda (_: nat).(eq C c2 (CHead c k u2)))) (\lambda 
15751 (u2: T).(\lambda (j: nat).(subst0 j v t u2))) (clear c2 c0) (\lambda (x0: 
15752 T).(\lambda (x1: nat).(\lambda (H3: (eq nat O (s k x1))).(\lambda (H4: (eq C 
15753 c2 (CHead c k x0))).(\lambda (H5: (subst0 x1 v t x0)).(eq_ind_r C (CHead c k 
15754 x0) (\lambda (c3: C).(clear c3 c0)) ((match k return (\lambda (k0: K).((clear 
15755 (CHead c k0 t) c0) \to ((eq nat O (s k0 x1)) \to (clear (CHead c k0 x0) 
15756 c0)))) with [(Bind b) \Rightarrow (\lambda (_: (clear (CHead c (Bind b) t) 
15757 c0)).(\lambda (H7: (eq nat O (s (Bind b) x1))).(let H8 \def (eq_ind nat O 
15758 (\lambda (ee: nat).(match ee return (\lambda (_: nat).Prop) with [O 
15759 \Rightarrow True | (S _) \Rightarrow False])) I (S x1) H7) in (False_ind 
15760 (clear (CHead c (Bind b) x0) c0) H8)))) | (Flat f) \Rightarrow (\lambda (H6: 
15761 (clear (CHead c (Flat f) t) c0)).(\lambda (H7: (eq nat O (s (Flat f) 
15762 x1))).(let H8 \def (eq_ind_r nat x1 (\lambda (n: nat).(subst0 n v t x0)) H5 O 
15763 H7) in (clear_flat c c0 (clear_gen_flat f c c0 t H6) f x0))))]) H1 H3) c2 
15764 H4)))))) H2)) (\lambda (H2: (ex3_2 C nat (\lambda (_: C).(\lambda (j: 
15765 nat).(eq nat O (s k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead 
15766 c3 k t)))) (\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c 
15767 c2))))).(ex3_2_ind C nat (\lambda (_: C).(\lambda (j: nat).(eq nat O (s k 
15768 j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k t)))) (\lambda 
15769 (c3: C).(\lambda (j: nat).(csubst0 j v c c3))) (clear c2 c0) (\lambda (x0: 
15770 C).(\lambda (x1: nat).(\lambda (H3: (eq nat O (s k x1))).(\lambda (H4: (eq C 
15771 c2 (CHead x0 k t))).(\lambda (H5: (csubst0 x1 v c x0)).(eq_ind_r C (CHead x0 
15772 k t) (\lambda (c3: C).(clear c3 c0)) ((match k return (\lambda (k0: 
15773 K).((clear (CHead c k0 t) c0) \to ((eq nat O (s k0 x1)) \to (clear (CHead x0 
15774 k0 t) c0)))) with [(Bind b) \Rightarrow (\lambda (_: (clear (CHead c (Bind b) 
15775 t) c0)).(\lambda (H7: (eq nat O (s (Bind b) x1))).(let H8 \def (eq_ind nat O 
15776 (\lambda (ee: nat).(match ee return (\lambda (_: nat).Prop) with [O 
15777 \Rightarrow True | (S _) \Rightarrow False])) I (S x1) H7) in (False_ind 
15778 (clear (CHead x0 (Bind b) t) c0) H8)))) | (Flat f) \Rightarrow (\lambda (H6: 
15779 (clear (CHead c (Flat f) t) c0)).(\lambda (H7: (eq nat O (s (Flat f) 
15780 x1))).(let H8 \def (eq_ind_r nat x1 (\lambda (n: nat).(csubst0 n v c x0)) H5 
15781 O H7) in (clear_flat x0 c0 (H x0 v H8 c0 (clear_gen_flat f c c0 t H6)) f 
15782 t))))]) H1 H3) c2 H4)))))) H2)) (\lambda (H2: (ex4_3 T C nat (\lambda (_: 
15783 T).(\lambda (_: C).(\lambda (j: nat).(eq nat O (s k j))))) (\lambda (u2: 
15784 T).(\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k u2))))) (\lambda 
15785 (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v t u2)))) (\lambda (_: 
15786 T).(\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c c2)))))).(ex4_3_ind T C 
15787 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat O (s k j))))) 
15788 (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k 
15789 u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v t 
15790 u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c 
15791 c3)))) (clear c2 c0) (\lambda (x0: T).(\lambda (x1: C).(\lambda (x2: 
15792 nat).(\lambda (H3: (eq nat O (s k x2))).(\lambda (H4: (eq C c2 (CHead x1 k 
15793 x0))).(\lambda (H5: (subst0 x2 v t x0)).(\lambda (H6: (csubst0 x2 v c 
15794 x1)).(eq_ind_r C (CHead x1 k x0) (\lambda (c3: C).(clear c3 c0)) ((match k 
15795 return (\lambda (k0: K).((clear (CHead c k0 t) c0) \to ((eq nat O (s k0 x2)) 
15796 \to (clear (CHead x1 k0 x0) c0)))) with [(Bind b) \Rightarrow (\lambda (_: 
15797 (clear (CHead c (Bind b) t) c0)).(\lambda (H8: (eq nat O (s (Bind b) 
15798 x2))).(let H9 \def (eq_ind nat O (\lambda (ee: nat).(match ee return (\lambda 
15799 (_: nat).Prop) with [O \Rightarrow True | (S _) \Rightarrow False])) I (S x2) 
15800 H8) in (False_ind (clear (CHead x1 (Bind b) x0) c0) H9)))) | (Flat f) 
15801 \Rightarrow (\lambda (H7: (clear (CHead c (Flat f) t) c0)).(\lambda (H8: (eq 
15802 nat O (s (Flat f) x2))).(let H9 \def (eq_ind_r nat x2 (\lambda (n: 
15803 nat).(csubst0 n v c x1)) H6 O H8) in (let H10 \def (eq_ind_r nat x2 (\lambda 
15804 (n: nat).(subst0 n v t x0)) H5 O H8) in (clear_flat x1 c0 (H x1 v H9 c0 
15805 (clear_gen_flat f c c0 t H7)) f x0)))))]) H1 H3) c2 H4)))))))) H2)) 
15806 (csubst0_gen_head k c c2 t v O H0))))))))))) c1).
15807
15808 theorem csubst0_clear_O_back:
15809  \forall (c1: C).(\forall (c2: C).(\forall (v: T).((csubst0 O v c1 c2) \to 
15810 (\forall (c: C).((clear c2 c) \to (clear c1 c))))))
15811 \def
15812  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).(\forall (v: 
15813 T).((csubst0 O v c c2) \to (\forall (c0: C).((clear c2 c0) \to (clear c 
15814 c0))))))) (\lambda (n: nat).(\lambda (c2: C).(\lambda (v: T).(\lambda (H: 
15815 (csubst0 O v (CSort n) c2)).(\lambda (c: C).(\lambda (_: (clear c2 
15816 c)).(csubst0_gen_sort c2 v O n H (clear (CSort n) c)))))))) (\lambda (c: 
15817 C).(\lambda (H: ((\forall (c2: C).(\forall (v: T).((csubst0 O v c c2) \to 
15818 (\forall (c0: C).((clear c2 c0) \to (clear c c0)))))))).(\lambda (k: 
15819 K).(\lambda (t: T).(\lambda (c2: C).(\lambda (v: T).(\lambda (H0: (csubst0 O 
15820 v (CHead c k t) c2)).(\lambda (c0: C).(\lambda (H1: (clear c2 c0)).(or3_ind 
15821 (ex3_2 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat O (s k j)))) (\lambda 
15822 (u2: T).(\lambda (_: nat).(eq C c2 (CHead c k u2)))) (\lambda (u2: 
15823 T).(\lambda (j: nat).(subst0 j v t u2)))) (ex3_2 C nat (\lambda (_: 
15824 C).(\lambda (j: nat).(eq nat O (s k j)))) (\lambda (c3: C).(\lambda (_: 
15825 nat).(eq C c2 (CHead c3 k t)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j 
15826 v c c3)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: 
15827 nat).(eq nat O (s k j))))) (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: 
15828 nat).(eq C c2 (CHead c3 k u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda 
15829 (j: nat).(subst0 j v t u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: 
15830 nat).(csubst0 j v c c3))))) (clear (CHead c k t) c0) (\lambda (H2: (ex3_2 T 
15831 nat (\lambda (_: T).(\lambda (j: nat).(eq nat O (s k j)))) (\lambda (u2: 
15832 T).(\lambda (_: nat).(eq C c2 (CHead c k u2)))) (\lambda (u2: T).(\lambda (j: 
15833 nat).(subst0 j v t u2))))).(ex3_2_ind T nat (\lambda (_: T).(\lambda (j: 
15834 nat).(eq nat O (s k j)))) (\lambda (u2: T).(\lambda (_: nat).(eq C c2 (CHead 
15835 c k u2)))) (\lambda (u2: T).(\lambda (j: nat).(subst0 j v t u2))) (clear 
15836 (CHead c k t) c0) (\lambda (x0: T).(\lambda (x1: nat).(\lambda (H3: (eq nat O 
15837 (s k x1))).(\lambda (H4: (eq C c2 (CHead c k x0))).(\lambda (H5: (subst0 x1 v 
15838 t x0)).(let H6 \def (eq_ind C c2 (\lambda (c: C).(clear c c0)) H1 (CHead c k 
15839 x0) H4) in ((match k return (\lambda (k0: K).((eq nat O (s k0 x1)) \to 
15840 ((clear (CHead c k0 x0) c0) \to (clear (CHead c k0 t) c0)))) with [(Bind b) 
15841 \Rightarrow (\lambda (H7: (eq nat O (s (Bind b) x1))).(\lambda (_: (clear 
15842 (CHead c (Bind b) x0) c0)).(let H9 \def (eq_ind nat O (\lambda (ee: 
15843 nat).(match ee return (\lambda (_: nat).Prop) with [O \Rightarrow True | (S 
15844 _) \Rightarrow False])) I (S x1) H7) in (False_ind (clear (CHead c (Bind b) 
15845 t) c0) H9)))) | (Flat f) \Rightarrow (\lambda (H7: (eq nat O (s (Flat f) 
15846 x1))).(\lambda (H8: (clear (CHead c (Flat f) x0) c0)).(let H9 \def (eq_ind_r 
15847 nat x1 (\lambda (n: nat).(subst0 n v t x0)) H5 O H7) in (clear_flat c c0 
15848 (clear_gen_flat f c c0 x0 H8) f t))))]) H3 H6))))))) H2)) (\lambda (H2: 
15849 (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq nat O (s k j)))) (\lambda 
15850 (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k t)))) (\lambda (c2: 
15851 C).(\lambda (j: nat).(csubst0 j v c c2))))).(ex3_2_ind C nat (\lambda (_: 
15852 C).(\lambda (j: nat).(eq nat O (s k j)))) (\lambda (c3: C).(\lambda (_: 
15853 nat).(eq C c2 (CHead c3 k t)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j 
15854 v c c3))) (clear (CHead c k t) c0) (\lambda (x0: C).(\lambda (x1: 
15855 nat).(\lambda (H3: (eq nat O (s k x1))).(\lambda (H4: (eq C c2 (CHead x0 k 
15856 t))).(\lambda (H5: (csubst0 x1 v c x0)).(let H6 \def (eq_ind C c2 (\lambda 
15857 (c: C).(clear c c0)) H1 (CHead x0 k t) H4) in ((match k return (\lambda (k0: 
15858 K).((eq nat O (s k0 x1)) \to ((clear (CHead x0 k0 t) c0) \to (clear (CHead c 
15859 k0 t) c0)))) with [(Bind b) \Rightarrow (\lambda (H7: (eq nat O (s (Bind b) 
15860 x1))).(\lambda (_: (clear (CHead x0 (Bind b) t) c0)).(let H9 \def (eq_ind nat 
15861 O (\lambda (ee: nat).(match ee return (\lambda (_: nat).Prop) with [O 
15862 \Rightarrow True | (S _) \Rightarrow False])) I (S x1) H7) in (False_ind 
15863 (clear (CHead c (Bind b) t) c0) H9)))) | (Flat f) \Rightarrow (\lambda (H7: 
15864 (eq nat O (s (Flat f) x1))).(\lambda (H8: (clear (CHead x0 (Flat f) t) 
15865 c0)).(let H9 \def (eq_ind_r nat x1 (\lambda (n: nat).(csubst0 n v c x0)) H5 O 
15866 H7) in (clear_flat c c0 (H x0 v H9 c0 (clear_gen_flat f x0 c0 t H8)) f 
15867 t))))]) H3 H6))))))) H2)) (\lambda (H2: (ex4_3 T C nat (\lambda (_: 
15868 T).(\lambda (_: C).(\lambda (j: nat).(eq nat O (s k j))))) (\lambda (u2: 
15869 T).(\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k u2))))) (\lambda 
15870 (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v t u2)))) (\lambda (_: 
15871 T).(\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c c2)))))).(ex4_3_ind T C 
15872 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat O (s k j))))) 
15873 (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k 
15874 u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v t 
15875 u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c 
15876 c3)))) (clear (CHead c k t) c0) (\lambda (x0: T).(\lambda (x1: C).(\lambda 
15877 (x2: nat).(\lambda (H3: (eq nat O (s k x2))).(\lambda (H4: (eq C c2 (CHead x1 
15878 k x0))).(\lambda (H5: (subst0 x2 v t x0)).(\lambda (H6: (csubst0 x2 v c 
15879 x1)).(let H7 \def (eq_ind C c2 (\lambda (c: C).(clear c c0)) H1 (CHead x1 k 
15880 x0) H4) in ((match k return (\lambda (k0: K).((eq nat O (s k0 x2)) \to 
15881 ((clear (CHead x1 k0 x0) c0) \to (clear (CHead c k0 t) c0)))) with [(Bind b) 
15882 \Rightarrow (\lambda (H8: (eq nat O (s (Bind b) x2))).(\lambda (_: (clear 
15883 (CHead x1 (Bind b) x0) c0)).(let H10 \def (eq_ind nat O (\lambda (ee: 
15884 nat).(match ee return (\lambda (_: nat).Prop) with [O \Rightarrow True | (S 
15885 _) \Rightarrow False])) I (S x2) H8) in (False_ind (clear (CHead c (Bind b) 
15886 t) c0) H10)))) | (Flat f) \Rightarrow (\lambda (H8: (eq nat O (s (Flat f) 
15887 x2))).(\lambda (H9: (clear (CHead x1 (Flat f) x0) c0)).(let H10 \def 
15888 (eq_ind_r nat x2 (\lambda (n: nat).(csubst0 n v c x1)) H6 O H8) in (let H11 
15889 \def (eq_ind_r nat x2 (\lambda (n: nat).(subst0 n v t x0)) H5 O H8) in 
15890 (clear_flat c c0 (H x1 v H10 c0 (clear_gen_flat f x1 c0 x0 H9)) f t)))))]) H3 
15891 H7))))))))) H2)) (csubst0_gen_head k c c2 t v O H0))))))))))) c1).
15892
15893 theorem csubst0_clear_S:
15894  \forall (c1: C).(\forall (c2: C).(\forall (v: T).(\forall (i: nat).((csubst0 
15895 (S i) v c1 c2) \to (\forall (c: C).((clear c1 c) \to (or4 (clear c2 c) (ex3_4 
15896 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq 
15897 C c (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: 
15898 T).(\lambda (u2: T).(clear c2 (CHead e (Bind b) u2)))))) (\lambda (_: 
15899 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
15900 (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
15901 T).(eq C c (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: 
15902 C).(\lambda (e2: C).(\lambda (u: T).(clear c2 (CHead e2 (Bind b) u)))))) 
15903 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i 
15904 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
15905 C).(\lambda (u1: T).(\lambda (_: T).(eq C c (CHead e1 (Bind b) u1))))))) 
15906 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15907 (u2: T).(clear c2 (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: 
15908 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
15909 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
15910 (_: T).(csubst0 i v e1 e2))))))))))))))
15911 \def
15912  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).(\forall (v: 
15913 T).(\forall (i: nat).((csubst0 (S i) v c c2) \to (\forall (c0: C).((clear c 
15914 c0) \to (or4 (clear c2 c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: 
15915 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) 
15916 (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear c2 
15917 (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
15918 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: 
15919 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind 
15920 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
15921 T).(clear c2 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
15922 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T 
15923 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15924 (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: 
15925 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear c2 (CHead e2 
15926 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
15927 (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda 
15928 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
15929 e2))))))))))))))) (\lambda (n: nat).(\lambda (c2: C).(\lambda (v: T).(\lambda 
15930 (i: nat).(\lambda (H: (csubst0 (S i) v (CSort n) c2)).(\lambda (c: 
15931 C).(\lambda (_: (clear (CSort n) c)).(csubst0_gen_sort c2 v (S i) n H (or4 
15932 (clear c2 c) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: 
15933 T).(\lambda (_: T).(eq C c (CHead e (Bind b) u1)))))) (\lambda (b: 
15934 B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear c2 (CHead e (Bind 
15935 b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
15936 T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
15937 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 (Bind b) u)))))) 
15938 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear c2 
15939 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
15940 C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
15941 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c 
15942 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
15943 C).(\lambda (_: T).(\lambda (u2: T).(clear c2 (CHead e2 (Bind b) u2))))))) 
15944 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15945 (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda 
15946 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 e2)))))))))))))))) 
15947 (\lambda (c: C).(\lambda (H: ((\forall (c2: C).(\forall (v: T).(\forall (i: 
15948 nat).((csubst0 (S i) v c c2) \to (\forall (c0: C).((clear c c0) \to (or4 
15949 (clear c2 c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: 
15950 T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) (\lambda (b: 
15951 B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear c2 (CHead e (Bind 
15952 b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
15953 T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
15954 C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) 
15955 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear c2 
15956 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
15957 C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
15958 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
15959 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
15960 C).(\lambda (_: T).(\lambda (u2: T).(clear c2 (CHead e2 (Bind b) u2))))))) 
15961 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
15962 (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda 
15963 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
15964 e2)))))))))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c2: C).(\lambda 
15965 (v: T).(\lambda (i: nat).(\lambda (H0: (csubst0 (S i) v (CHead c k t) 
15966 c2)).(\lambda (c0: C).(\lambda (H1: (clear (CHead c k t) c0)).(or3_ind (ex3_2 
15967 T nat (\lambda (_: T).(\lambda (j: nat).(eq nat (S i) (s k j)))) (\lambda 
15968 (u2: T).(\lambda (_: nat).(eq C c2 (CHead c k u2)))) (\lambda (u2: 
15969 T).(\lambda (j: nat).(subst0 j v t u2)))) (ex3_2 C nat (\lambda (_: 
15970 C).(\lambda (j: nat).(eq nat (S i) (s k j)))) (\lambda (c3: C).(\lambda (_: 
15971 nat).(eq C c2 (CHead c3 k t)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j 
15972 v c c3)))) (ex4_3 T C nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: 
15973 nat).(eq nat (S i) (s k j))))) (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: 
15974 nat).(eq C c2 (CHead c3 k u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda 
15975 (j: nat).(subst0 j v t u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: 
15976 nat).(csubst0 j v c c3))))) (or4 (clear c2 c0) (ex3_4 B C T T (\lambda (b: 
15977 B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind 
15978 b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: 
15979 T).(clear c2 (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: 
15980 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T 
15981 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 
15982 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
15983 C).(\lambda (u: T).(clear c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
15984 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) 
15985 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
15986 (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: 
15987 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
15988 c2 (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
15989 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: 
15990 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
15991 i v e1 e2)))))))) (\lambda (H2: (ex3_2 T nat (\lambda (_: T).(\lambda (j: 
15992 nat).(eq nat (S i) (s k j)))) (\lambda (u2: T).(\lambda (_: nat).(eq C c2 
15993 (CHead c k u2)))) (\lambda (u2: T).(\lambda (j: nat).(subst0 j v t 
15994 u2))))).(ex3_2_ind T nat (\lambda (_: T).(\lambda (j: nat).(eq nat (S i) (s k 
15995 j)))) (\lambda (u2: T).(\lambda (_: nat).(eq C c2 (CHead c k u2)))) (\lambda 
15996 (u2: T).(\lambda (j: nat).(subst0 j v t u2))) (or4 (clear c2 c0) (ex3_4 B C T 
15997 T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
15998 (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: 
15999 T).(\lambda (u2: T).(clear c2 (CHead e (Bind b) u2)))))) (\lambda (_: 
16000 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16001 (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16002 T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: 
16003 C).(\lambda (e2: C).(\lambda (u: T).(clear c2 (CHead e2 (Bind b) u)))))) 
16004 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i 
16005 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16006 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) 
16007 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16008 (u2: T).(clear c2 (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: 
16009 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16010 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16011 (_: T).(csubst0 i v e1 e2)))))))) (\lambda (x0: T).(\lambda (x1: 
16012 nat).(\lambda (H3: (eq nat (S i) (s k x1))).(\lambda (H4: (eq C c2 (CHead c k 
16013 x0))).(\lambda (H5: (subst0 x1 v t x0)).(eq_ind_r C (CHead c k x0) (\lambda 
16014 (c3: C).(or4 (clear c3 c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: 
16015 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) 
16016 (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear c3 
16017 (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
16018 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: 
16019 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind 
16020 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
16021 T).(clear c3 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
16022 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T 
16023 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
16024 (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: 
16025 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear c3 (CHead e2 
16026 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
16027 (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda 
16028 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16029 e2))))))))) ((match k return (\lambda (k0: K).((clear (CHead c k0 t) c0) \to 
16030 ((eq nat (S i) (s k0 x1)) \to (or4 (clear (CHead c k0 x0) c0) (ex3_4 B C T T 
16031 (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
16032 (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: 
16033 T).(\lambda (u2: T).(clear (CHead c k0 x0) (CHead e (Bind b) u2)))))) 
16034 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v 
16035 u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16036 C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: 
16037 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead c k0 x0) 
16038 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16039 C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
16040 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
16041 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16042 C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead c k0 x0) (CHead e2 (Bind b) 
16043 u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
16044 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: 
16045 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16046 e2))))))))))) with [(Bind b) \Rightarrow (\lambda (H6: (clear (CHead c (Bind 
16047 b) t) c0)).(\lambda (H7: (eq nat (S i) (s (Bind b) x1))).(let H8 \def 
16048 (f_equal nat nat (\lambda (e: nat).(match e return (\lambda (_: nat).nat) 
16049 with [O \Rightarrow i | (S n) \Rightarrow n])) (S i) (S x1) H7) in (let H9 
16050 \def (eq_ind_r nat x1 (\lambda (n: nat).(subst0 n v t x0)) H5 i H8) in 
16051 (eq_ind_r C (CHead c (Bind b) t) (\lambda (c3: C).(or4 (clear (CHead c (Bind 
16052 b) x0) c3) (ex3_4 B C T T (\lambda (b0: B).(\lambda (e: C).(\lambda (u1: 
16053 T).(\lambda (_: T).(eq C c3 (CHead e (Bind b0) u1)))))) (\lambda (b0: 
16054 B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead c (Bind b) 
16055 x0) (CHead e (Bind b0) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
16056 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b0: 
16057 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c3 (CHead e1 (Bind 
16058 b0) u)))))) (\lambda (b0: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
16059 T).(clear (CHead c (Bind b) x0) (CHead e2 (Bind b0) u)))))) (\lambda (_: 
16060 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) 
16061 (ex4_5 B C C T T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
16062 (u1: T).(\lambda (_: T).(eq C c3 (CHead e1 (Bind b0) u1))))))) (\lambda (b0: 
16063 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16064 (CHead c (Bind b) x0) (CHead e2 (Bind b0) u2))))))) (\lambda (_: B).(\lambda 
16065 (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 
16066 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16067 T).(\lambda (_: T).(csubst0 i v e1 e2))))))))) (or4_intro1 (clear (CHead c 
16068 (Bind b) x0) (CHead c (Bind b) t)) (ex3_4 B C T T (\lambda (b0: B).(\lambda 
16069 (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead c (Bind b) t) (CHead e 
16070 (Bind b0) u1)))))) (\lambda (b0: B).(\lambda (e: C).(\lambda (_: T).(\lambda 
16071 (u2: T).(clear (CHead c (Bind b) x0) (CHead e (Bind b0) u2)))))) (\lambda (_: 
16072 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16073 (ex3_4 B C C T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16074 T).(eq C (CHead c (Bind b) t) (CHead e1 (Bind b0) u)))))) (\lambda (b0: 
16075 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead c (Bind b) 
16076 x0) (CHead e2 (Bind b0) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda 
16077 (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda 
16078 (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq 
16079 C (CHead c (Bind b) t) (CHead e1 (Bind b0) u1))))))) (\lambda (b0: 
16080 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16081 (CHead c (Bind b) x0) (CHead e2 (Bind b0) u2))))))) (\lambda (_: B).(\lambda 
16082 (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 
16083 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16084 T).(\lambda (_: T).(csubst0 i v e1 e2))))))) (ex3_4_intro B C T T (\lambda 
16085 (b0: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead c (Bind 
16086 b) t) (CHead e (Bind b0) u1)))))) (\lambda (b0: B).(\lambda (e: C).(\lambda 
16087 (_: T).(\lambda (u2: T).(clear (CHead c (Bind b) x0) (CHead e (Bind b0) 
16088 u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
16089 T).(subst0 i v u1 u2))))) b c t x0 (refl_equal C (CHead c (Bind b) t)) 
16090 (clear_bind b c x0) H9)) c0 (clear_gen_bind b c c0 t H6)))))) | (Flat f) 
16091 \Rightarrow (\lambda (H6: (clear (CHead c (Flat f) t) c0)).(\lambda (H7: (eq 
16092 nat (S i) (s (Flat f) x1))).(let H8 \def (f_equal nat nat (\lambda (e: 
16093 nat).e) (S i) (s (Flat f) x1) H7) in (let H9 \def (eq_ind_r nat x1 (\lambda 
16094 (n: nat).(subst0 n v t x0)) H5 (S i) H8) in (or4_intro0 (clear (CHead c (Flat 
16095 f) x0) c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: 
16096 T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) (\lambda (b: 
16097 B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead c (Flat f) 
16098 x0) (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
16099 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: 
16100 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind 
16101 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
16102 T).(clear (CHead c (Flat f) x0) (CHead e2 (Bind b) u)))))) (\lambda (_: 
16103 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) 
16104 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
16105 (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: 
16106 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16107 (CHead c (Flat f) x0) (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda 
16108 (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 
16109 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16110 T).(\lambda (_: T).(csubst0 i v e1 e2))))))) (clear_flat c c0 (clear_gen_flat 
16111 f c c0 t H6) f x0))))))]) H1 H3) c2 H4)))))) H2)) (\lambda (H2: (ex3_2 C nat 
16112 (\lambda (_: C).(\lambda (j: nat).(eq nat (S i) (s k j)))) (\lambda (c3: 
16113 C).(\lambda (_: nat).(eq C c2 (CHead c3 k t)))) (\lambda (c2: C).(\lambda (j: 
16114 nat).(csubst0 j v c c2))))).(ex3_2_ind C nat (\lambda (_: C).(\lambda (j: 
16115 nat).(eq nat (S i) (s k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C c2 
16116 (CHead c3 k t)))) (\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c c3))) 
16117 (or4 (clear c2 c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda 
16118 (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) (\lambda (b: 
16119 B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear c2 (CHead e (Bind 
16120 b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
16121 T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
16122 C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) 
16123 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear c2 
16124 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16125 C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
16126 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
16127 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16128 C).(\lambda (_: T).(\lambda (u2: T).(clear c2 (CHead e2 (Bind b) u2))))))) 
16129 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
16130 (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda 
16131 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 e2)))))))) (\lambda 
16132 (x0: C).(\lambda (x1: nat).(\lambda (H3: (eq nat (S i) (s k x1))).(\lambda 
16133 (H4: (eq C c2 (CHead x0 k t))).(\lambda (H5: (csubst0 x1 v c x0)).(eq_ind_r C 
16134 (CHead x0 k t) (\lambda (c3: C).(or4 (clear c3 c0) (ex3_4 B C T T (\lambda 
16135 (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e 
16136 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda 
16137 (u2: T).(clear c3 (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: 
16138 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T 
16139 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 
16140 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16141 C).(\lambda (u: T).(clear c3 (CHead e2 (Bind b) u)))))) (\lambda (_: 
16142 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) 
16143 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
16144 (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: 
16145 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16146 c3 (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
16147 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: 
16148 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
16149 i v e1 e2))))))))) ((match k return (\lambda (k0: K).((clear (CHead c k0 t) 
16150 c0) \to ((eq nat (S i) (s k0 x1)) \to (or4 (clear (CHead x0 k0 t) c0) (ex3_4 
16151 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq 
16152 C c0 (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: 
16153 T).(\lambda (u2: T).(clear (CHead x0 k0 t) (CHead e (Bind b) u2)))))) 
16154 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v 
16155 u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16156 C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: 
16157 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x0 k0 t) 
16158 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16159 C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
16160 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
16161 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16162 C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x0 k0 t) (CHead e2 (Bind b) 
16163 u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
16164 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: 
16165 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16166 e2))))))))))) with [(Bind b) \Rightarrow (\lambda (H6: (clear (CHead c (Bind 
16167 b) t) c0)).(\lambda (H7: (eq nat (S i) (s (Bind b) x1))).(let H8 \def 
16168 (f_equal nat nat (\lambda (e: nat).(match e return (\lambda (_: nat).nat) 
16169 with [O \Rightarrow i | (S n) \Rightarrow n])) (S i) (S x1) H7) in (let H9 
16170 \def (eq_ind_r nat x1 (\lambda (n: nat).(csubst0 n v c x0)) H5 i H8) in 
16171 (eq_ind_r C (CHead c (Bind b) t) (\lambda (c3: C).(or4 (clear (CHead x0 (Bind 
16172 b) t) c3) (ex3_4 B C T T (\lambda (b0: B).(\lambda (e: C).(\lambda (u1: 
16173 T).(\lambda (_: T).(eq C c3 (CHead e (Bind b0) u1)))))) (\lambda (b0: 
16174 B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x0 (Bind b) 
16175 t) (CHead e (Bind b0) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
16176 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b0: 
16177 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c3 (CHead e1 (Bind 
16178 b0) u)))))) (\lambda (b0: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
16179 T).(clear (CHead x0 (Bind b) t) (CHead e2 (Bind b0) u)))))) (\lambda (_: 
16180 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) 
16181 (ex4_5 B C C T T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
16182 (u1: T).(\lambda (_: T).(eq C c3 (CHead e1 (Bind b0) u1))))))) (\lambda (b0: 
16183 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16184 (CHead x0 (Bind b) t) (CHead e2 (Bind b0) u2))))))) (\lambda (_: B).(\lambda 
16185 (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 
16186 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16187 T).(\lambda (_: T).(csubst0 i v e1 e2))))))))) (or4_intro2 (clear (CHead x0 
16188 (Bind b) t) (CHead c (Bind b) t)) (ex3_4 B C T T (\lambda (b0: B).(\lambda 
16189 (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead c (Bind b) t) (CHead e 
16190 (Bind b0) u1)))))) (\lambda (b0: B).(\lambda (e: C).(\lambda (_: T).(\lambda 
16191 (u2: T).(clear (CHead x0 (Bind b) t) (CHead e (Bind b0) u2)))))) (\lambda (_: 
16192 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16193 (ex3_4 B C C T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16194 T).(eq C (CHead c (Bind b) t) (CHead e1 (Bind b0) u)))))) (\lambda (b0: 
16195 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x0 (Bind b) 
16196 t) (CHead e2 (Bind b0) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16197 C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b0: 
16198 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C 
16199 (CHead c (Bind b) t) (CHead e1 (Bind b0) u1))))))) (\lambda (b0: B).(\lambda 
16200 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x0 
16201 (Bind b) t) (CHead e2 (Bind b0) u2))))))) (\lambda (_: B).(\lambda (_: 
16202 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16203 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16204 (_: T).(csubst0 i v e1 e2))))))) (ex3_4_intro B C C T (\lambda (b0: 
16205 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead c (Bind b) 
16206 t) (CHead e1 (Bind b0) u)))))) (\lambda (b0: B).(\lambda (_: C).(\lambda (e2: 
16207 C).(\lambda (u: T).(clear (CHead x0 (Bind b) t) (CHead e2 (Bind b0) u)))))) 
16208 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i 
16209 v e1 e2))))) b c x0 t (refl_equal C (CHead c (Bind b) t)) (clear_bind b x0 t) 
16210 H9)) c0 (clear_gen_bind b c c0 t H6)))))) | (Flat f) \Rightarrow (\lambda 
16211 (H6: (clear (CHead c (Flat f) t) c0)).(\lambda (H7: (eq nat (S i) (s (Flat f) 
16212 x1))).(let H8 \def (f_equal nat nat (\lambda (e: nat).e) (S i) (s (Flat f) 
16213 x1) H7) in (let H9 \def (eq_ind_r nat x1 (\lambda (n: nat).(csubst0 n v c 
16214 x0)) H5 (S i) H8) in (let H10 \def (H x0 v i H9 c0 (clear_gen_flat f c c0 t 
16215 H6)) in (or4_ind (clear x0 c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: 
16216 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) 
16217 (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear x0 
16218 (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
16219 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: 
16220 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind 
16221 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
16222 T).(clear x0 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
16223 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T 
16224 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
16225 (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: 
16226 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear x0 (CHead e2 
16227 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
16228 (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda 
16229 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16230 e2))))))) (or4 (clear (CHead x0 (Flat f) t) c0) (ex3_4 B C T T (\lambda (b: 
16231 B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind 
16232 b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: 
16233 T).(clear (CHead x0 (Flat f) t) (CHead e (Bind b) u2)))))) (\lambda (_: 
16234 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16235 (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16236 T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: 
16237 C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x0 (Flat f) t) (CHead e2 
16238 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16239 (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda 
16240 (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 
16241 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
16242 (_: T).(\lambda (u2: T).(clear (CHead x0 (Flat f) t) (CHead e2 (Bind b) 
16243 u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
16244 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: 
16245 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16246 e2)))))))) (\lambda (H11: (clear x0 c0)).(or4_intro0 (clear (CHead x0 (Flat 
16247 f) t) c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: 
16248 T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) (\lambda (b: 
16249 B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x0 (Flat f) 
16250 t) (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
16251 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: 
16252 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind 
16253 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
16254 T).(clear (CHead x0 (Flat f) t) (CHead e2 (Bind b) u)))))) (\lambda (_: 
16255 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) 
16256 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
16257 (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: 
16258 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16259 (CHead x0 (Flat f) t) (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda 
16260 (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 
16261 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16262 T).(\lambda (_: T).(csubst0 i v e1 e2))))))) (clear_flat x0 c0 H11 f t))) 
16263 (\lambda (H11: (ex3_4 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: 
16264 T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) (\lambda (b: 
16265 B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear x0 (CHead e (Bind 
16266 b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
16267 T).(subst0 i v u1 u2))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e: 
16268 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) 
16269 (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear x0 
16270 (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
16271 T).(\lambda (u2: T).(subst0 i v u1 u2))))) (or4 (clear (CHead x0 (Flat f) t) 
16272 c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda 
16273 (_: T).(eq C c0 (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: 
16274 C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x0 (Flat f) t) (CHead e 
16275 (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda 
16276 (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
16277 C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) 
16278 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear 
16279 (CHead x0 (Flat f) t) (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda 
16280 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C 
16281 C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
16282 T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: 
16283 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16284 (CHead x0 (Flat f) t) (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda 
16285 (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 
16286 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16287 T).(\lambda (_: T).(csubst0 i v e1 e2)))))))) (\lambda (x2: B).(\lambda (x3: 
16288 C).(\lambda (x4: T).(\lambda (x5: T).(\lambda (H12: (eq C c0 (CHead x3 (Bind 
16289 x2) x4))).(\lambda (H13: (clear x0 (CHead x3 (Bind x2) x5))).(\lambda (H14: 
16290 (subst0 i v x4 x5)).(or4_intro1 (clear (CHead x0 (Flat f) t) c0) (ex3_4 B C T 
16291 T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
16292 (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: 
16293 T).(\lambda (u2: T).(clear (CHead x0 (Flat f) t) (CHead e (Bind b) u2)))))) 
16294 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v 
16295 u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16296 C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: 
16297 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x0 (Flat f) 
16298 t) (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16299 C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
16300 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
16301 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16302 C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x0 (Flat f) t) (CHead e2 
16303 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
16304 (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda 
16305 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16306 e2))))))) (ex3_4_intro B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: 
16307 T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) (\lambda (b: 
16308 B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x0 (Flat f) 
16309 t) (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
16310 T).(\lambda (u2: T).(subst0 i v u1 u2))))) x2 x3 x4 x5 H12 (clear_flat x0 
16311 (CHead x3 (Bind x2) x5) H13 f t) H14))))))))) H11)) (\lambda (H11: (ex3_4 B C 
16312 C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 
16313 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16314 C).(\lambda (u: T).(clear x0 (CHead e2 (Bind b) u)))))) (\lambda (_: 
16315 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 
16316 e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16317 C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: 
16318 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear x0 (CHead e2 (Bind 
16319 b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16320 T).(csubst0 i v e1 e2))))) (or4 (clear (CHead x0 (Flat f) t) c0) (ex3_4 B C T 
16321 T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
16322 (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: 
16323 T).(\lambda (u2: T).(clear (CHead x0 (Flat f) t) (CHead e (Bind b) u2)))))) 
16324 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v 
16325 u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16326 C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: 
16327 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x0 (Flat f) 
16328 t) (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16329 C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
16330 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
16331 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16332 C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x0 (Flat f) t) (CHead e2 
16333 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
16334 (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda 
16335 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16336 e2)))))))) (\lambda (x2: B).(\lambda (x3: C).(\lambda (x4: C).(\lambda (x5: 
16337 T).(\lambda (H12: (eq C c0 (CHead x3 (Bind x2) x5))).(\lambda (H13: (clear x0 
16338 (CHead x4 (Bind x2) x5))).(\lambda (H14: (csubst0 i v x3 x4)).(or4_intro2 
16339 (clear (CHead x0 (Flat f) t) c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: 
16340 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) 
16341 (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16342 (CHead x0 (Flat f) t) (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: 
16343 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T 
16344 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 
16345 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16346 C).(\lambda (u: T).(clear (CHead x0 (Flat f) t) (CHead e2 (Bind b) u)))))) 
16347 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i 
16348 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16349 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) 
16350 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16351 (u2: T).(clear (CHead x0 (Flat f) t) (CHead e2 (Bind b) u2))))))) (\lambda 
16352 (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
16353 T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16354 C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 e2))))))) (ex3_4_intro B C 
16355 C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 
16356 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16357 C).(\lambda (u: T).(clear (CHead x0 (Flat f) t) (CHead e2 (Bind b) u)))))) 
16358 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i 
16359 v e1 e2))))) x2 x3 x4 x5 H12 (clear_flat x0 (CHead x4 (Bind x2) x5) H13 f t) 
16360 H14))))))))) H11)) (\lambda (H11: (ex4_5 B C C T T (\lambda (b: B).(\lambda 
16361 (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 
16362 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
16363 (_: T).(\lambda (u2: T).(clear x0 (CHead e2 (Bind b) u2))))))) (\lambda (_: 
16364 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
16365 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16366 (_: T).(\lambda (_: T).(csubst0 i v e1 e2)))))))).(ex4_5_ind B C C T T 
16367 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
16368 (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: 
16369 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear x0 (CHead e2 
16370 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
16371 (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda 
16372 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16373 e2)))))) (or4 (clear (CHead x0 (Flat f) t) c0) (ex3_4 B C T T (\lambda (b: 
16374 B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind 
16375 b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: 
16376 T).(clear (CHead x0 (Flat f) t) (CHead e (Bind b) u2)))))) (\lambda (_: 
16377 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16378 (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16379 T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: 
16380 C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x0 (Flat f) t) (CHead e2 
16381 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16382 (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda 
16383 (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 
16384 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
16385 (_: T).(\lambda (u2: T).(clear (CHead x0 (Flat f) t) (CHead e2 (Bind b) 
16386 u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
16387 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: 
16388 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16389 e2)))))))) (\lambda (x2: B).(\lambda (x3: C).(\lambda (x4: C).(\lambda (x5: 
16390 T).(\lambda (x6: T).(\lambda (H12: (eq C c0 (CHead x3 (Bind x2) 
16391 x5))).(\lambda (H13: (clear x0 (CHead x4 (Bind x2) x6))).(\lambda (H14: 
16392 (subst0 i v x5 x6)).(\lambda (H15: (csubst0 i v x3 x4)).(or4_intro3 (clear 
16393 (CHead x0 (Flat f) t) c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: 
16394 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) 
16395 (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16396 (CHead x0 (Flat f) t) (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: 
16397 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T 
16398 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 
16399 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16400 C).(\lambda (u: T).(clear (CHead x0 (Flat f) t) (CHead e2 (Bind b) u)))))) 
16401 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i 
16402 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16403 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) 
16404 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16405 (u2: T).(clear (CHead x0 (Flat f) t) (CHead e2 (Bind b) u2))))))) (\lambda 
16406 (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
16407 T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16408 C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 e2))))))) (ex4_5_intro B C 
16409 C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
16410 T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: 
16411 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16412 (CHead x0 (Flat f) t) (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda 
16413 (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 
16414 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16415 T).(\lambda (_: T).(csubst0 i v e1 e2)))))) x2 x3 x4 x5 x6 H12 (clear_flat x0 
16416 (CHead x4 (Bind x2) x6) H13 f t) H14 H15))))))))))) H11)) H10))))))]) H1 H3) 
16417 c2 H4)))))) H2)) (\lambda (H2: (ex4_3 T C nat (\lambda (_: T).(\lambda (_: 
16418 C).(\lambda (j: nat).(eq nat (S i) (s k j))))) (\lambda (u2: T).(\lambda (c3: 
16419 C).(\lambda (_: nat).(eq C c2 (CHead c3 k u2))))) (\lambda (u2: T).(\lambda 
16420 (_: C).(\lambda (j: nat).(subst0 j v t u2)))) (\lambda (_: T).(\lambda (c2: 
16421 C).(\lambda (j: nat).(csubst0 j v c c2)))))).(ex4_3_ind T C nat (\lambda (_: 
16422 T).(\lambda (_: C).(\lambda (j: nat).(eq nat (S i) (s k j))))) (\lambda (u2: 
16423 T).(\lambda (c3: C).(\lambda (_: nat).(eq C c2 (CHead c3 k u2))))) (\lambda 
16424 (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v t u2)))) (\lambda (_: 
16425 T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c c3)))) (or4 (clear c2 
16426 c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda 
16427 (_: T).(eq C c0 (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: 
16428 C).(\lambda (_: T).(\lambda (u2: T).(clear c2 (CHead e (Bind b) u2)))))) 
16429 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v 
16430 u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16431 C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: 
16432 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear c2 (CHead e2 (Bind 
16433 b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16434 T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: 
16435 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind 
16436 b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
16437 T).(\lambda (u2: T).(clear c2 (CHead e2 (Bind b) u2))))))) (\lambda (_: 
16438 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
16439 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16440 (_: T).(\lambda (_: T).(csubst0 i v e1 e2)))))))) (\lambda (x0: T).(\lambda 
16441 (x1: C).(\lambda (x2: nat).(\lambda (H3: (eq nat (S i) (s k x2))).(\lambda 
16442 (H4: (eq C c2 (CHead x1 k x0))).(\lambda (H5: (subst0 x2 v t x0)).(\lambda 
16443 (H6: (csubst0 x2 v c x1)).(eq_ind_r C (CHead x1 k x0) (\lambda (c3: C).(or4 
16444 (clear c3 c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: 
16445 T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) (\lambda (b: 
16446 B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear c3 (CHead e (Bind 
16447 b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
16448 T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
16449 C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) 
16450 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear c3 
16451 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16452 C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
16453 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
16454 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16455 C).(\lambda (_: T).(\lambda (u2: T).(clear c3 (CHead e2 (Bind b) u2))))))) 
16456 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
16457 (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda 
16458 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 e2))))))))) ((match k 
16459 return (\lambda (k0: K).((clear (CHead c k0 t) c0) \to ((eq nat (S i) (s k0 
16460 x2)) \to (or4 (clear (CHead x1 k0 x0) c0) (ex3_4 B C T T (\lambda (b: 
16461 B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind 
16462 b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: 
16463 T).(clear (CHead x1 k0 x0) (CHead e (Bind b) u2)))))) (\lambda (_: 
16464 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16465 (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16466 T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: 
16467 C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x1 k0 x0) (CHead e2 (Bind 
16468 b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16469 T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: 
16470 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind 
16471 b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
16472 T).(\lambda (u2: T).(clear (CHead x1 k0 x0) (CHead e2 (Bind b) u2))))))) 
16473 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
16474 (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda 
16475 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 e2))))))))))) with 
16476 [(Bind b) \Rightarrow (\lambda (H7: (clear (CHead c (Bind b) t) c0)).(\lambda 
16477 (H8: (eq nat (S i) (s (Bind b) x2))).(let H9 \def (f_equal nat nat (\lambda 
16478 (e: nat).(match e return (\lambda (_: nat).nat) with [O \Rightarrow i | (S n) 
16479 \Rightarrow n])) (S i) (S x2) H8) in (let H10 \def (eq_ind_r nat x2 (\lambda 
16480 (n: nat).(csubst0 n v c x1)) H6 i H9) in (let H11 \def (eq_ind_r nat x2 
16481 (\lambda (n: nat).(subst0 n v t x0)) H5 i H9) in (eq_ind_r C (CHead c (Bind 
16482 b) t) (\lambda (c3: C).(or4 (clear (CHead x1 (Bind b) x0) c3) (ex3_4 B C T T 
16483 (\lambda (b0: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c3 
16484 (CHead e (Bind b0) u1)))))) (\lambda (b0: B).(\lambda (e: C).(\lambda (_: 
16485 T).(\lambda (u2: T).(clear (CHead x1 (Bind b) x0) (CHead e (Bind b0) u2)))))) 
16486 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v 
16487 u1 u2)))))) (ex3_4 B C C T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: 
16488 C).(\lambda (u: T).(eq C c3 (CHead e1 (Bind b0) u)))))) (\lambda (b0: 
16489 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x1 (Bind b) 
16490 x0) (CHead e2 (Bind b0) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda 
16491 (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda 
16492 (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq 
16493 C c3 (CHead e1 (Bind b0) u1))))))) (\lambda (b0: B).(\lambda (_: C).(\lambda 
16494 (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x1 (Bind b) x0) (CHead 
16495 e2 (Bind b0) u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
16496 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: 
16497 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
16498 i v e1 e2))))))))) (or4_intro3 (clear (CHead x1 (Bind b) x0) (CHead c (Bind 
16499 b) t)) (ex3_4 B C T T (\lambda (b0: B).(\lambda (e: C).(\lambda (u1: 
16500 T).(\lambda (_: T).(eq C (CHead c (Bind b) t) (CHead e (Bind b0) u1)))))) 
16501 (\lambda (b0: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16502 (CHead x1 (Bind b) x0) (CHead e (Bind b0) u2)))))) (\lambda (_: B).(\lambda 
16503 (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C 
16504 T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C 
16505 (CHead c (Bind b) t) (CHead e1 (Bind b0) u)))))) (\lambda (b0: B).(\lambda 
16506 (_: C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x1 (Bind b) x0) (CHead 
16507 e2 (Bind b0) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16508 C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b0: 
16509 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C 
16510 (CHead c (Bind b) t) (CHead e1 (Bind b0) u1))))))) (\lambda (b0: B).(\lambda 
16511 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x1 
16512 (Bind b) x0) (CHead e2 (Bind b0) u2))))))) (\lambda (_: B).(\lambda (_: 
16513 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16514 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16515 (_: T).(csubst0 i v e1 e2))))))) (ex4_5_intro B C C T T (\lambda (b0: 
16516 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C 
16517 (CHead c (Bind b) t) (CHead e1 (Bind b0) u1))))))) (\lambda (b0: B).(\lambda 
16518 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x1 
16519 (Bind b) x0) (CHead e2 (Bind b0) u2))))))) (\lambda (_: B).(\lambda (_: 
16520 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16521 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16522 (_: T).(csubst0 i v e1 e2)))))) b c x1 t x0 (refl_equal C (CHead c (Bind b) 
16523 t)) (clear_bind b x1 x0) H11 H10)) c0 (clear_gen_bind b c c0 t H7))))))) | 
16524 (Flat f) \Rightarrow (\lambda (H7: (clear (CHead c (Flat f) t) c0)).(\lambda 
16525 (H8: (eq nat (S i) (s (Flat f) x2))).(let H9 \def (f_equal nat nat (\lambda 
16526 (e: nat).e) (S i) (s (Flat f) x2) H8) in (let H10 \def (eq_ind_r nat x2 
16527 (\lambda (n: nat).(csubst0 n v c x1)) H6 (S i) H9) in (let H11 \def (eq_ind_r 
16528 nat x2 (\lambda (n: nat).(subst0 n v t x0)) H5 (S i) H9) in (let H12 \def (H 
16529 x1 v i H10 c0 (clear_gen_flat f c c0 t H7)) in (or4_ind (clear x1 c0) (ex3_4 
16530 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq 
16531 C c0 (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: 
16532 T).(\lambda (u2: T).(clear x1 (CHead e (Bind b) u2)))))) (\lambda (_: 
16533 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16534 (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16535 T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: 
16536 C).(\lambda (e2: C).(\lambda (u: T).(clear x1 (CHead e2 (Bind b) u)))))) 
16537 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i 
16538 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16539 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) 
16540 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16541 (u2: T).(clear x1 (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: 
16542 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16543 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16544 (_: T).(csubst0 i v e1 e2))))))) (or4 (clear (CHead x1 (Flat f) x0) c0) 
16545 (ex3_4 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: 
16546 T).(eq C c0 (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: 
16547 C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x1 (Flat f) x0) (CHead e 
16548 (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda 
16549 (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
16550 C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) 
16551 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear 
16552 (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda 
16553 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C 
16554 C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
16555 T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: 
16556 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16557 (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda 
16558 (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 
16559 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16560 T).(\lambda (_: T).(csubst0 i v e1 e2)))))))) (\lambda (H13: (clear x1 
16561 c0)).(or4_intro0 (clear (CHead x1 (Flat f) x0) c0) (ex3_4 B C T T (\lambda 
16562 (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e 
16563 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda 
16564 (u2: T).(clear (CHead x1 (Flat f) x0) (CHead e (Bind b) u2)))))) (\lambda (_: 
16565 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16566 (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16567 T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: 
16568 C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x1 (Flat f) x0) (CHead e2 
16569 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16570 (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda 
16571 (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 
16572 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
16573 (_: T).(\lambda (u2: T).(clear (CHead x1 (Flat f) x0) (CHead e2 (Bind b) 
16574 u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
16575 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: 
16576 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 e2))))))) 
16577 (clear_flat x1 c0 H13 f x0))) (\lambda (H13: (ex3_4 B C T T (\lambda (b: 
16578 B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind 
16579 b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: 
16580 T).(clear x1 (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: 
16581 C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2))))))).(ex3_4_ind B C 
16582 T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
16583 (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: 
16584 T).(\lambda (u2: T).(clear x1 (CHead e (Bind b) u2)))))) (\lambda (_: 
16585 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2))))) 
16586 (or4 (clear (CHead x1 (Flat f) x0) c0) (ex3_4 B C T T (\lambda (b: 
16587 B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind 
16588 b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: 
16589 T).(clear (CHead x1 (Flat f) x0) (CHead e (Bind b) u2)))))) (\lambda (_: 
16590 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16591 (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16592 T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: 
16593 C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x1 (Flat f) x0) (CHead e2 
16594 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16595 (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda 
16596 (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 
16597 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
16598 (_: T).(\lambda (u2: T).(clear (CHead x1 (Flat f) x0) (CHead e2 (Bind b) 
16599 u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
16600 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: 
16601 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16602 e2)))))))) (\lambda (x3: B).(\lambda (x4: C).(\lambda (x5: T).(\lambda (x6: 
16603 T).(\lambda (H14: (eq C c0 (CHead x4 (Bind x3) x5))).(\lambda (H15: (clear x1 
16604 (CHead x4 (Bind x3) x6))).(\lambda (H16: (subst0 i v x5 x6)).(or4_intro1 
16605 (clear (CHead x1 (Flat f) x0) c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: 
16606 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) 
16607 (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16608 (CHead x1 (Flat f) x0) (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda 
16609 (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C 
16610 T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 
16611 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16612 C).(\lambda (u: T).(clear (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u)))))) 
16613 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i 
16614 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16615 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) 
16616 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16617 (u2: T).(clear (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u2))))))) (\lambda 
16618 (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
16619 T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16620 C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 e2))))))) (ex3_4_intro B C 
16621 T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 
16622 (CHead e (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: 
16623 T).(\lambda (u2: T).(clear (CHead x1 (Flat f) x0) (CHead e (Bind b) u2)))))) 
16624 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v 
16625 u1 u2))))) x3 x4 x5 x6 H14 (clear_flat x1 (CHead x4 (Bind x3) x6) H15 f x0) 
16626 H16))))))))) H13)) (\lambda (H13: (ex3_4 B C C T (\lambda (b: B).(\lambda 
16627 (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind b) u)))))) 
16628 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear x1 
16629 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16630 C).(\lambda (_: T).(csubst0 i v e1 e2))))))).(ex3_4_ind B C C T (\lambda (b: 
16631 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind 
16632 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
16633 T).(clear x1 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
16634 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2))))) (or4 (clear 
16635 (CHead x1 (Flat f) x0) c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: 
16636 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) 
16637 (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16638 (CHead x1 (Flat f) x0) (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda 
16639 (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C 
16640 T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 
16641 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16642 C).(\lambda (u: T).(clear (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u)))))) 
16643 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i 
16644 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16645 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) 
16646 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16647 (u2: T).(clear (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u2))))))) (\lambda 
16648 (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
16649 T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16650 C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 e2)))))))) (\lambda (x3: 
16651 B).(\lambda (x4: C).(\lambda (x5: C).(\lambda (x6: T).(\lambda (H14: (eq C c0 
16652 (CHead x4 (Bind x3) x6))).(\lambda (H15: (clear x1 (CHead x5 (Bind x3) 
16653 x6))).(\lambda (H16: (csubst0 i v x4 x5)).(or4_intro2 (clear (CHead x1 (Flat 
16654 f) x0) c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: C).(\lambda (u1: 
16655 T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) (\lambda (b: 
16656 B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear (CHead x1 (Flat f) 
16657 x0) (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
16658 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C T (\lambda (b: 
16659 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 (Bind 
16660 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
16661 T).(clear (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u)))))) (\lambda (_: 
16662 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2)))))) 
16663 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
16664 (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: 
16665 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16666 (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda 
16667 (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 
16668 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16669 T).(\lambda (_: T).(csubst0 i v e1 e2))))))) (ex3_4_intro B C C T (\lambda 
16670 (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 (CHead e1 
16671 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
16672 (u: T).(clear (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u)))))) (\lambda (_: 
16673 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i v e1 e2))))) 
16674 x3 x4 x5 x6 H14 (clear_flat x1 (CHead x5 (Bind x3) x6) H15 f x0) H16))))))))) 
16675 H13)) (\lambda (H13: (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: 
16676 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind 
16677 b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
16678 T).(\lambda (u2: T).(clear x1 (CHead e2 (Bind b) u2))))))) (\lambda (_: 
16679 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
16680 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16681 (_: T).(\lambda (_: T).(csubst0 i v e1 e2)))))))).(ex4_5_ind B C C T T 
16682 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
16683 (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: 
16684 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear x1 (CHead e2 
16685 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
16686 (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda 
16687 (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16688 e2)))))) (or4 (clear (CHead x1 (Flat f) x0) c0) (ex3_4 B C T T (\lambda (b: 
16689 B).(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind 
16690 b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: 
16691 T).(clear (CHead x1 (Flat f) x0) (CHead e (Bind b) u2)))))) (\lambda (_: 
16692 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) 
16693 (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16694 T).(eq C c0 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: 
16695 C).(\lambda (e2: C).(\lambda (u: T).(clear (CHead x1 (Flat f) x0) (CHead e2 
16696 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16697 (_: T).(csubst0 i v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda 
16698 (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 
16699 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
16700 (_: T).(\lambda (u2: T).(clear (CHead x1 (Flat f) x0) (CHead e2 (Bind b) 
16701 u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: 
16702 T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: 
16703 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 
16704 e2)))))))) (\lambda (x3: B).(\lambda (x4: C).(\lambda (x5: C).(\lambda (x6: 
16705 T).(\lambda (x7: T).(\lambda (H14: (eq C c0 (CHead x4 (Bind x3) 
16706 x6))).(\lambda (H15: (clear x1 (CHead x5 (Bind x3) x7))).(\lambda (H16: 
16707 (subst0 i v x6 x7)).(\lambda (H17: (csubst0 i v x4 x5)).(or4_intro3 (clear 
16708 (CHead x1 (Flat f) x0) c0) (ex3_4 B C T T (\lambda (b: B).(\lambda (e: 
16709 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e (Bind b) u1)))))) 
16710 (\lambda (b: B).(\lambda (e: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16711 (CHead x1 (Flat f) x0) (CHead e (Bind b) u2)))))) (\lambda (_: B).(\lambda 
16712 (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 u2)))))) (ex3_4 B C C 
16713 T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c0 
16714 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16715 C).(\lambda (u: T).(clear (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u)))))) 
16716 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 i 
16717 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16718 C).(\lambda (u1: T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) 
16719 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16720 (u2: T).(clear (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u2))))))) (\lambda 
16721 (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: 
16722 T).(subst0 i v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16723 C).(\lambda (_: T).(\lambda (_: T).(csubst0 i v e1 e2))))))) (ex4_5_intro B C 
16724 C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
16725 T).(\lambda (_: T).(eq C c0 (CHead e1 (Bind b) u1))))))) (\lambda (b: 
16726 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear 
16727 (CHead x1 (Flat f) x0) (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda 
16728 (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 i v u1 
16729 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16730 T).(\lambda (_: T).(csubst0 i v e1 e2)))))) x3 x4 x5 x6 x7 H14 (clear_flat x1 
16731 (CHead x5 (Bind x3) x7) H15 f x0) H16 H17))))))))))) H13)) H12)))))))]) H1 
16732 H3) c2 H4)))))))) H2)) (csubst0_gen_head k c c2 t v (S i) H0)))))))))))) c1).
16733
16734 theorem csubst0_getl_ge:
16735  \forall (i: nat).(\forall (n: nat).((le i n) \to (\forall (c1: C).(\forall 
16736 (c2: C).(\forall (v: T).((csubst0 i v c1 c2) \to (\forall (e: C).((getl n c1 
16737 e) \to (getl n c2 e)))))))))
16738 \def
16739  \lambda (i: nat).(\lambda (n: nat).(\lambda (H: (le i n)).(\lambda (c1: 
16740 C).(\lambda (c2: C).(\lambda (v: T).(\lambda (H0: (csubst0 i v c1 
16741 c2)).(\lambda (e: C).(\lambda (H1: (getl n c1 e)).(let H2 \def (getl_gen_all 
16742 c1 e n H1) in (ex2_ind C (\lambda (e0: C).(drop n O c1 e0)) (\lambda (e0: 
16743 C).(clear e0 e)) (getl n c2 e) (\lambda (x: C).(\lambda (H3: (drop n O c1 
16744 x)).(\lambda (H4: (clear x e)).(lt_eq_gt_e i n (getl n c2 e) (\lambda (H5: 
16745 (lt i n)).(getl_intro n c2 e x (csubst0_drop_gt n i H5 c1 c2 v H0 x H3) H4)) 
16746 (\lambda (H5: (eq nat i n)).(let H6 \def (eq_ind_r nat n (\lambda (n: 
16747 nat).(drop n O c1 x)) H3 i H5) in (let H7 \def (eq_ind_r nat n (\lambda (n: 
16748 nat).(le i n)) H i H5) in (eq_ind nat i (\lambda (n0: nat).(getl n0 c2 e)) 
16749 (let H8 \def (csubst0_drop_eq i c1 c2 v H0 x H6) in (or4_ind (drop i O c2 x) 
16750 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
16751 T).(eq C x (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: 
16752 C).(\lambda (_: T).(\lambda (w: T).(drop i O c2 (CHead e0 (Flat f) w)))))) 
16753 (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u 
16754 w)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
16755 C).(\lambda (u: T).(eq C x (CHead e1 (Flat f) u)))))) (\lambda (f: 
16756 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop i O c2 (CHead e2 
16757 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16758 (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: F).(\lambda 
16759 (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C x (CHead e1 
16760 (Flat f) u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
16761 (_: T).(\lambda (w: T).(drop i O c2 (CHead e2 (Flat f) w))))))) (\lambda (_: 
16762 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
16763 v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16764 T).(\lambda (_: T).(csubst0 O v e1 e2))))))) (getl i c2 e) (\lambda (H9: 
16765 (drop i O c2 x)).(getl_intro i c2 e x H9 H4)) (\lambda (H9: (ex3_4 F C T T 
16766 (\lambda (f: F).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C x 
16767 (CHead e0 (Flat f) u)))))) (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
16768 T).(\lambda (w: T).(drop i O c2 (CHead e0 (Flat f) w)))))) (\lambda (_: 
16769 F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u 
16770 w))))))).(ex3_4_ind F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (u: 
16771 T).(\lambda (_: T).(eq C x (CHead e0 (Flat f) u)))))) (\lambda (f: 
16772 F).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(drop i O c2 (CHead e0 
16773 (Flat f) w)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
16774 T).(subst0 O v u w))))) (getl i c2 e) (\lambda (x0: F).(\lambda (x1: 
16775 C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H10: (eq C x (CHead x1 (Flat 
16776 x0) x2))).(\lambda (H11: (drop i O c2 (CHead x1 (Flat x0) x3))).(\lambda (_: 
16777 (subst0 O v x2 x3)).(let H13 \def (eq_ind C x (\lambda (c: C).(clear c e)) H4 
16778 (CHead x1 (Flat x0) x2) H10) in (getl_intro i c2 e (CHead x1 (Flat x0) x3) 
16779 H11 (clear_flat x1 e (clear_gen_flat x0 x1 e x2 H13) x0 x3)))))))))) H9)) 
16780 (\lambda (H9: (ex3_4 F C C T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
16781 C).(\lambda (u: T).(eq C x (CHead e1 (Flat f) u)))))) (\lambda (f: 
16782 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop i O c2 (CHead e2 
16783 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16784 (_: T).(csubst0 O v e1 e2))))))).(ex3_4_ind F C C T (\lambda (f: F).(\lambda 
16785 (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C x (CHead e1 (Flat f) u)))))) 
16786 (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop i O c2 
16787 (CHead e2 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
16788 C).(\lambda (_: T).(csubst0 O v e1 e2))))) (getl i c2 e) (\lambda (x0: 
16789 F).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H10: (eq C x 
16790 (CHead x1 (Flat x0) x3))).(\lambda (H11: (drop i O c2 (CHead x2 (Flat x0) 
16791 x3))).(\lambda (H12: (csubst0 O v x1 x2)).(let H13 \def (eq_ind C x (\lambda 
16792 (c: C).(clear c e)) H4 (CHead x1 (Flat x0) x3) H10) in (getl_intro i c2 e 
16793 (CHead x2 (Flat x0) x3) H11 (clear_flat x2 e (csubst0_clear_O x1 x2 v H12 e 
16794 (clear_gen_flat x0 x1 e x3 H13)) x0 x3)))))))))) H9)) (\lambda (H9: (ex4_5 F 
16795 C C T T (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16796 T).(\lambda (_: T).(eq C x (CHead e1 (Flat f) u))))))) (\lambda (f: 
16797 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop i O 
16798 c2 (CHead e2 (Flat f) w))))))) (\lambda (_: F).(\lambda (_: C).(\lambda (_: 
16799 C).(\lambda (u: T).(\lambda (w: T).(subst0 O v u w)))))) (\lambda (_: 
16800 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
16801 O v e1 e2)))))))).(ex4_5_ind F C C T T (\lambda (f: F).(\lambda (e1: 
16802 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C x (CHead e1 (Flat f) 
16803 u))))))) (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
16804 T).(\lambda (w: T).(drop i O c2 (CHead e2 (Flat f) w))))))) (\lambda (_: 
16805 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 O 
16806 v u w)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16807 T).(\lambda (_: T).(csubst0 O v e1 e2)))))) (getl i c2 e) (\lambda (x0: 
16808 F).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: 
16809 T).(\lambda (H10: (eq C x (CHead x1 (Flat x0) x3))).(\lambda (H11: (drop i O 
16810 c2 (CHead x2 (Flat x0) x4))).(\lambda (_: (subst0 O v x3 x4)).(\lambda (H13: 
16811 (csubst0 O v x1 x2)).(let H14 \def (eq_ind C x (\lambda (c: C).(clear c e)) 
16812 H4 (CHead x1 (Flat x0) x3) H10) in (getl_intro i c2 e (CHead x2 (Flat x0) x4) 
16813 H11 (clear_flat x2 e (csubst0_clear_O x1 x2 v H13 e (clear_gen_flat x0 x1 e 
16814 x3 H14)) x0 x4)))))))))))) H9)) H8)) n H5)))) (\lambda (H5: (lt n 
16815 i)).(le_lt_false i n H H5 (getl n c2 e))))))) H2)))))))))).
16816
16817 theorem csubst0_getl_lt:
16818  \forall (i: nat).(\forall (n: nat).((lt n i) \to (\forall (c1: C).(\forall 
16819 (c2: C).(\forall (v: T).((csubst0 i v c1 c2) \to (\forall (e: C).((getl n c1 
16820 e) \to (or4 (getl n c2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: 
16821 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u)))))) 
16822 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 
16823 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: 
16824 T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T 
16825 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
16826 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16827 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
16828 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
16829 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16830 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) 
16831 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
16832 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
16833 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
16834 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16835 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))))))))))))
16836 \def
16837  \lambda (i: nat).(\lambda (n: nat).(\lambda (H: (lt n i)).(\lambda (c1: 
16838 C).(\lambda (c2: C).(\lambda (v: T).(\lambda (H0: (csubst0 i v c1 
16839 c2)).(\lambda (e: C).(\lambda (H1: (getl n c1 e)).(let H2 \def (getl_gen_all 
16840 c1 e n H1) in (ex2_ind C (\lambda (e0: C).(drop n O c1 e0)) (\lambda (e0: 
16841 C).(clear e0 e)) (or4 (getl n c2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda 
16842 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u)))))) 
16843 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 
16844 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: 
16845 T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T 
16846 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
16847 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16848 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
16849 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
16850 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16851 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) 
16852 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
16853 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
16854 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
16855 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16856 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))))) (\lambda (x: 
16857 C).(\lambda (H3: (drop n O c1 x)).(\lambda (H4: (clear x e)).(let H5 \def 
16858 (csubst0_drop_lt n i H c1 c2 v H0 x H3) in (or4_ind (drop n O c2 x) (ex3_4 K 
16859 C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C 
16860 x (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
16861 T).(\lambda (w: T).(drop n O c2 (CHead e0 k w)))))) (\lambda (k: K).(\lambda 
16862 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k n)) v u w)))))) 
16863 (ex3_4 K C C T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
16864 T).(eq C x (CHead e1 k u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
16865 C).(\lambda (u: T).(drop n O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda 
16866 (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (s k n)) v e1 
16867 e2)))))) (ex4_5 K C C T T (\lambda (k: K).(\lambda (e1: C).(\lambda (_: 
16868 C).(\lambda (u: T).(\lambda (_: T).(eq C x (CHead e1 k u))))))) (\lambda (k: 
16869 K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(drop n O 
16870 c2 (CHead e2 k w))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (_: 
16871 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k n)) v u w)))))) 
16872 (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16873 (_: T).(csubst0 (minus i (s k n)) v e1 e2))))))) (or4 (getl n c2 e) (ex3_4 B 
16874 C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C 
16875 e (CHead e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
16876 T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: 
16877 B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
16878 u w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16879 C).(\lambda (u: T).(eq C e (CHead e1 (Bind b) u)))))) (\lambda (b: 
16880 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 (CHead e2 
16881 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16882 (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
16883 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
16884 (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16885 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 (Bind b) w))))))) 
16886 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
16887 T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e1: 
16888 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) 
16889 v e1 e2)))))))) (\lambda (H6: (drop n O c2 x)).(or4_intro0 (getl n c2 e) 
16890 (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
16891 T).(eq C e (CHead e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: 
16892 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) 
16893 (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
16894 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
16895 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind b) u)))))) 
16896 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 
16897 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
16898 C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T 
16899 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
16900 T).(eq C e (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: 
16901 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 
16902 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
16903 (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: 
16904 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
16905 (minus i (S n)) v e1 e2))))))) (getl_intro n c2 e x H6 H4))) (\lambda (H6: 
16906 (ex3_4 K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
16907 T).(eq C x (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: C).(\lambda (_: 
16908 T).(\lambda (w: T).(drop n O c2 (CHead e0 k w)))))) (\lambda (k: K).(\lambda 
16909 (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k n)) v u 
16910 w))))))).(ex3_4_ind K C T T (\lambda (k: K).(\lambda (e0: C).(\lambda (u: 
16911 T).(\lambda (_: T).(eq C x (CHead e0 k u)))))) (\lambda (k: K).(\lambda (e0: 
16912 C).(\lambda (_: T).(\lambda (w: T).(drop n O c2 (CHead e0 k w)))))) (\lambda 
16913 (k: K).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k 
16914 n)) v u w))))) (or4 (getl n c2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda 
16915 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u)))))) 
16916 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 
16917 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: 
16918 T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T 
16919 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
16920 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16921 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
16922 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
16923 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16924 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) 
16925 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
16926 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
16927 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
16928 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16929 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))))) (\lambda (x0: 
16930 K).(\lambda (x1: C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H7: (eq C x 
16931 (CHead x1 x0 x2))).(\lambda (H8: (drop n O c2 (CHead x1 x0 x3))).(\lambda 
16932 (H9: (subst0 (minus i (s x0 n)) v x2 x3)).(let H10 \def (eq_ind C x (\lambda 
16933 (c: C).(clear c e)) H4 (CHead x1 x0 x2) H7) in ((match x0 return (\lambda (k: 
16934 K).((drop n O c2 (CHead x1 k x3)) \to ((subst0 (minus i (s k n)) v x2 x3) \to 
16935 ((clear (CHead x1 k x2) e) \to (or4 (getl n c2 e) (ex3_4 B C T T (\lambda (b: 
16936 B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Bind 
16937 b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
16938 T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
16939 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 
16940 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq 
16941 C e (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
16942 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
16943 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
16944 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
16945 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) 
16946 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
16947 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
16948 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
16949 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
16950 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))))))))) with [(Bind 
16951 b) \Rightarrow (\lambda (H11: (drop n O c2 (CHead x1 (Bind b) x3))).(\lambda 
16952 (H12: (subst0 (minus i (s (Bind b) n)) v x2 x3)).(\lambda (H13: (clear (CHead 
16953 x1 (Bind b) x2) e)).(eq_ind_r C (CHead x1 (Bind b) x2) (\lambda (c: C).(or4 
16954 (getl n c2 c) (ex3_4 B C T T (\lambda (b0: B).(\lambda (e0: C).(\lambda (u: 
16955 T).(\lambda (_: T).(eq C c (CHead e0 (Bind b0) u)))))) (\lambda (b0: 
16956 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 
16957 (Bind b0) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda 
16958 (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b0: 
16959 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 (Bind 
16960 b0) u)))))) (\lambda (b0: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
16961 T).(getl n c2 (CHead e2 (Bind b0) u)))))) (\lambda (_: B).(\lambda (e1: 
16962 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) 
16963 (ex4_5 B C C T T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
16964 (u: T).(\lambda (_: T).(eq C c (CHead e1 (Bind b0) u))))))) (\lambda (b0: 
16965 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n 
16966 c2 (CHead e2 (Bind b0) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
16967 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) 
16968 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
16969 (_: T).(csubst0 (minus i (S n)) v e1 e2))))))))) (or4_intro1 (getl n c2 
16970 (CHead x1 (Bind b) x2)) (ex3_4 B C T T (\lambda (b0: B).(\lambda (e0: 
16971 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Bind b) x2) (CHead e0 
16972 (Bind b0) u)))))) (\lambda (b0: B).(\lambda (e0: C).(\lambda (_: T).(\lambda 
16973 (w: T).(getl n c2 (CHead e0 (Bind b0) w)))))) (\lambda (_: B).(\lambda (_: 
16974 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 
16975 B C C T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq 
16976 C (CHead x1 (Bind b) x2) (CHead e1 (Bind b0) u)))))) (\lambda (b0: 
16977 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 (CHead e2 
16978 (Bind b0) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
16979 (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T (\lambda (b0: 
16980 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C 
16981 (CHead x1 (Bind b) x2) (CHead e1 (Bind b0) u))))))) (\lambda (b0: B).(\lambda 
16982 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 
16983 (Bind b0) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
16984 (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: 
16985 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
16986 (minus i (S n)) v e1 e2))))))) (ex3_4_intro B C T T (\lambda (b0: B).(\lambda 
16987 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Bind b) x2) (CHead 
16988 e0 (Bind b0) u)))))) (\lambda (b0: B).(\lambda (e0: C).(\lambda (_: 
16989 T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b0) w)))))) (\lambda (_: 
16990 B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
16991 u w))))) b x1 x2 x3 (refl_equal C (CHead x1 (Bind b) x2)) (getl_intro n c2 
16992 (CHead x1 (Bind b) x3) (CHead x1 (Bind b) x3) H11 (clear_bind b x1 x3)) H12)) 
16993 e (clear_gen_bind b x1 e x2 H13))))) | (Flat f) \Rightarrow (\lambda (H11: 
16994 (drop n O c2 (CHead x1 (Flat f) x3))).(\lambda (_: (subst0 (minus i (s (Flat 
16995 f) n)) v x2 x3)).(\lambda (H13: (clear (CHead x1 (Flat f) x2) e)).(or4_intro0 
16996 (getl n c2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: 
16997 T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u)))))) (\lambda (b: 
16998 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 
16999 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17000 T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: 
17001 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind 
17002 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
17003 T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
17004 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) 
17005 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
17006 (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) (\lambda (b: 
17007 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n 
17008 c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
17009 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) 
17010 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
17011 (_: T).(csubst0 (minus i (S n)) v e1 e2))))))) (getl_intro n c2 e (CHead x1 
17012 (Flat f) x3) H11 (clear_flat x1 e (clear_gen_flat f x1 e x2 H13) f x3))))))]) 
17013 H8 H9 H10))))))))) H6)) (\lambda (H6: (ex3_4 K C C T (\lambda (k: K).(\lambda 
17014 (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C x (CHead e1 k u)))))) (\lambda 
17015 (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(drop n O c2 (CHead 
17016 e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17017 T).(csubst0 (minus i (s k n)) v e1 e2))))))).(ex3_4_ind K C C T (\lambda (k: 
17018 K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C x (CHead e1 k 
17019 u)))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
17020 T).(drop n O c2 (CHead e2 k u)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda 
17021 (e2: C).(\lambda (_: T).(csubst0 (minus i (s k n)) v e1 e2))))) (or4 (getl n 
17022 c2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: 
17023 T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u)))))) (\lambda (b: 
17024 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 
17025 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17026 T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: 
17027 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind 
17028 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
17029 T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
17030 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) 
17031 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
17032 (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) (\lambda (b: 
17033 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n 
17034 c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
17035 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) 
17036 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
17037 (_: T).(csubst0 (minus i (S n)) v e1 e2)))))))) (\lambda (x0: K).(\lambda 
17038 (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H7: (eq C x (CHead x1 x0 
17039 x3))).(\lambda (H8: (drop n O c2 (CHead x2 x0 x3))).(\lambda (H9: (csubst0 
17040 (minus i (s x0 n)) v x1 x2)).(let H10 \def (eq_ind C x (\lambda (c: C).(clear 
17041 c e)) H4 (CHead x1 x0 x3) H7) in ((match x0 return (\lambda (k: K).((drop n O 
17042 c2 (CHead x2 k x3)) \to ((csubst0 (minus i (s k n)) v x1 x2) \to ((clear 
17043 (CHead x1 k x3) e) \to (or4 (getl n c2 e) (ex3_4 B C T T (\lambda (b: 
17044 B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Bind 
17045 b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
17046 T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
17047 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 
17048 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq 
17049 C e (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17050 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17051 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17052 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17053 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) 
17054 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
17055 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
17056 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17057 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17058 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))))))))) with [(Bind 
17059 b) \Rightarrow (\lambda (H11: (drop n O c2 (CHead x2 (Bind b) x3))).(\lambda 
17060 (H12: (csubst0 (minus i (s (Bind b) n)) v x1 x2)).(\lambda (H13: (clear 
17061 (CHead x1 (Bind b) x3) e)).(eq_ind_r C (CHead x1 (Bind b) x3) (\lambda (c: 
17062 C).(or4 (getl n c2 c) (ex3_4 B C T T (\lambda (b0: B).(\lambda (e0: 
17063 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 (Bind b0) u)))))) 
17064 (\lambda (b0: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 
17065 (CHead e0 (Bind b0) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: 
17066 T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T 
17067 (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c 
17068 (CHead e1 (Bind b0) u)))))) (\lambda (b0: B).(\lambda (_: C).(\lambda (e2: 
17069 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b0) u)))))) (\lambda (_: 
17070 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17071 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: 
17072 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 (Bind b0) u))))))) 
17073 (\lambda (b0: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
17074 (w: T).(getl n c2 (CHead e2 (Bind b0) w))))))) (\lambda (_: B).(\lambda (_: 
17075 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17076 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17077 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))))) (or4_intro2 
17078 (getl n c2 (CHead x1 (Bind b) x3)) (ex3_4 B C T T (\lambda (b0: B).(\lambda 
17079 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Bind b) x3) (CHead 
17080 e0 (Bind b0) u)))))) (\lambda (b0: B).(\lambda (e0: C).(\lambda (_: 
17081 T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b0) w)))))) (\lambda (_: 
17082 B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17083 u w)))))) (ex3_4 B C C T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: 
17084 C).(\lambda (u: T).(eq C (CHead x1 (Bind b) x3) (CHead e1 (Bind b0) u)))))) 
17085 (\lambda (b0: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 
17086 (CHead e2 (Bind b0) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17087 C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T 
17088 (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda 
17089 (_: T).(eq C (CHead x1 (Bind b) x3) (CHead e1 (Bind b0) u))))))) (\lambda 
17090 (b0: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
17091 T).(getl n c2 (CHead e2 (Bind b0) w))))))) (\lambda (_: B).(\lambda (_: 
17092 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17093 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17094 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))) (ex3_4_intro B C C 
17095 T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C 
17096 (CHead x1 (Bind b) x3) (CHead e1 (Bind b0) u)))))) (\lambda (b0: B).(\lambda 
17097 (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b0) 
17098 u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17099 T).(csubst0 (minus i (S n)) v e1 e2))))) b x1 x2 x3 (refl_equal C (CHead x1 
17100 (Bind b) x3)) (getl_intro n c2 (CHead x2 (Bind b) x3) (CHead x2 (Bind b) x3) 
17101 H11 (clear_bind b x2 x3)) H12)) e (clear_gen_bind b x1 e x3 H13))))) | (Flat 
17102 f) \Rightarrow (\lambda (H11: (drop n O c2 (CHead x2 (Flat f) x3))).(\lambda 
17103 (H12: (csubst0 (minus i (s (Flat f) n)) v x1 x2)).(\lambda (H13: (clear 
17104 (CHead x1 (Flat f) x3) e)).(let H14 \def (eq_ind nat (minus i n) (\lambda (n: 
17105 nat).(csubst0 n v x1 x2)) H12 (S (minus i (S n))) (minus_x_Sy i n H)) in (let 
17106 H15 \def (csubst0_clear_S x1 x2 v (minus i (S n)) H14 e (clear_gen_flat f x1 
17107 e x3 H13)) in (or4_ind (clear x2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda 
17108 (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u1)))))) 
17109 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(clear x2 
17110 (CHead e0 (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
17111 T).(\lambda (u2: T).(subst0 (minus i (S n)) v u1 u2)))))) (ex3_4 B C C T 
17112 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
17113 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17114 C).(\lambda (u: T).(clear x2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17115 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17116 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17117 C).(\lambda (u1: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u1))))))) 
17118 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
17119 (u2: T).(clear x2 (CHead e2 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: 
17120 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 (minus i (S n)) 
17121 v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17122 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))) (or4 (getl n c2 e) 
17123 (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
17124 T).(eq C e (CHead e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: 
17125 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) 
17126 (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
17127 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
17128 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind b) u)))))) 
17129 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 
17130 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17131 C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T 
17132 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
17133 T).(eq C e (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: 
17134 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 
17135 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
17136 (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: 
17137 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
17138 (minus i (S n)) v e1 e2)))))))) (\lambda (H16: (clear x2 e)).(or4_intro0 
17139 (getl n c2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: 
17140 T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u)))))) (\lambda (b: 
17141 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 
17142 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17143 T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: 
17144 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind 
17145 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
17146 T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
17147 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) 
17148 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
17149 (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) (\lambda (b: 
17150 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n 
17151 c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
17152 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) 
17153 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
17154 (_: T).(csubst0 (minus i (S n)) v e1 e2))))))) (getl_intro n c2 e (CHead x2 
17155 (Flat f) x3) H11 (clear_flat x2 e H16 f x3)))) (\lambda (H16: (ex3_4 B C T T 
17156 (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C e 
17157 (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: C).(\lambda (_: 
17158 T).(\lambda (u2: T).(clear x2 (CHead e (Bind b) u2)))))) (\lambda (_: 
17159 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 (minus i (S n)) 
17160 v u1 u2))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda 
17161 (u1: T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u1)))))) (\lambda (b: 
17162 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(clear x2 (CHead e0 
17163 (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda 
17164 (u2: T).(subst0 (minus i (S n)) v u1 u2))))) (or4 (getl n c2 e) (ex3_4 B C T 
17165 T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
17166 (CHead e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
17167 T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: 
17168 B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17169 u w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17170 C).(\lambda (u: T).(eq C e (CHead e1 (Bind b) u)))))) (\lambda (b: 
17171 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 (CHead e2 
17172 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
17173 (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
17174 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
17175 (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17176 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 (Bind b) w))))))) 
17177 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17178 T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e1: 
17179 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) 
17180 v e1 e2)))))))) (\lambda (x4: B).(\lambda (x5: C).(\lambda (x6: T).(\lambda 
17181 (x7: T).(\lambda (H17: (eq C e (CHead x5 (Bind x4) x6))).(\lambda (H18: 
17182 (clear x2 (CHead x5 (Bind x4) x7))).(\lambda (H19: (subst0 (minus i (S n)) v 
17183 x6 x7)).(eq_ind_r C (CHead x5 (Bind x4) x6) (\lambda (c: C).(or4 (getl n c2 
17184 c) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: T).(\lambda 
17185 (_: T).(eq C c (CHead e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: 
17186 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) 
17187 (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
17188 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
17189 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 (Bind b) u)))))) 
17190 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 
17191 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17192 C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T 
17193 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
17194 T).(eq C c (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: 
17195 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 
17196 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
17197 (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: 
17198 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
17199 (minus i (S n)) v e1 e2))))))))) (or4_intro1 (getl n c2 (CHead x5 (Bind x4) 
17200 x6)) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: T).(\lambda 
17201 (_: T).(eq C (CHead x5 (Bind x4) x6) (CHead e0 (Bind b) u)))))) (\lambda (b: 
17202 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 
17203 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17204 T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: 
17205 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead x5 (Bind x4) 
17206 x6) (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17207 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17208 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17209 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17210 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x5 (Bind x4) x6) (CHead e1 
17211 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
17212 (_: T).(\lambda (w: T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: 
17213 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
17214 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17215 C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))) 
17216 (ex3_4_intro B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: 
17217 T).(\lambda (_: T).(eq C (CHead x5 (Bind x4) x6) (CHead e0 (Bind b) u)))))) 
17218 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 
17219 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: 
17220 T).(\lambda (w: T).(subst0 (minus i (S n)) v u w))))) x4 x5 x6 x7 (refl_equal 
17221 C (CHead x5 (Bind x4) x6)) (getl_intro n c2 (CHead x5 (Bind x4) x7) (CHead x2 
17222 (Flat f) x3) H11 (clear_flat x2 (CHead x5 (Bind x4) x7) H18 f x3)) H19)) e 
17223 H17)))))))) H16)) (\lambda (H16: (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
17224 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind b) u)))))) 
17225 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear x2 
17226 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17227 C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))).(ex3_4_ind B C C T 
17228 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
17229 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17230 C).(\lambda (u: T).(clear x2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17231 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17232 v e1 e2))))) (or4 (getl n c2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: 
17233 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u)))))) 
17234 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 
17235 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: 
17236 T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T 
17237 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
17238 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17239 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17240 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17241 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17242 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) 
17243 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
17244 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
17245 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17246 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17247 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))))) (\lambda (x4: 
17248 B).(\lambda (x5: C).(\lambda (x6: C).(\lambda (x7: T).(\lambda (H17: (eq C e 
17249 (CHead x5 (Bind x4) x7))).(\lambda (H18: (clear x2 (CHead x6 (Bind x4) 
17250 x7))).(\lambda (H19: (csubst0 (minus i (S n)) v x5 x6)).(eq_ind_r C (CHead x5 
17251 (Bind x4) x7) (\lambda (c: C).(or4 (getl n c2 c) (ex3_4 B C T T (\lambda (b: 
17252 B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 (Bind 
17253 b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
17254 T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
17255 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 
17256 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq 
17257 C c (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17258 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17259 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17260 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17261 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 (Bind b) u))))))) 
17262 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
17263 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
17264 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17265 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17266 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))))) (or4_intro2 
17267 (getl n c2 (CHead x5 (Bind x4) x7)) (ex3_4 B C T T (\lambda (b: B).(\lambda 
17268 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x5 (Bind x4) x7) (CHead 
17269 e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda 
17270 (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
17271 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 
17272 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq 
17273 C (CHead x5 (Bind x4) x7) (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda 
17274 (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) 
17275 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
17276 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: 
17277 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x5 (Bind x4) 
17278 x7) (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17279 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 (Bind b) w))))))) 
17280 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17281 T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e1: 
17282 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) 
17283 v e1 e2))))))) (ex3_4_intro B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda 
17284 (_: C).(\lambda (u: T).(eq C (CHead x5 (Bind x4) x7) (CHead e1 (Bind b) 
17285 u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
17286 T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
17287 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))) x4 
17288 x5 x6 x7 (refl_equal C (CHead x5 (Bind x4) x7)) (getl_intro n c2 (CHead x6 
17289 (Bind x4) x7) (CHead x2 (Flat f) x3) H11 (clear_flat x2 (CHead x6 (Bind x4) 
17290 x7) H18 f x3)) H19)) e H17)))))))) H16)) (\lambda (H16: (ex4_5 B C C T T 
17291 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
17292 (_: T).(eq C e (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: 
17293 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(clear x2 (CHead e2 
17294 (Bind b) u2))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
17295 (u1: T).(\lambda (u2: T).(subst0 (minus i (S n)) v u1 u2)))))) (\lambda (_: 
17296 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
17297 (minus i (S n)) v e1 e2)))))))).(ex4_5_ind B C C T T (\lambda (b: B).(\lambda 
17298 (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C e (CHead e1 
17299 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
17300 (_: T).(\lambda (u2: T).(clear x2 (CHead e2 (Bind b) u2))))))) (\lambda (_: 
17301 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
17302 (minus i (S n)) v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17303 C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) 
17304 (or4 (getl n c2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda 
17305 (u: T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u)))))) (\lambda (b: 
17306 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 
17307 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17308 T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: 
17309 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind 
17310 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
17311 T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
17312 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) 
17313 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
17314 (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) (\lambda (b: 
17315 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n 
17316 c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
17317 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) 
17318 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
17319 (_: T).(csubst0 (minus i (S n)) v e1 e2)))))))) (\lambda (x4: B).(\lambda 
17320 (x5: C).(\lambda (x6: C).(\lambda (x7: T).(\lambda (x8: T).(\lambda (H17: (eq 
17321 C e (CHead x5 (Bind x4) x7))).(\lambda (H18: (clear x2 (CHead x6 (Bind x4) 
17322 x8))).(\lambda (H19: (subst0 (minus i (S n)) v x7 x8)).(\lambda (H20: 
17323 (csubst0 (minus i (S n)) v x5 x6)).(eq_ind_r C (CHead x5 (Bind x4) x7) 
17324 (\lambda (c: C).(or4 (getl n c2 c) (ex3_4 B C T T (\lambda (b: B).(\lambda 
17325 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 (Bind b) u)))))) 
17326 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 
17327 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: 
17328 T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T 
17329 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c 
17330 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17331 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17332 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17333 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17334 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 (Bind b) u))))))) 
17335 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
17336 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
17337 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17338 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17339 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))))) (or4_intro3 
17340 (getl n c2 (CHead x5 (Bind x4) x7)) (ex3_4 B C T T (\lambda (b: B).(\lambda 
17341 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x5 (Bind x4) x7) (CHead 
17342 e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda 
17343 (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
17344 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 
17345 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq 
17346 C (CHead x5 (Bind x4) x7) (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda 
17347 (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) 
17348 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
17349 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: 
17350 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x5 (Bind x4) 
17351 x7) (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17352 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 (Bind b) w))))))) 
17353 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17354 T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e1: 
17355 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) 
17356 v e1 e2))))))) (ex4_5_intro B C C T T (\lambda (b: B).(\lambda (e1: 
17357 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x5 (Bind x4) 
17358 x7) (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17359 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 (Bind b) w))))))) 
17360 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17361 T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e1: 
17362 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) 
17363 v e1 e2)))))) x4 x5 x6 x7 x8 (refl_equal C (CHead x5 (Bind x4) x7)) 
17364 (getl_intro n c2 (CHead x6 (Bind x4) x8) (CHead x2 (Flat f) x3) H11 
17365 (clear_flat x2 (CHead x6 (Bind x4) x8) H18 f x3)) H19 H20)) e H17)))))))))) 
17366 H16)) H15))))))]) H8 H9 H10))))))))) H6)) (\lambda (H6: (ex4_5 K C C T T 
17367 (\lambda (k: K).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
17368 T).(eq C x (CHead e1 k u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: 
17369 C).(\lambda (_: T).(\lambda (w: T).(drop n O c2 (CHead e2 k w))))))) (\lambda 
17370 (k: K).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17371 T).(subst0 (minus i (s k n)) v u w)))))) (\lambda (k: K).(\lambda (e1: 
17372 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (s k 
17373 n)) v e1 e2)))))))).(ex4_5_ind K C C T T (\lambda (k: K).(\lambda (e1: 
17374 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C x (CHead e1 k 
17375 u))))))) (\lambda (k: K).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
17376 T).(\lambda (w: T).(drop n O c2 (CHead e2 k w))))))) (\lambda (k: K).(\lambda 
17377 (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (s k 
17378 n)) v u w)))))) (\lambda (k: K).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
17379 (_: T).(\lambda (_: T).(csubst0 (minus i (s k n)) v e1 e2)))))) (or4 (getl n 
17380 c2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: 
17381 T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u)))))) (\lambda (b: 
17382 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 
17383 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17384 T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: 
17385 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind 
17386 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
17387 T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
17388 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) 
17389 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
17390 (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) (\lambda (b: 
17391 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n 
17392 c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
17393 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) 
17394 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
17395 (_: T).(csubst0 (minus i (S n)) v e1 e2)))))))) (\lambda (x0: K).(\lambda 
17396 (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: T).(\lambda (H7: (eq 
17397 C x (CHead x1 x0 x3))).(\lambda (H8: (drop n O c2 (CHead x2 x0 x4))).(\lambda 
17398 (H9: (subst0 (minus i (s x0 n)) v x3 x4)).(\lambda (H10: (csubst0 (minus i (s 
17399 x0 n)) v x1 x2)).(let H11 \def (eq_ind C x (\lambda (c: C).(clear c e)) H4 
17400 (CHead x1 x0 x3) H7) in ((match x0 return (\lambda (k: K).((drop n O c2 
17401 (CHead x2 k x4)) \to ((subst0 (minus i (s k n)) v x3 x4) \to ((csubst0 (minus 
17402 i (s k n)) v x1 x2) \to ((clear (CHead x1 k x3) e) \to (or4 (getl n c2 e) 
17403 (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
17404 T).(eq C e (CHead e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: 
17405 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) 
17406 (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
17407 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
17408 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind b) u)))))) 
17409 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 
17410 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17411 C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T 
17412 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
17413 T).(eq C e (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: 
17414 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 
17415 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
17416 (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: 
17417 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
17418 (minus i (S n)) v e1 e2))))))))))))) with [(Bind b) \Rightarrow (\lambda 
17419 (H12: (drop n O c2 (CHead x2 (Bind b) x4))).(\lambda (H13: (subst0 (minus i 
17420 (s (Bind b) n)) v x3 x4)).(\lambda (H14: (csubst0 (minus i (s (Bind b) n)) v 
17421 x1 x2)).(\lambda (H15: (clear (CHead x1 (Bind b) x3) e)).(eq_ind_r C (CHead 
17422 x1 (Bind b) x3) (\lambda (c: C).(or4 (getl n c2 c) (ex3_4 B C T T (\lambda 
17423 (b0: B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 
17424 (Bind b0) u)))))) (\lambda (b0: B).(\lambda (e0: C).(\lambda (_: T).(\lambda 
17425 (w: T).(getl n c2 (CHead e0 (Bind b0) w)))))) (\lambda (_: B).(\lambda (_: 
17426 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 
17427 B C C T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq 
17428 C c (CHead e1 (Bind b0) u)))))) (\lambda (b0: B).(\lambda (_: C).(\lambda 
17429 (e2: C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b0) u)))))) (\lambda (_: 
17430 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17431 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: 
17432 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 (Bind b0) u))))))) 
17433 (\lambda (b0: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
17434 (w: T).(getl n c2 (CHead e2 (Bind b0) w))))))) (\lambda (_: B).(\lambda (_: 
17435 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17436 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17437 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))))) (or4_intro3 
17438 (getl n c2 (CHead x1 (Bind b) x3)) (ex3_4 B C T T (\lambda (b0: B).(\lambda 
17439 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x1 (Bind b) x3) (CHead 
17440 e0 (Bind b0) u)))))) (\lambda (b0: B).(\lambda (e0: C).(\lambda (_: 
17441 T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b0) w)))))) (\lambda (_: 
17442 B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17443 u w)))))) (ex3_4 B C C T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: 
17444 C).(\lambda (u: T).(eq C (CHead x1 (Bind b) x3) (CHead e1 (Bind b0) u)))))) 
17445 (\lambda (b0: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 
17446 (CHead e2 (Bind b0) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17447 C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T 
17448 (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda 
17449 (_: T).(eq C (CHead x1 (Bind b) x3) (CHead e1 (Bind b0) u))))))) (\lambda 
17450 (b0: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
17451 T).(getl n c2 (CHead e2 (Bind b0) w))))))) (\lambda (_: B).(\lambda (_: 
17452 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17453 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17454 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))) (ex4_5_intro B C C 
17455 T T (\lambda (b0: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: 
17456 T).(\lambda (_: T).(eq C (CHead x1 (Bind b) x3) (CHead e1 (Bind b0) u))))))) 
17457 (\lambda (b0: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
17458 (w: T).(getl n c2 (CHead e2 (Bind b0) w))))))) (\lambda (_: B).(\lambda (_: 
17459 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17460 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17461 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) b x1 x2 x3 x4 
17462 (refl_equal C (CHead x1 (Bind b) x3)) (getl_intro n c2 (CHead x2 (Bind b) x4) 
17463 (CHead x2 (Bind b) x4) H12 (clear_bind b x2 x4)) H13 H14)) e (clear_gen_bind 
17464 b x1 e x3 H15)))))) | (Flat f) \Rightarrow (\lambda (H12: (drop n O c2 (CHead 
17465 x2 (Flat f) x4))).(\lambda (_: (subst0 (minus i (s (Flat f) n)) v x3 
17466 x4)).(\lambda (H14: (csubst0 (minus i (s (Flat f) n)) v x1 x2)).(\lambda 
17467 (H15: (clear (CHead x1 (Flat f) x3) e)).(let H16 \def (eq_ind nat (minus i n) 
17468 (\lambda (n: nat).(csubst0 n v x1 x2)) H14 (S (minus i (S n))) (minus_x_Sy i 
17469 n H)) in (let H17 \def (csubst0_clear_S x1 x2 v (minus i (S n)) H16 e 
17470 (clear_gen_flat f x1 e x3 H15)) in (or4_ind (clear x2 e) (ex3_4 B C T T 
17471 (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C e 
17472 (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
17473 T).(\lambda (u2: T).(clear x2 (CHead e0 (Bind b) u2)))))) (\lambda (_: 
17474 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 (minus i (S n)) 
17475 v u1 u2)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17476 C).(\lambda (u: T).(eq C e (CHead e1 (Bind b) u)))))) (\lambda (b: 
17477 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear x2 (CHead e2 (Bind 
17478 b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17479 T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
17480 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C e 
17481 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17482 C).(\lambda (_: T).(\lambda (u2: T).(clear x2 (CHead e2 (Bind b) u2))))))) 
17483 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
17484 (u2: T).(subst0 (minus i (S n)) v u1 u2)))))) (\lambda (_: B).(\lambda (e1: 
17485 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) 
17486 v e1 e2))))))) (or4 (getl n c2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda 
17487 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u)))))) 
17488 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 
17489 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: 
17490 T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T 
17491 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e 
17492 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17493 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17494 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17495 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17496 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) 
17497 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
17498 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
17499 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17500 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17501 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))))) (\lambda (H18: 
17502 (clear x2 e)).(or4_intro0 (getl n c2 e) (ex3_4 B C T T (\lambda (b: 
17503 B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e0 (Bind 
17504 b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
17505 T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
17506 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 
17507 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq 
17508 C e (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17509 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17510 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17511 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17512 C).(\lambda (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) 
17513 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
17514 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
17515 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17516 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17517 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))) (getl_intro n c2 e 
17518 (CHead x2 (Flat f) x4) H12 (clear_flat x2 e H18 f x4)))) (\lambda (H18: 
17519 (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
17520 T).(eq C e (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e: 
17521 C).(\lambda (_: T).(\lambda (u2: T).(clear x2 (CHead e (Bind b) u2)))))) 
17522 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
17523 (minus i (S n)) v u1 u2))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda 
17524 (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u1)))))) 
17525 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: T).(clear x2 
17526 (CHead e0 (Bind b) u2)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
17527 T).(\lambda (u2: T).(subst0 (minus i (S n)) v u1 u2))))) (or4 (getl n c2 e) 
17528 (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: 
17529 T).(eq C e (CHead e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: 
17530 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) 
17531 (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
17532 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
17533 C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind b) u)))))) 
17534 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 
17535 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17536 C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T 
17537 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
17538 T).(eq C e (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: 
17539 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 
17540 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
17541 (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: 
17542 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
17543 (minus i (S n)) v e1 e2)))))))) (\lambda (x5: B).(\lambda (x6: C).(\lambda 
17544 (x7: T).(\lambda (x8: T).(\lambda (H19: (eq C e (CHead x6 (Bind x5) 
17545 x7))).(\lambda (H20: (clear x2 (CHead x6 (Bind x5) x8))).(\lambda (H21: 
17546 (subst0 (minus i (S n)) v x7 x8)).(eq_ind_r C (CHead x6 (Bind x5) x7) 
17547 (\lambda (c: C).(or4 (getl n c2 c) (ex3_4 B C T T (\lambda (b: B).(\lambda 
17548 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 (Bind b) u)))))) 
17549 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 
17550 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: 
17551 T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T 
17552 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c 
17553 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17554 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17555 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17556 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17557 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 (Bind b) u))))))) 
17558 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
17559 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
17560 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17561 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17562 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))))) (or4_intro1 
17563 (getl n c2 (CHead x6 (Bind x5) x7)) (ex3_4 B C T T (\lambda (b: B).(\lambda 
17564 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x6 (Bind x5) x7) (CHead 
17565 e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda 
17566 (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
17567 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 
17568 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq 
17569 C (CHead x6 (Bind x5) x7) (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda 
17570 (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) 
17571 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
17572 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: 
17573 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x6 (Bind x5) 
17574 x7) (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17575 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 (Bind b) w))))))) 
17576 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17577 T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e1: 
17578 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) 
17579 v e1 e2))))))) (ex3_4_intro B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda 
17580 (u: T).(\lambda (_: T).(eq C (CHead x6 (Bind x5) x7) (CHead e0 (Bind b) 
17581 u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
17582 T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
17583 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w))))) x5 x6 
17584 x7 x8 (refl_equal C (CHead x6 (Bind x5) x7)) (getl_intro n c2 (CHead x6 (Bind 
17585 x5) x8) (CHead x2 (Flat f) x4) H12 (clear_flat x2 (CHead x6 (Bind x5) x8) H20 
17586 f x4)) H21)) e H19)))))))) H18)) (\lambda (H18: (ex3_4 B C C T (\lambda (b: 
17587 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind 
17588 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
17589 T).(clear x2 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
17590 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 
17591 e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17592 C).(\lambda (u: T).(eq C e (CHead e1 (Bind b) u)))))) (\lambda (b: 
17593 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(clear x2 (CHead e2 (Bind 
17594 b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17595 T).(csubst0 (minus i (S n)) v e1 e2))))) (or4 (getl n c2 e) (ex3_4 B C T T 
17596 (\lambda (b: B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
17597 (CHead e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
17598 T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: 
17599 B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17600 u w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17601 C).(\lambda (u: T).(eq C e (CHead e1 (Bind b) u)))))) (\lambda (b: 
17602 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 (CHead e2 
17603 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
17604 (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: 
17605 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e 
17606 (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17607 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 (Bind b) w))))))) 
17608 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17609 T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e1: 
17610 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) 
17611 v e1 e2)))))))) (\lambda (x5: B).(\lambda (x6: C).(\lambda (x7: C).(\lambda 
17612 (x8: T).(\lambda (H19: (eq C e (CHead x6 (Bind x5) x8))).(\lambda (H20: 
17613 (clear x2 (CHead x7 (Bind x5) x8))).(\lambda (H21: (csubst0 (minus i (S n)) v 
17614 x6 x7)).(eq_ind_r C (CHead x6 (Bind x5) x8) (\lambda (c: C).(or4 (getl n c2 
17615 c) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: T).(\lambda 
17616 (_: T).(eq C c (CHead e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: 
17617 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) 
17618 (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
17619 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
17620 C).(\lambda (_: C).(\lambda (u: T).(eq C c (CHead e1 (Bind b) u)))))) 
17621 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 
17622 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17623 C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T 
17624 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: 
17625 T).(eq C c (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: 
17626 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 
17627 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
17628 (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: 
17629 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
17630 (minus i (S n)) v e1 e2))))))))) (or4_intro2 (getl n c2 (CHead x6 (Bind x5) 
17631 x8)) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: T).(\lambda 
17632 (_: T).(eq C (CHead x6 (Bind x5) x8) (CHead e0 (Bind b) u)))))) (\lambda (b: 
17633 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 
17634 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17635 T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: 
17636 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C (CHead x6 (Bind x5) 
17637 x8) (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17638 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17639 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17640 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17641 C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x6 (Bind x5) x8) (CHead e1 
17642 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
17643 (_: T).(\lambda (w: T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: 
17644 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
17645 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17646 C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))) 
17647 (ex3_4_intro B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17648 C).(\lambda (u: T).(eq C (CHead x6 (Bind x5) x8) (CHead e1 (Bind b) u)))))) 
17649 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 
17650 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17651 C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))) x5 x6 x7 x8 
17652 (refl_equal C (CHead x6 (Bind x5) x8)) (getl_intro n c2 (CHead x7 (Bind x5) 
17653 x8) (CHead x2 (Flat f) x4) H12 (clear_flat x2 (CHead x7 (Bind x5) x8) H20 f 
17654 x4)) H21)) e H19)))))))) H18)) (\lambda (H18: (ex4_5 B C C T T (\lambda (b: 
17655 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C e 
17656 (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17657 C).(\lambda (_: T).(\lambda (u2: T).(clear x2 (CHead e2 (Bind b) u2))))))) 
17658 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
17659 (u2: T).(subst0 (minus i (S n)) v u1 u2)))))) (\lambda (_: B).(\lambda (e1: 
17660 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) 
17661 v e1 e2)))))))).(ex4_5_ind B C C T T (\lambda (b: B).(\lambda (e1: 
17662 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C e (CHead e1 (Bind 
17663 b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
17664 T).(\lambda (u2: T).(clear x2 (CHead e2 (Bind b) u2))))))) (\lambda (_: 
17665 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
17666 (minus i (S n)) v u1 u2)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
17667 C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) 
17668 (or4 (getl n c2 e) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda 
17669 (u: T).(\lambda (_: T).(eq C e (CHead e0 (Bind b) u)))))) (\lambda (b: 
17670 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e0 
17671 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17672 T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: 
17673 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C e (CHead e1 (Bind 
17674 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: 
17675 T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
17676 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2)))))) 
17677 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
17678 (u: T).(\lambda (_: T).(eq C e (CHead e1 (Bind b) u))))))) (\lambda (b: 
17679 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n 
17680 c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
17681 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) 
17682 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
17683 (_: T).(csubst0 (minus i (S n)) v e1 e2)))))))) (\lambda (x5: B).(\lambda 
17684 (x6: C).(\lambda (x7: C).(\lambda (x8: T).(\lambda (x9: T).(\lambda (H19: (eq 
17685 C e (CHead x6 (Bind x5) x8))).(\lambda (H20: (clear x2 (CHead x7 (Bind x5) 
17686 x9))).(\lambda (H21: (subst0 (minus i (S n)) v x8 x9)).(\lambda (H22: 
17687 (csubst0 (minus i (S n)) v x6 x7)).(eq_ind_r C (CHead x6 (Bind x5) x8) 
17688 (\lambda (c: C).(or4 (getl n c2 c) (ex3_4 B C T T (\lambda (b: B).(\lambda 
17689 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e0 (Bind b) u)))))) 
17690 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c2 
17691 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: 
17692 T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T 
17693 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq C c 
17694 (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17695 C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
17696 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
17697 v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
17698 C).(\lambda (u: T).(\lambda (_: T).(eq C c (CHead e1 (Bind b) u))))))) 
17699 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
17700 T).(getl n c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
17701 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v 
17702 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
17703 T).(\lambda (_: T).(csubst0 (minus i (S n)) v e1 e2))))))))) (or4_intro3 
17704 (getl n c2 (CHead x6 (Bind x5) x8)) (ex3_4 B C T T (\lambda (b: B).(\lambda 
17705 (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x6 (Bind x5) x8) (CHead 
17706 e0 (Bind b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda 
17707 (w: T).(getl n c2 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
17708 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 
17709 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(eq 
17710 C (CHead x6 (Bind x5) x8) (CHead e1 (Bind b) u)))))) (\lambda (b: B).(\lambda 
17711 (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c2 (CHead e2 (Bind b) u)))))) 
17712 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
17713 (minus i (S n)) v e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: 
17714 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x6 (Bind x5) 
17715 x8) (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17716 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 (Bind b) w))))))) 
17717 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17718 T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e1: 
17719 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) 
17720 v e1 e2))))))) (ex4_5_intro B C C T T (\lambda (b: B).(\lambda (e1: 
17721 C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C (CHead x6 (Bind x5) 
17722 x8) (CHead e1 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
17723 C).(\lambda (_: T).(\lambda (w: T).(getl n c2 (CHead e2 (Bind b) w))))))) 
17724 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
17725 T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e1: 
17726 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) 
17727 v e1 e2)))))) x5 x6 x7 x8 x9 (refl_equal C (CHead x6 (Bind x5) x8)) 
17728 (getl_intro n c2 (CHead x7 (Bind x5) x9) (CHead x2 (Flat f) x4) H12 
17729 (clear_flat x2 (CHead x7 (Bind x5) x9) H20 f x4)) H21 H22)) e H19)))))))))) 
17730 H18)) H17)))))))]) H8 H9 H10 H11))))))))))) H6)) H5))))) H2)))))))))).
17731
17732 theorem csubst0_getl_ge_back:
17733  \forall (i: nat).(\forall (n: nat).((le i n) \to (\forall (c1: C).(\forall 
17734 (c2: C).(\forall (v: T).((csubst0 i v c1 c2) \to (\forall (e: C).((getl n c2 
17735 e) \to (getl n c1 e)))))))))
17736 \def
17737  \lambda (i: nat).(\lambda (n: nat).(\lambda (H: (le i n)).(\lambda (c1: 
17738 C).(\lambda (c2: C).(\lambda (v: T).(\lambda (H0: (csubst0 i v c1 
17739 c2)).(\lambda (e: C).(\lambda (H1: (getl n c2 e)).(let H2 \def (getl_gen_all 
17740 c2 e n H1) in (ex2_ind C (\lambda (e0: C).(drop n O c2 e0)) (\lambda (e0: 
17741 C).(clear e0 e)) (getl n c1 e) (\lambda (x: C).(\lambda (H3: (drop n O c2 
17742 x)).(\lambda (H4: (clear x e)).(lt_eq_gt_e i n (getl n c1 e) (\lambda (H5: 
17743 (lt i n)).(getl_intro n c1 e x (csubst0_drop_gt_back n i H5 c1 c2 v H0 x H3) 
17744 H4)) (\lambda (H5: (eq nat i n)).(let H6 \def (eq_ind_r nat n (\lambda (n: 
17745 nat).(drop n O c2 x)) H3 i H5) in (let H7 \def (eq_ind_r nat n (\lambda (n: 
17746 nat).(le i n)) H i H5) in (eq_ind nat i (\lambda (n0: nat).(getl n0 c1 e)) 
17747 (let H8 \def (csubst0_drop_eq_back i c1 c2 v H0 x H6) in (or4_ind (drop i O 
17748 c1 x) (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
17749 T).(\lambda (u2: T).(eq C x (CHead e0 (Flat f) u2)))))) (\lambda (f: 
17750 F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop i O c1 (CHead e0 
17751 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda 
17752 (u2: T).(subst0 O v u1 u2)))))) (ex3_4 F C C T (\lambda (f: F).(\lambda (_: 
17753 C).(\lambda (e2: C).(\lambda (u: T).(eq C x (CHead e2 (Flat f) u)))))) 
17754 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop i O c1 
17755 (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
17756 C).(\lambda (_: T).(csubst0 O v e1 e2)))))) (ex4_5 F C C T T (\lambda (f: 
17757 F).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C x 
17758 (CHead e2 (Flat f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: 
17759 C).(\lambda (u1: T).(\lambda (_: T).(drop i O c1 (CHead e1 (Flat f) u1))))))) 
17760 (\lambda (_: F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
17761 (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda 
17762 (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 O v e1 e2))))))) (getl i c1 
17763 e) (\lambda (H9: (drop i O c1 x)).(getl_intro i c1 e x H9 H4)) (\lambda (H9: 
17764 (ex3_4 F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: T).(\lambda (u2: 
17765 T).(eq C x (CHead e0 (Flat f) u2)))))) (\lambda (f: F).(\lambda (e0: 
17766 C).(\lambda (u1: T).(\lambda (_: T).(drop i O c1 (CHead e0 (Flat f) u1)))))) 
17767 (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v 
17768 u1 u2))))))).(ex3_4_ind F C T T (\lambda (f: F).(\lambda (e0: C).(\lambda (_: 
17769 T).(\lambda (u2: T).(eq C x (CHead e0 (Flat f) u2)))))) (\lambda (f: 
17770 F).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(drop i O c1 (CHead e0 
17771 (Flat f) u1)))))) (\lambda (_: F).(\lambda (_: C).(\lambda (u1: T).(\lambda 
17772 (u2: T).(subst0 O v u1 u2))))) (getl i c1 e) (\lambda (x0: F).(\lambda (x1: 
17773 C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H10: (eq C x (CHead x1 (Flat 
17774 x0) x3))).(\lambda (H11: (drop i O c1 (CHead x1 (Flat x0) x2))).(\lambda (_: 
17775 (subst0 O v x2 x3)).(let H13 \def (eq_ind C x (\lambda (c: C).(clear c e)) H4 
17776 (CHead x1 (Flat x0) x3) H10) in (getl_intro i c1 e (CHead x1 (Flat x0) x2) 
17777 H11 (clear_flat x1 e (clear_gen_flat x0 x1 e x3 H13) x0 x2)))))))))) H9)) 
17778 (\lambda (H9: (ex3_4 F C C T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: 
17779 C).(\lambda (u: T).(eq C x (CHead e2 (Flat f) u)))))) (\lambda (f: 
17780 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop i O c1 (CHead e1 
17781 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
17782 (_: T).(csubst0 O v e1 e2))))))).(ex3_4_ind F C C T (\lambda (f: F).(\lambda 
17783 (_: C).(\lambda (e2: C).(\lambda (u: T).(eq C x (CHead e2 (Flat f) u)))))) 
17784 (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u: T).(drop i O c1 
17785 (CHead e1 (Flat f) u)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: 
17786 C).(\lambda (_: T).(csubst0 O v e1 e2))))) (getl i c1 e) (\lambda (x0: 
17787 F).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H10: (eq C x 
17788 (CHead x2 (Flat x0) x3))).(\lambda (H11: (drop i O c1 (CHead x1 (Flat x0) 
17789 x3))).(\lambda (H12: (csubst0 O v x1 x2)).(let H13 \def (eq_ind C x (\lambda 
17790 (c: C).(clear c e)) H4 (CHead x2 (Flat x0) x3) H10) in (getl_intro i c1 e 
17791 (CHead x1 (Flat x0) x3) H11 (clear_flat x1 e (csubst0_clear_O_back x1 x2 v 
17792 H12 e (clear_gen_flat x0 x2 e x3 H13)) x0 x3)))))))))) H9)) (\lambda (H9: 
17793 (ex4_5 F C C T T (\lambda (f: F).(\lambda (_: C).(\lambda (e2: C).(\lambda 
17794 (_: T).(\lambda (u2: T).(eq C x (CHead e2 (Flat f) u2))))))) (\lambda (f: 
17795 F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(drop i 
17796 O c1 (CHead e1 (Flat f) u1))))))) (\lambda (_: F).(\lambda (_: C).(\lambda 
17797 (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 O v u1 u2)))))) (\lambda (_: 
17798 F).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
17799 O v e1 e2)))))))).(ex4_5_ind F C C T T (\lambda (f: F).(\lambda (_: 
17800 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (u2: T).(eq C x (CHead e2 (Flat 
17801 f) u2))))))) (\lambda (f: F).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
17802 T).(\lambda (_: T).(drop i O c1 (CHead e1 (Flat f) u1))))))) (\lambda (_: 
17803 F).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (u2: T).(subst0 
17804 O v u1 u2)))))) (\lambda (_: F).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
17805 (_: T).(\lambda (_: T).(csubst0 O v e1 e2)))))) (getl i c1 e) (\lambda (x0: 
17806 F).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: 
17807 T).(\lambda (H10: (eq C x (CHead x2 (Flat x0) x4))).(\lambda (H11: (drop i O 
17808 c1 (CHead x1 (Flat x0) x3))).(\lambda (_: (subst0 O v x3 x4)).(\lambda (H13: 
17809 (csubst0 O v x1 x2)).(let H14 \def (eq_ind C x (\lambda (c: C).(clear c e)) 
17810 H4 (CHead x2 (Flat x0) x4) H10) in (getl_intro i c1 e (CHead x1 (Flat x0) x3) 
17811 H11 (clear_flat x1 e (csubst0_clear_O_back x1 x2 v H13 e (clear_gen_flat x0 
17812 x2 e x4 H14)) x0 x3)))))))))))) H9)) H8)) n H5)))) (\lambda (H5: (lt n 
17813 i)).(le_lt_false i n H H5 (getl n c1 e))))))) H2)))))))))).
17814
17815 inductive csubst1 (i:nat) (v:T) (c1:C): C \to Prop \def
17816 | csubst1_refl: csubst1 i v c1 c1
17817 | csubst1_sing: \forall (c2: C).((csubst0 i v c1 c2) \to (csubst1 i v c1 c2)).
17818
17819 theorem csubst1_head:
17820  \forall (k: K).(\forall (i: nat).(\forall (v: T).(\forall (u1: T).(\forall 
17821 (u2: T).((subst1 i v u1 u2) \to (\forall (c1: C).(\forall (c2: C).((csubst1 i 
17822 v c1 c2) \to (csubst1 (s k i) v (CHead c1 k u1) (CHead c2 k u2))))))))))
17823 \def
17824  \lambda (k: K).(\lambda (i: nat).(\lambda (v: T).(\lambda (u1: T).(\lambda 
17825 (u2: T).(\lambda (H: (subst1 i v u1 u2)).(subst1_ind i v u1 (\lambda (t: 
17826 T).(\forall (c1: C).(\forall (c2: C).((csubst1 i v c1 c2) \to (csubst1 (s k 
17827 i) v (CHead c1 k u1) (CHead c2 k t)))))) (\lambda (c1: C).(\lambda (c2: 
17828 C).(\lambda (H0: (csubst1 i v c1 c2)).(csubst1_ind i v c1 (\lambda (c: 
17829 C).(csubst1 (s k i) v (CHead c1 k u1) (CHead c k u1))) (csubst1_refl (s k i) 
17830 v (CHead c1 k u1)) (\lambda (c3: C).(\lambda (H1: (csubst0 i v c1 
17831 c3)).(csubst1_sing (s k i) v (CHead c1 k u1) (CHead c3 k u1) (csubst0_fst k i 
17832 c1 c3 v H1 u1)))) c2 H0)))) (\lambda (t2: T).(\lambda (H0: (subst0 i v u1 
17833 t2)).(\lambda (c1: C).(\lambda (c2: C).(\lambda (H1: (csubst1 i v c1 
17834 c2)).(csubst1_ind i v c1 (\lambda (c: C).(csubst1 (s k i) v (CHead c1 k u1) 
17835 (CHead c k t2))) (csubst1_sing (s k i) v (CHead c1 k u1) (CHead c1 k t2) 
17836 (csubst0_snd k i v u1 t2 H0 c1)) (\lambda (c3: C).(\lambda (H2: (csubst0 i v 
17837 c1 c3)).(csubst1_sing (s k i) v (CHead c1 k u1) (CHead c3 k t2) (csubst0_both 
17838 k i v u1 t2 H0 c1 c3 H2)))) c2 H1)))))) u2 H)))))).
17839
17840 theorem csubst1_bind:
17841  \forall (b: B).(\forall (i: nat).(\forall (v: T).(\forall (u1: T).(\forall 
17842 (u2: T).((subst1 i v u1 u2) \to (\forall (c1: C).(\forall (c2: C).((csubst1 i 
17843 v c1 c2) \to (csubst1 (S i) v (CHead c1 (Bind b) u1) (CHead c2 (Bind b) 
17844 u2))))))))))
17845 \def
17846  \lambda (b: B).(\lambda (i: nat).(\lambda (v: T).(\lambda (u1: T).(\lambda 
17847 (u2: T).(\lambda (H: (subst1 i v u1 u2)).(\lambda (c1: C).(\lambda (c2: 
17848 C).(\lambda (H0: (csubst1 i v c1 c2)).(eq_ind nat (s (Bind b) i) (\lambda (n: 
17849 nat).(csubst1 n v (CHead c1 (Bind b) u1) (CHead c2 (Bind b) u2))) 
17850 (csubst1_head (Bind b) i v u1 u2 H c1 c2 H0) (S i) (refl_equal nat (S 
17851 i))))))))))).
17852
17853 theorem csubst1_flat:
17854  \forall (f: F).(\forall (i: nat).(\forall (v: T).(\forall (u1: T).(\forall 
17855 (u2: T).((subst1 i v u1 u2) \to (\forall (c1: C).(\forall (c2: C).((csubst1 i 
17856 v c1 c2) \to (csubst1 i v (CHead c1 (Flat f) u1) (CHead c2 (Flat f) 
17857 u2))))))))))
17858 \def
17859  \lambda (f: F).(\lambda (i: nat).(\lambda (v: T).(\lambda (u1: T).(\lambda 
17860 (u2: T).(\lambda (H: (subst1 i v u1 u2)).(\lambda (c1: C).(\lambda (c2: 
17861 C).(\lambda (H0: (csubst1 i v c1 c2)).(eq_ind nat (s (Flat f) i) (\lambda (n: 
17862 nat).(csubst1 n v (CHead c1 (Flat f) u1) (CHead c2 (Flat f) u2))) 
17863 (csubst1_head (Flat f) i v u1 u2 H c1 c2 H0) i (refl_equal nat i)))))))))).
17864
17865 theorem csubst1_gen_head:
17866  \forall (k: K).(\forall (c1: C).(\forall (x: C).(\forall (u1: T).(\forall 
17867 (v: T).(\forall (i: nat).((csubst1 (s k i) v (CHead c1 k u1) x) \to (ex3_2 T 
17868 C (\lambda (u2: T).(\lambda (c2: C).(eq C x (CHead c2 k u2)))) (\lambda (u2: 
17869 T).(\lambda (_: C).(subst1 i v u1 u2))) (\lambda (_: T).(\lambda (c2: 
17870 C).(csubst1 i v c1 c2))))))))))
17871 \def
17872  \lambda (k: K).(\lambda (c1: C).(\lambda (x: C).(\lambda (u1: T).(\lambda 
17873 (v: T).(\lambda (i: nat).(\lambda (H: (csubst1 (s k i) v (CHead c1 k u1) 
17874 x)).(let H0 \def (match H return (\lambda (c: C).(\lambda (_: (csubst1 ? ? ? 
17875 c)).((eq C c x) \to (ex3_2 T C (\lambda (u2: T).(\lambda (c2: C).(eq C x 
17876 (CHead c2 k u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) 
17877 (\lambda (_: T).(\lambda (c2: C).(csubst1 i v c1 c2))))))) with [csubst1_refl 
17878 \Rightarrow (\lambda (H0: (eq C (CHead c1 k u1) x)).(eq_ind C (CHead c1 k u1) 
17879 (\lambda (c: C).(ex3_2 T C (\lambda (u2: T).(\lambda (c2: C).(eq C c (CHead 
17880 c2 k u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) (\lambda 
17881 (_: T).(\lambda (c2: C).(csubst1 i v c1 c2))))) (ex3_2_intro T C (\lambda 
17882 (u2: T).(\lambda (c2: C).(eq C (CHead c1 k u1) (CHead c2 k u2)))) (\lambda 
17883 (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) (\lambda (_: T).(\lambda (c2: 
17884 C).(csubst1 i v c1 c2))) u1 c1 (refl_equal C (CHead c1 k u1)) (subst1_refl i 
17885 v u1) (csubst1_refl i v c1)) x H0)) | (csubst1_sing c2 H0) \Rightarrow 
17886 (\lambda (H1: (eq C c2 x)).(eq_ind C x (\lambda (c: C).((csubst0 (s k i) v 
17887 (CHead c1 k u1) c) \to (ex3_2 T C (\lambda (u2: T).(\lambda (c3: C).(eq C x 
17888 (CHead c3 k u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) 
17889 (\lambda (_: T).(\lambda (c3: C).(csubst1 i v c1 c3)))))) (\lambda (H2: 
17890 (csubst0 (s k i) v (CHead c1 k u1) x)).(or3_ind (ex3_2 T nat (\lambda (_: 
17891 T).(\lambda (j: nat).(eq nat (s k i) (s k j)))) (\lambda (u2: T).(\lambda (_: 
17892 nat).(eq C x (CHead c1 k u2)))) (\lambda (u2: T).(\lambda (j: nat).(subst0 j 
17893 v u1 u2)))) (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq nat (s k i) (s 
17894 k j)))) (\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 k u1)))) 
17895 (\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 c3)))) (ex4_3 T C nat 
17896 (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k i) (s k j))))) 
17897 (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 k 
17898 u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
17899 u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 
17900 c3))))) (ex3_2 T C (\lambda (u2: T).(\lambda (c3: C).(eq C x (CHead c3 k 
17901 u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) (\lambda (_: 
17902 T).(\lambda (c3: C).(csubst1 i v c1 c3)))) (\lambda (H3: (ex3_2 T nat 
17903 (\lambda (_: T).(\lambda (j: nat).(eq nat (s k i) (s k j)))) (\lambda (u2: 
17904 T).(\lambda (_: nat).(eq C x (CHead c1 k u2)))) (\lambda (u2: T).(\lambda (j: 
17905 nat).(subst0 j v u1 u2))))).(ex3_2_ind T nat (\lambda (_: T).(\lambda (j: 
17906 nat).(eq nat (s k i) (s k j)))) (\lambda (u2: T).(\lambda (_: nat).(eq C x 
17907 (CHead c1 k u2)))) (\lambda (u2: T).(\lambda (j: nat).(subst0 j v u1 u2))) 
17908 (ex3_2 T C (\lambda (u2: T).(\lambda (c3: C).(eq C x (CHead c3 k u2)))) 
17909 (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) (\lambda (_: 
17910 T).(\lambda (c3: C).(csubst1 i v c1 c3)))) (\lambda (x0: T).(\lambda (x1: 
17911 nat).(\lambda (H: (eq nat (s k i) (s k x1))).(\lambda (H4: (eq C x (CHead c1 
17912 k x0))).(\lambda (H5: (subst0 x1 v u1 x0)).(eq_ind_r C (CHead c1 k x0) 
17913 (\lambda (c: C).(ex3_2 T C (\lambda (u2: T).(\lambda (c3: C).(eq C c (CHead 
17914 c3 k u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) (\lambda 
17915 (_: T).(\lambda (c3: C).(csubst1 i v c1 c3))))) (let H6 \def (eq_ind_r nat x1 
17916 (\lambda (n: nat).(subst0 n v u1 x0)) H5 i (s_inj k i x1 H)) in (ex3_2_intro 
17917 T C (\lambda (u2: T).(\lambda (c3: C).(eq C (CHead c1 k x0) (CHead c3 k 
17918 u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) (\lambda (_: 
17919 T).(\lambda (c3: C).(csubst1 i v c1 c3))) x0 c1 (refl_equal C (CHead c1 k 
17920 x0)) (subst1_single i v u1 x0 H6) (csubst1_refl i v c1))) x H4)))))) H3)) 
17921 (\lambda (H3: (ex3_2 C nat (\lambda (_: C).(\lambda (j: nat).(eq nat (s k i) 
17922 (s k j)))) (\lambda (c2: C).(\lambda (_: nat).(eq C x (CHead c2 k u1)))) 
17923 (\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 c2))))).(ex3_2_ind C nat 
17924 (\lambda (_: C).(\lambda (j: nat).(eq nat (s k i) (s k j)))) (\lambda (c3: 
17925 C).(\lambda (_: nat).(eq C x (CHead c3 k u1)))) (\lambda (c3: C).(\lambda (j: 
17926 nat).(csubst0 j v c1 c3))) (ex3_2 T C (\lambda (u2: T).(\lambda (c3: C).(eq C 
17927 x (CHead c3 k u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) 
17928 (\lambda (_: T).(\lambda (c3: C).(csubst1 i v c1 c3)))) (\lambda (x0: 
17929 C).(\lambda (x1: nat).(\lambda (H: (eq nat (s k i) (s k x1))).(\lambda (H4: 
17930 (eq C x (CHead x0 k u1))).(\lambda (H5: (csubst0 x1 v c1 x0)).(eq_ind_r C 
17931 (CHead x0 k u1) (\lambda (c: C).(ex3_2 T C (\lambda (u2: T).(\lambda (c3: 
17932 C).(eq C c (CHead c3 k u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 
17933 u2))) (\lambda (_: T).(\lambda (c3: C).(csubst1 i v c1 c3))))) (let H6 \def 
17934 (eq_ind_r nat x1 (\lambda (n: nat).(csubst0 n v c1 x0)) H5 i (s_inj k i x1 
17935 H)) in (ex3_2_intro T C (\lambda (u2: T).(\lambda (c3: C).(eq C (CHead x0 k 
17936 u1) (CHead c3 k u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) 
17937 (\lambda (_: T).(\lambda (c3: C).(csubst1 i v c1 c3))) u1 x0 (refl_equal C 
17938 (CHead x0 k u1)) (subst1_refl i v u1) (csubst1_sing i v c1 x0 H6))) x 
17939 H4)))))) H3)) (\lambda (H3: (ex4_3 T C nat (\lambda (_: T).(\lambda (_: 
17940 C).(\lambda (j: nat).(eq nat (s k i) (s k j))))) (\lambda (u2: T).(\lambda 
17941 (c2: C).(\lambda (_: nat).(eq C x (CHead c2 k u2))))) (\lambda (u2: 
17942 T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 u2)))) (\lambda (_: 
17943 T).(\lambda (c2: C).(\lambda (j: nat).(csubst0 j v c1 c2)))))).(ex4_3_ind T C 
17944 nat (\lambda (_: T).(\lambda (_: C).(\lambda (j: nat).(eq nat (s k i) (s k 
17945 j))))) (\lambda (u2: T).(\lambda (c3: C).(\lambda (_: nat).(eq C x (CHead c3 
17946 k u2))))) (\lambda (u2: T).(\lambda (_: C).(\lambda (j: nat).(subst0 j v u1 
17947 u2)))) (\lambda (_: T).(\lambda (c3: C).(\lambda (j: nat).(csubst0 j v c1 
17948 c3)))) (ex3_2 T C (\lambda (u2: T).(\lambda (c3: C).(eq C x (CHead c3 k 
17949 u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) (\lambda (_: 
17950 T).(\lambda (c3: C).(csubst1 i v c1 c3)))) (\lambda (x0: T).(\lambda (x1: 
17951 C).(\lambda (x2: nat).(\lambda (H: (eq nat (s k i) (s k x2))).(\lambda (H4: 
17952 (eq C x (CHead x1 k x0))).(\lambda (H5: (subst0 x2 v u1 x0)).(\lambda (H6: 
17953 (csubst0 x2 v c1 x1)).(eq_ind_r C (CHead x1 k x0) (\lambda (c: C).(ex3_2 T C 
17954 (\lambda (u2: T).(\lambda (c3: C).(eq C c (CHead c3 k u2)))) (\lambda (u2: 
17955 T).(\lambda (_: C).(subst1 i v u1 u2))) (\lambda (_: T).(\lambda (c3: 
17956 C).(csubst1 i v c1 c3))))) (let H7 \def (eq_ind_r nat x2 (\lambda (n: 
17957 nat).(csubst0 n v c1 x1)) H6 i (s_inj k i x2 H)) in (let H8 \def (eq_ind_r 
17958 nat x2 (\lambda (n: nat).(subst0 n v u1 x0)) H5 i (s_inj k i x2 H)) in 
17959 (ex3_2_intro T C (\lambda (u2: T).(\lambda (c3: C).(eq C (CHead x1 k x0) 
17960 (CHead c3 k u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 i v u1 u2))) 
17961 (\lambda (_: T).(\lambda (c3: C).(csubst1 i v c1 c3))) x0 x1 (refl_equal C 
17962 (CHead x1 k x0)) (subst1_single i v u1 x0 H8) (csubst1_sing i v c1 x1 H7)))) 
17963 x H4)))))))) H3)) (csubst0_gen_head k c1 x u1 v (s k i) H2))) c2 (sym_eq C c2 
17964 x H1) H0))]) in (H0 (refl_equal C x))))))))).
17965
17966 theorem csubst1_getl_ge:
17967  \forall (i: nat).(\forall (n: nat).((le i n) \to (\forall (c1: C).(\forall 
17968 (c2: C).(\forall (v: T).((csubst1 i v c1 c2) \to (\forall (e: C).((getl n c1 
17969 e) \to (getl n c2 e)))))))))
17970 \def
17971  \lambda (i: nat).(\lambda (n: nat).(\lambda (H: (le i n)).(\lambda (c1: 
17972 C).(\lambda (c2: C).(\lambda (v: T).(\lambda (H0: (csubst1 i v c1 
17973 c2)).(csubst1_ind i v c1 (\lambda (c: C).(\forall (e: C).((getl n c1 e) \to 
17974 (getl n c e)))) (\lambda (e: C).(\lambda (H1: (getl n c1 e)).H1)) (\lambda 
17975 (c3: C).(\lambda (H1: (csubst0 i v c1 c3)).(\lambda (e: C).(\lambda (H2: 
17976 (getl n c1 e)).(csubst0_getl_ge i n H c1 c3 v H1 e H2))))) c2 H0))))))).
17977
17978 theorem csubst1_getl_lt:
17979  \forall (i: nat).(\forall (n: nat).((lt n i) \to (\forall (c1: C).(\forall 
17980 (c2: C).(\forall (v: T).((csubst1 i v c1 c2) \to (\forall (e1: C).((getl n c1 
17981 e1) \to (ex2 C (\lambda (e2: C).(csubst1 (minus i n) v e1 e2)) (\lambda (e2: 
17982 C).(getl n c2 e2)))))))))))
17983 \def
17984  \lambda (i: nat).(\lambda (n: nat).(\lambda (H: (lt n i)).(\lambda (c1: 
17985 C).(\lambda (c2: C).(\lambda (v: T).(\lambda (H0: (csubst1 i v c1 
17986 c2)).(csubst1_ind i v c1 (\lambda (c: C).(\forall (e1: C).((getl n c1 e1) \to 
17987 (ex2 C (\lambda (e2: C).(csubst1 (minus i n) v e1 e2)) (\lambda (e2: C).(getl 
17988 n c e2)))))) (\lambda (e1: C).(\lambda (H1: (getl n c1 e1)).(eq_ind_r nat (S 
17989 (minus i (S n))) (\lambda (n0: nat).(ex2 C (\lambda (e2: C).(csubst1 n0 v e1 
17990 e2)) (\lambda (e2: C).(getl n c1 e2)))) (ex_intro2 C (\lambda (e2: 
17991 C).(csubst1 (S (minus i (S n))) v e1 e2)) (\lambda (e2: C).(getl n c1 e2)) e1 
17992 (csubst1_refl (S (minus i (S n))) v e1) H1) (minus i n) (minus_x_Sy i n H)))) 
17993 (\lambda (c3: C).(\lambda (H1: (csubst0 i v c1 c3)).(\lambda (e1: C).(\lambda 
17994 (H2: (getl n c1 e1)).(eq_ind_r nat (S (minus i (S n))) (\lambda (n0: 
17995 nat).(ex2 C (\lambda (e2: C).(csubst1 n0 v e1 e2)) (\lambda (e2: C).(getl n 
17996 c3 e2)))) (let H3 \def (csubst0_getl_lt i n H c1 c3 v H1 e1 H2) in (or4_ind 
17997 (getl n c3 e1) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: 
17998 T).(\lambda (_: T).(eq C e1 (CHead e0 (Bind b) u)))))) (\lambda (b: 
17999 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e0 
18000 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
18001 T).(subst0 (minus i (S n)) v u w)))))) (ex3_4 B C C T (\lambda (b: 
18002 B).(\lambda (e2: C).(\lambda (_: C).(\lambda (u: T).(eq C e1 (CHead e2 (Bind 
18003 b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e3: C).(\lambda (u: 
18004 T).(getl n c3 (CHead e3 (Bind b) u)))))) (\lambda (_: B).(\lambda (e2: 
18005 C).(\lambda (e3: C).(\lambda (_: T).(csubst0 (minus i (S n)) v e2 e3)))))) 
18006 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e2: C).(\lambda (_: C).(\lambda 
18007 (u: T).(\lambda (_: T).(eq C e1 (CHead e2 (Bind b) u))))))) (\lambda (b: 
18008 B).(\lambda (_: C).(\lambda (e3: C).(\lambda (_: T).(\lambda (w: T).(getl n 
18009 c3 (CHead e3 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
18010 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) 
18011 (\lambda (_: B).(\lambda (e2: C).(\lambda (e3: C).(\lambda (_: T).(\lambda 
18012 (_: T).(csubst0 (minus i (S n)) v e2 e3))))))) (ex2 C (\lambda (e2: 
18013 C).(csubst1 (S (minus i (S n))) v e1 e2)) (\lambda (e2: C).(getl n c3 e2))) 
18014 (\lambda (H4: (getl n c3 e1)).(ex_intro2 C (\lambda (e2: C).(csubst1 (S 
18015 (minus i (S n))) v e1 e2)) (\lambda (e2: C).(getl n c3 e2)) e1 (csubst1_refl 
18016 (S (minus i (S n))) v e1) H4)) (\lambda (H4: (ex3_4 B C T T (\lambda (b: 
18017 B).(\lambda (e0: C).(\lambda (u: T).(\lambda (_: T).(eq C e1 (CHead e0 (Bind 
18018 b) u)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
18019 T).(getl n c3 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
18020 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u 
18021 w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u: 
18022 T).(\lambda (_: T).(eq C e1 (CHead e0 (Bind b) u)))))) (\lambda (b: 
18023 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e0 
18024 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
18025 T).(subst0 (minus i (S n)) v u w))))) (ex2 C (\lambda (e2: C).(csubst1 (S 
18026 (minus i (S n))) v e1 e2)) (\lambda (e2: C).(getl n c3 e2))) (\lambda (x0: 
18027 B).(\lambda (x1: C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H5: (eq C e1 
18028 (CHead x1 (Bind x0) x2))).(\lambda (H6: (getl n c3 (CHead x1 (Bind x0) 
18029 x3))).(\lambda (H7: (subst0 (minus i (S n)) v x2 x3)).(eq_ind_r C (CHead x1 
18030 (Bind x0) x2) (\lambda (c: C).(ex2 C (\lambda (e2: C).(csubst1 (S (minus i (S 
18031 n))) v c e2)) (\lambda (e2: C).(getl n c3 e2)))) (ex_intro2 C (\lambda (e2: 
18032 C).(csubst1 (S (minus i (S n))) v (CHead x1 (Bind x0) x2) e2)) (\lambda (e2: 
18033 C).(getl n c3 e2)) (CHead x1 (Bind x0) x3) (csubst1_sing (S (minus i (S n))) 
18034 v (CHead x1 (Bind x0) x2) (CHead x1 (Bind x0) x3) (csubst0_snd_bind x0 (minus 
18035 i (S n)) v x2 x3 H7 x1)) H6) e1 H5)))))))) H4)) (\lambda (H4: (ex3_4 B C C T 
18036 (\lambda (b: B).(\lambda (e2: C).(\lambda (_: C).(\lambda (u: T).(eq C e1 
18037 (CHead e2 (Bind b) u)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
18038 C).(\lambda (u: T).(getl n c3 (CHead e2 (Bind b) u)))))) (\lambda (_: 
18039 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
18040 v e1 e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda (e2: C).(\lambda 
18041 (_: C).(\lambda (u: T).(eq C e1 (CHead e2 (Bind b) u)))))) (\lambda (b: 
18042 B).(\lambda (_: C).(\lambda (e3: C).(\lambda (u: T).(getl n c3 (CHead e3 
18043 (Bind b) u)))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (e3: C).(\lambda 
18044 (_: T).(csubst0 (minus i (S n)) v e2 e3))))) (ex2 C (\lambda (e2: C).(csubst1 
18045 (S (minus i (S n))) v e1 e2)) (\lambda (e2: C).(getl n c3 e2))) (\lambda (x0: 
18046 B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H5: (eq C e1 
18047 (CHead x1 (Bind x0) x3))).(\lambda (H6: (getl n c3 (CHead x2 (Bind x0) 
18048 x3))).(\lambda (H7: (csubst0 (minus i (S n)) v x1 x2)).(eq_ind_r C (CHead x1 
18049 (Bind x0) x3) (\lambda (c: C).(ex2 C (\lambda (e2: C).(csubst1 (S (minus i (S 
18050 n))) v c e2)) (\lambda (e2: C).(getl n c3 e2)))) (ex_intro2 C (\lambda (e2: 
18051 C).(csubst1 (S (minus i (S n))) v (CHead x1 (Bind x0) x3) e2)) (\lambda (e2: 
18052 C).(getl n c3 e2)) (CHead x2 (Bind x0) x3) (csubst1_sing (S (minus i (S n))) 
18053 v (CHead x1 (Bind x0) x3) (CHead x2 (Bind x0) x3) (csubst0_fst_bind x0 (minus 
18054 i (S n)) x1 x2 v H7 x3)) H6) e1 H5)))))))) H4)) (\lambda (H4: (ex4_5 B C C T 
18055 T (\lambda (b: B).(\lambda (e2: C).(\lambda (_: C).(\lambda (u: T).(\lambda 
18056 (_: T).(eq C e1 (CHead e2 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: 
18057 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e2 
18058 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
18059 (u: T).(\lambda (w: T).(subst0 (minus i (S n)) v u w)))))) (\lambda (_: 
18060 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
18061 (minus i (S n)) v e1 e2)))))))).(ex4_5_ind B C C T T (\lambda (b: B).(\lambda 
18062 (e2: C).(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(eq C e1 (CHead e2 
18063 (Bind b) u))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e3: C).(\lambda 
18064 (_: T).(\lambda (w: T).(getl n c3 (CHead e3 (Bind b) w))))))) (\lambda (_: 
18065 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
18066 (minus i (S n)) v u w)))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (e3: 
18067 C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) v e2 e3)))))) 
18068 (ex2 C (\lambda (e2: C).(csubst1 (S (minus i (S n))) v e1 e2)) (\lambda (e2: 
18069 C).(getl n c3 e2))) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: 
18070 C).(\lambda (x3: T).(\lambda (x4: T).(\lambda (H5: (eq C e1 (CHead x1 (Bind 
18071 x0) x3))).(\lambda (H6: (getl n c3 (CHead x2 (Bind x0) x4))).(\lambda (H7: 
18072 (subst0 (minus i (S n)) v x3 x4)).(\lambda (H8: (csubst0 (minus i (S n)) v x1 
18073 x2)).(eq_ind_r C (CHead x1 (Bind x0) x3) (\lambda (c: C).(ex2 C (\lambda (e2: 
18074 C).(csubst1 (S (minus i (S n))) v c e2)) (\lambda (e2: C).(getl n c3 e2)))) 
18075 (ex_intro2 C (\lambda (e2: C).(csubst1 (S (minus i (S n))) v (CHead x1 (Bind 
18076 x0) x3) e2)) (\lambda (e2: C).(getl n c3 e2)) (CHead x2 (Bind x0) x4) 
18077 (csubst1_sing (S (minus i (S n))) v (CHead x1 (Bind x0) x3) (CHead x2 (Bind 
18078 x0) x4) (csubst0_both_bind x0 (minus i (S n)) v x3 x4 H7 x1 x2 H8)) H6) e1 
18079 H5)))))))))) H4)) H3)) (minus i n) (minus_x_Sy i n H)))))) c2 H0))))))).
18080
18081 theorem csubst1_getl_ge_back:
18082  \forall (i: nat).(\forall (n: nat).((le i n) \to (\forall (c1: C).(\forall 
18083 (c2: C).(\forall (v: T).((csubst1 i v c1 c2) \to (\forall (e: C).((getl n c2 
18084 e) \to (getl n c1 e)))))))))
18085 \def
18086  \lambda (i: nat).(\lambda (n: nat).(\lambda (H: (le i n)).(\lambda (c1: 
18087 C).(\lambda (c2: C).(\lambda (v: T).(\lambda (H0: (csubst1 i v c1 
18088 c2)).(csubst1_ind i v c1 (\lambda (c: C).(\forall (e: C).((getl n c e) \to 
18089 (getl n c1 e)))) (\lambda (e: C).(\lambda (H1: (getl n c1 e)).H1)) (\lambda 
18090 (c3: C).(\lambda (H1: (csubst0 i v c1 c3)).(\lambda (e: C).(\lambda (H2: 
18091 (getl n c3 e)).(csubst0_getl_ge_back i n H c1 c3 v H1 e H2))))) c2 H0))))))).
18092
18093 theorem getl_csubst1:
18094  \forall (d: nat).(\forall (c: C).(\forall (e: C).(\forall (u: T).((getl d c 
18095 (CHead e (Bind Abbr) u)) \to (ex2_2 C C (\lambda (a0: C).(\lambda (_: 
18096 C).(csubst1 d u c a0))) (\lambda (a0: C).(\lambda (a: C).(drop (S O) d a0 
18097 a))))))))
18098 \def
18099  \lambda (d: nat).(nat_ind (\lambda (n: nat).(\forall (c: C).(\forall (e: 
18100 C).(\forall (u: T).((getl n c (CHead e (Bind Abbr) u)) \to (ex2_2 C C 
18101 (\lambda (a0: C).(\lambda (_: C).(csubst1 n u c a0))) (\lambda (a0: 
18102 C).(\lambda (a: C).(drop (S O) n a0 a))))))))) (\lambda (c: C).(C_ind 
18103 (\lambda (c0: C).(\forall (e: C).(\forall (u: T).((getl O c0 (CHead e (Bind 
18104 Abbr) u)) \to (ex2_2 C C (\lambda (a0: C).(\lambda (_: C).(csubst1 O u c0 
18105 a0))) (\lambda (a0: C).(\lambda (a: C).(drop (S O) O a0 a)))))))) (\lambda 
18106 (n: nat).(\lambda (e: C).(\lambda (u: T).(\lambda (H: (getl O (CSort n) 
18107 (CHead e (Bind Abbr) u))).(getl_gen_sort n O (CHead e (Bind Abbr) u) H (ex2_2 
18108 C C (\lambda (a0: C).(\lambda (_: C).(csubst1 O u (CSort n) a0))) (\lambda 
18109 (a0: C).(\lambda (a: C).(drop (S O) O a0 a))))))))) (\lambda (c0: C).(\lambda 
18110 (H: ((\forall (e: C).(\forall (u: T).((getl O c0 (CHead e (Bind Abbr) u)) \to 
18111 (ex2_2 C C (\lambda (a0: C).(\lambda (_: C).(csubst1 O u c0 a0))) (\lambda 
18112 (a0: C).(\lambda (a: C).(drop (S O) O a0 a))))))))).(\lambda (k: K).(match k 
18113 return (\lambda (k0: K).(\forall (t: T).(\forall (e: C).(\forall (u: 
18114 T).((getl O (CHead c0 k0 t) (CHead e (Bind Abbr) u)) \to (ex2_2 C C (\lambda 
18115 (a0: C).(\lambda (_: C).(csubst1 O u (CHead c0 k0 t) a0))) (\lambda (a0: 
18116 C).(\lambda (a: C).(drop (S O) O a0 a))))))))) with [(Bind b) \Rightarrow 
18117 (\lambda (t: T).(\lambda (e: C).(\lambda (u: T).(\lambda (H0: (getl O (CHead 
18118 c0 (Bind b) t) (CHead e (Bind Abbr) u))).(let H1 \def (f_equal C C (\lambda 
18119 (e0: C).(match e0 return (\lambda (_: C).C) with [(CSort _) \Rightarrow e | 
18120 (CHead c _ _) \Rightarrow c])) (CHead e (Bind Abbr) u) (CHead c0 (Bind b) t) 
18121 (clear_gen_bind b c0 (CHead e (Bind Abbr) u) t (getl_gen_O (CHead c0 (Bind b) 
18122 t) (CHead e (Bind Abbr) u) H0))) in ((let H2 \def (f_equal C B (\lambda (e0: 
18123 C).(match e0 return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | 
18124 (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
18125 \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead e (Bind Abbr) u) (CHead 
18126 c0 (Bind b) t) (clear_gen_bind b c0 (CHead e (Bind Abbr) u) t (getl_gen_O 
18127 (CHead c0 (Bind b) t) (CHead e (Bind Abbr) u) H0))) in ((let H3 \def (f_equal 
18128 C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with [(CSort _) 
18129 \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead e (Bind Abbr) u) (CHead 
18130 c0 (Bind b) t) (clear_gen_bind b c0 (CHead e (Bind Abbr) u) t (getl_gen_O 
18131 (CHead c0 (Bind b) t) (CHead e (Bind Abbr) u) H0))) in (\lambda (H4: (eq B 
18132 Abbr b)).(\lambda (_: (eq C e c0)).(eq_ind_r T t (\lambda (t0: T).(ex2_2 C C 
18133 (\lambda (a0: C).(\lambda (_: C).(csubst1 O t0 (CHead c0 (Bind b) t) a0))) 
18134 (\lambda (a0: C).(\lambda (a: C).(drop (S O) O a0 a))))) (eq_ind B Abbr 
18135 (\lambda (b0: B).(ex2_2 C C (\lambda (a0: C).(\lambda (_: C).(csubst1 O t 
18136 (CHead c0 (Bind b0) t) a0))) (\lambda (a0: C).(\lambda (a: C).(drop (S O) O 
18137 a0 a))))) (ex2_2_intro C C (\lambda (a0: C).(\lambda (_: C).(csubst1 O t 
18138 (CHead c0 (Bind Abbr) t) a0))) (\lambda (a0: C).(\lambda (a: C).(drop (S O) O 
18139 a0 a))) (CHead c0 (Bind Abbr) t) c0 (csubst1_refl O t (CHead c0 (Bind Abbr) 
18140 t)) (drop_drop (Bind Abbr) O c0 c0 (drop_refl c0) t)) b H4) u H3)))) H2)) 
18141 H1)))))) | (Flat f) \Rightarrow (\lambda (t: T).(\lambda (e: C).(\lambda (u: 
18142 T).(\lambda (H0: (getl O (CHead c0 (Flat f) t) (CHead e (Bind Abbr) u))).(let 
18143 H_x \def (subst1_ex u t O) in (let H1 \def H_x in (ex_ind T (\lambda (t2: 
18144 T).(subst1 O u t (lift (S O) O t2))) (ex2_2 C C (\lambda (a0: C).(\lambda (_: 
18145 C).(csubst1 O u (CHead c0 (Flat f) t) a0))) (\lambda (a0: C).(\lambda (a: 
18146 C).(drop (S O) O a0 a)))) (\lambda (x: T).(\lambda (H2: (subst1 O u t (lift 
18147 (S O) O x))).(let H3 \def (H e u (getl_intro O c0 (CHead e (Bind Abbr) u) c0 
18148 (drop_refl c0) (clear_gen_flat f c0 (CHead e (Bind Abbr) u) t (getl_gen_O 
18149 (CHead c0 (Flat f) t) (CHead e (Bind Abbr) u) H0)))) in (ex2_2_ind C C 
18150 (\lambda (a0: C).(\lambda (_: C).(csubst1 O u c0 a0))) (\lambda (a0: 
18151 C).(\lambda (a: C).(drop (S O) O a0 a))) (ex2_2 C C (\lambda (a0: C).(\lambda 
18152 (_: C).(csubst1 O u (CHead c0 (Flat f) t) a0))) (\lambda (a0: C).(\lambda (a: 
18153 C).(drop (S O) O a0 a)))) (\lambda (x0: C).(\lambda (x1: C).(\lambda (H4: 
18154 (csubst1 O u c0 x0)).(\lambda (H5: (drop (S O) O x0 x1)).(ex2_2_intro C C 
18155 (\lambda (a0: C).(\lambda (_: C).(csubst1 O u (CHead c0 (Flat f) t) a0))) 
18156 (\lambda (a0: C).(\lambda (a: C).(drop (S O) O a0 a))) (CHead x0 (Flat f) 
18157 (lift (S O) O x)) x1 (csubst1_flat f O u t (lift (S O) O x) H2 c0 x0 H4) 
18158 (drop_drop (Flat f) O x0 x1 H5 (lift (S O) O x))))))) H3)))) H1)))))))])))) 
18159 c)) (\lambda (n: nat).(\lambda (H: ((\forall (c: C).(\forall (e: C).(\forall 
18160 (u: T).((getl n c (CHead e (Bind Abbr) u)) \to (ex2_2 C C (\lambda (a0: 
18161 C).(\lambda (_: C).(csubst1 n u c a0))) (\lambda (a0: C).(\lambda (a: 
18162 C).(drop (S O) n a0 a)))))))))).(\lambda (c: C).(C_ind (\lambda (c0: 
18163 C).(\forall (e: C).(\forall (u: T).((getl (S n) c0 (CHead e (Bind Abbr) u)) 
18164 \to (ex2_2 C C (\lambda (a0: C).(\lambda (_: C).(csubst1 (S n) u c0 a0))) 
18165 (\lambda (a0: C).(\lambda (a: C).(drop (S O) (S n) a0 a)))))))) (\lambda (n0: 
18166 nat).(\lambda (e: C).(\lambda (u: T).(\lambda (H0: (getl (S n) (CSort n0) 
18167 (CHead e (Bind Abbr) u))).(getl_gen_sort n0 (S n) (CHead e (Bind Abbr) u) H0 
18168 (ex2_2 C C (\lambda (a0: C).(\lambda (_: C).(csubst1 (S n) u (CSort n0) a0))) 
18169 (\lambda (a0: C).(\lambda (a: C).(drop (S O) (S n) a0 a))))))))) (\lambda 
18170 (c0: C).(\lambda (H0: ((\forall (e: C).(\forall (u: T).((getl (S n) c0 (CHead 
18171 e (Bind Abbr) u)) \to (ex2_2 C C (\lambda (a0: C).(\lambda (_: C).(csubst1 (S 
18172 n) u c0 a0))) (\lambda (a0: C).(\lambda (a: C).(drop (S O) (S n) a0 
18173 a))))))))).(\lambda (k: K).(match k return (\lambda (k0: K).(\forall (t: 
18174 T).(\forall (e: C).(\forall (u: T).((getl (S n) (CHead c0 k0 t) (CHead e 
18175 (Bind Abbr) u)) \to (ex2_2 C C (\lambda (a0: C).(\lambda (_: C).(csubst1 (S 
18176 n) u (CHead c0 k0 t) a0))) (\lambda (a0: C).(\lambda (a: C).(drop (S O) (S n) 
18177 a0 a))))))))) with [(Bind b) \Rightarrow (\lambda (t: T).(\lambda (e: 
18178 C).(\lambda (u: T).(\lambda (H1: (getl (S n) (CHead c0 (Bind b) t) (CHead e 
18179 (Bind Abbr) u))).(let H_x \def (subst1_ex u t n) in (let H2 \def H_x in 
18180 (ex_ind T (\lambda (t2: T).(subst1 n u t (lift (S O) n t2))) (ex2_2 C C 
18181 (\lambda (a0: C).(\lambda (_: C).(csubst1 (S n) u (CHead c0 (Bind b) t) a0))) 
18182 (\lambda (a0: C).(\lambda (a: C).(drop (S O) (S n) a0 a)))) (\lambda (x: 
18183 T).(\lambda (H3: (subst1 n u t (lift (S O) n x))).(let H4 \def (H c0 e u 
18184 (getl_gen_S (Bind b) c0 (CHead e (Bind Abbr) u) t n H1)) in (ex2_2_ind C C 
18185 (\lambda (a0: C).(\lambda (_: C).(csubst1 n u c0 a0))) (\lambda (a0: 
18186 C).(\lambda (a: C).(drop (S O) n a0 a))) (ex2_2 C C (\lambda (a0: C).(\lambda 
18187 (_: C).(csubst1 (S n) u (CHead c0 (Bind b) t) a0))) (\lambda (a0: C).(\lambda 
18188 (a: C).(drop (S O) (S n) a0 a)))) (\lambda (x0: C).(\lambda (x1: C).(\lambda 
18189 (H5: (csubst1 n u c0 x0)).(\lambda (H6: (drop (S O) n x0 x1)).(ex2_2_intro C 
18190 C (\lambda (a0: C).(\lambda (_: C).(csubst1 (S n) u (CHead c0 (Bind b) t) 
18191 a0))) (\lambda (a0: C).(\lambda (a: C).(drop (S O) (S n) a0 a))) (CHead x0 
18192 (Bind b) (lift (S O) n x)) (CHead x1 (Bind b) x) (csubst1_bind b n u t (lift 
18193 (S O) n x) H3 c0 x0 H5) (drop_skip_bind (S O) n x0 x1 H6 b x)))))) H4)))) 
18194 H2))))))) | (Flat f) \Rightarrow (\lambda (t: T).(\lambda (e: C).(\lambda (u: 
18195 T).(\lambda (H1: (getl (S n) (CHead c0 (Flat f) t) (CHead e (Bind Abbr) 
18196 u))).(let H_x \def (subst1_ex u t (S n)) in (let H2 \def H_x in (ex_ind T 
18197 (\lambda (t2: T).(subst1 (S n) u t (lift (S O) (S n) t2))) (ex2_2 C C 
18198 (\lambda (a0: C).(\lambda (_: C).(csubst1 (S n) u (CHead c0 (Flat f) t) a0))) 
18199 (\lambda (a0: C).(\lambda (a: C).(drop (S O) (S n) a0 a)))) (\lambda (x: 
18200 T).(\lambda (H3: (subst1 (S n) u t (lift (S O) (S n) x))).(let H4 \def (H0 e 
18201 u (getl_gen_S (Flat f) c0 (CHead e (Bind Abbr) u) t n H1)) in (ex2_2_ind C C 
18202 (\lambda (a0: C).(\lambda (_: C).(csubst1 (S n) u c0 a0))) (\lambda (a0: 
18203 C).(\lambda (a: C).(drop (S O) (S n) a0 a))) (ex2_2 C C (\lambda (a0: 
18204 C).(\lambda (_: C).(csubst1 (S n) u (CHead c0 (Flat f) t) a0))) (\lambda (a0: 
18205 C).(\lambda (a: C).(drop (S O) (S n) a0 a)))) (\lambda (x0: C).(\lambda (x1: 
18206 C).(\lambda (H5: (csubst1 (S n) u c0 x0)).(\lambda (H6: (drop (S O) (S n) x0 
18207 x1)).(ex2_2_intro C C (\lambda (a0: C).(\lambda (_: C).(csubst1 (S n) u 
18208 (CHead c0 (Flat f) t) a0))) (\lambda (a0: C).(\lambda (a: C).(drop (S O) (S 
18209 n) a0 a))) (CHead x0 (Flat f) (lift (S O) (S n) x)) (CHead x1 (Flat f) x) 
18210 (csubst1_flat f (S n) u t (lift (S O) (S n) x) H3 c0 x0 H5) (drop_skip_flat 
18211 (S O) n x0 x1 H6 f x)))))) H4)))) H2)))))))])))) c)))) d).
18212
18213 inductive fsubst0 (i:nat) (v:T) (c1:C) (t1:T): C \to (T \to Prop) \def
18214 | fsubst0_snd: \forall (t2: T).((subst0 i v t1 t2) \to (fsubst0 i v c1 t1 c1 
18215 t2))
18216 | fsubst0_fst: \forall (c2: C).((csubst0 i v c1 c2) \to (fsubst0 i v c1 t1 c2 
18217 t1))
18218 | fsubst0_both: \forall (t2: T).((subst0 i v t1 t2) \to (\forall (c2: 
18219 C).((csubst0 i v c1 c2) \to (fsubst0 i v c1 t1 c2 t2)))).
18220
18221 theorem fsubst0_gen_base:
18222  \forall (c1: C).(\forall (c2: C).(\forall (t1: T).(\forall (t2: T).(\forall 
18223 (v: T).(\forall (i: nat).((fsubst0 i v c1 t1 c2 t2) \to (or3 (land (eq C c1 
18224 c2) (subst0 i v t1 t2)) (land (eq T t1 t2) (csubst0 i v c1 c2)) (land (subst0 
18225 i v t1 t2) (csubst0 i v c1 c2)))))))))
18226 \def
18227  \lambda (c1: C).(\lambda (c2: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
18228 (v: T).(\lambda (i: nat).(\lambda (H: (fsubst0 i v c1 t1 c2 t2)).(let H0 \def 
18229 (match H return (\lambda (c: C).(\lambda (t: T).(\lambda (_: (fsubst0 ? ? ? ? 
18230 c t)).((eq C c c2) \to ((eq T t t2) \to (or3 (land (eq C c1 c2) (subst0 i v 
18231 t1 t2)) (land (eq T t1 t2) (csubst0 i v c1 c2)) (land (subst0 i v t1 t2) 
18232 (csubst0 i v c1 c2)))))))) with [(fsubst0_snd t0 H0) \Rightarrow (\lambda 
18233 (H1: (eq C c1 c2)).(\lambda (H2: (eq T t0 t2)).(eq_ind C c2 (\lambda (c: 
18234 C).((eq T t0 t2) \to ((subst0 i v t1 t0) \to (or3 (land (eq C c c2) (subst0 i 
18235 v t1 t2)) (land (eq T t1 t2) (csubst0 i v c c2)) (land (subst0 i v t1 t2) 
18236 (csubst0 i v c c2)))))) (\lambda (H3: (eq T t0 t2)).(eq_ind T t2 (\lambda (t: 
18237 T).((subst0 i v t1 t) \to (or3 (land (eq C c2 c2) (subst0 i v t1 t2)) (land 
18238 (eq T t1 t2) (csubst0 i v c2 c2)) (land (subst0 i v t1 t2) (csubst0 i v c2 
18239 c2))))) (\lambda (H4: (subst0 i v t1 t2)).(or3_intro0 (land (eq C c2 c2) 
18240 (subst0 i v t1 t2)) (land (eq T t1 t2) (csubst0 i v c2 c2)) (land (subst0 i v 
18241 t1 t2) (csubst0 i v c2 c2)) (conj (eq C c2 c2) (subst0 i v t1 t2) (refl_equal 
18242 C c2) H4))) t0 (sym_eq T t0 t2 H3))) c1 (sym_eq C c1 c2 H1) H2 H0))) | 
18243 (fsubst0_fst c0 H0) \Rightarrow (\lambda (H1: (eq C c0 c2)).(\lambda (H2: (eq 
18244 T t1 t2)).(eq_ind C c2 (\lambda (c: C).((eq T t1 t2) \to ((csubst0 i v c1 c) 
18245 \to (or3 (land (eq C c1 c2) (subst0 i v t1 t2)) (land (eq T t1 t2) (csubst0 i 
18246 v c1 c2)) (land (subst0 i v t1 t2) (csubst0 i v c1 c2)))))) (\lambda (H3: (eq 
18247 T t1 t2)).(eq_ind T t2 (\lambda (t: T).((csubst0 i v c1 c2) \to (or3 (land 
18248 (eq C c1 c2) (subst0 i v t t2)) (land (eq T t t2) (csubst0 i v c1 c2)) (land 
18249 (subst0 i v t t2) (csubst0 i v c1 c2))))) (\lambda (H4: (csubst0 i v c1 
18250 c2)).(or3_intro1 (land (eq C c1 c2) (subst0 i v t2 t2)) (land (eq T t2 t2) 
18251 (csubst0 i v c1 c2)) (land (subst0 i v t2 t2) (csubst0 i v c1 c2)) (conj (eq 
18252 T t2 t2) (csubst0 i v c1 c2) (refl_equal T t2) H4))) t1 (sym_eq T t1 t2 H3))) 
18253 c0 (sym_eq C c0 c2 H1) H2 H0))) | (fsubst0_both t0 H0 c0 H1) \Rightarrow 
18254 (\lambda (H2: (eq C c0 c2)).(\lambda (H3: (eq T t0 t2)).(eq_ind C c2 (\lambda 
18255 (c: C).((eq T t0 t2) \to ((subst0 i v t1 t0) \to ((csubst0 i v c1 c) \to (or3 
18256 (land (eq C c1 c2) (subst0 i v t1 t2)) (land (eq T t1 t2) (csubst0 i v c1 
18257 c2)) (land (subst0 i v t1 t2) (csubst0 i v c1 c2))))))) (\lambda (H4: (eq T 
18258 t0 t2)).(eq_ind T t2 (\lambda (t: T).((subst0 i v t1 t) \to ((csubst0 i v c1 
18259 c2) \to (or3 (land (eq C c1 c2) (subst0 i v t1 t2)) (land (eq T t1 t2) 
18260 (csubst0 i v c1 c2)) (land (subst0 i v t1 t2) (csubst0 i v c1 c2)))))) 
18261 (\lambda (H5: (subst0 i v t1 t2)).(\lambda (H6: (csubst0 i v c1 
18262 c2)).(or3_intro2 (land (eq C c1 c2) (subst0 i v t1 t2)) (land (eq T t1 t2) 
18263 (csubst0 i v c1 c2)) (land (subst0 i v t1 t2) (csubst0 i v c1 c2)) (conj 
18264 (subst0 i v t1 t2) (csubst0 i v c1 c2) H5 H6)))) t0 (sym_eq T t0 t2 H4))) c0 
18265 (sym_eq C c0 c2 H2) H3 H0 H1)))]) in (H0 (refl_equal C c2) (refl_equal T 
18266 t2))))))))).
18267
18268 inductive tau0 (g:G): C \to (T \to (T \to Prop)) \def
18269 | tau0_sort: \forall (c: C).(\forall (n: nat).(tau0 g c (TSort n) (TSort 
18270 (next g n))))
18271 | tau0_abbr: \forall (c: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
18272 nat).((getl i c (CHead d (Bind Abbr) v)) \to (\forall (w: T).((tau0 g d v w) 
18273 \to (tau0 g c (TLRef i) (lift (S i) O w))))))))
18274 | tau0_abst: \forall (c: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
18275 nat).((getl i c (CHead d (Bind Abst) v)) \to (\forall (w: T).((tau0 g d v w) 
18276 \to (tau0 g c (TLRef i) (lift (S i) O v))))))))
18277 | tau0_bind: \forall (b: B).(\forall (c: C).(\forall (v: T).(\forall (t1: 
18278 T).(\forall (t2: T).((tau0 g (CHead c (Bind b) v) t1 t2) \to (tau0 g c (THead 
18279 (Bind b) v t1) (THead (Bind b) v t2)))))))
18280 | tau0_appl: \forall (c: C).(\forall (v: T).(\forall (t1: T).(\forall (t2: 
18281 T).((tau0 g c t1 t2) \to (tau0 g c (THead (Flat Appl) v t1) (THead (Flat 
18282 Appl) v t2))))))
18283 | tau0_cast: \forall (c: C).(\forall (v1: T).(\forall (v2: T).((tau0 g c v1 
18284 v2) \to (\forall (t1: T).(\forall (t2: T).((tau0 g c t1 t2) \to (tau0 g c 
18285 (THead (Flat Cast) v1 t1) (THead (Flat Cast) v2 t2)))))))).
18286
18287 theorem tau0_lift:
18288  \forall (g: G).(\forall (e: C).(\forall (t1: T).(\forall (t2: T).((tau0 g e 
18289 t1 t2) \to (\forall (c: C).(\forall (h: nat).(\forall (d: nat).((drop h d c 
18290 e) \to (tau0 g c (lift h d t1) (lift h d t2))))))))))
18291 \def
18292  \lambda (g: G).(\lambda (e: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
18293 (H: (tau0 g e t1 t2)).(tau0_ind g (\lambda (c: C).(\lambda (t: T).(\lambda 
18294 (t0: T).(\forall (c0: C).(\forall (h: nat).(\forall (d: nat).((drop h d c0 c) 
18295 \to (tau0 g c0 (lift h d t) (lift h d t0))))))))) (\lambda (c: C).(\lambda 
18296 (n: nat).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (_: 
18297 (drop h d c0 c)).(eq_ind_r T (TSort n) (\lambda (t: T).(tau0 g c0 t (lift h d 
18298 (TSort (next g n))))) (eq_ind_r T (TSort (next g n)) (\lambda (t: T).(tau0 g 
18299 c0 (TSort n) t)) (tau0_sort g c0 n) (lift h d (TSort (next g n))) (lift_sort 
18300 (next g n) h d)) (lift h d (TSort n)) (lift_sort n h d)))))))) (\lambda (c: 
18301 C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H0: (getl i c 
18302 (CHead d (Bind Abbr) v))).(\lambda (w: T).(\lambda (H1: (tau0 g d v 
18303 w)).(\lambda (H2: ((\forall (c: C).(\forall (h: nat).(\forall (d0: 
18304 nat).((drop h d0 c d) \to (tau0 g c (lift h d0 v) (lift h d0 
18305 w)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d0: nat).(\lambda (H3: 
18306 (drop h d0 c0 c)).(lt_le_e i d0 (tau0 g c0 (lift h d0 (TLRef i)) (lift h d0 
18307 (lift (S i) O w))) (\lambda (H4: (lt i d0)).(let H5 \def (drop_getl_trans_le 
18308 i d0 (le_S_n i d0 (le_S (S i) d0 H4)) c0 c h H3 (CHead d (Bind Abbr) v) H0) 
18309 in (ex3_2_ind C C (\lambda (e0: C).(\lambda (_: C).(drop i O c0 e0))) 
18310 (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d0 i) e0 e1))) (\lambda (_: 
18311 C).(\lambda (e1: C).(clear e1 (CHead d (Bind Abbr) v)))) (tau0 g c0 (lift h 
18312 d0 (TLRef i)) (lift h d0 (lift (S i) O w))) (\lambda (x0: C).(\lambda (x1: 
18313 C).(\lambda (H6: (drop i O c0 x0)).(\lambda (H7: (drop h (minus d0 i) x0 
18314 x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abbr) v))).(let H9 \def (eq_ind 
18315 nat (minus d0 i) (\lambda (n: nat).(drop h n x0 x1)) H7 (S (minus d0 (S i))) 
18316 (minus_x_Sy d0 i H4)) in (let H10 \def (drop_clear_S x1 x0 h (minus d0 (S i)) 
18317 H9 Abbr d v H8) in (ex2_ind C (\lambda (c1: C).(clear x0 (CHead c1 (Bind 
18318 Abbr) (lift h (minus d0 (S i)) v)))) (\lambda (c1: C).(drop h (minus d0 (S 
18319 i)) c1 d)) (tau0 g c0 (lift h d0 (TLRef i)) (lift h d0 (lift (S i) O w))) 
18320 (\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abbr) (lift h (minus 
18321 d0 (S i)) v)))).(\lambda (H12: (drop h (minus d0 (S i)) x d)).(eq_ind_r T 
18322 (TLRef i) (\lambda (t: T).(tau0 g c0 t (lift h d0 (lift (S i) O w)))) (eq_ind 
18323 nat (plus (S i) (minus d0 (S i))) (\lambda (n: nat).(tau0 g c0 (TLRef i) 
18324 (lift h n (lift (S i) O w)))) (eq_ind_r T (lift (S i) O (lift h (minus d0 (S 
18325 i)) w)) (\lambda (t: T).(tau0 g c0 (TLRef i) t)) (eq_ind nat d0 (\lambda (_: 
18326 nat).(tau0 g c0 (TLRef i) (lift (S i) O (lift h (minus d0 (S i)) w)))) 
18327 (tau0_abbr g c0 x (lift h (minus d0 (S i)) v) i (getl_intro i c0 (CHead x 
18328 (Bind Abbr) (lift h (minus d0 (S i)) v)) x0 H6 H11) (lift h (minus d0 (S i)) 
18329 w) (H2 x h (minus d0 (S i)) H12)) (plus (S i) (minus d0 (S i))) 
18330 (le_plus_minus (S i) d0 H4)) (lift h (plus (S i) (minus d0 (S i))) (lift (S 
18331 i) O w)) (lift_d w h (S i) (minus d0 (S i)) O (le_O_n (minus d0 (S i))))) d0 
18332 (le_plus_minus_r (S i) d0 H4)) (lift h d0 (TLRef i)) (lift_lref_lt i h d0 
18333 H4))))) H10)))))))) H5))) (\lambda (H4: (le d0 i)).(eq_ind_r T (TLRef (plus i 
18334 h)) (\lambda (t: T).(tau0 g c0 t (lift h d0 (lift (S i) O w)))) (eq_ind nat 
18335 (S i) (\lambda (_: nat).(tau0 g c0 (TLRef (plus i h)) (lift h d0 (lift (S i) 
18336 O w)))) (eq_ind_r T (lift (plus h (S i)) O w) (\lambda (t: T).(tau0 g c0 
18337 (TLRef (plus i h)) t)) (eq_ind_r nat (plus (S i) h) (\lambda (n: nat).(tau0 g 
18338 c0 (TLRef (plus i h)) (lift n O w))) (tau0_abbr g c0 d v (plus i h) 
18339 (drop_getl_trans_ge i c0 c d0 h H3 (CHead d (Bind Abbr) v) H0 H4) w H1) (plus 
18340 h (S i)) (plus_comm h (S i))) (lift h d0 (lift (S i) O w)) (lift_free w (S i) 
18341 h O d0 (le_S d0 i H4) (le_O_n d0))) (plus i (S O)) (eq_ind_r nat (plus (S O) 
18342 i) (\lambda (n: nat).(eq nat (S i) n)) (refl_equal nat (plus (S O) i)) (plus 
18343 i (S O)) (plus_comm i (S O)))) (lift h d0 (TLRef i)) (lift_lref_ge i h d0 
18344 H4)))))))))))))))) (\lambda (c: C).(\lambda (d: C).(\lambda (v: T).(\lambda 
18345 (i: nat).(\lambda (H0: (getl i c (CHead d (Bind Abst) v))).(\lambda (w: 
18346 T).(\lambda (H1: (tau0 g d v w)).(\lambda (H2: ((\forall (c: C).(\forall (h: 
18347 nat).(\forall (d0: nat).((drop h d0 c d) \to (tau0 g c (lift h d0 v) (lift h 
18348 d0 w)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d0: nat).(\lambda 
18349 (H3: (drop h d0 c0 c)).(lt_le_e i d0 (tau0 g c0 (lift h d0 (TLRef i)) (lift h 
18350 d0 (lift (S i) O v))) (\lambda (H4: (lt i d0)).(let H5 \def 
18351 (drop_getl_trans_le i d0 (le_S_n i d0 (le_S (S i) d0 H4)) c0 c h H3 (CHead d 
18352 (Bind Abst) v) H0) in (ex3_2_ind C C (\lambda (e0: C).(\lambda (_: C).(drop i 
18353 O c0 e0))) (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d0 i) e0 e1))) 
18354 (\lambda (_: C).(\lambda (e1: C).(clear e1 (CHead d (Bind Abst) v)))) (tau0 g 
18355 c0 (lift h d0 (TLRef i)) (lift h d0 (lift (S i) O v))) (\lambda (x0: 
18356 C).(\lambda (x1: C).(\lambda (H6: (drop i O c0 x0)).(\lambda (H7: (drop h 
18357 (minus d0 i) x0 x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abst) v))).(let 
18358 H9 \def (eq_ind nat (minus d0 i) (\lambda (n: nat).(drop h n x0 x1)) H7 (S 
18359 (minus d0 (S i))) (minus_x_Sy d0 i H4)) in (let H10 \def (drop_clear_S x1 x0 
18360 h (minus d0 (S i)) H9 Abst d v H8) in (ex2_ind C (\lambda (c1: C).(clear x0 
18361 (CHead c1 (Bind Abst) (lift h (minus d0 (S i)) v)))) (\lambda (c1: C).(drop h 
18362 (minus d0 (S i)) c1 d)) (tau0 g c0 (lift h d0 (TLRef i)) (lift h d0 (lift (S 
18363 i) O v))) (\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abst) (lift 
18364 h (minus d0 (S i)) v)))).(\lambda (H12: (drop h (minus d0 (S i)) x 
18365 d)).(eq_ind_r T (TLRef i) (\lambda (t: T).(tau0 g c0 t (lift h d0 (lift (S i) 
18366 O v)))) (eq_ind nat (plus (S i) (minus d0 (S i))) (\lambda (n: nat).(tau0 g 
18367 c0 (TLRef i) (lift h n (lift (S i) O v)))) (eq_ind_r T (lift (S i) O (lift h 
18368 (minus d0 (S i)) v)) (\lambda (t: T).(tau0 g c0 (TLRef i) t)) (eq_ind nat d0 
18369 (\lambda (_: nat).(tau0 g c0 (TLRef i) (lift (S i) O (lift h (minus d0 (S i)) 
18370 v)))) (tau0_abst g c0 x (lift h (minus d0 (S i)) v) i (getl_intro i c0 (CHead 
18371 x (Bind Abst) (lift h (minus d0 (S i)) v)) x0 H6 H11) (lift h (minus d0 (S 
18372 i)) w) (H2 x h (minus d0 (S i)) H12)) (plus (S i) (minus d0 (S i))) 
18373 (le_plus_minus (S i) d0 H4)) (lift h (plus (S i) (minus d0 (S i))) (lift (S 
18374 i) O v)) (lift_d v h (S i) (minus d0 (S i)) O (le_O_n (minus d0 (S i))))) d0 
18375 (le_plus_minus_r (S i) d0 H4)) (lift h d0 (TLRef i)) (lift_lref_lt i h d0 
18376 H4))))) H10)))))))) H5))) (\lambda (H4: (le d0 i)).(eq_ind_r T (TLRef (plus i 
18377 h)) (\lambda (t: T).(tau0 g c0 t (lift h d0 (lift (S i) O v)))) (eq_ind nat 
18378 (S i) (\lambda (_: nat).(tau0 g c0 (TLRef (plus i h)) (lift h d0 (lift (S i) 
18379 O v)))) (eq_ind_r T (lift (plus h (S i)) O v) (\lambda (t: T).(tau0 g c0 
18380 (TLRef (plus i h)) t)) (eq_ind_r nat (plus (S i) h) (\lambda (n: nat).(tau0 g 
18381 c0 (TLRef (plus i h)) (lift n O v))) (tau0_abst g c0 d v (plus i h) 
18382 (drop_getl_trans_ge i c0 c d0 h H3 (CHead d (Bind Abst) v) H0 H4) w H1) (plus 
18383 h (S i)) (plus_comm h (S i))) (lift h d0 (lift (S i) O v)) (lift_free v (S i) 
18384 h O d0 (le_S d0 i H4) (le_O_n d0))) (plus i (S O)) (eq_ind_r nat (plus (S O) 
18385 i) (\lambda (n: nat).(eq nat (S i) n)) (refl_equal nat (plus (S O) i)) (plus 
18386 i (S O)) (plus_comm i (S O)))) (lift h d0 (TLRef i)) (lift_lref_ge i h d0 
18387 H4)))))))))))))))) (\lambda (b: B).(\lambda (c: C).(\lambda (v: T).(\lambda 
18388 (t3: T).(\lambda (t4: T).(\lambda (_: (tau0 g (CHead c (Bind b) v) t3 
18389 t4)).(\lambda (H1: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
18390 nat).((drop h d c0 (CHead c (Bind b) v)) \to (tau0 g c0 (lift h d t3) (lift h 
18391 d t4)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
18392 (H2: (drop h d c0 c)).(eq_ind_r T (THead (Bind b) (lift h d v) (lift h (s 
18393 (Bind b) d) t3)) (\lambda (t: T).(tau0 g c0 t (lift h d (THead (Bind b) v 
18394 t4)))) (eq_ind_r T (THead (Bind b) (lift h d v) (lift h (s (Bind b) d) t4)) 
18395 (\lambda (t: T).(tau0 g c0 (THead (Bind b) (lift h d v) (lift h (s (Bind b) 
18396 d) t3)) t)) (tau0_bind g b c0 (lift h d v) (lift h (S d) t3) (lift h (S d) 
18397 t4) (H1 (CHead c0 (Bind b) (lift h d v)) h (S d) (drop_skip_bind h d c0 c H2 
18398 b v))) (lift h d (THead (Bind b) v t4)) (lift_head (Bind b) v t4 h d)) (lift 
18399 h d (THead (Bind b) v t3)) (lift_head (Bind b) v t3 h d))))))))))))) (\lambda 
18400 (c: C).(\lambda (v: T).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (tau0 g 
18401 c t3 t4)).(\lambda (H1: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
18402 nat).((drop h d c0 c) \to (tau0 g c0 (lift h d t3) (lift h d 
18403 t4)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H2: 
18404 (drop h d c0 c)).(eq_ind_r T (THead (Flat Appl) (lift h d v) (lift h (s (Flat 
18405 Appl) d) t3)) (\lambda (t: T).(tau0 g c0 t (lift h d (THead (Flat Appl) v 
18406 t4)))) (eq_ind_r T (THead (Flat Appl) (lift h d v) (lift h (s (Flat Appl) d) 
18407 t4)) (\lambda (t: T).(tau0 g c0 (THead (Flat Appl) (lift h d v) (lift h (s 
18408 (Flat Appl) d) t3)) t)) (tau0_appl g c0 (lift h d v) (lift h (s (Flat Appl) 
18409 d) t3) (lift h (s (Flat Appl) d) t4) (H1 c0 h (s (Flat Appl) d) H2)) (lift h 
18410 d (THead (Flat Appl) v t4)) (lift_head (Flat Appl) v t4 h d)) (lift h d 
18411 (THead (Flat Appl) v t3)) (lift_head (Flat Appl) v t3 h d)))))))))))) 
18412 (\lambda (c: C).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: (tau0 g c v1 
18413 v2)).(\lambda (H1: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
18414 nat).((drop h d c0 c) \to (tau0 g c0 (lift h d v1) (lift h d 
18415 v2)))))))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (tau0 g c t3 
18416 t4)).(\lambda (H3: ((\forall (c0: C).(\forall (h: nat).(\forall (d: 
18417 nat).((drop h d c0 c) \to (tau0 g c0 (lift h d t3) (lift h d 
18418 t4)))))))).(\lambda (c0: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H4: 
18419 (drop h d c0 c)).(eq_ind_r T (THead (Flat Cast) (lift h d v1) (lift h (s 
18420 (Flat Cast) d) t3)) (\lambda (t: T).(tau0 g c0 t (lift h d (THead (Flat Cast) 
18421 v2 t4)))) (eq_ind_r T (THead (Flat Cast) (lift h d v2) (lift h (s (Flat Cast) 
18422 d) t4)) (\lambda (t: T).(tau0 g c0 (THead (Flat Cast) (lift h d v1) (lift h 
18423 (s (Flat Cast) d) t3)) t)) (tau0_cast g c0 (lift h d v1) (lift h d v2) (H1 c0 
18424 h d H4) (lift h (s (Flat Cast) d) t3) (lift h (s (Flat Cast) d) t4) (H3 c0 h 
18425 (s (Flat Cast) d) H4)) (lift h d (THead (Flat Cast) v2 t4)) (lift_head (Flat 
18426 Cast) v2 t4 h d)) (lift h d (THead (Flat Cast) v1 t3)) (lift_head (Flat Cast) 
18427 v1 t3 h d))))))))))))))) e t1 t2 H))))).
18428
18429 theorem tau0_correct:
18430  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((tau0 g c 
18431 t1 t) \to (ex T (\lambda (t2: T).(tau0 g c t t2)))))))
18432 \def
18433  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
18434 (tau0 g c t1 t)).(tau0_ind g (\lambda (c0: C).(\lambda (_: T).(\lambda (t2: 
18435 T).(ex T (\lambda (t3: T).(tau0 g c0 t2 t3)))))) (\lambda (c0: C).(\lambda 
18436 (n: nat).(ex_intro T (\lambda (t2: T).(tau0 g c0 (TSort (next g n)) t2)) 
18437 (TSort (next g (next g n))) (tau0_sort g c0 (next g n))))) (\lambda (c0: 
18438 C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 
18439 (CHead d (Bind Abbr) v))).(\lambda (w: T).(\lambda (_: (tau0 g d v 
18440 w)).(\lambda (H2: (ex T (\lambda (t2: T).(tau0 g d w t2)))).(let H3 \def H2 
18441 in (ex_ind T (\lambda (t2: T).(tau0 g d w t2)) (ex T (\lambda (t2: T).(tau0 g 
18442 c0 (lift (S i) O w) t2))) (\lambda (x: T).(\lambda (H4: (tau0 g d w 
18443 x)).(ex_intro T (\lambda (t2: T).(tau0 g c0 (lift (S i) O w) t2)) (lift (S i) 
18444 O x) (tau0_lift g d w x H4 c0 (S i) O (getl_drop Abbr c0 d v i H0))))) 
18445 H3)))))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: 
18446 nat).(\lambda (H0: (getl i c0 (CHead d (Bind Abst) v))).(\lambda (w: 
18447 T).(\lambda (H1: (tau0 g d v w)).(\lambda (H2: (ex T (\lambda (t2: T).(tau0 g 
18448 d w t2)))).(let H3 \def H2 in (ex_ind T (\lambda (t2: T).(tau0 g d w t2)) (ex 
18449 T (\lambda (t2: T).(tau0 g c0 (lift (S i) O v) t2))) (\lambda (x: T).(\lambda 
18450 (_: (tau0 g d w x)).(ex_intro T (\lambda (t2: T).(tau0 g c0 (lift (S i) O v) 
18451 t2)) (lift (S i) O w) (tau0_lift g d v w H1 c0 (S i) O (getl_drop Abst c0 d v 
18452 i H0))))) H3)))))))))) (\lambda (b: B).(\lambda (c0: C).(\lambda (v: 
18453 T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (tau0 g (CHead c0 (Bind b) 
18454 v) t2 t3)).(\lambda (H1: (ex T (\lambda (t2: T).(tau0 g (CHead c0 (Bind b) v) 
18455 t3 t2)))).(let H2 \def H1 in (ex_ind T (\lambda (t4: T).(tau0 g (CHead c0 
18456 (Bind b) v) t3 t4)) (ex T (\lambda (t4: T).(tau0 g c0 (THead (Bind b) v t3) 
18457 t4))) (\lambda (x: T).(\lambda (H3: (tau0 g (CHead c0 (Bind b) v) t3 
18458 x)).(ex_intro T (\lambda (t4: T).(tau0 g c0 (THead (Bind b) v t3) t4)) (THead 
18459 (Bind b) v x) (tau0_bind g b c0 v t3 x H3)))) H2))))))))) (\lambda (c0: 
18460 C).(\lambda (v: T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (tau0 g c0 
18461 t2 t3)).(\lambda (H1: (ex T (\lambda (t2: T).(tau0 g c0 t3 t2)))).(let H2 
18462 \def H1 in (ex_ind T (\lambda (t4: T).(tau0 g c0 t3 t4)) (ex T (\lambda (t4: 
18463 T).(tau0 g c0 (THead (Flat Appl) v t3) t4))) (\lambda (x: T).(\lambda (H3: 
18464 (tau0 g c0 t3 x)).(ex_intro T (\lambda (t4: T).(tau0 g c0 (THead (Flat Appl) 
18465 v t3) t4)) (THead (Flat Appl) v x) (tau0_appl g c0 v t3 x H3)))) H2)))))))) 
18466 (\lambda (c0: C).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: (tau0 g c0 v1 
18467 v2)).(\lambda (H1: (ex T (\lambda (t2: T).(tau0 g c0 v2 t2)))).(\lambda (t2: 
18468 T).(\lambda (t3: T).(\lambda (_: (tau0 g c0 t2 t3)).(\lambda (H3: (ex T 
18469 (\lambda (t2: T).(tau0 g c0 t3 t2)))).(let H4 \def H1 in (ex_ind T (\lambda 
18470 (t4: T).(tau0 g c0 v2 t4)) (ex T (\lambda (t4: T).(tau0 g c0 (THead (Flat 
18471 Cast) v2 t3) t4))) (\lambda (x: T).(\lambda (H5: (tau0 g c0 v2 x)).(let H6 
18472 \def H3 in (ex_ind T (\lambda (t4: T).(tau0 g c0 t3 t4)) (ex T (\lambda (t4: 
18473 T).(tau0 g c0 (THead (Flat Cast) v2 t3) t4))) (\lambda (x0: T).(\lambda (H7: 
18474 (tau0 g c0 t3 x0)).(ex_intro T (\lambda (t4: T).(tau0 g c0 (THead (Flat Cast) 
18475 v2 t3) t4)) (THead (Flat Cast) x x0) (tau0_cast g c0 v2 x H5 t3 x0 H7)))) 
18476 H6)))) H4))))))))))) c t1 t H))))).
18477
18478 inductive tau1 (g:G) (c:C) (t1:T): T \to Prop \def
18479 | tau1_tau0: \forall (t2: T).((tau0 g c t1 t2) \to (tau1 g c t1 t2))
18480 | tau1_sing: \forall (t: T).((tau1 g c t1 t) \to (\forall (t2: T).((tau0 g c 
18481 t t2) \to (tau1 g c t1 t2)))).
18482
18483 theorem tau1_trans:
18484  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((tau1 g c 
18485 t1 t) \to (\forall (t2: T).((tau1 g c t t2) \to (tau1 g c t1 t2)))))))
18486 \def
18487  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
18488 (tau1 g c t1 t)).(\lambda (t2: T).(\lambda (H0: (tau1 g c t t2)).(tau1_ind g 
18489 c t (\lambda (t0: T).(tau1 g c t1 t0)) (\lambda (t3: T).(\lambda (H1: (tau0 g 
18490 c t t3)).(tau1_sing g c t1 t H t3 H1))) (\lambda (t0: T).(\lambda (_: (tau1 g 
18491 c t t0)).(\lambda (H2: (tau1 g c t1 t0)).(\lambda (t3: T).(\lambda (H3: (tau0 
18492 g c t0 t3)).(tau1_sing g c t1 t0 H2 t3 H3)))))) t2 H0))))))).
18493
18494 theorem tau1_bind:
18495  \forall (g: G).(\forall (b: B).(\forall (c: C).(\forall (v: T).(\forall (t1: 
18496 T).(\forall (t2: T).((tau1 g (CHead c (Bind b) v) t1 t2) \to (tau1 g c (THead 
18497 (Bind b) v t1) (THead (Bind b) v t2))))))))
18498 \def
18499  \lambda (g: G).(\lambda (b: B).(\lambda (c: C).(\lambda (v: T).(\lambda (t1: 
18500 T).(\lambda (t2: T).(\lambda (H: (tau1 g (CHead c (Bind b) v) t1 
18501 t2)).(tau1_ind g (CHead c (Bind b) v) t1 (\lambda (t: T).(tau1 g c (THead 
18502 (Bind b) v t1) (THead (Bind b) v t))) (\lambda (t3: T).(\lambda (H0: (tau0 g 
18503 (CHead c (Bind b) v) t1 t3)).(tau1_tau0 g c (THead (Bind b) v t1) (THead 
18504 (Bind b) v t3) (tau0_bind g b c v t1 t3 H0)))) (\lambda (t: T).(\lambda (_: 
18505 (tau1 g (CHead c (Bind b) v) t1 t)).(\lambda (H1: (tau1 g c (THead (Bind b) v 
18506 t1) (THead (Bind b) v t))).(\lambda (t3: T).(\lambda (H2: (tau0 g (CHead c 
18507 (Bind b) v) t t3)).(tau1_sing g c (THead (Bind b) v t1) (THead (Bind b) v t) 
18508 H1 (THead (Bind b) v t3) (tau0_bind g b c v t t3 H2))))))) t2 H))))))).
18509
18510 theorem tau1_appl:
18511  \forall (g: G).(\forall (c: C).(\forall (v: T).(\forall (t1: T).(\forall 
18512 (t2: T).((tau1 g c t1 t2) \to (tau1 g c (THead (Flat Appl) v t1) (THead (Flat 
18513 Appl) v t2)))))))
18514 \def
18515  \lambda (g: G).(\lambda (c: C).(\lambda (v: T).(\lambda (t1: T).(\lambda 
18516 (t2: T).(\lambda (H: (tau1 g c t1 t2)).(tau1_ind g c t1 (\lambda (t: T).(tau1 
18517 g c (THead (Flat Appl) v t1) (THead (Flat Appl) v t))) (\lambda (t3: 
18518 T).(\lambda (H0: (tau0 g c t1 t3)).(tau1_tau0 g c (THead (Flat Appl) v t1) 
18519 (THead (Flat Appl) v t3) (tau0_appl g c v t1 t3 H0)))) (\lambda (t: 
18520 T).(\lambda (_: (tau1 g c t1 t)).(\lambda (H1: (tau1 g c (THead (Flat Appl) v 
18521 t1) (THead (Flat Appl) v t))).(\lambda (t3: T).(\lambda (H2: (tau0 g c t 
18522 t3)).(tau1_sing g c (THead (Flat Appl) v t1) (THead (Flat Appl) v t) H1 
18523 (THead (Flat Appl) v t3) (tau0_appl g c v t t3 H2))))))) t2 H)))))).
18524
18525 theorem tau1_lift:
18526  \forall (g: G).(\forall (e: C).(\forall (t1: T).(\forall (t2: T).((tau1 g e 
18527 t1 t2) \to (\forall (c: C).(\forall (h: nat).(\forall (d: nat).((drop h d c 
18528 e) \to (tau1 g c (lift h d t1) (lift h d t2))))))))))
18529 \def
18530  \lambda (g: G).(\lambda (e: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
18531 (H: (tau1 g e t1 t2)).(tau1_ind g e t1 (\lambda (t: T).(\forall (c: 
18532 C).(\forall (h: nat).(\forall (d: nat).((drop h d c e) \to (tau1 g c (lift h 
18533 d t1) (lift h d t))))))) (\lambda (t3: T).(\lambda (H0: (tau0 g e t1 
18534 t3)).(\lambda (c: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: (drop 
18535 h d c e)).(tau1_tau0 g c (lift h d t1) (lift h d t3) (tau0_lift g e t1 t3 H0 
18536 c h d H1)))))))) (\lambda (t: T).(\lambda (_: (tau1 g e t1 t)).(\lambda (H1: 
18537 ((\forall (c: C).(\forall (h: nat).(\forall (d: nat).((drop h d c e) \to 
18538 (tau1 g c (lift h d t1) (lift h d t)))))))).(\lambda (t3: T).(\lambda (H2: 
18539 (tau0 g e t t3)).(\lambda (c: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
18540 (H3: (drop h d c e)).(tau1_sing g c (lift h d t1) (lift h d t) (H1 c h d H3) 
18541 (lift h d t3) (tau0_lift g e t t3 H2 c h d H3))))))))))) t2 H))))).
18542
18543 theorem tau1_correct:
18544  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((tau1 g c 
18545 t1 t) \to (ex T (\lambda (t2: T).(tau0 g c t t2)))))))
18546 \def
18547  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
18548 (tau1 g c t1 t)).(tau1_ind g c t1 (\lambda (t0: T).(ex T (\lambda (t2: 
18549 T).(tau0 g c t0 t2)))) (\lambda (t2: T).(\lambda (H0: (tau0 g c t1 
18550 t2)).(tau0_correct g c t1 t2 H0))) (\lambda (t0: T).(\lambda (_: (tau1 g c t1 
18551 t0)).(\lambda (_: (ex T (\lambda (t2: T).(tau0 g c t0 t2)))).(\lambda (t2: 
18552 T).(\lambda (H2: (tau0 g c t0 t2)).(tau0_correct g c t0 t2 H2)))))) t H))))).
18553
18554 theorem tau1_abbr:
18555  \forall (g: G).(\forall (c: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
18556 nat).((getl i c (CHead d (Bind Abbr) v)) \to (\forall (w: T).((tau1 g d v w) 
18557 \to (tau1 g c (TLRef i) (lift (S i) O w)))))))))
18558 \def
18559  \lambda (g: G).(\lambda (c: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: 
18560 nat).(\lambda (H: (getl i c (CHead d (Bind Abbr) v))).(\lambda (w: 
18561 T).(\lambda (H0: (tau1 g d v w)).(tau1_ind g d v (\lambda (t: T).(tau1 g c 
18562 (TLRef i) (lift (S i) O t))) (\lambda (t2: T).(\lambda (H1: (tau0 g d v 
18563 t2)).(tau1_tau0 g c (TLRef i) (lift (S i) O t2) (tau0_abbr g c d v i H t2 
18564 H1)))) (\lambda (t: T).(\lambda (_: (tau1 g d v t)).(\lambda (H2: (tau1 g c 
18565 (TLRef i) (lift (S i) O t))).(\lambda (t2: T).(\lambda (H3: (tau0 g d t 
18566 t2)).(tau1_sing g c (TLRef i) (lift (S i) O t) H2 (lift (S i) O t2) 
18567 (tau0_lift g d t t2 H3 c (S i) O (getl_drop Abbr c d v i H)))))))) w 
18568 H0)))))))).
18569
18570 theorem tau1_cast2:
18571  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((tau1 g c 
18572 t1 t2) \to (\forall (v1: T).(\forall (v2: T).((tau0 g c v1 v2) \to (ex2 T 
18573 (\lambda (v3: T).(tau1 g c v1 v3)) (\lambda (v3: T).(tau1 g c (THead (Flat 
18574 Cast) v1 t1) (THead (Flat Cast) v3 t2)))))))))))
18575 \def
18576  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
18577 (H: (tau1 g c t1 t2)).(tau1_ind g c t1 (\lambda (t: T).(\forall (v1: 
18578 T).(\forall (v2: T).((tau0 g c v1 v2) \to (ex2 T (\lambda (v3: T).(tau1 g c 
18579 v1 v3)) (\lambda (v3: T).(tau1 g c (THead (Flat Cast) v1 t1) (THead (Flat 
18580 Cast) v3 t)))))))) (\lambda (t3: T).(\lambda (H0: (tau0 g c t1 t3)).(\lambda 
18581 (v1: T).(\lambda (v2: T).(\lambda (H1: (tau0 g c v1 v2)).(ex_intro2 T 
18582 (\lambda (v3: T).(tau1 g c v1 v3)) (\lambda (v3: T).(tau1 g c (THead (Flat 
18583 Cast) v1 t1) (THead (Flat Cast) v3 t3))) v2 (tau1_tau0 g c v1 v2 H1) 
18584 (tau1_tau0 g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) v2 t3) (tau0_cast 
18585 g c v1 v2 H1 t1 t3 H0)))))))) (\lambda (t: T).(\lambda (_: (tau1 g c t1 
18586 t)).(\lambda (H1: ((\forall (v1: T).(\forall (v2: T).((tau0 g c v1 v2) \to 
18587 (ex2 T (\lambda (v3: T).(tau1 g c v1 v3)) (\lambda (v3: T).(tau1 g c (THead 
18588 (Flat Cast) v1 t1) (THead (Flat Cast) v3 t))))))))).(\lambda (t3: T).(\lambda 
18589 (H2: (tau0 g c t t3)).(\lambda (v1: T).(\lambda (v2: T).(\lambda (H3: (tau0 g 
18590 c v1 v2)).(let H_x \def (H1 v1 v2 H3) in (let H4 \def H_x in (ex2_ind T 
18591 (\lambda (v3: T).(tau1 g c v1 v3)) (\lambda (v3: T).(tau1 g c (THead (Flat 
18592 Cast) v1 t1) (THead (Flat Cast) v3 t))) (ex2 T (\lambda (v3: T).(tau1 g c v1 
18593 v3)) (\lambda (v3: T).(tau1 g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) 
18594 v3 t3)))) (\lambda (x: T).(\lambda (H5: (tau1 g c v1 x)).(\lambda (H6: (tau1 
18595 g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) x t))).(let H_x0 \def 
18596 (tau1_correct g c v1 x H5) in (let H7 \def H_x0 in (ex_ind T (\lambda (t4: 
18597 T).(tau0 g c x t4)) (ex2 T (\lambda (v3: T).(tau1 g c v1 v3)) (\lambda (v3: 
18598 T).(tau1 g c (THead (Flat Cast) v1 t1) (THead (Flat Cast) v3 t3)))) (\lambda 
18599 (x0: T).(\lambda (H8: (tau0 g c x x0)).(ex_intro2 T (\lambda (v3: T).(tau1 g 
18600 c v1 v3)) (\lambda (v3: T).(tau1 g c (THead (Flat Cast) v1 t1) (THead (Flat 
18601 Cast) v3 t3))) x0 (tau1_sing g c v1 x H5 x0 H8) (tau1_sing g c (THead (Flat 
18602 Cast) v1 t1) (THead (Flat Cast) x t) H6 (THead (Flat Cast) x0 t3) (tau0_cast 
18603 g c x x0 H8 t t3 H2))))) H7)))))) H4))))))))))) t2 H))))).
18604
18605 theorem tau1_cnt:
18606  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((tau0 g c 
18607 t1 t) \to (ex2 T (\lambda (t2: T).(tau1 g c t1 t2)) (\lambda (t2: T).(cnt 
18608 t2)))))))
18609 \def
18610  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
18611 (tau0 g c t1 t)).(tau0_ind g (\lambda (c0: C).(\lambda (t0: T).(\lambda (_: 
18612 T).(ex2 T (\lambda (t3: T).(tau1 g c0 t0 t3)) (\lambda (t3: T).(cnt t3)))))) 
18613 (\lambda (c0: C).(\lambda (n: nat).(ex_intro2 T (\lambda (t2: T).(tau1 g c0 
18614 (TSort n) t2)) (\lambda (t2: T).(cnt t2)) (TSort (next g n)) (tau1_tau0 g c0 
18615 (TSort n) (TSort (next g n)) (tau0_sort g c0 n)) (cnt_sort (next g n))))) 
18616 (\lambda (c0: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda 
18617 (H0: (getl i c0 (CHead d (Bind Abbr) v))).(\lambda (w: T).(\lambda (_: (tau0 
18618 g d v w)).(\lambda (H2: (ex2 T (\lambda (t2: T).(tau1 g d v t2)) (\lambda 
18619 (t2: T).(cnt t2)))).(let H3 \def H2 in (ex2_ind T (\lambda (t2: T).(tau1 g d 
18620 v t2)) (\lambda (t2: T).(cnt t2)) (ex2 T (\lambda (t2: T).(tau1 g c0 (TLRef 
18621 i) t2)) (\lambda (t2: T).(cnt t2))) (\lambda (x: T).(\lambda (H4: (tau1 g d v 
18622 x)).(\lambda (H5: (cnt x)).(ex_intro2 T (\lambda (t2: T).(tau1 g c0 (TLRef i) 
18623 t2)) (\lambda (t2: T).(cnt t2)) (lift (S i) O x) (tau1_abbr g c0 d v i H0 x 
18624 H4) (cnt_lift x H5 (S i) O))))) H3)))))))))) (\lambda (c0: C).(\lambda (d: 
18625 C).(\lambda (v: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind 
18626 Abst) v))).(\lambda (w: T).(\lambda (H1: (tau0 g d v w)).(\lambda (H2: (ex2 T 
18627 (\lambda (t2: T).(tau1 g d v t2)) (\lambda (t2: T).(cnt t2)))).(let H3 \def 
18628 H2 in (ex2_ind T (\lambda (t2: T).(tau1 g d v t2)) (\lambda (t2: T).(cnt t2)) 
18629 (ex2 T (\lambda (t2: T).(tau1 g c0 (TLRef i) t2)) (\lambda (t2: T).(cnt t2))) 
18630 (\lambda (x: T).(\lambda (H4: (tau1 g d v x)).(\lambda (H5: (cnt 
18631 x)).(ex_intro2 T (\lambda (t2: T).(tau1 g c0 (TLRef i) t2)) (\lambda (t2: 
18632 T).(cnt t2)) (lift (S i) O x) (tau1_trans g c0 (TLRef i) (lift (S i) O v) 
18633 (tau1_tau0 g c0 (TLRef i) (lift (S i) O v) (tau0_abst g c0 d v i H0 w H1)) 
18634 (lift (S i) O x) (tau1_lift g d v x H4 c0 (S i) O (getl_drop Abst c0 d v i 
18635 H0))) (cnt_lift x H5 (S i) O))))) H3)))))))))) (\lambda (b: B).(\lambda (c0: 
18636 C).(\lambda (v: T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (tau0 g 
18637 (CHead c0 (Bind b) v) t2 t3)).(\lambda (H1: (ex2 T (\lambda (t3: T).(tau1 g 
18638 (CHead c0 (Bind b) v) t2 t3)) (\lambda (t2: T).(cnt t2)))).(let H2 \def H1 in 
18639 (ex2_ind T (\lambda (t4: T).(tau1 g (CHead c0 (Bind b) v) t2 t4)) (\lambda 
18640 (t4: T).(cnt t4)) (ex2 T (\lambda (t4: T).(tau1 g c0 (THead (Bind b) v t2) 
18641 t4)) (\lambda (t4: T).(cnt t4))) (\lambda (x: T).(\lambda (H3: (tau1 g (CHead 
18642 c0 (Bind b) v) t2 x)).(\lambda (H4: (cnt x)).(ex_intro2 T (\lambda (t4: 
18643 T).(tau1 g c0 (THead (Bind b) v t2) t4)) (\lambda (t4: T).(cnt t4)) (THead 
18644 (Bind b) v x) (tau1_bind g b c0 v t2 x H3) (cnt_head x H4 (Bind b) v))))) 
18645 H2))))))))) (\lambda (c0: C).(\lambda (v: T).(\lambda (t2: T).(\lambda (t3: 
18646 T).(\lambda (_: (tau0 g c0 t2 t3)).(\lambda (H1: (ex2 T (\lambda (t3: 
18647 T).(tau1 g c0 t2 t3)) (\lambda (t2: T).(cnt t2)))).(let H2 \def H1 in 
18648 (ex2_ind T (\lambda (t4: T).(tau1 g c0 t2 t4)) (\lambda (t4: T).(cnt t4)) 
18649 (ex2 T (\lambda (t4: T).(tau1 g c0 (THead (Flat Appl) v t2) t4)) (\lambda 
18650 (t4: T).(cnt t4))) (\lambda (x: T).(\lambda (H3: (tau1 g c0 t2 x)).(\lambda 
18651 (H4: (cnt x)).(ex_intro2 T (\lambda (t4: T).(tau1 g c0 (THead (Flat Appl) v 
18652 t2) t4)) (\lambda (t4: T).(cnt t4)) (THead (Flat Appl) v x) (tau1_appl g c0 v 
18653 t2 x H3) (cnt_head x H4 (Flat Appl) v))))) H2)))))))) (\lambda (c0: 
18654 C).(\lambda (v1: T).(\lambda (v2: T).(\lambda (H0: (tau0 g c0 v1 
18655 v2)).(\lambda (_: (ex2 T (\lambda (t2: T).(tau1 g c0 v1 t2)) (\lambda (t2: 
18656 T).(cnt t2)))).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (tau0 g c0 t2 
18657 t3)).(\lambda (H3: (ex2 T (\lambda (t3: T).(tau1 g c0 t2 t3)) (\lambda (t2: 
18658 T).(cnt t2)))).(let H4 \def H3 in (ex2_ind T (\lambda (t4: T).(tau1 g c0 t2 
18659 t4)) (\lambda (t4: T).(cnt t4)) (ex2 T (\lambda (t4: T).(tau1 g c0 (THead 
18660 (Flat Cast) v1 t2) t4)) (\lambda (t4: T).(cnt t4))) (\lambda (x: T).(\lambda 
18661 (H5: (tau1 g c0 t2 x)).(\lambda (H6: (cnt x)).(let H_x \def (tau1_cast2 g c0 
18662 t2 x H5 v1 v2 H0) in (let H7 \def H_x in (ex2_ind T (\lambda (v3: T).(tau1 g 
18663 c0 v1 v3)) (\lambda (v3: T).(tau1 g c0 (THead (Flat Cast) v1 t2) (THead (Flat 
18664 Cast) v3 x))) (ex2 T (\lambda (t4: T).(tau1 g c0 (THead (Flat Cast) v1 t2) 
18665 t4)) (\lambda (t4: T).(cnt t4))) (\lambda (x0: T).(\lambda (_: (tau1 g c0 v1 
18666 x0)).(\lambda (H9: (tau1 g c0 (THead (Flat Cast) v1 t2) (THead (Flat Cast) x0 
18667 x))).(ex_intro2 T (\lambda (t4: T).(tau1 g c0 (THead (Flat Cast) v1 t2) t4)) 
18668 (\lambda (t4: T).(cnt t4)) (THead (Flat Cast) x0 x) H9 (cnt_head x H6 (Flat 
18669 Cast) x0))))) H7)))))) H4))))))))))) c t1 t H))))).
18670
18671 inductive A: Set \def
18672 | ASort: nat \to (nat \to A)
18673 | AHead: A \to (A \to A).
18674
18675 definition asucc:
18676  G \to (A \to A)
18677 \def
18678  let rec asucc (g: G) (l: A) on l: A \def (match l with [(ASort n0 n) 
18679 \Rightarrow (match n0 with [O \Rightarrow (ASort O (next g n)) | (S h) 
18680 \Rightarrow (ASort h n)]) | (AHead a1 a2) \Rightarrow (AHead a1 (asucc g 
18681 a2))]) in asucc.
18682
18683 definition aplus:
18684  G \to (A \to (nat \to A))
18685 \def
18686  let rec aplus (g: G) (a: A) (n: nat) on n: A \def (match n with [O 
18687 \Rightarrow a | (S n0) \Rightarrow (asucc g (aplus g a n0))]) in aplus.
18688
18689 inductive leq (g:G): A \to (A \to Prop) \def
18690 | leq_sort: \forall (h1: nat).(\forall (h2: nat).(\forall (n1: nat).(\forall 
18691 (n2: nat).(\forall (k: nat).((eq A (aplus g (ASort h1 n1) k) (aplus g (ASort 
18692 h2 n2) k)) \to (leq g (ASort h1 n1) (ASort h2 n2)))))))
18693 | leq_head: \forall (a1: A).(\forall (a2: A).((leq g a1 a2) \to (\forall (a3: 
18694 A).(\forall (a4: A).((leq g a3 a4) \to (leq g (AHead a1 a3) (AHead a2 
18695 a4))))))).
18696
18697 theorem leq_gen_sort:
18698  \forall (g: G).(\forall (h1: nat).(\forall (n1: nat).(\forall (a2: A).((leq 
18699 g (ASort h1 n1) a2) \to (ex2_3 nat nat nat (\lambda (n2: nat).(\lambda (h2: 
18700 nat).(\lambda (_: nat).(eq A a2 (ASort h2 n2))))) (\lambda (n2: nat).(\lambda 
18701 (h2: nat).(\lambda (k: nat).(eq A (aplus g (ASort h1 n1) k) (aplus g (ASort 
18702 h2 n2) k))))))))))
18703 \def
18704  \lambda (g: G).(\lambda (h1: nat).(\lambda (n1: nat).(\lambda (a2: 
18705 A).(\lambda (H: (leq g (ASort h1 n1) a2)).(let H0 \def (match H return 
18706 (\lambda (a: A).(\lambda (a0: A).(\lambda (_: (leq ? a a0)).((eq A a (ASort 
18707 h1 n1)) \to ((eq A a0 a2) \to (ex2_3 nat nat nat (\lambda (n2: nat).(\lambda 
18708 (h2: nat).(\lambda (_: nat).(eq A a2 (ASort h2 n2))))) (\lambda (n2: 
18709 nat).(\lambda (h2: nat).(\lambda (k: nat).(eq A (aplus g (ASort h1 n1) k) 
18710 (aplus g (ASort h2 n2) k))))))))))) with [(leq_sort h0 h2 n0 n2 k H0) 
18711 \Rightarrow (\lambda (H1: (eq A (ASort h0 n0) (ASort h1 n1))).(\lambda (H2: 
18712 (eq A (ASort h2 n2) a2)).((let H3 \def (f_equal A nat (\lambda (e: A).(match 
18713 e return (\lambda (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _) 
18714 \Rightarrow n0])) (ASort h0 n0) (ASort h1 n1) H1) in ((let H4 \def (f_equal A 
18715 nat (\lambda (e: A).(match e return (\lambda (_: A).nat) with [(ASort n _) 
18716 \Rightarrow n | (AHead _ _) \Rightarrow h0])) (ASort h0 n0) (ASort h1 n1) H1) 
18717 in (eq_ind nat h1 (\lambda (n: nat).((eq nat n0 n1) \to ((eq A (ASort h2 n2) 
18718 a2) \to ((eq A (aplus g (ASort n n0) k) (aplus g (ASort h2 n2) k)) \to (ex2_3 
18719 nat nat nat (\lambda (n3: nat).(\lambda (h3: nat).(\lambda (_: nat).(eq A a2 
18720 (ASort h3 n3))))) (\lambda (n3: nat).(\lambda (h3: nat).(\lambda (k0: 
18721 nat).(eq A (aplus g (ASort h1 n1) k0) (aplus g (ASort h3 n3) k0)))))))))) 
18722 (\lambda (H5: (eq nat n0 n1)).(eq_ind nat n1 (\lambda (n: nat).((eq A (ASort 
18723 h2 n2) a2) \to ((eq A (aplus g (ASort h1 n) k) (aplus g (ASort h2 n2) k)) \to 
18724 (ex2_3 nat nat nat (\lambda (n3: nat).(\lambda (h3: nat).(\lambda (_: 
18725 nat).(eq A a2 (ASort h3 n3))))) (\lambda (n3: nat).(\lambda (h3: 
18726 nat).(\lambda (k0: nat).(eq A (aplus g (ASort h1 n1) k0) (aplus g (ASort h3 
18727 n3) k0))))))))) (\lambda (H6: (eq A (ASort h2 n2) a2)).(eq_ind A (ASort h2 
18728 n2) (\lambda (a: A).((eq A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) 
18729 k)) \to (ex2_3 nat nat nat (\lambda (n3: nat).(\lambda (h3: nat).(\lambda (_: 
18730 nat).(eq A a (ASort h3 n3))))) (\lambda (n3: nat).(\lambda (h3: nat).(\lambda 
18731 (k0: nat).(eq A (aplus g (ASort h1 n1) k0) (aplus g (ASort h3 n3) k0)))))))) 
18732 (\lambda (H7: (eq A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) 
18733 k))).(ex2_3_intro nat nat nat (\lambda (n3: nat).(\lambda (h3: nat).(\lambda 
18734 (_: nat).(eq A (ASort h2 n2) (ASort h3 n3))))) (\lambda (n3: nat).(\lambda 
18735 (h3: nat).(\lambda (k0: nat).(eq A (aplus g (ASort h1 n1) k0) (aplus g (ASort 
18736 h3 n3) k0))))) n2 h2 k (refl_equal A (ASort h2 n2)) H7)) a2 H6)) n0 (sym_eq 
18737 nat n0 n1 H5))) h0 (sym_eq nat h0 h1 H4))) H3)) H2 H0))) | (leq_head a1 a0 H0 
18738 a3 a4 H1) \Rightarrow (\lambda (H2: (eq A (AHead a1 a3) (ASort h1 
18739 n1))).(\lambda (H3: (eq A (AHead a0 a4) a2)).((let H4 \def (eq_ind A (AHead 
18740 a1 a3) (\lambda (e: A).(match e return (\lambda (_: A).Prop) with [(ASort _ 
18741 _) \Rightarrow False | (AHead _ _) \Rightarrow True])) I (ASort h1 n1) H2) in 
18742 (False_ind ((eq A (AHead a0 a4) a2) \to ((leq g a1 a0) \to ((leq g a3 a4) \to 
18743 (ex2_3 nat nat nat (\lambda (n2: nat).(\lambda (h2: nat).(\lambda (_: 
18744 nat).(eq A a2 (ASort h2 n2))))) (\lambda (n2: nat).(\lambda (h2: 
18745 nat).(\lambda (k: nat).(eq A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) 
18746 k))))))))) H4)) H3 H0 H1)))]) in (H0 (refl_equal A (ASort h1 n1)) (refl_equal 
18747 A a2))))))).
18748
18749 theorem leq_gen_head:
18750  \forall (g: G).(\forall (a1: A).(\forall (a2: A).(\forall (a: A).((leq g 
18751 (AHead a1 a2) a) \to (ex3_2 A A (\lambda (a3: A).(\lambda (a4: A).(eq A a 
18752 (AHead a3 a4)))) (\lambda (a3: A).(\lambda (_: A).(leq g a1 a3))) (\lambda 
18753 (_: A).(\lambda (a4: A).(leq g a2 a4))))))))
18754 \def
18755  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (a: A).(\lambda 
18756 (H: (leq g (AHead a1 a2) a)).(let H0 \def (match H return (\lambda (a0: 
18757 A).(\lambda (a3: A).(\lambda (_: (leq ? a0 a3)).((eq A a0 (AHead a1 a2)) \to 
18758 ((eq A a3 a) \to (ex3_2 A A (\lambda (a4: A).(\lambda (a5: A).(eq A a (AHead 
18759 a4 a5)))) (\lambda (a4: A).(\lambda (_: A).(leq g a1 a4))) (\lambda (_: 
18760 A).(\lambda (a5: A).(leq g a2 a5))))))))) with [(leq_sort h1 h2 n1 n2 k H0) 
18761 \Rightarrow (\lambda (H1: (eq A (ASort h1 n1) (AHead a1 a2))).(\lambda (H2: 
18762 (eq A (ASort h2 n2) a)).((let H3 \def (eq_ind A (ASort h1 n1) (\lambda (e: 
18763 A).(match e return (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow True | 
18764 (AHead _ _) \Rightarrow False])) I (AHead a1 a2) H1) in (False_ind ((eq A 
18765 (ASort h2 n2) a) \to ((eq A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) 
18766 k)) \to (ex3_2 A A (\lambda (a3: A).(\lambda (a4: A).(eq A a (AHead a3 a4)))) 
18767 (\lambda (a3: A).(\lambda (_: A).(leq g a1 a3))) (\lambda (_: A).(\lambda 
18768 (a4: A).(leq g a2 a4)))))) H3)) H2 H0))) | (leq_head a0 a3 H0 a4 a5 H1) 
18769 \Rightarrow (\lambda (H2: (eq A (AHead a0 a4) (AHead a1 a2))).(\lambda (H3: 
18770 (eq A (AHead a3 a5) a)).((let H4 \def (f_equal A A (\lambda (e: A).(match e 
18771 return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a4 | (AHead _ a) 
18772 \Rightarrow a])) (AHead a0 a4) (AHead a1 a2) H2) in ((let H5 \def (f_equal A 
18773 A (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) 
18774 \Rightarrow a0 | (AHead a _) \Rightarrow a])) (AHead a0 a4) (AHead a1 a2) H2) 
18775 in (eq_ind A a1 (\lambda (a6: A).((eq A a4 a2) \to ((eq A (AHead a3 a5) a) 
18776 \to ((leq g a6 a3) \to ((leq g a4 a5) \to (ex3_2 A A (\lambda (a7: 
18777 A).(\lambda (a8: A).(eq A a (AHead a7 a8)))) (\lambda (a7: A).(\lambda (_: 
18778 A).(leq g a1 a7))) (\lambda (_: A).(\lambda (a8: A).(leq g a2 a8))))))))) 
18779 (\lambda (H6: (eq A a4 a2)).(eq_ind A a2 (\lambda (a6: A).((eq A (AHead a3 
18780 a5) a) \to ((leq g a1 a3) \to ((leq g a6 a5) \to (ex3_2 A A (\lambda (a7: 
18781 A).(\lambda (a8: A).(eq A a (AHead a7 a8)))) (\lambda (a7: A).(\lambda (_: 
18782 A).(leq g a1 a7))) (\lambda (_: A).(\lambda (a8: A).(leq g a2 a8)))))))) 
18783 (\lambda (H7: (eq A (AHead a3 a5) a)).(eq_ind A (AHead a3 a5) (\lambda (a: 
18784 A).((leq g a1 a3) \to ((leq g a2 a5) \to (ex3_2 A A (\lambda (a6: A).(\lambda 
18785 (a7: A).(eq A a (AHead a6 a7)))) (\lambda (a6: A).(\lambda (_: A).(leq g a1 
18786 a6))) (\lambda (_: A).(\lambda (a7: A).(leq g a2 a7))))))) (\lambda (H8: (leq 
18787 g a1 a3)).(\lambda (H9: (leq g a2 a5)).(ex3_2_intro A A (\lambda (a6: 
18788 A).(\lambda (a7: A).(eq A (AHead a3 a5) (AHead a6 a7)))) (\lambda (a6: 
18789 A).(\lambda (_: A).(leq g a1 a6))) (\lambda (_: A).(\lambda (a7: A).(leq g a2 
18790 a7))) a3 a5 (refl_equal A (AHead a3 a5)) H8 H9))) a H7)) a4 (sym_eq A a4 a2 
18791 H6))) a0 (sym_eq A a0 a1 H5))) H4)) H3 H0 H1)))]) in (H0 (refl_equal A (AHead 
18792 a1 a2)) (refl_equal A a))))))).
18793
18794 theorem asucc_gen_sort:
18795  \forall (g: G).(\forall (h: nat).(\forall (n: nat).(\forall (a: A).((eq A 
18796 (ASort h n) (asucc g a)) \to (ex_2 nat nat (\lambda (h0: nat).(\lambda (n0: 
18797 nat).(eq A a (ASort h0 n0)))))))))
18798 \def
18799  \lambda (g: G).(\lambda (h: nat).(\lambda (n: nat).(\lambda (a: A).(A_ind 
18800 (\lambda (a0: A).((eq A (ASort h n) (asucc g a0)) \to (ex_2 nat nat (\lambda 
18801 (h0: nat).(\lambda (n0: nat).(eq A a0 (ASort h0 n0))))))) (\lambda (n0: 
18802 nat).(\lambda (n1: nat).(\lambda (H: (eq A (ASort h n) (asucc g (ASort n0 
18803 n1)))).(let H0 \def (f_equal A A (\lambda (e: A).e) (ASort h n) (match n0 
18804 with [O \Rightarrow (ASort O (next g n1)) | (S h) \Rightarrow (ASort h n1)]) 
18805 H) in (ex_2_intro nat nat (\lambda (h0: nat).(\lambda (n2: nat).(eq A (ASort 
18806 n0 n1) (ASort h0 n2)))) n0 n1 (refl_equal A (ASort n0 n1))))))) (\lambda (a0: 
18807 A).(\lambda (_: (((eq A (ASort h n) (asucc g a0)) \to (ex_2 nat nat (\lambda 
18808 (h0: nat).(\lambda (n0: nat).(eq A a0 (ASort h0 n0)))))))).(\lambda (a1: 
18809 A).(\lambda (_: (((eq A (ASort h n) (asucc g a1)) \to (ex_2 nat nat (\lambda 
18810 (h0: nat).(\lambda (n0: nat).(eq A a1 (ASort h0 n0)))))))).(\lambda (H1: (eq 
18811 A (ASort h n) (asucc g (AHead a0 a1)))).(let H2 \def (eq_ind A (ASort h n) 
18812 (\lambda (ee: A).(match ee return (\lambda (_: A).Prop) with [(ASort _ _) 
18813 \Rightarrow True | (AHead _ _) \Rightarrow False])) I (asucc g (AHead a0 a1)) 
18814 H1) in (False_ind (ex_2 nat nat (\lambda (h0: nat).(\lambda (n0: nat).(eq A 
18815 (AHead a0 a1) (ASort h0 n0))))) H2))))))) a)))).
18816
18817 theorem asucc_gen_head:
18818  \forall (g: G).(\forall (a1: A).(\forall (a2: A).(\forall (a: A).((eq A 
18819 (AHead a1 a2) (asucc g a)) \to (ex2 A (\lambda (a0: A).(eq A a (AHead a1 
18820 a0))) (\lambda (a0: A).(eq A a2 (asucc g a0))))))))
18821 \def
18822  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (a: A).(A_ind 
18823 (\lambda (a0: A).((eq A (AHead a1 a2) (asucc g a0)) \to (ex2 A (\lambda (a3: 
18824 A).(eq A a0 (AHead a1 a3))) (\lambda (a3: A).(eq A a2 (asucc g a3)))))) 
18825 (\lambda (n: nat).(\lambda (n0: nat).(\lambda (H: (eq A (AHead a1 a2) (asucc 
18826 g (ASort n n0)))).(nat_ind (\lambda (n1: nat).((eq A (AHead a1 a2) (asucc g 
18827 (ASort n1 n0))) \to (ex2 A (\lambda (a0: A).(eq A (ASort n1 n0) (AHead a1 
18828 a0))) (\lambda (a0: A).(eq A a2 (asucc g a0)))))) (\lambda (H0: (eq A (AHead 
18829 a1 a2) (asucc g (ASort O n0)))).(let H1 \def (eq_ind A (AHead a1 a2) (\lambda 
18830 (ee: A).(match ee return (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow 
18831 False | (AHead _ _) \Rightarrow True])) I (ASort O (next g n0)) H0) in 
18832 (False_ind (ex2 A (\lambda (a0: A).(eq A (ASort O n0) (AHead a1 a0))) 
18833 (\lambda (a0: A).(eq A a2 (asucc g a0)))) H1))) (\lambda (n1: nat).(\lambda 
18834 (_: (((eq A (AHead a1 a2) (asucc g (ASort n1 n0))) \to (ex2 A (\lambda (a0: 
18835 A).(eq A (ASort n1 n0) (AHead a1 a0))) (\lambda (a0: A).(eq A a2 (asucc g 
18836 a0))))))).(\lambda (H0: (eq A (AHead a1 a2) (asucc g (ASort (S n1) 
18837 n0)))).(let H1 \def (eq_ind A (AHead a1 a2) (\lambda (ee: A).(match ee return 
18838 (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False | (AHead _ _) 
18839 \Rightarrow True])) I (ASort n1 n0) H0) in (False_ind (ex2 A (\lambda (a0: 
18840 A).(eq A (ASort (S n1) n0) (AHead a1 a0))) (\lambda (a0: A).(eq A a2 (asucc g 
18841 a0)))) H1))))) n H)))) (\lambda (a0: A).(\lambda (H: (((eq A (AHead a1 a2) 
18842 (asucc g a0)) \to (ex2 A (\lambda (a2: A).(eq A a0 (AHead a1 a2))) (\lambda 
18843 (a0: A).(eq A a2 (asucc g a0))))))).(\lambda (a3: A).(\lambda (H0: (((eq A 
18844 (AHead a1 a2) (asucc g a3)) \to (ex2 A (\lambda (a0: A).(eq A a3 (AHead a1 
18845 a0))) (\lambda (a0: A).(eq A a2 (asucc g a0))))))).(\lambda (H1: (eq A (AHead 
18846 a1 a2) (asucc g (AHead a0 a3)))).(let H2 \def (f_equal A A (\lambda (e: 
18847 A).(match e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a1 | 
18848 (AHead a _) \Rightarrow a])) (AHead a1 a2) (AHead a0 (asucc g a3)) H1) in 
18849 ((let H3 \def (f_equal A A (\lambda (e: A).(match e return (\lambda (_: A).A) 
18850 with [(ASort _ _) \Rightarrow a2 | (AHead _ a) \Rightarrow a])) (AHead a1 a2) 
18851 (AHead a0 (asucc g a3)) H1) in (\lambda (H4: (eq A a1 a0)).(let H5 \def 
18852 (eq_ind_r A a0 (\lambda (a: A).((eq A (AHead a1 a2) (asucc g a)) \to (ex2 A 
18853 (\lambda (a0: A).(eq A a (AHead a1 a0))) (\lambda (a0: A).(eq A a2 (asucc g 
18854 a0)))))) H a1 H4) in (eq_ind A a1 (\lambda (a4: A).(ex2 A (\lambda (a5: 
18855 A).(eq A (AHead a4 a3) (AHead a1 a5))) (\lambda (a5: A).(eq A a2 (asucc g 
18856 a5))))) (let H6 \def (eq_ind A a2 (\lambda (a: A).((eq A (AHead a1 a) (asucc 
18857 g a3)) \to (ex2 A (\lambda (a0: A).(eq A a3 (AHead a1 a0))) (\lambda (a0: 
18858 A).(eq A a (asucc g a0)))))) H0 (asucc g a3) H3) in (let H7 \def (eq_ind A a2 
18859 (\lambda (a: A).((eq A (AHead a1 a) (asucc g a1)) \to (ex2 A (\lambda (a0: 
18860 A).(eq A a1 (AHead a1 a0))) (\lambda (a0: A).(eq A a (asucc g a0)))))) H5 
18861 (asucc g a3) H3) in (eq_ind_r A (asucc g a3) (\lambda (a4: A).(ex2 A (\lambda 
18862 (a5: A).(eq A (AHead a1 a3) (AHead a1 a5))) (\lambda (a5: A).(eq A a4 (asucc 
18863 g a5))))) (ex_intro2 A (\lambda (a4: A).(eq A (AHead a1 a3) (AHead a1 a4))) 
18864 (\lambda (a4: A).(eq A (asucc g a3) (asucc g a4))) a3 (refl_equal A (AHead a1 
18865 a3)) (refl_equal A (asucc g a3))) a2 H3))) a0 H4)))) H2))))))) a)))).
18866
18867 theorem aplus_reg_r:
18868  \forall (g: G).(\forall (a1: A).(\forall (a2: A).(\forall (h1: nat).(\forall 
18869 (h2: nat).((eq A (aplus g a1 h1) (aplus g a2 h2)) \to (\forall (h: nat).(eq A 
18870 (aplus g a1 (plus h h1)) (aplus g a2 (plus h h2)))))))))
18871 \def
18872  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (h1: nat).(\lambda 
18873 (h2: nat).(\lambda (H: (eq A (aplus g a1 h1) (aplus g a2 h2))).(\lambda (h: 
18874 nat).(nat_ind (\lambda (n: nat).(eq A (aplus g a1 (plus n h1)) (aplus g a2 
18875 (plus n h2)))) H (\lambda (n: nat).(\lambda (H0: (eq A (aplus g a1 (plus n 
18876 h1)) (aplus g a2 (plus n h2)))).(sym_equal A (asucc g (aplus g a2 (plus n 
18877 h2))) (asucc g (aplus g a1 (plus n h1))) (sym_equal A (asucc g (aplus g a1 
18878 (plus n h1))) (asucc g (aplus g a2 (plus n h2))) (sym_equal A (asucc g (aplus 
18879 g a2 (plus n h2))) (asucc g (aplus g a1 (plus n h1))) (f_equal2 G A A asucc g 
18880 g (aplus g a2 (plus n h2)) (aplus g a1 (plus n h1)) (refl_equal G g) (sym_eq 
18881 A (aplus g a1 (plus n h1)) (aplus g a2 (plus n h2)) H0))))))) h))))))).
18882
18883 theorem aplus_assoc:
18884  \forall (g: G).(\forall (a: A).(\forall (h1: nat).(\forall (h2: nat).(eq A 
18885 (aplus g (aplus g a h1) h2) (aplus g a (plus h1 h2))))))
18886 \def
18887  \lambda (g: G).(\lambda (a: A).(\lambda (h1: nat).(nat_ind (\lambda (n: 
18888 nat).(\forall (h2: nat).(eq A (aplus g (aplus g a n) h2) (aplus g a (plus n 
18889 h2))))) (\lambda (h2: nat).(refl_equal A (aplus g a h2))) (\lambda (n: 
18890 nat).(\lambda (_: ((\forall (h2: nat).(eq A (aplus g (aplus g a n) h2) (aplus 
18891 g a (plus n h2)))))).(\lambda (h2: nat).(nat_ind (\lambda (n0: nat).(eq A 
18892 (aplus g (asucc g (aplus g a n)) n0) (asucc g (aplus g a (plus n n0))))) 
18893 (eq_ind nat n (\lambda (n0: nat).(eq A (asucc g (aplus g a n)) (asucc g 
18894 (aplus g a n0)))) (refl_equal A (asucc g (aplus g a n))) (plus n O) (plus_n_O 
18895 n)) (\lambda (n0: nat).(\lambda (H0: (eq A (aplus g (asucc g (aplus g a n)) 
18896 n0) (asucc g (aplus g a (plus n n0))))).(eq_ind nat (S (plus n n0)) (\lambda 
18897 (n1: nat).(eq A (asucc g (aplus g (asucc g (aplus g a n)) n0)) (asucc g 
18898 (aplus g a n1)))) (sym_equal A (asucc g (asucc g (aplus g a (plus n n0)))) 
18899 (asucc g (aplus g (asucc g (aplus g a n)) n0)) (sym_equal A (asucc g (aplus g 
18900 (asucc g (aplus g a n)) n0)) (asucc g (asucc g (aplus g a (plus n n0)))) 
18901 (sym_equal A (asucc g (asucc g (aplus g a (plus n n0)))) (asucc g (aplus g 
18902 (asucc g (aplus g a n)) n0)) (f_equal2 G A A asucc g g (asucc g (aplus g a 
18903 (plus n n0))) (aplus g (asucc g (aplus g a n)) n0) (refl_equal G g) (sym_eq A 
18904 (aplus g (asucc g (aplus g a n)) n0) (asucc g (aplus g a (plus n n0))) 
18905 H0))))) (plus n (S n0)) (plus_n_Sm n n0)))) h2)))) h1))).
18906
18907 theorem aplus_asucc:
18908  \forall (g: G).(\forall (h: nat).(\forall (a: A).(eq A (aplus g (asucc g a) 
18909 h) (asucc g (aplus g a h)))))
18910 \def
18911  \lambda (g: G).(\lambda (h: nat).(\lambda (a: A).(eq_ind_r A (aplus g a 
18912 (plus (S O) h)) (\lambda (a0: A).(eq A a0 (asucc g (aplus g a h)))) 
18913 (refl_equal A (asucc g (aplus g a h))) (aplus g (aplus g a (S O)) h) 
18914 (aplus_assoc g a (S O) h)))).
18915
18916 theorem aplus_sort_O_S_simpl:
18917  \forall (g: G).(\forall (n: nat).(\forall (k: nat).(eq A (aplus g (ASort O 
18918 n) (S k)) (aplus g (ASort O (next g n)) k))))
18919 \def
18920  \lambda (g: G).(\lambda (n: nat).(\lambda (k: nat).(eq_ind A (aplus g (asucc 
18921 g (ASort O n)) k) (\lambda (a: A).(eq A a (aplus g (ASort O (next g n)) k))) 
18922 (refl_equal A (aplus g (ASort O (next g n)) k)) (asucc g (aplus g (ASort O n) 
18923 k)) (aplus_asucc g k (ASort O n))))).
18924
18925 theorem aplus_sort_S_S_simpl:
18926  \forall (g: G).(\forall (n: nat).(\forall (h: nat).(\forall (k: nat).(eq A 
18927 (aplus g (ASort (S h) n) (S k)) (aplus g (ASort h n) k)))))
18928 \def
18929  \lambda (g: G).(\lambda (n: nat).(\lambda (h: nat).(\lambda (k: nat).(eq_ind 
18930 A (aplus g (asucc g (ASort (S h) n)) k) (\lambda (a: A).(eq A a (aplus g 
18931 (ASort h n) k))) (refl_equal A (aplus g (ASort h n) k)) (asucc g (aplus g 
18932 (ASort (S h) n) k)) (aplus_asucc g k (ASort (S h) n)))))).
18933
18934 theorem asucc_repl:
18935  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g a1 a2) \to (leq g 
18936 (asucc g a1) (asucc g a2)))))
18937 \def
18938  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (H: (leq g a1 
18939 a2)).(leq_ind g (\lambda (a: A).(\lambda (a0: A).(leq g (asucc g a) (asucc g 
18940 a0)))) (\lambda (h1: nat).(\lambda (h2: nat).(\lambda (n1: nat).(\lambda (n2: 
18941 nat).(\lambda (k: nat).(\lambda (H0: (eq A (aplus g (ASort h1 n1) k) (aplus g 
18942 (ASort h2 n2) k))).((match h1 return (\lambda (n: nat).((eq A (aplus g (ASort 
18943 n n1) k) (aplus g (ASort h2 n2) k)) \to (leq g (match n with [O \Rightarrow 
18944 (ASort O (next g n1)) | (S h) \Rightarrow (ASort h n1)]) (match h2 with [O 
18945 \Rightarrow (ASort O (next g n2)) | (S h) \Rightarrow (ASort h n2)])))) with 
18946 [O \Rightarrow (\lambda (H1: (eq A (aplus g (ASort O n1) k) (aplus g (ASort 
18947 h2 n2) k))).((match h2 return (\lambda (n: nat).((eq A (aplus g (ASort O n1) 
18948 k) (aplus g (ASort n n2) k)) \to (leq g (ASort O (next g n1)) (match n with 
18949 [O \Rightarrow (ASort O (next g n2)) | (S h) \Rightarrow (ASort h n2)])))) 
18950 with [O \Rightarrow (\lambda (H2: (eq A (aplus g (ASort O n1) k) (aplus g 
18951 (ASort O n2) k))).(leq_sort g O O (next g n1) (next g n2) k (eq_ind A (aplus 
18952 g (ASort O n1) (S k)) (\lambda (a: A).(eq A a (aplus g (ASort O (next g n2)) 
18953 k))) (eq_ind A (aplus g (ASort O n2) (S k)) (\lambda (a: A).(eq A (aplus g 
18954 (ASort O n1) (S k)) a)) (eq_ind_r A (aplus g (ASort O n2) k) (\lambda (a: 
18955 A).(eq A (asucc g a) (asucc g (aplus g (ASort O n2) k)))) (refl_equal A 
18956 (asucc g (aplus g (ASort O n2) k))) (aplus g (ASort O n1) k) H2) (aplus g 
18957 (ASort O (next g n2)) k) (aplus_sort_O_S_simpl g n2 k)) (aplus g (ASort O 
18958 (next g n1)) k) (aplus_sort_O_S_simpl g n1 k)))) | (S n) \Rightarrow (\lambda 
18959 (H2: (eq A (aplus g (ASort O n1) k) (aplus g (ASort (S n) n2) k))).(leq_sort 
18960 g O n (next g n1) n2 k (eq_ind A (aplus g (ASort O n1) (S k)) (\lambda (a: 
18961 A).(eq A a (aplus g (ASort n n2) k))) (eq_ind A (aplus g (ASort (S n) n2) (S 
18962 k)) (\lambda (a: A).(eq A (aplus g (ASort O n1) (S k)) a)) (eq_ind_r A (aplus 
18963 g (ASort (S n) n2) k) (\lambda (a: A).(eq A (asucc g a) (asucc g (aplus g 
18964 (ASort (S n) n2) k)))) (refl_equal A (asucc g (aplus g (ASort (S n) n2) k))) 
18965 (aplus g (ASort O n1) k) H2) (aplus g (ASort n n2) k) (aplus_sort_S_S_simpl g 
18966 n2 n k)) (aplus g (ASort O (next g n1)) k) (aplus_sort_O_S_simpl g n1 k))))]) 
18967 H1)) | (S n) \Rightarrow (\lambda (H1: (eq A (aplus g (ASort (S n) n1) k) 
18968 (aplus g (ASort h2 n2) k))).((match h2 return (\lambda (n0: nat).((eq A 
18969 (aplus g (ASort (S n) n1) k) (aplus g (ASort n0 n2) k)) \to (leq g (ASort n 
18970 n1) (match n0 with [O \Rightarrow (ASort O (next g n2)) | (S h) \Rightarrow 
18971 (ASort h n2)])))) with [O \Rightarrow (\lambda (H2: (eq A (aplus g (ASort (S 
18972 n) n1) k) (aplus g (ASort O n2) k))).(leq_sort g n O n1 (next g n2) k (eq_ind 
18973 A (aplus g (ASort O n2) (S k)) (\lambda (a: A).(eq A (aplus g (ASort n n1) k) 
18974 a)) (eq_ind A (aplus g (ASort (S n) n1) (S k)) (\lambda (a: A).(eq A a (aplus 
18975 g (ASort O n2) (S k)))) (eq_ind_r A (aplus g (ASort O n2) k) (\lambda (a: 
18976 A).(eq A (asucc g a) (asucc g (aplus g (ASort O n2) k)))) (refl_equal A 
18977 (asucc g (aplus g (ASort O n2) k))) (aplus g (ASort (S n) n1) k) H2) (aplus g 
18978 (ASort n n1) k) (aplus_sort_S_S_simpl g n1 n k)) (aplus g (ASort O (next g 
18979 n2)) k) (aplus_sort_O_S_simpl g n2 k)))) | (S n0) \Rightarrow (\lambda (H2: 
18980 (eq A (aplus g (ASort (S n) n1) k) (aplus g (ASort (S n0) n2) k))).(leq_sort 
18981 g n n0 n1 n2 k (eq_ind A (aplus g (ASort (S n) n1) (S k)) (\lambda (a: A).(eq 
18982 A a (aplus g (ASort n0 n2) k))) (eq_ind A (aplus g (ASort (S n0) n2) (S k)) 
18983 (\lambda (a: A).(eq A (aplus g (ASort (S n) n1) (S k)) a)) (eq_ind_r A (aplus 
18984 g (ASort (S n0) n2) k) (\lambda (a: A).(eq A (asucc g a) (asucc g (aplus g 
18985 (ASort (S n0) n2) k)))) (refl_equal A (asucc g (aplus g (ASort (S n0) n2) 
18986 k))) (aplus g (ASort (S n) n1) k) H2) (aplus g (ASort n0 n2) k) 
18987 (aplus_sort_S_S_simpl g n2 n0 k)) (aplus g (ASort n n1) k) 
18988 (aplus_sort_S_S_simpl g n1 n k))))]) H1))]) H0))))))) (\lambda (a3: 
18989 A).(\lambda (a4: A).(\lambda (H0: (leq g a3 a4)).(\lambda (_: (leq g (asucc g 
18990 a3) (asucc g a4))).(\lambda (a5: A).(\lambda (a6: A).(\lambda (_: (leq g a5 
18991 a6)).(\lambda (H3: (leq g (asucc g a5) (asucc g a6))).(leq_head g a3 a4 H0 
18992 (asucc g a5) (asucc g a6) H3))))))))) a1 a2 H)))).
18993
18994 theorem asucc_inj:
18995  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g (asucc g a1) (asucc 
18996 g a2)) \to (leq g a1 a2))))
18997 \def
18998  \lambda (g: G).(\lambda (a1: A).(A_ind (\lambda (a: A).(\forall (a2: 
18999 A).((leq g (asucc g a) (asucc g a2)) \to (leq g a a2)))) (\lambda (n: 
19000 nat).(\lambda (n0: nat).(\lambda (a2: A).(A_ind (\lambda (a: A).((leq g 
19001 (asucc g (ASort n n0)) (asucc g a)) \to (leq g (ASort n n0) a))) (\lambda 
19002 (n1: nat).(\lambda (n2: nat).(\lambda (H: (leq g (asucc g (ASort n n0)) 
19003 (asucc g (ASort n1 n2)))).((match n return (\lambda (n3: nat).((leq g (asucc 
19004 g (ASort n3 n0)) (asucc g (ASort n1 n2))) \to (leq g (ASort n3 n0) (ASort n1 
19005 n2)))) with [O \Rightarrow (\lambda (H0: (leq g (asucc g (ASort O n0)) (asucc 
19006 g (ASort n1 n2)))).((match n1 return (\lambda (n3: nat).((leq g (asucc g 
19007 (ASort O n0)) (asucc g (ASort n3 n2))) \to (leq g (ASort O n0) (ASort n3 
19008 n2)))) with [O \Rightarrow (\lambda (H1: (leq g (asucc g (ASort O n0)) (asucc 
19009 g (ASort O n2)))).(let H2 \def (match H1 return (\lambda (a: A).(\lambda (a0: 
19010 A).(\lambda (_: (leq ? a a0)).((eq A a (ASort O (next g n0))) \to ((eq A a0 
19011 (ASort O (next g n2))) \to (leq g (ASort O n0) (ASort O n2))))))) with 
19012 [(leq_sort h1 h2 n1 n3 k H0) \Rightarrow (\lambda (H1: (eq A (ASort h1 n1) 
19013 (ASort O (next g n0)))).(\lambda (H2: (eq A (ASort h2 n3) (ASort O (next g 
19014 n2)))).((let H3 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda 
19015 (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow n1])) 
19016 (ASort h1 n1) (ASort O (next g n0)) H1) in ((let H4 \def (f_equal A nat 
19017 (\lambda (e: A).(match e return (\lambda (_: A).nat) with [(ASort n _) 
19018 \Rightarrow n | (AHead _ _) \Rightarrow h1])) (ASort h1 n1) (ASort O (next g 
19019 n0)) H1) in (eq_ind nat O (\lambda (n: nat).((eq nat n1 (next g n0)) \to ((eq 
19020 A (ASort h2 n3) (ASort O (next g n2))) \to ((eq A (aplus g (ASort n n1) k) 
19021 (aplus g (ASort h2 n3) k)) \to (leq g (ASort O n0) (ASort O n2)))))) (\lambda 
19022 (H5: (eq nat n1 (next g n0))).(eq_ind nat (next g n0) (\lambda (n: nat).((eq 
19023 A (ASort h2 n3) (ASort O (next g n2))) \to ((eq A (aplus g (ASort O n) k) 
19024 (aplus g (ASort h2 n3) k)) \to (leq g (ASort O n0) (ASort O n2))))) (\lambda 
19025 (H6: (eq A (ASort h2 n3) (ASort O (next g n2)))).(let H7 \def (f_equal A nat 
19026 (\lambda (e: A).(match e return (\lambda (_: A).nat) with [(ASort _ n) 
19027 \Rightarrow n | (AHead _ _) \Rightarrow n3])) (ASort h2 n3) (ASort O (next g 
19028 n2)) H6) in ((let H8 \def (f_equal A nat (\lambda (e: A).(match e return 
19029 (\lambda (_: A).nat) with [(ASort n _) \Rightarrow n | (AHead _ _) 
19030 \Rightarrow h2])) (ASort h2 n3) (ASort O (next g n2)) H6) in (eq_ind nat O 
19031 (\lambda (n: nat).((eq nat n3 (next g n2)) \to ((eq A (aplus g (ASort O (next 
19032 g n0)) k) (aplus g (ASort n n3) k)) \to (leq g (ASort O n0) (ASort O n2))))) 
19033 (\lambda (H9: (eq nat n3 (next g n2))).(eq_ind nat (next g n2) (\lambda (n: 
19034 nat).((eq A (aplus g (ASort O (next g n0)) k) (aplus g (ASort O n) k)) \to 
19035 (leq g (ASort O n0) (ASort O n2)))) (\lambda (H10: (eq A (aplus g (ASort O 
19036 (next g n0)) k) (aplus g (ASort O (next g n2)) k))).(let H \def (eq_ind_r A 
19037 (aplus g (ASort O (next g n0)) k) (\lambda (a: A).(eq A a (aplus g (ASort O 
19038 (next g n2)) k))) H10 (aplus g (ASort O n0) (S k)) (aplus_sort_O_S_simpl g n0 
19039 k)) in (let H11 \def (eq_ind_r A (aplus g (ASort O (next g n2)) k) (\lambda 
19040 (a: A).(eq A (aplus g (ASort O n0) (S k)) a)) H (aplus g (ASort O n2) (S k)) 
19041 (aplus_sort_O_S_simpl g n2 k)) in (leq_sort g O O n0 n2 (S k) H11)))) n3 
19042 (sym_eq nat n3 (next g n2) H9))) h2 (sym_eq nat h2 O H8))) H7))) n1 (sym_eq 
19043 nat n1 (next g n0) H5))) h1 (sym_eq nat h1 O H4))) H3)) H2 H0))) | (leq_head 
19044 a1 a2 H0 a3 a4 H1) \Rightarrow (\lambda (H2: (eq A (AHead a1 a3) (ASort O 
19045 (next g n0)))).(\lambda (H3: (eq A (AHead a2 a4) (ASort O (next g 
19046 n2)))).((let H4 \def (eq_ind A (AHead a1 a3) (\lambda (e: A).(match e return 
19047 (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False | (AHead _ _) 
19048 \Rightarrow True])) I (ASort O (next g n0)) H2) in (False_ind ((eq A (AHead 
19049 a2 a4) (ASort O (next g n2))) \to ((leq g a1 a2) \to ((leq g a3 a4) \to (leq 
19050 g (ASort O n0) (ASort O n2))))) H4)) H3 H0 H1)))]) in (H2 (refl_equal A 
19051 (ASort O (next g n0))) (refl_equal A (ASort O (next g n2)))))) | (S n3) 
19052 \Rightarrow (\lambda (H1: (leq g (asucc g (ASort O n0)) (asucc g (ASort (S 
19053 n3) n2)))).(let H2 \def (match H1 return (\lambda (a: A).(\lambda (a0: 
19054 A).(\lambda (_: (leq ? a a0)).((eq A a (ASort O (next g n0))) \to ((eq A a0 
19055 (ASort n3 n2)) \to (leq g (ASort O n0) (ASort (S n3) n2))))))) with 
19056 [(leq_sort h1 h2 n1 n3 k H0) \Rightarrow (\lambda (H1: (eq A (ASort h1 n1) 
19057 (ASort O (next g n0)))).(\lambda (H2: (eq A (ASort h2 n3) (ASort n3 
19058 n2))).((let H3 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda 
19059 (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow n1])) 
19060 (ASort h1 n1) (ASort O (next g n0)) H1) in ((let H4 \def (f_equal A nat 
19061 (\lambda (e: A).(match e return (\lambda (_: A).nat) with [(ASort n _) 
19062 \Rightarrow n | (AHead _ _) \Rightarrow h1])) (ASort h1 n1) (ASort O (next g 
19063 n0)) H1) in (eq_ind nat O (\lambda (n: nat).((eq nat n1 (next g n0)) \to ((eq 
19064 A (ASort h2 n3) (ASort n3 n2)) \to ((eq A (aplus g (ASort n n1) k) (aplus g 
19065 (ASort h2 n3) k)) \to (leq g (ASort O n0) (ASort (S n3) n2)))))) (\lambda 
19066 (H5: (eq nat n1 (next g n0))).(eq_ind nat (next g n0) (\lambda (n: nat).((eq 
19067 A (ASort h2 n3) (ASort n3 n2)) \to ((eq A (aplus g (ASort O n) k) (aplus g 
19068 (ASort h2 n3) k)) \to (leq g (ASort O n0) (ASort (S n3) n2))))) (\lambda (H6: 
19069 (eq A (ASort h2 n3) (ASort n3 n2))).(let H7 \def (f_equal A nat (\lambda (e: 
19070 A).(match e return (\lambda (_: A).nat) with [(ASort _ n) \Rightarrow n | 
19071 (AHead _ _) \Rightarrow n3])) (ASort h2 n3) (ASort n3 n2) H6) in ((let H8 
19072 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda (_: A).nat) with 
19073 [(ASort n _) \Rightarrow n | (AHead _ _) \Rightarrow h2])) (ASort h2 n3) 
19074 (ASort n3 n2) H6) in (eq_ind nat n3 (\lambda (n: nat).((eq nat n3 n2) \to 
19075 ((eq A (aplus g (ASort O (next g n0)) k) (aplus g (ASort n n3) k)) \to (leq g 
19076 (ASort O n0) (ASort (S n3) n2))))) (\lambda (H9: (eq nat n3 n2)).(eq_ind nat 
19077 n2 (\lambda (n: nat).((eq A (aplus g (ASort O (next g n0)) k) (aplus g (ASort 
19078 n3 n) k)) \to (leq g (ASort O n0) (ASort (S n3) n2)))) (\lambda (H10: (eq A 
19079 (aplus g (ASort O (next g n0)) k) (aplus g (ASort n3 n2) k))).(let H \def 
19080 (eq_ind_r A (aplus g (ASort O (next g n0)) k) (\lambda (a: A).(eq A a (aplus 
19081 g (ASort n3 n2) k))) H10 (aplus g (ASort O n0) (S k)) (aplus_sort_O_S_simpl g 
19082 n0 k)) in (let H11 \def (eq_ind_r A (aplus g (ASort n3 n2) k) (\lambda (a: 
19083 A).(eq A (aplus g (ASort O n0) (S k)) a)) H (aplus g (ASort (S n3) n2) (S k)) 
19084 (aplus_sort_S_S_simpl g n2 n3 k)) in (leq_sort g O (S n3) n0 n2 (S k) H11)))) 
19085 n3 (sym_eq nat n3 n2 H9))) h2 (sym_eq nat h2 n3 H8))) H7))) n1 (sym_eq nat n1 
19086 (next g n0) H5))) h1 (sym_eq nat h1 O H4))) H3)) H2 H0))) | (leq_head a1 a2 
19087 H0 a3 a4 H1) \Rightarrow (\lambda (H2: (eq A (AHead a1 a3) (ASort O (next g 
19088 n0)))).(\lambda (H3: (eq A (AHead a2 a4) (ASort n3 n2))).((let H4 \def 
19089 (eq_ind A (AHead a1 a3) (\lambda (e: A).(match e return (\lambda (_: A).Prop) 
19090 with [(ASort _ _) \Rightarrow False | (AHead _ _) \Rightarrow True])) I 
19091 (ASort O (next g n0)) H2) in (False_ind ((eq A (AHead a2 a4) (ASort n3 n2)) 
19092 \to ((leq g a1 a2) \to ((leq g a3 a4) \to (leq g (ASort O n0) (ASort (S n3) 
19093 n2))))) H4)) H3 H0 H1)))]) in (H2 (refl_equal A (ASort O (next g n0))) 
19094 (refl_equal A (ASort n3 n2)))))]) H0)) | (S n3) \Rightarrow (\lambda (H0: 
19095 (leq g (asucc g (ASort (S n3) n0)) (asucc g (ASort n1 n2)))).((match n1 
19096 return (\lambda (n4: nat).((leq g (asucc g (ASort (S n3) n0)) (asucc g (ASort 
19097 n4 n2))) \to (leq g (ASort (S n3) n0) (ASort n4 n2)))) with [O \Rightarrow 
19098 (\lambda (H1: (leq g (asucc g (ASort (S n3) n0)) (asucc g (ASort O 
19099 n2)))).(let H2 \def (match H1 return (\lambda (a: A).(\lambda (a0: 
19100 A).(\lambda (_: (leq ? a a0)).((eq A a (ASort n3 n0)) \to ((eq A a0 (ASort O 
19101 (next g n2))) \to (leq g (ASort (S n3) n0) (ASort O n2))))))) with [(leq_sort 
19102 h1 h2 n1 n3 k H0) \Rightarrow (\lambda (H1: (eq A (ASort h1 n1) (ASort n3 
19103 n0))).(\lambda (H2: (eq A (ASort h2 n3) (ASort O (next g n2)))).((let H3 \def 
19104 (f_equal A nat (\lambda (e: A).(match e return (\lambda (_: A).nat) with 
19105 [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow n1])) (ASort h1 n1) 
19106 (ASort n3 n0) H1) in ((let H4 \def (f_equal A nat (\lambda (e: A).(match e 
19107 return (\lambda (_: A).nat) with [(ASort n _) \Rightarrow n | (AHead _ _) 
19108 \Rightarrow h1])) (ASort h1 n1) (ASort n3 n0) H1) in (eq_ind nat n3 (\lambda 
19109 (n: nat).((eq nat n1 n0) \to ((eq A (ASort h2 n3) (ASort O (next g n2))) \to 
19110 ((eq A (aplus g (ASort n n1) k) (aplus g (ASort h2 n3) k)) \to (leq g (ASort 
19111 (S n3) n0) (ASort O n2)))))) (\lambda (H5: (eq nat n1 n0)).(eq_ind nat n0 
19112 (\lambda (n: nat).((eq A (ASort h2 n3) (ASort O (next g n2))) \to ((eq A 
19113 (aplus g (ASort n3 n) k) (aplus g (ASort h2 n3) k)) \to (leq g (ASort (S n3) 
19114 n0) (ASort O n2))))) (\lambda (H6: (eq A (ASort h2 n3) (ASort O (next g 
19115 n2)))).(let H7 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda 
19116 (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow n3])) 
19117 (ASort h2 n3) (ASort O (next g n2)) H6) in ((let H8 \def (f_equal A nat 
19118 (\lambda (e: A).(match e return (\lambda (_: A).nat) with [(ASort n _) 
19119 \Rightarrow n | (AHead _ _) \Rightarrow h2])) (ASort h2 n3) (ASort O (next g 
19120 n2)) H6) in (eq_ind nat O (\lambda (n: nat).((eq nat n3 (next g n2)) \to ((eq 
19121 A (aplus g (ASort n3 n0) k) (aplus g (ASort n n3) k)) \to (leq g (ASort (S 
19122 n3) n0) (ASort O n2))))) (\lambda (H9: (eq nat n3 (next g n2))).(eq_ind nat 
19123 (next g n2) (\lambda (n: nat).((eq A (aplus g (ASort n3 n0) k) (aplus g 
19124 (ASort O n) k)) \to (leq g (ASort (S n3) n0) (ASort O n2)))) (\lambda (H10: 
19125 (eq A (aplus g (ASort n3 n0) k) (aplus g (ASort O (next g n2)) k))).(let H 
19126 \def (eq_ind_r A (aplus g (ASort n3 n0) k) (\lambda (a: A).(eq A a (aplus g 
19127 (ASort O (next g n2)) k))) H10 (aplus g (ASort (S n3) n0) (S k)) 
19128 (aplus_sort_S_S_simpl g n0 n3 k)) in (let H11 \def (eq_ind_r A (aplus g 
19129 (ASort O (next g n2)) k) (\lambda (a: A).(eq A (aplus g (ASort (S n3) n0) (S 
19130 k)) a)) H (aplus g (ASort O n2) (S k)) (aplus_sort_O_S_simpl g n2 k)) in 
19131 (leq_sort g (S n3) O n0 n2 (S k) H11)))) n3 (sym_eq nat n3 (next g n2) H9))) 
19132 h2 (sym_eq nat h2 O H8))) H7))) n1 (sym_eq nat n1 n0 H5))) h1 (sym_eq nat h1 
19133 n3 H4))) H3)) H2 H0))) | (leq_head a1 a2 H0 a3 a4 H1) \Rightarrow (\lambda 
19134 (H2: (eq A (AHead a1 a3) (ASort n3 n0))).(\lambda (H3: (eq A (AHead a2 a4) 
19135 (ASort O (next g n2)))).((let H4 \def (eq_ind A (AHead a1 a3) (\lambda (e: 
19136 A).(match e return (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False 
19137 | (AHead _ _) \Rightarrow True])) I (ASort n3 n0) H2) in (False_ind ((eq A 
19138 (AHead a2 a4) (ASort O (next g n2))) \to ((leq g a1 a2) \to ((leq g a3 a4) 
19139 \to (leq g (ASort (S n3) n0) (ASort O n2))))) H4)) H3 H0 H1)))]) in (H2 
19140 (refl_equal A (ASort n3 n0)) (refl_equal A (ASort O (next g n2)))))) | (S n4) 
19141 \Rightarrow (\lambda (H1: (leq g (asucc g (ASort (S n3) n0)) (asucc g (ASort 
19142 (S n4) n2)))).(let H2 \def (match H1 return (\lambda (a: A).(\lambda (a0: 
19143 A).(\lambda (_: (leq ? a a0)).((eq A a (ASort n3 n0)) \to ((eq A a0 (ASort n4 
19144 n2)) \to (leq g (ASort (S n3) n0) (ASort (S n4) n2))))))) with [(leq_sort h1 
19145 h2 n3 n4 k H0) \Rightarrow (\lambda (H1: (eq A (ASort h1 n3) (ASort n3 
19146 n0))).(\lambda (H2: (eq A (ASort h2 n4) (ASort n4 n2))).((let H3 \def 
19147 (f_equal A nat (\lambda (e: A).(match e return (\lambda (_: A).nat) with 
19148 [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow n3])) (ASort h1 n3) 
19149 (ASort n3 n0) H1) in ((let H4 \def (f_equal A nat (\lambda (e: A).(match e 
19150 return (\lambda (_: A).nat) with [(ASort n _) \Rightarrow n | (AHead _ _) 
19151 \Rightarrow h1])) (ASort h1 n3) (ASort n3 n0) H1) in (eq_ind nat n3 (\lambda 
19152 (n: nat).((eq nat n3 n0) \to ((eq A (ASort h2 n4) (ASort n4 n2)) \to ((eq A 
19153 (aplus g (ASort n n3) k) (aplus g (ASort h2 n4) k)) \to (leq g (ASort (S n3) 
19154 n0) (ASort (S n4) n2)))))) (\lambda (H5: (eq nat n3 n0)).(eq_ind nat n0 
19155 (\lambda (n: nat).((eq A (ASort h2 n4) (ASort n4 n2)) \to ((eq A (aplus g 
19156 (ASort n3 n) k) (aplus g (ASort h2 n4) k)) \to (leq g (ASort (S n3) n0) 
19157 (ASort (S n4) n2))))) (\lambda (H6: (eq A (ASort h2 n4) (ASort n4 n2))).(let 
19158 H7 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda (_: A).nat) 
19159 with [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow n4])) (ASort h2 n4) 
19160 (ASort n4 n2) H6) in ((let H8 \def (f_equal A nat (\lambda (e: A).(match e 
19161 return (\lambda (_: A).nat) with [(ASort n _) \Rightarrow n | (AHead _ _) 
19162 \Rightarrow h2])) (ASort h2 n4) (ASort n4 n2) H6) in (eq_ind nat n4 (\lambda 
19163 (n: nat).((eq nat n4 n2) \to ((eq A (aplus g (ASort n3 n0) k) (aplus g (ASort 
19164 n n4) k)) \to (leq g (ASort (S n3) n0) (ASort (S n4) n2))))) (\lambda (H9: 
19165 (eq nat n4 n2)).(eq_ind nat n2 (\lambda (n: nat).((eq A (aplus g (ASort n3 
19166 n0) k) (aplus g (ASort n4 n) k)) \to (leq g (ASort (S n3) n0) (ASort (S n4) 
19167 n2)))) (\lambda (H10: (eq A (aplus g (ASort n3 n0) k) (aplus g (ASort n4 n2) 
19168 k))).(let H \def (eq_ind_r A (aplus g (ASort n3 n0) k) (\lambda (a: A).(eq A 
19169 a (aplus g (ASort n4 n2) k))) H10 (aplus g (ASort (S n3) n0) (S k)) 
19170 (aplus_sort_S_S_simpl g n0 n3 k)) in (let H11 \def (eq_ind_r A (aplus g 
19171 (ASort n4 n2) k) (\lambda (a: A).(eq A (aplus g (ASort (S n3) n0) (S k)) a)) 
19172 H (aplus g (ASort (S n4) n2) (S k)) (aplus_sort_S_S_simpl g n2 n4 k)) in 
19173 (leq_sort g (S n3) (S n4) n0 n2 (S k) H11)))) n4 (sym_eq nat n4 n2 H9))) h2 
19174 (sym_eq nat h2 n4 H8))) H7))) n3 (sym_eq nat n3 n0 H5))) h1 (sym_eq nat h1 n3 
19175 H4))) H3)) H2 H0))) | (leq_head a1 a2 H0 a3 a4 H1) \Rightarrow (\lambda (H2: 
19176 (eq A (AHead a1 a3) (ASort n3 n0))).(\lambda (H3: (eq A (AHead a2 a4) (ASort 
19177 n4 n2))).((let H4 \def (eq_ind A (AHead a1 a3) (\lambda (e: A).(match e 
19178 return (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False | (AHead _ 
19179 _) \Rightarrow True])) I (ASort n3 n0) H2) in (False_ind ((eq A (AHead a2 a4) 
19180 (ASort n4 n2)) \to ((leq g a1 a2) \to ((leq g a3 a4) \to (leq g (ASort (S n3) 
19181 n0) (ASort (S n4) n2))))) H4)) H3 H0 H1)))]) in (H2 (refl_equal A (ASort n3 
19182 n0)) (refl_equal A (ASort n4 n2)))))]) H0))]) H)))) (\lambda (a: A).(\lambda 
19183 (H: (((leq g (asucc g (ASort n n0)) (asucc g a)) \to (leq g (ASort n n0) 
19184 a)))).(\lambda (a0: A).(\lambda (H0: (((leq g (asucc g (ASort n n0)) (asucc g 
19185 a0)) \to (leq g (ASort n n0) a0)))).(\lambda (H1: (leq g (asucc g (ASort n 
19186 n0)) (asucc g (AHead a a0)))).((match n return (\lambda (n1: nat).((((leq g 
19187 (asucc g (ASort n1 n0)) (asucc g a)) \to (leq g (ASort n1 n0) a))) \to 
19188 ((((leq g (asucc g (ASort n1 n0)) (asucc g a0)) \to (leq g (ASort n1 n0) 
19189 a0))) \to ((leq g (asucc g (ASort n1 n0)) (asucc g (AHead a a0))) \to (leq g 
19190 (ASort n1 n0) (AHead a a0)))))) with [O \Rightarrow (\lambda (_: (((leq g 
19191 (asucc g (ASort O n0)) (asucc g a)) \to (leq g (ASort O n0) a)))).(\lambda 
19192 (_: (((leq g (asucc g (ASort O n0)) (asucc g a0)) \to (leq g (ASort O n0) 
19193 a0)))).(\lambda (H4: (leq g (asucc g (ASort O n0)) (asucc g (AHead a 
19194 a0)))).(let H5 \def (match H4 return (\lambda (a1: A).(\lambda (a2: 
19195 A).(\lambda (_: (leq ? a1 a2)).((eq A a1 (ASort O (next g n0))) \to ((eq A a2 
19196 (AHead a (asucc g a0))) \to (leq g (ASort O n0) (AHead a a0))))))) with 
19197 [(leq_sort h1 h2 n1 n2 k H2) \Rightarrow (\lambda (H3: (eq A (ASort h1 n1) 
19198 (ASort O (next g n0)))).(\lambda (H4: (eq A (ASort h2 n2) (AHead a (asucc g 
19199 a0)))).((let H5 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda 
19200 (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow n1])) 
19201 (ASort h1 n1) (ASort O (next g n0)) H3) in ((let H6 \def (f_equal A nat 
19202 (\lambda (e: A).(match e return (\lambda (_: A).nat) with [(ASort n _) 
19203 \Rightarrow n | (AHead _ _) \Rightarrow h1])) (ASort h1 n1) (ASort O (next g 
19204 n0)) H3) in (eq_ind nat O (\lambda (n: nat).((eq nat n1 (next g n0)) \to ((eq 
19205 A (ASort h2 n2) (AHead a (asucc g a0))) \to ((eq A (aplus g (ASort n n1) k) 
19206 (aplus g (ASort h2 n2) k)) \to (leq g (ASort O n0) (AHead a a0)))))) (\lambda 
19207 (H7: (eq nat n1 (next g n0))).(eq_ind nat (next g n0) (\lambda (n: nat).((eq 
19208 A (ASort h2 n2) (AHead a (asucc g a0))) \to ((eq A (aplus g (ASort O n) k) 
19209 (aplus g (ASort h2 n2) k)) \to (leq g (ASort O n0) (AHead a a0))))) (\lambda 
19210 (H8: (eq A (ASort h2 n2) (AHead a (asucc g a0)))).(let H9 \def (eq_ind A 
19211 (ASort h2 n2) (\lambda (e: A).(match e return (\lambda (_: A).Prop) with 
19212 [(ASort _ _) \Rightarrow True | (AHead _ _) \Rightarrow False])) I (AHead a 
19213 (asucc g a0)) H8) in (False_ind ((eq A (aplus g (ASort O (next g n0)) k) 
19214 (aplus g (ASort h2 n2) k)) \to (leq g (ASort O n0) (AHead a a0))) H9))) n1 
19215 (sym_eq nat n1 (next g n0) H7))) h1 (sym_eq nat h1 O H6))) H5)) H4 H2))) | 
19216 (leq_head a1 a2 H2 a3 a4 H3) \Rightarrow (\lambda (H4: (eq A (AHead a1 a3) 
19217 (ASort O (next g n0)))).(\lambda (H5: (eq A (AHead a2 a4) (AHead a (asucc g 
19218 a0)))).((let H6 \def (eq_ind A (AHead a1 a3) (\lambda (e: A).(match e return 
19219 (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False | (AHead _ _) 
19220 \Rightarrow True])) I (ASort O (next g n0)) H4) in (False_ind ((eq A (AHead 
19221 a2 a4) (AHead a (asucc g a0))) \to ((leq g a1 a2) \to ((leq g a3 a4) \to (leq 
19222 g (ASort O n0) (AHead a a0))))) H6)) H5 H2 H3)))]) in (H5 (refl_equal A 
19223 (ASort O (next g n0))) (refl_equal A (AHead a (asucc g a0)))))))) | (S n1) 
19224 \Rightarrow (\lambda (_: (((leq g (asucc g (ASort (S n1) n0)) (asucc g a)) 
19225 \to (leq g (ASort (S n1) n0) a)))).(\lambda (_: (((leq g (asucc g (ASort (S 
19226 n1) n0)) (asucc g a0)) \to (leq g (ASort (S n1) n0) a0)))).(\lambda (H4: (leq 
19227 g (asucc g (ASort (S n1) n0)) (asucc g (AHead a a0)))).(let H5 \def (match H4 
19228 return (\lambda (a1: A).(\lambda (a2: A).(\lambda (_: (leq ? a1 a2)).((eq A 
19229 a1 (ASort n1 n0)) \to ((eq A a2 (AHead a (asucc g a0))) \to (leq g (ASort (S 
19230 n1) n0) (AHead a a0))))))) with [(leq_sort h1 h2 n1 n2 k H2) \Rightarrow 
19231 (\lambda (H3: (eq A (ASort h1 n1) (ASort n1 n0))).(\lambda (H4: (eq A (ASort 
19232 h2 n2) (AHead a (asucc g a0)))).((let H5 \def (f_equal A nat (\lambda (e: 
19233 A).(match e return (\lambda (_: A).nat) with [(ASort _ n) \Rightarrow n | 
19234 (AHead _ _) \Rightarrow n1])) (ASort h1 n1) (ASort n1 n0) H3) in ((let H6 
19235 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda (_: A).nat) with 
19236 [(ASort n _) \Rightarrow n | (AHead _ _) \Rightarrow h1])) (ASort h1 n1) 
19237 (ASort n1 n0) H3) in (eq_ind nat n1 (\lambda (n: nat).((eq nat n1 n0) \to 
19238 ((eq A (ASort h2 n2) (AHead a (asucc g a0))) \to ((eq A (aplus g (ASort n n1) 
19239 k) (aplus g (ASort h2 n2) k)) \to (leq g (ASort (S n1) n0) (AHead a a0)))))) 
19240 (\lambda (H7: (eq nat n1 n0)).(eq_ind nat n0 (\lambda (n: nat).((eq A (ASort 
19241 h2 n2) (AHead a (asucc g a0))) \to ((eq A (aplus g (ASort n1 n) k) (aplus g 
19242 (ASort h2 n2) k)) \to (leq g (ASort (S n1) n0) (AHead a a0))))) (\lambda (H8: 
19243 (eq A (ASort h2 n2) (AHead a (asucc g a0)))).(let H9 \def (eq_ind A (ASort h2 
19244 n2) (\lambda (e: A).(match e return (\lambda (_: A).Prop) with [(ASort _ _) 
19245 \Rightarrow True | (AHead _ _) \Rightarrow False])) I (AHead a (asucc g a0)) 
19246 H8) in (False_ind ((eq A (aplus g (ASort n1 n0) k) (aplus g (ASort h2 n2) k)) 
19247 \to (leq g (ASort (S n1) n0) (AHead a a0))) H9))) n1 (sym_eq nat n1 n0 H7))) 
19248 h1 (sym_eq nat h1 n1 H6))) H5)) H4 H2))) | (leq_head a1 a2 H2 a3 a4 H3) 
19249 \Rightarrow (\lambda (H4: (eq A (AHead a1 a3) (ASort n1 n0))).(\lambda (H5: 
19250 (eq A (AHead a2 a4) (AHead a (asucc g a0)))).((let H6 \def (eq_ind A (AHead 
19251 a1 a3) (\lambda (e: A).(match e return (\lambda (_: A).Prop) with [(ASort _ 
19252 _) \Rightarrow False | (AHead _ _) \Rightarrow True])) I (ASort n1 n0) H4) in 
19253 (False_ind ((eq A (AHead a2 a4) (AHead a (asucc g a0))) \to ((leq g a1 a2) 
19254 \to ((leq g a3 a4) \to (leq g (ASort (S n1) n0) (AHead a a0))))) H6)) H5 H2 
19255 H3)))]) in (H5 (refl_equal A (ASort n1 n0)) (refl_equal A (AHead a (asucc g 
19256 a0))))))))]) H H0 H1)))))) a2)))) (\lambda (a: A).(\lambda (_: ((\forall (a2: 
19257 A).((leq g (asucc g a) (asucc g a2)) \to (leq g a a2))))).(\lambda (a0: 
19258 A).(\lambda (H0: ((\forall (a2: A).((leq g (asucc g a0) (asucc g a2)) \to 
19259 (leq g a0 a2))))).(\lambda (a2: A).(A_ind (\lambda (a3: A).((leq g (asucc g 
19260 (AHead a a0)) (asucc g a3)) \to (leq g (AHead a a0) a3))) (\lambda (n: 
19261 nat).(\lambda (n0: nat).(\lambda (H1: (leq g (asucc g (AHead a a0)) (asucc g 
19262 (ASort n n0)))).((match n return (\lambda (n1: nat).((leq g (asucc g (AHead a 
19263 a0)) (asucc g (ASort n1 n0))) \to (leq g (AHead a a0) (ASort n1 n0)))) with 
19264 [O \Rightarrow (\lambda (H2: (leq g (asucc g (AHead a a0)) (asucc g (ASort O 
19265 n0)))).(let H3 \def (match H2 return (\lambda (a1: A).(\lambda (a2: 
19266 A).(\lambda (_: (leq ? a1 a2)).((eq A a1 (AHead a (asucc g a0))) \to ((eq A 
19267 a2 (ASort O (next g n0))) \to (leq g (AHead a a0) (ASort O n0))))))) with 
19268 [(leq_sort h1 h2 n1 n2 k H2) \Rightarrow (\lambda (H3: (eq A (ASort h1 n1) 
19269 (AHead a (asucc g a0)))).(\lambda (H4: (eq A (ASort h2 n2) (ASort O (next g 
19270 n0)))).((let H5 \def (eq_ind A (ASort h1 n1) (\lambda (e: A).(match e return 
19271 (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow True | (AHead _ _) 
19272 \Rightarrow False])) I (AHead a (asucc g a0)) H3) in (False_ind ((eq A (ASort 
19273 h2 n2) (ASort O (next g n0))) \to ((eq A (aplus g (ASort h1 n1) k) (aplus g 
19274 (ASort h2 n2) k)) \to (leq g (AHead a a0) (ASort O n0)))) H5)) H4 H2))) | 
19275 (leq_head a1 a2 H2 a3 a4 H3) \Rightarrow (\lambda (H4: (eq A (AHead a1 a3) 
19276 (AHead a (asucc g a0)))).(\lambda (H5: (eq A (AHead a2 a4) (ASort O (next g 
19277 n0)))).((let H6 \def (f_equal A A (\lambda (e: A).(match e return (\lambda 
19278 (_: A).A) with [(ASort _ _) \Rightarrow a3 | (AHead _ a) \Rightarrow a])) 
19279 (AHead a1 a3) (AHead a (asucc g a0)) H4) in ((let H7 \def (f_equal A A 
19280 (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) 
19281 \Rightarrow a1 | (AHead a _) \Rightarrow a])) (AHead a1 a3) (AHead a (asucc g 
19282 a0)) H4) in (eq_ind A a (\lambda (a5: A).((eq A a3 (asucc g a0)) \to ((eq A 
19283 (AHead a2 a4) (ASort O (next g n0))) \to ((leq g a5 a2) \to ((leq g a3 a4) 
19284 \to (leq g (AHead a a0) (ASort O n0))))))) (\lambda (H8: (eq A a3 (asucc g 
19285 a0))).(eq_ind A (asucc g a0) (\lambda (a5: A).((eq A (AHead a2 a4) (ASort O 
19286 (next g n0))) \to ((leq g a a2) \to ((leq g a5 a4) \to (leq g (AHead a a0) 
19287 (ASort O n0)))))) (\lambda (H9: (eq A (AHead a2 a4) (ASort O (next g 
19288 n0)))).(let H10 \def (eq_ind A (AHead a2 a4) (\lambda (e: A).(match e return 
19289 (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False | (AHead _ _) 
19290 \Rightarrow True])) I (ASort O (next g n0)) H9) in (False_ind ((leq g a a2) 
19291 \to ((leq g (asucc g a0) a4) \to (leq g (AHead a a0) (ASort O n0)))) H10))) 
19292 a3 (sym_eq A a3 (asucc g a0) H8))) a1 (sym_eq A a1 a H7))) H6)) H5 H2 H3)))]) 
19293 in (H3 (refl_equal A (AHead a (asucc g a0))) (refl_equal A (ASort O (next g 
19294 n0)))))) | (S n1) \Rightarrow (\lambda (H2: (leq g (asucc g (AHead a a0)) 
19295 (asucc g (ASort (S n1) n0)))).(let H3 \def (match H2 return (\lambda (a1: 
19296 A).(\lambda (a2: A).(\lambda (_: (leq ? a1 a2)).((eq A a1 (AHead a (asucc g 
19297 a0))) \to ((eq A a2 (ASort n1 n0)) \to (leq g (AHead a a0) (ASort (S n1) 
19298 n0))))))) with [(leq_sort h1 h2 n1 n2 k H2) \Rightarrow (\lambda (H3: (eq A 
19299 (ASort h1 n1) (AHead a (asucc g a0)))).(\lambda (H4: (eq A (ASort h2 n2) 
19300 (ASort n1 n0))).((let H5 \def (eq_ind A (ASort h1 n1) (\lambda (e: A).(match 
19301 e return (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow True | (AHead _ 
19302 _) \Rightarrow False])) I (AHead a (asucc g a0)) H3) in (False_ind ((eq A 
19303 (ASort h2 n2) (ASort n1 n0)) \to ((eq A (aplus g (ASort h1 n1) k) (aplus g 
19304 (ASort h2 n2) k)) \to (leq g (AHead a a0) (ASort (S n1) n0)))) H5)) H4 H2))) 
19305 | (leq_head a1 a2 H2 a3 a4 H3) \Rightarrow (\lambda (H4: (eq A (AHead a1 a3) 
19306 (AHead a (asucc g a0)))).(\lambda (H5: (eq A (AHead a2 a4) (ASort n1 
19307 n0))).((let H6 \def (f_equal A A (\lambda (e: A).(match e return (\lambda (_: 
19308 A).A) with [(ASort _ _) \Rightarrow a3 | (AHead _ a) \Rightarrow a])) (AHead 
19309 a1 a3) (AHead a (asucc g a0)) H4) in ((let H7 \def (f_equal A A (\lambda (e: 
19310 A).(match e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a1 | 
19311 (AHead a _) \Rightarrow a])) (AHead a1 a3) (AHead a (asucc g a0)) H4) in 
19312 (eq_ind A a (\lambda (a5: A).((eq A a3 (asucc g a0)) \to ((eq A (AHead a2 a4) 
19313 (ASort n1 n0)) \to ((leq g a5 a2) \to ((leq g a3 a4) \to (leq g (AHead a a0) 
19314 (ASort (S n1) n0))))))) (\lambda (H8: (eq A a3 (asucc g a0))).(eq_ind A 
19315 (asucc g a0) (\lambda (a5: A).((eq A (AHead a2 a4) (ASort n1 n0)) \to ((leq g 
19316 a a2) \to ((leq g a5 a4) \to (leq g (AHead a a0) (ASort (S n1) n0)))))) 
19317 (\lambda (H9: (eq A (AHead a2 a4) (ASort n1 n0))).(let H10 \def (eq_ind A 
19318 (AHead a2 a4) (\lambda (e: A).(match e return (\lambda (_: A).Prop) with 
19319 [(ASort _ _) \Rightarrow False | (AHead _ _) \Rightarrow True])) I (ASort n1 
19320 n0) H9) in (False_ind ((leq g a a2) \to ((leq g (asucc g a0) a4) \to (leq g 
19321 (AHead a a0) (ASort (S n1) n0)))) H10))) a3 (sym_eq A a3 (asucc g a0) H8))) 
19322 a1 (sym_eq A a1 a H7))) H6)) H5 H2 H3)))]) in (H3 (refl_equal A (AHead a 
19323 (asucc g a0))) (refl_equal A (ASort n1 n0)))))]) H1)))) (\lambda (a3: 
19324 A).(\lambda (_: (((leq g (asucc g (AHead a a0)) (asucc g a3)) \to (leq g 
19325 (AHead a a0) a3)))).(\lambda (a4: A).(\lambda (_: (((leq g (asucc g (AHead a 
19326 a0)) (asucc g a4)) \to (leq g (AHead a a0) a4)))).(\lambda (H3: (leq g (asucc 
19327 g (AHead a a0)) (asucc g (AHead a3 a4)))).(let H4 \def (match H3 return 
19328 (\lambda (a1: A).(\lambda (a2: A).(\lambda (_: (leq ? a1 a2)).((eq A a1 
19329 (AHead a (asucc g a0))) \to ((eq A a2 (AHead a3 (asucc g a4))) \to (leq g 
19330 (AHead a a0) (AHead a3 a4))))))) with [(leq_sort h1 h2 n1 n2 k H4) 
19331 \Rightarrow (\lambda (H5: (eq A (ASort h1 n1) (AHead a (asucc g 
19332 a0)))).(\lambda (H6: (eq A (ASort h2 n2) (AHead a3 (asucc g a4)))).((let H7 
19333 \def (eq_ind A (ASort h1 n1) (\lambda (e: A).(match e return (\lambda (_: 
19334 A).Prop) with [(ASort _ _) \Rightarrow True | (AHead _ _) \Rightarrow 
19335 False])) I (AHead a (asucc g a0)) H5) in (False_ind ((eq A (ASort h2 n2) 
19336 (AHead a3 (asucc g a4))) \to ((eq A (aplus g (ASort h1 n1) k) (aplus g (ASort 
19337 h2 n2) k)) \to (leq g (AHead a a0) (AHead a3 a4)))) H7)) H6 H4))) | (leq_head 
19338 a3 a4 H4 a5 a6 H5) \Rightarrow (\lambda (H6: (eq A (AHead a3 a5) (AHead a 
19339 (asucc g a0)))).(\lambda (H7: (eq A (AHead a4 a6) (AHead a3 (asucc g 
19340 a4)))).((let H8 \def (f_equal A A (\lambda (e: A).(match e return (\lambda 
19341 (_: A).A) with [(ASort _ _) \Rightarrow a5 | (AHead _ a) \Rightarrow a])) 
19342 (AHead a3 a5) (AHead a (asucc g a0)) H6) in ((let H9 \def (f_equal A A 
19343 (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) 
19344 \Rightarrow a3 | (AHead a _) \Rightarrow a])) (AHead a3 a5) (AHead a (asucc g 
19345 a0)) H6) in (eq_ind A a (\lambda (a1: A).((eq A a5 (asucc g a0)) \to ((eq A 
19346 (AHead a4 a6) (AHead a3 (asucc g a4))) \to ((leq g a1 a4) \to ((leq g a5 a6) 
19347 \to (leq g (AHead a a0) (AHead a3 a4))))))) (\lambda (H10: (eq A a5 (asucc g 
19348 a0))).(eq_ind A (asucc g a0) (\lambda (a1: A).((eq A (AHead a4 a6) (AHead a3 
19349 (asucc g a4))) \to ((leq g a a4) \to ((leq g a1 a6) \to (leq g (AHead a a0) 
19350 (AHead a3 a4)))))) (\lambda (H11: (eq A (AHead a4 a6) (AHead a3 (asucc g 
19351 a4)))).(let H12 \def (f_equal A A (\lambda (e: A).(match e return (\lambda 
19352 (_: A).A) with [(ASort _ _) \Rightarrow a6 | (AHead _ a) \Rightarrow a])) 
19353 (AHead a4 a6) (AHead a3 (asucc g a4)) H11) in ((let H13 \def (f_equal A A 
19354 (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) 
19355 \Rightarrow a4 | (AHead a _) \Rightarrow a])) (AHead a4 a6) (AHead a3 (asucc 
19356 g a4)) H11) in (eq_ind A a3 (\lambda (a1: A).((eq A a6 (asucc g a4)) \to 
19357 ((leq g a a1) \to ((leq g (asucc g a0) a6) \to (leq g (AHead a a0) (AHead a3 
19358 a4)))))) (\lambda (H14: (eq A a6 (asucc g a4))).(eq_ind A (asucc g a4) 
19359 (\lambda (a1: A).((leq g a a3) \to ((leq g (asucc g a0) a1) \to (leq g (AHead 
19360 a a0) (AHead a3 a4))))) (\lambda (H15: (leq g a a3)).(\lambda (H16: (leq g 
19361 (asucc g a0) (asucc g a4))).(leq_head g a a3 H15 a0 a4 (H0 a4 H16)))) a6 
19362 (sym_eq A a6 (asucc g a4) H14))) a4 (sym_eq A a4 a3 H13))) H12))) a5 (sym_eq 
19363 A a5 (asucc g a0) H10))) a3 (sym_eq A a3 a H9))) H8)) H7 H4 H5)))]) in (H4 
19364 (refl_equal A (AHead a (asucc g a0))) (refl_equal A (AHead a3 (asucc g 
19365 a4)))))))))) a2)))))) a1)).
19366
19367 theorem aplus_asort_O_simpl:
19368  \forall (g: G).(\forall (h: nat).(\forall (n: nat).(eq A (aplus g (ASort O 
19369 n) h) (ASort O (next_plus g n h)))))
19370 \def
19371  \lambda (g: G).(\lambda (h: nat).(nat_ind (\lambda (n: nat).(\forall (n0: 
19372 nat).(eq A (aplus g (ASort O n0) n) (ASort O (next_plus g n0 n))))) (\lambda 
19373 (n: nat).(refl_equal A (ASort O n))) (\lambda (n: nat).(\lambda (H: ((\forall 
19374 (n0: nat).(eq A (aplus g (ASort O n0) n) (ASort O (next_plus g n0 
19375 n)))))).(\lambda (n0: nat).(eq_ind A (aplus g (asucc g (ASort O n0)) n) 
19376 (\lambda (a: A).(eq A a (ASort O (next g (next_plus g n0 n))))) (eq_ind nat 
19377 (next_plus g (next g n0) n) (\lambda (n1: nat).(eq A (aplus g (ASort O (next 
19378 g n0)) n) (ASort O n1))) (H (next g n0)) (next g (next_plus g n0 n)) 
19379 (next_plus_next g n0 n)) (asucc g (aplus g (ASort O n0) n)) (aplus_asucc g n 
19380 (ASort O n0)))))) h)).
19381
19382 theorem aplus_asort_le_simpl:
19383  \forall (g: G).(\forall (h: nat).(\forall (k: nat).(\forall (n: nat).((le h 
19384 k) \to (eq A (aplus g (ASort k n) h) (ASort (minus k h) n))))))
19385 \def
19386  \lambda (g: G).(\lambda (h: nat).(nat_ind (\lambda (n: nat).(\forall (k: 
19387 nat).(\forall (n0: nat).((le n k) \to (eq A (aplus g (ASort k n0) n) (ASort 
19388 (minus k n) n0)))))) (\lambda (k: nat).(\lambda (n: nat).(\lambda (_: (le O 
19389 k)).(eq_ind nat k (\lambda (n0: nat).(eq A (ASort k n) (ASort n0 n))) 
19390 (refl_equal A (ASort k n)) (minus k O) (minus_n_O k))))) (\lambda (h0: 
19391 nat).(\lambda (H: ((\forall (k: nat).(\forall (n: nat).((le h0 k) \to (eq A 
19392 (aplus g (ASort k n) h0) (ASort (minus k h0) n))))))).(\lambda (k: 
19393 nat).(nat_ind (\lambda (n: nat).(\forall (n0: nat).((le (S h0) n) \to (eq A 
19394 (asucc g (aplus g (ASort n n0) h0)) (ASort (minus n (S h0)) n0))))) (\lambda 
19395 (n: nat).(\lambda (H0: (le (S h0) O)).(ex2_ind nat (\lambda (n0: nat).(eq nat 
19396 O (S n0))) (\lambda (n0: nat).(le h0 n0)) (eq A (asucc g (aplus g (ASort O n) 
19397 h0)) (ASort (minus O (S h0)) n)) (\lambda (x: nat).(\lambda (H1: (eq nat O (S 
19398 x))).(\lambda (_: (le h0 x)).(let H3 \def (eq_ind nat O (\lambda (ee: 
19399 nat).(match ee return (\lambda (_: nat).Prop) with [O \Rightarrow True | (S 
19400 _) \Rightarrow False])) I (S x) H1) in (False_ind (eq A (asucc g (aplus g 
19401 (ASort O n) h0)) (ASort (minus O (S h0)) n)) H3))))) (le_gen_S h0 O H0)))) 
19402 (\lambda (n: nat).(\lambda (_: ((\forall (n0: nat).((le (S h0) n) \to (eq A 
19403 (asucc g (aplus g (ASort n n0) h0)) (ASort (minus n (S h0)) n0)))))).(\lambda 
19404 (n0: nat).(\lambda (H1: (le (S h0) (S n))).(eq_ind A (aplus g (asucc g (ASort 
19405 (S n) n0)) h0) (\lambda (a: A).(eq A a (ASort (minus (S n) (S h0)) n0))) (H n 
19406 n0 (le_S_n h0 n H1)) (asucc g (aplus g (ASort (S n) n0) h0)) (aplus_asucc g 
19407 h0 (ASort (S n) n0))))))) k)))) h)).
19408
19409 theorem aplus_asort_simpl:
19410  \forall (g: G).(\forall (h: nat).(\forall (k: nat).(\forall (n: nat).(eq A 
19411 (aplus g (ASort k n) h) (ASort (minus k h) (next_plus g n (minus h k)))))))
19412 \def
19413  \lambda (g: G).(\lambda (h: nat).(\lambda (k: nat).(\lambda (n: 
19414 nat).(lt_le_e k h (eq A (aplus g (ASort k n) h) (ASort (minus k h) (next_plus 
19415 g n (minus h k)))) (\lambda (H: (lt k h)).(eq_ind_r nat (plus k (minus h k)) 
19416 (\lambda (n0: nat).(eq A (aplus g (ASort k n) n0) (ASort (minus k h) 
19417 (next_plus g n (minus h k))))) (eq_ind A (aplus g (aplus g (ASort k n) k) 
19418 (minus h k)) (\lambda (a: A).(eq A a (ASort (minus k h) (next_plus g n (minus 
19419 h k))))) (eq_ind_r A (ASort (minus k k) n) (\lambda (a: A).(eq A (aplus g a 
19420 (minus h k)) (ASort (minus k h) (next_plus g n (minus h k))))) (eq_ind nat O 
19421 (\lambda (n0: nat).(eq A (aplus g (ASort n0 n) (minus h k)) (ASort (minus k 
19422 h) (next_plus g n (minus h k))))) (eq_ind_r nat O (\lambda (n0: nat).(eq A 
19423 (aplus g (ASort O n) (minus h k)) (ASort n0 (next_plus g n (minus h k))))) 
19424 (aplus_asort_O_simpl g (minus h k) n) (minus k h) (O_minus k h (le_S_n k h 
19425 (le_S (S k) h H)))) (minus k k) (minus_n_n k)) (aplus g (ASort k n) k) 
19426 (aplus_asort_le_simpl g k k n (le_n k))) (aplus g (ASort k n) (plus k (minus 
19427 h k))) (aplus_assoc g (ASort k n) k (minus h k))) h (le_plus_minus k h 
19428 (le_S_n k h (le_S (S k) h H))))) (\lambda (H: (le h k)).(eq_ind_r A (ASort 
19429 (minus k h) n) (\lambda (a: A).(eq A a (ASort (minus k h) (next_plus g n 
19430 (minus h k))))) (eq_ind_r nat O (\lambda (n0: nat).(eq A (ASort (minus k h) 
19431 n) (ASort (minus k h) (next_plus g n n0)))) (refl_equal A (ASort (minus k h) 
19432 (next_plus g n O))) (minus h k) (O_minus h k H)) (aplus g (ASort k n) h) 
19433 (aplus_asort_le_simpl g h k n H))))))).
19434
19435 theorem aplus_ahead_simpl:
19436  \forall (g: G).(\forall (h: nat).(\forall (a1: A).(\forall (a2: A).(eq A 
19437 (aplus g (AHead a1 a2) h) (AHead a1 (aplus g a2 h))))))
19438 \def
19439  \lambda (g: G).(\lambda (h: nat).(nat_ind (\lambda (n: nat).(\forall (a1: 
19440 A).(\forall (a2: A).(eq A (aplus g (AHead a1 a2) n) (AHead a1 (aplus g a2 
19441 n)))))) (\lambda (a1: A).(\lambda (a2: A).(refl_equal A (AHead a1 a2)))) 
19442 (\lambda (n: nat).(\lambda (H: ((\forall (a1: A).(\forall (a2: A).(eq A 
19443 (aplus g (AHead a1 a2) n) (AHead a1 (aplus g a2 n))))))).(\lambda (a1: 
19444 A).(\lambda (a2: A).(eq_ind A (aplus g (asucc g (AHead a1 a2)) n) (\lambda 
19445 (a: A).(eq A a (AHead a1 (asucc g (aplus g a2 n))))) (eq_ind A (aplus g 
19446 (asucc g a2) n) (\lambda (a: A).(eq A (aplus g (asucc g (AHead a1 a2)) n) 
19447 (AHead a1 a))) (H a1 (asucc g a2)) (asucc g (aplus g a2 n)) (aplus_asucc g n 
19448 a2)) (asucc g (aplus g (AHead a1 a2) n)) (aplus_asucc g n (AHead a1 a2))))))) 
19449 h)).
19450
19451 theorem aplus_asucc_false:
19452  \forall (g: G).(\forall (a: A).(\forall (h: nat).((eq A (aplus g (asucc g a) 
19453 h) a) \to (\forall (P: Prop).P))))
19454 \def
19455  \lambda (g: G).(\lambda (a: A).(A_ind (\lambda (a0: A).(\forall (h: 
19456 nat).((eq A (aplus g (asucc g a0) h) a0) \to (\forall (P: Prop).P)))) 
19457 (\lambda (n: nat).(\lambda (n0: nat).(\lambda (h: nat).(\lambda (H: (eq A 
19458 (aplus g (match n with [O \Rightarrow (ASort O (next g n0)) | (S h) 
19459 \Rightarrow (ASort h n0)]) h) (ASort n n0))).(\lambda (P: Prop).((match n 
19460 return (\lambda (n1: nat).((eq A (aplus g (match n1 with [O \Rightarrow 
19461 (ASort O (next g n0)) | (S h) \Rightarrow (ASort h n0)]) h) (ASort n1 n0)) 
19462 \to P)) with [O \Rightarrow (\lambda (H0: (eq A (aplus g (ASort O (next g 
19463 n0)) h) (ASort O n0))).(let H1 \def (eq_ind A (aplus g (ASort O (next g n0)) 
19464 h) (\lambda (a: A).(eq A a (ASort O n0))) H0 (ASort (minus O h) (next_plus g 
19465 (next g n0) (minus h O))) (aplus_asort_simpl g h O (next g n0))) in (let H2 
19466 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda (_: A).nat) with 
19467 [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow ((let rec next_plus (g: 
19468 G) (n: nat) (i: nat) on i: nat \def (match i with [O \Rightarrow n | (S i0) 
19469 \Rightarrow (next g (next_plus g n i0))]) in next_plus) g (next g n0) (minus 
19470 h O))])) (ASort (minus O h) (next_plus g (next g n0) (minus h O))) (ASort O 
19471 n0) H1) in (let H3 \def (eq_ind_r nat (minus h O) (\lambda (n: nat).(eq nat 
19472 (next_plus g (next g n0) n) n0)) H2 h (minus_n_O h)) in (le_lt_false 
19473 (next_plus g (next g n0) h) n0 (eq_ind nat (next_plus g (next g n0) h) 
19474 (\lambda (n1: nat).(le (next_plus g (next g n0) h) n1)) (le_n (next_plus g 
19475 (next g n0) h)) n0 H3) (next_plus_lt g h n0) P))))) | (S n1) \Rightarrow 
19476 (\lambda (H0: (eq A (aplus g (ASort n1 n0) h) (ASort (S n1) n0))).(let H1 
19477 \def (eq_ind A (aplus g (ASort n1 n0) h) (\lambda (a: A).(eq A a (ASort (S 
19478 n1) n0))) H0 (ASort (minus n1 h) (next_plus g n0 (minus h n1))) 
19479 (aplus_asort_simpl g h n1 n0)) in (let H2 \def (f_equal A nat (\lambda (e: 
19480 A).(match e return (\lambda (_: A).nat) with [(ASort n _) \Rightarrow n | 
19481 (AHead _ _) \Rightarrow ((let rec minus (n: nat) on n: (nat \to nat) \def 
19482 (\lambda (m: nat).(match n with [O \Rightarrow O | (S k) \Rightarrow (match m 
19483 with [O \Rightarrow (S k) | (S l) \Rightarrow (minus k l)])])) in minus) n1 
19484 h)])) (ASort (minus n1 h) (next_plus g n0 (minus h n1))) (ASort (S n1) n0) 
19485 H1) in ((let H3 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda 
19486 (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow ((let 
19487 rec next_plus (g: G) (n: nat) (i: nat) on i: nat \def (match i with [O 
19488 \Rightarrow n | (S i0) \Rightarrow (next g (next_plus g n i0))]) in 
19489 next_plus) g n0 (minus h n1))])) (ASort (minus n1 h) (next_plus g n0 (minus h 
19490 n1))) (ASort (S n1) n0) H1) in (\lambda (H4: (eq nat (minus n1 h) (S 
19491 n1))).(le_Sx_x n1 (eq_ind nat (minus n1 h) (\lambda (n2: nat).(le n2 n1)) 
19492 (minus_le n1 h) (S n1) H4) P))) H2))))]) H)))))) (\lambda (a0: A).(\lambda 
19493 (_: ((\forall (h: nat).((eq A (aplus g (asucc g a0) h) a0) \to (\forall (P: 
19494 Prop).P))))).(\lambda (a1: A).(\lambda (H0: ((\forall (h: nat).((eq A (aplus 
19495 g (asucc g a1) h) a1) \to (\forall (P: Prop).P))))).(\lambda (h: 
19496 nat).(\lambda (H1: (eq A (aplus g (AHead a0 (asucc g a1)) h) (AHead a0 
19497 a1))).(\lambda (P: Prop).(let H2 \def (eq_ind A (aplus g (AHead a0 (asucc g 
19498 a1)) h) (\lambda (a: A).(eq A a (AHead a0 a1))) H1 (AHead a0 (aplus g (asucc 
19499 g a1) h)) (aplus_ahead_simpl g h a0 (asucc g a1))) in (let H3 \def (f_equal A 
19500 A (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) 
19501 \Rightarrow ((let rec aplus (g: G) (a: A) (n: nat) on n: A \def (match n with 
19502 [O \Rightarrow a | (S n0) \Rightarrow (asucc g (aplus g a n0))]) in aplus) g 
19503 (asucc g a1) h) | (AHead _ a) \Rightarrow a])) (AHead a0 (aplus g (asucc g 
19504 a1) h)) (AHead a0 a1) H2) in (H0 h H3 P)))))))))) a)).
19505
19506 theorem aplus_inj:
19507  \forall (g: G).(\forall (h1: nat).(\forall (h2: nat).(\forall (a: A).((eq A 
19508 (aplus g a h1) (aplus g a h2)) \to (eq nat h1 h2)))))
19509 \def
19510  \lambda (g: G).(\lambda (h1: nat).(nat_ind (\lambda (n: nat).(\forall (h2: 
19511 nat).(\forall (a: A).((eq A (aplus g a n) (aplus g a h2)) \to (eq nat n 
19512 h2))))) (\lambda (h2: nat).(nat_ind (\lambda (n: nat).(\forall (a: A).((eq A 
19513 (aplus g a O) (aplus g a n)) \to (eq nat O n)))) (\lambda (a: A).(\lambda (_: 
19514 (eq A a a)).(refl_equal nat O))) (\lambda (n: nat).(\lambda (_: ((\forall (a: 
19515 A).((eq A a (aplus g a n)) \to (eq nat O n))))).(\lambda (a: A).(\lambda (H0: 
19516 (eq A a (asucc g (aplus g a n)))).(let H1 \def (eq_ind_r A (asucc g (aplus g 
19517 a n)) (\lambda (a0: A).(eq A a a0)) H0 (aplus g (asucc g a) n) (aplus_asucc g 
19518 n a)) in (aplus_asucc_false g a n (sym_eq A a (aplus g (asucc g a) n) H1) (eq 
19519 nat O (S n)))))))) h2)) (\lambda (n: nat).(\lambda (H: ((\forall (h2: 
19520 nat).(\forall (a: A).((eq A (aplus g a n) (aplus g a h2)) \to (eq nat n 
19521 h2)))))).(\lambda (h2: nat).(nat_ind (\lambda (n0: nat).(\forall (a: A).((eq 
19522 A (aplus g a (S n)) (aplus g a n0)) \to (eq nat (S n) n0)))) (\lambda (a: 
19523 A).(\lambda (H0: (eq A (asucc g (aplus g a n)) a)).(let H1 \def (eq_ind_r A 
19524 (asucc g (aplus g a n)) (\lambda (a0: A).(eq A a0 a)) H0 (aplus g (asucc g a) 
19525 n) (aplus_asucc g n a)) in (aplus_asucc_false g a n H1 (eq nat (S n) O))))) 
19526 (\lambda (n0: nat).(\lambda (_: ((\forall (a: A).((eq A (asucc g (aplus g a 
19527 n)) (aplus g a n0)) \to (eq nat (S n) n0))))).(\lambda (a: A).(\lambda (H1: 
19528 (eq A (asucc g (aplus g a n)) (asucc g (aplus g a n0)))).(let H2 \def 
19529 (eq_ind_r A (asucc g (aplus g a n)) (\lambda (a0: A).(eq A a0 (asucc g (aplus 
19530 g a n0)))) H1 (aplus g (asucc g a) n) (aplus_asucc g n a)) in (let H3 \def 
19531 (eq_ind_r A (asucc g (aplus g a n0)) (\lambda (a0: A).(eq A (aplus g (asucc g 
19532 a) n) a0)) H2 (aplus g (asucc g a) n0) (aplus_asucc g n0 a)) in (f_equal nat 
19533 nat S n n0 (H n0 (asucc g a) H3)))))))) h2)))) h1)).
19534
19535 theorem ahead_inj_snd:
19536  \forall (g: G).(\forall (a1: A).(\forall (a2: A).(\forall (a3: A).(\forall 
19537 (a4: A).((leq g (AHead a1 a2) (AHead a3 a4)) \to (leq g a2 a4))))))
19538 \def
19539  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (a3: A).(\lambda 
19540 (a4: A).(\lambda (H: (leq g (AHead a1 a2) (AHead a3 a4))).(let H0 \def (match 
19541 H return (\lambda (a: A).(\lambda (a0: A).(\lambda (_: (leq ? a a0)).((eq A a 
19542 (AHead a1 a2)) \to ((eq A a0 (AHead a3 a4)) \to (leq g a2 a4)))))) with 
19543 [(leq_sort h1 h2 n1 n2 k H0) \Rightarrow (\lambda (H1: (eq A (ASort h1 n1) 
19544 (AHead a1 a2))).(\lambda (H2: (eq A (ASort h2 n2) (AHead a3 a4))).((let H3 
19545 \def (eq_ind A (ASort h1 n1) (\lambda (e: A).(match e return (\lambda (_: 
19546 A).Prop) with [(ASort _ _) \Rightarrow True | (AHead _ _) \Rightarrow 
19547 False])) I (AHead a1 a2) H1) in (False_ind ((eq A (ASort h2 n2) (AHead a3 
19548 a4)) \to ((eq A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) k)) \to (leq 
19549 g a2 a4))) H3)) H2 H0))) | (leq_head a0 a5 H0 a6 a7 H1) \Rightarrow (\lambda 
19550 (H2: (eq A (AHead a0 a6) (AHead a1 a2))).(\lambda (H3: (eq A (AHead a5 a7) 
19551 (AHead a3 a4))).((let H4 \def (f_equal A A (\lambda (e: A).(match e return 
19552 (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a6 | (AHead _ a) \Rightarrow 
19553 a])) (AHead a0 a6) (AHead a1 a2) H2) in ((let H5 \def (f_equal A A (\lambda 
19554 (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a0 | 
19555 (AHead a _) \Rightarrow a])) (AHead a0 a6) (AHead a1 a2) H2) in (eq_ind A a1 
19556 (\lambda (a: A).((eq A a6 a2) \to ((eq A (AHead a5 a7) (AHead a3 a4)) \to 
19557 ((leq g a a5) \to ((leq g a6 a7) \to (leq g a2 a4)))))) (\lambda (H6: (eq A 
19558 a6 a2)).(eq_ind A a2 (\lambda (a: A).((eq A (AHead a5 a7) (AHead a3 a4)) \to 
19559 ((leq g a1 a5) \to ((leq g a a7) \to (leq g a2 a4))))) (\lambda (H7: (eq A 
19560 (AHead a5 a7) (AHead a3 a4))).(let H8 \def (f_equal A A (\lambda (e: 
19561 A).(match e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a7 | 
19562 (AHead _ a) \Rightarrow a])) (AHead a5 a7) (AHead a3 a4) H7) in ((let H9 \def 
19563 (f_equal A A (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort 
19564 _ _) \Rightarrow a5 | (AHead a _) \Rightarrow a])) (AHead a5 a7) (AHead a3 
19565 a4) H7) in (eq_ind A a3 (\lambda (a: A).((eq A a7 a4) \to ((leq g a1 a) \to 
19566 ((leq g a2 a7) \to (leq g a2 a4))))) (\lambda (H10: (eq A a7 a4)).(eq_ind A 
19567 a4 (\lambda (a: A).((leq g a1 a3) \to ((leq g a2 a) \to (leq g a2 a4)))) 
19568 (\lambda (_: (leq g a1 a3)).(\lambda (H12: (leq g a2 a4)).H12)) a7 (sym_eq A 
19569 a7 a4 H10))) a5 (sym_eq A a5 a3 H9))) H8))) a6 (sym_eq A a6 a2 H6))) a0 
19570 (sym_eq A a0 a1 H5))) H4)) H3 H0 H1)))]) in (H0 (refl_equal A (AHead a1 a2)) 
19571 (refl_equal A (AHead a3 a4))))))))).
19572
19573 theorem leq_refl:
19574  \forall (g: G).(\forall (a: A).(leq g a a))
19575 \def
19576  \lambda (g: G).(\lambda (a: A).(A_ind (\lambda (a0: A).(leq g a0 a0)) 
19577 (\lambda (n: nat).(\lambda (n0: nat).(leq_sort g n n n0 n0 O (refl_equal A 
19578 (aplus g (ASort n n0) O))))) (\lambda (a0: A).(\lambda (H: (leq g a0 
19579 a0)).(\lambda (a1: A).(\lambda (H0: (leq g a1 a1)).(leq_head g a0 a0 H a1 a1 
19580 H0))))) a)).
19581
19582 theorem leq_eq:
19583  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((eq A a1 a2) \to (leq g a1 
19584 a2))))
19585 \def
19586  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (H: (eq A a1 
19587 a2)).(eq_ind_r A a2 (\lambda (a: A).(leq g a a2)) (leq_refl g a2) a1 H)))).
19588
19589 theorem leq_asucc:
19590  \forall (g: G).(\forall (a: A).(ex A (\lambda (a0: A).(leq g a (asucc g 
19591 a0)))))
19592 \def
19593  \lambda (g: G).(\lambda (a: A).(A_ind (\lambda (a0: A).(ex A (\lambda (a1: 
19594 A).(leq g a0 (asucc g a1))))) (\lambda (n: nat).(\lambda (n0: nat).(ex_intro 
19595 A (\lambda (a0: A).(leq g (ASort n n0) (asucc g a0))) (ASort (S n) n0) 
19596 (leq_refl g (ASort n n0))))) (\lambda (a0: A).(\lambda (_: (ex A (\lambda 
19597 (a1: A).(leq g a0 (asucc g a1))))).(\lambda (a1: A).(\lambda (H0: (ex A 
19598 (\lambda (a0: A).(leq g a1 (asucc g a0))))).(let H1 \def H0 in (ex_ind A 
19599 (\lambda (a2: A).(leq g a1 (asucc g a2))) (ex A (\lambda (a2: A).(leq g 
19600 (AHead a0 a1) (asucc g a2)))) (\lambda (x: A).(\lambda (H2: (leq g a1 (asucc 
19601 g x))).(ex_intro A (\lambda (a2: A).(leq g (AHead a0 a1) (asucc g a2))) 
19602 (AHead a0 x) (leq_head g a0 a0 (leq_refl g a0) a1 (asucc g x) H2)))) H1)))))) 
19603 a)).
19604
19605 theorem leq_sym:
19606  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g a1 a2) \to (leq g 
19607 a2 a1))))
19608 \def
19609  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (H: (leq g a1 
19610 a2)).(leq_ind g (\lambda (a: A).(\lambda (a0: A).(leq g a0 a))) (\lambda (h1: 
19611 nat).(\lambda (h2: nat).(\lambda (n1: nat).(\lambda (n2: nat).(\lambda (k: 
19612 nat).(\lambda (H0: (eq A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) 
19613 k))).(leq_sort g h2 h1 n2 n1 k (sym_eq A (aplus g (ASort h1 n1) k) (aplus g 
19614 (ASort h2 n2) k) H0)))))))) (\lambda (a3: A).(\lambda (a4: A).(\lambda (_: 
19615 (leq g a3 a4)).(\lambda (H1: (leq g a4 a3)).(\lambda (a5: A).(\lambda (a6: 
19616 A).(\lambda (_: (leq g a5 a6)).(\lambda (H3: (leq g a6 a5)).(leq_head g a4 a3 
19617 H1 a6 a5 H3))))))))) a1 a2 H)))).
19618
19619 theorem leq_trans:
19620  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g a1 a2) \to (\forall 
19621 (a3: A).((leq g a2 a3) \to (leq g a1 a3))))))
19622 \def
19623  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (H: (leq g a1 
19624 a2)).(leq_ind g (\lambda (a: A).(\lambda (a0: A).(\forall (a3: A).((leq g a0 
19625 a3) \to (leq g a a3))))) (\lambda (h1: nat).(\lambda (h2: nat).(\lambda (n1: 
19626 nat).(\lambda (n2: nat).(\lambda (k: nat).(\lambda (H0: (eq A (aplus g (ASort 
19627 h1 n1) k) (aplus g (ASort h2 n2) k))).(\lambda (a3: A).(\lambda (H1: (leq g 
19628 (ASort h2 n2) a3)).(let H2 \def (match H1 return (\lambda (a: A).(\lambda 
19629 (a0: A).(\lambda (_: (leq ? a a0)).((eq A a (ASort h2 n2)) \to ((eq A a0 a3) 
19630 \to (leq g (ASort h1 n1) a3)))))) with [(leq_sort h0 h3 n0 n3 k0 H1) 
19631 \Rightarrow (\lambda (H2: (eq A (ASort h0 n0) (ASort h2 n2))).(\lambda (H3: 
19632 (eq A (ASort h3 n3) a3)).((let H4 \def (f_equal A nat (\lambda (e: A).(match 
19633 e return (\lambda (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _) 
19634 \Rightarrow n0])) (ASort h0 n0) (ASort h2 n2) H2) in ((let H5 \def (f_equal A 
19635 nat (\lambda (e: A).(match e return (\lambda (_: A).nat) with [(ASort n _) 
19636 \Rightarrow n | (AHead _ _) \Rightarrow h0])) (ASort h0 n0) (ASort h2 n2) H2) 
19637 in (eq_ind nat h2 (\lambda (n: nat).((eq nat n0 n2) \to ((eq A (ASort h3 n3) 
19638 a3) \to ((eq A (aplus g (ASort n n0) k0) (aplus g (ASort h3 n3) k0)) \to (leq 
19639 g (ASort h1 n1) a3))))) (\lambda (H6: (eq nat n0 n2)).(eq_ind nat n2 (\lambda 
19640 (n: nat).((eq A (ASort h3 n3) a3) \to ((eq A (aplus g (ASort h2 n) k0) (aplus 
19641 g (ASort h3 n3) k0)) \to (leq g (ASort h1 n1) a3)))) (\lambda (H7: (eq A 
19642 (ASort h3 n3) a3)).(eq_ind A (ASort h3 n3) (\lambda (a: A).((eq A (aplus g 
19643 (ASort h2 n2) k0) (aplus g (ASort h3 n3) k0)) \to (leq g (ASort h1 n1) a))) 
19644 (\lambda (H8: (eq A (aplus g (ASort h2 n2) k0) (aplus g (ASort h3 n3) 
19645 k0))).(lt_le_e k k0 (leq g (ASort h1 n1) (ASort h3 n3)) (\lambda (H9: (lt k 
19646 k0)).(let H_y \def (aplus_reg_r g (ASort h1 n1) (ASort h2 n2) k k H0 (minus 
19647 k0 k)) in (let H10 \def (eq_ind_r nat (plus (minus k0 k) k) (\lambda (n: 
19648 nat).(eq A (aplus g (ASort h1 n1) n) (aplus g (ASort h2 n2) n))) H_y k0 
19649 (le_plus_minus_sym k k0 (le_S_n k k0 (le_S (S k) k0 H9)))) in (leq_sort g h1 
19650 h3 n1 n3 k0 (trans_eq A (aplus g (ASort h1 n1) k0) (aplus g (ASort h2 n2) k0) 
19651 (aplus g (ASort h3 n3) k0) H10 H8))))) (\lambda (H9: (le k0 k)).(let H_y \def 
19652 (aplus_reg_r g (ASort h2 n2) (ASort h3 n3) k0 k0 H8 (minus k k0)) in (let H10 
19653 \def (eq_ind_r nat (plus (minus k k0) k0) (\lambda (n: nat).(eq A (aplus g 
19654 (ASort h2 n2) n) (aplus g (ASort h3 n3) n))) H_y k (le_plus_minus_sym k0 k 
19655 H9)) in (leq_sort g h1 h3 n1 n3 k (trans_eq A (aplus g (ASort h1 n1) k) 
19656 (aplus g (ASort h2 n2) k) (aplus g (ASort h3 n3) k) H0 H10))))))) a3 H7)) n0 
19657 (sym_eq nat n0 n2 H6))) h0 (sym_eq nat h0 h2 H5))) H4)) H3 H1))) | (leq_head 
19658 a1 a2 H1 a0 a4 H2) \Rightarrow (\lambda (H3: (eq A (AHead a1 a0) (ASort h2 
19659 n2))).(\lambda (H4: (eq A (AHead a2 a4) a3)).((let H5 \def (eq_ind A (AHead 
19660 a1 a0) (\lambda (e: A).(match e return (\lambda (_: A).Prop) with [(ASort _ 
19661 _) \Rightarrow False | (AHead _ _) \Rightarrow True])) I (ASort h2 n2) H3) in 
19662 (False_ind ((eq A (AHead a2 a4) a3) \to ((leq g a1 a2) \to ((leq g a0 a4) \to 
19663 (leq g (ASort h1 n1) a3)))) H5)) H4 H1 H2)))]) in (H2 (refl_equal A (ASort h2 
19664 n2)) (refl_equal A a3))))))))))) (\lambda (a3: A).(\lambda (a4: A).(\lambda 
19665 (_: (leq g a3 a4)).(\lambda (H1: ((\forall (a5: A).((leq g a4 a5) \to (leq g 
19666 a3 a5))))).(\lambda (a5: A).(\lambda (a6: A).(\lambda (_: (leq g a5 
19667 a6)).(\lambda (H3: ((\forall (a3: A).((leq g a6 a3) \to (leq g a5 
19668 a3))))).(\lambda (a0: A).(\lambda (H4: (leq g (AHead a4 a6) a0)).(let H5 \def 
19669 (match H4 return (\lambda (a: A).(\lambda (a1: A).(\lambda (_: (leq ? a 
19670 a1)).((eq A a (AHead a4 a6)) \to ((eq A a1 a0) \to (leq g (AHead a3 a5) 
19671 a0)))))) with [(leq_sort h1 h2 n1 n2 k H4) \Rightarrow (\lambda (H5: (eq A 
19672 (ASort h1 n1) (AHead a4 a6))).(\lambda (H6: (eq A (ASort h2 n2) a0)).((let H7 
19673 \def (eq_ind A (ASort h1 n1) (\lambda (e: A).(match e return (\lambda (_: 
19674 A).Prop) with [(ASort _ _) \Rightarrow True | (AHead _ _) \Rightarrow 
19675 False])) I (AHead a4 a6) H5) in (False_ind ((eq A (ASort h2 n2) a0) \to ((eq 
19676 A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) k)) \to (leq g (AHead a3 
19677 a5) a0))) H7)) H6 H4))) | (leq_head a5 a6 H4 a7 a8 H5) \Rightarrow (\lambda 
19678 (H6: (eq A (AHead a5 a7) (AHead a4 a6))).(\lambda (H7: (eq A (AHead a6 a8) 
19679 a0)).((let H8 \def (f_equal A A (\lambda (e: A).(match e return (\lambda (_: 
19680 A).A) with [(ASort _ _) \Rightarrow a7 | (AHead _ a) \Rightarrow a])) (AHead 
19681 a5 a7) (AHead a4 a6) H6) in ((let H9 \def (f_equal A A (\lambda (e: A).(match 
19682 e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a5 | (AHead a _) 
19683 \Rightarrow a])) (AHead a5 a7) (AHead a4 a6) H6) in (eq_ind A a4 (\lambda (a: 
19684 A).((eq A a7 a6) \to ((eq A (AHead a6 a8) a0) \to ((leq g a a6) \to ((leq g 
19685 a7 a8) \to (leq g (AHead a3 a5) a0)))))) (\lambda (H10: (eq A a7 a6)).(eq_ind 
19686 A a6 (\lambda (a: A).((eq A (AHead a6 a8) a0) \to ((leq g a4 a6) \to ((leq g 
19687 a a8) \to (leq g (AHead a3 a5) a0))))) (\lambda (H11: (eq A (AHead a6 a8) 
19688 a0)).(eq_ind A (AHead a6 a8) (\lambda (a: A).((leq g a4 a6) \to ((leq g a6 
19689 a8) \to (leq g (AHead a3 a5) a)))) (\lambda (H12: (leq g a4 a6)).(\lambda 
19690 (H13: (leq g a6 a8)).(leq_head g a3 a6 (H1 a6 H12) a5 a8 (H3 a8 H13)))) a0 
19691 H11)) a7 (sym_eq A a7 a6 H10))) a5 (sym_eq A a5 a4 H9))) H8)) H7 H4 H5)))]) 
19692 in (H5 (refl_equal A (AHead a4 a6)) (refl_equal A a0))))))))))))) a1 a2 H)))).
19693
19694 theorem leq_ahead_false:
19695  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g (AHead a1 a2) a1) 
19696 \to (\forall (P: Prop).P))))
19697 \def
19698  \lambda (g: G).(\lambda (a1: A).(A_ind (\lambda (a: A).(\forall (a2: 
19699 A).((leq g (AHead a a2) a) \to (\forall (P: Prop).P)))) (\lambda (n: 
19700 nat).(\lambda (n0: nat).(\lambda (a2: A).(\lambda (H: (leq g (AHead (ASort n 
19701 n0) a2) (ASort n n0))).(\lambda (P: Prop).((match n return (\lambda (n1: 
19702 nat).((leq g (AHead (ASort n1 n0) a2) (ASort n1 n0)) \to P)) with [O 
19703 \Rightarrow (\lambda (H0: (leq g (AHead (ASort O n0) a2) (ASort O n0))).(let 
19704 H1 \def (match H0 return (\lambda (a: A).(\lambda (a0: A).(\lambda (_: (leq ? 
19705 a a0)).((eq A a (AHead (ASort O n0) a2)) \to ((eq A a0 (ASort O n0)) \to 
19706 P))))) with [(leq_sort h1 h2 n1 n2 k H0) \Rightarrow (\lambda (H1: (eq A 
19707 (ASort h1 n1) (AHead (ASort O n0) a2))).(\lambda (H2: (eq A (ASort h2 n2) 
19708 (ASort O n0))).((let H3 \def (eq_ind A (ASort h1 n1) (\lambda (e: A).(match e 
19709 return (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow True | (AHead _ _) 
19710 \Rightarrow False])) I (AHead (ASort O n0) a2) H1) in (False_ind ((eq A 
19711 (ASort h2 n2) (ASort O n0)) \to ((eq A (aplus g (ASort h1 n1) k) (aplus g 
19712 (ASort h2 n2) k)) \to P)) H3)) H2 H0))) | (leq_head a1 a0 H0 a3 a4 H1) 
19713 \Rightarrow (\lambda (H2: (eq A (AHead a1 a3) (AHead (ASort O n0) 
19714 a2))).(\lambda (H3: (eq A (AHead a0 a4) (ASort O n0))).((let H4 \def (f_equal 
19715 A A (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) 
19716 \Rightarrow a3 | (AHead _ a) \Rightarrow a])) (AHead a1 a3) (AHead (ASort O 
19717 n0) a2) H2) in ((let H5 \def (f_equal A A (\lambda (e: A).(match e return 
19718 (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a1 | (AHead a _) \Rightarrow 
19719 a])) (AHead a1 a3) (AHead (ASort O n0) a2) H2) in (eq_ind A (ASort O n0) 
19720 (\lambda (a: A).((eq A a3 a2) \to ((eq A (AHead a0 a4) (ASort O n0)) \to 
19721 ((leq g a a0) \to ((leq g a3 a4) \to P))))) (\lambda (H6: (eq A a3 
19722 a2)).(eq_ind A a2 (\lambda (a: A).((eq A (AHead a0 a4) (ASort O n0)) \to 
19723 ((leq g (ASort O n0) a0) \to ((leq g a a4) \to P)))) (\lambda (H7: (eq A 
19724 (AHead a0 a4) (ASort O n0))).(let H8 \def (eq_ind A (AHead a0 a4) (\lambda 
19725 (e: A).(match e return (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow 
19726 False | (AHead _ _) \Rightarrow True])) I (ASort O n0) H7) in (False_ind 
19727 ((leq g (ASort O n0) a0) \to ((leq g a2 a4) \to P)) H8))) a3 (sym_eq A a3 a2 
19728 H6))) a1 (sym_eq A a1 (ASort O n0) H5))) H4)) H3 H0 H1)))]) in (H1 
19729 (refl_equal A (AHead (ASort O n0) a2)) (refl_equal A (ASort O n0))))) | (S 
19730 n1) \Rightarrow (\lambda (H0: (leq g (AHead (ASort (S n1) n0) a2) (ASort (S 
19731 n1) n0))).(let H1 \def (match H0 return (\lambda (a: A).(\lambda (a0: 
19732 A).(\lambda (_: (leq ? a a0)).((eq A a (AHead (ASort (S n1) n0) a2)) \to ((eq 
19733 A a0 (ASort (S n1) n0)) \to P))))) with [(leq_sort h1 h2 n1 n2 k H0) 
19734 \Rightarrow (\lambda (H1: (eq A (ASort h1 n1) (AHead (ASort (S n1) n0) 
19735 a2))).(\lambda (H2: (eq A (ASort h2 n2) (ASort (S n1) n0))).((let H3 \def 
19736 (eq_ind A (ASort h1 n1) (\lambda (e: A).(match e return (\lambda (_: A).Prop) 
19737 with [(ASort _ _) \Rightarrow True | (AHead _ _) \Rightarrow False])) I 
19738 (AHead (ASort (S n1) n0) a2) H1) in (False_ind ((eq A (ASort h2 n2) (ASort (S 
19739 n1) n0)) \to ((eq A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) k)) \to 
19740 P)) H3)) H2 H0))) | (leq_head a1 a0 H0 a3 a4 H1) \Rightarrow (\lambda (H2: 
19741 (eq A (AHead a1 a3) (AHead (ASort (S n1) n0) a2))).(\lambda (H3: (eq A (AHead 
19742 a0 a4) (ASort (S n1) n0))).((let H4 \def (f_equal A A (\lambda (e: A).(match 
19743 e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a3 | (AHead _ a) 
19744 \Rightarrow a])) (AHead a1 a3) (AHead (ASort (S n1) n0) a2) H2) in ((let H5 
19745 \def (f_equal A A (\lambda (e: A).(match e return (\lambda (_: A).A) with 
19746 [(ASort _ _) \Rightarrow a1 | (AHead a _) \Rightarrow a])) (AHead a1 a3) 
19747 (AHead (ASort (S n1) n0) a2) H2) in (eq_ind A (ASort (S n1) n0) (\lambda (a: 
19748 A).((eq A a3 a2) \to ((eq A (AHead a0 a4) (ASort (S n1) n0)) \to ((leq g a 
19749 a0) \to ((leq g a3 a4) \to P))))) (\lambda (H6: (eq A a3 a2)).(eq_ind A a2 
19750 (\lambda (a: A).((eq A (AHead a0 a4) (ASort (S n1) n0)) \to ((leq g (ASort (S 
19751 n1) n0) a0) \to ((leq g a a4) \to P)))) (\lambda (H7: (eq A (AHead a0 a4) 
19752 (ASort (S n1) n0))).(let H8 \def (eq_ind A (AHead a0 a4) (\lambda (e: 
19753 A).(match e return (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False 
19754 | (AHead _ _) \Rightarrow True])) I (ASort (S n1) n0) H7) in (False_ind ((leq 
19755 g (ASort (S n1) n0) a0) \to ((leq g a2 a4) \to P)) H8))) a3 (sym_eq A a3 a2 
19756 H6))) a1 (sym_eq A a1 (ASort (S n1) n0) H5))) H4)) H3 H0 H1)))]) in (H1 
19757 (refl_equal A (AHead (ASort (S n1) n0) a2)) (refl_equal A (ASort (S n1) 
19758 n0)))))]) H)))))) (\lambda (a: A).(\lambda (H: ((\forall (a2: A).((leq g 
19759 (AHead a a2) a) \to (\forall (P: Prop).P))))).(\lambda (a0: A).(\lambda (_: 
19760 ((\forall (a2: A).((leq g (AHead a0 a2) a0) \to (\forall (P: 
19761 Prop).P))))).(\lambda (a2: A).(\lambda (H1: (leq g (AHead (AHead a a0) a2) 
19762 (AHead a a0))).(\lambda (P: Prop).(let H2 \def (match H1 return (\lambda (a1: 
19763 A).(\lambda (a3: A).(\lambda (_: (leq ? a1 a3)).((eq A a1 (AHead (AHead a a0) 
19764 a2)) \to ((eq A a3 (AHead a a0)) \to P))))) with [(leq_sort h1 h2 n1 n2 k H2) 
19765 \Rightarrow (\lambda (H3: (eq A (ASort h1 n1) (AHead (AHead a a0) 
19766 a2))).(\lambda (H4: (eq A (ASort h2 n2) (AHead a a0))).((let H5 \def (eq_ind 
19767 A (ASort h1 n1) (\lambda (e: A).(match e return (\lambda (_: A).Prop) with 
19768 [(ASort _ _) \Rightarrow True | (AHead _ _) \Rightarrow False])) I (AHead 
19769 (AHead a a0) a2) H3) in (False_ind ((eq A (ASort h2 n2) (AHead a a0)) \to 
19770 ((eq A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) k)) \to P)) H5)) H4 
19771 H2))) | (leq_head a1 a3 H2 a4 a5 H3) \Rightarrow (\lambda (H4: (eq A (AHead 
19772 a1 a4) (AHead (AHead a a0) a2))).(\lambda (H5: (eq A (AHead a3 a5) (AHead a 
19773 a0))).((let H6 \def (f_equal A A (\lambda (e: A).(match e return (\lambda (_: 
19774 A).A) with [(ASort _ _) \Rightarrow a4 | (AHead _ a) \Rightarrow a])) (AHead 
19775 a1 a4) (AHead (AHead a a0) a2) H4) in ((let H7 \def (f_equal A A (\lambda (e: 
19776 A).(match e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a1 | 
19777 (AHead a _) \Rightarrow a])) (AHead a1 a4) (AHead (AHead a a0) a2) H4) in 
19778 (eq_ind A (AHead a a0) (\lambda (a6: A).((eq A a4 a2) \to ((eq A (AHead a3 
19779 a5) (AHead a a0)) \to ((leq g a6 a3) \to ((leq g a4 a5) \to P))))) (\lambda 
19780 (H8: (eq A a4 a2)).(eq_ind A a2 (\lambda (a2: A).((eq A (AHead a3 a5) (AHead 
19781 a a0)) \to ((leq g (AHead a a0) a3) \to ((leq g a2 a5) \to P)))) (\lambda 
19782 (H9: (eq A (AHead a3 a5) (AHead a a0))).(let H10 \def (f_equal A A (\lambda 
19783 (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a5 | 
19784 (AHead _ a) \Rightarrow a])) (AHead a3 a5) (AHead a a0) H9) in ((let H11 \def 
19785 (f_equal A A (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort 
19786 _ _) \Rightarrow a3 | (AHead a _) \Rightarrow a])) (AHead a3 a5) (AHead a a0) 
19787 H9) in (eq_ind A a (\lambda (a6: A).((eq A a5 a0) \to ((leq g (AHead a a0) 
19788 a6) \to ((leq g a2 a5) \to P)))) (\lambda (H12: (eq A a5 a0)).(eq_ind A a0 
19789 (\lambda (a6: A).((leq g (AHead a a0) a) \to ((leq g a2 a6) \to P))) (\lambda 
19790 (H13: (leq g (AHead a a0) a)).(\lambda (_: (leq g a2 a0)).(H a0 H13 P))) a5 
19791 (sym_eq A a5 a0 H12))) a3 (sym_eq A a3 a H11))) H10))) a4 (sym_eq A a4 a2 
19792 H8))) a1 (sym_eq A a1 (AHead a a0) H7))) H6)) H5 H2 H3)))]) in (H2 
19793 (refl_equal A (AHead (AHead a a0) a2)) (refl_equal A (AHead a a0))))))))))) 
19794 a1)).
19795
19796 theorem leq_ahead_asucc_false:
19797  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g (AHead a1 a2) 
19798 (asucc g a1)) \to (\forall (P: Prop).P))))
19799 \def
19800  \lambda (g: G).(\lambda (a1: A).(A_ind (\lambda (a: A).(\forall (a2: 
19801 A).((leq g (AHead a a2) (asucc g a)) \to (\forall (P: Prop).P)))) (\lambda 
19802 (n: nat).(\lambda (n0: nat).(\lambda (a2: A).(\lambda (H: (leq g (AHead 
19803 (ASort n n0) a2) (match n with [O \Rightarrow (ASort O (next g n0)) | (S h) 
19804 \Rightarrow (ASort h n0)]))).(\lambda (P: Prop).((match n return (\lambda 
19805 (n1: nat).((leq g (AHead (ASort n1 n0) a2) (match n1 with [O \Rightarrow 
19806 (ASort O (next g n0)) | (S h) \Rightarrow (ASort h n0)])) \to P)) with [O 
19807 \Rightarrow (\lambda (H0: (leq g (AHead (ASort O n0) a2) (ASort O (next g 
19808 n0)))).(let H1 \def (match H0 return (\lambda (a: A).(\lambda (a0: 
19809 A).(\lambda (_: (leq ? a a0)).((eq A a (AHead (ASort O n0) a2)) \to ((eq A a0 
19810 (ASort O (next g n0))) \to P))))) with [(leq_sort h1 h2 n1 n2 k H0) 
19811 \Rightarrow (\lambda (H1: (eq A (ASort h1 n1) (AHead (ASort O n0) 
19812 a2))).(\lambda (H2: (eq A (ASort h2 n2) (ASort O (next g n0)))).((let H3 \def 
19813 (eq_ind A (ASort h1 n1) (\lambda (e: A).(match e return (\lambda (_: A).Prop) 
19814 with [(ASort _ _) \Rightarrow True | (AHead _ _) \Rightarrow False])) I 
19815 (AHead (ASort O n0) a2) H1) in (False_ind ((eq A (ASort h2 n2) (ASort O (next 
19816 g n0))) \to ((eq A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) k)) \to 
19817 P)) H3)) H2 H0))) | (leq_head a1 a0 H0 a3 a4 H1) \Rightarrow (\lambda (H2: 
19818 (eq A (AHead a1 a3) (AHead (ASort O n0) a2))).(\lambda (H3: (eq A (AHead a0 
19819 a4) (ASort O (next g n0)))).((let H4 \def (f_equal A A (\lambda (e: A).(match 
19820 e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a3 | (AHead _ a) 
19821 \Rightarrow a])) (AHead a1 a3) (AHead (ASort O n0) a2) H2) in ((let H5 \def 
19822 (f_equal A A (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort 
19823 _ _) \Rightarrow a1 | (AHead a _) \Rightarrow a])) (AHead a1 a3) (AHead 
19824 (ASort O n0) a2) H2) in (eq_ind A (ASort O n0) (\lambda (a: A).((eq A a3 a2) 
19825 \to ((eq A (AHead a0 a4) (ASort O (next g n0))) \to ((leq g a a0) \to ((leq g 
19826 a3 a4) \to P))))) (\lambda (H6: (eq A a3 a2)).(eq_ind A a2 (\lambda (a: 
19827 A).((eq A (AHead a0 a4) (ASort O (next g n0))) \to ((leq g (ASort O n0) a0) 
19828 \to ((leq g a a4) \to P)))) (\lambda (H7: (eq A (AHead a0 a4) (ASort O (next 
19829 g n0)))).(let H8 \def (eq_ind A (AHead a0 a4) (\lambda (e: A).(match e return 
19830 (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False | (AHead _ _) 
19831 \Rightarrow True])) I (ASort O (next g n0)) H7) in (False_ind ((leq g (ASort 
19832 O n0) a0) \to ((leq g a2 a4) \to P)) H8))) a3 (sym_eq A a3 a2 H6))) a1 
19833 (sym_eq A a1 (ASort O n0) H5))) H4)) H3 H0 H1)))]) in (H1 (refl_equal A 
19834 (AHead (ASort O n0) a2)) (refl_equal A (ASort O (next g n0)))))) | (S n1) 
19835 \Rightarrow (\lambda (H0: (leq g (AHead (ASort (S n1) n0) a2) (ASort n1 
19836 n0))).(let H1 \def (match H0 return (\lambda (a: A).(\lambda (a0: A).(\lambda 
19837 (_: (leq ? a a0)).((eq A a (AHead (ASort (S n1) n0) a2)) \to ((eq A a0 (ASort 
19838 n1 n0)) \to P))))) with [(leq_sort h1 h2 n1 n2 k H0) \Rightarrow (\lambda 
19839 (H1: (eq A (ASort h1 n1) (AHead (ASort (S n1) n0) a2))).(\lambda (H2: (eq A 
19840 (ASort h2 n2) (ASort n1 n0))).((let H3 \def (eq_ind A (ASort h1 n1) (\lambda 
19841 (e: A).(match e return (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow 
19842 True | (AHead _ _) \Rightarrow False])) I (AHead (ASort (S n1) n0) a2) H1) in 
19843 (False_ind ((eq A (ASort h2 n2) (ASort n1 n0)) \to ((eq A (aplus g (ASort h1 
19844 n1) k) (aplus g (ASort h2 n2) k)) \to P)) H3)) H2 H0))) | (leq_head a1 a0 H0 
19845 a3 a4 H1) \Rightarrow (\lambda (H2: (eq A (AHead a1 a3) (AHead (ASort (S n1) 
19846 n0) a2))).(\lambda (H3: (eq A (AHead a0 a4) (ASort n1 n0))).((let H4 \def 
19847 (f_equal A A (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort 
19848 _ _) \Rightarrow a3 | (AHead _ a) \Rightarrow a])) (AHead a1 a3) (AHead 
19849 (ASort (S n1) n0) a2) H2) in ((let H5 \def (f_equal A A (\lambda (e: 
19850 A).(match e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a1 | 
19851 (AHead a _) \Rightarrow a])) (AHead a1 a3) (AHead (ASort (S n1) n0) a2) H2) 
19852 in (eq_ind A (ASort (S n1) n0) (\lambda (a: A).((eq A a3 a2) \to ((eq A 
19853 (AHead a0 a4) (ASort n1 n0)) \to ((leq g a a0) \to ((leq g a3 a4) \to P))))) 
19854 (\lambda (H6: (eq A a3 a2)).(eq_ind A a2 (\lambda (a: A).((eq A (AHead a0 a4) 
19855 (ASort n1 n0)) \to ((leq g (ASort (S n1) n0) a0) \to ((leq g a a4) \to P)))) 
19856 (\lambda (H7: (eq A (AHead a0 a4) (ASort n1 n0))).(let H8 \def (eq_ind A 
19857 (AHead a0 a4) (\lambda (e: A).(match e return (\lambda (_: A).Prop) with 
19858 [(ASort _ _) \Rightarrow False | (AHead _ _) \Rightarrow True])) I (ASort n1 
19859 n0) H7) in (False_ind ((leq g (ASort (S n1) n0) a0) \to ((leq g a2 a4) \to 
19860 P)) H8))) a3 (sym_eq A a3 a2 H6))) a1 (sym_eq A a1 (ASort (S n1) n0) H5))) 
19861 H4)) H3 H0 H1)))]) in (H1 (refl_equal A (AHead (ASort (S n1) n0) a2)) 
19862 (refl_equal A (ASort n1 n0)))))]) H)))))) (\lambda (a: A).(\lambda (_: 
19863 ((\forall (a2: A).((leq g (AHead a a2) (asucc g a)) \to (\forall (P: 
19864 Prop).P))))).(\lambda (a0: A).(\lambda (_: ((\forall (a2: A).((leq g (AHead 
19865 a0 a2) (asucc g a0)) \to (\forall (P: Prop).P))))).(\lambda (a2: A).(\lambda 
19866 (H1: (leq g (AHead (AHead a a0) a2) (AHead a (asucc g a0)))).(\lambda (P: 
19867 Prop).(let H2 \def (match H1 return (\lambda (a1: A).(\lambda (a3: 
19868 A).(\lambda (_: (leq ? a1 a3)).((eq A a1 (AHead (AHead a a0) a2)) \to ((eq A 
19869 a3 (AHead a (asucc g a0))) \to P))))) with [(leq_sort h1 h2 n1 n2 k H2) 
19870 \Rightarrow (\lambda (H3: (eq A (ASort h1 n1) (AHead (AHead a a0) 
19871 a2))).(\lambda (H4: (eq A (ASort h2 n2) (AHead a (asucc g a0)))).((let H5 
19872 \def (eq_ind A (ASort h1 n1) (\lambda (e: A).(match e return (\lambda (_: 
19873 A).Prop) with [(ASort _ _) \Rightarrow True | (AHead _ _) \Rightarrow 
19874 False])) I (AHead (AHead a a0) a2) H3) in (False_ind ((eq A (ASort h2 n2) 
19875 (AHead a (asucc g a0))) \to ((eq A (aplus g (ASort h1 n1) k) (aplus g (ASort 
19876 h2 n2) k)) \to P)) H5)) H4 H2))) | (leq_head a1 a3 H2 a4 a5 H3) \Rightarrow 
19877 (\lambda (H4: (eq A (AHead a1 a4) (AHead (AHead a a0) a2))).(\lambda (H5: (eq 
19878 A (AHead a3 a5) (AHead a (asucc g a0)))).((let H6 \def (f_equal A A (\lambda 
19879 (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a4 | 
19880 (AHead _ a) \Rightarrow a])) (AHead a1 a4) (AHead (AHead a a0) a2) H4) in 
19881 ((let H7 \def (f_equal A A (\lambda (e: A).(match e return (\lambda (_: A).A) 
19882 with [(ASort _ _) \Rightarrow a1 | (AHead a _) \Rightarrow a])) (AHead a1 a4) 
19883 (AHead (AHead a a0) a2) H4) in (eq_ind A (AHead a a0) (\lambda (a6: A).((eq A 
19884 a4 a2) \to ((eq A (AHead a3 a5) (AHead a (asucc g a0))) \to ((leq g a6 a3) 
19885 \to ((leq g a4 a5) \to P))))) (\lambda (H8: (eq A a4 a2)).(eq_ind A a2 
19886 (\lambda (a2: A).((eq A (AHead a3 a5) (AHead a (asucc g a0))) \to ((leq g 
19887 (AHead a a0) a3) \to ((leq g a2 a5) \to P)))) (\lambda (H9: (eq A (AHead a3 
19888 a5) (AHead a (asucc g a0)))).(let H10 \def (f_equal A A (\lambda (e: 
19889 A).(match e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a5 | 
19890 (AHead _ a) \Rightarrow a])) (AHead a3 a5) (AHead a (asucc g a0)) H9) in 
19891 ((let H11 \def (f_equal A A (\lambda (e: A).(match e return (\lambda (_: 
19892 A).A) with [(ASort _ _) \Rightarrow a3 | (AHead a _) \Rightarrow a])) (AHead 
19893 a3 a5) (AHead a (asucc g a0)) H9) in (eq_ind A a (\lambda (a6: A).((eq A a5 
19894 (asucc g a0)) \to ((leq g (AHead a a0) a6) \to ((leq g a2 a5) \to P)))) 
19895 (\lambda (H12: (eq A a5 (asucc g a0))).(eq_ind A (asucc g a0) (\lambda (a6: 
19896 A).((leq g (AHead a a0) a) \to ((leq g a2 a6) \to P))) (\lambda (H13: (leq g 
19897 (AHead a a0) a)).(\lambda (_: (leq g a2 (asucc g a0))).(leq_ahead_false g a 
19898 a0 H13 P))) a5 (sym_eq A a5 (asucc g a0) H12))) a3 (sym_eq A a3 a H11))) 
19899 H10))) a4 (sym_eq A a4 a2 H8))) a1 (sym_eq A a1 (AHead a a0) H7))) H6)) H5 H2 
19900 H3)))]) in (H2 (refl_equal A (AHead (AHead a a0) a2)) (refl_equal A (AHead a 
19901 (asucc g a0)))))))))))) a1)).
19902
19903 theorem leq_asucc_false:
19904  \forall (g: G).(\forall (a: A).((leq g (asucc g a) a) \to (\forall (P: 
19905 Prop).P)))
19906 \def
19907  \lambda (g: G).(\lambda (a: A).(A_ind (\lambda (a0: A).((leq g (asucc g a0) 
19908 a0) \to (\forall (P: Prop).P))) (\lambda (n: nat).(\lambda (n0: nat).(\lambda 
19909 (H: (leq g (match n with [O \Rightarrow (ASort O (next g n0)) | (S h) 
19910 \Rightarrow (ASort h n0)]) (ASort n n0))).(\lambda (P: Prop).((match n return 
19911 (\lambda (n1: nat).((leq g (match n1 with [O \Rightarrow (ASort O (next g 
19912 n0)) | (S h) \Rightarrow (ASort h n0)]) (ASort n1 n0)) \to P)) with [O 
19913 \Rightarrow (\lambda (H0: (leq g (ASort O (next g n0)) (ASort O n0))).(let H1 
19914 \def (match H0 return (\lambda (a: A).(\lambda (a0: A).(\lambda (_: (leq ? a 
19915 a0)).((eq A a (ASort O (next g n0))) \to ((eq A a0 (ASort O n0)) \to P))))) 
19916 with [(leq_sort h1 h2 n1 n2 k H0) \Rightarrow (\lambda (H1: (eq A (ASort h1 
19917 n1) (ASort O (next g n0)))).(\lambda (H2: (eq A (ASort h2 n2) (ASort O 
19918 n0))).((let H3 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda 
19919 (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow n1])) 
19920 (ASort h1 n1) (ASort O (next g n0)) H1) in ((let H4 \def (f_equal A nat 
19921 (\lambda (e: A).(match e return (\lambda (_: A).nat) with [(ASort n _) 
19922 \Rightarrow n | (AHead _ _) \Rightarrow h1])) (ASort h1 n1) (ASort O (next g 
19923 n0)) H1) in (eq_ind nat O (\lambda (n: nat).((eq nat n1 (next g n0)) \to ((eq 
19924 A (ASort h2 n2) (ASort O n0)) \to ((eq A (aplus g (ASort n n1) k) (aplus g 
19925 (ASort h2 n2) k)) \to P)))) (\lambda (H5: (eq nat n1 (next g n0))).(eq_ind 
19926 nat (next g n0) (\lambda (n: nat).((eq A (ASort h2 n2) (ASort O n0)) \to ((eq 
19927 A (aplus g (ASort O n) k) (aplus g (ASort h2 n2) k)) \to P))) (\lambda (H6: 
19928 (eq A (ASort h2 n2) (ASort O n0))).(let H7 \def (f_equal A nat (\lambda (e: 
19929 A).(match e return (\lambda (_: A).nat) with [(ASort _ n) \Rightarrow n | 
19930 (AHead _ _) \Rightarrow n2])) (ASort h2 n2) (ASort O n0) H6) in ((let H8 \def 
19931 (f_equal A nat (\lambda (e: A).(match e return (\lambda (_: A).nat) with 
19932 [(ASort n _) \Rightarrow n | (AHead _ _) \Rightarrow h2])) (ASort h2 n2) 
19933 (ASort O n0) H6) in (eq_ind nat O (\lambda (n: nat).((eq nat n2 n0) \to ((eq 
19934 A (aplus g (ASort O (next g n0)) k) (aplus g (ASort n n2) k)) \to P))) 
19935 (\lambda (H9: (eq nat n2 n0)).(eq_ind nat n0 (\lambda (n: nat).((eq A (aplus 
19936 g (ASort O (next g n0)) k) (aplus g (ASort O n) k)) \to P)) (\lambda (H10: 
19937 (eq A (aplus g (ASort O (next g n0)) k) (aplus g (ASort O n0) k))).(let H 
19938 \def (eq_ind_r A (aplus g (ASort O (next g n0)) k) (\lambda (a: A).(eq A a 
19939 (aplus g (ASort O n0) k))) H10 (aplus g (ASort O n0) (S k)) 
19940 (aplus_sort_O_S_simpl g n0 k)) in (let H_y \def (aplus_inj g (S k) k (ASort O 
19941 n0) H) in (le_Sx_x k (eq_ind_r nat k (\lambda (n: nat).(le n k)) (le_n k) (S 
19942 k) H_y) P)))) n2 (sym_eq nat n2 n0 H9))) h2 (sym_eq nat h2 O H8))) H7))) n1 
19943 (sym_eq nat n1 (next g n0) H5))) h1 (sym_eq nat h1 O H4))) H3)) H2 H0))) | 
19944 (leq_head a1 a2 H0 a3 a4 H1) \Rightarrow (\lambda (H2: (eq A (AHead a1 a3) 
19945 (ASort O (next g n0)))).(\lambda (H3: (eq A (AHead a2 a4) (ASort O 
19946 n0))).((let H4 \def (eq_ind A (AHead a1 a3) (\lambda (e: A).(match e return 
19947 (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False | (AHead _ _) 
19948 \Rightarrow True])) I (ASort O (next g n0)) H2) in (False_ind ((eq A (AHead 
19949 a2 a4) (ASort O n0)) \to ((leq g a1 a2) \to ((leq g a3 a4) \to P))) H4)) H3 
19950 H0 H1)))]) in (H1 (refl_equal A (ASort O (next g n0))) (refl_equal A (ASort O 
19951 n0))))) | (S n1) \Rightarrow (\lambda (H0: (leq g (ASort n1 n0) (ASort (S n1) 
19952 n0))).(let H1 \def (match H0 return (\lambda (a: A).(\lambda (a0: A).(\lambda 
19953 (_: (leq ? a a0)).((eq A a (ASort n1 n0)) \to ((eq A a0 (ASort (S n1) n0)) 
19954 \to P))))) with [(leq_sort h1 h2 n1 n2 k H0) \Rightarrow (\lambda (H1: (eq A 
19955 (ASort h1 n1) (ASort n1 n0))).(\lambda (H2: (eq A (ASort h2 n2) (ASort (S n1) 
19956 n0))).((let H3 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda 
19957 (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow n1])) 
19958 (ASort h1 n1) (ASort n1 n0) H1) in ((let H4 \def (f_equal A nat (\lambda (e: 
19959 A).(match e return (\lambda (_: A).nat) with [(ASort n _) \Rightarrow n | 
19960 (AHead _ _) \Rightarrow h1])) (ASort h1 n1) (ASort n1 n0) H1) in (eq_ind nat 
19961 n1 (\lambda (n: nat).((eq nat n1 n0) \to ((eq A (ASort h2 n2) (ASort (S n1) 
19962 n0)) \to ((eq A (aplus g (ASort n n1) k) (aplus g (ASort h2 n2) k)) \to P)))) 
19963 (\lambda (H5: (eq nat n1 n0)).(eq_ind nat n0 (\lambda (n: nat).((eq A (ASort 
19964 h2 n2) (ASort (S n1) n0)) \to ((eq A (aplus g (ASort n1 n) k) (aplus g (ASort 
19965 h2 n2) k)) \to P))) (\lambda (H6: (eq A (ASort h2 n2) (ASort (S n1) 
19966 n0))).(let H7 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda 
19967 (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow n2])) 
19968 (ASort h2 n2) (ASort (S n1) n0) H6) in ((let H8 \def (f_equal A nat (\lambda 
19969 (e: A).(match e return (\lambda (_: A).nat) with [(ASort n _) \Rightarrow n | 
19970 (AHead _ _) \Rightarrow h2])) (ASort h2 n2) (ASort (S n1) n0) H6) in (eq_ind 
19971 nat (S n1) (\lambda (n: nat).((eq nat n2 n0) \to ((eq A (aplus g (ASort n1 
19972 n0) k) (aplus g (ASort n n2) k)) \to P))) (\lambda (H9: (eq nat n2 
19973 n0)).(eq_ind nat n0 (\lambda (n: nat).((eq A (aplus g (ASort n1 n0) k) (aplus 
19974 g (ASort (S n1) n) k)) \to P)) (\lambda (H10: (eq A (aplus g (ASort n1 n0) k) 
19975 (aplus g (ASort (S n1) n0) k))).(let H \def (eq_ind_r A (aplus g (ASort n1 
19976 n0) k) (\lambda (a: A).(eq A a (aplus g (ASort (S n1) n0) k))) H10 (aplus g 
19977 (ASort (S n1) n0) (S k)) (aplus_sort_S_S_simpl g n0 n1 k)) in (let H_y \def 
19978 (aplus_inj g (S k) k (ASort (S n1) n0) H) in (le_Sx_x k (eq_ind_r nat k 
19979 (\lambda (n: nat).(le n k)) (le_n k) (S k) H_y) P)))) n2 (sym_eq nat n2 n0 
19980 H9))) h2 (sym_eq nat h2 (S n1) H8))) H7))) n1 (sym_eq nat n1 n0 H5))) h1 
19981 (sym_eq nat h1 n1 H4))) H3)) H2 H0))) | (leq_head a1 a2 H0 a3 a4 H1) 
19982 \Rightarrow (\lambda (H2: (eq A (AHead a1 a3) (ASort n1 n0))).(\lambda (H3: 
19983 (eq A (AHead a2 a4) (ASort (S n1) n0))).((let H4 \def (eq_ind A (AHead a1 a3) 
19984 (\lambda (e: A).(match e return (\lambda (_: A).Prop) with [(ASort _ _) 
19985 \Rightarrow False | (AHead _ _) \Rightarrow True])) I (ASort n1 n0) H2) in 
19986 (False_ind ((eq A (AHead a2 a4) (ASort (S n1) n0)) \to ((leq g a1 a2) \to 
19987 ((leq g a3 a4) \to P))) H4)) H3 H0 H1)))]) in (H1 (refl_equal A (ASort n1 
19988 n0)) (refl_equal A (ASort (S n1) n0)))))]) H))))) (\lambda (a0: A).(\lambda 
19989 (_: (((leq g (asucc g a0) a0) \to (\forall (P: Prop).P)))).(\lambda (a1: 
19990 A).(\lambda (H0: (((leq g (asucc g a1) a1) \to (\forall (P: 
19991 Prop).P)))).(\lambda (H1: (leq g (AHead a0 (asucc g a1)) (AHead a0 
19992 a1))).(\lambda (P: Prop).(let H2 \def (match H1 return (\lambda (a: 
19993 A).(\lambda (a2: A).(\lambda (_: (leq ? a a2)).((eq A a (AHead a0 (asucc g 
19994 a1))) \to ((eq A a2 (AHead a0 a1)) \to P))))) with [(leq_sort h1 h2 n1 n2 k 
19995 H2) \Rightarrow (\lambda (H3: (eq A (ASort h1 n1) (AHead a0 (asucc g 
19996 a1)))).(\lambda (H4: (eq A (ASort h2 n2) (AHead a0 a1))).((let H5 \def 
19997 (eq_ind A (ASort h1 n1) (\lambda (e: A).(match e return (\lambda (_: A).Prop) 
19998 with [(ASort _ _) \Rightarrow True | (AHead _ _) \Rightarrow False])) I 
19999 (AHead a0 (asucc g a1)) H3) in (False_ind ((eq A (ASort h2 n2) (AHead a0 a1)) 
20000 \to ((eq A (aplus g (ASort h1 n1) k) (aplus g (ASort h2 n2) k)) \to P)) H5)) 
20001 H4 H2))) | (leq_head a1 a2 H2 a3 a4 H3) \Rightarrow (\lambda (H4: (eq A 
20002 (AHead a1 a3) (AHead a0 (asucc g a1)))).(\lambda (H5: (eq A (AHead a2 a4) 
20003 (AHead a0 a1))).((let H6 \def (f_equal A A (\lambda (e: A).(match e return 
20004 (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a3 | (AHead _ a) \Rightarrow 
20005 a])) (AHead a1 a3) (AHead a0 (asucc g a1)) H4) in ((let H7 \def (f_equal A A 
20006 (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) 
20007 \Rightarrow a1 | (AHead a _) \Rightarrow a])) (AHead a1 a3) (AHead a0 (asucc 
20008 g a1)) H4) in (eq_ind A a0 (\lambda (a: A).((eq A a3 (asucc g a1)) \to ((eq A 
20009 (AHead a2 a4) (AHead a0 a1)) \to ((leq g a a2) \to ((leq g a3 a4) \to P))))) 
20010 (\lambda (H8: (eq A a3 (asucc g a1))).(eq_ind A (asucc g a1) (\lambda (a: 
20011 A).((eq A (AHead a2 a4) (AHead a0 a1)) \to ((leq g a0 a2) \to ((leq g a a4) 
20012 \to P)))) (\lambda (H9: (eq A (AHead a2 a4) (AHead a0 a1))).(let H10 \def 
20013 (f_equal A A (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort 
20014 _ _) \Rightarrow a4 | (AHead _ a) \Rightarrow a])) (AHead a2 a4) (AHead a0 
20015 a1) H9) in ((let H11 \def (f_equal A A (\lambda (e: A).(match e return 
20016 (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a2 | (AHead a _) \Rightarrow 
20017 a])) (AHead a2 a4) (AHead a0 a1) H9) in (eq_ind A a0 (\lambda (a: A).((eq A 
20018 a4 a1) \to ((leq g a0 a) \to ((leq g (asucc g a1) a4) \to P)))) (\lambda 
20019 (H12: (eq A a4 a1)).(eq_ind A a1 (\lambda (a: A).((leq g a0 a0) \to ((leq g 
20020 (asucc g a1) a) \to P))) (\lambda (_: (leq g a0 a0)).(\lambda (H14: (leq g 
20021 (asucc g a1) a1)).(H0 H14 P))) a4 (sym_eq A a4 a1 H12))) a2 (sym_eq A a2 a0 
20022 H11))) H10))) a3 (sym_eq A a3 (asucc g a1) H8))) a1 (sym_eq A a1 a0 H7))) 
20023 H6)) H5 H2 H3)))]) in (H2 (refl_equal A (AHead a0 (asucc g a1))) (refl_equal 
20024 A (AHead a0 a1)))))))))) a)).
20025
20026 definition lweight:
20027  A \to nat
20028 \def
20029  let rec lweight (a: A) on a: nat \def (match a with [(ASort _ _) \Rightarrow 
20030 O | (AHead a1 a2) \Rightarrow (S (plus (lweight a1) (lweight a2)))]) in 
20031 lweight.
20032
20033 definition llt:
20034  A \to (A \to Prop)
20035 \def
20036  \lambda (a1: A).(\lambda (a2: A).(lt (lweight a1) (lweight a2))).
20037
20038 theorem lweight_repl:
20039  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g a1 a2) \to (eq nat 
20040 (lweight a1) (lweight a2)))))
20041 \def
20042  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (H: (leq g a1 
20043 a2)).(leq_ind g (\lambda (a: A).(\lambda (a0: A).(eq nat (lweight a) (lweight 
20044 a0)))) (\lambda (h1: nat).(\lambda (h2: nat).(\lambda (n1: nat).(\lambda (n2: 
20045 nat).(\lambda (k: nat).(\lambda (_: (eq A (aplus g (ASort h1 n1) k) (aplus g 
20046 (ASort h2 n2) k))).(refl_equal nat O))))))) (\lambda (a0: A).(\lambda (a3: 
20047 A).(\lambda (_: (leq g a0 a3)).(\lambda (H1: (eq nat (lweight a0) (lweight 
20048 a3))).(\lambda (a4: A).(\lambda (a5: A).(\lambda (_: (leq g a4 a5)).(\lambda 
20049 (H3: (eq nat (lweight a4) (lweight a5))).(f_equal nat nat S (plus (lweight 
20050 a0) (lweight a4)) (plus (lweight a3) (lweight a5)) (f_equal2 nat nat nat plus 
20051 (lweight a0) (lweight a3) (lweight a4) (lweight a5) H1 H3)))))))))) a1 a2 
20052 H)))).
20053
20054 theorem llt_repl:
20055  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g a1 a2) \to (\forall 
20056 (a3: A).((llt a1 a3) \to (llt a2 a3))))))
20057 \def
20058  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (H: (leq g a1 
20059 a2)).(\lambda (a3: A).(\lambda (H0: (lt (lweight a1) (lweight a3))).(let H1 
20060 \def (eq_ind nat (lweight a1) (\lambda (n: nat).(lt n (lweight a3))) H0 
20061 (lweight a2) (lweight_repl g a1 a2 H)) in H1)))))).
20062
20063 theorem llt_trans:
20064  \forall (a1: A).(\forall (a2: A).(\forall (a3: A).((llt a1 a2) \to ((llt a2 
20065 a3) \to (llt a1 a3)))))
20066 \def
20067  \lambda (a1: A).(\lambda (a2: A).(\lambda (a3: A).(\lambda (H: (lt (lweight 
20068 a1) (lweight a2))).(\lambda (H0: (lt (lweight a2) (lweight a3))).(lt_trans 
20069 (lweight a1) (lweight a2) (lweight a3) H H0))))).
20070
20071 theorem llt_head_sx:
20072  \forall (a1: A).(\forall (a2: A).(llt a1 (AHead a1 a2)))
20073 \def
20074  \lambda (a1: A).(\lambda (a2: A).(le_S_n (S (lweight a1)) (S (plus (lweight 
20075 a1) (lweight a2))) (le_n_S (S (lweight a1)) (S (plus (lweight a1) (lweight 
20076 a2))) (le_n_S (lweight a1) (plus (lweight a1) (lweight a2)) (le_plus_l 
20077 (lweight a1) (lweight a2)))))).
20078
20079 theorem llt_head_dx:
20080  \forall (a1: A).(\forall (a2: A).(llt a2 (AHead a1 a2)))
20081 \def
20082  \lambda (a1: A).(\lambda (a2: A).(le_S_n (S (lweight a2)) (S (plus (lweight 
20083 a1) (lweight a2))) (le_n_S (S (lweight a2)) (S (plus (lweight a1) (lweight 
20084 a2))) (le_n_S (lweight a2) (plus (lweight a1) (lweight a2)) (le_plus_r 
20085 (lweight a1) (lweight a2)))))).
20086
20087 theorem llt_wf__q_ind:
20088  \forall (P: ((A \to Prop))).(((\forall (n: nat).((\lambda (P: ((A \to 
20089 Prop))).(\lambda (n0: nat).(\forall (a: A).((eq nat (lweight a) n0) \to (P 
20090 a))))) P n))) \to (\forall (a: A).(P a)))
20091 \def
20092  let Q \def (\lambda (P: ((A \to Prop))).(\lambda (n: nat).(\forall (a: 
20093 A).((eq nat (lweight a) n) \to (P a))))) in (\lambda (P: ((A \to 
20094 Prop))).(\lambda (H: ((\forall (n: nat).(\forall (a: A).((eq nat (lweight a) 
20095 n) \to (P a)))))).(\lambda (a: A).(H (lweight a) a (refl_equal nat (lweight 
20096 a)))))).
20097
20098 theorem llt_wf_ind:
20099  \forall (P: ((A \to Prop))).(((\forall (a2: A).(((\forall (a1: A).((llt a1 
20100 a2) \to (P a1)))) \to (P a2)))) \to (\forall (a: A).(P a)))
20101 \def
20102  let Q \def (\lambda (P: ((A \to Prop))).(\lambda (n: nat).(\forall (a: 
20103 A).((eq nat (lweight a) n) \to (P a))))) in (\lambda (P: ((A \to 
20104 Prop))).(\lambda (H: ((\forall (a2: A).(((\forall (a1: A).((lt (lweight a1) 
20105 (lweight a2)) \to (P a1)))) \to (P a2))))).(\lambda (a: A).(llt_wf__q_ind 
20106 (\lambda (a0: A).(P a0)) (\lambda (n: nat).(lt_wf_ind n (Q (\lambda (a0: 
20107 A).(P a0))) (\lambda (n0: nat).(\lambda (H0: ((\forall (m: nat).((lt m n0) 
20108 \to (Q (\lambda (a: A).(P a)) m))))).(\lambda (a0: A).(\lambda (H1: (eq nat 
20109 (lweight a0) n0)).(let H2 \def (eq_ind_r nat n0 (\lambda (n: nat).(\forall 
20110 (m: nat).((lt m n) \to (\forall (a: A).((eq nat (lweight a) m) \to (P a)))))) 
20111 H0 (lweight a0) H1) in (H a0 (\lambda (a1: A).(\lambda (H3: (lt (lweight a1) 
20112 (lweight a0))).(H2 (lweight a1) H3 a1 (refl_equal nat (lweight 
20113 a1))))))))))))) a)))).
20114
20115 inductive aprem: nat \to (A \to (A \to Prop)) \def
20116 | aprem_zero: \forall (a1: A).(\forall (a2: A).(aprem O (AHead a1 a2) a1))
20117 | aprem_succ: \forall (a2: A).(\forall (a: A).(\forall (i: nat).((aprem i a2 
20118 a) \to (\forall (a1: A).(aprem (S i) (AHead a1 a2) a))))).
20119
20120 theorem aprem_repl:
20121  \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g a1 a2) \to (\forall 
20122 (i: nat).(\forall (b2: A).((aprem i a2 b2) \to (ex2 A (\lambda (b1: A).(leq g 
20123 b1 b2)) (\lambda (b1: A).(aprem i a1 b1)))))))))
20124 \def
20125  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (H: (leq g a1 
20126 a2)).(leq_ind g (\lambda (a: A).(\lambda (a0: A).(\forall (i: nat).(\forall 
20127 (b2: A).((aprem i a0 b2) \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda 
20128 (b1: A).(aprem i a b1)))))))) (\lambda (h1: nat).(\lambda (h2: nat).(\lambda 
20129 (n1: nat).(\lambda (n2: nat).(\lambda (k: nat).(\lambda (_: (eq A (aplus g 
20130 (ASort h1 n1) k) (aplus g (ASort h2 n2) k))).(\lambda (i: nat).(\lambda (b2: 
20131 A).(\lambda (H1: (aprem i (ASort h2 n2) b2)).(let H2 \def (match H1 return 
20132 (\lambda (n: nat).(\lambda (a: A).(\lambda (a0: A).(\lambda (_: (aprem n a 
20133 a0)).((eq nat n i) \to ((eq A a (ASort h2 n2)) \to ((eq A a0 b2) \to (ex2 A 
20134 (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem i (ASort h1 n1) 
20135 b1)))))))))) with [(aprem_zero a0 a3) \Rightarrow (\lambda (H1: (eq nat O 
20136 i)).(\lambda (H2: (eq A (AHead a0 a3) (ASort h2 n2))).(\lambda (H3: (eq A a0 
20137 b2)).(eq_ind nat O (\lambda (n: nat).((eq A (AHead a0 a3) (ASort h2 n2)) \to 
20138 ((eq A a0 b2) \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: 
20139 A).(aprem n (ASort h1 n1) b1)))))) (\lambda (H4: (eq A (AHead a0 a3) (ASort 
20140 h2 n2))).(let H5 \def (eq_ind A (AHead a0 a3) (\lambda (e: A).(match e return 
20141 (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False | (AHead _ _) 
20142 \Rightarrow True])) I (ASort h2 n2) H4) in (False_ind ((eq A a0 b2) \to (ex2 
20143 A (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem O (ASort h1 n1) 
20144 b1)))) H5))) i H1 H2 H3)))) | (aprem_succ a0 a i0 H1 a3) \Rightarrow (\lambda 
20145 (H2: (eq nat (S i0) i)).(\lambda (H3: (eq A (AHead a3 a0) (ASort h2 
20146 n2))).(\lambda (H4: (eq A a b2)).(eq_ind nat (S i0) (\lambda (n: nat).((eq A 
20147 (AHead a3 a0) (ASort h2 n2)) \to ((eq A a b2) \to ((aprem i0 a0 a) \to (ex2 A 
20148 (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem n (ASort h1 n1) 
20149 b1))))))) (\lambda (H5: (eq A (AHead a3 a0) (ASort h2 n2))).(let H6 \def 
20150 (eq_ind A (AHead a3 a0) (\lambda (e: A).(match e return (\lambda (_: A).Prop) 
20151 with [(ASort _ _) \Rightarrow False | (AHead _ _) \Rightarrow True])) I 
20152 (ASort h2 n2) H5) in (False_ind ((eq A a b2) \to ((aprem i0 a0 a) \to (ex2 A 
20153 (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem (S i0) (ASort h1 n1) 
20154 b1))))) H6))) i H2 H3 H4 H1))))]) in (H2 (refl_equal nat i) (refl_equal A 
20155 (ASort h2 n2)) (refl_equal A b2)))))))))))) (\lambda (a0: A).(\lambda (a3: 
20156 A).(\lambda (H0: (leq g a0 a3)).(\lambda (_: ((\forall (i: nat).(\forall (b2: 
20157 A).((aprem i a3 b2) \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: 
20158 A).(aprem i a0 b1)))))))).(\lambda (a4: A).(\lambda (a5: A).(\lambda (_: (leq 
20159 g a4 a5)).(\lambda (H3: ((\forall (i: nat).(\forall (b2: A).((aprem i a5 b2) 
20160 \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem i a4 
20161 b1)))))))).(\lambda (i: nat).(\lambda (b2: A).(\lambda (H4: (aprem i (AHead 
20162 a3 a5) b2)).((match i return (\lambda (n: nat).((aprem n (AHead a3 a5) b2) 
20163 \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem n (AHead 
20164 a0 a4) b1))))) with [O \Rightarrow (\lambda (H5: (aprem O (AHead a3 a5) 
20165 b2)).(let H6 \def (match H5 return (\lambda (n: nat).(\lambda (a: A).(\lambda 
20166 (a1: A).(\lambda (_: (aprem n a a1)).((eq nat n O) \to ((eq A a (AHead a3 
20167 a5)) \to ((eq A a1 b2) \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda 
20168 (b1: A).(aprem O (AHead a0 a4) b1)))))))))) with [(aprem_zero a6 a7) 
20169 \Rightarrow (\lambda (_: (eq nat O O)).(\lambda (H5: (eq A (AHead a6 a7) 
20170 (AHead a3 a5))).(\lambda (H6: (eq A a6 b2)).((let H7 \def (f_equal A A 
20171 (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) 
20172 \Rightarrow a7 | (AHead _ a) \Rightarrow a])) (AHead a6 a7) (AHead a3 a5) H5) 
20173 in ((let H8 \def (f_equal A A (\lambda (e: A).(match e return (\lambda (_: 
20174 A).A) with [(ASort _ _) \Rightarrow a6 | (AHead a _) \Rightarrow a])) (AHead 
20175 a6 a7) (AHead a3 a5) H5) in (eq_ind A a3 (\lambda (a: A).((eq A a7 a5) \to 
20176 ((eq A a b2) \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: 
20177 A).(aprem O (AHead a0 a4) b1)))))) (\lambda (H9: (eq A a7 a5)).(eq_ind A a5 
20178 (\lambda (_: A).((eq A a3 b2) \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) 
20179 (\lambda (b1: A).(aprem O (AHead a0 a4) b1))))) (\lambda (H10: (eq A a3 
20180 b2)).(eq_ind A b2 (\lambda (_: A).(ex2 A (\lambda (b1: A).(leq g b1 b2)) 
20181 (\lambda (b1: A).(aprem O (AHead a0 a4) b1)))) (eq_ind A a3 (\lambda (a: 
20182 A).(ex2 A (\lambda (b1: A).(leq g b1 a)) (\lambda (b1: A).(aprem O (AHead a0 
20183 a4) b1)))) (ex_intro2 A (\lambda (b1: A).(leq g b1 a3)) (\lambda (b1: 
20184 A).(aprem O (AHead a0 a4) b1)) a0 H0 (aprem_zero a0 a4)) b2 H10) a3 (sym_eq A 
20185 a3 b2 H10))) a7 (sym_eq A a7 a5 H9))) a6 (sym_eq A a6 a3 H8))) H7)) H6)))) | 
20186 (aprem_succ a6 a i H4 a7) \Rightarrow (\lambda (H5: (eq nat (S i) 
20187 O)).(\lambda (H6: (eq A (AHead a7 a6) (AHead a3 a5))).(\lambda (H7: (eq A a 
20188 b2)).((let H8 \def (eq_ind nat (S i) (\lambda (e: nat).(match e return 
20189 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
20190 I O H5) in (False_ind ((eq A (AHead a7 a6) (AHead a3 a5)) \to ((eq A a b2) 
20191 \to ((aprem i a6 a) \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: 
20192 A).(aprem O (AHead a0 a4) b1)))))) H8)) H6 H7 H4))))]) in (H6 (refl_equal nat 
20193 O) (refl_equal A (AHead a3 a5)) (refl_equal A b2)))) | (S n) \Rightarrow 
20194 (\lambda (H5: (aprem (S n) (AHead a3 a5) b2)).(let H6 \def (match H5 return 
20195 (\lambda (n0: nat).(\lambda (a: A).(\lambda (a1: A).(\lambda (_: (aprem n0 a 
20196 a1)).((eq nat n0 (S n)) \to ((eq A a (AHead a3 a5)) \to ((eq A a1 b2) \to 
20197 (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem (S n) (AHead 
20198 a0 a4) b1)))))))))) with [(aprem_zero a6 a7) \Rightarrow (\lambda (H4: (eq 
20199 nat O (S n))).(\lambda (H5: (eq A (AHead a6 a7) (AHead a3 a5))).(\lambda (H6: 
20200 (eq A a6 b2)).((let H7 \def (eq_ind nat O (\lambda (e: nat).(match e return 
20201 (\lambda (_: nat).Prop) with [O \Rightarrow True | (S _) \Rightarrow False])) 
20202 I (S n) H4) in (False_ind ((eq A (AHead a6 a7) (AHead a3 a5)) \to ((eq A a6 
20203 b2) \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem (S n) 
20204 (AHead a0 a4) b1))))) H7)) H5 H6)))) | (aprem_succ a6 a i H4 a7) \Rightarrow 
20205 (\lambda (H5: (eq nat (S i) (S n))).(\lambda (H6: (eq A (AHead a7 a6) (AHead 
20206 a3 a5))).(\lambda (H7: (eq A a b2)).((let H8 \def (f_equal nat nat (\lambda 
20207 (e: nat).(match e return (\lambda (_: nat).nat) with [O \Rightarrow i | (S n) 
20208 \Rightarrow n])) (S i) (S n) H5) in (eq_ind nat n (\lambda (n0: nat).((eq A 
20209 (AHead a7 a6) (AHead a3 a5)) \to ((eq A a b2) \to ((aprem n0 a6 a) \to (ex2 A 
20210 (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem (S n) (AHead a0 a4) 
20211 b1))))))) (\lambda (H9: (eq A (AHead a7 a6) (AHead a3 a5))).(let H10 \def 
20212 (f_equal A A (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort 
20213 _ _) \Rightarrow a6 | (AHead _ a) \Rightarrow a])) (AHead a7 a6) (AHead a3 
20214 a5) H9) in ((let H11 \def (f_equal A A (\lambda (e: A).(match e return 
20215 (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a7 | (AHead a _) \Rightarrow 
20216 a])) (AHead a7 a6) (AHead a3 a5) H9) in (eq_ind A a3 (\lambda (_: A).((eq A 
20217 a6 a5) \to ((eq A a b2) \to ((aprem n a6 a) \to (ex2 A (\lambda (b1: A).(leq 
20218 g b1 b2)) (\lambda (b1: A).(aprem (S n) (AHead a0 a4) b1))))))) (\lambda 
20219 (H12: (eq A a6 a5)).(eq_ind A a5 (\lambda (a1: A).((eq A a b2) \to ((aprem n 
20220 a1 a) \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem (S 
20221 n) (AHead a0 a4) b1)))))) (\lambda (H13: (eq A a b2)).(eq_ind A b2 (\lambda 
20222 (a1: A).((aprem n a5 a1) \to (ex2 A (\lambda (b1: A).(leq g b1 b2)) (\lambda 
20223 (b1: A).(aprem (S n) (AHead a0 a4) b1))))) (\lambda (H14: (aprem n a5 
20224 b2)).(let H_x \def (H3 n b2 H14) in (let H3 \def H_x in (ex2_ind A (\lambda 
20225 (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem n a4 b1)) (ex2 A (\lambda (b1: 
20226 A).(leq g b1 b2)) (\lambda (b1: A).(aprem (S n) (AHead a0 a4) b1))) (\lambda 
20227 (x: A).(\lambda (H15: (leq g x b2)).(\lambda (H16: (aprem n a4 x)).(ex_intro2 
20228 A (\lambda (b1: A).(leq g b1 b2)) (\lambda (b1: A).(aprem (S n) (AHead a0 a4) 
20229 b1)) x H15 (aprem_succ a4 x n H16 a0))))) H3)))) a (sym_eq A a b2 H13))) a6 
20230 (sym_eq A a6 a5 H12))) a7 (sym_eq A a7 a3 H11))) H10))) i (sym_eq nat i n 
20231 H8))) H6 H7 H4))))]) in (H6 (refl_equal nat (S n)) (refl_equal A (AHead a3 
20232 a5)) (refl_equal A b2))))]) H4)))))))))))) a1 a2 H)))).
20233
20234 theorem aprem_asucc:
20235  \forall (g: G).(\forall (a1: A).(\forall (a2: A).(\forall (i: nat).((aprem i 
20236 a1 a2) \to (aprem i (asucc g a1) a2)))))
20237 \def
20238  \lambda (g: G).(\lambda (a1: A).(\lambda (a2: A).(\lambda (i: nat).(\lambda 
20239 (H: (aprem i a1 a2)).(aprem_ind (\lambda (n: nat).(\lambda (a: A).(\lambda 
20240 (a0: A).(aprem n (asucc g a) a0)))) (\lambda (a0: A).(\lambda (a3: 
20241 A).(aprem_zero a0 (asucc g a3)))) (\lambda (a0: A).(\lambda (a: A).(\lambda 
20242 (i0: nat).(\lambda (_: (aprem i0 a0 a)).(\lambda (H1: (aprem i0 (asucc g a0) 
20243 a)).(\lambda (a3: A).(aprem_succ (asucc g a0) a i0 H1 a3))))))) i a1 a2 
20244 H))))).
20245
20246 definition gz:
20247  G
20248 \def
20249  mk_G S lt_n_Sn.
20250
20251 inductive leqz: A \to (A \to Prop) \def
20252 | leqz_sort: \forall (h1: nat).(\forall (h2: nat).(\forall (n1: nat).(\forall 
20253 (n2: nat).((eq nat (plus h1 n2) (plus h2 n1)) \to (leqz (ASort h1 n1) (ASort 
20254 h2 n2))))))
20255 | leqz_head: \forall (a1: A).(\forall (a2: A).((leqz a1 a2) \to (\forall (a3: 
20256 A).(\forall (a4: A).((leqz a3 a4) \to (leqz (AHead a1 a3) (AHead a2 a4))))))).
20257
20258 theorem aplus_gz_le:
20259  \forall (k: nat).(\forall (h: nat).(\forall (n: nat).((le h k) \to (eq A 
20260 (aplus gz (ASort h n) k) (ASort O (plus (minus k h) n))))))
20261 \def
20262  \lambda (k: nat).(nat_ind (\lambda (n: nat).(\forall (h: nat).(\forall (n0: 
20263 nat).((le h n) \to (eq A (aplus gz (ASort h n0) n) (ASort O (plus (minus n h) 
20264 n0))))))) (\lambda (h: nat).(\lambda (n: nat).(\lambda (H: (le h O)).(let H_y 
20265 \def (le_n_O_eq h H) in (eq_ind nat O (\lambda (n0: nat).(eq A (ASort n0 n) 
20266 (ASort O n))) (refl_equal A (ASort O n)) h H_y))))) (\lambda (k0: 
20267 nat).(\lambda (IH: ((\forall (h: nat).(\forall (n: nat).((le h k0) \to (eq A 
20268 (aplus gz (ASort h n) k0) (ASort O (plus (minus k0 h) n)))))))).(\lambda (h: 
20269 nat).(nat_ind (\lambda (n: nat).(\forall (n0: nat).((le n (S k0)) \to (eq A 
20270 (asucc gz (aplus gz (ASort n n0) k0)) (ASort O (plus (match n with [O 
20271 \Rightarrow (S k0) | (S l) \Rightarrow (minus k0 l)]) n0)))))) (\lambda (n: 
20272 nat).(\lambda (_: (le O (S k0))).(eq_ind A (aplus gz (asucc gz (ASort O n)) 
20273 k0) (\lambda (a: A).(eq A a (ASort O (S (plus k0 n))))) (eq_ind_r A (ASort O 
20274 (plus (minus k0 O) (S n))) (\lambda (a: A).(eq A a (ASort O (S (plus k0 
20275 n))))) (eq_ind nat k0 (\lambda (n0: nat).(eq A (ASort O (plus n0 (S n))) 
20276 (ASort O (S (plus k0 n))))) (eq_ind nat (S (plus k0 n)) (\lambda (n0: 
20277 nat).(eq A (ASort O n0) (ASort O (S (plus k0 n))))) (refl_equal A (ASort O (S 
20278 (plus k0 n)))) (plus k0 (S n)) (plus_n_Sm k0 n)) (minus k0 O) (minus_n_O k0)) 
20279 (aplus gz (ASort O (S n)) k0) (IH O (S n) (le_O_n k0))) (asucc gz (aplus gz 
20280 (ASort O n) k0)) (aplus_asucc gz k0 (ASort O n))))) (\lambda (n: 
20281 nat).(\lambda (_: ((\forall (n0: nat).((le n (S k0)) \to (eq A (asucc gz 
20282 (aplus gz (ASort n n0) k0)) (ASort O (plus (match n with [O \Rightarrow (S 
20283 k0) | (S l) \Rightarrow (minus k0 l)]) n0))))))).(\lambda (n0: nat).(\lambda 
20284 (H0: (le (S n) (S k0))).(ex2_ind nat (\lambda (n1: nat).(eq nat (S k0) (S 
20285 n1))) (\lambda (n1: nat).(le n n1)) (eq A (asucc gz (aplus gz (ASort (S n) 
20286 n0) k0)) (ASort O (plus (minus k0 n) n0))) (\lambda (x: nat).(\lambda (H1: 
20287 (eq nat (S k0) (S x))).(\lambda (H2: (le n x)).(let H3 \def (f_equal nat nat 
20288 (\lambda (e: nat).(match e return (\lambda (_: nat).nat) with [O \Rightarrow 
20289 k0 | (S n) \Rightarrow n])) (S k0) (S x) H1) in (let H4 \def (eq_ind_r nat x 
20290 (\lambda (n0: nat).(le n n0)) H2 k0 H3) in (eq_ind A (aplus gz (ASort n n0) 
20291 k0) (\lambda (a: A).(eq A (asucc gz (aplus gz (ASort (S n) n0) k0)) a)) 
20292 (eq_ind A (aplus gz (asucc gz (ASort (S n) n0)) k0) (\lambda (a: A).(eq A a 
20293 (aplus gz (ASort n n0) k0))) (refl_equal A (aplus gz (ASort n n0) k0)) (asucc 
20294 gz (aplus gz (ASort (S n) n0) k0)) (aplus_asucc gz k0 (ASort (S n) n0))) 
20295 (ASort O (plus (minus k0 n) n0)) (IH n n0 H4))))))) (le_gen_S n (S k0) 
20296 H0)))))) h)))) k).
20297
20298 theorem aplus_gz_ge:
20299  \forall (n: nat).(\forall (k: nat).(\forall (h: nat).((le k h) \to (eq A 
20300 (aplus gz (ASort h n) k) (ASort (minus h k) n)))))
20301 \def
20302  \lambda (n: nat).(\lambda (k: nat).(nat_ind (\lambda (n0: nat).(\forall (h: 
20303 nat).((le n0 h) \to (eq A (aplus gz (ASort h n) n0) (ASort (minus h n0) 
20304 n))))) (\lambda (h: nat).(\lambda (_: (le O h)).(eq_ind nat h (\lambda (n0: 
20305 nat).(eq A (ASort h n) (ASort n0 n))) (refl_equal A (ASort h n)) (minus h O) 
20306 (minus_n_O h)))) (\lambda (k0: nat).(\lambda (IH: ((\forall (h: nat).((le k0 
20307 h) \to (eq A (aplus gz (ASort h n) k0) (ASort (minus h k0) n)))))).(\lambda 
20308 (h: nat).(nat_ind (\lambda (n0: nat).((le (S k0) n0) \to (eq A (asucc gz 
20309 (aplus gz (ASort n0 n) k0)) (ASort (minus n0 (S k0)) n)))) (\lambda (H: (le 
20310 (S k0) O)).(ex2_ind nat (\lambda (n0: nat).(eq nat O (S n0))) (\lambda (n0: 
20311 nat).(le k0 n0)) (eq A (asucc gz (aplus gz (ASort O n) k0)) (ASort O n)) 
20312 (\lambda (x: nat).(\lambda (H0: (eq nat O (S x))).(\lambda (_: (le k0 
20313 x)).(let H2 \def (eq_ind nat O (\lambda (ee: nat).(match ee return (\lambda 
20314 (_: nat).Prop) with [O \Rightarrow True | (S _) \Rightarrow False])) I (S x) 
20315 H0) in (False_ind (eq A (asucc gz (aplus gz (ASort O n) k0)) (ASort O n)) 
20316 H2))))) (le_gen_S k0 O H))) (\lambda (n0: nat).(\lambda (_: (((le (S k0) n0) 
20317 \to (eq A (asucc gz (aplus gz (ASort n0 n) k0)) (ASort (minus n0 (S k0)) 
20318 n))))).(\lambda (H0: (le (S k0) (S n0))).(ex2_ind nat (\lambda (n1: nat).(eq 
20319 nat (S n0) (S n1))) (\lambda (n1: nat).(le k0 n1)) (eq A (asucc gz (aplus gz 
20320 (ASort (S n0) n) k0)) (ASort (minus n0 k0) n)) (\lambda (x: nat).(\lambda 
20321 (H1: (eq nat (S n0) (S x))).(\lambda (H2: (le k0 x)).(let H3 \def (f_equal 
20322 nat nat (\lambda (e: nat).(match e return (\lambda (_: nat).nat) with [O 
20323 \Rightarrow n0 | (S n) \Rightarrow n])) (S n0) (S x) H1) in (let H4 \def 
20324 (eq_ind_r nat x (\lambda (n: nat).(le k0 n)) H2 n0 H3) in (eq_ind A (aplus gz 
20325 (ASort n0 n) k0) (\lambda (a: A).(eq A (asucc gz (aplus gz (ASort (S n0) n) 
20326 k0)) a)) (eq_ind A (aplus gz (asucc gz (ASort (S n0) n)) k0) (\lambda (a: 
20327 A).(eq A a (aplus gz (ASort n0 n) k0))) (refl_equal A (aplus gz (ASort n0 n) 
20328 k0)) (asucc gz (aplus gz (ASort (S n0) n) k0)) (aplus_asucc gz k0 (ASort (S 
20329 n0) n))) (ASort (minus n0 k0) n) (IH n0 H4))))))) (le_gen_S k0 (S n0) H0))))) 
20330 h)))) k)).
20331
20332 theorem next_plus_gz:
20333  \forall (n: nat).(\forall (h: nat).(eq nat (next_plus gz n h) (plus h n)))
20334 \def
20335  \lambda (n: nat).(\lambda (h: nat).(nat_ind (\lambda (n0: nat).(eq nat 
20336 (next_plus gz n n0) (plus n0 n))) (refl_equal nat n) (\lambda (n0: 
20337 nat).(\lambda (H: (eq nat (next_plus gz n n0) (plus n0 n))).(f_equal nat nat 
20338 S (next_plus gz n n0) (plus n0 n) H))) h)).
20339
20340 theorem leqz_leq:
20341  \forall (a1: A).(\forall (a2: A).((leq gz a1 a2) \to (leqz a1 a2)))
20342 \def
20343  \lambda (a1: A).(\lambda (a2: A).(\lambda (H: (leq gz a1 a2)).(leq_ind gz 
20344 (\lambda (a: A).(\lambda (a0: A).(leqz a a0))) (\lambda (h1: nat).(\lambda 
20345 (h2: nat).(\lambda (n1: nat).(\lambda (n2: nat).(\lambda (k: nat).(\lambda 
20346 (H0: (eq A (aplus gz (ASort h1 n1) k) (aplus gz (ASort h2 n2) k))).(lt_le_e k 
20347 h1 (leqz (ASort h1 n1) (ASort h2 n2)) (\lambda (H1: (lt k h1)).(lt_le_e k h2 
20348 (leqz (ASort h1 n1) (ASort h2 n2)) (\lambda (H2: (lt k h2)).(let H3 \def 
20349 (eq_ind A (aplus gz (ASort h1 n1) k) (\lambda (a: A).(eq A a (aplus gz (ASort 
20350 h2 n2) k))) H0 (ASort (minus h1 k) n1) (aplus_gz_ge n1 k h1 (le_S_n k h1 
20351 (le_S (S k) h1 H1)))) in (let H4 \def (eq_ind A (aplus gz (ASort h2 n2) k) 
20352 (\lambda (a: A).(eq A (ASort (minus h1 k) n1) a)) H3 (ASort (minus h2 k) n2) 
20353 (aplus_gz_ge n2 k h2 (le_S_n k h2 (le_S (S k) h2 H2)))) in (let H5 \def 
20354 (f_equal A nat (\lambda (e: A).(match e return (\lambda (_: A).nat) with 
20355 [(ASort n _) \Rightarrow n | (AHead _ _) \Rightarrow ((let rec minus (n: nat) 
20356 on n: (nat \to nat) \def (\lambda (m: nat).(match n with [O \Rightarrow O | 
20357 (S k) \Rightarrow (match m with [O \Rightarrow (S k) | (S l) \Rightarrow 
20358 (minus k l)])])) in minus) h1 k)])) (ASort (minus h1 k) n1) (ASort (minus h2 
20359 k) n2) H4) in ((let H6 \def (f_equal A nat (\lambda (e: A).(match e return 
20360 (\lambda (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _) 
20361 \Rightarrow n1])) (ASort (minus h1 k) n1) (ASort (minus h2 k) n2) H4) in 
20362 (\lambda (H7: (eq nat (minus h1 k) (minus h2 k))).(eq_ind nat n1 (\lambda (n: 
20363 nat).(leqz (ASort h1 n1) (ASort h2 n))) (eq_ind nat h1 (\lambda (n: 
20364 nat).(leqz (ASort h1 n1) (ASort n n1))) (leqz_sort h1 h1 n1 n1 (refl_equal 
20365 nat (plus h1 n1))) h2 (minus_minus k h1 h2 (le_S_n k h1 (le_S (S k) h1 H1)) 
20366 (le_S_n k h2 (le_S (S k) h2 H2)) H7)) n2 H6))) H5))))) (\lambda (H2: (le h2 
20367 k)).(let H3 \def (eq_ind A (aplus gz (ASort h1 n1) k) (\lambda (a: A).(eq A a 
20368 (aplus gz (ASort h2 n2) k))) H0 (ASort (minus h1 k) n1) (aplus_gz_ge n1 k h1 
20369 (le_S_n k h1 (le_S (S k) h1 H1)))) in (let H4 \def (eq_ind A (aplus gz (ASort 
20370 h2 n2) k) (\lambda (a: A).(eq A (ASort (minus h1 k) n1) a)) H3 (ASort O (plus 
20371 (minus k h2) n2)) (aplus_gz_le k h2 n2 H2)) in (let H5 \def (eq_ind nat 
20372 (minus h1 k) (\lambda (n: nat).(eq A (ASort n n1) (ASort O (plus (minus k h2) 
20373 n2)))) H4 (S (minus h1 (S k))) (minus_x_Sy h1 k H1)) in (let H6 \def (eq_ind 
20374 A (ASort (S (minus h1 (S k))) n1) (\lambda (ee: A).(match ee return (\lambda 
20375 (_: A).Prop) with [(ASort n _) \Rightarrow (match n return (\lambda (_: 
20376 nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True]) | (AHead _ _) 
20377 \Rightarrow False])) I (ASort O (plus (minus k h2) n2)) H5) in (False_ind 
20378 (leqz (ASort h1 n1) (ASort h2 n2)) H6)))))))) (\lambda (H1: (le h1 
20379 k)).(lt_le_e k h2 (leqz (ASort h1 n1) (ASort h2 n2)) (\lambda (H2: (lt k 
20380 h2)).(let H3 \def (eq_ind A (aplus gz (ASort h1 n1) k) (\lambda (a: A).(eq A 
20381 a (aplus gz (ASort h2 n2) k))) H0 (ASort O (plus (minus k h1) n1)) 
20382 (aplus_gz_le k h1 n1 H1)) in (let H4 \def (eq_ind A (aplus gz (ASort h2 n2) 
20383 k) (\lambda (a: A).(eq A (ASort O (plus (minus k h1) n1)) a)) H3 (ASort 
20384 (minus h2 k) n2) (aplus_gz_ge n2 k h2 (le_S_n k h2 (le_S (S k) h2 H2)))) in 
20385 (let H5 \def (sym_equal A (ASort O (plus (minus k h1) n1)) (ASort (minus h2 
20386 k) n2) H4) in (let H6 \def (eq_ind nat (minus h2 k) (\lambda (n: nat).(eq A 
20387 (ASort n n2) (ASort O (plus (minus k h1) n1)))) H5 (S (minus h2 (S k))) 
20388 (minus_x_Sy h2 k H2)) in (let H7 \def (eq_ind A (ASort (S (minus h2 (S k))) 
20389 n2) (\lambda (ee: A).(match ee return (\lambda (_: A).Prop) with [(ASort n _) 
20390 \Rightarrow (match n return (\lambda (_: nat).Prop) with [O \Rightarrow False 
20391 | (S _) \Rightarrow True]) | (AHead _ _) \Rightarrow False])) I (ASort O 
20392 (plus (minus k h1) n1)) H6) in (False_ind (leqz (ASort h1 n1) (ASort h2 n2)) 
20393 H7))))))) (\lambda (H2: (le h2 k)).(let H3 \def (eq_ind A (aplus gz (ASort h1 
20394 n1) k) (\lambda (a: A).(eq A a (aplus gz (ASort h2 n2) k))) H0 (ASort O (plus 
20395 (minus k h1) n1)) (aplus_gz_le k h1 n1 H1)) in (let H4 \def (eq_ind A (aplus 
20396 gz (ASort h2 n2) k) (\lambda (a: A).(eq A (ASort O (plus (minus k h1) n1)) 
20397 a)) H3 (ASort O (plus (minus k h2) n2)) (aplus_gz_le k h2 n2 H2)) in (let H5 
20398 \def (f_equal A nat (\lambda (e: A).(match e return (\lambda (_: A).nat) with 
20399 [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow ((let rec plus (n: nat) 
20400 on n: (nat \to nat) \def (\lambda (m: nat).(match n with [O \Rightarrow m | 
20401 (S p) \Rightarrow (S (plus p m))])) in plus) (minus k h1) n1)])) (ASort O 
20402 (plus (minus k h1) n1)) (ASort O (plus (minus k h2) n2)) H4) in (let H_y \def 
20403 (plus_plus k h1 h2 n1 n2 H1 H2 H5) in (leqz_sort h1 h2 n1 n2 
20404 H_y))))))))))))))) (\lambda (a0: A).(\lambda (a3: A).(\lambda (_: (leq gz a0 
20405 a3)).(\lambda (H1: (leqz a0 a3)).(\lambda (a4: A).(\lambda (a5: A).(\lambda 
20406 (_: (leq gz a4 a5)).(\lambda (H3: (leqz a4 a5)).(leqz_head a0 a3 H1 a4 a5 
20407 H3))))))))) a1 a2 H))).
20408
20409 theorem leq_leqz:
20410  \forall (a1: A).(\forall (a2: A).((leqz a1 a2) \to (leq gz a1 a2)))
20411 \def
20412  \lambda (a1: A).(\lambda (a2: A).(\lambda (H: (leqz a1 a2)).(leqz_ind 
20413 (\lambda (a: A).(\lambda (a0: A).(leq gz a a0))) (\lambda (h1: nat).(\lambda 
20414 (h2: nat).(\lambda (n1: nat).(\lambda (n2: nat).(\lambda (H0: (eq nat (plus 
20415 h1 n2) (plus h2 n1))).(leq_sort gz h1 h2 n1 n2 (plus h1 h2) (eq_ind_r A 
20416 (ASort (minus h1 (plus h1 h2)) (next_plus gz n1 (minus (plus h1 h2) h1))) 
20417 (\lambda (a: A).(eq A a (aplus gz (ASort h2 n2) (plus h1 h2)))) (eq_ind_r A 
20418 (ASort (minus h2 (plus h1 h2)) (next_plus gz n2 (minus (plus h1 h2) h2))) 
20419 (\lambda (a: A).(eq A (ASort (minus h1 (plus h1 h2)) (next_plus gz n1 (minus 
20420 (plus h1 h2) h1))) a)) (eq_ind_r nat h2 (\lambda (n: nat).(eq A (ASort (minus 
20421 h1 (plus h1 h2)) (next_plus gz n1 n)) (ASort (minus h2 (plus h1 h2)) 
20422 (next_plus gz n2 (minus (plus h1 h2) h2))))) (eq_ind_r nat h1 (\lambda (n: 
20423 nat).(eq A (ASort (minus h1 (plus h1 h2)) (next_plus gz n1 h2)) (ASort (minus 
20424 h2 (plus h1 h2)) (next_plus gz n2 n)))) (eq_ind_r nat O (\lambda (n: nat).(eq 
20425 A (ASort n (next_plus gz n1 h2)) (ASort (minus h2 (plus h1 h2)) (next_plus gz 
20426 n2 h1)))) (eq_ind_r nat O (\lambda (n: nat).(eq A (ASort O (next_plus gz n1 
20427 h2)) (ASort n (next_plus gz n2 h1)))) (eq_ind_r nat (plus h2 n1) (\lambda (n: 
20428 nat).(eq A (ASort O n) (ASort O (next_plus gz n2 h1)))) (eq_ind_r nat (plus 
20429 h1 n2) (\lambda (n: nat).(eq A (ASort O (plus h2 n1)) (ASort O n))) (f_equal 
20430 nat A (ASort O) (plus h2 n1) (plus h1 n2) (sym_eq nat (plus h1 n2) (plus h2 
20431 n1) H0)) (next_plus gz n2 h1) (next_plus_gz n2 h1)) (next_plus gz n1 h2) 
20432 (next_plus_gz n1 h2)) (minus h2 (plus h1 h2)) (O_minus h2 (plus h1 h2) 
20433 (le_plus_r h1 h2))) (minus h1 (plus h1 h2)) (O_minus h1 (plus h1 h2) 
20434 (le_plus_l h1 h2))) (minus (plus h1 h2) h2) (minus_plus_r h1 h2)) (minus 
20435 (plus h1 h2) h1) (minus_plus h1 h2)) (aplus gz (ASort h2 n2) (plus h1 h2)) 
20436 (aplus_asort_simpl gz (plus h1 h2) h2 n2)) (aplus gz (ASort h1 n1) (plus h1 
20437 h2)) (aplus_asort_simpl gz (plus h1 h2) h1 n1)))))))) (\lambda (a0: 
20438 A).(\lambda (a3: A).(\lambda (_: (leqz a0 a3)).(\lambda (H1: (leq gz a0 
20439 a3)).(\lambda (a4: A).(\lambda (a5: A).(\lambda (_: (leqz a4 a5)).(\lambda 
20440 (H3: (leq gz a4 a5)).(leq_head gz a0 a3 H1 a4 a5 H3))))))))) a1 a2 H))).
20441
20442 inductive arity (g:G): C \to (T \to (A \to Prop)) \def
20443 | arity_sort: \forall (c: C).(\forall (n: nat).(arity g c (TSort n) (ASort O 
20444 n)))
20445 | arity_abbr: \forall (c: C).(\forall (d: C).(\forall (u: T).(\forall (i: 
20446 nat).((getl i c (CHead d (Bind Abbr) u)) \to (\forall (a: A).((arity g d u a) 
20447 \to (arity g c (TLRef i) a)))))))
20448 | arity_abst: \forall (c: C).(\forall (d: C).(\forall (u: T).(\forall (i: 
20449 nat).((getl i c (CHead d (Bind Abst) u)) \to (\forall (a: A).((arity g d u 
20450 (asucc g a)) \to (arity g c (TLRef i) a)))))))
20451 | arity_bind: \forall (b: B).((not (eq B b Abst)) \to (\forall (c: 
20452 C).(\forall (u: T).(\forall (a1: A).((arity g c u a1) \to (\forall (t: 
20453 T).(\forall (a2: A).((arity g (CHead c (Bind b) u) t a2) \to (arity g c 
20454 (THead (Bind b) u t) a2)))))))))
20455 | arity_head: \forall (c: C).(\forall (u: T).(\forall (a1: A).((arity g c u 
20456 (asucc g a1)) \to (\forall (t: T).(\forall (a2: A).((arity g (CHead c (Bind 
20457 Abst) u) t a2) \to (arity g c (THead (Bind Abst) u t) (AHead a1 a2))))))))
20458 | arity_appl: \forall (c: C).(\forall (u: T).(\forall (a1: A).((arity g c u 
20459 a1) \to (\forall (t: T).(\forall (a2: A).((arity g c t (AHead a1 a2)) \to 
20460 (arity g c (THead (Flat Appl) u t) a2)))))))
20461 | arity_cast: \forall (c: C).(\forall (u: T).(\forall (a: A).((arity g c u 
20462 (asucc g a)) \to (\forall (t: T).((arity g c t a) \to (arity g c (THead (Flat 
20463 Cast) u t) a))))))
20464 | arity_repl: \forall (c: C).(\forall (t: T).(\forall (a1: A).((arity g c t 
20465 a1) \to (\forall (a2: A).((leq g a1 a2) \to (arity g c t a2)))))).
20466
20467 theorem arity_gen_sort:
20468  \forall (g: G).(\forall (c: C).(\forall (n: nat).(\forall (a: A).((arity g c 
20469 (TSort n) a) \to (leq g a (ASort O n))))))
20470 \def
20471  \lambda (g: G).(\lambda (c: C).(\lambda (n: nat).(\lambda (a: A).(\lambda 
20472 (H: (arity g c (TSort n) a)).(insert_eq T (TSort n) (\lambda (t: T).(arity g 
20473 c t a)) (leq g a (ASort O n)) (\lambda (y: T).(\lambda (H0: (arity g c y 
20474 a)).(arity_ind g (\lambda (_: C).(\lambda (t: T).(\lambda (a0: A).((eq T t 
20475 (TSort n)) \to (leq g a0 (ASort O n)))))) (\lambda (_: C).(\lambda (n0: 
20476 nat).(\lambda (H1: (eq T (TSort n0) (TSort n))).(let H2 \def (f_equal T nat 
20477 (\lambda (e: T).(match e return (\lambda (_: T).nat) with [(TSort n) 
20478 \Rightarrow n | (TLRef _) \Rightarrow n0 | (THead _ _ _) \Rightarrow n0])) 
20479 (TSort n0) (TSort n) H1) in (eq_ind_r nat n (\lambda (n1: nat).(leq g (ASort 
20480 O n1) (ASort O n))) (leq_refl g (ASort O n)) n0 H2))))) (\lambda (c0: 
20481 C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (_: (getl i c0 
20482 (CHead d (Bind Abbr) u))).(\lambda (a0: A).(\lambda (_: (arity g d u 
20483 a0)).(\lambda (_: (((eq T u (TSort n)) \to (leq g a0 (ASort O n))))).(\lambda 
20484 (H4: (eq T (TLRef i) (TSort n))).(let H5 \def (eq_ind T (TLRef i) (\lambda 
20485 (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
20486 False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I 
20487 (TSort n) H4) in (False_ind (leq g a0 (ASort O n)) H5))))))))))) (\lambda 
20488 (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (_: (getl 
20489 i c0 (CHead d (Bind Abst) u))).(\lambda (a0: A).(\lambda (_: (arity g d u 
20490 (asucc g a0))).(\lambda (_: (((eq T u (TSort n)) \to (leq g (asucc g a0) 
20491 (ASort O n))))).(\lambda (H4: (eq T (TLRef i) (TSort n))).(let H5 \def 
20492 (eq_ind T (TLRef i) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) 
20493 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ 
20494 _) \Rightarrow False])) I (TSort n) H4) in (False_ind (leq g a0 (ASort O n)) 
20495 H5))))))))))) (\lambda (b: B).(\lambda (_: (not (eq B b Abst))).(\lambda (c0: 
20496 C).(\lambda (u: T).(\lambda (a1: A).(\lambda (_: (arity g c0 u a1)).(\lambda 
20497 (_: (((eq T u (TSort n)) \to (leq g a1 (ASort O n))))).(\lambda (t: 
20498 T).(\lambda (a2: A).(\lambda (_: (arity g (CHead c0 (Bind b) u) t 
20499 a2)).(\lambda (_: (((eq T t (TSort n)) \to (leq g a2 (ASort O n))))).(\lambda 
20500 (H6: (eq T (THead (Bind b) u t) (TSort n))).(let H7 \def (eq_ind T (THead 
20501 (Bind b) u t) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with 
20502 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
20503 \Rightarrow True])) I (TSort n) H6) in (False_ind (leq g a2 (ASort O n)) 
20504 H7)))))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (a1: A).(\lambda 
20505 (_: (arity g c0 u (asucc g a1))).(\lambda (_: (((eq T u (TSort n)) \to (leq g 
20506 (asucc g a1) (ASort O n))))).(\lambda (t: T).(\lambda (a2: A).(\lambda (_: 
20507 (arity g (CHead c0 (Bind Abst) u) t a2)).(\lambda (_: (((eq T t (TSort n)) 
20508 \to (leq g a2 (ASort O n))))).(\lambda (H5: (eq T (THead (Bind Abst) u t) 
20509 (TSort n))).(let H6 \def (eq_ind T (THead (Bind Abst) u t) (\lambda (ee: 
20510 T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
20511 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) 
20512 H5) in (False_ind (leq g (AHead a1 a2) (ASort O n)) H6)))))))))))) (\lambda 
20513 (c0: C).(\lambda (u: T).(\lambda (a1: A).(\lambda (_: (arity g c0 u 
20514 a1)).(\lambda (_: (((eq T u (TSort n)) \to (leq g a1 (ASort O n))))).(\lambda 
20515 (t: T).(\lambda (a2: A).(\lambda (_: (arity g c0 t (AHead a1 a2))).(\lambda 
20516 (_: (((eq T t (TSort n)) \to (leq g (AHead a1 a2) (ASort O n))))).(\lambda 
20517 (H5: (eq T (THead (Flat Appl) u t) (TSort n))).(let H6 \def (eq_ind T (THead 
20518 (Flat Appl) u t) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with 
20519 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
20520 \Rightarrow True])) I (TSort n) H5) in (False_ind (leq g a2 (ASort O n)) 
20521 H6)))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (a0: A).(\lambda (_: 
20522 (arity g c0 u (asucc g a0))).(\lambda (_: (((eq T u (TSort n)) \to (leq g 
20523 (asucc g a0) (ASort O n))))).(\lambda (t: T).(\lambda (_: (arity g c0 t 
20524 a0)).(\lambda (_: (((eq T t (TSort n)) \to (leq g a0 (ASort O n))))).(\lambda 
20525 (H5: (eq T (THead (Flat Cast) u t) (TSort n))).(let H6 \def (eq_ind T (THead 
20526 (Flat Cast) u t) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with 
20527 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
20528 \Rightarrow True])) I (TSort n) H5) in (False_ind (leq g a0 (ASort O n)) 
20529 H6))))))))))) (\lambda (c0: C).(\lambda (t: T).(\lambda (a1: A).(\lambda (H1: 
20530 (arity g c0 t a1)).(\lambda (H2: (((eq T t (TSort n)) \to (leq g a1 (ASort O 
20531 n))))).(\lambda (a2: A).(\lambda (H3: (leq g a1 a2)).(\lambda (H4: (eq T t 
20532 (TSort n))).(let H5 \def (f_equal T T (\lambda (e: T).e) t (TSort n) H4) in 
20533 (let H6 \def (eq_ind T t (\lambda (t: T).((eq T t (TSort n)) \to (leq g a1 
20534 (ASort O n)))) H2 (TSort n) H5) in (let H7 \def (eq_ind T t (\lambda (t: 
20535 T).(arity g c0 t a1)) H1 (TSort n) H5) in (leq_trans g a2 a1 (leq_sym g a1 a2 
20536 H3) (ASort O n) (H6 (refl_equal T (TSort n))))))))))))))) c y a H0))) H))))).
20537
20538 theorem arity_gen_lref:
20539  \forall (g: G).(\forall (c: C).(\forall (i: nat).(\forall (a: A).((arity g c 
20540 (TLRef i) a) \to (or (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c 
20541 (CHead d (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u a)))) 
20542 (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c (CHead d (Bind Abst) 
20543 u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g a))))))))))
20544 \def
20545  \lambda (g: G).(\lambda (c: C).(\lambda (i: nat).(\lambda (a: A).(\lambda 
20546 (H: (arity g c (TLRef i) a)).(insert_eq T (TLRef i) (\lambda (t: T).(arity g 
20547 c t a)) (or (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c (CHead d 
20548 (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u a)))) (ex2_2 C 
20549 T (\lambda (d: C).(\lambda (u: T).(getl i c (CHead d (Bind Abst) u)))) 
20550 (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g a)))))) (\lambda (y: 
20551 T).(\lambda (H0: (arity g c y a)).(arity_ind g (\lambda (c0: C).(\lambda (t: 
20552 T).(\lambda (a0: A).((eq T t (TLRef i)) \to (or (ex2_2 C T (\lambda (d: 
20553 C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abbr) u)))) (\lambda (d: 
20554 C).(\lambda (u: T).(arity g d u a0)))) (ex2_2 C T (\lambda (d: C).(\lambda 
20555 (u: T).(getl i c0 (CHead d (Bind Abst) u)))) (\lambda (d: C).(\lambda (u: 
20556 T).(arity g d u (asucc g a0)))))))))) (\lambda (c0: C).(\lambda (n: 
20557 nat).(\lambda (H1: (eq T (TSort n) (TLRef i))).(let H2 \def (eq_ind T (TSort 
20558 n) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
20559 \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
20560 False])) I (TLRef i) H1) in (False_ind (or (ex2_2 C T (\lambda (d: 
20561 C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abbr) u)))) (\lambda (d: 
20562 C).(\lambda (u: T).(arity g d u (ASort O n))))) (ex2_2 C T (\lambda (d: 
20563 C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abst) u)))) (\lambda (d: 
20564 C).(\lambda (u: T).(arity g d u (asucc g (ASort O n))))))) H2))))) (\lambda 
20565 (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i0: nat).(\lambda (H1: 
20566 (getl i0 c0 (CHead d (Bind Abbr) u))).(\lambda (a0: A).(\lambda (H2: (arity g 
20567 d u a0)).(\lambda (_: (((eq T u (TLRef i)) \to (or (ex2_2 C T (\lambda (d0: 
20568 C).(\lambda (u: T).(getl i d (CHead d0 (Bind Abbr) u)))) (\lambda (d: 
20569 C).(\lambda (u: T).(arity g d u a0)))) (ex2_2 C T (\lambda (d0: C).(\lambda 
20570 (u: T).(getl i d (CHead d0 (Bind Abst) u)))) (\lambda (d: C).(\lambda (u: 
20571 T).(arity g d u (asucc g a0))))))))).(\lambda (H4: (eq T (TLRef i0) (TLRef 
20572 i))).(let H5 \def (f_equal T nat (\lambda (e: T).(match e return (\lambda (_: 
20573 T).nat) with [(TSort _) \Rightarrow i0 | (TLRef n) \Rightarrow n | (THead _ _ 
20574 _) \Rightarrow i0])) (TLRef i0) (TLRef i) H4) in (let H6 \def (eq_ind nat i0 
20575 (\lambda (n: nat).(getl n c0 (CHead d (Bind Abbr) u))) H1 i H5) in (or_introl 
20576 (ex2_2 C T (\lambda (d0: C).(\lambda (u0: T).(getl i c0 (CHead d0 (Bind Abbr) 
20577 u0)))) (\lambda (d0: C).(\lambda (u0: T).(arity g d0 u0 a0)))) (ex2_2 C T 
20578 (\lambda (d0: C).(\lambda (u0: T).(getl i c0 (CHead d0 (Bind Abst) u0)))) 
20579 (\lambda (d0: C).(\lambda (u0: T).(arity g d0 u0 (asucc g a0))))) 
20580 (ex2_2_intro C T (\lambda (d0: C).(\lambda (u0: T).(getl i c0 (CHead d0 (Bind 
20581 Abbr) u0)))) (\lambda (d0: C).(\lambda (u0: T).(arity g d0 u0 a0))) d u H6 
20582 H2))))))))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda 
20583 (i0: nat).(\lambda (H1: (getl i0 c0 (CHead d (Bind Abst) u))).(\lambda (a0: 
20584 A).(\lambda (H2: (arity g d u (asucc g a0))).(\lambda (_: (((eq T u (TLRef 
20585 i)) \to (or (ex2_2 C T (\lambda (d0: C).(\lambda (u: T).(getl i d (CHead d0 
20586 (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g 
20587 a0))))) (ex2_2 C T (\lambda (d0: C).(\lambda (u: T).(getl i d (CHead d0 (Bind 
20588 Abst) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g (asucc g 
20589 a0)))))))))).(\lambda (H4: (eq T (TLRef i0) (TLRef i))).(let H5 \def (f_equal 
20590 T nat (\lambda (e: T).(match e return (\lambda (_: T).nat) with [(TSort _) 
20591 \Rightarrow i0 | (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow i0])) 
20592 (TLRef i0) (TLRef i) H4) in (let H6 \def (eq_ind nat i0 (\lambda (n: 
20593 nat).(getl n c0 (CHead d (Bind Abst) u))) H1 i H5) in (or_intror (ex2_2 C T 
20594 (\lambda (d0: C).(\lambda (u0: T).(getl i c0 (CHead d0 (Bind Abbr) u0)))) 
20595 (\lambda (d0: C).(\lambda (u0: T).(arity g d0 u0 a0)))) (ex2_2 C T (\lambda 
20596 (d0: C).(\lambda (u0: T).(getl i c0 (CHead d0 (Bind Abst) u0)))) (\lambda 
20597 (d0: C).(\lambda (u0: T).(arity g d0 u0 (asucc g a0))))) (ex2_2_intro C T 
20598 (\lambda (d0: C).(\lambda (u0: T).(getl i c0 (CHead d0 (Bind Abst) u0)))) 
20599 (\lambda (d0: C).(\lambda (u0: T).(arity g d0 u0 (asucc g a0)))) d u H6 
20600 H2))))))))))))) (\lambda (b: B).(\lambda (_: (not (eq B b Abst))).(\lambda 
20601 (c0: C).(\lambda (u: T).(\lambda (a1: A).(\lambda (_: (arity g c0 u 
20602 a1)).(\lambda (_: (((eq T u (TLRef i)) \to (or (ex2_2 C T (\lambda (d: 
20603 C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abbr) u)))) (\lambda (d: 
20604 C).(\lambda (u: T).(arity g d u a1)))) (ex2_2 C T (\lambda (d: C).(\lambda 
20605 (u: T).(getl i c0 (CHead d (Bind Abst) u)))) (\lambda (d: C).(\lambda (u: 
20606 T).(arity g d u (asucc g a1))))))))).(\lambda (t: T).(\lambda (a2: 
20607 A).(\lambda (_: (arity g (CHead c0 (Bind b) u) t a2)).(\lambda (_: (((eq T t 
20608 (TLRef i)) \to (or (ex2_2 C T (\lambda (d: C).(\lambda (u0: T).(getl i (CHead 
20609 c0 (Bind b) u) (CHead d (Bind Abbr) u0)))) (\lambda (d: C).(\lambda (u: 
20610 T).(arity g d u a2)))) (ex2_2 C T (\lambda (d: C).(\lambda (u0: T).(getl i 
20611 (CHead c0 (Bind b) u) (CHead d (Bind Abst) u0)))) (\lambda (d: C).(\lambda 
20612 (u: T).(arity g d u (asucc g a2))))))))).(\lambda (H6: (eq T (THead (Bind b) 
20613 u t) (TLRef i))).(let H7 \def (eq_ind T (THead (Bind b) u t) (\lambda (ee: 
20614 T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
20615 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef i) 
20616 H6) in (False_ind (or (ex2_2 C T (\lambda (d: C).(\lambda (u0: T).(getl i c0 
20617 (CHead d (Bind Abbr) u0)))) (\lambda (d: C).(\lambda (u0: T).(arity g d u0 
20618 a2)))) (ex2_2 C T (\lambda (d: C).(\lambda (u0: T).(getl i c0 (CHead d (Bind 
20619 Abst) u0)))) (\lambda (d: C).(\lambda (u0: T).(arity g d u0 (asucc g a2)))))) 
20620 H7)))))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (a1: A).(\lambda 
20621 (_: (arity g c0 u (asucc g a1))).(\lambda (_: (((eq T u (TLRef i)) \to (or 
20622 (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abbr) 
20623 u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g a1))))) (ex2_2 C 
20624 T (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abst) u)))) 
20625 (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g (asucc g 
20626 a1)))))))))).(\lambda (t: T).(\lambda (a2: A).(\lambda (_: (arity g (CHead c0 
20627 (Bind Abst) u) t a2)).(\lambda (_: (((eq T t (TLRef i)) \to (or (ex2_2 C T 
20628 (\lambda (d: C).(\lambda (u0: T).(getl i (CHead c0 (Bind Abst) u) (CHead d 
20629 (Bind Abbr) u0)))) (\lambda (d: C).(\lambda (u: T).(arity g d u a2)))) (ex2_2 
20630 C T (\lambda (d: C).(\lambda (u0: T).(getl i (CHead c0 (Bind Abst) u) (CHead 
20631 d (Bind Abst) u0)))) (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g 
20632 a2))))))))).(\lambda (H5: (eq T (THead (Bind Abst) u t) (TLRef i))).(let H6 
20633 \def (eq_ind T (THead (Bind Abst) u t) (\lambda (ee: T).(match ee return 
20634 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
20635 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef i) H5) in 
20636 (False_ind (or (ex2_2 C T (\lambda (d: C).(\lambda (u0: T).(getl i c0 (CHead 
20637 d (Bind Abbr) u0)))) (\lambda (d: C).(\lambda (u0: T).(arity g d u0 (AHead a1 
20638 a2))))) (ex2_2 C T (\lambda (d: C).(\lambda (u0: T).(getl i c0 (CHead d (Bind 
20639 Abst) u0)))) (\lambda (d: C).(\lambda (u0: T).(arity g d u0 (asucc g (AHead 
20640 a1 a2))))))) H6)))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (a1: 
20641 A).(\lambda (_: (arity g c0 u a1)).(\lambda (_: (((eq T u (TLRef i)) \to (or 
20642 (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abbr) 
20643 u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u a1)))) (ex2_2 C T (\lambda 
20644 (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abst) u)))) (\lambda (d: 
20645 C).(\lambda (u: T).(arity g d u (asucc g a1))))))))).(\lambda (t: T).(\lambda 
20646 (a2: A).(\lambda (_: (arity g c0 t (AHead a1 a2))).(\lambda (_: (((eq T t 
20647 (TLRef i)) \to (or (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 
20648 (CHead d (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u 
20649 (AHead a1 a2))))) (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 
20650 (CHead d (Bind Abst) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u 
20651 (asucc g (AHead a1 a2)))))))))).(\lambda (H5: (eq T (THead (Flat Appl) u t) 
20652 (TLRef i))).(let H6 \def (eq_ind T (THead (Flat Appl) u t) (\lambda (ee: 
20653 T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
20654 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef i) 
20655 H5) in (False_ind (or (ex2_2 C T (\lambda (d: C).(\lambda (u0: T).(getl i c0 
20656 (CHead d (Bind Abbr) u0)))) (\lambda (d: C).(\lambda (u0: T).(arity g d u0 
20657 a2)))) (ex2_2 C T (\lambda (d: C).(\lambda (u0: T).(getl i c0 (CHead d (Bind 
20658 Abst) u0)))) (\lambda (d: C).(\lambda (u0: T).(arity g d u0 (asucc g a2)))))) 
20659 H6)))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (a0: A).(\lambda (_: 
20660 (arity g c0 u (asucc g a0))).(\lambda (_: (((eq T u (TLRef i)) \to (or (ex2_2 
20661 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abbr) u)))) 
20662 (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g a0))))) (ex2_2 C T 
20663 (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abst) u)))) 
20664 (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g (asucc g 
20665 a0)))))))))).(\lambda (t: T).(\lambda (_: (arity g c0 t a0)).(\lambda (_: 
20666 (((eq T t (TLRef i)) \to (or (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl 
20667 i c0 (CHead d (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u 
20668 a0)))) (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind 
20669 Abst) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g 
20670 a0))))))))).(\lambda (H5: (eq T (THead (Flat Cast) u t) (TLRef i))).(let H6 
20671 \def (eq_ind T (THead (Flat Cast) u t) (\lambda (ee: T).(match ee return 
20672 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
20673 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef i) H5) in 
20674 (False_ind (or (ex2_2 C T (\lambda (d: C).(\lambda (u0: T).(getl i c0 (CHead 
20675 d (Bind Abbr) u0)))) (\lambda (d: C).(\lambda (u0: T).(arity g d u0 a0)))) 
20676 (ex2_2 C T (\lambda (d: C).(\lambda (u0: T).(getl i c0 (CHead d (Bind Abst) 
20677 u0)))) (\lambda (d: C).(\lambda (u0: T).(arity g d u0 (asucc g a0)))))) 
20678 H6))))))))))) (\lambda (c0: C).(\lambda (t: T).(\lambda (a1: A).(\lambda (H1: 
20679 (arity g c0 t a1)).(\lambda (H2: (((eq T t (TLRef i)) \to (or (ex2_2 C T 
20680 (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abbr) u)))) 
20681 (\lambda (d: C).(\lambda (u: T).(arity g d u a1)))) (ex2_2 C T (\lambda (d: 
20682 C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abst) u)))) (\lambda (d: 
20683 C).(\lambda (u: T).(arity g d u (asucc g a1))))))))).(\lambda (a2: 
20684 A).(\lambda (H3: (leq g a1 a2)).(\lambda (H4: (eq T t (TLRef i))).(let H5 
20685 \def (f_equal T T (\lambda (e: T).e) t (TLRef i) H4) in (let H6 \def (eq_ind 
20686 T t (\lambda (t: T).((eq T t (TLRef i)) \to (or (ex2_2 C T (\lambda (d: 
20687 C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abbr) u)))) (\lambda (d: 
20688 C).(\lambda (u: T).(arity g d u a1)))) (ex2_2 C T (\lambda (d: C).(\lambda 
20689 (u: T).(getl i c0 (CHead d (Bind Abst) u)))) (\lambda (d: C).(\lambda (u: 
20690 T).(arity g d u (asucc g a1)))))))) H2 (TLRef i) H5) in (let H7 \def (eq_ind 
20691 T t (\lambda (t: T).(arity g c0 t a1)) H1 (TLRef i) H5) in (let H8 \def (H6 
20692 (refl_equal T (TLRef i))) in (or_ind (ex2_2 C T (\lambda (d: C).(\lambda (u: 
20693 T).(getl i c0 (CHead d (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: 
20694 T).(arity g d u a1)))) (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 
20695 (CHead d (Bind Abst) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u 
20696 (asucc g a1))))) (or (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 
20697 (CHead d (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u 
20698 a2)))) (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind 
20699 Abst) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g a2)))))) 
20700 (\lambda (H9: (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d 
20701 (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u 
20702 a1))))).(ex2_2_ind C T (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d 
20703 (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u a1))) (or 
20704 (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abbr) 
20705 u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u a2)))) (ex2_2 C T (\lambda 
20706 (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abst) u)))) (\lambda (d: 
20707 C).(\lambda (u: T).(arity g d u (asucc g a2)))))) (\lambda (x0: C).(\lambda 
20708 (x1: T).(\lambda (H10: (getl i c0 (CHead x0 (Bind Abbr) x1))).(\lambda (H11: 
20709 (arity g x0 x1 a1)).(or_introl (ex2_2 C T (\lambda (d: C).(\lambda (u: 
20710 T).(getl i c0 (CHead d (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: 
20711 T).(arity g d u a2)))) (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 
20712 (CHead d (Bind Abst) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u 
20713 (asucc g a2))))) (ex2_2_intro C T (\lambda (d: C).(\lambda (u: T).(getl i c0 
20714 (CHead d (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u a2))) 
20715 x0 x1 H10 (arity_repl g x0 x1 a1 H11 a2 H3))))))) H9)) (\lambda (H9: (ex2_2 C 
20716 T (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abst) u)))) 
20717 (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g a1)))))).(ex2_2_ind C T 
20718 (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abst) u)))) 
20719 (\lambda (d: C).(\lambda (u: T).(arity g d u (asucc g a1)))) (or (ex2_2 C T 
20720 (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abbr) u)))) 
20721 (\lambda (d: C).(\lambda (u: T).(arity g d u a2)))) (ex2_2 C T (\lambda (d: 
20722 C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abst) u)))) (\lambda (d: 
20723 C).(\lambda (u: T).(arity g d u (asucc g a2)))))) (\lambda (x0: C).(\lambda 
20724 (x1: T).(\lambda (H10: (getl i c0 (CHead x0 (Bind Abst) x1))).(\lambda (H11: 
20725 (arity g x0 x1 (asucc g a1))).(or_intror (ex2_2 C T (\lambda (d: C).(\lambda 
20726 (u: T).(getl i c0 (CHead d (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: 
20727 T).(arity g d u a2)))) (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 
20728 (CHead d (Bind Abst) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u 
20729 (asucc g a2))))) (ex2_2_intro C T (\lambda (d: C).(\lambda (u: T).(getl i c0 
20730 (CHead d (Bind Abst) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u 
20731 (asucc g a2)))) x0 x1 H10 (arity_repl g x0 x1 (asucc g a1) H11 (asucc g a2) 
20732 (asucc_repl g a1 a2 H3)))))))) H9)) H8))))))))))))) c y a H0))) H))))).
20733
20734 theorem arity_gen_bind:
20735  \forall (b: B).((not (eq B b Abst)) \to (\forall (g: G).(\forall (c: 
20736 C).(\forall (u: T).(\forall (t: T).(\forall (a2: A).((arity g c (THead (Bind 
20737 b) u t) a2) \to (ex2 A (\lambda (a1: A).(arity g c u a1)) (\lambda (_: 
20738 A).(arity g (CHead c (Bind b) u) t a2))))))))))
20739 \def
20740  \lambda (b: B).(\lambda (H: (not (eq B b Abst))).(\lambda (g: G).(\lambda 
20741 (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (a2: A).(\lambda (H0: (arity 
20742 g c (THead (Bind b) u t) a2)).(insert_eq T (THead (Bind b) u t) (\lambda (t0: 
20743 T).(arity g c t0 a2)) (ex2 A (\lambda (a1: A).(arity g c u a1)) (\lambda (_: 
20744 A).(arity g (CHead c (Bind b) u) t a2))) (\lambda (y: T).(\lambda (H1: (arity 
20745 g c y a2)).(arity_ind g (\lambda (c0: C).(\lambda (t0: T).(\lambda (a: 
20746 A).((eq T t0 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g c0 u 
20747 a1)) (\lambda (_: A).(arity g (CHead c0 (Bind b) u) t a))))))) (\lambda (c0: 
20748 C).(\lambda (n: nat).(\lambda (H2: (eq T (TSort n) (THead (Bind b) u 
20749 t))).(let H3 \def (eq_ind T (TSort n) (\lambda (ee: T).(match ee return 
20750 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) 
20751 \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (THead (Bind b) u t) 
20752 H2) in (False_ind (ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (_: 
20753 A).(arity g (CHead c0 (Bind b) u) t (ASort O n)))) H3))))) (\lambda (c0: 
20754 C).(\lambda (d: C).(\lambda (u0: T).(\lambda (i: nat).(\lambda (_: (getl i c0 
20755 (CHead d (Bind Abbr) u0))).(\lambda (a: A).(\lambda (_: (arity g d u0 
20756 a)).(\lambda (_: (((eq T u0 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: 
20757 A).(arity g d u a1)) (\lambda (_: A).(arity g (CHead d (Bind b) u) t 
20758 a)))))).(\lambda (H5: (eq T (TLRef i) (THead (Bind b) u t))).(let H6 \def 
20759 (eq_ind T (TLRef i) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) 
20760 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ 
20761 _) \Rightarrow False])) I (THead (Bind b) u t) H5) in (False_ind (ex2 A 
20762 (\lambda (a1: A).(arity g c0 u a1)) (\lambda (_: A).(arity g (CHead c0 (Bind 
20763 b) u) t a))) H6))))))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u0: 
20764 T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind Abst) 
20765 u0))).(\lambda (a: A).(\lambda (_: (arity g d u0 (asucc g a))).(\lambda (_: 
20766 (((eq T u0 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g d u 
20767 a1)) (\lambda (_: A).(arity g (CHead d (Bind b) u) t (asucc g 
20768 a))))))).(\lambda (H5: (eq T (TLRef i) (THead (Bind b) u t))).(let H6 \def 
20769 (eq_ind T (TLRef i) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) 
20770 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ 
20771 _) \Rightarrow False])) I (THead (Bind b) u t) H5) in (False_ind (ex2 A 
20772 (\lambda (a1: A).(arity g c0 u a1)) (\lambda (_: A).(arity g (CHead c0 (Bind 
20773 b) u) t a))) H6))))))))))) (\lambda (b0: B).(\lambda (H2: (not (eq B b0 
20774 Abst))).(\lambda (c0: C).(\lambda (u0: T).(\lambda (a1: A).(\lambda (H3: 
20775 (arity g c0 u0 a1)).(\lambda (H4: (((eq T u0 (THead (Bind b) u t)) \to (ex2 A 
20776 (\lambda (a1: A).(arity g c0 u a1)) (\lambda (_: A).(arity g (CHead c0 (Bind 
20777 b) u) t a1)))))).(\lambda (t0: T).(\lambda (a0: A).(\lambda (H5: (arity g 
20778 (CHead c0 (Bind b0) u0) t0 a0)).(\lambda (H6: (((eq T t0 (THead (Bind b) u 
20779 t)) \to (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind b0) u0) u a1)) 
20780 (\lambda (_: A).(arity g (CHead (CHead c0 (Bind b0) u0) (Bind b) u) t 
20781 a0)))))).(\lambda (H7: (eq T (THead (Bind b0) u0 t0) (THead (Bind b) u 
20782 t))).(let H8 \def (f_equal T B (\lambda (e: T).(match e return (\lambda (_: 
20783 T).B) with [(TSort _) \Rightarrow b0 | (TLRef _) \Rightarrow b0 | (THead k _ 
20784 _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow 
20785 b | (Flat _) \Rightarrow b0])])) (THead (Bind b0) u0 t0) (THead (Bind b) u t) 
20786 H7) in ((let H9 \def (f_equal T T (\lambda (e: T).(match e return (\lambda 
20787 (_: T).T) with [(TSort _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead 
20788 _ t _) \Rightarrow t])) (THead (Bind b0) u0 t0) (THead (Bind b) u t) H7) in 
20789 ((let H10 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
20790 T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ 
20791 t) \Rightarrow t])) (THead (Bind b0) u0 t0) (THead (Bind b) u t) H7) in 
20792 (\lambda (H11: (eq T u0 u)).(\lambda (H12: (eq B b0 b)).(let H13 \def (eq_ind 
20793 T t0 (\lambda (t0: T).((eq T t0 (THead (Bind b) u t)) \to (ex2 A (\lambda 
20794 (a1: A).(arity g (CHead c0 (Bind b0) u0) u a1)) (\lambda (_: A).(arity g 
20795 (CHead (CHead c0 (Bind b0) u0) (Bind b) u) t a0))))) H6 t H10) in (let H14 
20796 \def (eq_ind T t0 (\lambda (t: T).(arity g (CHead c0 (Bind b0) u0) t a0)) H5 
20797 t H10) in (let H15 \def (eq_ind T u0 (\lambda (t0: T).((eq T t (THead (Bind 
20798 b) u t)) \to (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind b0) t0) u a1)) 
20799 (\lambda (_: A).(arity g (CHead (CHead c0 (Bind b0) t0) (Bind b) u) t a0))))) 
20800 H13 u H11) in (let H16 \def (eq_ind T u0 (\lambda (t0: T).(arity g (CHead c0 
20801 (Bind b0) t0) t a0)) H14 u H11) in (let H17 \def (eq_ind T u0 (\lambda (t0: 
20802 T).((eq T t0 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g c0 u 
20803 a1)) (\lambda (_: A).(arity g (CHead c0 (Bind b) u) t a1))))) H4 u H11) in 
20804 (let H18 \def (eq_ind T u0 (\lambda (t: T).(arity g c0 t a1)) H3 u H11) in 
20805 (let H19 \def (eq_ind B b0 (\lambda (b0: B).((eq T t (THead (Bind b) u t)) 
20806 \to (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind b0) u) u a1)) (\lambda 
20807 (_: A).(arity g (CHead (CHead c0 (Bind b0) u) (Bind b) u) t a0))))) H15 b 
20808 H12) in (let H20 \def (eq_ind B b0 (\lambda (b: B).(arity g (CHead c0 (Bind 
20809 b) u) t a0)) H16 b H12) in (let H21 \def (eq_ind B b0 (\lambda (b: B).(not 
20810 (eq B b Abst))) H2 b H12) in (ex_intro2 A (\lambda (a3: A).(arity g c0 u a3)) 
20811 (\lambda (_: A).(arity g (CHead c0 (Bind b) u) t a0)) a1 H18 H20))))))))))))) 
20812 H9)) H8)))))))))))))) (\lambda (c0: C).(\lambda (u0: T).(\lambda (a1: 
20813 A).(\lambda (H2: (arity g c0 u0 (asucc g a1))).(\lambda (H3: (((eq T u0 
20814 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda 
20815 (_: A).(arity g (CHead c0 (Bind b) u) t (asucc g a1))))))).(\lambda (t0: 
20816 T).(\lambda (a0: A).(\lambda (H4: (arity g (CHead c0 (Bind Abst) u0) t0 
20817 a0)).(\lambda (H5: (((eq T t0 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: 
20818 A).(arity g (CHead c0 (Bind Abst) u0) u a1)) (\lambda (_: A).(arity g (CHead 
20819 (CHead c0 (Bind Abst) u0) (Bind b) u) t a0)))))).(\lambda (H6: (eq T (THead 
20820 (Bind Abst) u0 t0) (THead (Bind b) u t))).(let H7 \def (f_equal T B (\lambda 
20821 (e: T).(match e return (\lambda (_: T).B) with [(TSort _) \Rightarrow Abst | 
20822 (TLRef _) \Rightarrow Abst | (THead k _ _) \Rightarrow (match k return 
20823 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
20824 Abst])])) (THead (Bind Abst) u0 t0) (THead (Bind b) u t) H6) in ((let H8 \def 
20825 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
20826 _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) 
20827 (THead (Bind Abst) u0 t0) (THead (Bind b) u t) H6) in ((let H9 \def (f_equal 
20828 T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
20829 \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
20830 (THead (Bind Abst) u0 t0) (THead (Bind b) u t) H6) in (\lambda (H10: (eq T u0 
20831 u)).(\lambda (H11: (eq B Abst b)).(let H12 \def (eq_ind T t0 (\lambda (t0: 
20832 T).((eq T t0 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g 
20833 (CHead c0 (Bind Abst) u0) u a1)) (\lambda (_: A).(arity g (CHead (CHead c0 
20834 (Bind Abst) u0) (Bind b) u) t a0))))) H5 t H9) in (let H13 \def (eq_ind T t0 
20835 (\lambda (t: T).(arity g (CHead c0 (Bind Abst) u0) t a0)) H4 t H9) in (let 
20836 H14 \def (eq_ind T u0 (\lambda (t0: T).((eq T t (THead (Bind b) u t)) \to 
20837 (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind Abst) t0) u a1)) (\lambda 
20838 (_: A).(arity g (CHead (CHead c0 (Bind Abst) t0) (Bind b) u) t a0))))) H12 u 
20839 H10) in (let H15 \def (eq_ind T u0 (\lambda (t0: T).(arity g (CHead c0 (Bind 
20840 Abst) t0) t a0)) H13 u H10) in (let H16 \def (eq_ind T u0 (\lambda (t0: 
20841 T).((eq T t0 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g c0 u 
20842 a1)) (\lambda (_: A).(arity g (CHead c0 (Bind b) u) t (asucc g a1)))))) H3 u 
20843 H10) in (let H17 \def (eq_ind T u0 (\lambda (t: T).(arity g c0 t (asucc g 
20844 a1))) H2 u H10) in (let H18 \def (eq_ind_r B b (\lambda (b: B).((eq T t 
20845 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind 
20846 Abst) u) u a1)) (\lambda (_: A).(arity g (CHead (CHead c0 (Bind Abst) u) 
20847 (Bind b) u) t a0))))) H14 Abst H11) in (let H19 \def (eq_ind_r B b (\lambda 
20848 (b: B).((eq T u (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g c0 
20849 u a1)) (\lambda (_: A).(arity g (CHead c0 (Bind b) u) t (asucc g a1)))))) H16 
20850 Abst H11) in (let H20 \def (eq_ind_r B b (\lambda (b: B).(not (eq B b Abst))) 
20851 H Abst H11) in (eq_ind B Abst (\lambda (b0: B).(ex2 A (\lambda (a3: A).(arity 
20852 g c0 u a3)) (\lambda (_: A).(arity g (CHead c0 (Bind b0) u) t (AHead a1 
20853 a0))))) (let H21 \def (match (H20 (refl_equal B Abst)) return (\lambda (_: 
20854 False).(ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (_: A).(arity g 
20855 (CHead c0 (Bind Abst) u) t (AHead a1 a0))))) with []) in H21) b 
20856 H11))))))))))))) H8)) H7)))))))))))) (\lambda (c0: C).(\lambda (u0: 
20857 T).(\lambda (a1: A).(\lambda (_: (arity g c0 u0 a1)).(\lambda (_: (((eq T u0 
20858 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda 
20859 (_: A).(arity g (CHead c0 (Bind b) u) t a1)))))).(\lambda (t0: T).(\lambda 
20860 (a0: A).(\lambda (_: (arity g c0 t0 (AHead a1 a0))).(\lambda (_: (((eq T t0 
20861 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda 
20862 (_: A).(arity g (CHead c0 (Bind b) u) t (AHead a1 a0))))))).(\lambda (H6: (eq 
20863 T (THead (Flat Appl) u0 t0) (THead (Bind b) u t))).(let H7 \def (eq_ind T 
20864 (THead (Flat Appl) u0 t0) (\lambda (ee: T).(match ee return (\lambda (_: 
20865 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
20866 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
20867 _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u t) 
20868 H6) in (False_ind (ex2 A (\lambda (a3: A).(arity g c0 u a3)) (\lambda (_: 
20869 A).(arity g (CHead c0 (Bind b) u) t a0))) H7)))))))))))) (\lambda (c0: 
20870 C).(\lambda (u0: T).(\lambda (a: A).(\lambda (_: (arity g c0 u0 (asucc g 
20871 a))).(\lambda (_: (((eq T u0 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: 
20872 A).(arity g c0 u a1)) (\lambda (_: A).(arity g (CHead c0 (Bind b) u) t (asucc 
20873 g a))))))).(\lambda (t0: T).(\lambda (_: (arity g c0 t0 a)).(\lambda (_: 
20874 (((eq T t0 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g c0 u 
20875 a1)) (\lambda (_: A).(arity g (CHead c0 (Bind b) u) t a)))))).(\lambda (H6: 
20876 (eq T (THead (Flat Cast) u0 t0) (THead (Bind b) u t))).(let H7 \def (eq_ind T 
20877 (THead (Flat Cast) u0 t0) (\lambda (ee: T).(match ee return (\lambda (_: 
20878 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
20879 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
20880 _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u t) 
20881 H6) in (False_ind (ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (_: 
20882 A).(arity g (CHead c0 (Bind b) u) t a))) H7))))))))))) (\lambda (c0: 
20883 C).(\lambda (t0: T).(\lambda (a1: A).(\lambda (H2: (arity g c0 t0 
20884 a1)).(\lambda (H3: (((eq T t0 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: 
20885 A).(arity g c0 u a1)) (\lambda (_: A).(arity g (CHead c0 (Bind b) u) t 
20886 a1)))))).(\lambda (a0: A).(\lambda (H4: (leq g a1 a0)).(\lambda (H5: (eq T t0 
20887 (THead (Bind b) u t))).(let H6 \def (f_equal T T (\lambda (e: T).e) t0 (THead 
20888 (Bind b) u t) H5) in (let H7 \def (eq_ind T t0 (\lambda (t0: T).((eq T t0 
20889 (THead (Bind b) u t)) \to (ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda 
20890 (_: A).(arity g (CHead c0 (Bind b) u) t a1))))) H3 (THead (Bind b) u t) H6) 
20891 in (let H8 \def (eq_ind T t0 (\lambda (t: T).(arity g c0 t a1)) H2 (THead 
20892 (Bind b) u t) H6) in (let H9 \def (H7 (refl_equal T (THead (Bind b) u t))) in 
20893 (ex2_ind A (\lambda (a3: A).(arity g c0 u a3)) (\lambda (_: A).(arity g 
20894 (CHead c0 (Bind b) u) t a1)) (ex2 A (\lambda (a3: A).(arity g c0 u a3)) 
20895 (\lambda (_: A).(arity g (CHead c0 (Bind b) u) t a0))) (\lambda (x: 
20896 A).(\lambda (H10: (arity g c0 u x)).(\lambda (H11: (arity g (CHead c0 (Bind 
20897 b) u) t a1)).(ex_intro2 A (\lambda (a3: A).(arity g c0 u a3)) (\lambda (_: 
20898 A).(arity g (CHead c0 (Bind b) u) t a0)) x H10 (arity_repl g (CHead c0 (Bind 
20899 b) u) t a1 H11 a0 H4))))) H9))))))))))))) c y a2 H1))) H0)))))))).
20900
20901 theorem arity_gen_abst:
20902  \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t: T).(\forall (a: 
20903 A).((arity g c (THead (Bind Abst) u t) a) \to (ex3_2 A A (\lambda (a1: 
20904 A).(\lambda (a2: A).(eq A a (AHead a1 a2)))) (\lambda (a1: A).(\lambda (_: 
20905 A).(arity g c u (asucc g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g 
20906 (CHead c (Bind Abst) u) t a2)))))))))
20907 \def
20908  \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (a: 
20909 A).(\lambda (H: (arity g c (THead (Bind Abst) u t) a)).(insert_eq T (THead 
20910 (Bind Abst) u t) (\lambda (t0: T).(arity g c t0 a)) (ex3_2 A A (\lambda (a1: 
20911 A).(\lambda (a2: A).(eq A a (AHead a1 a2)))) (\lambda (a1: A).(\lambda (_: 
20912 A).(arity g c u (asucc g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g 
20913 (CHead c (Bind Abst) u) t a2)))) (\lambda (y: T).(\lambda (H0: (arity g c y 
20914 a)).(arity_ind g (\lambda (c0: C).(\lambda (t0: T).(\lambda (a0: A).((eq T t0 
20915 (THead (Bind Abst) u t)) \to (ex3_2 A A (\lambda (a1: A).(\lambda (a2: A).(eq 
20916 A a0 (AHead a1 a2)))) (\lambda (a1: A).(\lambda (_: A).(arity g c0 u (asucc g 
20917 a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g (CHead c0 (Bind Abst) u) t 
20918 a2)))))))) (\lambda (c0: C).(\lambda (n: nat).(\lambda (H1: (eq T (TSort n) 
20919 (THead (Bind Abst) u t))).(let H2 \def (eq_ind T (TSort n) (\lambda (ee: 
20920 T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | 
20921 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (THead 
20922 (Bind Abst) u t) H1) in (False_ind (ex3_2 A A (\lambda (a1: A).(\lambda (a2: 
20923 A).(eq A (ASort O n) (AHead a1 a2)))) (\lambda (a1: A).(\lambda (_: A).(arity 
20924 g c0 u (asucc g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g (CHead c0 
20925 (Bind Abst) u) t a2)))) H2))))) (\lambda (c0: C).(\lambda (d: C).(\lambda 
20926 (u0: T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind Abbr) 
20927 u0))).(\lambda (a0: A).(\lambda (_: (arity g d u0 a0)).(\lambda (_: (((eq T 
20928 u0 (THead (Bind Abst) u t)) \to (ex3_2 A A (\lambda (a1: A).(\lambda (a2: 
20929 A).(eq A a0 (AHead a1 a2)))) (\lambda (a1: A).(\lambda (_: A).(arity g d u 
20930 (asucc g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g (CHead d (Bind 
20931 Abst) u) t a2))))))).(\lambda (H4: (eq T (TLRef i) (THead (Bind Abst) u 
20932 t))).(let H5 \def (eq_ind T (TLRef i) (\lambda (ee: T).(match ee return 
20933 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
20934 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead (Bind Abst) u 
20935 t) H4) in (False_ind (ex3_2 A A (\lambda (a1: A).(\lambda (a2: A).(eq A a0 
20936 (AHead a1 a2)))) (\lambda (a1: A).(\lambda (_: A).(arity g c0 u (asucc g 
20937 a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g (CHead c0 (Bind Abst) u) t 
20938 a2)))) H5))))))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u0: 
20939 T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind Abst) 
20940 u0))).(\lambda (a0: A).(\lambda (_: (arity g d u0 (asucc g a0))).(\lambda (_: 
20941 (((eq T u0 (THead (Bind Abst) u t)) \to (ex3_2 A A (\lambda (a1: A).(\lambda 
20942 (a2: A).(eq A (asucc g a0) (AHead a1 a2)))) (\lambda (a1: A).(\lambda (_: 
20943 A).(arity g d u (asucc g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g 
20944 (CHead d (Bind Abst) u) t a2))))))).(\lambda (H4: (eq T (TLRef i) (THead 
20945 (Bind Abst) u t))).(let H5 \def (eq_ind T (TLRef i) (\lambda (ee: T).(match 
20946 ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
20947 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead (Bind Abst) u 
20948 t) H4) in (False_ind (ex3_2 A A (\lambda (a1: A).(\lambda (a2: A).(eq A a0 
20949 (AHead a1 a2)))) (\lambda (a1: A).(\lambda (_: A).(arity g c0 u (asucc g 
20950 a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g (CHead c0 (Bind Abst) u) t 
20951 a2)))) H5))))))))))) (\lambda (b: B).(\lambda (H1: (not (eq B b 
20952 Abst))).(\lambda (c0: C).(\lambda (u0: T).(\lambda (a1: A).(\lambda (H2: 
20953 (arity g c0 u0 a1)).(\lambda (H3: (((eq T u0 (THead (Bind Abst) u t)) \to 
20954 (ex3_2 A A (\lambda (a2: A).(\lambda (a3: A).(eq A a1 (AHead a2 a3)))) 
20955 (\lambda (a1: A).(\lambda (_: A).(arity g c0 u (asucc g a1)))) (\lambda (_: 
20956 A).(\lambda (a2: A).(arity g (CHead c0 (Bind Abst) u) t a2))))))).(\lambda 
20957 (t0: T).(\lambda (a2: A).(\lambda (H4: (arity g (CHead c0 (Bind b) u0) t0 
20958 a2)).(\lambda (H5: (((eq T t0 (THead (Bind Abst) u t)) \to (ex3_2 A A 
20959 (\lambda (a1: A).(\lambda (a3: A).(eq A a2 (AHead a1 a3)))) (\lambda (a1: 
20960 A).(\lambda (_: A).(arity g (CHead c0 (Bind b) u0) u (asucc g a1)))) (\lambda 
20961 (_: A).(\lambda (a2: A).(arity g (CHead (CHead c0 (Bind b) u0) (Bind Abst) u) 
20962 t a2))))))).(\lambda (H6: (eq T (THead (Bind b) u0 t0) (THead (Bind Abst) u 
20963 t))).(let H7 \def (f_equal T B (\lambda (e: T).(match e return (\lambda (_: 
20964 T).B) with [(TSort _) \Rightarrow b | (TLRef _) \Rightarrow b | (THead k _ _) 
20965 \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | 
20966 (Flat _) \Rightarrow b])])) (THead (Bind b) u0 t0) (THead (Bind Abst) u t) 
20967 H6) in ((let H8 \def (f_equal T T (\lambda (e: T).(match e return (\lambda 
20968 (_: T).T) with [(TSort _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead 
20969 _ t _) \Rightarrow t])) (THead (Bind b) u0 t0) (THead (Bind Abst) u t) H6) in 
20970 ((let H9 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) 
20971 with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) 
20972 \Rightarrow t])) (THead (Bind b) u0 t0) (THead (Bind Abst) u t) H6) in 
20973 (\lambda (H10: (eq T u0 u)).(\lambda (H11: (eq B b Abst)).(let H12 \def 
20974 (eq_ind T t0 (\lambda (t0: T).((eq T t0 (THead (Bind Abst) u t)) \to (ex3_2 A 
20975 A (\lambda (a1: A).(\lambda (a3: A).(eq A a2 (AHead a1 a3)))) (\lambda (a1: 
20976 A).(\lambda (_: A).(arity g (CHead c0 (Bind b) u0) u (asucc g a1)))) (\lambda 
20977 (_: A).(\lambda (a2: A).(arity g (CHead (CHead c0 (Bind b) u0) (Bind Abst) u) 
20978 t a2)))))) H5 t H9) in (let H13 \def (eq_ind T t0 (\lambda (t: T).(arity g 
20979 (CHead c0 (Bind b) u0) t a2)) H4 t H9) in (let H14 \def (eq_ind T u0 (\lambda 
20980 (t0: T).((eq T t (THead (Bind Abst) u t)) \to (ex3_2 A A (\lambda (a1: 
20981 A).(\lambda (a3: A).(eq A a2 (AHead a1 a3)))) (\lambda (a1: A).(\lambda (_: 
20982 A).(arity g (CHead c0 (Bind b) t0) u (asucc g a1)))) (\lambda (_: A).(\lambda 
20983 (a2: A).(arity g (CHead (CHead c0 (Bind b) t0) (Bind Abst) u) t a2)))))) H12 
20984 u H10) in (let H15 \def (eq_ind T u0 (\lambda (t0: T).(arity g (CHead c0 
20985 (Bind b) t0) t a2)) H13 u H10) in (let H16 \def (eq_ind T u0 (\lambda (t0: 
20986 T).((eq T t0 (THead (Bind Abst) u t)) \to (ex3_2 A A (\lambda (a2: 
20987 A).(\lambda (a3: A).(eq A a1 (AHead a2 a3)))) (\lambda (a1: A).(\lambda (_: 
20988 A).(arity g c0 u (asucc g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g 
20989 (CHead c0 (Bind Abst) u) t a2)))))) H3 u H10) in (let H17 \def (eq_ind T u0 
20990 (\lambda (t: T).(arity g c0 t a1)) H2 u H10) in (let H18 \def (eq_ind B b 
20991 (\lambda (b: B).((eq T t (THead (Bind Abst) u t)) \to (ex3_2 A A (\lambda 
20992 (a1: A).(\lambda (a3: A).(eq A a2 (AHead a1 a3)))) (\lambda (a1: A).(\lambda 
20993 (_: A).(arity g (CHead c0 (Bind b) u) u (asucc g a1)))) (\lambda (_: 
20994 A).(\lambda (a2: A).(arity g (CHead (CHead c0 (Bind b) u) (Bind Abst) u) t 
20995 a2)))))) H14 Abst H11) in (let H19 \def (eq_ind B b (\lambda (b: B).(arity g 
20996 (CHead c0 (Bind b) u) t a2)) H15 Abst H11) in (let H20 \def (eq_ind B b 
20997 (\lambda (b: B).(not (eq B b Abst))) H1 Abst H11) in (let H21 \def (match 
20998 (H20 (refl_equal B Abst)) return (\lambda (_: False).(ex3_2 A A (\lambda (a1: 
20999 A).(\lambda (a3: A).(eq A a2 (AHead a1 a3)))) (\lambda (a1: A).(\lambda (_: 
21000 A).(arity g c0 u (asucc g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g 
21001 (CHead c0 (Bind Abst) u) t a2))))) with []) in H21))))))))))))) H8)) 
21002 H7)))))))))))))) (\lambda (c0: C).(\lambda (u0: T).(\lambda (a1: A).(\lambda 
21003 (H1: (arity g c0 u0 (asucc g a1))).(\lambda (H2: (((eq T u0 (THead (Bind 
21004 Abst) u t)) \to (ex3_2 A A (\lambda (a2: A).(\lambda (a3: A).(eq A (asucc g 
21005 a1) (AHead a2 a3)))) (\lambda (a1: A).(\lambda (_: A).(arity g c0 u (asucc g 
21006 a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g (CHead c0 (Bind Abst) u) t 
21007 a2))))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (H3: (arity g (CHead c0 
21008 (Bind Abst) u0) t0 a2)).(\lambda (H4: (((eq T t0 (THead (Bind Abst) u t)) \to 
21009 (ex3_2 A A (\lambda (a1: A).(\lambda (a3: A).(eq A a2 (AHead a1 a3)))) 
21010 (\lambda (a1: A).(\lambda (_: A).(arity g (CHead c0 (Bind Abst) u0) u (asucc 
21011 g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g (CHead (CHead c0 (Bind 
21012 Abst) u0) (Bind Abst) u) t a2))))))).(\lambda (H5: (eq T (THead (Bind Abst) 
21013 u0 t0) (THead (Bind Abst) u t))).(let H6 \def (f_equal T T (\lambda (e: 
21014 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow u0 | (TLRef 
21015 _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) (THead (Bind Abst) u0 t0) 
21016 (THead (Bind Abst) u t) H5) in ((let H7 \def (f_equal T T (\lambda (e: 
21017 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef 
21018 _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead (Bind Abst) u0 t0) 
21019 (THead (Bind Abst) u t) H5) in (\lambda (H8: (eq T u0 u)).(let H9 \def 
21020 (eq_ind T t0 (\lambda (t0: T).((eq T t0 (THead (Bind Abst) u t)) \to (ex3_2 A 
21021 A (\lambda (a1: A).(\lambda (a3: A).(eq A a2 (AHead a1 a3)))) (\lambda (a1: 
21022 A).(\lambda (_: A).(arity g (CHead c0 (Bind Abst) u0) u (asucc g a1)))) 
21023 (\lambda (_: A).(\lambda (a2: A).(arity g (CHead (CHead c0 (Bind Abst) u0) 
21024 (Bind Abst) u) t a2)))))) H4 t H7) in (let H10 \def (eq_ind T t0 (\lambda (t: 
21025 T).(arity g (CHead c0 (Bind Abst) u0) t a2)) H3 t H7) in (let H11 \def 
21026 (eq_ind T u0 (\lambda (t0: T).((eq T t (THead (Bind Abst) u t)) \to (ex3_2 A 
21027 A (\lambda (a1: A).(\lambda (a3: A).(eq A a2 (AHead a1 a3)))) (\lambda (a1: 
21028 A).(\lambda (_: A).(arity g (CHead c0 (Bind Abst) t0) u (asucc g a1)))) 
21029 (\lambda (_: A).(\lambda (a2: A).(arity g (CHead (CHead c0 (Bind Abst) t0) 
21030 (Bind Abst) u) t a2)))))) H9 u H8) in (let H12 \def (eq_ind T u0 (\lambda 
21031 (t0: T).(arity g (CHead c0 (Bind Abst) t0) t a2)) H10 u H8) in (let H13 \def 
21032 (eq_ind T u0 (\lambda (t0: T).((eq T t0 (THead (Bind Abst) u t)) \to (ex3_2 A 
21033 A (\lambda (a2: A).(\lambda (a3: A).(eq A (asucc g a1) (AHead a2 a3)))) 
21034 (\lambda (a1: A).(\lambda (_: A).(arity g c0 u (asucc g a1)))) (\lambda (_: 
21035 A).(\lambda (a2: A).(arity g (CHead c0 (Bind Abst) u) t a2)))))) H2 u H8) in 
21036 (let H14 \def (eq_ind T u0 (\lambda (t: T).(arity g c0 t (asucc g a1))) H1 u 
21037 H8) in (ex3_2_intro A A (\lambda (a3: A).(\lambda (a4: A).(eq A (AHead a1 a2) 
21038 (AHead a3 a4)))) (\lambda (a3: A).(\lambda (_: A).(arity g c0 u (asucc g 
21039 a3)))) (\lambda (_: A).(\lambda (a4: A).(arity g (CHead c0 (Bind Abst) u) t 
21040 a4))) a1 a2 (refl_equal A (AHead a1 a2)) H14 H12))))))))) H6)))))))))))) 
21041 (\lambda (c0: C).(\lambda (u0: T).(\lambda (a1: A).(\lambda (_: (arity g c0 
21042 u0 a1)).(\lambda (_: (((eq T u0 (THead (Bind Abst) u t)) \to (ex3_2 A A 
21043 (\lambda (a2: A).(\lambda (a3: A).(eq A a1 (AHead a2 a3)))) (\lambda (a1: 
21044 A).(\lambda (_: A).(arity g c0 u (asucc g a1)))) (\lambda (_: A).(\lambda 
21045 (a2: A).(arity g (CHead c0 (Bind Abst) u) t a2))))))).(\lambda (t0: 
21046 T).(\lambda (a2: A).(\lambda (_: (arity g c0 t0 (AHead a1 a2))).(\lambda (_: 
21047 (((eq T t0 (THead (Bind Abst) u t)) \to (ex3_2 A A (\lambda (a3: A).(\lambda 
21048 (a4: A).(eq A (AHead a1 a2) (AHead a3 a4)))) (\lambda (a1: A).(\lambda (_: 
21049 A).(arity g c0 u (asucc g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g 
21050 (CHead c0 (Bind Abst) u) t a2))))))).(\lambda (H5: (eq T (THead (Flat Appl) 
21051 u0 t0) (THead (Bind Abst) u t))).(let H6 \def (eq_ind T (THead (Flat Appl) u0 
21052 t0) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
21053 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
21054 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
21055 (Flat _) \Rightarrow True])])) I (THead (Bind Abst) u t) H5) in (False_ind 
21056 (ex3_2 A A (\lambda (a3: A).(\lambda (a4: A).(eq A a2 (AHead a3 a4)))) 
21057 (\lambda (a3: A).(\lambda (_: A).(arity g c0 u (asucc g a3)))) (\lambda (_: 
21058 A).(\lambda (a4: A).(arity g (CHead c0 (Bind Abst) u) t a4)))) H6)))))))))))) 
21059 (\lambda (c0: C).(\lambda (u0: T).(\lambda (a0: A).(\lambda (_: (arity g c0 
21060 u0 (asucc g a0))).(\lambda (_: (((eq T u0 (THead (Bind Abst) u t)) \to (ex3_2 
21061 A A (\lambda (a1: A).(\lambda (a2: A).(eq A (asucc g a0) (AHead a1 a2)))) 
21062 (\lambda (a1: A).(\lambda (_: A).(arity g c0 u (asucc g a1)))) (\lambda (_: 
21063 A).(\lambda (a2: A).(arity g (CHead c0 (Bind Abst) u) t a2))))))).(\lambda 
21064 (t0: T).(\lambda (_: (arity g c0 t0 a0)).(\lambda (_: (((eq T t0 (THead (Bind 
21065 Abst) u t)) \to (ex3_2 A A (\lambda (a1: A).(\lambda (a2: A).(eq A a0 (AHead 
21066 a1 a2)))) (\lambda (a1: A).(\lambda (_: A).(arity g c0 u (asucc g a1)))) 
21067 (\lambda (_: A).(\lambda (a2: A).(arity g (CHead c0 (Bind Abst) u) t 
21068 a2))))))).(\lambda (H5: (eq T (THead (Flat Cast) u0 t0) (THead (Bind Abst) u 
21069 t))).(let H6 \def (eq_ind T (THead (Flat Cast) u0 t0) (\lambda (ee: T).(match 
21070 ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
21071 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
21072 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
21073 (THead (Bind Abst) u t) H5) in (False_ind (ex3_2 A A (\lambda (a1: 
21074 A).(\lambda (a2: A).(eq A a0 (AHead a1 a2)))) (\lambda (a1: A).(\lambda (_: 
21075 A).(arity g c0 u (asucc g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g 
21076 (CHead c0 (Bind Abst) u) t a2)))) H6))))))))))) (\lambda (c0: C).(\lambda 
21077 (t0: T).(\lambda (a1: A).(\lambda (H1: (arity g c0 t0 a1)).(\lambda (H2: 
21078 (((eq T t0 (THead (Bind Abst) u t)) \to (ex3_2 A A (\lambda (a2: A).(\lambda 
21079 (a3: A).(eq A a1 (AHead a2 a3)))) (\lambda (a1: A).(\lambda (_: A).(arity g 
21080 c0 u (asucc g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g (CHead c0 
21081 (Bind Abst) u) t a2))))))).(\lambda (a2: A).(\lambda (H3: (leq g a1 
21082 a2)).(\lambda (H4: (eq T t0 (THead (Bind Abst) u t))).(let H5 \def (f_equal T 
21083 T (\lambda (e: T).e) t0 (THead (Bind Abst) u t) H4) in (let H6 \def (eq_ind T 
21084 t0 (\lambda (t0: T).((eq T t0 (THead (Bind Abst) u t)) \to (ex3_2 A A 
21085 (\lambda (a2: A).(\lambda (a3: A).(eq A a1 (AHead a2 a3)))) (\lambda (a1: 
21086 A).(\lambda (_: A).(arity g c0 u (asucc g a1)))) (\lambda (_: A).(\lambda 
21087 (a2: A).(arity g (CHead c0 (Bind Abst) u) t a2)))))) H2 (THead (Bind Abst) u 
21088 t) H5) in (let H7 \def (eq_ind T t0 (\lambda (t: T).(arity g c0 t a1)) H1 
21089 (THead (Bind Abst) u t) H5) in (let H8 \def (H6 (refl_equal T (THead (Bind 
21090 Abst) u t))) in (ex3_2_ind A A (\lambda (a3: A).(\lambda (a4: A).(eq A a1 
21091 (AHead a3 a4)))) (\lambda (a3: A).(\lambda (_: A).(arity g c0 u (asucc g 
21092 a3)))) (\lambda (_: A).(\lambda (a4: A).(arity g (CHead c0 (Bind Abst) u) t 
21093 a4))) (ex3_2 A A (\lambda (a3: A).(\lambda (a4: A).(eq A a2 (AHead a3 a4)))) 
21094 (\lambda (a3: A).(\lambda (_: A).(arity g c0 u (asucc g a3)))) (\lambda (_: 
21095 A).(\lambda (a4: A).(arity g (CHead c0 (Bind Abst) u) t a4)))) (\lambda (x0: 
21096 A).(\lambda (x1: A).(\lambda (H9: (eq A a1 (AHead x0 x1))).(\lambda (H10: 
21097 (arity g c0 u (asucc g x0))).(\lambda (H11: (arity g (CHead c0 (Bind Abst) u) 
21098 t x1)).(let H12 \def (eq_ind A a1 (\lambda (a: A).(leq g a a2)) H3 (AHead x0 
21099 x1) H9) in (let H13 \def (eq_ind A a1 (\lambda (a: A).(arity g c0 (THead 
21100 (Bind Abst) u t) a)) H7 (AHead x0 x1) H9) in (let H_x \def (leq_gen_head g x0 
21101 x1 a2 H12) in (let H14 \def H_x in (ex3_2_ind A A (\lambda (a3: A).(\lambda 
21102 (a4: A).(eq A a2 (AHead a3 a4)))) (\lambda (a3: A).(\lambda (_: A).(leq g x0 
21103 a3))) (\lambda (_: A).(\lambda (a4: A).(leq g x1 a4))) (ex3_2 A A (\lambda 
21104 (a3: A).(\lambda (a4: A).(eq A a2 (AHead a3 a4)))) (\lambda (a3: A).(\lambda 
21105 (_: A).(arity g c0 u (asucc g a3)))) (\lambda (_: A).(\lambda (a4: A).(arity 
21106 g (CHead c0 (Bind Abst) u) t a4)))) (\lambda (x2: A).(\lambda (x3: 
21107 A).(\lambda (H15: (eq A a2 (AHead x2 x3))).(\lambda (H16: (leq g x0 
21108 x2)).(\lambda (H17: (leq g x1 x3)).(eq_ind_r A (AHead x2 x3) (\lambda (a0: 
21109 A).(ex3_2 A A (\lambda (a3: A).(\lambda (a4: A).(eq A a0 (AHead a3 a4)))) 
21110 (\lambda (a3: A).(\lambda (_: A).(arity g c0 u (asucc g a3)))) (\lambda (_: 
21111 A).(\lambda (a4: A).(arity g (CHead c0 (Bind Abst) u) t a4))))) (ex3_2_intro 
21112 A A (\lambda (a3: A).(\lambda (a4: A).(eq A (AHead x2 x3) (AHead a3 a4)))) 
21113 (\lambda (a3: A).(\lambda (_: A).(arity g c0 u (asucc g a3)))) (\lambda (_: 
21114 A).(\lambda (a4: A).(arity g (CHead c0 (Bind Abst) u) t a4))) x2 x3 
21115 (refl_equal A (AHead x2 x3)) (arity_repl g c0 u (asucc g x0) H10 (asucc g x2) 
21116 (asucc_repl g x0 x2 H16)) (arity_repl g (CHead c0 (Bind Abst) u) t x1 H11 x3 
21117 H17)) a2 H15)))))) H14)))))))))) H8))))))))))))) c y a H0))) H)))))).
21118
21119 theorem arity_gen_appl:
21120  \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t: T).(\forall (a2: 
21121 A).((arity g c (THead (Flat Appl) u t) a2) \to (ex2 A (\lambda (a1: A).(arity 
21122 g c u a1)) (\lambda (a1: A).(arity g c t (AHead a1 a2)))))))))
21123 \def
21124  \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (a2: 
21125 A).(\lambda (H: (arity g c (THead (Flat Appl) u t) a2)).(insert_eq T (THead 
21126 (Flat Appl) u t) (\lambda (t0: T).(arity g c t0 a2)) (ex2 A (\lambda (a1: 
21127 A).(arity g c u a1)) (\lambda (a1: A).(arity g c t (AHead a1 a2)))) (\lambda 
21128 (y: T).(\lambda (H0: (arity g c y a2)).(arity_ind g (\lambda (c0: C).(\lambda 
21129 (t0: T).(\lambda (a: A).((eq T t0 (THead (Flat Appl) u t)) \to (ex2 A 
21130 (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t (AHead a1 
21131 a)))))))) (\lambda (c0: C).(\lambda (n: nat).(\lambda (H1: (eq T (TSort n) 
21132 (THead (Flat Appl) u t))).(let H2 \def (eq_ind T (TSort n) (\lambda (ee: 
21133 T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | 
21134 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (THead 
21135 (Flat Appl) u t) H1) in (False_ind (ex2 A (\lambda (a1: A).(arity g c0 u a1)) 
21136 (\lambda (a1: A).(arity g c0 t (AHead a1 (ASort O n))))) H2))))) (\lambda 
21137 (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (i: nat).(\lambda (_: (getl 
21138 i c0 (CHead d (Bind Abbr) u0))).(\lambda (a: A).(\lambda (_: (arity g d u0 
21139 a)).(\lambda (_: (((eq T u0 (THead (Flat Appl) u t)) \to (ex2 A (\lambda (a1: 
21140 A).(arity g d u a1)) (\lambda (a1: A).(arity g d t (AHead a1 
21141 a))))))).(\lambda (H4: (eq T (TLRef i) (THead (Flat Appl) u t))).(let H5 \def 
21142 (eq_ind T (TLRef i) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) 
21143 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ 
21144 _) \Rightarrow False])) I (THead (Flat Appl) u t) H4) in (False_ind (ex2 A 
21145 (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t (AHead a1 
21146 a)))) H5))))))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u0: 
21147 T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind Abst) 
21148 u0))).(\lambda (a: A).(\lambda (_: (arity g d u0 (asucc g a))).(\lambda (_: 
21149 (((eq T u0 (THead (Flat Appl) u t)) \to (ex2 A (\lambda (a1: A).(arity g d u 
21150 a1)) (\lambda (a1: A).(arity g d t (AHead a1 (asucc g a)))))))).(\lambda (H4: 
21151 (eq T (TLRef i) (THead (Flat Appl) u t))).(let H5 \def (eq_ind T (TLRef i) 
21152 (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
21153 \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow 
21154 False])) I (THead (Flat Appl) u t) H4) in (False_ind (ex2 A (\lambda (a1: 
21155 A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t (AHead a1 a)))) 
21156 H5))))))))))) (\lambda (b: B).(\lambda (_: (not (eq B b Abst))).(\lambda (c0: 
21157 C).(\lambda (u0: T).(\lambda (a1: A).(\lambda (_: (arity g c0 u0 
21158 a1)).(\lambda (_: (((eq T u0 (THead (Flat Appl) u t)) \to (ex2 A (\lambda 
21159 (a1: A).(arity g c0 u a1)) (\lambda (a2: A).(arity g c0 t (AHead a2 
21160 a1))))))).(\lambda (t0: T).(\lambda (a0: A).(\lambda (_: (arity g (CHead c0 
21161 (Bind b) u0) t0 a0)).(\lambda (_: (((eq T t0 (THead (Flat Appl) u t)) \to 
21162 (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind b) u0) u a1)) (\lambda (a1: 
21163 A).(arity g (CHead c0 (Bind b) u0) t (AHead a1 a0))))))).(\lambda (H6: (eq T 
21164 (THead (Bind b) u0 t0) (THead (Flat Appl) u t))).(let H7 \def (eq_ind T 
21165 (THead (Bind b) u0 t0) (\lambda (ee: T).(match ee return (\lambda (_: 
21166 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
21167 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
21168 _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Appl) u 
21169 t) H6) in (False_ind (ex2 A (\lambda (a3: A).(arity g c0 u a3)) (\lambda (a3: 
21170 A).(arity g c0 t (AHead a3 a0)))) H7)))))))))))))) (\lambda (c0: C).(\lambda 
21171 (u0: T).(\lambda (a1: A).(\lambda (_: (arity g c0 u0 (asucc g a1))).(\lambda 
21172 (_: (((eq T u0 (THead (Flat Appl) u t)) \to (ex2 A (\lambda (a1: A).(arity g 
21173 c0 u a1)) (\lambda (a2: A).(arity g c0 t (AHead a2 (asucc g 
21174 a1)))))))).(\lambda (t0: T).(\lambda (a0: A).(\lambda (_: (arity g (CHead c0 
21175 (Bind Abst) u0) t0 a0)).(\lambda (_: (((eq T t0 (THead (Flat Appl) u t)) \to 
21176 (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind Abst) u0) u a1)) (\lambda 
21177 (a1: A).(arity g (CHead c0 (Bind Abst) u0) t (AHead a1 a0))))))).(\lambda 
21178 (H5: (eq T (THead (Bind Abst) u0 t0) (THead (Flat Appl) u t))).(let H6 \def 
21179 (eq_ind T (THead (Bind Abst) u0 t0) (\lambda (ee: T).(match ee return 
21180 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
21181 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
21182 K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I 
21183 (THead (Flat Appl) u t) H5) in (False_ind (ex2 A (\lambda (a3: A).(arity g c0 
21184 u a3)) (\lambda (a3: A).(arity g c0 t (AHead a3 (AHead a1 a0))))) 
21185 H6)))))))))))) (\lambda (c0: C).(\lambda (u0: T).(\lambda (a1: A).(\lambda 
21186 (H1: (arity g c0 u0 a1)).(\lambda (H2: (((eq T u0 (THead (Flat Appl) u t)) 
21187 \to (ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a2: A).(arity g c0 t 
21188 (AHead a2 a1))))))).(\lambda (t0: T).(\lambda (a0: A).(\lambda (H3: (arity g 
21189 c0 t0 (AHead a1 a0))).(\lambda (H4: (((eq T t0 (THead (Flat Appl) u t)) \to 
21190 (ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a2: A).(arity g c0 t 
21191 (AHead a2 (AHead a1 a0)))))))).(\lambda (H5: (eq T (THead (Flat Appl) u0 t0) 
21192 (THead (Flat Appl) u t))).(let H6 \def (f_equal T T (\lambda (e: T).(match e 
21193 return (\lambda (_: T).T) with [(TSort _) \Rightarrow u0 | (TLRef _) 
21194 \Rightarrow u0 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) u0 t0) 
21195 (THead (Flat Appl) u t) H5) in ((let H7 \def (f_equal T T (\lambda (e: 
21196 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef 
21197 _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead (Flat Appl) u0 t0) 
21198 (THead (Flat Appl) u t) H5) in (\lambda (H8: (eq T u0 u)).(let H9 \def 
21199 (eq_ind T t0 (\lambda (t0: T).((eq T t0 (THead (Flat Appl) u t)) \to (ex2 A 
21200 (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a2: A).(arity g c0 t (AHead a2 
21201 (AHead a1 a0))))))) H4 t H7) in (let H10 \def (eq_ind T t0 (\lambda (t: 
21202 T).(arity g c0 t (AHead a1 a0))) H3 t H7) in (let H11 \def (eq_ind T u0 
21203 (\lambda (t0: T).((eq T t0 (THead (Flat Appl) u t)) \to (ex2 A (\lambda (a1: 
21204 A).(arity g c0 u a1)) (\lambda (a2: A).(arity g c0 t (AHead a2 a1)))))) H2 u 
21205 H8) in (let H12 \def (eq_ind T u0 (\lambda (t: T).(arity g c0 t a1)) H1 u H8) 
21206 in (ex_intro2 A (\lambda (a3: A).(arity g c0 u a3)) (\lambda (a3: A).(arity g 
21207 c0 t (AHead a3 a0))) a1 H12 H10))))))) H6)))))))))))) (\lambda (c0: 
21208 C).(\lambda (u0: T).(\lambda (a: A).(\lambda (_: (arity g c0 u0 (asucc g 
21209 a))).(\lambda (_: (((eq T u0 (THead (Flat Appl) u t)) \to (ex2 A (\lambda 
21210 (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t (AHead a1 (asucc g 
21211 a)))))))).(\lambda (t0: T).(\lambda (_: (arity g c0 t0 a)).(\lambda (_: (((eq 
21212 T t0 (THead (Flat Appl) u t)) \to (ex2 A (\lambda (a1: A).(arity g c0 u a1)) 
21213 (\lambda (a1: A).(arity g c0 t (AHead a1 a))))))).(\lambda (H5: (eq T (THead 
21214 (Flat Cast) u0 t0) (THead (Flat Appl) u t))).(let H6 \def (eq_ind T (THead 
21215 (Flat Cast) u0 t0) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) 
21216 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ 
21217 _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) 
21218 \Rightarrow False | (Flat f) \Rightarrow (match f return (\lambda (_: 
21219 F).Prop) with [Appl \Rightarrow False | Cast \Rightarrow True])])])) I (THead 
21220 (Flat Appl) u t) H5) in (False_ind (ex2 A (\lambda (a1: A).(arity g c0 u a1)) 
21221 (\lambda (a1: A).(arity g c0 t (AHead a1 a)))) H6))))))))))) (\lambda (c0: 
21222 C).(\lambda (t0: T).(\lambda (a1: A).(\lambda (H1: (arity g c0 t0 
21223 a1)).(\lambda (H2: (((eq T t0 (THead (Flat Appl) u t)) \to (ex2 A (\lambda 
21224 (a1: A).(arity g c0 u a1)) (\lambda (a2: A).(arity g c0 t (AHead a2 
21225 a1))))))).(\lambda (a0: A).(\lambda (H3: (leq g a1 a0)).(\lambda (H4: (eq T 
21226 t0 (THead (Flat Appl) u t))).(let H5 \def (f_equal T T (\lambda (e: T).e) t0 
21227 (THead (Flat Appl) u t) H4) in (let H6 \def (eq_ind T t0 (\lambda (t0: 
21228 T).((eq T t0 (THead (Flat Appl) u t)) \to (ex2 A (\lambda (a1: A).(arity g c0 
21229 u a1)) (\lambda (a2: A).(arity g c0 t (AHead a2 a1)))))) H2 (THead (Flat 
21230 Appl) u t) H5) in (let H7 \def (eq_ind T t0 (\lambda (t: T).(arity g c0 t 
21231 a1)) H1 (THead (Flat Appl) u t) H5) in (let H8 \def (H6 (refl_equal T (THead 
21232 (Flat Appl) u t))) in (ex2_ind A (\lambda (a3: A).(arity g c0 u a3)) (\lambda 
21233 (a3: A).(arity g c0 t (AHead a3 a1))) (ex2 A (\lambda (a3: A).(arity g c0 u 
21234 a3)) (\lambda (a3: A).(arity g c0 t (AHead a3 a0)))) (\lambda (x: A).(\lambda 
21235 (H9: (arity g c0 u x)).(\lambda (H10: (arity g c0 t (AHead x a1))).(ex_intro2 
21236 A (\lambda (a3: A).(arity g c0 u a3)) (\lambda (a3: A).(arity g c0 t (AHead 
21237 a3 a0))) x H9 (arity_repl g c0 t (AHead x a1) H10 (AHead x a0) (leq_head g x 
21238 x (leq_refl g x) a1 a0 H3)))))) H8))))))))))))) c y a2 H0))) H)))))).
21239
21240 theorem arity_gen_cast:
21241  \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t: T).(\forall (a: 
21242 A).((arity g c (THead (Flat Cast) u t) a) \to (land (arity g c u (asucc g a)) 
21243 (arity g c t a)))))))
21244 \def
21245  \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (a: 
21246 A).(\lambda (H: (arity g c (THead (Flat Cast) u t) a)).(insert_eq T (THead 
21247 (Flat Cast) u t) (\lambda (t0: T).(arity g c t0 a)) (land (arity g c u (asucc 
21248 g a)) (arity g c t a)) (\lambda (y: T).(\lambda (H0: (arity g c y 
21249 a)).(arity_ind g (\lambda (c0: C).(\lambda (t0: T).(\lambda (a0: A).((eq T t0 
21250 (THead (Flat Cast) u t)) \to (land (arity g c0 u (asucc g a0)) (arity g c0 t 
21251 a0)))))) (\lambda (c0: C).(\lambda (n: nat).(\lambda (H1: (eq T (TSort n) 
21252 (THead (Flat Cast) u t))).(let H2 \def (eq_ind T (TSort n) (\lambda (ee: 
21253 T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | 
21254 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (THead 
21255 (Flat Cast) u t) H1) in (False_ind (land (arity g c0 u (asucc g (ASort O n))) 
21256 (arity g c0 t (ASort O n))) H2))))) (\lambda (c0: C).(\lambda (d: C).(\lambda 
21257 (u0: T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d (Bind Abbr) 
21258 u0))).(\lambda (a0: A).(\lambda (_: (arity g d u0 a0)).(\lambda (_: (((eq T 
21259 u0 (THead (Flat Cast) u t)) \to (land (arity g d u (asucc g a0)) (arity g d t 
21260 a0))))).(\lambda (H4: (eq T (TLRef i) (THead (Flat Cast) u t))).(let H5 \def 
21261 (eq_ind T (TLRef i) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) 
21262 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ 
21263 _) \Rightarrow False])) I (THead (Flat Cast) u t) H4) in (False_ind (land 
21264 (arity g c0 u (asucc g a0)) (arity g c0 t a0)) H5))))))))))) (\lambda (c0: 
21265 C).(\lambda (d: C).(\lambda (u0: T).(\lambda (i: nat).(\lambda (_: (getl i c0 
21266 (CHead d (Bind Abst) u0))).(\lambda (a0: A).(\lambda (_: (arity g d u0 (asucc 
21267 g a0))).(\lambda (_: (((eq T u0 (THead (Flat Cast) u t)) \to (land (arity g d 
21268 u (asucc g (asucc g a0))) (arity g d t (asucc g a0)))))).(\lambda (H4: (eq T 
21269 (TLRef i) (THead (Flat Cast) u t))).(let H5 \def (eq_ind T (TLRef i) (\lambda 
21270 (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
21271 False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I 
21272 (THead (Flat Cast) u t) H4) in (False_ind (land (arity g c0 u (asucc g a0)) 
21273 (arity g c0 t a0)) H5))))))))))) (\lambda (b: B).(\lambda (_: (not (eq B b 
21274 Abst))).(\lambda (c0: C).(\lambda (u0: T).(\lambda (a1: A).(\lambda (_: 
21275 (arity g c0 u0 a1)).(\lambda (_: (((eq T u0 (THead (Flat Cast) u t)) \to 
21276 (land (arity g c0 u (asucc g a1)) (arity g c0 t a1))))).(\lambda (t0: 
21277 T).(\lambda (a2: A).(\lambda (_: (arity g (CHead c0 (Bind b) u0) t0 
21278 a2)).(\lambda (_: (((eq T t0 (THead (Flat Cast) u t)) \to (land (arity g 
21279 (CHead c0 (Bind b) u0) u (asucc g a2)) (arity g (CHead c0 (Bind b) u0) t 
21280 a2))))).(\lambda (H6: (eq T (THead (Bind b) u0 t0) (THead (Flat Cast) u 
21281 t))).(let H7 \def (eq_ind T (THead (Bind b) u0 t0) (\lambda (ee: T).(match ee 
21282 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
21283 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
21284 K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I 
21285 (THead (Flat Cast) u t) H6) in (False_ind (land (arity g c0 u (asucc g a2)) 
21286 (arity g c0 t a2)) H7)))))))))))))) (\lambda (c0: C).(\lambda (u0: 
21287 T).(\lambda (a1: A).(\lambda (_: (arity g c0 u0 (asucc g a1))).(\lambda (_: 
21288 (((eq T u0 (THead (Flat Cast) u t)) \to (land (arity g c0 u (asucc g (asucc g 
21289 a1))) (arity g c0 t (asucc g a1)))))).(\lambda (t0: T).(\lambda (a2: 
21290 A).(\lambda (_: (arity g (CHead c0 (Bind Abst) u0) t0 a2)).(\lambda (_: (((eq 
21291 T t0 (THead (Flat Cast) u t)) \to (land (arity g (CHead c0 (Bind Abst) u0) u 
21292 (asucc g a2)) (arity g (CHead c0 (Bind Abst) u0) t a2))))).(\lambda (H5: (eq 
21293 T (THead (Bind Abst) u0 t0) (THead (Flat Cast) u t))).(let H6 \def (eq_ind T 
21294 (THead (Bind Abst) u0 t0) (\lambda (ee: T).(match ee return (\lambda (_: 
21295 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
21296 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
21297 _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Cast) u 
21298 t) H5) in (False_ind (land (arity g c0 u (asucc g (AHead a1 a2))) (arity g c0 
21299 t (AHead a1 a2))) H6)))))))))))) (\lambda (c0: C).(\lambda (u0: T).(\lambda 
21300 (a1: A).(\lambda (_: (arity g c0 u0 a1)).(\lambda (_: (((eq T u0 (THead (Flat 
21301 Cast) u t)) \to (land (arity g c0 u (asucc g a1)) (arity g c0 t 
21302 a1))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (_: (arity g c0 t0 (AHead 
21303 a1 a2))).(\lambda (_: (((eq T t0 (THead (Flat Cast) u t)) \to (land (arity g 
21304 c0 u (asucc g (AHead a1 a2))) (arity g c0 t (AHead a1 a2)))))).(\lambda (H5: 
21305 (eq T (THead (Flat Appl) u0 t0) (THead (Flat Cast) u t))).(let H6 \def 
21306 (eq_ind T (THead (Flat Appl) u0 t0) (\lambda (ee: T).(match ee return 
21307 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
21308 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
21309 K).Prop) with [(Bind _) \Rightarrow False | (Flat f) \Rightarrow (match f 
21310 return (\lambda (_: F).Prop) with [Appl \Rightarrow True | Cast \Rightarrow 
21311 False])])])) I (THead (Flat Cast) u t) H5) in (False_ind (land (arity g c0 u 
21312 (asucc g a2)) (arity g c0 t a2)) H6)))))))))))) (\lambda (c0: C).(\lambda 
21313 (u0: T).(\lambda (a0: A).(\lambda (H1: (arity g c0 u0 (asucc g a0))).(\lambda 
21314 (H2: (((eq T u0 (THead (Flat Cast) u t)) \to (land (arity g c0 u (asucc g 
21315 (asucc g a0))) (arity g c0 t (asucc g a0)))))).(\lambda (t0: T).(\lambda (H3: 
21316 (arity g c0 t0 a0)).(\lambda (H4: (((eq T t0 (THead (Flat Cast) u t)) \to 
21317 (land (arity g c0 u (asucc g a0)) (arity g c0 t a0))))).(\lambda (H5: (eq T 
21318 (THead (Flat Cast) u0 t0) (THead (Flat Cast) u t))).(let H6 \def (f_equal T T 
21319 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
21320 \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) 
21321 (THead (Flat Cast) u0 t0) (THead (Flat Cast) u t) H5) in ((let H7 \def 
21322 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
21323 _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
21324 (THead (Flat Cast) u0 t0) (THead (Flat Cast) u t) H5) in (\lambda (H8: (eq T 
21325 u0 u)).(let H9 \def (eq_ind T t0 (\lambda (t0: T).((eq T t0 (THead (Flat 
21326 Cast) u t)) \to (land (arity g c0 u (asucc g a0)) (arity g c0 t a0)))) H4 t 
21327 H7) in (let H10 \def (eq_ind T t0 (\lambda (t: T).(arity g c0 t a0)) H3 t H7) 
21328 in (let H11 \def (eq_ind T u0 (\lambda (t0: T).((eq T t0 (THead (Flat Cast) u 
21329 t)) \to (land (arity g c0 u (asucc g (asucc g a0))) (arity g c0 t (asucc g 
21330 a0))))) H2 u H8) in (let H12 \def (eq_ind T u0 (\lambda (t: T).(arity g c0 t 
21331 (asucc g a0))) H1 u H8) in (conj (arity g c0 u (asucc g a0)) (arity g c0 t 
21332 a0) H12 H10))))))) H6))))))))))) (\lambda (c0: C).(\lambda (t0: T).(\lambda 
21333 (a1: A).(\lambda (H1: (arity g c0 t0 a1)).(\lambda (H2: (((eq T t0 (THead 
21334 (Flat Cast) u t)) \to (land (arity g c0 u (asucc g a1)) (arity g c0 t 
21335 a1))))).(\lambda (a2: A).(\lambda (H3: (leq g a1 a2)).(\lambda (H4: (eq T t0 
21336 (THead (Flat Cast) u t))).(let H5 \def (f_equal T T (\lambda (e: T).e) t0 
21337 (THead (Flat Cast) u t) H4) in (let H6 \def (eq_ind T t0 (\lambda (t0: 
21338 T).((eq T t0 (THead (Flat Cast) u t)) \to (land (arity g c0 u (asucc g a1)) 
21339 (arity g c0 t a1)))) H2 (THead (Flat Cast) u t) H5) in (let H7 \def (eq_ind T 
21340 t0 (\lambda (t: T).(arity g c0 t a1)) H1 (THead (Flat Cast) u t) H5) in (let 
21341 H8 \def (H6 (refl_equal T (THead (Flat Cast) u t))) in (and_ind (arity g c0 u 
21342 (asucc g a1)) (arity g c0 t a1) (land (arity g c0 u (asucc g a2)) (arity g c0 
21343 t a2)) (\lambda (H9: (arity g c0 u (asucc g a1))).(\lambda (H10: (arity g c0 
21344 t a1)).(conj (arity g c0 u (asucc g a2)) (arity g c0 t a2) (arity_repl g c0 u 
21345 (asucc g a1) H9 (asucc g a2) (asucc_repl g a1 a2 H3)) (arity_repl g c0 t a1 
21346 H10 a2 H3)))) H8))))))))))))) c y a H0))) H)))))).
21347
21348 theorem arity_gen_appls:
21349  \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (vs: TList).(\forall 
21350 (a2: A).((arity g c (THeads (Flat Appl) vs t) a2) \to (ex A (\lambda (a: 
21351 A).(arity g c t a))))))))
21352 \def
21353  \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (vs: 
21354 TList).(TList_ind (\lambda (t0: TList).(\forall (a2: A).((arity g c (THeads 
21355 (Flat Appl) t0 t) a2) \to (ex A (\lambda (a: A).(arity g c t a)))))) (\lambda 
21356 (a2: A).(\lambda (H: (arity g c t a2)).(ex_intro A (\lambda (a: A).(arity g c 
21357 t a)) a2 H))) (\lambda (t0: T).(\lambda (t1: TList).(\lambda (H: ((\forall 
21358 (a2: A).((arity g c (THeads (Flat Appl) t1 t) a2) \to (ex A (\lambda (a: 
21359 A).(arity g c t a))))))).(\lambda (a2: A).(\lambda (H0: (arity g c (THead 
21360 (Flat Appl) t0 (THeads (Flat Appl) t1 t)) a2)).(let H1 \def (arity_gen_appl g 
21361 c t0 (THeads (Flat Appl) t1 t) a2 H0) in (ex2_ind A (\lambda (a1: A).(arity g 
21362 c t0 a1)) (\lambda (a1: A).(arity g c (THeads (Flat Appl) t1 t) (AHead a1 
21363 a2))) (ex A (\lambda (a: A).(arity g c t a))) (\lambda (x: A).(\lambda (_: 
21364 (arity g c t0 x)).(\lambda (H3: (arity g c (THeads (Flat Appl) t1 t) (AHead x 
21365 a2))).(let H_x \def (H (AHead x a2) H3) in (let H4 \def H_x in (ex_ind A 
21366 (\lambda (a: A).(arity g c t a)) (ex A (\lambda (a: A).(arity g c t a))) 
21367 (\lambda (x0: A).(\lambda (H5: (arity g c t x0)).(ex_intro A (\lambda (a: 
21368 A).(arity g c t a)) x0 H5))) H4)))))) H1))))))) vs)))).
21369
21370 theorem node_inh:
21371  \forall (g: G).(\forall (n: nat).(\forall (k: nat).(ex_2 C T (\lambda (c: 
21372 C).(\lambda (t: T).(arity g c t (ASort k n)))))))
21373 \def
21374  \lambda (g: G).(\lambda (n: nat).(\lambda (k: nat).(nat_ind (\lambda (n0: 
21375 nat).(ex_2 C T (\lambda (c: C).(\lambda (t: T).(arity g c t (ASort n0 n)))))) 
21376 (ex_2_intro C T (\lambda (c: C).(\lambda (t: T).(arity g c t (ASort O n)))) 
21377 (CSort O) (TSort n) (arity_sort g (CSort O) n)) (\lambda (n0: nat).(\lambda 
21378 (H: (ex_2 C T (\lambda (c: C).(\lambda (t: T).(arity g c t (ASort n0 
21379 n)))))).(let H0 \def H in (ex_2_ind C T (\lambda (c: C).(\lambda (t: 
21380 T).(arity g c t (ASort n0 n)))) (ex_2 C T (\lambda (c: C).(\lambda (t: 
21381 T).(arity g c t (ASort (S n0) n))))) (\lambda (x0: C).(\lambda (x1: 
21382 T).(\lambda (H1: (arity g x0 x1 (ASort n0 n))).(ex_2_intro C T (\lambda (c: 
21383 C).(\lambda (t: T).(arity g c t (ASort (S n0) n)))) (CHead x0 (Bind Abst) x1) 
21384 (TLRef O) (arity_abst g (CHead x0 (Bind Abst) x1) x0 x1 O (getl_refl Abst x0 
21385 x1) (ASort (S n0) n) H1))))) H0)))) k))).
21386
21387 theorem arity_gen_cvoid_subst0:
21388  \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (a: A).((arity g c t 
21389 a) \to (\forall (d: C).(\forall (u: T).(\forall (i: nat).((getl i c (CHead d 
21390 (Bind Void) u)) \to (\forall (w: T).(\forall (v: T).((subst0 i w t v) \to 
21391 (\forall (P: Prop).P))))))))))))
21392 \def
21393  \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (a: A).(\lambda (H: 
21394 (arity g c t a)).(arity_ind g (\lambda (c0: C).(\lambda (t0: T).(\lambda (_: 
21395 A).(\forall (d: C).(\forall (u: T).(\forall (i: nat).((getl i c0 (CHead d 
21396 (Bind Void) u)) \to (\forall (w: T).(\forall (v: T).((subst0 i w t0 v) \to 
21397 (\forall (P: Prop).P))))))))))) (\lambda (c0: C).(\lambda (n: nat).(\lambda 
21398 (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (_: (getl i c0 (CHead d 
21399 (Bind Void) u))).(\lambda (w: T).(\lambda (v: T).(\lambda (H1: (subst0 i w 
21400 (TSort n) v)).(\lambda (P: Prop).(subst0_gen_sort w v i n H1 P))))))))))) 
21401 (\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
21402 (H0: (getl i c0 (CHead d (Bind Abbr) u))).(\lambda (a0: A).(\lambda (_: 
21403 (arity g d u a0)).(\lambda (_: ((\forall (d0: C).(\forall (u0: T).(\forall 
21404 (i: nat).((getl i d (CHead d0 (Bind Void) u0)) \to (\forall (w: T).(\forall 
21405 (v: T).((subst0 i w u v) \to (\forall (P: Prop).P)))))))))).(\lambda (d0: 
21406 C).(\lambda (u0: T).(\lambda (i0: nat).(\lambda (H3: (getl i0 c0 (CHead d0 
21407 (Bind Void) u0))).(\lambda (w: T).(\lambda (v: T).(\lambda (H4: (subst0 i0 w 
21408 (TLRef i) v)).(\lambda (P: Prop).(and_ind (eq nat i i0) (eq T v (lift (S i) O 
21409 w)) P (\lambda (H5: (eq nat i i0)).(\lambda (_: (eq T v (lift (S i) O 
21410 w))).(let H7 \def (eq_ind_r nat i0 (\lambda (n: nat).(getl n c0 (CHead d0 
21411 (Bind Void) u0))) H3 i H5) in (let H8 \def (eq_ind C (CHead d (Bind Abbr) u) 
21412 (\lambda (c: C).(getl i c0 c)) H0 (CHead d0 (Bind Void) u0) (getl_mono c0 
21413 (CHead d (Bind Abbr) u) i H0 (CHead d0 (Bind Void) u0) H7)) in (let H9 \def 
21414 (eq_ind C (CHead d (Bind Abbr) u) (\lambda (ee: C).(match ee return (\lambda 
21415 (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow 
21416 (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b 
21417 return (\lambda (_: B).Prop) with [Abbr \Rightarrow True | Abst \Rightarrow 
21418 False | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead 
21419 d0 (Bind Void) u0) (getl_mono c0 (CHead d (Bind Abbr) u) i H0 (CHead d0 (Bind 
21420 Void) u0) H7)) in (False_ind P H9)))))) (subst0_gen_lref w v i0 i 
21421 H4)))))))))))))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u: 
21422 T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind Abst) 
21423 u))).(\lambda (a0: A).(\lambda (_: (arity g d u (asucc g a0))).(\lambda (_: 
21424 ((\forall (d0: C).(\forall (u0: T).(\forall (i: nat).((getl i d (CHead d0 
21425 (Bind Void) u0)) \to (\forall (w: T).(\forall (v: T).((subst0 i w u v) \to 
21426 (\forall (P: Prop).P)))))))))).(\lambda (d0: C).(\lambda (u0: T).(\lambda 
21427 (i0: nat).(\lambda (H3: (getl i0 c0 (CHead d0 (Bind Void) u0))).(\lambda (w: 
21428 T).(\lambda (v: T).(\lambda (H4: (subst0 i0 w (TLRef i) v)).(\lambda (P: 
21429 Prop).(and_ind (eq nat i i0) (eq T v (lift (S i) O w)) P (\lambda (H5: (eq 
21430 nat i i0)).(\lambda (_: (eq T v (lift (S i) O w))).(let H7 \def (eq_ind_r nat 
21431 i0 (\lambda (n: nat).(getl n c0 (CHead d0 (Bind Void) u0))) H3 i H5) in (let 
21432 H8 \def (eq_ind C (CHead d (Bind Abst) u) (\lambda (c: C).(getl i c0 c)) H0 
21433 (CHead d0 (Bind Void) u0) (getl_mono c0 (CHead d (Bind Abst) u) i H0 (CHead 
21434 d0 (Bind Void) u0) H7)) in (let H9 \def (eq_ind C (CHead d (Bind Abst) u) 
21435 (\lambda (ee: C).(match ee return (\lambda (_: C).Prop) with [(CSort _) 
21436 \Rightarrow False | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
21437 K).Prop) with [(Bind b) \Rightarrow (match b return (\lambda (_: B).Prop) 
21438 with [Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow 
21439 False]) | (Flat _) \Rightarrow False])])) I (CHead d0 (Bind Void) u0) 
21440 (getl_mono c0 (CHead d (Bind Abst) u) i H0 (CHead d0 (Bind Void) u0) H7)) in 
21441 (False_ind P H9)))))) (subst0_gen_lref w v i0 i H4)))))))))))))))))) (\lambda 
21442 (b: B).(\lambda (_: (not (eq B b Abst))).(\lambda (c0: C).(\lambda (u: 
21443 T).(\lambda (a1: A).(\lambda (_: (arity g c0 u a1)).(\lambda (H2: ((\forall 
21444 (d: C).(\forall (u0: T).(\forall (i: nat).((getl i c0 (CHead d (Bind Void) 
21445 u0)) \to (\forall (w: T).(\forall (v: T).((subst0 i w u v) \to (\forall (P: 
21446 Prop).P)))))))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (_: (arity g 
21447 (CHead c0 (Bind b) u) t0 a2)).(\lambda (H4: ((\forall (d: C).(\forall (u0: 
21448 T).(\forall (i: nat).((getl i (CHead c0 (Bind b) u) (CHead d (Bind Void) u0)) 
21449 \to (\forall (w: T).(\forall (v: T).((subst0 i w t0 v) \to (\forall (P: 
21450 Prop).P)))))))))).(\lambda (d: C).(\lambda (u0: T).(\lambda (i: nat).(\lambda 
21451 (H5: (getl i c0 (CHead d (Bind Void) u0))).(\lambda (w: T).(\lambda (v: 
21452 T).(\lambda (H6: (subst0 i w (THead (Bind b) u t0) v)).(\lambda (P: 
21453 Prop).(or3_ind (ex2 T (\lambda (u2: T).(eq T v (THead (Bind b) u2 t0))) 
21454 (\lambda (u2: T).(subst0 i w u u2))) (ex2 T (\lambda (t2: T).(eq T v (THead 
21455 (Bind b) u t2))) (\lambda (t2: T).(subst0 (s (Bind b) i) w t0 t2))) (ex3_2 T 
21456 T (\lambda (u2: T).(\lambda (t2: T).(eq T v (THead (Bind b) u2 t2)))) 
21457 (\lambda (u2: T).(\lambda (_: T).(subst0 i w u u2))) (\lambda (_: T).(\lambda 
21458 (t2: T).(subst0 (s (Bind b) i) w t0 t2)))) P (\lambda (H7: (ex2 T (\lambda 
21459 (u2: T).(eq T v (THead (Bind b) u2 t0))) (\lambda (u2: T).(subst0 i w u 
21460 u2)))).(ex2_ind T (\lambda (u2: T).(eq T v (THead (Bind b) u2 t0))) (\lambda 
21461 (u2: T).(subst0 i w u u2)) P (\lambda (x: T).(\lambda (_: (eq T v (THead 
21462 (Bind b) x t0))).(\lambda (H9: (subst0 i w u x)).(H2 d u0 i H5 w x H9 P)))) 
21463 H7)) (\lambda (H7: (ex2 T (\lambda (t2: T).(eq T v (THead (Bind b) u t2))) 
21464 (\lambda (t2: T).(subst0 (s (Bind b) i) w t0 t2)))).(ex2_ind T (\lambda (t2: 
21465 T).(eq T v (THead (Bind b) u t2))) (\lambda (t2: T).(subst0 (s (Bind b) i) w 
21466 t0 t2)) P (\lambda (x: T).(\lambda (_: (eq T v (THead (Bind b) u 
21467 x))).(\lambda (H9: (subst0 (s (Bind b) i) w t0 x)).(H4 d u0 (S i) 
21468 (getl_clear_bind b (CHead c0 (Bind b) u) c0 u (clear_bind b c0 u) (CHead d 
21469 (Bind Void) u0) i H5) w x H9 P)))) H7)) (\lambda (H7: (ex3_2 T T (\lambda 
21470 (u2: T).(\lambda (t2: T).(eq T v (THead (Bind b) u2 t2)))) (\lambda (u2: 
21471 T).(\lambda (_: T).(subst0 i w u u2))) (\lambda (_: T).(\lambda (t2: 
21472 T).(subst0 (s (Bind b) i) w t0 t2))))).(ex3_2_ind T T (\lambda (u2: 
21473 T).(\lambda (t2: T).(eq T v (THead (Bind b) u2 t2)))) (\lambda (u2: 
21474 T).(\lambda (_: T).(subst0 i w u u2))) (\lambda (_: T).(\lambda (t2: 
21475 T).(subst0 (s (Bind b) i) w t0 t2))) P (\lambda (x0: T).(\lambda (x1: 
21476 T).(\lambda (_: (eq T v (THead (Bind b) x0 x1))).(\lambda (H9: (subst0 i w u 
21477 x0)).(\lambda (_: (subst0 (s (Bind b) i) w t0 x1)).(H2 d u0 i H5 w x0 H9 
21478 P)))))) H7)) (subst0_gen_head (Bind b) w u t0 v i H6))))))))))))))))))))) 
21479 (\lambda (c0: C).(\lambda (u: T).(\lambda (a1: A).(\lambda (_: (arity g c0 u 
21480 (asucc g a1))).(\lambda (H1: ((\forall (d: C).(\forall (u0: T).(\forall (i: 
21481 nat).((getl i c0 (CHead d (Bind Void) u0)) \to (\forall (w: T).(\forall (v: 
21482 T).((subst0 i w u v) \to (\forall (P: Prop).P)))))))))).(\lambda (t0: 
21483 T).(\lambda (a2: A).(\lambda (_: (arity g (CHead c0 (Bind Abst) u) t0 
21484 a2)).(\lambda (H3: ((\forall (d: C).(\forall (u0: T).(\forall (i: nat).((getl 
21485 i (CHead c0 (Bind Abst) u) (CHead d (Bind Void) u0)) \to (\forall (w: 
21486 T).(\forall (v: T).((subst0 i w t0 v) \to (\forall (P: 
21487 Prop).P)))))))))).(\lambda (d: C).(\lambda (u0: T).(\lambda (i: nat).(\lambda 
21488 (H4: (getl i c0 (CHead d (Bind Void) u0))).(\lambda (w: T).(\lambda (v: 
21489 T).(\lambda (H5: (subst0 i w (THead (Bind Abst) u t0) v)).(\lambda (P: 
21490 Prop).(or3_ind (ex2 T (\lambda (u2: T).(eq T v (THead (Bind Abst) u2 t0))) 
21491 (\lambda (u2: T).(subst0 i w u u2))) (ex2 T (\lambda (t2: T).(eq T v (THead 
21492 (Bind Abst) u t2))) (\lambda (t2: T).(subst0 (s (Bind Abst) i) w t0 t2))) 
21493 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T v (THead (Bind Abst) u2 
21494 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i w u u2))) (\lambda (_: 
21495 T).(\lambda (t2: T).(subst0 (s (Bind Abst) i) w t0 t2)))) P (\lambda (H6: 
21496 (ex2 T (\lambda (u2: T).(eq T v (THead (Bind Abst) u2 t0))) (\lambda (u2: 
21497 T).(subst0 i w u u2)))).(ex2_ind T (\lambda (u2: T).(eq T v (THead (Bind 
21498 Abst) u2 t0))) (\lambda (u2: T).(subst0 i w u u2)) P (\lambda (x: T).(\lambda 
21499 (_: (eq T v (THead (Bind Abst) x t0))).(\lambda (H8: (subst0 i w u x)).(H1 d 
21500 u0 i H4 w x H8 P)))) H6)) (\lambda (H6: (ex2 T (\lambda (t2: T).(eq T v 
21501 (THead (Bind Abst) u t2))) (\lambda (t2: T).(subst0 (s (Bind Abst) i) w t0 
21502 t2)))).(ex2_ind T (\lambda (t2: T).(eq T v (THead (Bind Abst) u t2))) 
21503 (\lambda (t2: T).(subst0 (s (Bind Abst) i) w t0 t2)) P (\lambda (x: 
21504 T).(\lambda (_: (eq T v (THead (Bind Abst) u x))).(\lambda (H8: (subst0 (s 
21505 (Bind Abst) i) w t0 x)).(H3 d u0 (S i) (getl_clear_bind Abst (CHead c0 (Bind 
21506 Abst) u) c0 u (clear_bind Abst c0 u) (CHead d (Bind Void) u0) i H4) w x H8 
21507 P)))) H6)) (\lambda (H6: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T v 
21508 (THead (Bind Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i w u 
21509 u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Bind Abst) i) w t0 
21510 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t2: T).(eq T v (THead (Bind 
21511 Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i w u u2))) (\lambda 
21512 (_: T).(\lambda (t2: T).(subst0 (s (Bind Abst) i) w t0 t2))) P (\lambda (x0: 
21513 T).(\lambda (x1: T).(\lambda (_: (eq T v (THead (Bind Abst) x0 x1))).(\lambda 
21514 (H8: (subst0 i w u x0)).(\lambda (_: (subst0 (s (Bind Abst) i) w t0 x1)).(H1 
21515 d u0 i H4 w x0 H8 P)))))) H6)) (subst0_gen_head (Bind Abst) w u t0 v i 
21516 H5))))))))))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (a1: 
21517 A).(\lambda (_: (arity g c0 u a1)).(\lambda (H1: ((\forall (d: C).(\forall 
21518 (u0: T).(\forall (i: nat).((getl i c0 (CHead d (Bind Void) u0)) \to (\forall 
21519 (w: T).(\forall (v: T).((subst0 i w u v) \to (\forall (P: 
21520 Prop).P)))))))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (_: (arity g c0 
21521 t0 (AHead a1 a2))).(\lambda (H3: ((\forall (d: C).(\forall (u: T).(\forall 
21522 (i: nat).((getl i c0 (CHead d (Bind Void) u)) \to (\forall (w: T).(\forall 
21523 (v: T).((subst0 i w t0 v) \to (\forall (P: Prop).P)))))))))).(\lambda (d: 
21524 C).(\lambda (u0: T).(\lambda (i: nat).(\lambda (H4: (getl i c0 (CHead d (Bind 
21525 Void) u0))).(\lambda (w: T).(\lambda (v: T).(\lambda (H5: (subst0 i w (THead 
21526 (Flat Appl) u t0) v)).(\lambda (P: Prop).(or3_ind (ex2 T (\lambda (u2: T).(eq 
21527 T v (THead (Flat Appl) u2 t0))) (\lambda (u2: T).(subst0 i w u u2))) (ex2 T 
21528 (\lambda (t2: T).(eq T v (THead (Flat Appl) u t2))) (\lambda (t2: T).(subst0 
21529 (s (Flat Appl) i) w t0 t2))) (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq 
21530 T v (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i w 
21531 u u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Flat Appl) i) w t0 
21532 t2)))) P (\lambda (H6: (ex2 T (\lambda (u2: T).(eq T v (THead (Flat Appl) u2 
21533 t0))) (\lambda (u2: T).(subst0 i w u u2)))).(ex2_ind T (\lambda (u2: T).(eq T 
21534 v (THead (Flat Appl) u2 t0))) (\lambda (u2: T).(subst0 i w u u2)) P (\lambda 
21535 (x: T).(\lambda (_: (eq T v (THead (Flat Appl) x t0))).(\lambda (H8: (subst0 
21536 i w u x)).(H1 d u0 i H4 w x H8 P)))) H6)) (\lambda (H6: (ex2 T (\lambda (t2: 
21537 T).(eq T v (THead (Flat Appl) u t2))) (\lambda (t2: T).(subst0 (s (Flat Appl) 
21538 i) w t0 t2)))).(ex2_ind T (\lambda (t2: T).(eq T v (THead (Flat Appl) u t2))) 
21539 (\lambda (t2: T).(subst0 (s (Flat Appl) i) w t0 t2)) P (\lambda (x: 
21540 T).(\lambda (_: (eq T v (THead (Flat Appl) u x))).(\lambda (H8: (subst0 (s 
21541 (Flat Appl) i) w t0 x)).(H3 d u0 i H4 w x H8 P)))) H6)) (\lambda (H6: (ex3_2 
21542 T T (\lambda (u2: T).(\lambda (t2: T).(eq T v (THead (Flat Appl) u2 t2)))) 
21543 (\lambda (u2: T).(\lambda (_: T).(subst0 i w u u2))) (\lambda (_: T).(\lambda 
21544 (t2: T).(subst0 (s (Flat Appl) i) w t0 t2))))).(ex3_2_ind T T (\lambda (u2: 
21545 T).(\lambda (t2: T).(eq T v (THead (Flat Appl) u2 t2)))) (\lambda (u2: 
21546 T).(\lambda (_: T).(subst0 i w u u2))) (\lambda (_: T).(\lambda (t2: 
21547 T).(subst0 (s (Flat Appl) i) w t0 t2))) P (\lambda (x0: T).(\lambda (x1: 
21548 T).(\lambda (_: (eq T v (THead (Flat Appl) x0 x1))).(\lambda (H8: (subst0 i w 
21549 u x0)).(\lambda (_: (subst0 (s (Flat Appl) i) w t0 x1)).(H1 d u0 i H4 w x0 H8 
21550 P)))))) H6)) (subst0_gen_head (Flat Appl) w u t0 v i H5))))))))))))))))))) 
21551 (\lambda (c0: C).(\lambda (u: T).(\lambda (a0: A).(\lambda (_: (arity g c0 u 
21552 (asucc g a0))).(\lambda (H1: ((\forall (d: C).(\forall (u0: T).(\forall (i: 
21553 nat).((getl i c0 (CHead d (Bind Void) u0)) \to (\forall (w: T).(\forall (v: 
21554 T).((subst0 i w u v) \to (\forall (P: Prop).P)))))))))).(\lambda (t0: 
21555 T).(\lambda (_: (arity g c0 t0 a0)).(\lambda (H3: ((\forall (d: C).(\forall 
21556 (u: T).(\forall (i: nat).((getl i c0 (CHead d (Bind Void) u)) \to (\forall 
21557 (w: T).(\forall (v: T).((subst0 i w t0 v) \to (\forall (P: 
21558 Prop).P)))))))))).(\lambda (d: C).(\lambda (u0: T).(\lambda (i: nat).(\lambda 
21559 (H4: (getl i c0 (CHead d (Bind Void) u0))).(\lambda (w: T).(\lambda (v: 
21560 T).(\lambda (H5: (subst0 i w (THead (Flat Cast) u t0) v)).(\lambda (P: 
21561 Prop).(or3_ind (ex2 T (\lambda (u2: T).(eq T v (THead (Flat Cast) u2 t0))) 
21562 (\lambda (u2: T).(subst0 i w u u2))) (ex2 T (\lambda (t2: T).(eq T v (THead 
21563 (Flat Cast) u t2))) (\lambda (t2: T).(subst0 (s (Flat Cast) i) w t0 t2))) 
21564 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T v (THead (Flat Cast) u2 
21565 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i w u u2))) (\lambda (_: 
21566 T).(\lambda (t2: T).(subst0 (s (Flat Cast) i) w t0 t2)))) P (\lambda (H6: 
21567 (ex2 T (\lambda (u2: T).(eq T v (THead (Flat Cast) u2 t0))) (\lambda (u2: 
21568 T).(subst0 i w u u2)))).(ex2_ind T (\lambda (u2: T).(eq T v (THead (Flat 
21569 Cast) u2 t0))) (\lambda (u2: T).(subst0 i w u u2)) P (\lambda (x: T).(\lambda 
21570 (_: (eq T v (THead (Flat Cast) x t0))).(\lambda (H8: (subst0 i w u x)).(H1 d 
21571 u0 i H4 w x H8 P)))) H6)) (\lambda (H6: (ex2 T (\lambda (t2: T).(eq T v 
21572 (THead (Flat Cast) u t2))) (\lambda (t2: T).(subst0 (s (Flat Cast) i) w t0 
21573 t2)))).(ex2_ind T (\lambda (t2: T).(eq T v (THead (Flat Cast) u t2))) 
21574 (\lambda (t2: T).(subst0 (s (Flat Cast) i) w t0 t2)) P (\lambda (x: 
21575 T).(\lambda (_: (eq T v (THead (Flat Cast) u x))).(\lambda (H8: (subst0 (s 
21576 (Flat Cast) i) w t0 x)).(H3 d u0 i H4 w x H8 P)))) H6)) (\lambda (H6: (ex3_2 
21577 T T (\lambda (u2: T).(\lambda (t2: T).(eq T v (THead (Flat Cast) u2 t2)))) 
21578 (\lambda (u2: T).(\lambda (_: T).(subst0 i w u u2))) (\lambda (_: T).(\lambda 
21579 (t2: T).(subst0 (s (Flat Cast) i) w t0 t2))))).(ex3_2_ind T T (\lambda (u2: 
21580 T).(\lambda (t2: T).(eq T v (THead (Flat Cast) u2 t2)))) (\lambda (u2: 
21581 T).(\lambda (_: T).(subst0 i w u u2))) (\lambda (_: T).(\lambda (t2: 
21582 T).(subst0 (s (Flat Cast) i) w t0 t2))) P (\lambda (x0: T).(\lambda (x1: 
21583 T).(\lambda (_: (eq T v (THead (Flat Cast) x0 x1))).(\lambda (H8: (subst0 i w 
21584 u x0)).(\lambda (_: (subst0 (s (Flat Cast) i) w t0 x1)).(H1 d u0 i H4 w x0 H8 
21585 P)))))) H6)) (subst0_gen_head (Flat Cast) w u t0 v i H5)))))))))))))))))) 
21586 (\lambda (c0: C).(\lambda (t0: T).(\lambda (a1: A).(\lambda (_: (arity g c0 
21587 t0 a1)).(\lambda (H1: ((\forall (d: C).(\forall (u: T).(\forall (i: 
21588 nat).((getl i c0 (CHead d (Bind Void) u)) \to (\forall (w: T).(\forall (v: 
21589 T).((subst0 i w t0 v) \to (\forall (P: Prop).P)))))))))).(\lambda (a2: 
21590 A).(\lambda (_: (leq g a1 a2)).(\lambda (d: C).(\lambda (u: T).(\lambda (i: 
21591 nat).(\lambda (H3: (getl i c0 (CHead d (Bind Void) u))).(\lambda (w: 
21592 T).(\lambda (v: T).(\lambda (H4: (subst0 i w t0 v)).(\lambda (P: Prop).(H1 d 
21593 u i H3 w v H4 P)))))))))))))))) c t a H))))).
21594
21595 theorem arity_gen_cvoid:
21596  \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (a: A).((arity g c t 
21597 a) \to (\forall (d: C).(\forall (u: T).(\forall (i: nat).((getl i c (CHead d 
21598 (Bind Void) u)) \to (ex T (\lambda (v: T).(eq T t (lift (S O) i v))))))))))))
21599 \def
21600  \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (a: A).(\lambda (H: 
21601 (arity g c t a)).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
21602 (H0: (getl i c (CHead d (Bind Void) u))).(let H_x \def (dnf_dec u t i) in 
21603 (let H1 \def H_x in (ex_ind T (\lambda (v: T).(or (subst0 i u t (lift (S O) i 
21604 v)) (eq T t (lift (S O) i v)))) (ex T (\lambda (v: T).(eq T t (lift (S O) i 
21605 v)))) (\lambda (x: T).(\lambda (H2: (or (subst0 i u t (lift (S O) i x)) (eq T 
21606 t (lift (S O) i x)))).(or_ind (subst0 i u t (lift (S O) i x)) (eq T t (lift 
21607 (S O) i x)) (ex T (\lambda (v: T).(eq T t (lift (S O) i v)))) (\lambda (H3: 
21608 (subst0 i u t (lift (S O) i x))).(arity_gen_cvoid_subst0 g c t a H d u i H0 u 
21609 (lift (S O) i x) H3 (ex T (\lambda (v: T).(eq T t (lift (S O) i v)))))) 
21610 (\lambda (H3: (eq T t (lift (S O) i x))).(let H4 \def (eq_ind T t (\lambda 
21611 (t: T).(arity g c t a)) H (lift (S O) i x) H3) in (eq_ind_r T (lift (S O) i 
21612 x) (\lambda (t0: T).(ex T (\lambda (v: T).(eq T t0 (lift (S O) i v))))) 
21613 (ex_intro T (\lambda (v: T).(eq T (lift (S O) i x) (lift (S O) i v))) x 
21614 (refl_equal T (lift (S O) i x))) t H3))) H2))) H1))))))))))).
21615
21616 theorem arity_gen_lift:
21617  \forall (g: G).(\forall (c1: C).(\forall (t: T).(\forall (a: A).(\forall (h: 
21618 nat).(\forall (d: nat).((arity g c1 (lift h d t) a) \to (\forall (c2: 
21619 C).((drop h d c1 c2) \to (arity g c2 t a)))))))))
21620 \def
21621  \lambda (g: G).(\lambda (c1: C).(\lambda (t: T).(\lambda (a: A).(\lambda (h: 
21622 nat).(\lambda (d: nat).(\lambda (H: (arity g c1 (lift h d t) a)).(insert_eq T 
21623 (lift h d t) (\lambda (t0: T).(arity g c1 t0 a)) (\forall (c2: C).((drop h d 
21624 c1 c2) \to (arity g c2 t a))) (\lambda (y: T).(\lambda (H0: (arity g c1 y 
21625 a)).(unintro T t (\lambda (t0: T).((eq T y (lift h d t0)) \to (\forall (c2: 
21626 C).((drop h d c1 c2) \to (arity g c2 t0 a))))) (unintro nat d (\lambda (n: 
21627 nat).(\forall (x: T).((eq T y (lift h n x)) \to (\forall (c2: C).((drop h n 
21628 c1 c2) \to (arity g c2 x a)))))) (arity_ind g (\lambda (c: C).(\lambda (t0: 
21629 T).(\lambda (a0: A).(\forall (x: nat).(\forall (x0: T).((eq T t0 (lift h x 
21630 x0)) \to (\forall (c2: C).((drop h x c c2) \to (arity g c2 x0 a0))))))))) 
21631 (\lambda (c: C).(\lambda (n: nat).(\lambda (x: nat).(\lambda (x0: T).(\lambda 
21632 (H1: (eq T (TSort n) (lift h x x0))).(\lambda (c2: C).(\lambda (_: (drop h x 
21633 c c2)).(eq_ind_r T (TSort n) (\lambda (t0: T).(arity g c2 t0 (ASort O n))) 
21634 (arity_sort g c2 n) x0 (lift_gen_sort h x n x0 H1))))))))) (\lambda (c: 
21635 C).(\lambda (d0: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H1: (getl i c 
21636 (CHead d0 (Bind Abbr) u))).(\lambda (a0: A).(\lambda (H2: (arity g d0 u 
21637 a0)).(\lambda (H3: ((\forall (x: nat).(\forall (x0: T).((eq T u (lift h x 
21638 x0)) \to (\forall (c2: C).((drop h x d0 c2) \to (arity g c2 x0 
21639 a0)))))))).(\lambda (x: nat).(\lambda (x0: T).(\lambda (H4: (eq T (TLRef i) 
21640 (lift h x x0))).(\lambda (c2: C).(\lambda (H5: (drop h x c c2)).(let H_x \def 
21641 (lift_gen_lref x0 x h i H4) in (let H6 \def H_x in (or_ind (land (lt i x) (eq 
21642 T x0 (TLRef i))) (land (le (plus x h) i) (eq T x0 (TLRef (minus i h)))) 
21643 (arity g c2 x0 a0) (\lambda (H7: (land (lt i x) (eq T x0 (TLRef 
21644 i)))).(and_ind (lt i x) (eq T x0 (TLRef i)) (arity g c2 x0 a0) (\lambda (H8: 
21645 (lt i x)).(\lambda (H9: (eq T x0 (TLRef i))).(eq_ind_r T (TLRef i) (\lambda 
21646 (t0: T).(arity g c2 t0 a0)) (let H10 \def (eq_ind nat x (\lambda (n: 
21647 nat).(drop h n c c2)) H5 (S (plus i (minus x (S i)))) (lt_plus_minus i x H8)) 
21648 in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h (minus x (S 
21649 i)) v)))) (\lambda (v: T).(\lambda (e0: C).(getl i c2 (CHead e0 (Bind Abbr) 
21650 v)))) (\lambda (_: T).(\lambda (e0: C).(drop h (minus x (S i)) d0 e0))) 
21651 (arity g c2 (TLRef i) a0) (\lambda (x1: T).(\lambda (x2: C).(\lambda (H11: 
21652 (eq T u (lift h (minus x (S i)) x1))).(\lambda (H12: (getl i c2 (CHead x2 
21653 (Bind Abbr) x1))).(\lambda (H13: (drop h (minus x (S i)) d0 x2)).(let H14 
21654 \def (eq_ind T u (\lambda (t: T).(\forall (x: nat).(\forall (x0: T).((eq T t 
21655 (lift h x x0)) \to (\forall (c2: C).((drop h x d0 c2) \to (arity g c2 x0 
21656 a0))))))) H3 (lift h (minus x (S i)) x1) H11) in (let H15 \def (eq_ind T u 
21657 (\lambda (t: T).(arity g d0 t a0)) H2 (lift h (minus x (S i)) x1) H11) in 
21658 (arity_abbr g c2 x2 x1 i H12 a0 (H14 (minus x (S i)) x1 (refl_equal T (lift h 
21659 (minus x (S i)) x1)) x2 H13))))))))) (getl_drop_conf_lt Abbr c d0 u i H1 c2 h 
21660 (minus x (S i)) H10))) x0 H9))) H7)) (\lambda (H7: (land (le (plus x h) i) 
21661 (eq T x0 (TLRef (minus i h))))).(and_ind (le (plus x h) i) (eq T x0 (TLRef 
21662 (minus i h))) (arity g c2 x0 a0) (\lambda (H8: (le (plus x h) i)).(\lambda 
21663 (H9: (eq T x0 (TLRef (minus i h)))).(eq_ind_r T (TLRef (minus i h)) (\lambda 
21664 (t0: T).(arity g c2 t0 a0)) (arity_abbr g c2 d0 u (minus i h) 
21665 (getl_drop_conf_ge i (CHead d0 (Bind Abbr) u) c H1 c2 h x H5 H8) a0 H2) x0 
21666 H9))) H7)) H6)))))))))))))))) (\lambda (c: C).(\lambda (d0: C).(\lambda (u: 
21667 T).(\lambda (i: nat).(\lambda (H1: (getl i c (CHead d0 (Bind Abst) 
21668 u))).(\lambda (a0: A).(\lambda (H2: (arity g d0 u (asucc g a0))).(\lambda 
21669 (H3: ((\forall (x: nat).(\forall (x0: T).((eq T u (lift h x x0)) \to (\forall 
21670 (c2: C).((drop h x d0 c2) \to (arity g c2 x0 (asucc g a0))))))))).(\lambda 
21671 (x: nat).(\lambda (x0: T).(\lambda (H4: (eq T (TLRef i) (lift h x 
21672 x0))).(\lambda (c2: C).(\lambda (H5: (drop h x c c2)).(let H_x \def 
21673 (lift_gen_lref x0 x h i H4) in (let H6 \def H_x in (or_ind (land (lt i x) (eq 
21674 T x0 (TLRef i))) (land (le (plus x h) i) (eq T x0 (TLRef (minus i h)))) 
21675 (arity g c2 x0 a0) (\lambda (H7: (land (lt i x) (eq T x0 (TLRef 
21676 i)))).(and_ind (lt i x) (eq T x0 (TLRef i)) (arity g c2 x0 a0) (\lambda (H8: 
21677 (lt i x)).(\lambda (H9: (eq T x0 (TLRef i))).(eq_ind_r T (TLRef i) (\lambda 
21678 (t0: T).(arity g c2 t0 a0)) (let H10 \def (eq_ind nat x (\lambda (n: 
21679 nat).(drop h n c c2)) H5 (S (plus i (minus x (S i)))) (lt_plus_minus i x H8)) 
21680 in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h (minus x (S 
21681 i)) v)))) (\lambda (v: T).(\lambda (e0: C).(getl i c2 (CHead e0 (Bind Abst) 
21682 v)))) (\lambda (_: T).(\lambda (e0: C).(drop h (minus x (S i)) d0 e0))) 
21683 (arity g c2 (TLRef i) a0) (\lambda (x1: T).(\lambda (x2: C).(\lambda (H11: 
21684 (eq T u (lift h (minus x (S i)) x1))).(\lambda (H12: (getl i c2 (CHead x2 
21685 (Bind Abst) x1))).(\lambda (H13: (drop h (minus x (S i)) d0 x2)).(let H14 
21686 \def (eq_ind T u (\lambda (t: T).(\forall (x: nat).(\forall (x0: T).((eq T t 
21687 (lift h x x0)) \to (\forall (c2: C).((drop h x d0 c2) \to (arity g c2 x0 
21688 (asucc g a0)))))))) H3 (lift h (minus x (S i)) x1) H11) in (let H15 \def 
21689 (eq_ind T u (\lambda (t: T).(arity g d0 t (asucc g a0))) H2 (lift h (minus x 
21690 (S i)) x1) H11) in (arity_abst g c2 x2 x1 i H12 a0 (H14 (minus x (S i)) x1 
21691 (refl_equal T (lift h (minus x (S i)) x1)) x2 H13))))))))) (getl_drop_conf_lt 
21692 Abst c d0 u i H1 c2 h (minus x (S i)) H10))) x0 H9))) H7)) (\lambda (H7: 
21693 (land (le (plus x h) i) (eq T x0 (TLRef (minus i h))))).(and_ind (le (plus x 
21694 h) i) (eq T x0 (TLRef (minus i h))) (arity g c2 x0 a0) (\lambda (H8: (le 
21695 (plus x h) i)).(\lambda (H9: (eq T x0 (TLRef (minus i h)))).(eq_ind_r T 
21696 (TLRef (minus i h)) (\lambda (t0: T).(arity g c2 t0 a0)) (arity_abst g c2 d0 
21697 u (minus i h) (getl_drop_conf_ge i (CHead d0 (Bind Abst) u) c H1 c2 h x H5 
21698 H8) a0 H2) x0 H9))) H7)) H6)))))))))))))))) (\lambda (b: B).(\lambda (H1: 
21699 (not (eq B b Abst))).(\lambda (c: C).(\lambda (u: T).(\lambda (a1: 
21700 A).(\lambda (H2: (arity g c u a1)).(\lambda (H3: ((\forall (x: nat).(\forall 
21701 (x0: T).((eq T u (lift h x x0)) \to (\forall (c2: C).((drop h x c c2) \to 
21702 (arity g c2 x0 a1)))))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (H4: 
21703 (arity g (CHead c (Bind b) u) t0 a2)).(\lambda (H5: ((\forall (x: 
21704 nat).(\forall (x0: T).((eq T t0 (lift h x x0)) \to (\forall (c2: C).((drop h 
21705 x (CHead c (Bind b) u) c2) \to (arity g c2 x0 a2)))))))).(\lambda (x: 
21706 nat).(\lambda (x0: T).(\lambda (H6: (eq T (THead (Bind b) u t0) (lift h x 
21707 x0))).(\lambda (c2: C).(\lambda (H7: (drop h x c c2)).(ex3_2_ind T T (\lambda 
21708 (y0: T).(\lambda (z: T).(eq T x0 (THead (Bind b) y0 z)))) (\lambda (y0: 
21709 T).(\lambda (_: T).(eq T u (lift h x y0)))) (\lambda (_: T).(\lambda (z: 
21710 T).(eq T t0 (lift h (S x) z)))) (arity g c2 x0 a2) (\lambda (x1: T).(\lambda 
21711 (x2: T).(\lambda (H8: (eq T x0 (THead (Bind b) x1 x2))).(\lambda (H9: (eq T u 
21712 (lift h x x1))).(\lambda (H10: (eq T t0 (lift h (S x) x2))).(eq_ind_r T 
21713 (THead (Bind b) x1 x2) (\lambda (t1: T).(arity g c2 t1 a2)) (let H11 \def 
21714 (eq_ind T t0 (\lambda (t: T).(\forall (x: nat).(\forall (x0: T).((eq T t 
21715 (lift h x x0)) \to (\forall (c2: C).((drop h x (CHead c (Bind b) u) c2) \to 
21716 (arity g c2 x0 a2))))))) H5 (lift h (S x) x2) H10) in (let H12 \def (eq_ind T 
21717 t0 (\lambda (t: T).(arity g (CHead c (Bind b) u) t a2)) H4 (lift h (S x) x2) 
21718 H10) in (let H13 \def (eq_ind T u (\lambda (t: T).(arity g (CHead c (Bind b) 
21719 t) (lift h (S x) x2) a2)) H12 (lift h x x1) H9) in (let H14 \def (eq_ind T u 
21720 (\lambda (t: T).(\forall (x0: nat).(\forall (x1: T).((eq T (lift h (S x) x2) 
21721 (lift h x0 x1)) \to (\forall (c2: C).((drop h x0 (CHead c (Bind b) t) c2) \to 
21722 (arity g c2 x1 a2))))))) H11 (lift h x x1) H9) in (let H15 \def (eq_ind T u 
21723 (\lambda (t: T).(\forall (x: nat).(\forall (x0: T).((eq T t (lift h x x0)) 
21724 \to (\forall (c2: C).((drop h x c c2) \to (arity g c2 x0 a1))))))) H3 (lift h 
21725 x x1) H9) in (let H16 \def (eq_ind T u (\lambda (t: T).(arity g c t a1)) H2 
21726 (lift h x x1) H9) in (arity_bind g b H1 c2 x1 a1 (H15 x x1 (refl_equal T 
21727 (lift h x x1)) c2 H7) x2 a2 (H14 (S x) x2 (refl_equal T (lift h (S x) x2)) 
21728 (CHead c2 (Bind b) x1) (drop_skip_bind h x c c2 H7 b x1))))))))) x0 H8)))))) 
21729 (lift_gen_bind b u t0 x0 h x H6)))))))))))))))))) (\lambda (c: C).(\lambda 
21730 (u: T).(\lambda (a1: A).(\lambda (H1: (arity g c u (asucc g a1))).(\lambda 
21731 (H2: ((\forall (x: nat).(\forall (x0: T).((eq T u (lift h x x0)) \to (\forall 
21732 (c2: C).((drop h x c c2) \to (arity g c2 x0 (asucc g a1))))))))).(\lambda 
21733 (t0: T).(\lambda (a2: A).(\lambda (H3: (arity g (CHead c (Bind Abst) u) t0 
21734 a2)).(\lambda (H4: ((\forall (x: nat).(\forall (x0: T).((eq T t0 (lift h x 
21735 x0)) \to (\forall (c2: C).((drop h x (CHead c (Bind Abst) u) c2) \to (arity g 
21736 c2 x0 a2)))))))).(\lambda (x: nat).(\lambda (x0: T).(\lambda (H5: (eq T 
21737 (THead (Bind Abst) u t0) (lift h x x0))).(\lambda (c2: C).(\lambda (H6: (drop 
21738 h x c c2)).(ex3_2_ind T T (\lambda (y0: T).(\lambda (z: T).(eq T x0 (THead 
21739 (Bind Abst) y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T u (lift h x 
21740 y0)))) (\lambda (_: T).(\lambda (z: T).(eq T t0 (lift h (S x) z)))) (arity g 
21741 c2 x0 (AHead a1 a2)) (\lambda (x1: T).(\lambda (x2: T).(\lambda (H7: (eq T x0 
21742 (THead (Bind Abst) x1 x2))).(\lambda (H8: (eq T u (lift h x x1))).(\lambda 
21743 (H9: (eq T t0 (lift h (S x) x2))).(eq_ind_r T (THead (Bind Abst) x1 x2) 
21744 (\lambda (t1: T).(arity g c2 t1 (AHead a1 a2))) (let H10 \def (eq_ind T t0 
21745 (\lambda (t: T).(\forall (x: nat).(\forall (x0: T).((eq T t (lift h x x0)) 
21746 \to (\forall (c2: C).((drop h x (CHead c (Bind Abst) u) c2) \to (arity g c2 
21747 x0 a2))))))) H4 (lift h (S x) x2) H9) in (let H11 \def (eq_ind T t0 (\lambda 
21748 (t: T).(arity g (CHead c (Bind Abst) u) t a2)) H3 (lift h (S x) x2) H9) in 
21749 (let H12 \def (eq_ind T u (\lambda (t: T).(arity g (CHead c (Bind Abst) t) 
21750 (lift h (S x) x2) a2)) H11 (lift h x x1) H8) in (let H13 \def (eq_ind T u 
21751 (\lambda (t: T).(\forall (x0: nat).(\forall (x1: T).((eq T (lift h (S x) x2) 
21752 (lift h x0 x1)) \to (\forall (c2: C).((drop h x0 (CHead c (Bind Abst) t) c2) 
21753 \to (arity g c2 x1 a2))))))) H10 (lift h x x1) H8) in (let H14 \def (eq_ind T 
21754 u (\lambda (t: T).(\forall (x: nat).(\forall (x0: T).((eq T t (lift h x x0)) 
21755 \to (\forall (c2: C).((drop h x c c2) \to (arity g c2 x0 (asucc g a1)))))))) 
21756 H2 (lift h x x1) H8) in (let H15 \def (eq_ind T u (\lambda (t: T).(arity g c 
21757 t (asucc g a1))) H1 (lift h x x1) H8) in (arity_head g c2 x1 a1 (H14 x x1 
21758 (refl_equal T (lift h x x1)) c2 H6) x2 a2 (H13 (S x) x2 (refl_equal T (lift h 
21759 (S x) x2)) (CHead c2 (Bind Abst) x1) (drop_skip_bind h x c c2 H6 Abst 
21760 x1))))))))) x0 H7)))))) (lift_gen_bind Abst u t0 x0 h x H5)))))))))))))))) 
21761 (\lambda (c: C).(\lambda (u: T).(\lambda (a1: A).(\lambda (H1: (arity g c u 
21762 a1)).(\lambda (H2: ((\forall (x: nat).(\forall (x0: T).((eq T u (lift h x 
21763 x0)) \to (\forall (c2: C).((drop h x c c2) \to (arity g c2 x0 
21764 a1)))))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (H3: (arity g c t0 
21765 (AHead a1 a2))).(\lambda (H4: ((\forall (x: nat).(\forall (x0: T).((eq T t0 
21766 (lift h x x0)) \to (\forall (c2: C).((drop h x c c2) \to (arity g c2 x0 
21767 (AHead a1 a2))))))))).(\lambda (x: nat).(\lambda (x0: T).(\lambda (H5: (eq T 
21768 (THead (Flat Appl) u t0) (lift h x x0))).(\lambda (c2: C).(\lambda (H6: (drop 
21769 h x c c2)).(ex3_2_ind T T (\lambda (y0: T).(\lambda (z: T).(eq T x0 (THead 
21770 (Flat Appl) y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T u (lift h x 
21771 y0)))) (\lambda (_: T).(\lambda (z: T).(eq T t0 (lift h x z)))) (arity g c2 
21772 x0 a2) (\lambda (x1: T).(\lambda (x2: T).(\lambda (H7: (eq T x0 (THead (Flat 
21773 Appl) x1 x2))).(\lambda (H8: (eq T u (lift h x x1))).(\lambda (H9: (eq T t0 
21774 (lift h x x2))).(eq_ind_r T (THead (Flat Appl) x1 x2) (\lambda (t1: T).(arity 
21775 g c2 t1 a2)) (let H10 \def (eq_ind T t0 (\lambda (t: T).(\forall (x: 
21776 nat).(\forall (x0: T).((eq T t (lift h x x0)) \to (\forall (c2: C).((drop h x 
21777 c c2) \to (arity g c2 x0 (AHead a1 a2)))))))) H4 (lift h x x2) H9) in (let 
21778 H11 \def (eq_ind T t0 (\lambda (t: T).(arity g c t (AHead a1 a2))) H3 (lift h 
21779 x x2) H9) in (let H12 \def (eq_ind T u (\lambda (t: T).(\forall (x: 
21780 nat).(\forall (x0: T).((eq T t (lift h x x0)) \to (\forall (c2: C).((drop h x 
21781 c c2) \to (arity g c2 x0 a1))))))) H2 (lift h x x1) H8) in (let H13 \def 
21782 (eq_ind T u (\lambda (t: T).(arity g c t a1)) H1 (lift h x x1) H8) in 
21783 (arity_appl g c2 x1 a1 (H12 x x1 (refl_equal T (lift h x x1)) c2 H6) x2 a2 
21784 (H10 x x2 (refl_equal T (lift h x x2)) c2 H6)))))) x0 H7)))))) (lift_gen_flat 
21785 Appl u t0 x0 h x H5)))))))))))))))) (\lambda (c: C).(\lambda (u: T).(\lambda 
21786 (a0: A).(\lambda (H1: (arity g c u (asucc g a0))).(\lambda (H2: ((\forall (x: 
21787 nat).(\forall (x0: T).((eq T u (lift h x x0)) \to (\forall (c2: C).((drop h x 
21788 c c2) \to (arity g c2 x0 (asucc g a0))))))))).(\lambda (t0: T).(\lambda (H3: 
21789 (arity g c t0 a0)).(\lambda (H4: ((\forall (x: nat).(\forall (x0: T).((eq T 
21790 t0 (lift h x x0)) \to (\forall (c2: C).((drop h x c c2) \to (arity g c2 x0 
21791 a0)))))))).(\lambda (x: nat).(\lambda (x0: T).(\lambda (H5: (eq T (THead 
21792 (Flat Cast) u t0) (lift h x x0))).(\lambda (c2: C).(\lambda (H6: (drop h x c 
21793 c2)).(ex3_2_ind T T (\lambda (y0: T).(\lambda (z: T).(eq T x0 (THead (Flat 
21794 Cast) y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T u (lift h x y0)))) 
21795 (\lambda (_: T).(\lambda (z: T).(eq T t0 (lift h x z)))) (arity g c2 x0 a0) 
21796 (\lambda (x1: T).(\lambda (x2: T).(\lambda (H7: (eq T x0 (THead (Flat Cast) 
21797 x1 x2))).(\lambda (H8: (eq T u (lift h x x1))).(\lambda (H9: (eq T t0 (lift h 
21798 x x2))).(eq_ind_r T (THead (Flat Cast) x1 x2) (\lambda (t1: T).(arity g c2 t1 
21799 a0)) (let H10 \def (eq_ind T t0 (\lambda (t: T).(\forall (x: nat).(\forall 
21800 (x0: T).((eq T t (lift h x x0)) \to (\forall (c2: C).((drop h x c c2) \to 
21801 (arity g c2 x0 a0))))))) H4 (lift h x x2) H9) in (let H11 \def (eq_ind T t0 
21802 (\lambda (t: T).(arity g c t a0)) H3 (lift h x x2) H9) in (let H12 \def 
21803 (eq_ind T u (\lambda (t: T).(\forall (x: nat).(\forall (x0: T).((eq T t (lift 
21804 h x x0)) \to (\forall (c2: C).((drop h x c c2) \to (arity g c2 x0 (asucc g 
21805 a0)))))))) H2 (lift h x x1) H8) in (let H13 \def (eq_ind T u (\lambda (t: 
21806 T).(arity g c t (asucc g a0))) H1 (lift h x x1) H8) in (arity_cast g c2 x1 a0 
21807 (H12 x x1 (refl_equal T (lift h x x1)) c2 H6) x2 (H10 x x2 (refl_equal T 
21808 (lift h x x2)) c2 H6)))))) x0 H7)))))) (lift_gen_flat Cast u t0 x0 h x 
21809 H5))))))))))))))) (\lambda (c: C).(\lambda (t0: T).(\lambda (a1: A).(\lambda 
21810 (_: (arity g c t0 a1)).(\lambda (H2: ((\forall (x: nat).(\forall (x0: T).((eq 
21811 T t0 (lift h x x0)) \to (\forall (c2: C).((drop h x c c2) \to (arity g c2 x0 
21812 a1)))))))).(\lambda (a2: A).(\lambda (H3: (leq g a1 a2)).(\lambda (x: 
21813 nat).(\lambda (x0: T).(\lambda (H4: (eq T t0 (lift h x x0))).(\lambda (c2: 
21814 C).(\lambda (H5: (drop h x c c2)).(arity_repl g c2 x0 a1 (H2 x x0 H4 c2 H5) 
21815 a2 H3))))))))))))) c1 y a H0))))) H))))))).
21816
21817 theorem arity_lift:
21818  \forall (g: G).(\forall (c2: C).(\forall (t: T).(\forall (a: A).((arity g c2 
21819 t a) \to (\forall (c1: C).(\forall (h: nat).(\forall (d: nat).((drop h d c1 
21820 c2) \to (arity g c1 (lift h d t) a)))))))))
21821 \def
21822  \lambda (g: G).(\lambda (c2: C).(\lambda (t: T).(\lambda (a: A).(\lambda (H: 
21823 (arity g c2 t a)).(arity_ind g (\lambda (c: C).(\lambda (t0: T).(\lambda (a0: 
21824 A).(\forall (c1: C).(\forall (h: nat).(\forall (d: nat).((drop h d c1 c) \to 
21825 (arity g c1 (lift h d t0) a0)))))))) (\lambda (c: C).(\lambda (n: 
21826 nat).(\lambda (c1: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (_: (drop 
21827 h d c1 c)).(eq_ind_r T (TSort n) (\lambda (t0: T).(arity g c1 t0 (ASort O 
21828 n))) (arity_sort g c1 n) (lift h d (TSort n)) (lift_sort n h d)))))))) 
21829 (\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
21830 (H0: (getl i c (CHead d (Bind Abbr) u))).(\lambda (a0: A).(\lambda (H1: 
21831 (arity g d u a0)).(\lambda (H2: ((\forall (c1: C).(\forall (h: nat).(\forall 
21832 (d0: nat).((drop h d0 c1 d) \to (arity g c1 (lift h d0 u) a0))))))).(\lambda 
21833 (c1: C).(\lambda (h: nat).(\lambda (d0: nat).(\lambda (H3: (drop h d0 c1 
21834 c)).(lt_le_e i d0 (arity g c1 (lift h d0 (TLRef i)) a0) (\lambda (H4: (lt i 
21835 d0)).(eq_ind_r T (TLRef i) (\lambda (t0: T).(arity g c1 t0 a0)) (let H5 \def 
21836 (drop_getl_trans_le i d0 (le_S_n i d0 (le_S (S i) d0 H4)) c1 c h H3 (CHead d 
21837 (Bind Abbr) u) H0) in (ex3_2_ind C C (\lambda (e0: C).(\lambda (_: C).(drop i 
21838 O c1 e0))) (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d0 i) e0 e1))) 
21839 (\lambda (_: C).(\lambda (e1: C).(clear e1 (CHead d (Bind Abbr) u)))) (arity 
21840 g c1 (TLRef i) a0) (\lambda (x0: C).(\lambda (x1: C).(\lambda (H6: (drop i O 
21841 c1 x0)).(\lambda (H7: (drop h (minus d0 i) x0 x1)).(\lambda (H8: (clear x1 
21842 (CHead d (Bind Abbr) u))).(let H9 \def (eq_ind nat (minus d0 i) (\lambda (n: 
21843 nat).(drop h n x0 x1)) H7 (S (minus d0 (S i))) (minus_x_Sy d0 i H4)) in (let 
21844 H10 \def (drop_clear_S x1 x0 h (minus d0 (S i)) H9 Abbr d u H8) in (ex2_ind C 
21845 (\lambda (c3: C).(clear x0 (CHead c3 (Bind Abbr) (lift h (minus d0 (S i)) 
21846 u)))) (\lambda (c3: C).(drop h (minus d0 (S i)) c3 d)) (arity g c1 (TLRef i) 
21847 a0) (\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abbr) (lift h 
21848 (minus d0 (S i)) u)))).(\lambda (H12: (drop h (minus d0 (S i)) x 
21849 d)).(arity_abbr g c1 x (lift h (minus d0 (S i)) u) i (getl_intro i c1 (CHead 
21850 x (Bind Abbr) (lift h (minus d0 (S i)) u)) x0 H6 H11) a0 (H2 x h (minus d0 (S 
21851 i)) H12))))) H10)))))))) H5)) (lift h d0 (TLRef i)) (lift_lref_lt i h d0 
21852 H4))) (\lambda (H4: (le d0 i)).(eq_ind_r T (TLRef (plus i h)) (\lambda (t0: 
21853 T).(arity g c1 t0 a0)) (arity_abbr g c1 d u (plus i h) (drop_getl_trans_ge i 
21854 c1 c d0 h H3 (CHead d (Bind Abbr) u) H0 H4) a0 H1) (lift h d0 (TLRef i)) 
21855 (lift_lref_ge i h d0 H4)))))))))))))))) (\lambda (c: C).(\lambda (d: 
21856 C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c (CHead d (Bind 
21857 Abst) u))).(\lambda (a0: A).(\lambda (H1: (arity g d u (asucc g 
21858 a0))).(\lambda (H2: ((\forall (c1: C).(\forall (h: nat).(\forall (d0: 
21859 nat).((drop h d0 c1 d) \to (arity g c1 (lift h d0 u) (asucc g 
21860 a0)))))))).(\lambda (c1: C).(\lambda (h: nat).(\lambda (d0: nat).(\lambda 
21861 (H3: (drop h d0 c1 c)).(lt_le_e i d0 (arity g c1 (lift h d0 (TLRef i)) a0) 
21862 (\lambda (H4: (lt i d0)).(eq_ind_r T (TLRef i) (\lambda (t0: T).(arity g c1 
21863 t0 a0)) (let H5 \def (drop_getl_trans_le i d0 (le_S_n i d0 (le_S (S i) d0 
21864 H4)) c1 c h H3 (CHead d (Bind Abst) u) H0) in (ex3_2_ind C C (\lambda (e0: 
21865 C).(\lambda (_: C).(drop i O c1 e0))) (\lambda (e0: C).(\lambda (e1: C).(drop 
21866 h (minus d0 i) e0 e1))) (\lambda (_: C).(\lambda (e1: C).(clear e1 (CHead d 
21867 (Bind Abst) u)))) (arity g c1 (TLRef i) a0) (\lambda (x0: C).(\lambda (x1: 
21868 C).(\lambda (H6: (drop i O c1 x0)).(\lambda (H7: (drop h (minus d0 i) x0 
21869 x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abst) u))).(let H9 \def (eq_ind 
21870 nat (minus d0 i) (\lambda (n: nat).(drop h n x0 x1)) H7 (S (minus d0 (S i))) 
21871 (minus_x_Sy d0 i H4)) in (let H10 \def (drop_clear_S x1 x0 h (minus d0 (S i)) 
21872 H9 Abst d u H8) in (ex2_ind C (\lambda (c3: C).(clear x0 (CHead c3 (Bind 
21873 Abst) (lift h (minus d0 (S i)) u)))) (\lambda (c3: C).(drop h (minus d0 (S 
21874 i)) c3 d)) (arity g c1 (TLRef i) a0) (\lambda (x: C).(\lambda (H11: (clear x0 
21875 (CHead x (Bind Abst) (lift h (minus d0 (S i)) u)))).(\lambda (H12: (drop h 
21876 (minus d0 (S i)) x d)).(arity_abst g c1 x (lift h (minus d0 (S i)) u) i 
21877 (getl_intro i c1 (CHead x (Bind Abst) (lift h (minus d0 (S i)) u)) x0 H6 H11) 
21878 a0 (H2 x h (minus d0 (S i)) H12))))) H10)))))))) H5)) (lift h d0 (TLRef i)) 
21879 (lift_lref_lt i h d0 H4))) (\lambda (H4: (le d0 i)).(eq_ind_r T (TLRef (plus 
21880 i h)) (\lambda (t0: T).(arity g c1 t0 a0)) (arity_abst g c1 d u (plus i h) 
21881 (drop_getl_trans_ge i c1 c d0 h H3 (CHead d (Bind Abst) u) H0 H4) a0 H1) 
21882 (lift h d0 (TLRef i)) (lift_lref_ge i h d0 H4)))))))))))))))) (\lambda (b: 
21883 B).(\lambda (H0: (not (eq B b Abst))).(\lambda (c: C).(\lambda (u: 
21884 T).(\lambda (a1: A).(\lambda (_: (arity g c u a1)).(\lambda (H2: ((\forall 
21885 (c1: C).(\forall (h: nat).(\forall (d: nat).((drop h d c1 c) \to (arity g c1 
21886 (lift h d u) a1))))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (_: (arity 
21887 g (CHead c (Bind b) u) t0 a2)).(\lambda (H4: ((\forall (c1: C).(\forall (h: 
21888 nat).(\forall (d: nat).((drop h d c1 (CHead c (Bind b) u)) \to (arity g c1 
21889 (lift h d t0) a2))))))).(\lambda (c1: C).(\lambda (h: nat).(\lambda (d: 
21890 nat).(\lambda (H5: (drop h d c1 c)).(eq_ind_r T (THead (Bind b) (lift h d u) 
21891 (lift h (s (Bind b) d) t0)) (\lambda (t1: T).(arity g c1 t1 a2)) (arity_bind 
21892 g b H0 c1 (lift h d u) a1 (H2 c1 h d H5) (lift h (s (Bind b) d) t0) a2 (H4 
21893 (CHead c1 (Bind b) (lift h d u)) h (s (Bind b) d) (drop_skip_bind h d c1 c H5 
21894 b u))) (lift h d (THead (Bind b) u t0)) (lift_head (Bind b) u t0 h 
21895 d))))))))))))))))) (\lambda (c: C).(\lambda (u: T).(\lambda (a1: A).(\lambda 
21896 (_: (arity g c u (asucc g a1))).(\lambda (H1: ((\forall (c1: C).(\forall (h: 
21897 nat).(\forall (d: nat).((drop h d c1 c) \to (arity g c1 (lift h d u) (asucc g 
21898 a1)))))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (_: (arity g (CHead c 
21899 (Bind Abst) u) t0 a2)).(\lambda (H3: ((\forall (c1: C).(\forall (h: 
21900 nat).(\forall (d: nat).((drop h d c1 (CHead c (Bind Abst) u)) \to (arity g c1 
21901 (lift h d t0) a2))))))).(\lambda (c1: C).(\lambda (h: nat).(\lambda (d: 
21902 nat).(\lambda (H4: (drop h d c1 c)).(eq_ind_r T (THead (Bind Abst) (lift h d 
21903 u) (lift h (s (Bind Abst) d) t0)) (\lambda (t1: T).(arity g c1 t1 (AHead a1 
21904 a2))) (arity_head g c1 (lift h d u) a1 (H1 c1 h d H4) (lift h (s (Bind Abst) 
21905 d) t0) a2 (H3 (CHead c1 (Bind Abst) (lift h d u)) h (s (Bind Abst) d) 
21906 (drop_skip_bind h d c1 c H4 Abst u))) (lift h d (THead (Bind Abst) u t0)) 
21907 (lift_head (Bind Abst) u t0 h d))))))))))))))) (\lambda (c: C).(\lambda (u: 
21908 T).(\lambda (a1: A).(\lambda (_: (arity g c u a1)).(\lambda (H1: ((\forall 
21909 (c1: C).(\forall (h: nat).(\forall (d: nat).((drop h d c1 c) \to (arity g c1 
21910 (lift h d u) a1))))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (_: (arity 
21911 g c t0 (AHead a1 a2))).(\lambda (H3: ((\forall (c1: C).(\forall (h: 
21912 nat).(\forall (d: nat).((drop h d c1 c) \to (arity g c1 (lift h d t0) (AHead 
21913 a1 a2)))))))).(\lambda (c1: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
21914 (H4: (drop h d c1 c)).(eq_ind_r T (THead (Flat Appl) (lift h d u) (lift h (s 
21915 (Flat Appl) d) t0)) (\lambda (t1: T).(arity g c1 t1 a2)) (arity_appl g c1 
21916 (lift h d u) a1 (H1 c1 h d H4) (lift h (s (Flat Appl) d) t0) a2 (H3 c1 h (s 
21917 (Flat Appl) d) H4)) (lift h d (THead (Flat Appl) u t0)) (lift_head (Flat 
21918 Appl) u t0 h d))))))))))))))) (\lambda (c: C).(\lambda (u: T).(\lambda (a0: 
21919 A).(\lambda (_: (arity g c u (asucc g a0))).(\lambda (H1: ((\forall (c1: 
21920 C).(\forall (h: nat).(\forall (d: nat).((drop h d c1 c) \to (arity g c1 (lift 
21921 h d u) (asucc g a0)))))))).(\lambda (t0: T).(\lambda (_: (arity g c t0 
21922 a0)).(\lambda (H3: ((\forall (c1: C).(\forall (h: nat).(\forall (d: 
21923 nat).((drop h d c1 c) \to (arity g c1 (lift h d t0) a0))))))).(\lambda (c1: 
21924 C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H4: (drop h d c1 
21925 c)).(eq_ind_r T (THead (Flat Cast) (lift h d u) (lift h (s (Flat Cast) d) 
21926 t0)) (\lambda (t1: T).(arity g c1 t1 a0)) (arity_cast g c1 (lift h d u) a0 
21927 (H1 c1 h d H4) (lift h (s (Flat Cast) d) t0) (H3 c1 h (s (Flat Cast) d) H4)) 
21928 (lift h d (THead (Flat Cast) u t0)) (lift_head (Flat Cast) u t0 h 
21929 d)))))))))))))) (\lambda (c: C).(\lambda (t0: T).(\lambda (a1: A).(\lambda 
21930 (_: (arity g c t0 a1)).(\lambda (H1: ((\forall (c1: C).(\forall (h: 
21931 nat).(\forall (d: nat).((drop h d c1 c) \to (arity g c1 (lift h d t0) 
21932 a1))))))).(\lambda (a2: A).(\lambda (H2: (leq g a1 a2)).(\lambda (c1: 
21933 C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H3: (drop h d c1 
21934 c)).(arity_repl g c1 (lift h d t0) a1 (H1 c1 h d H3) a2 H2)))))))))))) c2 t a 
21935 H))))).
21936
21937 theorem arity_lift1:
21938  \forall (g: G).(\forall (a: A).(\forall (c2: C).(\forall (hds: 
21939 PList).(\forall (c1: C).(\forall (t: T).((drop1 hds c1 c2) \to ((arity g c2 t 
21940 a) \to (arity g c1 (lift1 hds t) a))))))))
21941 \def
21942  \lambda (g: G).(\lambda (a: A).(\lambda (c2: C).(\lambda (hds: 
21943 PList).(PList_ind (\lambda (p: PList).(\forall (c1: C).(\forall (t: 
21944 T).((drop1 p c1 c2) \to ((arity g c2 t a) \to (arity g c1 (lift1 p t) a)))))) 
21945 (\lambda (c1: C).(\lambda (t: T).(\lambda (H: (drop1 PNil c1 c2)).(\lambda 
21946 (H0: (arity g c2 t a)).(let H1 \def (match H return (\lambda (p: 
21947 PList).(\lambda (c: C).(\lambda (c0: C).(\lambda (_: (drop1 p c c0)).((eq 
21948 PList p PNil) \to ((eq C c c1) \to ((eq C c0 c2) \to (arity g c1 t a)))))))) 
21949 with [(drop1_nil c) \Rightarrow (\lambda (_: (eq PList PNil PNil)).(\lambda 
21950 (H2: (eq C c c1)).(\lambda (H3: (eq C c c2)).(eq_ind C c1 (\lambda (c0: 
21951 C).((eq C c0 c2) \to (arity g c1 t a))) (\lambda (H4: (eq C c1 c2)).(eq_ind C 
21952 c2 (\lambda (c0: C).(arity g c0 t a)) H0 c1 (sym_eq C c1 c2 H4))) c (sym_eq C 
21953 c c1 H2) H3)))) | (drop1_cons c0 c3 h d H1 c4 hds H2) \Rightarrow (\lambda 
21954 (H3: (eq PList (PCons h d hds) PNil)).(\lambda (H4: (eq C c0 c1)).(\lambda 
21955 (H5: (eq C c4 c2)).((let H6 \def (eq_ind PList (PCons h d hds) (\lambda (e: 
21956 PList).(match e return (\lambda (_: PList).Prop) with [PNil \Rightarrow False 
21957 | (PCons _ _ _) \Rightarrow True])) I PNil H3) in (False_ind ((eq C c0 c1) 
21958 \to ((eq C c4 c2) \to ((drop h d c0 c3) \to ((drop1 hds c3 c4) \to (arity g 
21959 c1 t a))))) H6)) H4 H5 H1 H2))))]) in (H1 (refl_equal PList PNil) (refl_equal 
21960 C c1) (refl_equal C c2))))))) (\lambda (n: nat).(\lambda (n0: nat).(\lambda 
21961 (p: PList).(\lambda (H: ((\forall (c1: C).(\forall (t: T).((drop1 p c1 c2) 
21962 \to ((arity g c2 t a) \to (arity g c1 (lift1 p t) a))))))).(\lambda (c1: 
21963 C).(\lambda (t: T).(\lambda (H0: (drop1 (PCons n n0 p) c1 c2)).(\lambda (H1: 
21964 (arity g c2 t a)).(let H2 \def (match H0 return (\lambda (p0: PList).(\lambda 
21965 (c: C).(\lambda (c0: C).(\lambda (_: (drop1 p0 c c0)).((eq PList p0 (PCons n 
21966 n0 p)) \to ((eq C c c1) \to ((eq C c0 c2) \to (arity g c1 (lift n n0 (lift1 p 
21967 t)) a)))))))) with [(drop1_nil c) \Rightarrow (\lambda (H2: (eq PList PNil 
21968 (PCons n n0 p))).(\lambda (H3: (eq C c c1)).(\lambda (H4: (eq C c c2)).((let 
21969 H5 \def (eq_ind PList PNil (\lambda (e: PList).(match e return (\lambda (_: 
21970 PList).Prop) with [PNil \Rightarrow True | (PCons _ _ _) \Rightarrow False])) 
21971 I (PCons n n0 p) H2) in (False_ind ((eq C c c1) \to ((eq C c c2) \to (arity g 
21972 c1 (lift n n0 (lift1 p t)) a))) H5)) H3 H4)))) | (drop1_cons c0 c3 h d H2 c4 
21973 hds H3) \Rightarrow (\lambda (H4: (eq PList (PCons h d hds) (PCons n n0 
21974 p))).(\lambda (H5: (eq C c0 c1)).(\lambda (H6: (eq C c4 c2)).((let H7 \def 
21975 (f_equal PList PList (\lambda (e: PList).(match e return (\lambda (_: 
21976 PList).PList) with [PNil \Rightarrow hds | (PCons _ _ p) \Rightarrow p])) 
21977 (PCons h d hds) (PCons n n0 p) H4) in ((let H8 \def (f_equal PList nat 
21978 (\lambda (e: PList).(match e return (\lambda (_: PList).nat) with [PNil 
21979 \Rightarrow d | (PCons _ n _) \Rightarrow n])) (PCons h d hds) (PCons n n0 p) 
21980 H4) in ((let H9 \def (f_equal PList nat (\lambda (e: PList).(match e return 
21981 (\lambda (_: PList).nat) with [PNil \Rightarrow h | (PCons n _ _) \Rightarrow 
21982 n])) (PCons h d hds) (PCons n n0 p) H4) in (eq_ind nat n (\lambda (n1: 
21983 nat).((eq nat d n0) \to ((eq PList hds p) \to ((eq C c0 c1) \to ((eq C c4 c2) 
21984 \to ((drop n1 d c0 c3) \to ((drop1 hds c3 c4) \to (arity g c1 (lift n n0 
21985 (lift1 p t)) a)))))))) (\lambda (H10: (eq nat d n0)).(eq_ind nat n0 (\lambda 
21986 (n1: nat).((eq PList hds p) \to ((eq C c0 c1) \to ((eq C c4 c2) \to ((drop n 
21987 n1 c0 c3) \to ((drop1 hds c3 c4) \to (arity g c1 (lift n n0 (lift1 p t)) 
21988 a))))))) (\lambda (H11: (eq PList hds p)).(eq_ind PList p (\lambda (p0: 
21989 PList).((eq C c0 c1) \to ((eq C c4 c2) \to ((drop n n0 c0 c3) \to ((drop1 p0 
21990 c3 c4) \to (arity g c1 (lift n n0 (lift1 p t)) a)))))) (\lambda (H12: (eq C 
21991 c0 c1)).(eq_ind C c1 (\lambda (c: C).((eq C c4 c2) \to ((drop n n0 c c3) \to 
21992 ((drop1 p c3 c4) \to (arity g c1 (lift n n0 (lift1 p t)) a))))) (\lambda 
21993 (H13: (eq C c4 c2)).(eq_ind C c2 (\lambda (c: C).((drop n n0 c1 c3) \to 
21994 ((drop1 p c3 c) \to (arity g c1 (lift n n0 (lift1 p t)) a)))) (\lambda (H14: 
21995 (drop n n0 c1 c3)).(\lambda (H15: (drop1 p c3 c2)).(arity_lift g c3 (lift1 p 
21996 t) a (H c3 t H15 H1) c1 n n0 H14))) c4 (sym_eq C c4 c2 H13))) c0 (sym_eq C c0 
21997 c1 H12))) hds (sym_eq PList hds p H11))) d (sym_eq nat d n0 H10))) h (sym_eq 
21998 nat h n H9))) H8)) H7)) H5 H6 H2 H3))))]) in (H2 (refl_equal PList (PCons n 
21999 n0 p)) (refl_equal C c1) (refl_equal C c2))))))))))) hds)))).
22000
22001 theorem arity_mono:
22002  \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (a1: A).((arity g c 
22003 t a1) \to (\forall (a2: A).((arity g c t a2) \to (leq g a1 a2)))))))
22004 \def
22005  \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (a1: A).(\lambda (H: 
22006 (arity g c t a1)).(arity_ind g (\lambda (c0: C).(\lambda (t0: T).(\lambda (a: 
22007 A).(\forall (a2: A).((arity g c0 t0 a2) \to (leq g a a2)))))) (\lambda (c0: 
22008 C).(\lambda (n: nat).(\lambda (a2: A).(\lambda (H0: (arity g c0 (TSort n) 
22009 a2)).(leq_sym g a2 (ASort O n) (arity_gen_sort g c0 n a2 H0)))))) (\lambda 
22010 (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl 
22011 i c0 (CHead d (Bind Abbr) u))).(\lambda (a: A).(\lambda (_: (arity g d u 
22012 a)).(\lambda (H2: ((\forall (a2: A).((arity g d u a2) \to (leq g a 
22013 a2))))).(\lambda (a2: A).(\lambda (H3: (arity g c0 (TLRef i) a2)).(let H4 
22014 \def (arity_gen_lref g c0 i a2 H3) in (or_ind (ex2_2 C T (\lambda (d0: 
22015 C).(\lambda (u0: T).(getl i c0 (CHead d0 (Bind Abbr) u0)))) (\lambda (d0: 
22016 C).(\lambda (u0: T).(arity g d0 u0 a2)))) (ex2_2 C T (\lambda (d0: 
22017 C).(\lambda (u0: T).(getl i c0 (CHead d0 (Bind Abst) u0)))) (\lambda (d0: 
22018 C).(\lambda (u0: T).(arity g d0 u0 (asucc g a2))))) (leq g a a2) (\lambda 
22019 (H5: (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind 
22020 Abbr) u)))) (\lambda (d: C).(\lambda (u: T).(arity g d u a2))))).(ex2_2_ind C 
22021 T (\lambda (d0: C).(\lambda (u0: T).(getl i c0 (CHead d0 (Bind Abbr) u0)))) 
22022 (\lambda (d0: C).(\lambda (u0: T).(arity g d0 u0 a2))) (leq g a a2) (\lambda 
22023 (x0: C).(\lambda (x1: T).(\lambda (H6: (getl i c0 (CHead x0 (Bind Abbr) 
22024 x1))).(\lambda (H7: (arity g x0 x1 a2)).(let H8 \def (eq_ind C (CHead d (Bind 
22025 Abbr) u) (\lambda (c: C).(getl i c0 c)) H0 (CHead x0 (Bind Abbr) x1) 
22026 (getl_mono c0 (CHead d (Bind Abbr) u) i H0 (CHead x0 (Bind Abbr) x1) H6)) in 
22027 (let H9 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) 
22028 with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind 
22029 Abbr) u) (CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d (Bind Abbr) u) i H0 
22030 (CHead x0 (Bind Abbr) x1) H6)) in ((let H10 \def (f_equal C T (\lambda (e: 
22031 C).(match e return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead 
22032 _ _ t) \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead x0 (Bind Abbr) x1) 
22033 (getl_mono c0 (CHead d (Bind Abbr) u) i H0 (CHead x0 (Bind Abbr) x1) H6)) in 
22034 (\lambda (H11: (eq C d x0)).(let H12 \def (eq_ind_r T x1 (\lambda (t: 
22035 T).(getl i c0 (CHead x0 (Bind Abbr) t))) H8 u H10) in (let H13 \def (eq_ind_r 
22036 T x1 (\lambda (t: T).(arity g x0 t a2)) H7 u H10) in (let H14 \def (eq_ind_r 
22037 C x0 (\lambda (c: C).(getl i c0 (CHead c (Bind Abbr) u))) H12 d H11) in (let 
22038 H15 \def (eq_ind_r C x0 (\lambda (c: C).(arity g c u a2)) H13 d H11) in (H2 
22039 a2 H15))))))) H9))))))) H5)) (\lambda (H5: (ex2_2 C T (\lambda (d: 
22040 C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abst) u)))) (\lambda (d: 
22041 C).(\lambda (u: T).(arity g d u (asucc g a2)))))).(ex2_2_ind C T (\lambda 
22042 (d0: C).(\lambda (u0: T).(getl i c0 (CHead d0 (Bind Abst) u0)))) (\lambda 
22043 (d0: C).(\lambda (u0: T).(arity g d0 u0 (asucc g a2)))) (leq g a a2) (\lambda 
22044 (x0: C).(\lambda (x1: T).(\lambda (H6: (getl i c0 (CHead x0 (Bind Abst) 
22045 x1))).(\lambda (_: (arity g x0 x1 (asucc g a2))).(let H8 \def (eq_ind C 
22046 (CHead d (Bind Abbr) u) (\lambda (c: C).(getl i c0 c)) H0 (CHead x0 (Bind 
22047 Abst) x1) (getl_mono c0 (CHead d (Bind Abbr) u) i H0 (CHead x0 (Bind Abst) 
22048 x1) H6)) in (let H9 \def (eq_ind C (CHead d (Bind Abbr) u) (\lambda (ee: 
22049 C).(match ee return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | 
22050 (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
22051 b) \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow 
22052 True | Abst \Rightarrow False | Void \Rightarrow False]) | (Flat _) 
22053 \Rightarrow False])])) I (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d 
22054 (Bind Abbr) u) i H0 (CHead x0 (Bind Abst) x1) H6)) in (False_ind (leq g a a2) 
22055 H9))))))) H5)) H4)))))))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u: 
22056 T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind Abst) 
22057 u))).(\lambda (a: A).(\lambda (_: (arity g d u (asucc g a))).(\lambda (H2: 
22058 ((\forall (a2: A).((arity g d u a2) \to (leq g (asucc g a) a2))))).(\lambda 
22059 (a2: A).(\lambda (H3: (arity g c0 (TLRef i) a2)).(let H4 \def (arity_gen_lref 
22060 g c0 i a2 H3) in (or_ind (ex2_2 C T (\lambda (d0: C).(\lambda (u0: T).(getl i 
22061 c0 (CHead d0 (Bind Abbr) u0)))) (\lambda (d0: C).(\lambda (u0: T).(arity g d0 
22062 u0 a2)))) (ex2_2 C T (\lambda (d0: C).(\lambda (u0: T).(getl i c0 (CHead d0 
22063 (Bind Abst) u0)))) (\lambda (d0: C).(\lambda (u0: T).(arity g d0 u0 (asucc g 
22064 a2))))) (leq g a a2) (\lambda (H5: (ex2_2 C T (\lambda (d: C).(\lambda (u: 
22065 T).(getl i c0 (CHead d (Bind Abbr) u)))) (\lambda (d: C).(\lambda (u: 
22066 T).(arity g d u a2))))).(ex2_2_ind C T (\lambda (d0: C).(\lambda (u0: 
22067 T).(getl i c0 (CHead d0 (Bind Abbr) u0)))) (\lambda (d0: C).(\lambda (u0: 
22068 T).(arity g d0 u0 a2))) (leq g a a2) (\lambda (x0: C).(\lambda (x1: 
22069 T).(\lambda (H6: (getl i c0 (CHead x0 (Bind Abbr) x1))).(\lambda (_: (arity g 
22070 x0 x1 a2)).(let H8 \def (eq_ind C (CHead d (Bind Abst) u) (\lambda (c: 
22071 C).(getl i c0 c)) H0 (CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d (Bind 
22072 Abst) u) i H0 (CHead x0 (Bind Abbr) x1) H6)) in (let H9 \def (eq_ind C (CHead 
22073 d (Bind Abst) u) (\lambda (ee: C).(match ee return (\lambda (_: C).Prop) with 
22074 [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match k return 
22075 (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b return (\lambda (_: 
22076 B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow True | Void 
22077 \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead x0 (Bind Abbr) 
22078 x1) (getl_mono c0 (CHead d (Bind Abst) u) i H0 (CHead x0 (Bind Abbr) x1) H6)) 
22079 in (False_ind (leq g a a2) H9))))))) H5)) (\lambda (H5: (ex2_2 C T (\lambda 
22080 (d: C).(\lambda (u: T).(getl i c0 (CHead d (Bind Abst) u)))) (\lambda (d: 
22081 C).(\lambda (u: T).(arity g d u (asucc g a2)))))).(ex2_2_ind C T (\lambda 
22082 (d0: C).(\lambda (u0: T).(getl i c0 (CHead d0 (Bind Abst) u0)))) (\lambda 
22083 (d0: C).(\lambda (u0: T).(arity g d0 u0 (asucc g a2)))) (leq g a a2) (\lambda 
22084 (x0: C).(\lambda (x1: T).(\lambda (H6: (getl i c0 (CHead x0 (Bind Abst) 
22085 x1))).(\lambda (H7: (arity g x0 x1 (asucc g a2))).(let H8 \def (eq_ind C 
22086 (CHead d (Bind Abst) u) (\lambda (c: C).(getl i c0 c)) H0 (CHead x0 (Bind 
22087 Abst) x1) (getl_mono c0 (CHead d (Bind Abst) u) i H0 (CHead x0 (Bind Abst) 
22088 x1) H6)) in (let H9 \def (f_equal C C (\lambda (e: C).(match e return 
22089 (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow 
22090 c])) (CHead d (Bind Abst) u) (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d 
22091 (Bind Abst) u) i H0 (CHead x0 (Bind Abst) x1) H6)) in ((let H10 \def (f_equal 
22092 C T (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort _) 
22093 \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind Abst) u) (CHead 
22094 x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind Abst) u) i H0 (CHead x0 (Bind 
22095 Abst) x1) H6)) in (\lambda (H11: (eq C d x0)).(let H12 \def (eq_ind_r T x1 
22096 (\lambda (t: T).(getl i c0 (CHead x0 (Bind Abst) t))) H8 u H10) in (let H13 
22097 \def (eq_ind_r T x1 (\lambda (t: T).(arity g x0 t (asucc g a2))) H7 u H10) in 
22098 (let H14 \def (eq_ind_r C x0 (\lambda (c: C).(getl i c0 (CHead c (Bind Abst) 
22099 u))) H12 d H11) in (let H15 \def (eq_ind_r C x0 (\lambda (c: C).(arity g c u 
22100 (asucc g a2))) H13 d H11) in (asucc_inj g a a2 (H2 (asucc g a2) H15)))))))) 
22101 H9))))))) H5)) H4)))))))))))) (\lambda (b: B).(\lambda (H0: (not (eq B b 
22102 Abst))).(\lambda (c0: C).(\lambda (u: T).(\lambda (a2: A).(\lambda (_: (arity 
22103 g c0 u a2)).(\lambda (_: ((\forall (a3: A).((arity g c0 u a3) \to (leq g a2 
22104 a3))))).(\lambda (t0: T).(\lambda (a3: A).(\lambda (_: (arity g (CHead c0 
22105 (Bind b) u) t0 a3)).(\lambda (H4: ((\forall (a2: A).((arity g (CHead c0 (Bind 
22106 b) u) t0 a2) \to (leq g a3 a2))))).(\lambda (a0: A).(\lambda (H5: (arity g c0 
22107 (THead (Bind b) u t0) a0)).(let H6 \def (arity_gen_bind b H0 g c0 u t0 a0 H5) 
22108 in (ex2_ind A (\lambda (a4: A).(arity g c0 u a4)) (\lambda (_: A).(arity g 
22109 (CHead c0 (Bind b) u) t0 a0)) (leq g a3 a0) (\lambda (x: A).(\lambda (_: 
22110 (arity g c0 u x)).(\lambda (H8: (arity g (CHead c0 (Bind b) u) t0 a0)).(H4 a0 
22111 H8)))) H6))))))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (a2: 
22112 A).(\lambda (_: (arity g c0 u (asucc g a2))).(\lambda (H1: ((\forall (a3: 
22113 A).((arity g c0 u a3) \to (leq g (asucc g a2) a3))))).(\lambda (t0: 
22114 T).(\lambda (a3: A).(\lambda (_: (arity g (CHead c0 (Bind Abst) u) t0 
22115 a3)).(\lambda (H3: ((\forall (a2: A).((arity g (CHead c0 (Bind Abst) u) t0 
22116 a2) \to (leq g a3 a2))))).(\lambda (a0: A).(\lambda (H4: (arity g c0 (THead 
22117 (Bind Abst) u t0) a0)).(let H5 \def (arity_gen_abst g c0 u t0 a0 H4) in 
22118 (ex3_2_ind A A (\lambda (a4: A).(\lambda (a5: A).(eq A a0 (AHead a4 a5)))) 
22119 (\lambda (a4: A).(\lambda (_: A).(arity g c0 u (asucc g a4)))) (\lambda (_: 
22120 A).(\lambda (a5: A).(arity g (CHead c0 (Bind Abst) u) t0 a5))) (leq g (AHead 
22121 a2 a3) a0) (\lambda (x0: A).(\lambda (x1: A).(\lambda (H6: (eq A a0 (AHead x0 
22122 x1))).(\lambda (H7: (arity g c0 u (asucc g x0))).(\lambda (H8: (arity g 
22123 (CHead c0 (Bind Abst) u) t0 x1)).(eq_ind_r A (AHead x0 x1) (\lambda (a: 
22124 A).(leq g (AHead a2 a3) a)) (leq_head g a2 x0 (asucc_inj g a2 x0 (H1 (asucc g 
22125 x0) H7)) a3 x1 (H3 x1 H8)) a0 H6)))))) H5))))))))))))) (\lambda (c0: 
22126 C).(\lambda (u: T).(\lambda (a2: A).(\lambda (_: (arity g c0 u a2)).(\lambda 
22127 (_: ((\forall (a3: A).((arity g c0 u a3) \to (leq g a2 a3))))).(\lambda (t0: 
22128 T).(\lambda (a3: A).(\lambda (_: (arity g c0 t0 (AHead a2 a3))).(\lambda (H3: 
22129 ((\forall (a4: A).((arity g c0 t0 a4) \to (leq g (AHead a2 a3) 
22130 a4))))).(\lambda (a0: A).(\lambda (H4: (arity g c0 (THead (Flat Appl) u t0) 
22131 a0)).(let H5 \def (arity_gen_appl g c0 u t0 a0 H4) in (ex2_ind A (\lambda 
22132 (a4: A).(arity g c0 u a4)) (\lambda (a4: A).(arity g c0 t0 (AHead a4 a0))) 
22133 (leq g a3 a0) (\lambda (x: A).(\lambda (_: (arity g c0 u x)).(\lambda (H7: 
22134 (arity g c0 t0 (AHead x a0))).(ahead_inj_snd g a2 a3 x a0 (H3 (AHead x a0) 
22135 H7))))) H5))))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (a: 
22136 A).(\lambda (_: (arity g c0 u (asucc g a))).(\lambda (_: ((\forall (a2: 
22137 A).((arity g c0 u a2) \to (leq g (asucc g a) a2))))).(\lambda (t0: 
22138 T).(\lambda (_: (arity g c0 t0 a)).(\lambda (H3: ((\forall (a2: A).((arity g 
22139 c0 t0 a2) \to (leq g a a2))))).(\lambda (a2: A).(\lambda (H4: (arity g c0 
22140 (THead (Flat Cast) u t0) a2)).(let H5 \def (arity_gen_cast g c0 u t0 a2 H4) 
22141 in (and_ind (arity g c0 u (asucc g a2)) (arity g c0 t0 a2) (leq g a a2) 
22142 (\lambda (_: (arity g c0 u (asucc g a2))).(\lambda (H7: (arity g c0 t0 
22143 a2)).(H3 a2 H7))) H5)))))))))))) (\lambda (c0: C).(\lambda (t0: T).(\lambda 
22144 (a2: A).(\lambda (_: (arity g c0 t0 a2)).(\lambda (H1: ((\forall (a3: 
22145 A).((arity g c0 t0 a3) \to (leq g a2 a3))))).(\lambda (a3: A).(\lambda (H2: 
22146 (leq g a2 a3)).(\lambda (a0: A).(\lambda (H3: (arity g c0 t0 a0)).(leq_trans 
22147 g a3 a2 (leq_sym g a2 a3 H2) a0 (H1 a0 H3))))))))))) c t a1 H))))).
22148
22149 theorem arity_cimp_conf:
22150  \forall (g: G).(\forall (c1: C).(\forall (t: T).(\forall (a: A).((arity g c1 
22151 t a) \to (\forall (c2: C).((cimp c1 c2) \to (arity g c2 t a)))))))
22152 \def
22153  \lambda (g: G).(\lambda (c1: C).(\lambda (t: T).(\lambda (a: A).(\lambda (H: 
22154 (arity g c1 t a)).(arity_ind g (\lambda (c: C).(\lambda (t0: T).(\lambda (a0: 
22155 A).(\forall (c2: C).((cimp c c2) \to (arity g c2 t0 a0)))))) (\lambda (c: 
22156 C).(\lambda (n: nat).(\lambda (c2: C).(\lambda (_: (cimp c c2)).(arity_sort g 
22157 c2 n))))) (\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: 
22158 nat).(\lambda (H0: (getl i c (CHead d (Bind Abbr) u))).(\lambda (a0: 
22159 A).(\lambda (_: (arity g d u a0)).(\lambda (H2: ((\forall (c2: C).((cimp d 
22160 c2) \to (arity g c2 u a0))))).(\lambda (c2: C).(\lambda (H3: (cimp c 
22161 c2)).(let H_x \def (H3 Abbr d u i H0) in (let H4 \def H_x in (ex_ind C 
22162 (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abbr) u))) (arity g c2 (TLRef i) 
22163 a0) (\lambda (x: C).(\lambda (H5: (getl i c2 (CHead x (Bind Abbr) u))).(let 
22164 H_x0 \def (cimp_getl_conf c c2 H3 Abbr d u i H0) in (let H6 \def H_x0 in 
22165 (ex2_ind C (\lambda (d2: C).(cimp d d2)) (\lambda (d2: C).(getl i c2 (CHead 
22166 d2 (Bind Abbr) u))) (arity g c2 (TLRef i) a0) (\lambda (x0: C).(\lambda (H7: 
22167 (cimp d x0)).(\lambda (H8: (getl i c2 (CHead x0 (Bind Abbr) u))).(let H9 \def 
22168 (eq_ind C (CHead x (Bind Abbr) u) (\lambda (c: C).(getl i c2 c)) H5 (CHead x0 
22169 (Bind Abbr) u) (getl_mono c2 (CHead x (Bind Abbr) u) i H5 (CHead x0 (Bind 
22170 Abbr) u) H8)) in (let H10 \def (f_equal C C (\lambda (e: C).(match e return 
22171 (\lambda (_: C).C) with [(CSort _) \Rightarrow x | (CHead c _ _) \Rightarrow 
22172 c])) (CHead x (Bind Abbr) u) (CHead x0 (Bind Abbr) u) (getl_mono c2 (CHead x 
22173 (Bind Abbr) u) i H5 (CHead x0 (Bind Abbr) u) H8)) in (let H11 \def (eq_ind_r 
22174 C x0 (\lambda (c: C).(getl i c2 (CHead c (Bind Abbr) u))) H9 x H10) in (let 
22175 H12 \def (eq_ind_r C x0 (\lambda (c: C).(cimp d c)) H7 x H10) in (arity_abbr 
22176 g c2 x u i H11 a0 (H2 x H12))))))))) H6))))) H4))))))))))))) (\lambda (c: 
22177 C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c 
22178 (CHead d (Bind Abst) u))).(\lambda (a0: A).(\lambda (_: (arity g d u (asucc g 
22179 a0))).(\lambda (H2: ((\forall (c2: C).((cimp d c2) \to (arity g c2 u (asucc g 
22180 a0)))))).(\lambda (c2: C).(\lambda (H3: (cimp c c2)).(let H_x \def (H3 Abst d 
22181 u i H0) in (let H4 \def H_x in (ex_ind C (\lambda (d2: C).(getl i c2 (CHead 
22182 d2 (Bind Abst) u))) (arity g c2 (TLRef i) a0) (\lambda (x: C).(\lambda (H5: 
22183 (getl i c2 (CHead x (Bind Abst) u))).(let H_x0 \def (cimp_getl_conf c c2 H3 
22184 Abst d u i H0) in (let H6 \def H_x0 in (ex2_ind C (\lambda (d2: C).(cimp d 
22185 d2)) (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abst) u))) (arity g c2 
22186 (TLRef i) a0) (\lambda (x0: C).(\lambda (H7: (cimp d x0)).(\lambda (H8: (getl 
22187 i c2 (CHead x0 (Bind Abst) u))).(let H9 \def (eq_ind C (CHead x (Bind Abst) 
22188 u) (\lambda (c: C).(getl i c2 c)) H5 (CHead x0 (Bind Abst) u) (getl_mono c2 
22189 (CHead x (Bind Abst) u) i H5 (CHead x0 (Bind Abst) u) H8)) in (let H10 \def 
22190 (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort 
22191 _) \Rightarrow x | (CHead c _ _) \Rightarrow c])) (CHead x (Bind Abst) u) 
22192 (CHead x0 (Bind Abst) u) (getl_mono c2 (CHead x (Bind Abst) u) i H5 (CHead x0 
22193 (Bind Abst) u) H8)) in (let H11 \def (eq_ind_r C x0 (\lambda (c: C).(getl i 
22194 c2 (CHead c (Bind Abst) u))) H9 x H10) in (let H12 \def (eq_ind_r C x0 
22195 (\lambda (c: C).(cimp d c)) H7 x H10) in (arity_abst g c2 x u i H11 a0 (H2 x 
22196 H12))))))))) H6))))) H4))))))))))))) (\lambda (b: B).(\lambda (H0: (not (eq B 
22197 b Abst))).(\lambda (c: C).(\lambda (u: T).(\lambda (a1: A).(\lambda (_: 
22198 (arity g c u a1)).(\lambda (H2: ((\forall (c2: C).((cimp c c2) \to (arity g 
22199 c2 u a1))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (_: (arity g (CHead c 
22200 (Bind b) u) t0 a2)).(\lambda (H4: ((\forall (c2: C).((cimp (CHead c (Bind b) 
22201 u) c2) \to (arity g c2 t0 a2))))).(\lambda (c2: C).(\lambda (H5: (cimp c 
22202 c2)).(arity_bind g b H0 c2 u a1 (H2 c2 H5) t0 a2 (H4 (CHead c2 (Bind b) u) 
22203 (cimp_bind c c2 H5 b u)))))))))))))))) (\lambda (c: C).(\lambda (u: 
22204 T).(\lambda (a1: A).(\lambda (_: (arity g c u (asucc g a1))).(\lambda (H1: 
22205 ((\forall (c2: C).((cimp c c2) \to (arity g c2 u (asucc g a1)))))).(\lambda 
22206 (t0: T).(\lambda (a2: A).(\lambda (_: (arity g (CHead c (Bind Abst) u) t0 
22207 a2)).(\lambda (H3: ((\forall (c2: C).((cimp (CHead c (Bind Abst) u) c2) \to 
22208 (arity g c2 t0 a2))))).(\lambda (c2: C).(\lambda (H4: (cimp c 
22209 c2)).(arity_head g c2 u a1 (H1 c2 H4) t0 a2 (H3 (CHead c2 (Bind Abst) u) 
22210 (cimp_bind c c2 H4 Abst u)))))))))))))) (\lambda (c: C).(\lambda (u: 
22211 T).(\lambda (a1: A).(\lambda (_: (arity g c u a1)).(\lambda (H1: ((\forall 
22212 (c2: C).((cimp c c2) \to (arity g c2 u a1))))).(\lambda (t0: T).(\lambda (a2: 
22213 A).(\lambda (_: (arity g c t0 (AHead a1 a2))).(\lambda (H3: ((\forall (c2: 
22214 C).((cimp c c2) \to (arity g c2 t0 (AHead a1 a2)))))).(\lambda (c2: 
22215 C).(\lambda (H4: (cimp c c2)).(arity_appl g c2 u a1 (H1 c2 H4) t0 a2 (H3 c2 
22216 H4))))))))))))) (\lambda (c: C).(\lambda (u: T).(\lambda (a0: A).(\lambda (_: 
22217 (arity g c u (asucc g a0))).(\lambda (H1: ((\forall (c2: C).((cimp c c2) \to 
22218 (arity g c2 u (asucc g a0)))))).(\lambda (t0: T).(\lambda (_: (arity g c t0 
22219 a0)).(\lambda (H3: ((\forall (c2: C).((cimp c c2) \to (arity g c2 t0 
22220 a0))))).(\lambda (c2: C).(\lambda (H4: (cimp c c2)).(arity_cast g c2 u a0 (H1 
22221 c2 H4) t0 (H3 c2 H4)))))))))))) (\lambda (c: C).(\lambda (t0: T).(\lambda 
22222 (a1: A).(\lambda (_: (arity g c t0 a1)).(\lambda (H1: ((\forall (c2: 
22223 C).((cimp c c2) \to (arity g c2 t0 a1))))).(\lambda (a2: A).(\lambda (H2: 
22224 (leq g a1 a2)).(\lambda (c2: C).(\lambda (H3: (cimp c c2)).(arity_repl g c2 
22225 t0 a1 (H1 c2 H3) a2 H2)))))))))) c1 t a H))))).
22226
22227 theorem arity_aprem:
22228  \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (a: A).((arity g c t 
22229 a) \to (\forall (i: nat).(\forall (b: A).((aprem i a b) \to (ex2_3 C T nat 
22230 (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d c)))) 
22231 (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g 
22232 b)))))))))))))
22233 \def
22234  \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (a: A).(\lambda (H: 
22235 (arity g c t a)).(arity_ind g (\lambda (c0: C).(\lambda (_: T).(\lambda (a0: 
22236 A).(\forall (i: nat).(\forall (b: A).((aprem i a0 b) \to (ex2_3 C T nat 
22237 (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d c0)))) 
22238 (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g 
22239 b)))))))))))) (\lambda (c0: C).(\lambda (n: nat).(\lambda (i: nat).(\lambda 
22240 (b: A).(\lambda (H0: (aprem i (ASort O n) b)).(let H1 \def (match H0 return 
22241 (\lambda (n0: nat).(\lambda (a: A).(\lambda (a0: A).(\lambda (_: (aprem n0 a 
22242 a0)).((eq nat n0 i) \to ((eq A a (ASort O n)) \to ((eq A a0 b) \to (ex2_3 C T 
22243 nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d 
22244 c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc 
22245 g b))))))))))))) with [(aprem_zero a1 a2) \Rightarrow (\lambda (H0: (eq nat O 
22246 i)).(\lambda (H1: (eq A (AHead a1 a2) (ASort O n))).(\lambda (H2: (eq A a1 
22247 b)).(eq_ind nat O (\lambda (n0: nat).((eq A (AHead a1 a2) (ASort O n)) \to 
22248 ((eq A a1 b) \to (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: 
22249 nat).(drop (plus n0 j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda 
22250 (_: nat).(arity g d u (asucc g b))))))))) (\lambda (H3: (eq A (AHead a1 a2) 
22251 (ASort O n))).(let H4 \def (eq_ind A (AHead a1 a2) (\lambda (e: A).(match e 
22252 return (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False | (AHead _ 
22253 _) \Rightarrow True])) I (ASort O n) H3) in (False_ind ((eq A a1 b) \to 
22254 (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus 
22255 O j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d 
22256 u (asucc g b))))))) H4))) i H0 H1 H2)))) | (aprem_succ a2 a i0 H0 a1) 
22257 \Rightarrow (\lambda (H1: (eq nat (S i0) i)).(\lambda (H2: (eq A (AHead a1 
22258 a2) (ASort O n))).(\lambda (H3: (eq A a b)).(eq_ind nat (S i0) (\lambda (n0: 
22259 nat).((eq A (AHead a1 a2) (ASort O n)) \to ((eq A a b) \to ((aprem i0 a2 a) 
22260 \to (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop 
22261 (plus n0 j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: 
22262 nat).(arity g d u (asucc g b)))))))))) (\lambda (H4: (eq A (AHead a1 a2) 
22263 (ASort O n))).(let H5 \def (eq_ind A (AHead a1 a2) (\lambda (e: A).(match e 
22264 return (\lambda (_: A).Prop) with [(ASort _ _) \Rightarrow False | (AHead _ 
22265 _) \Rightarrow True])) I (ASort O n) H4) in (False_ind ((eq A a b) \to 
22266 ((aprem i0 a2 a) \to (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda 
22267 (j: nat).(drop (plus (S i0) j) O d c0)))) (\lambda (d: C).(\lambda (u: 
22268 T).(\lambda (_: nat).(arity g d u (asucc g b)))))))) H5))) i H1 H2 H3 
22269 H0))))]) in (H1 (refl_equal nat i) (refl_equal A (ASort O n)) (refl_equal A 
22270 b)))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: 
22271 nat).(\lambda (H0: (getl i c0 (CHead d (Bind Abbr) u))).(\lambda (a0: 
22272 A).(\lambda (_: (arity g d u a0)).(\lambda (H2: ((\forall (i: nat).(\forall 
22273 (b: A).((aprem i a0 b) \to (ex2_3 C T nat (\lambda (d0: C).(\lambda (_: 
22274 T).(\lambda (j: nat).(drop (plus i j) O d0 d)))) (\lambda (d: C).(\lambda (u: 
22275 T).(\lambda (_: nat).(arity g d u (asucc g b))))))))))).(\lambda (i0: 
22276 nat).(\lambda (b: A).(\lambda (H3: (aprem i0 a0 b)).(let H_x \def (H2 i0 b 
22277 H3) in (let H4 \def H_x in (ex2_3_ind C T nat (\lambda (d0: C).(\lambda (_: 
22278 T).(\lambda (j: nat).(drop (plus i0 j) O d0 d)))) (\lambda (d0: C).(\lambda 
22279 (u0: T).(\lambda (_: nat).(arity g d0 u0 (asucc g b))))) (ex2_3 C T nat 
22280 (\lambda (d0: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i0 j) O d0 
22281 c0)))) (\lambda (d0: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d0 u0 
22282 (asucc g b)))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: 
22283 nat).(\lambda (H5: (drop (plus i0 x2) O x0 d)).(\lambda (H6: (arity g x0 x1 
22284 (asucc g b))).(let H_x0 \def (getl_drop_conf_rev (plus i0 x2) x0 d H5 Abbr c0 
22285 u i H0) in (let H7 \def H_x0 in (ex2_ind C (\lambda (c1: C).(drop (plus i0 
22286 x2) O c1 c0)) (\lambda (c1: C).(drop (S i) (plus i0 x2) c1 x0)) (ex2_3 C T 
22287 nat (\lambda (d0: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i0 j) O d0 
22288 c0)))) (\lambda (d0: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d0 u0 
22289 (asucc g b)))))) (\lambda (x: C).(\lambda (H8: (drop (plus i0 x2) O x 
22290 c0)).(\lambda (H9: (drop (S i) (plus i0 x2) x x0)).(ex2_3_intro C T nat 
22291 (\lambda (d0: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i0 j) O d0 
22292 c0)))) (\lambda (d0: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d0 u0 
22293 (asucc g b))))) x (lift (S i) (plus i0 x2) x1) x2 H8 (arity_lift g x0 x1 
22294 (asucc g b) H6 x (S i) (plus i0 x2) H9))))) H7)))))))) H4)))))))))))))) 
22295 (\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
22296 (H0: (getl i c0 (CHead d (Bind Abst) u))).(\lambda (a0: A).(\lambda (_: 
22297 (arity g d u (asucc g a0))).(\lambda (H2: ((\forall (i: nat).(\forall (b: 
22298 A).((aprem i (asucc g a0) b) \to (ex2_3 C T nat (\lambda (d0: C).(\lambda (_: 
22299 T).(\lambda (j: nat).(drop (plus i j) O d0 d)))) (\lambda (d: C).(\lambda (u: 
22300 T).(\lambda (_: nat).(arity g d u (asucc g b))))))))))).(\lambda (i0: 
22301 nat).(\lambda (b: A).(\lambda (H3: (aprem i0 a0 b)).(let H4 \def (H2 i0 b 
22302 (aprem_asucc g a0 b i0 H3)) in (ex2_3_ind C T nat (\lambda (d0: C).(\lambda 
22303 (_: T).(\lambda (j: nat).(drop (plus i0 j) O d0 d)))) (\lambda (d0: 
22304 C).(\lambda (u0: T).(\lambda (_: nat).(arity g d0 u0 (asucc g b))))) (ex2_3 C 
22305 T nat (\lambda (d0: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i0 j) O 
22306 d0 c0)))) (\lambda (d0: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d0 u0 
22307 (asucc g b)))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: 
22308 nat).(\lambda (H5: (drop (plus i0 x2) O x0 d)).(\lambda (H6: (arity g x0 x1 
22309 (asucc g b))).(let H_x \def (getl_drop_conf_rev (plus i0 x2) x0 d H5 Abst c0 
22310 u i H0) in (let H7 \def H_x in (ex2_ind C (\lambda (c1: C).(drop (plus i0 x2) 
22311 O c1 c0)) (\lambda (c1: C).(drop (S i) (plus i0 x2) c1 x0)) (ex2_3 C T nat 
22312 (\lambda (d0: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i0 j) O d0 
22313 c0)))) (\lambda (d0: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d0 u0 
22314 (asucc g b)))))) (\lambda (x: C).(\lambda (H8: (drop (plus i0 x2) O x 
22315 c0)).(\lambda (H9: (drop (S i) (plus i0 x2) x x0)).(ex2_3_intro C T nat 
22316 (\lambda (d0: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i0 j) O d0 
22317 c0)))) (\lambda (d0: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d0 u0 
22318 (asucc g b))))) x (lift (S i) (plus i0 x2) x1) x2 H8 (arity_lift g x0 x1 
22319 (asucc g b) H6 x (S i) (plus i0 x2) H9))))) H7)))))))) H4))))))))))))) 
22320 (\lambda (b: B).(\lambda (_: (not (eq B b Abst))).(\lambda (c0: C).(\lambda 
22321 (u: T).(\lambda (a1: A).(\lambda (_: (arity g c0 u a1)).(\lambda (_: 
22322 ((\forall (i: nat).(\forall (b: A).((aprem i a1 b) \to (ex2_3 C T nat 
22323 (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d c0)))) 
22324 (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g 
22325 b))))))))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (_: (arity g (CHead 
22326 c0 (Bind b) u) t0 a2)).(\lambda (H4: ((\forall (i: nat).(\forall (b0: 
22327 A).((aprem i a2 b0) \to (ex2_3 C T nat (\lambda (d: C).(\lambda (_: 
22328 T).(\lambda (j: nat).(drop (plus i j) O d (CHead c0 (Bind b) u))))) (\lambda 
22329 (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g 
22330 b0))))))))))).(\lambda (i: nat).(\lambda (b0: A).(\lambda (H5: (aprem i a2 
22331 b0)).(let H_x \def (H4 i b0 H5) in (let H6 \def H_x in (ex2_3_ind C T nat 
22332 (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d (CHead 
22333 c0 (Bind b) u))))) (\lambda (d: C).(\lambda (u0: T).(\lambda (_: nat).(arity 
22334 g d u0 (asucc g b0))))) (ex2_3 C T nat (\lambda (d: C).(\lambda (_: 
22335 T).(\lambda (j: nat).(drop (plus i j) O d c0)))) (\lambda (d: C).(\lambda 
22336 (u0: T).(\lambda (_: nat).(arity g d u0 (asucc g b0)))))) (\lambda (x0: 
22337 C).(\lambda (x1: T).(\lambda (x2: nat).(\lambda (H7: (drop (plus i x2) O x0 
22338 (CHead c0 (Bind b) u))).(\lambda (H8: (arity g x0 x1 (asucc g b0))).(let H9 
22339 \def (eq_ind nat (S (plus i x2)) (\lambda (n: nat).(drop n O x0 c0)) (drop_S 
22340 b x0 c0 u (plus i x2) H7) (plus i (S x2)) (plus_n_Sm i x2)) in (ex2_3_intro C 
22341 T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d 
22342 c0)))) (\lambda (d: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d u0 
22343 (asucc g b0))))) x0 x1 (S x2) H9 H8))))))) H6))))))))))))))))) (\lambda (c0: 
22344 C).(\lambda (u: T).(\lambda (a1: A).(\lambda (H0: (arity g c0 u (asucc g 
22345 a1))).(\lambda (_: ((\forall (i: nat).(\forall (b: A).((aprem i (asucc g a1) 
22346 b) \to (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop 
22347 (plus i j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: 
22348 nat).(arity g d u (asucc g b))))))))))).(\lambda (t0: T).(\lambda (a2: 
22349 A).(\lambda (_: (arity g (CHead c0 (Bind Abst) u) t0 a2)).(\lambda (H3: 
22350 ((\forall (i: nat).(\forall (b: A).((aprem i a2 b) \to (ex2_3 C T nat 
22351 (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d (CHead 
22352 c0 (Bind Abst) u))))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: 
22353 nat).(arity g d u (asucc g b))))))))))).(\lambda (i: nat).(\lambda (b: 
22354 A).(\lambda (H4: (aprem i (AHead a1 a2) b)).((match i return (\lambda (n: 
22355 nat).((aprem n (AHead a1 a2) b) \to (ex2_3 C T nat (\lambda (d: C).(\lambda 
22356 (_: T).(\lambda (j: nat).(drop (plus n j) O d c0)))) (\lambda (d: C).(\lambda 
22357 (u0: T).(\lambda (_: nat).(arity g d u0 (asucc g b)))))))) with [O 
22358 \Rightarrow (\lambda (H5: (aprem O (AHead a1 a2) b)).(let H6 \def (match H5 
22359 return (\lambda (n: nat).(\lambda (a: A).(\lambda (a0: A).(\lambda (_: (aprem 
22360 n a a0)).((eq nat n O) \to ((eq A a (AHead a1 a2)) \to ((eq A a0 b) \to 
22361 (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus 
22362 O j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d 
22363 u (asucc g b))))))))))))) with [(aprem_zero a0 a3) \Rightarrow (\lambda (_: 
22364 (eq nat O O)).(\lambda (H5: (eq A (AHead a0 a3) (AHead a1 a2))).(\lambda (H6: 
22365 (eq A a0 b)).((let H7 \def (f_equal A A (\lambda (e: A).(match e return 
22366 (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a3 | (AHead _ a) \Rightarrow 
22367 a])) (AHead a0 a3) (AHead a1 a2) H5) in ((let H8 \def (f_equal A A (\lambda 
22368 (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a0 | 
22369 (AHead a _) \Rightarrow a])) (AHead a0 a3) (AHead a1 a2) H5) in (eq_ind A a1 
22370 (\lambda (a: A).((eq A a3 a2) \to ((eq A a b) \to (ex2_3 C T nat (\lambda (d: 
22371 C).(\lambda (_: T).(\lambda (j: nat).(drop (plus O j) O d c0)))) (\lambda (d: 
22372 C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g b))))))))) 
22373 (\lambda (H9: (eq A a3 a2)).(eq_ind A a2 (\lambda (_: A).((eq A a1 b) \to 
22374 (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus 
22375 O j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d 
22376 u (asucc g b)))))))) (\lambda (H10: (eq A a1 b)).(eq_ind A b (\lambda (_: 
22377 A).(ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop 
22378 (plus O j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: 
22379 nat).(arity g d u (asucc g b))))))) (eq_ind A a1 (\lambda (a: A).(ex2_3 C T 
22380 nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus O j) O d 
22381 c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc 
22382 g a))))))) (ex2_3_intro C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: 
22383 nat).(drop (plus O j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: 
22384 nat).(arity g d u (asucc g a1))))) c0 u O (drop_refl c0) H0) b H10) a1 
22385 (sym_eq A a1 b H10))) a3 (sym_eq A a3 a2 H9))) a0 (sym_eq A a0 a1 H8))) H7)) 
22386 H6)))) | (aprem_succ a0 a i H4 a3) \Rightarrow (\lambda (H5: (eq nat (S i) 
22387 O)).(\lambda (H6: (eq A (AHead a3 a0) (AHead a1 a2))).(\lambda (H7: (eq A a 
22388 b)).((let H8 \def (eq_ind nat (S i) (\lambda (e: nat).(match e return 
22389 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
22390 I O H5) in (False_ind ((eq A (AHead a3 a0) (AHead a1 a2)) \to ((eq A a b) \to 
22391 ((aprem i a0 a) \to (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda 
22392 (j: nat).(drop (plus O j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda 
22393 (_: nat).(arity g d u (asucc g b))))))))) H8)) H6 H7 H4))))]) in (H6 
22394 (refl_equal nat O) (refl_equal A (AHead a1 a2)) (refl_equal A b)))) | (S n) 
22395 \Rightarrow (\lambda (H5: (aprem (S n) (AHead a1 a2) b)).(let H6 \def (match 
22396 H5 return (\lambda (n0: nat).(\lambda (a: A).(\lambda (a0: A).(\lambda (_: 
22397 (aprem n0 a a0)).((eq nat n0 (S n)) \to ((eq A a (AHead a1 a2)) \to ((eq A a0 
22398 b) \to (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop 
22399 (plus (S n) j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: 
22400 nat).(arity g d u (asucc g b))))))))))))) with [(aprem_zero a0 a3) 
22401 \Rightarrow (\lambda (H4: (eq nat O (S n))).(\lambda (H5: (eq A (AHead a0 a3) 
22402 (AHead a1 a2))).(\lambda (H6: (eq A a0 b)).((let H7 \def (eq_ind nat O 
22403 (\lambda (e: nat).(match e return (\lambda (_: nat).Prop) with [O \Rightarrow 
22404 True | (S _) \Rightarrow False])) I (S n) H4) in (False_ind ((eq A (AHead a0 
22405 a3) (AHead a1 a2)) \to ((eq A a0 b) \to (ex2_3 C T nat (\lambda (d: 
22406 C).(\lambda (_: T).(\lambda (j: nat).(drop (plus (S n) j) O d c0)))) (\lambda 
22407 (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g b)))))))) H7)) 
22408 H5 H6)))) | (aprem_succ a0 a i H4 a3) \Rightarrow (\lambda (H5: (eq nat (S i) 
22409 (S n))).(\lambda (H6: (eq A (AHead a3 a0) (AHead a1 a2))).(\lambda (H7: (eq A 
22410 a b)).((let H8 \def (f_equal nat nat (\lambda (e: nat).(match e return 
22411 (\lambda (_: nat).nat) with [O \Rightarrow i | (S n) \Rightarrow n])) (S i) 
22412 (S n) H5) in (eq_ind nat n (\lambda (n0: nat).((eq A (AHead a3 a0) (AHead a1 
22413 a2)) \to ((eq A a b) \to ((aprem n0 a0 a) \to (ex2_3 C T nat (\lambda (d: 
22414 C).(\lambda (_: T).(\lambda (j: nat).(drop (plus (S n) j) O d c0)))) (\lambda 
22415 (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g b)))))))))) 
22416 (\lambda (H9: (eq A (AHead a3 a0) (AHead a1 a2))).(let H10 \def (f_equal A A 
22417 (\lambda (e: A).(match e return (\lambda (_: A).A) with [(ASort _ _) 
22418 \Rightarrow a0 | (AHead _ a) \Rightarrow a])) (AHead a3 a0) (AHead a1 a2) H9) 
22419 in ((let H11 \def (f_equal A A (\lambda (e: A).(match e return (\lambda (_: 
22420 A).A) with [(ASort _ _) \Rightarrow a3 | (AHead a _) \Rightarrow a])) (AHead 
22421 a3 a0) (AHead a1 a2) H9) in (eq_ind A a1 (\lambda (_: A).((eq A a0 a2) \to 
22422 ((eq A a b) \to ((aprem n a0 a) \to (ex2_3 C T nat (\lambda (d: C).(\lambda 
22423 (_: T).(\lambda (j: nat).(drop (plus (S n) j) O d c0)))) (\lambda (d: 
22424 C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g b)))))))))) 
22425 (\lambda (H12: (eq A a0 a2)).(eq_ind A a2 (\lambda (a1: A).((eq A a b) \to 
22426 ((aprem n a1 a) \to (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda 
22427 (j: nat).(drop (plus (S n) j) O d c0)))) (\lambda (d: C).(\lambda (u: 
22428 T).(\lambda (_: nat).(arity g d u (asucc g b))))))))) (\lambda (H13: (eq A a 
22429 b)).(eq_ind A b (\lambda (a1: A).((aprem n a2 a1) \to (ex2_3 C T nat (\lambda 
22430 (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus (S n) j) O d c0)))) 
22431 (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g 
22432 b)))))))) (\lambda (H14: (aprem n a2 b)).(let H_x \def (H3 n b H14) in (let 
22433 H3 \def H_x in (ex2_3_ind C T nat (\lambda (d: C).(\lambda (_: T).(\lambda 
22434 (j: nat).(drop (plus n j) O d (CHead c0 (Bind Abst) u))))) (\lambda (d: 
22435 C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g b))))) (ex2_3 C T 
22436 nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus (S n) j) O 
22437 d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u 
22438 (asucc g b)))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: 
22439 nat).(\lambda (H15: (drop (plus n x2) O x0 (CHead c0 (Bind Abst) 
22440 u))).(\lambda (H16: (arity g x0 x1 (asucc g b))).(ex2_3_intro C T nat 
22441 (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus (S n) j) O d 
22442 c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc 
22443 g b))))) x0 x1 x2 (drop_S Abst x0 c0 u (plus n x2) H15) H16)))))) H3)))) a 
22444 (sym_eq A a b H13))) a0 (sym_eq A a0 a2 H12))) a3 (sym_eq A a3 a1 H11))) 
22445 H10))) i (sym_eq nat i n H8))) H6 H7 H4))))]) in (H6 (refl_equal nat (S n)) 
22446 (refl_equal A (AHead a1 a2)) (refl_equal A b))))]) H4))))))))))))) (\lambda 
22447 (c0: C).(\lambda (u: T).(\lambda (a1: A).(\lambda (_: (arity g c0 u 
22448 a1)).(\lambda (_: ((\forall (i: nat).(\forall (b: A).((aprem i a1 b) \to 
22449 (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus 
22450 i j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d 
22451 u (asucc g b))))))))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (_: (arity 
22452 g c0 t0 (AHead a1 a2))).(\lambda (H3: ((\forall (i: nat).(\forall (b: 
22453 A).((aprem i (AHead a1 a2) b) \to (ex2_3 C T nat (\lambda (d: C).(\lambda (_: 
22454 T).(\lambda (j: nat).(drop (plus i j) O d c0)))) (\lambda (d: C).(\lambda (u: 
22455 T).(\lambda (_: nat).(arity g d u (asucc g b))))))))))).(\lambda (i: 
22456 nat).(\lambda (b: A).(\lambda (H4: (aprem i a2 b)).(let H5 \def (H3 (S i) b 
22457 (aprem_succ a2 b i H4 a1)) in (ex2_3_ind C T nat (\lambda (d: C).(\lambda (_: 
22458 T).(\lambda (j: nat).(drop (S (plus i j)) O d c0)))) (\lambda (d: C).(\lambda 
22459 (u0: T).(\lambda (_: nat).(arity g d u0 (asucc g b))))) (ex2_3 C T nat 
22460 (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d c0)))) 
22461 (\lambda (d: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d u0 (asucc g 
22462 b)))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: nat).(\lambda (H6: 
22463 (drop (S (plus i x2)) O x0 c0)).(\lambda (H7: (arity g x0 x1 (asucc g 
22464 b))).(C_ind (\lambda (c1: C).((drop (S (plus i x2)) O c1 c0) \to ((arity g c1 
22465 x1 (asucc g b)) \to (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda 
22466 (j: nat).(drop (plus i j) O d c0)))) (\lambda (d: C).(\lambda (u0: 
22467 T).(\lambda (_: nat).(arity g d u0 (asucc g b))))))))) (\lambda (n: 
22468 nat).(\lambda (H8: (drop (S (plus i x2)) O (CSort n) c0)).(\lambda (_: (arity 
22469 g (CSort n) x1 (asucc g b))).(and3_ind (eq C c0 (CSort n)) (eq nat (S (plus i 
22470 x2)) O) (eq nat O O) (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda 
22471 (j: nat).(drop (plus i j) O d c0)))) (\lambda (d: C).(\lambda (u0: 
22472 T).(\lambda (_: nat).(arity g d u0 (asucc g b)))))) (\lambda (_: (eq C c0 
22473 (CSort n))).(\lambda (H11: (eq nat (S (plus i x2)) O)).(\lambda (_: (eq nat O 
22474 O)).(let H13 \def (eq_ind nat (S (plus i x2)) (\lambda (ee: nat).(match ee 
22475 return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow 
22476 True])) I O H11) in (False_ind (ex2_3 C T nat (\lambda (d: C).(\lambda (_: 
22477 T).(\lambda (j: nat).(drop (plus i j) O d c0)))) (\lambda (d: C).(\lambda 
22478 (u0: T).(\lambda (_: nat).(arity g d u0 (asucc g b)))))) H13))))) 
22479 (drop_gen_sort n (S (plus i x2)) O c0 H8))))) (\lambda (d: C).(\lambda (IHd: 
22480 (((drop (S (plus i x2)) O d c0) \to ((arity g d x1 (asucc g b)) \to (ex2_3 C 
22481 T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d 
22482 c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc 
22483 g b)))))))))).(\lambda (k: K).(\lambda (t1: T).(\lambda (H8: (drop (S (plus i 
22484 x2)) O (CHead d k t1) c0)).(\lambda (H9: (arity g (CHead d k t1) x1 (asucc g 
22485 b))).((match k return (\lambda (k0: K).((arity g (CHead d k0 t1) x1 (asucc g 
22486 b)) \to ((drop (r k0 (plus i x2)) O d c0) \to (ex2_3 C T nat (\lambda (d0: 
22487 C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d0 c0)))) (\lambda 
22488 (d0: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d0 u0 (asucc g b))))))))) 
22489 with [(Bind b0) \Rightarrow (\lambda (H10: (arity g (CHead d (Bind b0) t1) x1 
22490 (asucc g b))).(\lambda (H11: (drop (r (Bind b0) (plus i x2)) O d 
22491 c0)).(ex2_3_intro C T nat (\lambda (d0: C).(\lambda (_: T).(\lambda (j: 
22492 nat).(drop (plus i j) O d0 c0)))) (\lambda (d0: C).(\lambda (u0: T).(\lambda 
22493 (_: nat).(arity g d0 u0 (asucc g b))))) (CHead d (Bind b0) t1) x1 (S x2) 
22494 (eq_ind nat (S (plus i x2)) (\lambda (n: nat).(drop n O (CHead d (Bind b0) 
22495 t1) c0)) (drop_drop (Bind b0) (plus i x2) d c0 H11 t1) (plus i (S x2)) 
22496 (plus_n_Sm i x2)) H10))) | (Flat f) \Rightarrow (\lambda (H10: (arity g 
22497 (CHead d (Flat f) t1) x1 (asucc g b))).(\lambda (H11: (drop (r (Flat f) (plus 
22498 i x2)) O d c0)).(let H12 \def (IHd H11 (arity_cimp_conf g (CHead d (Flat f) 
22499 t1) x1 (asucc g b) H10 d (cimp_flat_sx f d t1))) in (ex2_3_ind C T nat 
22500 (\lambda (d0: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d0 
22501 c0)))) (\lambda (d0: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d0 u0 
22502 (asucc g b))))) (ex2_3 C T nat (\lambda (d0: C).(\lambda (_: T).(\lambda (j: 
22503 nat).(drop (plus i j) O d0 c0)))) (\lambda (d0: C).(\lambda (u0: T).(\lambda 
22504 (_: nat).(arity g d0 u0 (asucc g b)))))) (\lambda (x3: C).(\lambda (x4: 
22505 T).(\lambda (x5: nat).(\lambda (H13: (drop (plus i x5) O x3 c0)).(\lambda 
22506 (H14: (arity g x3 x4 (asucc g b))).(ex2_3_intro C T nat (\lambda (d0: 
22507 C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d0 c0)))) (\lambda 
22508 (d0: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d0 u0 (asucc g b))))) x3 
22509 x4 x5 H13 H14)))))) H12))))]) H9 (drop_gen_drop k d c0 t1 (plus i x2) 
22510 H8)))))))) x0 H6 H7)))))) H5)))))))))))))) (\lambda (c0: C).(\lambda (u: 
22511 T).(\lambda (a0: A).(\lambda (_: (arity g c0 u (asucc g a0))).(\lambda (_: 
22512 ((\forall (i: nat).(\forall (b: A).((aprem i (asucc g a0) b) \to (ex2_3 C T 
22513 nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d 
22514 c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc 
22515 g b))))))))))).(\lambda (t0: T).(\lambda (_: (arity g c0 t0 a0)).(\lambda 
22516 (H3: ((\forall (i: nat).(\forall (b: A).((aprem i a0 b) \to (ex2_3 C T nat 
22517 (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d c0)))) 
22518 (\lambda (d: C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g 
22519 b))))))))))).(\lambda (i: nat).(\lambda (b: A).(\lambda (H4: (aprem i a0 
22520 b)).(let H_x \def (H3 i b H4) in (let H5 \def H_x in (ex2_3_ind C T nat 
22521 (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d c0)))) 
22522 (\lambda (d: C).(\lambda (u0: T).(\lambda (_: nat).(arity g d u0 (asucc g 
22523 b))))) (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: nat).(drop 
22524 (plus i j) O d c0)))) (\lambda (d: C).(\lambda (u0: T).(\lambda (_: 
22525 nat).(arity g d u0 (asucc g b)))))) (\lambda (x0: C).(\lambda (x1: 
22526 T).(\lambda (x2: nat).(\lambda (H6: (drop (plus i x2) O x0 c0)).(\lambda (H7: 
22527 (arity g x0 x1 (asucc g b))).(ex2_3_intro C T nat (\lambda (d: C).(\lambda 
22528 (_: T).(\lambda (j: nat).(drop (plus i j) O d c0)))) (\lambda (d: C).(\lambda 
22529 (u0: T).(\lambda (_: nat).(arity g d u0 (asucc g b))))) x0 x1 x2 H6 H7)))))) 
22530 H5)))))))))))))) (\lambda (c0: C).(\lambda (t0: T).(\lambda (a1: A).(\lambda 
22531 (_: (arity g c0 t0 a1)).(\lambda (H1: ((\forall (i: nat).(\forall (b: 
22532 A).((aprem i a1 b) \to (ex2_3 C T nat (\lambda (d: C).(\lambda (_: 
22533 T).(\lambda (j: nat).(drop (plus i j) O d c0)))) (\lambda (d: C).(\lambda (u: 
22534 T).(\lambda (_: nat).(arity g d u (asucc g b))))))))))).(\lambda (a2: 
22535 A).(\lambda (H2: (leq g a1 a2)).(\lambda (i: nat).(\lambda (b: A).(\lambda 
22536 (H3: (aprem i a2 b)).(let H_x \def (aprem_repl g a1 a2 H2 i b H3) in (let H4 
22537 \def H_x in (ex2_ind A (\lambda (b1: A).(leq g b1 b)) (\lambda (b1: A).(aprem 
22538 i a1 b1)) (ex2_3 C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: 
22539 nat).(drop (plus i j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: 
22540 nat).(arity g d u (asucc g b)))))) (\lambda (x: A).(\lambda (H5: (leq g x 
22541 b)).(\lambda (H6: (aprem i a1 x)).(let H_x0 \def (H1 i x H6) in (let H7 \def 
22542 H_x0 in (ex2_3_ind C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: 
22543 nat).(drop (plus i j) O d c0)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: 
22544 nat).(arity g d u (asucc g x))))) (ex2_3 C T nat (\lambda (d: C).(\lambda (_: 
22545 T).(\lambda (j: nat).(drop (plus i j) O d c0)))) (\lambda (d: C).(\lambda (u: 
22546 T).(\lambda (_: nat).(arity g d u (asucc g b)))))) (\lambda (x0: C).(\lambda 
22547 (x1: T).(\lambda (x2: nat).(\lambda (H8: (drop (plus i x2) O x0 c0)).(\lambda 
22548 (H9: (arity g x0 x1 (asucc g x))).(ex2_3_intro C T nat (\lambda (d: 
22549 C).(\lambda (_: T).(\lambda (j: nat).(drop (plus i j) O d c0)))) (\lambda (d: 
22550 C).(\lambda (u: T).(\lambda (_: nat).(arity g d u (asucc g b))))) x0 x1 x2 H8 
22551 (arity_repl g x0 x1 (asucc g x) H9 (asucc g b) (asucc_repl g x b H5)))))))) 
22552 H7)))))) H4))))))))))))) c t a H))))).
22553
22554 theorem arity_appls_cast:
22555  \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t: T).(\forall (vs: 
22556 TList).(\forall (a: A).((arity g c (THeads (Flat Appl) vs u) (asucc g a)) \to 
22557 ((arity g c (THeads (Flat Appl) vs t) a) \to (arity g c (THeads (Flat Appl) 
22558 vs (THead (Flat Cast) u t)) a))))))))
22559 \def
22560  \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (vs: 
22561 TList).(TList_ind (\lambda (t0: TList).(\forall (a: A).((arity g c (THeads 
22562 (Flat Appl) t0 u) (asucc g a)) \to ((arity g c (THeads (Flat Appl) t0 t) a) 
22563 \to (arity g c (THeads (Flat Appl) t0 (THead (Flat Cast) u t)) a))))) 
22564 (\lambda (a: A).(\lambda (H: (arity g c u (asucc g a))).(\lambda (H0: (arity 
22565 g c t a)).(arity_cast g c u a H t H0)))) (\lambda (t0: T).(\lambda (t1: 
22566 TList).(\lambda (H: ((\forall (a: A).((arity g c (THeads (Flat Appl) t1 u) 
22567 (asucc g a)) \to ((arity g c (THeads (Flat Appl) t1 t) a) \to (arity g c 
22568 (THeads (Flat Appl) t1 (THead (Flat Cast) u t)) a)))))).(\lambda (a: 
22569 A).(\lambda (H0: (arity g c (THead (Flat Appl) t0 (THeads (Flat Appl) t1 u)) 
22570 (asucc g a))).(\lambda (H1: (arity g c (THead (Flat Appl) t0 (THeads (Flat 
22571 Appl) t1 t)) a)).(let H2 \def (arity_gen_appl g c t0 (THeads (Flat Appl) t1 
22572 t) a H1) in (ex2_ind A (\lambda (a1: A).(arity g c t0 a1)) (\lambda (a1: 
22573 A).(arity g c (THeads (Flat Appl) t1 t) (AHead a1 a))) (arity g c (THead 
22574 (Flat Appl) t0 (THeads (Flat Appl) t1 (THead (Flat Cast) u t))) a) (\lambda 
22575 (x: A).(\lambda (H3: (arity g c t0 x)).(\lambda (H4: (arity g c (THeads (Flat 
22576 Appl) t1 t) (AHead x a))).(let H5 \def (arity_gen_appl g c t0 (THeads (Flat 
22577 Appl) t1 u) (asucc g a) H0) in (ex2_ind A (\lambda (a1: A).(arity g c t0 a1)) 
22578 (\lambda (a1: A).(arity g c (THeads (Flat Appl) t1 u) (AHead a1 (asucc g 
22579 a)))) (arity g c (THead (Flat Appl) t0 (THeads (Flat Appl) t1 (THead (Flat 
22580 Cast) u t))) a) (\lambda (x0: A).(\lambda (H6: (arity g c t0 x0)).(\lambda 
22581 (H7: (arity g c (THeads (Flat Appl) t1 u) (AHead x0 (asucc g 
22582 a)))).(arity_appl g c t0 x H3 (THeads (Flat Appl) t1 (THead (Flat Cast) u t)) 
22583 a (H (AHead x a) (arity_repl g c (THeads (Flat Appl) t1 u) (AHead x (asucc g 
22584 a)) (arity_repl g c (THeads (Flat Appl) t1 u) (AHead x0 (asucc g a)) H7 
22585 (AHead x (asucc g a)) (leq_head g x0 x (arity_mono g c t0 x0 H6 x H3) (asucc 
22586 g a) (asucc g a) (leq_refl g (asucc g a)))) (asucc g (AHead x a)) (leq_refl g 
22587 (asucc g (AHead x a)))) H4))))) H5))))) H2)))))))) vs))))).
22588
22589 theorem arity_appls_abbr:
22590  \forall (g: G).(\forall (c: C).(\forall (d: C).(\forall (v: T).(\forall (i: 
22591 nat).((getl i c (CHead d (Bind Abbr) v)) \to (\forall (vs: TList).(\forall 
22592 (a: A).((arity g c (THeads (Flat Appl) vs (lift (S i) O v)) a) \to (arity g c 
22593 (THeads (Flat Appl) vs (TLRef i)) a)))))))))
22594 \def
22595  \lambda (g: G).(\lambda (c: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: 
22596 nat).(\lambda (H: (getl i c (CHead d (Bind Abbr) v))).(\lambda (vs: 
22597 TList).(TList_ind (\lambda (t: TList).(\forall (a: A).((arity g c (THeads 
22598 (Flat Appl) t (lift (S i) O v)) a) \to (arity g c (THeads (Flat Appl) t 
22599 (TLRef i)) a)))) (\lambda (a: A).(\lambda (H0: (arity g c (lift (S i) O v) 
22600 a)).(arity_abbr g c d v i H a (arity_gen_lift g c v a (S i) O H0 d (getl_drop 
22601 Abbr c d v i H))))) (\lambda (t: T).(\lambda (t0: TList).(\lambda (H0: 
22602 ((\forall (a: A).((arity g c (THeads (Flat Appl) t0 (lift (S i) O v)) a) \to 
22603 (arity g c (THeads (Flat Appl) t0 (TLRef i)) a))))).(\lambda (a: A).(\lambda 
22604 (H1: (arity g c (THead (Flat Appl) t (THeads (Flat Appl) t0 (lift (S i) O 
22605 v))) a)).(let H2 \def (arity_gen_appl g c t (THeads (Flat Appl) t0 (lift (S 
22606 i) O v)) a H1) in (ex2_ind A (\lambda (a1: A).(arity g c t a1)) (\lambda (a1: 
22607 A).(arity g c (THeads (Flat Appl) t0 (lift (S i) O v)) (AHead a1 a))) (arity 
22608 g c (THead (Flat Appl) t (THeads (Flat Appl) t0 (TLRef i))) a) (\lambda (x: 
22609 A).(\lambda (H3: (arity g c t x)).(\lambda (H4: (arity g c (THeads (Flat 
22610 Appl) t0 (lift (S i) O v)) (AHead x a))).(arity_appl g c t x H3 (THeads (Flat 
22611 Appl) t0 (TLRef i)) a (H0 (AHead x a) H4))))) H2))))))) vs))))))).
22612
22613 theorem arity_appls_bind:
22614  \forall (g: G).(\forall (b: B).((not (eq B b Abst)) \to (\forall (c: 
22615 C).(\forall (v: T).(\forall (a1: A).((arity g c v a1) \to (\forall (t: 
22616 T).(\forall (vs: TList).(\forall (a2: A).((arity g (CHead c (Bind b) v) 
22617 (THeads (Flat Appl) (lifts (S O) O vs) t) a2) \to (arity g c (THeads (Flat 
22618 Appl) vs (THead (Bind b) v t)) a2)))))))))))
22619 \def
22620  \lambda (g: G).(\lambda (b: B).(\lambda (H: (not (eq B b Abst))).(\lambda 
22621 (c: C).(\lambda (v: T).(\lambda (a1: A).(\lambda (H0: (arity g c v 
22622 a1)).(\lambda (t: T).(\lambda (vs: TList).(TList_ind (\lambda (t0: 
22623 TList).(\forall (a2: A).((arity g (CHead c (Bind b) v) (THeads (Flat Appl) 
22624 (lifts (S O) O t0) t) a2) \to (arity g c (THeads (Flat Appl) t0 (THead (Bind 
22625 b) v t)) a2)))) (\lambda (a2: A).(\lambda (H1: (arity g (CHead c (Bind b) v) 
22626 t a2)).(arity_bind g b H c v a1 H0 t a2 H1))) (\lambda (t0: T).(\lambda (t1: 
22627 TList).(\lambda (H1: ((\forall (a2: A).((arity g (CHead c (Bind b) v) (THeads 
22628 (Flat Appl) (lifts (S O) O t1) t) a2) \to (arity g c (THeads (Flat Appl) t1 
22629 (THead (Bind b) v t)) a2))))).(\lambda (a2: A).(\lambda (H2: (arity g (CHead 
22630 c (Bind b) v) (THead (Flat Appl) (lift (S O) O t0) (THeads (Flat Appl) (lifts 
22631 (S O) O t1) t)) a2)).(let H3 \def (arity_gen_appl g (CHead c (Bind b) v) 
22632 (lift (S O) O t0) (THeads (Flat Appl) (lifts (S O) O t1) t) a2 H2) in 
22633 (ex2_ind A (\lambda (a3: A).(arity g (CHead c (Bind b) v) (lift (S O) O t0) 
22634 a3)) (\lambda (a3: A).(arity g (CHead c (Bind b) v) (THeads (Flat Appl) 
22635 (lifts (S O) O t1) t) (AHead a3 a2))) (arity g c (THead (Flat Appl) t0 
22636 (THeads (Flat Appl) t1 (THead (Bind b) v t))) a2) (\lambda (x: A).(\lambda 
22637 (H4: (arity g (CHead c (Bind b) v) (lift (S O) O t0) x)).(\lambda (H5: (arity 
22638 g (CHead c (Bind b) v) (THeads (Flat Appl) (lifts (S O) O t1) t) (AHead x 
22639 a2))).(arity_appl g c t0 x (arity_gen_lift g (CHead c (Bind b) v) t0 x (S O) 
22640 O H4 c (drop_drop (Bind b) O c c (drop_refl c) v)) (THeads (Flat Appl) t1 
22641 (THead (Bind b) v t)) a2 (H1 (AHead x a2) H5))))) H3))))))) vs))))))))).
22642
22643 theorem arity_fsubst0:
22644  \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (a: A).((arity g 
22645 c1 t1 a) \to (\forall (d1: C).(\forall (u: T).(\forall (i: nat).((getl i c1 
22646 (CHead d1 (Bind Abbr) u)) \to (\forall (c2: C).(\forall (t2: T).((fsubst0 i u 
22647 c1 t1 c2 t2) \to (arity g c2 t2 a))))))))))))
22648 \def
22649  \lambda (g: G).(\lambda (c1: C).(\lambda (t1: T).(\lambda (a: A).(\lambda 
22650 (H: (arity g c1 t1 a)).(arity_ind g (\lambda (c: C).(\lambda (t: T).(\lambda 
22651 (a0: A).(\forall (d1: C).(\forall (u: T).(\forall (i: nat).((getl i c (CHead 
22652 d1 (Bind Abbr) u)) \to (\forall (c2: C).(\forall (t2: T).((fsubst0 i u c t c2 
22653 t2) \to (arity g c2 t2 a0))))))))))) (\lambda (c: C).(\lambda (n: 
22654 nat).(\lambda (d1: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (_: (getl i 
22655 c (CHead d1 (Bind Abbr) u))).(\lambda (c2: C).(\lambda (t2: T).(\lambda (H1: 
22656 (fsubst0 i u c (TSort n) c2 t2)).(let H2 \def (fsubst0_gen_base c c2 (TSort 
22657 n) t2 u i H1) in (or3_ind (land (eq C c c2) (subst0 i u (TSort n) t2)) (land 
22658 (eq T (TSort n) t2) (csubst0 i u c c2)) (land (subst0 i u (TSort n) t2) 
22659 (csubst0 i u c c2)) (arity g c2 t2 (ASort O n)) (\lambda (H3: (land (eq C c 
22660 c2) (subst0 i u (TSort n) t2))).(and_ind (eq C c c2) (subst0 i u (TSort n) 
22661 t2) (arity g c2 t2 (ASort O n)) (\lambda (H4: (eq C c c2)).(\lambda (H5: 
22662 (subst0 i u (TSort n) t2)).(eq_ind C c (\lambda (c0: C).(arity g c0 t2 (ASort 
22663 O n))) (subst0_gen_sort u t2 i n H5 (arity g c t2 (ASort O n))) c2 H4))) H3)) 
22664 (\lambda (H3: (land (eq T (TSort n) t2) (csubst0 i u c c2))).(and_ind (eq T 
22665 (TSort n) t2) (csubst0 i u c c2) (arity g c2 t2 (ASort O n)) (\lambda (H4: 
22666 (eq T (TSort n) t2)).(\lambda (_: (csubst0 i u c c2)).(eq_ind T (TSort n) 
22667 (\lambda (t: T).(arity g c2 t (ASort O n))) (arity_sort g c2 n) t2 H4))) H3)) 
22668 (\lambda (H3: (land (subst0 i u (TSort n) t2) (csubst0 i u c c2))).(and_ind 
22669 (subst0 i u (TSort n) t2) (csubst0 i u c c2) (arity g c2 t2 (ASort O n)) 
22670 (\lambda (H4: (subst0 i u (TSort n) t2)).(\lambda (_: (csubst0 i u c 
22671 c2)).(subst0_gen_sort u t2 i n H4 (arity g c2 t2 (ASort O n))))) H3)) 
22672 H2))))))))))) (\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: 
22673 nat).(\lambda (H0: (getl i c (CHead d (Bind Abbr) u))).(\lambda (a0: 
22674 A).(\lambda (H1: (arity g d u a0)).(\lambda (H2: ((\forall (d1: C).(\forall 
22675 (u0: T).(\forall (i: nat).((getl i d (CHead d1 (Bind Abbr) u0)) \to (\forall 
22676 (c2: C).(\forall (t2: T).((fsubst0 i u0 d u c2 t2) \to (arity g c2 t2 
22677 a0)))))))))).(\lambda (d1: C).(\lambda (u0: T).(\lambda (i0: nat).(\lambda 
22678 (H3: (getl i0 c (CHead d1 (Bind Abbr) u0))).(\lambda (c2: C).(\lambda (t2: 
22679 T).(\lambda (H4: (fsubst0 i0 u0 c (TLRef i) c2 t2)).(let H5 \def 
22680 (fsubst0_gen_base c c2 (TLRef i) t2 u0 i0 H4) in (or3_ind (land (eq C c c2) 
22681 (subst0 i0 u0 (TLRef i) t2)) (land (eq T (TLRef i) t2) (csubst0 i0 u0 c c2)) 
22682 (land (subst0 i0 u0 (TLRef i) t2) (csubst0 i0 u0 c c2)) (arity g c2 t2 a0) 
22683 (\lambda (H6: (land (eq C c c2) (subst0 i0 u0 (TLRef i) t2))).(and_ind (eq C 
22684 c c2) (subst0 i0 u0 (TLRef i) t2) (arity g c2 t2 a0) (\lambda (H7: (eq C c 
22685 c2)).(\lambda (H8: (subst0 i0 u0 (TLRef i) t2)).(eq_ind C c (\lambda (c0: 
22686 C).(arity g c0 t2 a0)) (and_ind (eq nat i i0) (eq T t2 (lift (S i) O u0)) 
22687 (arity g c t2 a0) (\lambda (H9: (eq nat i i0)).(\lambda (H10: (eq T t2 (lift 
22688 (S i) O u0))).(eq_ind_r T (lift (S i) O u0) (\lambda (t: T).(arity g c t a0)) 
22689 (let H11 \def (eq_ind_r nat i0 (\lambda (n: nat).(getl n c (CHead d1 (Bind 
22690 Abbr) u0))) H3 i H9) in (let H12 \def (eq_ind C (CHead d (Bind Abbr) u) 
22691 (\lambda (c0: C).(getl i c c0)) H0 (CHead d1 (Bind Abbr) u0) (getl_mono c 
22692 (CHead d (Bind Abbr) u) i H0 (CHead d1 (Bind Abbr) u0) H11)) in (let H13 \def 
22693 (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort 
22694 _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind Abbr) u) 
22695 (CHead d1 (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) i H0 (CHead d1 
22696 (Bind Abbr) u0) H11)) in ((let H14 \def (f_equal C T (\lambda (e: C).(match e 
22697 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) 
22698 \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead d1 (Bind Abbr) u0) (getl_mono 
22699 c (CHead d (Bind Abbr) u) i H0 (CHead d1 (Bind Abbr) u0) H11)) in (\lambda 
22700 (H15: (eq C d d1)).(let H16 \def (eq_ind_r T u0 (\lambda (t: T).(getl i c 
22701 (CHead d1 (Bind Abbr) t))) H12 u H14) in (eq_ind T u (\lambda (t: T).(arity g 
22702 c (lift (S i) O t) a0)) (let H17 \def (eq_ind_r C d1 (\lambda (c0: C).(getl i 
22703 c (CHead c0 (Bind Abbr) u))) H16 d H15) in (arity_lift g d u a0 H1 c (S i) O 
22704 (getl_drop Abbr c d u i H17))) u0 H14)))) H13)))) t2 H10))) (subst0_gen_lref 
22705 u0 t2 i0 i H8)) c2 H7))) H6)) (\lambda (H6: (land (eq T (TLRef i) t2) 
22706 (csubst0 i0 u0 c c2))).(and_ind (eq T (TLRef i) t2) (csubst0 i0 u0 c c2) 
22707 (arity g c2 t2 a0) (\lambda (H7: (eq T (TLRef i) t2)).(\lambda (H8: (csubst0 
22708 i0 u0 c c2)).(eq_ind T (TLRef i) (\lambda (t: T).(arity g c2 t a0)) (lt_le_e 
22709 i i0 (arity g c2 (TLRef i) a0) (\lambda (H9: (lt i i0)).(let H10 \def 
22710 (csubst0_getl_lt i0 i H9 c c2 u0 H8 (CHead d (Bind Abbr) u) H0) in (or4_ind 
22711 (getl i c2 (CHead d (Bind Abbr) u)) (ex3_4 B C T T (\lambda (b: B).(\lambda 
22712 (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead 
22713 e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
22714 T).(\lambda (w: T).(getl i c2 (CHead e0 (Bind b) w)))))) (\lambda (_: 
22715 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) 
22716 u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
22717 C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) 
22718 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c2 
22719 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
22720 C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) (ex4_5 B C C T T 
22721 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
22722 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda 
22723 (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl 
22724 i c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
22725 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) 
22726 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
22727 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))) (arity g c2 (TLRef i) a0) 
22728 (\lambda (H11: (getl i c2 (CHead d (Bind Abbr) u))).(let H12 \def (eq_ind nat 
22729 (minus i0 i) (\lambda (n: nat).(getl n (CHead d (Bind Abbr) u) (CHead d1 
22730 (Bind Abbr) u0))) (getl_conf_le i0 (CHead d1 (Bind Abbr) u0) c H3 (CHead d 
22731 (Bind Abbr) u) i H0 (le_S_n i i0 (le_S (S i) i0 H9))) (S (minus i0 (S i))) 
22732 (minus_x_Sy i0 i H9)) in (arity_abbr g c2 d u i H11 a0 H1))) (\lambda (H11: 
22733 (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: 
22734 T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u0)))))) (\lambda (b: 
22735 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c2 (CHead e0 
22736 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
22737 T).(subst0 (minus i0 (S i)) u0 u w))))))).(ex3_4_ind B C T T (\lambda (b: 
22738 B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind 
22739 Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: 
22740 C).(\lambda (_: T).(\lambda (w: T).(getl i c2 (CHead e0 (Bind b) w)))))) 
22741 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 
22742 (minus i0 (S i)) u0 u1 w))))) (arity g c2 (TLRef i) a0) (\lambda (x0: 
22743 B).(\lambda (x1: C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H12: (eq C 
22744 (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2))).(\lambda (H13: (getl i c2 
22745 (CHead x1 (Bind x0) x3))).(\lambda (H14: (subst0 (minus i0 (S i)) u0 x2 
22746 x3)).(let H15 \def (eq_ind nat (minus i0 i) (\lambda (n: nat).(getl n (CHead 
22747 d (Bind Abbr) u) (CHead d1 (Bind Abbr) u0))) (getl_conf_le i0 (CHead d1 (Bind 
22748 Abbr) u0) c H3 (CHead d (Bind Abbr) u) i H0 (le_S_n i i0 (le_S (S i) i0 H9))) 
22749 (S (minus i0 (S i))) (minus_x_Sy i0 i H9)) in (let H16 \def (f_equal C C 
22750 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
22751 \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind Abbr) u) (CHead 
22752 x1 (Bind x0) x2) H12) in ((let H17 \def (f_equal C B (\lambda (e: C).(match e 
22753 return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) 
22754 \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | 
22755 (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
22756 x2) H12) in ((let H18 \def (f_equal C T (\lambda (e: C).(match e return 
22757 (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow 
22758 t])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H12) in (\lambda (H19: 
22759 (eq B Abbr x0)).(\lambda (H20: (eq C d x1)).(let H21 \def (eq_ind_r T x2 
22760 (\lambda (t: T).(subst0 (minus i0 (S i)) u0 t x3)) H14 u H18) in (let H22 
22761 \def (eq_ind_r C x1 (\lambda (c: C).(getl i c2 (CHead c (Bind x0) x3))) H13 d 
22762 H20) in (let H23 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c2 (CHead d 
22763 (Bind b) x3))) H22 Abbr H19) in (arity_abbr g c2 d x3 i H23 a0 (H2 d1 u0 (r 
22764 (Bind Abbr) (minus i0 (S i))) (getl_gen_S (Bind Abbr) d (CHead d1 (Bind Abbr) 
22765 u0) u (minus i0 (S i)) H15) d x3 (fsubst0_snd (r (Bind Abbr) (minus i0 (S 
22766 i))) u0 d u x3 H21))))))))) H17)) H16)))))))))) H11)) (\lambda (H11: (ex3_4 B 
22767 C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C 
22768 (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u0)))))) (\lambda (b: B).(\lambda 
22769 (_: C).(\lambda (e2: C).(\lambda (u: T).(getl i c2 (CHead e2 (Bind b) u)))))) 
22770 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
22771 (minus i0 (S i)) u0 e1 e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda 
22772 (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead 
22773 e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
22774 C).(\lambda (u1: T).(getl i c2 (CHead e2 (Bind b) u1)))))) (\lambda (_: 
22775 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S 
22776 i)) u0 e1 e2))))) (arity g c2 (TLRef i) a0) (\lambda (x0: B).(\lambda (x1: 
22777 C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H12: (eq C (CHead d (Bind 
22778 Abbr) u) (CHead x1 (Bind x0) x3))).(\lambda (H13: (getl i c2 (CHead x2 (Bind 
22779 x0) x3))).(\lambda (H14: (csubst0 (minus i0 (S i)) u0 x1 x2)).(let H15 \def 
22780 (eq_ind nat (minus i0 i) (\lambda (n: nat).(getl n (CHead d (Bind Abbr) u) 
22781 (CHead d1 (Bind Abbr) u0))) (getl_conf_le i0 (CHead d1 (Bind Abbr) u0) c H3 
22782 (CHead d (Bind Abbr) u) i H0 (le_S_n i i0 (le_S (S i) i0 H9))) (S (minus i0 
22783 (S i))) (minus_x_Sy i0 i H9)) in (let H16 \def (f_equal C C (\lambda (e: 
22784 C).(match e return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead 
22785 c _ _) \Rightarrow c])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H12) 
22786 in ((let H17 \def (f_equal C B (\lambda (e: C).(match e return (\lambda (_: 
22787 C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k 
22788 return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
22789 Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H12) in ((let H18 
22790 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
22791 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
22792 Abbr) u) (CHead x1 (Bind x0) x3) H12) in (\lambda (H19: (eq B Abbr 
22793 x0)).(\lambda (H20: (eq C d x1)).(let H21 \def (eq_ind_r T x3 (\lambda (t: 
22794 T).(getl i c2 (CHead x2 (Bind x0) t))) H13 u H18) in (let H22 \def (eq_ind_r 
22795 C x1 (\lambda (c: C).(csubst0 (minus i0 (S i)) u0 c x2)) H14 d H20) in (let 
22796 H23 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c2 (CHead x2 (Bind b) u))) 
22797 H21 Abbr H19) in (arity_abbr g c2 x2 u i H23 a0 (H2 d1 u0 (r (Bind Abbr) 
22798 (minus i0 (S i))) (getl_gen_S (Bind Abbr) d (CHead d1 (Bind Abbr) u0) u 
22799 (minus i0 (S i)) H15) x2 u (fsubst0_fst (r (Bind Abbr) (minus i0 (S i))) u0 d 
22800 u x2 H22))))))))) H17)) H16)))))))))) H11)) (\lambda (H11: (ex4_5 B C C T T 
22801 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda 
22802 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u0))))))) (\lambda 
22803 (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl 
22804 i c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
22805 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u w)))))) 
22806 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
22807 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))))).(ex4_5_ind B C C T T 
22808 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
22809 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda 
22810 (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl 
22811 i c2 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
22812 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) 
22813 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
22814 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) (arity g c2 (TLRef i) a0) 
22815 (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda 
22816 (x4: T).(\lambda (H12: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
22817 x3))).(\lambda (H13: (getl i c2 (CHead x2 (Bind x0) x4))).(\lambda (H14: 
22818 (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H15: (csubst0 (minus i0 (S i)) 
22819 u0 x1 x2)).(let H16 \def (eq_ind nat (minus i0 i) (\lambda (n: nat).(getl n 
22820 (CHead d (Bind Abbr) u) (CHead d1 (Bind Abbr) u0))) (getl_conf_le i0 (CHead 
22821 d1 (Bind Abbr) u0) c H3 (CHead d (Bind Abbr) u) i H0 (le_S_n i i0 (le_S (S i) 
22822 i0 H9))) (S (minus i0 (S i))) (minus_x_Sy i0 i H9)) in (let H17 \def (f_equal 
22823 C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
22824 \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind Abbr) u) (CHead 
22825 x1 (Bind x0) x3) H12) in ((let H18 \def (f_equal C B (\lambda (e: C).(match e 
22826 return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) 
22827 \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | 
22828 (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
22829 x3) H12) in ((let H19 \def (f_equal C T (\lambda (e: C).(match e return 
22830 (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow 
22831 t])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H12) in (\lambda (H20: 
22832 (eq B Abbr x0)).(\lambda (H21: (eq C d x1)).(let H22 \def (eq_ind_r T x3 
22833 (\lambda (t: T).(subst0 (minus i0 (S i)) u0 t x4)) H14 u H19) in (let H23 
22834 \def (eq_ind_r C x1 (\lambda (c: C).(csubst0 (minus i0 (S i)) u0 c x2)) H15 d 
22835 H21) in (let H24 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c2 (CHead x2 
22836 (Bind b) x4))) H13 Abbr H20) in (arity_abbr g c2 x2 x4 i H24 a0 (H2 d1 u0 (r 
22837 (Bind Abbr) (minus i0 (S i))) (getl_gen_S (Bind Abbr) d (CHead d1 (Bind Abbr) 
22838 u0) u (minus i0 (S i)) H16) x2 x4 (fsubst0_both (r (Bind Abbr) (minus i0 (S 
22839 i))) u0 d u x4 H22 x2 H23))))))))) H18)) H17)))))))))))) H11)) H10))) 
22840 (\lambda (H9: (le i0 i)).(arity_abbr g c2 d u i (csubst0_getl_ge i0 i H9 c c2 
22841 u0 H8 (CHead d (Bind Abbr) u) H0) a0 H1))) t2 H7))) H6)) (\lambda (H6: (land 
22842 (subst0 i0 u0 (TLRef i) t2) (csubst0 i0 u0 c c2))).(and_ind (subst0 i0 u0 
22843 (TLRef i) t2) (csubst0 i0 u0 c c2) (arity g c2 t2 a0) (\lambda (H7: (subst0 
22844 i0 u0 (TLRef i) t2)).(\lambda (H8: (csubst0 i0 u0 c c2)).(and_ind (eq nat i 
22845 i0) (eq T t2 (lift (S i) O u0)) (arity g c2 t2 a0) (\lambda (H9: (eq nat i 
22846 i0)).(\lambda (H10: (eq T t2 (lift (S i) O u0))).(eq_ind_r T (lift (S i) O 
22847 u0) (\lambda (t: T).(arity g c2 t a0)) (let H11 \def (eq_ind_r nat i0 
22848 (\lambda (n: nat).(csubst0 n u0 c c2)) H8 i H9) in (let H12 \def (eq_ind_r 
22849 nat i0 (\lambda (n: nat).(getl n c (CHead d1 (Bind Abbr) u0))) H3 i H9) in 
22850 (let H13 \def (eq_ind C (CHead d (Bind Abbr) u) (\lambda (c0: C).(getl i c 
22851 c0)) H0 (CHead d1 (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) i H0 
22852 (CHead d1 (Bind Abbr) u0) H12)) in (let H14 \def (f_equal C C (\lambda (e: 
22853 C).(match e return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead 
22854 c _ _) \Rightarrow c])) (CHead d (Bind Abbr) u) (CHead d1 (Bind Abbr) u0) 
22855 (getl_mono c (CHead d (Bind Abbr) u) i H0 (CHead d1 (Bind Abbr) u0) H12)) in 
22856 ((let H15 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: 
22857 C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d 
22858 (Bind Abbr) u) (CHead d1 (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) 
22859 i H0 (CHead d1 (Bind Abbr) u0) H12)) in (\lambda (H16: (eq C d d1)).(let H17 
22860 \def (eq_ind_r T u0 (\lambda (t: T).(getl i c (CHead d1 (Bind Abbr) t))) H13 
22861 u H15) in (let H18 \def (eq_ind_r T u0 (\lambda (t: T).(csubst0 i t c c2)) 
22862 H11 u H15) in (eq_ind T u (\lambda (t: T).(arity g c2 (lift (S i) O t) a0)) 
22863 (let H19 \def (eq_ind_r C d1 (\lambda (c0: C).(getl i c (CHead c0 (Bind Abbr) 
22864 u))) H17 d H16) in (arity_lift g d u a0 H1 c2 (S i) O (getl_drop Abbr c2 d u 
22865 i (csubst0_getl_ge i i (le_n i) c c2 u H18 (CHead d (Bind Abbr) u) H19)))) u0 
22866 H15))))) H14))))) t2 H10))) (subst0_gen_lref u0 t2 i0 i H7)))) H6)) 
22867 H5))))))))))))))))) (\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda 
22868 (i: nat).(\lambda (H0: (getl i c (CHead d (Bind Abst) u))).(\lambda (a0: 
22869 A).(\lambda (H1: (arity g d u (asucc g a0))).(\lambda (H2: ((\forall (d1: 
22870 C).(\forall (u0: T).(\forall (i: nat).((getl i d (CHead d1 (Bind Abbr) u0)) 
22871 \to (\forall (c2: C).(\forall (t2: T).((fsubst0 i u0 d u c2 t2) \to (arity g 
22872 c2 t2 (asucc g a0))))))))))).(\lambda (d1: C).(\lambda (u0: T).(\lambda (i0: 
22873 nat).(\lambda (H3: (getl i0 c (CHead d1 (Bind Abbr) u0))).(\lambda (c2: 
22874 C).(\lambda (t2: T).(\lambda (H4: (fsubst0 i0 u0 c (TLRef i) c2 t2)).(let H5 
22875 \def (fsubst0_gen_base c c2 (TLRef i) t2 u0 i0 H4) in (or3_ind (land (eq C c 
22876 c2) (subst0 i0 u0 (TLRef i) t2)) (land (eq T (TLRef i) t2) (csubst0 i0 u0 c 
22877 c2)) (land (subst0 i0 u0 (TLRef i) t2) (csubst0 i0 u0 c c2)) (arity g c2 t2 
22878 a0) (\lambda (H6: (land (eq C c c2) (subst0 i0 u0 (TLRef i) t2))).(and_ind 
22879 (eq C c c2) (subst0 i0 u0 (TLRef i) t2) (arity g c2 t2 a0) (\lambda (H7: (eq 
22880 C c c2)).(\lambda (H8: (subst0 i0 u0 (TLRef i) t2)).(eq_ind C c (\lambda (c0: 
22881 C).(arity g c0 t2 a0)) (and_ind (eq nat i i0) (eq T t2 (lift (S i) O u0)) 
22882 (arity g c t2 a0) (\lambda (H9: (eq nat i i0)).(\lambda (H10: (eq T t2 (lift 
22883 (S i) O u0))).(eq_ind_r T (lift (S i) O u0) (\lambda (t: T).(arity g c t a0)) 
22884 (let H11 \def (eq_ind_r nat i0 (\lambda (n: nat).(getl n c (CHead d1 (Bind 
22885 Abbr) u0))) H3 i H9) in (let H12 \def (eq_ind C (CHead d (Bind Abst) u) 
22886 (\lambda (c0: C).(getl i c c0)) H0 (CHead d1 (Bind Abbr) u0) (getl_mono c 
22887 (CHead d (Bind Abst) u) i H0 (CHead d1 (Bind Abbr) u0) H11)) in (let H13 \def 
22888 (eq_ind C (CHead d (Bind Abst) u) (\lambda (ee: C).(match ee return (\lambda 
22889 (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow 
22890 (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b 
22891 return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow 
22892 True | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead d1 
22893 (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abst) u) i H0 (CHead d1 (Bind 
22894 Abbr) u0) H11)) in (False_ind (arity g c (lift (S i) O u0) a0) H13)))) t2 
22895 H10))) (subst0_gen_lref u0 t2 i0 i H8)) c2 H7))) H6)) (\lambda (H6: (land (eq 
22896 T (TLRef i) t2) (csubst0 i0 u0 c c2))).(and_ind (eq T (TLRef i) t2) (csubst0 
22897 i0 u0 c c2) (arity g c2 t2 a0) (\lambda (H7: (eq T (TLRef i) t2)).(\lambda 
22898 (H8: (csubst0 i0 u0 c c2)).(eq_ind T (TLRef i) (\lambda (t: T).(arity g c2 t 
22899 a0)) (lt_le_e i i0 (arity g c2 (TLRef i) a0) (\lambda (H9: (lt i i0)).(let 
22900 H10 \def (csubst0_getl_lt i0 i H9 c c2 u0 H8 (CHead d (Bind Abst) u) H0) in 
22901 (or4_ind (getl i c2 (CHead d (Bind Abst) u)) (ex3_4 B C T T (\lambda (b: 
22902 B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind 
22903 Abst) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: 
22904 C).(\lambda (_: T).(\lambda (w: T).(getl i c2 (CHead e0 (Bind b) w)))))) 
22905 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 
22906 (minus i0 (S i)) u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
22907 C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind Abst) u) (CHead e1 
22908 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
22909 (u1: T).(getl i c2 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: 
22910 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) 
22911 (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda 
22912 (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abst) u) (CHead e1 (Bind b) 
22913 u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: 
22914 T).(\lambda (w: T).(getl i c2 (CHead e2 (Bind b) w))))))) (\lambda (_: 
22915 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 
22916 (minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
22917 C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))) 
22918 (arity g c2 (TLRef i) a0) (\lambda (H11: (getl i c2 (CHead d (Bind Abst) 
22919 u))).(let H12 \def (eq_ind nat (minus i0 i) (\lambda (n: nat).(getl n (CHead 
22920 d (Bind Abst) u) (CHead d1 (Bind Abbr) u0))) (getl_conf_le i0 (CHead d1 (Bind 
22921 Abbr) u0) c H3 (CHead d (Bind Abst) u) i H0 (le_S_n i i0 (le_S (S i) i0 H9))) 
22922 (S (minus i0 (S i))) (minus_x_Sy i0 i H9)) in (arity_abst g c2 d u i H11 a0 
22923 H1))) (\lambda (H11: (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda 
22924 (u0: T).(\lambda (_: T).(eq C (CHead d (Bind Abst) u) (CHead e0 (Bind b) 
22925 u0)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
22926 T).(getl i c2 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
22927 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u 
22928 w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: 
22929 T).(\lambda (_: T).(eq C (CHead d (Bind Abst) u) (CHead e0 (Bind b) u1)))))) 
22930 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c2 
22931 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
22932 T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w))))) (arity g c2 (TLRef 
22933 i) a0) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: T).(\lambda (x3: 
22934 T).(\lambda (H12: (eq C (CHead d (Bind Abst) u) (CHead x1 (Bind x0) 
22935 x2))).(\lambda (H13: (getl i c2 (CHead x1 (Bind x0) x3))).(\lambda (H14: 
22936 (subst0 (minus i0 (S i)) u0 x2 x3)).(let H15 \def (eq_ind nat (minus i0 i) 
22937 (\lambda (n: nat).(getl n (CHead d (Bind Abst) u) (CHead d1 (Bind Abbr) u0))) 
22938 (getl_conf_le i0 (CHead d1 (Bind Abbr) u0) c H3 (CHead d (Bind Abst) u) i H0 
22939 (le_S_n i i0 (le_S (S i) i0 H9))) (S (minus i0 (S i))) (minus_x_Sy i0 i H9)) 
22940 in (let H16 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: 
22941 C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d 
22942 (Bind Abst) u) (CHead x1 (Bind x0) x2) H12) in ((let H17 \def (f_equal C B 
22943 (\lambda (e: C).(match e return (\lambda (_: C).B) with [(CSort _) 
22944 \Rightarrow Abst | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
22945 K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abst])])) (CHead d 
22946 (Bind Abst) u) (CHead x1 (Bind x0) x2) H12) in ((let H18 \def (f_equal C T 
22947 (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort _) 
22948 \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind Abst) u) (CHead 
22949 x1 (Bind x0) x2) H12) in (\lambda (H19: (eq B Abst x0)).(\lambda (H20: (eq C 
22950 d x1)).(let H21 \def (eq_ind_r T x2 (\lambda (t: T).(subst0 (minus i0 (S i)) 
22951 u0 t x3)) H14 u H18) in (let H22 \def (eq_ind_r C x1 (\lambda (c: C).(getl i 
22952 c2 (CHead c (Bind x0) x3))) H13 d H20) in (let H23 \def (eq_ind_r B x0 
22953 (\lambda (b: B).(getl i c2 (CHead d (Bind b) x3))) H22 Abst H19) in 
22954 (arity_abst g c2 d x3 i H23 a0 (H2 d1 u0 (r (Bind Abst) (minus i0 (S i))) 
22955 (getl_gen_S (Bind Abst) d (CHead d1 (Bind Abbr) u0) u (minus i0 (S i)) H15) d 
22956 x3 (fsubst0_snd (r (Bind Abst) (minus i0 (S i))) u0 d u x3 H21))))))))) H17)) 
22957 H16)))))))))) H11)) (\lambda (H11: (ex3_4 B C C T (\lambda (b: B).(\lambda 
22958 (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead d (Bind Abst) u) (CHead 
22959 e1 (Bind b) u0)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
22960 C).(\lambda (u: T).(getl i c2 (CHead e2 (Bind b) u)))))) (\lambda (_: 
22961 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S 
22962 i)) u0 e1 e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda (e1: 
22963 C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind Abst) u) (CHead e1 
22964 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
22965 (u1: T).(getl i c2 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: 
22966 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))) 
22967 (arity g c2 (TLRef i) a0) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: 
22968 C).(\lambda (x3: T).(\lambda (H12: (eq C (CHead d (Bind Abst) u) (CHead x1 
22969 (Bind x0) x3))).(\lambda (H13: (getl i c2 (CHead x2 (Bind x0) x3))).(\lambda 
22970 (H14: (csubst0 (minus i0 (S i)) u0 x1 x2)).(let H15 \def (eq_ind nat (minus 
22971 i0 i) (\lambda (n: nat).(getl n (CHead d (Bind Abst) u) (CHead d1 (Bind Abbr) 
22972 u0))) (getl_conf_le i0 (CHead d1 (Bind Abbr) u0) c H3 (CHead d (Bind Abst) u) 
22973 i H0 (le_S_n i i0 (le_S (S i) i0 H9))) (S (minus i0 (S i))) (minus_x_Sy i0 i 
22974 H9)) in (let H16 \def (f_equal C C (\lambda (e: C).(match e return (\lambda 
22975 (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) 
22976 (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x3) H12) in ((let H17 \def 
22977 (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) with [(CSort 
22978 _) \Rightarrow Abst | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
22979 K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abst])])) (CHead d 
22980 (Bind Abst) u) (CHead x1 (Bind x0) x3) H12) in ((let H18 \def (f_equal C T 
22981 (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort _) 
22982 \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind Abst) u) (CHead 
22983 x1 (Bind x0) x3) H12) in (\lambda (H19: (eq B Abst x0)).(\lambda (H20: (eq C 
22984 d x1)).(let H21 \def (eq_ind_r T x3 (\lambda (t: T).(getl i c2 (CHead x2 
22985 (Bind x0) t))) H13 u H18) in (let H22 \def (eq_ind_r C x1 (\lambda (c: 
22986 C).(csubst0 (minus i0 (S i)) u0 c x2)) H14 d H20) in (let H23 \def (eq_ind_r 
22987 B x0 (\lambda (b: B).(getl i c2 (CHead x2 (Bind b) u))) H21 Abst H19) in 
22988 (arity_abst g c2 x2 u i H23 a0 (H2 d1 u0 (r (Bind Abst) (minus i0 (S i))) 
22989 (getl_gen_S (Bind Abst) d (CHead d1 (Bind Abbr) u0) u (minus i0 (S i)) H15) 
22990 x2 u (fsubst0_fst (r (Bind Abst) (minus i0 (S i))) u0 d u x2 H22))))))))) 
22991 H17)) H16)))))))))) H11)) (\lambda (H11: (ex4_5 B C C T T (\lambda (b: 
22992 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C 
22993 (CHead d (Bind Abst) u) (CHead e1 (Bind b) u0))))))) (\lambda (b: B).(\lambda 
22994 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl i c2 (CHead e2 
22995 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
22996 (u: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u w)))))) (\lambda (_: 
22997 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
22998 (minus i0 (S i)) u0 e1 e2)))))))).(ex4_5_ind B C C T T (\lambda (b: 
22999 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C 
23000 (CHead d (Bind Abst) u) (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda 
23001 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl i c2 (CHead e2 
23002 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
23003 (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) (\lambda (_: 
23004 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
23005 (minus i0 (S i)) u0 e1 e2)))))) (arity g c2 (TLRef i) a0) (\lambda (x0: 
23006 B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: 
23007 T).(\lambda (H12: (eq C (CHead d (Bind Abst) u) (CHead x1 (Bind x0) 
23008 x3))).(\lambda (H13: (getl i c2 (CHead x2 (Bind x0) x4))).(\lambda (H14: 
23009 (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H15: (csubst0 (minus i0 (S i)) 
23010 u0 x1 x2)).(let H16 \def (eq_ind nat (minus i0 i) (\lambda (n: nat).(getl n 
23011 (CHead d (Bind Abst) u) (CHead d1 (Bind Abbr) u0))) (getl_conf_le i0 (CHead 
23012 d1 (Bind Abbr) u0) c H3 (CHead d (Bind Abst) u) i H0 (le_S_n i i0 (le_S (S i) 
23013 i0 H9))) (S (minus i0 (S i))) (minus_x_Sy i0 i H9)) in (let H17 \def (f_equal 
23014 C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
23015 \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind Abst) u) (CHead 
23016 x1 (Bind x0) x3) H12) in ((let H18 \def (f_equal C B (\lambda (e: C).(match e 
23017 return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abst | (CHead _ k _) 
23018 \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | 
23019 (Flat _) \Rightarrow Abst])])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) 
23020 x3) H12) in ((let H19 \def (f_equal C T (\lambda (e: C).(match e return 
23021 (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow 
23022 t])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x3) H12) in (\lambda (H20: 
23023 (eq B Abst x0)).(\lambda (H21: (eq C d x1)).(let H22 \def (eq_ind_r T x3 
23024 (\lambda (t: T).(subst0 (minus i0 (S i)) u0 t x4)) H14 u H19) in (let H23 
23025 \def (eq_ind_r C x1 (\lambda (c: C).(csubst0 (minus i0 (S i)) u0 c x2)) H15 d 
23026 H21) in (let H24 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c2 (CHead x2 
23027 (Bind b) x4))) H13 Abst H20) in (arity_abst g c2 x2 x4 i H24 a0 (H2 d1 u0 (r 
23028 (Bind Abst) (minus i0 (S i))) (getl_gen_S (Bind Abst) d (CHead d1 (Bind Abbr) 
23029 u0) u (minus i0 (S i)) H16) x2 x4 (fsubst0_both (r (Bind Abst) (minus i0 (S 
23030 i))) u0 d u x4 H22 x2 H23))))))))) H18)) H17)))))))))))) H11)) H10))) 
23031 (\lambda (H9: (le i0 i)).(arity_abst g c2 d u i (csubst0_getl_ge i0 i H9 c c2 
23032 u0 H8 (CHead d (Bind Abst) u) H0) a0 H1))) t2 H7))) H6)) (\lambda (H6: (land 
23033 (subst0 i0 u0 (TLRef i) t2) (csubst0 i0 u0 c c2))).(and_ind (subst0 i0 u0 
23034 (TLRef i) t2) (csubst0 i0 u0 c c2) (arity g c2 t2 a0) (\lambda (H7: (subst0 
23035 i0 u0 (TLRef i) t2)).(\lambda (H8: (csubst0 i0 u0 c c2)).(and_ind (eq nat i 
23036 i0) (eq T t2 (lift (S i) O u0)) (arity g c2 t2 a0) (\lambda (H9: (eq nat i 
23037 i0)).(\lambda (H10: (eq T t2 (lift (S i) O u0))).(eq_ind_r T (lift (S i) O 
23038 u0) (\lambda (t: T).(arity g c2 t a0)) (let H11 \def (eq_ind_r nat i0 
23039 (\lambda (n: nat).(csubst0 n u0 c c2)) H8 i H9) in (let H12 \def (eq_ind_r 
23040 nat i0 (\lambda (n: nat).(getl n c (CHead d1 (Bind Abbr) u0))) H3 i H9) in 
23041 (let H13 \def (eq_ind C (CHead d (Bind Abst) u) (\lambda (c0: C).(getl i c 
23042 c0)) H0 (CHead d1 (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abst) u) i H0 
23043 (CHead d1 (Bind Abbr) u0) H12)) in (let H14 \def (eq_ind C (CHead d (Bind 
23044 Abst) u) (\lambda (ee: C).(match ee return (\lambda (_: C).Prop) with [(CSort 
23045 _) \Rightarrow False | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
23046 K).Prop) with [(Bind b) \Rightarrow (match b return (\lambda (_: B).Prop) 
23047 with [Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow 
23048 False]) | (Flat _) \Rightarrow False])])) I (CHead d1 (Bind Abbr) u0) 
23049 (getl_mono c (CHead d (Bind Abst) u) i H0 (CHead d1 (Bind Abbr) u0) H12)) in 
23050 (False_ind (arity g c2 (lift (S i) O u0) a0) H14))))) t2 H10))) 
23051 (subst0_gen_lref u0 t2 i0 i H7)))) H6)) H5))))))))))))))))) (\lambda (b: 
23052 B).(\lambda (H0: (not (eq B b Abst))).(\lambda (c: C).(\lambda (u: 
23053 T).(\lambda (a1: A).(\lambda (H1: (arity g c u a1)).(\lambda (H2: ((\forall 
23054 (d1: C).(\forall (u0: T).(\forall (i: nat).((getl i c (CHead d1 (Bind Abbr) 
23055 u0)) \to (\forall (c2: C).(\forall (t2: T).((fsubst0 i u0 c u c2 t2) \to 
23056 (arity g c2 t2 a1)))))))))).(\lambda (t: T).(\lambda (a2: A).(\lambda (_: 
23057 (arity g (CHead c (Bind b) u) t a2)).(\lambda (H4: ((\forall (d1: C).(\forall 
23058 (u0: T).(\forall (i: nat).((getl i (CHead c (Bind b) u) (CHead d1 (Bind Abbr) 
23059 u0)) \to (\forall (c2: C).(\forall (t2: T).((fsubst0 i u0 (CHead c (Bind b) 
23060 u) t c2 t2) \to (arity g c2 t2 a2)))))))))).(\lambda (d1: C).(\lambda (u0: 
23061 T).(\lambda (i: nat).(\lambda (H5: (getl i c (CHead d1 (Bind Abbr) 
23062 u0))).(\lambda (c2: C).(\lambda (t2: T).(\lambda (H6: (fsubst0 i u0 c (THead 
23063 (Bind b) u t) c2 t2)).(let H7 \def (fsubst0_gen_base c c2 (THead (Bind b) u 
23064 t) t2 u0 i H6) in (or3_ind (land (eq C c c2) (subst0 i u0 (THead (Bind b) u 
23065 t) t2)) (land (eq T (THead (Bind b) u t) t2) (csubst0 i u0 c c2)) (land 
23066 (subst0 i u0 (THead (Bind b) u t) t2) (csubst0 i u0 c c2)) (arity g c2 t2 a2) 
23067 (\lambda (H8: (land (eq C c c2) (subst0 i u0 (THead (Bind b) u t) 
23068 t2))).(and_ind (eq C c c2) (subst0 i u0 (THead (Bind b) u t) t2) (arity g c2 
23069 t2 a2) (\lambda (H9: (eq C c c2)).(\lambda (H10: (subst0 i u0 (THead (Bind b) 
23070 u t) t2)).(eq_ind C c (\lambda (c0: C).(arity g c0 t2 a2)) (or3_ind (ex2 T 
23071 (\lambda (u2: T).(eq T t2 (THead (Bind b) u2 t))) (\lambda (u2: T).(subst0 i 
23072 u0 u u2))) (ex2 T (\lambda (t3: T).(eq T t2 (THead (Bind b) u t3))) (\lambda 
23073 (t3: T).(subst0 (s (Bind b) i) u0 t t3))) (ex3_2 T T (\lambda (u2: 
23074 T).(\lambda (t3: T).(eq T t2 (THead (Bind b) u2 t3)))) (\lambda (u2: 
23075 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t3: 
23076 T).(subst0 (s (Bind b) i) u0 t t3)))) (arity g c t2 a2) (\lambda (H11: (ex2 T 
23077 (\lambda (u2: T).(eq T t2 (THead (Bind b) u2 t))) (\lambda (u2: T).(subst0 i 
23078 u0 u u2)))).(ex2_ind T (\lambda (u2: T).(eq T t2 (THead (Bind b) u2 t))) 
23079 (\lambda (u2: T).(subst0 i u0 u u2)) (arity g c t2 a2) (\lambda (x: 
23080 T).(\lambda (H12: (eq T t2 (THead (Bind b) x t))).(\lambda (H13: (subst0 i u0 
23081 u x)).(eq_ind_r T (THead (Bind b) x t) (\lambda (t0: T).(arity g c t0 a2)) 
23082 (arity_bind g b H0 c x a1 (H2 d1 u0 i H5 c x (fsubst0_snd i u0 c u x H13)) t 
23083 a2 (H4 d1 u0 (S i) (getl_clear_bind b (CHead c (Bind b) u) c u (clear_bind b 
23084 c u) (CHead d1 (Bind Abbr) u0) i H5) (CHead c (Bind b) x) t (fsubst0_fst (S 
23085 i) u0 (CHead c (Bind b) u) t (CHead c (Bind b) x) (csubst0_snd_bind b i u0 u 
23086 x H13 c)))) t2 H12)))) H11)) (\lambda (H11: (ex2 T (\lambda (t3: T).(eq T t2 
23087 (THead (Bind b) u t3))) (\lambda (t2: T).(subst0 (s (Bind b) i) u0 t 
23088 t2)))).(ex2_ind T (\lambda (t3: T).(eq T t2 (THead (Bind b) u t3))) (\lambda 
23089 (t3: T).(subst0 (s (Bind b) i) u0 t t3)) (arity g c t2 a2) (\lambda (x: 
23090 T).(\lambda (H12: (eq T t2 (THead (Bind b) u x))).(\lambda (H13: (subst0 (s 
23091 (Bind b) i) u0 t x)).(eq_ind_r T (THead (Bind b) u x) (\lambda (t0: T).(arity 
23092 g c t0 a2)) (arity_bind g b H0 c u a1 H1 x a2 (H4 d1 u0 (S i) 
23093 (getl_clear_bind b (CHead c (Bind b) u) c u (clear_bind b c u) (CHead d1 
23094 (Bind Abbr) u0) i H5) (CHead c (Bind b) u) x (fsubst0_snd (S i) u0 (CHead c 
23095 (Bind b) u) t x H13))) t2 H12)))) H11)) (\lambda (H11: (ex3_2 T T (\lambda 
23096 (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind b) u2 t3)))) (\lambda (u2: 
23097 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t2: 
23098 T).(subst0 (s (Bind b) i) u0 t t2))))).(ex3_2_ind T T (\lambda (u2: 
23099 T).(\lambda (t3: T).(eq T t2 (THead (Bind b) u2 t3)))) (\lambda (u2: 
23100 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t3: 
23101 T).(subst0 (s (Bind b) i) u0 t t3))) (arity g c t2 a2) (\lambda (x0: 
23102 T).(\lambda (x1: T).(\lambda (H12: (eq T t2 (THead (Bind b) x0 x1))).(\lambda 
23103 (H13: (subst0 i u0 u x0)).(\lambda (H14: (subst0 (s (Bind b) i) u0 t 
23104 x1)).(eq_ind_r T (THead (Bind b) x0 x1) (\lambda (t0: T).(arity g c t0 a2)) 
23105 (arity_bind g b H0 c x0 a1 (H2 d1 u0 i H5 c x0 (fsubst0_snd i u0 c u x0 H13)) 
23106 x1 a2 (H4 d1 u0 (S i) (getl_clear_bind b (CHead c (Bind b) u) c u (clear_bind 
23107 b c u) (CHead d1 (Bind Abbr) u0) i H5) (CHead c (Bind b) x0) x1 (fsubst0_both 
23108 (S i) u0 (CHead c (Bind b) u) t x1 H14 (CHead c (Bind b) x0) 
23109 (csubst0_snd_bind b i u0 u x0 H13 c)))) t2 H12)))))) H11)) (subst0_gen_head 
23110 (Bind b) u0 u t t2 i H10)) c2 H9))) H8)) (\lambda (H8: (land (eq T (THead 
23111 (Bind b) u t) t2) (csubst0 i u0 c c2))).(and_ind (eq T (THead (Bind b) u t) 
23112 t2) (csubst0 i u0 c c2) (arity g c2 t2 a2) (\lambda (H9: (eq T (THead (Bind 
23113 b) u t) t2)).(\lambda (H10: (csubst0 i u0 c c2)).(eq_ind T (THead (Bind b) u 
23114 t) (\lambda (t0: T).(arity g c2 t0 a2)) (arity_bind g b H0 c2 u a1 (H2 d1 u0 
23115 i H5 c2 u (fsubst0_fst i u0 c u c2 H10)) t a2 (H4 d1 u0 (S i) 
23116 (getl_clear_bind b (CHead c (Bind b) u) c u (clear_bind b c u) (CHead d1 
23117 (Bind Abbr) u0) i H5) (CHead c2 (Bind b) u) t (fsubst0_fst (S i) u0 (CHead c 
23118 (Bind b) u) t (CHead c2 (Bind b) u) (csubst0_fst_bind b i c c2 u0 H10 u)))) 
23119 t2 H9))) H8)) (\lambda (H8: (land (subst0 i u0 (THead (Bind b) u t) t2) 
23120 (csubst0 i u0 c c2))).(and_ind (subst0 i u0 (THead (Bind b) u t) t2) (csubst0 
23121 i u0 c c2) (arity g c2 t2 a2) (\lambda (H9: (subst0 i u0 (THead (Bind b) u t) 
23122 t2)).(\lambda (H10: (csubst0 i u0 c c2)).(or3_ind (ex2 T (\lambda (u2: T).(eq 
23123 T t2 (THead (Bind b) u2 t))) (\lambda (u2: T).(subst0 i u0 u u2))) (ex2 T 
23124 (\lambda (t3: T).(eq T t2 (THead (Bind b) u t3))) (\lambda (t3: T).(subst0 (s 
23125 (Bind b) i) u0 t t3))) (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 
23126 (THead (Bind b) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u 
23127 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s (Bind b) i) u0 t t3)))) 
23128 (arity g c2 t2 a2) (\lambda (H11: (ex2 T (\lambda (u2: T).(eq T t2 (THead 
23129 (Bind b) u2 t))) (\lambda (u2: T).(subst0 i u0 u u2)))).(ex2_ind T (\lambda 
23130 (u2: T).(eq T t2 (THead (Bind b) u2 t))) (\lambda (u2: T).(subst0 i u0 u u2)) 
23131 (arity g c2 t2 a2) (\lambda (x: T).(\lambda (H12: (eq T t2 (THead (Bind b) x 
23132 t))).(\lambda (H13: (subst0 i u0 u x)).(eq_ind_r T (THead (Bind b) x t) 
23133 (\lambda (t0: T).(arity g c2 t0 a2)) (arity_bind g b H0 c2 x a1 (H2 d1 u0 i 
23134 H5 c2 x (fsubst0_both i u0 c u x H13 c2 H10)) t a2 (H4 d1 u0 (S i) 
23135 (getl_clear_bind b (CHead c (Bind b) u) c u (clear_bind b c u) (CHead d1 
23136 (Bind Abbr) u0) i H5) (CHead c2 (Bind b) x) t (fsubst0_fst (S i) u0 (CHead c 
23137 (Bind b) u) t (CHead c2 (Bind b) x) (csubst0_both_bind b i u0 u x H13 c c2 
23138 H10)))) t2 H12)))) H11)) (\lambda (H11: (ex2 T (\lambda (t3: T).(eq T t2 
23139 (THead (Bind b) u t3))) (\lambda (t2: T).(subst0 (s (Bind b) i) u0 t 
23140 t2)))).(ex2_ind T (\lambda (t3: T).(eq T t2 (THead (Bind b) u t3))) (\lambda 
23141 (t3: T).(subst0 (s (Bind b) i) u0 t t3)) (arity g c2 t2 a2) (\lambda (x: 
23142 T).(\lambda (H12: (eq T t2 (THead (Bind b) u x))).(\lambda (H13: (subst0 (s 
23143 (Bind b) i) u0 t x)).(eq_ind_r T (THead (Bind b) u x) (\lambda (t0: T).(arity 
23144 g c2 t0 a2)) (arity_bind g b H0 c2 u a1 (H2 d1 u0 i H5 c2 u (fsubst0_fst i u0 
23145 c u c2 H10)) x a2 (H4 d1 u0 (S i) (getl_clear_bind b (CHead c (Bind b) u) c u 
23146 (clear_bind b c u) (CHead d1 (Bind Abbr) u0) i H5) (CHead c2 (Bind b) u) x 
23147 (fsubst0_both (S i) u0 (CHead c (Bind b) u) t x H13 (CHead c2 (Bind b) u) 
23148 (csubst0_fst_bind b i c c2 u0 H10 u)))) t2 H12)))) H11)) (\lambda (H11: 
23149 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind b) u2 
23150 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: 
23151 T).(\lambda (t2: T).(subst0 (s (Bind b) i) u0 t t2))))).(ex3_2_ind T T 
23152 (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind b) u2 t3)))) (\lambda 
23153 (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t3: 
23154 T).(subst0 (s (Bind b) i) u0 t t3))) (arity g c2 t2 a2) (\lambda (x0: 
23155 T).(\lambda (x1: T).(\lambda (H12: (eq T t2 (THead (Bind b) x0 x1))).(\lambda 
23156 (H13: (subst0 i u0 u x0)).(\lambda (H14: (subst0 (s (Bind b) i) u0 t 
23157 x1)).(eq_ind_r T (THead (Bind b) x0 x1) (\lambda (t0: T).(arity g c2 t0 a2)) 
23158 (arity_bind g b H0 c2 x0 a1 (H2 d1 u0 i H5 c2 x0 (fsubst0_both i u0 c u x0 
23159 H13 c2 H10)) x1 a2 (H4 d1 u0 (S i) (getl_clear_bind b (CHead c (Bind b) u) c 
23160 u (clear_bind b c u) (CHead d1 (Bind Abbr) u0) i H5) (CHead c2 (Bind b) x0) 
23161 x1 (fsubst0_both (S i) u0 (CHead c (Bind b) u) t x1 H14 (CHead c2 (Bind b) 
23162 x0) (csubst0_both_bind b i u0 u x0 H13 c c2 H10)))) t2 H12)))))) H11)) 
23163 (subst0_gen_head (Bind b) u0 u t t2 i H9)))) H8)) H7)))))))))))))))))))) 
23164 (\lambda (c: C).(\lambda (u: T).(\lambda (a1: A).(\lambda (H0: (arity g c u 
23165 (asucc g a1))).(\lambda (H1: ((\forall (d1: C).(\forall (u0: T).(\forall (i: 
23166 nat).((getl i c (CHead d1 (Bind Abbr) u0)) \to (\forall (c2: C).(\forall (t2: 
23167 T).((fsubst0 i u0 c u c2 t2) \to (arity g c2 t2 (asucc g 
23168 a1))))))))))).(\lambda (t: T).(\lambda (a2: A).(\lambda (_: (arity g (CHead c 
23169 (Bind Abst) u) t a2)).(\lambda (H3: ((\forall (d1: C).(\forall (u0: 
23170 T).(\forall (i: nat).((getl i (CHead c (Bind Abst) u) (CHead d1 (Bind Abbr) 
23171 u0)) \to (\forall (c2: C).(\forall (t2: T).((fsubst0 i u0 (CHead c (Bind 
23172 Abst) u) t c2 t2) \to (arity g c2 t2 a2)))))))))).(\lambda (d1: C).(\lambda 
23173 (u0: T).(\lambda (i: nat).(\lambda (H4: (getl i c (CHead d1 (Bind Abbr) 
23174 u0))).(\lambda (c2: C).(\lambda (t2: T).(\lambda (H5: (fsubst0 i u0 c (THead 
23175 (Bind Abst) u t) c2 t2)).(let H6 \def (fsubst0_gen_base c c2 (THead (Bind 
23176 Abst) u t) t2 u0 i H5) in (or3_ind (land (eq C c c2) (subst0 i u0 (THead 
23177 (Bind Abst) u t) t2)) (land (eq T (THead (Bind Abst) u t) t2) (csubst0 i u0 c 
23178 c2)) (land (subst0 i u0 (THead (Bind Abst) u t) t2) (csubst0 i u0 c c2)) 
23179 (arity g c2 t2 (AHead a1 a2)) (\lambda (H7: (land (eq C c c2) (subst0 i u0 
23180 (THead (Bind Abst) u t) t2))).(and_ind (eq C c c2) (subst0 i u0 (THead (Bind 
23181 Abst) u t) t2) (arity g c2 t2 (AHead a1 a2)) (\lambda (H8: (eq C c 
23182 c2)).(\lambda (H9: (subst0 i u0 (THead (Bind Abst) u t) t2)).(eq_ind C c 
23183 (\lambda (c0: C).(arity g c0 t2 (AHead a1 a2))) (or3_ind (ex2 T (\lambda (u2: 
23184 T).(eq T t2 (THead (Bind Abst) u2 t))) (\lambda (u2: T).(subst0 i u0 u u2))) 
23185 (ex2 T (\lambda (t3: T).(eq T t2 (THead (Bind Abst) u t3))) (\lambda (t3: 
23186 T).(subst0 (s (Bind Abst) i) u0 t t3))) (ex3_2 T T (\lambda (u2: T).(\lambda 
23187 (t3: T).(eq T t2 (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
23188 T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s (Bind 
23189 Abst) i) u0 t t3)))) (arity g c t2 (AHead a1 a2)) (\lambda (H10: (ex2 T 
23190 (\lambda (u2: T).(eq T t2 (THead (Bind Abst) u2 t))) (\lambda (u2: T).(subst0 
23191 i u0 u u2)))).(ex2_ind T (\lambda (u2: T).(eq T t2 (THead (Bind Abst) u2 t))) 
23192 (\lambda (u2: T).(subst0 i u0 u u2)) (arity g c t2 (AHead a1 a2)) (\lambda 
23193 (x: T).(\lambda (H11: (eq T t2 (THead (Bind Abst) x t))).(\lambda (H12: 
23194 (subst0 i u0 u x)).(eq_ind_r T (THead (Bind Abst) x t) (\lambda (t0: 
23195 T).(arity g c t0 (AHead a1 a2))) (arity_head g c x a1 (H1 d1 u0 i H4 c x 
23196 (fsubst0_snd i u0 c u x H12)) t a2 (H3 d1 u0 (S i) (getl_clear_bind Abst 
23197 (CHead c (Bind Abst) u) c u (clear_bind Abst c u) (CHead d1 (Bind Abbr) u0) i 
23198 H4) (CHead c (Bind Abst) x) t (fsubst0_fst (S i) u0 (CHead c (Bind Abst) u) t 
23199 (CHead c (Bind Abst) x) (csubst0_snd_bind Abst i u0 u x H12 c)))) t2 H11)))) 
23200 H10)) (\lambda (H10: (ex2 T (\lambda (t3: T).(eq T t2 (THead (Bind Abst) u 
23201 t3))) (\lambda (t2: T).(subst0 (s (Bind Abst) i) u0 t t2)))).(ex2_ind T 
23202 (\lambda (t3: T).(eq T t2 (THead (Bind Abst) u t3))) (\lambda (t3: T).(subst0 
23203 (s (Bind Abst) i) u0 t t3)) (arity g c t2 (AHead a1 a2)) (\lambda (x: 
23204 T).(\lambda (H11: (eq T t2 (THead (Bind Abst) u x))).(\lambda (H12: (subst0 
23205 (s (Bind Abst) i) u0 t x)).(eq_ind_r T (THead (Bind Abst) u x) (\lambda (t0: 
23206 T).(arity g c t0 (AHead a1 a2))) (arity_head g c u a1 H0 x a2 (H3 d1 u0 (S i) 
23207 (getl_clear_bind Abst (CHead c (Bind Abst) u) c u (clear_bind Abst c u) 
23208 (CHead d1 (Bind Abbr) u0) i H4) (CHead c (Bind Abst) u) x (fsubst0_snd (S i) 
23209 u0 (CHead c (Bind Abst) u) t x H12))) t2 H11)))) H10)) (\lambda (H10: (ex3_2 
23210 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Abst) u2 t3)))) 
23211 (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: 
23212 T).(\lambda (t2: T).(subst0 (s (Bind Abst) i) u0 t t2))))).(ex3_2_ind T T 
23213 (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Abst) u2 t3)))) 
23214 (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: 
23215 T).(\lambda (t3: T).(subst0 (s (Bind Abst) i) u0 t t3))) (arity g c t2 (AHead 
23216 a1 a2)) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H11: (eq T t2 (THead 
23217 (Bind Abst) x0 x1))).(\lambda (H12: (subst0 i u0 u x0)).(\lambda (H13: 
23218 (subst0 (s (Bind Abst) i) u0 t x1)).(eq_ind_r T (THead (Bind Abst) x0 x1) 
23219 (\lambda (t0: T).(arity g c t0 (AHead a1 a2))) (arity_head g c x0 a1 (H1 d1 
23220 u0 i H4 c x0 (fsubst0_snd i u0 c u x0 H12)) x1 a2 (H3 d1 u0 (S i) 
23221 (getl_clear_bind Abst (CHead c (Bind Abst) u) c u (clear_bind Abst c u) 
23222 (CHead d1 (Bind Abbr) u0) i H4) (CHead c (Bind Abst) x0) x1 (fsubst0_both (S 
23223 i) u0 (CHead c (Bind Abst) u) t x1 H13 (CHead c (Bind Abst) x0) 
23224 (csubst0_snd_bind Abst i u0 u x0 H12 c)))) t2 H11)))))) H10)) 
23225 (subst0_gen_head (Bind Abst) u0 u t t2 i H9)) c2 H8))) H7)) (\lambda (H7: 
23226 (land (eq T (THead (Bind Abst) u t) t2) (csubst0 i u0 c c2))).(and_ind (eq T 
23227 (THead (Bind Abst) u t) t2) (csubst0 i u0 c c2) (arity g c2 t2 (AHead a1 a2)) 
23228 (\lambda (H8: (eq T (THead (Bind Abst) u t) t2)).(\lambda (H9: (csubst0 i u0 
23229 c c2)).(eq_ind T (THead (Bind Abst) u t) (\lambda (t0: T).(arity g c2 t0 
23230 (AHead a1 a2))) (arity_head g c2 u a1 (H1 d1 u0 i H4 c2 u (fsubst0_fst i u0 c 
23231 u c2 H9)) t a2 (H3 d1 u0 (S i) (getl_clear_bind Abst (CHead c (Bind Abst) u) 
23232 c u (clear_bind Abst c u) (CHead d1 (Bind Abbr) u0) i H4) (CHead c2 (Bind 
23233 Abst) u) t (fsubst0_fst (S i) u0 (CHead c (Bind Abst) u) t (CHead c2 (Bind 
23234 Abst) u) (csubst0_fst_bind Abst i c c2 u0 H9 u)))) t2 H8))) H7)) (\lambda 
23235 (H7: (land (subst0 i u0 (THead (Bind Abst) u t) t2) (csubst0 i u0 c 
23236 c2))).(and_ind (subst0 i u0 (THead (Bind Abst) u t) t2) (csubst0 i u0 c c2) 
23237 (arity g c2 t2 (AHead a1 a2)) (\lambda (H8: (subst0 i u0 (THead (Bind Abst) u 
23238 t) t2)).(\lambda (H9: (csubst0 i u0 c c2)).(or3_ind (ex2 T (\lambda (u2: 
23239 T).(eq T t2 (THead (Bind Abst) u2 t))) (\lambda (u2: T).(subst0 i u0 u u2))) 
23240 (ex2 T (\lambda (t3: T).(eq T t2 (THead (Bind Abst) u t3))) (\lambda (t3: 
23241 T).(subst0 (s (Bind Abst) i) u0 t t3))) (ex3_2 T T (\lambda (u2: T).(\lambda 
23242 (t3: T).(eq T t2 (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
23243 T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s (Bind 
23244 Abst) i) u0 t t3)))) (arity g c2 t2 (AHead a1 a2)) (\lambda (H10: (ex2 T 
23245 (\lambda (u2: T).(eq T t2 (THead (Bind Abst) u2 t))) (\lambda (u2: T).(subst0 
23246 i u0 u u2)))).(ex2_ind T (\lambda (u2: T).(eq T t2 (THead (Bind Abst) u2 t))) 
23247 (\lambda (u2: T).(subst0 i u0 u u2)) (arity g c2 t2 (AHead a1 a2)) (\lambda 
23248 (x: T).(\lambda (H11: (eq T t2 (THead (Bind Abst) x t))).(\lambda (H12: 
23249 (subst0 i u0 u x)).(eq_ind_r T (THead (Bind Abst) x t) (\lambda (t0: 
23250 T).(arity g c2 t0 (AHead a1 a2))) (arity_head g c2 x a1 (H1 d1 u0 i H4 c2 x 
23251 (fsubst0_both i u0 c u x H12 c2 H9)) t a2 (H3 d1 u0 (S i) (getl_clear_bind 
23252 Abst (CHead c (Bind Abst) u) c u (clear_bind Abst c u) (CHead d1 (Bind Abbr) 
23253 u0) i H4) (CHead c2 (Bind Abst) x) t (fsubst0_fst (S i) u0 (CHead c (Bind 
23254 Abst) u) t (CHead c2 (Bind Abst) x) (csubst0_both_bind Abst i u0 u x H12 c c2 
23255 H9)))) t2 H11)))) H10)) (\lambda (H10: (ex2 T (\lambda (t3: T).(eq T t2 
23256 (THead (Bind Abst) u t3))) (\lambda (t2: T).(subst0 (s (Bind Abst) i) u0 t 
23257 t2)))).(ex2_ind T (\lambda (t3: T).(eq T t2 (THead (Bind Abst) u t3))) 
23258 (\lambda (t3: T).(subst0 (s (Bind Abst) i) u0 t t3)) (arity g c2 t2 (AHead a1 
23259 a2)) (\lambda (x: T).(\lambda (H11: (eq T t2 (THead (Bind Abst) u 
23260 x))).(\lambda (H12: (subst0 (s (Bind Abst) i) u0 t x)).(eq_ind_r T (THead 
23261 (Bind Abst) u x) (\lambda (t0: T).(arity g c2 t0 (AHead a1 a2))) (arity_head 
23262 g c2 u a1 (H1 d1 u0 i H4 c2 u (fsubst0_fst i u0 c u c2 H9)) x a2 (H3 d1 u0 (S 
23263 i) (getl_clear_bind Abst (CHead c (Bind Abst) u) c u (clear_bind Abst c u) 
23264 (CHead d1 (Bind Abbr) u0) i H4) (CHead c2 (Bind Abst) u) x (fsubst0_both (S 
23265 i) u0 (CHead c (Bind Abst) u) t x H12 (CHead c2 (Bind Abst) u) 
23266 (csubst0_fst_bind Abst i c c2 u0 H9 u)))) t2 H11)))) H10)) (\lambda (H10: 
23267 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Abst) u2 
23268 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: 
23269 T).(\lambda (t2: T).(subst0 (s (Bind Abst) i) u0 t t2))))).(ex3_2_ind T T 
23270 (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Abst) u2 t3)))) 
23271 (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: 
23272 T).(\lambda (t3: T).(subst0 (s (Bind Abst) i) u0 t t3))) (arity g c2 t2 
23273 (AHead a1 a2)) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H11: (eq T t2 
23274 (THead (Bind Abst) x0 x1))).(\lambda (H12: (subst0 i u0 u x0)).(\lambda (H13: 
23275 (subst0 (s (Bind Abst) i) u0 t x1)).(eq_ind_r T (THead (Bind Abst) x0 x1) 
23276 (\lambda (t0: T).(arity g c2 t0 (AHead a1 a2))) (arity_head g c2 x0 a1 (H1 d1 
23277 u0 i H4 c2 x0 (fsubst0_both i u0 c u x0 H12 c2 H9)) x1 a2 (H3 d1 u0 (S i) 
23278 (getl_clear_bind Abst (CHead c (Bind Abst) u) c u (clear_bind Abst c u) 
23279 (CHead d1 (Bind Abbr) u0) i H4) (CHead c2 (Bind Abst) x0) x1 (fsubst0_both (S 
23280 i) u0 (CHead c (Bind Abst) u) t x1 H13 (CHead c2 (Bind Abst) x0) 
23281 (csubst0_both_bind Abst i u0 u x0 H12 c c2 H9)))) t2 H11)))))) H10)) 
23282 (subst0_gen_head (Bind Abst) u0 u t t2 i H8)))) H7)) H6)))))))))))))))))) 
23283 (\lambda (c: C).(\lambda (u: T).(\lambda (a1: A).(\lambda (H0: (arity g c u 
23284 a1)).(\lambda (H1: ((\forall (d1: C).(\forall (u0: T).(\forall (i: 
23285 nat).((getl i c (CHead d1 (Bind Abbr) u0)) \to (\forall (c2: C).(\forall (t2: 
23286 T).((fsubst0 i u0 c u c2 t2) \to (arity g c2 t2 a1)))))))))).(\lambda (t: 
23287 T).(\lambda (a2: A).(\lambda (H2: (arity g c t (AHead a1 a2))).(\lambda (H3: 
23288 ((\forall (d1: C).(\forall (u: T).(\forall (i: nat).((getl i c (CHead d1 
23289 (Bind Abbr) u)) \to (\forall (c2: C).(\forall (t2: T).((fsubst0 i u c t c2 
23290 t2) \to (arity g c2 t2 (AHead a1 a2))))))))))).(\lambda (d1: C).(\lambda (u0: 
23291 T).(\lambda (i: nat).(\lambda (H4: (getl i c (CHead d1 (Bind Abbr) 
23292 u0))).(\lambda (c2: C).(\lambda (t2: T).(\lambda (H5: (fsubst0 i u0 c (THead 
23293 (Flat Appl) u t) c2 t2)).(let H6 \def (fsubst0_gen_base c c2 (THead (Flat 
23294 Appl) u t) t2 u0 i H5) in (or3_ind (land (eq C c c2) (subst0 i u0 (THead 
23295 (Flat Appl) u t) t2)) (land (eq T (THead (Flat Appl) u t) t2) (csubst0 i u0 c 
23296 c2)) (land (subst0 i u0 (THead (Flat Appl) u t) t2) (csubst0 i u0 c c2)) 
23297 (arity g c2 t2 a2) (\lambda (H7: (land (eq C c c2) (subst0 i u0 (THead (Flat 
23298 Appl) u t) t2))).(and_ind (eq C c c2) (subst0 i u0 (THead (Flat Appl) u t) 
23299 t2) (arity g c2 t2 a2) (\lambda (H8: (eq C c c2)).(\lambda (H9: (subst0 i u0 
23300 (THead (Flat Appl) u t) t2)).(eq_ind C c (\lambda (c0: C).(arity g c0 t2 a2)) 
23301 (or3_ind (ex2 T (\lambda (u2: T).(eq T t2 (THead (Flat Appl) u2 t))) (\lambda 
23302 (u2: T).(subst0 i u0 u u2))) (ex2 T (\lambda (t3: T).(eq T t2 (THead (Flat 
23303 Appl) u t3))) (\lambda (t3: T).(subst0 (s (Flat Appl) i) u0 t t3))) (ex3_2 T 
23304 T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) 
23305 (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: 
23306 T).(\lambda (t3: T).(subst0 (s (Flat Appl) i) u0 t t3)))) (arity g c t2 a2) 
23307 (\lambda (H10: (ex2 T (\lambda (u2: T).(eq T t2 (THead (Flat Appl) u2 t))) 
23308 (\lambda (u2: T).(subst0 i u0 u u2)))).(ex2_ind T (\lambda (u2: T).(eq T t2 
23309 (THead (Flat Appl) u2 t))) (\lambda (u2: T).(subst0 i u0 u u2)) (arity g c t2 
23310 a2) (\lambda (x: T).(\lambda (H11: (eq T t2 (THead (Flat Appl) x 
23311 t))).(\lambda (H12: (subst0 i u0 u x)).(eq_ind_r T (THead (Flat Appl) x t) 
23312 (\lambda (t0: T).(arity g c t0 a2)) (arity_appl g c x a1 (H1 d1 u0 i H4 c x 
23313 (fsubst0_snd i u0 c u x H12)) t a2 H2) t2 H11)))) H10)) (\lambda (H10: (ex2 T 
23314 (\lambda (t3: T).(eq T t2 (THead (Flat Appl) u t3))) (\lambda (t2: T).(subst0 
23315 (s (Flat Appl) i) u0 t t2)))).(ex2_ind T (\lambda (t3: T).(eq T t2 (THead 
23316 (Flat Appl) u t3))) (\lambda (t3: T).(subst0 (s (Flat Appl) i) u0 t t3)) 
23317 (arity g c t2 a2) (\lambda (x: T).(\lambda (H11: (eq T t2 (THead (Flat Appl) 
23318 u x))).(\lambda (H12: (subst0 (s (Flat Appl) i) u0 t x)).(eq_ind_r T (THead 
23319 (Flat Appl) u x) (\lambda (t0: T).(arity g c t0 a2)) (arity_appl g c u a1 H0 
23320 x a2 (H3 d1 u0 i H4 c x (fsubst0_snd i u0 c t x H12))) t2 H11)))) H10)) 
23321 (\lambda (H10: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead 
23322 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) 
23323 (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Flat Appl) i) u0 t 
23324 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead 
23325 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) 
23326 (\lambda (_: T).(\lambda (t3: T).(subst0 (s (Flat Appl) i) u0 t t3))) (arity 
23327 g c t2 a2) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H11: (eq T t2 (THead 
23328 (Flat Appl) x0 x1))).(\lambda (H12: (subst0 i u0 u x0)).(\lambda (H13: 
23329 (subst0 (s (Flat Appl) i) u0 t x1)).(eq_ind_r T (THead (Flat Appl) x0 x1) 
23330 (\lambda (t0: T).(arity g c t0 a2)) (arity_appl g c x0 a1 (H1 d1 u0 i H4 c x0 
23331 (fsubst0_snd i u0 c u x0 H12)) x1 a2 (H3 d1 u0 i H4 c x1 (fsubst0_snd i u0 c 
23332 t x1 H13))) t2 H11)))))) H10)) (subst0_gen_head (Flat Appl) u0 u t t2 i H9)) 
23333 c2 H8))) H7)) (\lambda (H7: (land (eq T (THead (Flat Appl) u t) t2) (csubst0 
23334 i u0 c c2))).(and_ind (eq T (THead (Flat Appl) u t) t2) (csubst0 i u0 c c2) 
23335 (arity g c2 t2 a2) (\lambda (H8: (eq T (THead (Flat Appl) u t) t2)).(\lambda 
23336 (H9: (csubst0 i u0 c c2)).(eq_ind T (THead (Flat Appl) u t) (\lambda (t0: 
23337 T).(arity g c2 t0 a2)) (arity_appl g c2 u a1 (H1 d1 u0 i H4 c2 u (fsubst0_fst 
23338 i u0 c u c2 H9)) t a2 (H3 d1 u0 i H4 c2 t (fsubst0_fst i u0 c t c2 H9))) t2 
23339 H8))) H7)) (\lambda (H7: (land (subst0 i u0 (THead (Flat Appl) u t) t2) 
23340 (csubst0 i u0 c c2))).(and_ind (subst0 i u0 (THead (Flat Appl) u t) t2) 
23341 (csubst0 i u0 c c2) (arity g c2 t2 a2) (\lambda (H8: (subst0 i u0 (THead 
23342 (Flat Appl) u t) t2)).(\lambda (H9: (csubst0 i u0 c c2)).(or3_ind (ex2 T 
23343 (\lambda (u2: T).(eq T t2 (THead (Flat Appl) u2 t))) (\lambda (u2: T).(subst0 
23344 i u0 u u2))) (ex2 T (\lambda (t3: T).(eq T t2 (THead (Flat Appl) u t3))) 
23345 (\lambda (t3: T).(subst0 (s (Flat Appl) i) u0 t t3))) (ex3_2 T T (\lambda 
23346 (u2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
23347 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t3: 
23348 T).(subst0 (s (Flat Appl) i) u0 t t3)))) (arity g c2 t2 a2) (\lambda (H10: 
23349 (ex2 T (\lambda (u2: T).(eq T t2 (THead (Flat Appl) u2 t))) (\lambda (u2: 
23350 T).(subst0 i u0 u u2)))).(ex2_ind T (\lambda (u2: T).(eq T t2 (THead (Flat 
23351 Appl) u2 t))) (\lambda (u2: T).(subst0 i u0 u u2)) (arity g c2 t2 a2) 
23352 (\lambda (x: T).(\lambda (H11: (eq T t2 (THead (Flat Appl) x t))).(\lambda 
23353 (H12: (subst0 i u0 u x)).(eq_ind_r T (THead (Flat Appl) x t) (\lambda (t0: 
23354 T).(arity g c2 t0 a2)) (arity_appl g c2 x a1 (H1 d1 u0 i H4 c2 x 
23355 (fsubst0_both i u0 c u x H12 c2 H9)) t a2 (H3 d1 u0 i H4 c2 t (fsubst0_fst i 
23356 u0 c t c2 H9))) t2 H11)))) H10)) (\lambda (H10: (ex2 T (\lambda (t3: T).(eq T 
23357 t2 (THead (Flat Appl) u t3))) (\lambda (t2: T).(subst0 (s (Flat Appl) i) u0 t 
23358 t2)))).(ex2_ind T (\lambda (t3: T).(eq T t2 (THead (Flat Appl) u t3))) 
23359 (\lambda (t3: T).(subst0 (s (Flat Appl) i) u0 t t3)) (arity g c2 t2 a2) 
23360 (\lambda (x: T).(\lambda (H11: (eq T t2 (THead (Flat Appl) u x))).(\lambda 
23361 (H12: (subst0 (s (Flat Appl) i) u0 t x)).(eq_ind_r T (THead (Flat Appl) u x) 
23362 (\lambda (t0: T).(arity g c2 t0 a2)) (arity_appl g c2 u a1 (H1 d1 u0 i H4 c2 
23363 u (fsubst0_fst i u0 c u c2 H9)) x a2 (H3 d1 u0 i H4 c2 x (fsubst0_both i u0 c 
23364 t x H12 c2 H9))) t2 H11)))) H10)) (\lambda (H10: (ex3_2 T T (\lambda (u2: 
23365 T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
23366 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t2: 
23367 T).(subst0 (s (Flat Appl) i) u0 t t2))))).(ex3_2_ind T T (\lambda (u2: 
23368 T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
23369 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t3: 
23370 T).(subst0 (s (Flat Appl) i) u0 t t3))) (arity g c2 t2 a2) (\lambda (x0: 
23371 T).(\lambda (x1: T).(\lambda (H11: (eq T t2 (THead (Flat Appl) x0 
23372 x1))).(\lambda (H12: (subst0 i u0 u x0)).(\lambda (H13: (subst0 (s (Flat 
23373 Appl) i) u0 t x1)).(eq_ind_r T (THead (Flat Appl) x0 x1) (\lambda (t0: 
23374 T).(arity g c2 t0 a2)) (arity_appl g c2 x0 a1 (H1 d1 u0 i H4 c2 x0 
23375 (fsubst0_both i u0 c u x0 H12 c2 H9)) x1 a2 (H3 d1 u0 i H4 c2 x1 
23376 (fsubst0_both i u0 c t x1 H13 c2 H9))) t2 H11)))))) H10)) (subst0_gen_head 
23377 (Flat Appl) u0 u t t2 i H8)))) H7)) H6)))))))))))))))))) (\lambda (c: 
23378 C).(\lambda (u: T).(\lambda (a0: A).(\lambda (H0: (arity g c u (asucc g 
23379 a0))).(\lambda (H1: ((\forall (d1: C).(\forall (u0: T).(\forall (i: 
23380 nat).((getl i c (CHead d1 (Bind Abbr) u0)) \to (\forall (c2: C).(\forall (t2: 
23381 T).((fsubst0 i u0 c u c2 t2) \to (arity g c2 t2 (asucc g 
23382 a0))))))))))).(\lambda (t: T).(\lambda (H2: (arity g c t a0)).(\lambda (H3: 
23383 ((\forall (d1: C).(\forall (u: T).(\forall (i: nat).((getl i c (CHead d1 
23384 (Bind Abbr) u)) \to (\forall (c2: C).(\forall (t2: T).((fsubst0 i u c t c2 
23385 t2) \to (arity g c2 t2 a0)))))))))).(\lambda (d1: C).(\lambda (u0: 
23386 T).(\lambda (i: nat).(\lambda (H4: (getl i c (CHead d1 (Bind Abbr) 
23387 u0))).(\lambda (c2: C).(\lambda (t2: T).(\lambda (H5: (fsubst0 i u0 c (THead 
23388 (Flat Cast) u t) c2 t2)).(let H6 \def (fsubst0_gen_base c c2 (THead (Flat 
23389 Cast) u t) t2 u0 i H5) in (or3_ind (land (eq C c c2) (subst0 i u0 (THead 
23390 (Flat Cast) u t) t2)) (land (eq T (THead (Flat Cast) u t) t2) (csubst0 i u0 c 
23391 c2)) (land (subst0 i u0 (THead (Flat Cast) u t) t2) (csubst0 i u0 c c2)) 
23392 (arity g c2 t2 a0) (\lambda (H7: (land (eq C c c2) (subst0 i u0 (THead (Flat 
23393 Cast) u t) t2))).(and_ind (eq C c c2) (subst0 i u0 (THead (Flat Cast) u t) 
23394 t2) (arity g c2 t2 a0) (\lambda (H8: (eq C c c2)).(\lambda (H9: (subst0 i u0 
23395 (THead (Flat Cast) u t) t2)).(eq_ind C c (\lambda (c0: C).(arity g c0 t2 a0)) 
23396 (or3_ind (ex2 T (\lambda (u2: T).(eq T t2 (THead (Flat Cast) u2 t))) (\lambda 
23397 (u2: T).(subst0 i u0 u u2))) (ex2 T (\lambda (t3: T).(eq T t2 (THead (Flat 
23398 Cast) u t3))) (\lambda (t3: T).(subst0 (s (Flat Cast) i) u0 t t3))) (ex3_2 T 
23399 T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) u2 t3)))) 
23400 (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: 
23401 T).(\lambda (t3: T).(subst0 (s (Flat Cast) i) u0 t t3)))) (arity g c t2 a0) 
23402 (\lambda (H10: (ex2 T (\lambda (u2: T).(eq T t2 (THead (Flat Cast) u2 t))) 
23403 (\lambda (u2: T).(subst0 i u0 u u2)))).(ex2_ind T (\lambda (u2: T).(eq T t2 
23404 (THead (Flat Cast) u2 t))) (\lambda (u2: T).(subst0 i u0 u u2)) (arity g c t2 
23405 a0) (\lambda (x: T).(\lambda (H11: (eq T t2 (THead (Flat Cast) x 
23406 t))).(\lambda (H12: (subst0 i u0 u x)).(eq_ind_r T (THead (Flat Cast) x t) 
23407 (\lambda (t0: T).(arity g c t0 a0)) (arity_cast g c x a0 (H1 d1 u0 i H4 c x 
23408 (fsubst0_snd i u0 c u x H12)) t H2) t2 H11)))) H10)) (\lambda (H10: (ex2 T 
23409 (\lambda (t3: T).(eq T t2 (THead (Flat Cast) u t3))) (\lambda (t2: T).(subst0 
23410 (s (Flat Cast) i) u0 t t2)))).(ex2_ind T (\lambda (t3: T).(eq T t2 (THead 
23411 (Flat Cast) u t3))) (\lambda (t3: T).(subst0 (s (Flat Cast) i) u0 t t3)) 
23412 (arity g c t2 a0) (\lambda (x: T).(\lambda (H11: (eq T t2 (THead (Flat Cast) 
23413 u x))).(\lambda (H12: (subst0 (s (Flat Cast) i) u0 t x)).(eq_ind_r T (THead 
23414 (Flat Cast) u x) (\lambda (t0: T).(arity g c t0 a0)) (arity_cast g c u a0 H0 
23415 x (H3 d1 u0 i H4 c x (fsubst0_snd i u0 c t x H12))) t2 H11)))) H10)) (\lambda 
23416 (H10: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Flat 
23417 Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) 
23418 (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Flat Cast) i) u0 t 
23419 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead 
23420 (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) 
23421 (\lambda (_: T).(\lambda (t3: T).(subst0 (s (Flat Cast) i) u0 t t3))) (arity 
23422 g c t2 a0) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H11: (eq T t2 (THead 
23423 (Flat Cast) x0 x1))).(\lambda (H12: (subst0 i u0 u x0)).(\lambda (H13: 
23424 (subst0 (s (Flat Cast) i) u0 t x1)).(eq_ind_r T (THead (Flat Cast) x0 x1) 
23425 (\lambda (t0: T).(arity g c t0 a0)) (arity_cast g c x0 a0 (H1 d1 u0 i H4 c x0 
23426 (fsubst0_snd i u0 c u x0 H12)) x1 (H3 d1 u0 i H4 c x1 (fsubst0_snd i u0 c t 
23427 x1 H13))) t2 H11)))))) H10)) (subst0_gen_head (Flat Cast) u0 u t t2 i H9)) c2 
23428 H8))) H7)) (\lambda (H7: (land (eq T (THead (Flat Cast) u t) t2) (csubst0 i 
23429 u0 c c2))).(and_ind (eq T (THead (Flat Cast) u t) t2) (csubst0 i u0 c c2) 
23430 (arity g c2 t2 a0) (\lambda (H8: (eq T (THead (Flat Cast) u t) t2)).(\lambda 
23431 (H9: (csubst0 i u0 c c2)).(eq_ind T (THead (Flat Cast) u t) (\lambda (t0: 
23432 T).(arity g c2 t0 a0)) (arity_cast g c2 u a0 (H1 d1 u0 i H4 c2 u (fsubst0_fst 
23433 i u0 c u c2 H9)) t (H3 d1 u0 i H4 c2 t (fsubst0_fst i u0 c t c2 H9))) t2 
23434 H8))) H7)) (\lambda (H7: (land (subst0 i u0 (THead (Flat Cast) u t) t2) 
23435 (csubst0 i u0 c c2))).(and_ind (subst0 i u0 (THead (Flat Cast) u t) t2) 
23436 (csubst0 i u0 c c2) (arity g c2 t2 a0) (\lambda (H8: (subst0 i u0 (THead 
23437 (Flat Cast) u t) t2)).(\lambda (H9: (csubst0 i u0 c c2)).(or3_ind (ex2 T 
23438 (\lambda (u2: T).(eq T t2 (THead (Flat Cast) u2 t))) (\lambda (u2: T).(subst0 
23439 i u0 u u2))) (ex2 T (\lambda (t3: T).(eq T t2 (THead (Flat Cast) u t3))) 
23440 (\lambda (t3: T).(subst0 (s (Flat Cast) i) u0 t t3))) (ex3_2 T T (\lambda 
23441 (u2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) u2 t3)))) (\lambda (u2: 
23442 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t3: 
23443 T).(subst0 (s (Flat Cast) i) u0 t t3)))) (arity g c2 t2 a0) (\lambda (H10: 
23444 (ex2 T (\lambda (u2: T).(eq T t2 (THead (Flat Cast) u2 t))) (\lambda (u2: 
23445 T).(subst0 i u0 u u2)))).(ex2_ind T (\lambda (u2: T).(eq T t2 (THead (Flat 
23446 Cast) u2 t))) (\lambda (u2: T).(subst0 i u0 u u2)) (arity g c2 t2 a0) 
23447 (\lambda (x: T).(\lambda (H11: (eq T t2 (THead (Flat Cast) x t))).(\lambda 
23448 (H12: (subst0 i u0 u x)).(eq_ind_r T (THead (Flat Cast) x t) (\lambda (t0: 
23449 T).(arity g c2 t0 a0)) (arity_cast g c2 x a0 (H1 d1 u0 i H4 c2 x 
23450 (fsubst0_both i u0 c u x H12 c2 H9)) t (H3 d1 u0 i H4 c2 t (fsubst0_fst i u0 
23451 c t c2 H9))) t2 H11)))) H10)) (\lambda (H10: (ex2 T (\lambda (t3: T).(eq T t2 
23452 (THead (Flat Cast) u t3))) (\lambda (t2: T).(subst0 (s (Flat Cast) i) u0 t 
23453 t2)))).(ex2_ind T (\lambda (t3: T).(eq T t2 (THead (Flat Cast) u t3))) 
23454 (\lambda (t3: T).(subst0 (s (Flat Cast) i) u0 t t3)) (arity g c2 t2 a0) 
23455 (\lambda (x: T).(\lambda (H11: (eq T t2 (THead (Flat Cast) u x))).(\lambda 
23456 (H12: (subst0 (s (Flat Cast) i) u0 t x)).(eq_ind_r T (THead (Flat Cast) u x) 
23457 (\lambda (t0: T).(arity g c2 t0 a0)) (arity_cast g c2 u a0 (H1 d1 u0 i H4 c2 
23458 u (fsubst0_fst i u0 c u c2 H9)) x (H3 d1 u0 i H4 c2 x (fsubst0_both i u0 c t 
23459 x H12 c2 H9))) t2 H11)))) H10)) (\lambda (H10: (ex3_2 T T (\lambda (u2: 
23460 T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) u2 t3)))) (\lambda (u2: 
23461 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t2: 
23462 T).(subst0 (s (Flat Cast) i) u0 t t2))))).(ex3_2_ind T T (\lambda (u2: 
23463 T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) u2 t3)))) (\lambda (u2: 
23464 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t3: 
23465 T).(subst0 (s (Flat Cast) i) u0 t t3))) (arity g c2 t2 a0) (\lambda (x0: 
23466 T).(\lambda (x1: T).(\lambda (H11: (eq T t2 (THead (Flat Cast) x0 
23467 x1))).(\lambda (H12: (subst0 i u0 u x0)).(\lambda (H13: (subst0 (s (Flat 
23468 Cast) i) u0 t x1)).(eq_ind_r T (THead (Flat Cast) x0 x1) (\lambda (t0: 
23469 T).(arity g c2 t0 a0)) (arity_cast g c2 x0 a0 (H1 d1 u0 i H4 c2 x0 
23470 (fsubst0_both i u0 c u x0 H12 c2 H9)) x1 (H3 d1 u0 i H4 c2 x1 (fsubst0_both i 
23471 u0 c t x1 H13 c2 H9))) t2 H11)))))) H10)) (subst0_gen_head (Flat Cast) u0 u t 
23472 t2 i H8)))) H7)) H6))))))))))))))))) (\lambda (c: C).(\lambda (t: T).(\lambda 
23473 (a1: A).(\lambda (_: (arity g c t a1)).(\lambda (H1: ((\forall (d1: 
23474 C).(\forall (u: T).(\forall (i: nat).((getl i c (CHead d1 (Bind Abbr) u)) \to 
23475 (\forall (c2: C).(\forall (t2: T).((fsubst0 i u c t c2 t2) \to (arity g c2 t2 
23476 a1)))))))))).(\lambda (a2: A).(\lambda (H2: (leq g a1 a2)).(\lambda (d1: 
23477 C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H3: (getl i c (CHead d1 (Bind 
23478 Abbr) u))).(\lambda (c2: C).(\lambda (t2: T).(\lambda (H4: (fsubst0 i u c t 
23479 c2 t2)).(let H5 \def (fsubst0_gen_base c c2 t t2 u i H4) in (or3_ind (land 
23480 (eq C c c2) (subst0 i u t t2)) (land (eq T t t2) (csubst0 i u c c2)) (land 
23481 (subst0 i u t t2) (csubst0 i u c c2)) (arity g c2 t2 a2) (\lambda (H6: (land 
23482 (eq C c c2) (subst0 i u t t2))).(and_ind (eq C c c2) (subst0 i u t t2) (arity 
23483 g c2 t2 a2) (\lambda (H7: (eq C c c2)).(\lambda (H8: (subst0 i u t 
23484 t2)).(eq_ind C c (\lambda (c0: C).(arity g c0 t2 a2)) (arity_repl g c t2 a1 
23485 (H1 d1 u i H3 c t2 (fsubst0_snd i u c t t2 H8)) a2 H2) c2 H7))) H6)) (\lambda 
23486 (H6: (land (eq T t t2) (csubst0 i u c c2))).(and_ind (eq T t t2) (csubst0 i u 
23487 c c2) (arity g c2 t2 a2) (\lambda (H7: (eq T t t2)).(\lambda (H8: (csubst0 i 
23488 u c c2)).(eq_ind T t (\lambda (t0: T).(arity g c2 t0 a2)) (arity_repl g c2 t 
23489 a1 (H1 d1 u i H3 c2 t (fsubst0_fst i u c t c2 H8)) a2 H2) t2 H7))) H6)) 
23490 (\lambda (H6: (land (subst0 i u t t2) (csubst0 i u c c2))).(and_ind (subst0 i 
23491 u t t2) (csubst0 i u c c2) (arity g c2 t2 a2) (\lambda (H7: (subst0 i u t 
23492 t2)).(\lambda (H8: (csubst0 i u c c2)).(arity_repl g c2 t2 a1 (H1 d1 u i H3 
23493 c2 t2 (fsubst0_both i u c t t2 H7 c2 H8)) a2 H2))) H6)) H5)))))))))))))))) c1 
23494 t1 a H))))).
23495
23496 theorem arity_subst0:
23497  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (a: A).((arity g c 
23498 t1 a) \to (\forall (d: C).(\forall (u: T).(\forall (i: nat).((getl i c (CHead 
23499 d (Bind Abbr) u)) \to (\forall (t2: T).((subst0 i u t1 t2) \to (arity g c t2 
23500 a)))))))))))
23501 \def
23502  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (a: A).(\lambda (H: 
23503 (arity g c t1 a)).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
23504 (H0: (getl i c (CHead d (Bind Abbr) u))).(\lambda (t2: T).(\lambda (H1: 
23505 (subst0 i u t1 t2)).(arity_fsubst0 g c t1 a H d u i H0 c t2 (fsubst0_snd i u 
23506 c t1 t2 H1)))))))))))).
23507
23508 inductive pr0: T \to (T \to Prop) \def
23509 | pr0_refl: \forall (t: T).(pr0 t t)
23510 | pr0_comp: \forall (u1: T).(\forall (u2: T).((pr0 u1 u2) \to (\forall (t1: 
23511 T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (k: K).(pr0 (THead k u1 t1) 
23512 (THead k u2 t2))))))))
23513 | pr0_beta: \forall (u: T).(\forall (v1: T).(\forall (v2: T).((pr0 v1 v2) \to 
23514 (\forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (pr0 (THead (Flat Appl) v1 
23515 (THead (Bind Abst) u t1)) (THead (Bind Abbr) v2 t2))))))))
23516 | pr0_upsilon: \forall (b: B).((not (eq B b Abst)) \to (\forall (v1: 
23517 T).(\forall (v2: T).((pr0 v1 v2) \to (\forall (u1: T).(\forall (u2: T).((pr0 
23518 u1 u2) \to (\forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (pr0 (THead 
23519 (Flat Appl) v1 (THead (Bind b) u1 t1)) (THead (Bind b) u2 (THead (Flat Appl) 
23520 (lift (S O) O v2) t2)))))))))))))
23521 | pr0_delta: \forall (u1: T).(\forall (u2: T).((pr0 u1 u2) \to (\forall (t1: 
23522 T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (w: T).((subst0 O u2 t2 w) \to 
23523 (pr0 (THead (Bind Abbr) u1 t1) (THead (Bind Abbr) u2 w)))))))))
23524 | pr0_zeta: \forall (b: B).((not (eq B b Abst)) \to (\forall (t1: T).(\forall 
23525 (t2: T).((pr0 t1 t2) \to (\forall (u: T).(pr0 (THead (Bind b) u (lift (S O) O 
23526 t1)) t2))))))
23527 | pr0_epsilon: \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (u: 
23528 T).(pr0 (THead (Flat Cast) u t1) t2)))).
23529
23530 theorem pr0_gen_sort:
23531  \forall (x: T).(\forall (n: nat).((pr0 (TSort n) x) \to (eq T x (TSort n))))
23532 \def
23533  \lambda (x: T).(\lambda (n: nat).(\lambda (H: (pr0 (TSort n) x)).(let H0 
23534 \def (match H return (\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr0 t 
23535 t0)).((eq T t (TSort n)) \to ((eq T t0 x) \to (eq T x (TSort n))))))) with 
23536 [(pr0_refl t) \Rightarrow (\lambda (H0: (eq T t (TSort n))).(\lambda (H1: (eq 
23537 T t x)).(eq_ind T (TSort n) (\lambda (t0: T).((eq T t0 x) \to (eq T x (TSort 
23538 n)))) (\lambda (H2: (eq T (TSort n) x)).(eq_ind T (TSort n) (\lambda (t0: 
23539 T).(eq T t0 (TSort n))) (refl_equal T (TSort n)) x H2)) t (sym_eq T t (TSort 
23540 n) H0) H1))) | (pr0_comp u1 u2 H0 t1 t2 H1 k) \Rightarrow (\lambda (H2: (eq T 
23541 (THead k u1 t1) (TSort n))).(\lambda (H3: (eq T (THead k u2 t2) x)).((let H4 
23542 \def (eq_ind T (THead k u1 t1) (\lambda (e: T).(match e return (\lambda (_: 
23543 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
23544 (THead _ _ _) \Rightarrow True])) I (TSort n) H2) in (False_ind ((eq T (THead 
23545 k u2 t2) x) \to ((pr0 u1 u2) \to ((pr0 t1 t2) \to (eq T x (TSort n))))) H4)) 
23546 H3 H0 H1))) | (pr0_beta u v1 v2 H0 t1 t2 H1) \Rightarrow (\lambda (H2: (eq T 
23547 (THead (Flat Appl) v1 (THead (Bind Abst) u t1)) (TSort n))).(\lambda (H3: (eq 
23548 T (THead (Bind Abbr) v2 t2) x)).((let H4 \def (eq_ind T (THead (Flat Appl) v1 
23549 (THead (Bind Abst) u t1)) (\lambda (e: T).(match e return (\lambda (_: 
23550 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
23551 (THead _ _ _) \Rightarrow True])) I (TSort n) H2) in (False_ind ((eq T (THead 
23552 (Bind Abbr) v2 t2) x) \to ((pr0 v1 v2) \to ((pr0 t1 t2) \to (eq T x (TSort 
23553 n))))) H4)) H3 H0 H1))) | (pr0_upsilon b H0 v1 v2 H1 u1 u2 H2 t1 t2 H3) 
23554 \Rightarrow (\lambda (H4: (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t1)) 
23555 (TSort n))).(\lambda (H5: (eq T (THead (Bind b) u2 (THead (Flat Appl) (lift 
23556 (S O) O v2) t2)) x)).((let H6 \def (eq_ind T (THead (Flat Appl) v1 (THead 
23557 (Bind b) u1 t1)) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
23558 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
23559 \Rightarrow True])) I (TSort n) H4) in (False_ind ((eq T (THead (Bind b) u2 
23560 (THead (Flat Appl) (lift (S O) O v2) t2)) x) \to ((not (eq B b Abst)) \to 
23561 ((pr0 v1 v2) \to ((pr0 u1 u2) \to ((pr0 t1 t2) \to (eq T x (TSort n))))))) 
23562 H6)) H5 H0 H1 H2 H3))) | (pr0_delta u1 u2 H0 t1 t2 H1 w H2) \Rightarrow 
23563 (\lambda (H3: (eq T (THead (Bind Abbr) u1 t1) (TSort n))).(\lambda (H4: (eq T 
23564 (THead (Bind Abbr) u2 w) x)).((let H5 \def (eq_ind T (THead (Bind Abbr) u1 
23565 t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
23566 \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
23567 True])) I (TSort n) H3) in (False_ind ((eq T (THead (Bind Abbr) u2 w) x) \to 
23568 ((pr0 u1 u2) \to ((pr0 t1 t2) \to ((subst0 O u2 t2 w) \to (eq T x (TSort 
23569 n)))))) H5)) H4 H0 H1 H2))) | (pr0_zeta b H0 t1 t2 H1 u) \Rightarrow (\lambda 
23570 (H2: (eq T (THead (Bind b) u (lift (S O) O t1)) (TSort n))).(\lambda (H3: (eq 
23571 T t2 x)).((let H4 \def (eq_ind T (THead (Bind b) u (lift (S O) O t1)) 
23572 (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
23573 \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
23574 True])) I (TSort n) H2) in (False_ind ((eq T t2 x) \to ((not (eq B b Abst)) 
23575 \to ((pr0 t1 t2) \to (eq T x (TSort n))))) H4)) H3 H0 H1))) | (pr0_epsilon t1 
23576 t2 H0 u) \Rightarrow (\lambda (H1: (eq T (THead (Flat Cast) u t1) (TSort 
23577 n))).(\lambda (H2: (eq T t2 x)).((let H3 \def (eq_ind T (THead (Flat Cast) u 
23578 t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
23579 \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
23580 True])) I (TSort n) H1) in (False_ind ((eq T t2 x) \to ((pr0 t1 t2) \to (eq T 
23581 x (TSort n)))) H3)) H2 H0)))]) in (H0 (refl_equal T (TSort n)) (refl_equal T 
23582 x))))).
23583
23584 theorem pr0_gen_lref:
23585  \forall (x: T).(\forall (n: nat).((pr0 (TLRef n) x) \to (eq T x (TLRef n))))
23586 \def
23587  \lambda (x: T).(\lambda (n: nat).(\lambda (H: (pr0 (TLRef n) x)).(let H0 
23588 \def (match H return (\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr0 t 
23589 t0)).((eq T t (TLRef n)) \to ((eq T t0 x) \to (eq T x (TLRef n))))))) with 
23590 [(pr0_refl t) \Rightarrow (\lambda (H0: (eq T t (TLRef n))).(\lambda (H1: (eq 
23591 T t x)).(eq_ind T (TLRef n) (\lambda (t0: T).((eq T t0 x) \to (eq T x (TLRef 
23592 n)))) (\lambda (H2: (eq T (TLRef n) x)).(eq_ind T (TLRef n) (\lambda (t0: 
23593 T).(eq T t0 (TLRef n))) (refl_equal T (TLRef n)) x H2)) t (sym_eq T t (TLRef 
23594 n) H0) H1))) | (pr0_comp u1 u2 H0 t1 t2 H1 k) \Rightarrow (\lambda (H2: (eq T 
23595 (THead k u1 t1) (TLRef n))).(\lambda (H3: (eq T (THead k u2 t2) x)).((let H4 
23596 \def (eq_ind T (THead k u1 t1) (\lambda (e: T).(match e return (\lambda (_: 
23597 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
23598 (THead _ _ _) \Rightarrow True])) I (TLRef n) H2) in (False_ind ((eq T (THead 
23599 k u2 t2) x) \to ((pr0 u1 u2) \to ((pr0 t1 t2) \to (eq T x (TLRef n))))) H4)) 
23600 H3 H0 H1))) | (pr0_beta u v1 v2 H0 t1 t2 H1) \Rightarrow (\lambda (H2: (eq T 
23601 (THead (Flat Appl) v1 (THead (Bind Abst) u t1)) (TLRef n))).(\lambda (H3: (eq 
23602 T (THead (Bind Abbr) v2 t2) x)).((let H4 \def (eq_ind T (THead (Flat Appl) v1 
23603 (THead (Bind Abst) u t1)) (\lambda (e: T).(match e return (\lambda (_: 
23604 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
23605 (THead _ _ _) \Rightarrow True])) I (TLRef n) H2) in (False_ind ((eq T (THead 
23606 (Bind Abbr) v2 t2) x) \to ((pr0 v1 v2) \to ((pr0 t1 t2) \to (eq T x (TLRef 
23607 n))))) H4)) H3 H0 H1))) | (pr0_upsilon b H0 v1 v2 H1 u1 u2 H2 t1 t2 H3) 
23608 \Rightarrow (\lambda (H4: (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t1)) 
23609 (TLRef n))).(\lambda (H5: (eq T (THead (Bind b) u2 (THead (Flat Appl) (lift 
23610 (S O) O v2) t2)) x)).((let H6 \def (eq_ind T (THead (Flat Appl) v1 (THead 
23611 (Bind b) u1 t1)) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
23612 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
23613 \Rightarrow True])) I (TLRef n) H4) in (False_ind ((eq T (THead (Bind b) u2 
23614 (THead (Flat Appl) (lift (S O) O v2) t2)) x) \to ((not (eq B b Abst)) \to 
23615 ((pr0 v1 v2) \to ((pr0 u1 u2) \to ((pr0 t1 t2) \to (eq T x (TLRef n))))))) 
23616 H6)) H5 H0 H1 H2 H3))) | (pr0_delta u1 u2 H0 t1 t2 H1 w H2) \Rightarrow 
23617 (\lambda (H3: (eq T (THead (Bind Abbr) u1 t1) (TLRef n))).(\lambda (H4: (eq T 
23618 (THead (Bind Abbr) u2 w) x)).((let H5 \def (eq_ind T (THead (Bind Abbr) u1 
23619 t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
23620 \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
23621 True])) I (TLRef n) H3) in (False_ind ((eq T (THead (Bind Abbr) u2 w) x) \to 
23622 ((pr0 u1 u2) \to ((pr0 t1 t2) \to ((subst0 O u2 t2 w) \to (eq T x (TLRef 
23623 n)))))) H5)) H4 H0 H1 H2))) | (pr0_zeta b H0 t1 t2 H1 u) \Rightarrow (\lambda 
23624 (H2: (eq T (THead (Bind b) u (lift (S O) O t1)) (TLRef n))).(\lambda (H3: (eq 
23625 T t2 x)).((let H4 \def (eq_ind T (THead (Bind b) u (lift (S O) O t1)) 
23626 (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
23627 \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
23628 True])) I (TLRef n) H2) in (False_ind ((eq T t2 x) \to ((not (eq B b Abst)) 
23629 \to ((pr0 t1 t2) \to (eq T x (TLRef n))))) H4)) H3 H0 H1))) | (pr0_epsilon t1 
23630 t2 H0 u) \Rightarrow (\lambda (H1: (eq T (THead (Flat Cast) u t1) (TLRef 
23631 n))).(\lambda (H2: (eq T t2 x)).((let H3 \def (eq_ind T (THead (Flat Cast) u 
23632 t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
23633 \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
23634 True])) I (TLRef n) H1) in (False_ind ((eq T t2 x) \to ((pr0 t1 t2) \to (eq T 
23635 x (TLRef n)))) H3)) H2 H0)))]) in (H0 (refl_equal T (TLRef n)) (refl_equal T 
23636 x))))).
23637
23638 theorem pr0_gen_abst:
23639  \forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr0 (THead (Bind Abst) u1 
23640 t1) x) \to (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind 
23641 Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
23642 T).(\lambda (t2: T).(pr0 t1 t2)))))))
23643 \def
23644  \lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda (H: (pr0 (THead 
23645 (Bind Abst) u1 t1) x)).(let H0 \def (match H return (\lambda (t: T).(\lambda 
23646 (t0: T).(\lambda (_: (pr0 t t0)).((eq T t (THead (Bind Abst) u1 t1)) \to ((eq 
23647 T t0 x) \to (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind 
23648 Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
23649 T).(\lambda (t2: T).(pr0 t1 t2))))))))) with [(pr0_refl t) \Rightarrow 
23650 (\lambda (H0: (eq T t (THead (Bind Abst) u1 t1))).(\lambda (H1: (eq T t 
23651 x)).(eq_ind T (THead (Bind Abst) u1 t1) (\lambda (t0: T).((eq T t0 x) \to 
23652 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind Abst) u2 
23653 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
23654 T).(\lambda (t2: T).(pr0 t1 t2)))))) (\lambda (H2: (eq T (THead (Bind Abst) 
23655 u1 t1) x)).(eq_ind T (THead (Bind Abst) u1 t1) (\lambda (t0: T).(ex3_2 T T 
23656 (\lambda (u2: T).(\lambda (t2: T).(eq T t0 (THead (Bind Abst) u2 t2)))) 
23657 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t2: 
23658 T).(pr0 t1 t2))))) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t2: T).(eq T 
23659 (THead (Bind Abst) u1 t1) (THead (Bind Abst) u2 t2)))) (\lambda (u2: 
23660 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr0 t1 
23661 t2))) u1 t1 (refl_equal T (THead (Bind Abst) u1 t1)) (pr0_refl u1) (pr0_refl 
23662 t1)) x H2)) t (sym_eq T t (THead (Bind Abst) u1 t1) H0) H1))) | (pr0_comp u0 
23663 u2 H0 t0 t2 H1 k) \Rightarrow (\lambda (H2: (eq T (THead k u0 t0) (THead 
23664 (Bind Abst) u1 t1))).(\lambda (H3: (eq T (THead k u2 t2) x)).((let H4 \def 
23665 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
23666 _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
23667 (THead k u0 t0) (THead (Bind Abst) u1 t1) H2) in ((let H5 \def (f_equal T T 
23668 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
23669 \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) 
23670 (THead k u0 t0) (THead (Bind Abst) u1 t1) H2) in ((let H6 \def (f_equal T K 
23671 (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort _) 
23672 \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) \Rightarrow k])) 
23673 (THead k u0 t0) (THead (Bind Abst) u1 t1) H2) in (eq_ind K (Bind Abst) 
23674 (\lambda (k0: K).((eq T u0 u1) \to ((eq T t0 t1) \to ((eq T (THead k0 u2 t2) 
23675 x) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to (ex3_2 T T (\lambda (u3: T).(\lambda 
23676 (t3: T).(eq T x (THead (Bind Abst) u3 t3)))) (\lambda (u3: T).(\lambda (_: 
23677 T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))))))))) 
23678 (\lambda (H7: (eq T u0 u1)).(eq_ind T u1 (\lambda (t: T).((eq T t0 t1) \to 
23679 ((eq T (THead (Bind Abst) u2 t2) x) \to ((pr0 t u2) \to ((pr0 t0 t2) \to 
23680 (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u3 
23681 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: 
23682 T).(\lambda (t3: T).(pr0 t1 t3))))))))) (\lambda (H8: (eq T t0 t1)).(eq_ind T 
23683 t1 (\lambda (t: T).((eq T (THead (Bind Abst) u2 t2) x) \to ((pr0 u1 u2) \to 
23684 ((pr0 t t2) \to (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead 
23685 (Bind Abst) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda 
23686 (_: T).(\lambda (t3: T).(pr0 t1 t3)))))))) (\lambda (H9: (eq T (THead (Bind 
23687 Abst) u2 t2) x)).(eq_ind T (THead (Bind Abst) u2 t2) (\lambda (t: T).((pr0 u1 
23688 u2) \to ((pr0 t1 t2) \to (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T t 
23689 (THead (Bind Abst) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) 
23690 (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3))))))) (\lambda (H10: (pr0 u1 
23691 u2)).(\lambda (H11: (pr0 t1 t2)).(ex3_2_intro T T (\lambda (u3: T).(\lambda 
23692 (t3: T).(eq T (THead (Bind Abst) u2 t2) (THead (Bind Abst) u3 t3)))) (\lambda 
23693 (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 
23694 t1 t3))) u2 t2 (refl_equal T (THead (Bind Abst) u2 t2)) H10 H11))) x H9)) t0 
23695 (sym_eq T t0 t1 H8))) u0 (sym_eq T u0 u1 H7))) k (sym_eq K k (Bind Abst) 
23696 H6))) H5)) H4)) H3 H0 H1))) | (pr0_beta u v1 v2 H0 t0 t2 H1) \Rightarrow 
23697 (\lambda (H2: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (THead 
23698 (Bind Abst) u1 t1))).(\lambda (H3: (eq T (THead (Bind Abbr) v2 t2) x)).((let 
23699 H4 \def (eq_ind T (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (\lambda 
23700 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
23701 False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k 
23702 return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) 
23703 \Rightarrow True])])) I (THead (Bind Abst) u1 t1) H2) in (False_ind ((eq T 
23704 (THead (Bind Abbr) v2 t2) x) \to ((pr0 v1 v2) \to ((pr0 t0 t2) \to (ex3_2 T T 
23705 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) 
23706 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: 
23707 T).(pr0 t1 t3))))))) H4)) H3 H0 H1))) | (pr0_upsilon b H0 v1 v2 H1 u0 u2 H2 
23708 t0 t2 H3) \Rightarrow (\lambda (H4: (eq T (THead (Flat Appl) v1 (THead (Bind 
23709 b) u0 t0)) (THead (Bind Abst) u1 t1))).(\lambda (H5: (eq T (THead (Bind b) u2 
23710 (THead (Flat Appl) (lift (S O) O v2) t2)) x)).((let H6 \def (eq_ind T (THead 
23711 (Flat Appl) v1 (THead (Bind b) u0 t0)) (\lambda (e: T).(match e return 
23712 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
23713 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
23714 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
23715 (THead (Bind Abst) u1 t1) H4) in (False_ind ((eq T (THead (Bind b) u2 (THead 
23716 (Flat Appl) (lift (S O) O v2) t2)) x) \to ((not (eq B b Abst)) \to ((pr0 v1 
23717 v2) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to (ex3_2 T T (\lambda (u3: 
23718 T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u3 t3)))) (\lambda (u3: 
23719 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
23720 t3))))))))) H6)) H5 H0 H1 H2 H3))) | (pr0_delta u0 u2 H0 t0 t2 H1 w H2) 
23721 \Rightarrow (\lambda (H3: (eq T (THead (Bind Abbr) u0 t0) (THead (Bind Abst) 
23722 u1 t1))).(\lambda (H4: (eq T (THead (Bind Abbr) u2 w) x)).((let H5 \def 
23723 (eq_ind T (THead (Bind Abbr) u0 t0) (\lambda (e: T).(match e return (\lambda 
23724 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
23725 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
23726 b) \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow 
23727 True | Abst \Rightarrow False | Void \Rightarrow False]) | (Flat _) 
23728 \Rightarrow False])])) I (THead (Bind Abst) u1 t1) H3) in (False_ind ((eq T 
23729 (THead (Bind Abbr) u2 w) x) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to ((subst0 O 
23730 u2 t2 w) \to (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead 
23731 (Bind Abst) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda 
23732 (_: T).(\lambda (t3: T).(pr0 t1 t3)))))))) H5)) H4 H0 H1 H2))) | (pr0_zeta b 
23733 H0 t0 t2 H1 u) \Rightarrow (\lambda (H2: (eq T (THead (Bind b) u (lift (S O) 
23734 O t0)) (THead (Bind Abst) u1 t1))).(\lambda (H3: (eq T t2 x)).((let H4 \def 
23735 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
23736 _) \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: 
23737 T \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow 
23738 (TLRef (match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) 
23739 | (THead k u t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) 
23740 t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t0) | (TLRef _) 
23741 \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T 
23742 \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow 
23743 (TLRef (match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) 
23744 | (THead k u t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) 
23745 t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t0) | (THead _ _ t) 
23746 \Rightarrow t])) (THead (Bind b) u (lift (S O) O t0)) (THead (Bind Abst) u1 
23747 t1) H2) in ((let H5 \def (f_equal T T (\lambda (e: T).(match e return 
23748 (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | 
23749 (THead _ t _) \Rightarrow t])) (THead (Bind b) u (lift (S O) O t0)) (THead 
23750 (Bind Abst) u1 t1) H2) in ((let H6 \def (f_equal T B (\lambda (e: T).(match e 
23751 return (\lambda (_: T).B) with [(TSort _) \Rightarrow b | (TLRef _) 
23752 \Rightarrow b | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).B) 
23753 with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b])])) (THead (Bind b) u 
23754 (lift (S O) O t0)) (THead (Bind Abst) u1 t1) H2) in (eq_ind B Abst (\lambda 
23755 (b0: B).((eq T u u1) \to ((eq T (lift (S O) O t0) t1) \to ((eq T t2 x) \to 
23756 ((not (eq B b0 Abst)) \to ((pr0 t0 t2) \to (ex3_2 T T (\lambda (u2: 
23757 T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: 
23758 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
23759 t3)))))))))) (\lambda (H7: (eq T u u1)).(eq_ind T u1 (\lambda (_: T).((eq T 
23760 (lift (S O) O t0) t1) \to ((eq T t2 x) \to ((not (eq B Abst Abst)) \to ((pr0 
23761 t0 t2) \to (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
23762 Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
23763 T).(\lambda (t3: T).(pr0 t1 t3))))))))) (\lambda (H8: (eq T (lift (S O) O t0) 
23764 t1)).(eq_ind T (lift (S O) O t0) (\lambda (t: T).((eq T t2 x) \to ((not (eq B 
23765 Abst Abst)) \to ((pr0 t0 t2) \to (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
23766 T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 
23767 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t t3)))))))) (\lambda (H9: (eq 
23768 T t2 x)).(eq_ind T x (\lambda (t: T).((not (eq B Abst Abst)) \to ((pr0 t0 t) 
23769 \to (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) 
23770 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
23771 T).(\lambda (t3: T).(pr0 (lift (S O) O t0) t3))))))) (\lambda (H10: (not (eq 
23772 B Abst Abst))).(\lambda (_: (pr0 t0 x)).(False_ind (ex3_2 T T (\lambda (u2: 
23773 T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: 
23774 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 (lift 
23775 (S O) O t0) t3)))) (H10 (refl_equal B Abst))))) t2 (sym_eq T t2 x H9))) t1 
23776 H8)) u (sym_eq T u u1 H7))) b (sym_eq B b Abst H6))) H5)) H4)) H3 H0 H1))) | 
23777 (pr0_epsilon t0 t2 H0 u) \Rightarrow (\lambda (H1: (eq T (THead (Flat Cast) u 
23778 t0) (THead (Bind Abst) u1 t1))).(\lambda (H2: (eq T t2 x)).((let H3 \def 
23779 (eq_ind T (THead (Flat Cast) u t0) (\lambda (e: T).(match e return (\lambda 
23780 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
23781 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
23782 _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind Abst) u1 
23783 t1) H1) in (False_ind ((eq T t2 x) \to ((pr0 t0 t2) \to (ex3_2 T T (\lambda 
23784 (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: 
23785 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
23786 t3)))))) H3)) H2 H0)))]) in (H0 (refl_equal T (THead (Bind Abst) u1 t1)) 
23787 (refl_equal T x)))))).
23788
23789 theorem pr0_gen_appl:
23790  \forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr0 (THead (Flat Appl) u1 
23791 t1) x) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead 
23792 (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
23793 (_: T).(\lambda (t2: T).(pr0 t1 t2)))) (ex4_4 T T T T (\lambda (y1: 
23794 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
23795 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
23796 (t2: T).(eq T x (THead (Bind Abbr) u2 t2)))))) (\lambda (_: T).(\lambda (_: 
23797 T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda 
23798 (z1: T).(\lambda (_: T).(\lambda (t2: T).(pr0 z1 t2)))))) (ex6_6 B T T T T T 
23799 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
23800 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
23801 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
23802 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
23803 T).(\lambda (u2: T).(\lambda (v2: T).(\lambda (t2: T).(eq T x (THead (Bind b) 
23804 v2 (THead (Flat Appl) (lift (S O) O u2) t2))))))))) (\lambda (_: B).(\lambda 
23805 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(\lambda (_: T).(pr0 
23806 u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
23807 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
23808 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23809 (t2: T).(pr0 z1 t2))))))))))))
23810 \def
23811  \lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda (H: (pr0 (THead 
23812 (Flat Appl) u1 t1) x)).(let H0 \def (match H return (\lambda (t: T).(\lambda 
23813 (t0: T).(\lambda (_: (pr0 t t0)).((eq T t (THead (Flat Appl) u1 t1)) \to ((eq 
23814 T t0 x) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead 
23815 (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
23816 (_: T).(\lambda (t2: T).(pr0 t1 t2)))) (ex4_4 T T T T (\lambda (y1: 
23817 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
23818 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
23819 (t2: T).(eq T x (THead (Bind Abbr) u2 t2)))))) (\lambda (_: T).(\lambda (_: 
23820 T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda 
23821 (z1: T).(\lambda (_: T).(\lambda (t2: T).(pr0 z1 t2)))))) (ex6_6 B T T T T T 
23822 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
23823 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
23824 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
23825 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
23826 T).(\lambda (u2: T).(\lambda (v2: T).(\lambda (t2: T).(eq T x (THead (Bind b) 
23827 v2 (THead (Flat Appl) (lift (S O) O u2) t2))))))))) (\lambda (_: B).(\lambda 
23828 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(\lambda (_: T).(pr0 
23829 u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
23830 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
23831 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23832 (t2: T).(pr0 z1 t2)))))))))))))) with [(pr0_refl t) \Rightarrow (\lambda (H0: 
23833 (eq T t (THead (Flat Appl) u1 t1))).(\lambda (H1: (eq T t x)).(eq_ind T 
23834 (THead (Flat Appl) u1 t1) (\lambda (t0: T).((eq T t0 x) \to (or3 (ex3_2 T T 
23835 (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Flat Appl) u2 t2)))) 
23836 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t2: 
23837 T).(pr0 t1 t2)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda 
23838 (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
23839 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind 
23840 Abbr) u2 t2)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
23841 (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
23842 T).(\lambda (t2: T).(pr0 z1 t2)))))) (ex6_6 B T T T T T (\lambda (b: 
23843 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23844 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
23845 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
23846 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
23847 (u2: T).(\lambda (v2: T).(\lambda (t2: T).(eq T x (THead (Bind b) v2 (THead 
23848 (Flat Appl) (lift (S O) O u2) t2))))))))) (\lambda (_: B).(\lambda (_: 
23849 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 
23850 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
23851 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
23852 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23853 (t2: T).(pr0 z1 t2))))))))))) (\lambda (H2: (eq T (THead (Flat Appl) u1 t1) 
23854 x)).(eq_ind T (THead (Flat Appl) u1 t1) (\lambda (t0: T).(or3 (ex3_2 T T 
23855 (\lambda (u2: T).(\lambda (t2: T).(eq T t0 (THead (Flat Appl) u2 t2)))) 
23856 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t2: 
23857 T).(pr0 t1 t2)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda 
23858 (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
23859 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(eq T t0 (THead (Bind 
23860 Abbr) u2 t2)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
23861 (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
23862 T).(\lambda (t2: T).(pr0 z1 t2)))))) (ex6_6 B T T T T T (\lambda (b: 
23863 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23864 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
23865 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
23866 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
23867 (u2: T).(\lambda (v2: T).(\lambda (t2: T).(eq T t0 (THead (Bind b) v2 (THead 
23868 (Flat Appl) (lift (S O) O u2) t2))))))))) (\lambda (_: B).(\lambda (_: 
23869 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 
23870 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
23871 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
23872 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23873 (t2: T).(pr0 z1 t2)))))))))) (or3_intro0 (ex3_2 T T (\lambda (u2: T).(\lambda 
23874 (t2: T).(eq T (THead (Flat Appl) u1 t1) (THead (Flat Appl) u2 t2)))) (\lambda 
23875 (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr0 
23876 t1 t2)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
23877 T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
23878 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(eq T (THead (Flat Appl) 
23879 u1 t1) (THead (Bind Abbr) u2 t2)))))) (\lambda (_: T).(\lambda (_: 
23880 T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda 
23881 (z1: T).(\lambda (_: T).(\lambda (t2: T).(pr0 z1 t2)))))) (ex6_6 B T T T T T 
23882 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
23883 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
23884 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
23885 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
23886 T).(\lambda (u2: T).(\lambda (v2: T).(\lambda (t2: T).(eq T (THead (Flat 
23887 Appl) u1 t1) (THead (Bind b) v2 (THead (Flat Appl) (lift (S O) O u2) 
23888 t2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
23889 T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 u2))))))) (\lambda (_: B).(\lambda 
23890 (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (v2: T).(\lambda (_: T).(pr0 
23891 y1 v2))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
23892 T).(\lambda (_: T).(\lambda (t2: T).(pr0 z1 t2)))))))) (ex3_2_intro T T 
23893 (\lambda (u2: T).(\lambda (t2: T).(eq T (THead (Flat Appl) u1 t1) (THead 
23894 (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
23895 (_: T).(\lambda (t2: T).(pr0 t1 t2))) u1 t1 (refl_equal T (THead (Flat Appl) 
23896 u1 t1)) (pr0_refl u1) (pr0_refl t1))) x H2)) t (sym_eq T t (THead (Flat Appl) 
23897 u1 t1) H0) H1))) | (pr0_comp u0 u2 H0 t0 t2 H1 k) \Rightarrow (\lambda (H2: 
23898 (eq T (THead k u0 t0) (THead (Flat Appl) u1 t1))).(\lambda (H3: (eq T (THead 
23899 k u2 t2) x)).((let H4 \def (f_equal T T (\lambda (e: T).(match e return 
23900 (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 
23901 | (THead _ _ t) \Rightarrow t])) (THead k u0 t0) (THead (Flat Appl) u1 t1) 
23902 H2) in ((let H5 \def (f_equal T T (\lambda (e: T).(match e return (\lambda 
23903 (_: T).T) with [(TSort _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead 
23904 _ t _) \Rightarrow t])) (THead k u0 t0) (THead (Flat Appl) u1 t1) H2) in 
23905 ((let H6 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) 
23906 with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
23907 \Rightarrow k])) (THead k u0 t0) (THead (Flat Appl) u1 t1) H2) in (eq_ind K 
23908 (Flat Appl) (\lambda (k0: K).((eq T u0 u1) \to ((eq T t0 t1) \to ((eq T 
23909 (THead k0 u2 t2) x) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to (or3 (ex3_2 T T 
23910 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u3 t3)))) 
23911 (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: 
23912 T).(pr0 t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda 
23913 (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
23914 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind 
23915 Abbr) u3 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u3: T).(\lambda 
23916 (_: T).(pr0 u1 u3))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
23917 T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T (\lambda (b: 
23918 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23919 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
23920 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
23921 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
23922 (u3: T).(\lambda (v2: T).(\lambda (t3: T).(eq T x (THead (Bind b) v2 (THead 
23923 (Flat Appl) (lift (S O) O u3) t3))))))))) (\lambda (_: B).(\lambda (_: 
23924 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 
23925 u3))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
23926 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
23927 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23928 (t3: T).(pr0 z1 t3))))))))))))))) (\lambda (H7: (eq T u0 u1)).(eq_ind T u1 
23929 (\lambda (t: T).((eq T t0 t1) \to ((eq T (THead (Flat Appl) u2 t2) x) \to 
23930 ((pr0 t u2) \to ((pr0 t0 t2) \to (or3 (ex3_2 T T (\lambda (u3: T).(\lambda 
23931 (t3: T).(eq T x (THead (Flat Appl) u3 t3)))) (\lambda (u3: T).(\lambda (_: 
23932 T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (ex4_4 T T T 
23933 T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
23934 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u3: 
23935 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u3 t3)))))) (\lambda (_: 
23936 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))))) (\lambda 
23937 (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) 
23938 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
23939 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
23940 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23941 (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
23942 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (v2: T).(\lambda (t3: T).(eq T x 
23943 (THead (Bind b) v2 (THead (Flat Appl) (lift (S O) O u3) t3))))))))) (\lambda 
23944 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: 
23945 T).(\lambda (_: T).(pr0 u1 u3))))))) (\lambda (_: B).(\lambda (y1: 
23946 T).(\lambda (_: T).(\lambda (_: T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 
23947 v2))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
23948 T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))))))))))) (\lambda (H8: 
23949 (eq T t0 t1)).(eq_ind T t1 (\lambda (t: T).((eq T (THead (Flat Appl) u2 t2) 
23950 x) \to ((pr0 u1 u2) \to ((pr0 t t2) \to (or3 (ex3_2 T T (\lambda (u3: 
23951 T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u3 t3)))) (\lambda (u3: 
23952 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
23953 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
23954 T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
23955 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind 
23956 Abbr) u3 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u3: T).(\lambda 
23957 (_: T).(pr0 u1 u3))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
23958 T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T (\lambda (b: 
23959 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23960 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
23961 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
23962 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
23963 (u3: T).(\lambda (v2: T).(\lambda (t3: T).(eq T x (THead (Bind b) v2 (THead 
23964 (Flat Appl) (lift (S O) O u3) t3))))))))) (\lambda (_: B).(\lambda (_: 
23965 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 
23966 u3))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
23967 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
23968 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23969 (t3: T).(pr0 z1 t3))))))))))))) (\lambda (H9: (eq T (THead (Flat Appl) u2 t2) 
23970 x)).(eq_ind T (THead (Flat Appl) u2 t2) (\lambda (t: T).((pr0 u1 u2) \to 
23971 ((pr0 t1 t2) \to (or3 (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T t 
23972 (THead (Flat Appl) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) 
23973 (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (ex4_4 T T T T (\lambda (y1: 
23974 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
23975 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u3: T).(\lambda 
23976 (t3: T).(eq T t (THead (Bind Abbr) u3 t3)))))) (\lambda (_: T).(\lambda (_: 
23977 T).(\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))))) (\lambda (_: T).(\lambda 
23978 (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T 
23979 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
23980 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
23981 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
23982 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
23983 T).(\lambda (u3: T).(\lambda (v2: T).(\lambda (t3: T).(eq T t (THead (Bind b) 
23984 v2 (THead (Flat Appl) (lift (S O) O u3) t3))))))))) (\lambda (_: B).(\lambda 
23985 (_: T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(\lambda (_: T).(pr0 
23986 u1 u3))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
23987 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
23988 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
23989 (t3: T).(pr0 z1 t3)))))))))))) (\lambda (H10: (pr0 u1 u2)).(\lambda (H11: 
23990 (pr0 t1 t2)).(or3_intro0 (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T 
23991 (THead (Flat Appl) u2 t2) (THead (Flat Appl) u3 t3)))) (\lambda (u3: 
23992 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
23993 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
23994 T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
23995 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (t3: T).(eq T (THead (Flat Appl) 
23996 u2 t2) (THead (Bind Abbr) u3 t3)))))) (\lambda (_: T).(\lambda (_: 
23997 T).(\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))))) (\lambda (_: T).(\lambda 
23998 (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T 
23999 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
24000 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
24001 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
24002 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
24003 T).(\lambda (u3: T).(\lambda (v2: T).(\lambda (t3: T).(eq T (THead (Flat 
24004 Appl) u2 t2) (THead (Bind b) v2 (THead (Flat Appl) (lift (S O) O u3) 
24005 t3))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u3: 
24006 T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 u3))))))) (\lambda (_: B).(\lambda 
24007 (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (v2: T).(\lambda (_: T).(pr0 
24008 y1 v2))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
24009 T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))))) (ex3_2_intro T T 
24010 (\lambda (u3: T).(\lambda (t3: T).(eq T (THead (Flat Appl) u2 t2) (THead 
24011 (Flat Appl) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda 
24012 (_: T).(\lambda (t3: T).(pr0 t1 t3))) u2 t2 (refl_equal T (THead (Flat Appl) 
24013 u2 t2)) H10 H11)))) x H9)) t0 (sym_eq T t0 t1 H8))) u0 (sym_eq T u0 u1 H7))) 
24014 k (sym_eq K k (Flat Appl) H6))) H5)) H4)) H3 H0 H1))) | (pr0_beta u v1 v2 H0 
24015 t0 t2 H1) \Rightarrow (\lambda (H2: (eq T (THead (Flat Appl) v1 (THead (Bind 
24016 Abst) u t0)) (THead (Flat Appl) u1 t1))).(\lambda (H3: (eq T (THead (Bind 
24017 Abbr) v2 t2) x)).((let H4 \def (f_equal T T (\lambda (e: T).(match e return 
24018 (\lambda (_: T).T) with [(TSort _) \Rightarrow (THead (Bind Abst) u t0) | 
24019 (TLRef _) \Rightarrow (THead (Bind Abst) u t0) | (THead _ _ t) \Rightarrow 
24020 t])) (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (THead (Flat Appl) u1 
24021 t1) H2) in ((let H5 \def (f_equal T T (\lambda (e: T).(match e return 
24022 (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef _) \Rightarrow v1 
24023 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) v1 (THead (Bind Abst) u 
24024 t0)) (THead (Flat Appl) u1 t1) H2) in (eq_ind T u1 (\lambda (t: T).((eq T 
24025 (THead (Bind Abst) u t0) t1) \to ((eq T (THead (Bind Abbr) v2 t2) x) \to 
24026 ((pr0 t v2) \to ((pr0 t0 t2) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda 
24027 (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
24028 T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (ex4_4 T T T 
24029 T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
24030 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
24031 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
24032 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda 
24033 (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) 
24034 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
24035 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
24036 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24037 (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
24038 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (v3: T).(\lambda (t3: T).(eq T x 
24039 (THead (Bind b) v3 (THead (Flat Appl) (lift (S O) O u2) t3))))))))) (\lambda 
24040 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
24041 T).(\lambda (_: T).(pr0 u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
24042 T).(\lambda (_: T).(\lambda (_: T).(\lambda (v3: T).(\lambda (_: T).(pr0 y1 
24043 v3))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
24044 T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))))))))))) (\lambda (H6: 
24045 (eq T (THead (Bind Abst) u t0) t1)).(eq_ind T (THead (Bind Abst) u t0) 
24046 (\lambda (t: T).((eq T (THead (Bind Abbr) v2 t2) x) \to ((pr0 u1 v2) \to 
24047 ((pr0 t0 t2) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
24048 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) 
24049 (\lambda (_: T).(\lambda (t3: T).(pr0 t t3)))) (ex4_4 T T T T (\lambda (y1: 
24050 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t (THead (Bind 
24051 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
24052 (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
24053 T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda 
24054 (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T 
24055 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
24056 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
24057 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t 
24058 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
24059 T).(\lambda (u2: T).(\lambda (v3: T).(\lambda (t3: T).(eq T x (THead (Bind b) 
24060 v3 (THead (Flat Appl) (lift (S O) O u2) t3))))))))) (\lambda (_: B).(\lambda 
24061 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(\lambda (_: T).(pr0 
24062 u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
24063 T).(\lambda (v3: T).(\lambda (_: T).(pr0 y1 v3))))))) (\lambda (_: 
24064 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24065 (t3: T).(pr0 z1 t3))))))))))))) (\lambda (H7: (eq T (THead (Bind Abbr) v2 t2) 
24066 x)).(eq_ind T (THead (Bind Abbr) v2 t2) (\lambda (t: T).((pr0 u1 v2) \to 
24067 ((pr0 t0 t2) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t 
24068 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) 
24069 (\lambda (_: T).(\lambda (t3: T).(pr0 (THead (Bind Abst) u t0) t3)))) (ex4_4 
24070 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq 
24071 T (THead (Bind Abst) u t0) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
24072 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T t (THead (Bind 
24073 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
24074 (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
24075 T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T (\lambda (b: 
24076 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24077 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
24078 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind 
24079 Abst) u t0) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
24080 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (v3: T).(\lambda (t3: T).(eq T t 
24081 (THead (Bind b) v3 (THead (Flat Appl) (lift (S O) O u2) t3))))))))) (\lambda 
24082 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
24083 T).(\lambda (_: T).(pr0 u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
24084 T).(\lambda (_: T).(\lambda (_: T).(\lambda (v3: T).(\lambda (_: T).(pr0 y1 
24085 v3))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
24086 T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))))))))) (\lambda (H8: (pr0 
24087 u1 v2)).(\lambda (H9: (pr0 t0 t2)).(or3_intro1 (ex3_2 T T (\lambda (u2: 
24088 T).(\lambda (t3: T).(eq T (THead (Bind Abbr) v2 t2) (THead (Flat Appl) u2 
24089 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
24090 T).(\lambda (t3: T).(pr0 (THead (Bind Abst) u t0) t3)))) (ex4_4 T T T T 
24091 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
24092 (THead (Bind Abst) u t0) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
24093 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind Abbr) 
24094 v2 t2) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
24095 T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda 
24096 (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T 
24097 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
24098 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
24099 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
24100 (THead (Bind Abst) u t0) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
24101 B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (v3: T).(\lambda 
24102 (t3: T).(eq T (THead (Bind Abbr) v2 t2) (THead (Bind b) v3 (THead (Flat Appl) 
24103 (lift (S O) O u2) t3))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
24104 T).(\lambda (u2: T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 u2))))))) 
24105 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24106 (v3: T).(\lambda (_: T).(pr0 y1 v3))))))) (\lambda (_: B).(\lambda (_: 
24107 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 
24108 t3)))))))) (ex4_4_intro T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda 
24109 (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) u t0) (THead (Bind Abst) y1 
24110 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
24111 T).(eq T (THead (Bind Abbr) v2 t2) (THead (Bind Abbr) u2 t3)))))) (\lambda 
24112 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) 
24113 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 
24114 t3))))) u t0 v2 t2 (refl_equal T (THead (Bind Abst) u t0)) (refl_equal T 
24115 (THead (Bind Abbr) v2 t2)) H8 H9)))) x H7)) t1 H6)) v1 (sym_eq T v1 u1 H5))) 
24116 H4)) H3 H0 H1))) | (pr0_upsilon b H0 v1 v2 H1 u0 u2 H2 t0 t2 H3) \Rightarrow 
24117 (\lambda (H4: (eq T (THead (Flat Appl) v1 (THead (Bind b) u0 t0)) (THead 
24118 (Flat Appl) u1 t1))).(\lambda (H5: (eq T (THead (Bind b) u2 (THead (Flat 
24119 Appl) (lift (S O) O v2) t2)) x)).((let H6 \def (f_equal T T (\lambda (e: 
24120 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow (THead 
24121 (Bind b) u0 t0) | (TLRef _) \Rightarrow (THead (Bind b) u0 t0) | (THead _ _ 
24122 t) \Rightarrow t])) (THead (Flat Appl) v1 (THead (Bind b) u0 t0)) (THead 
24123 (Flat Appl) u1 t1) H4) in ((let H7 \def (f_equal T T (\lambda (e: T).(match e 
24124 return (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef _) 
24125 \Rightarrow v1 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) v1 (THead 
24126 (Bind b) u0 t0)) (THead (Flat Appl) u1 t1) H4) in (eq_ind T u1 (\lambda (t: 
24127 T).((eq T (THead (Bind b) u0 t0) t1) \to ((eq T (THead (Bind b) u2 (THead 
24128 (Flat Appl) (lift (S O) O v2) t2)) x) \to ((not (eq B b Abst)) \to ((pr0 t 
24129 v2) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to (or3 (ex3_2 T T (\lambda (u3: 
24130 T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u3 t3)))) (\lambda (u3: 
24131 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
24132 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
24133 T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
24134 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind 
24135 Abbr) u3 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u3: T).(\lambda 
24136 (_: T).(pr0 u1 u3))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
24137 T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T (\lambda (b0: 
24138 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24139 (_: T).(not (eq B b0 Abst)))))))) (\lambda (b0: B).(\lambda (y1: T).(\lambda 
24140 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
24141 b0) y1 z1)))))))) (\lambda (b0: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
24142 (u3: T).(\lambda (v3: T).(\lambda (t3: T).(eq T x (THead (Bind b0) v3 (THead 
24143 (Flat Appl) (lift (S O) O u3) t3))))))))) (\lambda (_: B).(\lambda (_: 
24144 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 
24145 u3))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
24146 T).(\lambda (v3: T).(\lambda (_: T).(pr0 y1 v3))))))) (\lambda (_: 
24147 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24148 (t3: T).(pr0 z1 t3)))))))))))))))) (\lambda (H8: (eq T (THead (Bind b) u0 t0) 
24149 t1)).(eq_ind T (THead (Bind b) u0 t0) (\lambda (t: T).((eq T (THead (Bind b) 
24150 u2 (THead (Flat Appl) (lift (S O) O v2) t2)) x) \to ((not (eq B b Abst)) \to 
24151 ((pr0 u1 v2) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to (or3 (ex3_2 T T (\lambda 
24152 (u3: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u3 t3)))) (\lambda (u3: 
24153 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t 
24154 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
24155 T).(\lambda (_: T).(eq T t (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
24156 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind 
24157 Abbr) u3 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u3: T).(\lambda 
24158 (_: T).(pr0 u1 u3))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
24159 T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T (\lambda (b0: 
24160 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24161 (_: T).(not (eq B b0 Abst)))))))) (\lambda (b0: B).(\lambda (y1: T).(\lambda 
24162 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t (THead (Bind 
24163 b0) y1 z1)))))))) (\lambda (b0: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
24164 (u3: T).(\lambda (v3: T).(\lambda (t3: T).(eq T x (THead (Bind b0) v3 (THead 
24165 (Flat Appl) (lift (S O) O u3) t3))))))))) (\lambda (_: B).(\lambda (_: 
24166 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 
24167 u3))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
24168 T).(\lambda (v3: T).(\lambda (_: T).(pr0 y1 v3))))))) (\lambda (_: 
24169 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24170 (t3: T).(pr0 z1 t3))))))))))))))) (\lambda (H9: (eq T (THead (Bind b) u2 
24171 (THead (Flat Appl) (lift (S O) O v2) t2)) x)).(eq_ind T (THead (Bind b) u2 
24172 (THead (Flat Appl) (lift (S O) O v2) t2)) (\lambda (t: T).((not (eq B b 
24173 Abst)) \to ((pr0 u1 v2) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to (or3 (ex3_2 T T 
24174 (\lambda (u3: T).(\lambda (t3: T).(eq T t (THead (Flat Appl) u3 t3)))) 
24175 (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: 
24176 T).(pr0 (THead (Bind b) u0 t0) t3)))) (ex4_4 T T T T (\lambda (y1: 
24177 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind b) u0 
24178 t0) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
24179 (u3: T).(\lambda (t3: T).(eq T t (THead (Bind Abbr) u3 t3)))))) (\lambda (_: 
24180 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))))) (\lambda 
24181 (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) 
24182 (ex6_6 B T T T T T (\lambda (b0: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
24183 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b0 Abst)))))))) (\lambda 
24184 (b0: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
24185 T).(\lambda (_: T).(eq T (THead (Bind b) u0 t0) (THead (Bind b0) y1 
24186 z1)))))))) (\lambda (b0: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u3: 
24187 T).(\lambda (v3: T).(\lambda (t3: T).(eq T t (THead (Bind b0) v3 (THead (Flat 
24188 Appl) (lift (S O) O u3) t3))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda 
24189 (_: T).(\lambda (u3: T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 u3))))))) 
24190 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24191 (v3: T).(\lambda (_: T).(pr0 y1 v3))))))) (\lambda (_: B).(\lambda (_: 
24192 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 
24193 t3)))))))))))))) (\lambda (H10: (not (eq B b Abst))).(\lambda (H11: (pr0 u1 
24194 v2)).(\lambda (H12: (pr0 u0 u2)).(\lambda (H13: (pr0 t0 t2)).(or3_intro2 
24195 (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T (THead (Bind b) u2 (THead 
24196 (Flat Appl) (lift (S O) O v2) t2)) (THead (Flat Appl) u3 t3)))) (\lambda (u3: 
24197 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 (THead 
24198 (Bind b) u0 t0) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
24199 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind b) u0 t0) (THead (Bind 
24200 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u3: T).(\lambda 
24201 (t3: T).(eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t2)) 
24202 (THead (Bind Abbr) u3 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u3: 
24203 T).(\lambda (_: T).(pr0 u1 u3))))) (\lambda (_: T).(\lambda (z1: T).(\lambda 
24204 (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T (\lambda (b0: 
24205 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24206 (_: T).(not (eq B b0 Abst)))))))) (\lambda (b0: B).(\lambda (y1: T).(\lambda 
24207 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind b) 
24208 u0 t0) (THead (Bind b0) y1 z1)))))))) (\lambda (b0: B).(\lambda (_: 
24209 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (v3: T).(\lambda (t3: T).(eq T 
24210 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t2)) (THead (Bind b0) 
24211 v3 (THead (Flat Appl) (lift (S O) O u3) t3))))))))) (\lambda (_: B).(\lambda 
24212 (_: T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(\lambda (_: T).(pr0 
24213 u1 u3))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
24214 T).(\lambda (v3: T).(\lambda (_: T).(pr0 y1 v3))))))) (\lambda (_: 
24215 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24216 (t3: T).(pr0 z1 t3)))))))) (ex6_6_intro B T T T T T (\lambda (b0: B).(\lambda 
24217 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not 
24218 (eq B b0 Abst)))))))) (\lambda (b0: B).(\lambda (y1: T).(\lambda (z1: 
24219 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind b) u0 
24220 t0) (THead (Bind b0) y1 z1)))))))) (\lambda (b0: B).(\lambda (_: T).(\lambda 
24221 (_: T).(\lambda (u3: T).(\lambda (v3: T).(\lambda (t3: T).(eq T (THead (Bind 
24222 b) u2 (THead (Flat Appl) (lift (S O) O v2) t2)) (THead (Bind b0) v3 (THead 
24223 (Flat Appl) (lift (S O) O u3) t3))))))))) (\lambda (_: B).(\lambda (_: 
24224 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 
24225 u3))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
24226 T).(\lambda (v3: T).(\lambda (_: T).(pr0 y1 v3))))))) (\lambda (_: 
24227 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24228 (t3: T).(pr0 z1 t3))))))) b u0 t0 v2 u2 t2 H10 (refl_equal T (THead (Bind b) 
24229 u0 t0)) (refl_equal T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
24230 t2))) H11 H12 H13)))))) x H9)) t1 H8)) v1 (sym_eq T v1 u1 H7))) H6)) H5 H0 H1 
24231 H2 H3))) | (pr0_delta u0 u2 H0 t0 t2 H1 w H2) \Rightarrow (\lambda (H3: (eq T 
24232 (THead (Bind Abbr) u0 t0) (THead (Flat Appl) u1 t1))).(\lambda (H4: (eq T 
24233 (THead (Bind Abbr) u2 w) x)).((let H5 \def (eq_ind T (THead (Bind Abbr) u0 
24234 t0) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
24235 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
24236 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat 
24237 _) \Rightarrow False])])) I (THead (Flat Appl) u1 t1) H3) in (False_ind ((eq 
24238 T (THead (Bind Abbr) u2 w) x) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to ((subst0 
24239 O u2 t2 w) \to (or3 (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T x 
24240 (THead (Flat Appl) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) 
24241 (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (ex4_4 T T T T (\lambda (y1: 
24242 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
24243 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u3: T).(\lambda 
24244 (t3: T).(eq T x (THead (Bind Abbr) u3 t3)))))) (\lambda (_: T).(\lambda (_: 
24245 T).(\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))))) (\lambda (_: T).(\lambda 
24246 (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T 
24247 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
24248 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
24249 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
24250 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
24251 T).(\lambda (u3: T).(\lambda (v2: T).(\lambda (t3: T).(eq T x (THead (Bind b) 
24252 v2 (THead (Flat Appl) (lift (S O) O u3) t3))))))))) (\lambda (_: B).(\lambda 
24253 (_: T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(\lambda (_: T).(pr0 
24254 u1 u3))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
24255 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
24256 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24257 (t3: T).(pr0 z1 t3))))))))))))) H5)) H4 H0 H1 H2))) | (pr0_zeta b H0 t0 t2 H1 
24258 u) \Rightarrow (\lambda (H2: (eq T (THead (Bind b) u (lift (S O) O t0)) 
24259 (THead (Flat Appl) u1 t1))).(\lambda (H3: (eq T t2 x)).((let H4 \def (eq_ind 
24260 T (THead (Bind b) u (lift (S O) O t0)) (\lambda (e: T).(match e return 
24261 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
24262 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
24263 K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I 
24264 (THead (Flat Appl) u1 t1) H2) in (False_ind ((eq T t2 x) \to ((not (eq B b 
24265 Abst)) \to ((pr0 t0 t2) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
24266 T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 
24267 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (ex4_4 T T T T 
24268 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
24269 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
24270 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
24271 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda 
24272 (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) 
24273 (ex6_6 B T T T T T (\lambda (b0: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
24274 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b0 Abst)))))))) (\lambda 
24275 (b0: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
24276 T).(\lambda (_: T).(eq T t1 (THead (Bind b0) y1 z1)))))))) (\lambda (b0: 
24277 B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (v2: T).(\lambda 
24278 (t3: T).(eq T x (THead (Bind b0) v2 (THead (Flat Appl) (lift (S O) O u2) 
24279 t3))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
24280 T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 u2))))))) (\lambda (_: B).(\lambda 
24281 (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (v2: T).(\lambda (_: T).(pr0 
24282 y1 v2))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
24283 T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))))))))) H4)) H3 H0 H1))) | 
24284 (pr0_epsilon t0 t2 H0 u) \Rightarrow (\lambda (H1: (eq T (THead (Flat Cast) u 
24285 t0) (THead (Flat Appl) u1 t1))).(\lambda (H2: (eq T t2 x)).((let H3 \def 
24286 (eq_ind T (THead (Flat Cast) u t0) (\lambda (e: T).(match e return (\lambda 
24287 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
24288 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
24289 _) \Rightarrow False | (Flat f) \Rightarrow (match f return (\lambda (_: 
24290 F).Prop) with [Appl \Rightarrow False | Cast \Rightarrow True])])])) I (THead 
24291 (Flat Appl) u1 t1) H1) in (False_ind ((eq T t2 x) \to ((pr0 t0 t2) \to (or3 
24292 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 
24293 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
24294 T).(\lambda (t3: T).(pr0 t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
24295 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
24296 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
24297 T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
24298 T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda 
24299 (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T 
24300 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
24301 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
24302 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
24303 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
24304 T).(\lambda (u2: T).(\lambda (v2: T).(\lambda (t3: T).(eq T x (THead (Bind b) 
24305 v2 (THead (Flat Appl) (lift (S O) O u2) t3))))))))) (\lambda (_: B).(\lambda 
24306 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(\lambda (_: T).(pr0 
24307 u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
24308 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
24309 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
24310 (t3: T).(pr0 z1 t3))))))))))) H3)) H2 H0)))]) in (H0 (refl_equal T (THead 
24311 (Flat Appl) u1 t1)) (refl_equal T x)))))).
24312
24313 theorem pr0_gen_cast:
24314  \forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr0 (THead (Flat Cast) u1 
24315 t1) x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead 
24316 (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
24317 (_: T).(\lambda (t2: T).(pr0 t1 t2)))) (pr0 t1 x)))))
24318 \def
24319  \lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda (H: (pr0 (THead 
24320 (Flat Cast) u1 t1) x)).(let H0 \def (match H return (\lambda (t: T).(\lambda 
24321 (t0: T).(\lambda (_: (pr0 t t0)).((eq T t (THead (Flat Cast) u1 t1)) \to ((eq 
24322 T t0 x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead 
24323 (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
24324 (_: T).(\lambda (t2: T).(pr0 t1 t2)))) (pr0 t1 x))))))) with [(pr0_refl t) 
24325 \Rightarrow (\lambda (H0: (eq T t (THead (Flat Cast) u1 t1))).(\lambda (H1: 
24326 (eq T t x)).(eq_ind T (THead (Flat Cast) u1 t1) (\lambda (t0: T).((eq T t0 x) 
24327 \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Flat 
24328 Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
24329 T).(\lambda (t2: T).(pr0 t1 t2)))) (pr0 t1 x)))) (\lambda (H2: (eq T (THead 
24330 (Flat Cast) u1 t1) x)).(eq_ind T (THead (Flat Cast) u1 t1) (\lambda (t0: 
24331 T).(or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t0 (THead (Flat 
24332 Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
24333 T).(\lambda (t2: T).(pr0 t1 t2)))) (pr0 t1 t0))) (or_introl (ex3_2 T T 
24334 (\lambda (u2: T).(\lambda (t2: T).(eq T (THead (Flat Cast) u1 t1) (THead 
24335 (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
24336 (_: T).(\lambda (t2: T).(pr0 t1 t2)))) (pr0 t1 (THead (Flat Cast) u1 t1)) 
24337 (ex3_2_intro T T (\lambda (u2: T).(\lambda (t2: T).(eq T (THead (Flat Cast) 
24338 u1 t1) (THead (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 
24339 u2))) (\lambda (_: T).(\lambda (t2: T).(pr0 t1 t2))) u1 t1 (refl_equal T 
24340 (THead (Flat Cast) u1 t1)) (pr0_refl u1) (pr0_refl t1))) x H2)) t (sym_eq T t 
24341 (THead (Flat Cast) u1 t1) H0) H1))) | (pr0_comp u0 u2 H0 t0 t2 H1 k) 
24342 \Rightarrow (\lambda (H2: (eq T (THead k u0 t0) (THead (Flat Cast) u1 
24343 t1))).(\lambda (H3: (eq T (THead k u2 t2) x)).((let H4 \def (f_equal T T 
24344 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
24345 \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
24346 (THead k u0 t0) (THead (Flat Cast) u1 t1) H2) in ((let H5 \def (f_equal T T 
24347 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
24348 \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) 
24349 (THead k u0 t0) (THead (Flat Cast) u1 t1) H2) in ((let H6 \def (f_equal T K 
24350 (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort _) 
24351 \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) \Rightarrow k])) 
24352 (THead k u0 t0) (THead (Flat Cast) u1 t1) H2) in (eq_ind K (Flat Cast) 
24353 (\lambda (k0: K).((eq T u0 u1) \to ((eq T t0 t1) \to ((eq T (THead k0 u2 t2) 
24354 x) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u3: 
24355 T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u3 t3)))) (\lambda (u3: 
24356 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
24357 t3)))) (pr0 t1 x)))))))) (\lambda (H7: (eq T u0 u1)).(eq_ind T u1 (\lambda 
24358 (t: T).((eq T t0 t1) \to ((eq T (THead (Flat Cast) u2 t2) x) \to ((pr0 t u2) 
24359 \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T x 
24360 (THead (Flat Cast) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) 
24361 (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 x))))))) (\lambda 
24362 (H8: (eq T t0 t1)).(eq_ind T t1 (\lambda (t: T).((eq T (THead (Flat Cast) u2 
24363 t2) x) \to ((pr0 u1 u2) \to ((pr0 t t2) \to (or (ex3_2 T T (\lambda (u3: 
24364 T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u3 t3)))) (\lambda (u3: 
24365 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
24366 t3)))) (pr0 t1 x)))))) (\lambda (H9: (eq T (THead (Flat Cast) u2 t2) 
24367 x)).(eq_ind T (THead (Flat Cast) u2 t2) (\lambda (t: T).((pr0 u1 u2) \to 
24368 ((pr0 t1 t2) \to (or (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T t 
24369 (THead (Flat Cast) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) 
24370 (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 t))))) (\lambda (H10: 
24371 (pr0 u1 u2)).(\lambda (H11: (pr0 t1 t2)).(or_introl (ex3_2 T T (\lambda (u3: 
24372 T).(\lambda (t3: T).(eq T (THead (Flat Cast) u2 t2) (THead (Flat Cast) u3 
24373 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: 
24374 T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 (THead (Flat Cast) u2 t2)) 
24375 (ex3_2_intro T T (\lambda (u3: T).(\lambda (t3: T).(eq T (THead (Flat Cast) 
24376 u2 t2) (THead (Flat Cast) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 
24377 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3))) u2 t2 (refl_equal T 
24378 (THead (Flat Cast) u2 t2)) H10 H11)))) x H9)) t0 (sym_eq T t0 t1 H8))) u0 
24379 (sym_eq T u0 u1 H7))) k (sym_eq K k (Flat Cast) H6))) H5)) H4)) H3 H0 H1))) | 
24380 (pr0_beta u v1 v2 H0 t0 t2 H1) \Rightarrow (\lambda (H2: (eq T (THead (Flat 
24381 Appl) v1 (THead (Bind Abst) u t0)) (THead (Flat Cast) u1 t1))).(\lambda (H3: 
24382 (eq T (THead (Bind Abbr) v2 t2) x)).((let H4 \def (eq_ind T (THead (Flat 
24383 Appl) v1 (THead (Bind Abst) u t0)) (\lambda (e: T).(match e return (\lambda 
24384 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
24385 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
24386 _) \Rightarrow False | (Flat f) \Rightarrow (match f return (\lambda (_: 
24387 F).Prop) with [Appl \Rightarrow True | Cast \Rightarrow False])])])) I (THead 
24388 (Flat Cast) u1 t1) H2) in (False_ind ((eq T (THead (Bind Abbr) v2 t2) x) \to 
24389 ((pr0 v1 v2) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda 
24390 (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
24391 T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 
24392 x))))) H4)) H3 H0 H1))) | (pr0_upsilon b H0 v1 v2 H1 u0 u2 H2 t0 t2 H3) 
24393 \Rightarrow (\lambda (H4: (eq T (THead (Flat Appl) v1 (THead (Bind b) u0 t0)) 
24394 (THead (Flat Cast) u1 t1))).(\lambda (H5: (eq T (THead (Bind b) u2 (THead 
24395 (Flat Appl) (lift (S O) O v2) t2)) x)).((let H6 \def (eq_ind T (THead (Flat 
24396 Appl) v1 (THead (Bind b) u0 t0)) (\lambda (e: T).(match e return (\lambda (_: 
24397 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
24398 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
24399 _) \Rightarrow False | (Flat f) \Rightarrow (match f return (\lambda (_: 
24400 F).Prop) with [Appl \Rightarrow True | Cast \Rightarrow False])])])) I (THead 
24401 (Flat Cast) u1 t1) H4) in (False_ind ((eq T (THead (Bind b) u2 (THead (Flat 
24402 Appl) (lift (S O) O v2) t2)) x) \to ((not (eq B b Abst)) \to ((pr0 v1 v2) \to 
24403 ((pr0 u0 u2) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u3: T).(\lambda 
24404 (t3: T).(eq T x (THead (Flat Cast) u3 t3)))) (\lambda (u3: T).(\lambda (_: 
24405 T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 
24406 x))))))) H6)) H5 H0 H1 H2 H3))) | (pr0_delta u0 u2 H0 t0 t2 H1 w H2) 
24407 \Rightarrow (\lambda (H3: (eq T (THead (Bind Abbr) u0 t0) (THead (Flat Cast) 
24408 u1 t1))).(\lambda (H4: (eq T (THead (Bind Abbr) u2 w) x)).((let H5 \def 
24409 (eq_ind T (THead (Bind Abbr) u0 t0) (\lambda (e: T).(match e return (\lambda 
24410 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
24411 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
24412 _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Cast) u1 
24413 t1) H3) in (False_ind ((eq T (THead (Bind Abbr) u2 w) x) \to ((pr0 u0 u2) \to 
24414 ((pr0 t0 t2) \to ((subst0 O u2 t2 w) \to (or (ex3_2 T T (\lambda (u3: 
24415 T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u3 t3)))) (\lambda (u3: 
24416 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
24417 t3)))) (pr0 t1 x)))))) H5)) H4 H0 H1 H2))) | (pr0_zeta b H0 t0 t2 H1 u) 
24418 \Rightarrow (\lambda (H2: (eq T (THead (Bind b) u (lift (S O) O t0)) (THead 
24419 (Flat Cast) u1 t1))).(\lambda (H3: (eq T t2 x)).((let H4 \def (eq_ind T 
24420 (THead (Bind b) u (lift (S O) O t0)) (\lambda (e: T).(match e return (\lambda 
24421 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
24422 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
24423 _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Cast) u1 
24424 t1) H2) in (False_ind ((eq T t2 x) \to ((not (eq B b Abst)) \to ((pr0 t0 t2) 
24425 \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat 
24426 Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
24427 T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 x))))) H4)) H3 H0 H1))) | 
24428 (pr0_epsilon t0 t2 H0 u) \Rightarrow (\lambda (H1: (eq T (THead (Flat Cast) u 
24429 t0) (THead (Flat Cast) u1 t1))).(\lambda (H2: (eq T t2 x)).((let H3 \def 
24430 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
24431 _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
24432 (THead (Flat Cast) u t0) (THead (Flat Cast) u1 t1) H1) in ((let H4 \def 
24433 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
24434 _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t _) \Rightarrow t])) 
24435 (THead (Flat Cast) u t0) (THead (Flat Cast) u1 t1) H1) in (eq_ind T u1 
24436 (\lambda (_: T).((eq T t0 t1) \to ((eq T t2 x) \to ((pr0 t0 t2) \to (or 
24437 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 
24438 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
24439 T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 x)))))) (\lambda (H5: (eq T t0 
24440 t1)).(eq_ind T t1 (\lambda (t: T).((eq T t2 x) \to ((pr0 t t2) \to (or (ex3_2 
24441 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) 
24442 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: 
24443 T).(pr0 t1 t3)))) (pr0 t1 x))))) (\lambda (H6: (eq T t2 x)).(eq_ind T x 
24444 (\lambda (t: T).((pr0 t1 t) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
24445 T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 
24446 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 x)))) 
24447 (\lambda (H7: (pr0 t1 x)).(or_intror (ex3_2 T T (\lambda (u2: T).(\lambda 
24448 (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
24449 T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 x) 
24450 H7)) t2 (sym_eq T t2 x H6))) t0 (sym_eq T t0 t1 H5))) u (sym_eq T u u1 H4))) 
24451 H3)) H2 H0)))]) in (H0 (refl_equal T (THead (Flat Cast) u1 t1)) (refl_equal T 
24452 x)))))).
24453
24454 theorem pr0_lift:
24455  \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (h: nat).(\forall 
24456 (d: nat).(pr0 (lift h d t1) (lift h d t2))))))
24457 \def
24458  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t1 t2)).(pr0_ind (\lambda 
24459 (t: T).(\lambda (t0: T).(\forall (h: nat).(\forall (d: nat).(pr0 (lift h d t) 
24460 (lift h d t0)))))) (\lambda (t: T).(\lambda (h: nat).(\lambda (d: 
24461 nat).(pr0_refl (lift h d t))))) (\lambda (u1: T).(\lambda (u2: T).(\lambda 
24462 (_: (pr0 u1 u2)).(\lambda (H1: ((\forall (h: nat).(\forall (d: nat).(pr0 
24463 (lift h d u1) (lift h d u2)))))).(\lambda (t0: T).(\lambda (t3: T).(\lambda 
24464 (_: (pr0 t0 t3)).(\lambda (H3: ((\forall (h: nat).(\forall (d: nat).(pr0 
24465 (lift h d t0) (lift h d t3)))))).(\lambda (k: K).(\lambda (h: nat).(\lambda 
24466 (d: nat).(eq_ind_r T (THead k (lift h d u1) (lift h (s k d) t0)) (\lambda (t: 
24467 T).(pr0 t (lift h d (THead k u2 t3)))) (eq_ind_r T (THead k (lift h d u2) 
24468 (lift h (s k d) t3)) (\lambda (t: T).(pr0 (THead k (lift h d u1) (lift h (s k 
24469 d) t0)) t)) (pr0_comp (lift h d u1) (lift h d u2) (H1 h d) (lift h (s k d) 
24470 t0) (lift h (s k d) t3) (H3 h (s k d)) k) (lift h d (THead k u2 t3)) 
24471 (lift_head k u2 t3 h d)) (lift h d (THead k u1 t0)) (lift_head k u1 t0 h 
24472 d))))))))))))) (\lambda (u: T).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: 
24473 (pr0 v1 v2)).(\lambda (H1: ((\forall (h: nat).(\forall (d: nat).(pr0 (lift h 
24474 d v1) (lift h d v2)))))).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (pr0 
24475 t0 t3)).(\lambda (H3: ((\forall (h: nat).(\forall (d: nat).(pr0 (lift h d t0) 
24476 (lift h d t3)))))).(\lambda (h: nat).(\lambda (d: nat).(eq_ind_r T (THead 
24477 (Flat Appl) (lift h d v1) (lift h (s (Flat Appl) d) (THead (Bind Abst) u 
24478 t0))) (\lambda (t: T).(pr0 t (lift h d (THead (Bind Abbr) v2 t3)))) (eq_ind_r 
24479 T (THead (Bind Abst) (lift h (s (Flat Appl) d) u) (lift h (s (Bind Abst) (s 
24480 (Flat Appl) d)) t0)) (\lambda (t: T).(pr0 (THead (Flat Appl) (lift h d v1) t) 
24481 (lift h d (THead (Bind Abbr) v2 t3)))) (eq_ind_r T (THead (Bind Abbr) (lift h 
24482 d v2) (lift h (s (Bind Abbr) d) t3)) (\lambda (t: T).(pr0 (THead (Flat Appl) 
24483 (lift h d v1) (THead (Bind Abst) (lift h (s (Flat Appl) d) u) (lift h (s 
24484 (Bind Abst) (s (Flat Appl) d)) t0))) t)) (pr0_beta (lift h (s (Flat Appl) d) 
24485 u) (lift h d v1) (lift h d v2) (H1 h d) (lift h (s (Bind Abst) (s (Flat Appl) 
24486 d)) t0) (lift h (s (Bind Abbr) d) t3) (H3 h (s (Bind Abbr) d))) (lift h d 
24487 (THead (Bind Abbr) v2 t3)) (lift_head (Bind Abbr) v2 t3 h d)) (lift h (s 
24488 (Flat Appl) d) (THead (Bind Abst) u t0)) (lift_head (Bind Abst) u t0 h (s 
24489 (Flat Appl) d))) (lift h d (THead (Flat Appl) v1 (THead (Bind Abst) u t0))) 
24490 (lift_head (Flat Appl) v1 (THead (Bind Abst) u t0) h d))))))))))))) (\lambda 
24491 (b: B).(\lambda (H0: (not (eq B b Abst))).(\lambda (v1: T).(\lambda (v2: 
24492 T).(\lambda (_: (pr0 v1 v2)).(\lambda (H2: ((\forall (h: nat).(\forall (d: 
24493 nat).(pr0 (lift h d v1) (lift h d v2)))))).(\lambda (u1: T).(\lambda (u2: 
24494 T).(\lambda (_: (pr0 u1 u2)).(\lambda (H4: ((\forall (h: nat).(\forall (d: 
24495 nat).(pr0 (lift h d u1) (lift h d u2)))))).(\lambda (t0: T).(\lambda (t3: 
24496 T).(\lambda (_: (pr0 t0 t3)).(\lambda (H6: ((\forall (h: nat).(\forall (d: 
24497 nat).(pr0 (lift h d t0) (lift h d t3)))))).(\lambda (h: nat).(\lambda (d: 
24498 nat).(eq_ind_r T (THead (Flat Appl) (lift h d v1) (lift h (s (Flat Appl) d) 
24499 (THead (Bind b) u1 t0))) (\lambda (t: T).(pr0 t (lift h d (THead (Bind b) u2 
24500 (THead (Flat Appl) (lift (S O) O v2) t3))))) (eq_ind_r T (THead (Bind b) 
24501 (lift h (s (Flat Appl) d) u1) (lift h (s (Bind b) (s (Flat Appl) d)) t0)) 
24502 (\lambda (t: T).(pr0 (THead (Flat Appl) (lift h d v1) t) (lift h d (THead 
24503 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3))))) (eq_ind_r T (THead 
24504 (Bind b) (lift h d u2) (lift h (s (Bind b) d) (THead (Flat Appl) (lift (S O) 
24505 O v2) t3))) (\lambda (t: T).(pr0 (THead (Flat Appl) (lift h d v1) (THead 
24506 (Bind b) (lift h (s (Flat Appl) d) u1) (lift h (s (Bind b) (s (Flat Appl) d)) 
24507 t0))) t)) (eq_ind_r T (THead (Flat Appl) (lift h (s (Bind b) d) (lift (S O) O 
24508 v2)) (lift h (s (Flat Appl) (s (Bind b) d)) t3)) (\lambda (t: T).(pr0 (THead 
24509 (Flat Appl) (lift h d v1) (THead (Bind b) (lift h (s (Flat Appl) d) u1) (lift 
24510 h (s (Bind b) (s (Flat Appl) d)) t0))) (THead (Bind b) (lift h d u2) t))) 
24511 (eq_ind nat (plus (S O) d) (\lambda (n: nat).(pr0 (THead (Flat Appl) (lift h 
24512 d v1) (THead (Bind b) (lift h d u1) (lift h n t0))) (THead (Bind b) (lift h d 
24513 u2) (THead (Flat Appl) (lift h n (lift (S O) O v2)) (lift h n t3))))) 
24514 (eq_ind_r T (lift (S O) O (lift h d v2)) (\lambda (t: T).(pr0 (THead (Flat 
24515 Appl) (lift h d v1) (THead (Bind b) (lift h d u1) (lift h (plus (S O) d) 
24516 t0))) (THead (Bind b) (lift h d u2) (THead (Flat Appl) t (lift h (plus (S O) 
24517 d) t3))))) (pr0_upsilon b H0 (lift h d v1) (lift h d v2) (H2 h d) (lift h d 
24518 u1) (lift h d u2) (H4 h d) (lift h (plus (S O) d) t0) (lift h (plus (S O) d) 
24519 t3) (H6 h (plus (S O) d))) (lift h (plus (S O) d) (lift (S O) O v2)) (lift_d 
24520 v2 h (S O) d O (le_O_n d))) (S d) (refl_equal nat (S d))) (lift h (s (Bind b) 
24521 d) (THead (Flat Appl) (lift (S O) O v2) t3)) (lift_head (Flat Appl) (lift (S 
24522 O) O v2) t3 h (s (Bind b) d))) (lift h d (THead (Bind b) u2 (THead (Flat 
24523 Appl) (lift (S O) O v2) t3))) (lift_head (Bind b) u2 (THead (Flat Appl) (lift 
24524 (S O) O v2) t3) h d)) (lift h (s (Flat Appl) d) (THead (Bind b) u1 t0)) 
24525 (lift_head (Bind b) u1 t0 h (s (Flat Appl) d))) (lift h d (THead (Flat Appl) 
24526 v1 (THead (Bind b) u1 t0))) (lift_head (Flat Appl) v1 (THead (Bind b) u1 t0) 
24527 h d)))))))))))))))))) (\lambda (u1: T).(\lambda (u2: T).(\lambda (_: (pr0 u1 
24528 u2)).(\lambda (H1: ((\forall (h: nat).(\forall (d: nat).(pr0 (lift h d u1) 
24529 (lift h d u2)))))).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (pr0 t0 
24530 t3)).(\lambda (H3: ((\forall (h: nat).(\forall (d: nat).(pr0 (lift h d t0) 
24531 (lift h d t3)))))).(\lambda (w: T).(\lambda (H4: (subst0 O u2 t3 w)).(\lambda 
24532 (h: nat).(\lambda (d: nat).(eq_ind_r T (THead (Bind Abbr) (lift h d u1) (lift 
24533 h (s (Bind Abbr) d) t0)) (\lambda (t: T).(pr0 t (lift h d (THead (Bind Abbr) 
24534 u2 w)))) (eq_ind_r T (THead (Bind Abbr) (lift h d u2) (lift h (s (Bind Abbr) 
24535 d) w)) (\lambda (t: T).(pr0 (THead (Bind Abbr) (lift h d u1) (lift h (s (Bind 
24536 Abbr) d) t0)) t)) (pr0_delta (lift h d u1) (lift h d u2) (H1 h d) (lift h (S 
24537 d) t0) (lift h (S d) t3) (H3 h (S d)) (lift h (S d) w) (let d' \def (S d) in 
24538 (eq_ind nat (minus (S d) (S O)) (\lambda (n: nat).(subst0 O (lift h n u2) 
24539 (lift h d' t3) (lift h d' w))) (subst0_lift_lt t3 w u2 O H4 (S d) (lt_le_S O 
24540 (S d) (le_lt_n_Sm O d (le_O_n d))) h) d (eq_ind nat d (\lambda (n: nat).(eq 
24541 nat n d)) (refl_equal nat d) (minus d O) (minus_n_O d))))) (lift h d (THead 
24542 (Bind Abbr) u2 w)) (lift_head (Bind Abbr) u2 w h d)) (lift h d (THead (Bind 
24543 Abbr) u1 t0)) (lift_head (Bind Abbr) u1 t0 h d)))))))))))))) (\lambda (b: 
24544 B).(\lambda (H0: (not (eq B b Abst))).(\lambda (t0: T).(\lambda (t3: 
24545 T).(\lambda (_: (pr0 t0 t3)).(\lambda (H2: ((\forall (h: nat).(\forall (d: 
24546 nat).(pr0 (lift h d t0) (lift h d t3)))))).(\lambda (u: T).(\lambda (h: 
24547 nat).(\lambda (d: nat).(eq_ind_r T (THead (Bind b) (lift h d u) (lift h (s 
24548 (Bind b) d) (lift (S O) O t0))) (\lambda (t: T).(pr0 t (lift h d t3))) 
24549 (eq_ind nat (plus (S O) d) (\lambda (n: nat).(pr0 (THead (Bind b) (lift h d 
24550 u) (lift h n (lift (S O) O t0))) (lift h d t3))) (eq_ind_r T (lift (S O) O 
24551 (lift h d t0)) (\lambda (t: T).(pr0 (THead (Bind b) (lift h d u) t) (lift h d 
24552 t3))) (pr0_zeta b H0 (lift h d t0) (lift h d t3) (H2 h d) (lift h d u)) (lift 
24553 h (plus (S O) d) (lift (S O) O t0)) (lift_d t0 h (S O) d O (le_O_n d))) (S d) 
24554 (refl_equal nat (S d))) (lift h d (THead (Bind b) u (lift (S O) O t0))) 
24555 (lift_head (Bind b) u (lift (S O) O t0) h d))))))))))) (\lambda (t0: 
24556 T).(\lambda (t3: T).(\lambda (_: (pr0 t0 t3)).(\lambda (H1: ((\forall (h: 
24557 nat).(\forall (d: nat).(pr0 (lift h d t0) (lift h d t3)))))).(\lambda (u: 
24558 T).(\lambda (h: nat).(\lambda (d: nat).(eq_ind_r T (THead (Flat Cast) (lift h 
24559 d u) (lift h (s (Flat Cast) d) t0)) (\lambda (t: T).(pr0 t (lift h d t3))) 
24560 (pr0_epsilon (lift h (s (Flat Cast) d) t0) (lift h d t3) (H1 h d) (lift h d 
24561 u)) (lift h d (THead (Flat Cast) u t0)) (lift_head (Flat Cast) u t0 h 
24562 d))))))))) t1 t2 H))).
24563
24564 theorem pr0_gen_abbr:
24565  \forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr0 (THead (Bind Abbr) u1 
24566 t1) x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead 
24567 (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
24568 (u2: T).(\lambda (t2: T).(or (pr0 t1 t2) (ex2 T (\lambda (y: T).(pr0 t1 y)) 
24569 (\lambda (y: T).(subst0 O u2 y t2))))))) (pr0 t1 (lift (S O) O x))))))
24570 \def
24571  \lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda (H: (pr0 (THead 
24572 (Bind Abbr) u1 t1) x)).(let H0 \def (match H return (\lambda (t: T).(\lambda 
24573 (t0: T).(\lambda (_: (pr0 t t0)).((eq T t (THead (Bind Abbr) u1 t1)) \to ((eq 
24574 T t0 x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead 
24575 (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
24576 (u2: T).(\lambda (t2: T).(or (pr0 t1 t2) (ex2 T (\lambda (y: T).(pr0 t1 y)) 
24577 (\lambda (y: T).(subst0 O u2 y t2))))))) (pr0 t1 (lift (S O) O x)))))))) with 
24578 [(pr0_refl t) \Rightarrow (\lambda (H0: (eq T t (THead (Bind Abbr) u1 
24579 t1))).(\lambda (H1: (eq T t x)).(eq_ind T (THead (Bind Abbr) u1 t1) (\lambda 
24580 (t0: T).((eq T t0 x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq 
24581 T x (THead (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 
24582 u2))) (\lambda (u2: T).(\lambda (t2: T).(or (pr0 t1 t2) (ex2 T (\lambda (y: 
24583 T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u2 y t2))))))) (pr0 t1 (lift (S O) O 
24584 x))))) (\lambda (H2: (eq T (THead (Bind Abbr) u1 t1) x)).(eq_ind T (THead 
24585 (Bind Abbr) u1 t1) (\lambda (t0: T).(or (ex3_2 T T (\lambda (u2: T).(\lambda 
24586 (t2: T).(eq T t0 (THead (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
24587 T).(pr0 u1 u2))) (\lambda (u2: T).(\lambda (t2: T).(or (pr0 t1 t2) (ex2 T 
24588 (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u2 y t2))))))) (pr0 t1 
24589 (lift (S O) O t0)))) (or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
24590 T).(eq T (THead (Bind Abbr) u1 t1) (THead (Bind Abbr) u2 t2)))) (\lambda (u2: 
24591 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (u2: T).(\lambda (t2: T).(or (pr0 
24592 t1 t2) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u2 y 
24593 t2))))))) (pr0 t1 (lift (S O) O (THead (Bind Abbr) u1 t1))) (ex3_2_intro T T 
24594 (\lambda (u2: T).(\lambda (t2: T).(eq T (THead (Bind Abbr) u1 t1) (THead 
24595 (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
24596 (u2: T).(\lambda (t2: T).(or (pr0 t1 t2) (ex2 T (\lambda (y: T).(pr0 t1 y)) 
24597 (\lambda (y: T).(subst0 O u2 y t2)))))) u1 t1 (refl_equal T (THead (Bind 
24598 Abbr) u1 t1)) (pr0_refl u1) (or_introl (pr0 t1 t1) (ex2 T (\lambda (y: 
24599 T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u1 y t1))) (pr0_refl t1)))) x H2)) t 
24600 (sym_eq T t (THead (Bind Abbr) u1 t1) H0) H1))) | (pr0_comp u0 u2 H0 t0 t2 H1 
24601 k) \Rightarrow (\lambda (H2: (eq T (THead k u0 t0) (THead (Bind Abbr) u1 
24602 t1))).(\lambda (H3: (eq T (THead k u2 t2) x)).((let H4 \def (f_equal T T 
24603 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
24604 \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
24605 (THead k u0 t0) (THead (Bind Abbr) u1 t1) H2) in ((let H5 \def (f_equal T T 
24606 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
24607 \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) 
24608 (THead k u0 t0) (THead (Bind Abbr) u1 t1) H2) in ((let H6 \def (f_equal T K 
24609 (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort _) 
24610 \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) \Rightarrow k])) 
24611 (THead k u0 t0) (THead (Bind Abbr) u1 t1) H2) in (eq_ind K (Bind Abbr) 
24612 (\lambda (k0: K).((eq T u0 u1) \to ((eq T t0 t1) \to ((eq T (THead k0 u2 t2) 
24613 x) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u3: 
24614 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u3 t3)))) (\lambda (u3: 
24615 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (u3: T).(\lambda (t3: T).(or (pr0 
24616 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u3 y 
24617 t3))))))) (pr0 t1 (lift (S O) O x))))))))) (\lambda (H7: (eq T u0 
24618 u1)).(eq_ind T u1 (\lambda (t: T).((eq T t0 t1) \to ((eq T (THead (Bind Abbr) 
24619 u2 t2) x) \to ((pr0 t u2) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u3: 
24620 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u3 t3)))) (\lambda (u3: 
24621 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (u3: T).(\lambda (t3: T).(or (pr0 
24622 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u3 y 
24623 t3))))))) (pr0 t1 (lift (S O) O x)))))))) (\lambda (H8: (eq T t0 t1)).(eq_ind 
24624 T t1 (\lambda (t: T).((eq T (THead (Bind Abbr) u2 t2) x) \to ((pr0 u1 u2) \to 
24625 ((pr0 t t2) \to (or (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T x 
24626 (THead (Bind Abbr) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) 
24627 (\lambda (u3: T).(\lambda (t3: T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 
24628 t1 y)) (\lambda (y: T).(subst0 O u3 y t3))))))) (pr0 t1 (lift (S O) O 
24629 x))))))) (\lambda (H9: (eq T (THead (Bind Abbr) u2 t2) x)).(eq_ind T (THead 
24630 (Bind Abbr) u2 t2) (\lambda (t: T).((pr0 u1 u2) \to ((pr0 t1 t2) \to (or 
24631 (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T t (THead (Bind Abbr) u3 
24632 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (u3: 
24633 T).(\lambda (t3: T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) 
24634 (\lambda (y: T).(subst0 O u3 y t3))))))) (pr0 t1 (lift (S O) O t)))))) 
24635 (\lambda (H10: (pr0 u1 u2)).(\lambda (H11: (pr0 t1 t2)).(or_introl (ex3_2 T T 
24636 (\lambda (u3: T).(\lambda (t3: T).(eq T (THead (Bind Abbr) u2 t2) (THead 
24637 (Bind Abbr) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda 
24638 (u3: T).(\lambda (t3: T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) 
24639 (\lambda (y: T).(subst0 O u3 y t3))))))) (pr0 t1 (lift (S O) O (THead (Bind 
24640 Abbr) u2 t2))) (ex3_2_intro T T (\lambda (u3: T).(\lambda (t3: T).(eq T 
24641 (THead (Bind Abbr) u2 t2) (THead (Bind Abbr) u3 t3)))) (\lambda (u3: 
24642 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (u3: T).(\lambda (t3: T).(or (pr0 
24643 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u3 y 
24644 t3)))))) u2 t2 (refl_equal T (THead (Bind Abbr) u2 t2)) H10 (or_introl (pr0 
24645 t1 t2) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u2 y 
24646 t2))) H11))))) x H9)) t0 (sym_eq T t0 t1 H8))) u0 (sym_eq T u0 u1 H7))) k 
24647 (sym_eq K k (Bind Abbr) H6))) H5)) H4)) H3 H0 H1))) | (pr0_beta u v1 v2 H0 t0 
24648 t2 H1) \Rightarrow (\lambda (H2: (eq T (THead (Flat Appl) v1 (THead (Bind 
24649 Abst) u t0)) (THead (Bind Abbr) u1 t1))).(\lambda (H3: (eq T (THead (Bind 
24650 Abbr) v2 t2) x)).((let H4 \def (eq_ind T (THead (Flat Appl) v1 (THead (Bind 
24651 Abst) u t0)) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
24652 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
24653 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
24654 False | (Flat _) \Rightarrow True])])) I (THead (Bind Abbr) u1 t1) H2) in 
24655 (False_ind ((eq T (THead (Bind Abbr) v2 t2) x) \to ((pr0 v1 v2) \to ((pr0 t0 
24656 t2) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
24657 Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (u2: 
24658 T).(\lambda (t3: T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) 
24659 (\lambda (y: T).(subst0 O u2 y t3))))))) (pr0 t1 (lift (S O) O x)))))) H4)) 
24660 H3 H0 H1))) | (pr0_upsilon b H0 v1 v2 H1 u0 u2 H2 t0 t2 H3) \Rightarrow 
24661 (\lambda (H4: (eq T (THead (Flat Appl) v1 (THead (Bind b) u0 t0)) (THead 
24662 (Bind Abbr) u1 t1))).(\lambda (H5: (eq T (THead (Bind b) u2 (THead (Flat 
24663 Appl) (lift (S O) O v2) t2)) x)).((let H6 \def (eq_ind T (THead (Flat Appl) 
24664 v1 (THead (Bind b) u0 t0)) (\lambda (e: T).(match e return (\lambda (_: 
24665 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
24666 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
24667 _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind Abbr) u1 
24668 t1) H4) in (False_ind ((eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
24669 O) O v2) t2)) x) \to ((not (eq B b Abst)) \to ((pr0 v1 v2) \to ((pr0 u0 u2) 
24670 \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T x 
24671 (THead (Bind Abbr) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) 
24672 (\lambda (u3: T).(\lambda (t3: T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 
24673 t1 y)) (\lambda (y: T).(subst0 O u3 y t3))))))) (pr0 t1 (lift (S O) O 
24674 x)))))))) H6)) H5 H0 H1 H2 H3))) | (pr0_delta u0 u2 H0 t0 t2 H1 w H2) 
24675 \Rightarrow (\lambda (H3: (eq T (THead (Bind Abbr) u0 t0) (THead (Bind Abbr) 
24676 u1 t1))).(\lambda (H4: (eq T (THead (Bind Abbr) u2 w) x)).((let H5 \def 
24677 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
24678 _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
24679 (THead (Bind Abbr) u0 t0) (THead (Bind Abbr) u1 t1) H3) in ((let H6 \def 
24680 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
24681 _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) 
24682 (THead (Bind Abbr) u0 t0) (THead (Bind Abbr) u1 t1) H3) in (eq_ind T u1 
24683 (\lambda (t: T).((eq T t0 t1) \to ((eq T (THead (Bind Abbr) u2 w) x) \to 
24684 ((pr0 t u2) \to ((pr0 t0 t2) \to ((subst0 O u2 t2 w) \to (or (ex3_2 T T 
24685 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u3 t3)))) 
24686 (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (u3: T).(\lambda (t3: 
24687 T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 
24688 O u3 y t3))))))) (pr0 t1 (lift (S O) O x))))))))) (\lambda (H7: (eq T t0 
24689 t1)).(eq_ind T t1 (\lambda (t: T).((eq T (THead (Bind Abbr) u2 w) x) \to 
24690 ((pr0 u1 u2) \to ((pr0 t t2) \to ((subst0 O u2 t2 w) \to (or (ex3_2 T T 
24691 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u3 t3)))) 
24692 (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (u3: T).(\lambda (t3: 
24693 T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 
24694 O u3 y t3))))))) (pr0 t1 (lift (S O) O x)))))))) (\lambda (H8: (eq T (THead 
24695 (Bind Abbr) u2 w) x)).(eq_ind T (THead (Bind Abbr) u2 w) (\lambda (t: 
24696 T).((pr0 u1 u2) \to ((pr0 t1 t2) \to ((subst0 O u2 t2 w) \to (or (ex3_2 T T 
24697 (\lambda (u3: T).(\lambda (t3: T).(eq T t (THead (Bind Abbr) u3 t3)))) 
24698 (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (u3: T).(\lambda (t3: 
24699 T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 
24700 O u3 y t3))))))) (pr0 t1 (lift (S O) O t))))))) (\lambda (H9: (pr0 u1 
24701 u2)).(\lambda (H10: (pr0 t1 t2)).(\lambda (H11: (subst0 O u2 t2 
24702 w)).(or_introl (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T (THead 
24703 (Bind Abbr) u2 w) (THead (Bind Abbr) u3 t3)))) (\lambda (u3: T).(\lambda (_: 
24704 T).(pr0 u1 u3))) (\lambda (u3: T).(\lambda (t3: T).(or (pr0 t1 t3) (ex2 T 
24705 (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u3 y t3))))))) (pr0 t1 
24706 (lift (S O) O (THead (Bind Abbr) u2 w))) (ex3_2_intro T T (\lambda (u3: 
24707 T).(\lambda (t3: T).(eq T (THead (Bind Abbr) u2 w) (THead (Bind Abbr) u3 
24708 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (u3: 
24709 T).(\lambda (t3: T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) 
24710 (\lambda (y: T).(subst0 O u3 y t3)))))) u2 w (refl_equal T (THead (Bind Abbr) 
24711 u2 w)) H9 (or_intror (pr0 t1 w) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda 
24712 (y: T).(subst0 O u2 y w))) (ex_intro2 T (\lambda (y: T).(pr0 t1 y)) (\lambda 
24713 (y: T).(subst0 O u2 y w)) t2 H10 H11))))))) x H8)) t0 (sym_eq T t0 t1 H7))) 
24714 u0 (sym_eq T u0 u1 H6))) H5)) H4 H0 H1 H2))) | (pr0_zeta b H0 t0 t2 H1 u) 
24715 \Rightarrow (\lambda (H2: (eq T (THead (Bind b) u (lift (S O) O t0)) (THead 
24716 (Bind Abbr) u1 t1))).(\lambda (H3: (eq T t2 x)).((let H4 \def (f_equal T T 
24717 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
24718 \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T 
24719 \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow 
24720 (TLRef (match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) 
24721 | (THead k u t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) 
24722 t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t0) | (TLRef _) 
24723 \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T 
24724 \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow 
24725 (TLRef (match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) 
24726 | (THead k u t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) 
24727 t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t0) | (THead _ _ t) 
24728 \Rightarrow t])) (THead (Bind b) u (lift (S O) O t0)) (THead (Bind Abbr) u1 
24729 t1) H2) in ((let H5 \def (f_equal T T (\lambda (e: T).(match e return 
24730 (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | 
24731 (THead _ t _) \Rightarrow t])) (THead (Bind b) u (lift (S O) O t0)) (THead 
24732 (Bind Abbr) u1 t1) H2) in ((let H6 \def (f_equal T B (\lambda (e: T).(match e 
24733 return (\lambda (_: T).B) with [(TSort _) \Rightarrow b | (TLRef _) 
24734 \Rightarrow b | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).B) 
24735 with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b])])) (THead (Bind b) u 
24736 (lift (S O) O t0)) (THead (Bind Abbr) u1 t1) H2) in (eq_ind B Abbr (\lambda 
24737 (b0: B).((eq T u u1) \to ((eq T (lift (S O) O t0) t1) \to ((eq T t2 x) \to 
24738 ((not (eq B b0 Abst)) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u2: 
24739 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
24740 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (u2: T).(\lambda (t3: T).(or (pr0 
24741 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u2 y 
24742 t3))))))) (pr0 t1 (lift (S O) O x))))))))) (\lambda (H7: (eq T u u1)).(eq_ind 
24743 T u1 (\lambda (_: T).((eq T (lift (S O) O t0) t1) \to ((eq T t2 x) \to ((not 
24744 (eq B Abbr Abst)) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u2: 
24745 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
24746 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (u2: T).(\lambda (t3: T).(or (pr0 
24747 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u2 y 
24748 t3))))))) (pr0 t1 (lift (S O) O x)))))))) (\lambda (H8: (eq T (lift (S O) O 
24749 t0) t1)).(eq_ind T (lift (S O) O t0) (\lambda (t: T).((eq T t2 x) \to ((not 
24750 (eq B Abbr Abst)) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u2: 
24751 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
24752 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (u2: T).(\lambda (t3: T).(or (pr0 t 
24753 t3) (ex2 T (\lambda (y: T).(pr0 t y)) (\lambda (y: T).(subst0 O u2 y 
24754 t3))))))) (pr0 t (lift (S O) O x))))))) (\lambda (H9: (eq T t2 x)).(eq_ind T 
24755 x (\lambda (t: T).((not (eq B Abbr Abst)) \to ((pr0 t0 t) \to (or (ex3_2 T T 
24756 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) 
24757 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (u2: T).(\lambda (t3: 
24758 T).(or (pr0 (lift (S O) O t0) t3) (ex2 T (\lambda (y: T).(pr0 (lift (S O) O 
24759 t0) y)) (\lambda (y: T).(subst0 O u2 y t3))))))) (pr0 (lift (S O) O t0) (lift 
24760 (S O) O x)))))) (\lambda (_: (not (eq B Abbr Abst))).(\lambda (H11: (pr0 t0 
24761 x)).(or_intror (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead 
24762 (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
24763 (u2: T).(\lambda (t3: T).(or (pr0 (lift (S O) O t0) t3) (ex2 T (\lambda (y: 
24764 T).(pr0 (lift (S O) O t0) y)) (\lambda (y: T).(subst0 O u2 y t3))))))) (pr0 
24765 (lift (S O) O t0) (lift (S O) O x)) (pr0_lift t0 x H11 (S O) O)))) t2 (sym_eq 
24766 T t2 x H9))) t1 H8)) u (sym_eq T u u1 H7))) b (sym_eq B b Abbr H6))) H5)) 
24767 H4)) H3 H0 H1))) | (pr0_epsilon t0 t2 H0 u) \Rightarrow (\lambda (H1: (eq T 
24768 (THead (Flat Cast) u t0) (THead (Bind Abbr) u1 t1))).(\lambda (H2: (eq T t2 
24769 x)).((let H3 \def (eq_ind T (THead (Flat Cast) u t0) (\lambda (e: T).(match e 
24770 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
24771 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
24772 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
24773 (THead (Bind Abbr) u1 t1) H1) in (False_ind ((eq T t2 x) \to ((pr0 t0 t2) \to 
24774 (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) 
24775 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (u2: 
24776 T).(\lambda (t3: T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) 
24777 (\lambda (y: T).(subst0 O u2 y t3))))))) (pr0 t1 (lift (S O) O x))))) H3)) H2 
24778 H0)))]) in (H0 (refl_equal T (THead (Bind Abbr) u1 t1)) (refl_equal T x)))))).
24779
24780 theorem pr0_gen_void:
24781  \forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr0 (THead (Bind Void) u1 
24782 t1) x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead 
24783 (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
24784 (_: T).(\lambda (t2: T).(pr0 t1 t2)))) (pr0 t1 (lift (S O) O x))))))
24785 \def
24786  \lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda (H: (pr0 (THead 
24787 (Bind Void) u1 t1) x)).(let H0 \def (match H return (\lambda (t: T).(\lambda 
24788 (t0: T).(\lambda (_: (pr0 t t0)).((eq T t (THead (Bind Void) u1 t1)) \to ((eq 
24789 T t0 x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead 
24790 (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
24791 (_: T).(\lambda (t2: T).(pr0 t1 t2)))) (pr0 t1 (lift (S O) O x)))))))) with 
24792 [(pr0_refl t) \Rightarrow (\lambda (H0: (eq T t (THead (Bind Void) u1 
24793 t1))).(\lambda (H1: (eq T t x)).(eq_ind T (THead (Bind Void) u1 t1) (\lambda 
24794 (t0: T).((eq T t0 x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq 
24795 T x (THead (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 
24796 u2))) (\lambda (_: T).(\lambda (t2: T).(pr0 t1 t2)))) (pr0 t1 (lift (S O) O 
24797 x))))) (\lambda (H2: (eq T (THead (Bind Void) u1 t1) x)).(eq_ind T (THead 
24798 (Bind Void) u1 t1) (\lambda (t0: T).(or (ex3_2 T T (\lambda (u2: T).(\lambda 
24799 (t2: T).(eq T t0 (THead (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
24800 T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr0 t1 t2)))) (pr0 t1 
24801 (lift (S O) O t0)))) (or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
24802 T).(eq T (THead (Bind Void) u1 t1) (THead (Bind Void) u2 t2)))) (\lambda (u2: 
24803 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr0 t1 
24804 t2)))) (pr0 t1 (lift (S O) O (THead (Bind Void) u1 t1))) (ex3_2_intro T T 
24805 (\lambda (u2: T).(\lambda (t2: T).(eq T (THead (Bind Void) u1 t1) (THead 
24806 (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
24807 (_: T).(\lambda (t2: T).(pr0 t1 t2))) u1 t1 (refl_equal T (THead (Bind Void) 
24808 u1 t1)) (pr0_refl u1) (pr0_refl t1))) x H2)) t (sym_eq T t (THead (Bind Void) 
24809 u1 t1) H0) H1))) | (pr0_comp u0 u2 H0 t0 t2 H1 k) \Rightarrow (\lambda (H2: 
24810 (eq T (THead k u0 t0) (THead (Bind Void) u1 t1))).(\lambda (H3: (eq T (THead 
24811 k u2 t2) x)).((let H4 \def (f_equal T T (\lambda (e: T).(match e return 
24812 (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 
24813 | (THead _ _ t) \Rightarrow t])) (THead k u0 t0) (THead (Bind Void) u1 t1) 
24814 H2) in ((let H5 \def (f_equal T T (\lambda (e: T).(match e return (\lambda 
24815 (_: T).T) with [(TSort _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead 
24816 _ t _) \Rightarrow t])) (THead k u0 t0) (THead (Bind Void) u1 t1) H2) in 
24817 ((let H6 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) 
24818 with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
24819 \Rightarrow k])) (THead k u0 t0) (THead (Bind Void) u1 t1) H2) in (eq_ind K 
24820 (Bind Void) (\lambda (k0: K).((eq T u0 u1) \to ((eq T t0 t1) \to ((eq T 
24821 (THead k0 u2 t2) x) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to (or (ex3_2 T T 
24822 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u3 t3)))) 
24823 (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: 
24824 T).(pr0 t1 t3)))) (pr0 t1 (lift (S O) O x))))))))) (\lambda (H7: (eq T u0 
24825 u1)).(eq_ind T u1 (\lambda (t: T).((eq T t0 t1) \to ((eq T (THead (Bind Void) 
24826 u2 t2) x) \to ((pr0 t u2) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u3: 
24827 T).(\lambda (t3: T).(eq T x (THead (Bind Void) u3 t3)))) (\lambda (u3: 
24828 T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
24829 t3)))) (pr0 t1 (lift (S O) O x)))))))) (\lambda (H8: (eq T t0 t1)).(eq_ind T 
24830 t1 (\lambda (t: T).((eq T (THead (Bind Void) u2 t2) x) \to ((pr0 u1 u2) \to 
24831 ((pr0 t t2) \to (or (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T x 
24832 (THead (Bind Void) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) 
24833 (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 (lift (S O) O 
24834 x))))))) (\lambda (H9: (eq T (THead (Bind Void) u2 t2) x)).(eq_ind T (THead 
24835 (Bind Void) u2 t2) (\lambda (t: T).((pr0 u1 u2) \to ((pr0 t1 t2) \to (or 
24836 (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T t (THead (Bind Void) u3 
24837 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: 
24838 T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 (lift (S O) O t)))))) (\lambda 
24839 (H10: (pr0 u1 u2)).(\lambda (H11: (pr0 t1 t2)).(or_introl (ex3_2 T T (\lambda 
24840 (u3: T).(\lambda (t3: T).(eq T (THead (Bind Void) u2 t2) (THead (Bind Void) 
24841 u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: 
24842 T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 (lift (S O) O (THead (Bind Void) 
24843 u2 t2))) (ex3_2_intro T T (\lambda (u3: T).(\lambda (t3: T).(eq T (THead 
24844 (Bind Void) u2 t2) (THead (Bind Void) u3 t3)))) (\lambda (u3: T).(\lambda (_: 
24845 T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3))) u2 t2 
24846 (refl_equal T (THead (Bind Void) u2 t2)) H10 H11)))) x H9)) t0 (sym_eq T t0 
24847 t1 H8))) u0 (sym_eq T u0 u1 H7))) k (sym_eq K k (Bind Void) H6))) H5)) H4)) 
24848 H3 H0 H1))) | (pr0_beta u v1 v2 H0 t0 t2 H1) \Rightarrow (\lambda (H2: (eq T 
24849 (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (THead (Bind Void) u1 
24850 t1))).(\lambda (H3: (eq T (THead (Bind Abbr) v2 t2) x)).((let H4 \def (eq_ind 
24851 T (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (\lambda (e: T).(match e 
24852 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
24853 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
24854 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
24855 (THead (Bind Void) u1 t1) H2) in (False_ind ((eq T (THead (Bind Abbr) v2 t2) 
24856 x) \to ((pr0 v1 v2) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u2: 
24857 T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
24858 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
24859 t3)))) (pr0 t1 (lift (S O) O x)))))) H4)) H3 H0 H1))) | (pr0_upsilon b H0 v1 
24860 v2 H1 u0 u2 H2 t0 t2 H3) \Rightarrow (\lambda (H4: (eq T (THead (Flat Appl) 
24861 v1 (THead (Bind b) u0 t0)) (THead (Bind Void) u1 t1))).(\lambda (H5: (eq T 
24862 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t2)) x)).((let H6 
24863 \def (eq_ind T (THead (Flat Appl) v1 (THead (Bind b) u0 t0)) (\lambda (e: 
24864 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
24865 (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k return 
24866 (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
24867 True])])) I (THead (Bind Void) u1 t1) H4) in (False_ind ((eq T (THead (Bind 
24868 b) u2 (THead (Flat Appl) (lift (S O) O v2) t2)) x) \to ((not (eq B b Abst)) 
24869 \to ((pr0 v1 v2) \to ((pr0 u0 u2) \to ((pr0 t0 t2) \to (or (ex3_2 T T 
24870 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u3 t3)))) 
24871 (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: 
24872 T).(pr0 t1 t3)))) (pr0 t1 (lift (S O) O x)))))))) H6)) H5 H0 H1 H2 H3))) | 
24873 (pr0_delta u0 u2 H0 t0 t2 H1 w H2) \Rightarrow (\lambda (H3: (eq T (THead 
24874 (Bind Abbr) u0 t0) (THead (Bind Void) u1 t1))).(\lambda (H4: (eq T (THead 
24875 (Bind Abbr) u2 w) x)).((let H5 \def (eq_ind T (THead (Bind Abbr) u0 t0) 
24876 (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
24877 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
24878 (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b 
24879 return (\lambda (_: B).Prop) with [Abbr \Rightarrow True | Abst \Rightarrow 
24880 False | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (THead 
24881 (Bind Void) u1 t1) H3) in (False_ind ((eq T (THead (Bind Abbr) u2 w) x) \to 
24882 ((pr0 u0 u2) \to ((pr0 t0 t2) \to ((subst0 O u2 t2 w) \to (or (ex3_2 T T 
24883 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u3 t3)))) 
24884 (\lambda (u3: T).(\lambda (_: T).(pr0 u1 u3))) (\lambda (_: T).(\lambda (t3: 
24885 T).(pr0 t1 t3)))) (pr0 t1 (lift (S O) O x))))))) H5)) H4 H0 H1 H2))) | 
24886 (pr0_zeta b H0 t0 t2 H1 u) \Rightarrow (\lambda (H2: (eq T (THead (Bind b) u 
24887 (lift (S O) O t0)) (THead (Bind Void) u1 t1))).(\lambda (H3: (eq T t2 
24888 x)).((let H4 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
24889 T).T) with [(TSort _) \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: 
24890 nat) (t: T) on t: T \def (match t with [(TSort n) \Rightarrow (TSort n) | 
24891 (TLRef i) \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | 
24892 false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow (THead k (lref_map f 
24893 d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda (x: nat).(plus x (S 
24894 O))) O t0) | (TLRef _) \Rightarrow ((let rec lref_map (f: ((nat \to nat))) 
24895 (d: nat) (t: T) on t: T \def (match t with [(TSort n) \Rightarrow (TSort n) | 
24896 (TLRef i) \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | 
24897 false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow (THead k (lref_map f 
24898 d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda (x: nat).(plus x (S 
24899 O))) O t0) | (THead _ _ t) \Rightarrow t])) (THead (Bind b) u (lift (S O) O 
24900 t0)) (THead (Bind Void) u1 t1) H2) in ((let H5 \def (f_equal T T (\lambda (e: 
24901 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef 
24902 _) \Rightarrow u | (THead _ t _) \Rightarrow t])) (THead (Bind b) u (lift (S 
24903 O) O t0)) (THead (Bind Void) u1 t1) H2) in ((let H6 \def (f_equal T B 
24904 (\lambda (e: T).(match e return (\lambda (_: T).B) with [(TSort _) 
24905 \Rightarrow b | (TLRef _) \Rightarrow b | (THead k _ _) \Rightarrow (match k 
24906 return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
24907 b])])) (THead (Bind b) u (lift (S O) O t0)) (THead (Bind Void) u1 t1) H2) in 
24908 (eq_ind B Void (\lambda (b0: B).((eq T u u1) \to ((eq T (lift (S O) O t0) t1) 
24909 \to ((eq T t2 x) \to ((not (eq B b0 Abst)) \to ((pr0 t0 t2) \to (or (ex3_2 T 
24910 T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) 
24911 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: 
24912 T).(pr0 t1 t3)))) (pr0 t1 (lift (S O) O x))))))))) (\lambda (H7: (eq T u 
24913 u1)).(eq_ind T u1 (\lambda (_: T).((eq T (lift (S O) O t0) t1) \to ((eq T t2 
24914 x) \to ((not (eq B Void Abst)) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda 
24915 (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
24916 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
24917 t3)))) (pr0 t1 (lift (S O) O x)))))))) (\lambda (H8: (eq T (lift (S O) O t0) 
24918 t1)).(eq_ind T (lift (S O) O t0) (\lambda (t: T).((eq T t2 x) \to ((not (eq B 
24919 Void Abst)) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda 
24920 (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
24921 T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t t3)))) (pr0 t (lift 
24922 (S O) O x))))))) (\lambda (H9: (eq T t2 x)).(eq_ind T x (\lambda (t: T).((not 
24923 (eq B Void Abst)) \to ((pr0 t0 t) \to (or (ex3_2 T T (\lambda (u2: 
24924 T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
24925 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 (lift 
24926 (S O) O t0) t3)))) (pr0 (lift (S O) O t0) (lift (S O) O x)))))) (\lambda (_: 
24927 (not (eq B Void Abst))).(\lambda (H11: (pr0 t0 x)).(or_intror (ex3_2 T T 
24928 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) 
24929 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: 
24930 T).(pr0 (lift (S O) O t0) t3)))) (pr0 (lift (S O) O t0) (lift (S O) O x)) 
24931 (pr0_lift t0 x H11 (S O) O)))) t2 (sym_eq T t2 x H9))) t1 H8)) u (sym_eq T u 
24932 u1 H7))) b (sym_eq B b Void H6))) H5)) H4)) H3 H0 H1))) | (pr0_epsilon t0 t2 
24933 H0 u) \Rightarrow (\lambda (H1: (eq T (THead (Flat Cast) u t0) (THead (Bind 
24934 Void) u1 t1))).(\lambda (H2: (eq T t2 x)).((let H3 \def (eq_ind T (THead 
24935 (Flat Cast) u t0) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
24936 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
24937 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
24938 False | (Flat _) \Rightarrow True])])) I (THead (Bind Void) u1 t1) H1) in 
24939 (False_ind ((eq T t2 x) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u2: 
24940 T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
24941 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
24942 t3)))) (pr0 t1 (lift (S O) O x))))) H3)) H2 H0)))]) in (H0 (refl_equal T 
24943 (THead (Bind Void) u1 t1)) (refl_equal T x)))))).
24944
24945 theorem pr0_gen_lift:
24946  \forall (t1: T).(\forall (x: T).(\forall (h: nat).(\forall (d: nat).((pr0 
24947 (lift h d t1) x) \to (ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda 
24948 (t2: T).(pr0 t1 t2)))))))
24949 \def
24950  \lambda (t1: T).(\lambda (x: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
24951 (H: (pr0 (lift h d t1) x)).(insert_eq T (lift h d t1) (\lambda (t: T).(pr0 t 
24952 x)) (ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(pr0 t1 
24953 t2))) (\lambda (y: T).(\lambda (H0: (pr0 y x)).(unintro nat d (\lambda (n: 
24954 nat).((eq T y (lift h n t1)) \to (ex2 T (\lambda (t2: T).(eq T x (lift h n 
24955 t2))) (\lambda (t2: T).(pr0 t1 t2))))) (unintro T t1 (\lambda (t: T).(\forall 
24956 (x0: nat).((eq T y (lift h x0 t)) \to (ex2 T (\lambda (t2: T).(eq T x (lift h 
24957 x0 t2))) (\lambda (t2: T).(pr0 t t2)))))) (pr0_ind (\lambda (t: T).(\lambda 
24958 (t0: T).(\forall (x0: T).(\forall (x1: nat).((eq T t (lift h x1 x0)) \to (ex2 
24959 T (\lambda (t2: T).(eq T t0 (lift h x1 t2))) (\lambda (t2: T).(pr0 x0 
24960 t2)))))))) (\lambda (t: T).(\lambda (x0: T).(\lambda (x1: nat).(\lambda (H1: 
24961 (eq T t (lift h x1 x0))).(ex_intro2 T (\lambda (t2: T).(eq T t (lift h x1 
24962 t2))) (\lambda (t2: T).(pr0 x0 t2)) x0 H1 (pr0_refl x0)))))) (\lambda (u1: 
24963 T).(\lambda (u2: T).(\lambda (_: (pr0 u1 u2)).(\lambda (H2: ((\forall (x: 
24964 T).(\forall (x0: nat).((eq T u1 (lift h x0 x)) \to (ex2 T (\lambda (t2: 
24965 T).(eq T u2 (lift h x0 t2))) (\lambda (t2: T).(pr0 x t2)))))))).(\lambda (t2: 
24966 T).(\lambda (t3: T).(\lambda (_: (pr0 t2 t3)).(\lambda (H4: ((\forall (x: 
24967 T).(\forall (x0: nat).((eq T t2 (lift h x0 x)) \to (ex2 T (\lambda (t2: 
24968 T).(eq T t3 (lift h x0 t2))) (\lambda (t2: T).(pr0 x t2)))))))).(\lambda (k: 
24969 K).(\lambda (x0: T).(\lambda (x1: nat).(\lambda (H5: (eq T (THead k u1 t2) 
24970 (lift h x1 x0))).(K_ind (\lambda (k0: K).((eq T (THead k0 u1 t2) (lift h x1 
24971 x0)) \to (ex2 T (\lambda (t4: T).(eq T (THead k0 u2 t3) (lift h x1 t4))) 
24972 (\lambda (t4: T).(pr0 x0 t4))))) (\lambda (b: B).(\lambda (H6: (eq T (THead 
24973 (Bind b) u1 t2) (lift h x1 x0))).(ex3_2_ind T T (\lambda (y0: T).(\lambda (z: 
24974 T).(eq T x0 (THead (Bind b) y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T 
24975 u1 (lift h x1 y0)))) (\lambda (_: T).(\lambda (z: T).(eq T t2 (lift h (S x1) 
24976 z)))) (ex2 T (\lambda (t4: T).(eq T (THead (Bind b) u2 t3) (lift h x1 t4))) 
24977 (\lambda (t4: T).(pr0 x0 t4))) (\lambda (x2: T).(\lambda (x3: T).(\lambda 
24978 (H7: (eq T x0 (THead (Bind b) x2 x3))).(\lambda (H8: (eq T u1 (lift h x1 
24979 x2))).(\lambda (H9: (eq T t2 (lift h (S x1) x3))).(eq_ind_r T (THead (Bind b) 
24980 x2 x3) (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind b) u2 t3) 
24981 (lift h x1 t4))) (\lambda (t4: T).(pr0 t t4)))) (ex2_ind T (\lambda (t4: 
24982 T).(eq T t3 (lift h (S x1) t4))) (\lambda (t4: T).(pr0 x3 t4)) (ex2 T 
24983 (\lambda (t4: T).(eq T (THead (Bind b) u2 t3) (lift h x1 t4))) (\lambda (t4: 
24984 T).(pr0 (THead (Bind b) x2 x3) t4))) (\lambda (x4: T).(\lambda (H_x: (eq T t3 
24985 (lift h (S x1) x4))).(\lambda (H10: (pr0 x3 x4)).(eq_ind_r T (lift h (S x1) 
24986 x4) (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind b) u2 t) (lift 
24987 h x1 t4))) (\lambda (t4: T).(pr0 (THead (Bind b) x2 x3) t4)))) (ex2_ind T 
24988 (\lambda (t4: T).(eq T u2 (lift h x1 t4))) (\lambda (t4: T).(pr0 x2 t4)) (ex2 
24989 T (\lambda (t4: T).(eq T (THead (Bind b) u2 (lift h (S x1) x4)) (lift h x1 
24990 t4))) (\lambda (t4: T).(pr0 (THead (Bind b) x2 x3) t4))) (\lambda (x5: 
24991 T).(\lambda (H_x0: (eq T u2 (lift h x1 x5))).(\lambda (H11: (pr0 x2 
24992 x5)).(eq_ind_r T (lift h x1 x5) (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T 
24993 (THead (Bind b) t (lift h (S x1) x4)) (lift h x1 t4))) (\lambda (t4: T).(pr0 
24994 (THead (Bind b) x2 x3) t4)))) (ex_intro2 T (\lambda (t4: T).(eq T (THead 
24995 (Bind b) (lift h x1 x5) (lift h (S x1) x4)) (lift h x1 t4))) (\lambda (t4: 
24996 T).(pr0 (THead (Bind b) x2 x3) t4)) (THead (Bind b) x5 x4) (sym_eq T (lift h 
24997 x1 (THead (Bind b) x5 x4)) (THead (Bind b) (lift h x1 x5) (lift h (S x1) x4)) 
24998 (lift_bind b x5 x4 h x1)) (pr0_comp x2 x5 H11 x3 x4 H10 (Bind b))) u2 
24999 H_x0)))) (H2 x2 x1 H8)) t3 H_x)))) (H4 x3 (S x1) H9)) x0 H7)))))) 
25000 (lift_gen_bind b u1 t2 x0 h x1 H6)))) (\lambda (f: F).(\lambda (H6: (eq T 
25001 (THead (Flat f) u1 t2) (lift h x1 x0))).(ex3_2_ind T T (\lambda (y0: 
25002 T).(\lambda (z: T).(eq T x0 (THead (Flat f) y0 z)))) (\lambda (y0: 
25003 T).(\lambda (_: T).(eq T u1 (lift h x1 y0)))) (\lambda (_: T).(\lambda (z: 
25004 T).(eq T t2 (lift h x1 z)))) (ex2 T (\lambda (t4: T).(eq T (THead (Flat f) u2 
25005 t3) (lift h x1 t4))) (\lambda (t4: T).(pr0 x0 t4))) (\lambda (x2: T).(\lambda 
25006 (x3: T).(\lambda (H7: (eq T x0 (THead (Flat f) x2 x3))).(\lambda (H8: (eq T 
25007 u1 (lift h x1 x2))).(\lambda (H9: (eq T t2 (lift h x1 x3))).(eq_ind_r T 
25008 (THead (Flat f) x2 x3) (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T (THead 
25009 (Flat f) u2 t3) (lift h x1 t4))) (\lambda (t4: T).(pr0 t t4)))) (ex2_ind T 
25010 (\lambda (t4: T).(eq T t3 (lift h x1 t4))) (\lambda (t4: T).(pr0 x3 t4)) (ex2 
25011 T (\lambda (t4: T).(eq T (THead (Flat f) u2 t3) (lift h x1 t4))) (\lambda 
25012 (t4: T).(pr0 (THead (Flat f) x2 x3) t4))) (\lambda (x4: T).(\lambda (H_x: (eq 
25013 T t3 (lift h x1 x4))).(\lambda (H10: (pr0 x3 x4)).(eq_ind_r T (lift h x1 x4) 
25014 (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T (THead (Flat f) u2 t) (lift h 
25015 x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat f) x2 x3) t4)))) (ex2_ind T 
25016 (\lambda (t4: T).(eq T u2 (lift h x1 t4))) (\lambda (t4: T).(pr0 x2 t4)) (ex2 
25017 T (\lambda (t4: T).(eq T (THead (Flat f) u2 (lift h x1 x4)) (lift h x1 t4))) 
25018 (\lambda (t4: T).(pr0 (THead (Flat f) x2 x3) t4))) (\lambda (x5: T).(\lambda 
25019 (H_x0: (eq T u2 (lift h x1 x5))).(\lambda (H11: (pr0 x2 x5)).(eq_ind_r T 
25020 (lift h x1 x5) (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T (THead (Flat f) 
25021 t (lift h x1 x4)) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat f) x2 
25022 x3) t4)))) (ex_intro2 T (\lambda (t4: T).(eq T (THead (Flat f) (lift h x1 x5) 
25023 (lift h x1 x4)) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat f) x2 x3) 
25024 t4)) (THead (Flat f) x5 x4) (sym_eq T (lift h x1 (THead (Flat f) x5 x4)) 
25025 (THead (Flat f) (lift h x1 x5) (lift h x1 x4)) (lift_flat f x5 x4 h x1)) 
25026 (pr0_comp x2 x5 H11 x3 x4 H10 (Flat f))) u2 H_x0)))) (H2 x2 x1 H8)) t3 
25027 H_x)))) (H4 x3 x1 H9)) x0 H7)))))) (lift_gen_flat f u1 t2 x0 h x1 H6)))) k 
25028 H5))))))))))))) (\lambda (u: T).(\lambda (v1: T).(\lambda (v2: T).(\lambda 
25029 (_: (pr0 v1 v2)).(\lambda (H2: ((\forall (x: T).(\forall (x0: nat).((eq T v1 
25030 (lift h x0 x)) \to (ex2 T (\lambda (t2: T).(eq T v2 (lift h x0 t2))) (\lambda 
25031 (t2: T).(pr0 x t2)))))))).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (pr0 
25032 t2 t3)).(\lambda (H4: ((\forall (x: T).(\forall (x0: nat).((eq T t2 (lift h 
25033 x0 x)) \to (ex2 T (\lambda (t2: T).(eq T t3 (lift h x0 t2))) (\lambda (t2: 
25034 T).(pr0 x t2)))))))).(\lambda (x0: T).(\lambda (x1: nat).(\lambda (H5: (eq T 
25035 (THead (Flat Appl) v1 (THead (Bind Abst) u t2)) (lift h x1 x0))).(ex3_2_ind T 
25036 T (\lambda (y0: T).(\lambda (z: T).(eq T x0 (THead (Flat Appl) y0 z)))) 
25037 (\lambda (y0: T).(\lambda (_: T).(eq T v1 (lift h x1 y0)))) (\lambda (_: 
25038 T).(\lambda (z: T).(eq T (THead (Bind Abst) u t2) (lift h x1 z)))) (ex2 T 
25039 (\lambda (t4: T).(eq T (THead (Bind Abbr) v2 t3) (lift h x1 t4))) (\lambda 
25040 (t4: T).(pr0 x0 t4))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H6: (eq T 
25041 x0 (THead (Flat Appl) x2 x3))).(\lambda (H7: (eq T v1 (lift h x1 
25042 x2))).(\lambda (H8: (eq T (THead (Bind Abst) u t2) (lift h x1 x3))).(eq_ind_r 
25043 T (THead (Flat Appl) x2 x3) (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T 
25044 (THead (Bind Abbr) v2 t3) (lift h x1 t4))) (\lambda (t4: T).(pr0 t t4)))) 
25045 (ex3_2_ind T T (\lambda (y0: T).(\lambda (z: T).(eq T x3 (THead (Bind Abst) 
25046 y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T u (lift h x1 y0)))) (\lambda 
25047 (_: T).(\lambda (z: T).(eq T t2 (lift h (S x1) z)))) (ex2 T (\lambda (t4: 
25048 T).(eq T (THead (Bind Abbr) v2 t3) (lift h x1 t4))) (\lambda (t4: T).(pr0 
25049 (THead (Flat Appl) x2 x3) t4))) (\lambda (x4: T).(\lambda (x5: T).(\lambda 
25050 (H9: (eq T x3 (THead (Bind Abst) x4 x5))).(\lambda (_: (eq T u (lift h x1 
25051 x4))).(\lambda (H11: (eq T t2 (lift h (S x1) x5))).(eq_ind_r T (THead (Bind 
25052 Abst) x4 x5) (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind Abbr) 
25053 v2 t3) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat Appl) x2 t) t4)))) 
25054 (ex2_ind T (\lambda (t4: T).(eq T t3 (lift h (S x1) t4))) (\lambda (t4: 
25055 T).(pr0 x5 t4)) (ex2 T (\lambda (t4: T).(eq T (THead (Bind Abbr) v2 t3) (lift 
25056 h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat Appl) x2 (THead (Bind Abst) x4 
25057 x5)) t4))) (\lambda (x6: T).(\lambda (H_x: (eq T t3 (lift h (S x1) 
25058 x6))).(\lambda (H12: (pr0 x5 x6)).(eq_ind_r T (lift h (S x1) x6) (\lambda (t: 
25059 T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind Abbr) v2 t) (lift h x1 t4))) 
25060 (\lambda (t4: T).(pr0 (THead (Flat Appl) x2 (THead (Bind Abst) x4 x5)) t4)))) 
25061 (ex2_ind T (\lambda (t4: T).(eq T v2 (lift h x1 t4))) (\lambda (t4: T).(pr0 
25062 x2 t4)) (ex2 T (\lambda (t4: T).(eq T (THead (Bind Abbr) v2 (lift h (S x1) 
25063 x6)) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat Appl) x2 (THead 
25064 (Bind Abst) x4 x5)) t4))) (\lambda (x7: T).(\lambda (H_x0: (eq T v2 (lift h 
25065 x1 x7))).(\lambda (H13: (pr0 x2 x7)).(eq_ind_r T (lift h x1 x7) (\lambda (t: 
25066 T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind Abbr) t (lift h (S x1) x6)) 
25067 (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat Appl) x2 (THead (Bind 
25068 Abst) x4 x5)) t4)))) (ex_intro2 T (\lambda (t4: T).(eq T (THead (Bind Abbr) 
25069 (lift h x1 x7) (lift h (S x1) x6)) (lift h x1 t4))) (\lambda (t4: T).(pr0 
25070 (THead (Flat Appl) x2 (THead (Bind Abst) x4 x5)) t4)) (THead (Bind Abbr) x7 
25071 x6) (sym_eq T (lift h x1 (THead (Bind Abbr) x7 x6)) (THead (Bind Abbr) (lift 
25072 h x1 x7) (lift h (S x1) x6)) (lift_bind Abbr x7 x6 h x1)) (pr0_beta x4 x2 x7 
25073 H13 x5 x6 H12)) v2 H_x0)))) (H2 x2 x1 H7)) t3 H_x)))) (H4 x5 (S x1) H11)) x3 
25074 H9)))))) (lift_gen_bind Abst u t2 x3 h x1 H8)) x0 H6)))))) (lift_gen_flat 
25075 Appl v1 (THead (Bind Abst) u t2) x0 h x1 H5)))))))))))))) (\lambda (b: 
25076 B).(\lambda (H1: (not (eq B b Abst))).(\lambda (v1: T).(\lambda (v2: 
25077 T).(\lambda (_: (pr0 v1 v2)).(\lambda (H3: ((\forall (x: T).(\forall (x0: 
25078 nat).((eq T v1 (lift h x0 x)) \to (ex2 T (\lambda (t2: T).(eq T v2 (lift h x0 
25079 t2))) (\lambda (t2: T).(pr0 x t2)))))))).(\lambda (u1: T).(\lambda (u2: 
25080 T).(\lambda (_: (pr0 u1 u2)).(\lambda (H5: ((\forall (x: T).(\forall (x0: 
25081 nat).((eq T u1 (lift h x0 x)) \to (ex2 T (\lambda (t2: T).(eq T u2 (lift h x0 
25082 t2))) (\lambda (t2: T).(pr0 x t2)))))))).(\lambda (t2: T).(\lambda (t3: 
25083 T).(\lambda (_: (pr0 t2 t3)).(\lambda (H7: ((\forall (x: T).(\forall (x0: 
25084 nat).((eq T t2 (lift h x0 x)) \to (ex2 T (\lambda (t2: T).(eq T t3 (lift h x0 
25085 t2))) (\lambda (t2: T).(pr0 x t2)))))))).(\lambda (x0: T).(\lambda (x1: 
25086 nat).(\lambda (H8: (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t2)) (lift 
25087 h x1 x0))).(ex3_2_ind T T (\lambda (y0: T).(\lambda (z: T).(eq T x0 (THead 
25088 (Flat Appl) y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T v1 (lift h x1 
25089 y0)))) (\lambda (_: T).(\lambda (z: T).(eq T (THead (Bind b) u1 t2) (lift h 
25090 x1 z)))) (ex2 T (\lambda (t4: T).(eq T (THead (Bind b) u2 (THead (Flat Appl) 
25091 (lift (S O) O v2) t3)) (lift h x1 t4))) (\lambda (t4: T).(pr0 x0 t4))) 
25092 (\lambda (x2: T).(\lambda (x3: T).(\lambda (H9: (eq T x0 (THead (Flat Appl) 
25093 x2 x3))).(\lambda (H10: (eq T v1 (lift h x1 x2))).(\lambda (H11: (eq T (THead 
25094 (Bind b) u1 t2) (lift h x1 x3))).(eq_ind_r T (THead (Flat Appl) x2 x3) 
25095 (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind b) u2 (THead (Flat 
25096 Appl) (lift (S O) O v2) t3)) (lift h x1 t4))) (\lambda (t4: T).(pr0 t t4)))) 
25097 (ex3_2_ind T T (\lambda (y0: T).(\lambda (z: T).(eq T x3 (THead (Bind b) y0 
25098 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T u1 (lift h x1 y0)))) (\lambda 
25099 (_: T).(\lambda (z: T).(eq T t2 (lift h (S x1) z)))) (ex2 T (\lambda (t4: 
25100 T).(eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) (lift h 
25101 x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat Appl) x2 x3) t4))) (\lambda (x4: 
25102 T).(\lambda (x5: T).(\lambda (H12: (eq T x3 (THead (Bind b) x4 x5))).(\lambda 
25103 (H13: (eq T u1 (lift h x1 x4))).(\lambda (H14: (eq T t2 (lift h (S x1) 
25104 x5))).(eq_ind_r T (THead (Bind b) x4 x5) (\lambda (t: T).(ex2 T (\lambda (t4: 
25105 T).(eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) (lift h 
25106 x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat Appl) x2 t) t4)))) (ex2_ind T 
25107 (\lambda (t4: T).(eq T t3 (lift h (S x1) t4))) (\lambda (t4: T).(pr0 x5 t4)) 
25108 (ex2 T (\lambda (t4: T).(eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
25109 O) O v2) t3)) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat Appl) x2 
25110 (THead (Bind b) x4 x5)) t4))) (\lambda (x6: T).(\lambda (H_x: (eq T t3 (lift 
25111 h (S x1) x6))).(\lambda (H15: (pr0 x5 x6)).(eq_ind_r T (lift h (S x1) x6) 
25112 (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind b) u2 (THead (Flat 
25113 Appl) (lift (S O) O v2) t)) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead 
25114 (Flat Appl) x2 (THead (Bind b) x4 x5)) t4)))) (ex2_ind T (\lambda (t4: T).(eq 
25115 T u2 (lift h x1 t4))) (\lambda (t4: T).(pr0 x4 t4)) (ex2 T (\lambda (t4: 
25116 T).(eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) (lift h (S 
25117 x1) x6))) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat Appl) x2 (THead 
25118 (Bind b) x4 x5)) t4))) (\lambda (x7: T).(\lambda (H_x0: (eq T u2 (lift h x1 
25119 x7))).(\lambda (H16: (pr0 x4 x7)).(eq_ind_r T (lift h x1 x7) (\lambda (t: 
25120 T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind b) t (THead (Flat Appl) (lift 
25121 (S O) O v2) (lift h (S x1) x6))) (lift h x1 t4))) (\lambda (t4: T).(pr0 
25122 (THead (Flat Appl) x2 (THead (Bind b) x4 x5)) t4)))) (ex2_ind T (\lambda (t4: 
25123 T).(eq T v2 (lift h x1 t4))) (\lambda (t4: T).(pr0 x2 t4)) (ex2 T (\lambda 
25124 (t4: T).(eq T (THead (Bind b) (lift h x1 x7) (THead (Flat Appl) (lift (S O) O 
25125 v2) (lift h (S x1) x6))) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat 
25126 Appl) x2 (THead (Bind b) x4 x5)) t4))) (\lambda (x8: T).(\lambda (H_x1: (eq T 
25127 v2 (lift h x1 x8))).(\lambda (H17: (pr0 x2 x8)).(eq_ind_r T (lift h x1 x8) 
25128 (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind b) (lift h x1 x7) 
25129 (THead (Flat Appl) (lift (S O) O t) (lift h (S x1) x6))) (lift h x1 t4))) 
25130 (\lambda (t4: T).(pr0 (THead (Flat Appl) x2 (THead (Bind b) x4 x5)) t4)))) 
25131 (eq_ind T (lift h (plus (S O) x1) (lift (S O) O x8)) (\lambda (t: T).(ex2 T 
25132 (\lambda (t4: T).(eq T (THead (Bind b) (lift h x1 x7) (THead (Flat Appl) t 
25133 (lift h (S x1) x6))) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat 
25134 Appl) x2 (THead (Bind b) x4 x5)) t4)))) (eq_ind T (lift h (S x1) (THead (Flat 
25135 Appl) (lift (S O) O x8) x6)) (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T 
25136 (THead (Bind b) (lift h x1 x7) t) (lift h x1 t4))) (\lambda (t4: T).(pr0 
25137 (THead (Flat Appl) x2 (THead (Bind b) x4 x5)) t4)))) (ex_intro2 T (\lambda 
25138 (t4: T).(eq T (THead (Bind b) (lift h x1 x7) (lift h (S x1) (THead (Flat 
25139 Appl) (lift (S O) O x8) x6))) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead 
25140 (Flat Appl) x2 (THead (Bind b) x4 x5)) t4)) (THead (Bind b) x7 (THead (Flat 
25141 Appl) (lift (S O) O x8) x6)) (sym_eq T (lift h x1 (THead (Bind b) x7 (THead 
25142 (Flat Appl) (lift (S O) O x8) x6))) (THead (Bind b) (lift h x1 x7) (lift h (S 
25143 x1) (THead (Flat Appl) (lift (S O) O x8) x6))) (lift_bind b x7 (THead (Flat 
25144 Appl) (lift (S O) O x8) x6) h x1)) (pr0_upsilon b H1 x2 x8 H17 x4 x7 H16 x5 
25145 x6 H15)) (THead (Flat Appl) (lift h (S x1) (lift (S O) O x8)) (lift h (S x1) 
25146 x6)) (lift_flat Appl (lift (S O) O x8) x6 h (S x1))) (lift (S O) O (lift h x1 
25147 x8)) (lift_d x8 h (S O) x1 O (le_O_n x1))) v2 H_x1)))) (H3 x2 x1 H10)) u2 
25148 H_x0)))) (H5 x4 x1 H13)) t3 H_x)))) (H7 x5 (S x1) H14)) x3 H12)))))) 
25149 (lift_gen_bind b u1 t2 x3 h x1 H11)) x0 H9)))))) (lift_gen_flat Appl v1 
25150 (THead (Bind b) u1 t2) x0 h x1 H8))))))))))))))))))) (\lambda (u1: 
25151 T).(\lambda (u2: T).(\lambda (_: (pr0 u1 u2)).(\lambda (H2: ((\forall (x: 
25152 T).(\forall (x0: nat).((eq T u1 (lift h x0 x)) \to (ex2 T (\lambda (t2: 
25153 T).(eq T u2 (lift h x0 t2))) (\lambda (t2: T).(pr0 x t2)))))))).(\lambda (t2: 
25154 T).(\lambda (t3: T).(\lambda (_: (pr0 t2 t3)).(\lambda (H4: ((\forall (x: 
25155 T).(\forall (x0: nat).((eq T t2 (lift h x0 x)) \to (ex2 T (\lambda (t2: 
25156 T).(eq T t3 (lift h x0 t2))) (\lambda (t2: T).(pr0 x t2)))))))).(\lambda (w: 
25157 T).(\lambda (H5: (subst0 O u2 t3 w)).(\lambda (x0: T).(\lambda (x1: 
25158 nat).(\lambda (H6: (eq T (THead (Bind Abbr) u1 t2) (lift h x1 
25159 x0))).(ex3_2_ind T T (\lambda (y0: T).(\lambda (z: T).(eq T x0 (THead (Bind 
25160 Abbr) y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T u1 (lift h x1 y0)))) 
25161 (\lambda (_: T).(\lambda (z: T).(eq T t2 (lift h (S x1) z)))) (ex2 T (\lambda 
25162 (t4: T).(eq T (THead (Bind Abbr) u2 w) (lift h x1 t4))) (\lambda (t4: T).(pr0 
25163 x0 t4))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H7: (eq T x0 (THead 
25164 (Bind Abbr) x2 x3))).(\lambda (H8: (eq T u1 (lift h x1 x2))).(\lambda (H9: 
25165 (eq T t2 (lift h (S x1) x3))).(eq_ind_r T (THead (Bind Abbr) x2 x3) (\lambda 
25166 (t: T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind Abbr) u2 w) (lift h x1 
25167 t4))) (\lambda (t4: T).(pr0 t t4)))) (ex2_ind T (\lambda (t4: T).(eq T t3 
25168 (lift h (S x1) t4))) (\lambda (t4: T).(pr0 x3 t4)) (ex2 T (\lambda (t4: 
25169 T).(eq T (THead (Bind Abbr) u2 w) (lift h x1 t4))) (\lambda (t4: T).(pr0 
25170 (THead (Bind Abbr) x2 x3) t4))) (\lambda (x4: T).(\lambda (H_x: (eq T t3 
25171 (lift h (S x1) x4))).(\lambda (H10: (pr0 x3 x4)).(let H11 \def (eq_ind T t3 
25172 (\lambda (t: T).(subst0 O u2 t w)) H5 (lift h (S x1) x4) H_x) in (ex2_ind T 
25173 (\lambda (t4: T).(eq T u2 (lift h x1 t4))) (\lambda (t4: T).(pr0 x2 t4)) (ex2 
25174 T (\lambda (t4: T).(eq T (THead (Bind Abbr) u2 w) (lift h x1 t4))) (\lambda 
25175 (t4: T).(pr0 (THead (Bind Abbr) x2 x3) t4))) (\lambda (x5: T).(\lambda (H_x0: 
25176 (eq T u2 (lift h x1 x5))).(\lambda (H12: (pr0 x2 x5)).(eq_ind_r T (lift h x1 
25177 x5) (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind Abbr) t w) 
25178 (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Bind Abbr) x2 x3) t4)))) (let 
25179 H13 \def (eq_ind T u2 (\lambda (t: T).(subst0 O t (lift h (S x1) x4) w)) H11 
25180 (lift h x1 x5) H_x0) in (let H14 \def (refl_equal nat (S (plus O x1))) in 
25181 (let H15 \def (eq_ind nat (S x1) (\lambda (n: nat).(subst0 O (lift h x1 x5) 
25182 (lift h n x4) w)) H13 (S (plus O x1)) H14) in (ex2_ind T (\lambda (t4: T).(eq 
25183 T w (lift h (S (plus O x1)) t4))) (\lambda (t4: T).(subst0 O x5 x4 t4)) (ex2 
25184 T (\lambda (t4: T).(eq T (THead (Bind Abbr) (lift h x1 x5) w) (lift h x1 
25185 t4))) (\lambda (t4: T).(pr0 (THead (Bind Abbr) x2 x3) t4))) (\lambda (x6: 
25186 T).(\lambda (H16: (eq T w (lift h (S (plus O x1)) x6))).(\lambda (H17: 
25187 (subst0 O x5 x4 x6)).(eq_ind_r T (lift h (S (plus O x1)) x6) (\lambda (t: 
25188 T).(ex2 T (\lambda (t4: T).(eq T (THead (Bind Abbr) (lift h x1 x5) t) (lift h 
25189 x1 t4))) (\lambda (t4: T).(pr0 (THead (Bind Abbr) x2 x3) t4)))) (ex_intro2 T 
25190 (\lambda (t4: T).(eq T (THead (Bind Abbr) (lift h x1 x5) (lift h (S (plus O 
25191 x1)) x6)) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Bind Abbr) x2 x3) 
25192 t4)) (THead (Bind Abbr) x5 x6) (sym_eq T (lift h x1 (THead (Bind Abbr) x5 
25193 x6)) (THead (Bind Abbr) (lift h x1 x5) (lift h (S (plus O x1)) x6)) 
25194 (lift_bind Abbr x5 x6 h (plus O x1))) (pr0_delta x2 x5 H12 x3 x4 H10 x6 H17)) 
25195 w H16)))) (subst0_gen_lift_lt x5 x4 w O h x1 H15))))) u2 H_x0)))) (H2 x2 x1 
25196 H8)))))) (H4 x3 (S x1) H9)) x0 H7)))))) (lift_gen_bind Abbr u1 t2 x0 h x1 
25197 H6))))))))))))))) (\lambda (b: B).(\lambda (H1: (not (eq B b Abst))).(\lambda 
25198 (t2: T).(\lambda (t3: T).(\lambda (_: (pr0 t2 t3)).(\lambda (H3: ((\forall 
25199 (x: T).(\forall (x0: nat).((eq T t2 (lift h x0 x)) \to (ex2 T (\lambda (t2: 
25200 T).(eq T t3 (lift h x0 t2))) (\lambda (t2: T).(pr0 x t2)))))))).(\lambda (u: 
25201 T).(\lambda (x0: T).(\lambda (x1: nat).(\lambda (H4: (eq T (THead (Bind b) u 
25202 (lift (S O) O t2)) (lift h x1 x0))).(ex3_2_ind T T (\lambda (y0: T).(\lambda 
25203 (z: T).(eq T x0 (THead (Bind b) y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq 
25204 T u (lift h x1 y0)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift (S O) O t2) 
25205 (lift h (S x1) z)))) (ex2 T (\lambda (t4: T).(eq T t3 (lift h x1 t4))) 
25206 (\lambda (t4: T).(pr0 x0 t4))) (\lambda (x2: T).(\lambda (x3: T).(\lambda 
25207 (H5: (eq T x0 (THead (Bind b) x2 x3))).(\lambda (_: (eq T u (lift h x1 
25208 x2))).(\lambda (H7: (eq T (lift (S O) O t2) (lift h (S x1) x3))).(eq_ind_r T 
25209 (THead (Bind b) x2 x3) (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T t3 (lift 
25210 h x1 t4))) (\lambda (t4: T).(pr0 t t4)))) (let H8 \def (eq_ind_r nat (plus (S 
25211 O) x1) (\lambda (n: nat).(eq nat (S x1) n)) (refl_equal nat (plus (S O) x1)) 
25212 (plus x1 (S O)) (plus_comm x1 (S O))) in (let H9 \def (eq_ind nat (S x1) 
25213 (\lambda (n: nat).(eq T (lift (S O) O t2) (lift h n x3))) H7 (plus x1 (S O)) 
25214 H8) in (ex2_ind T (\lambda (t4: T).(eq T x3 (lift (S O) O t4))) (\lambda (t4: 
25215 T).(eq T t2 (lift h x1 t4))) (ex2 T (\lambda (t4: T).(eq T t3 (lift h x1 
25216 t4))) (\lambda (t4: T).(pr0 (THead (Bind b) x2 x3) t4))) (\lambda (x4: 
25217 T).(\lambda (H10: (eq T x3 (lift (S O) O x4))).(\lambda (H11: (eq T t2 (lift 
25218 h x1 x4))).(eq_ind_r T (lift (S O) O x4) (\lambda (t: T).(ex2 T (\lambda (t4: 
25219 T).(eq T t3 (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Bind b) x2 t) 
25220 t4)))) (ex2_ind T (\lambda (t4: T).(eq T t3 (lift h x1 t4))) (\lambda (t4: 
25221 T).(pr0 x4 t4)) (ex2 T (\lambda (t4: T).(eq T t3 (lift h x1 t4))) (\lambda 
25222 (t4: T).(pr0 (THead (Bind b) x2 (lift (S O) O x4)) t4))) (\lambda (x5: 
25223 T).(\lambda (H_x: (eq T t3 (lift h x1 x5))).(\lambda (H12: (pr0 x4 
25224 x5)).(eq_ind_r T (lift h x1 x5) (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T 
25225 t (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Bind b) x2 (lift (S O) O 
25226 x4)) t4)))) (ex_intro2 T (\lambda (t4: T).(eq T (lift h x1 x5) (lift h x1 
25227 t4))) (\lambda (t4: T).(pr0 (THead (Bind b) x2 (lift (S O) O x4)) t4)) x5 
25228 (refl_equal T (lift h x1 x5)) (pr0_zeta b H1 x4 x5 H12 x2)) t3 H_x)))) (H3 x4 
25229 x1 H11)) x3 H10)))) (lift_gen_lift t2 x3 (S O) h O x1 (le_O_n x1) H9)))) x0 
25230 H5)))))) (lift_gen_bind b u (lift (S O) O t2) x0 h x1 H4)))))))))))) (\lambda 
25231 (t2: T).(\lambda (t3: T).(\lambda (_: (pr0 t2 t3)).(\lambda (H2: ((\forall 
25232 (x: T).(\forall (x0: nat).((eq T t2 (lift h x0 x)) \to (ex2 T (\lambda (t2: 
25233 T).(eq T t3 (lift h x0 t2))) (\lambda (t2: T).(pr0 x t2)))))))).(\lambda (u: 
25234 T).(\lambda (x0: T).(\lambda (x1: nat).(\lambda (H3: (eq T (THead (Flat Cast) 
25235 u t2) (lift h x1 x0))).(ex3_2_ind T T (\lambda (y0: T).(\lambda (z: T).(eq T 
25236 x0 (THead (Flat Cast) y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T u (lift 
25237 h x1 y0)))) (\lambda (_: T).(\lambda (z: T).(eq T t2 (lift h x1 z)))) (ex2 T 
25238 (\lambda (t4: T).(eq T t3 (lift h x1 t4))) (\lambda (t4: T).(pr0 x0 t4))) 
25239 (\lambda (x2: T).(\lambda (x3: T).(\lambda (H4: (eq T x0 (THead (Flat Cast) 
25240 x2 x3))).(\lambda (_: (eq T u (lift h x1 x2))).(\lambda (H6: (eq T t2 (lift h 
25241 x1 x3))).(eq_ind_r T (THead (Flat Cast) x2 x3) (\lambda (t: T).(ex2 T 
25242 (\lambda (t4: T).(eq T t3 (lift h x1 t4))) (\lambda (t4: T).(pr0 t t4)))) 
25243 (ex2_ind T (\lambda (t4: T).(eq T t3 (lift h x1 t4))) (\lambda (t4: T).(pr0 
25244 x3 t4)) (ex2 T (\lambda (t4: T).(eq T t3 (lift h x1 t4))) (\lambda (t4: 
25245 T).(pr0 (THead (Flat Cast) x2 x3) t4))) (\lambda (x4: T).(\lambda (H_x: (eq T 
25246 t3 (lift h x1 x4))).(\lambda (H7: (pr0 x3 x4)).(eq_ind_r T (lift h x1 x4) 
25247 (\lambda (t: T).(ex2 T (\lambda (t4: T).(eq T t (lift h x1 t4))) (\lambda 
25248 (t4: T).(pr0 (THead (Flat Cast) x2 x3) t4)))) (ex_intro2 T (\lambda (t4: 
25249 T).(eq T (lift h x1 x4) (lift h x1 t4))) (\lambda (t4: T).(pr0 (THead (Flat 
25250 Cast) x2 x3) t4)) x4 (refl_equal T (lift h x1 x4)) (pr0_epsilon x3 x4 H7 x2)) 
25251 t3 H_x)))) (H2 x3 x1 H6)) x0 H4)))))) (lift_gen_flat Cast u t2 x0 h x1 
25252 H3)))))))))) y x H0))))) H))))).
25253
25254 theorem pr0_subst0_back:
25255  \forall (u2: T).(\forall (t1: T).(\forall (t2: T).(\forall (i: nat).((subst0 
25256 i u2 t1 t2) \to (\forall (u1: T).((pr0 u1 u2) \to (ex2 T (\lambda (t: 
25257 T).(subst0 i u1 t1 t)) (\lambda (t: T).(pr0 t t2)))))))))
25258 \def
25259  \lambda (u2: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (i: nat).(\lambda 
25260 (H: (subst0 i u2 t1 t2)).(subst0_ind (\lambda (n: nat).(\lambda (t: 
25261 T).(\lambda (t0: T).(\lambda (t3: T).(\forall (u1: T).((pr0 u1 t) \to (ex2 T 
25262 (\lambda (t4: T).(subst0 n u1 t0 t4)) (\lambda (t4: T).(pr0 t4 t3))))))))) 
25263 (\lambda (v: T).(\lambda (i0: nat).(\lambda (u1: T).(\lambda (H0: (pr0 u1 
25264 v)).(ex_intro2 T (\lambda (t: T).(subst0 i0 u1 (TLRef i0) t)) (\lambda (t: 
25265 T).(pr0 t (lift (S i0) O v))) (lift (S i0) O u1) (subst0_lref u1 i0) 
25266 (pr0_lift u1 v H0 (S i0) O)))))) (\lambda (v: T).(\lambda (u0: T).(\lambda 
25267 (u1: T).(\lambda (i0: nat).(\lambda (_: (subst0 i0 v u1 u0)).(\lambda (H1: 
25268 ((\forall (u2: T).((pr0 u2 v) \to (ex2 T (\lambda (t: T).(subst0 i0 u2 u1 t)) 
25269 (\lambda (t: T).(pr0 t u0))))))).(\lambda (t: T).(\lambda (k: K).(\lambda 
25270 (u3: T).(\lambda (H2: (pr0 u3 v)).(ex2_ind T (\lambda (t0: T).(subst0 i0 u3 
25271 u1 t0)) (\lambda (t0: T).(pr0 t0 u0)) (ex2 T (\lambda (t0: T).(subst0 i0 u3 
25272 (THead k u1 t) t0)) (\lambda (t0: T).(pr0 t0 (THead k u0 t)))) (\lambda (x: 
25273 T).(\lambda (H3: (subst0 i0 u3 u1 x)).(\lambda (H4: (pr0 x u0)).(ex_intro2 T 
25274 (\lambda (t0: T).(subst0 i0 u3 (THead k u1 t) t0)) (\lambda (t0: T).(pr0 t0 
25275 (THead k u0 t))) (THead k x t) (subst0_fst u3 x u1 i0 H3 t k) (pr0_comp x u0 
25276 H4 t t (pr0_refl t) k))))) (H1 u3 H2)))))))))))) (\lambda (k: K).(\lambda (v: 
25277 T).(\lambda (t0: T).(\lambda (t3: T).(\lambda (i0: nat).(\lambda (_: (subst0 
25278 (s k i0) v t3 t0)).(\lambda (H1: ((\forall (u1: T).((pr0 u1 v) \to (ex2 T 
25279 (\lambda (t: T).(subst0 (s k i0) u1 t3 t)) (\lambda (t: T).(pr0 t 
25280 t0))))))).(\lambda (u: T).(\lambda (u1: T).(\lambda (H2: (pr0 u1 v)).(ex2_ind 
25281 T (\lambda (t: T).(subst0 (s k i0) u1 t3 t)) (\lambda (t: T).(pr0 t t0)) (ex2 
25282 T (\lambda (t: T).(subst0 i0 u1 (THead k u t3) t)) (\lambda (t: T).(pr0 t 
25283 (THead k u t0)))) (\lambda (x: T).(\lambda (H3: (subst0 (s k i0) u1 t3 
25284 x)).(\lambda (H4: (pr0 x t0)).(ex_intro2 T (\lambda (t: T).(subst0 i0 u1 
25285 (THead k u t3) t)) (\lambda (t: T).(pr0 t (THead k u t0))) (THead k u x) 
25286 (subst0_snd k u1 x t3 i0 H3 u) (pr0_comp u u (pr0_refl u) x t0 H4 k))))) (H1 
25287 u1 H2)))))))))))) (\lambda (v: T).(\lambda (u1: T).(\lambda (u0: T).(\lambda 
25288 (i0: nat).(\lambda (_: (subst0 i0 v u1 u0)).(\lambda (H1: ((\forall (u2: 
25289 T).((pr0 u2 v) \to (ex2 T (\lambda (t: T).(subst0 i0 u2 u1 t)) (\lambda (t: 
25290 T).(pr0 t u0))))))).(\lambda (k: K).(\lambda (t0: T).(\lambda (t3: 
25291 T).(\lambda (_: (subst0 (s k i0) v t0 t3)).(\lambda (H3: ((\forall (u1: 
25292 T).((pr0 u1 v) \to (ex2 T (\lambda (t: T).(subst0 (s k i0) u1 t0 t)) (\lambda 
25293 (t: T).(pr0 t t3))))))).(\lambda (u3: T).(\lambda (H4: (pr0 u3 v)).(ex2_ind T 
25294 (\lambda (t: T).(subst0 (s k i0) u3 t0 t)) (\lambda (t: T).(pr0 t t3)) (ex2 T 
25295 (\lambda (t: T).(subst0 i0 u3 (THead k u1 t0) t)) (\lambda (t: T).(pr0 t 
25296 (THead k u0 t3)))) (\lambda (x: T).(\lambda (H5: (subst0 (s k i0) u3 t0 
25297 x)).(\lambda (H6: (pr0 x t3)).(ex2_ind T (\lambda (t: T).(subst0 i0 u3 u1 t)) 
25298 (\lambda (t: T).(pr0 t u0)) (ex2 T (\lambda (t: T).(subst0 i0 u3 (THead k u1 
25299 t0) t)) (\lambda (t: T).(pr0 t (THead k u0 t3)))) (\lambda (x0: T).(\lambda 
25300 (H7: (subst0 i0 u3 u1 x0)).(\lambda (H8: (pr0 x0 u0)).(ex_intro2 T (\lambda 
25301 (t: T).(subst0 i0 u3 (THead k u1 t0) t)) (\lambda (t: T).(pr0 t (THead k u0 
25302 t3))) (THead k x0 x) (subst0_both u3 u1 x0 i0 H7 k t0 x H5) (pr0_comp x0 u0 
25303 H8 x t3 H6 k))))) (H1 u3 H4))))) (H3 u3 H4))))))))))))))) i u2 t1 t2 H))))).
25304
25305 theorem pr0_subst0_fwd:
25306  \forall (u2: T).(\forall (t1: T).(\forall (t2: T).(\forall (i: nat).((subst0 
25307 i u2 t1 t2) \to (\forall (u1: T).((pr0 u2 u1) \to (ex2 T (\lambda (t: 
25308 T).(subst0 i u1 t1 t)) (\lambda (t: T).(pr0 t2 t)))))))))
25309 \def
25310  \lambda (u2: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (i: nat).(\lambda 
25311 (H: (subst0 i u2 t1 t2)).(subst0_ind (\lambda (n: nat).(\lambda (t: 
25312 T).(\lambda (t0: T).(\lambda (t3: T).(\forall (u1: T).((pr0 t u1) \to (ex2 T 
25313 (\lambda (t4: T).(subst0 n u1 t0 t4)) (\lambda (t4: T).(pr0 t3 t4))))))))) 
25314 (\lambda (v: T).(\lambda (i0: nat).(\lambda (u1: T).(\lambda (H0: (pr0 v 
25315 u1)).(ex_intro2 T (\lambda (t: T).(subst0 i0 u1 (TLRef i0) t)) (\lambda (t: 
25316 T).(pr0 (lift (S i0) O v) t)) (lift (S i0) O u1) (subst0_lref u1 i0) 
25317 (pr0_lift v u1 H0 (S i0) O)))))) (\lambda (v: T).(\lambda (u0: T).(\lambda 
25318 (u1: T).(\lambda (i0: nat).(\lambda (_: (subst0 i0 v u1 u0)).(\lambda (H1: 
25319 ((\forall (u2: T).((pr0 v u2) \to (ex2 T (\lambda (t: T).(subst0 i0 u2 u1 t)) 
25320 (\lambda (t: T).(pr0 u0 t))))))).(\lambda (t: T).(\lambda (k: K).(\lambda 
25321 (u3: T).(\lambda (H2: (pr0 v u3)).(ex2_ind T (\lambda (t0: T).(subst0 i0 u3 
25322 u1 t0)) (\lambda (t0: T).(pr0 u0 t0)) (ex2 T (\lambda (t0: T).(subst0 i0 u3 
25323 (THead k u1 t) t0)) (\lambda (t0: T).(pr0 (THead k u0 t) t0))) (\lambda (x: 
25324 T).(\lambda (H3: (subst0 i0 u3 u1 x)).(\lambda (H4: (pr0 u0 x)).(ex_intro2 T 
25325 (\lambda (t0: T).(subst0 i0 u3 (THead k u1 t) t0)) (\lambda (t0: T).(pr0 
25326 (THead k u0 t) t0)) (THead k x t) (subst0_fst u3 x u1 i0 H3 t k) (pr0_comp u0 
25327 x H4 t t (pr0_refl t) k))))) (H1 u3 H2)))))))))))) (\lambda (k: K).(\lambda 
25328 (v: T).(\lambda (t0: T).(\lambda (t3: T).(\lambda (i0: nat).(\lambda (_: 
25329 (subst0 (s k i0) v t3 t0)).(\lambda (H1: ((\forall (u1: T).((pr0 v u1) \to 
25330 (ex2 T (\lambda (t: T).(subst0 (s k i0) u1 t3 t)) (\lambda (t: T).(pr0 t0 
25331 t))))))).(\lambda (u: T).(\lambda (u1: T).(\lambda (H2: (pr0 v u1)).(ex2_ind 
25332 T (\lambda (t: T).(subst0 (s k i0) u1 t3 t)) (\lambda (t: T).(pr0 t0 t)) (ex2 
25333 T (\lambda (t: T).(subst0 i0 u1 (THead k u t3) t)) (\lambda (t: T).(pr0 
25334 (THead k u t0) t))) (\lambda (x: T).(\lambda (H3: (subst0 (s k i0) u1 t3 
25335 x)).(\lambda (H4: (pr0 t0 x)).(ex_intro2 T (\lambda (t: T).(subst0 i0 u1 
25336 (THead k u t3) t)) (\lambda (t: T).(pr0 (THead k u t0) t)) (THead k u x) 
25337 (subst0_snd k u1 x t3 i0 H3 u) (pr0_comp u u (pr0_refl u) t0 x H4 k))))) (H1 
25338 u1 H2)))))))))))) (\lambda (v: T).(\lambda (u1: T).(\lambda (u0: T).(\lambda 
25339 (i0: nat).(\lambda (_: (subst0 i0 v u1 u0)).(\lambda (H1: ((\forall (u2: 
25340 T).((pr0 v u2) \to (ex2 T (\lambda (t: T).(subst0 i0 u2 u1 t)) (\lambda (t: 
25341 T).(pr0 u0 t))))))).(\lambda (k: K).(\lambda (t0: T).(\lambda (t3: 
25342 T).(\lambda (_: (subst0 (s k i0) v t0 t3)).(\lambda (H3: ((\forall (u1: 
25343 T).((pr0 v u1) \to (ex2 T (\lambda (t: T).(subst0 (s k i0) u1 t0 t)) (\lambda 
25344 (t: T).(pr0 t3 t))))))).(\lambda (u3: T).(\lambda (H4: (pr0 v u3)).(ex2_ind T 
25345 (\lambda (t: T).(subst0 (s k i0) u3 t0 t)) (\lambda (t: T).(pr0 t3 t)) (ex2 T 
25346 (\lambda (t: T).(subst0 i0 u3 (THead k u1 t0) t)) (\lambda (t: T).(pr0 (THead 
25347 k u0 t3) t))) (\lambda (x: T).(\lambda (H5: (subst0 (s k i0) u3 t0 
25348 x)).(\lambda (H6: (pr0 t3 x)).(ex2_ind T (\lambda (t: T).(subst0 i0 u3 u1 t)) 
25349 (\lambda (t: T).(pr0 u0 t)) (ex2 T (\lambda (t: T).(subst0 i0 u3 (THead k u1 
25350 t0) t)) (\lambda (t: T).(pr0 (THead k u0 t3) t))) (\lambda (x0: T).(\lambda 
25351 (H7: (subst0 i0 u3 u1 x0)).(\lambda (H8: (pr0 u0 x0)).(ex_intro2 T (\lambda 
25352 (t: T).(subst0 i0 u3 (THead k u1 t0) t)) (\lambda (t: T).(pr0 (THead k u0 t3) 
25353 t)) (THead k x0 x) (subst0_both u3 u1 x0 i0 H7 k t0 x H5) (pr0_comp u0 x0 H8 
25354 t3 x H6 k))))) (H1 u3 H4))))) (H3 u3 H4))))))))))))))) i u2 t1 t2 H))))).
25355
25356 theorem pr0_subst0:
25357  \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (v1: T).(\forall 
25358 (w1: T).(\forall (i: nat).((subst0 i v1 t1 w1) \to (\forall (v2: T).((pr0 v1 
25359 v2) \to (or (pr0 w1 t2) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
25360 T).(subst0 i v2 t2 w2))))))))))))
25361 \def
25362  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t1 t2)).(pr0_ind (\lambda 
25363 (t: T).(\lambda (t0: T).(\forall (v1: T).(\forall (w1: T).(\forall (i: 
25364 nat).((subst0 i v1 t w1) \to (\forall (v2: T).((pr0 v1 v2) \to (or (pr0 w1 
25365 t0) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t0 
25366 w2)))))))))))) (\lambda (t: T).(\lambda (v1: T).(\lambda (w1: T).(\lambda (i: 
25367 nat).(\lambda (H0: (subst0 i v1 t w1)).(\lambda (v2: T).(\lambda (H1: (pr0 v1 
25368 v2)).(or_intror (pr0 w1 t) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
25369 T).(subst0 i v2 t w2))) (ex2_sym T (subst0 i v2 t) (pr0 w1) (pr0_subst0_fwd 
25370 v1 t w1 i H0 v2 H1)))))))))) (\lambda (u1: T).(\lambda (u2: T).(\lambda (H0: 
25371 (pr0 u1 u2)).(\lambda (H1: ((\forall (v1: T).(\forall (w1: T).(\forall (i: 
25372 nat).((subst0 i v1 u1 w1) \to (\forall (v2: T).((pr0 v1 v2) \to (or (pr0 w1 
25373 u2) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 u2 
25374 w2)))))))))))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H2: (pr0 t3 
25375 t4)).(\lambda (H3: ((\forall (v1: T).(\forall (w1: T).(\forall (i: 
25376 nat).((subst0 i v1 t3 w1) \to (\forall (v2: T).((pr0 v1 v2) \to (or (pr0 w1 
25377 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t4 
25378 w2)))))))))))).(\lambda (k: K).(\lambda (v1: T).(\lambda (w1: T).(\lambda (i: 
25379 nat).(\lambda (H4: (subst0 i v1 (THead k u1 t3) w1)).(\lambda (v2: 
25380 T).(\lambda (H5: (pr0 v1 v2)).(or3_ind (ex2 T (\lambda (u3: T).(eq T w1 
25381 (THead k u3 t3))) (\lambda (u3: T).(subst0 i v1 u1 u3))) (ex2 T (\lambda (t5: 
25382 T).(eq T w1 (THead k u1 t5))) (\lambda (t5: T).(subst0 (s k i) v1 t3 t5))) 
25383 (ex3_2 T T (\lambda (u3: T).(\lambda (t5: T).(eq T w1 (THead k u3 t5)))) 
25384 (\lambda (u3: T).(\lambda (_: T).(subst0 i v1 u1 u3))) (\lambda (_: 
25385 T).(\lambda (t5: T).(subst0 (s k i) v1 t3 t5)))) (or (pr0 w1 (THead k u2 t4)) 
25386 (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 (THead k 
25387 u2 t4) w2)))) (\lambda (H6: (ex2 T (\lambda (u2: T).(eq T w1 (THead k u2 
25388 t3))) (\lambda (u2: T).(subst0 i v1 u1 u2)))).(ex2_ind T (\lambda (u3: T).(eq 
25389 T w1 (THead k u3 t3))) (\lambda (u3: T).(subst0 i v1 u1 u3)) (or (pr0 w1 
25390 (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
25391 T).(subst0 i v2 (THead k u2 t4) w2)))) (\lambda (x: T).(\lambda (H7: (eq T w1 
25392 (THead k x t3))).(\lambda (H8: (subst0 i v1 u1 x)).(eq_ind_r T (THead k x t3) 
25393 (\lambda (t: T).(or (pr0 t (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 t 
25394 w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2))))) (or_ind (pr0 x u2) 
25395 (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 i v2 u2 w2))) 
25396 (or (pr0 (THead k x t3) (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead 
25397 k x t3) w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2)))) (\lambda 
25398 (H9: (pr0 x u2)).(or_introl (pr0 (THead k x t3) (THead k u2 t4)) (ex2 T 
25399 (\lambda (w2: T).(pr0 (THead k x t3) w2)) (\lambda (w2: T).(subst0 i v2 
25400 (THead k u2 t4) w2))) (pr0_comp x u2 H9 t3 t4 H2 k))) (\lambda (H9: (ex2 T 
25401 (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 i v2 u2 w2)))).(ex2_ind 
25402 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 i v2 u2 w2)) (or (pr0 
25403 (THead k x t3) (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead k x t3) 
25404 w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2)))) (\lambda (x0: 
25405 T).(\lambda (H10: (pr0 x x0)).(\lambda (H11: (subst0 i v2 u2 x0)).(or_intror 
25406 (pr0 (THead k x t3) (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead k x 
25407 t3) w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2))) (ex_intro2 T 
25408 (\lambda (w2: T).(pr0 (THead k x t3) w2)) (\lambda (w2: T).(subst0 i v2 
25409 (THead k u2 t4) w2)) (THead k x0 t4) (pr0_comp x x0 H10 t3 t4 H2 k) 
25410 (subst0_fst v2 x0 u2 i H11 t4 k)))))) H9)) (H1 v1 x i H8 v2 H5)) w1 H7)))) 
25411 H6)) (\lambda (H6: (ex2 T (\lambda (t2: T).(eq T w1 (THead k u1 t2))) 
25412 (\lambda (t2: T).(subst0 (s k i) v1 t3 t2)))).(ex2_ind T (\lambda (t5: T).(eq 
25413 T w1 (THead k u1 t5))) (\lambda (t5: T).(subst0 (s k i) v1 t3 t5)) (or (pr0 
25414 w1 (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
25415 T).(subst0 i v2 (THead k u2 t4) w2)))) (\lambda (x: T).(\lambda (H7: (eq T w1 
25416 (THead k u1 x))).(\lambda (H8: (subst0 (s k i) v1 t3 x)).(eq_ind_r T (THead k 
25417 u1 x) (\lambda (t: T).(or (pr0 t (THead k u2 t4)) (ex2 T (\lambda (w2: 
25418 T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2))))) (or_ind 
25419 (pr0 x t4) (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s k 
25420 i) v2 t4 w2))) (or (pr0 (THead k u1 x) (THead k u2 t4)) (ex2 T (\lambda (w2: 
25421 T).(pr0 (THead k u1 x) w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) 
25422 w2)))) (\lambda (H9: (pr0 x t4)).(or_introl (pr0 (THead k u1 x) (THead k u2 
25423 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead k u1 x) w2)) (\lambda (w2: 
25424 T).(subst0 i v2 (THead k u2 t4) w2))) (pr0_comp u1 u2 H0 x t4 H9 k))) 
25425 (\lambda (H9: (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s 
25426 k i) v2 t4 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: 
25427 T).(subst0 (s k i) v2 t4 w2)) (or (pr0 (THead k u1 x) (THead k u2 t4)) (ex2 T 
25428 (\lambda (w2: T).(pr0 (THead k u1 x) w2)) (\lambda (w2: T).(subst0 i v2 
25429 (THead k u2 t4) w2)))) (\lambda (x0: T).(\lambda (H10: (pr0 x x0)).(\lambda 
25430 (H11: (subst0 (s k i) v2 t4 x0)).(or_intror (pr0 (THead k u1 x) (THead k u2 
25431 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead k u1 x) w2)) (\lambda (w2: 
25432 T).(subst0 i v2 (THead k u2 t4) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 
25433 (THead k u1 x) w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2)) (THead 
25434 k u2 x0) (pr0_comp u1 u2 H0 x x0 H10 k) (subst0_snd k v2 x0 t4 i H11 u2)))))) 
25435 H9)) (H3 v1 x (s k i) H8 v2 H5)) w1 H7)))) H6)) (\lambda (H6: (ex3_2 T T 
25436 (\lambda (u2: T).(\lambda (t2: T).(eq T w1 (THead k u2 t2)))) (\lambda (u2: 
25437 T).(\lambda (_: T).(subst0 i v1 u1 u2))) (\lambda (_: T).(\lambda (t2: 
25438 T).(subst0 (s k i) v1 t3 t2))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda 
25439 (t5: T).(eq T w1 (THead k u3 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 
25440 i v1 u1 u3))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s k i) v1 t3 t5))) 
25441 (or (pr0 w1 (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda 
25442 (w2: T).(subst0 i v2 (THead k u2 t4) w2)))) (\lambda (x0: T).(\lambda (x1: 
25443 T).(\lambda (H7: (eq T w1 (THead k x0 x1))).(\lambda (H8: (subst0 i v1 u1 
25444 x0)).(\lambda (H9: (subst0 (s k i) v1 t3 x1)).(eq_ind_r T (THead k x0 x1) 
25445 (\lambda (t: T).(or (pr0 t (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 t 
25446 w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2))))) (or_ind (pr0 x1 
25447 t4) (ex2 T (\lambda (w2: T).(pr0 x1 w2)) (\lambda (w2: T).(subst0 (s k i) v2 
25448 t4 w2))) (or (pr0 (THead k x0 x1) (THead k u2 t4)) (ex2 T (\lambda (w2: 
25449 T).(pr0 (THead k x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) 
25450 w2)))) (\lambda (H10: (pr0 x1 t4)).(or_ind (pr0 x0 u2) (ex2 T (\lambda (w2: 
25451 T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v2 u2 w2))) (or (pr0 (THead k x0 
25452 x1) (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead k x0 x1) w2)) 
25453 (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2)))) (\lambda (H11: (pr0 x0 
25454 u2)).(or_introl (pr0 (THead k x0 x1) (THead k u2 t4)) (ex2 T (\lambda (w2: 
25455 T).(pr0 (THead k x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) 
25456 w2))) (pr0_comp x0 u2 H11 x1 t4 H10 k))) (\lambda (H11: (ex2 T (\lambda (w2: 
25457 T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v2 u2 w2)))).(ex2_ind T (\lambda 
25458 (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v2 u2 w2)) (or (pr0 (THead k 
25459 x0 x1) (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead k x0 x1) w2)) 
25460 (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2)))) (\lambda (x: T).(\lambda 
25461 (H12: (pr0 x0 x)).(\lambda (H13: (subst0 i v2 u2 x)).(or_intror (pr0 (THead k 
25462 x0 x1) (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead k x0 x1) w2)) 
25463 (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2))) (ex_intro2 T (\lambda 
25464 (w2: T).(pr0 (THead k x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 
25465 t4) w2)) (THead k x t4) (pr0_comp x0 x H12 x1 t4 H10 k) (subst0_fst v2 x u2 i 
25466 H13 t4 k)))))) H11)) (H1 v1 x0 i H8 v2 H5))) (\lambda (H10: (ex2 T (\lambda 
25467 (w2: T).(pr0 x1 w2)) (\lambda (w2: T).(subst0 (s k i) v2 t4 w2)))).(ex2_ind T 
25468 (\lambda (w2: T).(pr0 x1 w2)) (\lambda (w2: T).(subst0 (s k i) v2 t4 w2)) (or 
25469 (pr0 (THead k x0 x1) (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead k 
25470 x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2)))) (\lambda (x: 
25471 T).(\lambda (H11: (pr0 x1 x)).(\lambda (H12: (subst0 (s k i) v2 t4 
25472 x)).(or_ind (pr0 x0 u2) (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: 
25473 T).(subst0 i v2 u2 w2))) (or (pr0 (THead k x0 x1) (THead k u2 t4)) (ex2 T 
25474 (\lambda (w2: T).(pr0 (THead k x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 
25475 (THead k u2 t4) w2)))) (\lambda (H13: (pr0 x0 u2)).(or_intror (pr0 (THead k 
25476 x0 x1) (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead k x0 x1) w2)) 
25477 (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2))) (ex_intro2 T (\lambda 
25478 (w2: T).(pr0 (THead k x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 
25479 t4) w2)) (THead k u2 x) (pr0_comp x0 u2 H13 x1 x H11 k) (subst0_snd k v2 x t4 
25480 i H12 u2)))) (\lambda (H13: (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda 
25481 (w2: T).(subst0 i v2 u2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) 
25482 (\lambda (w2: T).(subst0 i v2 u2 w2)) (or (pr0 (THead k x0 x1) (THead k u2 
25483 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead k x0 x1) w2)) (\lambda (w2: 
25484 T).(subst0 i v2 (THead k u2 t4) w2)))) (\lambda (x2: T).(\lambda (H14: (pr0 
25485 x0 x2)).(\lambda (H15: (subst0 i v2 u2 x2)).(or_intror (pr0 (THead k x0 x1) 
25486 (THead k u2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead k x0 x1) w2)) (\lambda 
25487 (w2: T).(subst0 i v2 (THead k u2 t4) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 
25488 (THead k x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead k u2 t4) w2)) 
25489 (THead k x2 x) (pr0_comp x0 x2 H14 x1 x H11 k) (subst0_both v2 u2 x2 i H15 k 
25490 t4 x H12)))))) H13)) (H1 v1 x0 i H8 v2 H5))))) H10)) (H3 v1 x1 (s k i) H9 v2 
25491 H5)) w1 H7)))))) H6)) (subst0_gen_head k v1 u1 t3 w1 i H4))))))))))))))))) 
25492 (\lambda (u: T).(\lambda (v1: T).(\lambda (v2: T).(\lambda (H0: (pr0 v1 
25493 v2)).(\lambda (H1: ((\forall (v3: T).(\forall (w1: T).(\forall (i: 
25494 nat).((subst0 i v3 v1 w1) \to (\forall (v4: T).((pr0 v3 v4) \to (or (pr0 w1 
25495 v2) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v4 v2 
25496 w2)))))))))))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H2: (pr0 t3 
25497 t4)).(\lambda (H3: ((\forall (v1: T).(\forall (w1: T).(\forall (i: 
25498 nat).((subst0 i v1 t3 w1) \to (\forall (v2: T).((pr0 v1 v2) \to (or (pr0 w1 
25499 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t4 
25500 w2)))))))))))).(\lambda (v0: T).(\lambda (w1: T).(\lambda (i: nat).(\lambda 
25501 (H4: (subst0 i v0 (THead (Flat Appl) v1 (THead (Bind Abst) u t3)) 
25502 w1)).(\lambda (v3: T).(\lambda (H5: (pr0 v0 v3)).(or3_ind (ex2 T (\lambda 
25503 (u2: T).(eq T w1 (THead (Flat Appl) u2 (THead (Bind Abst) u t3)))) (\lambda 
25504 (u2: T).(subst0 i v0 v1 u2))) (ex2 T (\lambda (t5: T).(eq T w1 (THead (Flat 
25505 Appl) v1 t5))) (\lambda (t5: T).(subst0 (s (Flat Appl) i) v0 (THead (Bind 
25506 Abst) u t3) t5))) (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T w1 
25507 (THead (Flat Appl) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v0 v1 
25508 u2))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s (Flat Appl) i) v0 (THead 
25509 (Bind Abst) u t3) t5)))) (or (pr0 w1 (THead (Bind Abbr) v2 t4)) (ex2 T 
25510 (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25511 Abbr) v2 t4) w2)))) (\lambda (H6: (ex2 T (\lambda (u2: T).(eq T w1 (THead 
25512 (Flat Appl) u2 (THead (Bind Abst) u t3)))) (\lambda (u2: T).(subst0 i v0 v1 
25513 u2)))).(ex2_ind T (\lambda (u2: T).(eq T w1 (THead (Flat Appl) u2 (THead 
25514 (Bind Abst) u t3)))) (\lambda (u2: T).(subst0 i v0 v1 u2)) (or (pr0 w1 (THead 
25515 (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
25516 T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (x: T).(\lambda 
25517 (H7: (eq T w1 (THead (Flat Appl) x (THead (Bind Abst) u t3)))).(\lambda (H8: 
25518 (subst0 i v0 v1 x)).(eq_ind_r T (THead (Flat Appl) x (THead (Bind Abst) u 
25519 t3)) (\lambda (t: T).(or (pr0 t (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda 
25520 (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) 
25521 w2))))) (or_ind (pr0 x v2) (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: 
25522 T).(subst0 i v3 v2 w2))) (or (pr0 (THead (Flat Appl) x (THead (Bind Abst) u 
25523 t3)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
25524 Appl) x (THead (Bind Abst) u t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
25525 (Bind Abbr) v2 t4) w2)))) (\lambda (H9: (pr0 x v2)).(or_introl (pr0 (THead 
25526 (Flat Appl) x (THead (Bind Abst) u t3)) (THead (Bind Abbr) v2 t4)) (ex2 T 
25527 (\lambda (w2: T).(pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2)) 
25528 (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2))) (pr0_beta u x 
25529 v2 H9 t3 t4 H2))) (\lambda (H9: (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda 
25530 (w2: T).(subst0 i v3 v2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x w2)) 
25531 (\lambda (w2: T).(subst0 i v3 v2 w2)) (or (pr0 (THead (Flat Appl) x (THead 
25532 (Bind Abst) u t3)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 
25533 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2)) (\lambda (w2: T).(subst0 
25534 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (x0: T).(\lambda (H10: (pr0 x 
25535 x0)).(\lambda (H11: (subst0 i v3 v2 x0)).(or_intror (pr0 (THead (Flat Appl) x 
25536 (THead (Bind Abst) u t3)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: 
25537 T).(pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2)) (\lambda (w2: 
25538 T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2))) (ex_intro2 T (\lambda (w2: 
25539 T).(pr0 (THead (Flat Appl) x (THead (Bind Abst) u t3)) w2)) (\lambda (w2: 
25540 T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)) (THead (Bind Abbr) x0 t4) 
25541 (pr0_beta u x x0 H10 t3 t4 H2) (subst0_fst v3 x0 v2 i H11 t4 (Bind 
25542 Abbr))))))) H9)) (H1 v0 x i H8 v3 H5)) w1 H7)))) H6)) (\lambda (H6: (ex2 T 
25543 (\lambda (t2: T).(eq T w1 (THead (Flat Appl) v1 t2))) (\lambda (t2: 
25544 T).(subst0 (s (Flat Appl) i) v0 (THead (Bind Abst) u t3) t2)))).(ex2_ind T 
25545 (\lambda (t5: T).(eq T w1 (THead (Flat Appl) v1 t5))) (\lambda (t5: 
25546 T).(subst0 (s (Flat Appl) i) v0 (THead (Bind Abst) u t3) t5)) (or (pr0 w1 
25547 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
25548 T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (x: T).(\lambda 
25549 (H7: (eq T w1 (THead (Flat Appl) v1 x))).(\lambda (H8: (subst0 (s (Flat Appl) 
25550 i) v0 (THead (Bind Abst) u t3) x)).(or3_ind (ex2 T (\lambda (u2: T).(eq T x 
25551 (THead (Bind Abst) u2 t3))) (\lambda (u2: T).(subst0 (s (Flat Appl) i) v0 u 
25552 u2))) (ex2 T (\lambda (t5: T).(eq T x (THead (Bind Abst) u t5))) (\lambda 
25553 (t5: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t5))) (ex3_2 T T 
25554 (\lambda (u2: T).(\lambda (t5: T).(eq T x (THead (Bind Abst) u2 t5)))) 
25555 (\lambda (u2: T).(\lambda (_: T).(subst0 (s (Flat Appl) i) v0 u u2))) 
25556 (\lambda (_: T).(\lambda (t5: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 
25557 t3 t5)))) (or (pr0 w1 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 
25558 w1 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) 
25559 (\lambda (H9: (ex2 T (\lambda (u2: T).(eq T x (THead (Bind Abst) u2 t3))) 
25560 (\lambda (u2: T).(subst0 (s (Flat Appl) i) v0 u u2)))).(ex2_ind T (\lambda 
25561 (u2: T).(eq T x (THead (Bind Abst) u2 t3))) (\lambda (u2: T).(subst0 (s (Flat 
25562 Appl) i) v0 u u2)) (or (pr0 w1 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda 
25563 (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) 
25564 w2)))) (\lambda (x0: T).(\lambda (H10: (eq T x (THead (Bind Abst) x0 
25565 t3))).(\lambda (_: (subst0 (s (Flat Appl) i) v0 u x0)).(eq_ind_r T (THead 
25566 (Flat Appl) v1 x) (\lambda (t: T).(or (pr0 t (THead (Bind Abbr) v2 t4)) (ex2 
25567 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25568 Abbr) v2 t4) w2))))) (eq_ind_r T (THead (Bind Abst) x0 t3) (\lambda (t: 
25569 T).(or (pr0 (THead (Flat Appl) v1 t) (THead (Bind Abbr) v2 t4)) (ex2 T 
25570 (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 t) w2)) (\lambda (w2: T).(subst0 
25571 i v3 (THead (Bind Abbr) v2 t4) w2))))) (or_introl (pr0 (THead (Flat Appl) v1 
25572 (THead (Bind Abst) x0 t3)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: 
25573 T).(pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 t3)) w2)) (\lambda (w2: 
25574 T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2))) (pr0_beta x0 v1 v2 H0 t3 t4 
25575 H2)) x H10) w1 H7)))) H9)) (\lambda (H9: (ex2 T (\lambda (t2: T).(eq T x 
25576 (THead (Bind Abst) u t2))) (\lambda (t2: T).(subst0 (s (Bind Abst) (s (Flat 
25577 Appl) i)) v0 t3 t2)))).(ex2_ind T (\lambda (t5: T).(eq T x (THead (Bind Abst) 
25578 u t5))) (\lambda (t5: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t5)) 
25579 (or (pr0 w1 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) 
25580 (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (x0: 
25581 T).(\lambda (H10: (eq T x (THead (Bind Abst) u x0))).(\lambda (H11: (subst0 
25582 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 x0)).(eq_ind_r T (THead (Flat Appl) 
25583 v1 x) (\lambda (t: T).(or (pr0 t (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda 
25584 (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) 
25585 w2))))) (eq_ind_r T (THead (Bind Abst) u x0) (\lambda (t: T).(or (pr0 (THead 
25586 (Flat Appl) v1 t) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 
25587 (THead (Flat Appl) v1 t) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25588 Abbr) v2 t4) w2))))) (or_ind (pr0 x0 t4) (ex2 T (\lambda (w2: T).(pr0 x0 w2)) 
25589 (\lambda (w2: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2))) (or 
25590 (pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) (THead (Bind Abbr) v2 
25591 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u 
25592 x0)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) 
25593 (\lambda (H12: (pr0 x0 t4)).(or_introl (pr0 (THead (Flat Appl) v1 (THead 
25594 (Bind Abst) u x0)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 
25595 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2)) (\lambda (w2: T).(subst0 
25596 i v3 (THead (Bind Abbr) v2 t4) w2))) (pr0_beta u v1 v2 H0 x0 t4 H12))) 
25597 (\lambda (H12: (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 
25598 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2)))).(ex2_ind T (\lambda (w2: 
25599 T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 
25600 t4 w2)) (or (pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) (THead (Bind 
25601 Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind 
25602 Abst) u x0)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) 
25603 w2)))) (\lambda (x1: T).(\lambda (H13: (pr0 x0 x1)).(\lambda (H14: (subst0 (s 
25604 (Bind Abst) (s (Flat Appl) i)) v3 t4 x1)).(or_intror (pr0 (THead (Flat Appl) 
25605 v1 (THead (Bind Abst) u x0)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: 
25606 T).(pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2)) (\lambda (w2: 
25607 T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2))) (ex_intro2 T (\lambda (w2: 
25608 T).(pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u x0)) w2)) (\lambda (w2: 
25609 T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)) (THead (Bind Abbr) v2 x1) 
25610 (pr0_beta u v1 v2 H0 x0 x1 H13) (subst0_snd (Bind Abbr) v3 x1 t4 i H14 
25611 v2)))))) H12)) (H3 v0 x0 (s (Bind Abst) (s (Flat Appl) i)) H11 v3 H5)) x H10) 
25612 w1 H7)))) H9)) (\lambda (H9: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq 
25613 T x (THead (Bind Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 (s 
25614 (Flat Appl) i) v0 u u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Bind 
25615 Abst) (s (Flat Appl) i)) v0 t3 t2))))).(ex3_2_ind T T (\lambda (u2: 
25616 T).(\lambda (t5: T).(eq T x (THead (Bind Abst) u2 t5)))) (\lambda (u2: 
25617 T).(\lambda (_: T).(subst0 (s (Flat Appl) i) v0 u u2))) (\lambda (_: 
25618 T).(\lambda (t5: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t5))) (or 
25619 (pr0 w1 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) 
25620 (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (x0: 
25621 T).(\lambda (x1: T).(\lambda (H10: (eq T x (THead (Bind Abst) x0 
25622 x1))).(\lambda (_: (subst0 (s (Flat Appl) i) v0 u x0)).(\lambda (H12: (subst0 
25623 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 x1)).(eq_ind_r T (THead (Flat Appl) 
25624 v1 x) (\lambda (t: T).(or (pr0 t (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda 
25625 (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) 
25626 w2))))) (eq_ind_r T (THead (Bind Abst) x0 x1) (\lambda (t: T).(or (pr0 (THead 
25627 (Flat Appl) v1 t) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 
25628 (THead (Flat Appl) v1 t) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25629 Abbr) v2 t4) w2))))) (or_ind (pr0 x1 t4) (ex2 T (\lambda (w2: T).(pr0 x1 w2)) 
25630 (\lambda (w2: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2))) (or 
25631 (pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) (THead (Bind Abbr) v2 
25632 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 
25633 x1)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) 
25634 (\lambda (H13: (pr0 x1 t4)).(or_introl (pr0 (THead (Flat Appl) v1 (THead 
25635 (Bind Abst) x0 x1)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 
25636 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2)) (\lambda (w2: 
25637 T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2))) (pr0_beta x0 v1 v2 H0 x1 t4 
25638 H13))) (\lambda (H13: (ex2 T (\lambda (w2: T).(pr0 x1 w2)) (\lambda (w2: 
25639 T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2)))).(ex2_ind T (\lambda 
25640 (w2: T).(pr0 x1 w2)) (\lambda (w2: T).(subst0 (s (Bind Abst) (s (Flat Appl) 
25641 i)) v3 t4 w2)) (or (pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) 
25642 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 
25643 (THead (Bind Abst) x0 x1)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25644 Abbr) v2 t4) w2)))) (\lambda (x2: T).(\lambda (H14: (pr0 x1 x2)).(\lambda 
25645 (H15: (subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x2)).(or_intror (pr0 
25646 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) (THead (Bind Abbr) v2 t4)) 
25647 (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) 
25648 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2))) (ex_intro2 
25649 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind Abst) x0 x1)) w2)) 
25650 (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)) (THead (Bind 
25651 Abbr) v2 x2) (pr0_beta x0 v1 v2 H0 x1 x2 H14) (subst0_snd (Bind Abbr) v3 x2 
25652 t4 i H15 v2)))))) H13)) (H3 v0 x1 (s (Bind Abst) (s (Flat Appl) i)) H12 v3 
25653 H5)) x H10) w1 H7)))))) H9)) (subst0_gen_head (Bind Abst) v0 u t3 x (s (Flat 
25654 Appl) i) H8))))) H6)) (\lambda (H6: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
25655 T).(eq T w1 (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
25656 T).(subst0 i v0 v1 u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Flat 
25657 Appl) i) v0 (THead (Bind Abst) u t3) t2))))).(ex3_2_ind T T (\lambda (u2: 
25658 T).(\lambda (t5: T).(eq T w1 (THead (Flat Appl) u2 t5)))) (\lambda (u2: 
25659 T).(\lambda (_: T).(subst0 i v0 v1 u2))) (\lambda (_: T).(\lambda (t5: 
25660 T).(subst0 (s (Flat Appl) i) v0 (THead (Bind Abst) u t3) t5))) (or (pr0 w1 
25661 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
25662 T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (x0: T).(\lambda 
25663 (x1: T).(\lambda (H7: (eq T w1 (THead (Flat Appl) x0 x1))).(\lambda (H8: 
25664 (subst0 i v0 v1 x0)).(\lambda (H9: (subst0 (s (Flat Appl) i) v0 (THead (Bind 
25665 Abst) u t3) x1)).(or3_ind (ex2 T (\lambda (u2: T).(eq T x1 (THead (Bind Abst) 
25666 u2 t3))) (\lambda (u2: T).(subst0 (s (Flat Appl) i) v0 u u2))) (ex2 T 
25667 (\lambda (t5: T).(eq T x1 (THead (Bind Abst) u t5))) (\lambda (t5: T).(subst0 
25668 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t5))) (ex3_2 T T (\lambda (u2: 
25669 T).(\lambda (t5: T).(eq T x1 (THead (Bind Abst) u2 t5)))) (\lambda (u2: 
25670 T).(\lambda (_: T).(subst0 (s (Flat Appl) i) v0 u u2))) (\lambda (_: 
25671 T).(\lambda (t5: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t5)))) 
25672 (or (pr0 w1 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) 
25673 (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (H10: 
25674 (ex2 T (\lambda (u2: T).(eq T x1 (THead (Bind Abst) u2 t3))) (\lambda (u2: 
25675 T).(subst0 (s (Flat Appl) i) v0 u u2)))).(ex2_ind T (\lambda (u2: T).(eq T x1 
25676 (THead (Bind Abst) u2 t3))) (\lambda (u2: T).(subst0 (s (Flat Appl) i) v0 u 
25677 u2)) (or (pr0 w1 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 w1 
25678 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda 
25679 (x: T).(\lambda (H11: (eq T x1 (THead (Bind Abst) x t3))).(\lambda (_: 
25680 (subst0 (s (Flat Appl) i) v0 u x)).(eq_ind_r T (THead (Flat Appl) x0 x1) 
25681 (\lambda (t: T).(or (pr0 t (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: 
25682 T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) 
25683 w2))))) (eq_ind_r T (THead (Bind Abst) x t3) (\lambda (t: T).(or (pr0 (THead 
25684 (Flat Appl) x0 t) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 
25685 (THead (Flat Appl) x0 t) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25686 Abbr) v2 t4) w2))))) (or_ind (pr0 x0 v2) (ex2 T (\lambda (w2: T).(pr0 x0 w2)) 
25687 (\lambda (w2: T).(subst0 i v3 v2 w2))) (or (pr0 (THead (Flat Appl) x0 (THead 
25688 (Bind Abst) x t3)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 
25689 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2)) (\lambda (w2: T).(subst0 
25690 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (H13: (pr0 x0 v2)).(or_introl 
25691 (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) (THead (Bind Abbr) v2 
25692 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x 
25693 t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2))) 
25694 (pr0_beta x x0 v2 H13 t3 t4 H2))) (\lambda (H13: (ex2 T (\lambda (w2: T).(pr0 
25695 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2)))).(ex2_ind T (\lambda (w2: 
25696 T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2)) (or (pr0 (THead (Flat 
25697 Appl) x0 (THead (Bind Abst) x t3)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda 
25698 (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) w2)) (\lambda 
25699 (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (x2: 
25700 T).(\lambda (H14: (pr0 x0 x2)).(\lambda (H15: (subst0 i v3 v2 x2)).(or_intror 
25701 (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x t3)) (THead (Bind Abbr) v2 
25702 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x 
25703 t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2))) 
25704 (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x 
25705 t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)) (THead 
25706 (Bind Abbr) x2 t4) (pr0_beta x x0 x2 H14 t3 t4 H2) (subst0_fst v3 x2 v2 i H15 
25707 t4 (Bind Abbr))))))) H13)) (H1 v0 x0 i H8 v3 H5)) x1 H11) w1 H7)))) H10)) 
25708 (\lambda (H10: (ex2 T (\lambda (t2: T).(eq T x1 (THead (Bind Abst) u t2))) 
25709 (\lambda (t2: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 
25710 t2)))).(ex2_ind T (\lambda (t5: T).(eq T x1 (THead (Bind Abst) u t5))) 
25711 (\lambda (t5: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t5)) (or 
25712 (pr0 w1 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) 
25713 (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (x: 
25714 T).(\lambda (H11: (eq T x1 (THead (Bind Abst) u x))).(\lambda (H12: (subst0 
25715 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 x)).(eq_ind_r T (THead (Flat Appl) x0 
25716 x1) (\lambda (t: T).(or (pr0 t (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda 
25717 (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) 
25718 w2))))) (eq_ind_r T (THead (Bind Abst) u x) (\lambda (t: T).(or (pr0 (THead 
25719 (Flat Appl) x0 t) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 
25720 (THead (Flat Appl) x0 t) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25721 Abbr) v2 t4) w2))))) (or_ind (pr0 x t4) (ex2 T (\lambda (w2: T).(pr0 x w2)) 
25722 (\lambda (w2: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2))) (or 
25723 (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) (THead (Bind Abbr) v2 
25724 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u 
25725 x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) 
25726 (\lambda (H13: (pr0 x t4)).(or_ind (pr0 x0 v2) (ex2 T (\lambda (w2: T).(pr0 
25727 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2))) (or (pr0 (THead (Flat Appl) x0 
25728 (THead (Bind Abst) u x)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: 
25729 T).(pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2)) (\lambda (w2: 
25730 T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (H14: (pr0 x0 
25731 v2)).(or_introl (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) (THead 
25732 (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
25733 (Bind Abst) u x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 
25734 t4) w2))) (pr0_beta u x0 v2 H14 x t4 H13))) (\lambda (H14: (ex2 T (\lambda 
25735 (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2)))).(ex2_ind T 
25736 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2)) (or (pr0 
25737 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) (THead (Bind Abbr) v2 t4)) 
25738 (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) 
25739 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda 
25740 (x2: T).(\lambda (H15: (pr0 x0 x2)).(\lambda (H16: (subst0 i v3 v2 
25741 x2)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) (THead 
25742 (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
25743 (Bind Abst) u x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 
25744 t4) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
25745 (Bind Abst) u x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 
25746 t4) w2)) (THead (Bind Abbr) x2 t4) (pr0_beta u x0 x2 H15 x t4 H13) 
25747 (subst0_fst v3 x2 v2 i H16 t4 (Bind Abbr))))))) H14)) (H1 v0 x0 i H8 v3 H5))) 
25748 (\lambda (H13: (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 
25749 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2)))).(ex2_ind T (\lambda (w2: 
25750 T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 
25751 t4 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) (THead (Bind 
25752 Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind 
25753 Abst) u x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) 
25754 w2)))) (\lambda (x2: T).(\lambda (H14: (pr0 x x2)).(\lambda (H15: (subst0 (s 
25755 (Bind Abst) (s (Flat Appl) i)) v3 t4 x2)).(or_ind (pr0 x0 v2) (ex2 T (\lambda 
25756 (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2))) (or (pr0 (THead 
25757 (Flat Appl) x0 (THead (Bind Abst) u x)) (THead (Bind Abbr) v2 t4)) (ex2 T 
25758 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) w2)) 
25759 (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (H16: 
25760 (pr0 x0 v2)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) 
25761 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 
25762 (THead (Bind Abst) u x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25763 Abbr) v2 t4) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 
25764 (THead (Bind Abst) u x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25765 Abbr) v2 t4) w2)) (THead (Bind Abbr) v2 x2) (pr0_beta u x0 v2 H16 x x2 H14) 
25766 (subst0_snd (Bind Abbr) v3 x2 t4 i H15 v2)))) (\lambda (H16: (ex2 T (\lambda 
25767 (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2)))).(ex2_ind T 
25768 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2)) (or (pr0 
25769 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) (THead (Bind Abbr) v2 t4)) 
25770 (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) 
25771 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda 
25772 (x3: T).(\lambda (H17: (pr0 x0 x3)).(\lambda (H18: (subst0 i v3 v2 
25773 x3)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) u x)) (THead 
25774 (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
25775 (Bind Abst) u x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 
25776 t4) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
25777 (Bind Abst) u x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 
25778 t4) w2)) (THead (Bind Abbr) x3 x2) (pr0_beta u x0 x3 H17 x x2 H14) 
25779 (subst0_both v3 v2 x3 i H18 (Bind Abbr) t4 x2 H15)))))) H16)) (H1 v0 x0 i H8 
25780 v3 H5))))) H13)) (H3 v0 x (s (Bind Abst) (s (Flat Appl) i)) H12 v3 H5)) x1 
25781 H11) w1 H7)))) H10)) (\lambda (H10: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
25782 T).(eq T x1 (THead (Bind Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
25783 T).(subst0 (s (Flat Appl) i) v0 u u2))) (\lambda (_: T).(\lambda (t2: 
25784 T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 t2))))).(ex3_2_ind T T 
25785 (\lambda (u2: T).(\lambda (t5: T).(eq T x1 (THead (Bind Abst) u2 t5)))) 
25786 (\lambda (u2: T).(\lambda (_: T).(subst0 (s (Flat Appl) i) v0 u u2))) 
25787 (\lambda (_: T).(\lambda (t5: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 
25788 t3 t5))) (or (pr0 w1 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 
25789 w1 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) 
25790 (\lambda (x2: T).(\lambda (x3: T).(\lambda (H11: (eq T x1 (THead (Bind Abst) 
25791 x2 x3))).(\lambda (_: (subst0 (s (Flat Appl) i) v0 u x2)).(\lambda (H13: 
25792 (subst0 (s (Bind Abst) (s (Flat Appl) i)) v0 t3 x3)).(eq_ind_r T (THead (Flat 
25793 Appl) x0 x1) (\lambda (t: T).(or (pr0 t (THead (Bind Abbr) v2 t4)) (ex2 T 
25794 (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) 
25795 v2 t4) w2))))) (eq_ind_r T (THead (Bind Abst) x2 x3) (\lambda (t: T).(or (pr0 
25796 (THead (Flat Appl) x0 t) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: 
25797 T).(pr0 (THead (Flat Appl) x0 t) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
25798 (Bind Abbr) v2 t4) w2))))) (or_ind (pr0 x3 t4) (ex2 T (\lambda (w2: T).(pr0 
25799 x3 w2)) (\lambda (w2: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 
25800 w2))) (or (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) (THead (Bind 
25801 Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind 
25802 Abst) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) 
25803 w2)))) (\lambda (H14: (pr0 x3 t4)).(or_ind (pr0 x0 v2) (ex2 T (\lambda (w2: 
25804 T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2))) (or (pr0 (THead (Flat 
25805 Appl) x0 (THead (Bind Abst) x2 x3)) (THead (Bind Abbr) v2 t4)) (ex2 T 
25806 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) w2)) 
25807 (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda (H15: 
25808 (pr0 x0 v2)).(or_introl (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) 
25809 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 
25810 (THead (Bind Abst) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25811 Abbr) v2 t4) w2))) (pr0_beta x2 x0 v2 H15 x3 t4 H14))) (\lambda (H15: (ex2 T 
25812 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 
25813 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 
25814 v2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) (THead 
25815 (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
25816 (Bind Abst) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 
25817 t4) w2)))) (\lambda (x: T).(\lambda (H16: (pr0 x0 x)).(\lambda (H17: (subst0 
25818 i v3 v2 x)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) 
25819 (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 
25820 (THead (Bind Abst) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25821 Abbr) v2 t4) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 
25822 (THead (Bind Abst) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind 
25823 Abbr) v2 t4) w2)) (THead (Bind Abbr) x t4) (pr0_beta x2 x0 x H16 x3 t4 H14) 
25824 (subst0_fst v3 x v2 i H17 t4 (Bind Abbr))))))) H15)) (H1 v0 x0 i H8 v3 H5))) 
25825 (\lambda (H14: (ex2 T (\lambda (w2: T).(pr0 x3 w2)) (\lambda (w2: T).(subst0 
25826 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 w2)))).(ex2_ind T (\lambda (w2: 
25827 T).(pr0 x3 w2)) (\lambda (w2: T).(subst0 (s (Bind Abst) (s (Flat Appl) i)) v3 
25828 t4 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) (THead 
25829 (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
25830 (Bind Abst) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 
25831 t4) w2)))) (\lambda (x: T).(\lambda (H15: (pr0 x3 x)).(\lambda (H16: (subst0 
25832 (s (Bind Abst) (s (Flat Appl) i)) v3 t4 x)).(or_ind (pr0 x0 v2) (ex2 T 
25833 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2))) (or (pr0 
25834 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) (THead (Bind Abbr) v2 t4)) 
25835 (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) 
25836 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 t4) w2)))) (\lambda 
25837 (H17: (pr0 x0 v2)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) 
25838 x2 x3)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
25839 Appl) x0 (THead (Bind Abst) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
25840 (Bind Abbr) v2 t4) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat 
25841 Appl) x0 (THead (Bind Abst) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
25842 (Bind Abbr) v2 t4) w2)) (THead (Bind Abbr) v2 x) (pr0_beta x2 x0 v2 H17 x3 x 
25843 H15) (subst0_snd (Bind Abbr) v3 x t4 i H16 v2)))) (\lambda (H17: (ex2 T 
25844 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 
25845 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 
25846 v2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) x2 x3)) (THead 
25847 (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
25848 (Bind Abst) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind Abbr) v2 
25849 t4) w2)))) (\lambda (x4: T).(\lambda (H18: (pr0 x0 x4)).(\lambda (H19: 
25850 (subst0 i v3 v2 x4)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind Abst) 
25851 x2 x3)) (THead (Bind Abbr) v2 t4)) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
25852 Appl) x0 (THead (Bind Abst) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
25853 (Bind Abbr) v2 t4) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat 
25854 Appl) x0 (THead (Bind Abst) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
25855 (Bind Abbr) v2 t4) w2)) (THead (Bind Abbr) x4 x) (pr0_beta x2 x0 x4 H18 x3 x 
25856 H15) (subst0_both v3 v2 x4 i H19 (Bind Abbr) t4 x H16)))))) H17)) (H1 v0 x0 i 
25857 H8 v3 H5))))) H14)) (H3 v0 x3 (s (Bind Abst) (s (Flat Appl) i)) H13 v3 H5)) 
25858 x1 H11) w1 H7)))))) H10)) (subst0_gen_head (Bind Abst) v0 u t3 x1 (s (Flat 
25859 Appl) i) H9))))))) H6)) (subst0_gen_head (Flat Appl) v0 v1 (THead (Bind Abst) 
25860 u t3) w1 i H4))))))))))))))))) (\lambda (b: B).(\lambda (H0: (not (eq B b 
25861 Abst))).(\lambda (v1: T).(\lambda (v2: T).(\lambda (H1: (pr0 v1 v2)).(\lambda 
25862 (H2: ((\forall (v3: T).(\forall (w1: T).(\forall (i: nat).((subst0 i v3 v1 
25863 w1) \to (\forall (v4: T).((pr0 v3 v4) \to (or (pr0 w1 v2) (ex2 T (\lambda 
25864 (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v4 v2 w2)))))))))))).(\lambda 
25865 (u1: T).(\lambda (u2: T).(\lambda (H3: (pr0 u1 u2)).(\lambda (H4: ((\forall 
25866 (v1: T).(\forall (w1: T).(\forall (i: nat).((subst0 i v1 u1 w1) \to (\forall 
25867 (v2: T).((pr0 v1 v2) \to (or (pr0 w1 u2) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) 
25868 (\lambda (w2: T).(subst0 i v2 u2 w2)))))))))))).(\lambda (t3: T).(\lambda 
25869 (t4: T).(\lambda (H5: (pr0 t3 t4)).(\lambda (H6: ((\forall (v1: T).(\forall 
25870 (w1: T).(\forall (i: nat).((subst0 i v1 t3 w1) \to (\forall (v2: T).((pr0 v1 
25871 v2) \to (or (pr0 w1 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
25872 T).(subst0 i v2 t4 w2)))))))))))).(\lambda (v0: T).(\lambda (w1: T).(\lambda 
25873 (i: nat).(\lambda (H7: (subst0 i v0 (THead (Flat Appl) v1 (THead (Bind b) u1 
25874 t3)) w1)).(\lambda (v3: T).(\lambda (H8: (pr0 v0 v3)).(or3_ind (ex2 T 
25875 (\lambda (u3: T).(eq T w1 (THead (Flat Appl) u3 (THead (Bind b) u1 t3)))) 
25876 (\lambda (u3: T).(subst0 i v0 v1 u3))) (ex2 T (\lambda (t5: T).(eq T w1 
25877 (THead (Flat Appl) v1 t5))) (\lambda (t5: T).(subst0 (s (Flat Appl) i) v0 
25878 (THead (Bind b) u1 t3) t5))) (ex3_2 T T (\lambda (u3: T).(\lambda (t5: T).(eq 
25879 T w1 (THead (Flat Appl) u3 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i 
25880 v0 v1 u3))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s (Flat Appl) i) v0 
25881 (THead (Bind b) u1 t3) t5)))) (or (pr0 w1 (THead (Bind b) u2 (THead (Flat 
25882 Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda 
25883 (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
25884 t4)) w2)))) (\lambda (H9: (ex2 T (\lambda (u2: T).(eq T w1 (THead (Flat Appl) 
25885 u2 (THead (Bind b) u1 t3)))) (\lambda (u2: T).(subst0 i v0 v1 u2)))).(ex2_ind 
25886 T (\lambda (u3: T).(eq T w1 (THead (Flat Appl) u3 (THead (Bind b) u1 t3)))) 
25887 (\lambda (u3: T).(subst0 i v0 v1 u3)) (or (pr0 w1 (THead (Bind b) u2 (THead 
25888 (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) 
25889 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
25890 O) O v2) t4)) w2)))) (\lambda (x: T).(\lambda (H10: (eq T w1 (THead (Flat 
25891 Appl) x (THead (Bind b) u1 t3)))).(\lambda (H11: (subst0 i v0 v1 
25892 x)).(eq_ind_r T (THead (Flat Appl) x (THead (Bind b) u1 t3)) (\lambda (t: 
25893 T).(or (pr0 t (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) 
25894 (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v3 (THead 
25895 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2))))) (or_ind (pr0 x 
25896 v2) (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 i v3 v2 
25897 w2))) (or (pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) (THead (Bind b) 
25898 u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 
25899 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2)) (\lambda (w2: T).(subst0 i 
25900 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
25901 (\lambda (H12: (pr0 x v2)).(or_introl (pr0 (THead (Flat Appl) x (THead (Bind 
25902 b) u1 t3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 
25903 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2)) 
25904 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
25905 O) O v2) t4)) w2))) (pr0_upsilon b H0 x v2 H12 u1 u2 H3 t3 t4 H5))) (\lambda 
25906 (H12: (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 i v3 v2 
25907 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 i v3 
25908 v2 w2)) (or (pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) (THead (Bind b) 
25909 u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 
25910 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2)) (\lambda (w2: T).(subst0 i 
25911 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
25912 (\lambda (x0: T).(\lambda (H13: (pr0 x x0)).(\lambda (H14: (subst0 i v3 v2 
25913 x0)).(or_intror (pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) (THead 
25914 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
25915 T).(pr0 (THead (Flat Appl) x (THead (Bind b) u1 t3)) w2)) (\lambda (w2: 
25916 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
25917 w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x (THead (Bind b) 
25918 u1 t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
25919 Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) u2 (THead (Flat Appl) (lift 
25920 (S O) O x0) t4)) (pr0_upsilon b H0 x x0 H13 u1 u2 H3 t3 t4 H5) (subst0_snd 
25921 (Bind b) v3 (THead (Flat Appl) (lift (S O) O x0) t4) (THead (Flat Appl) (lift 
25922 (S O) O v2) t4) i (subst0_fst v3 (lift (S O) O x0) (lift (S O) O v2) (s (Bind 
25923 b) i) (subst0_lift_ge_s v2 x0 v3 i H14 O (le_O_n i) b) t4 (Flat Appl)) 
25924 u2)))))) H12)) (H2 v0 x i H11 v3 H8)) w1 H10)))) H9)) (\lambda (H9: (ex2 T 
25925 (\lambda (t2: T).(eq T w1 (THead (Flat Appl) v1 t2))) (\lambda (t2: 
25926 T).(subst0 (s (Flat Appl) i) v0 (THead (Bind b) u1 t3) t2)))).(ex2_ind T 
25927 (\lambda (t5: T).(eq T w1 (THead (Flat Appl) v1 t5))) (\lambda (t5: 
25928 T).(subst0 (s (Flat Appl) i) v0 (THead (Bind b) u1 t3) t5)) (or (pr0 w1 
25929 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda 
25930 (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead 
25931 (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (x: T).(\lambda (H10: (eq 
25932 T w1 (THead (Flat Appl) v1 x))).(\lambda (H11: (subst0 (s (Flat Appl) i) v0 
25933 (THead (Bind b) u1 t3) x)).(or3_ind (ex2 T (\lambda (u3: T).(eq T x (THead 
25934 (Bind b) u3 t3))) (\lambda (u3: T).(subst0 (s (Flat Appl) i) v0 u1 u3))) (ex2 
25935 T (\lambda (t5: T).(eq T x (THead (Bind b) u1 t5))) (\lambda (t5: T).(subst0 
25936 (s (Bind b) (s (Flat Appl) i)) v0 t3 t5))) (ex3_2 T T (\lambda (u3: 
25937 T).(\lambda (t5: T).(eq T x (THead (Bind b) u3 t5)))) (\lambda (u3: 
25938 T).(\lambda (_: T).(subst0 (s (Flat Appl) i) v0 u1 u3))) (\lambda (_: 
25939 T).(\lambda (t5: T).(subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 t5)))) (or 
25940 (pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T 
25941 (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) 
25942 u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H12: (ex2 T 
25943 (\lambda (u2: T).(eq T x (THead (Bind b) u2 t3))) (\lambda (u2: T).(subst0 (s 
25944 (Flat Appl) i) v0 u1 u2)))).(ex2_ind T (\lambda (u3: T).(eq T x (THead (Bind 
25945 b) u3 t3))) (\lambda (u3: T).(subst0 (s (Flat Appl) i) v0 u1 u3)) (or (pr0 w1 
25946 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda 
25947 (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead 
25948 (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (x0: T).(\lambda (H13: (eq 
25949 T x (THead (Bind b) x0 t3))).(\lambda (H14: (subst0 (s (Flat Appl) i) v0 u1 
25950 x0)).(eq_ind_r T (THead (Flat Appl) v1 x) (\lambda (t: T).(or (pr0 t (THead 
25951 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
25952 T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
25953 Appl) (lift (S O) O v2) t4)) w2))))) (eq_ind_r T (THead (Bind b) x0 t3) 
25954 (\lambda (t: T).(or (pr0 (THead (Flat Appl) v1 t) (THead (Bind b) u2 (THead 
25955 (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
25956 Appl) v1 t) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead 
25957 (Flat Appl) (lift (S O) O v2) t4)) w2))))) (or_ind (pr0 x0 u2) (ex2 T 
25958 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 (s (Flat Appl) i) v3 
25959 u2 w2))) (or (pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) (THead (Bind 
25960 b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 
25961 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2)) (\lambda (w2: T).(subst0 i 
25962 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
25963 (\lambda (H15: (pr0 x0 u2)).(or_introl (pr0 (THead (Flat Appl) v1 (THead 
25964 (Bind b) x0 t3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
25965 t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 
25966 t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) 
25967 (lift (S O) O v2) t4)) w2))) (pr0_upsilon b H0 v1 v2 H1 x0 u2 H15 t3 t4 H5))) 
25968 (\lambda (H15: (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 
25969 (s (Flat Appl) i) v3 u2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) 
25970 (\lambda (w2: T).(subst0 (s (Flat Appl) i) v3 u2 w2)) (or (pr0 (THead (Flat 
25971 Appl) v1 (THead (Bind b) x0 t3)) (THead (Bind b) u2 (THead (Flat Appl) (lift 
25972 (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead 
25973 (Bind b) x0 t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead 
25974 (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (x1: T).(\lambda (H16: 
25975 (pr0 x0 x1)).(\lambda (H17: (subst0 (s (Flat Appl) i) v3 u2 x1)).(or_intror 
25976 (pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) (THead (Bind b) u2 (THead 
25977 (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
25978 Appl) v1 (THead (Bind b) x0 t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
25979 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2))) (ex_intro2 T 
25980 (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 t3)) w2)) 
25981 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
25982 O) O v2) t4)) w2)) (THead (Bind b) x1 (THead (Flat Appl) (lift (S O) O v2) 
25983 t4)) (pr0_upsilon b H0 v1 v2 H1 x0 x1 H16 t3 t4 H5) (subst0_fst v3 x1 u2 i 
25984 H17 (THead (Flat Appl) (lift (S O) O v2) t4) (Bind b))))))) H15)) (H4 v0 x0 
25985 (s (Flat Appl) i) H14 v3 H8)) x H13) w1 H10)))) H12)) (\lambda (H12: (ex2 T 
25986 (\lambda (t2: T).(eq T x (THead (Bind b) u1 t2))) (\lambda (t2: T).(subst0 (s 
25987 (Bind b) (s (Flat Appl) i)) v0 t3 t2)))).(ex2_ind T (\lambda (t5: T).(eq T x 
25988 (THead (Bind b) u1 t5))) (\lambda (t5: T).(subst0 (s (Bind b) (s (Flat Appl) 
25989 i)) v0 t3 t5)) (or (pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) 
25990 O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i 
25991 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
25992 (\lambda (x0: T).(\lambda (H13: (eq T x (THead (Bind b) u1 x0))).(\lambda 
25993 (H14: (subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 x0)).(eq_ind_r T (THead 
25994 (Flat Appl) v1 x) (\lambda (t: T).(or (pr0 t (THead (Bind b) u2 (THead (Flat 
25995 Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda 
25996 (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
25997 t4)) w2))))) (eq_ind_r T (THead (Bind b) u1 x0) (\lambda (t: T).(or (pr0 
25998 (THead (Flat Appl) v1 t) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
25999 v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 t) w2)) (\lambda 
26000 (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
26001 t4)) w2))))) (or_ind (pr0 x0 t4) (ex2 T (\lambda (w2: T).(pr0 x0 w2)) 
26002 (\lambda (w2: T).(subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2))) (or (pr0 
26003 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) (THead (Bind b) u2 (THead (Flat 
26004 Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) 
26005 v1 (THead (Bind b) u1 x0)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) 
26006 u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H15: (pr0 x0 
26007 t4)).(or_introl (pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) (THead 
26008 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
26009 T).(pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2)) (\lambda (w2: 
26010 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26011 w2))) (pr0_upsilon b H0 v1 v2 H1 u1 u2 H3 x0 t4 H15))) (\lambda (H15: (ex2 T 
26012 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 (s (Bind b) (s (Flat 
26013 Appl) i)) v3 t4 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: 
26014 T).(subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2)) (or (pr0 (THead (Flat 
26015 Appl) v1 (THead (Bind b) u1 x0)) (THead (Bind b) u2 (THead (Flat Appl) (lift 
26016 (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead 
26017 (Bind b) u1 x0)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead 
26018 (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (x1: T).(\lambda (H16: 
26019 (pr0 x0 x1)).(\lambda (H17: (subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 
26020 x1)).(or_intror (pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) (THead 
26021 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
26022 T).(pr0 (THead (Flat Appl) v1 (THead (Bind b) u1 x0)) w2)) (\lambda (w2: 
26023 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26024 w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind 
26025 b) u1 x0)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26026 Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) u2 (THead (Flat Appl) (lift 
26027 (S O) O v2) x1)) (pr0_upsilon b H0 v1 v2 H1 u1 u2 H3 x0 x1 H16) (subst0_snd 
26028 (Bind b) v3 (THead (Flat Appl) (lift (S O) O v2) x1) (THead (Flat Appl) (lift 
26029 (S O) O v2) t4) i (subst0_snd (Flat Appl) v3 x1 t4 (s (Bind b) i) H17 (lift 
26030 (S O) O v2)) u2)))))) H15)) (H6 v0 x0 (s (Bind b) (s (Flat Appl) i)) H14 v3 
26031 H8)) x H13) w1 H10)))) H12)) (\lambda (H12: (ex3_2 T T (\lambda (u2: 
26032 T).(\lambda (t2: T).(eq T x (THead (Bind b) u2 t2)))) (\lambda (u2: 
26033 T).(\lambda (_: T).(subst0 (s (Flat Appl) i) v0 u1 u2))) (\lambda (_: 
26034 T).(\lambda (t2: T).(subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 
26035 t2))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t5: T).(eq T x (THead (Bind 
26036 b) u3 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 (s (Flat Appl) i) v0 u1 
26037 u3))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s (Bind b) (s (Flat Appl) i)) 
26038 v0 t3 t5))) (or (pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
26039 v2) t4))) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v3 
26040 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda 
26041 (x0: T).(\lambda (x1: T).(\lambda (H13: (eq T x (THead (Bind b) x0 
26042 x1))).(\lambda (H14: (subst0 (s (Flat Appl) i) v0 u1 x0)).(\lambda (H15: 
26043 (subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 x1)).(eq_ind_r T (THead (Flat 
26044 Appl) v1 x) (\lambda (t: T).(or (pr0 t (THead (Bind b) u2 (THead (Flat Appl) 
26045 (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: 
26046 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26047 w2))))) (eq_ind_r T (THead (Bind b) x0 x1) (\lambda (t: T).(or (pr0 (THead 
26048 (Flat Appl) v1 t) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
26049 t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 t) w2)) (\lambda 
26050 (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
26051 t4)) w2))))) (or_ind (pr0 x1 t4) (ex2 T (\lambda (w2: T).(pr0 x1 w2)) 
26052 (\lambda (w2: T).(subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2))) (or (pr0 
26053 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) (THead (Bind b) u2 (THead (Flat 
26054 Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) 
26055 v1 (THead (Bind b) x0 x1)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) 
26056 u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H16: (pr0 x1 
26057 t4)).(or_ind (pr0 x0 u2) (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: 
26058 T).(subst0 (s (Flat Appl) i) v3 u2 w2))) (or (pr0 (THead (Flat Appl) v1 
26059 (THead (Bind b) x0 x1)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
26060 v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind b) 
26061 x0 x1)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26062 Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H17: (pr0 x0 u2)).(or_introl 
26063 (pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) (THead (Bind b) u2 (THead 
26064 (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
26065 Appl) v1 (THead (Bind b) x0 x1)) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
26066 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2))) (pr0_upsilon b H0 
26067 v1 v2 H1 x0 u2 H17 x1 t4 H16))) (\lambda (H17: (ex2 T (\lambda (w2: T).(pr0 
26068 x0 w2)) (\lambda (w2: T).(subst0 (s (Flat Appl) i) v3 u2 w2)))).(ex2_ind T 
26069 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 (s (Flat Appl) i) v3 
26070 u2 w2)) (or (pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) (THead (Bind 
26071 b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 
26072 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2)) (\lambda (w2: T).(subst0 i 
26073 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
26074 (\lambda (x2: T).(\lambda (H18: (pr0 x0 x2)).(\lambda (H19: (subst0 (s (Flat 
26075 Appl) i) v3 u2 x2)).(or_intror (pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 
26076 x1)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T 
26077 (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2)) 
26078 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26079 O) O v2) t4)) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 
26080 (THead (Bind b) x0 x1)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 
26081 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) x2 (THead 
26082 (Flat Appl) (lift (S O) O v2) t4)) (pr0_upsilon b H0 v1 v2 H1 x0 x2 H18 x1 t4 
26083 H16) (subst0_fst v3 x2 u2 i H19 (THead (Flat Appl) (lift (S O) O v2) t4) 
26084 (Bind b))))))) H17)) (H4 v0 x0 (s (Flat Appl) i) H14 v3 H8))) (\lambda (H16: 
26085 (ex2 T (\lambda (w2: T).(pr0 x1 w2)) (\lambda (w2: T).(subst0 (s (Bind b) (s 
26086 (Flat Appl) i)) v3 t4 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x1 w2)) 
26087 (\lambda (w2: T).(subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2)) (or (pr0 
26088 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) (THead (Bind b) u2 (THead (Flat 
26089 Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) 
26090 v1 (THead (Bind b) x0 x1)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) 
26091 u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (x2: T).(\lambda 
26092 (H17: (pr0 x1 x2)).(\lambda (H18: (subst0 (s (Bind b) (s (Flat Appl) i)) v3 
26093 t4 x2)).(or_ind (pr0 x0 u2) (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda 
26094 (w2: T).(subst0 (s (Flat Appl) i) v3 u2 w2))) (or (pr0 (THead (Flat Appl) v1 
26095 (THead (Bind b) x0 x1)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
26096 v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind b) 
26097 x0 x1)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26098 Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H19: (pr0 x0 u2)).(or_intror 
26099 (pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) (THead (Bind b) u2 (THead 
26100 (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
26101 Appl) v1 (THead (Bind b) x0 x1)) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
26102 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2))) (ex_intro2 T 
26103 (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2)) 
26104 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26105 O) O v2) t4)) w2)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
26106 x2)) (pr0_upsilon b H0 v1 v2 H1 x0 u2 H19 x1 x2 H17) (subst0_snd (Bind b) v3 
26107 (THead (Flat Appl) (lift (S O) O v2) x2) (THead (Flat Appl) (lift (S O) O v2) 
26108 t4) i (subst0_snd (Flat Appl) v3 x2 t4 (s (Bind b) i) H18 (lift (S O) O v2)) 
26109 u2)))) (\lambda (H19: (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: 
26110 T).(subst0 (s (Flat Appl) i) v3 u2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 
26111 w2)) (\lambda (w2: T).(subst0 (s (Flat Appl) i) v3 u2 w2)) (or (pr0 (THead 
26112 (Flat Appl) v1 (THead (Bind b) x0 x1)) (THead (Bind b) u2 (THead (Flat Appl) 
26113 (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 
26114 (THead (Bind b) x0 x1)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 
26115 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (x3: T).(\lambda 
26116 (H20: (pr0 x0 x3)).(\lambda (H21: (subst0 (s (Flat Appl) i) v3 u2 
26117 x3)).(or_intror (pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) (THead 
26118 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
26119 T).(pr0 (THead (Flat Appl) v1 (THead (Bind b) x0 x1)) w2)) (\lambda (w2: 
26120 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26121 w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) v1 (THead (Bind 
26122 b) x0 x1)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26123 Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) x3 (THead (Flat Appl) (lift 
26124 (S O) O v2) x2)) (pr0_upsilon b H0 v1 v2 H1 x0 x3 H20 x1 x2 H17) (subst0_both 
26125 v3 u2 x3 i H21 (Bind b) (THead (Flat Appl) (lift (S O) O v2) t4) (THead (Flat 
26126 Appl) (lift (S O) O v2) x2) (subst0_snd (Flat Appl) v3 x2 t4 (s (Bind b) i) 
26127 H18 (lift (S O) O v2)))))))) H19)) (H4 v0 x0 (s (Flat Appl) i) H14 v3 H8))))) 
26128 H16)) (H6 v0 x1 (s (Bind b) (s (Flat Appl) i)) H15 v3 H8)) x H13) w1 
26129 H10)))))) H12)) (subst0_gen_head (Bind b) v0 u1 t3 x (s (Flat Appl) i) 
26130 H11))))) H9)) (\lambda (H9: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq 
26131 T w1 (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i 
26132 v0 v1 u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Flat Appl) i) v0 
26133 (THead (Bind b) u1 t3) t2))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t5: 
26134 T).(eq T w1 (THead (Flat Appl) u3 t5)))) (\lambda (u3: T).(\lambda (_: 
26135 T).(subst0 i v0 v1 u3))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s (Flat 
26136 Appl) i) v0 (THead (Bind b) u1 t3) t5))) (or (pr0 w1 (THead (Bind b) u2 
26137 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 w1 
26138 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) 
26139 (lift (S O) O v2) t4)) w2)))) (\lambda (x0: T).(\lambda (x1: T).(\lambda 
26140 (H10: (eq T w1 (THead (Flat Appl) x0 x1))).(\lambda (H11: (subst0 i v0 v1 
26141 x0)).(\lambda (H12: (subst0 (s (Flat Appl) i) v0 (THead (Bind b) u1 t3) 
26142 x1)).(or3_ind (ex2 T (\lambda (u3: T).(eq T x1 (THead (Bind b) u3 t3))) 
26143 (\lambda (u3: T).(subst0 (s (Flat Appl) i) v0 u1 u3))) (ex2 T (\lambda (t5: 
26144 T).(eq T x1 (THead (Bind b) u1 t5))) (\lambda (t5: T).(subst0 (s (Bind b) (s 
26145 (Flat Appl) i)) v0 t3 t5))) (ex3_2 T T (\lambda (u3: T).(\lambda (t5: T).(eq 
26146 T x1 (THead (Bind b) u3 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 (s 
26147 (Flat Appl) i) v0 u1 u3))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s (Bind 
26148 b) (s (Flat Appl) i)) v0 t3 t5)))) (or (pr0 w1 (THead (Bind b) u2 (THead 
26149 (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) 
26150 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26151 O) O v2) t4)) w2)))) (\lambda (H13: (ex2 T (\lambda (u2: T).(eq T x1 (THead 
26152 (Bind b) u2 t3))) (\lambda (u2: T).(subst0 (s (Flat Appl) i) v0 u1 
26153 u2)))).(ex2_ind T (\lambda (u3: T).(eq T x1 (THead (Bind b) u3 t3))) (\lambda 
26154 (u3: T).(subst0 (s (Flat Appl) i) v0 u1 u3)) (or (pr0 w1 (THead (Bind b) u2 
26155 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 w1 
26156 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) 
26157 (lift (S O) O v2) t4)) w2)))) (\lambda (x: T).(\lambda (H14: (eq T x1 (THead 
26158 (Bind b) x t3))).(\lambda (H15: (subst0 (s (Flat Appl) i) v0 u1 x)).(eq_ind_r 
26159 T (THead (Flat Appl) x0 x1) (\lambda (t: T).(or (pr0 t (THead (Bind b) u2 
26160 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 t 
26161 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) 
26162 (lift (S O) O v2) t4)) w2))))) (eq_ind_r T (THead (Bind b) x t3) (\lambda (t: 
26163 T).(or (pr0 (THead (Flat Appl) x0 t) (THead (Bind b) u2 (THead (Flat Appl) 
26164 (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 t) 
26165 w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) 
26166 (lift (S O) O v2) t4)) w2))))) (or_ind (pr0 x u2) (ex2 T (\lambda (w2: 
26167 T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s (Flat Appl) i) v3 u2 w2))) (or 
26168 (pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) (THead (Bind b) u2 (THead 
26169 (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
26170 Appl) x0 (THead (Bind b) x t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
26171 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H16: 
26172 (pr0 x u2)).(or_ind (pr0 x0 v2) (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda 
26173 (w2: T).(subst0 i v3 v2 w2))) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) 
26174 x t3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T 
26175 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2)) 
26176 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26177 O) O v2) t4)) w2)))) (\lambda (H17: (pr0 x0 v2)).(or_introl (pr0 (THead (Flat 
26178 Appl) x0 (THead (Bind b) x t3)) (THead (Bind b) u2 (THead (Flat Appl) (lift 
26179 (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
26180 (Bind b) x t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead 
26181 (Flat Appl) (lift (S O) O v2) t4)) w2))) (pr0_upsilon b H0 x0 v2 H17 x u2 H16 
26182 t3 t4 H5))) (\lambda (H17: (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: 
26183 T).(subst0 i v3 v2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda 
26184 (w2: T).(subst0 i v3 v2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) x 
26185 t3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T 
26186 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2)) 
26187 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26188 O) O v2) t4)) w2)))) (\lambda (x2: T).(\lambda (H18: (pr0 x0 x2)).(\lambda 
26189 (H19: (subst0 i v3 v2 x2)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind 
26190 b) x t3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 
26191 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2)) 
26192 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26193 O) O v2) t4)) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 
26194 (THead (Bind b) x t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 
26195 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) u2 (THead 
26196 (Flat Appl) (lift (S O) O x2) t4)) (pr0_upsilon b H0 x0 x2 H18 x u2 H16 t3 t4 
26197 H5) (subst0_snd (Bind b) v3 (THead (Flat Appl) (lift (S O) O x2) t4) (THead 
26198 (Flat Appl) (lift (S O) O v2) t4) i (subst0_fst v3 (lift (S O) O x2) (lift (S 
26199 O) O v2) (s (Bind b) i) (subst0_lift_ge_s v2 x2 v3 i H19 O (le_O_n i) b) t4 
26200 (Flat Appl)) u2)))))) H17)) (H2 v0 x0 i H11 v3 H8))) (\lambda (H16: (ex2 T 
26201 (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s (Flat Appl) i) v3 u2 
26202 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s 
26203 (Flat Appl) i) v3 u2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) x 
26204 t3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T 
26205 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2)) 
26206 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26207 O) O v2) t4)) w2)))) (\lambda (x2: T).(\lambda (H17: (pr0 x x2)).(\lambda 
26208 (H18: (subst0 (s (Flat Appl) i) v3 u2 x2)).(or_ind (pr0 x0 v2) (ex2 T 
26209 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2))) (or (pr0 
26210 (THead (Flat Appl) x0 (THead (Bind b) x t3)) (THead (Bind b) u2 (THead (Flat 
26211 Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) 
26212 x0 (THead (Bind b) x t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) 
26213 u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H19: (pr0 x0 
26214 v2)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) (THead 
26215 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
26216 T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2)) (\lambda (w2: 
26217 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26218 w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind 
26219 b) x t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26220 Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) x2 (THead (Flat Appl) (lift 
26221 (S O) O v2) t4)) (pr0_upsilon b H0 x0 v2 H19 x x2 H17 t3 t4 H5) (subst0_fst 
26222 v3 x2 u2 i H18 (THead (Flat Appl) (lift (S O) O v2) t4) (Bind b))))) (\lambda 
26223 (H19: (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 
26224 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 
26225 v2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) (THead (Bind b) 
26226 u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 
26227 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2)) (\lambda (w2: T).(subst0 i 
26228 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
26229 (\lambda (x3: T).(\lambda (H20: (pr0 x0 x3)).(\lambda (H21: (subst0 i v3 v2 
26230 x3)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) (THead 
26231 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
26232 T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x t3)) w2)) (\lambda (w2: 
26233 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26234 w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind 
26235 b) x t3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26236 Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) x2 (THead (Flat Appl) (lift 
26237 (S O) O x3) t4)) (pr0_upsilon b H0 x0 x3 H20 x x2 H17 t3 t4 H5) (subst0_both 
26238 v3 u2 x2 i H18 (Bind b) (THead (Flat Appl) (lift (S O) O v2) t4) (THead (Flat 
26239 Appl) (lift (S O) O x3) t4) (subst0_fst v3 (lift (S O) O x3) (lift (S O) O 
26240 v2) (s (Bind b) i) (subst0_lift_ge_s v2 x3 v3 i H21 O (le_O_n i) b) t4 (Flat 
26241 Appl)))))))) H19)) (H2 v0 x0 i H11 v3 H8))))) H16)) (H4 v0 x (s (Flat Appl) 
26242 i) H15 v3 H8)) x1 H14) w1 H10)))) H13)) (\lambda (H13: (ex2 T (\lambda (t2: 
26243 T).(eq T x1 (THead (Bind b) u1 t2))) (\lambda (t2: T).(subst0 (s (Bind b) (s 
26244 (Flat Appl) i)) v0 t3 t2)))).(ex2_ind T (\lambda (t5: T).(eq T x1 (THead 
26245 (Bind b) u1 t5))) (\lambda (t5: T).(subst0 (s (Bind b) (s (Flat Appl) i)) v0 
26246 t3 t5)) (or (pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
26247 t4))) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v3 
26248 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda 
26249 (x: T).(\lambda (H14: (eq T x1 (THead (Bind b) u1 x))).(\lambda (H15: (subst0 
26250 (s (Bind b) (s (Flat Appl) i)) v0 t3 x)).(eq_ind_r T (THead (Flat Appl) x0 
26251 x1) (\lambda (t: T).(or (pr0 t (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26252 O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i 
26253 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2))))) 
26254 (eq_ind_r T (THead (Bind b) u1 x) (\lambda (t: T).(or (pr0 (THead (Flat Appl) 
26255 x0 t) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T 
26256 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 t) w2)) (\lambda (w2: T).(subst0 
26257 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2))))) 
26258 (or_ind (pr0 x t4) (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: 
26259 T).(subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2))) (or (pr0 (THead (Flat 
26260 Appl) x0 (THead (Bind b) u1 x)) (THead (Bind b) u2 (THead (Flat Appl) (lift 
26261 (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
26262 (Bind b) u1 x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead 
26263 (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H16: (pr0 x t4)).(or_ind 
26264 (pr0 x0 v2) (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i 
26265 v3 v2 w2))) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) (THead 
26266 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
26267 T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2)) (\lambda (w2: 
26268 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26269 w2)))) (\lambda (H17: (pr0 x0 v2)).(or_introl (pr0 (THead (Flat Appl) x0 
26270 (THead (Bind b) u1 x)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
26271 v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) 
26272 u1 x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26273 Appl) (lift (S O) O v2) t4)) w2))) (pr0_upsilon b H0 x0 v2 H17 u1 u2 H3 x t4 
26274 H16))) (\lambda (H17: (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: 
26275 T).(subst0 i v3 v2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda 
26276 (w2: T).(subst0 i v3 v2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) 
26277 u1 x)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T 
26278 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2)) 
26279 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26280 O) O v2) t4)) w2)))) (\lambda (x2: T).(\lambda (H18: (pr0 x0 x2)).(\lambda 
26281 (H19: (subst0 i v3 v2 x2)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind 
26282 b) u1 x)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 
26283 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2)) 
26284 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26285 O) O v2) t4)) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 
26286 (THead (Bind b) u1 x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 
26287 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) u2 (THead 
26288 (Flat Appl) (lift (S O) O x2) t4)) (pr0_upsilon b H0 x0 x2 H18 u1 u2 H3 x t4 
26289 H16) (subst0_snd (Bind b) v3 (THead (Flat Appl) (lift (S O) O x2) t4) (THead 
26290 (Flat Appl) (lift (S O) O v2) t4) i (subst0_fst v3 (lift (S O) O x2) (lift (S 
26291 O) O v2) (s (Bind b) i) (subst0_lift_ge_s v2 x2 v3 i H19 O (le_O_n i) b) t4 
26292 (Flat Appl)) u2)))))) H17)) (H2 v0 x0 i H11 v3 H8))) (\lambda (H16: (ex2 T 
26293 (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s (Bind b) (s (Flat 
26294 Appl) i)) v3 t4 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: 
26295 T).(subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2)) (or (pr0 (THead (Flat 
26296 Appl) x0 (THead (Bind b) u1 x)) (THead (Bind b) u2 (THead (Flat Appl) (lift 
26297 (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
26298 (Bind b) u1 x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead 
26299 (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (x2: T).(\lambda (H17: 
26300 (pr0 x x2)).(\lambda (H18: (subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 
26301 x2)).(or_ind (pr0 x0 v2) (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: 
26302 T).(subst0 i v3 v2 w2))) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 
26303 x)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T 
26304 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2)) 
26305 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26306 O) O v2) t4)) w2)))) (\lambda (H19: (pr0 x0 v2)).(or_intror (pr0 (THead (Flat 
26307 Appl) x0 (THead (Bind b) u1 x)) (THead (Bind b) u2 (THead (Flat Appl) (lift 
26308 (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead 
26309 (Bind b) u1 x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead 
26310 (Flat Appl) (lift (S O) O v2) t4)) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 
26311 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2)) (\lambda (w2: T).(subst0 i 
26312 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)) (THead 
26313 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) x2)) (pr0_upsilon b H0 x0 v2 
26314 H19 u1 u2 H3 x x2 H17) (subst0_snd (Bind b) v3 (THead (Flat Appl) (lift (S O) 
26315 O v2) x2) (THead (Flat Appl) (lift (S O) O v2) t4) i (subst0_snd (Flat Appl) 
26316 v3 x2 t4 (s (Bind b) i) H18 (lift (S O) O v2)) u2)))) (\lambda (H19: (ex2 T 
26317 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 
26318 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 
26319 v2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) (THead (Bind b) 
26320 u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 
26321 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2)) (\lambda (w2: T).(subst0 i 
26322 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
26323 (\lambda (x3: T).(\lambda (H20: (pr0 x0 x3)).(\lambda (H21: (subst0 i v3 v2 
26324 x3)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) (THead 
26325 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
26326 T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) u1 x)) w2)) (\lambda (w2: 
26327 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26328 w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind 
26329 b) u1 x)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26330 Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) u2 (THead (Flat Appl) (lift 
26331 (S O) O x3) x2)) (pr0_upsilon b H0 x0 x3 H20 u1 u2 H3 x x2 H17) (subst0_snd 
26332 (Bind b) v3 (THead (Flat Appl) (lift (S O) O x3) x2) (THead (Flat Appl) (lift 
26333 (S O) O v2) t4) i (subst0_both v3 (lift (S O) O v2) (lift (S O) O x3) (s 
26334 (Bind b) i) (subst0_lift_ge_s v2 x3 v3 i H21 O (le_O_n i) b) (Flat Appl) t4 
26335 x2 H18) u2)))))) H19)) (H2 v0 x0 i H11 v3 H8))))) H16)) (H6 v0 x (s (Bind b) 
26336 (s (Flat Appl) i)) H15 v3 H8)) x1 H14) w1 H10)))) H13)) (\lambda (H13: (ex3_2 
26337 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x1 (THead (Bind b) u2 t2)))) 
26338 (\lambda (u2: T).(\lambda (_: T).(subst0 (s (Flat Appl) i) v0 u1 u2))) 
26339 (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 
26340 t2))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t5: T).(eq T x1 (THead 
26341 (Bind b) u3 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 (s (Flat Appl) i) 
26342 v0 u1 u3))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s (Bind b) (s (Flat 
26343 Appl) i)) v0 t3 t5))) (or (pr0 w1 (THead (Bind b) u2 (THead (Flat Appl) (lift 
26344 (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
26345 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26346 w2)))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H14: (eq T x1 (THead (Bind 
26347 b) x2 x3))).(\lambda (H15: (subst0 (s (Flat Appl) i) v0 u1 x2)).(\lambda 
26348 (H16: (subst0 (s (Bind b) (s (Flat Appl) i)) v0 t3 x3)).(eq_ind_r T (THead 
26349 (Flat Appl) x0 x1) (\lambda (t: T).(or (pr0 t (THead (Bind b) u2 (THead (Flat 
26350 Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda 
26351 (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
26352 t4)) w2))))) (eq_ind_r T (THead (Bind b) x2 x3) (\lambda (t: T).(or (pr0 
26353 (THead (Flat Appl) x0 t) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
26354 v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 t) w2)) (\lambda 
26355 (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
26356 t4)) w2))))) (or_ind (pr0 x3 t4) (ex2 T (\lambda (w2: T).(pr0 x3 w2)) 
26357 (\lambda (w2: T).(subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2))) (or (pr0 
26358 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) (THead (Bind b) u2 (THead (Flat 
26359 Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) 
26360 x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) 
26361 u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H17: (pr0 x3 
26362 t4)).(or_ind (pr0 x2 u2) (ex2 T (\lambda (w2: T).(pr0 x2 w2)) (\lambda (w2: 
26363 T).(subst0 (s (Flat Appl) i) v3 u2 w2))) (or (pr0 (THead (Flat Appl) x0 
26364 (THead (Bind b) x2 x3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
26365 v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) 
26366 x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26367 Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H18: (pr0 x2 u2)).(or_ind (pr0 
26368 x0 v2) (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 
26369 w2))) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) (THead (Bind b) 
26370 u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 
26371 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i 
26372 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
26373 (\lambda (H19: (pr0 x0 v2)).(or_introl (pr0 (THead (Flat Appl) x0 (THead 
26374 (Bind b) x2 x3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
26375 t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 
26376 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) 
26377 (lift (S O) O v2) t4)) w2))) (pr0_upsilon b H0 x0 v2 H19 x2 u2 H18 x3 t4 
26378 H17))) (\lambda (H19: (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: 
26379 T).(subst0 i v3 v2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda 
26380 (w2: T).(subst0 i v3 v2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) 
26381 x2 x3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T 
26382 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) 
26383 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26384 O) O v2) t4)) w2)))) (\lambda (x: T).(\lambda (H20: (pr0 x0 x)).(\lambda 
26385 (H21: (subst0 i v3 v2 x)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind 
26386 b) x2 x3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 
26387 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) 
26388 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26389 O) O v2) t4)) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 
26390 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 
26391 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) u2 (THead 
26392 (Flat Appl) (lift (S O) O x) t4)) (pr0_upsilon b H0 x0 x H20 x2 u2 H18 x3 t4 
26393 H17) (subst0_snd (Bind b) v3 (THead (Flat Appl) (lift (S O) O x) t4) (THead 
26394 (Flat Appl) (lift (S O) O v2) t4) i (subst0_fst v3 (lift (S O) O x) (lift (S 
26395 O) O v2) (s (Bind b) i) (subst0_lift_ge_s v2 x v3 i H21 O (le_O_n i) b) t4 
26396 (Flat Appl)) u2)))))) H19)) (H2 v0 x0 i H11 v3 H8))) (\lambda (H18: (ex2 T 
26397 (\lambda (w2: T).(pr0 x2 w2)) (\lambda (w2: T).(subst0 (s (Flat Appl) i) v3 
26398 u2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x2 w2)) (\lambda (w2: T).(subst0 
26399 (s (Flat Appl) i) v3 u2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) 
26400 x2 x3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T 
26401 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) 
26402 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26403 O) O v2) t4)) w2)))) (\lambda (x: T).(\lambda (H19: (pr0 x2 x)).(\lambda 
26404 (H20: (subst0 (s (Flat Appl) i) v3 u2 x)).(or_ind (pr0 x0 v2) (ex2 T (\lambda 
26405 (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2))) (or (pr0 (THead 
26406 (Flat Appl) x0 (THead (Bind b) x2 x3)) (THead (Bind b) u2 (THead (Flat Appl) 
26407 (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 
26408 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 
26409 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H21: (pr0 x0 
26410 v2)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) (THead 
26411 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
26412 T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: 
26413 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26414 w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind 
26415 b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26416 Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) x (THead (Flat Appl) (lift 
26417 (S O) O v2) t4)) (pr0_upsilon b H0 x0 v2 H21 x2 x H19 x3 t4 H17) (subst0_fst 
26418 v3 x u2 i H20 (THead (Flat Appl) (lift (S O) O v2) t4) (Bind b))))) (\lambda 
26419 (H21: (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 
26420 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 
26421 v2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) (THead (Bind 
26422 b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 
26423 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i 
26424 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
26425 (\lambda (x4: T).(\lambda (H22: (pr0 x0 x4)).(\lambda (H23: (subst0 i v3 v2 
26426 x4)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) (THead 
26427 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
26428 T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: 
26429 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26430 w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind 
26431 b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26432 Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) x (THead (Flat Appl) (lift 
26433 (S O) O x4) t4)) (pr0_upsilon b H0 x0 x4 H22 x2 x H19 x3 t4 H17) (subst0_both 
26434 v3 u2 x i H20 (Bind b) (THead (Flat Appl) (lift (S O) O v2) t4) (THead (Flat 
26435 Appl) (lift (S O) O x4) t4) (subst0_fst v3 (lift (S O) O x4) (lift (S O) O 
26436 v2) (s (Bind b) i) (subst0_lift_ge_s v2 x4 v3 i H23 O (le_O_n i) b) t4 (Flat 
26437 Appl)))))))) H21)) (H2 v0 x0 i H11 v3 H8))))) H18)) (H4 v0 x2 (s (Flat Appl) 
26438 i) H15 v3 H8))) (\lambda (H17: (ex2 T (\lambda (w2: T).(pr0 x3 w2)) (\lambda 
26439 (w2: T).(subst0 (s (Bind b) (s (Flat Appl) i)) v3 t4 w2)))).(ex2_ind T 
26440 (\lambda (w2: T).(pr0 x3 w2)) (\lambda (w2: T).(subst0 (s (Bind b) (s (Flat 
26441 Appl) i)) v3 t4 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) 
26442 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda 
26443 (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: 
26444 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26445 w2)))) (\lambda (x: T).(\lambda (H18: (pr0 x3 x)).(\lambda (H19: (subst0 (s 
26446 (Bind b) (s (Flat Appl) i)) v3 t4 x)).(or_ind (pr0 x2 u2) (ex2 T (\lambda 
26447 (w2: T).(pr0 x2 w2)) (\lambda (w2: T).(subst0 (s (Flat Appl) i) v3 u2 w2))) 
26448 (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) (THead (Bind b) u2 
26449 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 
26450 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i 
26451 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
26452 (\lambda (H20: (pr0 x2 u2)).(or_ind (pr0 x0 v2) (ex2 T (\lambda (w2: T).(pr0 
26453 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2))) (or (pr0 (THead (Flat Appl) x0 
26454 (THead (Bind b) x2 x3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
26455 v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) 
26456 x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26457 Appl) (lift (S O) O v2) t4)) w2)))) (\lambda (H21: (pr0 x0 v2)).(or_intror 
26458 (pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) (THead (Bind b) u2 (THead 
26459 (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
26460 Appl) x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
26461 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2))) (ex_intro2 T 
26462 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) 
26463 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26464 O) O v2) t4)) w2)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
26465 x)) (pr0_upsilon b H0 x0 v2 H21 x2 u2 H20 x3 x H18) (subst0_snd (Bind b) v3 
26466 (THead (Flat Appl) (lift (S O) O v2) x) (THead (Flat Appl) (lift (S O) O v2) 
26467 t4) i (subst0_snd (Flat Appl) v3 x t4 (s (Bind b) i) H19 (lift (S O) O v2)) 
26468 u2)))) (\lambda (H21: (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: 
26469 T).(subst0 i v3 v2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda 
26470 (w2: T).(subst0 i v3 v2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) 
26471 x2 x3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T 
26472 (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) 
26473 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26474 O) O v2) t4)) w2)))) (\lambda (x4: T).(\lambda (H22: (pr0 x0 x4)).(\lambda 
26475 (H23: (subst0 i v3 v2 x4)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind 
26476 b) x2 x3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 
26477 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) 
26478 (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
26479 O) O v2) t4)) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 
26480 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 
26481 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) u2 (THead 
26482 (Flat Appl) (lift (S O) O x4) x)) (pr0_upsilon b H0 x0 x4 H22 x2 u2 H20 x3 x 
26483 H18) (subst0_snd (Bind b) v3 (THead (Flat Appl) (lift (S O) O x4) x) (THead 
26484 (Flat Appl) (lift (S O) O v2) t4) i (subst0_both v3 (lift (S O) O v2) (lift 
26485 (S O) O x4) (s (Bind b) i) (subst0_lift_ge_s v2 x4 v3 i H23 O (le_O_n i) b) 
26486 (Flat Appl) t4 x H19) u2)))))) H21)) (H2 v0 x0 i H11 v3 H8))) (\lambda (H20: 
26487 (ex2 T (\lambda (w2: T).(pr0 x2 w2)) (\lambda (w2: T).(subst0 (s (Flat Appl) 
26488 i) v3 u2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x2 w2)) (\lambda (w2: 
26489 T).(subst0 (s (Flat Appl) i) v3 u2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead 
26490 (Bind b) x2 x3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
26491 t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 
26492 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) 
26493 (lift (S O) O v2) t4)) w2)))) (\lambda (x4: T).(\lambda (H21: (pr0 x2 
26494 x4)).(\lambda (H22: (subst0 (s (Flat Appl) i) v3 u2 x4)).(or_ind (pr0 x0 v2) 
26495 (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 w2))) 
26496 (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) (THead (Bind b) u2 
26497 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 
26498 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i 
26499 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
26500 (\lambda (H23: (pr0 x0 v2)).(or_intror (pr0 (THead (Flat Appl) x0 (THead 
26501 (Bind b) x2 x3)) (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
26502 t4))) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 
26503 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) 
26504 (lift (S O) O v2) t4)) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat 
26505 Appl) x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead 
26506 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) x4 
26507 (THead (Flat Appl) (lift (S O) O v2) x)) (pr0_upsilon b H0 x0 v2 H23 x2 x4 
26508 H21 x3 x H18) (subst0_both v3 u2 x4 i H22 (Bind b) (THead (Flat Appl) (lift 
26509 (S O) O v2) t4) (THead (Flat Appl) (lift (S O) O v2) x) (subst0_snd (Flat 
26510 Appl) v3 x t4 (s (Bind b) i) H19 (lift (S O) O v2)))))) (\lambda (H23: (ex2 T 
26511 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 v2 
26512 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v3 
26513 v2 w2)) (or (pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) (THead (Bind 
26514 b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: T).(pr0 
26515 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i 
26516 v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) w2)))) 
26517 (\lambda (x5: T).(\lambda (H24: (pr0 x0 x5)).(\lambda (H25: (subst0 i v3 v2 
26518 x5)).(or_intror (pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) (THead 
26519 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4))) (ex2 T (\lambda (w2: 
26520 T).(pr0 (THead (Flat Appl) x0 (THead (Bind b) x2 x3)) w2)) (\lambda (w2: 
26521 T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) 
26522 w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Appl) x0 (THead (Bind 
26523 b) x2 x3)) w2)) (\lambda (w2: T).(subst0 i v3 (THead (Bind b) u2 (THead (Flat 
26524 Appl) (lift (S O) O v2) t4)) w2)) (THead (Bind b) x4 (THead (Flat Appl) (lift 
26525 (S O) O x5) x)) (pr0_upsilon b H0 x0 x5 H24 x2 x4 H21 x3 x H18) (subst0_both 
26526 v3 u2 x4 i H22 (Bind b) (THead (Flat Appl) (lift (S O) O v2) t4) (THead (Flat 
26527 Appl) (lift (S O) O x5) x) (subst0_both v3 (lift (S O) O v2) (lift (S O) O 
26528 x5) (s (Bind b) i) (subst0_lift_ge_s v2 x5 v3 i H25 O (le_O_n i) b) (Flat 
26529 Appl) t4 x H19))))))) H23)) (H2 v0 x0 i H11 v3 H8))))) H20)) (H4 v0 x2 (s 
26530 (Flat Appl) i) H15 v3 H8))))) H17)) (H6 v0 x3 (s (Bind b) (s (Flat Appl) i)) 
26531 H16 v3 H8)) x1 H14) w1 H10)))))) H13)) (subst0_gen_head (Bind b) v0 u1 t3 x1 
26532 (s (Flat Appl) i) H12))))))) H9)) (subst0_gen_head (Flat Appl) v0 v1 (THead 
26533 (Bind b) u1 t3) w1 i H7)))))))))))))))))))))) (\lambda (u1: T).(\lambda (u2: 
26534 T).(\lambda (H0: (pr0 u1 u2)).(\lambda (H1: ((\forall (v1: T).(\forall (w1: 
26535 T).(\forall (i: nat).((subst0 i v1 u1 w1) \to (\forall (v2: T).((pr0 v1 v2) 
26536 \to (or (pr0 w1 u2) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
26537 T).(subst0 i v2 u2 w2)))))))))))).(\lambda (t3: T).(\lambda (t4: T).(\lambda 
26538 (H2: (pr0 t3 t4)).(\lambda (H3: ((\forall (v1: T).(\forall (w1: T).(\forall 
26539 (i: nat).((subst0 i v1 t3 w1) \to (\forall (v2: T).((pr0 v1 v2) \to (or (pr0 
26540 w1 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t4 
26541 w2)))))))))))).(\lambda (w: T).(\lambda (H4: (subst0 O u2 t4 w)).(\lambda 
26542 (v1: T).(\lambda (w1: T).(\lambda (i: nat).(\lambda (H5: (subst0 i v1 (THead 
26543 (Bind Abbr) u1 t3) w1)).(\lambda (v2: T).(\lambda (H6: (pr0 v1 v2)).(or3_ind 
26544 (ex2 T (\lambda (u3: T).(eq T w1 (THead (Bind Abbr) u3 t3))) (\lambda (u3: 
26545 T).(subst0 i v1 u1 u3))) (ex2 T (\lambda (t5: T).(eq T w1 (THead (Bind Abbr) 
26546 u1 t5))) (\lambda (t5: T).(subst0 (s (Bind Abbr) i) v1 t3 t5))) (ex3_2 T T 
26547 (\lambda (u3: T).(\lambda (t5: T).(eq T w1 (THead (Bind Abbr) u3 t5)))) 
26548 (\lambda (u3: T).(\lambda (_: T).(subst0 i v1 u1 u3))) (\lambda (_: 
26549 T).(\lambda (t5: T).(subst0 (s (Bind Abbr) i) v1 t3 t5)))) (or (pr0 w1 (THead 
26550 (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
26551 T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (H7: (ex2 T (\lambda 
26552 (u2: T).(eq T w1 (THead (Bind Abbr) u2 t3))) (\lambda (u2: T).(subst0 i v1 u1 
26553 u2)))).(ex2_ind T (\lambda (u3: T).(eq T w1 (THead (Bind Abbr) u3 t3))) 
26554 (\lambda (u3: T).(subst0 i v1 u1 u3)) (or (pr0 w1 (THead (Bind Abbr) u2 w)) 
26555 (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 (THead 
26556 (Bind Abbr) u2 w) w2)))) (\lambda (x: T).(\lambda (H8: (eq T w1 (THead (Bind 
26557 Abbr) x t3))).(\lambda (H9: (subst0 i v1 u1 x)).(eq_ind_r T (THead (Bind 
26558 Abbr) x t3) (\lambda (t: T).(or (pr0 t (THead (Bind Abbr) u2 w)) (ex2 T 
26559 (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) 
26560 u2 w) w2))))) (or_ind (pr0 x u2) (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda 
26561 (w2: T).(subst0 i v2 u2 w2))) (or (pr0 (THead (Bind Abbr) x t3) (THead (Bind 
26562 Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) x t3) w2)) 
26563 (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (H10: 
26564 (pr0 x u2)).(or_introl (pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 
26565 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) x t3) w2)) (\lambda (w2: 
26566 T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2))) (pr0_delta x u2 H10 t3 t4 H2 w 
26567 H4))) (\lambda (H10: (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: 
26568 T).(subst0 i v2 u2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x w2)) (\lambda 
26569 (w2: T).(subst0 i v2 u2 w2)) (or (pr0 (THead (Bind Abbr) x t3) (THead (Bind 
26570 Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) x t3) w2)) 
26571 (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (x0: 
26572 T).(\lambda (H11: (pr0 x x0)).(\lambda (H12: (subst0 i v2 u2 x0)).(ex2_ind T 
26573 (\lambda (t: T).(subst0 O x0 t4 t)) (\lambda (t: T).(subst0 (S (plus i O)) v2 
26574 w t)) (or (pr0 (THead (Bind Abbr) x t3) (THead (Bind Abbr) u2 w)) (ex2 T 
26575 (\lambda (w2: T).(pr0 (THead (Bind Abbr) x t3) w2)) (\lambda (w2: T).(subst0 
26576 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (x1: T).(\lambda (H13: (subst0 
26577 O x0 t4 x1)).(\lambda (H14: (subst0 (S (plus i O)) v2 w x1)).(let H15 \def 
26578 (f_equal nat nat S (plus i O) i (sym_eq nat i (plus i O) (plus_n_O i))) in 
26579 (let H16 \def (eq_ind nat (S (plus i O)) (\lambda (n: nat).(subst0 n v2 w 
26580 x1)) H14 (S i) H15) in (or_intror (pr0 (THead (Bind Abbr) x t3) (THead (Bind 
26581 Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) x t3) w2)) 
26582 (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2))) (ex_intro2 T 
26583 (\lambda (w2: T).(pr0 (THead (Bind Abbr) x t3) w2)) (\lambda (w2: T).(subst0 
26584 i v2 (THead (Bind Abbr) u2 w) w2)) (THead (Bind Abbr) x0 x1) (pr0_delta x x0 
26585 H11 t3 t4 H2 x1 H13) (subst0_both v2 u2 x0 i H12 (Bind Abbr) w x1 H16)))))))) 
26586 (subst0_subst0_back t4 w u2 O H4 x0 v2 i H12))))) H10)) (H1 v1 x i H9 v2 H6)) 
26587 w1 H8)))) H7)) (\lambda (H7: (ex2 T (\lambda (t2: T).(eq T w1 (THead (Bind 
26588 Abbr) u1 t2))) (\lambda (t2: T).(subst0 (s (Bind Abbr) i) v1 t3 
26589 t2)))).(ex2_ind T (\lambda (t5: T).(eq T w1 (THead (Bind Abbr) u1 t5))) 
26590 (\lambda (t5: T).(subst0 (s (Bind Abbr) i) v1 t3 t5)) (or (pr0 w1 (THead 
26591 (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
26592 T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (x: T).(\lambda (H8: 
26593 (eq T w1 (THead (Bind Abbr) u1 x))).(\lambda (H9: (subst0 (s (Bind Abbr) i) 
26594 v1 t3 x)).(eq_ind_r T (THead (Bind Abbr) u1 x) (\lambda (t: T).(or (pr0 t 
26595 (THead (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: 
26596 T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2))))) (or_ind (pr0 x t4) (ex2 T 
26597 (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s (Bind Abbr) i) v2 t4 
26598 w2))) (or (pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)) (ex2 T 
26599 (\lambda (w2: T).(pr0 (THead (Bind Abbr) u1 x) w2)) (\lambda (w2: T).(subst0 
26600 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (H10: (pr0 x t4)).(or_introl 
26601 (pr0 (THead (Bind Abbr) u1 x) (THead (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: 
26602 T).(pr0 (THead (Bind Abbr) u1 x) w2)) (\lambda (w2: T).(subst0 i v2 (THead 
26603 (Bind Abbr) u2 w) w2))) (pr0_delta u1 u2 H0 x t4 H10 w H4))) (\lambda (H10: 
26604 (ex2 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s (Bind Abbr) 
26605 i) v2 t4 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: 
26606 T).(subst0 (s (Bind Abbr) i) v2 t4 w2)) (or (pr0 (THead (Bind Abbr) u1 x) 
26607 (THead (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) u1 
26608 x) w2)) (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)))) 
26609 (\lambda (x0: T).(\lambda (H11: (pr0 x x0)).(\lambda (H12: (subst0 (s (Bind 
26610 Abbr) i) v2 t4 x0)).(ex2_ind T (\lambda (t: T).(subst0 O u2 x0 t)) (\lambda 
26611 (t: T).(subst0 (s (Bind Abbr) i) v2 w t)) (or (pr0 (THead (Bind Abbr) u1 x) 
26612 (THead (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) u1 
26613 x) w2)) (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)))) 
26614 (\lambda (x1: T).(\lambda (H13: (subst0 O u2 x0 x1)).(\lambda (H14: (subst0 
26615 (s (Bind Abbr) i) v2 w x1)).(or_intror (pr0 (THead (Bind Abbr) u1 x) (THead 
26616 (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) u1 x) w2)) 
26617 (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2))) (ex_intro2 T 
26618 (\lambda (w2: T).(pr0 (THead (Bind Abbr) u1 x) w2)) (\lambda (w2: T).(subst0 
26619 i v2 (THead (Bind Abbr) u2 w) w2)) (THead (Bind Abbr) u2 x1) (pr0_delta u1 u2 
26620 H0 x x0 H11 x1 H13) (subst0_snd (Bind Abbr) v2 x1 w i H14 u2)))))) 
26621 (subst0_confluence_neq t4 x0 v2 (s (Bind Abbr) i) H12 w u2 O H4 (sym_not_eq 
26622 nat O (S i) (O_S i))))))) H10)) (H3 v1 x (s (Bind Abbr) i) H9 v2 H6)) w1 
26623 H8)))) H7)) (\lambda (H7: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T 
26624 w1 (THead (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v1 
26625 u1 u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Bind Abbr) i) v1 t3 
26626 t2))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t5: T).(eq T w1 (THead 
26627 (Bind Abbr) u3 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i v1 u1 u3))) 
26628 (\lambda (_: T).(\lambda (t5: T).(subst0 (s (Bind Abbr) i) v1 t3 t5))) (or 
26629 (pr0 w1 (THead (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) 
26630 (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (x0: 
26631 T).(\lambda (x1: T).(\lambda (H8: (eq T w1 (THead (Bind Abbr) x0 
26632 x1))).(\lambda (H9: (subst0 i v1 u1 x0)).(\lambda (H10: (subst0 (s (Bind 
26633 Abbr) i) v1 t3 x1)).(eq_ind_r T (THead (Bind Abbr) x0 x1) (\lambda (t: T).(or 
26634 (pr0 t (THead (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda 
26635 (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2))))) (or_ind (pr0 x1 t4) 
26636 (ex2 T (\lambda (w2: T).(pr0 x1 w2)) (\lambda (w2: T).(subst0 (s (Bind Abbr) 
26637 i) v2 t4 w2))) (or (pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)) 
26638 (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) x0 x1) w2)) (\lambda (w2: 
26639 T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (H11: (pr0 x1 
26640 t4)).(or_ind (pr0 x0 u2) (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: 
26641 T).(subst0 i v2 u2 w2))) (or (pr0 (THead (Bind Abbr) x0 x1) (THead (Bind 
26642 Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) x0 x1) w2)) 
26643 (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (H12: 
26644 (pr0 x0 u2)).(or_introl (pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 
26645 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) x0 x1) w2)) (\lambda (w2: 
26646 T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2))) (pr0_delta x0 u2 H12 x1 t4 H11 
26647 w H4))) (\lambda (H12: (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: 
26648 T).(subst0 i v2 u2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda 
26649 (w2: T).(subst0 i v2 u2 w2)) (or (pr0 (THead (Bind Abbr) x0 x1) (THead (Bind 
26650 Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) x0 x1) w2)) 
26651 (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (x: 
26652 T).(\lambda (H13: (pr0 x0 x)).(\lambda (H14: (subst0 i v2 u2 x)).(ex2_ind T 
26653 (\lambda (t: T).(subst0 O x t4 t)) (\lambda (t: T).(subst0 (S (plus i O)) v2 
26654 w t)) (or (pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)) (ex2 T 
26655 (\lambda (w2: T).(pr0 (THead (Bind Abbr) x0 x1) w2)) (\lambda (w2: T).(subst0 
26656 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (x2: T).(\lambda (H15: (subst0 
26657 O x t4 x2)).(\lambda (H16: (subst0 (S (plus i O)) v2 w x2)).(let H17 \def 
26658 (f_equal nat nat S (plus i O) i (sym_eq nat i (plus i O) (plus_n_O i))) in 
26659 (let H18 \def (eq_ind nat (S (plus i O)) (\lambda (n: nat).(subst0 n v2 w 
26660 x2)) H16 (S i) H17) in (or_intror (pr0 (THead (Bind Abbr) x0 x1) (THead (Bind 
26661 Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) x0 x1) w2)) 
26662 (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2))) (ex_intro2 T 
26663 (\lambda (w2: T).(pr0 (THead (Bind Abbr) x0 x1) w2)) (\lambda (w2: T).(subst0 
26664 i v2 (THead (Bind Abbr) u2 w) w2)) (THead (Bind Abbr) x x2) (pr0_delta x0 x 
26665 H13 x1 t4 H11 x2 H15) (subst0_both v2 u2 x i H14 (Bind Abbr) w x2 H18)))))))) 
26666 (subst0_subst0_back t4 w u2 O H4 x v2 i H14))))) H12)) (H1 v1 x0 i H9 v2 
26667 H6))) (\lambda (H11: (ex2 T (\lambda (w2: T).(pr0 x1 w2)) (\lambda (w2: 
26668 T).(subst0 (s (Bind Abbr) i) v2 t4 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x1 
26669 w2)) (\lambda (w2: T).(subst0 (s (Bind Abbr) i) v2 t4 w2)) (or (pr0 (THead 
26670 (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 
26671 (THead (Bind Abbr) x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead (Bind 
26672 Abbr) u2 w) w2)))) (\lambda (x: T).(\lambda (H12: (pr0 x1 x)).(\lambda (H13: 
26673 (subst0 (s (Bind Abbr) i) v2 t4 x)).(or_ind (pr0 x0 u2) (ex2 T (\lambda (w2: 
26674 T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v2 u2 w2))) (or (pr0 (THead (Bind 
26675 Abbr) x0 x1) (THead (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead 
26676 (Bind Abbr) x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 
26677 w) w2)))) (\lambda (H14: (pr0 x0 u2)).(ex2_ind T (\lambda (t: T).(subst0 O u2 
26678 x t)) (\lambda (t: T).(subst0 (s (Bind Abbr) i) v2 w t)) (or (pr0 (THead 
26679 (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 
26680 (THead (Bind Abbr) x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead (Bind 
26681 Abbr) u2 w) w2)))) (\lambda (x2: T).(\lambda (H15: (subst0 O u2 x 
26682 x2)).(\lambda (H16: (subst0 (s (Bind Abbr) i) v2 w x2)).(or_intror (pr0 
26683 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: 
26684 T).(pr0 (THead (Bind Abbr) x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead 
26685 (Bind Abbr) u2 w) w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) 
26686 x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)) 
26687 (THead (Bind Abbr) u2 x2) (pr0_delta x0 u2 H14 x1 x H12 x2 H15) (subst0_snd 
26688 (Bind Abbr) v2 x2 w i H16 u2)))))) (subst0_confluence_neq t4 x v2 (s (Bind 
26689 Abbr) i) H13 w u2 O H4 (sym_not_eq nat O (S i) (O_S i))))) (\lambda (H14: 
26690 (ex2 T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v2 u2 
26691 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v2 
26692 u2 w2)) (or (pr0 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)) (ex2 T 
26693 (\lambda (w2: T).(pr0 (THead (Bind Abbr) x0 x1) w2)) (\lambda (w2: T).(subst0 
26694 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda (x2: T).(\lambda (H15: (pr0 x0 
26695 x2)).(\lambda (H16: (subst0 i v2 u2 x2)).(ex2_ind T (\lambda (t: T).(subst0 O 
26696 x2 t4 t)) (\lambda (t: T).(subst0 (S (plus i O)) v2 w t)) (or (pr0 (THead 
26697 (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 
26698 (THead (Bind Abbr) x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 (THead (Bind 
26699 Abbr) u2 w) w2)))) (\lambda (x3: T).(\lambda (H17: (subst0 O x2 t4 
26700 x3)).(\lambda (H18: (subst0 (S (plus i O)) v2 w x3)).(let H19 \def (f_equal 
26701 nat nat S (plus i O) i (sym_eq nat i (plus i O) (plus_n_O i))) in (let H20 
26702 \def (eq_ind nat (S (plus i O)) (\lambda (n: nat).(subst0 n v2 w x3)) H18 (S 
26703 i) H19) in (ex2_ind T (\lambda (t: T).(subst0 (s (Bind Abbr) i) v2 x3 t)) 
26704 (\lambda (t: T).(subst0 O x2 x t)) (or (pr0 (THead (Bind Abbr) x0 x1) (THead 
26705 (Bind Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) x0 x1) 
26706 w2)) (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2)))) (\lambda 
26707 (x4: T).(\lambda (H21: (subst0 (s (Bind Abbr) i) v2 x3 x4)).(\lambda (H22: 
26708 (subst0 O x2 x x4)).(or_intror (pr0 (THead (Bind Abbr) x0 x1) (THead (Bind 
26709 Abbr) u2 w)) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind Abbr) x0 x1) w2)) 
26710 (\lambda (w2: T).(subst0 i v2 (THead (Bind Abbr) u2 w) w2))) (ex_intro2 T 
26711 (\lambda (w2: T).(pr0 (THead (Bind Abbr) x0 x1) w2)) (\lambda (w2: T).(subst0 
26712 i v2 (THead (Bind Abbr) u2 w) w2)) (THead (Bind Abbr) x2 x4) (pr0_delta x0 x2 
26713 H15 x1 x H12 x4 H22) (subst0_both v2 u2 x2 i H16 (Bind Abbr) w x4 
26714 (subst0_trans x3 w v2 (s (Bind Abbr) i) H20 x4 H21))))))) 
26715 (subst0_confluence_neq t4 x3 x2 O H17 x v2 (s (Bind Abbr) i) H13 (O_S 
26716 i)))))))) (subst0_subst0_back t4 w u2 O H4 x2 v2 i H16))))) H14)) (H1 v1 x0 i 
26717 H9 v2 H6))))) H11)) (H3 v1 x1 (s (Bind Abbr) i) H10 v2 H6)) w1 H8)))))) H7)) 
26718 (subst0_gen_head (Bind Abbr) v1 u1 t3 w1 i H5)))))))))))))))))) (\lambda (b: 
26719 B).(\lambda (H0: (not (eq B b Abst))).(\lambda (t3: T).(\lambda (t4: 
26720 T).(\lambda (H1: (pr0 t3 t4)).(\lambda (H2: ((\forall (v1: T).(\forall (w1: 
26721 T).(\forall (i: nat).((subst0 i v1 t3 w1) \to (\forall (v2: T).((pr0 v1 v2) 
26722 \to (or (pr0 w1 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
26723 T).(subst0 i v2 t4 w2)))))))))))).(\lambda (u: T).(\lambda (v1: T).(\lambda 
26724 (w1: T).(\lambda (i: nat).(\lambda (H3: (subst0 i v1 (THead (Bind b) u (lift 
26725 (S O) O t3)) w1)).(\lambda (v2: T).(\lambda (H4: (pr0 v1 v2)).(or3_ind (ex2 T 
26726 (\lambda (u2: T).(eq T w1 (THead (Bind b) u2 (lift (S O) O t3)))) (\lambda 
26727 (u2: T).(subst0 i v1 u u2))) (ex2 T (\lambda (t5: T).(eq T w1 (THead (Bind b) 
26728 u t5))) (\lambda (t5: T).(subst0 (s (Bind b) i) v1 (lift (S O) O t3) t5))) 
26729 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T w1 (THead (Bind b) u2 
26730 t5)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v1 u u2))) (\lambda (_: 
26731 T).(\lambda (t5: T).(subst0 (s (Bind b) i) v1 (lift (S O) O t3) t5)))) (or 
26732 (pr0 w1 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i 
26733 v2 t4 w2)))) (\lambda (H5: (ex2 T (\lambda (u2: T).(eq T w1 (THead (Bind b) 
26734 u2 (lift (S O) O t3)))) (\lambda (u2: T).(subst0 i v1 u u2)))).(ex2_ind T 
26735 (\lambda (u2: T).(eq T w1 (THead (Bind b) u2 (lift (S O) O t3)))) (\lambda 
26736 (u2: T).(subst0 i v1 u u2)) (or (pr0 w1 t4) (ex2 T (\lambda (w2: T).(pr0 w1 
26737 w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (x: T).(\lambda (H6: 
26738 (eq T w1 (THead (Bind b) x (lift (S O) O t3)))).(\lambda (_: (subst0 i v1 u 
26739 x)).(eq_ind_r T (THead (Bind b) x (lift (S O) O t3)) (\lambda (t: T).(or (pr0 
26740 t t4) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v2 t4 
26741 w2))))) (or_introl (pr0 (THead (Bind b) x (lift (S O) O t3)) t4) (ex2 T 
26742 (\lambda (w2: T).(pr0 (THead (Bind b) x (lift (S O) O t3)) w2)) (\lambda (w2: 
26743 T).(subst0 i v2 t4 w2))) (pr0_zeta b H0 t3 t4 H1 x)) w1 H6)))) H5)) (\lambda 
26744 (H5: (ex2 T (\lambda (t2: T).(eq T w1 (THead (Bind b) u t2))) (\lambda (t2: 
26745 T).(subst0 (s (Bind b) i) v1 (lift (S O) O t3) t2)))).(ex2_ind T (\lambda 
26746 (t5: T).(eq T w1 (THead (Bind b) u t5))) (\lambda (t5: T).(subst0 (s (Bind b) 
26747 i) v1 (lift (S O) O t3) t5)) (or (pr0 w1 t4) (ex2 T (\lambda (w2: T).(pr0 w1 
26748 w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (x: T).(\lambda (H6: 
26749 (eq T w1 (THead (Bind b) u x))).(\lambda (H7: (subst0 (s (Bind b) i) v1 (lift 
26750 (S O) O t3) x)).(ex2_ind T (\lambda (t5: T).(eq T x (lift (S O) O t5))) 
26751 (\lambda (t5: T).(subst0 (minus (s (Bind b) i) (S O)) v1 t3 t5)) (or (pr0 w1 
26752 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t4 
26753 w2)))) (\lambda (x0: T).(\lambda (H8: (eq T x (lift (S O) O x0))).(\lambda 
26754 (H9: (subst0 (minus (s (Bind b) i) (S O)) v1 t3 x0)).(eq_ind_r T (THead (Bind 
26755 b) u x) (\lambda (t: T).(or (pr0 t t4) (ex2 T (\lambda (w2: T).(pr0 t w2)) 
26756 (\lambda (w2: T).(subst0 i v2 t4 w2))))) (eq_ind_r T (lift (S O) O x0) 
26757 (\lambda (t: T).(or (pr0 (THead (Bind b) u t) t4) (ex2 T (\lambda (w2: 
26758 T).(pr0 (THead (Bind b) u t) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))))) 
26759 (let H10 \def (eq_ind_r nat (minus i O) (\lambda (n: nat).(subst0 n v1 t3 
26760 x0)) H9 i (minus_n_O i)) in (or_ind (pr0 x0 t4) (ex2 T (\lambda (w2: T).(pr0 
26761 x0 w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) (or (pr0 (THead (Bind b) u 
26762 (lift (S O) O x0)) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind b) u (lift 
26763 (S O) O x0)) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (H11: (pr0 
26764 x0 t4)).(or_introl (pr0 (THead (Bind b) u (lift (S O) O x0)) t4) (ex2 T 
26765 (\lambda (w2: T).(pr0 (THead (Bind b) u (lift (S O) O x0)) w2)) (\lambda (w2: 
26766 T).(subst0 i v2 t4 w2))) (pr0_zeta b H0 x0 t4 H11 u))) (\lambda (H11: (ex2 T 
26767 (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v2 t4 
26768 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x0 w2)) (\lambda (w2: T).(subst0 i v2 
26769 t4 w2)) (or (pr0 (THead (Bind b) u (lift (S O) O x0)) t4) (ex2 T (\lambda 
26770 (w2: T).(pr0 (THead (Bind b) u (lift (S O) O x0)) w2)) (\lambda (w2: 
26771 T).(subst0 i v2 t4 w2)))) (\lambda (x1: T).(\lambda (H12: (pr0 x0 
26772 x1)).(\lambda (H13: (subst0 i v2 t4 x1)).(or_intror (pr0 (THead (Bind b) u 
26773 (lift (S O) O x0)) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind b) u (lift 
26774 (S O) O x0)) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) (ex_intro2 T 
26775 (\lambda (w2: T).(pr0 (THead (Bind b) u (lift (S O) O x0)) w2)) (\lambda (w2: 
26776 T).(subst0 i v2 t4 w2)) x1 (pr0_zeta b H0 x0 x1 H12 u) H13))))) H11)) (H2 v1 
26777 x0 i H10 v2 H4))) x H8) w1 H6)))) (subst0_gen_lift_ge v1 t3 x (s (Bind b) i) 
26778 (S O) O H7 (le_S_n (S O) (S i) (lt_le_S (S O) (S (S i)) (lt_n_S O (S i) 
26779 (le_lt_n_Sm O i (le_O_n i)))))))))) H5)) (\lambda (H5: (ex3_2 T T (\lambda 
26780 (u2: T).(\lambda (t2: T).(eq T w1 (THead (Bind b) u2 t2)))) (\lambda (u2: 
26781 T).(\lambda (_: T).(subst0 i v1 u u2))) (\lambda (_: T).(\lambda (t2: 
26782 T).(subst0 (s (Bind b) i) v1 (lift (S O) O t3) t2))))).(ex3_2_ind T T 
26783 (\lambda (u2: T).(\lambda (t5: T).(eq T w1 (THead (Bind b) u2 t5)))) (\lambda 
26784 (u2: T).(\lambda (_: T).(subst0 i v1 u u2))) (\lambda (_: T).(\lambda (t5: 
26785 T).(subst0 (s (Bind b) i) v1 (lift (S O) O t3) t5))) (or (pr0 w1 t4) (ex2 T 
26786 (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) 
26787 (\lambda (x0: T).(\lambda (x1: T).(\lambda (H6: (eq T w1 (THead (Bind b) x0 
26788 x1))).(\lambda (_: (subst0 i v1 u x0)).(\lambda (H8: (subst0 (s (Bind b) i) 
26789 v1 (lift (S O) O t3) x1)).(ex2_ind T (\lambda (t5: T).(eq T x1 (lift (S O) O 
26790 t5))) (\lambda (t5: T).(subst0 (minus (s (Bind b) i) (S O)) v1 t3 t5)) (or 
26791 (pr0 w1 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i 
26792 v2 t4 w2)))) (\lambda (x: T).(\lambda (H9: (eq T x1 (lift (S O) O 
26793 x))).(\lambda (H10: (subst0 (minus (s (Bind b) i) (S O)) v1 t3 x)).(eq_ind_r 
26794 T (THead (Bind b) x0 x1) (\lambda (t: T).(or (pr0 t t4) (ex2 T (\lambda (w2: 
26795 T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))))) (eq_ind_r T (lift (S 
26796 O) O x) (\lambda (t: T).(or (pr0 (THead (Bind b) x0 t) t4) (ex2 T (\lambda 
26797 (w2: T).(pr0 (THead (Bind b) x0 t) w2)) (\lambda (w2: T).(subst0 i v2 t4 
26798 w2))))) (let H11 \def (eq_ind_r nat (minus i O) (\lambda (n: nat).(subst0 n 
26799 v1 t3 x)) H10 i (minus_n_O i)) in (or_ind (pr0 x t4) (ex2 T (\lambda (w2: 
26800 T).(pr0 x w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) (or (pr0 (THead (Bind 
26801 b) x0 (lift (S O) O x)) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Bind b) x0 
26802 (lift (S O) O x)) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (H12: 
26803 (pr0 x t4)).(or_introl (pr0 (THead (Bind b) x0 (lift (S O) O x)) t4) (ex2 T 
26804 (\lambda (w2: T).(pr0 (THead (Bind b) x0 (lift (S O) O x)) w2)) (\lambda (w2: 
26805 T).(subst0 i v2 t4 w2))) (pr0_zeta b H0 x t4 H12 x0))) (\lambda (H12: (ex2 T 
26806 (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))).(ex2_ind 
26807 T (\lambda (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)) (or (pr0 
26808 (THead (Bind b) x0 (lift (S O) O x)) t4) (ex2 T (\lambda (w2: T).(pr0 (THead 
26809 (Bind b) x0 (lift (S O) O x)) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) 
26810 (\lambda (x2: T).(\lambda (H13: (pr0 x x2)).(\lambda (H14: (subst0 i v2 t4 
26811 x2)).(or_intror (pr0 (THead (Bind b) x0 (lift (S O) O x)) t4) (ex2 T (\lambda 
26812 (w2: T).(pr0 (THead (Bind b) x0 (lift (S O) O x)) w2)) (\lambda (w2: 
26813 T).(subst0 i v2 t4 w2))) (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Bind b) 
26814 x0 (lift (S O) O x)) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)) x2 (pr0_zeta 
26815 b H0 x x2 H13 x0) H14))))) H12)) (H2 v1 x i H11 v2 H4))) x1 H9) w1 H6)))) 
26816 (subst0_gen_lift_ge v1 t3 x1 (s (Bind b) i) (S O) O H8 (le_S_n (S O) (S i) 
26817 (lt_le_S (S O) (S (S i)) (lt_n_S O (S i) (le_lt_n_Sm O i (le_O_n 
26818 i)))))))))))) H5)) (subst0_gen_head (Bind b) v1 u (lift (S O) O t3) w1 i 
26819 H3))))))))))))))) (\lambda (t3: T).(\lambda (t4: T).(\lambda (H0: (pr0 t3 
26820 t4)).(\lambda (H1: ((\forall (v1: T).(\forall (w1: T).(\forall (i: 
26821 nat).((subst0 i v1 t3 w1) \to (\forall (v2: T).((pr0 v1 v2) \to (or (pr0 w1 
26822 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t4 
26823 w2)))))))))))).(\lambda (u: T).(\lambda (v1: T).(\lambda (w1: T).(\lambda (i: 
26824 nat).(\lambda (H2: (subst0 i v1 (THead (Flat Cast) u t3) w1)).(\lambda (v2: 
26825 T).(\lambda (H3: (pr0 v1 v2)).(or3_ind (ex2 T (\lambda (u2: T).(eq T w1 
26826 (THead (Flat Cast) u2 t3))) (\lambda (u2: T).(subst0 i v1 u u2))) (ex2 T 
26827 (\lambda (t5: T).(eq T w1 (THead (Flat Cast) u t5))) (\lambda (t5: T).(subst0 
26828 (s (Flat Cast) i) v1 t3 t5))) (ex3_2 T T (\lambda (u2: T).(\lambda (t5: 
26829 T).(eq T w1 (THead (Flat Cast) u2 t5)))) (\lambda (u2: T).(\lambda (_: 
26830 T).(subst0 i v1 u u2))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s (Flat 
26831 Cast) i) v1 t3 t5)))) (or (pr0 w1 t4) (ex2 T (\lambda (w2: T).(pr0 w1 w2)) 
26832 (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (H4: (ex2 T (\lambda (u2: 
26833 T).(eq T w1 (THead (Flat Cast) u2 t3))) (\lambda (u2: T).(subst0 i v1 u 
26834 u2)))).(ex2_ind T (\lambda (u2: T).(eq T w1 (THead (Flat Cast) u2 t3))) 
26835 (\lambda (u2: T).(subst0 i v1 u u2)) (or (pr0 w1 t4) (ex2 T (\lambda (w2: 
26836 T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (x: 
26837 T).(\lambda (H5: (eq T w1 (THead (Flat Cast) x t3))).(\lambda (_: (subst0 i 
26838 v1 u x)).(eq_ind_r T (THead (Flat Cast) x t3) (\lambda (t: T).(or (pr0 t t4) 
26839 (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))))) 
26840 (or_introl (pr0 (THead (Flat Cast) x t3) t4) (ex2 T (\lambda (w2: T).(pr0 
26841 (THead (Flat Cast) x t3) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) 
26842 (pr0_epsilon t3 t4 H0 x)) w1 H5)))) H4)) (\lambda (H4: (ex2 T (\lambda (t2: 
26843 T).(eq T w1 (THead (Flat Cast) u t2))) (\lambda (t2: T).(subst0 (s (Flat 
26844 Cast) i) v1 t3 t2)))).(ex2_ind T (\lambda (t5: T).(eq T w1 (THead (Flat Cast) 
26845 u t5))) (\lambda (t5: T).(subst0 (s (Flat Cast) i) v1 t3 t5)) (or (pr0 w1 t4) 
26846 (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) 
26847 (\lambda (x: T).(\lambda (H5: (eq T w1 (THead (Flat Cast) u x))).(\lambda 
26848 (H6: (subst0 (s (Flat Cast) i) v1 t3 x)).(eq_ind_r T (THead (Flat Cast) u x) 
26849 (\lambda (t: T).(or (pr0 t t4) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda 
26850 (w2: T).(subst0 i v2 t4 w2))))) (or_ind (pr0 x t4) (ex2 T (\lambda (w2: 
26851 T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s (Flat Cast) i) v2 t4 w2))) (or 
26852 (pr0 (THead (Flat Cast) u x) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
26853 Cast) u x) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (H7: (pr0 x 
26854 t4)).(or_introl (pr0 (THead (Flat Cast) u x) t4) (ex2 T (\lambda (w2: T).(pr0 
26855 (THead (Flat Cast) u x) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) 
26856 (pr0_epsilon x t4 H7 u))) (\lambda (H7: (ex2 T (\lambda (w2: T).(pr0 x w2)) 
26857 (\lambda (w2: T).(subst0 (s (Flat Cast) i) v2 t4 w2)))).(ex2_ind T (\lambda 
26858 (w2: T).(pr0 x w2)) (\lambda (w2: T).(subst0 (s (Flat Cast) i) v2 t4 w2)) (or 
26859 (pr0 (THead (Flat Cast) u x) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
26860 Cast) u x) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (x0: 
26861 T).(\lambda (H8: (pr0 x x0)).(\lambda (H9: (subst0 (s (Flat Cast) i) v2 t4 
26862 x0)).(or_intror (pr0 (THead (Flat Cast) u x) t4) (ex2 T (\lambda (w2: T).(pr0 
26863 (THead (Flat Cast) u x) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) 
26864 (ex_intro2 T (\lambda (w2: T).(pr0 (THead (Flat Cast) u x) w2)) (\lambda (w2: 
26865 T).(subst0 i v2 t4 w2)) x0 (pr0_epsilon x x0 H8 u) H9))))) H7)) (H1 v1 x (s 
26866 (Flat Cast) i) H6 v2 H3)) w1 H5)))) H4)) (\lambda (H4: (ex3_2 T T (\lambda 
26867 (u2: T).(\lambda (t2: T).(eq T w1 (THead (Flat Cast) u2 t2)))) (\lambda (u2: 
26868 T).(\lambda (_: T).(subst0 i v1 u u2))) (\lambda (_: T).(\lambda (t2: 
26869 T).(subst0 (s (Flat Cast) i) v1 t3 t2))))).(ex3_2_ind T T (\lambda (u2: 
26870 T).(\lambda (t5: T).(eq T w1 (THead (Flat Cast) u2 t5)))) (\lambda (u2: 
26871 T).(\lambda (_: T).(subst0 i v1 u u2))) (\lambda (_: T).(\lambda (t5: 
26872 T).(subst0 (s (Flat Cast) i) v1 t3 t5))) (or (pr0 w1 t4) (ex2 T (\lambda (w2: 
26873 T).(pr0 w1 w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (x0: 
26874 T).(\lambda (x1: T).(\lambda (H5: (eq T w1 (THead (Flat Cast) x0 
26875 x1))).(\lambda (_: (subst0 i v1 u x0)).(\lambda (H7: (subst0 (s (Flat Cast) 
26876 i) v1 t3 x1)).(eq_ind_r T (THead (Flat Cast) x0 x1) (\lambda (t: T).(or (pr0 
26877 t t4) (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst0 i v2 t4 
26878 w2))))) (or_ind (pr0 x1 t4) (ex2 T (\lambda (w2: T).(pr0 x1 w2)) (\lambda 
26879 (w2: T).(subst0 (s (Flat Cast) i) v2 t4 w2))) (or (pr0 (THead (Flat Cast) x0 
26880 x1) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Cast) x0 x1) w2)) (\lambda 
26881 (w2: T).(subst0 i v2 t4 w2)))) (\lambda (H8: (pr0 x1 t4)).(or_introl (pr0 
26882 (THead (Flat Cast) x0 x1) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Cast) 
26883 x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) (pr0_epsilon x1 t4 H8 
26884 x0))) (\lambda (H8: (ex2 T (\lambda (w2: T).(pr0 x1 w2)) (\lambda (w2: 
26885 T).(subst0 (s (Flat Cast) i) v2 t4 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 x1 
26886 w2)) (\lambda (w2: T).(subst0 (s (Flat Cast) i) v2 t4 w2)) (or (pr0 (THead 
26887 (Flat Cast) x0 x1) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat Cast) x0 x1) 
26888 w2)) (\lambda (w2: T).(subst0 i v2 t4 w2)))) (\lambda (x: T).(\lambda (H9: 
26889 (pr0 x1 x)).(\lambda (H10: (subst0 (s (Flat Cast) i) v2 t4 x)).(or_intror 
26890 (pr0 (THead (Flat Cast) x0 x1) t4) (ex2 T (\lambda (w2: T).(pr0 (THead (Flat 
26891 Cast) x0 x1) w2)) (\lambda (w2: T).(subst0 i v2 t4 w2))) (ex_intro2 T 
26892 (\lambda (w2: T).(pr0 (THead (Flat Cast) x0 x1) w2)) (\lambda (w2: T).(subst0 
26893 i v2 t4 w2)) x (pr0_epsilon x1 x H9 x0) H10))))) H8)) (H1 v1 x1 (s (Flat 
26894 Cast) i) H7 v2 H3)) w1 H5)))))) H4)) (subst0_gen_head (Flat Cast) v1 u t3 w1 
26895 i H2))))))))))))) t1 t2 H))).
26896
26897 theorem pr0_confluence__pr0_cong_upsilon_refl:
26898  \forall (b: B).((not (eq B b Abst)) \to (\forall (u0: T).(\forall (u3: 
26899 T).((pr0 u0 u3) \to (\forall (t4: T).(\forall (t5: T).((pr0 t4 t5) \to 
26900 (\forall (u2: T).(\forall (v2: T).(\forall (x: T).((pr0 u2 x) \to ((pr0 v2 x) 
26901 \to (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead (Bind b) u0 t4)) 
26902 t)) (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O 
26903 v2) t5)) t)))))))))))))))
26904 \def
26905  \lambda (b: B).(\lambda (H: (not (eq B b Abst))).(\lambda (u0: T).(\lambda 
26906 (u3: T).(\lambda (H0: (pr0 u0 u3)).(\lambda (t4: T).(\lambda (t5: T).(\lambda 
26907 (H1: (pr0 t4 t5)).(\lambda (u2: T).(\lambda (v2: T).(\lambda (x: T).(\lambda 
26908 (H2: (pr0 u2 x)).(\lambda (H3: (pr0 v2 x)).(ex_intro2 T (\lambda (t: T).(pr0 
26909 (THead (Flat Appl) u2 (THead (Bind b) u0 t4)) t)) (\lambda (t: T).(pr0 (THead 
26910 (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t)) (THead (Bind b) u3 
26911 (THead (Flat Appl) (lift (S O) O x) t5)) (pr0_upsilon b H u2 x H2 u0 u3 H0 t4 
26912 t5 H1) (pr0_comp u3 u3 (pr0_refl u3) (THead (Flat Appl) (lift (S O) O v2) t5) 
26913 (THead (Flat Appl) (lift (S O) O x) t5) (pr0_comp (lift (S O) O v2) (lift (S 
26914 O) O x) (pr0_lift v2 x H3 (S O) O) t5 t5 (pr0_refl t5) (Flat Appl)) (Bind 
26915 b))))))))))))))).
26916
26917 theorem pr0_confluence__pr0_cong_upsilon_cong:
26918  \forall (b: B).((not (eq B b Abst)) \to (\forall (u2: T).(\forall (v2: 
26919 T).(\forall (x: T).((pr0 u2 x) \to ((pr0 v2 x) \to (\forall (t2: T).(\forall 
26920 (t5: T).(\forall (x0: T).((pr0 t2 x0) \to ((pr0 t5 x0) \to (\forall (u5: 
26921 T).(\forall (u3: T).(\forall (x1: T).((pr0 u5 x1) \to ((pr0 u3 x1) \to (ex2 T 
26922 (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead (Bind b) u5 t2)) t)) 
26923 (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) 
26924 t5)) t)))))))))))))))))))
26925 \def
26926  \lambda (b: B).(\lambda (H: (not (eq B b Abst))).(\lambda (u2: T).(\lambda 
26927 (v2: T).(\lambda (x: T).(\lambda (H0: (pr0 u2 x)).(\lambda (H1: (pr0 v2 
26928 x)).(\lambda (t2: T).(\lambda (t5: T).(\lambda (x0: T).(\lambda (H2: (pr0 t2 
26929 x0)).(\lambda (H3: (pr0 t5 x0)).(\lambda (u5: T).(\lambda (u3: T).(\lambda 
26930 (x1: T).(\lambda (H4: (pr0 u5 x1)).(\lambda (H5: (pr0 u3 x1)).(ex_intro2 T 
26931 (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead (Bind b) u5 t2)) t)) 
26932 (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) 
26933 t5)) t)) (THead (Bind b) x1 (THead (Flat Appl) (lift (S O) O x) x0)) 
26934 (pr0_upsilon b H u2 x H0 u5 x1 H4 t2 x0 H2) (pr0_comp u3 x1 H5 (THead (Flat 
26935 Appl) (lift (S O) O v2) t5) (THead (Flat Appl) (lift (S O) O x) x0) (pr0_comp 
26936 (lift (S O) O v2) (lift (S O) O x) (pr0_lift v2 x H1 (S O) O) t5 x0 H3 (Flat 
26937 Appl)) (Bind b))))))))))))))))))).
26938
26939 theorem pr0_confluence__pr0_cong_upsilon_delta:
26940  (not (eq B Abbr Abst)) \to (\forall (u5: T).(\forall (t2: T).(\forall (w: 
26941 T).((subst0 O u5 t2 w) \to (\forall (u2: T).(\forall (v2: T).(\forall (x: 
26942 T).((pr0 u2 x) \to ((pr0 v2 x) \to (\forall (t5: T).(\forall (x0: T).((pr0 t2 
26943 x0) \to ((pr0 t5 x0) \to (\forall (u3: T).(\forall (x1: T).((pr0 u5 x1) \to 
26944 ((pr0 u3 x1) \to (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead 
26945 (Bind Abbr) u5 w)) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 (THead 
26946 (Flat Appl) (lift (S O) O v2) t5)) t))))))))))))))))))))
26947 \def
26948  \lambda (H: (not (eq B Abbr Abst))).(\lambda (u5: T).(\lambda (t2: 
26949 T).(\lambda (w: T).(\lambda (H0: (subst0 O u5 t2 w)).(\lambda (u2: 
26950 T).(\lambda (v2: T).(\lambda (x: T).(\lambda (H1: (pr0 u2 x)).(\lambda (H2: 
26951 (pr0 v2 x)).(\lambda (t5: T).(\lambda (x0: T).(\lambda (H3: (pr0 t2 
26952 x0)).(\lambda (H4: (pr0 t5 x0)).(\lambda (u3: T).(\lambda (x1: T).(\lambda 
26953 (H5: (pr0 u5 x1)).(\lambda (H6: (pr0 u3 x1)).(or_ind (pr0 w x0) (ex2 T 
26954 (\lambda (w2: T).(pr0 w w2)) (\lambda (w2: T).(subst0 O x1 x0 w2))) (ex2 T 
26955 (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead (Bind Abbr) u5 w)) t)) 
26956 (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 (THead (Flat Appl) (lift (S O) O 
26957 v2) t5)) t))) (\lambda (H7: (pr0 w x0)).(ex_intro2 T (\lambda (t: T).(pr0 
26958 (THead (Flat Appl) u2 (THead (Bind Abbr) u5 w)) t)) (\lambda (t: T).(pr0 
26959 (THead (Bind Abbr) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t)) (THead 
26960 (Bind Abbr) x1 (THead (Flat Appl) (lift (S O) O x) x0)) (pr0_upsilon Abbr H 
26961 u2 x H1 u5 x1 H5 w x0 H7) (pr0_comp u3 x1 H6 (THead (Flat Appl) (lift (S O) O 
26962 v2) t5) (THead (Flat Appl) (lift (S O) O x) x0) (pr0_comp (lift (S O) O v2) 
26963 (lift (S O) O x) (pr0_lift v2 x H2 (S O) O) t5 x0 H4 (Flat Appl)) (Bind 
26964 Abbr)))) (\lambda (H7: (ex2 T (\lambda (w2: T).(pr0 w w2)) (\lambda (w2: 
26965 T).(subst0 O x1 x0 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 w w2)) (\lambda 
26966 (w2: T).(subst0 O x1 x0 w2)) (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) 
26967 u2 (THead (Bind Abbr) u5 w)) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 
26968 (THead (Flat Appl) (lift (S O) O v2) t5)) t))) (\lambda (x2: T).(\lambda (H8: 
26969 (pr0 w x2)).(\lambda (H9: (subst0 O x1 x0 x2)).(ex_intro2 T (\lambda (t: 
26970 T).(pr0 (THead (Flat Appl) u2 (THead (Bind Abbr) u5 w)) t)) (\lambda (t: 
26971 T).(pr0 (THead (Bind Abbr) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t)) 
26972 (THead (Bind Abbr) x1 (THead (Flat Appl) (lift (S O) O x) x2)) (pr0_upsilon 
26973 Abbr H u2 x H1 u5 x1 H5 w x2 H8) (pr0_delta u3 x1 H6 (THead (Flat Appl) (lift 
26974 (S O) O v2) t5) (THead (Flat Appl) (lift (S O) O x) x0) (pr0_comp (lift (S O) 
26975 O v2) (lift (S O) O x) (pr0_lift v2 x H2 (S O) O) t5 x0 H4 (Flat Appl)) 
26976 (THead (Flat Appl) (lift (S O) O x) x2) (subst0_snd (Flat Appl) x1 x2 x0 O H9 
26977 (lift (S O) O x))))))) H7)) (pr0_subst0 t2 x0 H3 u5 w O H0 x1 
26978 H5))))))))))))))))))).
26979
26980 theorem pr0_confluence__pr0_cong_upsilon_zeta:
26981  \forall (b: B).((not (eq B b Abst)) \to (\forall (u0: T).(\forall (u3: 
26982 T).((pr0 u0 u3) \to (\forall (u2: T).(\forall (v2: T).(\forall (x0: T).((pr0 
26983 u2 x0) \to ((pr0 v2 x0) \to (\forall (x: T).(\forall (t3: T).(\forall (x1: 
26984 T).((pr0 x x1) \to ((pr0 t3 x1) \to (ex2 T (\lambda (t: T).(pr0 (THead (Flat 
26985 Appl) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) 
26986 (lift (S O) O v2) (lift (S O) O x))) t)))))))))))))))))
26987 \def
26988  \lambda (b: B).(\lambda (H: (not (eq B b Abst))).(\lambda (u0: T).(\lambda 
26989 (u3: T).(\lambda (_: (pr0 u0 u3)).(\lambda (u2: T).(\lambda (v2: T).(\lambda 
26990 (x0: T).(\lambda (H1: (pr0 u2 x0)).(\lambda (H2: (pr0 v2 x0)).(\lambda (x: 
26991 T).(\lambda (t3: T).(\lambda (x1: T).(\lambda (H3: (pr0 x x1)).(\lambda (H4: 
26992 (pr0 t3 x1)).(eq_ind T (lift (S O) O (THead (Flat Appl) v2 x)) (\lambda (t: 
26993 T).(ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t3) t0)) (\lambda (t0: 
26994 T).(pr0 (THead (Bind b) u3 t) t0)))) (ex_intro2 T (\lambda (t: T).(pr0 (THead 
26995 (Flat Appl) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind b) u3 (lift (S O) O 
26996 (THead (Flat Appl) v2 x))) t)) (THead (Flat Appl) x0 x1) (pr0_comp u2 x0 H1 
26997 t3 x1 H4 (Flat Appl)) (pr0_zeta b H (THead (Flat Appl) v2 x) (THead (Flat 
26998 Appl) x0 x1) (pr0_comp v2 x0 H2 x x1 H3 (Flat Appl)) u3)) (THead (Flat Appl) 
26999 (lift (S O) O v2) (lift (S O) O x)) (lift_flat Appl v2 x (S O) 
27000 O)))))))))))))))).
27001
27002 theorem pr0_confluence__pr0_cong_delta:
27003  \forall (u3: T).(\forall (t5: T).(\forall (w: T).((subst0 O u3 t5 w) \to 
27004 (\forall (u2: T).(\forall (x: T).((pr0 u2 x) \to ((pr0 u3 x) \to (\forall 
27005 (t3: T).(\forall (x0: T).((pr0 t3 x0) \to ((pr0 t5 x0) \to (ex2 T (\lambda 
27006 (t: T).(pr0 (THead (Bind Abbr) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind 
27007 Abbr) u3 w) t))))))))))))))
27008 \def
27009  \lambda (u3: T).(\lambda (t5: T).(\lambda (w: T).(\lambda (H: (subst0 O u3 
27010 t5 w)).(\lambda (u2: T).(\lambda (x: T).(\lambda (H0: (pr0 u2 x)).(\lambda 
27011 (H1: (pr0 u3 x)).(\lambda (t3: T).(\lambda (x0: T).(\lambda (H2: (pr0 t3 
27012 x0)).(\lambda (H3: (pr0 t5 x0)).(or_ind (pr0 w x0) (ex2 T (\lambda (w2: 
27013 T).(pr0 w w2)) (\lambda (w2: T).(subst0 O x x0 w2))) (ex2 T (\lambda (t: 
27014 T).(pr0 (THead (Bind Abbr) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) 
27015 u3 w) t))) (\lambda (H4: (pr0 w x0)).(ex_intro2 T (\lambda (t: T).(pr0 (THead 
27016 (Bind Abbr) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 w) t)) 
27017 (THead (Bind Abbr) x x0) (pr0_comp u2 x H0 t3 x0 H2 (Bind Abbr)) (pr0_comp u3 
27018 x H1 w x0 H4 (Bind Abbr)))) (\lambda (H4: (ex2 T (\lambda (w2: T).(pr0 w w2)) 
27019 (\lambda (w2: T).(subst0 O x x0 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 w 
27020 w2)) (\lambda (w2: T).(subst0 O x x0 w2)) (ex2 T (\lambda (t: T).(pr0 (THead 
27021 (Bind Abbr) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 w) t))) 
27022 (\lambda (x1: T).(\lambda (H5: (pr0 w x1)).(\lambda (H6: (subst0 O x x0 
27023 x1)).(ex_intro2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 t3) t)) (\lambda 
27024 (t: T).(pr0 (THead (Bind Abbr) u3 w) t)) (THead (Bind Abbr) x x1) (pr0_delta 
27025 u2 x H0 t3 x0 H2 x1 H6) (pr0_comp u3 x H1 w x1 H5 (Bind Abbr)))))) H4)) 
27026 (pr0_subst0 t5 x0 H3 u3 w O H x H1))))))))))))).
27027
27028 theorem pr0_confluence__pr0_upsilon_upsilon:
27029  \forall (b: B).((not (eq B b Abst)) \to (\forall (v1: T).(\forall (v2: 
27030 T).(\forall (x0: T).((pr0 v1 x0) \to ((pr0 v2 x0) \to (\forall (u1: 
27031 T).(\forall (u2: T).(\forall (x1: T).((pr0 u1 x1) \to ((pr0 u2 x1) \to 
27032 (\forall (t1: T).(\forall (t2: T).(\forall (x2: T).((pr0 t1 x2) \to ((pr0 t2 
27033 x2) \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u1 (THead (Flat Appl) 
27034 (lift (S O) O v1) t1)) t)) (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead 
27035 (Flat Appl) (lift (S O) O v2) t2)) t)))))))))))))))))))
27036 \def
27037  \lambda (b: B).(\lambda (_: (not (eq B b Abst))).(\lambda (v1: T).(\lambda 
27038 (v2: T).(\lambda (x0: T).(\lambda (H0: (pr0 v1 x0)).(\lambda (H1: (pr0 v2 
27039 x0)).(\lambda (u1: T).(\lambda (u2: T).(\lambda (x1: T).(\lambda (H2: (pr0 u1 
27040 x1)).(\lambda (H3: (pr0 u2 x1)).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
27041 (x2: T).(\lambda (H4: (pr0 t1 x2)).(\lambda (H5: (pr0 t2 x2)).(ex_intro2 T 
27042 (\lambda (t: T).(pr0 (THead (Bind b) u1 (THead (Flat Appl) (lift (S O) O v1) 
27043 t1)) t)) (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S 
27044 O) O v2) t2)) t)) (THead (Bind b) x1 (THead (Flat Appl) (lift (S O) O x0) 
27045 x2)) (pr0_comp u1 x1 H2 (THead (Flat Appl) (lift (S O) O v1) t1) (THead (Flat 
27046 Appl) (lift (S O) O x0) x2) (pr0_comp (lift (S O) O v1) (lift (S O) O x0) 
27047 (pr0_lift v1 x0 H0 (S O) O) t1 x2 H4 (Flat Appl)) (Bind b)) (pr0_comp u2 x1 
27048 H3 (THead (Flat Appl) (lift (S O) O v2) t2) (THead (Flat Appl) (lift (S O) O 
27049 x0) x2) (pr0_comp (lift (S O) O v2) (lift (S O) O x0) (pr0_lift v2 x0 H1 (S 
27050 O) O) t2 x2 H5 (Flat Appl)) (Bind b))))))))))))))))))).
27051
27052 theorem pr0_confluence__pr0_delta_delta:
27053  \forall (u2: T).(\forall (t3: T).(\forall (w: T).((subst0 O u2 t3 w) \to 
27054 (\forall (u3: T).(\forall (t5: T).(\forall (w0: T).((subst0 O u3 t5 w0) \to 
27055 (\forall (x: T).((pr0 u2 x) \to ((pr0 u3 x) \to (\forall (x0: T).((pr0 t3 x0) 
27056 \to ((pr0 t5 x0) \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) 
27057 (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 w0) t))))))))))))))))
27058 \def
27059  \lambda (u2: T).(\lambda (t3: T).(\lambda (w: T).(\lambda (H: (subst0 O u2 
27060 t3 w)).(\lambda (u3: T).(\lambda (t5: T).(\lambda (w0: T).(\lambda (H0: 
27061 (subst0 O u3 t5 w0)).(\lambda (x: T).(\lambda (H1: (pr0 u2 x)).(\lambda (H2: 
27062 (pr0 u3 x)).(\lambda (x0: T).(\lambda (H3: (pr0 t3 x0)).(\lambda (H4: (pr0 t5 
27063 x0)).(or_ind (pr0 w0 x0) (ex2 T (\lambda (w2: T).(pr0 w0 w2)) (\lambda (w2: 
27064 T).(subst0 O x x0 w2))) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) 
27065 t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 w0) t))) (\lambda (H5: (pr0 w0 
27066 x0)).(or_ind (pr0 w x0) (ex2 T (\lambda (w2: T).(pr0 w w2)) (\lambda (w2: 
27067 T).(subst0 O x x0 w2))) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) 
27068 t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 w0) t))) (\lambda (H6: (pr0 w 
27069 x0)).(ex_intro2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda 
27070 (t: T).(pr0 (THead (Bind Abbr) u3 w0) t)) (THead (Bind Abbr) x x0) (pr0_comp 
27071 u2 x H1 w x0 H6 (Bind Abbr)) (pr0_comp u3 x H2 w0 x0 H5 (Bind Abbr)))) 
27072 (\lambda (H6: (ex2 T (\lambda (w2: T).(pr0 w w2)) (\lambda (w2: T).(subst0 O 
27073 x x0 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 w w2)) (\lambda (w2: T).(subst0 
27074 O x x0 w2)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda 
27075 (t: T).(pr0 (THead (Bind Abbr) u3 w0) t))) (\lambda (x1: T).(\lambda (H7: 
27076 (pr0 w x1)).(\lambda (H8: (subst0 O x x0 x1)).(ex_intro2 T (\lambda (t: 
27077 T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) 
27078 u3 w0) t)) (THead (Bind Abbr) x x1) (pr0_comp u2 x H1 w x1 H7 (Bind Abbr)) 
27079 (pr0_delta u3 x H2 w0 x0 H5 x1 H8))))) H6)) (pr0_subst0 t3 x0 H3 u2 w O H x 
27080 H1))) (\lambda (H5: (ex2 T (\lambda (w2: T).(pr0 w0 w2)) (\lambda (w2: 
27081 T).(subst0 O x x0 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 w0 w2)) (\lambda 
27082 (w2: T).(subst0 O x x0 w2)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 
27083 w) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 w0) t))) (\lambda (x1: 
27084 T).(\lambda (H6: (pr0 w0 x1)).(\lambda (H7: (subst0 O x x0 x1)).(or_ind (pr0 
27085 w x0) (ex2 T (\lambda (w2: T).(pr0 w w2)) (\lambda (w2: T).(subst0 O x x0 
27086 w2))) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: 
27087 T).(pr0 (THead (Bind Abbr) u3 w0) t))) (\lambda (H8: (pr0 w x0)).(ex_intro2 T 
27088 (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 (THead 
27089 (Bind Abbr) u3 w0) t)) (THead (Bind Abbr) x x1) (pr0_delta u2 x H1 w x0 H8 x1 
27090 H7) (pr0_comp u3 x H2 w0 x1 H6 (Bind Abbr)))) (\lambda (H8: (ex2 T (\lambda 
27091 (w2: T).(pr0 w w2)) (\lambda (w2: T).(subst0 O x x0 w2)))).(ex2_ind T 
27092 (\lambda (w2: T).(pr0 w w2)) (\lambda (w2: T).(subst0 O x x0 w2)) (ex2 T 
27093 (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 (THead 
27094 (Bind Abbr) u3 w0) t))) (\lambda (x2: T).(\lambda (H9: (pr0 w x2)).(\lambda 
27095 (H10: (subst0 O x x0 x2)).(or4_ind (eq T x2 x1) (ex2 T (\lambda (t: 
27096 T).(subst0 O x x2 t)) (\lambda (t: T).(subst0 O x x1 t))) (subst0 O x x2 x1) 
27097 (subst0 O x x1 x2) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) 
27098 (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 w0) t))) (\lambda (H11: (eq T x2 
27099 x1)).(let H12 \def (eq_ind T x2 (\lambda (t: T).(pr0 w t)) H9 x1 H11) in 
27100 (ex_intro2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: 
27101 T).(pr0 (THead (Bind Abbr) u3 w0) t)) (THead (Bind Abbr) x x1) (pr0_comp u2 x 
27102 H1 w x1 H12 (Bind Abbr)) (pr0_comp u3 x H2 w0 x1 H6 (Bind Abbr))))) (\lambda 
27103 (H11: (ex2 T (\lambda (t: T).(subst0 O x x2 t)) (\lambda (t: T).(subst0 O x 
27104 x1 t)))).(ex2_ind T (\lambda (t: T).(subst0 O x x2 t)) (\lambda (t: 
27105 T).(subst0 O x x1 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) 
27106 t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 w0) t))) (\lambda (x3: 
27107 T).(\lambda (H12: (subst0 O x x2 x3)).(\lambda (H13: (subst0 O x x1 
27108 x3)).(ex_intro2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda 
27109 (t: T).(pr0 (THead (Bind Abbr) u3 w0) t)) (THead (Bind Abbr) x x3) (pr0_delta 
27110 u2 x H1 w x2 H9 x3 H12) (pr0_delta u3 x H2 w0 x1 H6 x3 H13))))) H11)) 
27111 (\lambda (H11: (subst0 O x x2 x1)).(ex_intro2 T (\lambda (t: T).(pr0 (THead 
27112 (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 w0) t)) 
27113 (THead (Bind Abbr) x x1) (pr0_delta u2 x H1 w x2 H9 x1 H11) (pr0_comp u3 x H2 
27114 w0 x1 H6 (Bind Abbr)))) (\lambda (H11: (subst0 O x x1 x2)).(ex_intro2 T 
27115 (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 (THead 
27116 (Bind Abbr) u3 w0) t)) (THead (Bind Abbr) x x2) (pr0_comp u2 x H1 w x2 H9 
27117 (Bind Abbr)) (pr0_delta u3 x H2 w0 x1 H6 x2 H11))) (subst0_confluence_eq x0 
27118 x2 x O H10 x1 H7))))) H8)) (pr0_subst0 t3 x0 H3 u2 w O H x H1))))) H5)) 
27119 (pr0_subst0 t5 x0 H4 u3 w0 O H0 x H2))))))))))))))).
27120
27121 theorem pr0_confluence__pr0_delta_epsilon:
27122  \forall (u2: T).(\forall (t3: T).(\forall (w: T).((subst0 O u2 t3 w) \to 
27123 (\forall (t4: T).((pr0 (lift (S O) O t4) t3) \to (\forall (t2: T).(ex2 T 
27124 (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 t2 
27125 t)))))))))
27126 \def
27127  \lambda (u2: T).(\lambda (t3: T).(\lambda (w: T).(\lambda (H: (subst0 O u2 
27128 t3 w)).(\lambda (t4: T).(\lambda (H0: (pr0 (lift (S O) O t4) t3)).(\lambda 
27129 (t2: T).(ex2_ind T (\lambda (t5: T).(eq T t3 (lift (S O) O t5))) (\lambda 
27130 (t5: T).(pr0 t4 t5)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) 
27131 (\lambda (t: T).(pr0 t2 t))) (\lambda (x: T).(\lambda (H1: (eq T t3 (lift (S 
27132 O) O x))).(\lambda (_: (pr0 t4 x)).(let H3 \def (eq_ind T t3 (\lambda (t: 
27133 T).(subst0 O u2 t w)) H (lift (S O) O x) H1) in (subst0_gen_lift_false x u2 w 
27134 (S O) O O (le_n O) (eq_ind_r nat (plus (S O) O) (\lambda (n: nat).(lt O n)) 
27135 (le_n (plus (S O) O)) (plus O (S O)) (plus_comm O (S O))) H3 (ex2 T (\lambda 
27136 (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 t2 t)))))))) 
27137 (pr0_gen_lift t4 t3 (S O) O H0)))))))).
27138
27139 theorem pr0_confluence:
27140  \forall (t0: T).(\forall (t1: T).((pr0 t0 t1) \to (\forall (t2: T).((pr0 t0 
27141 t2) \to (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 t2 t)))))))
27142 \def
27143  \lambda (t0: T).(tlt_wf_ind (\lambda (t: T).(\forall (t1: T).((pr0 t t1) \to 
27144 (\forall (t2: T).((pr0 t t2) \to (ex2 T (\lambda (t3: T).(pr0 t1 t3)) 
27145 (\lambda (t3: T).(pr0 t2 t3)))))))) (\lambda (t: T).(\lambda (H: ((\forall 
27146 (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 
27147 v t2) \to (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 t2 
27148 t))))))))))).(\lambda (t1: T).(\lambda (H0: (pr0 t t1)).(\lambda (t2: 
27149 T).(\lambda (H1: (pr0 t t2)).(let H2 \def (match H0 return (\lambda (t0: 
27150 T).(\lambda (t3: T).(\lambda (_: (pr0 t0 t3)).((eq T t0 t) \to ((eq T t3 t1) 
27151 \to (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 t2 t)))))))) with 
27152 [(pr0_refl t0) \Rightarrow (\lambda (H2: (eq T t0 t)).(\lambda (H3: (eq T t0 
27153 t1)).(eq_ind T t (\lambda (t: T).((eq T t t1) \to (ex2 T (\lambda (t2: 
27154 T).(pr0 t1 t2)) (\lambda (t1: T).(pr0 t2 t1))))) (\lambda (H4: (eq T t 
27155 t1)).(eq_ind T t1 (\lambda (_: T).(ex2 T (\lambda (t2: T).(pr0 t1 t2)) 
27156 (\lambda (t1: T).(pr0 t2 t1)))) (let H5 \def (match H1 return (\lambda (t0: 
27157 T).(\lambda (t3: T).(\lambda (_: (pr0 t0 t3)).((eq T t0 t) \to ((eq T t3 t2) 
27158 \to (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 t2 t)))))))) with 
27159 [(pr0_refl t3) \Rightarrow (\lambda (H5: (eq T t3 t)).(\lambda (H6: (eq T t3 
27160 t2)).(eq_ind T t (\lambda (t: T).((eq T t t2) \to (ex2 T (\lambda (t0: 
27161 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0))))) (\lambda (H7: (eq T t 
27162 t2)).(eq_ind T t2 (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
27163 (\lambda (t0: T).(pr0 t2 t0)))) (let H0 \def (eq_ind T t (\lambda (t: T).(eq 
27164 T t3 t)) H5 t2 H7) in (let H1 \def (eq_ind T t (\lambda (t: T).(eq T t t1)) 
27165 H4 t2 H7) in (let H2 \def (eq_ind T t (\lambda (t: T).(eq T t0 t)) H2 t2 H7) 
27166 in (let H3 \def (eq_ind T t (\lambda (t: T).(\forall (v: T).((tlt v t) \to 
27167 (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T 
27168 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H t2 H7) 
27169 in (let H4 \def (eq_ind T t2 (\lambda (t: T).(\forall (v: T).((tlt v t) \to 
27170 (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T 
27171 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H3 t1 H1) 
27172 in (eq_ind_r T t1 (\lambda (t: T).(ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
27173 (\lambda (t0: T).(pr0 t t0)))) (let H8 \def (eq_ind T t2 (\lambda (t: T).(eq 
27174 T t0 t)) H2 t1 H1) in (ex_intro2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: 
27175 T).(pr0 t1 t)) t1 (pr0_refl t1) (pr0_refl t1))) t2 H1)))))) t (sym_eq T t t2 
27176 H7))) t3 (sym_eq T t3 t H5) H6))) | (pr0_comp u1 u2 H4 t3 t4 H5 k) 
27177 \Rightarrow (\lambda (H6: (eq T (THead k u1 t3) t)).(\lambda (H7: (eq T 
27178 (THead k u2 t4) t2)).(eq_ind T (THead k u1 t3) (\lambda (_: T).((eq T (THead 
27179 k u2 t4) t2) \to ((pr0 u1 u2) \to ((pr0 t3 t4) \to (ex2 T (\lambda (t0: 
27180 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda (H8: (eq T (THead 
27181 k u2 t4) t2)).(eq_ind T (THead k u2 t4) (\lambda (t: T).((pr0 u1 u2) \to 
27182 ((pr0 t3 t4) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t 
27183 t0)))))) (\lambda (H9: (pr0 u1 u2)).(\lambda (H10: (pr0 t3 t4)).(let H0 \def 
27184 (eq_ind_r T t (\lambda (t: T).(eq T t t1)) H4 (THead k u1 t3) H6) in (eq_ind 
27185 T (THead k u1 t3) (\lambda (t: T).(ex2 T (\lambda (t0: T).(pr0 t t0)) 
27186 (\lambda (t0: T).(pr0 (THead k u2 t4) t0)))) (let H1 \def (eq_ind_r T t 
27187 (\lambda (t: T).(eq T t0 t)) H2 (THead k u1 t3) H6) in (let H2 \def (eq_ind_r 
27188 T t (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v 
27189 t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
27190 (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead k u1 t3) H6) in (ex_intro2 T 
27191 (\lambda (t: T).(pr0 (THead k u1 t3) t)) (\lambda (t: T).(pr0 (THead k u2 t4) 
27192 t)) (THead k u2 t4) (pr0_comp u1 u2 H9 t3 t4 H10 k) (pr0_refl (THead k u2 
27193 t4))))) t1 H0)))) t2 H8)) t H6 H7 H4 H5))) | (pr0_beta u v1 v2 H4 t3 t4 H5) 
27194 \Rightarrow (\lambda (H6: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u 
27195 t3)) t)).(\lambda (H7: (eq T (THead (Bind Abbr) v2 t4) t2)).(eq_ind T (THead 
27196 (Flat Appl) v1 (THead (Bind Abst) u t3)) (\lambda (_: T).((eq T (THead (Bind 
27197 Abbr) v2 t4) t2) \to ((pr0 v1 v2) \to ((pr0 t3 t4) \to (ex2 T (\lambda (t0: 
27198 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda (H8: (eq T (THead 
27199 (Bind Abbr) v2 t4) t2)).(eq_ind T (THead (Bind Abbr) v2 t4) (\lambda (t: 
27200 T).((pr0 v1 v2) \to ((pr0 t3 t4) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
27201 (\lambda (t0: T).(pr0 t t0)))))) (\lambda (H9: (pr0 v1 v2)).(\lambda (H10: 
27202 (pr0 t3 t4)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T t t1)) H4 
27203 (THead (Flat Appl) v1 (THead (Bind Abst) u t3)) H6) in (eq_ind T (THead (Flat 
27204 Appl) v1 (THead (Bind Abst) u t3)) (\lambda (t: T).(ex2 T (\lambda (t0: 
27205 T).(pr0 t t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t4) t0)))) (let H1 
27206 \def (eq_ind_r T t (\lambda (t: T).(eq T t0 t)) H2 (THead (Flat Appl) v1 
27207 (THead (Bind Abst) u t3)) H6) in (let H2 \def (eq_ind_r T t (\lambda (t: 
27208 T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall 
27209 (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
27210 T).(pr0 t2 t0)))))))))) H (THead (Flat Appl) v1 (THead (Bind Abst) u t3)) H6) 
27211 in (ex_intro2 T (\lambda (t: T).(pr0 (THead (Flat Appl) v1 (THead (Bind Abst) 
27212 u t3)) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t4) t)) (THead (Bind 
27213 Abbr) v2 t4) (pr0_beta u v1 v2 H9 t3 t4 H10) (pr0_refl (THead (Bind Abbr) v2 
27214 t4))))) t1 H0)))) t2 H8)) t H6 H7 H4 H5))) | (pr0_upsilon b H4 v1 v2 H5 u1 u2 
27215 H6 t3 t4 H7) \Rightarrow (\lambda (H8: (eq T (THead (Flat Appl) v1 (THead 
27216 (Bind b) u1 t3)) t)).(\lambda (H9: (eq T (THead (Bind b) u2 (THead (Flat 
27217 Appl) (lift (S O) O v2) t4)) t2)).(eq_ind T (THead (Flat Appl) v1 (THead 
27218 (Bind b) u1 t3)) (\lambda (_: T).((eq T (THead (Bind b) u2 (THead (Flat Appl) 
27219 (lift (S O) O v2) t4)) t2) \to ((not (eq B b Abst)) \to ((pr0 v1 v2) \to 
27220 ((pr0 u1 u2) \to ((pr0 t3 t4) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
27221 (\lambda (t0: T).(pr0 t2 t0))))))))) (\lambda (H10: (eq T (THead (Bind b) u2 
27222 (THead (Flat Appl) (lift (S O) O v2) t4)) t2)).(eq_ind T (THead (Bind b) u2 
27223 (THead (Flat Appl) (lift (S O) O v2) t4)) (\lambda (t: T).((not (eq B b 
27224 Abst)) \to ((pr0 v1 v2) \to ((pr0 u1 u2) \to ((pr0 t3 t4) \to (ex2 T (\lambda 
27225 (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t t0)))))))) (\lambda (H11: (not 
27226 (eq B b Abst))).(\lambda (H12: (pr0 v1 v2)).(\lambda (H13: (pr0 u1 
27227 u2)).(\lambda (H14: (pr0 t3 t4)).(let H0 \def (eq_ind_r T t (\lambda (t: 
27228 T).(eq T t t1)) H4 (THead (Flat Appl) v1 (THead (Bind b) u1 t3)) H8) in 
27229 (eq_ind T (THead (Flat Appl) v1 (THead (Bind b) u1 t3)) (\lambda (t: T).(ex2 
27230 T (\lambda (t0: T).(pr0 t t0)) (\lambda (t0: T).(pr0 (THead (Bind b) u2 
27231 (THead (Flat Appl) (lift (S O) O v2) t4)) t0)))) (let H1 \def (eq_ind_r T t 
27232 (\lambda (t: T).(eq T t0 t)) H2 (THead (Flat Appl) v1 (THead (Bind b) u1 t3)) 
27233 H8) in (let H2 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt v t) 
27234 \to (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T 
27235 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead 
27236 (Flat Appl) v1 (THead (Bind b) u1 t3)) H8) in 
27237 (pr0_confluence__pr0_cong_upsilon_refl b H11 u1 u2 H13 t3 t4 H14 v1 v2 v2 H12 
27238 (pr0_refl v2)))) t1 H0)))))) t2 H10)) t H8 H9 H4 H5 H6 H7))) | (pr0_delta u1 
27239 u2 H4 t3 t4 H5 w H6) \Rightarrow (\lambda (H7: (eq T (THead (Bind Abbr) u1 
27240 t3) t)).(\lambda (H8: (eq T (THead (Bind Abbr) u2 w) t2)).(eq_ind T (THead 
27241 (Bind Abbr) u1 t3) (\lambda (_: T).((eq T (THead (Bind Abbr) u2 w) t2) \to 
27242 ((pr0 u1 u2) \to ((pr0 t3 t4) \to ((subst0 O u2 t4 w) \to (ex2 T (\lambda 
27243 (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))) (\lambda (H9: (eq T 
27244 (THead (Bind Abbr) u2 w) t2)).(eq_ind T (THead (Bind Abbr) u2 w) (\lambda (t: 
27245 T).((pr0 u1 u2) \to ((pr0 t3 t4) \to ((subst0 O u2 t4 w) \to (ex2 T (\lambda 
27246 (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t t0))))))) (\lambda (H10: (pr0 u1 
27247 u2)).(\lambda (H11: (pr0 t3 t4)).(\lambda (H12: (subst0 O u2 t4 w)).(let H0 
27248 \def (eq_ind_r T t (\lambda (t: T).(eq T t t1)) H4 (THead (Bind Abbr) u1 t3) 
27249 H7) in (eq_ind T (THead (Bind Abbr) u1 t3) (\lambda (t: T).(ex2 T (\lambda 
27250 (t0: T).(pr0 t t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)))) 
27251 (let H1 \def (eq_ind_r T t (\lambda (t: T).(eq T t0 t)) H2 (THead (Bind Abbr) 
27252 u1 t3) H7) in (let H2 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: 
27253 T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v 
27254 t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 
27255 t0)))))))))) H (THead (Bind Abbr) u1 t3) H7) in (ex_intro2 T (\lambda (t: 
27256 T).(pr0 (THead (Bind Abbr) u1 t3) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) 
27257 u2 w) t)) (THead (Bind Abbr) u2 w) (pr0_delta u1 u2 H10 t3 t4 H11 w H12) 
27258 (pr0_refl (THead (Bind Abbr) u2 w))))) t1 H0))))) t2 H9)) t H7 H8 H4 H5 H6))) 
27259 | (pr0_zeta b H4 t3 t4 H5 u) \Rightarrow (\lambda (H6: (eq T (THead (Bind b) 
27260 u (lift (S O) O t3)) t)).(\lambda (H7: (eq T t4 t2)).(eq_ind T (THead (Bind 
27261 b) u (lift (S O) O t3)) (\lambda (_: T).((eq T t4 t2) \to ((not (eq B b 
27262 Abst)) \to ((pr0 t3 t4) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda 
27263 (t0: T).(pr0 t2 t0))))))) (\lambda (H8: (eq T t4 t2)).(eq_ind T t2 (\lambda 
27264 (t: T).((not (eq B b Abst)) \to ((pr0 t3 t) \to (ex2 T (\lambda (t0: T).(pr0 
27265 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))) (\lambda (H9: (not (eq B b 
27266 Abst))).(\lambda (H10: (pr0 t3 t2)).(let H0 \def (eq_ind_r T t (\lambda (t: 
27267 T).(eq T t t1)) H4 (THead (Bind b) u (lift (S O) O t3)) H6) in (eq_ind T 
27268 (THead (Bind b) u (lift (S O) O t3)) (\lambda (t: T).(ex2 T (\lambda (t0: 
27269 T).(pr0 t t0)) (\lambda (t0: T).(pr0 t2 t0)))) (let H1 \def (eq_ind_r T t 
27270 (\lambda (t: T).(eq T t0 t)) H2 (THead (Bind b) u (lift (S O) O t3)) H6) in 
27271 (let H2 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt v t) \to 
27272 (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T 
27273 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead 
27274 (Bind b) u (lift (S O) O t3)) H6) in (ex_intro2 T (\lambda (t: T).(pr0 (THead 
27275 (Bind b) u (lift (S O) O t3)) t)) (\lambda (t: T).(pr0 t2 t)) t2 (pr0_zeta b 
27276 H9 t3 t2 H10 u) (pr0_refl t2)))) t1 H0)))) t4 (sym_eq T t4 t2 H8))) t H6 H7 
27277 H4 H5))) | (pr0_epsilon t3 t4 H4 u) \Rightarrow (\lambda (H5: (eq T (THead 
27278 (Flat Cast) u t3) t)).(\lambda (H6: (eq T t4 t2)).(eq_ind T (THead (Flat 
27279 Cast) u t3) (\lambda (_: T).((eq T t4 t2) \to ((pr0 t3 t4) \to (ex2 T 
27280 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))) (\lambda (H7: 
27281 (eq T t4 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 t3 t) \to (ex2 T (\lambda 
27282 (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0))))) (\lambda (H8: (pr0 t3 
27283 t2)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T t t1)) H4 (THead (Flat 
27284 Cast) u t3) H5) in (eq_ind T (THead (Flat Cast) u t3) (\lambda (t: T).(ex2 T 
27285 (\lambda (t0: T).(pr0 t t0)) (\lambda (t0: T).(pr0 t2 t0)))) (let H1 \def 
27286 (eq_ind_r T t (\lambda (t: T).(eq T t0 t)) H2 (THead (Flat Cast) u t3) H5) in 
27287 (let H2 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt v t) \to 
27288 (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T 
27289 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead 
27290 (Flat Cast) u t3) H5) in (ex_intro2 T (\lambda (t: T).(pr0 (THead (Flat Cast) 
27291 u t3) t)) (\lambda (t: T).(pr0 t2 t)) t2 (pr0_epsilon t3 t2 H8 u) (pr0_refl 
27292 t2)))) t1 H0))) t4 (sym_eq T t4 t2 H7))) t H5 H6 H4)))]) in (H5 (refl_equal T 
27293 t) (refl_equal T t2))) t (sym_eq T t t1 H4))) t0 (sym_eq T t0 t H2) H3))) | 
27294 (pr0_comp u1 u2 H2 t0 t3 H3 k) \Rightarrow (\lambda (H4: (eq T (THead k u1 
27295 t0) t)).(\lambda (H5: (eq T (THead k u2 t3) t1)).(eq_ind T (THead k u1 t0) 
27296 (\lambda (_: T).((eq T (THead k u2 t3) t1) \to ((pr0 u1 u2) \to ((pr0 t0 t3) 
27297 \to (ex2 T (\lambda (t2: T).(pr0 t1 t2)) (\lambda (t1: T).(pr0 t2 t1))))))) 
27298 (\lambda (H6: (eq T (THead k u2 t3) t1)).(eq_ind T (THead k u2 t3) (\lambda 
27299 (t: T).((pr0 u1 u2) \to ((pr0 t0 t3) \to (ex2 T (\lambda (t1: T).(pr0 t t1)) 
27300 (\lambda (t1: T).(pr0 t2 t1)))))) (\lambda (H7: (pr0 u1 u2)).(\lambda (H8: 
27301 (pr0 t0 t3)).(let H9 \def (match H1 return (\lambda (t0: T).(\lambda (t1: 
27302 T).(\lambda (_: (pr0 t0 t1)).((eq T t0 t) \to ((eq T t1 t2) \to (ex2 T 
27303 (\lambda (t: T).(pr0 (THead k u2 t3) t)) (\lambda (t: T).(pr0 t2 t)))))))) 
27304 with [(pr0_refl t4) \Rightarrow (\lambda (H6: (eq T t4 t)).(\lambda (H9: (eq 
27305 T t4 t2)).(eq_ind T t (\lambda (t: T).((eq T t t2) \to (ex2 T (\lambda (t0: 
27306 T).(pr0 (THead k u2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0))))) (\lambda (H10: 
27307 (eq T t t2)).(eq_ind T t2 (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 (THead 
27308 k u2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0)))) (let H0 \def (eq_ind_r T t 
27309 (\lambda (t: T).(eq T t t2)) H10 (THead k u1 t0) H4) in (eq_ind T (THead k u1 
27310 t0) (\lambda (t: T).(ex2 T (\lambda (t0: T).(pr0 (THead k u2 t3) t0)) 
27311 (\lambda (t0: T).(pr0 t t0)))) (let H1 \def (eq_ind_r T t (\lambda (t: T).(eq 
27312 T t4 t)) H6 (THead k u1 t0) H4) in (let H2 \def (eq_ind_r T t (\lambda (t: 
27313 T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall 
27314 (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
27315 T).(pr0 t2 t0)))))))))) H (THead k u1 t0) H4) in (ex_intro2 T (\lambda (t: 
27316 T).(pr0 (THead k u2 t3) t)) (\lambda (t: T).(pr0 (THead k u1 t0) t)) (THead k 
27317 u2 t3) (pr0_refl (THead k u2 t3)) (pr0_comp u1 u2 H7 t0 t3 H8 k)))) t2 H0)) t 
27318 (sym_eq T t t2 H10))) t4 (sym_eq T t4 t H6) H9))) | (pr0_comp u0 u3 H6 t4 t5 
27319 H7 k0) \Rightarrow (\lambda (H9: (eq T (THead k0 u0 t4) t)).(\lambda (H10: 
27320 (eq T (THead k0 u3 t5) t2)).(eq_ind T (THead k0 u0 t4) (\lambda (_: T).((eq T 
27321 (THead k0 u3 t5) t2) \to ((pr0 u0 u3) \to ((pr0 t4 t5) \to (ex2 T (\lambda 
27322 (t0: T).(pr0 (THead k u2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda 
27323 (H11: (eq T (THead k0 u3 t5) t2)).(eq_ind T (THead k0 u3 t5) (\lambda (t: 
27324 T).((pr0 u0 u3) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead k u2 
27325 t3) t0)) (\lambda (t0: T).(pr0 t t0)))))) (\lambda (H12: (pr0 u0 
27326 u3)).(\lambda (H13: (pr0 t4 t5)).(let H0 \def (eq_ind_r T t (\lambda (t: 
27327 T).(eq T (THead k u1 t0) t)) H4 (THead k0 u0 t4) H9) in (let H1 \def (match 
27328 H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead k0 u0 t4)) 
27329 \to (ex2 T (\lambda (t0: T).(pr0 (THead k u2 t3) t0)) (\lambda (t0: T).(pr0 
27330 (THead k0 u3 t5) t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T 
27331 (THead k u1 t0) (THead k0 u0 t4))).(let H1 \def (f_equal T T (\lambda (e: 
27332 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef 
27333 _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead k u1 t0) (THead k0 
27334 u0 t4) H0) in ((let H2 \def (f_equal T T (\lambda (e: T).(match e return 
27335 (\lambda (_: T).T) with [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 
27336 | (THead _ t _) \Rightarrow t])) (THead k u1 t0) (THead k0 u0 t4) H0) in 
27337 ((let H3 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) 
27338 with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
27339 \Rightarrow k])) (THead k u1 t0) (THead k0 u0 t4) H0) in (eq_ind K k0 
27340 (\lambda (k: K).((eq T u1 u0) \to ((eq T t0 t4) \to (ex2 T (\lambda (t: 
27341 T).(pr0 (THead k u2 t3) t)) (\lambda (t: T).(pr0 (THead k0 u3 t5) t)))))) 
27342 (\lambda (H10: (eq T u1 u0)).(eq_ind T u0 (\lambda (_: T).((eq T t0 t4) \to 
27343 (ex2 T (\lambda (t0: T).(pr0 (THead k0 u2 t3) t0)) (\lambda (t0: T).(pr0 
27344 (THead k0 u3 t5) t0))))) (\lambda (H11: (eq T t0 t4)).(eq_ind T t4 (\lambda 
27345 (_: T).(ex2 T (\lambda (t0: T).(pr0 (THead k0 u2 t3) t0)) (\lambda (t0: 
27346 T).(pr0 (THead k0 u3 t5) t0)))) (let H4 \def (eq_ind_r T t (\lambda (t: 
27347 T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall 
27348 (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
27349 T).(pr0 t2 t0)))))))))) H (THead k0 u0 t4) H9) in (let H5 \def (eq_ind T t0 
27350 (\lambda (t: T).(pr0 t t3)) H8 t4 H11) in (let H6 \def (eq_ind T u1 (\lambda 
27351 (t: T).(pr0 t u2)) H7 u0 H10) in (ex2_ind T (\lambda (t: T).(pr0 u2 t)) 
27352 (\lambda (t: T).(pr0 u3 t)) (ex2 T (\lambda (t: T).(pr0 (THead k0 u2 t3) t)) 
27353 (\lambda (t: T).(pr0 (THead k0 u3 t5) t))) (\lambda (x: T).(\lambda (H7: (pr0 
27354 u2 x)).(\lambda (H8: (pr0 u3 x)).(ex2_ind T (\lambda (t: T).(pr0 t3 t)) 
27355 (\lambda (t: T).(pr0 t5 t)) (ex2 T (\lambda (t: T).(pr0 (THead k0 u2 t3) t)) 
27356 (\lambda (t: T).(pr0 (THead k0 u3 t5) t))) (\lambda (x0: T).(\lambda (H9: 
27357 (pr0 t3 x0)).(\lambda (H12: (pr0 t5 x0)).(ex_intro2 T (\lambda (t: T).(pr0 
27358 (THead k0 u2 t3) t)) (\lambda (t: T).(pr0 (THead k0 u3 t5) t)) (THead k0 x 
27359 x0) (pr0_comp u2 x H7 t3 x0 H9 k0) (pr0_comp u3 x H8 t5 x0 H12 k0))))) (H4 t4 
27360 (tlt_head_dx k0 u0 t4) t3 H5 t5 H13))))) (H4 u0 (tlt_head_sx k0 u0 t4) u2 H6 
27361 u3 H12))))) t0 (sym_eq T t0 t4 H11))) u1 (sym_eq T u1 u0 H10))) k (sym_eq K k 
27362 k0 H3))) H2)) H1)))]) in (H1 (refl_equal T (THead k0 u0 t4))))))) t2 H11)) t 
27363 H9 H10 H6 H7))) | (pr0_beta u v1 v2 H6 t4 t5 H7) \Rightarrow (\lambda (H9: 
27364 (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u t4)) t)).(\lambda (H10: (eq 
27365 T (THead (Bind Abbr) v2 t5) t2)).(eq_ind T (THead (Flat Appl) v1 (THead (Bind 
27366 Abst) u t4)) (\lambda (_: T).((eq T (THead (Bind Abbr) v2 t5) t2) \to ((pr0 
27367 v1 v2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead k u2 t3) t0)) 
27368 (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda (H11: (eq T (THead (Bind Abbr) v2 
27369 t5) t2)).(eq_ind T (THead (Bind Abbr) v2 t5) (\lambda (t: T).((pr0 v1 v2) \to 
27370 ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead k u2 t3) t0)) (\lambda 
27371 (t0: T).(pr0 t t0)))))) (\lambda (H12: (pr0 v1 v2)).(\lambda (H13: (pr0 t4 
27372 t5)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead k u1 t0) t)) H4 
27373 (THead (Flat Appl) v1 (THead (Bind Abst) u t4)) H9) in (let H1 \def (match H0 
27374 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Flat Appl) 
27375 v1 (THead (Bind Abst) u t4))) \to (ex2 T (\lambda (t0: T).(pr0 (THead k u2 
27376 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t5) t0)))))) with 
27377 [refl_equal \Rightarrow (\lambda (H0: (eq T (THead k u1 t0) (THead (Flat 
27378 Appl) v1 (THead (Bind Abst) u t4)))).(let H1 \def (f_equal T T (\lambda (e: 
27379 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef 
27380 _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead k u1 t0) (THead 
27381 (Flat Appl) v1 (THead (Bind Abst) u t4)) H0) in ((let H2 \def (f_equal T T 
27382 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
27383 \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t _) \Rightarrow t])) 
27384 (THead k u1 t0) (THead (Flat Appl) v1 (THead (Bind Abst) u t4)) H0) in ((let 
27385 H3 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) with 
27386 [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
27387 \Rightarrow k])) (THead k u1 t0) (THead (Flat Appl) v1 (THead (Bind Abst) u 
27388 t4)) H0) in (eq_ind K (Flat Appl) (\lambda (k: K).((eq T u1 v1) \to ((eq T t0 
27389 (THead (Bind Abst) u t4)) \to (ex2 T (\lambda (t: T).(pr0 (THead k u2 t3) t)) 
27390 (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t5) t)))))) (\lambda (H10: (eq T 
27391 u1 v1)).(eq_ind T v1 (\lambda (_: T).((eq T t0 (THead (Bind Abst) u t4)) \to 
27392 (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t3) t0)) (\lambda (t0: 
27393 T).(pr0 (THead (Bind Abbr) v2 t5) t0))))) (\lambda (H11: (eq T t0 (THead 
27394 (Bind Abst) u t4))).(eq_ind T (THead (Bind Abst) u t4) (\lambda (_: T).(ex2 T 
27395 (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t3) t0)) (\lambda (t0: T).(pr0 
27396 (THead (Bind Abbr) v2 t5) t0)))) (let H4 \def (eq_ind_r T t (\lambda (t: 
27397 T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall 
27398 (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
27399 T).(pr0 t2 t0)))))))))) H (THead (Flat Appl) v1 (THead (Bind Abst) u t4)) H9) 
27400 in (let H5 \def (eq_ind T t0 (\lambda (t: T).(pr0 t t3)) H8 (THead (Bind 
27401 Abst) u t4) H11) in (let H6 \def (match H5 return (\lambda (t: T).(\lambda 
27402 (t0: T).(\lambda (_: (pr0 t t0)).((eq T t (THead (Bind Abst) u t4)) \to ((eq 
27403 T t0 t3) \to (ex2 T (\lambda (t1: T).(pr0 (THead (Flat Appl) u2 t3) t1)) 
27404 (\lambda (t1: T).(pr0 (THead (Bind Abbr) v2 t5) t1)))))))) with [(pr0_refl t) 
27405 \Rightarrow (\lambda (H0: (eq T t (THead (Bind Abst) u t4))).(\lambda (H5: 
27406 (eq T t t3)).(eq_ind T (THead (Bind Abst) u t4) (\lambda (t0: T).((eq T t0 
27407 t3) \to (ex2 T (\lambda (t1: T).(pr0 (THead (Flat Appl) u2 t3) t1)) (\lambda 
27408 (t1: T).(pr0 (THead (Bind Abbr) v2 t5) t1))))) (\lambda (H6: (eq T (THead 
27409 (Bind Abst) u t4) t3)).(eq_ind T (THead (Bind Abst) u t4) (\lambda (t0: 
27410 T).(ex2 T (\lambda (t1: T).(pr0 (THead (Flat Appl) u2 t0) t1)) (\lambda (t1: 
27411 T).(pr0 (THead (Bind Abbr) v2 t5) t1)))) (let H1 \def (eq_ind T u1 (\lambda 
27412 (t: T).(pr0 t u2)) H7 v1 H10) in (ex2_ind T (\lambda (t0: T).(pr0 u2 t0)) 
27413 (\lambda (t0: T).(pr0 v2 t0)) (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) 
27414 u2 (THead (Bind Abst) u t4)) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 
27415 t5) t0))) (\lambda (x: T).(\lambda (H2: (pr0 u2 x)).(\lambda (H3: (pr0 v2 
27416 x)).(ex_intro2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 (THead (Bind 
27417 Abst) u t4)) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t5) t0)) (THead 
27418 (Bind Abbr) x t5) (pr0_beta u u2 x H2 t4 t5 H13) (pr0_comp v2 x H3 t5 t5 
27419 (pr0_refl t5) (Bind Abbr)))))) (H4 v1 (tlt_head_sx (Flat Appl) v1 (THead 
27420 (Bind Abst) u t4)) u2 H1 v2 H12))) t3 H6)) t (sym_eq T t (THead (Bind Abst) u 
27421 t4) H0) H5))) | (pr0_comp u0 u3 H0 t1 t2 H4 k0) \Rightarrow (\lambda (H5: (eq 
27422 T (THead k0 u0 t1) (THead (Bind Abst) u t4))).(\lambda (H8: (eq T (THead k0 
27423 u3 t2) t3)).((let H1 \def (f_equal T T (\lambda (e: T).(match e return 
27424 (\lambda (_: T).T) with [(TSort _) \Rightarrow t1 | (TLRef _) \Rightarrow t1 
27425 | (THead _ _ t) \Rightarrow t])) (THead k0 u0 t1) (THead (Bind Abst) u t4) 
27426 H5) in ((let H2 \def (f_equal T T (\lambda (e: T).(match e return (\lambda 
27427 (_: T).T) with [(TSort _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead 
27428 _ t _) \Rightarrow t])) (THead k0 u0 t1) (THead (Bind Abst) u t4) H5) in 
27429 ((let H3 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) 
27430 with [(TSort _) \Rightarrow k0 | (TLRef _) \Rightarrow k0 | (THead k _ _) 
27431 \Rightarrow k])) (THead k0 u0 t1) (THead (Bind Abst) u t4) H5) in (eq_ind K 
27432 (Bind Abst) (\lambda (k: K).((eq T u0 u) \to ((eq T t1 t4) \to ((eq T (THead 
27433 k u3 t2) t3) \to ((pr0 u0 u3) \to ((pr0 t1 t2) \to (ex2 T (\lambda (t: 
27434 T).(pr0 (THead (Flat Appl) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) 
27435 v2 t5) t))))))))) (\lambda (H6: (eq T u0 u)).(eq_ind T u (\lambda (t: T).((eq 
27436 T t1 t4) \to ((eq T (THead (Bind Abst) u3 t2) t3) \to ((pr0 t u3) \to ((pr0 
27437 t1 t2) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t3) t0)) 
27438 (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t5) t0)))))))) (\lambda (H9: (eq 
27439 T t1 t4)).(eq_ind T t4 (\lambda (t: T).((eq T (THead (Bind Abst) u3 t2) t3) 
27440 \to ((pr0 u u3) \to ((pr0 t t2) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Flat 
27441 Appl) u2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t5) t0))))))) 
27442 (\lambda (H11: (eq T (THead (Bind Abst) u3 t2) t3)).(eq_ind T (THead (Bind 
27443 Abst) u3 t2) (\lambda (t: T).((pr0 u u3) \to ((pr0 t4 t2) \to (ex2 T (\lambda 
27444 (t0: T).(pr0 (THead (Flat Appl) u2 t) t0)) (\lambda (t0: T).(pr0 (THead (Bind 
27445 Abbr) v2 t5) t0)))))) (\lambda (_: (pr0 u u3)).(\lambda (H15: (pr0 t4 
27446 t2)).(let H7 \def (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) H7 v1 H10) in 
27447 (ex2_ind T (\lambda (t: T).(pr0 u2 t)) (\lambda (t: T).(pr0 v2 t)) (ex2 T 
27448 (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead (Bind Abst) u3 t2)) t)) 
27449 (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t5) t))) (\lambda (x: T).(\lambda 
27450 (H10: (pr0 u2 x)).(\lambda (H12: (pr0 v2 x)).(ex2_ind T (\lambda (t: T).(pr0 
27451 t2 t)) (\lambda (t: T).(pr0 t5 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Flat 
27452 Appl) u2 (THead (Bind Abst) u3 t2)) t)) (\lambda (t: T).(pr0 (THead (Bind 
27453 Abbr) v2 t5) t))) (\lambda (x0: T).(\lambda (H13: (pr0 t2 x0)).(\lambda (H16: 
27454 (pr0 t5 x0)).(ex_intro2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead 
27455 (Bind Abst) u3 t2)) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t5) t)) 
27456 (THead (Bind Abbr) x x0) (pr0_beta u3 u2 x H10 t2 x0 H13) (pr0_comp v2 x H12 
27457 t5 x0 H16 (Bind Abbr)))))) (H4 t4 (tlt_trans (THead (Bind Abst) u t4) t4 
27458 (THead (Flat Appl) v1 (THead (Bind Abst) u t4)) (tlt_head_dx (Bind Abst) u 
27459 t4) (tlt_head_dx (Flat Appl) v1 (THead (Bind Abst) u t4))) t2 H15 t5 H13))))) 
27460 (H4 v1 (tlt_head_sx (Flat Appl) v1 (THead (Bind Abst) u t4)) u2 H7 v2 
27461 H12))))) t3 H11)) t1 (sym_eq T t1 t4 H9))) u0 (sym_eq T u0 u H6))) k0 (sym_eq 
27462 K k0 (Bind Abst) H3))) H2)) H1)) H8 H0 H4))) | (pr0_beta u0 v0 v3 H0 t1 t2 
27463 H4) \Rightarrow (\lambda (H5: (eq T (THead (Flat Appl) v0 (THead (Bind Abst) 
27464 u0 t1)) (THead (Bind Abst) u t4))).(\lambda (H8: (eq T (THead (Bind Abbr) v3 
27465 t2) t3)).((let H1 \def (eq_ind T (THead (Flat Appl) v0 (THead (Bind Abst) u0 
27466 t1)) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
27467 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
27468 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
27469 (Flat _) \Rightarrow True])])) I (THead (Bind Abst) u t4) H5) in (False_ind 
27470 ((eq T (THead (Bind Abbr) v3 t2) t3) \to ((pr0 v0 v3) \to ((pr0 t1 t2) \to 
27471 (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 t3) t)) (\lambda (t: 
27472 T).(pr0 (THead (Bind Abbr) v2 t5) t)))))) H1)) H8 H0 H4))) | (pr0_upsilon b 
27473 H0 v0 v3 H4 u0 u3 H5 t1 t2 H8) \Rightarrow (\lambda (H11: (eq T (THead (Flat 
27474 Appl) v0 (THead (Bind b) u0 t1)) (THead (Bind Abst) u t4))).(\lambda (H12: 
27475 (eq T (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v3) t2)) t3)).((let 
27476 H1 \def (eq_ind T (THead (Flat Appl) v0 (THead (Bind b) u0 t1)) (\lambda (e: 
27477 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
27478 (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k return 
27479 (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
27480 True])])) I (THead (Bind Abst) u t4) H11) in (False_ind ((eq T (THead (Bind 
27481 b) u3 (THead (Flat Appl) (lift (S O) O v3) t2)) t3) \to ((not (eq B b Abst)) 
27482 \to ((pr0 v0 v3) \to ((pr0 u0 u3) \to ((pr0 t1 t2) \to (ex2 T (\lambda (t: 
27483 T).(pr0 (THead (Flat Appl) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) 
27484 v2 t5) t)))))))) H1)) H12 H0 H4 H5 H8))) | (pr0_delta u0 u3 H0 t1 t2 H4 w H5) 
27485 \Rightarrow (\lambda (H8: (eq T (THead (Bind Abbr) u0 t1) (THead (Bind Abst) 
27486 u t4))).(\lambda (H11: (eq T (THead (Bind Abbr) u3 w) t3)).((let H1 \def 
27487 (eq_ind T (THead (Bind Abbr) u0 t1) (\lambda (e: T).(match e return (\lambda 
27488 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
27489 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
27490 b) \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow 
27491 True | Abst \Rightarrow False | Void \Rightarrow False]) | (Flat _) 
27492 \Rightarrow False])])) I (THead (Bind Abst) u t4) H8) in (False_ind ((eq T 
27493 (THead (Bind Abbr) u3 w) t3) \to ((pr0 u0 u3) \to ((pr0 t1 t2) \to ((subst0 O 
27494 u3 t2 w) \to (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 t3) t)) 
27495 (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t5) t))))))) H1)) H11 H0 H4 H5))) 
27496 | (pr0_zeta b H0 t1 t2 H4 u0) \Rightarrow (\lambda (H5: (eq T (THead (Bind b) 
27497 u0 (lift (S O) O t1)) (THead (Bind Abst) u t4))).(\lambda (H8: (eq T t2 
27498 t3)).((let H1 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
27499 T).T) with [(TSort _) \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: 
27500 nat) (t: T) on t: T \def (match t with [(TSort n) \Rightarrow (TSort n) | 
27501 (TLRef i) \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | 
27502 false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow (THead k (lref_map f 
27503 d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda (x: nat).(plus x (S 
27504 O))) O t1) | (TLRef _) \Rightarrow ((let rec lref_map (f: ((nat \to nat))) 
27505 (d: nat) (t: T) on t: T \def (match t with [(TSort n) \Rightarrow (TSort n) | 
27506 (TLRef i) \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | 
27507 false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow (THead k (lref_map f 
27508 d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda (x: nat).(plus x (S 
27509 O))) O t1) | (THead _ _ t) \Rightarrow t])) (THead (Bind b) u0 (lift (S O) O 
27510 t1)) (THead (Bind Abst) u t4) H5) in ((let H2 \def (f_equal T T (\lambda (e: 
27511 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow u0 | (TLRef 
27512 _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) (THead (Bind b) u0 (lift 
27513 (S O) O t1)) (THead (Bind Abst) u t4) H5) in ((let H3 \def (f_equal T B 
27514 (\lambda (e: T).(match e return (\lambda (_: T).B) with [(TSort _) 
27515 \Rightarrow b | (TLRef _) \Rightarrow b | (THead k _ _) \Rightarrow (match k 
27516 return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
27517 b])])) (THead (Bind b) u0 (lift (S O) O t1)) (THead (Bind Abst) u t4) H5) in 
27518 (eq_ind B Abst (\lambda (b0: B).((eq T u0 u) \to ((eq T (lift (S O) O t1) t4) 
27519 \to ((eq T t2 t3) \to ((not (eq B b0 Abst)) \to ((pr0 t1 t2) \to (ex2 T 
27520 (\lambda (t: T).(pr0 (THead (Flat Appl) u2 t3) t)) (\lambda (t: T).(pr0 
27521 (THead (Bind Abbr) v2 t5) t))))))))) (\lambda (H6: (eq T u0 u)).(eq_ind T u 
27522 (\lambda (_: T).((eq T (lift (S O) O t1) t4) \to ((eq T t2 t3) \to ((not (eq 
27523 B Abst Abst)) \to ((pr0 t1 t2) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Flat 
27524 Appl) u2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t5) t0)))))))) 
27525 (\lambda (H9: (eq T (lift (S O) O t1) t4)).(eq_ind T (lift (S O) O t1) 
27526 (\lambda (_: T).((eq T t2 t3) \to ((not (eq B Abst Abst)) \to ((pr0 t1 t2) 
27527 \to (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t3) t0)) (\lambda (t0: 
27528 T).(pr0 (THead (Bind Abbr) v2 t5) t0))))))) (\lambda (H7: (eq T t2 
27529 t3)).(eq_ind T t3 (\lambda (t: T).((not (eq B Abst Abst)) \to ((pr0 t1 t) \to 
27530 (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t3) t0)) (\lambda (t0: 
27531 T).(pr0 (THead (Bind Abbr) v2 t5) t0)))))) (\lambda (H11: (not (eq B Abst 
27532 Abst))).(\lambda (_: (pr0 t1 t3)).(let H10 \def (match (H11 (refl_equal B 
27533 Abst)) return (\lambda (_: False).(ex2 T (\lambda (t: T).(pr0 (THead (Flat 
27534 Appl) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t5) t)))) with 
27535 []) in H10))) t2 (sym_eq T t2 t3 H7))) t4 H9)) u0 (sym_eq T u0 u H6))) b 
27536 (sym_eq B b Abst H3))) H2)) H1)) H8 H0 H4))) | (pr0_epsilon t1 t2 H0 u0) 
27537 \Rightarrow (\lambda (H4: (eq T (THead (Flat Cast) u0 t1) (THead (Bind Abst) 
27538 u t4))).(\lambda (H5: (eq T t2 t3)).((let H1 \def (eq_ind T (THead (Flat 
27539 Cast) u0 t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
27540 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
27541 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
27542 False | (Flat _) \Rightarrow True])])) I (THead (Bind Abst) u t4) H4) in 
27543 (False_ind ((eq T t2 t3) \to ((pr0 t1 t2) \to (ex2 T (\lambda (t: T).(pr0 
27544 (THead (Flat Appl) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t5) 
27545 t))))) H1)) H5 H0)))]) in (H6 (refl_equal T (THead (Bind Abst) u t4)) 
27546 (refl_equal T t3))))) t0 (sym_eq T t0 (THead (Bind Abst) u t4) H11))) u1 
27547 (sym_eq T u1 v1 H10))) k (sym_eq K k (Flat Appl) H3))) H2)) H1)))]) in (H1 
27548 (refl_equal T (THead (Flat Appl) v1 (THead (Bind Abst) u t4)))))))) t2 H11)) 
27549 t H9 H10 H6 H7))) | (pr0_upsilon b H6 v1 v2 H7 u0 u3 H8 t4 t5 H9) \Rightarrow 
27550 (\lambda (H10: (eq T (THead (Flat Appl) v1 (THead (Bind b) u0 t4)) 
27551 t)).(\lambda (H11: (eq T (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O 
27552 v2) t5)) t2)).(eq_ind T (THead (Flat Appl) v1 (THead (Bind b) u0 t4)) 
27553 (\lambda (_: T).((eq T (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O 
27554 v2) t5)) t2) \to ((not (eq B b Abst)) \to ((pr0 v1 v2) \to ((pr0 u0 u3) \to 
27555 ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead k u2 t3) t0)) (\lambda 
27556 (t0: T).(pr0 t2 t0))))))))) (\lambda (H12: (eq T (THead (Bind b) u3 (THead 
27557 (Flat Appl) (lift (S O) O v2) t5)) t2)).(eq_ind T (THead (Bind b) u3 (THead 
27558 (Flat Appl) (lift (S O) O v2) t5)) (\lambda (t: T).((not (eq B b Abst)) \to 
27559 ((pr0 v1 v2) \to ((pr0 u0 u3) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: 
27560 T).(pr0 (THead k u2 t3) t0)) (\lambda (t0: T).(pr0 t t0)))))))) (\lambda 
27561 (H13: (not (eq B b Abst))).(\lambda (H14: (pr0 v1 v2)).(\lambda (H15: (pr0 u0 
27562 u3)).(\lambda (H16: (pr0 t4 t5)).(let H0 \def (eq_ind_r T t (\lambda (t: 
27563 T).(eq T (THead k u1 t0) t)) H4 (THead (Flat Appl) v1 (THead (Bind b) u0 t4)) 
27564 H10) in (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? 
27565 t)).((eq T t (THead (Flat Appl) v1 (THead (Bind b) u0 t4))) \to (ex2 T 
27566 (\lambda (t0: T).(pr0 (THead k u2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind 
27567 b) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t0)))))) with [refl_equal 
27568 \Rightarrow (\lambda (H0: (eq T (THead k u1 t0) (THead (Flat Appl) v1 (THead 
27569 (Bind b) u0 t4)))).(let H1 \def (f_equal T T (\lambda (e: T).(match e return 
27570 (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 
27571 | (THead _ _ t) \Rightarrow t])) (THead k u1 t0) (THead (Flat Appl) v1 (THead 
27572 (Bind b) u0 t4)) H0) in ((let H2 \def (f_equal T T (\lambda (e: T).(match e 
27573 return (\lambda (_: T).T) with [(TSort _) \Rightarrow u1 | (TLRef _) 
27574 \Rightarrow u1 | (THead _ t _) \Rightarrow t])) (THead k u1 t0) (THead (Flat 
27575 Appl) v1 (THead (Bind b) u0 t4)) H0) in ((let H3 \def (f_equal T K (\lambda 
27576 (e: T).(match e return (\lambda (_: T).K) with [(TSort _) \Rightarrow k | 
27577 (TLRef _) \Rightarrow k | (THead k _ _) \Rightarrow k])) (THead k u1 t0) 
27578 (THead (Flat Appl) v1 (THead (Bind b) u0 t4)) H0) in (eq_ind K (Flat Appl) 
27579 (\lambda (k: K).((eq T u1 v1) \to ((eq T t0 (THead (Bind b) u0 t4)) \to (ex2 
27580 T (\lambda (t: T).(pr0 (THead k u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind 
27581 b) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t)))))) (\lambda (H11: (eq T 
27582 u1 v1)).(eq_ind T v1 (\lambda (_: T).((eq T t0 (THead (Bind b) u0 t4)) \to 
27583 (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t3) t0)) (\lambda (t0: 
27584 T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t0))))) 
27585 (\lambda (H12: (eq T t0 (THead (Bind b) u0 t4))).(eq_ind T (THead (Bind b) u0 
27586 t4) (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t3) 
27587 t0)) (\lambda (t0: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) 
27588 O v2) t5)) t0)))) (let H4 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: 
27589 T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v 
27590 t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 
27591 t0)))))))))) H (THead (Flat Appl) v1 (THead (Bind b) u0 t4)) H10) in (let H5 
27592 \def (eq_ind T t0 (\lambda (t: T).(pr0 t t3)) H8 (THead (Bind b) u0 t4) H12) 
27593 in (let H6 \def (match H5 return (\lambda (t: T).(\lambda (t0: T).(\lambda 
27594 (_: (pr0 t t0)).((eq T t (THead (Bind b) u0 t4)) \to ((eq T t0 t3) \to (ex2 T 
27595 (\lambda (t1: T).(pr0 (THead (Flat Appl) u2 t3) t1)) (\lambda (t1: T).(pr0 
27596 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t1)))))))) with 
27597 [(pr0_refl t) \Rightarrow (\lambda (H0: (eq T t (THead (Bind b) u0 
27598 t4))).(\lambda (H5: (eq T t t3)).(eq_ind T (THead (Bind b) u0 t4) (\lambda 
27599 (t0: T).((eq T t0 t3) \to (ex2 T (\lambda (t1: T).(pr0 (THead (Flat Appl) u2 
27600 t3) t1)) (\lambda (t1: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S 
27601 O) O v2) t5)) t1))))) (\lambda (H6: (eq T (THead (Bind b) u0 t4) t3)).(eq_ind 
27602 T (THead (Bind b) u0 t4) (\lambda (t0: T).(ex2 T (\lambda (t1: T).(pr0 (THead 
27603 (Flat Appl) u2 t0) t1)) (\lambda (t1: T).(pr0 (THead (Bind b) u3 (THead (Flat 
27604 Appl) (lift (S O) O v2) t5)) t1)))) (let H1 \def (eq_ind T u1 (\lambda (t: 
27605 T).(pr0 t u2)) H7 v1 H11) in (ex2_ind T (\lambda (t0: T).(pr0 u2 t0)) 
27606 (\lambda (t0: T).(pr0 v2 t0)) (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) 
27607 u2 (THead (Bind b) u0 t4)) t0)) (\lambda (t0: T).(pr0 (THead (Bind b) u3 
27608 (THead (Flat Appl) (lift (S O) O v2) t5)) t0))) (\lambda (x: T).(\lambda (H2: 
27609 (pr0 u2 x)).(\lambda (H3: (pr0 v2 x)).(pr0_confluence__pr0_cong_upsilon_refl 
27610 b H13 u0 u3 H15 t4 t5 H16 u2 v2 x H2 H3)))) (H4 v1 (tlt_head_sx (Flat Appl) 
27611 v1 (THead (Bind b) u0 t4)) u2 H1 v2 H14))) t3 H6)) t (sym_eq T t (THead (Bind 
27612 b) u0 t4) H0) H5))) | (pr0_comp u4 u5 H0 t1 t2 H4 k0) \Rightarrow (\lambda 
27613 (H5: (eq T (THead k0 u4 t1) (THead (Bind b) u0 t4))).(\lambda (H10: (eq T 
27614 (THead k0 u5 t2) t3)).((let H1 \def (f_equal T T (\lambda (e: T).(match e 
27615 return (\lambda (_: T).T) with [(TSort _) \Rightarrow t1 | (TLRef _) 
27616 \Rightarrow t1 | (THead _ _ t) \Rightarrow t])) (THead k0 u4 t1) (THead (Bind 
27617 b) u0 t4) H5) in ((let H2 \def (f_equal T T (\lambda (e: T).(match e return 
27618 (\lambda (_: T).T) with [(TSort _) \Rightarrow u4 | (TLRef _) \Rightarrow u4 
27619 | (THead _ t _) \Rightarrow t])) (THead k0 u4 t1) (THead (Bind b) u0 t4) H5) 
27620 in ((let H3 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: 
27621 T).K) with [(TSort _) \Rightarrow k0 | (TLRef _) \Rightarrow k0 | (THead k _ 
27622 _) \Rightarrow k])) (THead k0 u4 t1) (THead (Bind b) u0 t4) H5) in (eq_ind K 
27623 (Bind b) (\lambda (k: K).((eq T u4 u0) \to ((eq T t1 t4) \to ((eq T (THead k 
27624 u5 t2) t3) \to ((pr0 u4 u5) \to ((pr0 t1 t2) \to (ex2 T (\lambda (t: T).(pr0 
27625 (THead (Flat Appl) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead 
27626 (Flat Appl) (lift (S O) O v2) t5)) t))))))))) (\lambda (H6: (eq T u4 
27627 u0)).(eq_ind T u0 (\lambda (t: T).((eq T t1 t4) \to ((eq T (THead (Bind b) u5 
27628 t2) t3) \to ((pr0 t u5) \to ((pr0 t1 t2) \to (ex2 T (\lambda (t0: T).(pr0 
27629 (THead (Flat Appl) u2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind b) u3 
27630 (THead (Flat Appl) (lift (S O) O v2) t5)) t0)))))))) (\lambda (H12: (eq T t1 
27631 t4)).(eq_ind T t4 (\lambda (t: T).((eq T (THead (Bind b) u5 t2) t3) \to ((pr0 
27632 u0 u5) \to ((pr0 t t2) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 
27633 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S 
27634 O) O v2) t5)) t0))))))) (\lambda (H8: (eq T (THead (Bind b) u5 t2) 
27635 t3)).(eq_ind T (THead (Bind b) u5 t2) (\lambda (t: T).((pr0 u0 u5) \to ((pr0 
27636 t4 t2) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t) t0)) 
27637 (\lambda (t0: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) 
27638 t5)) t0)))))) (\lambda (H17: (pr0 u0 u5)).(\lambda (H18: (pr0 t4 t2)).(let H7 
27639 \def (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) H7 v1 H11) in (ex2_ind T 
27640 (\lambda (t: T).(pr0 u2 t)) (\lambda (t: T).(pr0 v2 t)) (ex2 T (\lambda (t: 
27641 T).(pr0 (THead (Flat Appl) u2 (THead (Bind b) u5 t2)) t)) (\lambda (t: 
27642 T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t))) 
27643 (\lambda (x: T).(\lambda (H9: (pr0 u2 x)).(\lambda (H11: (pr0 v2 x)).(ex2_ind 
27644 T (\lambda (t: T).(pr0 t2 t)) (\lambda (t: T).(pr0 t5 t)) (ex2 T (\lambda (t: 
27645 T).(pr0 (THead (Flat Appl) u2 (THead (Bind b) u5 t2)) t)) (\lambda (t: 
27646 T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t))) 
27647 (\lambda (x0: T).(\lambda (H14: (pr0 t2 x0)).(\lambda (H16: (pr0 t5 
27648 x0)).(ex2_ind T (\lambda (t: T).(pr0 u5 t)) (\lambda (t: T).(pr0 u3 t)) (ex2 
27649 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead (Bind b) u5 t2)) t)) 
27650 (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) 
27651 t5)) t))) (\lambda (x1: T).(\lambda (H15: (pr0 u5 x1)).(\lambda (H19: (pr0 u3 
27652 x1)).(pr0_confluence__pr0_cong_upsilon_cong b H13 u2 v2 x H9 H11 t2 t5 x0 H14 
27653 H16 u5 u3 x1 H15 H19)))) (H4 u0 (tlt_trans (THead (Bind b) u0 t4) u0 (THead 
27654 (Flat Appl) v1 (THead (Bind b) u0 t4)) (tlt_head_sx (Bind b) u0 t4) 
27655 (tlt_head_dx (Flat Appl) v1 (THead (Bind b) u0 t4))) u5 H17 u3 H15))))) (H4 
27656 t4 (tlt_trans (THead (Bind b) u0 t4) t4 (THead (Flat Appl) v1 (THead (Bind b) 
27657 u0 t4)) (tlt_head_dx (Bind b) u0 t4) (tlt_head_dx (Flat Appl) v1 (THead (Bind 
27658 b) u0 t4))) t2 H18 t5 H16))))) (H4 v1 (tlt_head_sx (Flat Appl) v1 (THead 
27659 (Bind b) u0 t4)) u2 H7 v2 H14))))) t3 H8)) t1 (sym_eq T t1 t4 H12))) u4 
27660 (sym_eq T u4 u0 H6))) k0 (sym_eq K k0 (Bind b) H3))) H2)) H1)) H10 H0 H4))) | 
27661 (pr0_beta u v0 v3 H0 t1 t2 H4) \Rightarrow (\lambda (H5: (eq T (THead (Flat 
27662 Appl) v0 (THead (Bind Abst) u t1)) (THead (Bind b) u0 t4))).(\lambda (H10: 
27663 (eq T (THead (Bind Abbr) v3 t2) t3)).((let H1 \def (eq_ind T (THead (Flat 
27664 Appl) v0 (THead (Bind Abst) u t1)) (\lambda (e: T).(match e return (\lambda 
27665 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
27666 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
27667 _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u0 
27668 t4) H5) in (False_ind ((eq T (THead (Bind Abbr) v3 t2) t3) \to ((pr0 v0 v3) 
27669 \to ((pr0 t1 t2) \to (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 t3) 
27670 t)) (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O 
27671 v2) t5)) t)))))) H1)) H10 H0 H4))) | (pr0_upsilon b0 H0 v0 v3 H4 u4 u5 H5 t1 
27672 t2 H10) \Rightarrow (\lambda (H13: (eq T (THead (Flat Appl) v0 (THead (Bind 
27673 b0) u4 t1)) (THead (Bind b) u0 t4))).(\lambda (H14: (eq T (THead (Bind b0) u5 
27674 (THead (Flat Appl) (lift (S O) O v3) t2)) t3)).((let H1 \def (eq_ind T (THead 
27675 (Flat Appl) v0 (THead (Bind b0) u4 t1)) (\lambda (e: T).(match e return 
27676 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
27677 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
27678 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
27679 (THead (Bind b) u0 t4) H13) in (False_ind ((eq T (THead (Bind b0) u5 (THead 
27680 (Flat Appl) (lift (S O) O v3) t2)) t3) \to ((not (eq B b0 Abst)) \to ((pr0 v0 
27681 v3) \to ((pr0 u4 u5) \to ((pr0 t1 t2) \to (ex2 T (\lambda (t: T).(pr0 (THead 
27682 (Flat Appl) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead (Flat 
27683 Appl) (lift (S O) O v2) t5)) t)))))))) H1)) H14 H0 H4 H5 H10))) | (pr0_delta 
27684 u4 u5 H0 t1 t2 H4 w H5) \Rightarrow (\lambda (H10: (eq T (THead (Bind Abbr) 
27685 u4 t1) (THead (Bind b) u0 t4))).(\lambda (H17: (eq T (THead (Bind Abbr) u5 w) 
27686 t3)).((let H1 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
27687 T).T) with [(TSort _) \Rightarrow t1 | (TLRef _) \Rightarrow t1 | (THead _ _ 
27688 t) \Rightarrow t])) (THead (Bind Abbr) u4 t1) (THead (Bind b) u0 t4) H10) in 
27689 ((let H2 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) 
27690 with [(TSort _) \Rightarrow u4 | (TLRef _) \Rightarrow u4 | (THead _ t _) 
27691 \Rightarrow t])) (THead (Bind Abbr) u4 t1) (THead (Bind b) u0 t4) H10) in 
27692 ((let H3 \def (f_equal T B (\lambda (e: T).(match e return (\lambda (_: T).B) 
27693 with [(TSort _) \Rightarrow Abbr | (TLRef _) \Rightarrow Abbr | (THead k _ _) 
27694 \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | 
27695 (Flat _) \Rightarrow Abbr])])) (THead (Bind Abbr) u4 t1) (THead (Bind b) u0 
27696 t4) H10) in (eq_ind B Abbr (\lambda (b: B).((eq T u4 u0) \to ((eq T t1 t4) 
27697 \to ((eq T (THead (Bind Abbr) u5 w) t3) \to ((pr0 u4 u5) \to ((pr0 t1 t2) \to 
27698 ((subst0 O u5 t2 w) \to (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 t3) 
27699 t)) (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O 
27700 v2) t5)) t)))))))))) (\lambda (H6: (eq T u4 u0)).(eq_ind T u0 (\lambda (t: 
27701 T).((eq T t1 t4) \to ((eq T (THead (Bind Abbr) u5 w) t3) \to ((pr0 t u5) \to 
27702 ((pr0 t1 t2) \to ((subst0 O u5 t2 w) \to (ex2 T (\lambda (t0: T).(pr0 (THead 
27703 (Flat Appl) u2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) u3 (THead 
27704 (Flat Appl) (lift (S O) O v2) t5)) t0))))))))) (\lambda (H8: (eq T t1 
27705 t4)).(eq_ind T t4 (\lambda (t: T).((eq T (THead (Bind Abbr) u5 w) t3) \to 
27706 ((pr0 u0 u5) \to ((pr0 t t2) \to ((subst0 O u5 t2 w) \to (ex2 T (\lambda (t0: 
27707 T).(pr0 (THead (Flat Appl) u2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind 
27708 Abbr) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t0)))))))) (\lambda (H18: 
27709 (eq T (THead (Bind Abbr) u5 w) t3)).(eq_ind T (THead (Bind Abbr) u5 w) 
27710 (\lambda (t: T).((pr0 u0 u5) \to ((pr0 t4 t2) \to ((subst0 O u5 t2 w) \to 
27711 (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t) t0)) (\lambda (t0: 
27712 T).(pr0 (THead (Bind Abbr) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) 
27713 t0))))))) (\lambda (H19: (pr0 u0 u5)).(\lambda (H20: (pr0 t4 t2)).(\lambda 
27714 (H21: (subst0 O u5 t2 w)).(let H9 \def (eq_ind_r B b (\lambda (b: B).(\forall 
27715 (v: T).((tlt v (THead (Flat Appl) v1 (THead (Bind b) u0 t4))) \to (\forall 
27716 (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t: 
27717 T).(pr0 t1 t)) (\lambda (t: T).(pr0 t2 t)))))))))) H4 Abbr H3) in (let H12 
27718 \def (eq_ind_r B b (\lambda (b: B).(eq T t0 (THead (Bind b) u0 t4))) H12 Abbr 
27719 H3) in (let H13 \def (eq_ind_r B b (\lambda (b: B).(not (eq B b Abst))) H13 
27720 Abbr H3) in (let H7 \def (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) H7 v1 H11) 
27721 in (ex2_ind T (\lambda (t: T).(pr0 u2 t)) (\lambda (t: T).(pr0 v2 t)) (ex2 T 
27722 (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead (Bind Abbr) u5 w)) t)) 
27723 (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 (THead (Flat Appl) (lift (S O) O 
27724 v2) t5)) t))) (\lambda (x: T).(\lambda (H11: (pr0 u2 x)).(\lambda (H14: (pr0 
27725 v2 x)).(ex2_ind T (\lambda (t: T).(pr0 t2 t)) (\lambda (t: T).(pr0 t5 t)) 
27726 (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead (Bind Abbr) u5 w)) 
27727 t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 (THead (Flat Appl) (lift (S O) 
27728 O v2) t5)) t))) (\lambda (x0: T).(\lambda (H16: (pr0 t2 x0)).(\lambda (H22: 
27729 (pr0 t5 x0)).(ex2_ind T (\lambda (t: T).(pr0 u5 t)) (\lambda (t: T).(pr0 u3 
27730 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead (Bind Abbr) u5 
27731 w)) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 (THead (Flat Appl) (lift 
27732 (S O) O v2) t5)) t))) (\lambda (x1: T).(\lambda (H15: (pr0 u5 x1)).(\lambda 
27733 (H23: (pr0 u3 x1)).(pr0_confluence__pr0_cong_upsilon_delta H13 u5 t2 w H21 u2 
27734 v2 x H11 H14 t5 x0 H16 H22 u3 x1 H15 H23)))) (H9 u0 (tlt_trans (THead (Bind 
27735 Abbr) u0 t4) u0 (THead (Flat Appl) v1 (THead (Bind Abbr) u0 t4)) (tlt_head_sx 
27736 (Bind Abbr) u0 t4) (tlt_head_dx (Flat Appl) v1 (THead (Bind Abbr) u0 t4))) u5 
27737 H19 u3 H15))))) (H9 t4 (tlt_trans (THead (Bind Abbr) u0 t4) t4 (THead (Flat 
27738 Appl) v1 (THead (Bind Abbr) u0 t4)) (tlt_head_dx (Bind Abbr) u0 t4) 
27739 (tlt_head_dx (Flat Appl) v1 (THead (Bind Abbr) u0 t4))) t2 H20 t5 H16))))) 
27740 (H9 v1 (tlt_head_sx (Flat Appl) v1 (THead (Bind Abbr) u0 t4)) u2 H7 v2 
27741 H14))))))))) t3 H18)) t1 (sym_eq T t1 t4 H8))) u4 (sym_eq T u4 u0 H6))) b 
27742 H3)) H2)) H1)) H17 H0 H4 H5))) | (pr0_zeta b0 H0 t1 t2 H4 u) \Rightarrow 
27743 (\lambda (H5: (eq T (THead (Bind b0) u (lift (S O) O t1)) (THead (Bind b) u0 
27744 t4))).(\lambda (H10: (eq T t2 t3)).((let H1 \def (f_equal T T (\lambda (e: 
27745 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow ((let rec 
27746 lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t with 
27747 [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i 
27748 d) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) 
27749 \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) 
27750 (\lambda (x: nat).(plus x (S O))) O t1) | (TLRef _) \Rightarrow ((let rec 
27751 lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t with 
27752 [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i 
27753 d) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) 
27754 \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) 
27755 (\lambda (x: nat).(plus x (S O))) O t1) | (THead _ _ t) \Rightarrow t])) 
27756 (THead (Bind b0) u (lift (S O) O t1)) (THead (Bind b) u0 t4) H5) in ((let H2 
27757 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
27758 [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t _) 
27759 \Rightarrow t])) (THead (Bind b0) u (lift (S O) O t1)) (THead (Bind b) u0 t4) 
27760 H5) in ((let H3 \def (f_equal T B (\lambda (e: T).(match e return (\lambda 
27761 (_: T).B) with [(TSort _) \Rightarrow b0 | (TLRef _) \Rightarrow b0 | (THead 
27762 k _ _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
27763 \Rightarrow b | (Flat _) \Rightarrow b0])])) (THead (Bind b0) u (lift (S O) O 
27764 t1)) (THead (Bind b) u0 t4) H5) in (eq_ind B b (\lambda (b1: B).((eq T u u0) 
27765 \to ((eq T (lift (S O) O t1) t4) \to ((eq T t2 t3) \to ((not (eq B b1 Abst)) 
27766 \to ((pr0 t1 t2) \to (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 t3) 
27767 t)) (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O 
27768 v2) t5)) t))))))))) (\lambda (H6: (eq T u u0)).(eq_ind T u0 (\lambda (_: 
27769 T).((eq T (lift (S O) O t1) t4) \to ((eq T t2 t3) \to ((not (eq B b Abst)) 
27770 \to ((pr0 t1 t2) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t3) 
27771 t0)) (\lambda (t0: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) 
27772 O v2) t5)) t0)))))))) (\lambda (H13: (eq T (lift (S O) O t1) t4)).(eq_ind T 
27773 (lift (S O) O t1) (\lambda (_: T).((eq T t2 t3) \to ((not (eq B b Abst)) \to 
27774 ((pr0 t1 t2) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t3) t0)) 
27775 (\lambda (t0: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) 
27776 t5)) t0))))))) (\lambda (H8: (eq T t2 t3)).(eq_ind T t3 (\lambda (t: T).((not 
27777 (eq B b Abst)) \to ((pr0 t1 t) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Flat 
27778 Appl) u2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) 
27779 (lift (S O) O v2) t5)) t0)))))) (\lambda (H17: (not (eq B b Abst))).(\lambda 
27780 (H18: (pr0 t1 t3)).(let H9 \def (eq_ind_r T t4 (\lambda (t: T).(\forall (v: 
27781 T).((tlt v (THead (Flat Appl) v1 (THead (Bind b) u0 t))) \to (\forall (t1: 
27782 T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: 
27783 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H4 (lift (S O) O t1) 
27784 H13) in (let H12 \def (eq_ind_r T t4 (\lambda (t: T).(eq T t0 (THead (Bind b) 
27785 u0 t))) H12 (lift (S O) O t1) H13) in (let H16 \def (eq_ind_r T t4 (\lambda 
27786 (t: T).(pr0 t t5)) H16 (lift (S O) O t1) H13) in (ex2_ind T (\lambda (t3: 
27787 T).(eq T t5 (lift (S O) O t3))) (\lambda (t3: T).(pr0 t1 t3)) (ex2 T (\lambda 
27788 (t: T).(pr0 (THead (Flat Appl) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind 
27789 b) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t))) (\lambda (x: T).(\lambda 
27790 (H19: (eq T t5 (lift (S O) O x))).(\lambda (H20: (pr0 t1 x)).(eq_ind_r T 
27791 (lift (S O) O x) (\lambda (t: T).(ex2 T (\lambda (t0: T).(pr0 (THead (Flat 
27792 Appl) u2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) 
27793 (lift (S O) O v2) t)) t0)))) (let H7 \def (eq_ind T u1 (\lambda (t: T).(pr0 t 
27794 u2)) H7 v1 H11) in (ex2_ind T (\lambda (t: T).(pr0 u2 t)) (\lambda (t: 
27795 T).(pr0 v2 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 t3) t)) 
27796 (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) 
27797 (lift (S O) O x))) t))) (\lambda (x0: T).(\lambda (H11: (pr0 u2 x0)).(\lambda 
27798 (H14: (pr0 v2 x0)).(ex2_ind T (\lambda (t: T).(pr0 x t)) (\lambda (t: T).(pr0 
27799 t3 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Flat Appl) u2 t3) t)) (\lambda (t: 
27800 T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) (lift (S O) O 
27801 x))) t))) (\lambda (x1: T).(\lambda (H21: (pr0 x x1)).(\lambda (H22: (pr0 t3 
27802 x1)).(pr0_confluence__pr0_cong_upsilon_zeta b H17 u0 u3 H15 u2 v2 x0 H11 H14 
27803 x t3 x1 H21 H22)))) (H9 t1 (tlt_trans (THead (Bind b) u0 (lift (S O) O t1)) 
27804 t1 (THead (Flat Appl) v1 (THead (Bind b) u0 (lift (S O) O t1))) (lift_tlt_dx 
27805 (Bind b) u0 t1 (S O) O) (tlt_head_dx (Flat Appl) v1 (THead (Bind b) u0 (lift 
27806 (S O) O t1)))) x H20 t3 H18))))) (H9 v1 (tlt_head_sx (Flat Appl) v1 (THead 
27807 (Bind b) u0 (lift (S O) O t1))) u2 H7 v2 H14))) t5 H19)))) (pr0_gen_lift t1 
27808 t5 (S O) O H16))))))) t2 (sym_eq T t2 t3 H8))) t4 H13)) u (sym_eq T u u0 
27809 H6))) b0 (sym_eq B b0 b H3))) H2)) H1)) H10 H0 H4))) | (pr0_epsilon t1 t2 H0 
27810 u) \Rightarrow (\lambda (H4: (eq T (THead (Flat Cast) u t1) (THead (Bind b) 
27811 u0 t4))).(\lambda (H5: (eq T t2 t3)).((let H1 \def (eq_ind T (THead (Flat 
27812 Cast) u t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
27813 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
27814 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
27815 False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u0 t4) H4) in 
27816 (False_ind ((eq T t2 t3) \to ((pr0 t1 t2) \to (ex2 T (\lambda (t: T).(pr0 
27817 (THead (Flat Appl) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind b) u3 (THead 
27818 (Flat Appl) (lift (S O) O v2) t5)) t))))) H1)) H5 H0)))]) in (H6 (refl_equal 
27819 T (THead (Bind b) u0 t4)) (refl_equal T t3))))) t0 (sym_eq T t0 (THead (Bind 
27820 b) u0 t4) H12))) u1 (sym_eq T u1 v1 H11))) k (sym_eq K k (Flat Appl) H3))) 
27821 H2)) H1)))]) in (H1 (refl_equal T (THead (Flat Appl) v1 (THead (Bind b) u0 
27822 t4)))))))))) t2 H12)) t H10 H11 H6 H7 H8 H9))) | (pr0_delta u0 u3 H6 t4 t5 H7 
27823 w H8) \Rightarrow (\lambda (H9: (eq T (THead (Bind Abbr) u0 t4) t)).(\lambda 
27824 (H10: (eq T (THead (Bind Abbr) u3 w) t2)).(eq_ind T (THead (Bind Abbr) u0 t4) 
27825 (\lambda (_: T).((eq T (THead (Bind Abbr) u3 w) t2) \to ((pr0 u0 u3) \to 
27826 ((pr0 t4 t5) \to ((subst0 O u3 t5 w) \to (ex2 T (\lambda (t0: T).(pr0 (THead 
27827 k u2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0)))))))) (\lambda (H11: (eq T (THead 
27828 (Bind Abbr) u3 w) t2)).(eq_ind T (THead (Bind Abbr) u3 w) (\lambda (t: 
27829 T).((pr0 u0 u3) \to ((pr0 t4 t5) \to ((subst0 O u3 t5 w) \to (ex2 T (\lambda 
27830 (t0: T).(pr0 (THead k u2 t3) t0)) (\lambda (t0: T).(pr0 t t0))))))) (\lambda 
27831 (H12: (pr0 u0 u3)).(\lambda (H13: (pr0 t4 t5)).(\lambda (H14: (subst0 O u3 t5 
27832 w)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead k u1 t0) t)) H4 
27833 (THead (Bind Abbr) u0 t4) H9) in (let H1 \def (match H0 return (\lambda (t: 
27834 T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Bind Abbr) u0 t4)) \to (ex2 T 
27835 (\lambda (t0: T).(pr0 (THead k u2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind 
27836 Abbr) u3 w) t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead 
27837 k u1 t0) (THead (Bind Abbr) u0 t4))).(let H1 \def (f_equal T T (\lambda (e: 
27838 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef 
27839 _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead k u1 t0) (THead 
27840 (Bind Abbr) u0 t4) H0) in ((let H2 \def (f_equal T T (\lambda (e: T).(match e 
27841 return (\lambda (_: T).T) with [(TSort _) \Rightarrow u1 | (TLRef _) 
27842 \Rightarrow u1 | (THead _ t _) \Rightarrow t])) (THead k u1 t0) (THead (Bind 
27843 Abbr) u0 t4) H0) in ((let H3 \def (f_equal T K (\lambda (e: T).(match e 
27844 return (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _) 
27845 \Rightarrow k | (THead k _ _) \Rightarrow k])) (THead k u1 t0) (THead (Bind 
27846 Abbr) u0 t4) H0) in (eq_ind K (Bind Abbr) (\lambda (k: K).((eq T u1 u0) \to 
27847 ((eq T t0 t4) \to (ex2 T (\lambda (t: T).(pr0 (THead k u2 t3) t)) (\lambda 
27848 (t: T).(pr0 (THead (Bind Abbr) u3 w) t)))))) (\lambda (H10: (eq T u1 
27849 u0)).(eq_ind T u0 (\lambda (_: T).((eq T t0 t4) \to (ex2 T (\lambda (t0: 
27850 T).(pr0 (THead (Bind Abbr) u2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind 
27851 Abbr) u3 w) t0))))) (\lambda (H11: (eq T t0 t4)).(eq_ind T t4 (\lambda (_: 
27852 T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 t3) t0)) (\lambda (t0: 
27853 T).(pr0 (THead (Bind Abbr) u3 w) t0)))) (let H4 \def (eq_ind_r T t (\lambda 
27854 (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to 
27855 (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
27856 (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Bind Abbr) u0 t4) H9) in (let 
27857 H5 \def (eq_ind T t0 (\lambda (t: T).(pr0 t t3)) H8 t4 H11) in (let H6 \def 
27858 (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) H7 u0 H10) in (ex2_ind T (\lambda 
27859 (t: T).(pr0 u2 t)) (\lambda (t: T).(pr0 u3 t)) (ex2 T (\lambda (t: T).(pr0 
27860 (THead (Bind Abbr) u2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 w) 
27861 t))) (\lambda (x: T).(\lambda (H7: (pr0 u2 x)).(\lambda (H8: (pr0 u3 
27862 x)).(ex2_ind T (\lambda (t: T).(pr0 t3 t)) (\lambda (t: T).(pr0 t5 t)) (ex2 T 
27863 (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 t3) t)) (\lambda (t: T).(pr0 
27864 (THead (Bind Abbr) u3 w) t))) (\lambda (x0: T).(\lambda (H9: (pr0 t3 
27865 x0)).(\lambda (H12: (pr0 t5 x0)).(pr0_confluence__pr0_cong_delta u3 t5 w H14 
27866 u2 x H7 H8 t3 x0 H9 H12)))) (H4 t4 (tlt_head_dx (Bind Abbr) u0 t4) t3 H5 t5 
27867 H13))))) (H4 u0 (tlt_head_sx (Bind Abbr) u0 t4) u2 H6 u3 H12))))) t0 (sym_eq 
27868 T t0 t4 H11))) u1 (sym_eq T u1 u0 H10))) k (sym_eq K k (Bind Abbr) H3))) H2)) 
27869 H1)))]) in (H1 (refl_equal T (THead (Bind Abbr) u0 t4)))))))) t2 H11)) t H9 
27870 H10 H6 H7 H8))) | (pr0_zeta b H6 t4 t5 H7 u) \Rightarrow (\lambda (H9: (eq T 
27871 (THead (Bind b) u (lift (S O) O t4)) t)).(\lambda (H10: (eq T t5 t2)).(eq_ind 
27872 T (THead (Bind b) u (lift (S O) O t4)) (\lambda (_: T).((eq T t5 t2) \to 
27873 ((not (eq B b Abst)) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead 
27874 k u2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda (H11: (eq T t5 
27875 t2)).(eq_ind T t2 (\lambda (t: T).((not (eq B b Abst)) \to ((pr0 t4 t) \to 
27876 (ex2 T (\lambda (t0: T).(pr0 (THead k u2 t3) t0)) (\lambda (t0: T).(pr0 t2 
27877 t0)))))) (\lambda (H12: (not (eq B b Abst))).(\lambda (H13: (pr0 t4 t2)).(let 
27878 H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead k u1 t0) t)) H4 (THead 
27879 (Bind b) u (lift (S O) O t4)) H9) in (let H1 \def (match H0 return (\lambda 
27880 (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Bind b) u (lift (S O) O 
27881 t4))) \to (ex2 T (\lambda (t0: T).(pr0 (THead k u2 t3) t0)) (\lambda (t0: 
27882 T).(pr0 t2 t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead k 
27883 u1 t0) (THead (Bind b) u (lift (S O) O t4)))).(let H1 \def (f_equal T T 
27884 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
27885 \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
27886 (THead k u1 t0) (THead (Bind b) u (lift (S O) O t4)) H0) in ((let H2 \def 
27887 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
27888 _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t _) \Rightarrow t])) 
27889 (THead k u1 t0) (THead (Bind b) u (lift (S O) O t4)) H0) in ((let H3 \def 
27890 (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort 
27891 _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) \Rightarrow k])) 
27892 (THead k u1 t0) (THead (Bind b) u (lift (S O) O t4)) H0) in (eq_ind K (Bind 
27893 b) (\lambda (k: K).((eq T u1 u) \to ((eq T t0 (lift (S O) O t4)) \to (ex2 T 
27894 (\lambda (t: T).(pr0 (THead k u2 t3) t)) (\lambda (t: T).(pr0 t2 t)))))) 
27895 (\lambda (H10: (eq T u1 u)).(eq_ind T u (\lambda (_: T).((eq T t0 (lift (S O) 
27896 O t4)) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 t3) t0)) (\lambda 
27897 (t0: T).(pr0 t2 t0))))) (\lambda (H11: (eq T t0 (lift (S O) O t4))).(eq_ind T 
27898 (lift (S O) O t4) (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind 
27899 b) u2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0)))) (let H4 \def (eq_ind_r T t 
27900 (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) 
27901 \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
27902 (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Bind b) u (lift (S O) O t4)) 
27903 H9) in (let H5 \def (eq_ind T t0 (\lambda (t: T).(pr0 t t3)) H8 (lift (S O) O 
27904 t4) H11) in (ex2_ind T (\lambda (t2: T).(eq T t3 (lift (S O) O t2))) (\lambda 
27905 (t2: T).(pr0 t4 t2)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 t3) t)) 
27906 (\lambda (t: T).(pr0 t2 t))) (\lambda (x: T).(\lambda (H6: (eq T t3 (lift (S 
27907 O) O x))).(\lambda (H8: (pr0 t4 x)).(eq_ind_r T (lift (S O) O x) (\lambda (t: 
27908 T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 t) t0)) (\lambda (t0: 
27909 T).(pr0 t2 t0)))) (let H7 \def (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) H7 u 
27910 H10) in (ex2_ind T (\lambda (t: T).(pr0 x t)) (\lambda (t: T).(pr0 t2 t)) 
27911 (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 (lift (S O) O x)) t)) (\lambda 
27912 (t: T).(pr0 t2 t))) (\lambda (x0: T).(\lambda (H9: (pr0 x x0)).(\lambda (H13: 
27913 (pr0 t2 x0)).(ex_intro2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 (lift (S O) 
27914 O x)) t)) (\lambda (t: T).(pr0 t2 t)) x0 (pr0_zeta b H12 x x0 H9 u2) H13)))) 
27915 (H4 t4 (lift_tlt_dx (Bind b) u t4 (S O) O) x H8 t2 H13))) t3 H6)))) 
27916 (pr0_gen_lift t4 t3 (S O) O H5)))) t0 (sym_eq T t0 (lift (S O) O t4) H11))) 
27917 u1 (sym_eq T u1 u H10))) k (sym_eq K k (Bind b) H3))) H2)) H1)))]) in (H1 
27918 (refl_equal T (THead (Bind b) u (lift (S O) O t4)))))))) t5 (sym_eq T t5 t2 
27919 H11))) t H9 H10 H6 H7))) | (pr0_epsilon t4 t5 H6 u) \Rightarrow (\lambda (H9: 
27920 (eq T (THead (Flat Cast) u t4) t)).(\lambda (H10: (eq T t5 t2)).(eq_ind T 
27921 (THead (Flat Cast) u t4) (\lambda (_: T).((eq T t5 t2) \to ((pr0 t4 t5) \to 
27922 (ex2 T (\lambda (t0: T).(pr0 (THead k u2 t3) t0)) (\lambda (t0: T).(pr0 t2 
27923 t0)))))) (\lambda (H11: (eq T t5 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 t4 
27924 t) \to (ex2 T (\lambda (t0: T).(pr0 (THead k u2 t3) t0)) (\lambda (t0: 
27925 T).(pr0 t2 t0))))) (\lambda (H12: (pr0 t4 t2)).(let H0 \def (eq_ind_r T t 
27926 (\lambda (t: T).(eq T (THead k u1 t0) t)) H4 (THead (Flat Cast) u t4) H9) in 
27927 (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T 
27928 t (THead (Flat Cast) u t4)) \to (ex2 T (\lambda (t0: T).(pr0 (THead k u2 t3) 
27929 t0)) (\lambda (t0: T).(pr0 t2 t0)))))) with [refl_equal \Rightarrow (\lambda 
27930 (H0: (eq T (THead k u1 t0) (THead (Flat Cast) u t4))).(let H1 \def (f_equal T 
27931 T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
27932 \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
27933 (THead k u1 t0) (THead (Flat Cast) u t4) H0) in ((let H2 \def (f_equal T T 
27934 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
27935 \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t _) \Rightarrow t])) 
27936 (THead k u1 t0) (THead (Flat Cast) u t4) H0) in ((let H3 \def (f_equal T K 
27937 (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort _) 
27938 \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) \Rightarrow k])) 
27939 (THead k u1 t0) (THead (Flat Cast) u t4) H0) in (eq_ind K (Flat Cast) 
27940 (\lambda (k: K).((eq T u1 u) \to ((eq T t0 t4) \to (ex2 T (\lambda (t: 
27941 T).(pr0 (THead k u2 t3) t)) (\lambda (t: T).(pr0 t2 t)))))) (\lambda (H10: 
27942 (eq T u1 u)).(eq_ind T u (\lambda (_: T).((eq T t0 t4) \to (ex2 T (\lambda 
27943 (t0: T).(pr0 (THead (Flat Cast) u2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0))))) 
27944 (\lambda (H11: (eq T t0 t4)).(eq_ind T t4 (\lambda (_: T).(ex2 T (\lambda 
27945 (t0: T).(pr0 (THead (Flat Cast) u2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0)))) 
27946 (let H4 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt v t) \to 
27947 (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T 
27948 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead 
27949 (Flat Cast) u t4) H9) in (let H5 \def (eq_ind T t0 (\lambda (t: T).(pr0 t 
27950 t3)) H8 t4 H11) in (let H6 \def (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) H7 u 
27951 H10) in (ex2_ind T (\lambda (t: T).(pr0 t3 t)) (\lambda (t: T).(pr0 t2 t)) 
27952 (ex2 T (\lambda (t: T).(pr0 (THead (Flat Cast) u2 t3) t)) (\lambda (t: 
27953 T).(pr0 t2 t))) (\lambda (x: T).(\lambda (H7: (pr0 t3 x)).(\lambda (H8: (pr0 
27954 t2 x)).(ex_intro2 T (\lambda (t: T).(pr0 (THead (Flat Cast) u2 t3) t)) 
27955 (\lambda (t: T).(pr0 t2 t)) x (pr0_epsilon t3 x H7 u2) H8)))) (H4 t4 
27956 (tlt_head_dx (Flat Cast) u t4) t3 H5 t2 H12))))) t0 (sym_eq T t0 t4 H11))) u1 
27957 (sym_eq T u1 u H10))) k (sym_eq K k (Flat Cast) H3))) H2)) H1)))]) in (H1 
27958 (refl_equal T (THead (Flat Cast) u t4)))))) t5 (sym_eq T t5 t2 H11))) t H9 
27959 H10 H6)))]) in (H9 (refl_equal T t) (refl_equal T t2))))) t1 H6)) t H4 H5 H2 
27960 H3))) | (pr0_beta u v1 v2 H2 t0 t3 H3) \Rightarrow (\lambda (H4: (eq T (THead 
27961 (Flat Appl) v1 (THead (Bind Abst) u t0)) t)).(\lambda (H5: (eq T (THead (Bind 
27962 Abbr) v2 t3) t1)).(eq_ind T (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) 
27963 (\lambda (_: T).((eq T (THead (Bind Abbr) v2 t3) t1) \to ((pr0 v1 v2) \to 
27964 ((pr0 t0 t3) \to (ex2 T (\lambda (t2: T).(pr0 t1 t2)) (\lambda (t1: T).(pr0 
27965 t2 t1))))))) (\lambda (H6: (eq T (THead (Bind Abbr) v2 t3) t1)).(eq_ind T 
27966 (THead (Bind Abbr) v2 t3) (\lambda (t: T).((pr0 v1 v2) \to ((pr0 t0 t3) \to 
27967 (ex2 T (\lambda (t1: T).(pr0 t t1)) (\lambda (t1: T).(pr0 t2 t1)))))) 
27968 (\lambda (H7: (pr0 v1 v2)).(\lambda (H8: (pr0 t0 t3)).(let H9 \def (match H1 
27969 return (\lambda (t0: T).(\lambda (t1: T).(\lambda (_: (pr0 t0 t1)).((eq T t0 
27970 t) \to ((eq T t1 t2) \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 
27971 t3) t)) (\lambda (t: T).(pr0 t2 t)))))))) with [(pr0_refl t4) \Rightarrow 
27972 (\lambda (H6: (eq T t4 t)).(\lambda (H9: (eq T t4 t2)).(eq_ind T t (\lambda 
27973 (t: T).((eq T t t2) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 
27974 t3) t0)) (\lambda (t0: T).(pr0 t2 t0))))) (\lambda (H10: (eq T t t2)).(eq_ind 
27975 T t2 (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) 
27976 t0)) (\lambda (t0: T).(pr0 t2 t0)))) (let H0 \def (eq_ind_r T t (\lambda (t: 
27977 T).(eq T t t2)) H10 (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) H4) in 
27978 (eq_ind T (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (\lambda (t: 
27979 T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: 
27980 T).(pr0 t t0)))) (let H1 \def (eq_ind_r T t (\lambda (t: T).(eq T t4 t)) H6 
27981 (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) H4) in (let H2 \def (eq_ind_r 
27982 T t (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v 
27983 t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
27984 (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Flat Appl) v1 (THead (Bind 
27985 Abst) u t0)) H4) in (ex_intro2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 
27986 t3) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) 
27987 t)) (THead (Bind Abbr) v2 t3) (pr0_refl (THead (Bind Abbr) v2 t3)) (pr0_beta 
27988 u v1 v2 H7 t0 t3 H8)))) t2 H0)) t (sym_eq T t t2 H10))) t4 (sym_eq T t4 t H6) 
27989 H9))) | (pr0_comp u1 u2 H6 t4 t5 H7 k) \Rightarrow (\lambda (H9: (eq T (THead 
27990 k u1 t4) t)).(\lambda (H10: (eq T (THead k u2 t5) t2)).(eq_ind T (THead k u1 
27991 t4) (\lambda (_: T).((eq T (THead k u2 t5) t2) \to ((pr0 u1 u2) \to ((pr0 t4 
27992 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda 
27993 (t0: T).(pr0 t2 t0))))))) (\lambda (H11: (eq T (THead k u2 t5) t2)).(eq_ind T 
27994 (THead k u2 t5) (\lambda (t: T).((pr0 u1 u2) \to ((pr0 t4 t5) \to (ex2 T 
27995 (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 t 
27996 t0)))))) (\lambda (H12: (pr0 u1 u2)).(\lambda (H13: (pr0 t4 t5)).(let H0 \def 
27997 (eq_ind_r T t (\lambda (t: T).(eq T (THead (Flat Appl) v1 (THead (Bind Abst) 
27998 u t0)) t)) H4 (THead k u1 t4) H9) in (let H1 \def (match H0 return (\lambda 
27999 (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead k u1 t4)) \to (ex2 T (\lambda 
28000 (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead k u2 
28001 t5) t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Flat 
28002 Appl) v1 (THead (Bind Abst) u t0)) (THead k u1 t4))).(let H1 \def (f_equal T 
28003 T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
28004 \Rightarrow (THead (Bind Abst) u t0) | (TLRef _) \Rightarrow (THead (Bind 
28005 Abst) u t0) | (THead _ _ t) \Rightarrow t])) (THead (Flat Appl) v1 (THead 
28006 (Bind Abst) u t0)) (THead k u1 t4) H0) in ((let H2 \def (f_equal T T (\lambda 
28007 (e: T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | 
28008 (TLRef _) \Rightarrow v1 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) 
28009 v1 (THead (Bind Abst) u t0)) (THead k u1 t4) H0) in ((let H3 \def (f_equal T 
28010 K (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort _) 
28011 \Rightarrow (Flat Appl) | (TLRef _) \Rightarrow (Flat Appl) | (THead k _ _) 
28012 \Rightarrow k])) (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (THead k u1 
28013 t4) H0) in (eq_ind K (Flat Appl) (\lambda (k: K).((eq T v1 u1) \to ((eq T 
28014 (THead (Bind Abst) u t0) t4) \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind 
28015 Abbr) v2 t3) t)) (\lambda (t: T).(pr0 (THead k u2 t5) t)))))) (\lambda (H10: 
28016 (eq T v1 u1)).(eq_ind T u1 (\lambda (_: T).((eq T (THead (Bind Abst) u t0) 
28017 t4) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda 
28018 (t0: T).(pr0 (THead (Flat Appl) u2 t5) t0))))) (\lambda (H11: (eq T (THead 
28019 (Bind Abst) u t0) t4)).(eq_ind T (THead (Bind Abst) u t0) (\lambda (_: 
28020 T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: 
28021 T).(pr0 (THead (Flat Appl) u2 t5) t0)))) (let H4 \def (eq_ind_r K k (\lambda 
28022 (k: K).(eq T (THead k u1 t4) t)) H9 (Flat Appl) H3) in (let H5 \def (eq_ind_r 
28023 T t4 (\lambda (t: T).(pr0 t t5)) H13 (THead (Bind Abst) u t0) H11) in (let H6 
28024 \def (match H5 return (\lambda (t: T).(\lambda (t1: T).(\lambda (_: (pr0 t 
28025 t1)).((eq T t (THead (Bind Abst) u t0)) \to ((eq T t1 t5) \to (ex2 T (\lambda 
28026 (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead 
28027 (Flat Appl) u2 t5) t0)))))))) with [(pr0_refl t2) \Rightarrow (\lambda (H0: 
28028 (eq T t2 (THead (Bind Abst) u t0))).(\lambda (H1: (eq T t2 t5)).(eq_ind T 
28029 (THead (Bind Abst) u t0) (\lambda (t: T).((eq T t t5) \to (ex2 T (\lambda 
28030 (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead 
28031 (Flat Appl) u2 t5) t0))))) (\lambda (H2: (eq T (THead (Bind Abst) u t0) 
28032 t5)).(eq_ind T (THead (Bind Abst) u t0) (\lambda (t: T).(ex2 T (\lambda (t0: 
28033 T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Flat 
28034 Appl) u2 t) t0)))) (let H3 \def (eq_ind_r T t4 (\lambda (t0: T).(eq T (THead 
28035 (Flat Appl) u1 t0) t)) H4 (THead (Bind Abst) u t0) H11) in (let H4 \def 
28036 (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: 
28037 T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: 
28038 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Flat Appl) u1 
28039 (THead (Bind Abst) u t0)) H3) in (let H5 \def (eq_ind T v1 (\lambda (t: 
28040 T).(pr0 t v2)) H7 u1 H10) in (ex2_ind T (\lambda (t: T).(pr0 v2 t)) (\lambda 
28041 (t: T).(pr0 u2 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) 
28042 (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead (Bind Abst) u t0)) t))) 
28043 (\lambda (x: T).(\lambda (H6: (pr0 v2 x)).(\lambda (H7: (pr0 u2 
28044 x)).(ex_intro2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda 
28045 (t: T).(pr0 (THead (Flat Appl) u2 (THead (Bind Abst) u t0)) t)) (THead (Bind 
28046 Abbr) x t3) (pr0_comp v2 x H6 t3 t3 (pr0_refl t3) (Bind Abbr)) (pr0_beta u u2 
28047 x H7 t0 t3 H8))))) (H4 u1 (tlt_head_sx (Flat Appl) u1 (THead (Bind Abst) u 
28048 t0)) v2 H5 u2 H12))))) t5 H2)) t2 (sym_eq T t2 (THead (Bind Abst) u t0) H0) 
28049 H1))) | (pr0_comp u0 u3 H0 t2 t6 H1 k) \Rightarrow (\lambda (H5: (eq T (THead 
28050 k u0 t2) (THead (Bind Abst) u t0))).(\lambda (H13: (eq T (THead k u3 t6) 
28051 t5)).((let H2 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
28052 T).T) with [(TSort _) \Rightarrow t2 | (TLRef _) \Rightarrow t2 | (THead _ _ 
28053 t) \Rightarrow t])) (THead k u0 t2) (THead (Bind Abst) u t0) H5) in ((let H3 
28054 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
28055 [(TSort _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) 
28056 \Rightarrow t])) (THead k u0 t2) (THead (Bind Abst) u t0) H5) in ((let H6 
28057 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) with 
28058 [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
28059 \Rightarrow k])) (THead k u0 t2) (THead (Bind Abst) u t0) H5) in (eq_ind K 
28060 (Bind Abst) (\lambda (k0: K).((eq T u0 u) \to ((eq T t2 t0) \to ((eq T (THead 
28061 k0 u3 t6) t5) \to ((pr0 u0 u3) \to ((pr0 t2 t6) \to (ex2 T (\lambda (t: 
28062 T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) 
28063 u2 t5) t))))))))) (\lambda (H9: (eq T u0 u)).(eq_ind T u (\lambda (t: T).((eq 
28064 T t2 t0) \to ((eq T (THead (Bind Abst) u3 t6) t5) \to ((pr0 t u3) \to ((pr0 
28065 t2 t6) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) 
28066 (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t5) t0)))))))) (\lambda (H14: (eq 
28067 T t2 t0)).(eq_ind T t0 (\lambda (t: T).((eq T (THead (Bind Abst) u3 t6) t5) 
28068 \to ((pr0 u u3) \to ((pr0 t t6) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind 
28069 Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t5) t0))))))) 
28070 (\lambda (H15: (eq T (THead (Bind Abst) u3 t6) t5)).(eq_ind T (THead (Bind 
28071 Abst) u3 t6) (\lambda (t: T).((pr0 u u3) \to ((pr0 t0 t6) \to (ex2 T (\lambda 
28072 (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead 
28073 (Flat Appl) u2 t) t0)))))) (\lambda (_: (pr0 u u3)).(\lambda (H17: (pr0 t0 
28074 t6)).(let H4 \def (eq_ind_r T t4 (\lambda (t0: T).(eq T (THead (Flat Appl) u1 
28075 t0) t)) H4 (THead (Bind Abst) u t0) H11) in (let H11 \def (eq_ind_r T t 
28076 (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) 
28077 \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
28078 (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Flat Appl) u1 (THead (Bind 
28079 Abst) u t0)) H4) in (let H7 \def (eq_ind T v1 (\lambda (t: T).(pr0 t v2)) H7 
28080 u1 H10) in (ex2_ind T (\lambda (t: T).(pr0 v2 t)) (\lambda (t: T).(pr0 u2 t)) 
28081 (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: 
28082 T).(pr0 (THead (Flat Appl) u2 (THead (Bind Abst) u3 t6)) t))) (\lambda (x: 
28083 T).(\lambda (H10: (pr0 v2 x)).(\lambda (H12: (pr0 u2 x)).(ex2_ind T (\lambda 
28084 (t: T).(pr0 t6 t)) (\lambda (t: T).(pr0 t3 t)) (ex2 T (\lambda (t: T).(pr0 
28085 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) u2 
28086 (THead (Bind Abst) u3 t6)) t))) (\lambda (x0: T).(\lambda (H8: (pr0 t6 
28087 x0)).(\lambda (H18: (pr0 t3 x0)).(ex_intro2 T (\lambda (t: T).(pr0 (THead 
28088 (Bind Abbr) v2 t3) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) u2 (THead 
28089 (Bind Abst) u3 t6)) t)) (THead (Bind Abbr) x x0) (pr0_comp v2 x H10 t3 x0 H18 
28090 (Bind Abbr)) (pr0_beta u3 u2 x H12 t6 x0 H8))))) (H11 t0 (tlt_trans (THead 
28091 (Bind Abst) u t0) t0 (THead (Flat Appl) u1 (THead (Bind Abst) u t0)) 
28092 (tlt_head_dx (Bind Abst) u t0) (tlt_head_dx (Flat Appl) u1 (THead (Bind Abst) 
28093 u t0))) t6 H17 t3 H8))))) (H11 u1 (tlt_head_sx (Flat Appl) u1 (THead (Bind 
28094 Abst) u t0)) v2 H7 u2 H12))))))) t5 H15)) t2 (sym_eq T t2 t0 H14))) u0 
28095 (sym_eq T u0 u H9))) k (sym_eq K k (Bind Abst) H6))) H3)) H2)) H13 H0 H1))) | 
28096 (pr0_beta u0 v0 v3 H0 t2 t6 H1) \Rightarrow (\lambda (H4: (eq T (THead (Flat 
28097 Appl) v0 (THead (Bind Abst) u0 t2)) (THead (Bind Abst) u t0))).(\lambda (H11: 
28098 (eq T (THead (Bind Abbr) v3 t6) t5)).((let H2 \def (eq_ind T (THead (Flat 
28099 Appl) v0 (THead (Bind Abst) u0 t2)) (\lambda (e: T).(match e return (\lambda 
28100 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
28101 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
28102 _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind Abst) u 
28103 t0) H4) in (False_ind ((eq T (THead (Bind Abbr) v3 t6) t5) \to ((pr0 v0 v3) 
28104 \to ((pr0 t2 t6) \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) 
28105 t)) (\lambda (t: T).(pr0 (THead (Flat Appl) u2 t5) t)))))) H2)) H11 H0 H1))) 
28106 | (pr0_upsilon b H0 v0 v3 H1 u0 u3 H4 t2 t6 H11) \Rightarrow (\lambda (H12: 
28107 (eq T (THead (Flat Appl) v0 (THead (Bind b) u0 t2)) (THead (Bind Abst) u 
28108 t0))).(\lambda (H13: (eq T (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) 
28109 O v3) t6)) t5)).((let H2 \def (eq_ind T (THead (Flat Appl) v0 (THead (Bind b) 
28110 u0 t2)) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
28111 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
28112 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
28113 (Flat _) \Rightarrow True])])) I (THead (Bind Abst) u t0) H12) in (False_ind 
28114 ((eq T (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v3) t6)) t5) \to 
28115 ((not (eq B b Abst)) \to ((pr0 v0 v3) \to ((pr0 u0 u3) \to ((pr0 t2 t6) \to 
28116 (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: 
28117 T).(pr0 (THead (Flat Appl) u2 t5) t)))))))) H2)) H13 H0 H1 H4 H11))) | 
28118 (pr0_delta u0 u3 H0 t2 t6 H1 w H4) \Rightarrow (\lambda (H11: (eq T (THead 
28119 (Bind Abbr) u0 t2) (THead (Bind Abst) u t0))).(\lambda (H12: (eq T (THead 
28120 (Bind Abbr) u3 w) t5)).((let H2 \def (eq_ind T (THead (Bind Abbr) u0 t2) 
28121 (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
28122 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
28123 (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b 
28124 return (\lambda (_: B).Prop) with [Abbr \Rightarrow True | Abst \Rightarrow 
28125 False | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (THead 
28126 (Bind Abst) u t0) H11) in (False_ind ((eq T (THead (Bind Abbr) u3 w) t5) \to 
28127 ((pr0 u0 u3) \to ((pr0 t2 t6) \to ((subst0 O u3 t6 w) \to (ex2 T (\lambda (t: 
28128 T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) 
28129 u2 t5) t))))))) H2)) H12 H0 H1 H4))) | (pr0_zeta b H0 t2 t6 H1 u0) 
28130 \Rightarrow (\lambda (H4: (eq T (THead (Bind b) u0 (lift (S O) O t2)) (THead 
28131 (Bind Abst) u t0))).(\lambda (H11: (eq T t6 t5)).((let H2 \def (f_equal T T 
28132 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
28133 \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T 
28134 \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow 
28135 (TLRef (match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) 
28136 | (THead k u t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) 
28137 t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t2) | (TLRef _) 
28138 \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T 
28139 \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow 
28140 (TLRef (match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) 
28141 | (THead k u t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) 
28142 t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t2) | (THead _ _ t) 
28143 \Rightarrow t])) (THead (Bind b) u0 (lift (S O) O t2)) (THead (Bind Abst) u 
28144 t0) H4) in ((let H3 \def (f_equal T T (\lambda (e: T).(match e return 
28145 (\lambda (_: T).T) with [(TSort _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 
28146 | (THead _ t _) \Rightarrow t])) (THead (Bind b) u0 (lift (S O) O t2)) (THead 
28147 (Bind Abst) u t0) H4) in ((let H5 \def (f_equal T B (\lambda (e: T).(match e 
28148 return (\lambda (_: T).B) with [(TSort _) \Rightarrow b | (TLRef _) 
28149 \Rightarrow b | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).B) 
28150 with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b])])) (THead (Bind b) u0 
28151 (lift (S O) O t2)) (THead (Bind Abst) u t0) H4) in (eq_ind B Abst (\lambda 
28152 (b0: B).((eq T u0 u) \to ((eq T (lift (S O) O t2) t0) \to ((eq T t6 t5) \to 
28153 ((not (eq B b0 Abst)) \to ((pr0 t2 t6) \to (ex2 T (\lambda (t: T).(pr0 (THead 
28154 (Bind Abbr) v2 t3) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) u2 t5) 
28155 t))))))))) (\lambda (H6: (eq T u0 u)).(eq_ind T u (\lambda (_: T).((eq T 
28156 (lift (S O) O t2) t0) \to ((eq T t6 t5) \to ((not (eq B Abst Abst)) \to ((pr0 
28157 t2 t6) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) 
28158 (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 t5) t0)))))))) (\lambda (H12: (eq 
28159 T (lift (S O) O t2) t0)).(eq_ind T (lift (S O) O t2) (\lambda (_: T).((eq T 
28160 t6 t5) \to ((not (eq B Abst Abst)) \to ((pr0 t2 t6) \to (ex2 T (\lambda (t0: 
28161 T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Flat 
28162 Appl) u2 t5) t0))))))) (\lambda (H7: (eq T t6 t5)).(eq_ind T t5 (\lambda (t: 
28163 T).((not (eq B Abst Abst)) \to ((pr0 t2 t) \to (ex2 T (\lambda (t0: T).(pr0 
28164 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Flat Appl) u2 
28165 t5) t0)))))) (\lambda (H13: (not (eq B Abst Abst))).(\lambda (_: (pr0 t2 
28166 t5)).(let H8 \def (match (H13 (refl_equal B Abst)) return (\lambda (_: 
28167 False).(ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: 
28168 T).(pr0 (THead (Flat Appl) u2 t5) t)))) with []) in H8))) t6 (sym_eq T t6 t5 
28169 H7))) t0 H12)) u0 (sym_eq T u0 u H6))) b (sym_eq B b Abst H5))) H3)) H2)) H11 
28170 H0 H1))) | (pr0_epsilon t2 t6 H0 u0) \Rightarrow (\lambda (H1: (eq T (THead 
28171 (Flat Cast) u0 t2) (THead (Bind Abst) u t0))).(\lambda (H4: (eq T t6 
28172 t5)).((let H2 \def (eq_ind T (THead (Flat Cast) u0 t2) (\lambda (e: T).(match 
28173 e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
28174 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
28175 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
28176 (THead (Bind Abst) u t0) H1) in (False_ind ((eq T t6 t5) \to ((pr0 t2 t6) \to 
28177 (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: 
28178 T).(pr0 (THead (Flat Appl) u2 t5) t))))) H2)) H4 H0)))]) in (H6 (refl_equal T 
28179 (THead (Bind Abst) u t0)) (refl_equal T t5))))) t4 H11)) v1 (sym_eq T v1 u1 
28180 H10))) k H3)) H2)) H1)))]) in (H1 (refl_equal T (THead k u1 t4))))))) t2 
28181 H11)) t H9 H10 H6 H7))) | (pr0_beta u0 v0 v3 H6 t4 t5 H7) \Rightarrow 
28182 (\lambda (H9: (eq T (THead (Flat Appl) v0 (THead (Bind Abst) u0 t4)) 
28183 t)).(\lambda (H10: (eq T (THead (Bind Abbr) v3 t5) t2)).(eq_ind T (THead 
28184 (Flat Appl) v0 (THead (Bind Abst) u0 t4)) (\lambda (_: T).((eq T (THead (Bind 
28185 Abbr) v3 t5) t2) \to ((pr0 v0 v3) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: 
28186 T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0))))))) 
28187 (\lambda (H11: (eq T (THead (Bind Abbr) v3 t5) t2)).(eq_ind T (THead (Bind 
28188 Abbr) v3 t5) (\lambda (t: T).((pr0 v0 v3) \to ((pr0 t4 t5) \to (ex2 T 
28189 (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 t 
28190 t0)))))) (\lambda (H12: (pr0 v0 v3)).(\lambda (H13: (pr0 t4 t5)).(let H0 \def 
28191 (eq_ind_r T t (\lambda (t: T).(eq T (THead (Flat Appl) v1 (THead (Bind Abst) 
28192 u t0)) t)) H4 (THead (Flat Appl) v0 (THead (Bind Abst) u0 t4)) H9) in (let H1 
28193 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t 
28194 (THead (Flat Appl) v0 (THead (Bind Abst) u0 t4))) \to (ex2 T (\lambda (t0: 
28195 T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind 
28196 Abbr) v3 t5) t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead 
28197 (Flat Appl) v1 (THead (Bind Abst) u t0)) (THead (Flat Appl) v0 (THead (Bind 
28198 Abst) u0 t4)))).(let H1 \def (f_equal T T (\lambda (e: T).(match e return 
28199 (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 
28200 | (THead _ _ t) \Rightarrow (match t return (\lambda (_: T).T) with [(TSort 
28201 _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t0) \Rightarrow 
28202 t0])])) (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (THead (Flat Appl) v0 
28203 (THead (Bind Abst) u0 t4)) H0) in ((let H2 \def (f_equal T T (\lambda (e: 
28204 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef 
28205 _) \Rightarrow u | (THead _ _ t) \Rightarrow (match t return (\lambda (_: 
28206 T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t0 
28207 _) \Rightarrow t0])])) (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (THead 
28208 (Flat Appl) v0 (THead (Bind Abst) u0 t4)) H0) in ((let H3 \def (f_equal T T 
28209 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
28210 \Rightarrow v1 | (TLRef _) \Rightarrow v1 | (THead _ t _) \Rightarrow t])) 
28211 (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (THead (Flat Appl) v0 (THead 
28212 (Bind Abst) u0 t4)) H0) in (eq_ind T v0 (\lambda (_: T).((eq T u u0) \to ((eq 
28213 T t0 t4) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) 
28214 (\lambda (t0: T).(pr0 (THead (Bind Abbr) v3 t5) t0)))))) (\lambda (H10: (eq T 
28215 u u0)).(eq_ind T u0 (\lambda (_: T).((eq T t0 t4) \to (ex2 T (\lambda (t0: 
28216 T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind 
28217 Abbr) v3 t5) t0))))) (\lambda (H11: (eq T t0 t4)).(eq_ind T t4 (\lambda (_: 
28218 T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: 
28219 T).(pr0 (THead (Bind Abbr) v3 t5) t0)))) (let H4 \def (eq_ind_r T t (\lambda 
28220 (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to 
28221 (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
28222 (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Flat Appl) v0 (THead (Bind 
28223 Abst) u0 t4)) H9) in (let H5 \def (eq_ind T t0 (\lambda (t: T).(pr0 t t3)) H8 
28224 t4 H11) in (let H6 \def (eq_ind T v1 (\lambda (t: T).(pr0 t v2)) H7 v0 H3) in 
28225 (ex2_ind T (\lambda (t: T).(pr0 v2 t)) (\lambda (t: T).(pr0 v3 t)) (ex2 T 
28226 (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: T).(pr0 
28227 (THead (Bind Abbr) v3 t5) t))) (\lambda (x: T).(\lambda (H7: (pr0 v2 
28228 x)).(\lambda (H8: (pr0 v3 x)).(ex2_ind T (\lambda (t: T).(pr0 t3 t)) (\lambda 
28229 (t: T).(pr0 t5 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) 
28230 (\lambda (t: T).(pr0 (THead (Bind Abbr) v3 t5) t))) (\lambda (x0: T).(\lambda 
28231 (H9: (pr0 t3 x0)).(\lambda (H12: (pr0 t5 x0)).(ex_intro2 T (\lambda (t: 
28232 T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) 
28233 v3 t5) t)) (THead (Bind Abbr) x x0) (pr0_comp v2 x H7 t3 x0 H9 (Bind Abbr)) 
28234 (pr0_comp v3 x H8 t5 x0 H12 (Bind Abbr)))))) (H4 t4 (tlt_trans (THead (Bind 
28235 Abst) u0 t4) t4 (THead (Flat Appl) v0 (THead (Bind Abst) u0 t4)) (tlt_head_dx 
28236 (Bind Abst) u0 t4) (tlt_head_dx (Flat Appl) v0 (THead (Bind Abst) u0 t4))) t3 
28237 H5 t5 H13))))) (H4 v0 (tlt_head_sx (Flat Appl) v0 (THead (Bind Abst) u0 t4)) 
28238 v2 H6 v3 H12))))) t0 (sym_eq T t0 t4 H11))) u (sym_eq T u u0 H10))) v1 
28239 (sym_eq T v1 v0 H3))) H2)) H1)))]) in (H1 (refl_equal T (THead (Flat Appl) v0 
28240 (THead (Bind Abst) u0 t4)))))))) t2 H11)) t H9 H10 H6 H7))) | (pr0_upsilon b 
28241 H6 v0 v3 H7 u1 u2 H8 t4 t5 H9) \Rightarrow (\lambda (H10: (eq T (THead (Flat 
28242 Appl) v0 (THead (Bind b) u1 t4)) t)).(\lambda (H11: (eq T (THead (Bind b) u2 
28243 (THead (Flat Appl) (lift (S O) O v3) t5)) t2)).(eq_ind T (THead (Flat Appl) 
28244 v0 (THead (Bind b) u1 t4)) (\lambda (_: T).((eq T (THead (Bind b) u2 (THead 
28245 (Flat Appl) (lift (S O) O v3) t5)) t2) \to ((not (eq B b Abst)) \to ((pr0 v0 
28246 v3) \to ((pr0 u1 u2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead 
28247 (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0))))))))) (\lambda (H12: 
28248 (eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v3) t5)) 
28249 t2)).(eq_ind T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v3) t5)) 
28250 (\lambda (t: T).((not (eq B b Abst)) \to ((pr0 v0 v3) \to ((pr0 u1 u2) \to 
28251 ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) 
28252 (\lambda (t0: T).(pr0 t t0)))))))) (\lambda (H13: (not (eq B b 
28253 Abst))).(\lambda (_: (pr0 v0 v3)).(\lambda (_: (pr0 u1 u2)).(\lambda (_: (pr0 
28254 t4 t5)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Flat Appl) 
28255 v1 (THead (Bind Abst) u t0)) t)) H4 (THead (Flat Appl) v0 (THead (Bind b) u1 
28256 t4)) H10) in (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? 
28257 ? t)).((eq T t (THead (Flat Appl) v0 (THead (Bind b) u1 t4))) \to (ex2 T 
28258 (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 
28259 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v3) t5)) t0)))))) with 
28260 [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Flat Appl) v1 (THead 
28261 (Bind Abst) u t0)) (THead (Flat Appl) v0 (THead (Bind b) u1 t4)))).(let H1 
28262 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
28263 [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) 
28264 \Rightarrow (match t return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 
28265 | (TLRef _) \Rightarrow t0 | (THead _ _ t0) \Rightarrow t0])])) (THead (Flat 
28266 Appl) v1 (THead (Bind Abst) u t0)) (THead (Flat Appl) v0 (THead (Bind b) u1 
28267 t4)) H0) in ((let H2 \def (f_equal T T (\lambda (e: T).(match e return 
28268 (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | 
28269 (THead _ _ t) \Rightarrow (match t return (\lambda (_: T).T) with [(TSort _) 
28270 \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t0 _) \Rightarrow t0])])) 
28271 (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (THead (Flat Appl) v0 (THead 
28272 (Bind b) u1 t4)) H0) in ((let H3 \def (f_equal T B (\lambda (e: T).(match e 
28273 return (\lambda (_: T).B) with [(TSort _) \Rightarrow Abst | (TLRef _) 
28274 \Rightarrow Abst | (THead _ _ t) \Rightarrow (match t return (\lambda (_: 
28275 T).B) with [(TSort _) \Rightarrow Abst | (TLRef _) \Rightarrow Abst | (THead 
28276 k _ _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
28277 \Rightarrow b | (Flat _) \Rightarrow Abst])])])) (THead (Flat Appl) v1 (THead 
28278 (Bind Abst) u t0)) (THead (Flat Appl) v0 (THead (Bind b) u1 t4)) H0) in ((let 
28279 H4 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
28280 [(TSort _) \Rightarrow v1 | (TLRef _) \Rightarrow v1 | (THead _ t _) 
28281 \Rightarrow t])) (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (THead (Flat 
28282 Appl) v0 (THead (Bind b) u1 t4)) H0) in (eq_ind T v0 (\lambda (_: T).((eq B 
28283 Abst b) \to ((eq T u u1) \to ((eq T t0 t4) \to (ex2 T (\lambda (t0: T).(pr0 
28284 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead (Bind b) u2 
28285 (THead (Flat Appl) (lift (S O) O v3) t5)) t0))))))) (\lambda (H11: (eq B Abst 
28286 b)).(eq_ind B Abst (\lambda (b: B).((eq T u u1) \to ((eq T t0 t4) \to (ex2 T 
28287 (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: T).(pr0 
28288 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v3) t5)) t)))))) (\lambda 
28289 (H12: (eq T u u1)).(eq_ind T u1 (\lambda (_: T).((eq T t0 t4) \to (ex2 T 
28290 (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 
28291 (THead (Bind Abst) u2 (THead (Flat Appl) (lift (S O) O v3) t5)) t0))))) 
28292 (\lambda (H14: (eq T t0 t4)).(eq_ind T t4 (\lambda (_: T).(ex2 T (\lambda 
28293 (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 (THead 
28294 (Bind Abst) u2 (THead (Flat Appl) (lift (S O) O v3) t5)) t0)))) (let H5 \def 
28295 (eq_ind_r B b (\lambda (b: B).(not (eq B b Abst))) H13 Abst H11) in (let H6 
28296 \def (match (H5 (refl_equal B Abst)) return (\lambda (_: False).(ex2 T 
28297 (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: T).(pr0 
28298 (THead (Bind Abst) u2 (THead (Flat Appl) (lift (S O) O v3) t5)) t)))) with 
28299 []) in H6)) t0 (sym_eq T t0 t4 H14))) u (sym_eq T u u1 H12))) b H11)) v1 
28300 (sym_eq T v1 v0 H4))) H3)) H2)) H1)))]) in (H1 (refl_equal T (THead (Flat 
28301 Appl) v0 (THead (Bind b) u1 t4)))))))))) t2 H12)) t H10 H11 H6 H7 H8 H9))) | 
28302 (pr0_delta u1 u2 H6 t4 t5 H7 w H8) \Rightarrow (\lambda (H9: (eq T (THead 
28303 (Bind Abbr) u1 t4) t)).(\lambda (H10: (eq T (THead (Bind Abbr) u2 w) 
28304 t2)).(eq_ind T (THead (Bind Abbr) u1 t4) (\lambda (_: T).((eq T (THead (Bind 
28305 Abbr) u2 w) t2) \to ((pr0 u1 u2) \to ((pr0 t4 t5) \to ((subst0 O u2 t5 w) \to 
28306 (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: 
28307 T).(pr0 t2 t0)))))))) (\lambda (H11: (eq T (THead (Bind Abbr) u2 w) 
28308 t2)).(eq_ind T (THead (Bind Abbr) u2 w) (\lambda (t: T).((pr0 u1 u2) \to 
28309 ((pr0 t4 t5) \to ((subst0 O u2 t5 w) \to (ex2 T (\lambda (t0: T).(pr0 (THead 
28310 (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 t t0))))))) (\lambda (_: (pr0 
28311 u1 u2)).(\lambda (_: (pr0 t4 t5)).(\lambda (_: (subst0 O u2 t5 w)).(let H0 
28312 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Flat Appl) v1 (THead (Bind 
28313 Abst) u t0)) t)) H4 (THead (Bind Abbr) u1 t4) H9) in (let H1 \def (match H0 
28314 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Bind Abbr) 
28315 u1 t4)) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) 
28316 (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)))))) with [refl_equal 
28317 \Rightarrow (\lambda (H0: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u 
28318 t0)) (THead (Bind Abbr) u1 t4))).(let H1 \def (eq_ind T (THead (Flat Appl) v1 
28319 (THead (Bind Abst) u t0)) (\lambda (e: T).(match e return (\lambda (_: 
28320 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
28321 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
28322 _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind Abbr) u1 
28323 t4) H0) in (False_ind (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) 
28324 t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t))) H1)))]) in (H1 
28325 (refl_equal T (THead (Bind Abbr) u1 t4)))))))) t2 H11)) t H9 H10 H6 H7 H8))) 
28326 | (pr0_zeta b H6 t4 t5 H7 u0) \Rightarrow (\lambda (H8: (eq T (THead (Bind b) 
28327 u0 (lift (S O) O t4)) t)).(\lambda (H9: (eq T t5 t2)).(eq_ind T (THead (Bind 
28328 b) u0 (lift (S O) O t4)) (\lambda (_: T).((eq T t5 t2) \to ((not (eq B b 
28329 Abst)) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) 
28330 v2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda (H10: (eq T t5 
28331 t2)).(eq_ind T t2 (\lambda (t: T).((not (eq B b Abst)) \to ((pr0 t4 t) \to 
28332 (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: 
28333 T).(pr0 t2 t0)))))) (\lambda (_: (not (eq B b Abst))).(\lambda (_: (pr0 t4 
28334 t2)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Flat Appl) v1 
28335 (THead (Bind Abst) u t0)) t)) H4 (THead (Bind b) u0 (lift (S O) O t4)) H8) in 
28336 (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T 
28337 t (THead (Bind b) u0 (lift (S O) O t4))) \to (ex2 T (\lambda (t0: T).(pr0 
28338 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0)))))) with 
28339 [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Flat Appl) v1 (THead 
28340 (Bind Abst) u t0)) (THead (Bind b) u0 (lift (S O) O t4)))).(let H1 \def 
28341 (eq_ind T (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) (\lambda (e: 
28342 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
28343 (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k return 
28344 (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
28345 True])])) I (THead (Bind b) u0 (lift (S O) O t4)) H0) in (False_ind (ex2 T 
28346 (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: T).(pr0 t2 
28347 t))) H1)))]) in (H1 (refl_equal T (THead (Bind b) u0 (lift (S O) O t4)))))))) 
28348 t5 (sym_eq T t5 t2 H10))) t H8 H9 H6 H7))) | (pr0_epsilon t4 t5 H6 u0) 
28349 \Rightarrow (\lambda (H7: (eq T (THead (Flat Cast) u0 t4) t)).(\lambda (H8: 
28350 (eq T t5 t2)).(eq_ind T (THead (Flat Cast) u0 t4) (\lambda (_: T).((eq T t5 
28351 t2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 
28352 t3) t0)) (\lambda (t0: T).(pr0 t2 t0)))))) (\lambda (H9: (eq T t5 
28353 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 t4 t) \to (ex2 T (\lambda (t0: 
28354 T).(pr0 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0))))) 
28355 (\lambda (_: (pr0 t4 t2)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T 
28356 (THead (Flat Appl) v1 (THead (Bind Abst) u t0)) t)) H4 (THead (Flat Cast) u0 
28357 t4) H7) in (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? 
28358 t)).((eq T t (THead (Flat Cast) u0 t4)) \to (ex2 T (\lambda (t0: T).(pr0 
28359 (THead (Bind Abbr) v2 t3) t0)) (\lambda (t0: T).(pr0 t2 t0)))))) with 
28360 [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Flat Appl) v1 (THead 
28361 (Bind Abst) u t0)) (THead (Flat Cast) u0 t4))).(let H1 \def (eq_ind T (THead 
28362 (Flat Appl) v1 (THead (Bind Abst) u t0)) (\lambda (e: T).(match e return 
28363 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
28364 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
28365 K).Prop) with [(Bind _) \Rightarrow False | (Flat f) \Rightarrow (match f 
28366 return (\lambda (_: F).Prop) with [Appl \Rightarrow True | Cast \Rightarrow 
28367 False])])])) I (THead (Flat Cast) u0 t4) H0) in (False_ind (ex2 T (\lambda 
28368 (t: T).(pr0 (THead (Bind Abbr) v2 t3) t)) (\lambda (t: T).(pr0 t2 t))) 
28369 H1)))]) in (H1 (refl_equal T (THead (Flat Cast) u0 t4)))))) t5 (sym_eq T t5 
28370 t2 H9))) t H7 H8 H6)))]) in (H9 (refl_equal T t) (refl_equal T t2))))) t1 
28371 H6)) t H4 H5 H2 H3))) | (pr0_upsilon b H2 v1 v2 H3 u1 u2 H4 t0 t3 H5) 
28372 \Rightarrow (\lambda (H6: (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) 
28373 t)).(\lambda (H7: (eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
28374 v2) t3)) t1)).(eq_ind T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) 
28375 (\lambda (_: T).((eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
28376 v2) t3)) t1) \to ((not (eq B b Abst)) \to ((pr0 v1 v2) \to ((pr0 u1 u2) \to 
28377 ((pr0 t0 t3) \to (ex2 T (\lambda (t2: T).(pr0 t1 t2)) (\lambda (t1: T).(pr0 
28378 t2 t1))))))))) (\lambda (H8: (eq T (THead (Bind b) u2 (THead (Flat Appl) 
28379 (lift (S O) O v2) t3)) t1)).(eq_ind T (THead (Bind b) u2 (THead (Flat Appl) 
28380 (lift (S O) O v2) t3)) (\lambda (t: T).((not (eq B b Abst)) \to ((pr0 v1 v2) 
28381 \to ((pr0 u1 u2) \to ((pr0 t0 t3) \to (ex2 T (\lambda (t1: T).(pr0 t t1)) 
28382 (\lambda (t1: T).(pr0 t2 t1)))))))) (\lambda (H9: (not (eq B b 
28383 Abst))).(\lambda (H10: (pr0 v1 v2)).(\lambda (H11: (pr0 u1 u2)).(\lambda 
28384 (H12: (pr0 t0 t3)).(let H13 \def (match H1 return (\lambda (t0: T).(\lambda 
28385 (t1: T).(\lambda (_: (pr0 t0 t1)).((eq T t0 t) \to ((eq T t1 t2) \to (ex2 T 
28386 (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
28387 t3)) t)) (\lambda (t: T).(pr0 t2 t)))))))) with [(pr0_refl t4) \Rightarrow 
28388 (\lambda (H8: (eq T t4 t)).(\lambda (H13: (eq T t4 t2)).(eq_ind T t (\lambda 
28389 (t: T).((eq T t t2) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 
28390 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 t2 
28391 t0))))) (\lambda (H14: (eq T t t2)).(eq_ind T t2 (\lambda (_: T).(ex2 T 
28392 (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
28393 t3)) t0)) (\lambda (t0: T).(pr0 t2 t0)))) (let H0 \def (eq_ind_r T t (\lambda 
28394 (t: T).(eq T t t2)) H14 (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) H6) in 
28395 (eq_ind T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) (\lambda (t: T).(ex2 
28396 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
28397 v2) t3)) t0)) (\lambda (t0: T).(pr0 t t0)))) (let H1 \def (eq_ind_r T t 
28398 (\lambda (t: T).(eq T t4 t)) H8 (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) 
28399 H6) in (let H2 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt v t) 
28400 \to (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T 
28401 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead 
28402 (Flat Appl) v1 (THead (Bind b) u1 t0)) H6) in (ex2_sym T (pr0 (THead (Flat 
28403 Appl) v1 (THead (Bind b) u1 t0))) (pr0 (THead (Bind b) u2 (THead (Flat Appl) 
28404 (lift (S O) O v2) t3))) (pr0_confluence__pr0_cong_upsilon_refl b H9 u1 u2 H11 
28405 t0 t3 H12 v1 v2 v2 H10 (pr0_refl v2))))) t2 H0)) t (sym_eq T t t2 H14))) t4 
28406 (sym_eq T t4 t H8) H13))) | (pr0_comp u0 u3 H8 t4 t5 H9 k) \Rightarrow 
28407 (\lambda (H13: (eq T (THead k u0 t4) t)).(\lambda (H14: (eq T (THead k u3 t5) 
28408 t2)).(eq_ind T (THead k u0 t4) (\lambda (_: T).((eq T (THead k u3 t5) t2) \to 
28409 ((pr0 u0 u3) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind 
28410 b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 t2 
28411 t0))))))) (\lambda (H15: (eq T (THead k u3 t5) t2)).(eq_ind T (THead k u3 t5) 
28412 (\lambda (t: T).((pr0 u0 u3) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: 
28413 T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) 
28414 (\lambda (t0: T).(pr0 t t0)))))) (\lambda (H16: (pr0 u0 u3)).(\lambda (H17: 
28415 (pr0 t4 t5)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Flat 
28416 Appl) v1 (THead (Bind b) u1 t0)) t)) H6 (THead k u0 t4) H13) in (let H1 \def 
28417 (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead k 
28418 u0 t4)) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat 
28419 Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead k u3 t5) 
28420 t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Flat Appl) 
28421 v1 (THead (Bind b) u1 t0)) (THead k u0 t4))).(let H1 \def (f_equal T T 
28422 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
28423 \Rightarrow (THead (Bind b) u1 t0) | (TLRef _) \Rightarrow (THead (Bind b) u1 
28424 t0) | (THead _ _ t) \Rightarrow t])) (THead (Flat Appl) v1 (THead (Bind b) u1 
28425 t0)) (THead k u0 t4) H0) in ((let H2 \def (f_equal T T (\lambda (e: T).(match 
28426 e return (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef _) 
28427 \Rightarrow v1 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) v1 (THead 
28428 (Bind b) u1 t0)) (THead k u0 t4) H0) in ((let H3 \def (f_equal T K (\lambda 
28429 (e: T).(match e return (\lambda (_: T).K) with [(TSort _) \Rightarrow (Flat 
28430 Appl) | (TLRef _) \Rightarrow (Flat Appl) | (THead k _ _) \Rightarrow k])) 
28431 (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) (THead k u0 t4) H0) in (eq_ind 
28432 K (Flat Appl) (\lambda (k: K).((eq T v1 u0) \to ((eq T (THead (Bind b) u1 t0) 
28433 t4) \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) 
28434 (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead k u3 t5) t)))))) 
28435 (\lambda (H14: (eq T v1 u0)).(eq_ind T u0 (\lambda (_: T).((eq T (THead (Bind 
28436 b) u1 t0) t4) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead 
28437 (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead (Flat 
28438 Appl) u3 t5) t0))))) (\lambda (H15: (eq T (THead (Bind b) u1 t0) t4)).(eq_ind 
28439 T (THead (Bind b) u1 t0) (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 (THead 
28440 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: 
28441 T).(pr0 (THead (Flat Appl) u3 t5) t0)))) (let H4 \def (eq_ind_r K k (\lambda 
28442 (k: K).(eq T (THead k u0 t4) t)) H13 (Flat Appl) H3) in (let H5 \def 
28443 (eq_ind_r T t4 (\lambda (t: T).(pr0 t t5)) H17 (THead (Bind b) u1 t0) H15) in 
28444 (let H6 \def (match H5 return (\lambda (t: T).(\lambda (t1: T).(\lambda (_: 
28445 (pr0 t t1)).((eq T t (THead (Bind b) u1 t0)) \to ((eq T t1 t5) \to (ex2 T 
28446 (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
28447 t3)) t0)) (\lambda (t0: T).(pr0 (THead (Flat Appl) u3 t5) t0)))))))) with 
28448 [(pr0_refl t2) \Rightarrow (\lambda (H0: (eq T t2 (THead (Bind b) u1 
28449 t0))).(\lambda (H1: (eq T t2 t5)).(eq_ind T (THead (Bind b) u1 t0) (\lambda 
28450 (t: T).((eq T t t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 
28451 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead 
28452 (Flat Appl) u3 t5) t0))))) (\lambda (H2: (eq T (THead (Bind b) u1 t0) 
28453 t5)).(eq_ind T (THead (Bind b) u1 t0) (\lambda (t: T).(ex2 T (\lambda (t0: 
28454 T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) 
28455 (\lambda (t0: T).(pr0 (THead (Flat Appl) u3 t) t0)))) (let H3 \def (eq_ind_r 
28456 T t4 (\lambda (t0: T).(eq T (THead (Flat Appl) u0 t0) t)) H4 (THead (Bind b) 
28457 u1 t0) H15) in (let H4 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: 
28458 T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v 
28459 t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 
28460 t0)))))))))) H (THead (Flat Appl) u0 (THead (Bind b) u1 t0)) H3) in (let H5 
28461 \def (eq_ind T v1 (\lambda (t: T).(pr0 t v2)) H10 u0 H14) in (ex2_ind T 
28462 (\lambda (t: T).(pr0 v2 t)) (\lambda (t: T).(pr0 u3 t)) (ex2 T (\lambda (t: 
28463 T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) 
28464 (\lambda (t: T).(pr0 (THead (Flat Appl) u3 (THead (Bind b) u1 t0)) t))) 
28465 (\lambda (x: T).(\lambda (H6: (pr0 v2 x)).(\lambda (H7: (pr0 u3 x)).(ex2_sym 
28466 T (pr0 (THead (Flat Appl) u3 (THead (Bind b) u1 t0))) (pr0 (THead (Bind b) u2 
28467 (THead (Flat Appl) (lift (S O) O v2) t3))) 
28468 (pr0_confluence__pr0_cong_upsilon_refl b H9 u1 u2 H11 t0 t3 H12 u3 v2 x H7 
28469 H6))))) (H4 u0 (tlt_head_sx (Flat Appl) u0 (THead (Bind b) u1 t0)) v2 H5 u3 
28470 H16))))) t5 H2)) t2 (sym_eq T t2 (THead (Bind b) u1 t0) H0) H1))) | (pr0_comp 
28471 u4 u5 H0 t2 t6 H1 k) \Rightarrow (\lambda (H6: (eq T (THead k u4 t2) (THead 
28472 (Bind b) u1 t0))).(\lambda (H13: (eq T (THead k u5 t6) t5)).((let H2 \def 
28473 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
28474 _) \Rightarrow t2 | (TLRef _) \Rightarrow t2 | (THead _ _ t) \Rightarrow t])) 
28475 (THead k u4 t2) (THead (Bind b) u1 t0) H6) in ((let H3 \def (f_equal T T 
28476 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
28477 \Rightarrow u4 | (TLRef _) \Rightarrow u4 | (THead _ t _) \Rightarrow t])) 
28478 (THead k u4 t2) (THead (Bind b) u1 t0) H6) in ((let H5 \def (f_equal T K 
28479 (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort _) 
28480 \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) \Rightarrow k])) 
28481 (THead k u4 t2) (THead (Bind b) u1 t0) H6) in (eq_ind K (Bind b) (\lambda 
28482 (k0: K).((eq T u4 u1) \to ((eq T t2 t0) \to ((eq T (THead k0 u5 t6) t5) \to 
28483 ((pr0 u4 u5) \to ((pr0 t2 t6) \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) 
28484 u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead 
28485 (Flat Appl) u3 t5) t))))))))) (\lambda (H7: (eq T u4 u1)).(eq_ind T u1 
28486 (\lambda (t: T).((eq T t2 t0) \to ((eq T (THead (Bind b) u5 t6) t5) \to ((pr0 
28487 t u5) \to ((pr0 t2 t6) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 
28488 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead 
28489 (Flat Appl) u3 t5) t0)))))))) (\lambda (H17: (eq T t2 t0)).(eq_ind T t0 
28490 (\lambda (t: T).((eq T (THead (Bind b) u5 t6) t5) \to ((pr0 u1 u5) \to ((pr0 
28491 t t6) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) 
28492 (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead (Flat Appl) u3 t5) 
28493 t0))))))) (\lambda (H8: (eq T (THead (Bind b) u5 t6) t5)).(eq_ind T (THead 
28494 (Bind b) u5 t6) (\lambda (t: T).((pr0 u1 u5) \to ((pr0 t0 t6) \to (ex2 T 
28495 (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
28496 t3)) t0)) (\lambda (t0: T).(pr0 (THead (Flat Appl) u3 t) t0)))))) (\lambda 
28497 (H18: (pr0 u1 u5)).(\lambda (H19: (pr0 t0 t6)).(let H15 \def (eq_ind_r T t4 
28498 (\lambda (t0: T).(eq T (THead (Flat Appl) u0 t0) t)) H4 (THead (Bind b) u1 
28499 t0) H15) in (let H20 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt 
28500 v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to 
28501 (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H 
28502 (THead (Flat Appl) u0 (THead (Bind b) u1 t0)) H15) in (let H4 \def (eq_ind T 
28503 v1 (\lambda (t: T).(pr0 t v2)) H10 u0 H14) in (ex2_ind T (\lambda (t: T).(pr0 
28504 v2 t)) (\lambda (t: T).(pr0 u3 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind 
28505 b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 
28506 (THead (Flat Appl) u3 (THead (Bind b) u5 t6)) t))) (\lambda (x: T).(\lambda 
28507 (H10: (pr0 v2 x)).(\lambda (H14: (pr0 u3 x)).(ex2_ind T (\lambda (t: T).(pr0 
28508 t6 t)) (\lambda (t: T).(pr0 t3 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind 
28509 b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 
28510 (THead (Flat Appl) u3 (THead (Bind b) u5 t6)) t))) (\lambda (x0: T).(\lambda 
28511 (H12: (pr0 t6 x0)).(\lambda (H16: (pr0 t3 x0)).(ex2_ind T (\lambda (t: 
28512 T).(pr0 u5 t)) (\lambda (t: T).(pr0 u2 t)) (ex2 T (\lambda (t: T).(pr0 (THead 
28513 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: 
28514 T).(pr0 (THead (Flat Appl) u3 (THead (Bind b) u5 t6)) t))) (\lambda (x1: 
28515 T).(\lambda (H11: (pr0 u5 x1)).(\lambda (H21: (pr0 u2 x1)).(ex2_sym T (pr0 
28516 (THead (Flat Appl) u3 (THead (Bind b) u5 t6))) (pr0 (THead (Bind b) u2 (THead 
28517 (Flat Appl) (lift (S O) O v2) t3))) (pr0_confluence__pr0_cong_upsilon_cong b 
28518 H9 u3 v2 x H14 H10 t6 t3 x0 H12 H16 u5 u2 x1 H11 H21))))) (H20 u1 (tlt_trans 
28519 (THead (Bind b) u1 t0) u1 (THead (Flat Appl) u0 (THead (Bind b) u1 t0)) 
28520 (tlt_head_sx (Bind b) u1 t0) (tlt_head_dx (Flat Appl) u0 (THead (Bind b) u1 
28521 t0))) u5 H18 u2 H11))))) (H20 t0 (tlt_trans (THead (Bind b) u1 t0) t0 (THead 
28522 (Flat Appl) u0 (THead (Bind b) u1 t0)) (tlt_head_dx (Bind b) u1 t0) 
28523 (tlt_head_dx (Flat Appl) u0 (THead (Bind b) u1 t0))) t6 H19 t3 H12))))) (H20 
28524 u0 (tlt_head_sx (Flat Appl) u0 (THead (Bind b) u1 t0)) v2 H4 u3 H16))))))) t5 
28525 H8)) t2 (sym_eq T t2 t0 H17))) u4 (sym_eq T u4 u1 H7))) k (sym_eq K k (Bind 
28526 b) H5))) H3)) H2)) H13 H0 H1))) | (pr0_beta u v0 v3 H0 t2 t6 H1) \Rightarrow 
28527 (\lambda (H6: (eq T (THead (Flat Appl) v0 (THead (Bind Abst) u t2)) (THead 
28528 (Bind b) u1 t0))).(\lambda (H13: (eq T (THead (Bind Abbr) v3 t6) t5)).((let 
28529 H2 \def (eq_ind T (THead (Flat Appl) v0 (THead (Bind Abst) u t2)) (\lambda 
28530 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
28531 False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k 
28532 return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) 
28533 \Rightarrow True])])) I (THead (Bind b) u1 t0) H6) in (False_ind ((eq T 
28534 (THead (Bind Abbr) v3 t6) t5) \to ((pr0 v0 v3) \to ((pr0 t2 t6) \to (ex2 T 
28535 (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
28536 t3)) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) u3 t5) t)))))) H2)) H13 H0 
28537 H1))) | (pr0_upsilon b0 H0 v0 v3 H1 u4 u5 H6 t2 t6 H13) \Rightarrow (\lambda 
28538 (H14: (eq T (THead (Flat Appl) v0 (THead (Bind b0) u4 t2)) (THead (Bind b) u1 
28539 t0))).(\lambda (H15: (eq T (THead (Bind b0) u5 (THead (Flat Appl) (lift (S O) 
28540 O v3) t6)) t5)).((let H2 \def (eq_ind T (THead (Flat Appl) v0 (THead (Bind 
28541 b0) u4 t2)) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
28542 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
28543 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
28544 False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u1 t0) H14) in 
28545 (False_ind ((eq T (THead (Bind b0) u5 (THead (Flat Appl) (lift (S O) O v3) 
28546 t6)) t5) \to ((not (eq B b0 Abst)) \to ((pr0 v0 v3) \to ((pr0 u4 u5) \to 
28547 ((pr0 t2 t6) \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead (Flat 
28548 Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) u3 
28549 t5) t)))))))) H2)) H15 H0 H1 H6 H13))) | (pr0_delta u4 u5 H0 t2 t6 H1 w H6) 
28550 \Rightarrow (\lambda (H13: (eq T (THead (Bind Abbr) u4 t2) (THead (Bind b) u1 
28551 t0))).(\lambda (H17: (eq T (THead (Bind Abbr) u5 w) t5)).((let H2 \def 
28552 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
28553 _) \Rightarrow t2 | (TLRef _) \Rightarrow t2 | (THead _ _ t) \Rightarrow t])) 
28554 (THead (Bind Abbr) u4 t2) (THead (Bind b) u1 t0) H13) in ((let H3 \def 
28555 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
28556 _) \Rightarrow u4 | (TLRef _) \Rightarrow u4 | (THead _ t _) \Rightarrow t])) 
28557 (THead (Bind Abbr) u4 t2) (THead (Bind b) u1 t0) H13) in ((let H5 \def 
28558 (f_equal T B (\lambda (e: T).(match e return (\lambda (_: T).B) with [(TSort 
28559 _) \Rightarrow Abbr | (TLRef _) \Rightarrow Abbr | (THead k _ _) \Rightarrow 
28560 (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) 
28561 \Rightarrow Abbr])])) (THead (Bind Abbr) u4 t2) (THead (Bind b) u1 t0) H13) 
28562 in (eq_ind B Abbr (\lambda (b: B).((eq T u4 u1) \to ((eq T t2 t0) \to ((eq T 
28563 (THead (Bind Abbr) u5 w) t5) \to ((pr0 u4 u5) \to ((pr0 t2 t6) \to ((subst0 O 
28564 u5 t6 w) \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead (Flat 
28565 Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) u3 
28566 t5) t)))))))))) (\lambda (H7: (eq T u4 u1)).(eq_ind T u1 (\lambda (t: T).((eq 
28567 T t2 t0) \to ((eq T (THead (Bind Abbr) u5 w) t5) \to ((pr0 t u5) \to ((pr0 t2 
28568 t6) \to ((subst0 O u5 t6 w) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind 
28569 Abbr) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 
28570 (THead (Flat Appl) u3 t5) t0))))))))) (\lambda (H18: (eq T t2 t0)).(eq_ind T 
28571 t0 (\lambda (t: T).((eq T (THead (Bind Abbr) u5 w) t5) \to ((pr0 u1 u5) \to 
28572 ((pr0 t t6) \to ((subst0 O u5 t6 w) \to (ex2 T (\lambda (t0: T).(pr0 (THead 
28573 (Bind Abbr) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: 
28574 T).(pr0 (THead (Flat Appl) u3 t5) t0)))))))) (\lambda (H19: (eq T (THead 
28575 (Bind Abbr) u5 w) t5)).(eq_ind T (THead (Bind Abbr) u5 w) (\lambda (t: 
28576 T).((pr0 u1 u5) \to ((pr0 t0 t6) \to ((subst0 O u5 t6 w) \to (ex2 T (\lambda 
28577 (t0: T).(pr0 (THead (Bind Abbr) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) 
28578 t0)) (\lambda (t0: T).(pr0 (THead (Flat Appl) u3 t) t0))))))) (\lambda (H20: 
28579 (pr0 u1 u5)).(\lambda (H21: (pr0 t0 t6)).(\lambda (H22: (subst0 O u5 t6 
28580 w)).(let H15 \def (eq_ind_r B b (\lambda (b: B).(eq T (THead (Bind b) u1 t0) 
28581 t4)) H15 Abbr H5) in (let H9 \def (eq_ind_r B b (\lambda (b: B).(not (eq B b 
28582 Abst))) H9 Abbr H5) in (let H23 \def (eq_ind_r B b (\lambda (b: B).(eq T 
28583 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t1)) H8 Abbr H5) 
28584 in (let H4 \def (eq_ind_r T t4 (\lambda (t0: T).(eq T (THead (Flat Appl) u0 
28585 t0) t)) H4 (THead (Bind Abbr) u1 t0) H15) in (let H8 \def (eq_ind_r T t 
28586 (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) 
28587 \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
28588 (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Flat Appl) u0 (THead (Bind 
28589 Abbr) u1 t0)) H4) in (let H10 \def (eq_ind T v1 (\lambda (t: T).(pr0 t v2)) 
28590 H10 u0 H14) in (ex2_ind T (\lambda (t: T).(pr0 v2 t)) (\lambda (t: T).(pr0 u3 
28591 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 (THead (Flat Appl) 
28592 (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) u3 (THead 
28593 (Bind Abbr) u5 w)) t))) (\lambda (x: T).(\lambda (H14: (pr0 v2 x)).(\lambda 
28594 (H16: (pr0 u3 x)).(ex2_ind T (\lambda (t: T).(pr0 t6 t)) (\lambda (t: T).(pr0 
28595 t3 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 (THead (Flat Appl) 
28596 (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) u3 (THead 
28597 (Bind Abbr) u5 w)) t))) (\lambda (x0: T).(\lambda (H12: (pr0 t6 x0)).(\lambda 
28598 (H24: (pr0 t3 x0)).(ex2_ind T (\lambda (t: T).(pr0 u5 t)) (\lambda (t: 
28599 T).(pr0 u2 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 (THead (Flat 
28600 Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead (Flat Appl) u3 
28601 (THead (Bind Abbr) u5 w)) t))) (\lambda (x1: T).(\lambda (H11: (pr0 u5 
28602 x1)).(\lambda (H25: (pr0 u2 x1)).(ex2_sym T (pr0 (THead (Flat Appl) u3 (THead 
28603 (Bind Abbr) u5 w))) (pr0 (THead (Bind Abbr) u2 (THead (Flat Appl) (lift (S O) 
28604 O v2) t3))) (pr0_confluence__pr0_cong_upsilon_delta H9 u5 t6 w H22 u3 v2 x 
28605 H16 H14 t3 x0 H12 H24 u2 x1 H11 H25))))) (H8 u1 (tlt_trans (THead (Bind Abbr) 
28606 u1 t0) u1 (THead (Flat Appl) u0 (THead (Bind Abbr) u1 t0)) (tlt_head_sx (Bind 
28607 Abbr) u1 t0) (tlt_head_dx (Flat Appl) u0 (THead (Bind Abbr) u1 t0))) u5 H20 
28608 u2 H11))))) (H8 t0 (tlt_trans (THead (Bind Abbr) u1 t0) t0 (THead (Flat Appl) 
28609 u0 (THead (Bind Abbr) u1 t0)) (tlt_head_dx (Bind Abbr) u1 t0) (tlt_head_dx 
28610 (Flat Appl) u0 (THead (Bind Abbr) u1 t0))) t6 H21 t3 H12))))) (H8 u0 
28611 (tlt_head_sx (Flat Appl) u0 (THead (Bind Abbr) u1 t0)) v2 H10 u3 
28612 H16))))))))))) t5 H19)) t2 (sym_eq T t2 t0 H18))) u4 (sym_eq T u4 u1 H7))) b 
28613 H5)) H3)) H2)) H17 H0 H1 H6))) | (pr0_zeta b0 H0 t2 t6 H1 u) \Rightarrow 
28614 (\lambda (H6: (eq T (THead (Bind b0) u (lift (S O) O t2)) (THead (Bind b) u1 
28615 t0))).(\lambda (H13: (eq T t6 t5)).((let H2 \def (f_equal T T (\lambda (e: 
28616 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow ((let rec 
28617 lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t with 
28618 [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i 
28619 d) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) 
28620 \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) 
28621 (\lambda (x: nat).(plus x (S O))) O t2) | (TLRef _) \Rightarrow ((let rec 
28622 lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t with 
28623 [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i 
28624 d) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) 
28625 \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) 
28626 (\lambda (x: nat).(plus x (S O))) O t2) | (THead _ _ t) \Rightarrow t])) 
28627 (THead (Bind b0) u (lift (S O) O t2)) (THead (Bind b) u1 t0) H6) in ((let H3 
28628 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
28629 [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t _) 
28630 \Rightarrow t])) (THead (Bind b0) u (lift (S O) O t2)) (THead (Bind b) u1 t0) 
28631 H6) in ((let H5 \def (f_equal T B (\lambda (e: T).(match e return (\lambda 
28632 (_: T).B) with [(TSort _) \Rightarrow b0 | (TLRef _) \Rightarrow b0 | (THead 
28633 k _ _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
28634 \Rightarrow b | (Flat _) \Rightarrow b0])])) (THead (Bind b0) u (lift (S O) O 
28635 t2)) (THead (Bind b) u1 t0) H6) in (eq_ind B b (\lambda (b1: B).((eq T u u1) 
28636 \to ((eq T (lift (S O) O t2) t0) \to ((eq T t6 t5) \to ((not (eq B b1 Abst)) 
28637 \to ((pr0 t2 t6) \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead 
28638 (Flat Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead (Flat 
28639 Appl) u3 t5) t))))))))) (\lambda (H7: (eq T u u1)).(eq_ind T u1 (\lambda (_: 
28640 T).((eq T (lift (S O) O t2) t0) \to ((eq T t6 t5) \to ((not (eq B b Abst)) 
28641 \to ((pr0 t2 t6) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead 
28642 (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead (Flat 
28643 Appl) u3 t5) t0)))))))) (\lambda (H17: (eq T (lift (S O) O t2) t0)).(eq_ind T 
28644 (lift (S O) O t2) (\lambda (_: T).((eq T t6 t5) \to ((not (eq B b Abst)) \to 
28645 ((pr0 t2 t6) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat 
28646 Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead (Flat Appl) u3 
28647 t5) t0))))))) (\lambda (H8: (eq T t6 t5)).(eq_ind T t5 (\lambda (t: T).((not 
28648 (eq B b Abst)) \to ((pr0 t2 t) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind 
28649 b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 
28650 (THead (Flat Appl) u3 t5) t0)))))) (\lambda (H18: (not (eq B b 
28651 Abst))).(\lambda (H19: (pr0 t2 t5)).(let H9 \def (eq_ind_r T t0 (\lambda (t: 
28652 T).(eq T (THead (Bind b) u1 t) t4)) H15 (lift (S O) O t2) H17) in (let H15 
28653 \def (eq_ind_r T t4 (\lambda (t0: T).(eq T (THead (Flat Appl) u0 t0) t)) H4 
28654 (THead (Bind b) u1 (lift (S O) O t2)) H9) in (let H20 \def (eq_ind_r T t 
28655 (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) 
28656 \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
28657 (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Flat Appl) u0 (THead (Bind b) 
28658 u1 (lift (S O) O t2))) H15) in (let H12 \def (eq_ind_r T t0 (\lambda (t: 
28659 T).(pr0 t t3)) H12 (lift (S O) O t2) H17) in (ex2_ind T (\lambda (t4: T).(eq 
28660 T t3 (lift (S O) O t4))) (\lambda (t3: T).(pr0 t2 t3)) (ex2 T (\lambda (t: 
28661 T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) 
28662 (\lambda (t: T).(pr0 (THead (Flat Appl) u3 t5) t))) (\lambda (x: T).(\lambda 
28663 (H21: (eq T t3 (lift (S O) O x))).(\lambda (H22: (pr0 t2 x)).(eq_ind_r T 
28664 (lift (S O) O x) (\lambda (t: T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) 
28665 u2 (THead (Flat Appl) (lift (S O) O v2) t)) t0)) (\lambda (t0: T).(pr0 (THead 
28666 (Flat Appl) u3 t5) t0)))) (let H4 \def (eq_ind T v1 (\lambda (t: T).(pr0 t 
28667 v2)) H10 u0 H14) in (ex2_ind T (\lambda (t: T).(pr0 v2 t)) (\lambda (t: 
28668 T).(pr0 u3 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead (Flat 
28669 Appl) (lift (S O) O v2) (lift (S O) O x))) t)) (\lambda (t: T).(pr0 (THead 
28670 (Flat Appl) u3 t5) t))) (\lambda (x0: T).(\lambda (H10: (pr0 v2 x0)).(\lambda 
28671 (H14: (pr0 u3 x0)).(ex2_ind T (\lambda (t: T).(pr0 x t)) (\lambda (t: T).(pr0 
28672 t5 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) 
28673 (lift (S O) O v2) (lift (S O) O x))) t)) (\lambda (t: T).(pr0 (THead (Flat 
28674 Appl) u3 t5) t))) (\lambda (x1: T).(\lambda (H16: (pr0 x x1)).(\lambda (H23: 
28675 (pr0 t5 x1)).(ex2_sym T (pr0 (THead (Flat Appl) u3 t5)) (pr0 (THead (Bind b) 
28676 u2 (THead (Flat Appl) (lift (S O) O v2) (lift (S O) O x)))) 
28677 (pr0_confluence__pr0_cong_upsilon_zeta b H18 u1 u2 H11 u3 v2 x0 H14 H10 x t5 
28678 x1 H16 H23))))) (H20 t2 (tlt_trans (THead (Bind b) u1 (lift (S O) O t2)) t2 
28679 (THead (Flat Appl) u0 (THead (Bind b) u1 (lift (S O) O t2))) (lift_tlt_dx 
28680 (Bind b) u1 t2 (S O) O) (tlt_head_dx (Flat Appl) u0 (THead (Bind b) u1 (lift 
28681 (S O) O t2)))) x H22 t5 H19))))) (H20 u0 (tlt_head_sx (Flat Appl) u0 (THead 
28682 (Bind b) u1 (lift (S O) O t2))) v2 H4 u3 H16))) t3 H21)))) (pr0_gen_lift t2 
28683 t3 (S O) O H12)))))))) t6 (sym_eq T t6 t5 H8))) t0 H17)) u (sym_eq T u u1 
28684 H7))) b0 (sym_eq B b0 b H5))) H3)) H2)) H13 H0 H1))) | (pr0_epsilon t2 t6 H0 
28685 u) \Rightarrow (\lambda (H1: (eq T (THead (Flat Cast) u t2) (THead (Bind b) 
28686 u1 t0))).(\lambda (H6: (eq T t6 t5)).((let H2 \def (eq_ind T (THead (Flat 
28687 Cast) u t2) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
28688 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
28689 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
28690 False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u1 t0) H1) in 
28691 (False_ind ((eq T t6 t5) \to ((pr0 t2 t6) \to (ex2 T (\lambda (t: T).(pr0 
28692 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: 
28693 T).(pr0 (THead (Flat Appl) u3 t5) t))))) H2)) H6 H0)))]) in (H6 (refl_equal T 
28694 (THead (Bind b) u1 t0)) (refl_equal T t5))))) t4 H15)) v1 (sym_eq T v1 u0 
28695 H14))) k H3)) H2)) H1)))]) in (H1 (refl_equal T (THead k u0 t4))))))) t2 
28696 H15)) t H13 H14 H8 H9))) | (pr0_beta u v0 v3 H8 t4 t5 H9) \Rightarrow 
28697 (\lambda (H10: (eq T (THead (Flat Appl) v0 (THead (Bind Abst) u t4)) 
28698 t)).(\lambda (H13: (eq T (THead (Bind Abbr) v3 t5) t2)).(eq_ind T (THead 
28699 (Flat Appl) v0 (THead (Bind Abst) u t4)) (\lambda (_: T).((eq T (THead (Bind 
28700 Abbr) v3 t5) t2) \to ((pr0 v0 v3) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: 
28701 T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) 
28702 (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda (H14: (eq T (THead (Bind Abbr) v3 
28703 t5) t2)).(eq_ind T (THead (Bind Abbr) v3 t5) (\lambda (t: T).((pr0 v0 v3) \to 
28704 ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat 
28705 Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 t t0)))))) (\lambda 
28706 (_: (pr0 v0 v3)).(\lambda (_: (pr0 t4 t5)).(let H0 \def (eq_ind_r T t 
28707 (\lambda (t: T).(eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) t)) H6 
28708 (THead (Flat Appl) v0 (THead (Bind Abst) u t4)) H10) in (let H1 \def (match 
28709 H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Flat 
28710 Appl) v0 (THead (Bind Abst) u t4))) \to (ex2 T (\lambda (t0: T).(pr0 (THead 
28711 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: 
28712 T).(pr0 (THead (Bind Abbr) v3 t5) t0)))))) with [refl_equal \Rightarrow 
28713 (\lambda (H0: (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) (THead 
28714 (Flat Appl) v0 (THead (Bind Abst) u t4)))).(let H1 \def (f_equal T T (\lambda 
28715 (e: T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | 
28716 (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow (match t return (\lambda 
28717 (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead 
28718 _ _ t0) \Rightarrow t0])])) (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) 
28719 (THead (Flat Appl) v0 (THead (Bind Abst) u t4)) H0) in ((let H2 \def (f_equal 
28720 T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
28721 \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ _ t) \Rightarrow (match 
28722 t return (\lambda (_: T).T) with [(TSort _) \Rightarrow u1 | (TLRef _) 
28723 \Rightarrow u1 | (THead _ t0 _) \Rightarrow t0])])) (THead (Flat Appl) v1 
28724 (THead (Bind b) u1 t0)) (THead (Flat Appl) v0 (THead (Bind Abst) u t4)) H0) 
28725 in ((let H3 \def (f_equal T B (\lambda (e: T).(match e return (\lambda (_: 
28726 T).B) with [(TSort _) \Rightarrow b | (TLRef _) \Rightarrow b | (THead _ _ t) 
28727 \Rightarrow (match t return (\lambda (_: T).B) with [(TSort _) \Rightarrow b 
28728 | (TLRef _) \Rightarrow b | (THead k _ _) \Rightarrow (match k return 
28729 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
28730 b])])])) (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) (THead (Flat Appl) v0 
28731 (THead (Bind Abst) u t4)) H0) in ((let H4 \def (f_equal T T (\lambda (e: 
28732 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef 
28733 _) \Rightarrow v1 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) v1 
28734 (THead (Bind b) u1 t0)) (THead (Flat Appl) v0 (THead (Bind Abst) u t4)) H0) 
28735 in (eq_ind T v0 (\lambda (_: T).((eq B b Abst) \to ((eq T u1 u) \to ((eq T t0 
28736 t4) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) 
28737 (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) v3 t5) 
28738 t0))))))) (\lambda (H13: (eq B b Abst)).(eq_ind B Abst (\lambda (b: B).((eq T 
28739 u1 u) \to ((eq T t0 t4) \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 
28740 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead 
28741 (Bind Abbr) v3 t5) t)))))) (\lambda (H14: (eq T u1 u)).(eq_ind T u (\lambda 
28742 (_: T).((eq T t0 t4) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abst) u2 
28743 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead 
28744 (Bind Abbr) v3 t5) t0))))) (\lambda (H15: (eq T t0 t4)).(eq_ind T t4 (\lambda 
28745 (_: T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abst) u2 (THead (Flat Appl) 
28746 (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) v3 t5) 
28747 t0)))) (let H5 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt v t) 
28748 \to (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T 
28749 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead 
28750 (Flat Appl) v0 (THead (Bind Abst) u t4)) H10) in (let H6 \def (eq_ind T t0 
28751 (\lambda (t: T).(pr0 t t3)) H12 t4 H15) in (let H7 \def (eq_ind T u1 (\lambda 
28752 (t: T).(pr0 t u2)) H11 u H14) in (let H8 \def (eq_ind B b (\lambda (b: 
28753 B).(not (eq B b Abst))) H9 Abst H13) in (let H9 \def (match (H8 (refl_equal B 
28754 Abst)) return (\lambda (_: False).(ex2 T (\lambda (t: T).(pr0 (THead (Bind 
28755 Abst) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 
28756 (THead (Bind Abbr) v3 t5) t)))) with []) in H9))))) t0 (sym_eq T t0 t4 H15))) 
28757 u1 (sym_eq T u1 u H14))) b (sym_eq B b Abst H13))) v1 (sym_eq T v1 v0 H4))) 
28758 H3)) H2)) H1)))]) in (H1 (refl_equal T (THead (Flat Appl) v0 (THead (Bind 
28759 Abst) u t4)))))))) t2 H14)) t H10 H13 H8 H9))) | (pr0_upsilon b0 H8 v0 v3 H9 
28760 u0 u3 H10 t4 t5 H11) \Rightarrow (\lambda (H13: (eq T (THead (Flat Appl) v0 
28761 (THead (Bind b0) u0 t4)) t)).(\lambda (H14: (eq T (THead (Bind b0) u3 (THead 
28762 (Flat Appl) (lift (S O) O v3) t5)) t2)).(eq_ind T (THead (Flat Appl) v0 
28763 (THead (Bind b0) u0 t4)) (\lambda (_: T).((eq T (THead (Bind b0) u3 (THead 
28764 (Flat Appl) (lift (S O) O v3) t5)) t2) \to ((not (eq B b0 Abst)) \to ((pr0 v0 
28765 v3) \to ((pr0 u0 u3) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead 
28766 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: 
28767 T).(pr0 t2 t0))))))))) (\lambda (H15: (eq T (THead (Bind b0) u3 (THead (Flat 
28768 Appl) (lift (S O) O v3) t5)) t2)).(eq_ind T (THead (Bind b0) u3 (THead (Flat 
28769 Appl) (lift (S O) O v3) t5)) (\lambda (t: T).((not (eq B b0 Abst)) \to ((pr0 
28770 v0 v3) \to ((pr0 u0 u3) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 
28771 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda 
28772 (t0: T).(pr0 t t0)))))))) (\lambda (_: (not (eq B b0 Abst))).(\lambda (H17: 
28773 (pr0 v0 v3)).(\lambda (H18: (pr0 u0 u3)).(\lambda (H19: (pr0 t4 t5)).(let H0 
28774 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Flat Appl) v1 (THead (Bind 
28775 b) u1 t0)) t)) H6 (THead (Flat Appl) v0 (THead (Bind b0) u0 t4)) H13) in (let 
28776 H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t 
28777 (THead (Flat Appl) v0 (THead (Bind b0) u0 t4))) \to (ex2 T (\lambda (t0: 
28778 T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) 
28779 (\lambda (t0: T).(pr0 (THead (Bind b0) u3 (THead (Flat Appl) (lift (S O) O 
28780 v3) t5)) t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead 
28781 (Flat Appl) v1 (THead (Bind b) u1 t0)) (THead (Flat Appl) v0 (THead (Bind b0) 
28782 u0 t4)))).(let H1 \def (f_equal T T (\lambda (e: T).(match e return (\lambda 
28783 (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead 
28784 _ _ t) \Rightarrow (match t return (\lambda (_: T).T) with [(TSort _) 
28785 \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t0) \Rightarrow 
28786 t0])])) (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) (THead (Flat Appl) v0 
28787 (THead (Bind b0) u0 t4)) H0) in ((let H2 \def (f_equal T T (\lambda (e: 
28788 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow u1 | (TLRef 
28789 _) \Rightarrow u1 | (THead _ _ t) \Rightarrow (match t return (\lambda (_: 
28790 T).T) with [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t0 
28791 _) \Rightarrow t0])])) (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) (THead 
28792 (Flat Appl) v0 (THead (Bind b0) u0 t4)) H0) in ((let H3 \def (f_equal T B 
28793 (\lambda (e: T).(match e return (\lambda (_: T).B) with [(TSort _) 
28794 \Rightarrow b | (TLRef _) \Rightarrow b | (THead _ _ t) \Rightarrow (match t 
28795 return (\lambda (_: T).B) with [(TSort _) \Rightarrow b | (TLRef _) 
28796 \Rightarrow b | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).B) 
28797 with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b])])])) (THead (Flat 
28798 Appl) v1 (THead (Bind b) u1 t0)) (THead (Flat Appl) v0 (THead (Bind b0) u0 
28799 t4)) H0) in ((let H4 \def (f_equal T T (\lambda (e: T).(match e return 
28800 (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef _) \Rightarrow v1 
28801 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) v1 (THead (Bind b) u1 
28802 t0)) (THead (Flat Appl) v0 (THead (Bind b0) u0 t4)) H0) in (eq_ind T v0 
28803 (\lambda (_: T).((eq B b b0) \to ((eq T u1 u0) \to ((eq T t0 t4) \to (ex2 T 
28804 (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) 
28805 t3)) t0)) (\lambda (t0: T).(pr0 (THead (Bind b0) u3 (THead (Flat Appl) (lift 
28806 (S O) O v3) t5)) t0))))))) (\lambda (H14: (eq B b b0)).(eq_ind B b0 (\lambda 
28807 (b: B).((eq T u1 u0) \to ((eq T t0 t4) \to (ex2 T (\lambda (t: T).(pr0 (THead 
28808 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: 
28809 T).(pr0 (THead (Bind b0) u3 (THead (Flat Appl) (lift (S O) O v3) t5)) t)))))) 
28810 (\lambda (H15: (eq T u1 u0)).(eq_ind T u0 (\lambda (_: T).((eq T t0 t4) \to 
28811 (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b0) u2 (THead (Flat Appl) (lift (S 
28812 O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead (Bind b0) u3 (THead (Flat 
28813 Appl) (lift (S O) O v3) t5)) t0))))) (\lambda (H16: (eq T t0 t4)).(eq_ind T 
28814 t4 (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind b0) u2 (THead 
28815 (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 (THead (Bind 
28816 b0) u3 (THead (Flat Appl) (lift (S O) O v3) t5)) t0)))) (let H5 \def 
28817 (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: 
28818 T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: 
28819 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Flat Appl) v0 
28820 (THead (Bind b0) u0 t4)) H13) in (let H6 \def (eq_ind T t0 (\lambda (t: 
28821 T).(pr0 t t3)) H12 t4 H16) in (let H7 \def (eq_ind T u1 (\lambda (t: T).(pr0 
28822 t u2)) H11 u0 H15) in (let H8 \def (eq_ind B b (\lambda (b: B).(not (eq B b 
28823 Abst))) H9 b0 H14) in (let H9 \def (eq_ind T v1 (\lambda (t: T).(pr0 t v2)) 
28824 H10 v0 H4) in (ex2_ind T (\lambda (t: T).(pr0 v2 t)) (\lambda (t: T).(pr0 v3 
28825 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind b0) u2 (THead (Flat Appl) (lift 
28826 (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead (Bind b0) u3 (THead (Flat 
28827 Appl) (lift (S O) O v3) t5)) t))) (\lambda (x: T).(\lambda (H10: (pr0 v2 
28828 x)).(\lambda (H11: (pr0 v3 x)).(ex2_ind T (\lambda (t: T).(pr0 u2 t)) 
28829 (\lambda (t: T).(pr0 u3 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind b0) u2 
28830 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead 
28831 (Bind b0) u3 (THead (Flat Appl) (lift (S O) O v3) t5)) t))) (\lambda (x0: 
28832 T).(\lambda (H12: (pr0 u2 x0)).(\lambda (H13: (pr0 u3 x0)).(ex2_ind T 
28833 (\lambda (t: T).(pr0 t3 t)) (\lambda (t: T).(pr0 t5 t)) (ex2 T (\lambda (t: 
28834 T).(pr0 (THead (Bind b0) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) 
28835 (\lambda (t: T).(pr0 (THead (Bind b0) u3 (THead (Flat Appl) (lift (S O) O v3) 
28836 t5)) t))) (\lambda (x1: T).(\lambda (H17: (pr0 t3 x1)).(\lambda (H18: (pr0 t5 
28837 x1)).(pr0_confluence__pr0_upsilon_upsilon b0 H8 v2 v3 x H10 H11 u2 u3 x0 H12 
28838 H13 t3 t5 x1 H17 H18)))) (H5 t4 (tlt_trans (THead (Bind b0) u0 t4) t4 (THead 
28839 (Flat Appl) v0 (THead (Bind b0) u0 t4)) (tlt_head_dx (Bind b0) u0 t4) 
28840 (tlt_head_dx (Flat Appl) v0 (THead (Bind b0) u0 t4))) t3 H6 t5 H19))))) (H5 
28841 u0 (tlt_trans (THead (Bind b0) u0 t4) u0 (THead (Flat Appl) v0 (THead (Bind 
28842 b0) u0 t4)) (tlt_head_sx (Bind b0) u0 t4) (tlt_head_dx (Flat Appl) v0 (THead 
28843 (Bind b0) u0 t4))) u2 H7 u3 H18))))) (H5 v0 (tlt_head_sx (Flat Appl) v0 
28844 (THead (Bind b0) u0 t4)) v2 H9 v3 H17))))))) t0 (sym_eq T t0 t4 H16))) u1 
28845 (sym_eq T u1 u0 H15))) b (sym_eq B b b0 H14))) v1 (sym_eq T v1 v0 H4))) H3)) 
28846 H2)) H1)))]) in (H1 (refl_equal T (THead (Flat Appl) v0 (THead (Bind b0) u0 
28847 t4)))))))))) t2 H15)) t H13 H14 H8 H9 H10 H11))) | (pr0_delta u0 u3 H8 t4 t5 
28848 H9 w H10) \Rightarrow (\lambda (H11: (eq T (THead (Bind Abbr) u0 t4) 
28849 t)).(\lambda (H12: (eq T (THead (Bind Abbr) u3 w) t2)).(eq_ind T (THead (Bind 
28850 Abbr) u0 t4) (\lambda (_: T).((eq T (THead (Bind Abbr) u3 w) t2) \to ((pr0 u0 
28851 u3) \to ((pr0 t4 t5) \to ((subst0 O u3 t5 w) \to (ex2 T (\lambda (t0: T).(pr0 
28852 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda 
28853 (t0: T).(pr0 t2 t0)))))))) (\lambda (H13: (eq T (THead (Bind Abbr) u3 w) 
28854 t2)).(eq_ind T (THead (Bind Abbr) u3 w) (\lambda (t: T).((pr0 u0 u3) \to 
28855 ((pr0 t4 t5) \to ((subst0 O u3 t5 w) \to (ex2 T (\lambda (t0: T).(pr0 (THead 
28856 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: 
28857 T).(pr0 t t0))))))) (\lambda (_: (pr0 u0 u3)).(\lambda (_: (pr0 t4 
28858 t5)).(\lambda (_: (subst0 O u3 t5 w)).(let H0 \def (eq_ind_r T t (\lambda (t: 
28859 T).(eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) t)) H6 (THead (Bind 
28860 Abbr) u0 t4) H11) in (let H1 \def (match H0 return (\lambda (t: T).(\lambda 
28861 (_: (eq ? ? t)).((eq T t (THead (Bind Abbr) u0 t4)) \to (ex2 T (\lambda (t0: 
28862 T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) 
28863 (\lambda (t0: T).(pr0 (THead (Bind Abbr) u3 w) t0)))))) with [refl_equal 
28864 \Rightarrow (\lambda (H0: (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) 
28865 (THead (Bind Abbr) u0 t4))).(let H1 \def (eq_ind T (THead (Flat Appl) v1 
28866 (THead (Bind b) u1 t0)) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
28867 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ 
28868 _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) 
28869 \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind Abbr) u0 
28870 t4) H0) in (False_ind (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead 
28871 (Flat Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 (THead (Bind 
28872 Abbr) u3 w) t))) H1)))]) in (H1 (refl_equal T (THead (Bind Abbr) u0 
28873 t4)))))))) t2 H13)) t H11 H12 H8 H9 H10))) | (pr0_zeta b0 H8 t4 t5 H9 u) 
28874 \Rightarrow (\lambda (H10: (eq T (THead (Bind b0) u (lift (S O) O t4)) 
28875 t)).(\lambda (H11: (eq T t5 t2)).(eq_ind T (THead (Bind b0) u (lift (S O) O 
28876 t4)) (\lambda (_: T).((eq T t5 t2) \to ((not (eq B b0 Abst)) \to ((pr0 t4 t5) 
28877 \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift 
28878 (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda (H12: (eq T 
28879 t5 t2)).(eq_ind T t2 (\lambda (t: T).((not (eq B b0 Abst)) \to ((pr0 t4 t) 
28880 \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift 
28881 (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 t2 t0)))))) (\lambda (_: (not (eq 
28882 B b0 Abst))).(\lambda (_: (pr0 t4 t2)).(let H0 \def (eq_ind_r T t (\lambda 
28883 (t: T).(eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) t)) H6 (THead 
28884 (Bind b0) u (lift (S O) O t4)) H10) in (let H1 \def (match H0 return (\lambda 
28885 (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Bind b0) u (lift (S O) O 
28886 t4))) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) 
28887 (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 t2 t0)))))) with 
28888 [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Flat Appl) v1 (THead 
28889 (Bind b) u1 t0)) (THead (Bind b0) u (lift (S O) O t4)))).(let H1 \def (eq_ind 
28890 T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) (\lambda (e: T).(match e 
28891 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
28892 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
28893 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
28894 (THead (Bind b0) u (lift (S O) O t4)) H0) in (False_ind (ex2 T (\lambda (t: 
28895 T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t)) 
28896 (\lambda (t: T).(pr0 t2 t))) H1)))]) in (H1 (refl_equal T (THead (Bind b0) u 
28897 (lift (S O) O t4)))))))) t5 (sym_eq T t5 t2 H12))) t H10 H11 H8 H9))) | 
28898 (pr0_epsilon t4 t5 H8 u) \Rightarrow (\lambda (H9: (eq T (THead (Flat Cast) u 
28899 t4) t)).(\lambda (H10: (eq T t5 t2)).(eq_ind T (THead (Flat Cast) u t4) 
28900 (\lambda (_: T).((eq T t5 t2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: 
28901 T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) 
28902 (\lambda (t0: T).(pr0 t2 t0)))))) (\lambda (H11: (eq T t5 t2)).(eq_ind T t2 
28903 (\lambda (t: T).((pr0 t4 t) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind b) 
28904 u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) (\lambda (t0: T).(pr0 t2 
28905 t0))))) (\lambda (_: (pr0 t4 t2)).(let H0 \def (eq_ind_r T t (\lambda (t: 
28906 T).(eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) t)) H6 (THead (Flat 
28907 Cast) u t4) H9) in (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: 
28908 (eq ? ? t)).((eq T t (THead (Flat Cast) u t4)) \to (ex2 T (\lambda (t0: 
28909 T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t3)) t0)) 
28910 (\lambda (t0: T).(pr0 t2 t0)))))) with [refl_equal \Rightarrow (\lambda (H0: 
28911 (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) (THead (Flat Cast) u 
28912 t4))).(let H1 \def (eq_ind T (THead (Flat Appl) v1 (THead (Bind b) u1 t0)) 
28913 (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
28914 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
28915 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
28916 (Flat f) \Rightarrow (match f return (\lambda (_: F).Prop) with [Appl 
28917 \Rightarrow True | Cast \Rightarrow False])])])) I (THead (Flat Cast) u t4) 
28918 H0) in (False_ind (ex2 T (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead (Flat 
28919 Appl) (lift (S O) O v2) t3)) t)) (\lambda (t: T).(pr0 t2 t))) H1)))]) in (H1 
28920 (refl_equal T (THead (Flat Cast) u t4)))))) t5 (sym_eq T t5 t2 H11))) t H9 
28921 H10 H8)))]) in (H13 (refl_equal T t) (refl_equal T t2))))))) t1 H8)) t H6 H7 
28922 H2 H3 H4 H5))) | (pr0_delta u1 u2 H2 t0 t3 H3 w H4) \Rightarrow (\lambda (H5: 
28923 (eq T (THead (Bind Abbr) u1 t0) t)).(\lambda (H6: (eq T (THead (Bind Abbr) u2 
28924 w) t1)).(eq_ind T (THead (Bind Abbr) u1 t0) (\lambda (_: T).((eq T (THead 
28925 (Bind Abbr) u2 w) t1) \to ((pr0 u1 u2) \to ((pr0 t0 t3) \to ((subst0 O u2 t3 
28926 w) \to (ex2 T (\lambda (t2: T).(pr0 t1 t2)) (\lambda (t1: T).(pr0 t2 
28927 t1)))))))) (\lambda (H7: (eq T (THead (Bind Abbr) u2 w) t1)).(eq_ind T (THead 
28928 (Bind Abbr) u2 w) (\lambda (t: T).((pr0 u1 u2) \to ((pr0 t0 t3) \to ((subst0 
28929 O u2 t3 w) \to (ex2 T (\lambda (t1: T).(pr0 t t1)) (\lambda (t1: T).(pr0 t2 
28930 t1))))))) (\lambda (H8: (pr0 u1 u2)).(\lambda (H9: (pr0 t0 t3)).(\lambda 
28931 (H10: (subst0 O u2 t3 w)).(let H11 \def (match H1 return (\lambda (t0: 
28932 T).(\lambda (t1: T).(\lambda (_: (pr0 t0 t1)).((eq T t0 t) \to ((eq T t1 t2) 
28933 \to (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: 
28934 T).(pr0 t2 t)))))))) with [(pr0_refl t4) \Rightarrow (\lambda (H7: (eq T t4 
28935 t)).(\lambda (H11: (eq T t4 t2)).(eq_ind T t (\lambda (t: T).((eq T t t2) \to 
28936 (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: 
28937 T).(pr0 t2 t0))))) (\lambda (H12: (eq T t t2)).(eq_ind T t2 (\lambda (_: 
28938 T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: 
28939 T).(pr0 t2 t0)))) (let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T t t2)) H12 
28940 (THead (Bind Abbr) u1 t0) H5) in (eq_ind T (THead (Bind Abbr) u1 t0) (\lambda 
28941 (t: T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda 
28942 (t0: T).(pr0 t t0)))) (let H1 \def (eq_ind_r T t (\lambda (t: T).(eq T t4 t)) 
28943 H7 (THead (Bind Abbr) u1 t0) H5) in (let H2 \def (eq_ind_r T t (\lambda (t: 
28944 T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall 
28945 (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
28946 T).(pr0 t2 t0)))))))))) H (THead (Bind Abbr) u1 t0) H5) in (ex_intro2 T 
28947 (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 (THead 
28948 (Bind Abbr) u1 t0) t)) (THead (Bind Abbr) u2 w) (pr0_refl (THead (Bind Abbr) 
28949 u2 w)) (pr0_delta u1 u2 H8 t0 t3 H9 w H10)))) t2 H0)) t (sym_eq T t t2 H12))) 
28950 t4 (sym_eq T t4 t H7) H11))) | (pr0_comp u0 u3 H7 t4 t5 H8 k) \Rightarrow 
28951 (\lambda (H11: (eq T (THead k u0 t4) t)).(\lambda (H12: (eq T (THead k u3 t5) 
28952 t2)).(eq_ind T (THead k u0 t4) (\lambda (_: T).((eq T (THead k u3 t5) t2) \to 
28953 ((pr0 u0 u3) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind 
28954 Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda (H13: (eq T 
28955 (THead k u3 t5) t2)).(eq_ind T (THead k u3 t5) (\lambda (t: T).((pr0 u0 u3) 
28956 \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) 
28957 t0)) (\lambda (t0: T).(pr0 t t0)))))) (\lambda (H14: (pr0 u0 u3)).(\lambda 
28958 (H15: (pr0 t4 t5)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead 
28959 (Bind Abbr) u1 t0) t)) H5 (THead k u0 t4) H11) in (let H1 \def (match H0 
28960 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead k u0 t4)) \to 
28961 (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: 
28962 T).(pr0 (THead k u3 t5) t0)))))) with [refl_equal \Rightarrow (\lambda (H0: 
28963 (eq T (THead (Bind Abbr) u1 t0) (THead k u0 t4))).(let H1 \def (f_equal T T 
28964 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
28965 \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
28966 (THead (Bind Abbr) u1 t0) (THead k u0 t4) H0) in ((let H2 \def (f_equal T T 
28967 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
28968 \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t _) \Rightarrow t])) 
28969 (THead (Bind Abbr) u1 t0) (THead k u0 t4) H0) in ((let H3 \def (f_equal T K 
28970 (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort _) 
28971 \Rightarrow (Bind Abbr) | (TLRef _) \Rightarrow (Bind Abbr) | (THead k _ _) 
28972 \Rightarrow k])) (THead (Bind Abbr) u1 t0) (THead k u0 t4) H0) in (eq_ind K 
28973 (Bind Abbr) (\lambda (k: K).((eq T u1 u0) \to ((eq T t0 t4) \to (ex2 T 
28974 (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 (THead 
28975 k u3 t5) t)))))) (\lambda (H12: (eq T u1 u0)).(eq_ind T u0 (\lambda (_: 
28976 T).((eq T t0 t4) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) 
28977 t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) u3 t5) t0))))) (\lambda (H13: 
28978 (eq T t0 t4)).(eq_ind T t4 (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 
28979 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) u3 t5) 
28980 t0)))) (let H4 \def (eq_ind_r K k (\lambda (k: K).(eq T (THead k u0 t4) t)) 
28981 H11 (Bind Abbr) H3) in (let H5 \def (eq_ind_r T t (\lambda (t: T).(\forall 
28982 (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 
28983 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 
28984 t0)))))))))) H (THead (Bind Abbr) u0 t4) H4) in (let H6 \def (eq_ind T t0 
28985 (\lambda (t: T).(pr0 t t3)) H9 t4 H13) in (let H7 \def (eq_ind T u1 (\lambda 
28986 (t: T).(pr0 t u2)) H8 u0 H12) in (ex2_ind T (\lambda (t: T).(pr0 u2 t)) 
28987 (\lambda (t: T).(pr0 u3 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 
28988 w) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 t5) t))) (\lambda (x: 
28989 T).(\lambda (H8: (pr0 u2 x)).(\lambda (H9: (pr0 u3 x)).(ex2_ind T (\lambda 
28990 (t: T).(pr0 t3 t)) (\lambda (t: T).(pr0 t5 t)) (ex2 T (\lambda (t: T).(pr0 
28991 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u3 t5) 
28992 t))) (\lambda (x0: T).(\lambda (H11: (pr0 t3 x0)).(\lambda (H14: (pr0 t5 
28993 x0)).(ex2_sym T (pr0 (THead (Bind Abbr) u3 t5)) (pr0 (THead (Bind Abbr) u2 
28994 w)) (pr0_confluence__pr0_cong_delta u2 t3 w H10 u3 x H9 H8 t5 x0 H14 H11))))) 
28995 (H5 t4 (tlt_head_dx (Bind Abbr) u0 t4) t3 H6 t5 H15))))) (H5 u0 (tlt_head_sx 
28996 (Bind Abbr) u0 t4) u2 H7 u3 H14)))))) t0 (sym_eq T t0 t4 H13))) u1 (sym_eq T 
28997 u1 u0 H12))) k H3)) H2)) H1)))]) in (H1 (refl_equal T (THead k u0 t4))))))) 
28998 t2 H13)) t H11 H12 H7 H8))) | (pr0_beta u v1 v2 H7 t4 t5 H8) \Rightarrow 
28999 (\lambda (H9: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u t4)) 
29000 t)).(\lambda (H10: (eq T (THead (Bind Abbr) v2 t5) t2)).(eq_ind T (THead 
29001 (Flat Appl) v1 (THead (Bind Abst) u t4)) (\lambda (_: T).((eq T (THead (Bind 
29002 Abbr) v2 t5) t2) \to ((pr0 v1 v2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: 
29003 T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 t2 t0))))))) 
29004 (\lambda (H11: (eq T (THead (Bind Abbr) v2 t5) t2)).(eq_ind T (THead (Bind 
29005 Abbr) v2 t5) (\lambda (t: T).((pr0 v1 v2) \to ((pr0 t4 t5) \to (ex2 T 
29006 (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 t 
29007 t0)))))) (\lambda (_: (pr0 v1 v2)).(\lambda (_: (pr0 t4 t5)).(let H0 \def 
29008 (eq_ind_r T t (\lambda (t: T).(eq T (THead (Bind Abbr) u1 t0) t)) H5 (THead 
29009 (Flat Appl) v1 (THead (Bind Abst) u t4)) H9) in (let H1 \def (match H0 return 
29010 (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Flat Appl) v1 
29011 (THead (Bind Abst) u t4))) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind 
29012 Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t5) t0)))))) 
29013 with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Bind Abbr) u1 t0) 
29014 (THead (Flat Appl) v1 (THead (Bind Abst) u t4)))).(let H1 \def (eq_ind T 
29015 (THead (Bind Abbr) u1 t0) (\lambda (e: T).(match e return (\lambda (_: 
29016 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
29017 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
29018 _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Appl) v1 
29019 (THead (Bind Abst) u t4)) H0) in (False_ind (ex2 T (\lambda (t: T).(pr0 
29020 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t5) 
29021 t))) H1)))]) in (H1 (refl_equal T (THead (Flat Appl) v1 (THead (Bind Abst) u 
29022 t4)))))))) t2 H11)) t H9 H10 H7 H8))) | (pr0_upsilon b H7 v1 v2 H8 u0 u3 H9 
29023 t4 t5 H10) \Rightarrow (\lambda (H11: (eq T (THead (Flat Appl) v1 (THead 
29024 (Bind b) u0 t4)) t)).(\lambda (H12: (eq T (THead (Bind b) u3 (THead (Flat 
29025 Appl) (lift (S O) O v2) t5)) t2)).(eq_ind T (THead (Flat Appl) v1 (THead 
29026 (Bind b) u0 t4)) (\lambda (_: T).((eq T (THead (Bind b) u3 (THead (Flat Appl) 
29027 (lift (S O) O v2) t5)) t2) \to ((not (eq B b Abst)) \to ((pr0 v1 v2) \to 
29028 ((pr0 u0 u3) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind 
29029 Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 t2 t0))))))))) (\lambda (H13: (eq T 
29030 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t2)).(eq_ind T 
29031 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) (\lambda (t: 
29032 T).((not (eq B b Abst)) \to ((pr0 v1 v2) \to ((pr0 u0 u3) \to ((pr0 t4 t5) 
29033 \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: 
29034 T).(pr0 t t0)))))))) (\lambda (_: (not (eq B b Abst))).(\lambda (_: (pr0 v1 
29035 v2)).(\lambda (_: (pr0 u0 u3)).(\lambda (_: (pr0 t4 t5)).(let H0 \def 
29036 (eq_ind_r T t (\lambda (t: T).(eq T (THead (Bind Abbr) u1 t0) t)) H5 (THead 
29037 (Flat Appl) v1 (THead (Bind b) u0 t4)) H11) in (let H1 \def (match H0 return 
29038 (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Flat Appl) v1 
29039 (THead (Bind b) u0 t4))) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) 
29040 u2 w) t0)) (\lambda (t0: T).(pr0 (THead (Bind b) u3 (THead (Flat Appl) (lift 
29041 (S O) O v2) t5)) t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T 
29042 (THead (Bind Abbr) u1 t0) (THead (Flat Appl) v1 (THead (Bind b) u0 
29043 t4)))).(let H1 \def (eq_ind T (THead (Bind Abbr) u1 t0) (\lambda (e: 
29044 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
29045 (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k return 
29046 (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow 
29047 False])])) I (THead (Flat Appl) v1 (THead (Bind b) u0 t4)) H0) in (False_ind 
29048 (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 
29049 (THead (Bind b) u3 (THead (Flat Appl) (lift (S O) O v2) t5)) t))) H1)))]) in 
29050 (H1 (refl_equal T (THead (Flat Appl) v1 (THead (Bind b) u0 t4)))))))))) t2 
29051 H13)) t H11 H12 H7 H8 H9 H10))) | (pr0_delta u0 u3 H7 t4 t5 H8 w0 H9) 
29052 \Rightarrow (\lambda (H11: (eq T (THead (Bind Abbr) u0 t4) t)).(\lambda (H12: 
29053 (eq T (THead (Bind Abbr) u3 w0) t2)).(eq_ind T (THead (Bind Abbr) u0 t4) 
29054 (\lambda (_: T).((eq T (THead (Bind Abbr) u3 w0) t2) \to ((pr0 u0 u3) \to 
29055 ((pr0 t4 t5) \to ((subst0 O u3 t5 w0) \to (ex2 T (\lambda (t0: T).(pr0 (THead 
29056 (Bind Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 t2 t0)))))))) (\lambda (H13: (eq 
29057 T (THead (Bind Abbr) u3 w0) t2)).(eq_ind T (THead (Bind Abbr) u3 w0) (\lambda 
29058 (t: T).((pr0 u0 u3) \to ((pr0 t4 t5) \to ((subst0 O u3 t5 w0) \to (ex2 T 
29059 (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 t 
29060 t0))))))) (\lambda (H14: (pr0 u0 u3)).(\lambda (H15: (pr0 t4 t5)).(\lambda 
29061 (H16: (subst0 O u3 t5 w0)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T 
29062 (THead (Bind Abbr) u1 t0) t)) H5 (THead (Bind Abbr) u0 t4) H11) in (let H1 
29063 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t 
29064 (THead (Bind Abbr) u0 t4)) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind 
29065 Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) u3 w0) t0)))))) 
29066 with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Bind Abbr) u1 t0) 
29067 (THead (Bind Abbr) u0 t4))).(let H1 \def (f_equal T T (\lambda (e: T).(match 
29068 e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) 
29069 \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead (Bind Abbr) u1 t0) 
29070 (THead (Bind Abbr) u0 t4) H0) in ((let H2 \def (f_equal T T (\lambda (e: 
29071 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow u1 | (TLRef 
29072 _) \Rightarrow u1 | (THead _ t _) \Rightarrow t])) (THead (Bind Abbr) u1 t0) 
29073 (THead (Bind Abbr) u0 t4) H0) in (eq_ind T u0 (\lambda (_: T).((eq T t0 t4) 
29074 \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: 
29075 T).(pr0 (THead (Bind Abbr) u3 w0) t0))))) (\lambda (H12: (eq T t0 
29076 t4)).(eq_ind T t4 (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind 
29077 Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) u3 w0) t0)))) (let 
29078 H3 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall 
29079 (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: 
29080 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Bind Abbr) u0 
29081 t4) H11) in (let H4 \def (eq_ind T t0 (\lambda (t: T).(pr0 t t3)) H9 t4 H12) 
29082 in (let H5 \def (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) H8 u0 H2) in 
29083 (ex2_ind T (\lambda (t: T).(pr0 u2 t)) (\lambda (t: T).(pr0 u3 t)) (ex2 T 
29084 (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 (THead 
29085 (Bind Abbr) u3 w0) t))) (\lambda (x: T).(\lambda (H6: (pr0 u2 x)).(\lambda 
29086 (H7: (pr0 u3 x)).(ex2_ind T (\lambda (t: T).(pr0 t3 t)) (\lambda (t: T).(pr0 
29087 t5 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: 
29088 T).(pr0 (THead (Bind Abbr) u3 w0) t))) (\lambda (x0: T).(\lambda (H8: (pr0 t3 
29089 x0)).(\lambda (H9: (pr0 t5 x0)).(pr0_confluence__pr0_delta_delta u2 t3 w H10 
29090 u3 t5 w0 H16 x H6 H7 x0 H8 H9)))) (H3 t4 (tlt_head_dx (Bind Abbr) u0 t4) t3 
29091 H4 t5 H15))))) (H3 u0 (tlt_head_sx (Bind Abbr) u0 t4) u2 H5 u3 H14))))) t0 
29092 (sym_eq T t0 t4 H12))) u1 (sym_eq T u1 u0 H2))) H1)))]) in (H1 (refl_equal T 
29093 (THead (Bind Abbr) u0 t4)))))))) t2 H13)) t H11 H12 H7 H8 H9))) | (pr0_zeta b 
29094 H7 t4 t5 H8 u) \Rightarrow (\lambda (H11: (eq T (THead (Bind b) u (lift (S O) 
29095 O t4)) t)).(\lambda (H12: (eq T t5 t2)).(eq_ind T (THead (Bind b) u (lift (S 
29096 O) O t4)) (\lambda (_: T).((eq T t5 t2) \to ((not (eq B b Abst)) \to ((pr0 t4 
29097 t5) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda 
29098 (t0: T).(pr0 t2 t0))))))) (\lambda (H13: (eq T t5 t2)).(eq_ind T t2 (\lambda 
29099 (t: T).((not (eq B b Abst)) \to ((pr0 t4 t) \to (ex2 T (\lambda (t0: T).(pr0 
29100 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 t2 t0)))))) (\lambda 
29101 (H14: (not (eq B b Abst))).(\lambda (H15: (pr0 t4 t2)).(let H0 \def (eq_ind_r 
29102 T t (\lambda (t: T).(eq T (THead (Bind Abbr) u1 t0) t)) H5 (THead (Bind b) u 
29103 (lift (S O) O t4)) H11) in (let H1 \def (match H0 return (\lambda (t: 
29104 T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Bind b) u (lift (S O) O t4))) 
29105 \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: 
29106 T).(pr0 t2 t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead 
29107 (Bind Abbr) u1 t0) (THead (Bind b) u (lift (S O) O t4)))).(let H1 \def 
29108 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
29109 _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
29110 (THead (Bind Abbr) u1 t0) (THead (Bind b) u (lift (S O) O t4)) H0) in ((let 
29111 H2 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
29112 [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t _) 
29113 \Rightarrow t])) (THead (Bind Abbr) u1 t0) (THead (Bind b) u (lift (S O) O 
29114 t4)) H0) in ((let H3 \def (f_equal T B (\lambda (e: T).(match e return 
29115 (\lambda (_: T).B) with [(TSort _) \Rightarrow Abbr | (TLRef _) \Rightarrow 
29116 Abbr | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).B) with 
29117 [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (THead (Bind Abbr) 
29118 u1 t0) (THead (Bind b) u (lift (S O) O t4)) H0) in (eq_ind B Abbr (\lambda 
29119 (_: B).((eq T u1 u) \to ((eq T t0 (lift (S O) O t4)) \to (ex2 T (\lambda (t: 
29120 T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 t2 t)))))) (\lambda 
29121 (H12: (eq T u1 u)).(eq_ind T u (\lambda (_: T).((eq T t0 (lift (S O) O t4)) 
29122 \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: 
29123 T).(pr0 t2 t0))))) (\lambda (H13: (eq T t0 (lift (S O) O t4))).(eq_ind T 
29124 (lift (S O) O t4) (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 (THead (Bind 
29125 Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 t2 t0)))) (let H4 \def (eq_ind_r B b 
29126 (\lambda (b: B).(not (eq B b Abst))) H14 Abbr H3) in (let H5 \def (eq_ind_r B 
29127 b (\lambda (b: B).(eq T (THead (Bind b) u (lift (S O) O t4)) t)) H11 Abbr H3) 
29128 in (let H6 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt v t) \to 
29129 (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T 
29130 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead 
29131 (Bind Abbr) u (lift (S O) O t4)) H5) in (let H7 \def (eq_ind T t0 (\lambda 
29132 (t: T).(pr0 t t3)) H9 (lift (S O) O t4) H13) in (ex2_ind T (\lambda (t2: 
29133 T).(eq T t3 (lift (S O) O t2))) (\lambda (t2: T).(pr0 t4 t2)) (ex2 T (\lambda 
29134 (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 t2 t))) 
29135 (\lambda (x: T).(\lambda (H9: (eq T t3 (lift (S O) O x))).(\lambda (H11: (pr0 
29136 t4 x)).(let H10 \def (eq_ind T t3 (\lambda (t: T).(subst0 O u2 t w)) H10 
29137 (lift (S O) O x) H9) in (let H8 \def (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) 
29138 H8 u H12) in (ex2_ind T (\lambda (t: T).(pr0 x t)) (\lambda (t: T).(pr0 t2 
29139 t)) (ex2 T (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: 
29140 T).(pr0 t2 t))) (\lambda (x0: T).(\lambda (_: (pr0 x x0)).(\lambda (_: (pr0 
29141 t2 x0)).(pr0_confluence__pr0_delta_epsilon u2 (lift (S O) O x) w H10 x 
29142 (pr0_refl (lift (S O) O x)) t2)))) (H6 t4 (lift_tlt_dx (Bind Abbr) u t4 (S O) 
29143 O) x H11 t2 H15))))))) (pr0_gen_lift t4 t3 (S O) O H7)))))) t0 (sym_eq T t0 
29144 (lift (S O) O t4) H13))) u1 (sym_eq T u1 u H12))) b H3)) H2)) H1)))]) in (H1 
29145 (refl_equal T (THead (Bind b) u (lift (S O) O t4)))))))) t5 (sym_eq T t5 t2 
29146 H13))) t H11 H12 H7 H8))) | (pr0_epsilon t4 t5 H7 u) \Rightarrow (\lambda 
29147 (H8: (eq T (THead (Flat Cast) u t4) t)).(\lambda (H9: (eq T t5 t2)).(eq_ind T 
29148 (THead (Flat Cast) u t4) (\lambda (_: T).((eq T t5 t2) \to ((pr0 t4 t5) \to 
29149 (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: 
29150 T).(pr0 t2 t0)))))) (\lambda (H10: (eq T t5 t2)).(eq_ind T t2 (\lambda (t: 
29151 T).((pr0 t4 t) \to (ex2 T (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) 
29152 (\lambda (t0: T).(pr0 t2 t0))))) (\lambda (_: (pr0 t4 t2)).(let H0 \def 
29153 (eq_ind_r T t (\lambda (t: T).(eq T (THead (Bind Abbr) u1 t0) t)) H5 (THead 
29154 (Flat Cast) u t4) H8) in (let H1 \def (match H0 return (\lambda (t: 
29155 T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Flat Cast) u t4)) \to (ex2 T 
29156 (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)) (\lambda (t0: T).(pr0 t2 
29157 t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Bind Abbr) 
29158 u1 t0) (THead (Flat Cast) u t4))).(let H1 \def (eq_ind T (THead (Bind Abbr) 
29159 u1 t0) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
29160 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
29161 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat 
29162 _) \Rightarrow False])])) I (THead (Flat Cast) u t4) H0) in (False_ind (ex2 T 
29163 (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)) (\lambda (t: T).(pr0 t2 
29164 t))) H1)))]) in (H1 (refl_equal T (THead (Flat Cast) u t4)))))) t5 (sym_eq T 
29165 t5 t2 H10))) t H8 H9 H7)))]) in (H11 (refl_equal T t) (refl_equal T t2)))))) 
29166 t1 H7)) t H5 H6 H2 H3 H4))) | (pr0_zeta b H2 t0 t3 H3 u) \Rightarrow (\lambda 
29167 (H4: (eq T (THead (Bind b) u (lift (S O) O t0)) t)).(\lambda (H5: (eq T t3 
29168 t1)).(eq_ind T (THead (Bind b) u (lift (S O) O t0)) (\lambda (_: T).((eq T t3 
29169 t1) \to ((not (eq B b Abst)) \to ((pr0 t0 t3) \to (ex2 T (\lambda (t2: 
29170 T).(pr0 t1 t2)) (\lambda (t1: T).(pr0 t2 t1))))))) (\lambda (H6: (eq T t3 
29171 t1)).(eq_ind T t1 (\lambda (t: T).((not (eq B b Abst)) \to ((pr0 t0 t) \to 
29172 (ex2 T (\lambda (t2: T).(pr0 t1 t2)) (\lambda (t1: T).(pr0 t2 t1)))))) 
29173 (\lambda (H7: (not (eq B b Abst))).(\lambda (H8: (pr0 t0 t1)).(let H9 \def 
29174 (match H1 return (\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (pr0 t0 
29175 t3)).((eq T t0 t) \to ((eq T t3 t2) \to (ex2 T (\lambda (t: T).(pr0 t1 t)) 
29176 (\lambda (t: T).(pr0 t2 t)))))))) with [(pr0_refl t4) \Rightarrow (\lambda 
29177 (H6: (eq T t4 t)).(\lambda (H9: (eq T t4 t2)).(eq_ind T t (\lambda (t: 
29178 T).((eq T t t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
29179 T).(pr0 t2 t0))))) (\lambda (H10: (eq T t t2)).(eq_ind T t2 (\lambda (_: 
29180 T).(ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))) (let 
29181 H0 \def (eq_ind_r T t (\lambda (t: T).(eq T t t2)) H10 (THead (Bind b) u 
29182 (lift (S O) O t0)) H4) in (eq_ind T (THead (Bind b) u (lift (S O) O t0)) 
29183 (\lambda (t: T).(ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t 
29184 t0)))) (let H1 \def (eq_ind_r T t (\lambda (t: T).(eq T t4 t)) H6 (THead 
29185 (Bind b) u (lift (S O) O t0)) H4) in (let H2 \def (eq_ind_r T t (\lambda (t: 
29186 T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall 
29187 (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
29188 T).(pr0 t2 t0)))))))))) H (THead (Bind b) u (lift (S O) O t0)) H4) in 
29189 (ex_intro2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 (THead (Bind b) 
29190 u (lift (S O) O t0)) t)) t1 (pr0_refl t1) (pr0_zeta b H7 t0 t1 H8 u)))) t2 
29191 H0)) t (sym_eq T t t2 H10))) t4 (sym_eq T t4 t H6) H9))) | (pr0_comp u1 u2 H6 
29192 t4 t5 H7 k) \Rightarrow (\lambda (H9: (eq T (THead k u1 t4) t)).(\lambda 
29193 (H10: (eq T (THead k u2 t5) t2)).(eq_ind T (THead k u1 t4) (\lambda (_: 
29194 T).((eq T (THead k u2 t5) t2) \to ((pr0 u1 u2) \to ((pr0 t4 t5) \to (ex2 T 
29195 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda 
29196 (H11: (eq T (THead k u2 t5) t2)).(eq_ind T (THead k u2 t5) (\lambda (t: 
29197 T).((pr0 u1 u2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
29198 (\lambda (t0: T).(pr0 t t0)))))) (\lambda (_: (pr0 u1 u2)).(\lambda (H13: 
29199 (pr0 t4 t5)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Bind b) 
29200 u (lift (S O) O t0)) t)) H4 (THead k u1 t4) H9) in (let H1 \def (match H0 
29201 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead k u1 t4)) \to 
29202 (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 (THead k u2 t5) 
29203 t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Bind b) u 
29204 (lift (S O) O t0)) (THead k u1 t4))).(let H1 \def (f_equal T T (\lambda (e: 
29205 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow ((let rec 
29206 lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t with 
29207 [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i 
29208 d) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) 
29209 \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) 
29210 (\lambda (x: nat).(plus x (S O))) O t0) | (TLRef _) \Rightarrow ((let rec 
29211 lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t with 
29212 [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i 
29213 d) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) 
29214 \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) 
29215 (\lambda (x: nat).(plus x (S O))) O t0) | (THead _ _ t) \Rightarrow t])) 
29216 (THead (Bind b) u (lift (S O) O t0)) (THead k u1 t4) H0) in ((let H2 \def 
29217 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
29218 _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t _) \Rightarrow t])) 
29219 (THead (Bind b) u (lift (S O) O t0)) (THead k u1 t4) H0) in ((let H3 \def 
29220 (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort 
29221 _) \Rightarrow (Bind b) | (TLRef _) \Rightarrow (Bind b) | (THead k _ _) 
29222 \Rightarrow k])) (THead (Bind b) u (lift (S O) O t0)) (THead k u1 t4) H0) in 
29223 (eq_ind K (Bind b) (\lambda (k: K).((eq T u u1) \to ((eq T (lift (S O) O t0) 
29224 t4) \to (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 (THead k u2 
29225 t5) t)))))) (\lambda (H10: (eq T u u1)).(eq_ind T u1 (\lambda (_: T).((eq T 
29226 (lift (S O) O t0) t4) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
29227 T).(pr0 (THead (Bind b) u2 t5) t0))))) (\lambda (H11: (eq T (lift (S O) O t0) 
29228 t4)).(eq_ind T (lift (S O) O t0) (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 
29229 t1 t0)) (\lambda (t0: T).(pr0 (THead (Bind b) u2 t5) t0)))) (let H4 \def 
29230 (eq_ind_r K k (\lambda (k: K).(eq T (THead k u1 t4) t)) H9 (Bind b) H3) in 
29231 (let H5 \def (eq_ind_r T t4 (\lambda (t: T).(pr0 t t5)) H13 (lift (S O) O t0) 
29232 H11) in (ex2_ind T (\lambda (t2: T).(eq T t5 (lift (S O) O t2))) (\lambda 
29233 (t2: T).(pr0 t0 t2)) (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 
29234 (THead (Bind b) u2 t5) t))) (\lambda (x: T).(\lambda (H6: (eq T t5 (lift (S 
29235 O) O x))).(\lambda (H9: (pr0 t0 x)).(let H12 \def (eq_ind_r T t4 (\lambda 
29236 (t0: T).(eq T (THead (Bind b) u1 t0) t)) H4 (lift (S O) O t0) H11) in (let 
29237 H13 \def (eq_ind_r T t (\lambda (t: T).(\forall (v: T).((tlt v t) \to 
29238 (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 v t2) \to (ex2 T 
29239 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead 
29240 (Bind b) u1 (lift (S O) O t0)) H12) in (eq_ind_r T (lift (S O) O x) (\lambda 
29241 (t: T).(ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 (THead 
29242 (Bind b) u2 t) t0)))) (ex2_ind T (\lambda (t: T).(pr0 x t)) (\lambda (t: 
29243 T).(pr0 t1 t)) (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 (THead 
29244 (Bind b) u2 (lift (S O) O x)) t))) (\lambda (x0: T).(\lambda (H8: (pr0 x 
29245 x0)).(\lambda (H14: (pr0 t1 x0)).(ex_intro2 T (\lambda (t: T).(pr0 t1 t)) 
29246 (\lambda (t: T).(pr0 (THead (Bind b) u2 (lift (S O) O x)) t)) x0 H14 
29247 (pr0_zeta b H7 x x0 H8 u2))))) (H13 t0 (lift_tlt_dx (Bind b) u1 t0 (S O) O) x 
29248 H9 t1 H8)) t5 H6)))))) (pr0_gen_lift t0 t5 (S O) O H5)))) t4 H11)) u (sym_eq 
29249 T u u1 H10))) k H3)) H2)) H1)))]) in (H1 (refl_equal T (THead k u1 t4))))))) 
29250 t2 H11)) t H9 H10 H6 H7))) | (pr0_beta u0 v1 v2 H6 t4 t5 H7) \Rightarrow 
29251 (\lambda (H8: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u0 t4)) 
29252 t)).(\lambda (H9: (eq T (THead (Bind Abbr) v2 t5) t2)).(eq_ind T (THead (Flat 
29253 Appl) v1 (THead (Bind Abst) u0 t4)) (\lambda (_: T).((eq T (THead (Bind Abbr) 
29254 v2 t5) t2) \to ((pr0 v1 v2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 
29255 t1 t0)) (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda (H10: (eq T (THead (Bind 
29256 Abbr) v2 t5) t2)).(eq_ind T (THead (Bind Abbr) v2 t5) (\lambda (t: T).((pr0 
29257 v1 v2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda 
29258 (t0: T).(pr0 t t0)))))) (\lambda (_: (pr0 v1 v2)).(\lambda (_: (pr0 t4 
29259 t5)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Bind b) u (lift 
29260 (S O) O t0)) t)) H4 (THead (Flat Appl) v1 (THead (Bind Abst) u0 t4)) H8) in 
29261 (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T 
29262 t (THead (Flat Appl) v1 (THead (Bind Abst) u0 t4))) \to (ex2 T (\lambda (t0: 
29263 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t5) t0)))))) with 
29264 [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Bind b) u (lift (S O) O 
29265 t0)) (THead (Flat Appl) v1 (THead (Bind Abst) u0 t4)))).(let H1 \def (eq_ind 
29266 T (THead (Bind b) u (lift (S O) O t0)) (\lambda (e: T).(match e return 
29267 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
29268 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
29269 K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I 
29270 (THead (Flat Appl) v1 (THead (Bind Abst) u0 t4)) H0) in (False_ind (ex2 T 
29271 (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t5) 
29272 t))) H1)))]) in (H1 (refl_equal T (THead (Flat Appl) v1 (THead (Bind Abst) u0 
29273 t4)))))))) t2 H10)) t H8 H9 H6 H7))) | (pr0_upsilon b0 H6 v1 v2 H7 u1 u2 H8 
29274 t4 t5 H9) \Rightarrow (\lambda (H10: (eq T (THead (Flat Appl) v1 (THead (Bind 
29275 b0) u1 t4)) t)).(\lambda (H11: (eq T (THead (Bind b0) u2 (THead (Flat Appl) 
29276 (lift (S O) O v2) t5)) t2)).(eq_ind T (THead (Flat Appl) v1 (THead (Bind b0) 
29277 u1 t4)) (\lambda (_: T).((eq T (THead (Bind b0) u2 (THead (Flat Appl) (lift 
29278 (S O) O v2) t5)) t2) \to ((not (eq B b0 Abst)) \to ((pr0 v1 v2) \to ((pr0 u1 
29279 u2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
29280 T).(pr0 t2 t0))))))))) (\lambda (H12: (eq T (THead (Bind b0) u2 (THead (Flat 
29281 Appl) (lift (S O) O v2) t5)) t2)).(eq_ind T (THead (Bind b0) u2 (THead (Flat 
29282 Appl) (lift (S O) O v2) t5)) (\lambda (t: T).((not (eq B b0 Abst)) \to ((pr0 
29283 v1 v2) \to ((pr0 u1 u2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 t1 
29284 t0)) (\lambda (t0: T).(pr0 t t0)))))))) (\lambda (_: (not (eq B b0 
29285 Abst))).(\lambda (_: (pr0 v1 v2)).(\lambda (_: (pr0 u1 u2)).(\lambda (_: (pr0 
29286 t4 t5)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Bind b) u 
29287 (lift (S O) O t0)) t)) H4 (THead (Flat Appl) v1 (THead (Bind b0) u1 t4)) H10) 
29288 in (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? 
29289 t)).((eq T t (THead (Flat Appl) v1 (THead (Bind b0) u1 t4))) \to (ex2 T 
29290 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 (THead (Bind b0) u2 
29291 (THead (Flat Appl) (lift (S O) O v2) t5)) t0)))))) with [refl_equal 
29292 \Rightarrow (\lambda (H0: (eq T (THead (Bind b) u (lift (S O) O t0)) (THead 
29293 (Flat Appl) v1 (THead (Bind b0) u1 t4)))).(let H1 \def (eq_ind T (THead (Bind 
29294 b) u (lift (S O) O t0)) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
29295 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ 
29296 _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) 
29297 \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Appl) v1 
29298 (THead (Bind b0) u1 t4)) H0) in (False_ind (ex2 T (\lambda (t: T).(pr0 t1 t)) 
29299 (\lambda (t: T).(pr0 (THead (Bind b0) u2 (THead (Flat Appl) (lift (S O) O v2) 
29300 t5)) t))) H1)))]) in (H1 (refl_equal T (THead (Flat Appl) v1 (THead (Bind b0) 
29301 u1 t4)))))))))) t2 H12)) t H10 H11 H6 H7 H8 H9))) | (pr0_delta u1 u2 H6 t4 t5 
29302 H7 w H8) \Rightarrow (\lambda (H9: (eq T (THead (Bind Abbr) u1 t4) 
29303 t)).(\lambda (H10: (eq T (THead (Bind Abbr) u2 w) t2)).(eq_ind T (THead (Bind 
29304 Abbr) u1 t4) (\lambda (_: T).((eq T (THead (Bind Abbr) u2 w) t2) \to ((pr0 u1 
29305 u2) \to ((pr0 t4 t5) \to ((subst0 O u2 t5 w) \to (ex2 T (\lambda (t0: T).(pr0 
29306 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))) (\lambda (H11: (eq T (THead (Bind 
29307 Abbr) u2 w) t2)).(eq_ind T (THead (Bind Abbr) u2 w) (\lambda (t: T).((pr0 u1 
29308 u2) \to ((pr0 t4 t5) \to ((subst0 O u2 t5 w) \to (ex2 T (\lambda (t0: T).(pr0 
29309 t1 t0)) (\lambda (t0: T).(pr0 t t0))))))) (\lambda (_: (pr0 u1 u2)).(\lambda 
29310 (H13: (pr0 t4 t5)).(\lambda (H14: (subst0 O u2 t5 w)).(let H0 \def (eq_ind_r 
29311 T t (\lambda (t: T).(eq T (THead (Bind b) u (lift (S O) O t0)) t)) H4 (THead 
29312 (Bind Abbr) u1 t4) H9) in (let H1 \def (match H0 return (\lambda (t: 
29313 T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Bind Abbr) u1 t4)) \to (ex2 T 
29314 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) 
29315 t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Bind b) u 
29316 (lift (S O) O t0)) (THead (Bind Abbr) u1 t4))).(let H1 \def (f_equal T T 
29317 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
29318 \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T 
29319 \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow 
29320 (TLRef (match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) 
29321 | (THead k u t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) 
29322 t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t0) | (TLRef _) 
29323 \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T 
29324 \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow 
29325 (TLRef (match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) 
29326 | (THead k u t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) 
29327 t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t0) | (THead _ _ t) 
29328 \Rightarrow t])) (THead (Bind b) u (lift (S O) O t0)) (THead (Bind Abbr) u1 
29329 t4) H0) in ((let H2 \def (f_equal T T (\lambda (e: T).(match e return 
29330 (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | 
29331 (THead _ t _) \Rightarrow t])) (THead (Bind b) u (lift (S O) O t0)) (THead 
29332 (Bind Abbr) u1 t4) H0) in ((let H3 \def (f_equal T B (\lambda (e: T).(match e 
29333 return (\lambda (_: T).B) with [(TSort _) \Rightarrow b | (TLRef _) 
29334 \Rightarrow b | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).B) 
29335 with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b])])) (THead (Bind b) u 
29336 (lift (S O) O t0)) (THead (Bind Abbr) u1 t4) H0) in (eq_ind B Abbr (\lambda 
29337 (_: B).((eq T u u1) \to ((eq T (lift (S O) O t0) t4) \to (ex2 T (\lambda (t: 
29338 T).(pr0 t1 t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 w) t)))))) (\lambda 
29339 (H10: (eq T u u1)).(eq_ind T u1 (\lambda (_: T).((eq T (lift (S O) O t0) t4) 
29340 \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 (THead (Bind 
29341 Abbr) u2 w) t0))))) (\lambda (H11: (eq T (lift (S O) O t0) t4)).(eq_ind T 
29342 (lift (S O) O t0) (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
29343 (\lambda (t0: T).(pr0 (THead (Bind Abbr) u2 w) t0)))) (let H4 \def (eq_ind_r 
29344 T t4 (\lambda (t: T).(pr0 t t5)) H13 (lift (S O) O t0) H11) in (ex2_ind T 
29345 (\lambda (t2: T).(eq T t5 (lift (S O) O t2))) (\lambda (t2: T).(pr0 t0 t2)) 
29346 (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) u2 
29347 w) t))) (\lambda (x: T).(\lambda (H5: (eq T t5 (lift (S O) O x))).(\lambda 
29348 (H6: (pr0 t0 x)).(let H9 \def (eq_ind_r T t4 (\lambda (t0: T).(eq T (THead 
29349 (Bind Abbr) u1 t0) t)) H9 (lift (S O) O t0) H11) in (let H12 \def (eq_ind_r T 
29350 t (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) 
29351 \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
29352 (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Bind Abbr) u1 (lift (S O) O 
29353 t0)) H9) in (let H13 \def (eq_ind T t5 (\lambda (t: T).(subst0 O u2 t w)) H14 
29354 (lift (S O) O x) H5) in (let H7 \def (eq_ind B b (\lambda (b: B).(not (eq B b 
29355 Abst))) H7 Abbr H3) in (ex2_ind T (\lambda (t: T).(pr0 x t)) (\lambda (t: 
29356 T).(pr0 t1 t)) (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 (THead 
29357 (Bind Abbr) u2 w) t))) (\lambda (x0: T).(\lambda (_: (pr0 x x0)).(\lambda (_: 
29358 (pr0 t1 x0)).(ex2_sym T (pr0 (THead (Bind Abbr) u2 w)) (pr0 t1) 
29359 (pr0_confluence__pr0_delta_epsilon u2 (lift (S O) O x) w H13 x (pr0_refl 
29360 (lift (S O) O x)) t1))))) (H12 t0 (lift_tlt_dx (Bind Abbr) u1 t0 (S O) O) x 
29361 H6 t1 H8))))))))) (pr0_gen_lift t0 t5 (S O) O H4))) t4 H11)) u (sym_eq T u u1 
29362 H10))) b (sym_eq B b Abbr H3))) H2)) H1)))]) in (H1 (refl_equal T (THead 
29363 (Bind Abbr) u1 t4)))))))) t2 H11)) t H9 H10 H6 H7 H8))) | (pr0_zeta b0 H6 t4 
29364 t5 H7 u0) \Rightarrow (\lambda (H9: (eq T (THead (Bind b0) u0 (lift (S O) O 
29365 t4)) t)).(\lambda (H10: (eq T t5 t2)).(eq_ind T (THead (Bind b0) u0 (lift (S 
29366 O) O t4)) (\lambda (_: T).((eq T t5 t2) \to ((not (eq B b0 Abst)) \to ((pr0 
29367 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 
29368 t0))))))) (\lambda (H11: (eq T t5 t2)).(eq_ind T t2 (\lambda (t: T).((not (eq 
29369 B b0 Abst)) \to ((pr0 t4 t) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda 
29370 (t0: T).(pr0 t2 t0)))))) (\lambda (_: (not (eq B b0 Abst))).(\lambda (H13: 
29371 (pr0 t4 t2)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Bind b) 
29372 u (lift (S O) O t0)) t)) H4 (THead (Bind b0) u0 (lift (S O) O t4)) H9) in 
29373 (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T 
29374 t (THead (Bind b0) u0 (lift (S O) O t4))) \to (ex2 T (\lambda (t0: T).(pr0 t1 
29375 t0)) (\lambda (t0: T).(pr0 t2 t0)))))) with [refl_equal \Rightarrow (\lambda 
29376 (H0: (eq T (THead (Bind b) u (lift (S O) O t0)) (THead (Bind b0) u0 (lift (S 
29377 O) O t4)))).(let H1 \def (f_equal T T (\lambda (e: T).(match e return 
29378 (\lambda (_: T).T) with [(TSort _) \Rightarrow ((let rec lref_map (f: ((nat 
29379 \to nat))) (d: nat) (t: T) on t: T \def (match t with [(TSort n) \Rightarrow 
29380 (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d) with [true 
29381 \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow 
29382 (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda 
29383 (x: nat).(plus x (S O))) O t0) | (TLRef _) \Rightarrow ((let rec lref_map (f: 
29384 ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t with [(TSort n) 
29385 \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d) with 
29386 [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow 
29387 (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda 
29388 (x: nat).(plus x (S O))) O t0) | (THead _ _ t) \Rightarrow t])) (THead (Bind 
29389 b) u (lift (S O) O t0)) (THead (Bind b0) u0 (lift (S O) O t4)) H0) in ((let 
29390 H2 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
29391 [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t _) 
29392 \Rightarrow t])) (THead (Bind b) u (lift (S O) O t0)) (THead (Bind b0) u0 
29393 (lift (S O) O t4)) H0) in ((let H3 \def (f_equal T B (\lambda (e: T).(match e 
29394 return (\lambda (_: T).B) with [(TSort _) \Rightarrow b | (TLRef _) 
29395 \Rightarrow b | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).B) 
29396 with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b])])) (THead (Bind b) u 
29397 (lift (S O) O t0)) (THead (Bind b0) u0 (lift (S O) O t4)) H0) in (eq_ind B b0 
29398 (\lambda (_: B).((eq T u u0) \to ((eq T (lift (S O) O t0) (lift (S O) O t4)) 
29399 \to (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 t2 t)))))) 
29400 (\lambda (H10: (eq T u u0)).(eq_ind T u0 (\lambda (_: T).((eq T (lift (S O) O 
29401 t0) (lift (S O) O t4)) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
29402 T).(pr0 t2 t0))))) (\lambda (H11: (eq T (lift (S O) O t0) (lift (S O) O 
29403 t4))).(eq_ind T (lift (S O) O t0) (\lambda (_: T).(ex2 T (\lambda (t0: 
29404 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))) (let H4 \def (eq_ind_r T t 
29405 (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) 
29406 \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
29407 (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Bind b0) u0 (lift (S O) O 
29408 t4)) H9) in (let H5 \def (eq_ind T t0 (\lambda (t: T).(pr0 t t1)) H8 t4 
29409 (lift_inj t0 t4 (S O) O H11)) in (let H6 \def (eq_ind B b (\lambda (b: 
29410 B).(not (eq B b Abst))) H7 b0 H3) in (ex2_ind T (\lambda (t: T).(pr0 t1 t)) 
29411 (\lambda (t: T).(pr0 t2 t)) (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: 
29412 T).(pr0 t2 t))) (\lambda (x: T).(\lambda (H7: (pr0 t1 x)).(\lambda (H8: (pr0 
29413 t2 x)).(ex_intro2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 t2 t)) x 
29414 H7 H8)))) (H4 t4 (lift_tlt_dx (Bind b0) u0 t4 (S O) O) t1 H5 t2 H13))))) 
29415 (lift (S O) O t4) H11)) u (sym_eq T u u0 H10))) b (sym_eq B b b0 H3))) H2)) 
29416 H1)))]) in (H1 (refl_equal T (THead (Bind b0) u0 (lift (S O) O t4)))))))) t5 
29417 (sym_eq T t5 t2 H11))) t H9 H10 H6 H7))) | (pr0_epsilon t4 t5 H6 u0) 
29418 \Rightarrow (\lambda (H7: (eq T (THead (Flat Cast) u0 t4) t)).(\lambda (H8: 
29419 (eq T t5 t2)).(eq_ind T (THead (Flat Cast) u0 t4) (\lambda (_: T).((eq T t5 
29420 t2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
29421 T).(pr0 t2 t0)))))) (\lambda (H9: (eq T t5 t2)).(eq_ind T t2 (\lambda (t: 
29422 T).((pr0 t4 t) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 
29423 t2 t0))))) (\lambda (_: (pr0 t4 t2)).(let H0 \def (eq_ind_r T t (\lambda (t: 
29424 T).(eq T (THead (Bind b) u (lift (S O) O t0)) t)) H4 (THead (Flat Cast) u0 
29425 t4) H7) in (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? 
29426 t)).((eq T t (THead (Flat Cast) u0 t4)) \to (ex2 T (\lambda (t0: T).(pr0 t1 
29427 t0)) (\lambda (t0: T).(pr0 t2 t0)))))) with [refl_equal \Rightarrow (\lambda 
29428 (H0: (eq T (THead (Bind b) u (lift (S O) O t0)) (THead (Flat Cast) u0 
29429 t4))).(let H1 \def (eq_ind T (THead (Bind b) u (lift (S O) O t0)) (\lambda 
29430 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
29431 False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k 
29432 return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) 
29433 \Rightarrow False])])) I (THead (Flat Cast) u0 t4) H0) in (False_ind (ex2 T 
29434 (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 t2 t))) H1)))]) in (H1 
29435 (refl_equal T (THead (Flat Cast) u0 t4)))))) t5 (sym_eq T t5 t2 H9))) t H7 H8 
29436 H6)))]) in (H9 (refl_equal T t) (refl_equal T t2))))) t3 (sym_eq T t3 t1 
29437 H6))) t H4 H5 H2 H3))) | (pr0_epsilon t0 t3 H2 u) \Rightarrow (\lambda (H3: 
29438 (eq T (THead (Flat Cast) u t0) t)).(\lambda (H4: (eq T t3 t1)).(eq_ind T 
29439 (THead (Flat Cast) u t0) (\lambda (_: T).((eq T t3 t1) \to ((pr0 t0 t3) \to 
29440 (ex2 T (\lambda (t2: T).(pr0 t1 t2)) (\lambda (t1: T).(pr0 t2 t1)))))) 
29441 (\lambda (H5: (eq T t3 t1)).(eq_ind T t1 (\lambda (t: T).((pr0 t0 t) \to (ex2 
29442 T (\lambda (t2: T).(pr0 t1 t2)) (\lambda (t1: T).(pr0 t2 t1))))) (\lambda 
29443 (H6: (pr0 t0 t1)).(let H7 \def (match H1 return (\lambda (t0: T).(\lambda 
29444 (t3: T).(\lambda (_: (pr0 t0 t3)).((eq T t0 t) \to ((eq T t3 t2) \to (ex2 T 
29445 (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 t2 t)))))))) with [(pr0_refl 
29446 t4) \Rightarrow (\lambda (H5: (eq T t4 t)).(\lambda (H7: (eq T t4 
29447 t2)).(eq_ind T t (\lambda (t: T).((eq T t t2) \to (ex2 T (\lambda (t0: 
29448 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0))))) (\lambda (H8: (eq T t 
29449 t2)).(eq_ind T t2 (\lambda (_: T).(ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
29450 (\lambda (t0: T).(pr0 t2 t0)))) (let H0 \def (eq_ind_r T t (\lambda (t: 
29451 T).(eq T t t2)) H8 (THead (Flat Cast) u t0) H3) in (eq_ind T (THead (Flat 
29452 Cast) u t0) (\lambda (t: T).(ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda 
29453 (t0: T).(pr0 t t0)))) (let H1 \def (eq_ind_r T t (\lambda (t: T).(eq T t4 t)) 
29454 H5 (THead (Flat Cast) u t0) H3) in (let H2 \def (eq_ind_r T t (\lambda (t: 
29455 T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall 
29456 (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
29457 T).(pr0 t2 t0)))))))))) H (THead (Flat Cast) u t0) H3) in (ex_intro2 T 
29458 (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 (THead (Flat Cast) u t0) t)) 
29459 t1 (pr0_refl t1) (pr0_epsilon t0 t1 H6 u)))) t2 H0)) t (sym_eq T t t2 H8))) 
29460 t4 (sym_eq T t4 t H5) H7))) | (pr0_comp u1 u2 H5 t4 t5 H6 k) \Rightarrow 
29461 (\lambda (H7: (eq T (THead k u1 t4) t)).(\lambda (H8: (eq T (THead k u2 t5) 
29462 t2)).(eq_ind T (THead k u1 t4) (\lambda (_: T).((eq T (THead k u2 t5) t2) \to 
29463 ((pr0 u1 u2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
29464 (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda (H9: (eq T (THead k u2 t5) 
29465 t2)).(eq_ind T (THead k u2 t5) (\lambda (t: T).((pr0 u1 u2) \to ((pr0 t4 t5) 
29466 \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t t0)))))) 
29467 (\lambda (_: (pr0 u1 u2)).(\lambda (H11: (pr0 t4 t5)).(let H0 \def (eq_ind_r 
29468 T t (\lambda (t: T).(eq T (THead (Flat Cast) u t0) t)) H3 (THead k u1 t4) H7) 
29469 in (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? ? 
29470 t)).((eq T t (THead k u1 t4)) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
29471 (\lambda (t0: T).(pr0 (THead k u2 t5) t0)))))) with [refl_equal \Rightarrow 
29472 (\lambda (H0: (eq T (THead (Flat Cast) u t0) (THead k u1 t4))).(let H1 \def 
29473 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
29474 _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
29475 (THead (Flat Cast) u t0) (THead k u1 t4) H0) in ((let H2 \def (f_equal T T 
29476 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
29477 \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t _) \Rightarrow t])) 
29478 (THead (Flat Cast) u t0) (THead k u1 t4) H0) in ((let H3 \def (f_equal T K 
29479 (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort _) 
29480 \Rightarrow (Flat Cast) | (TLRef _) \Rightarrow (Flat Cast) | (THead k _ _) 
29481 \Rightarrow k])) (THead (Flat Cast) u t0) (THead k u1 t4) H0) in (eq_ind K 
29482 (Flat Cast) (\lambda (k: K).((eq T u u1) \to ((eq T t0 t4) \to (ex2 T 
29483 (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 (THead k u2 t5) t)))))) 
29484 (\lambda (H8: (eq T u u1)).(eq_ind T u1 (\lambda (_: T).((eq T t0 t4) \to 
29485 (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 (THead (Flat Cast) 
29486 u2 t5) t0))))) (\lambda (H9: (eq T t0 t4)).(eq_ind T t4 (\lambda (_: T).(ex2 
29487 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 (THead (Flat Cast) u2 
29488 t5) t0)))) (let H4 \def (eq_ind_r K k (\lambda (k: K).(eq T (THead k u1 t4) 
29489 t)) H7 (Flat Cast) H3) in (let H5 \def (eq_ind_r T t (\lambda (t: T).(\forall 
29490 (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) \to (\forall (t2: T).((pr0 
29491 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 
29492 t0)))))))))) H (THead (Flat Cast) u1 t4) H4) in (let H6 \def (eq_ind T t0 
29493 (\lambda (t: T).(pr0 t t1)) H6 t4 H9) in (ex2_ind T (\lambda (t: T).(pr0 t1 
29494 t)) (\lambda (t: T).(pr0 t5 t)) (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda 
29495 (t: T).(pr0 (THead (Flat Cast) u2 t5) t))) (\lambda (x: T).(\lambda (H7: (pr0 
29496 t1 x)).(\lambda (H10: (pr0 t5 x)).(ex_intro2 T (\lambda (t: T).(pr0 t1 t)) 
29497 (\lambda (t: T).(pr0 (THead (Flat Cast) u2 t5) t)) x H7 (pr0_epsilon t5 x H10 
29498 u2))))) (H5 t4 (tlt_head_dx (Flat Cast) u1 t4) t1 H6 t5 H11))))) t0 (sym_eq T 
29499 t0 t4 H9))) u (sym_eq T u u1 H8))) k H3)) H2)) H1)))]) in (H1 (refl_equal T 
29500 (THead k u1 t4))))))) t2 H9)) t H7 H8 H5 H6))) | (pr0_beta u0 v1 v2 H5 t4 t5 
29501 H6) \Rightarrow (\lambda (H7: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) 
29502 u0 t4)) t)).(\lambda (H8: (eq T (THead (Bind Abbr) v2 t5) t2)).(eq_ind T 
29503 (THead (Flat Appl) v1 (THead (Bind Abst) u0 t4)) (\lambda (_: T).((eq T 
29504 (THead (Bind Abbr) v2 t5) t2) \to ((pr0 v1 v2) \to ((pr0 t4 t5) \to (ex2 T 
29505 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0))))))) (\lambda 
29506 (H9: (eq T (THead (Bind Abbr) v2 t5) t2)).(eq_ind T (THead (Bind Abbr) v2 t5) 
29507 (\lambda (t: T).((pr0 v1 v2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: 
29508 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t t0)))))) (\lambda (_: (pr0 v1 
29509 v2)).(\lambda (_: (pr0 t4 t5)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq 
29510 T (THead (Flat Cast) u t0) t)) H3 (THead (Flat Appl) v1 (THead (Bind Abst) u0 
29511 t4)) H7) in (let H1 \def (match H0 return (\lambda (t: T).(\lambda (_: (eq ? 
29512 ? t)).((eq T t (THead (Flat Appl) v1 (THead (Bind Abst) u0 t4))) \to (ex2 T 
29513 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 (THead (Bind Abbr) v2 t5) 
29514 t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Flat Cast) 
29515 u t0) (THead (Flat Appl) v1 (THead (Bind Abst) u0 t4)))).(let H1 \def (eq_ind 
29516 T (THead (Flat Cast) u t0) (\lambda (e: T).(match e return (\lambda (_: 
29517 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
29518 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
29519 _) \Rightarrow False | (Flat f) \Rightarrow (match f return (\lambda (_: 
29520 F).Prop) with [Appl \Rightarrow False | Cast \Rightarrow True])])])) I (THead 
29521 (Flat Appl) v1 (THead (Bind Abst) u0 t4)) H0) in (False_ind (ex2 T (\lambda 
29522 (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 (THead (Bind Abbr) v2 t5) t))) 
29523 H1)))]) in (H1 (refl_equal T (THead (Flat Appl) v1 (THead (Bind Abst) u0 
29524 t4)))))))) t2 H9)) t H7 H8 H5 H6))) | (pr0_upsilon b H5 v1 v2 H6 u1 u2 H7 t4 
29525 t5 H8) \Rightarrow (\lambda (H9: (eq T (THead (Flat Appl) v1 (THead (Bind b) 
29526 u1 t4)) t)).(\lambda (H10: (eq T (THead (Bind b) u2 (THead (Flat Appl) (lift 
29527 (S O) O v2) t5)) t2)).(eq_ind T (THead (Flat Appl) v1 (THead (Bind b) u1 t4)) 
29528 (\lambda (_: T).((eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
29529 v2) t5)) t2) \to ((not (eq B b Abst)) \to ((pr0 v1 v2) \to ((pr0 u1 u2) \to 
29530 ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 
29531 t2 t0))))))))) (\lambda (H11: (eq T (THead (Bind b) u2 (THead (Flat Appl) 
29532 (lift (S O) O v2) t5)) t2)).(eq_ind T (THead (Bind b) u2 (THead (Flat Appl) 
29533 (lift (S O) O v2) t5)) (\lambda (t: T).((not (eq B b Abst)) \to ((pr0 v1 v2) 
29534 \to ((pr0 u1 u2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
29535 (\lambda (t0: T).(pr0 t t0)))))))) (\lambda (_: (not (eq B b Abst))).(\lambda 
29536 (_: (pr0 v1 v2)).(\lambda (_: (pr0 u1 u2)).(\lambda (_: (pr0 t4 t5)).(let H0 
29537 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Flat Cast) u t0) t)) H3 
29538 (THead (Flat Appl) v1 (THead (Bind b) u1 t4)) H9) in (let H1 \def (match H0 
29539 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Flat Appl) 
29540 v1 (THead (Bind b) u1 t4))) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda 
29541 (t0: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t5)) 
29542 t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Flat Cast) 
29543 u t0) (THead (Flat Appl) v1 (THead (Bind b) u1 t4)))).(let H1 \def (eq_ind T 
29544 (THead (Flat Cast) u t0) (\lambda (e: T).(match e return (\lambda (_: 
29545 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
29546 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
29547 _) \Rightarrow False | (Flat f) \Rightarrow (match f return (\lambda (_: 
29548 F).Prop) with [Appl \Rightarrow False | Cast \Rightarrow True])])])) I (THead 
29549 (Flat Appl) v1 (THead (Bind b) u1 t4)) H0) in (False_ind (ex2 T (\lambda (t: 
29550 T).(pr0 t1 t)) (\lambda (t: T).(pr0 (THead (Bind b) u2 (THead (Flat Appl) 
29551 (lift (S O) O v2) t5)) t))) H1)))]) in (H1 (refl_equal T (THead (Flat Appl) 
29552 v1 (THead (Bind b) u1 t4)))))))))) t2 H11)) t H9 H10 H5 H6 H7 H8))) | 
29553 (pr0_delta u1 u2 H5 t4 t5 H6 w H7) \Rightarrow (\lambda (H8: (eq T (THead 
29554 (Bind Abbr) u1 t4) t)).(\lambda (H9: (eq T (THead (Bind Abbr) u2 w) 
29555 t2)).(eq_ind T (THead (Bind Abbr) u1 t4) (\lambda (_: T).((eq T (THead (Bind 
29556 Abbr) u2 w) t2) \to ((pr0 u1 u2) \to ((pr0 t4 t5) \to ((subst0 O u2 t5 w) \to 
29557 (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))))) 
29558 (\lambda (H10: (eq T (THead (Bind Abbr) u2 w) t2)).(eq_ind T (THead (Bind 
29559 Abbr) u2 w) (\lambda (t: T).((pr0 u1 u2) \to ((pr0 t4 t5) \to ((subst0 O u2 
29560 t5 w) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t 
29561 t0))))))) (\lambda (_: (pr0 u1 u2)).(\lambda (_: (pr0 t4 t5)).(\lambda (_: 
29562 (subst0 O u2 t5 w)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead 
29563 (Flat Cast) u t0) t)) H3 (THead (Bind Abbr) u1 t4) H8) in (let H1 \def (match 
29564 H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Bind 
29565 Abbr) u1 t4)) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 
29566 (THead (Bind Abbr) u2 w) t0)))))) with [refl_equal \Rightarrow (\lambda (H0: 
29567 (eq T (THead (Flat Cast) u t0) (THead (Bind Abbr) u1 t4))).(let H1 \def 
29568 (eq_ind T (THead (Flat Cast) u t0) (\lambda (e: T).(match e return (\lambda 
29569 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
29570 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
29571 _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind Abbr) u1 
29572 t4) H0) in (False_ind (ex2 T (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 
29573 (THead (Bind Abbr) u2 w) t))) H1)))]) in (H1 (refl_equal T (THead (Bind Abbr) 
29574 u1 t4)))))))) t2 H10)) t H8 H9 H5 H6 H7))) | (pr0_zeta b H5 t4 t5 H6 u0) 
29575 \Rightarrow (\lambda (H7: (eq T (THead (Bind b) u0 (lift (S O) O t4)) 
29576 t)).(\lambda (H8: (eq T t5 t2)).(eq_ind T (THead (Bind b) u0 (lift (S O) O 
29577 t4)) (\lambda (_: T).((eq T t5 t2) \to ((not (eq B b Abst)) \to ((pr0 t4 t5) 
29578 \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0))))))) 
29579 (\lambda (H9: (eq T t5 t2)).(eq_ind T t2 (\lambda (t: T).((not (eq B b Abst)) 
29580 \to ((pr0 t4 t) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
29581 T).(pr0 t2 t0)))))) (\lambda (_: (not (eq B b Abst))).(\lambda (_: (pr0 t4 
29582 t2)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Flat Cast) u 
29583 t0) t)) H3 (THead (Bind b) u0 (lift (S O) O t4)) H7) in (let H1 \def (match 
29584 H0 return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Bind b) 
29585 u0 (lift (S O) O t4))) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
29586 T).(pr0 t2 t0)))))) with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead 
29587 (Flat Cast) u t0) (THead (Bind b) u0 (lift (S O) O t4)))).(let H1 \def 
29588 (eq_ind T (THead (Flat Cast) u t0) (\lambda (e: T).(match e return (\lambda 
29589 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
29590 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
29591 _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u0 
29592 (lift (S O) O t4)) H0) in (False_ind (ex2 T (\lambda (t: T).(pr0 t1 t)) 
29593 (\lambda (t: T).(pr0 t2 t))) H1)))]) in (H1 (refl_equal T (THead (Bind b) u0 
29594 (lift (S O) O t4)))))))) t5 (sym_eq T t5 t2 H9))) t H7 H8 H5 H6))) | 
29595 (pr0_epsilon t4 t5 H5 u0) \Rightarrow (\lambda (H7: (eq T (THead (Flat Cast) 
29596 u0 t4) t)).(\lambda (H8: (eq T t5 t2)).(eq_ind T (THead (Flat Cast) u0 t4) 
29597 (\lambda (_: T).((eq T t5 t2) \to ((pr0 t4 t5) \to (ex2 T (\lambda (t0: 
29598 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))) (\lambda (H9: (eq T t5 
29599 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 t4 t) \to (ex2 T (\lambda (t0: 
29600 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0))))) (\lambda (H10: (pr0 t4 
29601 t2)).(let H0 \def (eq_ind_r T t (\lambda (t: T).(eq T (THead (Flat Cast) u 
29602 t0) t)) H3 (THead (Flat Cast) u0 t4) H7) in (let H1 \def (match H0 return 
29603 (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead (Flat Cast) u0 t4)) 
29604 \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))))) 
29605 with [refl_equal \Rightarrow (\lambda (H0: (eq T (THead (Flat Cast) u t0) 
29606 (THead (Flat Cast) u0 t4))).(let H1 \def (f_equal T T (\lambda (e: T).(match 
29607 e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) 
29608 \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead (Flat Cast) u t0) 
29609 (THead (Flat Cast) u0 t4) H0) in ((let H2 \def (f_equal T T (\lambda (e: 
29610 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef 
29611 _) \Rightarrow u | (THead _ t _) \Rightarrow t])) (THead (Flat Cast) u t0) 
29612 (THead (Flat Cast) u0 t4) H0) in (eq_ind T u0 (\lambda (_: T).((eq T t0 t4) 
29613 \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0))))) 
29614 (\lambda (H8: (eq T t0 t4)).(eq_ind T t4 (\lambda (_: T).(ex2 T (\lambda (t0: 
29615 T).(pr0 t1 t0)) (\lambda (t0: T).(pr0 t2 t0)))) (let H3 \def (eq_ind_r T t 
29616 (\lambda (t: T).(\forall (v: T).((tlt v t) \to (\forall (t1: T).((pr0 v t1) 
29617 \to (\forall (t2: T).((pr0 v t2) \to (ex2 T (\lambda (t0: T).(pr0 t1 t0)) 
29618 (\lambda (t0: T).(pr0 t2 t0)))))))))) H (THead (Flat Cast) u0 t4) H7) in (let 
29619 H4 \def (eq_ind T t0 (\lambda (t: T).(pr0 t t1)) H6 t4 H8) in (ex2_ind T 
29620 (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(pr0 t2 t)) (ex2 T (\lambda (t: 
29621 T).(pr0 t1 t)) (\lambda (t: T).(pr0 t2 t))) (\lambda (x: T).(\lambda (H5: 
29622 (pr0 t1 x)).(\lambda (H6: (pr0 t2 x)).(ex_intro2 T (\lambda (t: T).(pr0 t1 
29623 t)) (\lambda (t: T).(pr0 t2 t)) x H5 H6)))) (H3 t4 (tlt_head_dx (Flat Cast) 
29624 u0 t4) t1 H4 t2 H10)))) t0 (sym_eq T t0 t4 H8))) u (sym_eq T u u0 H2))) 
29625 H1)))]) in (H1 (refl_equal T (THead (Flat Cast) u0 t4)))))) t5 (sym_eq T t5 
29626 t2 H9))) t H7 H8 H5)))]) in (H7 (refl_equal T t) (refl_equal T t2)))) t3 
29627 (sym_eq T t3 t1 H5))) t H3 H4 H2)))]) in (H2 (refl_equal T t) (refl_equal T 
29628 t1))))))))) t0).
29629
29630 theorem pr0_delta1:
29631  \forall (u1: T).(\forall (u2: T).((pr0 u1 u2) \to (\forall (t1: T).(\forall 
29632 (t2: T).((pr0 t1 t2) \to (\forall (w: T).((subst1 O u2 t2 w) \to (pr0 (THead 
29633 (Bind Abbr) u1 t1) (THead (Bind Abbr) u2 w)))))))))
29634 \def
29635  \lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr0 u1 u2)).(\lambda (t1: 
29636 T).(\lambda (t2: T).(\lambda (H0: (pr0 t1 t2)).(\lambda (w: T).(\lambda (H1: 
29637 (subst1 O u2 t2 w)).(subst1_ind O u2 t2 (\lambda (t: T).(pr0 (THead (Bind 
29638 Abbr) u1 t1) (THead (Bind Abbr) u2 t))) (pr0_comp u1 u2 H t1 t2 H0 (Bind 
29639 Abbr)) (\lambda (t0: T).(\lambda (H2: (subst0 O u2 t2 t0)).(pr0_delta u1 u2 H 
29640 t1 t2 H0 t0 H2))) w H1)))))))).
29641
29642 theorem pr0_subst1_back:
29643  \forall (u2: T).(\forall (t1: T).(\forall (t2: T).(\forall (i: nat).((subst1 
29644 i u2 t1 t2) \to (\forall (u1: T).((pr0 u1 u2) \to (ex2 T (\lambda (t: 
29645 T).(subst1 i u1 t1 t)) (\lambda (t: T).(pr0 t t2)))))))))
29646 \def
29647  \lambda (u2: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (i: nat).(\lambda 
29648 (H: (subst1 i u2 t1 t2)).(subst1_ind i u2 t1 (\lambda (t: T).(\forall (u1: 
29649 T).((pr0 u1 u2) \to (ex2 T (\lambda (t0: T).(subst1 i u1 t1 t0)) (\lambda 
29650 (t0: T).(pr0 t0 t)))))) (\lambda (u1: T).(\lambda (_: (pr0 u1 u2)).(ex_intro2 
29651 T (\lambda (t: T).(subst1 i u1 t1 t)) (\lambda (t: T).(pr0 t t1)) t1 
29652 (subst1_refl i u1 t1) (pr0_refl t1)))) (\lambda (t0: T).(\lambda (H0: (subst0 
29653 i u2 t1 t0)).(\lambda (u1: T).(\lambda (H1: (pr0 u1 u2)).(ex2_ind T (\lambda 
29654 (t: T).(subst0 i u1 t1 t)) (\lambda (t: T).(pr0 t t0)) (ex2 T (\lambda (t: 
29655 T).(subst1 i u1 t1 t)) (\lambda (t: T).(pr0 t t0))) (\lambda (x: T).(\lambda 
29656 (H2: (subst0 i u1 t1 x)).(\lambda (H3: (pr0 x t0)).(ex_intro2 T (\lambda (t: 
29657 T).(subst1 i u1 t1 t)) (\lambda (t: T).(pr0 t t0)) x (subst1_single i u1 t1 x 
29658 H2) H3)))) (pr0_subst0_back u2 t1 t0 i H0 u1 H1)))))) t2 H))))).
29659
29660 theorem pr0_subst1_fwd:
29661  \forall (u2: T).(\forall (t1: T).(\forall (t2: T).(\forall (i: nat).((subst1 
29662 i u2 t1 t2) \to (\forall (u1: T).((pr0 u2 u1) \to (ex2 T (\lambda (t: 
29663 T).(subst1 i u1 t1 t)) (\lambda (t: T).(pr0 t2 t)))))))))
29664 \def
29665  \lambda (u2: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (i: nat).(\lambda 
29666 (H: (subst1 i u2 t1 t2)).(subst1_ind i u2 t1 (\lambda (t: T).(\forall (u1: 
29667 T).((pr0 u2 u1) \to (ex2 T (\lambda (t0: T).(subst1 i u1 t1 t0)) (\lambda 
29668 (t0: T).(pr0 t t0)))))) (\lambda (u1: T).(\lambda (_: (pr0 u2 u1)).(ex_intro2 
29669 T (\lambda (t: T).(subst1 i u1 t1 t)) (\lambda (t: T).(pr0 t1 t)) t1 
29670 (subst1_refl i u1 t1) (pr0_refl t1)))) (\lambda (t0: T).(\lambda (H0: (subst0 
29671 i u2 t1 t0)).(\lambda (u1: T).(\lambda (H1: (pr0 u2 u1)).(ex2_ind T (\lambda 
29672 (t: T).(subst0 i u1 t1 t)) (\lambda (t: T).(pr0 t0 t)) (ex2 T (\lambda (t: 
29673 T).(subst1 i u1 t1 t)) (\lambda (t: T).(pr0 t0 t))) (\lambda (x: T).(\lambda 
29674 (H2: (subst0 i u1 t1 x)).(\lambda (H3: (pr0 t0 x)).(ex_intro2 T (\lambda (t: 
29675 T).(subst1 i u1 t1 t)) (\lambda (t: T).(pr0 t0 t)) x (subst1_single i u1 t1 x 
29676 H2) H3)))) (pr0_subst0_fwd u2 t1 t0 i H0 u1 H1)))))) t2 H))))).
29677
29678 theorem pr0_subst1:
29679  \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (v1: T).(\forall 
29680 (w1: T).(\forall (i: nat).((subst1 i v1 t1 w1) \to (\forall (v2: T).((pr0 v1 
29681 v2) \to (ex2 T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: T).(subst1 i v2 t2 
29682 w2)))))))))))
29683 \def
29684  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t1 t2)).(\lambda (v1: 
29685 T).(\lambda (w1: T).(\lambda (i: nat).(\lambda (H0: (subst1 i v1 t1 
29686 w1)).(subst1_ind i v1 t1 (\lambda (t: T).(\forall (v2: T).((pr0 v1 v2) \to 
29687 (ex2 T (\lambda (w2: T).(pr0 t w2)) (\lambda (w2: T).(subst1 i v2 t2 w2)))))) 
29688 (\lambda (v2: T).(\lambda (_: (pr0 v1 v2)).(ex_intro2 T (\lambda (w2: T).(pr0 
29689 t1 w2)) (\lambda (w2: T).(subst1 i v2 t2 w2)) t2 H (subst1_refl i v2 t2)))) 
29690 (\lambda (t0: T).(\lambda (H1: (subst0 i v1 t1 t0)).(\lambda (v2: T).(\lambda 
29691 (H2: (pr0 v1 v2)).(or_ind (pr0 t0 t2) (ex2 T (\lambda (w2: T).(pr0 t0 w2)) 
29692 (\lambda (w2: T).(subst0 i v2 t2 w2))) (ex2 T (\lambda (w2: T).(pr0 t0 w2)) 
29693 (\lambda (w2: T).(subst1 i v2 t2 w2))) (\lambda (H3: (pr0 t0 t2)).(ex_intro2 
29694 T (\lambda (w2: T).(pr0 t0 w2)) (\lambda (w2: T).(subst1 i v2 t2 w2)) t2 H3 
29695 (subst1_refl i v2 t2))) (\lambda (H3: (ex2 T (\lambda (w2: T).(pr0 t0 w2)) 
29696 (\lambda (w2: T).(subst0 i v2 t2 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 t0 
29697 w2)) (\lambda (w2: T).(subst0 i v2 t2 w2)) (ex2 T (\lambda (w2: T).(pr0 t0 
29698 w2)) (\lambda (w2: T).(subst1 i v2 t2 w2))) (\lambda (x: T).(\lambda (H4: 
29699 (pr0 t0 x)).(\lambda (H5: (subst0 i v2 t2 x)).(ex_intro2 T (\lambda (w2: 
29700 T).(pr0 t0 w2)) (\lambda (w2: T).(subst1 i v2 t2 w2)) x H4 (subst1_single i 
29701 v2 t2 x H5))))) H3)) (pr0_subst0 t1 t2 H v1 t0 i H1 v2 H2)))))) w1 H0))))))).
29702
29703 theorem nf0_dec:
29704  \forall (t1: T).(or (\forall (t2: T).((pr0 t1 t2) \to (eq T t1 t2))) (ex2 T 
29705 (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
29706 T).(pr0 t1 t2))))
29707 \def
29708  \lambda (t1: T).(T_ind (\lambda (t: T).(or (\forall (t2: T).((pr0 t t2) \to 
29709 (eq T t t2))) (ex2 T (\lambda (t2: T).((eq T t t2) \to (\forall (P: 
29710 Prop).P))) (\lambda (t2: T).(pr0 t t2))))) (\lambda (n: nat).(or_introl 
29711 (\forall (t2: T).((pr0 (TSort n) t2) \to (eq T (TSort n) t2))) (ex2 T 
29712 (\lambda (t2: T).((eq T (TSort n) t2) \to (\forall (P: Prop).P))) (\lambda 
29713 (t2: T).(pr0 (TSort n) t2))) (\lambda (t2: T).(\lambda (H: (pr0 (TSort n) 
29714 t2)).(eq_ind_r T (TSort n) (\lambda (t: T).(eq T (TSort n) t)) (refl_equal T 
29715 (TSort n)) t2 (pr0_gen_sort t2 n H)))))) (\lambda (n: nat).(or_introl 
29716 (\forall (t2: T).((pr0 (TLRef n) t2) \to (eq T (TLRef n) t2))) (ex2 T 
29717 (\lambda (t2: T).((eq T (TLRef n) t2) \to (\forall (P: Prop).P))) (\lambda 
29718 (t2: T).(pr0 (TLRef n) t2))) (\lambda (t2: T).(\lambda (H: (pr0 (TLRef n) 
29719 t2)).(eq_ind_r T (TLRef n) (\lambda (t: T).(eq T (TLRef n) t)) (refl_equal T 
29720 (TLRef n)) t2 (pr0_gen_lref t2 n H)))))) (\lambda (k: K).(\lambda (t: 
29721 T).(\lambda (H: (or (\forall (t2: T).((pr0 t t2) \to (eq T t t2))) (ex2 T 
29722 (\lambda (t2: T).((eq T t t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
29723 T).(pr0 t t2))))).(\lambda (t0: T).(\lambda (H0: (or (\forall (t2: T).((pr0 
29724 t0 t2) \to (eq T t0 t2))) (ex2 T (\lambda (t2: T).((eq T t0 t2) \to (\forall 
29725 (P: Prop).P))) (\lambda (t2: T).(pr0 t0 t2))))).(match k return (\lambda (k0: 
29726 K).(or (\forall (t2: T).((pr0 (THead k0 t t0) t2) \to (eq T (THead k0 t t0) 
29727 t2))) (ex2 T (\lambda (t2: T).((eq T (THead k0 t t0) t2) \to (\forall (P: 
29728 Prop).P))) (\lambda (t2: T).(pr0 (THead k0 t t0) t2))))) with [(Bind b) 
29729 \Rightarrow (match b return (\lambda (b0: B).(or (\forall (t2: T).((pr0 
29730 (THead (Bind b0) t t0) t2) \to (eq T (THead (Bind b0) t t0) t2))) (ex2 T 
29731 (\lambda (t2: T).((eq T (THead (Bind b0) t t0) t2) \to (\forall (P: 
29732 Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind b0) t t0) t2))))) with [Abbr 
29733 \Rightarrow (or_intror (\forall (t2: T).((pr0 (THead (Bind Abbr) t t0) t2) 
29734 \to (eq T (THead (Bind Abbr) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T 
29735 (THead (Bind Abbr) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
29736 T).(pr0 (THead (Bind Abbr) t t0) t2))) (let H_x \def (dnf_dec t t0 O) in (let 
29737 H1 \def H_x in (ex_ind T (\lambda (v: T).(or (subst0 O t t0 (lift (S O) O v)) 
29738 (eq T t0 (lift (S O) O v)))) (ex2 T (\lambda (t2: T).((eq T (THead (Bind 
29739 Abbr) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead 
29740 (Bind Abbr) t t0) t2))) (\lambda (x: T).(\lambda (H2: (or (subst0 O t t0 
29741 (lift (S O) O x)) (eq T t0 (lift (S O) O x)))).(or_ind (subst0 O t t0 (lift 
29742 (S O) O x)) (eq T t0 (lift (S O) O x)) (ex2 T (\lambda (t2: T).((eq T (THead 
29743 (Bind Abbr) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 
29744 (THead (Bind Abbr) t t0) t2))) (\lambda (H3: (subst0 O t t0 (lift (S O) O 
29745 x))).(ex_intro2 T (\lambda (t2: T).((eq T (THead (Bind Abbr) t t0) t2) \to 
29746 (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Abbr) t t0) t2)) 
29747 (THead (Bind Abbr) t (lift (S O) O x)) (\lambda (H4: (eq T (THead (Bind Abbr) 
29748 t t0) (THead (Bind Abbr) t (lift (S O) O x)))).(\lambda (P: Prop).(let H5 
29749 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
29750 [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) 
29751 \Rightarrow t])) (THead (Bind Abbr) t t0) (THead (Bind Abbr) t (lift (S O) O 
29752 x)) H4) in (let H6 \def (eq_ind T t0 (\lambda (t0: T).(subst0 O t t0 (lift (S 
29753 O) O x))) H3 (lift (S O) O x) H5) in (subst0_refl t (lift (S O) O x) O H6 
29754 P))))) (pr0_delta t t (pr0_refl t) t0 t0 (pr0_refl t0) (lift (S O) O x) H3))) 
29755 (\lambda (H3: (eq T t0 (lift (S O) O x))).(eq_ind_r T (lift (S O) O x) 
29756 (\lambda (t2: T).(ex2 T (\lambda (t3: T).((eq T (THead (Bind Abbr) t t2) t3) 
29757 \to (\forall (P: Prop).P))) (\lambda (t3: T).(pr0 (THead (Bind Abbr) t t2) 
29758 t3)))) (ex_intro2 T (\lambda (t2: T).((eq T (THead (Bind Abbr) t (lift (S O) 
29759 O x)) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind 
29760 Abbr) t (lift (S O) O x)) t2)) x (\lambda (H4: (eq T (THead (Bind Abbr) t 
29761 (lift (S O) O x)) x)).(\lambda (P: Prop).(thead_x_lift_y_y (Bind Abbr) x t (S 
29762 O) O H4 P))) (pr0_zeta Abbr not_abbr_abst x x (pr0_refl x) t)) t0 H3)) H2))) 
29763 H1)))) | Abst \Rightarrow (let H1 \def H in (or_ind (\forall (t2: T).((pr0 t 
29764 t2) \to (eq T t t2))) (ex2 T (\lambda (t2: T).((eq T t t2) \to (\forall (P: 
29765 Prop).P))) (\lambda (t2: T).(pr0 t t2))) (or (\forall (t2: T).((pr0 (THead 
29766 (Bind Abst) t t0) t2) \to (eq T (THead (Bind Abst) t t0) t2))) (ex2 T 
29767 (\lambda (t2: T).((eq T (THead (Bind Abst) t t0) t2) \to (\forall (P: 
29768 Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Abst) t t0) t2)))) (\lambda 
29769 (H2: ((\forall (t2: T).((pr0 t t2) \to (eq T t t2))))).(let H3 \def H0 in 
29770 (or_ind (\forall (t2: T).((pr0 t0 t2) \to (eq T t0 t2))) (ex2 T (\lambda (t2: 
29771 T).((eq T t0 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 t0 t2))) 
29772 (or (\forall (t2: T).((pr0 (THead (Bind Abst) t t0) t2) \to (eq T (THead 
29773 (Bind Abst) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Bind Abst) t 
29774 t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Abst) 
29775 t t0) t2)))) (\lambda (H4: ((\forall (t2: T).((pr0 t0 t2) \to (eq T t0 
29776 t2))))).(or_introl (\forall (t2: T).((pr0 (THead (Bind Abst) t t0) t2) \to 
29777 (eq T (THead (Bind Abst) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead 
29778 (Bind Abst) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 
29779 (THead (Bind Abst) t t0) t2))) (\lambda (t2: T).(\lambda (H5: (pr0 (THead 
29780 (Bind Abst) t t0) t2)).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
29781 t2 (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 t u2))) 
29782 (\lambda (_: T).(\lambda (t3: T).(pr0 t0 t3))) (eq T (THead (Bind Abst) t t0) 
29783 t2) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H6: (eq T t2 (THead (Bind 
29784 Abst) x0 x1))).(\lambda (H7: (pr0 t x0)).(\lambda (H8: (pr0 t0 x1)).(let H_y 
29785 \def (H4 x1 H8) in (let H_y0 \def (H2 x0 H7) in (let H9 \def (eq_ind_r T x1 
29786 (\lambda (t: T).(pr0 t0 t)) H8 t0 H_y) in (let H10 \def (eq_ind_r T x1 
29787 (\lambda (t: T).(eq T t2 (THead (Bind Abst) x0 t))) H6 t0 H_y) in (let H11 
29788 \def (eq_ind_r T x0 (\lambda (t0: T).(pr0 t t0)) H7 t H_y0) in (let H12 \def 
29789 (eq_ind_r T x0 (\lambda (t: T).(eq T t2 (THead (Bind Abst) t t0))) H10 t 
29790 H_y0) in (eq_ind_r T (THead (Bind Abst) t t0) (\lambda (t3: T).(eq T (THead 
29791 (Bind Abst) t t0) t3)) (refl_equal T (THead (Bind Abst) t t0)) t2 
29792 H12)))))))))))) (pr0_gen_abst t t0 t2 H5)))))) (\lambda (H4: (ex2 T (\lambda 
29793 (t2: T).((eq T t0 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 t0 
29794 t2)))).(ex2_ind T (\lambda (t2: T).((eq T t0 t2) \to (\forall (P: Prop).P))) 
29795 (\lambda (t2: T).(pr0 t0 t2)) (or (\forall (t2: T).((pr0 (THead (Bind Abst) t 
29796 t0) t2) \to (eq T (THead (Bind Abst) t t0) t2))) (ex2 T (\lambda (t2: T).((eq 
29797 T (THead (Bind Abst) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
29798 T).(pr0 (THead (Bind Abst) t t0) t2)))) (\lambda (x: T).(\lambda (H5: (((eq T 
29799 t0 x) \to (\forall (P: Prop).P)))).(\lambda (H6: (pr0 t0 x)).(or_intror 
29800 (\forall (t2: T).((pr0 (THead (Bind Abst) t t0) t2) \to (eq T (THead (Bind 
29801 Abst) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Bind Abst) t t0) t2) 
29802 \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Abst) t t0) 
29803 t2))) (ex_intro2 T (\lambda (t2: T).((eq T (THead (Bind Abst) t t0) t2) \to 
29804 (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Abst) t t0) t2)) 
29805 (THead (Bind Abst) t x) (\lambda (H7: (eq T (THead (Bind Abst) t t0) (THead 
29806 (Bind Abst) t x))).(\lambda (P: Prop).(let H8 \def (f_equal T T (\lambda (e: 
29807 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef 
29808 _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead (Bind Abst) t t0) 
29809 (THead (Bind Abst) t x) H7) in (let H9 \def (eq_ind_r T x (\lambda (t: 
29810 T).(pr0 t0 t)) H6 t0 H8) in (let H10 \def (eq_ind_r T x (\lambda (t: T).((eq 
29811 T t0 t) \to (\forall (P: Prop).P))) H5 t0 H8) in (H10 (refl_equal T t0) 
29812 P)))))) (pr0_comp t t (pr0_refl t) t0 x H6 (Bind Abst))))))) H4)) H3))) 
29813 (\lambda (H2: (ex2 T (\lambda (t2: T).((eq T t t2) \to (\forall (P: 
29814 Prop).P))) (\lambda (t2: T).(pr0 t t2)))).(ex2_ind T (\lambda (t2: T).((eq T 
29815 t t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 t t2)) (or (\forall 
29816 (t2: T).((pr0 (THead (Bind Abst) t t0) t2) \to (eq T (THead (Bind Abst) t t0) 
29817 t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Bind Abst) t t0) t2) \to 
29818 (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Abst) t t0) t2)))) 
29819 (\lambda (x: T).(\lambda (H3: (((eq T t x) \to (\forall (P: 
29820 Prop).P)))).(\lambda (H4: (pr0 t x)).(or_intror (\forall (t2: T).((pr0 (THead 
29821 (Bind Abst) t t0) t2) \to (eq T (THead (Bind Abst) t t0) t2))) (ex2 T 
29822 (\lambda (t2: T).((eq T (THead (Bind Abst) t t0) t2) \to (\forall (P: 
29823 Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Abst) t t0) t2))) (ex_intro2 T 
29824 (\lambda (t2: T).((eq T (THead (Bind Abst) t t0) t2) \to (\forall (P: 
29825 Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Abst) t t0) t2)) (THead (Bind 
29826 Abst) x t0) (\lambda (H5: (eq T (THead (Bind Abst) t t0) (THead (Bind Abst) x 
29827 t0))).(\lambda (P: Prop).(let H6 \def (f_equal T T (\lambda (e: T).(match e 
29828 return (\lambda (_: T).T) with [(TSort _) \Rightarrow t | (TLRef _) 
29829 \Rightarrow t | (THead _ t _) \Rightarrow t])) (THead (Bind Abst) t t0) 
29830 (THead (Bind Abst) x t0) H5) in (let H7 \def (eq_ind_r T x (\lambda (t0: 
29831 T).(pr0 t t0)) H4 t H6) in (let H8 \def (eq_ind_r T x (\lambda (t0: T).((eq T 
29832 t t0) \to (\forall (P: Prop).P))) H3 t H6) in (H8 (refl_equal T t) P)))))) 
29833 (pr0_comp t x H4 t0 t0 (pr0_refl t0) (Bind Abst))))))) H2)) H1)) | Void 
29834 \Rightarrow (let H_x \def (dnf_dec t t0 O) in (let H1 \def H_x in (ex_ind T 
29835 (\lambda (v: T).(or (subst0 O t t0 (lift (S O) O v)) (eq T t0 (lift (S O) O 
29836 v)))) (or (\forall (t2: T).((pr0 (THead (Bind Void) t t0) t2) \to (eq T 
29837 (THead (Bind Void) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Bind 
29838 Void) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead 
29839 (Bind Void) t t0) t2)))) (\lambda (x: T).(\lambda (H2: (or (subst0 O t t0 
29840 (lift (S O) O x)) (eq T t0 (lift (S O) O x)))).(or_ind (subst0 O t t0 (lift 
29841 (S O) O x)) (eq T t0 (lift (S O) O x)) (or (\forall (t2: T).((pr0 (THead 
29842 (Bind Void) t t0) t2) \to (eq T (THead (Bind Void) t t0) t2))) (ex2 T 
29843 (\lambda (t2: T).((eq T (THead (Bind Void) t t0) t2) \to (\forall (P: 
29844 Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Void) t t0) t2)))) (\lambda 
29845 (H3: (subst0 O t t0 (lift (S O) O x))).(let H4 \def H in (or_ind (\forall 
29846 (t2: T).((pr0 t t2) \to (eq T t t2))) (ex2 T (\lambda (t2: T).((eq T t t2) 
29847 \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 t t2))) (or (\forall (t2: 
29848 T).((pr0 (THead (Bind Void) t t0) t2) \to (eq T (THead (Bind Void) t t0) 
29849 t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Bind Void) t t0) t2) \to 
29850 (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Void) t t0) t2)))) 
29851 (\lambda (H5: ((\forall (t2: T).((pr0 t t2) \to (eq T t t2))))).(let H6 \def 
29852 H0 in (or_ind (\forall (t2: T).((pr0 t0 t2) \to (eq T t0 t2))) (ex2 T 
29853 (\lambda (t2: T).((eq T t0 t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
29854 T).(pr0 t0 t2))) (or (\forall (t2: T).((pr0 (THead (Bind Void) t t0) t2) \to 
29855 (eq T (THead (Bind Void) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead 
29856 (Bind Void) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 
29857 (THead (Bind Void) t t0) t2)))) (\lambda (H7: ((\forall (t2: T).((pr0 t0 t2) 
29858 \to (eq T t0 t2))))).(or_introl (\forall (t2: T).((pr0 (THead (Bind Void) t 
29859 t0) t2) \to (eq T (THead (Bind Void) t t0) t2))) (ex2 T (\lambda (t2: T).((eq 
29860 T (THead (Bind Void) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
29861 T).(pr0 (THead (Bind Void) t t0) t2))) (\lambda (t2: T).(\lambda (H8: (pr0 
29862 (THead (Bind Void) t t0) t2)).(or_ind (ex3_2 T T (\lambda (u2: T).(\lambda 
29863 (t3: T).(eq T t2 (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
29864 T).(pr0 t u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t0 t3)))) (pr0 t0 (lift 
29865 (S O) O t2)) (eq T (THead (Bind Void) t t0) t2) (\lambda (H9: (ex3_2 T T 
29866 (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Void) u2 t3)))) 
29867 (\lambda (u2: T).(\lambda (_: T).(pr0 t u2))) (\lambda (_: T).(\lambda (t2: 
29868 T).(pr0 t0 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 
29869 (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 t u2))) 
29870 (\lambda (_: T).(\lambda (t3: T).(pr0 t0 t3))) (eq T (THead (Bind Void) t t0) 
29871 t2) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H10: (eq T t2 (THead (Bind 
29872 Void) x0 x1))).(\lambda (H11: (pr0 t x0)).(\lambda (H12: (pr0 t0 x1)).(let 
29873 H_y \def (H7 x1 H12) in (let H_y0 \def (H5 x0 H11) in (let H13 \def (eq_ind_r 
29874 T x1 (\lambda (t: T).(pr0 t0 t)) H12 t0 H_y) in (let H14 \def (eq_ind_r T x1 
29875 (\lambda (t: T).(eq T t2 (THead (Bind Void) x0 t))) H10 t0 H_y) in (let H15 
29876 \def (eq_ind_r T x0 (\lambda (t0: T).(pr0 t t0)) H11 t H_y0) in (let H16 \def 
29877 (eq_ind_r T x0 (\lambda (t: T).(eq T t2 (THead (Bind Void) t t0))) H14 t 
29878 H_y0) in (eq_ind_r T (THead (Bind Void) t t0) (\lambda (t3: T).(eq T (THead 
29879 (Bind Void) t t0) t3)) (refl_equal T (THead (Bind Void) t t0)) t2 
29880 H16)))))))))))) H9)) (\lambda (H9: (pr0 t0 (lift (S O) O t2))).(let H_y \def 
29881 (H7 (lift (S O) O t2) H9) in (let H10 \def (eq_ind T t0 (\lambda (t0: 
29882 T).(subst0 O t t0 (lift (S O) O x))) H3 (lift (S O) O t2) H_y) in (eq_ind_r T 
29883 (lift (S O) O t2) (\lambda (t3: T).(eq T (THead (Bind Void) t t3) t2)) 
29884 (subst0_gen_lift_false t2 t (lift (S O) O x) (S O) O O (le_n O) (eq_ind_r nat 
29885 (plus (S O) O) (\lambda (n: nat).(lt O n)) (le_n (plus (S O) O)) (plus O (S 
29886 O)) (plus_comm O (S O))) H10 (eq T (THead (Bind Void) t (lift (S O) O t2)) 
29887 t2)) t0 H_y)))) (pr0_gen_void t t0 t2 H8)))))) (\lambda (H7: (ex2 T (\lambda 
29888 (t2: T).((eq T t0 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 t0 
29889 t2)))).(ex2_ind T (\lambda (t2: T).((eq T t0 t2) \to (\forall (P: Prop).P))) 
29890 (\lambda (t2: T).(pr0 t0 t2)) (or (\forall (t2: T).((pr0 (THead (Bind Void) t 
29891 t0) t2) \to (eq T (THead (Bind Void) t t0) t2))) (ex2 T (\lambda (t2: T).((eq 
29892 T (THead (Bind Void) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
29893 T).(pr0 (THead (Bind Void) t t0) t2)))) (\lambda (x0: T).(\lambda (H8: (((eq 
29894 T t0 x0) \to (\forall (P: Prop).P)))).(\lambda (H9: (pr0 t0 x0)).(or_intror 
29895 (\forall (t2: T).((pr0 (THead (Bind Void) t t0) t2) \to (eq T (THead (Bind 
29896 Void) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Bind Void) t t0) t2) 
29897 \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Void) t t0) 
29898 t2))) (ex_intro2 T (\lambda (t2: T).((eq T (THead (Bind Void) t t0) t2) \to 
29899 (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Void) t t0) t2)) 
29900 (THead (Bind Void) t x0) (\lambda (H10: (eq T (THead (Bind Void) t t0) (THead 
29901 (Bind Void) t x0))).(\lambda (P: Prop).(let H11 \def (f_equal T T (\lambda 
29902 (e: T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | 
29903 (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead (Bind Void) 
29904 t t0) (THead (Bind Void) t x0) H10) in (let H12 \def (eq_ind_r T x0 (\lambda 
29905 (t: T).(pr0 t0 t)) H9 t0 H11) in (let H13 \def (eq_ind_r T x0 (\lambda (t: 
29906 T).((eq T t0 t) \to (\forall (P: Prop).P))) H8 t0 H11) in (H13 (refl_equal T 
29907 t0) P)))))) (pr0_comp t t (pr0_refl t) t0 x0 H9 (Bind Void))))))) H7)) H6))) 
29908 (\lambda (H5: (ex2 T (\lambda (t2: T).((eq T t t2) \to (\forall (P: 
29909 Prop).P))) (\lambda (t2: T).(pr0 t t2)))).(ex2_ind T (\lambda (t2: T).((eq T 
29910 t t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 t t2)) (or (\forall 
29911 (t2: T).((pr0 (THead (Bind Void) t t0) t2) \to (eq T (THead (Bind Void) t t0) 
29912 t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Bind Void) t t0) t2) \to 
29913 (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Void) t t0) t2)))) 
29914 (\lambda (x0: T).(\lambda (H6: (((eq T t x0) \to (\forall (P: 
29915 Prop).P)))).(\lambda (H7: (pr0 t x0)).(or_intror (\forall (t2: T).((pr0 
29916 (THead (Bind Void) t t0) t2) \to (eq T (THead (Bind Void) t t0) t2))) (ex2 T 
29917 (\lambda (t2: T).((eq T (THead (Bind Void) t t0) t2) \to (\forall (P: 
29918 Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Void) t t0) t2))) (ex_intro2 T 
29919 (\lambda (t2: T).((eq T (THead (Bind Void) t t0) t2) \to (\forall (P: 
29920 Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Void) t t0) t2)) (THead (Bind 
29921 Void) x0 t0) (\lambda (H8: (eq T (THead (Bind Void) t t0) (THead (Bind Void) 
29922 x0 t0))).(\lambda (P: Prop).(let H9 \def (f_equal T T (\lambda (e: T).(match 
29923 e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t | (TLRef _) 
29924 \Rightarrow t | (THead _ t _) \Rightarrow t])) (THead (Bind Void) t t0) 
29925 (THead (Bind Void) x0 t0) H8) in (let H10 \def (eq_ind_r T x0 (\lambda (t0: 
29926 T).(pr0 t t0)) H7 t H9) in (let H11 \def (eq_ind_r T x0 (\lambda (t0: T).((eq 
29927 T t t0) \to (\forall (P: Prop).P))) H6 t H9) in (H11 (refl_equal T t) P)))))) 
29928 (pr0_comp t x0 H7 t0 t0 (pr0_refl t0) (Bind Void))))))) H5)) H4))) (\lambda 
29929 (H3: (eq T t0 (lift (S O) O x))).(let H4 \def (eq_ind T t0 (\lambda (t: 
29930 T).(or (\forall (t2: T).((pr0 t t2) \to (eq T t t2))) (ex2 T (\lambda (t2: 
29931 T).((eq T t t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 t t2))))) 
29932 H0 (lift (S O) O x) H3) in (eq_ind_r T (lift (S O) O x) (\lambda (t2: T).(or 
29933 (\forall (t3: T).((pr0 (THead (Bind Void) t t2) t3) \to (eq T (THead (Bind 
29934 Void) t t2) t3))) (ex2 T (\lambda (t3: T).((eq T (THead (Bind Void) t t2) t3) 
29935 \to (\forall (P: Prop).P))) (\lambda (t3: T).(pr0 (THead (Bind Void) t t2) 
29936 t3))))) (or_intror (\forall (t2: T).((pr0 (THead (Bind Void) t (lift (S O) O 
29937 x)) t2) \to (eq T (THead (Bind Void) t (lift (S O) O x)) t2))) (ex2 T 
29938 (\lambda (t2: T).((eq T (THead (Bind Void) t (lift (S O) O x)) t2) \to 
29939 (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Void) t (lift (S 
29940 O) O x)) t2))) (ex_intro2 T (\lambda (t2: T).((eq T (THead (Bind Void) t 
29941 (lift (S O) O x)) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 
29942 (THead (Bind Void) t (lift (S O) O x)) t2)) x (\lambda (H5: (eq T (THead 
29943 (Bind Void) t (lift (S O) O x)) x)).(\lambda (P: Prop).(thead_x_lift_y_y 
29944 (Bind Void) x t (S O) O H5 P))) (pr0_zeta Void not_void_abst x x (pr0_refl x) 
29945 t))) t0 H3))) H2))) H1)))]) | (Flat f) \Rightarrow (match f return (\lambda 
29946 (f0: F).(or (\forall (t2: T).((pr0 (THead (Flat f0) t t0) t2) \to (eq T 
29947 (THead (Flat f0) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Flat f0) 
29948 t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat f0) 
29949 t t0) t2))))) with [Appl \Rightarrow (let H_x \def (binder_dec t0) in (let H1 
29950 \def H_x in (or_ind (ex_3 B T T (\lambda (b: B).(\lambda (w: T).(\lambda (u: 
29951 T).(eq T t0 (THead (Bind b) w u)))))) (\forall (b: B).(\forall (w: 
29952 T).(\forall (u: T).((eq T t0 (THead (Bind b) w u)) \to (\forall (P: 
29953 Prop).P))))) (or (\forall (t2: T).((pr0 (THead (Flat Appl) t t0) t2) \to (eq 
29954 T (THead (Flat Appl) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Flat 
29955 Appl) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead 
29956 (Flat Appl) t t0) t2)))) (\lambda (H2: (ex_3 B T T (\lambda (b: B).(\lambda 
29957 (w: T).(\lambda (u: T).(eq T t0 (THead (Bind b) w u))))))).(ex_3_ind B T T 
29958 (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(eq T t0 (THead (Bind b) w 
29959 u))))) (or (\forall (t2: T).((pr0 (THead (Flat Appl) t t0) t2) \to (eq T 
29960 (THead (Flat Appl) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Flat 
29961 Appl) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead 
29962 (Flat Appl) t t0) t2)))) (\lambda (x0: B).(\lambda (x1: T).(\lambda (x2: 
29963 T).(\lambda (H3: (eq T t0 (THead (Bind x0) x1 x2))).(let H4 \def (eq_ind T t0 
29964 (\lambda (t: T).(or (\forall (t2: T).((pr0 t t2) \to (eq T t t2))) (ex2 T 
29965 (\lambda (t2: T).((eq T t t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
29966 T).(pr0 t t2))))) H0 (THead (Bind x0) x1 x2) H3) in (eq_ind_r T (THead (Bind 
29967 x0) x1 x2) (\lambda (t2: T).(or (\forall (t3: T).((pr0 (THead (Flat Appl) t 
29968 t2) t3) \to (eq T (THead (Flat Appl) t t2) t3))) (ex2 T (\lambda (t3: T).((eq 
29969 T (THead (Flat Appl) t t2) t3) \to (\forall (P: Prop).P))) (\lambda (t3: 
29970 T).(pr0 (THead (Flat Appl) t t2) t3))))) ((match x0 return (\lambda (b: 
29971 B).((or (\forall (t2: T).((pr0 (THead (Bind b) x1 x2) t2) \to (eq T (THead 
29972 (Bind b) x1 x2) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Bind b) x1 x2) 
29973 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind b) x1 x2) 
29974 t2)))) \to (or (\forall (t2: T).((pr0 (THead (Flat Appl) t (THead (Bind b) x1 
29975 x2)) t2) \to (eq T (THead (Flat Appl) t (THead (Bind b) x1 x2)) t2))) (ex2 T 
29976 (\lambda (t2: T).((eq T (THead (Flat Appl) t (THead (Bind b) x1 x2)) t2) \to 
29977 (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat Appl) t (THead 
29978 (Bind b) x1 x2)) t2)))))) with [Abbr \Rightarrow (\lambda (_: (or (\forall 
29979 (t2: T).((pr0 (THead (Bind Abbr) x1 x2) t2) \to (eq T (THead (Bind Abbr) x1 
29980 x2) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Bind Abbr) x1 x2) t2) \to 
29981 (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Abbr) x1 x2) 
29982 t2))))).(or_intror (\forall (t2: T).((pr0 (THead (Flat Appl) t (THead (Bind 
29983 Abbr) x1 x2)) t2) \to (eq T (THead (Flat Appl) t (THead (Bind Abbr) x1 x2)) 
29984 t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Flat Appl) t (THead (Bind Abbr) 
29985 x1 x2)) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat 
29986 Appl) t (THead (Bind Abbr) x1 x2)) t2))) (ex_intro2 T (\lambda (t2: T).((eq T 
29987 (THead (Flat Appl) t (THead (Bind Abbr) x1 x2)) t2) \to (\forall (P: 
29988 Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat Appl) t (THead (Bind Abbr) x1 
29989 x2)) t2)) (THead (Bind Abbr) x1 (THead (Flat Appl) (lift (S O) O t) x2)) 
29990 (\lambda (H6: (eq T (THead (Flat Appl) t (THead (Bind Abbr) x1 x2)) (THead 
29991 (Bind Abbr) x1 (THead (Flat Appl) (lift (S O) O t) x2)))).(\lambda (P: 
29992 Prop).(let H7 \def (eq_ind T (THead (Flat Appl) t (THead (Bind Abbr) x1 x2)) 
29993 (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
29994 \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ t) \Rightarrow 
29995 (match t return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
29996 (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k return 
29997 (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow 
29998 False])])])) I (THead (Bind Abbr) x1 (THead (Flat Appl) (lift (S O) O t) x2)) 
29999 H6) in (False_ind P H7)))) (pr0_upsilon Abbr not_abbr_abst t t (pr0_refl t) 
30000 x1 x1 (pr0_refl x1) x2 x2 (pr0_refl x2))))) | Abst \Rightarrow (\lambda (_: 
30001 (or (\forall (t2: T).((pr0 (THead (Bind Abst) x1 x2) t2) \to (eq T (THead 
30002 (Bind Abst) x1 x2) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Bind Abst) x1 
30003 x2) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Bind Abst) 
30004 x1 x2) t2))))).(or_intror (\forall (t2: T).((pr0 (THead (Flat Appl) t (THead 
30005 (Bind Abst) x1 x2)) t2) \to (eq T (THead (Flat Appl) t (THead (Bind Abst) x1 
30006 x2)) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Flat Appl) t (THead (Bind 
30007 Abst) x1 x2)) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead 
30008 (Flat Appl) t (THead (Bind Abst) x1 x2)) t2))) (ex_intro2 T (\lambda (t2: 
30009 T).((eq T (THead (Flat Appl) t (THead (Bind Abst) x1 x2)) t2) \to (\forall 
30010 (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat Appl) t (THead (Bind Abst) 
30011 x1 x2)) t2)) (THead (Bind Abbr) t x2) (\lambda (H6: (eq T (THead (Flat Appl) 
30012 t (THead (Bind Abst) x1 x2)) (THead (Bind Abbr) t x2))).(\lambda (P: 
30013 Prop).(let H7 \def (eq_ind T (THead (Flat Appl) t (THead (Bind Abst) x1 x2)) 
30014 (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
30015 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
30016 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
30017 (Flat _) \Rightarrow True])])) I (THead (Bind Abbr) t x2) H6) in (False_ind P 
30018 H7)))) (pr0_beta x1 t t (pr0_refl t) x2 x2 (pr0_refl x2))))) | Void 
30019 \Rightarrow (\lambda (_: (or (\forall (t2: T).((pr0 (THead (Bind Void) x1 x2) 
30020 t2) \to (eq T (THead (Bind Void) x1 x2) t2))) (ex2 T (\lambda (t2: T).((eq T 
30021 (THead (Bind Void) x1 x2) t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
30022 T).(pr0 (THead (Bind Void) x1 x2) t2))))).(or_intror (\forall (t2: T).((pr0 
30023 (THead (Flat Appl) t (THead (Bind Void) x1 x2)) t2) \to (eq T (THead (Flat 
30024 Appl) t (THead (Bind Void) x1 x2)) t2))) (ex2 T (\lambda (t2: T).((eq T 
30025 (THead (Flat Appl) t (THead (Bind Void) x1 x2)) t2) \to (\forall (P: 
30026 Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat Appl) t (THead (Bind Void) x1 
30027 x2)) t2))) (ex_intro2 T (\lambda (t2: T).((eq T (THead (Flat Appl) t (THead 
30028 (Bind Void) x1 x2)) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 
30029 (THead (Flat Appl) t (THead (Bind Void) x1 x2)) t2)) (THead (Bind Void) x1 
30030 (THead (Flat Appl) (lift (S O) O t) x2)) (\lambda (H6: (eq T (THead (Flat 
30031 Appl) t (THead (Bind Void) x1 x2)) (THead (Bind Void) x1 (THead (Flat Appl) 
30032 (lift (S O) O t) x2)))).(\lambda (P: Prop).(let H7 \def (eq_ind T (THead 
30033 (Flat Appl) t (THead (Bind Void) x1 x2)) (\lambda (ee: T).(match ee return 
30034 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
30035 \Rightarrow False | (THead _ _ t) \Rightarrow (match t return (\lambda (_: 
30036 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
30037 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
30038 _) \Rightarrow True | (Flat _) \Rightarrow False])])])) I (THead (Bind Void) 
30039 x1 (THead (Flat Appl) (lift (S O) O t) x2)) H6) in (False_ind P H7)))) 
30040 (pr0_upsilon Void not_void_abst t t (pr0_refl t) x1 x1 (pr0_refl x1) x2 x2 
30041 (pr0_refl x2)))))]) H4) t0 H3)))))) H2)) (\lambda (H2: ((\forall (b: 
30042 B).(\forall (w: T).(\forall (u: T).((eq T t0 (THead (Bind b) w u)) \to 
30043 (\forall (P: Prop).P))))))).(let H3 \def H in (or_ind (\forall (t2: T).((pr0 
30044 t t2) \to (eq T t t2))) (ex2 T (\lambda (t2: T).((eq T t t2) \to (\forall (P: 
30045 Prop).P))) (\lambda (t2: T).(pr0 t t2))) (or (\forall (t2: T).((pr0 (THead 
30046 (Flat Appl) t t0) t2) \to (eq T (THead (Flat Appl) t t0) t2))) (ex2 T 
30047 (\lambda (t2: T).((eq T (THead (Flat Appl) t t0) t2) \to (\forall (P: 
30048 Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat Appl) t t0) t2)))) (\lambda 
30049 (H4: ((\forall (t2: T).((pr0 t t2) \to (eq T t t2))))).(let H5 \def H0 in 
30050 (or_ind (\forall (t2: T).((pr0 t0 t2) \to (eq T t0 t2))) (ex2 T (\lambda (t2: 
30051 T).((eq T t0 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 t0 t2))) 
30052 (or (\forall (t2: T).((pr0 (THead (Flat Appl) t t0) t2) \to (eq T (THead 
30053 (Flat Appl) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Flat Appl) t 
30054 t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat Appl) 
30055 t t0) t2)))) (\lambda (H6: ((\forall (t2: T).((pr0 t0 t2) \to (eq T t0 
30056 t2))))).(or_introl (\forall (t2: T).((pr0 (THead (Flat Appl) t t0) t2) \to 
30057 (eq T (THead (Flat Appl) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead 
30058 (Flat Appl) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 
30059 (THead (Flat Appl) t t0) t2))) (\lambda (t2: T).(\lambda (H7: (pr0 (THead 
30060 (Flat Appl) t t0) t2)).(or3_ind (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
30061 T).(eq T t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
30062 T).(pr0 t u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t0 t3)))) (ex4_4 T T T 
30063 T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t0 
30064 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
30065 T).(\lambda (t3: T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
30066 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr0 t u2))))) (\lambda 
30067 (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) 
30068 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
30069 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
30070 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
30071 (_: T).(eq T t0 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
30072 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (v2: T).(\lambda (t3: T).(eq T 
30073 t2 (THead (Bind b) v2 (THead (Flat Appl) (lift (S O) O u2) t3))))))))) 
30074 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
30075 T).(\lambda (_: T).(pr0 t u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda 
30076 (_: T).(\lambda (_: T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) 
30077 (\lambda (_: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
30078 T).(\lambda (t3: T).(pr0 z1 t3)))))))) (eq T (THead (Flat Appl) t t0) t2) 
30079 (\lambda (H8: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead 
30080 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 t u2))) (\lambda 
30081 (_: T).(\lambda (t2: T).(pr0 t0 t2))))).(ex3_2_ind T T (\lambda (u2: 
30082 T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
30083 T).(\lambda (_: T).(pr0 t u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t0 
30084 t3))) (eq T (THead (Flat Appl) t t0) t2) (\lambda (x0: T).(\lambda (x1: 
30085 T).(\lambda (H9: (eq T t2 (THead (Flat Appl) x0 x1))).(\lambda (H10: (pr0 t 
30086 x0)).(\lambda (H11: (pr0 t0 x1)).(let H_y \def (H6 x1 H11) in (let H_y0 \def 
30087 (H4 x0 H10) in (let H12 \def (eq_ind_r T x1 (\lambda (t: T).(pr0 t0 t)) H11 
30088 t0 H_y) in (let H13 \def (eq_ind_r T x1 (\lambda (t: T).(eq T t2 (THead (Flat 
30089 Appl) x0 t))) H9 t0 H_y) in (let H14 \def (eq_ind_r T x0 (\lambda (t0: 
30090 T).(pr0 t t0)) H10 t H_y0) in (let H15 \def (eq_ind_r T x0 (\lambda (t: 
30091 T).(eq T t2 (THead (Flat Appl) t t0))) H13 t H_y0) in (eq_ind_r T (THead 
30092 (Flat Appl) t t0) (\lambda (t3: T).(eq T (THead (Flat Appl) t t0) t3)) 
30093 (refl_equal T (THead (Flat Appl) t t0)) t2 H15)))))))))))) H8)) (\lambda (H8: 
30094 (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
30095 T).(eq T t0 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: 
30096 T).(\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) 
30097 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr0 t 
30098 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: 
30099 T).(pr0 z1 t2))))))).(ex4_4_ind T T T T (\lambda (y1: T).(\lambda (z1: 
30100 T).(\lambda (_: T).(\lambda (_: T).(eq T t0 (THead (Bind Abst) y1 z1)))))) 
30101 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T t2 
30102 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
30103 T).(\lambda (_: T).(pr0 t u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda 
30104 (_: T).(\lambda (t3: T).(pr0 z1 t3))))) (eq T (THead (Flat Appl) t t0) t2) 
30105 (\lambda (x0: T).(\lambda (x1: T).(\lambda (x2: T).(\lambda (x3: T).(\lambda 
30106 (H9: (eq T t0 (THead (Bind Abst) x0 x1))).(\lambda (H10: (eq T t2 (THead 
30107 (Bind Abbr) x2 x3))).(\lambda (_: (pr0 t x2)).(\lambda (_: (pr0 x1 
30108 x3)).(eq_ind_r T (THead (Bind Abbr) x2 x3) (\lambda (t3: T).(eq T (THead 
30109 (Flat Appl) t t0) t3)) (let H13 \def (eq_ind T t0 (\lambda (t: T).(\forall 
30110 (t2: T).((pr0 t t2) \to (eq T t t2)))) H6 (THead (Bind Abst) x0 x1) H9) in 
30111 (let H14 \def (eq_ind T t0 (\lambda (t: T).(\forall (b: B).(\forall (w: 
30112 T).(\forall (u: T).((eq T t (THead (Bind b) w u)) \to (\forall (P: 
30113 Prop).P)))))) H2 (THead (Bind Abst) x0 x1) H9) in (eq_ind_r T (THead (Bind 
30114 Abst) x0 x1) (\lambda (t3: T).(eq T (THead (Flat Appl) t t3) (THead (Bind 
30115 Abbr) x2 x3))) (H14 Abst x0 x1 (H13 (THead (Bind Abst) x0 x1) (pr0_refl 
30116 (THead (Bind Abst) x0 x1))) (eq T (THead (Flat Appl) t (THead (Bind Abst) x0 
30117 x1)) (THead (Bind Abbr) x2 x3))) t0 H9))) t2 H10))))))))) H8)) (\lambda (H8: 
30118 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
30119 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
30120 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
30121 (_: T).(eq T t0 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
30122 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (v2: T).(\lambda (t3: T).(eq T 
30123 t2 (THead (Bind b) v2 (THead (Flat Appl) (lift (S O) O u2) t3))))))))) 
30124 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
30125 T).(\lambda (_: T).(pr0 t u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda 
30126 (_: T).(\lambda (_: T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) 
30127 (\lambda (_: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
30128 T).(\lambda (t2: T).(pr0 z1 t2))))))))).(ex6_6_ind B T T T T T (\lambda (b: 
30129 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
30130 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
30131 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t0 (THead (Bind 
30132 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
30133 (u2: T).(\lambda (v2: T).(\lambda (t3: T).(eq T t2 (THead (Bind b) v2 (THead 
30134 (Flat Appl) (lift (S O) O u2) t3))))))))) (\lambda (_: B).(\lambda (_: 
30135 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(\lambda (_: T).(pr0 t 
30136 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
30137 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
30138 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
30139 (t3: T).(pr0 z1 t3))))))) (eq T (THead (Flat Appl) t t0) t2) (\lambda (x0: 
30140 B).(\lambda (x1: T).(\lambda (x2: T).(\lambda (x3: T).(\lambda (x4: 
30141 T).(\lambda (x5: T).(\lambda (_: (not (eq B x0 Abst))).(\lambda (H10: (eq T 
30142 t0 (THead (Bind x0) x1 x2))).(\lambda (H11: (eq T t2 (THead (Bind x0) x4 
30143 (THead (Flat Appl) (lift (S O) O x3) x5)))).(\lambda (_: (pr0 t x3)).(\lambda 
30144 (_: (pr0 x1 x4)).(\lambda (_: (pr0 x2 x5)).(eq_ind_r T (THead (Bind x0) x4 
30145 (THead (Flat Appl) (lift (S O) O x3) x5)) (\lambda (t3: T).(eq T (THead (Flat 
30146 Appl) t t0) t3)) (let H15 \def (eq_ind T t0 (\lambda (t: T).(\forall (t2: 
30147 T).((pr0 t t2) \to (eq T t t2)))) H6 (THead (Bind x0) x1 x2) H10) in (let H16 
30148 \def (eq_ind T t0 (\lambda (t: T).(\forall (b: B).(\forall (w: T).(\forall 
30149 (u: T).((eq T t (THead (Bind b) w u)) \to (\forall (P: Prop).P)))))) H2 
30150 (THead (Bind x0) x1 x2) H10) in (eq_ind_r T (THead (Bind x0) x1 x2) (\lambda 
30151 (t3: T).(eq T (THead (Flat Appl) t t3) (THead (Bind x0) x4 (THead (Flat Appl) 
30152 (lift (S O) O x3) x5)))) (H16 x0 x1 x2 (H15 (THead (Bind x0) x1 x2) (pr0_refl 
30153 (THead (Bind x0) x1 x2))) (eq T (THead (Flat Appl) t (THead (Bind x0) x1 x2)) 
30154 (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x3) x5)))) t0 H10))) t2 
30155 H11))))))))))))) H8)) (pr0_gen_appl t t0 t2 H7)))))) (\lambda (H6: (ex2 T 
30156 (\lambda (t2: T).((eq T t0 t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
30157 T).(pr0 t0 t2)))).(ex2_ind T (\lambda (t2: T).((eq T t0 t2) \to (\forall (P: 
30158 Prop).P))) (\lambda (t2: T).(pr0 t0 t2)) (or (\forall (t2: T).((pr0 (THead 
30159 (Flat Appl) t t0) t2) \to (eq T (THead (Flat Appl) t t0) t2))) (ex2 T 
30160 (\lambda (t2: T).((eq T (THead (Flat Appl) t t0) t2) \to (\forall (P: 
30161 Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat Appl) t t0) t2)))) (\lambda (x: 
30162 T).(\lambda (H7: (((eq T t0 x) \to (\forall (P: Prop).P)))).(\lambda (H8: 
30163 (pr0 t0 x)).(or_intror (\forall (t2: T).((pr0 (THead (Flat Appl) t t0) t2) 
30164 \to (eq T (THead (Flat Appl) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T 
30165 (THead (Flat Appl) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
30166 T).(pr0 (THead (Flat Appl) t t0) t2))) (ex_intro2 T (\lambda (t2: T).((eq T 
30167 (THead (Flat Appl) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
30168 T).(pr0 (THead (Flat Appl) t t0) t2)) (THead (Flat Appl) t x) (\lambda (H9: 
30169 (eq T (THead (Flat Appl) t t0) (THead (Flat Appl) t x))).(\lambda (P: 
30170 Prop).(let H10 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
30171 T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ 
30172 t) \Rightarrow t])) (THead (Flat Appl) t t0) (THead (Flat Appl) t x) H9) in 
30173 (let H11 \def (eq_ind_r T x (\lambda (t: T).(pr0 t0 t)) H8 t0 H10) in (let 
30174 H12 \def (eq_ind_r T x (\lambda (t: T).((eq T t0 t) \to (\forall (P: 
30175 Prop).P))) H7 t0 H10) in (H12 (refl_equal T t0) P)))))) (pr0_comp t t 
30176 (pr0_refl t) t0 x H8 (Flat Appl))))))) H6)) H5))) (\lambda (H4: (ex2 T 
30177 (\lambda (t2: T).((eq T t t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
30178 T).(pr0 t t2)))).(ex2_ind T (\lambda (t2: T).((eq T t t2) \to (\forall (P: 
30179 Prop).P))) (\lambda (t2: T).(pr0 t t2)) (or (\forall (t2: T).((pr0 (THead 
30180 (Flat Appl) t t0) t2) \to (eq T (THead (Flat Appl) t t0) t2))) (ex2 T 
30181 (\lambda (t2: T).((eq T (THead (Flat Appl) t t0) t2) \to (\forall (P: 
30182 Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat Appl) t t0) t2)))) (\lambda (x: 
30183 T).(\lambda (H5: (((eq T t x) \to (\forall (P: Prop).P)))).(\lambda (H6: (pr0 
30184 t x)).(or_intror (\forall (t2: T).((pr0 (THead (Flat Appl) t t0) t2) \to (eq 
30185 T (THead (Flat Appl) t t0) t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Flat 
30186 Appl) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead 
30187 (Flat Appl) t t0) t2))) (ex_intro2 T (\lambda (t2: T).((eq T (THead (Flat 
30188 Appl) t t0) t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead 
30189 (Flat Appl) t t0) t2)) (THead (Flat Appl) x t0) (\lambda (H7: (eq T (THead 
30190 (Flat Appl) t t0) (THead (Flat Appl) x t0))).(\lambda (P: Prop).(let H8 \def 
30191 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
30192 _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ t _) \Rightarrow t])) 
30193 (THead (Flat Appl) t t0) (THead (Flat Appl) x t0) H7) in (let H9 \def 
30194 (eq_ind_r T x (\lambda (t0: T).(pr0 t t0)) H6 t H8) in (let H10 \def 
30195 (eq_ind_r T x (\lambda (t0: T).((eq T t t0) \to (\forall (P: Prop).P))) H5 t 
30196 H8) in (H10 (refl_equal T t) P)))))) (pr0_comp t x H6 t0 t0 (pr0_refl t0) 
30197 (Flat Appl))))))) H4)) H3))) H1))) | Cast \Rightarrow (or_intror (\forall 
30198 (t2: T).((pr0 (THead (Flat Cast) t t0) t2) \to (eq T (THead (Flat Cast) t t0) 
30199 t2))) (ex2 T (\lambda (t2: T).((eq T (THead (Flat Cast) t t0) t2) \to 
30200 (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat Cast) t t0) t2))) 
30201 (ex_intro2 T (\lambda (t2: T).((eq T (THead (Flat Cast) t t0) t2) \to 
30202 (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 (THead (Flat Cast) t t0) t2)) 
30203 t0 (\lambda (H1: (eq T (THead (Flat Cast) t t0) t0)).(\lambda (P: 
30204 Prop).(thead_x_y_y (Flat Cast) t t0 H1 P))) (pr0_epsilon t0 t0 (pr0_refl t0) 
30205 t)))])])))))) t1).
30206
30207 inductive pr1: T \to (T \to Prop) \def
30208 | pr1_r: \forall (t: T).(pr1 t t)
30209 | pr1_u: \forall (t2: T).(\forall (t1: T).((pr0 t1 t2) \to (\forall (t3: 
30210 T).((pr1 t2 t3) \to (pr1 t1 t3))))).
30211
30212 theorem pr1_pr0:
30213  \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (pr1 t1 t2)))
30214 \def
30215  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t1 t2)).(pr1_u t2 t1 H t2 
30216 (pr1_r t2)))).
30217
30218 theorem pr1_t:
30219  \forall (t2: T).(\forall (t1: T).((pr1 t1 t2) \to (\forall (t3: T).((pr1 t2 
30220 t3) \to (pr1 t1 t3)))))
30221 \def
30222  \lambda (t2: T).(\lambda (t1: T).(\lambda (H: (pr1 t1 t2)).(pr1_ind (\lambda 
30223 (t: T).(\lambda (t0: T).(\forall (t3: T).((pr1 t0 t3) \to (pr1 t t3))))) 
30224 (\lambda (t: T).(\lambda (t3: T).(\lambda (H0: (pr1 t t3)).H0))) (\lambda 
30225 (t0: T).(\lambda (t3: T).(\lambda (H0: (pr0 t3 t0)).(\lambda (t4: T).(\lambda 
30226 (_: (pr1 t0 t4)).(\lambda (H2: ((\forall (t3: T).((pr1 t4 t3) \to (pr1 t0 
30227 t3))))).(\lambda (t5: T).(\lambda (H3: (pr1 t4 t5)).(pr1_u t0 t3 H0 t5 (H2 t5 
30228 H3)))))))))) t1 t2 H))).
30229
30230 theorem pr1_head_1:
30231  \forall (u1: T).(\forall (u2: T).((pr1 u1 u2) \to (\forall (t: T).(\forall 
30232 (k: K).(pr1 (THead k u1 t) (THead k u2 t))))))
30233 \def
30234  \lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr1 u1 u2)).(\lambda (t: 
30235 T).(\lambda (k: K).(pr1_ind (\lambda (t0: T).(\lambda (t1: T).(pr1 (THead k 
30236 t0 t) (THead k t1 t)))) (\lambda (t0: T).(pr1_r (THead k t0 t))) (\lambda 
30237 (t2: T).(\lambda (t1: T).(\lambda (H0: (pr0 t1 t2)).(\lambda (t3: T).(\lambda 
30238 (_: (pr1 t2 t3)).(\lambda (H2: (pr1 (THead k t2 t) (THead k t3 t))).(pr1_u 
30239 (THead k t2 t) (THead k t1 t) (pr0_comp t1 t2 H0 t t (pr0_refl t) k) (THead k 
30240 t3 t) H2))))))) u1 u2 H))))).
30241
30242 theorem pr1_head_2:
30243  \forall (t1: T).(\forall (t2: T).((pr1 t1 t2) \to (\forall (u: T).(\forall 
30244 (k: K).(pr1 (THead k u t1) (THead k u t2))))))
30245 \def
30246  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr1 t1 t2)).(\lambda (u: 
30247 T).(\lambda (k: K).(pr1_ind (\lambda (t: T).(\lambda (t0: T).(pr1 (THead k u 
30248 t) (THead k u t0)))) (\lambda (t: T).(pr1_r (THead k u t))) (\lambda (t0: 
30249 T).(\lambda (t3: T).(\lambda (H0: (pr0 t3 t0)).(\lambda (t4: T).(\lambda (_: 
30250 (pr1 t0 t4)).(\lambda (H2: (pr1 (THead k u t0) (THead k u t4))).(pr1_u (THead 
30251 k u t0) (THead k u t3) (pr0_comp u u (pr0_refl u) t3 t0 H0 k) (THead k u t4) 
30252 H2))))))) t1 t2 H))))).
30253
30254 theorem pr1_strip:
30255  \forall (t0: T).(\forall (t1: T).((pr1 t0 t1) \to (\forall (t2: T).((pr0 t0 
30256 t2) \to (ex2 T (\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t2 t)))))))
30257 \def
30258  \lambda (t0: T).(\lambda (t1: T).(\lambda (H: (pr1 t0 t1)).(pr1_ind (\lambda 
30259 (t: T).(\lambda (t2: T).(\forall (t3: T).((pr0 t t3) \to (ex2 T (\lambda (t4: 
30260 T).(pr1 t2 t4)) (\lambda (t4: T).(pr1 t3 t4))))))) (\lambda (t: T).(\lambda 
30261 (t2: T).(\lambda (H0: (pr0 t t2)).(ex_intro2 T (\lambda (t3: T).(pr1 t t3)) 
30262 (\lambda (t3: T).(pr1 t2 t3)) t2 (pr1_pr0 t t2 H0) (pr1_r t2))))) (\lambda 
30263 (t2: T).(\lambda (t3: T).(\lambda (H0: (pr0 t3 t2)).(\lambda (t4: T).(\lambda 
30264 (_: (pr1 t2 t4)).(\lambda (H2: ((\forall (t3: T).((pr0 t2 t3) \to (ex2 T 
30265 (\lambda (t: T).(pr1 t4 t)) (\lambda (t: T).(pr1 t3 t))))))).(\lambda (t5: 
30266 T).(\lambda (H3: (pr0 t3 t5)).(ex2_ind T (\lambda (t: T).(pr0 t5 t)) (\lambda 
30267 (t: T).(pr0 t2 t)) (ex2 T (\lambda (t: T).(pr1 t4 t)) (\lambda (t: T).(pr1 t5 
30268 t))) (\lambda (x: T).(\lambda (H4: (pr0 t5 x)).(\lambda (H5: (pr0 t2 
30269 x)).(ex2_ind T (\lambda (t: T).(pr1 t4 t)) (\lambda (t: T).(pr1 x t)) (ex2 T 
30270 (\lambda (t: T).(pr1 t4 t)) (\lambda (t: T).(pr1 t5 t))) (\lambda (x0: 
30271 T).(\lambda (H6: (pr1 t4 x0)).(\lambda (H7: (pr1 x x0)).(ex_intro2 T (\lambda 
30272 (t: T).(pr1 t4 t)) (\lambda (t: T).(pr1 t5 t)) x0 H6 (pr1_u x t5 H4 x0 
30273 H7))))) (H2 x H5))))) (pr0_confluence t3 t5 H3 t2 H0)))))))))) t0 t1 H))).
30274
30275 theorem pr1_confluence:
30276  \forall (t0: T).(\forall (t1: T).((pr1 t0 t1) \to (\forall (t2: T).((pr1 t0 
30277 t2) \to (ex2 T (\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t2 t)))))))
30278 \def
30279  \lambda (t0: T).(\lambda (t1: T).(\lambda (H: (pr1 t0 t1)).(pr1_ind (\lambda 
30280 (t: T).(\lambda (t2: T).(\forall (t3: T).((pr1 t t3) \to (ex2 T (\lambda (t4: 
30281 T).(pr1 t2 t4)) (\lambda (t4: T).(pr1 t3 t4))))))) (\lambda (t: T).(\lambda 
30282 (t2: T).(\lambda (H0: (pr1 t t2)).(ex_intro2 T (\lambda (t3: T).(pr1 t t3)) 
30283 (\lambda (t3: T).(pr1 t2 t3)) t2 H0 (pr1_r t2))))) (\lambda (t2: T).(\lambda 
30284 (t3: T).(\lambda (H0: (pr0 t3 t2)).(\lambda (t4: T).(\lambda (_: (pr1 t2 
30285 t4)).(\lambda (H2: ((\forall (t3: T).((pr1 t2 t3) \to (ex2 T (\lambda (t: 
30286 T).(pr1 t4 t)) (\lambda (t: T).(pr1 t3 t))))))).(\lambda (t5: T).(\lambda 
30287 (H3: (pr1 t3 t5)).(ex2_ind T (\lambda (t: T).(pr1 t5 t)) (\lambda (t: T).(pr1 
30288 t2 t)) (ex2 T (\lambda (t: T).(pr1 t4 t)) (\lambda (t: T).(pr1 t5 t))) 
30289 (\lambda (x: T).(\lambda (H4: (pr1 t5 x)).(\lambda (H5: (pr1 t2 x)).(ex2_ind 
30290 T (\lambda (t: T).(pr1 t4 t)) (\lambda (t: T).(pr1 x t)) (ex2 T (\lambda (t: 
30291 T).(pr1 t4 t)) (\lambda (t: T).(pr1 t5 t))) (\lambda (x0: T).(\lambda (H6: 
30292 (pr1 t4 x0)).(\lambda (H7: (pr1 x x0)).(ex_intro2 T (\lambda (t: T).(pr1 t4 
30293 t)) (\lambda (t: T).(pr1 t5 t)) x0 H6 (pr1_t x t5 H4 x0 H7))))) (H2 x H5))))) 
30294 (pr1_strip t3 t5 H3 t2 H0)))))))))) t0 t1 H))).
30295
30296 inductive wcpr0: C \to (C \to Prop) \def
30297 | wcpr0_refl: \forall (c: C).(wcpr0 c c)
30298 | wcpr0_comp: \forall (c1: C).(\forall (c2: C).((wcpr0 c1 c2) \to (\forall 
30299 (u1: T).(\forall (u2: T).((pr0 u1 u2) \to (\forall (k: K).(wcpr0 (CHead c1 k 
30300 u1) (CHead c2 k u2)))))))).
30301
30302 theorem wcpr0_gen_sort:
30303  \forall (x: C).(\forall (n: nat).((wcpr0 (CSort n) x) \to (eq C x (CSort 
30304 n))))
30305 \def
30306  \lambda (x: C).(\lambda (n: nat).(\lambda (H: (wcpr0 (CSort n) x)).(let H0 
30307 \def (match H return (\lambda (c: C).(\lambda (c0: C).(\lambda (_: (wcpr0 c 
30308 c0)).((eq C c (CSort n)) \to ((eq C c0 x) \to (eq C x (CSort n))))))) with 
30309 [(wcpr0_refl c) \Rightarrow (\lambda (H0: (eq C c (CSort n))).(\lambda (H1: 
30310 (eq C c x)).(eq_ind C (CSort n) (\lambda (c0: C).((eq C c0 x) \to (eq C x 
30311 (CSort n)))) (\lambda (H2: (eq C (CSort n) x)).(eq_ind C (CSort n) (\lambda 
30312 (c0: C).(eq C c0 (CSort n))) (refl_equal C (CSort n)) x H2)) c (sym_eq C c 
30313 (CSort n) H0) H1))) | (wcpr0_comp c1 c2 H0 u1 u2 H1 k) \Rightarrow (\lambda 
30314 (H2: (eq C (CHead c1 k u1) (CSort n))).(\lambda (H3: (eq C (CHead c2 k u2) 
30315 x)).((let H4 \def (eq_ind C (CHead c1 k u1) (\lambda (e: C).(match e return 
30316 (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ _ _) 
30317 \Rightarrow True])) I (CSort n) H2) in (False_ind ((eq C (CHead c2 k u2) x) 
30318 \to ((wcpr0 c1 c2) \to ((pr0 u1 u2) \to (eq C x (CSort n))))) H4)) H3 H0 
30319 H1)))]) in (H0 (refl_equal C (CSort n)) (refl_equal C x))))).
30320
30321 theorem wcpr0_gen_head:
30322  \forall (k: K).(\forall (c1: C).(\forall (x: C).(\forall (u1: T).((wcpr0 
30323 (CHead c1 k u1) x) \to (or (eq C x (CHead c1 k u1)) (ex3_2 C T (\lambda (c2: 
30324 C).(\lambda (u2: T).(eq C x (CHead c2 k u2)))) (\lambda (c2: C).(\lambda (_: 
30325 T).(wcpr0 c1 c2))) (\lambda (_: C).(\lambda (u2: T).(pr0 u1 u2)))))))))
30326 \def
30327  \lambda (k: K).(\lambda (c1: C).(\lambda (x: C).(\lambda (u1: T).(\lambda 
30328 (H: (wcpr0 (CHead c1 k u1) x)).(let H0 \def (match H return (\lambda (c: 
30329 C).(\lambda (c0: C).(\lambda (_: (wcpr0 c c0)).((eq C c (CHead c1 k u1)) \to 
30330 ((eq C c0 x) \to (or (eq C x (CHead c1 k u1)) (ex3_2 C T (\lambda (c2: 
30331 C).(\lambda (u2: T).(eq C x (CHead c2 k u2)))) (\lambda (c2: C).(\lambda (_: 
30332 T).(wcpr0 c1 c2))) (\lambda (_: C).(\lambda (u2: T).(pr0 u1 u2)))))))))) with 
30333 [(wcpr0_refl c) \Rightarrow (\lambda (H0: (eq C c (CHead c1 k u1))).(\lambda 
30334 (H1: (eq C c x)).(eq_ind C (CHead c1 k u1) (\lambda (c0: C).((eq C c0 x) \to 
30335 (or (eq C x (CHead c1 k u1)) (ex3_2 C T (\lambda (c2: C).(\lambda (u2: T).(eq 
30336 C x (CHead c2 k u2)))) (\lambda (c2: C).(\lambda (_: T).(wcpr0 c1 c2))) 
30337 (\lambda (_: C).(\lambda (u2: T).(pr0 u1 u2))))))) (\lambda (H2: (eq C (CHead 
30338 c1 k u1) x)).(eq_ind C (CHead c1 k u1) (\lambda (c0: C).(or (eq C c0 (CHead 
30339 c1 k u1)) (ex3_2 C T (\lambda (c2: C).(\lambda (u2: T).(eq C c0 (CHead c2 k 
30340 u2)))) (\lambda (c2: C).(\lambda (_: T).(wcpr0 c1 c2))) (\lambda (_: 
30341 C).(\lambda (u2: T).(pr0 u1 u2)))))) (or_introl (eq C (CHead c1 k u1) (CHead 
30342 c1 k u1)) (ex3_2 C T (\lambda (c2: C).(\lambda (u2: T).(eq C (CHead c1 k u1) 
30343 (CHead c2 k u2)))) (\lambda (c2: C).(\lambda (_: T).(wcpr0 c1 c2))) (\lambda 
30344 (_: C).(\lambda (u2: T).(pr0 u1 u2)))) (refl_equal C (CHead c1 k u1))) x H2)) 
30345 c (sym_eq C c (CHead c1 k u1) H0) H1))) | (wcpr0_comp c0 c2 H0 u0 u2 H1 k0) 
30346 \Rightarrow (\lambda (H2: (eq C (CHead c0 k0 u0) (CHead c1 k u1))).(\lambda 
30347 (H3: (eq C (CHead c2 k0 u2) x)).((let H4 \def (f_equal C T (\lambda (e: 
30348 C).(match e return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead 
30349 _ _ t) \Rightarrow t])) (CHead c0 k0 u0) (CHead c1 k u1) H2) in ((let H5 \def 
30350 (f_equal C K (\lambda (e: C).(match e return (\lambda (_: C).K) with [(CSort 
30351 _) \Rightarrow k0 | (CHead _ k _) \Rightarrow k])) (CHead c0 k0 u0) (CHead c1 
30352 k u1) H2) in ((let H6 \def (f_equal C C (\lambda (e: C).(match e return 
30353 (\lambda (_: C).C) with [(CSort _) \Rightarrow c0 | (CHead c _ _) \Rightarrow 
30354 c])) (CHead c0 k0 u0) (CHead c1 k u1) H2) in (eq_ind C c1 (\lambda (c: 
30355 C).((eq K k0 k) \to ((eq T u0 u1) \to ((eq C (CHead c2 k0 u2) x) \to ((wcpr0 
30356 c c2) \to ((pr0 u0 u2) \to (or (eq C x (CHead c1 k u1)) (ex3_2 C T (\lambda 
30357 (c3: C).(\lambda (u3: T).(eq C x (CHead c3 k u3)))) (\lambda (c3: C).(\lambda 
30358 (_: T).(wcpr0 c1 c3))) (\lambda (_: C).(\lambda (u3: T).(pr0 u1 u3))))))))))) 
30359 (\lambda (H7: (eq K k0 k)).(eq_ind K k (\lambda (k1: K).((eq T u0 u1) \to 
30360 ((eq C (CHead c2 k1 u2) x) \to ((wcpr0 c1 c2) \to ((pr0 u0 u2) \to (or (eq C 
30361 x (CHead c1 k u1)) (ex3_2 C T (\lambda (c3: C).(\lambda (u3: T).(eq C x 
30362 (CHead c3 k u3)))) (\lambda (c3: C).(\lambda (_: T).(wcpr0 c1 c3))) (\lambda 
30363 (_: C).(\lambda (u3: T).(pr0 u1 u3)))))))))) (\lambda (H8: (eq T u0 
30364 u1)).(eq_ind T u1 (\lambda (t: T).((eq C (CHead c2 k u2) x) \to ((wcpr0 c1 
30365 c2) \to ((pr0 t u2) \to (or (eq C x (CHead c1 k u1)) (ex3_2 C T (\lambda (c3: 
30366 C).(\lambda (u3: T).(eq C x (CHead c3 k u3)))) (\lambda (c3: C).(\lambda (_: 
30367 T).(wcpr0 c1 c3))) (\lambda (_: C).(\lambda (u3: T).(pr0 u1 u3))))))))) 
30368 (\lambda (H9: (eq C (CHead c2 k u2) x)).(eq_ind C (CHead c2 k u2) (\lambda 
30369 (c: C).((wcpr0 c1 c2) \to ((pr0 u1 u2) \to (or (eq C c (CHead c1 k u1)) 
30370 (ex3_2 C T (\lambda (c3: C).(\lambda (u3: T).(eq C c (CHead c3 k u3)))) 
30371 (\lambda (c3: C).(\lambda (_: T).(wcpr0 c1 c3))) (\lambda (_: C).(\lambda 
30372 (u3: T).(pr0 u1 u3)))))))) (\lambda (H10: (wcpr0 c1 c2)).(\lambda (H11: (pr0 
30373 u1 u2)).(or_intror (eq C (CHead c2 k u2) (CHead c1 k u1)) (ex3_2 C T (\lambda 
30374 (c3: C).(\lambda (u3: T).(eq C (CHead c2 k u2) (CHead c3 k u3)))) (\lambda 
30375 (c3: C).(\lambda (_: T).(wcpr0 c1 c3))) (\lambda (_: C).(\lambda (u3: T).(pr0 
30376 u1 u3)))) (ex3_2_intro C T (\lambda (c3: C).(\lambda (u3: T).(eq C (CHead c2 
30377 k u2) (CHead c3 k u3)))) (\lambda (c3: C).(\lambda (_: T).(wcpr0 c1 c3))) 
30378 (\lambda (_: C).(\lambda (u3: T).(pr0 u1 u3))) c2 u2 (refl_equal C (CHead c2 
30379 k u2)) H10 H11)))) x H9)) u0 (sym_eq T u0 u1 H8))) k0 (sym_eq K k0 k H7))) c0 
30380 (sym_eq C c0 c1 H6))) H5)) H4)) H3 H0 H1)))]) in (H0 (refl_equal C (CHead c1 
30381 k u1)) (refl_equal C x))))))).
30382
30383 theorem wcpr0_drop:
30384  \forall (c1: C).(\forall (c2: C).((wcpr0 c1 c2) \to (\forall (h: 
30385 nat).(\forall (e1: C).(\forall (u1: T).(\forall (k: K).((drop h O c1 (CHead 
30386 e1 k u1)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u2: T).(drop h O c2 
30387 (CHead e2 k u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda 
30388 (_: C).(\lambda (u2: T).(pr0 u1 u2)))))))))))
30389 \def
30390  \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c1 c2)).(wcpr0_ind 
30391 (\lambda (c: C).(\lambda (c0: C).(\forall (h: nat).(\forall (e1: C).(\forall 
30392 (u1: T).(\forall (k: K).((drop h O c (CHead e1 k u1)) \to (ex3_2 C T (\lambda 
30393 (e2: C).(\lambda (u2: T).(drop h O c0 (CHead e2 k u2)))) (\lambda (e2: 
30394 C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda (u2: T).(pr0 u1 
30395 u2))))))))))) (\lambda (c: C).(\lambda (h: nat).(\lambda (e1: C).(\lambda 
30396 (u1: T).(\lambda (k: K).(\lambda (H0: (drop h O c (CHead e1 k 
30397 u1))).(ex3_2_intro C T (\lambda (e2: C).(\lambda (u2: T).(drop h O c (CHead 
30398 e2 k u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30399 C).(\lambda (u2: T).(pr0 u1 u2))) e1 u1 H0 (wcpr0_refl e1) (pr0_refl 
30400 u1)))))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda (H0: (wcpr0 c0 
30401 c3)).(\lambda (H1: ((\forall (h: nat).(\forall (e1: C).(\forall (u1: 
30402 T).(\forall (k: K).((drop h O c0 (CHead e1 k u1)) \to (ex3_2 C T (\lambda 
30403 (e2: C).(\lambda (u2: T).(drop h O c3 (CHead e2 k u2)))) (\lambda (e2: 
30404 C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda (u2: T).(pr0 u1 
30405 u2))))))))))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H2: (pr0 u1 
30406 u2)).(\lambda (k: K).(\lambda (h: nat).(nat_ind (\lambda (n: nat).(\forall 
30407 (e1: C).(\forall (u3: T).(\forall (k0: K).((drop n O (CHead c0 k u1) (CHead 
30408 e1 k0 u3)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u4: T).(drop n O (CHead 
30409 c3 k u2) (CHead e2 k0 u4)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) 
30410 (\lambda (_: C).(\lambda (u4: T).(pr0 u3 u4))))))))) (\lambda (e1: 
30411 C).(\lambda (u0: T).(\lambda (k0: K).(\lambda (H3: (drop O O (CHead c0 k u1) 
30412 (CHead e1 k0 u0))).(let H4 \def (match (drop_gen_refl (CHead c0 k u1) (CHead 
30413 e1 k0 u0) H3) return (\lambda (c: C).(\lambda (_: (eq ? ? c)).((eq C c (CHead 
30414 e1 k0 u0)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u3: T).(drop O O (CHead 
30415 c3 k u2) (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) 
30416 (\lambda (_: C).(\lambda (u2: T).(pr0 u0 u2))))))) with [refl_equal 
30417 \Rightarrow (\lambda (H3: (eq C (CHead c0 k u1) (CHead e1 k0 u0))).(let H4 
30418 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
30419 [(CSort _) \Rightarrow u1 | (CHead _ _ t) \Rightarrow t])) (CHead c0 k u1) 
30420 (CHead e1 k0 u0) H3) in ((let H5 \def (f_equal C K (\lambda (e: C).(match e 
30421 return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | (CHead _ k _) 
30422 \Rightarrow k])) (CHead c0 k u1) (CHead e1 k0 u0) H3) in ((let H6 \def 
30423 (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort 
30424 _) \Rightarrow c0 | (CHead c _ _) \Rightarrow c])) (CHead c0 k u1) (CHead e1 
30425 k0 u0) H3) in (eq_ind C e1 (\lambda (_: C).((eq K k k0) \to ((eq T u1 u0) \to 
30426 (ex3_2 C T (\lambda (e2: C).(\lambda (u3: T).(drop O O (CHead c3 k u2) (CHead 
30427 e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30428 C).(\lambda (u2: T).(pr0 u0 u2))))))) (\lambda (H7: (eq K k k0)).(eq_ind K k0 
30429 (\lambda (k: K).((eq T u1 u0) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u3: 
30430 T).(drop O O (CHead c3 k u2) (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda 
30431 (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda (u2: T).(pr0 u0 u2)))))) 
30432 (\lambda (H8: (eq T u1 u0)).(eq_ind T u0 (\lambda (_: T).(ex3_2 C T (\lambda 
30433 (e2: C).(\lambda (u3: T).(drop O O (CHead c3 k0 u2) (CHead e2 k0 u3)))) 
30434 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda 
30435 (u2: T).(pr0 u0 u2))))) (let H9 \def (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) 
30436 H2 u0 H8) in (let H10 \def (eq_ind C c0 (\lambda (c: C).(wcpr0 c c3)) H0 e1 
30437 H6) in (ex3_2_intro C T (\lambda (e2: C).(\lambda (u3: T).(drop O O (CHead c3 
30438 k0 u2) (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) 
30439 (\lambda (_: C).(\lambda (u2: T).(pr0 u0 u2))) c3 u2 (drop_refl (CHead c3 k0 
30440 u2)) H10 H9))) u1 (sym_eq T u1 u0 H8))) k (sym_eq K k k0 H7))) c0 (sym_eq C 
30441 c0 e1 H6))) H5)) H4)))]) in (H4 (refl_equal C (CHead e1 k0 u0)))))))) (K_ind 
30442 (\lambda (k0: K).(\forall (n: nat).(((\forall (e1: C).(\forall (u3: 
30443 T).(\forall (k: K).((drop n O (CHead c0 k0 u1) (CHead e1 k u3)) \to (ex3_2 C 
30444 T (\lambda (e2: C).(\lambda (u4: T).(drop n O (CHead c3 k0 u2) (CHead e2 k 
30445 u4)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30446 C).(\lambda (u2: T).(pr0 u3 u2))))))))) \to (\forall (e1: C).(\forall (u3: 
30447 T).(\forall (k1: K).((drop (S n) O (CHead c0 k0 u1) (CHead e1 k1 u3)) \to 
30448 (ex3_2 C T (\lambda (e2: C).(\lambda (u4: T).(drop (S n) O (CHead c3 k0 u2) 
30449 (CHead e2 k1 u4)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda 
30450 (_: C).(\lambda (u4: T).(pr0 u3 u4))))))))))) (\lambda (b: B).(\lambda (n: 
30451 nat).(\lambda (_: ((\forall (e1: C).(\forall (u3: T).(\forall (k: K).((drop n 
30452 O (CHead c0 (Bind b) u1) (CHead e1 k u3)) \to (ex3_2 C T (\lambda (e2: 
30453 C).(\lambda (u4: T).(drop n O (CHead c3 (Bind b) u2) (CHead e2 k u4)))) 
30454 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda 
30455 (u2: T).(pr0 u3 u2)))))))))).(\lambda (e1: C).(\lambda (u0: T).(\lambda (k0: 
30456 K).(\lambda (H4: (drop (S n) O (CHead c0 (Bind b) u1) (CHead e1 k0 
30457 u0))).(ex3_2_ind C T (\lambda (e2: C).(\lambda (u3: T).(drop n O c3 (CHead e2 
30458 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30459 C).(\lambda (u3: T).(pr0 u0 u3))) (ex3_2 C T (\lambda (e2: C).(\lambda (u3: 
30460 T).(drop (S n) O (CHead c3 (Bind b) u2) (CHead e2 k0 u3)))) (\lambda (e2: 
30461 C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda (u3: T).(pr0 u0 
30462 u3)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H5: (drop n O c3 (CHead x0 
30463 k0 x1))).(\lambda (H6: (wcpr0 e1 x0)).(\lambda (H7: (pr0 u0 x1)).(ex3_2_intro 
30464 C T (\lambda (e2: C).(\lambda (u3: T).(drop (S n) O (CHead c3 (Bind b) u2) 
30465 (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda 
30466 (_: C).(\lambda (u3: T).(pr0 u0 u3))) x0 x1 (drop_drop (Bind b) n c3 (CHead 
30467 x0 k0 x1) H5 u2) H6 H7)))))) (H1 n e1 u0 k0 (drop_gen_drop (Bind b) c0 (CHead 
30468 e1 k0 u0) u1 n H4)))))))))) (\lambda (f: F).(\lambda (n: nat).(\lambda (_: 
30469 ((\forall (e1: C).(\forall (u3: T).(\forall (k: K).((drop n O (CHead c0 (Flat 
30470 f) u1) (CHead e1 k u3)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u4: 
30471 T).(drop n O (CHead c3 (Flat f) u2) (CHead e2 k u4)))) (\lambda (e2: 
30472 C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda (u2: T).(pr0 u3 
30473 u2)))))))))).(\lambda (e1: C).(\lambda (u0: T).(\lambda (k0: K).(\lambda (H4: 
30474 (drop (S n) O (CHead c0 (Flat f) u1) (CHead e1 k0 u0))).(ex3_2_ind C T 
30475 (\lambda (e2: C).(\lambda (u3: T).(drop (S n) O c3 (CHead e2 k0 u3)))) 
30476 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda 
30477 (u3: T).(pr0 u0 u3))) (ex3_2 C T (\lambda (e2: C).(\lambda (u3: T).(drop (S 
30478 n) O (CHead c3 (Flat f) u2) (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: 
30479 T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda (u3: T).(pr0 u0 u3)))) (\lambda 
30480 (x0: C).(\lambda (x1: T).(\lambda (H5: (drop (S n) O c3 (CHead x0 k0 
30481 x1))).(\lambda (H6: (wcpr0 e1 x0)).(\lambda (H7: (pr0 u0 x1)).(ex3_2_intro C 
30482 T (\lambda (e2: C).(\lambda (u3: T).(drop (S n) O (CHead c3 (Flat f) u2) 
30483 (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda 
30484 (_: C).(\lambda (u3: T).(pr0 u0 u3))) x0 x1 (drop_drop (Flat f) n c3 (CHead 
30485 x0 k0 x1) H5 u2) H6 H7)))))) (H1 (S n) e1 u0 k0 (drop_gen_drop (Flat f) c0 
30486 (CHead e1 k0 u0) u1 n H4)))))))))) k) h)))))))))) c1 c2 H))).
30487
30488 theorem wcpr0_drop_back:
30489  \forall (c1: C).(\forall (c2: C).((wcpr0 c2 c1) \to (\forall (h: 
30490 nat).(\forall (e1: C).(\forall (u1: T).(\forall (k: K).((drop h O c1 (CHead 
30491 e1 k u1)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u2: T).(drop h O c2 
30492 (CHead e2 k u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda 
30493 (_: C).(\lambda (u2: T).(pr0 u2 u1)))))))))))
30494 \def
30495  \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c2 c1)).(wcpr0_ind 
30496 (\lambda (c: C).(\lambda (c0: C).(\forall (h: nat).(\forall (e1: C).(\forall 
30497 (u1: T).(\forall (k: K).((drop h O c0 (CHead e1 k u1)) \to (ex3_2 C T 
30498 (\lambda (e2: C).(\lambda (u2: T).(drop h O c (CHead e2 k u2)))) (\lambda 
30499 (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda (u2: T).(pr0 
30500 u2 u1))))))))))) (\lambda (c: C).(\lambda (h: nat).(\lambda (e1: C).(\lambda 
30501 (u1: T).(\lambda (k: K).(\lambda (H0: (drop h O c (CHead e1 k 
30502 u1))).(ex3_2_intro C T (\lambda (e2: C).(\lambda (u2: T).(drop h O c (CHead 
30503 e2 k u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30504 C).(\lambda (u2: T).(pr0 u2 u1))) e1 u1 H0 (wcpr0_refl e1) (pr0_refl 
30505 u1)))))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda (H0: (wcpr0 c0 
30506 c3)).(\lambda (H1: ((\forall (h: nat).(\forall (e1: C).(\forall (u1: 
30507 T).(\forall (k: K).((drop h O c3 (CHead e1 k u1)) \to (ex3_2 C T (\lambda 
30508 (e2: C).(\lambda (u2: T).(drop h O c0 (CHead e2 k u2)))) (\lambda (e2: 
30509 C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda (u2: T).(pr0 u2 
30510 u1))))))))))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H2: (pr0 u1 
30511 u2)).(\lambda (k: K).(\lambda (h: nat).(nat_ind (\lambda (n: nat).(\forall 
30512 (e1: C).(\forall (u3: T).(\forall (k0: K).((drop n O (CHead c3 k u2) (CHead 
30513 e1 k0 u3)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u4: T).(drop n O (CHead 
30514 c0 k u1) (CHead e2 k0 u4)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) 
30515 (\lambda (_: C).(\lambda (u4: T).(pr0 u4 u3))))))))) (\lambda (e1: 
30516 C).(\lambda (u0: T).(\lambda (k0: K).(\lambda (H3: (drop O O (CHead c3 k u2) 
30517 (CHead e1 k0 u0))).(let H4 \def (match (drop_gen_refl (CHead c3 k u2) (CHead 
30518 e1 k0 u0) H3) return (\lambda (c: C).(\lambda (_: (eq ? ? c)).((eq C c (CHead 
30519 e1 k0 u0)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u2: T).(drop O O (CHead 
30520 c0 k u1) (CHead e2 k0 u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) 
30521 (\lambda (_: C).(\lambda (u2: T).(pr0 u2 u0))))))) with [refl_equal 
30522 \Rightarrow (\lambda (H3: (eq C (CHead c3 k u2) (CHead e1 k0 u0))).(let H4 
30523 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
30524 [(CSort _) \Rightarrow u2 | (CHead _ _ t) \Rightarrow t])) (CHead c3 k u2) 
30525 (CHead e1 k0 u0) H3) in ((let H5 \def (f_equal C K (\lambda (e: C).(match e 
30526 return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | (CHead _ k _) 
30527 \Rightarrow k])) (CHead c3 k u2) (CHead e1 k0 u0) H3) in ((let H6 \def 
30528 (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort 
30529 _) \Rightarrow c3 | (CHead c _ _) \Rightarrow c])) (CHead c3 k u2) (CHead e1 
30530 k0 u0) H3) in (eq_ind C e1 (\lambda (_: C).((eq K k k0) \to ((eq T u2 u0) \to 
30531 (ex3_2 C T (\lambda (e2: C).(\lambda (u2: T).(drop O O (CHead c0 k u1) (CHead 
30532 e2 k0 u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30533 C).(\lambda (u2: T).(pr0 u2 u0))))))) (\lambda (H7: (eq K k k0)).(eq_ind K k0 
30534 (\lambda (k: K).((eq T u2 u0) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u2: 
30535 T).(drop O O (CHead c0 k u1) (CHead e2 k0 u2)))) (\lambda (e2: C).(\lambda 
30536 (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda (u2: T).(pr0 u2 u0)))))) 
30537 (\lambda (H8: (eq T u2 u0)).(eq_ind T u0 (\lambda (_: T).(ex3_2 C T (\lambda 
30538 (e2: C).(\lambda (u2: T).(drop O O (CHead c0 k0 u1) (CHead e2 k0 u2)))) 
30539 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda 
30540 (u2: T).(pr0 u2 u0))))) (let H9 \def (eq_ind T u2 (\lambda (t: T).(pr0 u1 t)) 
30541 H2 u0 H8) in (let H10 \def (eq_ind C c3 (\lambda (c: C).(wcpr0 c0 c)) H0 e1 
30542 H6) in (ex3_2_intro C T (\lambda (e2: C).(\lambda (u2: T).(drop O O (CHead c0 
30543 k0 u1) (CHead e2 k0 u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) 
30544 (\lambda (_: C).(\lambda (u2: T).(pr0 u2 u0))) c0 u1 (drop_refl (CHead c0 k0 
30545 u1)) H10 H9))) u2 (sym_eq T u2 u0 H8))) k (sym_eq K k k0 H7))) c3 (sym_eq C 
30546 c3 e1 H6))) H5)) H4)))]) in (H4 (refl_equal C (CHead e1 k0 u0)))))))) (K_ind 
30547 (\lambda (k0: K).(\forall (n: nat).(((\forall (e1: C).(\forall (u3: 
30548 T).(\forall (k: K).((drop n O (CHead c3 k0 u2) (CHead e1 k u3)) \to (ex3_2 C 
30549 T (\lambda (e2: C).(\lambda (u2: T).(drop n O (CHead c0 k0 u1) (CHead e2 k 
30550 u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30551 C).(\lambda (u2: T).(pr0 u2 u3))))))))) \to (\forall (e1: C).(\forall (u3: 
30552 T).(\forall (k1: K).((drop (S n) O (CHead c3 k0 u2) (CHead e1 k1 u3)) \to 
30553 (ex3_2 C T (\lambda (e2: C).(\lambda (u4: T).(drop (S n) O (CHead c0 k0 u1) 
30554 (CHead e2 k1 u4)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda 
30555 (_: C).(\lambda (u4: T).(pr0 u4 u3))))))))))) (\lambda (b: B).(\lambda (n: 
30556 nat).(\lambda (_: ((\forall (e1: C).(\forall (u3: T).(\forall (k: K).((drop n 
30557 O (CHead c3 (Bind b) u2) (CHead e1 k u3)) \to (ex3_2 C T (\lambda (e2: 
30558 C).(\lambda (u2: T).(drop n O (CHead c0 (Bind b) u1) (CHead e2 k u2)))) 
30559 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda 
30560 (u2: T).(pr0 u2 u3)))))))))).(\lambda (e1: C).(\lambda (u0: T).(\lambda (k0: 
30561 K).(\lambda (H4: (drop (S n) O (CHead c3 (Bind b) u2) (CHead e1 k0 
30562 u0))).(ex3_2_ind C T (\lambda (e2: C).(\lambda (u3: T).(drop n O c0 (CHead e2 
30563 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30564 C).(\lambda (u3: T).(pr0 u3 u0))) (ex3_2 C T (\lambda (e2: C).(\lambda (u3: 
30565 T).(drop (S n) O (CHead c0 (Bind b) u1) (CHead e2 k0 u3)))) (\lambda (e2: 
30566 C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda (u3: T).(pr0 u3 
30567 u0)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H5: (drop n O c0 (CHead x0 
30568 k0 x1))).(\lambda (H6: (wcpr0 x0 e1)).(\lambda (H7: (pr0 x1 u0)).(ex3_2_intro 
30569 C T (\lambda (e2: C).(\lambda (u3: T).(drop (S n) O (CHead c0 (Bind b) u1) 
30570 (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda 
30571 (_: C).(\lambda (u3: T).(pr0 u3 u0))) x0 x1 (drop_drop (Bind b) n c0 (CHead 
30572 x0 k0 x1) H5 u1) H6 H7)))))) (H1 n e1 u0 k0 (drop_gen_drop (Bind b) c3 (CHead 
30573 e1 k0 u0) u2 n H4)))))))))) (\lambda (f: F).(\lambda (n: nat).(\lambda (_: 
30574 ((\forall (e1: C).(\forall (u3: T).(\forall (k: K).((drop n O (CHead c3 (Flat 
30575 f) u2) (CHead e1 k u3)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u2: 
30576 T).(drop n O (CHead c0 (Flat f) u1) (CHead e2 k u2)))) (\lambda (e2: 
30577 C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda (u2: T).(pr0 u2 
30578 u3)))))))))).(\lambda (e1: C).(\lambda (u0: T).(\lambda (k0: K).(\lambda (H4: 
30579 (drop (S n) O (CHead c3 (Flat f) u2) (CHead e1 k0 u0))).(ex3_2_ind C T 
30580 (\lambda (e2: C).(\lambda (u3: T).(drop (S n) O c0 (CHead e2 k0 u3)))) 
30581 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda 
30582 (u3: T).(pr0 u3 u0))) (ex3_2 C T (\lambda (e2: C).(\lambda (u3: T).(drop (S 
30583 n) O (CHead c0 (Flat f) u1) (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: 
30584 T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda (u3: T).(pr0 u3 u0)))) (\lambda 
30585 (x0: C).(\lambda (x1: T).(\lambda (H5: (drop (S n) O c0 (CHead x0 k0 
30586 x1))).(\lambda (H6: (wcpr0 x0 e1)).(\lambda (H7: (pr0 x1 u0)).(ex3_2_intro C 
30587 T (\lambda (e2: C).(\lambda (u3: T).(drop (S n) O (CHead c0 (Flat f) u1) 
30588 (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda 
30589 (_: C).(\lambda (u3: T).(pr0 u3 u0))) x0 x1 (drop_drop (Flat f) n c0 (CHead 
30590 x0 k0 x1) H5 u1) H6 H7)))))) (H1 (S n) e1 u0 k0 (drop_gen_drop (Flat f) c3 
30591 (CHead e1 k0 u0) u2 n H4)))))))))) k) h)))))))))) c2 c1 H))).
30592
30593 theorem wcpr0_getl:
30594  \forall (c1: C).(\forall (c2: C).((wcpr0 c1 c2) \to (\forall (h: 
30595 nat).(\forall (e1: C).(\forall (u1: T).(\forall (k: K).((getl h c1 (CHead e1 
30596 k u1)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u2: T).(getl h c2 (CHead e2 
30597 k u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30598 C).(\lambda (u2: T).(pr0 u1 u2)))))))))))
30599 \def
30600  \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c1 c2)).(wcpr0_ind 
30601 (\lambda (c: C).(\lambda (c0: C).(\forall (h: nat).(\forall (e1: C).(\forall 
30602 (u1: T).(\forall (k: K).((getl h c (CHead e1 k u1)) \to (ex3_2 C T (\lambda 
30603 (e2: C).(\lambda (u2: T).(getl h c0 (CHead e2 k u2)))) (\lambda (e2: 
30604 C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda (u2: T).(pr0 u1 
30605 u2))))))))))) (\lambda (c: C).(\lambda (h: nat).(\lambda (e1: C).(\lambda 
30606 (u1: T).(\lambda (k: K).(\lambda (H0: (getl h c (CHead e1 k 
30607 u1))).(ex3_2_intro C T (\lambda (e2: C).(\lambda (u2: T).(getl h c (CHead e2 
30608 k u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30609 C).(\lambda (u2: T).(pr0 u1 u2))) e1 u1 H0 (wcpr0_refl e1) (pr0_refl 
30610 u1)))))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda (H0: (wcpr0 c0 
30611 c3)).(\lambda (H1: ((\forall (h: nat).(\forall (e1: C).(\forall (u1: 
30612 T).(\forall (k: K).((getl h c0 (CHead e1 k u1)) \to (ex3_2 C T (\lambda (e2: 
30613 C).(\lambda (u2: T).(getl h c3 (CHead e2 k u2)))) (\lambda (e2: C).(\lambda 
30614 (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda (u2: T).(pr0 u1 
30615 u2))))))))))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H2: (pr0 u1 
30616 u2)).(\lambda (k: K).(\lambda (h: nat).(nat_ind (\lambda (n: nat).(\forall 
30617 (e1: C).(\forall (u3: T).(\forall (k0: K).((getl n (CHead c0 k u1) (CHead e1 
30618 k0 u3)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u4: T).(getl n (CHead c3 k 
30619 u2) (CHead e2 k0 u4)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) 
30620 (\lambda (_: C).(\lambda (u4: T).(pr0 u3 u4))))))))) (\lambda (e1: 
30621 C).(\lambda (u0: T).(\lambda (k0: K).(\lambda (H3: (getl O (CHead c0 k u1) 
30622 (CHead e1 k0 u0))).((match k return (\lambda (k1: K).((clear (CHead c0 k1 u1) 
30623 (CHead e1 k0 u0)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u3: T).(getl O 
30624 (CHead c3 k1 u2) (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 
30625 e1 e2))) (\lambda (_: C).(\lambda (u3: T).(pr0 u0 u3)))))) with [(Bind b) 
30626 \Rightarrow (\lambda (H4: (clear (CHead c0 (Bind b) u1) (CHead e1 k0 
30627 u0))).(let H5 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: 
30628 C).C) with [(CSort _) \Rightarrow e1 | (CHead c _ _) \Rightarrow c])) (CHead 
30629 e1 k0 u0) (CHead c0 (Bind b) u1) (clear_gen_bind b c0 (CHead e1 k0 u0) u1 
30630 H4)) in ((let H6 \def (f_equal C K (\lambda (e: C).(match e return (\lambda 
30631 (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) \Rightarrow k])) 
30632 (CHead e1 k0 u0) (CHead c0 (Bind b) u1) (clear_gen_bind b c0 (CHead e1 k0 u0) 
30633 u1 H4)) in ((let H7 \def (f_equal C T (\lambda (e: C).(match e return 
30634 (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) \Rightarrow 
30635 t])) (CHead e1 k0 u0) (CHead c0 (Bind b) u1) (clear_gen_bind b c0 (CHead e1 
30636 k0 u0) u1 H4)) in (\lambda (H8: (eq K k0 (Bind b))).(\lambda (H9: (eq C e1 
30637 c0)).(eq_ind_r K (Bind b) (\lambda (k1: K).(ex3_2 C T (\lambda (e2: 
30638 C).(\lambda (u3: T).(getl O (CHead c3 (Bind b) u2) (CHead e2 k1 u3)))) 
30639 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda 
30640 (u3: T).(pr0 u0 u3))))) (eq_ind_r T u1 (\lambda (t: T).(ex3_2 C T (\lambda 
30641 (e2: C).(\lambda (u3: T).(getl O (CHead c3 (Bind b) u2) (CHead e2 (Bind b) 
30642 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30643 C).(\lambda (u3: T).(pr0 t u3))))) (eq_ind_r C c0 (\lambda (c: C).(ex3_2 C T 
30644 (\lambda (e2: C).(\lambda (u3: T).(getl O (CHead c3 (Bind b) u2) (CHead e2 
30645 (Bind b) u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 c e2))) (\lambda (_: 
30646 C).(\lambda (u3: T).(pr0 u1 u3))))) (ex3_2_intro C T (\lambda (e2: 
30647 C).(\lambda (u3: T).(getl O (CHead c3 (Bind b) u2) (CHead e2 (Bind b) u3)))) 
30648 (\lambda (e2: C).(\lambda (_: T).(wcpr0 c0 e2))) (\lambda (_: C).(\lambda 
30649 (u3: T).(pr0 u1 u3))) c3 u2 (getl_refl b c3 u2) H0 H2) e1 H9) u0 H7) k0 
30650 H8)))) H6)) H5))) | (Flat f) \Rightarrow (\lambda (H4: (clear (CHead c0 (Flat 
30651 f) u1) (CHead e1 k0 u0))).(let H5 \def (H1 O e1 u0 k0 (getl_intro O c0 (CHead 
30652 e1 k0 u0) c0 (drop_refl c0) (clear_gen_flat f c0 (CHead e1 k0 u0) u1 H4))) in 
30653 (ex3_2_ind C T (\lambda (e2: C).(\lambda (u3: T).(getl O c3 (CHead e2 k0 
30654 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30655 C).(\lambda (u3: T).(pr0 u0 u3))) (ex3_2 C T (\lambda (e2: C).(\lambda (u3: 
30656 T).(getl O (CHead c3 (Flat f) u2) (CHead e2 k0 u3)))) (\lambda (e2: 
30657 C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda (u3: T).(pr0 u0 
30658 u3)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (getl O c3 (CHead x0 
30659 k0 x1))).(\lambda (H7: (wcpr0 e1 x0)).(\lambda (H8: (pr0 u0 x1)).(ex3_2_intro 
30660 C T (\lambda (e2: C).(\lambda (u3: T).(getl O (CHead c3 (Flat f) u2) (CHead 
30661 e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30662 C).(\lambda (u3: T).(pr0 u0 u3))) x0 x1 (getl_flat c3 (CHead x0 k0 x1) O H6 f 
30663 u2) H7 H8)))))) H5)))]) (getl_gen_O (CHead c0 k u1) (CHead e1 k0 u0) H3)))))) 
30664 (K_ind (\lambda (k0: K).(\forall (n: nat).(((\forall (e1: C).(\forall (u3: 
30665 T).(\forall (k: K).((getl n (CHead c0 k0 u1) (CHead e1 k u3)) \to (ex3_2 C T 
30666 (\lambda (e2: C).(\lambda (u4: T).(getl n (CHead c3 k0 u2) (CHead e2 k u4)))) 
30667 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda 
30668 (u2: T).(pr0 u3 u2))))))))) \to (\forall (e1: C).(\forall (u3: T).(\forall 
30669 (k1: K).((getl (S n) (CHead c0 k0 u1) (CHead e1 k1 u3)) \to (ex3_2 C T 
30670 (\lambda (e2: C).(\lambda (u4: T).(getl (S n) (CHead c3 k0 u2) (CHead e2 k1 
30671 u4)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30672 C).(\lambda (u4: T).(pr0 u3 u4))))))))))) (\lambda (b: B).(\lambda (n: 
30673 nat).(\lambda (_: ((\forall (e1: C).(\forall (u3: T).(\forall (k: K).((getl n 
30674 (CHead c0 (Bind b) u1) (CHead e1 k u3)) \to (ex3_2 C T (\lambda (e2: 
30675 C).(\lambda (u4: T).(getl n (CHead c3 (Bind b) u2) (CHead e2 k u4)))) 
30676 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda 
30677 (u2: T).(pr0 u3 u2)))))))))).(\lambda (e1: C).(\lambda (u0: T).(\lambda (k0: 
30678 K).(\lambda (H4: (getl (S n) (CHead c0 (Bind b) u1) (CHead e1 k0 u0))).(let 
30679 H5 \def (H1 n e1 u0 k0 (getl_gen_S (Bind b) c0 (CHead e1 k0 u0) u1 n H4)) in 
30680 (ex3_2_ind C T (\lambda (e2: C).(\lambda (u3: T).(getl n c3 (CHead e2 k0 
30681 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30682 C).(\lambda (u3: T).(pr0 u0 u3))) (ex3_2 C T (\lambda (e2: C).(\lambda (u3: 
30683 T).(getl (S n) (CHead c3 (Bind b) u2) (CHead e2 k0 u3)))) (\lambda (e2: 
30684 C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda (u3: T).(pr0 u0 
30685 u3)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (getl n c3 (CHead x0 
30686 k0 x1))).(\lambda (H7: (wcpr0 e1 x0)).(\lambda (H8: (pr0 u0 x1)).(ex3_2_intro 
30687 C T (\lambda (e2: C).(\lambda (u3: T).(getl (S n) (CHead c3 (Bind b) u2) 
30688 (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda 
30689 (_: C).(\lambda (u3: T).(pr0 u0 u3))) x0 x1 (getl_head (Bind b) n c3 (CHead 
30690 x0 k0 x1) H6 u2) H7 H8)))))) H5))))))))) (\lambda (f: F).(\lambda (n: 
30691 nat).(\lambda (_: ((\forall (e1: C).(\forall (u3: T).(\forall (k: K).((getl n 
30692 (CHead c0 (Flat f) u1) (CHead e1 k u3)) \to (ex3_2 C T (\lambda (e2: 
30693 C).(\lambda (u4: T).(getl n (CHead c3 (Flat f) u2) (CHead e2 k u4)))) 
30694 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda 
30695 (u2: T).(pr0 u3 u2)))))))))).(\lambda (e1: C).(\lambda (u0: T).(\lambda (k0: 
30696 K).(\lambda (H4: (getl (S n) (CHead c0 (Flat f) u1) (CHead e1 k0 u0))).(let 
30697 H5 \def (H1 (S n) e1 u0 k0 (getl_gen_S (Flat f) c0 (CHead e1 k0 u0) u1 n H4)) 
30698 in (ex3_2_ind C T (\lambda (e2: C).(\lambda (u3: T).(getl (S n) c3 (CHead e2 
30699 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: 
30700 C).(\lambda (u3: T).(pr0 u0 u3))) (ex3_2 C T (\lambda (e2: C).(\lambda (u3: 
30701 T).(getl (S n) (CHead c3 (Flat f) u2) (CHead e2 k0 u3)))) (\lambda (e2: 
30702 C).(\lambda (_: T).(wcpr0 e1 e2))) (\lambda (_: C).(\lambda (u3: T).(pr0 u0 
30703 u3)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (getl (S n) c3 (CHead 
30704 x0 k0 x1))).(\lambda (H7: (wcpr0 e1 x0)).(\lambda (H8: (pr0 u0 
30705 x1)).(ex3_2_intro C T (\lambda (e2: C).(\lambda (u3: T).(getl (S n) (CHead c3 
30706 (Flat f) u2) (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e1 
30707 e2))) (\lambda (_: C).(\lambda (u3: T).(pr0 u0 u3))) x0 x1 (getl_head (Flat 
30708 f) n c3 (CHead x0 k0 x1) H6 u2) H7 H8)))))) H5))))))))) k) h)))))))))) c1 c2 
30709 H))).
30710
30711 theorem wcpr0_getl_back:
30712  \forall (c1: C).(\forall (c2: C).((wcpr0 c2 c1) \to (\forall (h: 
30713 nat).(\forall (e1: C).(\forall (u1: T).(\forall (k: K).((getl h c1 (CHead e1 
30714 k u1)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u2: T).(getl h c2 (CHead e2 
30715 k u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30716 C).(\lambda (u2: T).(pr0 u2 u1)))))))))))
30717 \def
30718  \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c2 c1)).(wcpr0_ind 
30719 (\lambda (c: C).(\lambda (c0: C).(\forall (h: nat).(\forall (e1: C).(\forall 
30720 (u1: T).(\forall (k: K).((getl h c0 (CHead e1 k u1)) \to (ex3_2 C T (\lambda 
30721 (e2: C).(\lambda (u2: T).(getl h c (CHead e2 k u2)))) (\lambda (e2: 
30722 C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda (u2: T).(pr0 u2 
30723 u1))))))))))) (\lambda (c: C).(\lambda (h: nat).(\lambda (e1: C).(\lambda 
30724 (u1: T).(\lambda (k: K).(\lambda (H0: (getl h c (CHead e1 k 
30725 u1))).(ex3_2_intro C T (\lambda (e2: C).(\lambda (u2: T).(getl h c (CHead e2 
30726 k u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30727 C).(\lambda (u2: T).(pr0 u2 u1))) e1 u1 H0 (wcpr0_refl e1) (pr0_refl 
30728 u1)))))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda (H0: (wcpr0 c0 
30729 c3)).(\lambda (H1: ((\forall (h: nat).(\forall (e1: C).(\forall (u1: 
30730 T).(\forall (k: K).((getl h c3 (CHead e1 k u1)) \to (ex3_2 C T (\lambda (e2: 
30731 C).(\lambda (u2: T).(getl h c0 (CHead e2 k u2)))) (\lambda (e2: C).(\lambda 
30732 (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda (u2: T).(pr0 u2 
30733 u1))))))))))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H2: (pr0 u1 
30734 u2)).(\lambda (k: K).(\lambda (h: nat).(nat_ind (\lambda (n: nat).(\forall 
30735 (e1: C).(\forall (u3: T).(\forall (k0: K).((getl n (CHead c3 k u2) (CHead e1 
30736 k0 u3)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u4: T).(getl n (CHead c0 k 
30737 u1) (CHead e2 k0 u4)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) 
30738 (\lambda (_: C).(\lambda (u4: T).(pr0 u4 u3))))))))) (\lambda (e1: 
30739 C).(\lambda (u0: T).(\lambda (k0: K).(\lambda (H3: (getl O (CHead c3 k u2) 
30740 (CHead e1 k0 u0))).((match k return (\lambda (k1: K).((clear (CHead c3 k1 u2) 
30741 (CHead e1 k0 u0)) \to (ex3_2 C T (\lambda (e2: C).(\lambda (u3: T).(getl O 
30742 (CHead c0 k1 u1) (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 
30743 e2 e1))) (\lambda (_: C).(\lambda (u3: T).(pr0 u3 u0)))))) with [(Bind b) 
30744 \Rightarrow (\lambda (H4: (clear (CHead c3 (Bind b) u2) (CHead e1 k0 
30745 u0))).(let H5 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: 
30746 C).C) with [(CSort _) \Rightarrow e1 | (CHead c _ _) \Rightarrow c])) (CHead 
30747 e1 k0 u0) (CHead c3 (Bind b) u2) (clear_gen_bind b c3 (CHead e1 k0 u0) u2 
30748 H4)) in ((let H6 \def (f_equal C K (\lambda (e: C).(match e return (\lambda 
30749 (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) \Rightarrow k])) 
30750 (CHead e1 k0 u0) (CHead c3 (Bind b) u2) (clear_gen_bind b c3 (CHead e1 k0 u0) 
30751 u2 H4)) in ((let H7 \def (f_equal C T (\lambda (e: C).(match e return 
30752 (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) \Rightarrow 
30753 t])) (CHead e1 k0 u0) (CHead c3 (Bind b) u2) (clear_gen_bind b c3 (CHead e1 
30754 k0 u0) u2 H4)) in (\lambda (H8: (eq K k0 (Bind b))).(\lambda (H9: (eq C e1 
30755 c3)).(eq_ind_r K (Bind b) (\lambda (k1: K).(ex3_2 C T (\lambda (e2: 
30756 C).(\lambda (u3: T).(getl O (CHead c0 (Bind b) u1) (CHead e2 k1 u3)))) 
30757 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda 
30758 (u3: T).(pr0 u3 u0))))) (eq_ind_r T u2 (\lambda (t: T).(ex3_2 C T (\lambda 
30759 (e2: C).(\lambda (u3: T).(getl O (CHead c0 (Bind b) u1) (CHead e2 (Bind b) 
30760 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30761 C).(\lambda (u3: T).(pr0 u3 t))))) (eq_ind_r C c3 (\lambda (c: C).(ex3_2 C T 
30762 (\lambda (e2: C).(\lambda (u3: T).(getl O (CHead c0 (Bind b) u1) (CHead e2 
30763 (Bind b) u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 c))) (\lambda (_: 
30764 C).(\lambda (u3: T).(pr0 u3 u2))))) (ex3_2_intro C T (\lambda (e2: 
30765 C).(\lambda (u3: T).(getl O (CHead c0 (Bind b) u1) (CHead e2 (Bind b) u3)))) 
30766 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 c3))) (\lambda (_: C).(\lambda 
30767 (u3: T).(pr0 u3 u2))) c0 u1 (getl_refl b c0 u1) H0 H2) e1 H9) u0 H7) k0 
30768 H8)))) H6)) H5))) | (Flat f) \Rightarrow (\lambda (H4: (clear (CHead c3 (Flat 
30769 f) u2) (CHead e1 k0 u0))).(let H5 \def (H1 O e1 u0 k0 (getl_intro O c3 (CHead 
30770 e1 k0 u0) c3 (drop_refl c3) (clear_gen_flat f c3 (CHead e1 k0 u0) u2 H4))) in 
30771 (ex3_2_ind C T (\lambda (e2: C).(\lambda (u3: T).(getl O c0 (CHead e2 k0 
30772 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30773 C).(\lambda (u3: T).(pr0 u3 u0))) (ex3_2 C T (\lambda (e2: C).(\lambda (u3: 
30774 T).(getl O (CHead c0 (Flat f) u1) (CHead e2 k0 u3)))) (\lambda (e2: 
30775 C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda (u3: T).(pr0 u3 
30776 u0)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (getl O c0 (CHead x0 
30777 k0 x1))).(\lambda (H7: (wcpr0 x0 e1)).(\lambda (H8: (pr0 x1 u0)).(ex3_2_intro 
30778 C T (\lambda (e2: C).(\lambda (u3: T).(getl O (CHead c0 (Flat f) u1) (CHead 
30779 e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30780 C).(\lambda (u3: T).(pr0 u3 u0))) x0 x1 (getl_flat c0 (CHead x0 k0 x1) O H6 f 
30781 u1) H7 H8)))))) H5)))]) (getl_gen_O (CHead c3 k u2) (CHead e1 k0 u0) H3)))))) 
30782 (K_ind (\lambda (k0: K).(\forall (n: nat).(((\forall (e1: C).(\forall (u3: 
30783 T).(\forall (k: K).((getl n (CHead c3 k0 u2) (CHead e1 k u3)) \to (ex3_2 C T 
30784 (\lambda (e2: C).(\lambda (u2: T).(getl n (CHead c0 k0 u1) (CHead e2 k u2)))) 
30785 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda 
30786 (u2: T).(pr0 u2 u3))))))))) \to (\forall (e1: C).(\forall (u3: T).(\forall 
30787 (k1: K).((getl (S n) (CHead c3 k0 u2) (CHead e1 k1 u3)) \to (ex3_2 C T 
30788 (\lambda (e2: C).(\lambda (u4: T).(getl (S n) (CHead c0 k0 u1) (CHead e2 k1 
30789 u4)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30790 C).(\lambda (u4: T).(pr0 u4 u3))))))))))) (\lambda (b: B).(\lambda (n: 
30791 nat).(\lambda (_: ((\forall (e1: C).(\forall (u3: T).(\forall (k: K).((getl n 
30792 (CHead c3 (Bind b) u2) (CHead e1 k u3)) \to (ex3_2 C T (\lambda (e2: 
30793 C).(\lambda (u2: T).(getl n (CHead c0 (Bind b) u1) (CHead e2 k u2)))) 
30794 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda 
30795 (u2: T).(pr0 u2 u3)))))))))).(\lambda (e1: C).(\lambda (u0: T).(\lambda (k0: 
30796 K).(\lambda (H4: (getl (S n) (CHead c3 (Bind b) u2) (CHead e1 k0 u0))).(let 
30797 H5 \def (H1 n e1 u0 k0 (getl_gen_S (Bind b) c3 (CHead e1 k0 u0) u2 n H4)) in 
30798 (ex3_2_ind C T (\lambda (e2: C).(\lambda (u3: T).(getl n c0 (CHead e2 k0 
30799 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30800 C).(\lambda (u3: T).(pr0 u3 u0))) (ex3_2 C T (\lambda (e2: C).(\lambda (u3: 
30801 T).(getl (S n) (CHead c0 (Bind b) u1) (CHead e2 k0 u3)))) (\lambda (e2: 
30802 C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda (u3: T).(pr0 u3 
30803 u0)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (getl n c0 (CHead x0 
30804 k0 x1))).(\lambda (H7: (wcpr0 x0 e1)).(\lambda (H8: (pr0 x1 u0)).(ex3_2_intro 
30805 C T (\lambda (e2: C).(\lambda (u3: T).(getl (S n) (CHead c0 (Bind b) u1) 
30806 (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda 
30807 (_: C).(\lambda (u3: T).(pr0 u3 u0))) x0 x1 (getl_head (Bind b) n c0 (CHead 
30808 x0 k0 x1) H6 u1) H7 H8)))))) H5))))))))) (\lambda (f: F).(\lambda (n: 
30809 nat).(\lambda (_: ((\forall (e1: C).(\forall (u3: T).(\forall (k: K).((getl n 
30810 (CHead c3 (Flat f) u2) (CHead e1 k u3)) \to (ex3_2 C T (\lambda (e2: 
30811 C).(\lambda (u2: T).(getl n (CHead c0 (Flat f) u1) (CHead e2 k u2)))) 
30812 (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda 
30813 (u2: T).(pr0 u2 u3)))))))))).(\lambda (e1: C).(\lambda (u0: T).(\lambda (k0: 
30814 K).(\lambda (H4: (getl (S n) (CHead c3 (Flat f) u2) (CHead e1 k0 u0))).(let 
30815 H5 \def (H1 (S n) e1 u0 k0 (getl_gen_S (Flat f) c3 (CHead e1 k0 u0) u2 n H4)) 
30816 in (ex3_2_ind C T (\lambda (e2: C).(\lambda (u3: T).(getl (S n) c0 (CHead e2 
30817 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: 
30818 C).(\lambda (u3: T).(pr0 u3 u0))) (ex3_2 C T (\lambda (e2: C).(\lambda (u3: 
30819 T).(getl (S n) (CHead c0 (Flat f) u1) (CHead e2 k0 u3)))) (\lambda (e2: 
30820 C).(\lambda (_: T).(wcpr0 e2 e1))) (\lambda (_: C).(\lambda (u3: T).(pr0 u3 
30821 u0)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (getl (S n) c0 (CHead 
30822 x0 k0 x1))).(\lambda (H7: (wcpr0 x0 e1)).(\lambda (H8: (pr0 x1 
30823 u0)).(ex3_2_intro C T (\lambda (e2: C).(\lambda (u3: T).(getl (S n) (CHead c0 
30824 (Flat f) u1) (CHead e2 k0 u3)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 e2 
30825 e1))) (\lambda (_: C).(\lambda (u3: T).(pr0 u3 u0))) x0 x1 (getl_head (Flat 
30826 f) n c0 (CHead x0 k0 x1) H6 u1) H7 H8)))))) H5))))))))) k) h)))))))))) c2 c1 
30827 H))).
30828
30829 inductive pr2: C \to (T \to (T \to Prop)) \def
30830 | pr2_free: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to 
30831 (pr2 c t1 t2))))
30832 | pr2_delta: \forall (c: C).(\forall (d: C).(\forall (u: T).(\forall (i: 
30833 nat).((getl i c (CHead d (Bind Abbr) u)) \to (\forall (t1: T).(\forall (t2: 
30834 T).((pr0 t1 t2) \to (\forall (t: T).((subst0 i u t2 t) \to (pr2 c t1 
30835 t)))))))))).
30836
30837 theorem pr2_gen_sort:
30838  \forall (c: C).(\forall (x: T).(\forall (n: nat).((pr2 c (TSort n) x) \to 
30839 (eq T x (TSort n)))))
30840 \def
30841  \lambda (c: C).(\lambda (x: T).(\lambda (n: nat).(\lambda (H: (pr2 c (TSort 
30842 n) x)).(let H0 \def (match H return (\lambda (c0: C).(\lambda (t: T).(\lambda 
30843 (t0: T).(\lambda (_: (pr2 c0 t t0)).((eq C c0 c) \to ((eq T t (TSort n)) \to 
30844 ((eq T t0 x) \to (eq T x (TSort n))))))))) with [(pr2_free c0 t1 t2 H0) 
30845 \Rightarrow (\lambda (H1: (eq C c0 c)).(\lambda (H2: (eq T t1 (TSort 
30846 n))).(\lambda (H3: (eq T t2 x)).(eq_ind C c (\lambda (_: C).((eq T t1 (TSort 
30847 n)) \to ((eq T t2 x) \to ((pr0 t1 t2) \to (eq T x (TSort n)))))) (\lambda 
30848 (H4: (eq T t1 (TSort n))).(eq_ind T (TSort n) (\lambda (t: T).((eq T t2 x) 
30849 \to ((pr0 t t2) \to (eq T x (TSort n))))) (\lambda (H5: (eq T t2 x)).(eq_ind 
30850 T x (\lambda (t: T).((pr0 (TSort n) t) \to (eq T x (TSort n)))) (\lambda (H6: 
30851 (pr0 (TSort n) x)).(let H7 \def (eq_ind T x (\lambda (t: T).(pr2 c (TSort n) 
30852 t)) H (TSort n) (pr0_gen_sort x n H6)) in (eq_ind_r T (TSort n) (\lambda (t: 
30853 T).(eq T t (TSort n))) (refl_equal T (TSort n)) x (pr0_gen_sort x n H6)))) t2 
30854 (sym_eq T t2 x H5))) t1 (sym_eq T t1 (TSort n) H4))) c0 (sym_eq C c0 c H1) H2 
30855 H3 H0)))) | (pr2_delta c0 d u i H0 t1 t2 H1 t H2) \Rightarrow (\lambda (H3: 
30856 (eq C c0 c)).(\lambda (H4: (eq T t1 (TSort n))).(\lambda (H5: (eq T t 
30857 x)).(eq_ind C c (\lambda (c: C).((eq T t1 (TSort n)) \to ((eq T t x) \to 
30858 ((getl i c (CHead d (Bind Abbr) u)) \to ((pr0 t1 t2) \to ((subst0 i u t2 t) 
30859 \to (eq T x (TSort n)))))))) (\lambda (H6: (eq T t1 (TSort n))).(eq_ind T 
30860 (TSort n) (\lambda (t0: T).((eq T t x) \to ((getl i c (CHead d (Bind Abbr) 
30861 u)) \to ((pr0 t0 t2) \to ((subst0 i u t2 t) \to (eq T x (TSort n))))))) 
30862 (\lambda (H7: (eq T t x)).(eq_ind T x (\lambda (t0: T).((getl i c (CHead d 
30863 (Bind Abbr) u)) \to ((pr0 (TSort n) t2) \to ((subst0 i u t2 t0) \to (eq T x 
30864 (TSort n)))))) (\lambda (_: (getl i c (CHead d (Bind Abbr) u))).(\lambda (H9: 
30865 (pr0 (TSort n) t2)).(\lambda (H10: (subst0 i u t2 x)).(let H11 \def (eq_ind T 
30866 t2 (\lambda (t: T).(subst0 i u t x)) H10 (TSort n) (pr0_gen_sort t2 n H9)) in 
30867 (subst0_gen_sort u x i n H11 (eq T x (TSort n))))))) t (sym_eq T t x H7))) t1 
30868 (sym_eq T t1 (TSort n) H6))) c0 (sym_eq C c0 c H3) H4 H5 H0 H1 H2))))]) in 
30869 (H0 (refl_equal C c) (refl_equal T (TSort n)) (refl_equal T x)))))).
30870
30871 theorem pr2_gen_lref:
30872  \forall (c: C).(\forall (x: T).(\forall (n: nat).((pr2 c (TLRef n) x) \to 
30873 (or (eq T x (TLRef n)) (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl n c 
30874 (CHead d (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(eq T x (lift (S 
30875 n) O u)))))))))
30876 \def
30877  \lambda (c: C).(\lambda (x: T).(\lambda (n: nat).(\lambda (H: (pr2 c (TLRef 
30878 n) x)).(let H0 \def (match H return (\lambda (c0: C).(\lambda (t: T).(\lambda 
30879 (t0: T).(\lambda (_: (pr2 c0 t t0)).((eq C c0 c) \to ((eq T t (TLRef n)) \to 
30880 ((eq T t0 x) \to (or (eq T x (TLRef n)) (ex2_2 C T (\lambda (d: C).(\lambda 
30881 (u: T).(getl n c (CHead d (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: 
30882 T).(eq T x (lift (S n) O u))))))))))))) with [(pr2_free c0 t1 t2 H0) 
30883 \Rightarrow (\lambda (H1: (eq C c0 c)).(\lambda (H2: (eq T t1 (TLRef 
30884 n))).(\lambda (H3: (eq T t2 x)).(eq_ind C c (\lambda (_: C).((eq T t1 (TLRef 
30885 n)) \to ((eq T t2 x) \to ((pr0 t1 t2) \to (or (eq T x (TLRef n)) (ex2_2 C T 
30886 (\lambda (d: C).(\lambda (u: T).(getl n c (CHead d (Bind Abbr) u)))) (\lambda 
30887 (_: C).(\lambda (u: T).(eq T x (lift (S n) O u)))))))))) (\lambda (H4: (eq T 
30888 t1 (TLRef n))).(eq_ind T (TLRef n) (\lambda (t: T).((eq T t2 x) \to ((pr0 t 
30889 t2) \to (or (eq T x (TLRef n)) (ex2_2 C T (\lambda (d: C).(\lambda (u: 
30890 T).(getl n c (CHead d (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(eq T 
30891 x (lift (S n) O u))))))))) (\lambda (H5: (eq T t2 x)).(eq_ind T x (\lambda 
30892 (t: T).((pr0 (TLRef n) t) \to (or (eq T x (TLRef n)) (ex2_2 C T (\lambda (d: 
30893 C).(\lambda (u: T).(getl n c (CHead d (Bind Abbr) u)))) (\lambda (_: 
30894 C).(\lambda (u: T).(eq T x (lift (S n) O u)))))))) (\lambda (H6: (pr0 (TLRef 
30895 n) x)).(let H7 \def (eq_ind T x (\lambda (t: T).(pr2 c (TLRef n) t)) H (TLRef 
30896 n) (pr0_gen_lref x n H6)) in (eq_ind_r T (TLRef n) (\lambda (t: T).(or (eq T 
30897 t (TLRef n)) (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl n c (CHead d 
30898 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(eq T t (lift (S n) O 
30899 u))))))) (or_introl (eq T (TLRef n) (TLRef n)) (ex2_2 C T (\lambda (d: 
30900 C).(\lambda (u: T).(getl n c (CHead d (Bind Abbr) u)))) (\lambda (_: 
30901 C).(\lambda (u: T).(eq T (TLRef n) (lift (S n) O u))))) (refl_equal T (TLRef 
30902 n))) x (pr0_gen_lref x n H6)))) t2 (sym_eq T t2 x H5))) t1 (sym_eq T t1 
30903 (TLRef n) H4))) c0 (sym_eq C c0 c H1) H2 H3 H0)))) | (pr2_delta c0 d u i H0 
30904 t1 t2 H1 t H2) \Rightarrow (\lambda (H3: (eq C c0 c)).(\lambda (H4: (eq T t1 
30905 (TLRef n))).(\lambda (H5: (eq T t x)).(eq_ind C c (\lambda (c1: C).((eq T t1 
30906 (TLRef n)) \to ((eq T t x) \to ((getl i c1 (CHead d (Bind Abbr) u)) \to ((pr0 
30907 t1 t2) \to ((subst0 i u t2 t) \to (or (eq T x (TLRef n)) (ex2_2 C T (\lambda 
30908 (d0: C).(\lambda (u0: T).(getl n c (CHead d0 (Bind Abbr) u0)))) (\lambda (_: 
30909 C).(\lambda (u0: T).(eq T x (lift (S n) O u0)))))))))))) (\lambda (H6: (eq T 
30910 t1 (TLRef n))).(eq_ind T (TLRef n) (\lambda (t0: T).((eq T t x) \to ((getl i 
30911 c (CHead d (Bind Abbr) u)) \to ((pr0 t0 t2) \to ((subst0 i u t2 t) \to (or 
30912 (eq T x (TLRef n)) (ex2_2 C T (\lambda (d0: C).(\lambda (u0: T).(getl n c 
30913 (CHead d0 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(eq T x (lift 
30914 (S n) O u0))))))))))) (\lambda (H7: (eq T t x)).(eq_ind T x (\lambda (t0: 
30915 T).((getl i c (CHead d (Bind Abbr) u)) \to ((pr0 (TLRef n) t2) \to ((subst0 i 
30916 u t2 t0) \to (or (eq T x (TLRef n)) (ex2_2 C T (\lambda (d0: C).(\lambda (u0: 
30917 T).(getl n c (CHead d0 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: 
30918 T).(eq T x (lift (S n) O u0)))))))))) (\lambda (H8: (getl i c (CHead d (Bind 
30919 Abbr) u))).(\lambda (H9: (pr0 (TLRef n) t2)).(\lambda (H10: (subst0 i u t2 
30920 x)).(let H11 \def (eq_ind T t2 (\lambda (t: T).(subst0 i u t x)) H10 (TLRef 
30921 n) (pr0_gen_lref t2 n H9)) in (and_ind (eq nat n i) (eq T x (lift (S n) O u)) 
30922 (or (eq T x (TLRef n)) (ex2_2 C T (\lambda (d0: C).(\lambda (u0: T).(getl n c 
30923 (CHead d0 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(eq T x (lift 
30924 (S n) O u0)))))) (\lambda (H12: (eq nat n i)).(\lambda (H13: (eq T x (lift (S 
30925 n) O u))).(let H14 \def (eq_ind_r nat i (\lambda (n: nat).(getl n c (CHead d 
30926 (Bind Abbr) u))) H8 n H12) in (let H15 \def (eq_ind T x (\lambda (t: T).(pr2 
30927 c (TLRef n) t)) H (lift (S n) O u) H13) in (eq_ind_r T (lift (S n) O u) 
30928 (\lambda (t0: T).(or (eq T t0 (TLRef n)) (ex2_2 C T (\lambda (d0: C).(\lambda 
30929 (u0: T).(getl n c (CHead d0 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: 
30930 T).(eq T t0 (lift (S n) O u0))))))) (or_intror (eq T (lift (S n) O u) (TLRef 
30931 n)) (ex2_2 C T (\lambda (d0: C).(\lambda (u0: T).(getl n c (CHead d0 (Bind 
30932 Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(eq T (lift (S n) O u) (lift (S 
30933 n) O u0))))) (ex2_2_intro C T (\lambda (d0: C).(\lambda (u0: T).(getl n c 
30934 (CHead d0 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(eq T (lift (S 
30935 n) O u) (lift (S n) O u0)))) d u H14 (refl_equal T (lift (S n) O u)))) x 
30936 H13))))) (subst0_gen_lref u x i n H11)))))) t (sym_eq T t x H7))) t1 (sym_eq 
30937 T t1 (TLRef n) H6))) c0 (sym_eq C c0 c H3) H4 H5 H0 H1 H2))))]) in (H0 
30938 (refl_equal C c) (refl_equal T (TLRef n)) (refl_equal T x)))))).
30939
30940 theorem pr2_gen_abst:
30941  \forall (c: C).(\forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr2 c 
30942 (THead (Bind Abst) u1 t1) x) \to (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
30943 T).(eq T x (THead (Bind Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
30944 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: 
30945 T).(pr2 (CHead c (Bind b) u) t1 t2))))))))))
30946 \def
30947  \lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda 
30948 (H: (pr2 c (THead (Bind Abst) u1 t1) x)).(let H0 \def (match H return 
30949 (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr2 c0 t 
30950 t0)).((eq C c0 c) \to ((eq T t (THead (Bind Abst) u1 t1)) \to ((eq T t0 x) 
30951 \to (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind Abst) 
30952 u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
30953 T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
30954 t1 t2))))))))))))) with [(pr2_free c0 t0 t2 H0) \Rightarrow (\lambda (H1: (eq 
30955 C c0 c)).(\lambda (H2: (eq T t0 (THead (Bind Abst) u1 t1))).(\lambda (H3: (eq 
30956 T t2 x)).(eq_ind C c (\lambda (_: C).((eq T t0 (THead (Bind Abst) u1 t1)) \to 
30957 ((eq T t2 x) \to ((pr0 t0 t2) \to (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
30958 T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
30959 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: 
30960 T).(pr2 (CHead c (Bind b) u) t1 t3)))))))))) (\lambda (H4: (eq T t0 (THead 
30961 (Bind Abst) u1 t1))).(eq_ind T (THead (Bind Abst) u1 t1) (\lambda (t: T).((eq 
30962 T t2 x) \to ((pr0 t t2) \to (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq 
30963 T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
30964 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 
30965 (CHead c (Bind b) u) t1 t3))))))))) (\lambda (H5: (eq T t2 x)).(eq_ind T x 
30966 (\lambda (t: T).((pr0 (THead (Bind Abst) u1 t1) t) \to (ex3_2 T T (\lambda 
30967 (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: 
30968 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
30969 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t3)))))))) (\lambda (H6: 
30970 (pr0 (THead (Bind Abst) u1 t1) x)).(ex3_2_ind T T (\lambda (u2: T).(\lambda 
30971 (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
30972 T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3))) (ex3_2 T T 
30973 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) 
30974 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
30975 (t3: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t3)))))) 
30976 (\lambda (x0: T).(\lambda (x1: T).(\lambda (H7: (eq T x (THead (Bind Abst) x0 
30977 x1))).(\lambda (H8: (pr0 u1 x0)).(\lambda (H9: (pr0 t1 x1)).(let H10 \def 
30978 (eq_ind T x (\lambda (t: T).(pr2 c (THead (Bind Abst) u1 t1) t)) H (THead 
30979 (Bind Abst) x0 x1) H7) in (eq_ind_r T (THead (Bind Abst) x0 x1) (\lambda (t: 
30980 T).(ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t (THead (Bind Abst) u2 
30981 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
30982 T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
30983 t1 t3))))))) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead 
30984 (Bind Abst) x0 x1) (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
30985 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
30986 (u: T).(pr2 (CHead c (Bind b) u) t1 t3))))) x0 x1 (refl_equal T (THead (Bind 
30987 Abst) x0 x1)) (pr2_free c u1 x0 H8) (\lambda (b: B).(\lambda (u: T).(pr2_free 
30988 (CHead c (Bind b) u) t1 x1 H9)))) x H7))))))) (pr0_gen_abst u1 t1 x H6))) t2 
30989 (sym_eq T t2 x H5))) t0 (sym_eq T t0 (THead (Bind Abst) u1 t1) H4))) c0 
30990 (sym_eq C c0 c H1) H2 H3 H0)))) | (pr2_delta c0 d u i H0 t0 t2 H1 t H2) 
30991 \Rightarrow (\lambda (H3: (eq C c0 c)).(\lambda (H4: (eq T t0 (THead (Bind 
30992 Abst) u1 t1))).(\lambda (H5: (eq T t x)).(eq_ind C c (\lambda (c1: C).((eq T 
30993 t0 (THead (Bind Abst) u1 t1)) \to ((eq T t x) \to ((getl i c1 (CHead d (Bind 
30994 Abbr) u)) \to ((pr0 t0 t2) \to ((subst0 i u t2 t) \to (ex3_2 T T (\lambda 
30995 (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: 
30996 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
30997 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3)))))))))))) (\lambda 
30998 (H6: (eq T t0 (THead (Bind Abst) u1 t1))).(eq_ind T (THead (Bind Abst) u1 t1) 
30999 (\lambda (t3: T).((eq T t x) \to ((getl i c (CHead d (Bind Abbr) u)) \to 
31000 ((pr0 t3 t2) \to ((subst0 i u t2 t) \to (ex3_2 T T (\lambda (u2: T).(\lambda 
31001 (t4: T).(eq T x (THead (Bind Abst) u2 t4)))) (\lambda (u2: T).(\lambda (_: 
31002 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t4: T).(\forall (b: B).(\forall 
31003 (u0: T).(pr2 (CHead c (Bind b) u0) t1 t4))))))))))) (\lambda (H7: (eq T t 
31004 x)).(eq_ind T x (\lambda (t3: T).((getl i c (CHead d (Bind Abbr) u)) \to 
31005 ((pr0 (THead (Bind Abst) u1 t1) t2) \to ((subst0 i u t2 t3) \to (ex3_2 T T 
31006 (\lambda (u2: T).(\lambda (t4: T).(eq T x (THead (Bind Abst) u2 t4)))) 
31007 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
31008 (t4: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
31009 t4)))))))))) (\lambda (H8: (getl i c (CHead d (Bind Abbr) u))).(\lambda (H9: 
31010 (pr0 (THead (Bind Abst) u1 t1) t2)).(\lambda (H10: (subst0 i u t2 
31011 x)).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind 
31012 Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
31013 T).(\lambda (t3: T).(pr0 t1 t3))) (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
31014 T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
31015 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: 
31016 T).(pr2 (CHead c (Bind b) u0) t1 t3)))))) (\lambda (x0: T).(\lambda (x1: 
31017 T).(\lambda (H11: (eq T t2 (THead (Bind Abst) x0 x1))).(\lambda (H12: (pr0 u1 
31018 x0)).(\lambda (H13: (pr0 t1 x1)).(let H14 \def (eq_ind T t2 (\lambda (t: 
31019 T).(subst0 i u t x)) H10 (THead (Bind Abst) x0 x1) H11) in (or3_ind (ex2 T 
31020 (\lambda (u2: T).(eq T x (THead (Bind Abst) u2 x1))) (\lambda (u2: T).(subst0 
31021 i u x0 u2))) (ex2 T (\lambda (t3: T).(eq T x (THead (Bind Abst) x0 t3))) 
31022 (\lambda (t3: T).(subst0 (s (Bind Abst) i) u x1 t3))) (ex3_2 T T (\lambda 
31023 (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: 
31024 T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: T).(\lambda (t3: 
31025 T).(subst0 (s (Bind Abst) i) u x1 t3)))) (ex3_2 T T (\lambda (u2: T).(\lambda 
31026 (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
31027 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
31028 (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3)))))) (\lambda (H15: (ex2 T (\lambda 
31029 (u2: T).(eq T x (THead (Bind Abst) u2 x1))) (\lambda (u2: T).(subst0 i u x0 
31030 u2)))).(ex2_ind T (\lambda (u2: T).(eq T x (THead (Bind Abst) u2 x1))) 
31031 (\lambda (u2: T).(subst0 i u x0 u2)) (ex3_2 T T (\lambda (u2: T).(\lambda 
31032 (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
31033 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
31034 (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3)))))) (\lambda (x2: T).(\lambda 
31035 (H16: (eq T x (THead (Bind Abst) x2 x1))).(\lambda (H17: (subst0 i u x0 
31036 x2)).(let H18 \def (eq_ind T x (\lambda (t: T).(pr2 c (THead (Bind Abst) u1 
31037 t1) t)) H (THead (Bind Abst) x2 x1) H16) in (eq_ind_r T (THead (Bind Abst) x2 
31038 x1) (\lambda (t3: T).(ex3_2 T T (\lambda (u2: T).(\lambda (t4: T).(eq T t3 
31039 (THead (Bind Abst) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
31040 (\lambda (_: T).(\lambda (t4: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead 
31041 c (Bind b) u0) t1 t4))))))) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: 
31042 T).(eq T (THead (Bind Abst) x2 x1) (THead (Bind Abst) u2 t3)))) (\lambda (u2: 
31043 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
31044 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))))) x2 x1 
31045 (refl_equal T (THead (Bind Abst) x2 x1)) (pr2_delta c d u i H8 u1 x0 H12 x2 
31046 H17) (\lambda (b: B).(\lambda (u0: T).(pr2_free (CHead c (Bind b) u0) t1 x1 
31047 H13)))) x H16))))) H15)) (\lambda (H15: (ex2 T (\lambda (t2: T).(eq T x 
31048 (THead (Bind Abst) x0 t2))) (\lambda (t2: T).(subst0 (s (Bind Abst) i) u x1 
31049 t2)))).(ex2_ind T (\lambda (t3: T).(eq T x (THead (Bind Abst) x0 t3))) 
31050 (\lambda (t3: T).(subst0 (s (Bind Abst) i) u x1 t3)) (ex3_2 T T (\lambda (u2: 
31051 T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: 
31052 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
31053 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3)))))) (\lambda (x2: 
31054 T).(\lambda (H16: (eq T x (THead (Bind Abst) x0 x2))).(\lambda (H17: (subst0 
31055 (s (Bind Abst) i) u x1 x2)).(let H18 \def (eq_ind T x (\lambda (t: T).(pr2 c 
31056 (THead (Bind Abst) u1 t1) t)) H (THead (Bind Abst) x0 x2) H16) in (eq_ind_r T 
31057 (THead (Bind Abst) x0 x2) (\lambda (t3: T).(ex3_2 T T (\lambda (u2: 
31058 T).(\lambda (t4: T).(eq T t3 (THead (Bind Abst) u2 t4)))) (\lambda (u2: 
31059 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t4: T).(\forall 
31060 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t4))))))) (ex3_2_intro 
31061 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind Abst) x0 x2) (THead 
31062 (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
31063 (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead 
31064 c (Bind b) u0) t1 t3))))) x0 x2 (refl_equal T (THead (Bind Abst) x0 x2)) 
31065 (pr2_free c u1 x0 H12) (\lambda (b: B).(\lambda (u0: T).(pr2_delta (CHead c 
31066 (Bind b) u0) d u (S i) (getl_head (Bind b) i c (CHead d (Bind Abbr) u) H8 u0) 
31067 t1 x1 H13 x2 H17)))) x H16))))) H15)) (\lambda (H15: (ex3_2 T T (\lambda (u2: 
31068 T).(\lambda (t2: T).(eq T x (THead (Bind Abst) u2 t2)))) (\lambda (u2: 
31069 T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: T).(\lambda (t2: 
31070 T).(subst0 (s (Bind Abst) i) u x1 t2))))).(ex3_2_ind T T (\lambda (u2: 
31071 T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: 
31072 T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: T).(\lambda (t3: 
31073 T).(subst0 (s (Bind Abst) i) u x1 t3))) (ex3_2 T T (\lambda (u2: T).(\lambda 
31074 (t3: T).(eq T x (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
31075 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
31076 (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3)))))) (\lambda (x2: T).(\lambda (x3: 
31077 T).(\lambda (H16: (eq T x (THead (Bind Abst) x2 x3))).(\lambda (H17: (subst0 
31078 i u x0 x2)).(\lambda (H18: (subst0 (s (Bind Abst) i) u x1 x3)).(let H19 \def 
31079 (eq_ind T x (\lambda (t: T).(pr2 c (THead (Bind Abst) u1 t1) t)) H (THead 
31080 (Bind Abst) x2 x3) H16) in (eq_ind_r T (THead (Bind Abst) x2 x3) (\lambda 
31081 (t3: T).(ex3_2 T T (\lambda (u2: T).(\lambda (t4: T).(eq T t3 (THead (Bind 
31082 Abst) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31083 T).(\lambda (t4: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
31084 u0) t1 t4))))))) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
31085 (THead (Bind Abst) x2 x3) (THead (Bind Abst) u2 t3)))) (\lambda (u2: 
31086 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
31087 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))))) x2 x3 
31088 (refl_equal T (THead (Bind Abst) x2 x3)) (pr2_delta c d u i H8 u1 x0 H12 x2 
31089 H17) (\lambda (b: B).(\lambda (u0: T).(pr2_delta (CHead c (Bind b) u0) d u (S 
31090 i) (getl_head (Bind b) i c (CHead d (Bind Abbr) u) H8 u0) t1 x1 H13 x3 
31091 H18)))) x H16))))))) H15)) (subst0_gen_head (Bind Abst) u x0 x1 x i 
31092 H14)))))))) (pr0_gen_abst u1 t1 t2 H9))))) t (sym_eq T t x H7))) t0 (sym_eq T 
31093 t0 (THead (Bind Abst) u1 t1) H6))) c0 (sym_eq C c0 c H3) H4 H5 H0 H1 H2))))]) 
31094 in (H0 (refl_equal C c) (refl_equal T (THead (Bind Abst) u1 t1)) (refl_equal 
31095 T x))))))).
31096
31097 theorem pr2_gen_cast:
31098  \forall (c: C).(\forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr2 c 
31099 (THead (Flat Cast) u1 t1) x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda 
31100 (t2: T).(eq T x (THead (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
31101 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr2 c t1 t2)))) (pr2 c 
31102 t1 x))))))
31103 \def
31104  \lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda 
31105 (H: (pr2 c (THead (Flat Cast) u1 t1) x)).(let H0 \def (match H return 
31106 (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr2 c0 t 
31107 t0)).((eq C c0 c) \to ((eq T t (THead (Flat Cast) u1 t1)) \to ((eq T t0 x) 
31108 \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Flat 
31109 Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31110 T).(\lambda (t2: T).(pr2 c t1 t2)))) (pr2 c t1 x))))))))) with [(pr2_free c0 
31111 t0 t2 H0) \Rightarrow (\lambda (H1: (eq C c0 c)).(\lambda (H2: (eq T t0 
31112 (THead (Flat Cast) u1 t1))).(\lambda (H3: (eq T t2 x)).(eq_ind C c (\lambda 
31113 (_: C).((eq T t0 (THead (Flat Cast) u1 t1)) \to ((eq T t2 x) \to ((pr0 t0 t2) 
31114 \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat 
31115 Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31116 T).(\lambda (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x)))))) (\lambda (H4: (eq T t0 
31117 (THead (Flat Cast) u1 t1))).(eq_ind T (THead (Flat Cast) u1 t1) (\lambda (t: 
31118 T).((eq T t2 x) \to ((pr0 t t2) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda 
31119 (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
31120 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (pr2 c 
31121 t1 x))))) (\lambda (H5: (eq T t2 x)).(eq_ind T x (\lambda (t: T).((pr0 (THead 
31122 (Flat Cast) u1 t1) t) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
31123 T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
31124 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x)))) 
31125 (\lambda (H6: (pr0 (THead (Flat Cast) u1 t1) x)).(or_ind (ex3_2 T T (\lambda 
31126 (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: 
31127 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
31128 t3)))) (pr0 t1 x) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
31129 (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
31130 (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x)) (\lambda (H7: 
31131 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Flat Cast) u2 
31132 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
31133 T).(\lambda (t2: T).(pr0 t1 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda 
31134 (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
31135 T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3))) (or (ex3_2 T 
31136 T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) 
31137 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
31138 (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x)) (\lambda (x0: T).(\lambda (x1: 
31139 T).(\lambda (H8: (eq T x (THead (Flat Cast) x0 x1))).(\lambda (H9: (pr0 u1 
31140 x0)).(\lambda (H10: (pr0 t1 x1)).(let H11 \def (eq_ind T x (\lambda (t: 
31141 T).(pr2 c (THead (Flat Cast) u1 t1) t)) H (THead (Flat Cast) x0 x1) H8) in 
31142 (eq_ind_r T (THead (Flat Cast) x0 x1) (\lambda (t: T).(or (ex3_2 T T (\lambda 
31143 (u2: T).(\lambda (t3: T).(eq T t (THead (Flat Cast) u2 t3)))) (\lambda (u2: 
31144 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 
31145 t3)))) (pr2 c t1 t))) (or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
31146 T).(eq T (THead (Flat Cast) x0 x1) (THead (Flat Cast) u2 t3)))) (\lambda (u2: 
31147 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 
31148 t3)))) (pr2 c t1 (THead (Flat Cast) x0 x1)) (ex3_2_intro T T (\lambda (u2: 
31149 T).(\lambda (t3: T).(eq T (THead (Flat Cast) x0 x1) (THead (Flat Cast) u2 
31150 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31151 T).(\lambda (t3: T).(pr2 c t1 t3))) x0 x1 (refl_equal T (THead (Flat Cast) x0 
31152 x1)) (pr2_free c u1 x0 H9) (pr2_free c t1 x1 H10))) x H8))))))) H7)) (\lambda 
31153 (H7: (pr0 t1 x)).(or_intror (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq 
31154 T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
31155 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x) 
31156 (pr2_free c t1 x H7))) (pr0_gen_cast u1 t1 x H6))) t2 (sym_eq T t2 x H5))) t0 
31157 (sym_eq T t0 (THead (Flat Cast) u1 t1) H4))) c0 (sym_eq C c0 c H1) H2 H3 
31158 H0)))) | (pr2_delta c0 d u i H0 t0 t2 H1 t H2) \Rightarrow (\lambda (H3: (eq 
31159 C c0 c)).(\lambda (H4: (eq T t0 (THead (Flat Cast) u1 t1))).(\lambda (H5: (eq 
31160 T t x)).(eq_ind C c (\lambda (c1: C).((eq T t0 (THead (Flat Cast) u1 t1)) \to 
31161 ((eq T t x) \to ((getl i c1 (CHead d (Bind Abbr) u)) \to ((pr0 t0 t2) \to 
31162 ((subst0 i u t2 t) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
31163 x (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
31164 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x)))))))) 
31165 (\lambda (H6: (eq T t0 (THead (Flat Cast) u1 t1))).(eq_ind T (THead (Flat 
31166 Cast) u1 t1) (\lambda (t3: T).((eq T t x) \to ((getl i c (CHead d (Bind Abbr) 
31167 u)) \to ((pr0 t3 t2) \to ((subst0 i u t2 t) \to (or (ex3_2 T T (\lambda (u2: 
31168 T).(\lambda (t4: T).(eq T x (THead (Flat Cast) u2 t4)))) (\lambda (u2: 
31169 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t4: T).(pr2 c t1 
31170 t4)))) (pr2 c t1 x))))))) (\lambda (H7: (eq T t x)).(eq_ind T x (\lambda (t3: 
31171 T).((getl i c (CHead d (Bind Abbr) u)) \to ((pr0 (THead (Flat Cast) u1 t1) 
31172 t2) \to ((subst0 i u t2 t3) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t4: 
31173 T).(eq T x (THead (Flat Cast) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
31174 c u1 u2))) (\lambda (_: T).(\lambda (t4: T).(pr2 c t1 t4)))) (pr2 c t1 
31175 x)))))) (\lambda (H8: (getl i c (CHead d (Bind Abbr) u))).(\lambda (H9: (pr0 
31176 (THead (Flat Cast) u1 t1) t2)).(\lambda (H10: (subst0 i u t2 x)).(or_ind 
31177 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) u2 
31178 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: 
31179 T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 t2) (or (ex3_2 T T (\lambda (u2: 
31180 T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: 
31181 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 
31182 t3)))) (pr2 c t1 x)) (\lambda (H11: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
31183 T).(eq T t2 (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
31184 T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr0 t1 t2))))).(ex3_2_ind 
31185 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Cast) u2 t3)))) 
31186 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: 
31187 T).(pr0 t1 t3))) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
31188 (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
31189 (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x)) (\lambda (x0: 
31190 T).(\lambda (x1: T).(\lambda (H12: (eq T t2 (THead (Flat Cast) x0 
31191 x1))).(\lambda (H13: (pr0 u1 x0)).(\lambda (H14: (pr0 t1 x1)).(let H15 \def 
31192 (eq_ind T t2 (\lambda (t: T).(subst0 i u t x)) H10 (THead (Flat Cast) x0 x1) 
31193 H12) in (or3_ind (ex2 T (\lambda (u2: T).(eq T x (THead (Flat Cast) u2 x1))) 
31194 (\lambda (u2: T).(subst0 i u x0 u2))) (ex2 T (\lambda (t3: T).(eq T x (THead 
31195 (Flat Cast) x0 t3))) (\lambda (t3: T).(subst0 (s (Flat Cast) i) u x1 t3))) 
31196 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 
31197 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: 
31198 T).(\lambda (t3: T).(subst0 (s (Flat Cast) i) u x1 t3)))) (or (ex3_2 T T 
31199 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) 
31200 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
31201 (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x)) (\lambda (H16: (ex2 T (\lambda (u2: 
31202 T).(eq T x (THead (Flat Cast) u2 x1))) (\lambda (u2: T).(subst0 i u x0 
31203 u2)))).(ex2_ind T (\lambda (u2: T).(eq T x (THead (Flat Cast) u2 x1))) 
31204 (\lambda (u2: T).(subst0 i u x0 u2)) (or (ex3_2 T T (\lambda (u2: T).(\lambda 
31205 (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
31206 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (pr2 c 
31207 t1 x)) (\lambda (x2: T).(\lambda (H17: (eq T x (THead (Flat Cast) x2 
31208 x1))).(\lambda (H18: (subst0 i u x0 x2)).(or_introl (ex3_2 T T (\lambda (u2: 
31209 T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: 
31210 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 
31211 t3)))) (pr2 c t1 x) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
31212 x (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
31213 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3))) x2 x1 H17 (pr2_delta c 
31214 d u i H8 u1 x0 H13 x2 H18) (pr2_free c t1 x1 H14)))))) H16)) (\lambda (H16: 
31215 (ex2 T (\lambda (t2: T).(eq T x (THead (Flat Cast) x0 t2))) (\lambda (t2: 
31216 T).(subst0 (s (Flat Cast) i) u x1 t2)))).(ex2_ind T (\lambda (t3: T).(eq T x 
31217 (THead (Flat Cast) x0 t3))) (\lambda (t3: T).(subst0 (s (Flat Cast) i) u x1 
31218 t3)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat 
31219 Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31220 T).(\lambda (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x)) (\lambda (x2: T).(\lambda 
31221 (H17: (eq T x (THead (Flat Cast) x0 x2))).(\lambda (H18: (subst0 (s (Flat 
31222 Cast) i) u x1 x2)).(or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
31223 T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
31224 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x) 
31225 (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) 
31226 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31227 T).(\lambda (t3: T).(pr2 c t1 t3))) x0 x2 H17 (pr2_free c u1 x0 H13) 
31228 (pr2_delta c d u i H8 t1 x1 H14 x2 H18)))))) H16)) (\lambda (H16: (ex3_2 T T 
31229 (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Flat Cast) u2 t2)))) 
31230 (\lambda (u2: T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: 
31231 T).(\lambda (t2: T).(subst0 (s (Flat Cast) i) u x1 t2))))).(ex3_2_ind T T 
31232 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) 
31233 (\lambda (u2: T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: 
31234 T).(\lambda (t3: T).(subst0 (s (Flat Cast) i) u x1 t3))) (or (ex3_2 T T 
31235 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) 
31236 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
31237 (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x)) (\lambda (x2: T).(\lambda (x3: 
31238 T).(\lambda (H17: (eq T x (THead (Flat Cast) x2 x3))).(\lambda (H18: (subst0 
31239 i u x0 x2)).(\lambda (H19: (subst0 (s (Flat Cast) i) u x1 x3)).(or_introl 
31240 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 
31241 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31242 T).(\lambda (t3: T).(pr2 c t1 t3)))) (pr2 c t1 x) (ex3_2_intro T T (\lambda 
31243 (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: 
31244 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 
31245 t3))) x2 x3 H17 (pr2_delta c d u i H8 u1 x0 H13 x2 H18) (pr2_delta c d u i H8 
31246 t1 x1 H14 x3 H19)))))))) H16)) (subst0_gen_head (Flat Cast) u x0 x1 x i 
31247 H15)))))))) H11)) (\lambda (H11: (pr0 t1 t2)).(or_intror (ex3_2 T T (\lambda 
31248 (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Cast) u2 t3)))) (\lambda (u2: 
31249 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 
31250 t3)))) (pr2 c t1 x) (pr2_delta c d u i H8 t1 t2 H11 x H10))) (pr0_gen_cast u1 
31251 t1 t2 H9))))) t (sym_eq T t x H7))) t0 (sym_eq T t0 (THead (Flat Cast) u1 t1) 
31252 H6))) c0 (sym_eq C c0 c H3) H4 H5 H0 H1 H2))))]) in (H0 (refl_equal C c) 
31253 (refl_equal T (THead (Flat Cast) u1 t1)) (refl_equal T x))))))).
31254
31255 theorem pr2_gen_csort:
31256  \forall (t1: T).(\forall (t2: T).(\forall (n: nat).((pr2 (CSort n) t1 t2) 
31257 \to (pr0 t1 t2))))
31258 \def
31259  \lambda (t1: T).(\lambda (t2: T).(\lambda (n: nat).(\lambda (H: (pr2 (CSort 
31260 n) t1 t2)).(let H0 \def (match H return (\lambda (c: C).(\lambda (t: 
31261 T).(\lambda (t0: T).(\lambda (_: (pr2 c t t0)).((eq C c (CSort n)) \to ((eq T 
31262 t t1) \to ((eq T t0 t2) \to (pr0 t1 t2)))))))) with [(pr2_free c t0 t3 H0) 
31263 \Rightarrow (\lambda (H1: (eq C c (CSort n))).(\lambda (H2: (eq T t0 
31264 t1)).(\lambda (H3: (eq T t3 t2)).(eq_ind C (CSort n) (\lambda (_: C).((eq T 
31265 t0 t1) \to ((eq T t3 t2) \to ((pr0 t0 t3) \to (pr0 t1 t2))))) (\lambda (H4: 
31266 (eq T t0 t1)).(eq_ind T t1 (\lambda (t: T).((eq T t3 t2) \to ((pr0 t t3) \to 
31267 (pr0 t1 t2)))) (\lambda (H5: (eq T t3 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 
31268 t1 t) \to (pr0 t1 t2))) (\lambda (H6: (pr0 t1 t2)).H6) t3 (sym_eq T t3 t2 
31269 H5))) t0 (sym_eq T t0 t1 H4))) c (sym_eq C c (CSort n) H1) H2 H3 H0)))) | 
31270 (pr2_delta c d u i H0 t0 t3 H1 t H2) \Rightarrow (\lambda (H3: (eq C c (CSort 
31271 n))).(\lambda (H4: (eq T t0 t1)).(\lambda (H5: (eq T t t2)).(eq_ind C (CSort 
31272 n) (\lambda (c0: C).((eq T t0 t1) \to ((eq T t t2) \to ((getl i c0 (CHead d 
31273 (Bind Abbr) u)) \to ((pr0 t0 t3) \to ((subst0 i u t3 t) \to (pr0 t1 t2))))))) 
31274 (\lambda (H6: (eq T t0 t1)).(eq_ind T t1 (\lambda (t4: T).((eq T t t2) \to 
31275 ((getl i (CSort n) (CHead d (Bind Abbr) u)) \to ((pr0 t4 t3) \to ((subst0 i u 
31276 t3 t) \to (pr0 t1 t2)))))) (\lambda (H7: (eq T t t2)).(eq_ind T t2 (\lambda 
31277 (t4: T).((getl i (CSort n) (CHead d (Bind Abbr) u)) \to ((pr0 t1 t3) \to 
31278 ((subst0 i u t3 t4) \to (pr0 t1 t2))))) (\lambda (H8: (getl i (CSort n) 
31279 (CHead d (Bind Abbr) u))).(\lambda (_: (pr0 t1 t3)).(\lambda (_: (subst0 i u 
31280 t3 t2)).(getl_gen_sort n i (CHead d (Bind Abbr) u) H8 (pr0 t1 t2))))) t 
31281 (sym_eq T t t2 H7))) t0 (sym_eq T t0 t1 H6))) c (sym_eq C c (CSort n) H3) H4 
31282 H5 H0 H1 H2))))]) in (H0 (refl_equal C (CSort n)) (refl_equal T t1) 
31283 (refl_equal T t2)))))).
31284
31285 theorem pr2_gen_ctail:
31286  \forall (k: K).(\forall (c: C).(\forall (u: T).(\forall (t1: T).(\forall 
31287 (t2: T).((pr2 (CTail k u c) t1 t2) \to (or (pr2 c t1 t2) (ex3 T (\lambda (_: 
31288 T).(eq K k (Bind Abbr))) (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(subst0 
31289 (clen c) u t t2)))))))))
31290 \def
31291  \lambda (k: K).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda 
31292 (t2: T).(\lambda (H: (pr2 (CTail k u c) t1 t2)).(insert_eq C (CTail k u c) 
31293 (\lambda (c0: C).(pr2 c0 t1 t2)) (or (pr2 c t1 t2) (ex3 T (\lambda (_: T).(eq 
31294 K k (Bind Abbr))) (\lambda (t: T).(pr0 t1 t)) (\lambda (t: T).(subst0 (clen 
31295 c) u t t2)))) (\lambda (y: C).(\lambda (H0: (pr2 y t1 t2)).(pr2_ind (\lambda 
31296 (c0: C).(\lambda (t: T).(\lambda (t0: T).((eq C c0 (CTail k u c)) \to (or 
31297 (pr2 c t t0) (ex3 T (\lambda (_: T).(eq K k (Bind Abbr))) (\lambda (t3: 
31298 T).(pr0 t t3)) (\lambda (t3: T).(subst0 (clen c) u t3 t0)))))))) (\lambda 
31299 (c0: C).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H1: (pr0 t3 t4)).(\lambda 
31300 (_: (eq C c0 (CTail k u c))).(or_introl (pr2 c t3 t4) (ex3 T (\lambda (_: 
31301 T).(eq K k (Bind Abbr))) (\lambda (t: T).(pr0 t3 t)) (\lambda (t: T).(subst0 
31302 (clen c) u t t4))) (pr2_free c t3 t4 H1))))))) (\lambda (c0: C).(\lambda (d: 
31303 C).(\lambda (u0: T).(\lambda (i: nat).(\lambda (H1: (getl i c0 (CHead d (Bind 
31304 Abbr) u0))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H2: (pr0 t3 
31305 t4)).(\lambda (t: T).(\lambda (H3: (subst0 i u0 t4 t)).(\lambda (H4: (eq C c0 
31306 (CTail k u c))).(let H5 \def (eq_ind C c0 (\lambda (c: C).(getl i c (CHead d 
31307 (Bind Abbr) u0))) H1 (CTail k u c) H4) in (let H_x \def (getl_gen_tail k Abbr 
31308 u u0 d c i H5) in (let H6 \def H_x in (or_ind (ex2 C (\lambda (e: C).(eq C d 
31309 (CTail k u e))) (\lambda (e: C).(getl i c (CHead e (Bind Abbr) u0)))) (ex4 
31310 nat (\lambda (_: nat).(eq nat i (clen c))) (\lambda (_: nat).(eq K k (Bind 
31311 Abbr))) (\lambda (_: nat).(eq T u u0)) (\lambda (n: nat).(eq C d (CSort n)))) 
31312 (or (pr2 c t3 t) (ex3 T (\lambda (_: T).(eq K k (Bind Abbr))) (\lambda (t0: 
31313 T).(pr0 t3 t0)) (\lambda (t0: T).(subst0 (clen c) u t0 t)))) (\lambda (H7: 
31314 (ex2 C (\lambda (e: C).(eq C d (CTail k u e))) (\lambda (e: C).(getl i c 
31315 (CHead e (Bind Abbr) u0))))).(ex2_ind C (\lambda (e: C).(eq C d (CTail k u 
31316 e))) (\lambda (e: C).(getl i c (CHead e (Bind Abbr) u0))) (or (pr2 c t3 t) 
31317 (ex3 T (\lambda (_: T).(eq K k (Bind Abbr))) (\lambda (t0: T).(pr0 t3 t0)) 
31318 (\lambda (t0: T).(subst0 (clen c) u t0 t)))) (\lambda (x: C).(\lambda (_: (eq 
31319 C d (CTail k u x))).(\lambda (H9: (getl i c (CHead x (Bind Abbr) 
31320 u0))).(or_introl (pr2 c t3 t) (ex3 T (\lambda (_: T).(eq K k (Bind Abbr))) 
31321 (\lambda (t0: T).(pr0 t3 t0)) (\lambda (t0: T).(subst0 (clen c) u t0 t))) 
31322 (pr2_delta c x u0 i H9 t3 t4 H2 t H3))))) H7)) (\lambda (H7: (ex4 nat 
31323 (\lambda (_: nat).(eq nat i (clen c))) (\lambda (_: nat).(eq K k (Bind 
31324 Abbr))) (\lambda (_: nat).(eq T u u0)) (\lambda (n: nat).(eq C d (CSort 
31325 n))))).(ex4_ind nat (\lambda (_: nat).(eq nat i (clen c))) (\lambda (_: 
31326 nat).(eq K k (Bind Abbr))) (\lambda (_: nat).(eq T u u0)) (\lambda (n: 
31327 nat).(eq C d (CSort n))) (or (pr2 c t3 t) (ex3 T (\lambda (_: T).(eq K k 
31328 (Bind Abbr))) (\lambda (t0: T).(pr0 t3 t0)) (\lambda (t0: T).(subst0 (clen c) 
31329 u t0 t)))) (\lambda (x0: nat).(\lambda (H8: (eq nat i (clen c))).(\lambda 
31330 (H9: (eq K k (Bind Abbr))).(\lambda (H10: (eq T u u0)).(\lambda (_: (eq C d 
31331 (CSort x0))).(let H12 \def (eq_ind nat i (\lambda (n: nat).(subst0 n u0 t4 
31332 t)) H3 (clen c) H8) in (let H13 \def (eq_ind_r T u0 (\lambda (t0: T).(subst0 
31333 (clen c) t0 t4 t)) H12 u H10) in (eq_ind_r K (Bind Abbr) (\lambda (k0: K).(or 
31334 (pr2 c t3 t) (ex3 T (\lambda (_: T).(eq K k0 (Bind Abbr))) (\lambda (t0: 
31335 T).(pr0 t3 t0)) (\lambda (t0: T).(subst0 (clen c) u t0 t))))) (or_intror (pr2 
31336 c t3 t) (ex3 T (\lambda (_: T).(eq K (Bind Abbr) (Bind Abbr))) (\lambda (t0: 
31337 T).(pr0 t3 t0)) (\lambda (t0: T).(subst0 (clen c) u t0 t))) (ex3_intro T 
31338 (\lambda (_: T).(eq K (Bind Abbr) (Bind Abbr))) (\lambda (t0: T).(pr0 t3 t0)) 
31339 (\lambda (t0: T).(subst0 (clen c) u t0 t)) t4 (refl_equal K (Bind Abbr)) H2 
31340 H13)) k H9)))))))) H7)) H6))))))))))))))) y t1 t2 H0))) H)))))).
31341
31342 theorem pr2_thin_dx:
31343  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall 
31344 (u: T).(\forall (f: F).(pr2 c (THead (Flat f) u t1) (THead (Flat f) u 
31345 t2)))))))
31346 \def
31347  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t1 
31348 t2)).(\lambda (u: T).(\lambda (f: F).(pr2_ind (\lambda (c0: C).(\lambda (t: 
31349 T).(\lambda (t0: T).(pr2 c0 (THead (Flat f) u t) (THead (Flat f) u t0))))) 
31350 (\lambda (c0: C).(\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr0 t0 
31351 t3)).(pr2_free c0 (THead (Flat f) u t0) (THead (Flat f) u t3) (pr0_comp u u 
31352 (pr0_refl u) t0 t3 H0 (Flat f))))))) (\lambda (c0: C).(\lambda (d: 
31353 C).(\lambda (u0: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind 
31354 Abbr) u0))).(\lambda (t0: T).(\lambda (t3: T).(\lambda (H1: (pr0 t0 
31355 t3)).(\lambda (t: T).(\lambda (H2: (subst0 i u0 t3 t)).(pr2_delta c0 d u0 i 
31356 H0 (THead (Flat f) u t0) (THead (Flat f) u t3) (pr0_comp u u (pr0_refl u) t0 
31357 t3 H1 (Flat f)) (THead (Flat f) u t) (subst0_snd (Flat f) u0 t t3 i H2 
31358 u)))))))))))) c t1 t2 H)))))).
31359
31360 theorem pr2_head_1:
31361  \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pr2 c u1 u2) \to (\forall 
31362 (k: K).(\forall (t: T).(pr2 c (THead k u1 t) (THead k u2 t)))))))
31363 \def
31364  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr2 c u1 
31365 u2)).(\lambda (k: K).(\lambda (t: T).(pr2_ind (\lambda (c0: C).(\lambda (t0: 
31366 T).(\lambda (t1: T).(pr2 c0 (THead k t0 t) (THead k t1 t))))) (\lambda (c0: 
31367 C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pr0 t1 t2)).(pr2_free c0 
31368 (THead k t1 t) (THead k t2 t) (pr0_comp t1 t2 H0 t t (pr0_refl t) k)))))) 
31369 (\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
31370 (H0: (getl i c0 (CHead d (Bind Abbr) u))).(\lambda (t1: T).(\lambda (t2: 
31371 T).(\lambda (H1: (pr0 t1 t2)).(\lambda (t0: T).(\lambda (H2: (subst0 i u t2 
31372 t0)).(pr2_delta c0 d u i H0 (THead k t1 t) (THead k t2 t) (pr0_comp t1 t2 H1 
31373 t t (pr0_refl t) k) (THead k t0 t) (subst0_fst u t0 t2 i H2 t k)))))))))))) c 
31374 u1 u2 H)))))).
31375
31376 theorem pr2_head_2:
31377  \forall (c: C).(\forall (u: T).(\forall (t1: T).(\forall (t2: T).(\forall 
31378 (k: K).((pr2 (CHead c k u) t1 t2) \to (pr2 c (THead k u t1) (THead k u 
31379 t2)))))))
31380 \def
31381  \lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
31382 (k: K).(K_ind (\lambda (k0: K).((pr2 (CHead c k0 u) t1 t2) \to (pr2 c (THead 
31383 k0 u t1) (THead k0 u t2)))) (\lambda (b: B).(\lambda (H: (pr2 (CHead c (Bind 
31384 b) u) t1 t2)).(let H0 \def (match H return (\lambda (c0: C).(\lambda (t: 
31385 T).(\lambda (t0: T).(\lambda (_: (pr2 c0 t t0)).((eq C c0 (CHead c (Bind b) 
31386 u)) \to ((eq T t t1) \to ((eq T t0 t2) \to (pr2 c (THead (Bind b) u t1) 
31387 (THead (Bind b) u t2))))))))) with [(pr2_free c0 t0 t3 H0) \Rightarrow 
31388 (\lambda (H1: (eq C c0 (CHead c (Bind b) u))).(\lambda (H2: (eq T t0 
31389 t1)).(\lambda (H3: (eq T t3 t2)).(eq_ind C (CHead c (Bind b) u) (\lambda (_: 
31390 C).((eq T t0 t1) \to ((eq T t3 t2) \to ((pr0 t0 t3) \to (pr2 c (THead (Bind 
31391 b) u t1) (THead (Bind b) u t2)))))) (\lambda (H4: (eq T t0 t1)).(eq_ind T t1 
31392 (\lambda (t: T).((eq T t3 t2) \to ((pr0 t t3) \to (pr2 c (THead (Bind b) u 
31393 t1) (THead (Bind b) u t2))))) (\lambda (H5: (eq T t3 t2)).(eq_ind T t2 
31394 (\lambda (t: T).((pr0 t1 t) \to (pr2 c (THead (Bind b) u t1) (THead (Bind b) 
31395 u t2)))) (\lambda (H6: (pr0 t1 t2)).(pr2_free c (THead (Bind b) u t1) (THead 
31396 (Bind b) u t2) (pr0_comp u u (pr0_refl u) t1 t2 H6 (Bind b)))) t3 (sym_eq T 
31397 t3 t2 H5))) t0 (sym_eq T t0 t1 H4))) c0 (sym_eq C c0 (CHead c (Bind b) u) H1) 
31398 H2 H3 H0)))) | (pr2_delta c0 d u0 i H0 t0 t3 H1 t H2) \Rightarrow (\lambda 
31399 (H3: (eq C c0 (CHead c (Bind b) u))).(\lambda (H4: (eq T t0 t1)).(\lambda 
31400 (H5: (eq T t t2)).(eq_ind C (CHead c (Bind b) u) (\lambda (c1: C).((eq T t0 
31401 t1) \to ((eq T t t2) \to ((getl i c1 (CHead d (Bind Abbr) u0)) \to ((pr0 t0 
31402 t3) \to ((subst0 i u0 t3 t) \to (pr2 c (THead (Bind b) u t1) (THead (Bind b) 
31403 u t2)))))))) (\lambda (H6: (eq T t0 t1)).(eq_ind T t1 (\lambda (t4: T).((eq T 
31404 t t2) \to ((getl i (CHead c (Bind b) u) (CHead d (Bind Abbr) u0)) \to ((pr0 
31405 t4 t3) \to ((subst0 i u0 t3 t) \to (pr2 c (THead (Bind b) u t1) (THead (Bind 
31406 b) u t2))))))) (\lambda (H7: (eq T t t2)).(eq_ind T t2 (\lambda (t4: 
31407 T).((getl i (CHead c (Bind b) u) (CHead d (Bind Abbr) u0)) \to ((pr0 t1 t3) 
31408 \to ((subst0 i u0 t3 t4) \to (pr2 c (THead (Bind b) u t1) (THead (Bind b) u 
31409 t2)))))) (\lambda (H8: (getl i (CHead c (Bind b) u) (CHead d (Bind Abbr) 
31410 u0))).(\lambda (H9: (pr0 t1 t3)).(\lambda (H10: (subst0 i u0 t3 t2)).((match 
31411 i return (\lambda (n: nat).((getl n (CHead c (Bind b) u) (CHead d (Bind Abbr) 
31412 u0)) \to ((subst0 n u0 t3 t2) \to (pr2 c (THead (Bind b) u t1) (THead (Bind 
31413 b) u t2))))) with [O \Rightarrow (\lambda (H11: (getl O (CHead c (Bind b) u) 
31414 (CHead d (Bind Abbr) u0))).(\lambda (H12: (subst0 O u0 t3 t2)).(let H \def 
31415 (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort 
31416 _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind Abbr) u0) 
31417 (CHead c (Bind b) u) (clear_gen_bind b c (CHead d (Bind Abbr) u0) u 
31418 (getl_gen_O (CHead c (Bind b) u) (CHead d (Bind Abbr) u0) H11))) in ((let H13 
31419 \def (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) with 
31420 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return 
31421 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
31422 Abbr])])) (CHead d (Bind Abbr) u0) (CHead c (Bind b) u) (clear_gen_bind b c 
31423 (CHead d (Bind Abbr) u0) u (getl_gen_O (CHead c (Bind b) u) (CHead d (Bind 
31424 Abbr) u0) H11))) in ((let H14 \def (f_equal C T (\lambda (e: C).(match e 
31425 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) 
31426 \Rightarrow t])) (CHead d (Bind Abbr) u0) (CHead c (Bind b) u) 
31427 (clear_gen_bind b c (CHead d (Bind Abbr) u0) u (getl_gen_O (CHead c (Bind b) 
31428 u) (CHead d (Bind Abbr) u0) H11))) in (\lambda (H15: (eq B Abbr b)).(\lambda 
31429 (_: (eq C d c)).(let H17 \def (eq_ind T u0 (\lambda (t: T).(subst0 O t t3 
31430 t2)) H12 u H14) in (eq_ind B Abbr (\lambda (b: B).(pr2 c (THead (Bind b) u 
31431 t1) (THead (Bind b) u t2))) (pr2_free c (THead (Bind Abbr) u t1) (THead (Bind 
31432 Abbr) u t2) (pr0_delta u u (pr0_refl u) t1 t3 H9 t2 H17)) b H15))))) H13)) 
31433 H)))) | (S n) \Rightarrow (\lambda (H11: (getl (S n) (CHead c (Bind b) u) 
31434 (CHead d (Bind Abbr) u0))).(\lambda (H12: (subst0 (S n) u0 t3 t2)).(pr2_delta 
31435 c d u0 (r (Bind b) n) (getl_gen_S (Bind b) c (CHead d (Bind Abbr) u0) u n 
31436 H11) (THead (Bind b) u t1) (THead (Bind b) u t3) (pr0_comp u u (pr0_refl u) 
31437 t1 t3 H9 (Bind b)) (THead (Bind b) u t2) (subst0_snd (Bind b) u0 t2 t3 (r 
31438 (Bind b) n) H12 u))))]) H8 H10)))) t (sym_eq T t t2 H7))) t0 (sym_eq T t0 t1 
31439 H6))) c0 (sym_eq C c0 (CHead c (Bind b) u) H3) H4 H5 H0 H1 H2))))]) in (H0 
31440 (refl_equal C (CHead c (Bind b) u)) (refl_equal T t1) (refl_equal T t2))))) 
31441 (\lambda (f: F).(\lambda (H: (pr2 (CHead c (Flat f) u) t1 t2)).(let H0 \def 
31442 (match H return (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\lambda 
31443 (_: (pr2 c0 t t0)).((eq C c0 (CHead c (Flat f) u)) \to ((eq T t t1) \to ((eq 
31444 T t0 t2) \to (pr2 c (THead (Flat f) u t1) (THead (Flat f) u t2))))))))) with 
31445 [(pr2_free c0 t0 t3 H0) \Rightarrow (\lambda (H1: (eq C c0 (CHead c (Flat f) 
31446 u))).(\lambda (H2: (eq T t0 t1)).(\lambda (H3: (eq T t3 t2)).(eq_ind C (CHead 
31447 c (Flat f) u) (\lambda (_: C).((eq T t0 t1) \to ((eq T t3 t2) \to ((pr0 t0 
31448 t3) \to (pr2 c (THead (Flat f) u t1) (THead (Flat f) u t2)))))) (\lambda (H4: 
31449 (eq T t0 t1)).(eq_ind T t1 (\lambda (t: T).((eq T t3 t2) \to ((pr0 t t3) \to 
31450 (pr2 c (THead (Flat f) u t1) (THead (Flat f) u t2))))) (\lambda (H5: (eq T t3 
31451 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 t1 t) \to (pr2 c (THead (Flat f) u 
31452 t1) (THead (Flat f) u t2)))) (\lambda (H6: (pr0 t1 t2)).(pr2_free c (THead 
31453 (Flat f) u t1) (THead (Flat f) u t2) (pr0_comp u u (pr0_refl u) t1 t2 H6 
31454 (Flat f)))) t3 (sym_eq T t3 t2 H5))) t0 (sym_eq T t0 t1 H4))) c0 (sym_eq C c0 
31455 (CHead c (Flat f) u) H1) H2 H3 H0)))) | (pr2_delta c0 d u0 i H0 t0 t3 H1 t 
31456 H2) \Rightarrow (\lambda (H3: (eq C c0 (CHead c (Flat f) u))).(\lambda (H4: 
31457 (eq T t0 t1)).(\lambda (H5: (eq T t t2)).(eq_ind C (CHead c (Flat f) u) 
31458 (\lambda (c1: C).((eq T t0 t1) \to ((eq T t t2) \to ((getl i c1 (CHead d 
31459 (Bind Abbr) u0)) \to ((pr0 t0 t3) \to ((subst0 i u0 t3 t) \to (pr2 c (THead 
31460 (Flat f) u t1) (THead (Flat f) u t2)))))))) (\lambda (H6: (eq T t0 
31461 t1)).(eq_ind T t1 (\lambda (t4: T).((eq T t t2) \to ((getl i (CHead c (Flat 
31462 f) u) (CHead d (Bind Abbr) u0)) \to ((pr0 t4 t3) \to ((subst0 i u0 t3 t) \to 
31463 (pr2 c (THead (Flat f) u t1) (THead (Flat f) u t2))))))) (\lambda (H7: (eq T 
31464 t t2)).(eq_ind T t2 (\lambda (t4: T).((getl i (CHead c (Flat f) u) (CHead d 
31465 (Bind Abbr) u0)) \to ((pr0 t1 t3) \to ((subst0 i u0 t3 t4) \to (pr2 c (THead 
31466 (Flat f) u t1) (THead (Flat f) u t2)))))) (\lambda (H8: (getl i (CHead c 
31467 (Flat f) u) (CHead d (Bind Abbr) u0))).(\lambda (H9: (pr0 t1 t3)).(\lambda 
31468 (H10: (subst0 i u0 t3 t2)).((match i return (\lambda (n: nat).((getl n (CHead 
31469 c (Flat f) u) (CHead d (Bind Abbr) u0)) \to ((subst0 n u0 t3 t2) \to (pr2 c 
31470 (THead (Flat f) u t1) (THead (Flat f) u t2))))) with [O \Rightarrow (\lambda 
31471 (H11: (getl O (CHead c (Flat f) u) (CHead d (Bind Abbr) u0))).(\lambda (H12: 
31472 (subst0 O u0 t3 t2)).(pr2_delta c d u0 O (getl_intro O c (CHead d (Bind Abbr) 
31473 u0) c (drop_refl c) (clear_gen_flat f c (CHead d (Bind Abbr) u0) u 
31474 (getl_gen_O (CHead c (Flat f) u) (CHead d (Bind Abbr) u0) H11))) (THead (Flat 
31475 f) u t1) (THead (Flat f) u t3) (pr0_comp u u (pr0_refl u) t1 t3 H9 (Flat f)) 
31476 (THead (Flat f) u t2) (subst0_snd (Flat f) u0 t2 t3 O H12 u)))) | (S n) 
31477 \Rightarrow (\lambda (H11: (getl (S n) (CHead c (Flat f) u) (CHead d (Bind 
31478 Abbr) u0))).(\lambda (H12: (subst0 (S n) u0 t3 t2)).(pr2_delta c d u0 (r 
31479 (Flat f) n) (getl_gen_S (Flat f) c (CHead d (Bind Abbr) u0) u n H11) (THead 
31480 (Flat f) u t1) (THead (Flat f) u t3) (pr0_comp u u (pr0_refl u) t1 t3 H9 
31481 (Flat f)) (THead (Flat f) u t2) (subst0_snd (Flat f) u0 t2 t3 (r (Flat f) n) 
31482 H12 u))))]) H8 H10)))) t (sym_eq T t t2 H7))) t0 (sym_eq T t0 t1 H6))) c0 
31483 (sym_eq C c0 (CHead c (Flat f) u) H3) H4 H5 H0 H1 H2))))]) in (H0 (refl_equal 
31484 C (CHead c (Flat f) u)) (refl_equal T t1) (refl_equal T t2))))) k))))).
31485
31486 theorem clear_pr2_trans:
31487  \forall (c2: C).(\forall (t1: T).(\forall (t2: T).((pr2 c2 t1 t2) \to 
31488 (\forall (c1: C).((clear c1 c2) \to (pr2 c1 t1 t2))))))
31489 \def
31490  \lambda (c2: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c2 t1 
31491 t2)).(\lambda (c1: C).(\lambda (H0: (clear c1 c2)).(let H1 \def (match H 
31492 return (\lambda (c: C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr2 c t 
31493 t0)).((eq C c c2) \to ((eq T t t1) \to ((eq T t0 t2) \to (pr2 c1 t1 
31494 t2)))))))) with [(pr2_free c t0 t3 H1) \Rightarrow (\lambda (H2: (eq C c 
31495 c2)).(\lambda (H3: (eq T t0 t1)).(\lambda (H4: (eq T t3 t2)).(eq_ind C c2 
31496 (\lambda (_: C).((eq T t0 t1) \to ((eq T t3 t2) \to ((pr0 t0 t3) \to (pr2 c1 
31497 t1 t2))))) (\lambda (H5: (eq T t0 t1)).(eq_ind T t1 (\lambda (t: T).((eq T t3 
31498 t2) \to ((pr0 t t3) \to (pr2 c1 t1 t2)))) (\lambda (H6: (eq T t3 t2)).(eq_ind 
31499 T t2 (\lambda (t: T).((pr0 t1 t) \to (pr2 c1 t1 t2))) (\lambda (H7: (pr0 t1 
31500 t2)).(pr2_free c1 t1 t2 H7)) t3 (sym_eq T t3 t2 H6))) t0 (sym_eq T t0 t1 
31501 H5))) c (sym_eq C c c2 H2) H3 H4 H1)))) | (pr2_delta c d u i H1 t0 t3 H2 t 
31502 H3) \Rightarrow (\lambda (H4: (eq C c c2)).(\lambda (H5: (eq T t0 
31503 t1)).(\lambda (H6: (eq T t t2)).(eq_ind C c2 (\lambda (c0: C).((eq T t0 t1) 
31504 \to ((eq T t t2) \to ((getl i c0 (CHead d (Bind Abbr) u)) \to ((pr0 t0 t3) 
31505 \to ((subst0 i u t3 t) \to (pr2 c1 t1 t2))))))) (\lambda (H7: (eq T t0 
31506 t1)).(eq_ind T t1 (\lambda (t4: T).((eq T t t2) \to ((getl i c2 (CHead d 
31507 (Bind Abbr) u)) \to ((pr0 t4 t3) \to ((subst0 i u t3 t) \to (pr2 c1 t1 
31508 t2)))))) (\lambda (H8: (eq T t t2)).(eq_ind T t2 (\lambda (t4: T).((getl i c2 
31509 (CHead d (Bind Abbr) u)) \to ((pr0 t1 t3) \to ((subst0 i u t3 t4) \to (pr2 c1 
31510 t1 t2))))) (\lambda (H9: (getl i c2 (CHead d (Bind Abbr) u))).(\lambda (H10: 
31511 (pr0 t1 t3)).(\lambda (H11: (subst0 i u t3 t2)).(pr2_delta c1 d u i 
31512 (clear_getl_trans i c2 (CHead d (Bind Abbr) u) H9 c1 H0) t1 t3 H10 t2 H11)))) 
31513 t (sym_eq T t t2 H8))) t0 (sym_eq T t0 t1 H7))) c (sym_eq C c c2 H4) H5 H6 H1 
31514 H2 H3))))]) in (H1 (refl_equal C c2) (refl_equal T t1) (refl_equal T 
31515 t2)))))))).
31516
31517 theorem pr2_cflat:
31518  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall 
31519 (f: F).(\forall (v: T).(pr2 (CHead c (Flat f) v) t1 t2))))))
31520 \def
31521  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t1 
31522 t2)).(pr2_ind (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\forall (f: 
31523 F).(\forall (v: T).(pr2 (CHead c0 (Flat f) v) t t0)))))) (\lambda (c0: 
31524 C).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H0: (pr0 t3 t4)).(\lambda (f: 
31525 F).(\lambda (v: T).(pr2_free (CHead c0 (Flat f) v) t3 t4 H0))))))) (\lambda 
31526 (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl 
31527 i c0 (CHead d (Bind Abbr) u))).(\lambda (t3: T).(\lambda (t4: T).(\lambda 
31528 (H1: (pr0 t3 t4)).(\lambda (t: T).(\lambda (H2: (subst0 i u t4 t)).(\lambda 
31529 (f: F).(\lambda (v: T).(pr2_delta (CHead c0 (Flat f) v) d u i (getl_flat c0 
31530 (CHead d (Bind Abbr) u) i H0 f v) t3 t4 H1 t H2))))))))))))) c t1 t2 H)))).
31531
31532 theorem pr2_ctail:
31533  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall 
31534 (k: K).(\forall (u: T).(pr2 (CTail k u c) t1 t2))))))
31535 \def
31536  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t1 
31537 t2)).(\lambda (k: K).(\lambda (u: T).(pr2_ind (\lambda (c0: C).(\lambda (t: 
31538 T).(\lambda (t0: T).(pr2 (CTail k u c0) t t0)))) (\lambda (c0: C).(\lambda 
31539 (t3: T).(\lambda (t4: T).(\lambda (H0: (pr0 t3 t4)).(pr2_free (CTail k u c0) 
31540 t3 t4 H0))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (i: 
31541 nat).(\lambda (H0: (getl i c0 (CHead d (Bind Abbr) u0))).(\lambda (t3: 
31542 T).(\lambda (t4: T).(\lambda (H1: (pr0 t3 t4)).(\lambda (t: T).(\lambda (H2: 
31543 (subst0 i u0 t4 t)).(pr2_delta (CTail k u c0) (CTail k u d) u0 i (getl_ctail 
31544 Abbr c0 d u0 i H0 k u) t3 t4 H1 t H2))))))))))) c t1 t2 H)))))).
31545
31546 theorem pr2_gen_cbind:
31547  \forall (b: B).(\forall (c: C).(\forall (v: T).(\forall (t1: T).(\forall 
31548 (t2: T).((pr2 (CHead c (Bind b) v) t1 t2) \to (pr2 c (THead (Bind b) v t1) 
31549 (THead (Bind b) v t2)))))))
31550 \def
31551  \lambda (b: B).(\lambda (c: C).(\lambda (v: T).(\lambda (t1: T).(\lambda 
31552 (t2: T).(\lambda (H: (pr2 (CHead c (Bind b) v) t1 t2)).(let H0 \def (match H 
31553 return (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr2 c0 
31554 t t0)).((eq C c0 (CHead c (Bind b) v)) \to ((eq T t t1) \to ((eq T t0 t2) \to 
31555 (pr2 c (THead (Bind b) v t1) (THead (Bind b) v t2))))))))) with [(pr2_free c0 
31556 t0 t3 H0) \Rightarrow (\lambda (H1: (eq C c0 (CHead c (Bind b) v))).(\lambda 
31557 (H2: (eq T t0 t1)).(\lambda (H3: (eq T t3 t2)).(eq_ind C (CHead c (Bind b) v) 
31558 (\lambda (_: C).((eq T t0 t1) \to ((eq T t3 t2) \to ((pr0 t0 t3) \to (pr2 c 
31559 (THead (Bind b) v t1) (THead (Bind b) v t2)))))) (\lambda (H4: (eq T t0 
31560 t1)).(eq_ind T t1 (\lambda (t: T).((eq T t3 t2) \to ((pr0 t t3) \to (pr2 c 
31561 (THead (Bind b) v t1) (THead (Bind b) v t2))))) (\lambda (H5: (eq T t3 
31562 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 t1 t) \to (pr2 c (THead (Bind b) v 
31563 t1) (THead (Bind b) v t2)))) (\lambda (H6: (pr0 t1 t2)).(pr2_free c (THead 
31564 (Bind b) v t1) (THead (Bind b) v t2) (pr0_comp v v (pr0_refl v) t1 t2 H6 
31565 (Bind b)))) t3 (sym_eq T t3 t2 H5))) t0 (sym_eq T t0 t1 H4))) c0 (sym_eq C c0 
31566 (CHead c (Bind b) v) H1) H2 H3 H0)))) | (pr2_delta c0 d u i H0 t0 t3 H1 t H2) 
31567 \Rightarrow (\lambda (H3: (eq C c0 (CHead c (Bind b) v))).(\lambda (H4: (eq T 
31568 t0 t1)).(\lambda (H5: (eq T t t2)).(eq_ind C (CHead c (Bind b) v) (\lambda 
31569 (c1: C).((eq T t0 t1) \to ((eq T t t2) \to ((getl i c1 (CHead d (Bind Abbr) 
31570 u)) \to ((pr0 t0 t3) \to ((subst0 i u t3 t) \to (pr2 c (THead (Bind b) v t1) 
31571 (THead (Bind b) v t2)))))))) (\lambda (H6: (eq T t0 t1)).(eq_ind T t1 
31572 (\lambda (t4: T).((eq T t t2) \to ((getl i (CHead c (Bind b) v) (CHead d 
31573 (Bind Abbr) u)) \to ((pr0 t4 t3) \to ((subst0 i u t3 t) \to (pr2 c (THead 
31574 (Bind b) v t1) (THead (Bind b) v t2))))))) (\lambda (H7: (eq T t t2)).(eq_ind 
31575 T t2 (\lambda (t4: T).((getl i (CHead c (Bind b) v) (CHead d (Bind Abbr) u)) 
31576 \to ((pr0 t1 t3) \to ((subst0 i u t3 t4) \to (pr2 c (THead (Bind b) v t1) 
31577 (THead (Bind b) v t2)))))) (\lambda (H8: (getl i (CHead c (Bind b) v) (CHead 
31578 d (Bind Abbr) u))).(\lambda (H9: (pr0 t1 t3)).(\lambda (H10: (subst0 i u t3 
31579 t2)).(let H_x \def (getl_gen_bind b c (CHead d (Bind Abbr) u) v i H8) in (let 
31580 H \def H_x in (or_ind (land (eq nat i O) (eq C (CHead d (Bind Abbr) u) (CHead 
31581 c (Bind b) v))) (ex2 nat (\lambda (j: nat).(eq nat i (S j))) (\lambda (j: 
31582 nat).(getl j c (CHead d (Bind Abbr) u)))) (pr2 c (THead (Bind b) v t1) (THead 
31583 (Bind b) v t2)) (\lambda (H11: (land (eq nat i O) (eq C (CHead d (Bind Abbr) 
31584 u) (CHead c (Bind b) v)))).(and_ind (eq nat i O) (eq C (CHead d (Bind Abbr) 
31585 u) (CHead c (Bind b) v)) (pr2 c (THead (Bind b) v t1) (THead (Bind b) v t2)) 
31586 (\lambda (H12: (eq nat i O)).(\lambda (H13: (eq C (CHead d (Bind Abbr) u) 
31587 (CHead c (Bind b) v))).(let H14 \def (f_equal C C (\lambda (e: C).(match e 
31588 return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) 
31589 \Rightarrow c])) (CHead d (Bind Abbr) u) (CHead c (Bind b) v) H13) in ((let 
31590 H15 \def (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) with 
31591 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return 
31592 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
31593 Abbr])])) (CHead d (Bind Abbr) u) (CHead c (Bind b) v) H13) in ((let H16 \def 
31594 (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort 
31595 _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind Abbr) u) 
31596 (CHead c (Bind b) v) H13) in (\lambda (H17: (eq B Abbr b)).(\lambda (_: (eq C 
31597 d c)).(let H19 \def (eq_ind nat i (\lambda (n: nat).(subst0 n u t3 t2)) H10 O 
31598 H12) in (let H20 \def (eq_ind T u (\lambda (t: T).(subst0 O t t3 t2)) H19 v 
31599 H16) in (eq_ind B Abbr (\lambda (b: B).(pr2 c (THead (Bind b) v t1) (THead 
31600 (Bind b) v t2))) (pr2_free c (THead (Bind Abbr) v t1) (THead (Bind Abbr) v 
31601 t2) (pr0_delta v v (pr0_refl v) t1 t3 H9 t2 H20)) b H17)))))) H15)) H14)))) 
31602 H11)) (\lambda (H11: (ex2 nat (\lambda (j: nat).(eq nat i (S j))) (\lambda 
31603 (j: nat).(getl j c (CHead d (Bind Abbr) u))))).(ex2_ind nat (\lambda (j: 
31604 nat).(eq nat i (S j))) (\lambda (j: nat).(getl j c (CHead d (Bind Abbr) u))) 
31605 (pr2 c (THead (Bind b) v t1) (THead (Bind b) v t2)) (\lambda (x: 
31606 nat).(\lambda (H12: (eq nat i (S x))).(\lambda (H13: (getl x c (CHead d (Bind 
31607 Abbr) u))).(let H14 \def (f_equal nat nat (\lambda (e: nat).e) i (S x) H12) 
31608 in (let H15 \def (eq_ind nat i (\lambda (n: nat).(subst0 n u t3 t2)) H10 (S 
31609 x) H14) in (pr2_head_2 c v t1 t2 (Bind b) (pr2_delta (CHead c (Bind b) v) d u 
31610 (S x) (getl_clear_bind b (CHead c (Bind b) v) c v (clear_bind b c v) (CHead d 
31611 (Bind Abbr) u) x H13) t1 t3 H9 t2 H15))))))) H11)) H)))))) t (sym_eq T t t2 
31612 H7))) t0 (sym_eq T t0 t1 H6))) c0 (sym_eq C c0 (CHead c (Bind b) v) H3) H4 H5 
31613 H0 H1 H2))))]) in (H0 (refl_equal C (CHead c (Bind b) v)) (refl_equal T t1) 
31614 (refl_equal T t2)))))))).
31615
31616 theorem pr2_gen_cflat:
31617  \forall (f: F).(\forall (c: C).(\forall (v: T).(\forall (t1: T).(\forall 
31618 (t2: T).((pr2 (CHead c (Flat f) v) t1 t2) \to (pr2 c t1 t2))))))
31619 \def
31620  \lambda (f: F).(\lambda (c: C).(\lambda (v: T).(\lambda (t1: T).(\lambda 
31621 (t2: T).(\lambda (H: (pr2 (CHead c (Flat f) v) t1 t2)).(let H0 \def (match H 
31622 return (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr2 c0 
31623 t t0)).((eq C c0 (CHead c (Flat f) v)) \to ((eq T t t1) \to ((eq T t0 t2) \to 
31624 (pr2 c t1 t2)))))))) with [(pr2_free c0 t0 t3 H0) \Rightarrow (\lambda (H1: 
31625 (eq C c0 (CHead c (Flat f) v))).(\lambda (H2: (eq T t0 t1)).(\lambda (H3: (eq 
31626 T t3 t2)).(eq_ind C (CHead c (Flat f) v) (\lambda (_: C).((eq T t0 t1) \to 
31627 ((eq T t3 t2) \to ((pr0 t0 t3) \to (pr2 c t1 t2))))) (\lambda (H4: (eq T t0 
31628 t1)).(eq_ind T t1 (\lambda (t: T).((eq T t3 t2) \to ((pr0 t t3) \to (pr2 c t1 
31629 t2)))) (\lambda (H5: (eq T t3 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 t1 t) 
31630 \to (pr2 c t1 t2))) (\lambda (H6: (pr0 t1 t2)).(pr2_free c t1 t2 H6)) t3 
31631 (sym_eq T t3 t2 H5))) t0 (sym_eq T t0 t1 H4))) c0 (sym_eq C c0 (CHead c (Flat 
31632 f) v) H1) H2 H3 H0)))) | (pr2_delta c0 d u i H0 t0 t3 H1 t H2) \Rightarrow 
31633 (\lambda (H3: (eq C c0 (CHead c (Flat f) v))).(\lambda (H4: (eq T t0 
31634 t1)).(\lambda (H5: (eq T t t2)).(eq_ind C (CHead c (Flat f) v) (\lambda (c1: 
31635 C).((eq T t0 t1) \to ((eq T t t2) \to ((getl i c1 (CHead d (Bind Abbr) u)) 
31636 \to ((pr0 t0 t3) \to ((subst0 i u t3 t) \to (pr2 c t1 t2))))))) (\lambda (H6: 
31637 (eq T t0 t1)).(eq_ind T t1 (\lambda (t4: T).((eq T t t2) \to ((getl i (CHead 
31638 c (Flat f) v) (CHead d (Bind Abbr) u)) \to ((pr0 t4 t3) \to ((subst0 i u t3 
31639 t) \to (pr2 c t1 t2)))))) (\lambda (H7: (eq T t t2)).(eq_ind T t2 (\lambda 
31640 (t4: T).((getl i (CHead c (Flat f) v) (CHead d (Bind Abbr) u)) \to ((pr0 t1 
31641 t3) \to ((subst0 i u t3 t4) \to (pr2 c t1 t2))))) (\lambda (H8: (getl i 
31642 (CHead c (Flat f) v) (CHead d (Bind Abbr) u))).(\lambda (H9: (pr0 t1 
31643 t3)).(\lambda (H10: (subst0 i u t3 t2)).(let H_y \def (getl_gen_flat f c 
31644 (CHead d (Bind Abbr) u) v i H8) in (pr2_delta c d u i H_y t1 t3 H9 t2 
31645 H10))))) t (sym_eq T t t2 H7))) t0 (sym_eq T t0 t1 H6))) c0 (sym_eq C c0 
31646 (CHead c (Flat f) v) H3) H4 H5 H0 H1 H2))))]) in (H0 (refl_equal C (CHead c 
31647 (Flat f) v)) (refl_equal T t1) (refl_equal T t2)))))))).
31648
31649 theorem pr2_lift:
31650  \forall (c: C).(\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h 
31651 d c e) \to (\forall (t1: T).(\forall (t2: T).((pr2 e t1 t2) \to (pr2 c (lift 
31652 h d t1) (lift h d t2)))))))))
31653 \def
31654  \lambda (c: C).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
31655 (H: (drop h d c e)).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pr2 e t1 
31656 t2)).(let H1 \def (match H0 return (\lambda (c0: C).(\lambda (t: T).(\lambda 
31657 (t0: T).(\lambda (_: (pr2 c0 t t0)).((eq C c0 e) \to ((eq T t t1) \to ((eq T 
31658 t0 t2) \to (pr2 c (lift h d t1) (lift h d t2))))))))) with [(pr2_free c0 t0 
31659 t3 H1) \Rightarrow (\lambda (H2: (eq C c0 e)).(\lambda (H3: (eq T t0 
31660 t1)).(\lambda (H4: (eq T t3 t2)).(eq_ind C e (\lambda (_: C).((eq T t0 t1) 
31661 \to ((eq T t3 t2) \to ((pr0 t0 t3) \to (pr2 c (lift h d t1) (lift h d 
31662 t2)))))) (\lambda (H5: (eq T t0 t1)).(eq_ind T t1 (\lambda (t: T).((eq T t3 
31663 t2) \to ((pr0 t t3) \to (pr2 c (lift h d t1) (lift h d t2))))) (\lambda (H6: 
31664 (eq T t3 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 t1 t) \to (pr2 c (lift h d 
31665 t1) (lift h d t2)))) (\lambda (H7: (pr0 t1 t2)).(pr2_free c (lift h d t1) 
31666 (lift h d t2) (pr0_lift t1 t2 H7 h d))) t3 (sym_eq T t3 t2 H6))) t0 (sym_eq T 
31667 t0 t1 H5))) c0 (sym_eq C c0 e H2) H3 H4 H1)))) | (pr2_delta c0 d0 u i H1 t0 
31668 t3 H2 t H3) \Rightarrow (\lambda (H4: (eq C c0 e)).(\lambda (H5: (eq T t0 
31669 t1)).(\lambda (H6: (eq T t t2)).(eq_ind C e (\lambda (c1: C).((eq T t0 t1) 
31670 \to ((eq T t t2) \to ((getl i c1 (CHead d0 (Bind Abbr) u)) \to ((pr0 t0 t3) 
31671 \to ((subst0 i u t3 t) \to (pr2 c (lift h d t1) (lift h d t2)))))))) (\lambda 
31672 (H7: (eq T t0 t1)).(eq_ind T t1 (\lambda (t4: T).((eq T t t2) \to ((getl i e 
31673 (CHead d0 (Bind Abbr) u)) \to ((pr0 t4 t3) \to ((subst0 i u t3 t) \to (pr2 c 
31674 (lift h d t1) (lift h d t2))))))) (\lambda (H8: (eq T t t2)).(eq_ind T t2 
31675 (\lambda (t4: T).((getl i e (CHead d0 (Bind Abbr) u)) \to ((pr0 t1 t3) \to 
31676 ((subst0 i u t3 t4) \to (pr2 c (lift h d t1) (lift h d t2)))))) (\lambda (H9: 
31677 (getl i e (CHead d0 (Bind Abbr) u))).(\lambda (H10: (pr0 t1 t3)).(\lambda 
31678 (H11: (subst0 i u t3 t2)).(lt_le_e i d (pr2 c (lift h d t1) (lift h d t2)) 
31679 (\lambda (H0: (lt i d)).(let H \def (drop_getl_trans_le i d (le_S_n i d (le_S 
31680 (S i) d H0)) c e h H (CHead d0 (Bind Abbr) u) H9) in (ex3_2_ind C C (\lambda 
31681 (e0: C).(\lambda (_: C).(drop i O c e0))) (\lambda (e0: C).(\lambda (e1: 
31682 C).(drop h (minus d i) e0 e1))) (\lambda (_: C).(\lambda (e1: C).(clear e1 
31683 (CHead d0 (Bind Abbr) u)))) (pr2 c (lift h d t1) (lift h d t2)) (\lambda (x0: 
31684 C).(\lambda (x1: C).(\lambda (H12: (drop i O c x0)).(\lambda (H13: (drop h 
31685 (minus d i) x0 x1)).(\lambda (H14: (clear x1 (CHead d0 (Bind Abbr) u))).(let 
31686 H15 \def (eq_ind nat (minus d i) (\lambda (n: nat).(drop h n x0 x1)) H13 (S 
31687 (minus d (S i))) (minus_x_Sy d i H0)) in (let H16 \def (drop_clear_S x1 x0 h 
31688 (minus d (S i)) H15 Abbr d0 u H14) in (ex2_ind C (\lambda (c1: C).(clear x0 
31689 (CHead c1 (Bind Abbr) (lift h (minus d (S i)) u)))) (\lambda (c1: C).(drop h 
31690 (minus d (S i)) c1 d0)) (pr2 c (lift h d t1) (lift h d t2)) (\lambda (x: 
31691 C).(\lambda (H17: (clear x0 (CHead x (Bind Abbr) (lift h (minus d (S i)) 
31692 u)))).(\lambda (_: (drop h (minus d (S i)) x d0)).(pr2_delta c x (lift h 
31693 (minus d (S i)) u) i (getl_intro i c (CHead x (Bind Abbr) (lift h (minus d (S 
31694 i)) u)) x0 H12 H17) (lift h d t1) (lift h d t3) (pr0_lift t1 t3 H10 h d) 
31695 (lift h d t2) (subst0_lift_lt t3 t2 u i H11 d H0 h))))) H16)))))))) H))) 
31696 (\lambda (H0: (le d i)).(pr2_delta c d0 u (plus i h) (drop_getl_trans_ge i c 
31697 e d h H (CHead d0 (Bind Abbr) u) H9 H0) (lift h d t1) (lift h d t3) (pr0_lift 
31698 t1 t3 H10 h d) (lift h d t2) (subst0_lift_ge t3 t2 u i h H11 d H0))))))) t 
31699 (sym_eq T t t2 H8))) t0 (sym_eq T t0 t1 H7))) c0 (sym_eq C c0 e H4) H5 H6 H1 
31700 H2 H3))))]) in (H1 (refl_equal C e) (refl_equal T t1) (refl_equal T 
31701 t2)))))))))).
31702
31703 theorem pr2_gen_appl:
31704  \forall (c: C).(\forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr2 c 
31705 (THead (Flat Appl) u1 t1) x) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda 
31706 (t2: T).(eq T x (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
31707 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr2 c t1 t2)))) (ex4_4 T 
31708 T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
31709 t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
31710 (u2: T).(\lambda (t2: T).(eq T x (THead (Bind Abbr) u2 t2)))))) (\lambda (_: 
31711 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
31712 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
31713 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T 
31714 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
31715 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
31716 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq 
31717 T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
31718 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead 
31719 (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
31720 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
31721 (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
31722 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
31723 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
31724 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))))))
31725 \def
31726  \lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda 
31727 (H: (pr2 c (THead (Flat Appl) u1 t1) x)).(let H0 \def (match H return 
31728 (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr2 c0 t 
31729 t0)).((eq C c0 c) \to ((eq T t (THead (Flat Appl) u1 t1)) \to ((eq T t0 x) 
31730 \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Flat 
31731 Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31732 T).(\lambda (t2: T).(pr2 c t1 t2)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
31733 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
31734 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: 
31735 T).(eq T x (THead (Bind Abbr) u2 t2)))))) (\lambda (_: T).(\lambda (_: 
31736 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
31737 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall 
31738 (u: T).(pr2 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T T T (\lambda 
31739 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
31740 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
31741 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
31742 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
31743 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) 
31744 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
31745 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
31746 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
31747 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
31748 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
31749 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))))))))) with [(pr2_free c0 
31750 t0 t2 H0) \Rightarrow (\lambda (H1: (eq C c0 c)).(\lambda (H2: (eq T t0 
31751 (THead (Flat Appl) u1 t1))).(\lambda (H3: (eq T t2 x)).(eq_ind C c (\lambda 
31752 (_: C).((eq T t0 (THead (Flat Appl) u1 t1)) \to ((eq T t2 x) \to ((pr0 t0 t2) 
31753 \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat 
31754 Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31755 T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
31756 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
31757 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
31758 T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
31759 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
31760 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
31761 (u: T).(pr2 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
31762 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
31763 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
31764 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
31765 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
31766 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) 
31767 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
31768 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
31769 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
31770 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
31771 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
31772 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))))))) (\lambda (H4: (eq T t0 
31773 (THead (Flat Appl) u1 t1))).(eq_ind T (THead (Flat Appl) u1 t1) (\lambda (t: 
31774 T).((eq T t2 x) \to ((pr0 t t2) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda 
31775 (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
31776 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T 
31777 T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
31778 t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
31779 (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
31780 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
31781 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
31782 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T 
31783 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
31784 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
31785 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq 
31786 T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
31787 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead 
31788 (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
31789 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
31790 (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
31791 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
31792 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
31793 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))))) (\lambda 
31794 (H5: (eq T t2 x)).(eq_ind T x (\lambda (t: T).((pr0 (THead (Flat Appl) u1 t1) 
31795 t) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat 
31796 Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31797 T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
31798 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
31799 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
31800 T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
31801 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
31802 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
31803 (u: T).(pr2 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
31804 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
31805 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
31806 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
31807 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
31808 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) 
31809 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
31810 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
31811 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
31812 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
31813 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
31814 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))))) (\lambda (H6: (pr0 (THead 
31815 (Flat Appl) u1 t1) x)).(or3_ind (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
31816 T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 
31817 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (ex4_4 T T T T 
31818 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
31819 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
31820 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
31821 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda 
31822 (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))) 
31823 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
31824 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
31825 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
31826 (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
31827 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (v2: T).(\lambda (t3: T).(eq T x 
31828 (THead (Bind b) v2 (THead (Flat Appl) (lift (S O) O u2) t3))))))))) (\lambda 
31829 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
31830 T).(\lambda (_: T).(pr0 u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
31831 T).(\lambda (_: T).(\lambda (_: T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 
31832 v2))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
31833 T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3)))))))) (or3 (ex3_2 T T 
31834 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) 
31835 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
31836 (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
31837 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) 
31838 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T x 
31839 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
31840 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
31841 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 
31842 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
31843 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
31844 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
31845 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
31846 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
31847 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead 
31848 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
31849 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
31850 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
31851 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
31852 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
31853 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (H7: (ex3_2 T T 
31854 (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Flat Appl) u2 t2)))) 
31855 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t2: 
31856 T).(pr0 t1 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
31857 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) 
31858 (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3))) (or3 (ex3_2 T T (\lambda (u2: 
31859 T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
31860 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 
31861 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
31862 T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
31863 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
31864 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
31865 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
31866 T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
31867 z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
31868 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) 
31869 (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
31870 (_: T).(\lambda (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: 
31871 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
31872 (y2: T).(eq T x (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
31873 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
31874 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
31875 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
31876 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
31877 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
31878 y2) z1 z2))))))))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H: (eq T x 
31879 (THead (Flat Appl) x0 x1))).(\lambda (H8: (pr0 u1 x0)).(\lambda (H9: (pr0 t1 
31880 x1)).(eq_ind_r T (THead (Flat Appl) x0 x1) (\lambda (t: T).(or3 (ex3_2 T T 
31881 (\lambda (u2: T).(\lambda (t3: T).(eq T t (THead (Flat Appl) u2 t3)))) 
31882 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
31883 (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
31884 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) 
31885 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T t 
31886 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
31887 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
31888 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 
31889 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
31890 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
31891 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
31892 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
31893 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
31894 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T t (THead (Bind b) y2 (THead 
31895 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
31896 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
31897 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
31898 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
31899 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
31900 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (or3_intro0 (ex3_2 T T 
31901 (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Flat Appl) x0 x1) (THead 
31902 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
31903 (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda 
31904 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead 
31905 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
31906 T).(\lambda (t3: T).(eq T (THead (Flat Appl) x0 x1) (THead (Bind Abbr) u2 
31907 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
31908 T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
31909 T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
31910 z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
31911 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) 
31912 (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
31913 (_: T).(\lambda (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: 
31914 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
31915 (y2: T).(eq T (THead (Flat Appl) x0 x1) (THead (Bind b) y2 (THead (Flat Appl) 
31916 (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
31917 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
31918 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
31919 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
31920 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
31921 (CHead c (Bind b) y2) z1 z2)))))))) (ex3_2_intro T T (\lambda (u2: 
31922 T).(\lambda (t3: T).(eq T (THead (Flat Appl) x0 x1) (THead (Flat Appl) u2 
31923 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31924 T).(\lambda (t3: T).(pr2 c t1 t3))) x0 x1 (refl_equal T (THead (Flat Appl) x0 
31925 x1)) (pr2_free c u1 x0 H8) (pr2_free c t1 x1 H9))) x H)))))) H7)) (\lambda 
31926 (H7: (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
31927 T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
31928 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind 
31929 Abbr) u2 t2)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
31930 (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
31931 T).(\lambda (t2: T).(pr0 z1 t2))))))).(ex4_4_ind T T T T (\lambda (y1: 
31932 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
31933 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
31934 (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
31935 T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda 
31936 (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3))))) (or3 (ex3_2 T T 
31937 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) 
31938 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
31939 (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
31940 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) 
31941 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T x 
31942 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
31943 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
31944 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 
31945 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
31946 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
31947 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
31948 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
31949 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
31950 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead 
31951 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
31952 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
31953 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
31954 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
31955 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
31956 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x0: T).(\lambda 
31957 (x1: T).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H: (eq T t1 (THead (Bind 
31958 Abst) x0 x1))).(\lambda (H8: (eq T x (THead (Bind Abbr) x2 x3))).(\lambda 
31959 (H9: (pr0 u1 x2)).(\lambda (H10: (pr0 x1 x3)).(eq_ind_r T (THead (Bind Abbr) 
31960 x2 x3) (\lambda (t: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq 
31961 T t (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
31962 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T 
31963 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
31964 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
31965 T).(\lambda (t3: T).(eq T t (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
31966 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
31967 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
31968 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T 
31969 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
31970 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
31971 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq 
31972 T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
31973 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T t (THead 
31974 (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
31975 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
31976 (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
31977 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
31978 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
31979 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (eq_ind_r 
31980 T (THead (Bind Abst) x0 x1) (\lambda (t: T).(or3 (ex3_2 T T (\lambda (u2: 
31981 T).(\lambda (t3: T).(eq T (THead (Bind Abbr) x2 x3) (THead (Flat Appl) u2 
31982 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
31983 T).(\lambda (t3: T).(pr2 c t t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
31984 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t (THead (Bind Abst) y1 
31985 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
31986 T).(eq T (THead (Bind Abbr) x2 x3) (THead (Bind Abbr) u2 t3)))))) (\lambda 
31987 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
31988 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
31989 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T 
31990 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
31991 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
31992 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq 
31993 T t (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
31994 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind 
31995 Abbr) x2 x3) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
31996 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
31997 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
31998 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
31999 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
32000 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
32001 y2) z1 z2)))))))))) (or3_intro1 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
32002 T).(eq T (THead (Bind Abbr) x2 x3) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32003 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
32004 (THead (Bind Abst) x0 x1) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32005 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) 
32006 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32007 T).(\lambda (t3: T).(eq T (THead (Bind Abbr) x2 x3) (THead (Bind Abbr) u2 
32008 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
32009 T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32010 T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
32011 z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32012 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) 
32013 (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
32014 (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) (THead (Bind b) y1 
32015 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: 
32016 T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind Abbr) x2 x3) (THead 
32017 (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
32018 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32019 (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
32020 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
32021 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
32022 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) (ex4_4_intro 
32023 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq 
32024 T (THead (Bind Abst) x0 x1) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
32025 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind Abbr) 
32026 x2 x3) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
32027 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
32028 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
32029 (u: T).(pr2 (CHead c (Bind b) u) z1 t3))))))) x0 x1 x2 x3 (refl_equal T 
32030 (THead (Bind Abst) x0 x1)) (refl_equal T (THead (Bind Abbr) x2 x3)) (pr2_free 
32031 c u1 x2 H9) (\lambda (b: B).(\lambda (u: T).(pr2_free (CHead c (Bind b) u) x1 
32032 x3 H10))))) t1 H) x H8))))))))) H7)) (\lambda (H7: (ex6_6 B T T T T T 
32033 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32034 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
32035 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
32036 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32037 T).(\lambda (u2: T).(\lambda (v2: T).(\lambda (t2: T).(eq T x (THead (Bind b) 
32038 v2 (THead (Flat Appl) (lift (S O) O u2) t2))))))))) (\lambda (_: B).(\lambda 
32039 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(\lambda (_: T).(pr0 
32040 u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32041 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
32042 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32043 (t2: T).(pr0 z1 t2))))))))).(ex6_6_ind B T T T T T (\lambda (b: B).(\lambda 
32044 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not 
32045 (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: 
32046 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind b) 
32047 y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32048 T).(\lambda (v2: T).(\lambda (t3: T).(eq T x (THead (Bind b) v2 (THead (Flat 
32049 Appl) (lift (S O) O u2) t3))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda 
32050 (_: T).(\lambda (u2: T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 u2))))))) 
32051 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32052 (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: B).(\lambda (_: 
32053 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 
32054 t3))))))) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead 
32055 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
32056 (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda 
32057 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead 
32058 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32059 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
32060 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
32061 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
32062 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T 
32063 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32064 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
32065 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq 
32066 T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
32067 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead 
32068 (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
32069 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32070 (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
32071 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
32072 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
32073 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda 
32074 (x0: B).(\lambda (x1: T).(\lambda (x2: T).(\lambda (x3: T).(\lambda (x4: 
32075 T).(\lambda (x5: T).(\lambda (H: (not (eq B x0 Abst))).(\lambda (H8: (eq T t1 
32076 (THead (Bind x0) x1 x2))).(\lambda (H9: (eq T x (THead (Bind x0) x4 (THead 
32077 (Flat Appl) (lift (S O) O x3) x5)))).(\lambda (H10: (pr0 u1 x3)).(\lambda 
32078 (H11: (pr0 x1 x4)).(\lambda (H12: (pr0 x2 x5)).(eq_ind_r T (THead (Bind x0) 
32079 x4 (THead (Flat Appl) (lift (S O) O x3) x5)) (\lambda (t: T).(or3 (ex3_2 T T 
32080 (\lambda (u2: T).(\lambda (t3: T).(eq T t (THead (Flat Appl) u2 t3)))) 
32081 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
32082 (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
32083 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) 
32084 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T t 
32085 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32086 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
32087 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 
32088 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
32089 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32090 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
32091 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
32092 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32093 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T t (THead (Bind b) y2 (THead 
32094 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
32095 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
32096 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32097 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32098 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32099 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (eq_ind_r T (THead (Bind 
32100 x0) x1 x2) (\lambda (t: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
32101 T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x3) x5)) (THead 
32102 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
32103 (\lambda (_: T).(\lambda (t3: T).(pr2 c t t3)))) (ex4_4 T T T T (\lambda (y1: 
32104 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t (THead (Bind 
32105 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32106 (t3: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x3) x5)) 
32107 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32108 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
32109 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 
32110 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
32111 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32112 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
32113 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t (THead (Bind 
32114 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32115 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind x0) x4 (THead 
32116 (Flat Appl) (lift (S O) O x3) x5)) (THead (Bind b) y2 (THead (Flat Appl) 
32117 (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
32118 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
32119 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32120 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
32121 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
32122 (CHead c (Bind b) y2) z1 z2)))))))))) (or3_intro2 (ex3_2 T T (\lambda (u2: 
32123 T).(\lambda (t3: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) 
32124 O x3) x5)) (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
32125 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) 
32126 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32127 T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 
32128 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
32129 T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x3) x5)) (THead 
32130 (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32131 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
32132 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 
32133 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
32134 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32135 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
32136 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind 
32137 x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
32138 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
32139 (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x3) x5)) (THead (Bind b) 
32140 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
32141 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
32142 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32143 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32144 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32145 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) (ex6_6_intro B T T T T T 
32146 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32147 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
32148 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
32149 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
32150 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
32151 (y2: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x3) x5)) 
32152 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda 
32153 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32154 T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
32155 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
32156 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
32157 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))) 
32158 x0 x1 x2 x5 x3 x4 H (refl_equal T (THead (Bind x0) x1 x2)) (refl_equal T 
32159 (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x3) x5))) (pr2_free c u1 
32160 x3 H10) (pr2_free c x1 x4 H11) (pr2_free (CHead c (Bind x0) x4) x2 x5 H12))) 
32161 t1 H8) x H9))))))))))))) H7)) (pr0_gen_appl u1 t1 x H6))) t2 (sym_eq T t2 x 
32162 H5))) t0 (sym_eq T t0 (THead (Flat Appl) u1 t1) H4))) c0 (sym_eq C c0 c H1) 
32163 H2 H3 H0)))) | (pr2_delta c0 d u i H0 t0 t2 H1 t H2) \Rightarrow (\lambda 
32164 (H3: (eq C c0 c)).(\lambda (H4: (eq T t0 (THead (Flat Appl) u1 t1))).(\lambda 
32165 (H5: (eq T t x)).(eq_ind C c (\lambda (c1: C).((eq T t0 (THead (Flat Appl) u1 
32166 t1)) \to ((eq T t x) \to ((getl i c1 (CHead d (Bind Abbr) u)) \to ((pr0 t0 
32167 t2) \to ((subst0 i u t2 t) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
32168 T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
32169 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T 
32170 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
32171 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32172 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
32173 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
32174 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
32175 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
32176 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32177 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
32178 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32179 (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
32180 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x 
32181 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda 
32182 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32183 T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
32184 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
32185 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
32186 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 
32187 z2))))))))))))))) (\lambda (H6: (eq T t0 (THead (Flat Appl) u1 t1))).(eq_ind 
32188 T (THead (Flat Appl) u1 t1) (\lambda (t3: T).((eq T t x) \to ((getl i c 
32189 (CHead d (Bind Abbr) u)) \to ((pr0 t3 t2) \to ((subst0 i u t2 t) \to (or3 
32190 (ex3_2 T T (\lambda (u2: T).(\lambda (t4: T).(eq T x (THead (Flat Appl) u2 
32191 t4)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
32192 T).(\lambda (t4: T).(pr2 c t1 t4)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32193 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
32194 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t4: 
32195 T).(eq T x (THead (Bind Abbr) u2 t4)))))) (\lambda (_: T).(\lambda (_: 
32196 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
32197 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t4: T).(\forall (b: B).(\forall 
32198 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t4)))))))) (ex6_6 B T T T T T (\lambda 
32199 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32200 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
32201 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
32202 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32203 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) 
32204 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
32205 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
32206 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32207 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32208 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32209 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))))))) (\lambda (H7: (eq T t 
32210 x)).(eq_ind T x (\lambda (t3: T).((getl i c (CHead d (Bind Abbr) u)) \to 
32211 ((pr0 (THead (Flat Appl) u1 t1) t2) \to ((subst0 i u t2 t3) \to (or3 (ex3_2 T 
32212 T (\lambda (u2: T).(\lambda (t4: T).(eq T x (THead (Flat Appl) u2 t4)))) 
32213 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
32214 (t4: T).(pr2 c t1 t4)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
32215 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) 
32216 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t4: T).(eq T x 
32217 (THead (Bind Abbr) u2 t4)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32218 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
32219 T).(\lambda (_: T).(\lambda (t4: T).(\forall (b: B).(\forall (u0: T).(pr2 
32220 (CHead c (Bind b) u0) z1 t4)))))))) (ex6_6 B T T T T T (\lambda (b: 
32221 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32222 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
32223 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
32224 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32225 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead 
32226 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
32227 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
32228 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32229 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32230 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32231 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))))))) (\lambda (H8: (getl i c 
32232 (CHead d (Bind Abbr) u))).(\lambda (H9: (pr0 (THead (Flat Appl) u1 t1) 
32233 t2)).(\lambda (H10: (subst0 i u t2 x)).(or3_ind (ex3_2 T T (\lambda (u2: 
32234 T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32235 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
32236 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32237 T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
32238 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind 
32239 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32240 (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32241 T).(\lambda (t3: T).(pr0 z1 t3)))))) (ex6_6 B T T T T T (\lambda (b: 
32242 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32243 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
32244 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
32245 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32246 (u2: T).(\lambda (v2: T).(\lambda (t3: T).(eq T t2 (THead (Bind b) v2 (THead 
32247 (Flat Appl) (lift (S O) O u2) t3))))))))) (\lambda (_: B).(\lambda (_: 
32248 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(\lambda (_: T).(pr0 u1 
32249 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32250 T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) (\lambda (_: 
32251 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32252 (t3: T).(pr0 z1 t3)))))))) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
32253 T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
32254 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T 
32255 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
32256 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32257 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
32258 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
32259 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
32260 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
32261 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32262 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
32263 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32264 (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
32265 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x 
32266 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda 
32267 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32268 T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
32269 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
32270 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
32271 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) 
32272 (\lambda (H11: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead 
32273 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
32274 (_: T).(\lambda (t2: T).(pr0 t1 t2))))).(ex3_2_ind T T (\lambda (u2: 
32275 T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32276 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 
32277 t3))) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat 
32278 Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
32279 T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32280 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
32281 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
32282 T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
32283 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
32284 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
32285 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
32286 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32287 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
32288 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
32289 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32290 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) 
32291 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
32292 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
32293 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32294 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32295 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32296 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x0: T).(\lambda 
32297 (x1: T).(\lambda (H: (eq T t2 (THead (Flat Appl) x0 x1))).(\lambda (H12: (pr0 
32298 u1 x0)).(\lambda (H13: (pr0 t1 x1)).(let H14 \def (eq_ind T t2 (\lambda (t: 
32299 T).(subst0 i u t x)) H10 (THead (Flat Appl) x0 x1) H) in (or3_ind (ex2 T 
32300 (\lambda (u2: T).(eq T x (THead (Flat Appl) u2 x1))) (\lambda (u2: T).(subst0 
32301 i u x0 u2))) (ex2 T (\lambda (t3: T).(eq T x (THead (Flat Appl) x0 t3))) 
32302 (\lambda (t3: T).(subst0 (s (Flat Appl) i) u x1 t3))) (ex3_2 T T (\lambda 
32303 (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32304 T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: T).(\lambda (t3: 
32305 T).(subst0 (s (Flat Appl) i) u x1 t3)))) (or3 (ex3_2 T T (\lambda (u2: 
32306 T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32307 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 
32308 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32309 T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
32310 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
32311 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32312 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32313 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32314 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
32315 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
32316 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32317 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) 
32318 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda 
32319 (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead (Flat Appl) (lift 
32320 (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
32321 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
32322 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32323 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
32324 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
32325 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (H15: (ex2 T (\lambda (u2: 
32326 T).(eq T x (THead (Flat Appl) u2 x1))) (\lambda (u2: T).(subst0 i u x0 
32327 u2)))).(ex2_ind T (\lambda (u2: T).(eq T x (THead (Flat Appl) u2 x1))) 
32328 (\lambda (u2: T).(subst0 i u x0 u2)) (or3 (ex3_2 T T (\lambda (u2: 
32329 T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32330 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 
32331 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32332 T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
32333 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
32334 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32335 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32336 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32337 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
32338 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
32339 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32340 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) 
32341 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda 
32342 (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead (Flat Appl) (lift 
32343 (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
32344 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
32345 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32346 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
32347 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
32348 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x2: T).(\lambda (H16: (eq T x 
32349 (THead (Flat Appl) x2 x1))).(\lambda (H17: (subst0 i u x0 x2)).(eq_ind_r T 
32350 (THead (Flat Appl) x2 x1) (\lambda (t3: T).(or3 (ex3_2 T T (\lambda (u2: 
32351 T).(\lambda (t4: T).(eq T t3 (THead (Flat Appl) u2 t4)))) (\lambda (u2: 
32352 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t4: T).(pr2 c t1 
32353 t4)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32354 T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
32355 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t4: T).(eq T t3 (THead (Bind 
32356 Abbr) u2 t4)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32357 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32358 T).(\lambda (t4: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32359 u0) z1 t4)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
32360 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
32361 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32362 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) 
32363 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda 
32364 (u2: T).(\lambda (y2: T).(eq T t3 (THead (Bind b) y2 (THead (Flat Appl) (lift 
32365 (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
32366 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
32367 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32368 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
32369 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
32370 (CHead c (Bind b) y2) z1 z2)))))))))) (or3_intro0 (ex3_2 T T (\lambda (u2: 
32371 T).(\lambda (t3: T).(eq T (THead (Flat Appl) x2 x1) (THead (Flat Appl) u2 
32372 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
32373 T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32374 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
32375 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
32376 T).(eq T (THead (Flat Appl) x2 x1) (THead (Bind Abbr) u2 t3)))))) (\lambda 
32377 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
32378 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
32379 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
32380 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32381 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
32382 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32383 (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
32384 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
32385 (THead (Flat Appl) x2 x1) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O 
32386 u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32387 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
32388 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32389 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
32390 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
32391 y2) z1 z2)))))))) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
32392 (THead (Flat Appl) x2 x1) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32393 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 
32394 t3))) x2 x1 (refl_equal T (THead (Flat Appl) x2 x1)) (pr2_delta c d u i H8 u1 
32395 x0 H12 x2 H17) (pr2_free c t1 x1 H13))) x H16)))) H15)) (\lambda (H15: (ex2 T 
32396 (\lambda (t2: T).(eq T x (THead (Flat Appl) x0 t2))) (\lambda (t2: T).(subst0 
32397 (s (Flat Appl) i) u x1 t2)))).(ex2_ind T (\lambda (t3: T).(eq T x (THead 
32398 (Flat Appl) x0 t3))) (\lambda (t3: T).(subst0 (s (Flat Appl) i) u x1 t3)) 
32399 (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) 
32400 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
32401 T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32402 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
32403 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
32404 T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
32405 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
32406 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
32407 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
32408 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32409 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
32410 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
32411 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32412 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) 
32413 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
32414 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
32415 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32416 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32417 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32418 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x2: T).(\lambda 
32419 (H16: (eq T x (THead (Flat Appl) x0 x2))).(\lambda (H17: (subst0 (s (Flat 
32420 Appl) i) u x1 x2)).(eq_ind_r T (THead (Flat Appl) x0 x2) (\lambda (t3: 
32421 T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t4: T).(eq T t3 (THead (Flat 
32422 Appl) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
32423 T).(\lambda (t4: T).(pr2 c t1 t4)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32424 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
32425 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t4: 
32426 T).(eq T t3 (THead (Bind Abbr) u2 t4)))))) (\lambda (_: T).(\lambda (_: 
32427 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
32428 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t4: T).(\forall (b: B).(\forall 
32429 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t4)))))))) (ex6_6 B T T T T T (\lambda 
32430 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32431 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
32432 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
32433 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32434 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T t3 (THead (Bind 
32435 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
32436 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32437 (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
32438 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
32439 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
32440 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) 
32441 (or3_intro0 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Flat 
32442 Appl) x0 x2) (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
32443 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T 
32444 T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
32445 t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
32446 (u2: T).(\lambda (t3: T).(eq T (THead (Flat Appl) x0 x2) (THead (Bind Abbr) 
32447 u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
32448 T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32449 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32450 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
32451 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
32452 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32453 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) 
32454 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda 
32455 (u2: T).(\lambda (y2: T).(eq T (THead (Flat Appl) x0 x2) (THead (Bind b) y2 
32456 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
32457 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
32458 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32459 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32460 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32461 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) (ex3_2_intro T T (\lambda 
32462 (u2: T).(\lambda (t3: T).(eq T (THead (Flat Appl) x0 x2) (THead (Flat Appl) 
32463 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
32464 T).(\lambda (t3: T).(pr2 c t1 t3))) x0 x2 (refl_equal T (THead (Flat Appl) x0 
32465 x2)) (pr2_free c u1 x0 H12) (pr2_delta c d u i H8 t1 x1 H13 x2 H17))) x 
32466 H16)))) H15)) (\lambda (H15: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq 
32467 T x (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u 
32468 x0 u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Flat Appl) i) u x1 
32469 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat 
32470 Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u x0 u2))) 
32471 (\lambda (_: T).(\lambda (t3: T).(subst0 (s (Flat Appl) i) u x1 t3))) (or3 
32472 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 
32473 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
32474 T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32475 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
32476 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
32477 T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
32478 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
32479 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
32480 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
32481 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32482 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
32483 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
32484 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32485 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) 
32486 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
32487 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
32488 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32489 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32490 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32491 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x2: T).(\lambda 
32492 (x3: T).(\lambda (H16: (eq T x (THead (Flat Appl) x2 x3))).(\lambda (H17: 
32493 (subst0 i u x0 x2)).(\lambda (H18: (subst0 (s (Flat Appl) i) u x1 
32494 x3)).(eq_ind_r T (THead (Flat Appl) x2 x3) (\lambda (t3: T).(or3 (ex3_2 T T 
32495 (\lambda (u2: T).(\lambda (t4: T).(eq T t3 (THead (Flat Appl) u2 t4)))) 
32496 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
32497 (t4: T).(pr2 c t1 t4)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
32498 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) 
32499 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t4: T).(eq T t3 
32500 (THead (Bind Abbr) u2 t4)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32501 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
32502 T).(\lambda (_: T).(\lambda (t4: T).(\forall (b: B).(\forall (u0: T).(pr2 
32503 (CHead c (Bind b) u0) z1 t4)))))))) (ex6_6 B T T T T T (\lambda (b: 
32504 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32505 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
32506 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
32507 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32508 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T t3 (THead (Bind b) y2 (THead 
32509 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
32510 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
32511 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32512 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32513 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32514 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (or3_intro0 (ex3_2 T T 
32515 (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Flat Appl) x2 x3) (THead 
32516 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
32517 (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda 
32518 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead 
32519 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32520 T).(\lambda (t3: T).(eq T (THead (Flat Appl) x2 x3) (THead (Bind Abbr) u2 
32521 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
32522 T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32523 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32524 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
32525 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
32526 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32527 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) 
32528 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda 
32529 (u2: T).(\lambda (y2: T).(eq T (THead (Flat Appl) x2 x3) (THead (Bind b) y2 
32530 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
32531 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
32532 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32533 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32534 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32535 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) (ex3_2_intro T T (\lambda 
32536 (u2: T).(\lambda (t3: T).(eq T (THead (Flat Appl) x2 x3) (THead (Flat Appl) 
32537 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
32538 T).(\lambda (t3: T).(pr2 c t1 t3))) x2 x3 (refl_equal T (THead (Flat Appl) x2 
32539 x3)) (pr2_delta c d u i H8 u1 x0 H12 x2 H17) (pr2_delta c d u i H8 t1 x1 H13 
32540 x3 H18))) x H16)))))) H15)) (subst0_gen_head (Flat Appl) u x0 x1 x i 
32541 H14)))))))) H11)) (\lambda (H11: (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32542 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
32543 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
32544 T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
32545 T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda (_: T).(\lambda 
32546 (z1: T).(\lambda (_: T).(\lambda (t2: T).(pr0 z1 t2))))))).(ex4_4_ind T T T T 
32547 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
32548 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32549 T).(\lambda (t3: T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
32550 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))))) (\lambda 
32551 (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(pr0 z1 t3))))) (or3 
32552 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 
32553 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
32554 T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32555 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
32556 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
32557 T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
32558 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
32559 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
32560 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
32561 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32562 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
32563 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
32564 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32565 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) 
32566 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
32567 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
32568 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32569 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32570 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32571 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x0: T).(\lambda 
32572 (x1: T).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H: (eq T t1 (THead (Bind 
32573 Abst) x0 x1))).(\lambda (H12: (eq T t2 (THead (Bind Abbr) x2 x3))).(\lambda 
32574 (H13: (pr0 u1 x2)).(\lambda (H14: (pr0 x1 x3)).(let H15 \def (eq_ind T t2 
32575 (\lambda (t: T).(subst0 i u t x)) H10 (THead (Bind Abbr) x2 x3) H12) in 
32576 (eq_ind_r T (THead (Bind Abst) x0 x1) (\lambda (t1: T).(or3 (ex3_2 T T 
32577 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) 
32578 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
32579 (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
32580 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) 
32581 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T x 
32582 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32583 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
32584 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 
32585 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
32586 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32587 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
32588 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind 
32589 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32590 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead 
32591 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
32592 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
32593 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32594 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32595 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32596 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (or3_ind (ex2 T (\lambda 
32597 (u2: T).(eq T x (THead (Bind Abbr) u2 x3))) (\lambda (u2: T).(subst0 i u x2 
32598 u2))) (ex2 T (\lambda (t3: T).(eq T x (THead (Bind Abbr) x2 t3))) (\lambda 
32599 (t3: T).(subst0 (s (Bind Abbr) i) u x3 t3))) (ex3_2 T T (\lambda (u2: 
32600 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
32601 T).(\lambda (_: T).(subst0 i u x2 u2))) (\lambda (_: T).(\lambda (t3: 
32602 T).(subst0 (s (Bind Abbr) i) u x3 t3)))) (or3 (ex3_2 T T (\lambda (u2: 
32603 T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32604 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
32605 (THead (Bind Abst) x0 x1) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32606 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) 
32607 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32608 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
32609 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
32610 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
32611 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
32612 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32613 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
32614 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32615 (_: T).(eq T (THead (Bind Abst) x0 x1) (THead (Bind b) y1 z1)))))))) (\lambda 
32616 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
32617 T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) 
32618 O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32619 (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
32620 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32621 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
32622 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
32623 y2) z1 z2))))))))) (\lambda (H16: (ex2 T (\lambda (u2: T).(eq T x (THead 
32624 (Bind Abbr) u2 x3))) (\lambda (u2: T).(subst0 i u x2 u2)))).(ex2_ind T 
32625 (\lambda (u2: T).(eq T x (THead (Bind Abbr) u2 x3))) (\lambda (u2: T).(subst0 
32626 i u x2 u2)) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead 
32627 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
32628 (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind Abst) x0 x1) t3)))) 
32629 (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
32630 T).(eq T (THead (Bind Abst) x0 x1) (THead (Bind Abst) y1 z1)))))) (\lambda 
32631 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
32632 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32633 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32634 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32635 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
32636 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
32637 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32638 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) (THead 
32639 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32640 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) 
32641 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
32642 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
32643 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32644 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32645 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32646 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x4: T).(\lambda 
32647 (H17: (eq T x (THead (Bind Abbr) x4 x3))).(\lambda (H18: (subst0 i u x2 
32648 x4)).(eq_ind_r T (THead (Bind Abbr) x4 x3) (\lambda (t1: T).(or3 (ex3_2 T T 
32649 (\lambda (u2: T).(\lambda (t3: T).(eq T t1 (THead (Flat Appl) u2 t3)))) 
32650 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
32651 (t3: T).(pr2 c (THead (Bind Abst) x0 x1) t3)))) (ex4_4 T T T T (\lambda (y1: 
32652 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) 
32653 x0 x1) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: 
32654 T).(\lambda (u2: T).(\lambda (t3: T).(eq T t1 (THead (Bind Abbr) u2 t3)))))) 
32655 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
32656 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: 
32657 T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) 
32658 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32659 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
32660 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32661 (_: T).(eq T (THead (Bind Abst) x0 x1) (THead (Bind b) y1 z1)))))))) (\lambda 
32662 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
32663 T).(\lambda (y2: T).(eq T t1 (THead (Bind b) y2 (THead (Flat Appl) (lift (S 
32664 O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32665 (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
32666 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32667 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
32668 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
32669 y2) z1 z2)))))))))) (or3_intro1 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
32670 T).(eq T (THead (Bind Abbr) x4 x3) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32671 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
32672 (THead (Bind Abst) x0 x1) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32673 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) 
32674 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32675 T).(\lambda (t3: T).(eq T (THead (Bind Abbr) x4 x3) (THead (Bind Abbr) u2 
32676 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
32677 T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32678 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32679 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
32680 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
32681 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32682 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) (THead 
32683 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32684 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind 
32685 Abbr) x4 x3) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
32686 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32687 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
32688 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32689 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
32690 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
32691 y2) z1 z2)))))))) (ex4_4_intro T T T T (\lambda (y1: T).(\lambda (z1: 
32692 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) (THead 
32693 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32694 T).(\lambda (t3: T).(eq T (THead (Bind Abbr) x4 x3) (THead (Bind Abbr) u2 
32695 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
32696 T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32697 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32698 u0) z1 t3))))))) x0 x1 x4 x3 (refl_equal T (THead (Bind Abst) x0 x1)) 
32699 (refl_equal T (THead (Bind Abbr) x4 x3)) (pr2_delta c d u i H8 u1 x2 H13 x4 
32700 H18) (\lambda (b: B).(\lambda (u0: T).(pr2_free (CHead c (Bind b) u0) x1 x3 
32701 H14))))) x H17)))) H16)) (\lambda (H16: (ex2 T (\lambda (t2: T).(eq T x 
32702 (THead (Bind Abbr) x2 t2))) (\lambda (t2: T).(subst0 (s (Bind Abbr) i) u x3 
32703 t2)))).(ex2_ind T (\lambda (t3: T).(eq T x (THead (Bind Abbr) x2 t3))) 
32704 (\lambda (t3: T).(subst0 (s (Bind Abbr) i) u x3 t3)) (or3 (ex3_2 T T (\lambda 
32705 (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32706 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
32707 (THead (Bind Abst) x0 x1) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32708 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) 
32709 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32710 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
32711 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
32712 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
32713 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
32714 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32715 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
32716 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32717 (_: T).(eq T (THead (Bind Abst) x0 x1) (THead (Bind b) y1 z1)))))))) (\lambda 
32718 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
32719 T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) 
32720 O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32721 (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
32722 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32723 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
32724 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
32725 y2) z1 z2))))))))) (\lambda (x4: T).(\lambda (H17: (eq T x (THead (Bind Abbr) 
32726 x2 x4))).(\lambda (H18: (subst0 (s (Bind Abbr) i) u x3 x4)).(eq_ind_r T 
32727 (THead (Bind Abbr) x2 x4) (\lambda (t1: T).(or3 (ex3_2 T T (\lambda (u2: 
32728 T).(\lambda (t3: T).(eq T t1 (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32729 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
32730 (THead (Bind Abst) x0 x1) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32731 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) 
32732 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32733 T).(\lambda (t3: T).(eq T t1 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
32734 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
32735 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
32736 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
32737 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32738 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
32739 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32740 (_: T).(eq T (THead (Bind Abst) x0 x1) (THead (Bind b) y1 z1)))))))) (\lambda 
32741 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
32742 T).(\lambda (y2: T).(eq T t1 (THead (Bind b) y2 (THead (Flat Appl) (lift (S 
32743 O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32744 (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
32745 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32746 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
32747 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
32748 y2) z1 z2)))))))))) (or3_intro1 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
32749 T).(eq T (THead (Bind Abbr) x2 x4) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32750 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
32751 (THead (Bind Abst) x0 x1) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32752 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) 
32753 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32754 T).(\lambda (t3: T).(eq T (THead (Bind Abbr) x2 x4) (THead (Bind Abbr) u2 
32755 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
32756 T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32757 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32758 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
32759 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
32760 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32761 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) (THead 
32762 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32763 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind 
32764 Abbr) x2 x4) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
32765 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32766 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
32767 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32768 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
32769 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
32770 y2) z1 z2)))))))) (ex4_4_intro T T T T (\lambda (y1: T).(\lambda (z1: 
32771 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) (THead 
32772 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32773 T).(\lambda (t3: T).(eq T (THead (Bind Abbr) x2 x4) (THead (Bind Abbr) u2 
32774 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
32775 T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32776 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32777 u0) z1 t3))))))) x0 x1 x2 x4 (refl_equal T (THead (Bind Abst) x0 x1)) 
32778 (refl_equal T (THead (Bind Abbr) x2 x4)) (pr2_free c u1 x2 H13) (\lambda (b: 
32779 B).(\lambda (u0: T).(pr2_delta (CHead c (Bind b) u0) d u (S i) 
32780 (getl_clear_bind b (CHead c (Bind b) u0) c u0 (clear_bind b c u0) (CHead d 
32781 (Bind Abbr) u) i H8) x1 x3 H14 x4 H18))))) x H17)))) H16)) (\lambda (H16: 
32782 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind Abbr) u2 
32783 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u x2 u2))) (\lambda (_: 
32784 T).(\lambda (t2: T).(subst0 (s (Bind Abbr) i) u x3 t2))))).(ex3_2_ind T T 
32785 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) 
32786 (\lambda (u2: T).(\lambda (_: T).(subst0 i u x2 u2))) (\lambda (_: 
32787 T).(\lambda (t3: T).(subst0 (s (Bind Abbr) i) u x3 t3))) (or3 (ex3_2 T T 
32788 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) 
32789 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
32790 (t3: T).(pr2 c (THead (Bind Abst) x0 x1) t3)))) (ex4_4 T T T T (\lambda (y1: 
32791 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) 
32792 x0 x1) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: 
32793 T).(\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) 
32794 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
32795 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: 
32796 T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) 
32797 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32798 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
32799 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32800 (_: T).(eq T (THead (Bind Abst) x0 x1) (THead (Bind b) y1 z1)))))))) (\lambda 
32801 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
32802 T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) 
32803 O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32804 (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
32805 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32806 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
32807 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
32808 y2) z1 z2))))))))) (\lambda (x4: T).(\lambda (x5: T).(\lambda (H17: (eq T x 
32809 (THead (Bind Abbr) x4 x5))).(\lambda (H18: (subst0 i u x2 x4)).(\lambda (H19: 
32810 (subst0 (s (Bind Abbr) i) u x3 x5)).(eq_ind_r T (THead (Bind Abbr) x4 x5) 
32811 (\lambda (t1: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t1 
32812 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
32813 (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind Abst) x0 x1) t3)))) 
32814 (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
32815 T).(eq T (THead (Bind Abst) x0 x1) (THead (Bind Abst) y1 z1)))))) (\lambda 
32816 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T t1 (THead 
32817 (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32818 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
32819 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 
32820 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
32821 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32822 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
32823 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind 
32824 Abst) x0 x1) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
32825 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
32826 t1 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) 
32827 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32828 T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
32829 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
32830 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
32831 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 
32832 z2)))))))))) (or3_intro1 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
32833 (THead (Bind Abbr) x4 x5) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32834 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
32835 (THead (Bind Abst) x0 x1) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32836 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) 
32837 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32838 T).(\lambda (t3: T).(eq T (THead (Bind Abbr) x4 x5) (THead (Bind Abbr) u2 
32839 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
32840 T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32841 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32842 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
32843 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
32844 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32845 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) (THead 
32846 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32847 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind 
32848 Abbr) x4 x5) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
32849 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32850 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
32851 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32852 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
32853 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
32854 y2) z1 z2)))))))) (ex4_4_intro T T T T (\lambda (y1: T).(\lambda (z1: 
32855 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) (THead 
32856 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
32857 T).(\lambda (t3: T).(eq T (THead (Bind Abbr) x4 x5) (THead (Bind Abbr) u2 
32858 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
32859 T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32860 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32861 u0) z1 t3))))))) x0 x1 x4 x5 (refl_equal T (THead (Bind Abst) x0 x1)) 
32862 (refl_equal T (THead (Bind Abbr) x4 x5)) (pr2_delta c d u i H8 u1 x2 H13 x4 
32863 H18) (\lambda (b: B).(\lambda (u0: T).(pr2_delta (CHead c (Bind b) u0) d u (S 
32864 i) (getl_clear_bind b (CHead c (Bind b) u0) c u0 (clear_bind b c u0) (CHead d 
32865 (Bind Abbr) u) i H8) x1 x3 H14 x5 H19))))) x H17)))))) H16)) (subst0_gen_head 
32866 (Bind Abbr) u x2 x3 x i H15)) t1 H)))))))))) H11)) (\lambda (H11: (ex6_6 B T 
32867 T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32868 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
32869 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32870 (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
32871 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (v2: T).(\lambda (t3: T).(eq T 
32872 t2 (THead (Bind b) v2 (THead (Flat Appl) (lift (S O) O u2) t3))))))))) 
32873 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
32874 T).(\lambda (_: T).(pr0 u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
32875 T).(\lambda (_: T).(\lambda (_: T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 
32876 v2))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32877 T).(\lambda (_: T).(\lambda (t2: T).(pr0 z1 t2))))))))).(ex6_6_ind B T T T T 
32878 T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32879 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
32880 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq 
32881 T t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
32882 (_: T).(\lambda (u2: T).(\lambda (v2: T).(\lambda (t3: T).(eq T t2 (THead 
32883 (Bind b) v2 (THead (Flat Appl) (lift (S O) O u2) t3))))))))) (\lambda (_: 
32884 B).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(\lambda 
32885 (_: T).(pr0 u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
32886 T).(\lambda (_: T).(\lambda (v2: T).(\lambda (_: T).(pr0 y1 v2))))))) 
32887 (\lambda (_: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
32888 T).(\lambda (t3: T).(pr0 z1 t3))))))) (or3 (ex3_2 T T (\lambda (u2: 
32889 T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32890 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t1 
32891 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32892 T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
32893 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
32894 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32895 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32896 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32897 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
32898 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
32899 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32900 T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind b) y1 z1)))))))) 
32901 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda 
32902 (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead (Flat Appl) (lift 
32903 (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
32904 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
32905 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32906 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
32907 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
32908 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x0: B).(\lambda (x1: 
32909 T).(\lambda (x2: T).(\lambda (x3: T).(\lambda (x4: T).(\lambda (x5: 
32910 T).(\lambda (H: (not (eq B x0 Abst))).(\lambda (H12: (eq T t1 (THead (Bind 
32911 x0) x1 x2))).(\lambda (H13: (eq T t2 (THead (Bind x0) x4 (THead (Flat Appl) 
32912 (lift (S O) O x3) x5)))).(\lambda (H14: (pr0 u1 x3)).(\lambda (H15: (pr0 x1 
32913 x4)).(\lambda (H16: (pr0 x2 x5)).(let H17 \def (eq_ind T t2 (\lambda (t: 
32914 T).(subst0 i u t x)) H10 (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O 
32915 x3) x5)) H13) in (eq_ind_r T (THead (Bind x0) x1 x2) (\lambda (t1: T).(or3 
32916 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 
32917 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
32918 T).(\lambda (t3: T).(pr2 c t1 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
32919 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 (THead (Bind Abst) y1 
32920 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
32921 T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
32922 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
32923 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
32924 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
32925 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32926 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
32927 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T t1 
32928 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
32929 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) 
32930 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
32931 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
32932 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32933 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32934 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32935 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (or3_ind (ex2 T (\lambda 
32936 (u2: T).(eq T x (THead (Bind x0) u2 (THead (Flat Appl) (lift (S O) O x3) 
32937 x5)))) (\lambda (u2: T).(subst0 i u x4 u2))) (ex2 T (\lambda (t3: T).(eq T x 
32938 (THead (Bind x0) x4 t3))) (\lambda (t3: T).(subst0 (s (Bind x0) i) u (THead 
32939 (Flat Appl) (lift (S O) O x3) x5) t3))) (ex3_2 T T (\lambda (u2: T).(\lambda 
32940 (t3: T).(eq T x (THead (Bind x0) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
32941 T).(subst0 i u x4 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s (Bind x0) 
32942 i) u (THead (Flat Appl) (lift (S O) O x3) x5) t3)))) (or3 (ex3_2 T T (\lambda 
32943 (u2: T).(\lambda (t3: T).(eq T x (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
32944 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
32945 (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
32946 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
32947 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32948 (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
32949 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
32950 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
32951 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
32952 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32953 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
32954 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
32955 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
32956 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
32957 (y2: T).(eq T x (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
32958 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
32959 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
32960 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
32961 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
32962 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
32963 y2) z1 z2))))))))) (\lambda (H18: (ex2 T (\lambda (u2: T).(eq T x (THead 
32964 (Bind x0) u2 (THead (Flat Appl) (lift (S O) O x3) x5)))) (\lambda (u2: 
32965 T).(subst0 i u x4 u2)))).(ex2_ind T (\lambda (u2: T).(eq T x (THead (Bind x0) 
32966 u2 (THead (Flat Appl) (lift (S O) O x3) x5)))) (\lambda (u2: T).(subst0 i u 
32967 x4 u2)) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead 
32968 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
32969 (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 
32970 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq 
32971 T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
32972 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
32973 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
32974 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
32975 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
32976 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
32977 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
32978 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
32979 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
32980 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
32981 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead 
32982 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
32983 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
32984 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
32985 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
32986 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
32987 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x6: T).(\lambda 
32988 (H19: (eq T x (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x3) 
32989 x5)))).(\lambda (H20: (subst0 i u x4 x6)).(eq_ind_r T (THead (Bind x0) x6 
32990 (THead (Flat Appl) (lift (S O) O x3) x5)) (\lambda (t1: T).(or3 (ex3_2 T T 
32991 (\lambda (u2: T).(\lambda (t3: T).(eq T t1 (THead (Flat Appl) u2 t3)))) 
32992 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
32993 (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: 
32994 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 
32995 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
32996 (u2: T).(\lambda (t3: T).(eq T t1 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
32997 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
32998 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
32999 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
33000 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33001 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33002 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33003 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33004 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33005 T).(\lambda (y2: T).(eq T t1 (THead (Bind b) y2 (THead (Flat Appl) (lift (S 
33006 O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33007 (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
33008 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33009 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
33010 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
33011 y2) z1 z2)))))))))) (or3_intro2 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
33012 T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x3) x5)) (THead 
33013 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
33014 (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 
33015 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq 
33016 T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33017 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33018 x6 (THead (Flat Appl) (lift (S O) O x3) x5)) (THead (Bind Abbr) u2 t3)))))) 
33019 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33020 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: 
33021 T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) 
33022 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33023 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33024 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33025 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33026 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33027 T).(\lambda (y2: T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) 
33028 O x3) x5)) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
33029 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33030 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
33031 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33032 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
33033 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
33034 y2) z1 z2)))))))) (ex6_6_intro B T T T T T (\lambda (b: B).(\lambda (_: 
33035 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B 
33036 b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
33037 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33038 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33039 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind x0) x6 (THead 
33040 (Flat Appl) (lift (S O) O x3) x5)) (THead (Bind b) y2 (THead (Flat Appl) 
33041 (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
33042 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
33043 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33044 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
33045 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
33046 (CHead c (Bind b) y2) z1 z2))))))) x0 x1 x2 x5 x3 x6 H (refl_equal T (THead 
33047 (Bind x0) x1 x2)) (refl_equal T (THead (Bind x0) x6 (THead (Flat Appl) (lift 
33048 (S O) O x3) x5))) (pr2_free c u1 x3 H14) (pr2_delta c d u i H8 x1 x4 H15 x6 
33049 H20) (pr2_free (CHead c (Bind x0) x6) x2 x5 H16))) x H19)))) H18)) (\lambda 
33050 (H18: (ex2 T (\lambda (t2: T).(eq T x (THead (Bind x0) x4 t2))) (\lambda (t2: 
33051 T).(subst0 (s (Bind x0) i) u (THead (Flat Appl) (lift (S O) O x3) x5) 
33052 t2)))).(ex2_ind T (\lambda (t3: T).(eq T x (THead (Bind x0) x4 t3))) (\lambda 
33053 (t3: T).(subst0 (s (Bind x0) i) u (THead (Flat Appl) (lift (S O) O x3) x5) 
33054 t3)) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Flat 
33055 Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
33056 T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T 
33057 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33058 (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33059 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
33060 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33061 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
33062 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
33063 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
33064 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
33065 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
33066 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33067 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33068 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead 
33069 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33070 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33071 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33072 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33073 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33074 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x6: T).(\lambda 
33075 (H19: (eq T x (THead (Bind x0) x4 x6))).(\lambda (H20: (subst0 (s (Bind x0) 
33076 i) u (THead (Flat Appl) (lift (S O) O x3) x5) x6)).(eq_ind_r T (THead (Bind 
33077 x0) x4 x6) (\lambda (t1: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
33078 T).(eq T t1 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
33079 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) 
33080 x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
33081 T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 
33082 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
33083 T).(eq T t1 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
33084 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
33085 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
33086 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
33087 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33088 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
33089 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33090 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
33091 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
33092 (y2: T).(eq T t1 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
33093 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33094 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
33095 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33096 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
33097 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
33098 y2) z1 z2)))))))))) (or3_ind (ex2 T (\lambda (u2: T).(eq T x6 (THead (Flat 
33099 Appl) u2 x5))) (\lambda (u2: T).(subst0 (s (Bind x0) i) u (lift (S O) O x3) 
33100 u2))) (ex2 T (\lambda (t3: T).(eq T x6 (THead (Flat Appl) (lift (S O) O x3) 
33101 t3))) (\lambda (t3: T).(subst0 (s (Flat Appl) (s (Bind x0) i)) u x5 t3))) 
33102 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x6 (THead (Flat Appl) u2 
33103 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 (s (Bind x0) i) u (lift (S O) 
33104 O x3) u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s (Flat Appl) (s (Bind 
33105 x0) i)) u x5 t3)))) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
33106 (THead (Bind x0) x4 x6) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
33107 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
33108 (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
33109 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33110 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33111 (t3: T).(eq T (THead (Bind x0) x4 x6) (THead (Bind Abbr) u2 t3)))))) (\lambda 
33112 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
33113 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
33114 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
33115 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33116 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33117 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33118 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33119 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33120 T).(\lambda (y2: T).(eq T (THead (Bind x0) x4 x6) (THead (Bind b) y2 (THead 
33121 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33122 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33123 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33124 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33125 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33126 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (H21: (ex2 T 
33127 (\lambda (u2: T).(eq T x6 (THead (Flat Appl) u2 x5))) (\lambda (u2: 
33128 T).(subst0 (s (Bind x0) i) u (lift (S O) O x3) u2)))).(ex2_ind T (\lambda 
33129 (u2: T).(eq T x6 (THead (Flat Appl) u2 x5))) (\lambda (u2: T).(subst0 (s 
33130 (Bind x0) i) u (lift (S O) O x3) u2)) (or3 (ex3_2 T T (\lambda (u2: 
33131 T).(\lambda (t3: T).(eq T (THead (Bind x0) x4 x6) (THead (Flat Appl) u2 
33132 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
33133 T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T 
33134 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33135 (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33136 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33137 x4 x6) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
33138 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
33139 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
33140 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
33141 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33142 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
33143 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33144 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
33145 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
33146 (y2: T).(eq T (THead (Bind x0) x4 x6) (THead (Bind b) y2 (THead (Flat Appl) 
33147 (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
33148 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
33149 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33150 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
33151 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
33152 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x: T).(\lambda (H22: (eq T x6 
33153 (THead (Flat Appl) x x5))).(\lambda (H23: (subst0 (s (Bind x0) i) u (lift (S 
33154 O) O x3) x)).(eq_ind_r T (THead (Flat Appl) x x5) (\lambda (t1: T).(or3 
33155 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) x4 t1) 
33156 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
33157 (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 
33158 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq 
33159 T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33160 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33161 x4 t1) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
33162 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
33163 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
33164 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
33165 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33166 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
33167 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33168 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
33169 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
33170 (y2: T).(eq T (THead (Bind x0) x4 t1) (THead (Bind b) y2 (THead (Flat Appl) 
33171 (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
33172 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
33173 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33174 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
33175 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
33176 (CHead c (Bind b) y2) z1 z2)))))))))) (ex2_ind T (\lambda (t3: T).(eq T x 
33177 (lift (S O) O t3))) (\lambda (t3: T).(subst0 (minus (s (Bind x0) i) (S O)) u 
33178 x3 t3)) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind 
33179 x0) x4 (THead (Flat Appl) x x5)) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
33180 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
33181 (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
33182 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33183 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33184 (t3: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) x x5)) (THead (Bind 
33185 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33186 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
33187 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
33188 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
33189 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
33190 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
33191 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33192 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33193 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind x0) x4 (THead 
33194 (Flat Appl) x x5)) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
33195 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33196 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
33197 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33198 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
33199 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
33200 y2) z1 z2))))))))) (\lambda (x7: T).(\lambda (H24: (eq T x (lift (S O) O 
33201 x7))).(\lambda (H25: (subst0 (minus (s (Bind x0) i) (S O)) u x3 x7)).(let H26 
33202 \def (eq_ind nat (minus (s (Bind x0) i) (S O)) (\lambda (n: nat).(subst0 n u 
33203 x3 x7)) H25 i (s_arith1 x0 i)) in (eq_ind_r T (lift (S O) O x7) (\lambda (t1: 
33204 T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33205 x4 (THead (Flat Appl) t1 x5)) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
33206 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
33207 (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
33208 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33209 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33210 (t3: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) t1 x5)) (THead (Bind 
33211 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33212 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
33213 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
33214 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
33215 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
33216 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
33217 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33218 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33219 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind x0) x4 (THead 
33220 (Flat Appl) t1 x5)) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
33221 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33222 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
33223 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33224 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
33225 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
33226 y2) z1 z2)))))))))) (or3_intro2 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
33227 T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x7) x5)) (THead 
33228 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
33229 (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 
33230 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq 
33231 T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33232 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33233 x4 (THead (Flat Appl) (lift (S O) O x7) x5)) (THead (Bind Abbr) u2 t3)))))) 
33234 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33235 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: 
33236 T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) 
33237 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33238 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33239 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33240 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33241 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33242 T).(\lambda (y2: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) 
33243 O x7) x5)) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
33244 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33245 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
33246 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33247 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
33248 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
33249 y2) z1 z2)))))))) (ex6_6_intro B T T T T T (\lambda (b: B).(\lambda (_: 
33250 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B 
33251 b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
33252 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33253 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33254 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind x0) x4 (THead 
33255 (Flat Appl) (lift (S O) O x7) x5)) (THead (Bind b) y2 (THead (Flat Appl) 
33256 (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
33257 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
33258 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33259 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
33260 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
33261 (CHead c (Bind b) y2) z1 z2))))))) x0 x1 x2 x5 x7 x4 H (refl_equal T (THead 
33262 (Bind x0) x1 x2)) (refl_equal T (THead (Bind x0) x4 (THead (Flat Appl) (lift 
33263 (S O) O x7) x5))) (pr2_delta c d u i H8 u1 x3 H14 x7 H26) (pr2_free c x1 x4 
33264 H15) (pr2_free (CHead c (Bind x0) x4) x2 x5 H16))) x H24))))) 
33265 (subst0_gen_lift_ge u x3 x (s (Bind x0) i) (S O) O H23 (le_S_n (S O) (S i) 
33266 (lt_le_S (S O) (S (S i)) (lt_n_S O (S i) (le_lt_n_Sm O i (le_O_n i))))))) x6 
33267 H22)))) H21)) (\lambda (H21: (ex2 T (\lambda (t2: T).(eq T x6 (THead (Flat 
33268 Appl) (lift (S O) O x3) t2))) (\lambda (t2: T).(subst0 (s (Flat Appl) (s 
33269 (Bind x0) i)) u x5 t2)))).(ex2_ind T (\lambda (t3: T).(eq T x6 (THead (Flat 
33270 Appl) (lift (S O) O x3) t3))) (\lambda (t3: T).(subst0 (s (Flat Appl) (s 
33271 (Bind x0) i)) u x5 t3)) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq 
33272 T (THead (Bind x0) x4 x6) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
33273 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
33274 (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
33275 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33276 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33277 (t3: T).(eq T (THead (Bind x0) x4 x6) (THead (Bind Abbr) u2 t3)))))) (\lambda 
33278 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
33279 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
33280 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
33281 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33282 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33283 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33284 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33285 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33286 T).(\lambda (y2: T).(eq T (THead (Bind x0) x4 x6) (THead (Bind b) y2 (THead 
33287 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33288 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33289 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33290 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33291 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33292 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x: T).(\lambda 
33293 (H22: (eq T x6 (THead (Flat Appl) (lift (S O) O x3) x))).(\lambda (H23: 
33294 (subst0 (s (Flat Appl) (s (Bind x0) i)) u x5 x)).(eq_ind_r T (THead (Flat 
33295 Appl) (lift (S O) O x3) x) (\lambda (t1: T).(or3 (ex3_2 T T (\lambda (u2: 
33296 T).(\lambda (t3: T).(eq T (THead (Bind x0) x4 t1) (THead (Flat Appl) u2 
33297 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
33298 T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T 
33299 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33300 (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33301 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33302 x4 t1) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
33303 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
33304 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
33305 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
33306 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33307 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
33308 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33309 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
33310 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
33311 (y2: T).(eq T (THead (Bind x0) x4 t1) (THead (Bind b) y2 (THead (Flat Appl) 
33312 (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
33313 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
33314 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33315 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
33316 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
33317 (CHead c (Bind b) y2) z1 z2)))))))))) (or3_intro2 (ex3_2 T T (\lambda (u2: 
33318 T).(\lambda (t3: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) 
33319 O x3) x)) (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
33320 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) 
33321 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
33322 T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 
33323 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
33324 T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x3) x)) (THead 
33325 (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33326 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
33327 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 
33328 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
33329 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33330 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
33331 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind 
33332 x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
33333 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
33334 (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x3) x)) (THead (Bind b) 
33335 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
33336 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
33337 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33338 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33339 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33340 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) (ex6_6_intro B T T T T T 
33341 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33342 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
33343 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33344 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
33345 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
33346 (y2: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x3) x)) 
33347 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda 
33348 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33349 T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
33350 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
33351 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
33352 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))) 
33353 x0 x1 x2 x x3 x4 H (refl_equal T (THead (Bind x0) x1 x2)) (refl_equal T 
33354 (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x3) x))) (pr2_free c u1 
33355 x3 H14) (pr2_free c x1 x4 H15) (pr2_delta (CHead c (Bind x0) x4) d u (S i) 
33356 (getl_clear_bind x0 (CHead c (Bind x0) x4) c x4 (clear_bind x0 c x4) (CHead d 
33357 (Bind Abbr) u) i H8) x2 x5 H16 x H23))) x6 H22)))) H21)) (\lambda (H21: 
33358 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x6 (THead (Flat Appl) u2 
33359 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 (s (Bind x0) i) u (lift (S O) 
33360 O x3) u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Flat Appl) (s (Bind 
33361 x0) i)) u x5 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
33362 x6 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 (s 
33363 (Bind x0) i) u (lift (S O) O x3) u2))) (\lambda (_: T).(\lambda (t3: 
33364 T).(subst0 (s (Flat Appl) (s (Bind x0) i)) u x5 t3))) (or3 (ex3_2 T T 
33365 (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) x4 x6) (THead (Flat 
33366 Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
33367 T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T 
33368 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33369 (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33370 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33371 x4 x6) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
33372 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
33373 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
33374 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
33375 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33376 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
33377 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33378 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
33379 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
33380 (y2: T).(eq T (THead (Bind x0) x4 x6) (THead (Bind b) y2 (THead (Flat Appl) 
33381 (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
33382 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
33383 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33384 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
33385 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
33386 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x7: T).(\lambda (x8: 
33387 T).(\lambda (H22: (eq T x6 (THead (Flat Appl) x7 x8))).(\lambda (H23: (subst0 
33388 (s (Bind x0) i) u (lift (S O) O x3) x7)).(\lambda (H24: (subst0 (s (Flat 
33389 Appl) (s (Bind x0) i)) u x5 x8)).(eq_ind_r T (THead (Flat Appl) x7 x8) 
33390 (\lambda (t1: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
33391 (THead (Bind x0) x4 t1) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
33392 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
33393 (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
33394 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33395 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33396 (t3: T).(eq T (THead (Bind x0) x4 t1) (THead (Bind Abbr) u2 t3)))))) (\lambda 
33397 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
33398 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
33399 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
33400 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33401 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33402 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33403 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33404 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33405 T).(\lambda (y2: T).(eq T (THead (Bind x0) x4 t1) (THead (Bind b) y2 (THead 
33406 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33407 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33408 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33409 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33410 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33411 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (ex2_ind T (\lambda (t3: 
33412 T).(eq T x7 (lift (S O) O t3))) (\lambda (t3: T).(subst0 (minus (s (Bind x0) 
33413 i) (S O)) u x3 t3)) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
33414 (THead (Bind x0) x4 (THead (Flat Appl) x7 x8)) (THead (Flat Appl) u2 t3)))) 
33415 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
33416 (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: 
33417 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 
33418 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
33419 (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) x7 x8)) 
33420 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33421 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
33422 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 
33423 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
33424 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33425 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
33426 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind 
33427 x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
33428 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
33429 (THead (Bind x0) x4 (THead (Flat Appl) x7 x8)) (THead (Bind b) y2 (THead 
33430 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33431 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33432 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33433 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33434 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33435 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x: T).(\lambda 
33436 (H25: (eq T x7 (lift (S O) O x))).(\lambda (H26: (subst0 (minus (s (Bind x0) 
33437 i) (S O)) u x3 x)).(let H27 \def (eq_ind nat (minus (s (Bind x0) i) (S O)) 
33438 (\lambda (n: nat).(subst0 n u x3 x)) H26 i (s_arith1 x0 i)) in (eq_ind_r T 
33439 (lift (S O) O x) (\lambda (t1: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda 
33440 (t3: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) t1 x8)) (THead (Flat 
33441 Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
33442 T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T 
33443 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33444 (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33445 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33446 x4 (THead (Flat Appl) t1 x8)) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
33447 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
33448 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
33449 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
33450 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33451 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33452 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33453 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33454 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33455 T).(\lambda (y2: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) t1 x8)) 
33456 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda 
33457 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33458 T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
33459 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
33460 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
33461 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 
33462 z2)))))))))) (or3_intro2 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
33463 (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x) x8)) (THead (Flat 
33464 Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
33465 T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T 
33466 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33467 (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33468 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33469 x4 (THead (Flat Appl) (lift (S O) O x) x8)) (THead (Bind Abbr) u2 t3)))))) 
33470 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33471 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: 
33472 T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) 
33473 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33474 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33475 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33476 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33477 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33478 T).(\lambda (y2: T).(eq T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) 
33479 O x) x8)) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) 
33480 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33481 T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
33482 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
33483 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
33484 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) 
33485 (ex6_6_intro B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
33486 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) 
33487 (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
33488 (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 
33489 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: 
33490 T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind x0) x4 (THead (Flat 
33491 Appl) (lift (S O) O x) x8)) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) 
33492 O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33493 (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
33494 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33495 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
33496 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
33497 y2) z1 z2))))))) x0 x1 x2 x8 x x4 H (refl_equal T (THead (Bind x0) x1 x2)) 
33498 (refl_equal T (THead (Bind x0) x4 (THead (Flat Appl) (lift (S O) O x) x8))) 
33499 (pr2_delta c d u i H8 u1 x3 H14 x H27) (pr2_free c x1 x4 H15) (pr2_delta 
33500 (CHead c (Bind x0) x4) d u (S i) (getl_clear_bind x0 (CHead c (Bind x0) x4) c 
33501 x4 (clear_bind x0 c x4) (CHead d (Bind Abbr) u) i H8) x2 x5 H16 x8 H24))) x7 
33502 H25))))) (subst0_gen_lift_ge u x3 x7 (s (Bind x0) i) (S O) O H23 (le_S_n (S 
33503 O) (S i) (lt_le_S (S O) (S (S i)) (lt_n_S O (S i) (le_lt_n_Sm O i (le_O_n 
33504 i))))))) x6 H22)))))) H21)) (subst0_gen_head (Flat Appl) u (lift (S O) O x3) 
33505 x5 x6 (s (Bind x0) i) H20)) x H19)))) H18)) (\lambda (H18: (ex3_2 T T 
33506 (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind x0) u2 t2)))) (\lambda 
33507 (u2: T).(\lambda (_: T).(subst0 i u x4 u2))) (\lambda (_: T).(\lambda (t2: 
33508 T).(subst0 (s (Bind x0) i) u (THead (Flat Appl) (lift (S O) O x3) x5) 
33509 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
33510 x0) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u x4 u2))) (\lambda 
33511 (_: T).(\lambda (t3: T).(subst0 (s (Bind x0) i) u (THead (Flat Appl) (lift (S 
33512 O) O x3) x5) t3))) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
33513 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
33514 (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 
33515 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq 
33516 T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33517 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
33518 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33519 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
33520 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
33521 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
33522 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
33523 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
33524 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33525 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33526 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x (THead (Bind b) y2 (THead 
33527 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33528 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33529 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33530 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33531 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33532 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x6: T).(\lambda 
33533 (x7: T).(\lambda (H19: (eq T x (THead (Bind x0) x6 x7))).(\lambda (H20: 
33534 (subst0 i u x4 x6)).(\lambda (H21: (subst0 (s (Bind x0) i) u (THead (Flat 
33535 Appl) (lift (S O) O x3) x5) x7)).(eq_ind_r T (THead (Bind x0) x6 x7) (\lambda 
33536 (t1: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t1 (THead 
33537 (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
33538 (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 
33539 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq 
33540 T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33541 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T t1 (THead (Bind 
33542 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33543 (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
33544 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
33545 u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
33546 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
33547 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
33548 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33549 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33550 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T t1 (THead (Bind b) y2 (THead 
33551 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33552 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33553 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33554 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33555 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33556 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (or3_ind (ex2 T (\lambda 
33557 (u2: T).(eq T x7 (THead (Flat Appl) u2 x5))) (\lambda (u2: T).(subst0 (s 
33558 (Bind x0) i) u (lift (S O) O x3) u2))) (ex2 T (\lambda (t3: T).(eq T x7 
33559 (THead (Flat Appl) (lift (S O) O x3) t3))) (\lambda (t3: T).(subst0 (s (Flat 
33560 Appl) (s (Bind x0) i)) u x5 t3))) (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
33561 T).(eq T x7 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
33562 T).(subst0 (s (Bind x0) i) u (lift (S O) O x3) u2))) (\lambda (_: T).(\lambda 
33563 (t3: T).(subst0 (s (Flat Appl) (s (Bind x0) i)) u x5 t3)))) (or3 (ex3_2 T T 
33564 (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) x6 x7) (THead (Flat 
33565 Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
33566 T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T 
33567 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33568 (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33569 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33570 x6 x7) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
33571 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
33572 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
33573 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
33574 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33575 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
33576 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33577 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
33578 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
33579 (y2: T).(eq T (THead (Bind x0) x6 x7) (THead (Bind b) y2 (THead (Flat Appl) 
33580 (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
33581 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
33582 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33583 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
33584 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
33585 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (H22: (ex2 T (\lambda (u2: 
33586 T).(eq T x7 (THead (Flat Appl) u2 x5))) (\lambda (u2: T).(subst0 (s (Bind x0) 
33587 i) u (lift (S O) O x3) u2)))).(ex2_ind T (\lambda (u2: T).(eq T x7 (THead 
33588 (Flat Appl) u2 x5))) (\lambda (u2: T).(subst0 (s (Bind x0) i) u (lift (S O) O 
33589 x3) u2)) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind 
33590 x0) x6 x7) (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
33591 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) 
33592 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
33593 T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 
33594 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
33595 T).(eq T (THead (Bind x0) x6 x7) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
33596 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
33597 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
33598 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
33599 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33600 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33601 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33602 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33603 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33604 T).(\lambda (y2: T).(eq T (THead (Bind x0) x6 x7) (THead (Bind b) y2 (THead 
33605 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33606 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33607 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33608 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33609 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33610 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x: T).(\lambda 
33611 (H23: (eq T x7 (THead (Flat Appl) x x5))).(\lambda (H24: (subst0 (s (Bind x0) 
33612 i) u (lift (S O) O x3) x)).(eq_ind_r T (THead (Flat Appl) x x5) (\lambda (t1: 
33613 T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33614 x6 t1) (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c 
33615 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) 
33616 t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
33617 T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 
33618 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
33619 T).(eq T (THead (Bind x0) x6 t1) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
33620 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
33621 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
33622 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
33623 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33624 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33625 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33626 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33627 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33628 T).(\lambda (y2: T).(eq T (THead (Bind x0) x6 t1) (THead (Bind b) y2 (THead 
33629 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33630 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33631 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33632 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33633 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33634 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (ex2_ind T (\lambda (t3: 
33635 T).(eq T x (lift (S O) O t3))) (\lambda (t3: T).(subst0 (minus (s (Bind x0) 
33636 i) (S O)) u x3 t3)) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
33637 (THead (Bind x0) x6 (THead (Flat Appl) x x5)) (THead (Flat Appl) u2 t3)))) 
33638 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
33639 (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: 
33640 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 
33641 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
33642 (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) x x5)) 
33643 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33644 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
33645 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 
33646 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
33647 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33648 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
33649 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind 
33650 x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
33651 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
33652 (THead (Bind x0) x6 (THead (Flat Appl) x x5)) (THead (Bind b) y2 (THead (Flat 
33653 Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda 
33654 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
33655 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33656 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
33657 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
33658 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x8: T).(\lambda (H25: (eq T x 
33659 (lift (S O) O x8))).(\lambda (H26: (subst0 (minus (s (Bind x0) i) (S O)) u x3 
33660 x8)).(let H27 \def (eq_ind nat (minus (s (Bind x0) i) (S O)) (\lambda (n: 
33661 nat).(subst0 n u x3 x8)) H26 i (s_arith1 x0 i)) in (eq_ind_r T (lift (S O) O 
33662 x8) (\lambda (t1: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
33663 (THead (Bind x0) x6 (THead (Flat Appl) t1 x5)) (THead (Flat Appl) u2 t3)))) 
33664 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
33665 (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: 
33666 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 
33667 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
33668 (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) t1 x5)) 
33669 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33670 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
33671 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 
33672 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
33673 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33674 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
33675 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind 
33676 x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
33677 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
33678 (THead (Bind x0) x6 (THead (Flat Appl) t1 x5)) (THead (Bind b) y2 (THead 
33679 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33680 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33681 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33682 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33683 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33684 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (or3_intro2 (ex3_2 T T 
33685 (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) x6 (THead (Flat 
33686 Appl) (lift (S O) O x8) x5)) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
33687 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
33688 (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
33689 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33690 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33691 (t3: T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x8) x5)) 
33692 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33693 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
33694 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 
33695 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
33696 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33697 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
33698 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind 
33699 x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
33700 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
33701 (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x8) x5)) (THead (Bind b) 
33702 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
33703 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
33704 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33705 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33706 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33707 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) (ex6_6_intro B T T T T T 
33708 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33709 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
33710 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33711 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
33712 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
33713 (y2: T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x8) x5)) 
33714 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda 
33715 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33716 T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
33717 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
33718 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
33719 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))) 
33720 x0 x1 x2 x5 x8 x6 H (refl_equal T (THead (Bind x0) x1 x2)) (refl_equal T 
33721 (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x8) x5))) (pr2_delta c d 
33722 u i H8 u1 x3 H14 x8 H27) (pr2_delta c d u i H8 x1 x4 H15 x6 H20) (pr2_free 
33723 (CHead c (Bind x0) x6) x2 x5 H16))) x H25))))) (subst0_gen_lift_ge u x3 x (s 
33724 (Bind x0) i) (S O) O H24 (le_S_n (S O) (S i) (lt_le_S (S O) (S (S i)) (lt_n_S 
33725 O (S i) (le_lt_n_Sm O i (le_O_n i))))))) x7 H23)))) H22)) (\lambda (H22: (ex2 
33726 T (\lambda (t2: T).(eq T x7 (THead (Flat Appl) (lift (S O) O x3) t2))) 
33727 (\lambda (t2: T).(subst0 (s (Flat Appl) (s (Bind x0) i)) u x5 t2)))).(ex2_ind 
33728 T (\lambda (t3: T).(eq T x7 (THead (Flat Appl) (lift (S O) O x3) t3))) 
33729 (\lambda (t3: T).(subst0 (s (Flat Appl) (s (Bind x0) i)) u x5 t3)) (or3 
33730 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) x6 x7) 
33731 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
33732 (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 
33733 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq 
33734 T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33735 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33736 x6 x7) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
33737 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
33738 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
33739 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
33740 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33741 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
33742 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33743 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
33744 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
33745 (y2: T).(eq T (THead (Bind x0) x6 x7) (THead (Bind b) y2 (THead (Flat Appl) 
33746 (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
33747 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
33748 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33749 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
33750 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
33751 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x: T).(\lambda (H23: (eq T x7 
33752 (THead (Flat Appl) (lift (S O) O x3) x))).(\lambda (H24: (subst0 (s (Flat 
33753 Appl) (s (Bind x0) i)) u x5 x)).(eq_ind_r T (THead (Flat Appl) (lift (S O) O 
33754 x3) x) (\lambda (t1: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq 
33755 T (THead (Bind x0) x6 t1) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
33756 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
33757 (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
33758 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33759 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33760 (t3: T).(eq T (THead (Bind x0) x6 t1) (THead (Bind Abbr) u2 t3)))))) (\lambda 
33761 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
33762 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
33763 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
33764 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33765 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33766 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33767 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33768 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33769 T).(\lambda (y2: T).(eq T (THead (Bind x0) x6 t1) (THead (Bind b) y2 (THead 
33770 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33771 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33772 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33773 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33774 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33775 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (or3_intro2 (ex3_2 T T 
33776 (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) x6 (THead (Flat 
33777 Appl) (lift (S O) O x3) x)) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
33778 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
33779 (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
33780 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33781 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33782 (t3: T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x3) x)) 
33783 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33784 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
33785 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 
33786 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
33787 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33788 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
33789 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind 
33790 x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
33791 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
33792 (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x3) x)) (THead (Bind b) 
33793 y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda 
33794 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 
33795 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33796 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33797 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33798 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) (ex6_6_intro B T T T T T 
33799 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33800 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
33801 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33802 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
33803 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
33804 (y2: T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x3) x)) 
33805 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda 
33806 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33807 T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
33808 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
33809 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
33810 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))) 
33811 x0 x1 x2 x x3 x6 H (refl_equal T (THead (Bind x0) x1 x2)) (refl_equal T 
33812 (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x3) x))) (pr2_free c u1 
33813 x3 H14) (pr2_delta c d u i H8 x1 x4 H15 x6 H20) (pr2_delta (CHead c (Bind x0) 
33814 x6) d u (S i) (getl_clear_bind x0 (CHead c (Bind x0) x6) c x6 (clear_bind x0 
33815 c x6) (CHead d (Bind Abbr) u) i H8) x2 x5 H16 x H24))) x7 H23)))) H22)) 
33816 (\lambda (H22: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x7 (THead 
33817 (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 (s (Bind x0) 
33818 i) u (lift (S O) O x3) u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s 
33819 (Flat Appl) (s (Bind x0) i)) u x5 t2))))).(ex3_2_ind T T (\lambda (u2: 
33820 T).(\lambda (t3: T).(eq T x7 (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
33821 T).(\lambda (_: T).(subst0 (s (Bind x0) i) u (lift (S O) O x3) u2))) (\lambda 
33822 (_: T).(\lambda (t3: T).(subst0 (s (Flat Appl) (s (Bind x0) i)) u x5 t3))) 
33823 (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) x6 
33824 x7) (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33825 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) 
33826 (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
33827 T).(eq T (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33828 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33829 x6 x7) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
33830 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: 
33831 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
33832 (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
33833 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33834 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
33835 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33836 (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
33837 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
33838 (y2: T).(eq T (THead (Bind x0) x6 x7) (THead (Bind b) y2 (THead (Flat Appl) 
33839 (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
33840 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) 
33841 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33842 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
33843 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
33844 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x8: T).(\lambda (x9: 
33845 T).(\lambda (H23: (eq T x7 (THead (Flat Appl) x8 x9))).(\lambda (H24: (subst0 
33846 (s (Bind x0) i) u (lift (S O) O x3) x8)).(\lambda (H25: (subst0 (s (Flat 
33847 Appl) (s (Bind x0) i)) u x5 x9)).(eq_ind_r T (THead (Flat Appl) x8 x9) 
33848 (\lambda (t1: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
33849 (THead (Bind x0) x6 t1) (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
33850 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
33851 (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
33852 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind 
33853 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
33854 (t3: T).(eq T (THead (Bind x0) x6 t1) (THead (Bind Abbr) u2 t3)))))) (\lambda 
33855 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
33856 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
33857 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
33858 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33859 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33860 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33861 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33862 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33863 T).(\lambda (y2: T).(eq T (THead (Bind x0) x6 t1) (THead (Bind b) y2 (THead 
33864 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33865 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33866 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33867 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33868 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33869 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))))) (ex2_ind T (\lambda (t3: 
33870 T).(eq T x8 (lift (S O) O t3))) (\lambda (t3: T).(subst0 (minus (s (Bind x0) 
33871 i) (S O)) u x3 t3)) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
33872 (THead (Bind x0) x6 (THead (Flat Appl) x8 x9)) (THead (Flat Appl) u2 t3)))) 
33873 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
33874 (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T (\lambda (y1: 
33875 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 
33876 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
33877 (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) x8 x9)) 
33878 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33879 T).(\lambda (_: T).(pr2 c u1 u2))))) (\lambda (_: T).(\lambda (z1: 
33880 T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 
33881 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T T (\lambda (b: 
33882 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33883 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
33884 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Bind 
33885 x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
33886 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
33887 (THead (Bind x0) x6 (THead (Flat Appl) x8 x9)) (THead (Bind b) y2 (THead 
33888 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
33889 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33890 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
33891 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
33892 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
33893 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda (x: T).(\lambda 
33894 (H26: (eq T x8 (lift (S O) O x))).(\lambda (H27: (subst0 (minus (s (Bind x0) 
33895 i) (S O)) u x3 x)).(let H28 \def (eq_ind nat (minus (s (Bind x0) i) (S O)) 
33896 (\lambda (n: nat).(subst0 n u x3 x)) H27 i (s_arith1 x0 i)) in (eq_ind_r T 
33897 (lift (S O) O x) (\lambda (t1: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda 
33898 (t3: T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) t1 x9)) (THead (Flat 
33899 Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
33900 T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T 
33901 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33902 (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33903 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33904 x6 (THead (Flat Appl) t1 x9)) (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
33905 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))) 
33906 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall 
33907 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T 
33908 T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
33909 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33910 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33911 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33912 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33913 T).(\lambda (y2: T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) t1 x9)) 
33914 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda 
33915 (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33916 T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
33917 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
33918 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
33919 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 
33920 z2)))))))))) (or3_intro2 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
33921 (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x) x9)) (THead (Flat 
33922 Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
33923 T).(\lambda (t3: T).(pr2 c (THead (Bind x0) x1 x2) t3)))) (ex4_4 T T T T 
33924 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
33925 (THead (Bind x0) x1 x2) (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
33926 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind x0) 
33927 x6 (THead (Flat Appl) (lift (S O) O x) x9)) (THead (Bind Abbr) u2 t3)))))) 
33928 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
33929 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: 
33930 T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) 
33931 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33932 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
33933 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33934 (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 z1)))))))) (\lambda 
33935 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
33936 T).(\lambda (y2: T).(eq T (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) 
33937 O x) x9)) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) 
33938 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
33939 T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: 
33940 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
33941 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
33942 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) 
33943 (ex6_6_intro B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
33944 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) 
33945 (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
33946 (_: T).(\lambda (_: T).(eq T (THead (Bind x0) x1 x2) (THead (Bind b) y1 
33947 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: 
33948 T).(\lambda (u2: T).(\lambda (y2: T).(eq T (THead (Bind x0) x6 (THead (Flat 
33949 Appl) (lift (S O) O x) x9)) (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) 
33950 O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
33951 (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))))))) (\lambda (_: 
33952 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
33953 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
33954 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
33955 y2) z1 z2))))))) x0 x1 x2 x9 x x6 H (refl_equal T (THead (Bind x0) x1 x2)) 
33956 (refl_equal T (THead (Bind x0) x6 (THead (Flat Appl) (lift (S O) O x) x9))) 
33957 (pr2_delta c d u i H8 u1 x3 H14 x H28) (pr2_delta c d u i H8 x1 x4 H15 x6 
33958 H20) (pr2_delta (CHead c (Bind x0) x6) d u (S i) (getl_clear_bind x0 (CHead c 
33959 (Bind x0) x6) c x6 (clear_bind x0 c x6) (CHead d (Bind Abbr) u) i H8) x2 x5 
33960 H16 x9 H25))) x8 H26))))) (subst0_gen_lift_ge u x3 x8 (s (Bind x0) i) (S O) O 
33961 H24 (le_S_n (S O) (S i) (lt_le_S (S O) (S (S i)) (lt_n_S O (S i) (le_lt_n_Sm 
33962 O i (le_O_n i))))))) x7 H23)))))) H22)) (subst0_gen_head (Flat Appl) u (lift 
33963 (S O) O x3) x5 x7 (s (Bind x0) i) H21)) x H19)))))) H18)) (subst0_gen_head 
33964 (Bind x0) u x4 (THead (Flat Appl) (lift (S O) O x3) x5) x i H17)) t1 
33965 H12)))))))))))))) H11)) (pr0_gen_appl u1 t1 t2 H9))))) t (sym_eq T t x H7))) 
33966 t0 (sym_eq T t0 (THead (Flat Appl) u1 t1) H6))) c0 (sym_eq C c0 c H3) H4 H5 
33967 H0 H1 H2))))]) in (H0 (refl_equal C c) (refl_equal T (THead (Flat Appl) u1 
33968 t1)) (refl_equal T x))))))).
33969
33970 theorem pr2_gen_abbr:
33971  \forall (c: C).(\forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr2 c 
33972 (THead (Bind Abbr) u1 t1) x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda 
33973 (t2: T).(eq T x (THead (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
33974 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(or3 (\forall (b: 
33975 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t2))) (ex2 T (\lambda (u: 
33976 T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) t1 t2))) (ex3_2 T 
33977 T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) 
33978 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
33979 T).(pr2 (CHead c (Bind Abbr) u1) z t2)))))))) (\forall (b: B).(\forall (u: 
33980 T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O x)))))))))
33981 \def
33982  \lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda 
33983 (H: (pr2 c (THead (Bind Abbr) u1 t1) x)).(let H0 \def (match H return 
33984 (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr2 c0 t 
33985 t0)).((eq C c0 c) \to ((eq T t (THead (Bind Abbr) u1 t1)) \to ((eq T t0 x) 
33986 \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind 
33987 Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
33988 T).(\lambda (t2: T).(or3 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind 
33989 b) u) t1 t2))) (ex2 T (\lambda (u: T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead 
33990 c (Bind Abbr) u) t1 t2))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 
33991 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) 
33992 (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t2)))))))) 
33993 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O 
33994 x)))))))))))) with [(pr2_free c0 t0 t2 H0) \Rightarrow (\lambda (H1: (eq C c0 
33995 c)).(\lambda (H2: (eq T t0 (THead (Bind Abbr) u1 t1))).(\lambda (H3: (eq T t2 
33996 x)).(eq_ind C c (\lambda (_: C).((eq T t0 (THead (Bind Abbr) u1 t1)) \to ((eq 
33997 T t2 x) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
33998 T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
33999 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u: 
34000 T).(pr2 (CHead c (Bind b) u) t1 t3))) (ex2 T (\lambda (u: T).(pr0 u1 u)) 
34001 (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) t1 t3))) (ex3_2 T T (\lambda (y: 
34002 T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: 
34003 T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c 
34004 (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u: T).(pr2 (CHead c 
34005 (Bind b) u) t1 (lift (S O) O x))))))))) (\lambda (H4: (eq T t0 (THead (Bind 
34006 Abbr) u1 t1))).(eq_ind T (THead (Bind Abbr) u1 t1) (\lambda (t: T).((eq T t2 
34007 x) \to ((pr0 t t2) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
34008 x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
34009 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u: 
34010 T).(pr2 (CHead c (Bind b) u) t1 t3))) (ex2 T (\lambda (u: T).(pr0 u1 u)) 
34011 (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) t1 t3))) (ex3_2 T T (\lambda (y: 
34012 T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: 
34013 T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c 
34014 (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u: T).(pr2 (CHead c 
34015 (Bind b) u) t1 (lift (S O) O x)))))))) (\lambda (H5: (eq T t2 x)).(eq_ind T x 
34016 (\lambda (t: T).((pr0 (THead (Bind Abbr) u1 t1) t) \to (or (ex3_2 T T 
34017 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) 
34018 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
34019 (t3: T).(or3 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 
34020 t3))) (ex2 T (\lambda (u: T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead c (Bind 
34021 Abbr) u) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c 
34022 (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda 
34023 (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall 
34024 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O x))))))) 
34025 (\lambda (H6: (pr0 (THead (Bind Abbr) u1 t1) x)).(or_ind (ex3_2 T T (\lambda 
34026 (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34027 T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (u2: T).(\lambda (t3: T).(or (pr0 
34028 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u2 y 
34029 t3))))))) (pr0 t1 (lift (S O) O x)) (or (ex3_2 T T (\lambda (u2: T).(\lambda 
34030 (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
34031 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: 
34032 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t3))) (ex2 T (\lambda (u: 
34033 T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) t1 t3))) (ex3_2 T 
34034 T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) 
34035 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
34036 T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u: 
34037 T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O x))))) (\lambda (H7: (ex3_2 T T 
34038 (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind Abbr) u2 t2)))) 
34039 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (u2: T).(\lambda (t2: 
34040 T).(or (pr0 t1 t2) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 
34041 O u2 y t2)))))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
34042 (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) 
34043 (\lambda (u2: T).(\lambda (t3: T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 
34044 t1 y)) (\lambda (y: T).(subst0 O u2 y t3)))))) (or (ex3_2 T T (\lambda (u2: 
34045 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34046 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 
34047 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t3))) (ex2 T 
34048 (\lambda (u: T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) t1 
34049 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34050 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34051 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: 
34052 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O x))))) (\lambda 
34053 (x0: T).(\lambda (x1: T).(\lambda (H: (eq T x (THead (Bind Abbr) x0 
34054 x1))).(\lambda (H8: (pr0 u1 x0)).(\lambda (H_x: (or (pr0 t1 x1) (ex2 T 
34055 (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O x0 y x1))))).(or_ind 
34056 (pr0 t1 x1) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O x0 y 
34057 x1))) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
34058 Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34059 T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind 
34060 b) u) t1 t3))) (ex2 T (\lambda (u: T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead 
34061 c (Bind Abbr) u) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 
34062 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) 
34063 (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) 
34064 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O 
34065 x))))) (\lambda (H9: (pr0 t1 x1)).(eq_ind_r T (THead (Bind Abbr) x0 x1) 
34066 (\lambda (t: T).(or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t 
34067 (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34068 (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u: T).(pr2 
34069 (CHead c (Bind b) u) t1 t3))) (ex2 T (\lambda (u: T).(pr0 u1 u)) (\lambda (u: 
34070 T).(pr2 (CHead c (Bind Abbr) u) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda 
34071 (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: 
34072 T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) 
34073 z t3)))))))) (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 
34074 (lift (S O) O t)))))) (or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
34075 T).(eq T (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34076 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 
34077 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t3))) (ex2 T 
34078 (\lambda (u: T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) t1 
34079 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34080 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34081 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: 
34082 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O (THead (Bind 
34083 Abbr) x0 x1))))) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
34084 (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34085 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 
34086 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t3))) (ex2 T 
34087 (\lambda (u: T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) t1 
34088 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34089 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34090 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3))))))) x0 x1 
34091 (refl_equal T (THead (Bind Abbr) x0 x1)) (pr2_free c u1 x0 H8) (or3_intro0 
34092 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 x1))) (ex2 T 
34093 (\lambda (u: T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) t1 
34094 x1))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34095 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34096 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z x1)))) (\lambda (b: 
34097 B).(\lambda (u: T).(pr2_free (CHead c (Bind b) u) t1 x1 H9)))))) x H)) 
34098 (\lambda (H_x0: (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O 
34099 x0 y x1)))).(ex2_ind T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O 
34100 x0 y x1)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead 
34101 (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34102 (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u: T).(pr2 
34103 (CHead c (Bind b) u) t1 t3))) (ex2 T (\lambda (u: T).(pr0 u1 u)) (\lambda (u: 
34104 T).(pr2 (CHead c (Bind Abbr) u) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda 
34105 (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: 
34106 T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) 
34107 z t3)))))))) (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 
34108 (lift (S O) O x))))) (\lambda (x2: T).(\lambda (H9: (pr0 t1 x2)).(\lambda 
34109 (H10: (subst0 O x0 x2 x1)).(eq_ind_r T (THead (Bind Abbr) x0 x1) (\lambda (t: 
34110 T).(or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t (THead (Bind 
34111 Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34112 T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind 
34113 b) u) t1 t3))) (ex2 T (\lambda (u: T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead 
34114 c (Bind Abbr) u) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 
34115 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) 
34116 (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) 
34117 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O 
34118 t)))))) (ex2_ind T (\lambda (t: T).(subst0 O u1 x2 t)) (\lambda (t: T).(pr0 t 
34119 x1)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind 
34120 Abbr) x0 x1) (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
34121 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: 
34122 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t3))) (ex2 T (\lambda (u: 
34123 T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) t1 t3))) (ex3_2 T 
34124 T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) 
34125 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
34126 T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u: 
34127 T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O (THead (Bind Abbr) x0 x1)))))) 
34128 (\lambda (x: T).(\lambda (_: (subst0 O u1 x2 x)).(\lambda (_: (pr0 x 
34129 x1)).(or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead 
34130 (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
34131 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: 
34132 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t3))) (ex2 T (\lambda (u: 
34133 T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) t1 t3))) (ex3_2 T 
34134 T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) 
34135 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
34136 T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u: 
34137 T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O (THead (Bind Abbr) x0 x1))))) 
34138 (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind Abbr) 
34139 x0 x1) (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c 
34140 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u: 
34141 T).(pr2 (CHead c (Bind b) u) t1 t3))) (ex2 T (\lambda (u: T).(pr0 u1 u)) 
34142 (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) t1 t3))) (ex3_2 T T (\lambda (y: 
34143 T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: 
34144 T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c 
34145 (Bind Abbr) u1) z t3))))))) x0 x1 (refl_equal T (THead (Bind Abbr) x0 x1)) 
34146 (pr2_free c u1 x0 H8) (or3_intro1 (\forall (b: B).(\forall (u: T).(pr2 (CHead 
34147 c (Bind b) u) t1 x1))) (ex2 T (\lambda (u: T).(pr0 u1 u)) (\lambda (u: 
34148 T).(pr2 (CHead c (Bind Abbr) u) t1 x1))) (ex3_2 T T (\lambda (y: T).(\lambda 
34149 (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: 
34150 T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) 
34151 z x1)))) (ex_intro2 T (\lambda (u: T).(pr0 u1 u)) (\lambda (u: T).(pr2 (CHead 
34152 c (Bind Abbr) u) t1 x1)) x0 H8 (pr2_delta (CHead c (Bind Abbr) x0) c x0 O 
34153 (getl_refl Abbr c x0) t1 x2 H9 x1 H10)))))))) (pr0_subst0_back x0 x2 x1 O H10 
34154 u1 H8)) x H)))) H_x0)) H_x)))))) H7)) (\lambda (H: (pr0 t1 (lift (S O) O 
34155 x))).(or_intror (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead 
34156 (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34157 (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u: T).(pr2 
34158 (CHead c (Bind b) u) t1 t3))) (ex2 T (\lambda (u: T).(pr0 u1 u)) (\lambda (u: 
34159 T).(pr2 (CHead c (Bind Abbr) u) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda 
34160 (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: 
34161 T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) 
34162 z t3)))))))) (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 
34163 (lift (S O) O x)))) (\lambda (b: B).(\lambda (u: T).(pr2_free (CHead c (Bind 
34164 b) u) t1 (lift (S O) O x) H))))) (pr0_gen_abbr u1 t1 x H6))) t2 (sym_eq T t2 
34165 x H5))) t0 (sym_eq T t0 (THead (Bind Abbr) u1 t1) H4))) c0 (sym_eq C c0 c H1) 
34166 H2 H3 H0)))) | (pr2_delta c0 d u i H0 t0 t2 H1 t H2) \Rightarrow (\lambda 
34167 (H3: (eq C c0 c)).(\lambda (H4: (eq T t0 (THead (Bind Abbr) u1 t1))).(\lambda 
34168 (H5: (eq T t x)).(eq_ind C c (\lambda (c1: C).((eq T t0 (THead (Bind Abbr) u1 
34169 t1)) \to ((eq T t x) \to ((getl i c1 (CHead d (Bind Abbr) u)) \to ((pr0 t0 
34170 t2) \to ((subst0 i u t2 t) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
34171 T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
34172 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall 
34173 (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 
34174 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T 
34175 (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) 
34176 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
34177 T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u0: 
34178 T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x))))))))))) (\lambda (H6: (eq 
34179 T t0 (THead (Bind Abbr) u1 t1))).(eq_ind T (THead (Bind Abbr) u1 t1) (\lambda 
34180 (t3: T).((eq T t x) \to ((getl i c (CHead d (Bind Abbr) u)) \to ((pr0 t3 t2) 
34181 \to ((subst0 i u t2 t) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t4: 
34182 T).(eq T x (THead (Bind Abbr) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
34183 c u1 u2))) (\lambda (_: T).(\lambda (t4: T).(or3 (\forall (b: B).(\forall 
34184 (u0: T).(pr2 (CHead c (Bind b) u0) t1 t4))) (ex2 T (\lambda (u0: T).(pr0 u1 
34185 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 t4))) (ex3_2 T T 
34186 (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) 
34187 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
34188 T).(pr2 (CHead c (Bind Abbr) u1) z t4)))))))) (\forall (b: B).(\forall (u0: 
34189 T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x)))))))))) (\lambda (H7: (eq 
34190 T t x)).(eq_ind T x (\lambda (t3: T).((getl i c (CHead d (Bind Abbr) u)) \to 
34191 ((pr0 (THead (Bind Abbr) u1 t1) t2) \to ((subst0 i u t2 t3) \to (or (ex3_2 T 
34192 T (\lambda (u2: T).(\lambda (t4: T).(eq T x (THead (Bind Abbr) u2 t4)))) 
34193 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
34194 (t4: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34195 t4))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c 
34196 (Bind Abbr) u0) t1 t4))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 
34197 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) 
34198 (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t4)))))))) 
34199 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O 
34200 x))))))))) (\lambda (H8: (getl i c (CHead d (Bind Abbr) u))).(\lambda (H9: 
34201 (pr0 (THead (Bind Abbr) u1 t1) t2)).(\lambda (H10: (subst0 i u t2 x)).(or_ind 
34202 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Abbr) u2 
34203 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (u2: 
34204 T).(\lambda (t3: T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) 
34205 (\lambda (y: T).(subst0 O u2 y t3))))))) (pr0 t1 (lift (S O) O t2)) (or 
34206 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 
34207 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34208 T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind 
34209 b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 
34210 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: 
34211 T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 
34212 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z 
34213 t3)))))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34214 (lift (S O) O x))))) (\lambda (H11: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
34215 T).(eq T t2 (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
34216 T).(pr0 u1 u2))) (\lambda (u2: T).(\lambda (t2: T).(or (pr0 t1 t2) (ex2 T 
34217 (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O u2 y 
34218 t2)))))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead 
34219 (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda 
34220 (u2: T).(\lambda (t3: T).(or (pr0 t1 t3) (ex2 T (\lambda (y: T).(pr0 t1 y)) 
34221 (\lambda (y: T).(subst0 O u2 y t3)))))) (or (ex3_2 T T (\lambda (u2: 
34222 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34223 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 
34224 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T 
34225 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34226 t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34227 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34228 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: 
34229 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x))))) 
34230 (\lambda (x0: T).(\lambda (x1: T).(\lambda (H: (eq T t2 (THead (Bind Abbr) x0 
34231 x1))).(\lambda (H12: (pr0 u1 x0)).(\lambda (H_x: (or (pr0 t1 x1) (ex2 T 
34232 (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O x0 y x1))))).(or_ind 
34233 (pr0 t1 x1) (ex2 T (\lambda (y: T).(pr0 t1 y)) (\lambda (y: T).(subst0 O x0 y 
34234 x1))) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
34235 Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34236 T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind 
34237 b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 
34238 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: 
34239 T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 
34240 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z 
34241 t3)))))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34242 (lift (S O) O x))))) (\lambda (H13: (pr0 t1 x1)).(let H14 \def (eq_ind T t2 
34243 (\lambda (t: T).(subst0 i u t x)) H10 (THead (Bind Abbr) x0 x1) H) in 
34244 (or3_ind (ex2 T (\lambda (u2: T).(eq T x (THead (Bind Abbr) u2 x1))) (\lambda 
34245 (u2: T).(subst0 i u x0 u2))) (ex2 T (\lambda (t3: T).(eq T x (THead (Bind 
34246 Abbr) x0 t3))) (\lambda (t3: T).(subst0 (s (Bind Abbr) i) u x1 t3))) (ex3_2 T 
34247 T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) 
34248 (\lambda (u2: T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: 
34249 T).(\lambda (t3: T).(subst0 (s (Bind Abbr) i) u x1 t3)))) (or (ex3_2 T T 
34250 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) 
34251 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
34252 (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34253 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c 
34254 (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 
34255 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) 
34256 (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) 
34257 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O 
34258 x))))) (\lambda (H15: (ex2 T (\lambda (u2: T).(eq T x (THead (Bind Abbr) u2 
34259 x1))) (\lambda (u2: T).(subst0 i u x0 u2)))).(ex2_ind T (\lambda (u2: T).(eq 
34260 T x (THead (Bind Abbr) u2 x1))) (\lambda (u2: T).(subst0 i u x0 u2)) (or 
34261 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 
34262 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34263 T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind 
34264 b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 
34265 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: 
34266 T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 
34267 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z 
34268 t3)))))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34269 (lift (S O) O x))))) (\lambda (x2: T).(\lambda (H16: (eq T x (THead (Bind 
34270 Abbr) x2 x1))).(\lambda (H17: (subst0 i u x0 x2)).(or_introl (ex3_2 T T 
34271 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) 
34272 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
34273 (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34274 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c 
34275 (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 
34276 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) 
34277 (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) 
34278 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O 
34279 x)))) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
34280 Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34281 T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind 
34282 b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 
34283 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: 
34284 T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 
34285 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z 
34286 t3))))))) x2 x1 H16 (pr2_delta c d u i H8 u1 x0 H12 x2 H17) (or3_intro0 
34287 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 x1))) (ex2 T 
34288 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34289 t1 x1))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34290 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34291 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z x1)))) (\lambda (b: 
34292 B).(\lambda (u0: T).(pr2_free (CHead c (Bind b) u0) t1 x1 H13))))))))) H15)) 
34293 (\lambda (H15: (ex2 T (\lambda (t2: T).(eq T x (THead (Bind Abbr) x0 t2))) 
34294 (\lambda (t2: T).(subst0 (s (Bind Abbr) i) u x1 t2)))).(ex2_ind T (\lambda 
34295 (t3: T).(eq T x (THead (Bind Abbr) x0 t3))) (\lambda (t3: T).(subst0 (s (Bind 
34296 Abbr) i) u x1 t3)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
34297 (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34298 (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 
34299 (CHead c (Bind b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda 
34300 (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: 
34301 T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: 
34302 T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c 
34303 (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c 
34304 (Bind b) u0) t1 (lift (S O) O x))))) (\lambda (x2: T).(\lambda (H16: (eq T x 
34305 (THead (Bind Abbr) x0 x2))).(\lambda (H17: (subst0 (s (Bind Abbr) i) u x1 
34306 x2)).(or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead 
34307 (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34308 (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 
34309 (CHead c (Bind b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda 
34310 (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: 
34311 T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: 
34312 T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c 
34313 (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c 
34314 (Bind b) u0) t1 (lift (S O) O x)))) (ex3_2_intro T T (\lambda (u2: 
34315 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34316 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 
34317 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T 
34318 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34319 t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34320 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34321 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3))))))) x0 x2 H16 
34322 (pr2_free c u1 x0 H12) (or3_intro0 (\forall (b: B).(\forall (u0: T).(pr2 
34323 (CHead c (Bind b) u0) t1 x2))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda 
34324 (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 x2))) (ex3_2 T T (\lambda (y: 
34325 T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: 
34326 T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c 
34327 (Bind Abbr) u1) z x2)))) (\lambda (b: B).(\lambda (u0: T).(pr2_delta (CHead c 
34328 (Bind b) u0) d u (S i) (getl_head (Bind b) i c (CHead d (Bind Abbr) u) H8 u0) 
34329 t1 x1 H13 x2 H17))))))))) H15)) (\lambda (H15: (ex3_2 T T (\lambda (u2: 
34330 T).(\lambda (t2: T).(eq T x (THead (Bind Abbr) u2 t2)))) (\lambda (u2: 
34331 T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: T).(\lambda (t2: 
34332 T).(subst0 (s (Bind Abbr) i) u x1 t2))))).(ex3_2_ind T T (\lambda (u2: 
34333 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34334 T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: T).(\lambda (t3: 
34335 T).(subst0 (s (Bind Abbr) i) u x1 t3))) (or (ex3_2 T T (\lambda (u2: 
34336 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34337 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 
34338 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T 
34339 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34340 t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34341 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34342 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: 
34343 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x))))) 
34344 (\lambda (x2: T).(\lambda (x3: T).(\lambda (H16: (eq T x (THead (Bind Abbr) 
34345 x2 x3))).(\lambda (H17: (subst0 i u x0 x2)).(\lambda (H18: (subst0 (s (Bind 
34346 Abbr) i) u x1 x3)).(or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
34347 T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
34348 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall 
34349 (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 
34350 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T 
34351 (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) 
34352 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
34353 T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u0: 
34354 T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x)))) (ex3_2_intro T T 
34355 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) 
34356 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
34357 (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34358 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c 
34359 (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 
34360 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) 
34361 (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3))))))) x2 
34362 x3 H16 (pr2_delta c d u i H8 u1 x0 H12 x2 H17) (or3_intro0 (\forall (b: 
34363 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 x3))) (ex2 T (\lambda (u0: 
34364 T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 x3))) 
34365 (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 
34366 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
34367 T).(pr2 (CHead c (Bind Abbr) u1) z x3)))) (\lambda (b: B).(\lambda (u0: 
34368 T).(pr2_delta (CHead c (Bind b) u0) d u (S i) (getl_head (Bind b) i c (CHead 
34369 d (Bind Abbr) u) H8 u0) t1 x1 H13 x3 H18))))))))))) H15)) (subst0_gen_head 
34370 (Bind Abbr) u x0 x1 x i H14)))) (\lambda (H_x0: (ex2 T (\lambda (y: T).(pr0 
34371 t1 y)) (\lambda (y: T).(subst0 O x0 y x1)))).(ex2_ind T (\lambda (y: T).(pr0 
34372 t1 y)) (\lambda (y: T).(subst0 O x0 y x1)) (or (ex3_2 T T (\lambda (u2: 
34373 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34374 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 
34375 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T 
34376 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34377 t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34378 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34379 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: 
34380 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x))))) 
34381 (\lambda (x2: T).(\lambda (H13: (pr0 t1 x2)).(\lambda (H14: (subst0 O x0 x2 
34382 x1)).(let H15 \def (eq_ind T t2 (\lambda (t: T).(subst0 i u t x)) H10 (THead 
34383 (Bind Abbr) x0 x1) H) in (or3_ind (ex2 T (\lambda (u2: T).(eq T x (THead 
34384 (Bind Abbr) u2 x1))) (\lambda (u2: T).(subst0 i u x0 u2))) (ex2 T (\lambda 
34385 (t3: T).(eq T x (THead (Bind Abbr) x0 t3))) (\lambda (t3: T).(subst0 (s (Bind 
34386 Abbr) i) u x1 t3))) (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
34387 (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u x0 
34388 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s (Bind Abbr) i) u x1 t3)))) 
34389 (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) 
34390 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34391 T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind 
34392 b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 
34393 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: 
34394 T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 
34395 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z 
34396 t3)))))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34397 (lift (S O) O x))))) (\lambda (H16: (ex2 T (\lambda (u2: T).(eq T x (THead 
34398 (Bind Abbr) u2 x1))) (\lambda (u2: T).(subst0 i u x0 u2)))).(ex2_ind T 
34399 (\lambda (u2: T).(eq T x (THead (Bind Abbr) u2 x1))) (\lambda (u2: T).(subst0 
34400 i u x0 u2)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead 
34401 (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34402 (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 
34403 (CHead c (Bind b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda 
34404 (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: 
34405 T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: 
34406 T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c 
34407 (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c 
34408 (Bind b) u0) t1 (lift (S O) O x))))) (\lambda (x3: T).(\lambda (H17: (eq T x 
34409 (THead (Bind Abbr) x3 x1))).(\lambda (H18: (subst0 i u x0 x3)).(ex2_ind T 
34410 (\lambda (t1: T).(subst0 O u1 x2 t1)) (\lambda (t1: T).(pr0 t1 x1)) (or 
34411 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 
34412 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34413 T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind 
34414 b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 
34415 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: 
34416 T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 
34417 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z 
34418 t3)))))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34419 (lift (S O) O x))))) (\lambda (x4: T).(\lambda (_: (subst0 O u1 x2 
34420 x4)).(\lambda (_: (pr0 x4 x1)).(or_introl (ex3_2 T T (\lambda (u2: 
34421 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34422 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 
34423 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T 
34424 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34425 t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34426 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34427 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: 
34428 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x)))) 
34429 (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) 
34430 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34431 T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind 
34432 b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 
34433 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: 
34434 T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 
34435 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z 
34436 t3))))))) x3 x1 H17 (pr2_delta c d u i H8 u1 x0 H12 x3 H18) (or3_intro1 
34437 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 x1))) (ex2 T 
34438 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34439 t1 x1))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34440 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34441 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z x1)))) (ex_intro2 T 
34442 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34443 t1 x1)) x0 H12 (pr2_delta (CHead c (Bind Abbr) x0) c x0 O (getl_refl Abbr c 
34444 x0) t1 x2 H13 x1 H14)))))))) (pr0_subst0_back x0 x2 x1 O H14 u1 H12))))) 
34445 H16)) (\lambda (H16: (ex2 T (\lambda (t2: T).(eq T x (THead (Bind Abbr) x0 
34446 t2))) (\lambda (t2: T).(subst0 (s (Bind Abbr) i) u x1 t2)))).(ex2_ind T 
34447 (\lambda (t3: T).(eq T x (THead (Bind Abbr) x0 t3))) (\lambda (t3: T).(subst0 
34448 (s (Bind Abbr) i) u x1 t3)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
34449 T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
34450 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall 
34451 (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 
34452 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T 
34453 (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) 
34454 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
34455 T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u0: 
34456 T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x))))) (\lambda (x3: 
34457 T).(\lambda (H17: (eq T x (THead (Bind Abbr) x0 x3))).(\lambda (H18: (subst0 
34458 (s (Bind Abbr) i) u x1 x3)).(ex2_ind T (\lambda (t1: T).(subst0 O u1 x2 t1)) 
34459 (\lambda (t1: T).(pr0 t1 x1)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
34460 T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
34461 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall 
34462 (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 
34463 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T 
34464 (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) 
34465 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
34466 T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u0: 
34467 T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x))))) (\lambda (x4: 
34468 T).(\lambda (H19: (subst0 O u1 x2 x4)).(\lambda (H20: (pr0 x4 x1)).(or_introl 
34469 (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 
34470 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34471 T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind 
34472 b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 
34473 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: 
34474 T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 
34475 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z 
34476 t3)))))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34477 (lift (S O) O x)))) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
34478 x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 
34479 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: 
34480 T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) 
34481 (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda 
34482 (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: 
34483 T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c 
34484 (Bind Abbr) u1) z t3))))))) x0 x3 H17 (pr2_free c u1 x0 H12) (or3_intro2 
34485 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 x3))) (ex2 T 
34486 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34487 t1 x3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34488 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34489 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z x3)))) (ex3_2_intro T T 
34490 (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) 
34491 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
34492 T).(pr2 (CHead c (Bind Abbr) u1) z x3))) x4 x1 (pr2_delta (CHead c (Bind 
34493 Abbr) u1) c u1 O (getl_refl Abbr c u1) t1 x2 H13 x4 H19) H20 (pr2_delta 
34494 (CHead c (Bind Abbr) u1) d u (S i) (getl_head (Bind Abbr) i c (CHead d (Bind 
34495 Abbr) u) H8 u1) x1 x1 (pr0_refl x1) x3 H18)))))))) (pr0_subst0_back x0 x2 x1 
34496 O H14 u1 H12))))) H16)) (\lambda (H16: (ex3_2 T T (\lambda (u2: T).(\lambda 
34497 (t2: T).(eq T x (THead (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
34498 T).(subst0 i u x0 u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Bind 
34499 Abbr) i) u x1 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
34500 x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u 
34501 x0 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s (Bind Abbr) i) u x1 
34502 t3))) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
34503 Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34504 T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind 
34505 b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 
34506 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: 
34507 T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 
34508 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z 
34509 t3)))))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34510 (lift (S O) O x))))) (\lambda (x3: T).(\lambda (x4: T).(\lambda (H17: (eq T x 
34511 (THead (Bind Abbr) x3 x4))).(\lambda (H18: (subst0 i u x0 x3)).(\lambda (H19: 
34512 (subst0 (s (Bind Abbr) i) u x1 x4)).(ex2_ind T (\lambda (t1: T).(subst0 O u1 
34513 x2 t1)) (\lambda (t1: T).(pr0 t1 x1)) (or (ex3_2 T T (\lambda (u2: 
34514 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34515 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 
34516 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T 
34517 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34518 t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34519 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34520 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: 
34521 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x))))) 
34522 (\lambda (x5: T).(\lambda (H20: (subst0 O u1 x2 x5)).(\lambda (H21: (pr0 x5 
34523 x1)).(or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead 
34524 (Bind Abbr) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34525 (\lambda (_: T).(\lambda (t3: T).(or3 (\forall (b: B).(\forall (u0: T).(pr2 
34526 (CHead c (Bind b) u0) t1 t3))) (ex2 T (\lambda (u0: T).(pr0 u1 u0)) (\lambda 
34527 (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 t3))) (ex3_2 T T (\lambda (y: 
34528 T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: 
34529 T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c 
34530 (Bind Abbr) u1) z t3)))))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c 
34531 (Bind b) u0) t1 (lift (S O) O x)))) (ex3_2_intro T T (\lambda (u2: 
34532 T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34533 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 
34534 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T 
34535 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34536 t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34537 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34538 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3))))))) x3 x4 H17 
34539 (pr2_delta c d u i H8 u1 x0 H12 x3 H18) (or3_intro2 (\forall (b: B).(\forall 
34540 (u0: T).(pr2 (CHead c (Bind b) u0) t1 x4))) (ex2 T (\lambda (u0: T).(pr0 u1 
34541 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) t1 x4))) (ex3_2 T T 
34542 (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) 
34543 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
34544 T).(pr2 (CHead c (Bind Abbr) u1) z x4)))) (ex3_2_intro T T (\lambda (y: 
34545 T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) u1) t1 y))) (\lambda (y: 
34546 T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c 
34547 (Bind Abbr) u1) z x4))) x5 x1 (pr2_delta (CHead c (Bind Abbr) u1) c u1 O 
34548 (getl_refl Abbr c u1) t1 x2 H13 x5 H20) H21 (pr2_delta (CHead c (Bind Abbr) 
34549 u1) d u (S i) (getl_head (Bind Abbr) i c (CHead d (Bind Abbr) u) H8 u1) x1 x1 
34550 (pr0_refl x1) x4 H19)))))))) (pr0_subst0_back x0 x2 x1 O H14 u1 H12))))))) 
34551 H16)) (subst0_gen_head (Bind Abbr) u x0 x1 x i H15)))))) H_x0)) H_x)))))) 
34552 H11)) (\lambda (H: (pr0 t1 (lift (S O) O t2))).(or_intror (ex3_2 T T (\lambda 
34553 (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u2 t3)))) (\lambda (u2: 
34554 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(or3 
34555 (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))) (ex2 T 
34556 (\lambda (u0: T).(pr0 u1 u0)) (\lambda (u0: T).(pr2 (CHead c (Bind Abbr) u0) 
34557 t1 t3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) 
34558 u1) t1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: 
34559 T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) u1) z t3)))))))) (\forall (b: 
34560 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x)))) 
34561 (\lambda (b: B).(\lambda (u0: T).(pr2_delta (CHead c (Bind b) u0) d u (S i) 
34562 (getl_head (Bind b) i c (CHead d (Bind Abbr) u) H8 u0) t1 (lift (S O) O t2) H 
34563 (lift (S O) O x) (subst0_lift_ge_S t2 x u i H10 O (le_O_n i))))))) 
34564 (pr0_gen_abbr u1 t1 t2 H9))))) t (sym_eq T t x H7))) t0 (sym_eq T t0 (THead 
34565 (Bind Abbr) u1 t1) H6))) c0 (sym_eq C c0 c H3) H4 H5 H0 H1 H2))))]) in (H0 
34566 (refl_equal C c) (refl_equal T (THead (Bind Abbr) u1 t1)) (refl_equal T 
34567 x))))))).
34568
34569 theorem pr2_gen_void:
34570  \forall (c: C).(\forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr2 c 
34571 (THead (Bind Void) u1 t1) x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda 
34572 (t2: T).(eq T x (THead (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
34573 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall 
34574 (u: T).(pr2 (CHead c (Bind b) u) t1 t2)))))) (\forall (b: B).(\forall (u: 
34575 T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O x)))))))))
34576 \def
34577  \lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda 
34578 (H: (pr2 c (THead (Bind Void) u1 t1) x)).(let H0 \def (match H return 
34579 (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr2 c0 t 
34580 t0)).((eq C c0 c) \to ((eq T t (THead (Bind Void) u1 t1)) \to ((eq T t0 x) 
34581 \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind 
34582 Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34583 T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
34584 t1 t2)))))) (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 
34585 (lift (S O) O x)))))))))))) with [(pr2_free c0 t0 t2 H0) \Rightarrow (\lambda 
34586 (H1: (eq C c0 c)).(\lambda (H2: (eq T t0 (THead (Bind Void) u1 t1))).(\lambda 
34587 (H3: (eq T t2 x)).(eq_ind C c (\lambda (_: C).((eq T t0 (THead (Bind Void) u1 
34588 t1)) \to ((eq T t2 x) \to ((pr0 t0 t2) \to (or (ex3_2 T T (\lambda (u2: 
34589 T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
34590 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
34591 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t3)))))) (\forall (b: 
34592 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O x))))))))) 
34593 (\lambda (H4: (eq T t0 (THead (Bind Void) u1 t1))).(eq_ind T (THead (Bind 
34594 Void) u1 t1) (\lambda (t: T).((eq T t2 x) \to ((pr0 t t2) \to (or (ex3_2 T T 
34595 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) 
34596 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
34597 (t3: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t3)))))) 
34598 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O 
34599 x)))))))) (\lambda (H5: (eq T t2 x)).(eq_ind T x (\lambda (t: T).((pr0 (THead 
34600 (Bind Void) u1 t1) t) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
34601 T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
34602 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: 
34603 T).(pr2 (CHead c (Bind b) u) t1 t3)))))) (\forall (b: B).(\forall (u: T).(pr2 
34604 (CHead c (Bind b) u) t1 (lift (S O) O x))))))) (\lambda (H6: (pr0 (THead 
34605 (Bind Void) u1 t1) x)).(or_ind (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
34606 T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 
34607 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 (lift (S O) 
34608 O x)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind 
34609 Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34610 T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
34611 t1 t3)))))) (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 
34612 (lift (S O) O x))))) (\lambda (H7: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
34613 T).(eq T x (THead (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr0 
34614 u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr0 t1 t2))))).(ex3_2_ind T T 
34615 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) 
34616 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: 
34617 T).(pr0 t1 t3))) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
34618 (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34619 (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead 
34620 c (Bind b) u) t1 t3)))))) (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind 
34621 b) u) t1 (lift (S O) O x))))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H: 
34622 (eq T x (THead (Bind Void) x0 x1))).(\lambda (H8: (pr0 u1 x0)).(\lambda (H9: 
34623 (pr0 t1 x1)).(eq_ind_r T (THead (Bind Void) x0 x1) (\lambda (t: T).(or (ex3_2 
34624 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t (THead (Bind Void) u2 t3)))) 
34625 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
34626 (t3: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 t3)))))) 
34627 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O 
34628 t)))))) (or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead 
34629 (Bind Void) x0 x1) (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
34630 T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
34631 (u: T).(pr2 (CHead c (Bind b) u) t1 t3)))))) (\forall (b: B).(\forall (u: 
34632 T).(pr2 (CHead c (Bind b) u) t1 (lift (S O) O (THead (Bind Void) x0 x1))))) 
34633 (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T (THead (Bind Void) 
34634 x0 x1) (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c 
34635 u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: 
34636 T).(pr2 (CHead c (Bind b) u) t1 t3))))) x0 x1 (refl_equal T (THead (Bind 
34637 Void) x0 x1)) (pr2_free c u1 x0 H8) (\lambda (b: B).(\lambda (u: T).(pr2_free 
34638 (CHead c (Bind b) u) t1 x1 H9))))) x H)))))) H7)) (\lambda (H: (pr0 t1 (lift 
34639 (S O) O x))).(or_intror (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
34640 (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34641 (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead 
34642 c (Bind b) u) t1 t3)))))) (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind 
34643 b) u) t1 (lift (S O) O x)))) (\lambda (b: B).(\lambda (u: T).(pr2_free (CHead 
34644 c (Bind b) u) t1 (lift (S O) O x) H))))) (pr0_gen_void u1 t1 x H6))) t2 
34645 (sym_eq T t2 x H5))) t0 (sym_eq T t0 (THead (Bind Void) u1 t1) H4))) c0 
34646 (sym_eq C c0 c H1) H2 H3 H0)))) | (pr2_delta c0 d u i H0 t0 t2 H1 t H2) 
34647 \Rightarrow (\lambda (H3: (eq C c0 c)).(\lambda (H4: (eq T t0 (THead (Bind 
34648 Void) u1 t1))).(\lambda (H5: (eq T t x)).(eq_ind C c (\lambda (c1: C).((eq T 
34649 t0 (THead (Bind Void) u1 t1)) \to ((eq T t x) \to ((getl i c1 (CHead d (Bind 
34650 Abbr) u)) \to ((pr0 t0 t2) \to ((subst0 i u t2 t) \to (or (ex3_2 T T (\lambda 
34651 (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
34652 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
34653 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3)))))) (\forall (b: 
34654 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x))))))))))) 
34655 (\lambda (H6: (eq T t0 (THead (Bind Void) u1 t1))).(eq_ind T (THead (Bind 
34656 Void) u1 t1) (\lambda (t3: T).((eq T t x) \to ((getl i c (CHead d (Bind Abbr) 
34657 u)) \to ((pr0 t3 t2) \to ((subst0 i u t2 t) \to (or (ex3_2 T T (\lambda (u2: 
34658 T).(\lambda (t4: T).(eq T x (THead (Bind Void) u2 t4)))) (\lambda (u2: 
34659 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t4: T).(\forall 
34660 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t4)))))) (\forall (b: 
34661 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x)))))))))) 
34662 (\lambda (H7: (eq T t x)).(eq_ind T x (\lambda (t3: T).((getl i c (CHead d 
34663 (Bind Abbr) u)) \to ((pr0 (THead (Bind Void) u1 t1) t2) \to ((subst0 i u t2 
34664 t3) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t4: T).(eq T x (THead (Bind 
34665 Void) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34666 T).(\lambda (t4: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
34667 u0) t1 t4)))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) 
34668 t1 (lift (S O) O x))))))))) (\lambda (H8: (getl i c (CHead d (Bind Abbr) 
34669 u))).(\lambda (H9: (pr0 (THead (Bind Void) u1 t1) t2)).(\lambda (H10: (subst0 
34670 i u t2 x)).(or_ind (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 
34671 (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) 
34672 (\lambda (_: T).(\lambda (t3: T).(pr0 t1 t3)))) (pr0 t1 (lift (S O) O t2)) 
34673 (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Void) 
34674 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34675 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
34676 u0) t1 t3)))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) 
34677 t1 (lift (S O) O x))))) (\lambda (H11: (ex3_2 T T (\lambda (u2: T).(\lambda 
34678 (t3: T).(eq T t2 (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
34679 T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr0 t1 t2))))).(ex3_2_ind 
34680 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Void) u2 t3)))) 
34681 (\lambda (u2: T).(\lambda (_: T).(pr0 u1 u2))) (\lambda (_: T).(\lambda (t3: 
34682 T).(pr0 t1 t3))) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
34683 (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34684 (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead 
34685 c (Bind b) u0) t1 t3)))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c 
34686 (Bind b) u0) t1 (lift (S O) O x))))) (\lambda (x0: T).(\lambda (x1: 
34687 T).(\lambda (H: (eq T t2 (THead (Bind Void) x0 x1))).(\lambda (H12: (pr0 u1 
34688 x0)).(\lambda (H13: (pr0 t1 x1)).(let H14 \def (eq_ind T t2 (\lambda (t: 
34689 T).(subst0 i u t x)) H10 (THead (Bind Void) x0 x1) H) in (or3_ind (ex2 T 
34690 (\lambda (u2: T).(eq T x (THead (Bind Void) u2 x1))) (\lambda (u2: T).(subst0 
34691 i u x0 u2))) (ex2 T (\lambda (t3: T).(eq T x (THead (Bind Void) x0 t3))) 
34692 (\lambda (t3: T).(subst0 (s (Bind Void) i) u x1 t3))) (ex3_2 T T (\lambda 
34693 (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
34694 T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: T).(\lambda (t3: 
34695 T).(subst0 (s (Bind Void) i) u x1 t3)))) (or (ex3_2 T T (\lambda (u2: 
34696 T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
34697 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
34698 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3)))))) (\forall (b: 
34699 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x))))) 
34700 (\lambda (H15: (ex2 T (\lambda (u2: T).(eq T x (THead (Bind Void) u2 x1))) 
34701 (\lambda (u2: T).(subst0 i u x0 u2)))).(ex2_ind T (\lambda (u2: T).(eq T x 
34702 (THead (Bind Void) u2 x1))) (\lambda (u2: T).(subst0 i u x0 u2)) (or (ex3_2 T 
34703 T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) 
34704 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
34705 (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34706 t3)))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift 
34707 (S O) O x))))) (\lambda (x2: T).(\lambda (H16: (eq T x (THead (Bind Void) x2 
34708 x1))).(\lambda (H17: (subst0 i u x0 x2)).(or_introl (ex3_2 T T (\lambda (u2: 
34709 T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
34710 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
34711 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3)))))) (\forall (b: 
34712 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x)))) 
34713 (ex3_2_intro T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Void) 
34714 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: 
34715 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) 
34716 u0) t1 t3))))) x2 x1 H16 (pr2_delta c d u i H8 u1 x0 H12 x2 H17) (\lambda (b: 
34717 B).(\lambda (u0: T).(pr2_free (CHead c (Bind b) u0) t1 x1 H13)))))))) H15)) 
34718 (\lambda (H15: (ex2 T (\lambda (t2: T).(eq T x (THead (Bind Void) x0 t2))) 
34719 (\lambda (t2: T).(subst0 (s (Bind Void) i) u x1 t2)))).(ex2_ind T (\lambda 
34720 (t3: T).(eq T x (THead (Bind Void) x0 t3))) (\lambda (t3: T).(subst0 (s (Bind 
34721 Void) i) u x1 t3)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x 
34722 (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34723 (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead 
34724 c (Bind b) u0) t1 t3)))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c 
34725 (Bind b) u0) t1 (lift (S O) O x))))) (\lambda (x2: T).(\lambda (H16: (eq T x 
34726 (THead (Bind Void) x0 x2))).(\lambda (H17: (subst0 (s (Bind Void) i) u x1 
34727 x2)).(or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead 
34728 (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) 
34729 (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead 
34730 c (Bind b) u0) t1 t3)))))) (\forall (b: B).(\forall (u0: T).(pr2 (CHead c 
34731 (Bind b) u0) t1 (lift (S O) O x)))) (ex3_2_intro T T (\lambda (u2: 
34732 T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
34733 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
34734 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3))))) x0 x2 H16 
34735 (pr2_free c u1 x0 H12) (\lambda (b: B).(\lambda (u0: T).(pr2_delta (CHead c 
34736 (Bind b) u0) d u (S i) (getl_head (Bind b) i c (CHead d (Bind Abbr) u) H8 u0) 
34737 t1 x1 H13 x2 H17)))))))) H15)) (\lambda (H15: (ex3_2 T T (\lambda (u2: 
34738 T).(\lambda (t2: T).(eq T x (THead (Bind Void) u2 t2)))) (\lambda (u2: 
34739 T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: T).(\lambda (t2: 
34740 T).(subst0 (s (Bind Void) i) u x1 t2))))).(ex3_2_ind T T (\lambda (u2: 
34741 T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
34742 T).(\lambda (_: T).(subst0 i u x0 u2))) (\lambda (_: T).(\lambda (t3: 
34743 T).(subst0 (s (Bind Void) i) u x1 t3))) (or (ex3_2 T T (\lambda (u2: 
34744 T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: 
34745 T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
34746 (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 t3)))))) (\forall (b: 
34747 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x))))) 
34748 (\lambda (x2: T).(\lambda (x3: T).(\lambda (H16: (eq T x (THead (Bind Void) 
34749 x2 x3))).(\lambda (H17: (subst0 i u x0 x2)).(\lambda (H18: (subst0 (s (Bind 
34750 Void) i) u x1 x3)).(or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
34751 T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
34752 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: 
34753 T).(pr2 (CHead c (Bind b) u0) t1 t3)))))) (\forall (b: B).(\forall (u0: 
34754 T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x)))) (ex3_2_intro T T 
34755 (\lambda (u2: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u2 t3)))) 
34756 (\lambda (u2: T).(\lambda (_: T).(pr2 c u1 u2))) (\lambda (_: T).(\lambda 
34757 (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) t1 
34758 t3))))) x2 x3 H16 (pr2_delta c d u i H8 u1 x0 H12 x2 H17) (\lambda (b: 
34759 B).(\lambda (u0: T).(pr2_delta (CHead c (Bind b) u0) d u (S i) (getl_head 
34760 (Bind b) i c (CHead d (Bind Abbr) u) H8 u0) t1 x1 H13 x3 H18)))))))))) H15)) 
34761 (subst0_gen_head (Bind Void) u x0 x1 x i H14)))))))) H11)) (\lambda (H: (pr0 
34762 t1 (lift (S O) O t2))).(or_intror (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
34763 T).(eq T x (THead (Bind Void) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 
34764 c u1 u2))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: 
34765 T).(pr2 (CHead c (Bind b) u0) t1 t3)))))) (\forall (b: B).(\forall (u0: 
34766 T).(pr2 (CHead c (Bind b) u0) t1 (lift (S O) O x)))) (\lambda (b: B).(\lambda 
34767 (u0: T).(pr2_delta (CHead c (Bind b) u0) d u (S i) (getl_head (Bind b) i c 
34768 (CHead d (Bind Abbr) u) H8 u0) t1 (lift (S O) O t2) H (lift (S O) O x) 
34769 (subst0_lift_ge_S t2 x u i H10 O (le_O_n i))))))) (pr0_gen_void u1 t1 t2 
34770 H9))))) t (sym_eq T t x H7))) t0 (sym_eq T t0 (THead (Bind Void) u1 t1) H6))) 
34771 c0 (sym_eq C c0 c H3) H4 H5 H0 H1 H2))))]) in (H0 (refl_equal C c) 
34772 (refl_equal T (THead (Bind Void) u1 t1)) (refl_equal T x))))))).
34773
34774 theorem pr2_gen_lift:
34775  \forall (c: C).(\forall (t1: T).(\forall (x: T).(\forall (h: nat).(\forall 
34776 (d: nat).((pr2 c (lift h d t1) x) \to (\forall (e: C).((drop h d c e) \to 
34777 (ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(pr2 e t1 
34778 t2))))))))))
34779 \def
34780  \lambda (c: C).(\lambda (t1: T).(\lambda (x: T).(\lambda (h: nat).(\lambda 
34781 (d: nat).(\lambda (H: (pr2 c (lift h d t1) x)).(\lambda (e: C).(\lambda (H0: 
34782 (drop h d c e)).(let H1 \def (match H return (\lambda (c0: C).(\lambda (t: 
34783 T).(\lambda (t0: T).(\lambda (_: (pr2 c0 t t0)).((eq C c0 c) \to ((eq T t 
34784 (lift h d t1)) \to ((eq T t0 x) \to (ex2 T (\lambda (t2: T).(eq T x (lift h d 
34785 t2))) (\lambda (t2: T).(pr2 e t1 t2)))))))))) with [(pr2_free c0 t0 t2 H1) 
34786 \Rightarrow (\lambda (H2: (eq C c0 c)).(\lambda (H3: (eq T t0 (lift h d 
34787 t1))).(\lambda (H4: (eq T t2 x)).(eq_ind C c (\lambda (_: C).((eq T t0 (lift 
34788 h d t1)) \to ((eq T t2 x) \to ((pr0 t0 t2) \to (ex2 T (\lambda (t3: T).(eq T 
34789 x (lift h d t3))) (\lambda (t3: T).(pr2 e t1 t3))))))) (\lambda (H5: (eq T t0 
34790 (lift h d t1))).(eq_ind T (lift h d t1) (\lambda (t: T).((eq T t2 x) \to 
34791 ((pr0 t t2) \to (ex2 T (\lambda (t3: T).(eq T x (lift h d t3))) (\lambda (t3: 
34792 T).(pr2 e t1 t3)))))) (\lambda (H6: (eq T t2 x)).(eq_ind T x (\lambda (t: 
34793 T).((pr0 (lift h d t1) t) \to (ex2 T (\lambda (t3: T).(eq T x (lift h d t3))) 
34794 (\lambda (t3: T).(pr2 e t1 t3))))) (\lambda (H7: (pr0 (lift h d t1) 
34795 x)).(ex2_ind T (\lambda (t3: T).(eq T x (lift h d t3))) (\lambda (t3: T).(pr0 
34796 t1 t3)) (ex2 T (\lambda (t3: T).(eq T x (lift h d t3))) (\lambda (t3: T).(pr2 
34797 e t1 t3))) (\lambda (x0: T).(\lambda (H: (eq T x (lift h d x0))).(\lambda 
34798 (H8: (pr0 t1 x0)).(eq_ind_r T (lift h d x0) (\lambda (t: T).(ex2 T (\lambda 
34799 (t3: T).(eq T t (lift h d t3))) (\lambda (t3: T).(pr2 e t1 t3)))) (ex_intro2 
34800 T (\lambda (t3: T).(eq T (lift h d x0) (lift h d t3))) (\lambda (t3: T).(pr2 
34801 e t1 t3)) x0 (refl_equal T (lift h d x0)) (pr2_free e t1 x0 H8)) x H)))) 
34802 (pr0_gen_lift t1 x h d H7))) t2 (sym_eq T t2 x H6))) t0 (sym_eq T t0 (lift h 
34803 d t1) H5))) c0 (sym_eq C c0 c H2) H3 H4 H1)))) | (pr2_delta c0 d0 u i H1 t0 
34804 t2 H2 t H3) \Rightarrow (\lambda (H4: (eq C c0 c)).(\lambda (H5: (eq T t0 
34805 (lift h d t1))).(\lambda (H6: (eq T t x)).(eq_ind C c (\lambda (c: C).((eq T 
34806 t0 (lift h d t1)) \to ((eq T t x) \to ((getl i c (CHead d0 (Bind Abbr) u)) 
34807 \to ((pr0 t0 t2) \to ((subst0 i u t2 t) \to (ex2 T (\lambda (t3: T).(eq T x 
34808 (lift h d t3))) (\lambda (t3: T).(pr2 e t1 t3))))))))) (\lambda (H7: (eq T t0 
34809 (lift h d t1))).(eq_ind T (lift h d t1) (\lambda (t3: T).((eq T t x) \to 
34810 ((getl i c (CHead d0 (Bind Abbr) u)) \to ((pr0 t3 t2) \to ((subst0 i u t2 t) 
34811 \to (ex2 T (\lambda (t4: T).(eq T x (lift h d t4))) (\lambda (t4: T).(pr2 e 
34812 t1 t4)))))))) (\lambda (H8: (eq T t x)).(eq_ind T x (\lambda (t3: T).((getl i 
34813 c (CHead d0 (Bind Abbr) u)) \to ((pr0 (lift h d t1) t2) \to ((subst0 i u t2 
34814 t3) \to (ex2 T (\lambda (t4: T).(eq T x (lift h d t4))) (\lambda (t4: T).(pr2 
34815 e t1 t4))))))) (\lambda (H9: (getl i c (CHead d0 (Bind Abbr) u))).(\lambda 
34816 (H10: (pr0 (lift h d t1) t2)).(\lambda (H11: (subst0 i u t2 x)).(ex2_ind T 
34817 (\lambda (t3: T).(eq T t2 (lift h d t3))) (\lambda (t3: T).(pr0 t1 t3)) (ex2 
34818 T (\lambda (t3: T).(eq T x (lift h d t3))) (\lambda (t3: T).(pr2 e t1 t3))) 
34819 (\lambda (x0: T).(\lambda (H: (eq T t2 (lift h d x0))).(\lambda (H12: (pr0 t1 
34820 x0)).(let H13 \def (eq_ind T t2 (\lambda (t: T).(subst0 i u t x)) H11 (lift h 
34821 d x0) H) in (lt_le_e i d (ex2 T (\lambda (t3: T).(eq T x (lift h d t3))) 
34822 (\lambda (t3: T).(pr2 e t1 t3))) (\lambda (H14: (lt i d)).(let H15 \def 
34823 (eq_ind nat d (\lambda (n: nat).(drop h n c e)) H0 (S (plus i (minus d (S 
34824 i)))) (lt_plus_minus i d H14)) in (let H16 \def (eq_ind nat d (\lambda (n: 
34825 nat).(subst0 i u (lift h n x0) x)) H13 (S (plus i (minus d (S i)))) 
34826 (lt_plus_minus i d H14)) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: 
34827 C).(eq T u (lift h (minus d (S i)) v)))) (\lambda (v: T).(\lambda (e0: 
34828 C).(getl i e (CHead e0 (Bind Abbr) v)))) (\lambda (_: T).(\lambda (e0: 
34829 C).(drop h (minus d (S i)) d0 e0))) (ex2 T (\lambda (t3: T).(eq T x (lift h d 
34830 t3))) (\lambda (t3: T).(pr2 e t1 t3))) (\lambda (x1: T).(\lambda (x2: 
34831 C).(\lambda (H0: (eq T u (lift h (minus d (S i)) x1))).(\lambda (H17: (getl i 
34832 e (CHead x2 (Bind Abbr) x1))).(\lambda (_: (drop h (minus d (S i)) d0 
34833 x2)).(let H19 \def (eq_ind T u (\lambda (t: T).(subst0 i t (lift h (S (plus i 
34834 (minus d (S i)))) x0) x)) H16 (lift h (minus d (S i)) x1) H0) in (ex2_ind T 
34835 (\lambda (t3: T).(eq T x (lift h (S (plus i (minus d (S i)))) t3))) (\lambda 
34836 (t3: T).(subst0 i x1 x0 t3)) (ex2 T (\lambda (t3: T).(eq T x (lift h d t3))) 
34837 (\lambda (t3: T).(pr2 e t1 t3))) (\lambda (x3: T).(\lambda (H20: (eq T x 
34838 (lift h (S (plus i (minus d (S i)))) x3))).(\lambda (H21: (subst0 i x1 x0 
34839 x3)).(let H22 \def (eq_ind_r nat (S (plus i (minus d (S i)))) (\lambda (n: 
34840 nat).(eq T x (lift h n x3))) H20 d (lt_plus_minus i d H14)) in (ex_intro2 T 
34841 (\lambda (t3: T).(eq T x (lift h d t3))) (\lambda (t3: T).(pr2 e t1 t3)) x3 
34842 H22 (pr2_delta e x2 x1 i H17 t1 x0 H12 x3 H21)))))) (subst0_gen_lift_lt x1 x0 
34843 x i h (minus d (S i)) H19)))))))) (getl_drop_conf_lt Abbr c d0 u i H9 e h 
34844 (minus d (S i)) H15))))) (\lambda (H14: (le d i)).(lt_le_e i (plus d h) (ex2 
34845 T (\lambda (t3: T).(eq T x (lift h d t3))) (\lambda (t3: T).(pr2 e t1 t3))) 
34846 (\lambda (H15: (lt i (plus d h))).(subst0_gen_lift_false x0 u x h d i H14 H15 
34847 H13 (ex2 T (\lambda (t3: T).(eq T x (lift h d t3))) (\lambda (t3: T).(pr2 e 
34848 t1 t3))))) (\lambda (H15: (le (plus d h) i)).(ex2_ind T (\lambda (t3: T).(eq 
34849 T x (lift h d t3))) (\lambda (t3: T).(subst0 (minus i h) u x0 t3)) (ex2 T 
34850 (\lambda (t3: T).(eq T x (lift h d t3))) (\lambda (t3: T).(pr2 e t1 t3))) 
34851 (\lambda (x1: T).(\lambda (H16: (eq T x (lift h d x1))).(\lambda (H17: 
34852 (subst0 (minus i h) u x0 x1)).(ex_intro2 T (\lambda (t3: T).(eq T x (lift h d 
34853 t3))) (\lambda (t3: T).(pr2 e t1 t3)) x1 H16 (pr2_delta e d0 u (minus i h) 
34854 (getl_drop_conf_ge i (CHead d0 (Bind Abbr) u) c H9 e h d H0 H15) t1 x0 H12 x1 
34855 H17))))) (subst0_gen_lift_ge u x0 x i h d H13 H15)))))))))) (pr0_gen_lift t1 
34856 t2 h d H10))))) t (sym_eq T t x H8))) t0 (sym_eq T t0 (lift h d t1) H7))) c0 
34857 (sym_eq C c0 c H4) H5 H6 H1 H2 H3))))]) in (H1 (refl_equal C c) (refl_equal T 
34858 (lift h d t1)) (refl_equal T x)))))))))).
34859
34860 theorem pr2_confluence__pr2_free_free:
34861  \forall (c: C).(\forall (t0: T).(\forall (t1: T).(\forall (t2: T).((pr0 t0 
34862 t1) \to ((pr0 t0 t2) \to (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: 
34863 T).(pr2 c t2 t))))))))
34864 \def
34865  \lambda (c: C).(\lambda (t0: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
34866 (H: (pr0 t0 t1)).(\lambda (H0: (pr0 t0 t2)).(ex2_ind T (\lambda (t: T).(pr0 
34867 t2 t)) (\lambda (t: T).(pr0 t1 t)) (ex2 T (\lambda (t: T).(pr2 c t1 t)) 
34868 (\lambda (t: T).(pr2 c t2 t))) (\lambda (x: T).(\lambda (H1: (pr0 t2 
34869 x)).(\lambda (H2: (pr0 t1 x)).(ex_intro2 T (\lambda (t: T).(pr2 c t1 t)) 
34870 (\lambda (t: T).(pr2 c t2 t)) x (pr2_free c t1 x H2) (pr2_free c t2 x H1))))) 
34871 (pr0_confluence t0 t2 H0 t1 H))))))).
34872
34873 theorem pr2_confluence__pr2_free_delta:
34874  \forall (c: C).(\forall (d: C).(\forall (t0: T).(\forall (t1: T).(\forall 
34875 (t2: T).(\forall (t4: T).(\forall (u: T).(\forall (i: nat).((pr0 t0 t1) \to 
34876 ((getl i c (CHead d (Bind Abbr) u)) \to ((pr0 t0 t4) \to ((subst0 i u t4 t2) 
34877 \to (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 
34878 t))))))))))))))
34879 \def
34880  \lambda (c: C).(\lambda (d: C).(\lambda (t0: T).(\lambda (t1: T).(\lambda 
34881 (t2: T).(\lambda (t4: T).(\lambda (u: T).(\lambda (i: nat).(\lambda (H: (pr0 
34882 t0 t1)).(\lambda (H0: (getl i c (CHead d (Bind Abbr) u))).(\lambda (H1: (pr0 
34883 t0 t4)).(\lambda (H2: (subst0 i u t4 t2)).(ex2_ind T (\lambda (t: T).(pr0 t4 
34884 t)) (\lambda (t: T).(pr0 t1 t)) (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda 
34885 (t: T).(pr2 c t2 t))) (\lambda (x: T).(\lambda (H3: (pr0 t4 x)).(\lambda (H4: 
34886 (pr0 t1 x)).(or_ind (pr0 t2 x) (ex2 T (\lambda (w2: T).(pr0 t2 w2)) (\lambda 
34887 (w2: T).(subst0 i u x w2))) (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: 
34888 T).(pr2 c t2 t))) (\lambda (H5: (pr0 t2 x)).(ex_intro2 T (\lambda (t: T).(pr2 
34889 c t1 t)) (\lambda (t: T).(pr2 c t2 t)) x (pr2_free c t1 x H4) (pr2_free c t2 
34890 x H5))) (\lambda (H5: (ex2 T (\lambda (w2: T).(pr0 t2 w2)) (\lambda (w2: 
34891 T).(subst0 i u x w2)))).(ex2_ind T (\lambda (w2: T).(pr0 t2 w2)) (\lambda 
34892 (w2: T).(subst0 i u x w2)) (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: 
34893 T).(pr2 c t2 t))) (\lambda (x0: T).(\lambda (H6: (pr0 t2 x0)).(\lambda (H7: 
34894 (subst0 i u x x0)).(ex_intro2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: 
34895 T).(pr2 c t2 t)) x0 (pr2_delta c d u i H0 t1 x H4 x0 H7) (pr2_free c t2 x0 
34896 H6))))) H5)) (pr0_subst0 t4 x H3 u t2 i H2 u (pr0_refl u)))))) 
34897 (pr0_confluence t0 t4 H1 t1 H))))))))))))).
34898
34899 theorem pr2_confluence__pr2_delta_delta:
34900  \forall (c: C).(\forall (d: C).(\forall (d0: C).(\forall (t0: T).(\forall 
34901 (t1: T).(\forall (t2: T).(\forall (t3: T).(\forall (t4: T).(\forall (u: 
34902 T).(\forall (u0: T).(\forall (i: nat).(\forall (i0: nat).((getl i c (CHead d 
34903 (Bind Abbr) u)) \to ((pr0 t0 t3) \to ((subst0 i u t3 t1) \to ((getl i0 c 
34904 (CHead d0 (Bind Abbr) u0)) \to ((pr0 t0 t4) \to ((subst0 i0 u0 t4 t2) \to 
34905 (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 
34906 t))))))))))))))))))))
34907 \def
34908  \lambda (c: C).(\lambda (d: C).(\lambda (d0: C).(\lambda (t0: T).(\lambda 
34909 (t1: T).(\lambda (t2: T).(\lambda (t3: T).(\lambda (t4: T).(\lambda (u: 
34910 T).(\lambda (u0: T).(\lambda (i: nat).(\lambda (i0: nat).(\lambda (H: (getl i 
34911 c (CHead d (Bind Abbr) u))).(\lambda (H0: (pr0 t0 t3)).(\lambda (H1: (subst0 
34912 i u t3 t1)).(\lambda (H2: (getl i0 c (CHead d0 (Bind Abbr) u0))).(\lambda 
34913 (H3: (pr0 t0 t4)).(\lambda (H4: (subst0 i0 u0 t4 t2)).(ex2_ind T (\lambda (t: 
34914 T).(pr0 t4 t)) (\lambda (t: T).(pr0 t3 t)) (ex2 T (\lambda (t: T).(pr2 c t1 
34915 t)) (\lambda (t: T).(pr2 c t2 t))) (\lambda (x: T).(\lambda (H5: (pr0 t4 
34916 x)).(\lambda (H6: (pr0 t3 x)).(or_ind (pr0 t1 x) (ex2 T (\lambda (w2: T).(pr0 
34917 t1 w2)) (\lambda (w2: T).(subst0 i u x w2))) (ex2 T (\lambda (t: T).(pr2 c t1 
34918 t)) (\lambda (t: T).(pr2 c t2 t))) (\lambda (H7: (pr0 t1 x)).(or_ind (pr0 t2 
34919 x) (ex2 T (\lambda (w2: T).(pr0 t2 w2)) (\lambda (w2: T).(subst0 i0 u0 x 
34920 w2))) (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t))) 
34921 (\lambda (H8: (pr0 t2 x)).(ex_intro2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda 
34922 (t: T).(pr2 c t2 t)) x (pr2_free c t1 x H7) (pr2_free c t2 x H8))) (\lambda 
34923 (H8: (ex2 T (\lambda (w2: T).(pr0 t2 w2)) (\lambda (w2: T).(subst0 i0 u0 x 
34924 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 t2 w2)) (\lambda (w2: T).(subst0 i0 
34925 u0 x w2)) (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t))) 
34926 (\lambda (x0: T).(\lambda (H9: (pr0 t2 x0)).(\lambda (H10: (subst0 i0 u0 x 
34927 x0)).(ex_intro2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t)) 
34928 x0 (pr2_delta c d0 u0 i0 H2 t1 x H7 x0 H10) (pr2_free c t2 x0 H9))))) H8)) 
34929 (pr0_subst0 t4 x H5 u0 t2 i0 H4 u0 (pr0_refl u0)))) (\lambda (H7: (ex2 T 
34930 (\lambda (w2: T).(pr0 t1 w2)) (\lambda (w2: T).(subst0 i u x w2)))).(ex2_ind 
34931 T (\lambda (w2: T).(pr0 t1 w2)) (\lambda (w2: T).(subst0 i u x w2)) (ex2 T 
34932 (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t))) (\lambda (x0: 
34933 T).(\lambda (H8: (pr0 t1 x0)).(\lambda (H9: (subst0 i u x x0)).(or_ind (pr0 
34934 t2 x) (ex2 T (\lambda (w2: T).(pr0 t2 w2)) (\lambda (w2: T).(subst0 i0 u0 x 
34935 w2))) (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t))) 
34936 (\lambda (H10: (pr0 t2 x)).(ex_intro2 T (\lambda (t: T).(pr2 c t1 t)) 
34937 (\lambda (t: T).(pr2 c t2 t)) x0 (pr2_free c t1 x0 H8) (pr2_delta c d u i H 
34938 t2 x H10 x0 H9))) (\lambda (H10: (ex2 T (\lambda (w2: T).(pr0 t2 w2)) 
34939 (\lambda (w2: T).(subst0 i0 u0 x w2)))).(ex2_ind T (\lambda (w2: T).(pr0 t2 
34940 w2)) (\lambda (w2: T).(subst0 i0 u0 x w2)) (ex2 T (\lambda (t: T).(pr2 c t1 
34941 t)) (\lambda (t: T).(pr2 c t2 t))) (\lambda (x1: T).(\lambda (H11: (pr0 t2 
34942 x1)).(\lambda (H12: (subst0 i0 u0 x x1)).(neq_eq_e i i0 (ex2 T (\lambda (t: 
34943 T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t))) (\lambda (H13: (not (eq nat i 
34944 i0))).(ex2_ind T (\lambda (t: T).(subst0 i u x1 t)) (\lambda (t: T).(subst0 
34945 i0 u0 x0 t)) (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 
34946 t))) (\lambda (x2: T).(\lambda (H14: (subst0 i u x1 x2)).(\lambda (H15: 
34947 (subst0 i0 u0 x0 x2)).(ex_intro2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: 
34948 T).(pr2 c t2 t)) x2 (pr2_delta c d0 u0 i0 H2 t1 x0 H8 x2 H15) (pr2_delta c d 
34949 u i H t2 x1 H11 x2 H14))))) (subst0_confluence_neq x x1 u0 i0 H12 x0 u i H9 
34950 (sym_not_eq nat i i0 H13)))) (\lambda (H13: (eq nat i i0)).(let H14 \def 
34951 (eq_ind_r nat i0 (\lambda (n: nat).(subst0 n u0 x x1)) H12 i H13) in (let H15 
34952 \def (eq_ind_r nat i0 (\lambda (n: nat).(getl n c (CHead d0 (Bind Abbr) u0))) 
34953 H2 i H13) in (let H16 \def (eq_ind C (CHead d (Bind Abbr) u) (\lambda (c0: 
34954 C).(getl i c c0)) H (CHead d0 (Bind Abbr) u0) (getl_mono c (CHead d (Bind 
34955 Abbr) u) i H (CHead d0 (Bind Abbr) u0) H15)) in (let H17 \def (f_equal C C 
34956 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
34957 \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind Abbr) u) (CHead 
34958 d0 (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) i H (CHead d0 (Bind 
34959 Abbr) u0) H15)) in ((let H18 \def (f_equal C T (\lambda (e: C).(match e 
34960 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) 
34961 \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead d0 (Bind Abbr) u0) (getl_mono 
34962 c (CHead d (Bind Abbr) u) i H (CHead d0 (Bind Abbr) u0) H15)) in (\lambda 
34963 (H19: (eq C d d0)).(let H20 \def (eq_ind_r T u0 (\lambda (t: T).(subst0 i t x 
34964 x1)) H14 u H18) in (let H21 \def (eq_ind_r T u0 (\lambda (t: T).(getl i c 
34965 (CHead d0 (Bind Abbr) t))) H16 u H18) in (let H22 \def (eq_ind_r C d0 
34966 (\lambda (c0: C).(getl i c (CHead c0 (Bind Abbr) u))) H21 d H19) in (or4_ind 
34967 (eq T x1 x0) (ex2 T (\lambda (t: T).(subst0 i u x1 t)) (\lambda (t: 
34968 T).(subst0 i u x0 t))) (subst0 i u x1 x0) (subst0 i u x0 x1) (ex2 T (\lambda 
34969 (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t))) (\lambda (H23: (eq T x1 
34970 x0)).(let H24 \def (eq_ind T x1 (\lambda (t: T).(pr0 t2 t)) H11 x0 H23) in 
34971 (ex_intro2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t)) x0 
34972 (pr2_free c t1 x0 H8) (pr2_free c t2 x0 H24)))) (\lambda (H23: (ex2 T 
34973 (\lambda (t: T).(subst0 i u x1 t)) (\lambda (t: T).(subst0 i u x0 
34974 t)))).(ex2_ind T (\lambda (t: T).(subst0 i u x1 t)) (\lambda (t: T).(subst0 i 
34975 u x0 t)) (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t))) 
34976 (\lambda (x2: T).(\lambda (H24: (subst0 i u x1 x2)).(\lambda (H25: (subst0 i 
34977 u x0 x2)).(ex_intro2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c 
34978 t2 t)) x2 (pr2_delta c d u i H22 t1 x0 H8 x2 H25) (pr2_delta c d u i H22 t2 
34979 x1 H11 x2 H24))))) H23)) (\lambda (H23: (subst0 i u x1 x0)).(ex_intro2 T 
34980 (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t)) x0 (pr2_free c t1 
34981 x0 H8) (pr2_delta c d u i H22 t2 x1 H11 x0 H23))) (\lambda (H23: (subst0 i u 
34982 x0 x1)).(ex_intro2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 
34983 t)) x1 (pr2_delta c d u i H22 t1 x0 H8 x1 H23) (pr2_free c t2 x1 H11))) 
34984 (subst0_confluence_eq x x1 u i H20 x0 H9))))))) H17)))))))))) H10)) 
34985 (pr0_subst0 t4 x H5 u0 t2 i0 H4 u0 (pr0_refl u0)))))) H7)) (pr0_subst0 t3 x 
34986 H6 u t1 i H1 u (pr0_refl u)))))) (pr0_confluence t0 t4 H3 t3 
34987 H0))))))))))))))))))).
34988
34989 theorem pr2_confluence:
34990  \forall (c: C).(\forall (t0: T).(\forall (t1: T).((pr2 c t0 t1) \to (\forall 
34991 (t2: T).((pr2 c t0 t2) \to (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: 
34992 T).(pr2 c t2 t))))))))
34993 \def
34994  \lambda (c: C).(\lambda (t0: T).(\lambda (t1: T).(\lambda (H: (pr2 c t0 
34995 t1)).(\lambda (t2: T).(\lambda (H0: (pr2 c t0 t2)).(let H1 \def (match H 
34996 return (\lambda (c0: C).(\lambda (t: T).(\lambda (t3: T).(\lambda (_: (pr2 c0 
34997 t t3)).((eq C c0 c) \to ((eq T t t0) \to ((eq T t3 t1) \to (ex2 T (\lambda 
34998 (t0: T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 t0)))))))))) with 
34999 [(pr2_free c0 t3 t4 H1) \Rightarrow (\lambda (H2: (eq C c0 c)).(\lambda (H3: 
35000 (eq T t3 t0)).(\lambda (H4: (eq T t4 t1)).(eq_ind C c (\lambda (_: C).((eq T 
35001 t3 t0) \to ((eq T t4 t1) \to ((pr0 t3 t4) \to (ex2 T (\lambda (t: T).(pr2 c 
35002 t1 t)) (\lambda (t: T).(pr2 c t2 t))))))) (\lambda (H5: (eq T t3 t0)).(eq_ind 
35003 T t0 (\lambda (t: T).((eq T t4 t1) \to ((pr0 t t4) \to (ex2 T (\lambda (t0: 
35004 T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 t0)))))) (\lambda (H6: (eq T t4 
35005 t1)).(eq_ind T t1 (\lambda (t: T).((pr0 t0 t) \to (ex2 T (\lambda (t0: 
35006 T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 t0))))) (\lambda (H7: (pr0 t0 
35007 t1)).(let H8 \def (match H0 return (\lambda (c0: C).(\lambda (t: T).(\lambda 
35008 (t3: T).(\lambda (_: (pr2 c0 t t3)).((eq C c0 c) \to ((eq T t t0) \to ((eq T 
35009 t3 t2) \to (ex2 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 
35010 t0)))))))))) with [(pr2_free c1 t5 t6 H5) \Rightarrow (\lambda (H6: (eq C c1 
35011 c)).(\lambda (H8: (eq T t5 t0)).(\lambda (H9: (eq T t6 t2)).(eq_ind C c 
35012 (\lambda (_: C).((eq T t5 t0) \to ((eq T t6 t2) \to ((pr0 t5 t6) \to (ex2 T 
35013 (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t))))))) (\lambda 
35014 (H10: (eq T t5 t0)).(eq_ind T t0 (\lambda (t: T).((eq T t6 t2) \to ((pr0 t 
35015 t6) \to (ex2 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 
35016 t0)))))) (\lambda (H11: (eq T t6 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 t0 
35017 t) \to (ex2 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 
35018 t0))))) (\lambda (H12: (pr0 t0 t2)).(pr2_confluence__pr2_free_free c t0 t1 t2 
35019 H7 H12)) t6 (sym_eq T t6 t2 H11))) t5 (sym_eq T t5 t0 H10))) c1 (sym_eq C c1 
35020 c H6) H8 H9 H5)))) | (pr2_delta c1 d u i H5 t5 t6 H6 t H7) \Rightarrow 
35021 (\lambda (H8: (eq C c1 c)).(\lambda (H9: (eq T t5 t0)).(\lambda (H10: (eq T t 
35022 t2)).(eq_ind C c (\lambda (c0: C).((eq T t5 t0) \to ((eq T t t2) \to ((getl i 
35023 c0 (CHead d (Bind Abbr) u)) \to ((pr0 t5 t6) \to ((subst0 i u t6 t) \to (ex2 
35024 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 t0))))))))) 
35025 (\lambda (H11: (eq T t5 t0)).(eq_ind T t0 (\lambda (t0: T).((eq T t t2) \to 
35026 ((getl i c (CHead d (Bind Abbr) u)) \to ((pr0 t0 t6) \to ((subst0 i u t6 t) 
35027 \to (ex2 T (\lambda (t2: T).(pr2 c t1 t2)) (\lambda (t1: T).(pr2 c t2 
35028 t1)))))))) (\lambda (H12: (eq T t t2)).(eq_ind T t2 (\lambda (t3: T).((getl i 
35029 c (CHead d (Bind Abbr) u)) \to ((pr0 t0 t6) \to ((subst0 i u t6 t3) \to (ex2 
35030 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 t0))))))) 
35031 (\lambda (H13: (getl i c (CHead d (Bind Abbr) u))).(\lambda (H14: (pr0 t0 
35032 t6)).(\lambda (H15: (subst0 i u t6 t2)).(pr2_confluence__pr2_free_delta c d 
35033 t0 t1 t2 t6 u i H7 H13 H14 H15)))) t (sym_eq T t t2 H12))) t5 (sym_eq T t5 t0 
35034 H11))) c1 (sym_eq C c1 c H8) H9 H10 H5 H6 H7))))]) in (H8 (refl_equal C c) 
35035 (refl_equal T t0) (refl_equal T t2)))) t4 (sym_eq T t4 t1 H6))) t3 (sym_eq T 
35036 t3 t0 H5))) c0 (sym_eq C c0 c H2) H3 H4 H1)))) | (pr2_delta c0 d u i H1 t3 t4 
35037 H2 t H3) \Rightarrow (\lambda (H4: (eq C c0 c)).(\lambda (H5: (eq T t3 
35038 t0)).(\lambda (H6: (eq T t t1)).(eq_ind C c (\lambda (c1: C).((eq T t3 t0) 
35039 \to ((eq T t t1) \to ((getl i c1 (CHead d (Bind Abbr) u)) \to ((pr0 t3 t4) 
35040 \to ((subst0 i u t4 t) \to (ex2 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda 
35041 (t0: T).(pr2 c t2 t0))))))))) (\lambda (H7: (eq T t3 t0)).(eq_ind T t0 
35042 (\lambda (t0: T).((eq T t t1) \to ((getl i c (CHead d (Bind Abbr) u)) \to 
35043 ((pr0 t0 t4) \to ((subst0 i u t4 t) \to (ex2 T (\lambda (t2: T).(pr2 c t1 
35044 t2)) (\lambda (t1: T).(pr2 c t2 t1)))))))) (\lambda (H8: (eq T t t1)).(eq_ind 
35045 T t1 (\lambda (t5: T).((getl i c (CHead d (Bind Abbr) u)) \to ((pr0 t0 t4) 
35046 \to ((subst0 i u t4 t5) \to (ex2 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda 
35047 (t0: T).(pr2 c t2 t0))))))) (\lambda (H9: (getl i c (CHead d (Bind Abbr) 
35048 u))).(\lambda (H10: (pr0 t0 t4)).(\lambda (H11: (subst0 i u t4 t1)).(let H12 
35049 \def (match H0 return (\lambda (c0: C).(\lambda (t: T).(\lambda (t3: 
35050 T).(\lambda (_: (pr2 c0 t t3)).((eq C c0 c) \to ((eq T t t0) \to ((eq T t3 
35051 t2) \to (ex2 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 
35052 t0)))))))))) with [(pr2_free c1 t5 t6 H7) \Rightarrow (\lambda (H8: (eq C c1 
35053 c)).(\lambda (H12: (eq T t5 t0)).(\lambda (H13: (eq T t6 t2)).(eq_ind C c 
35054 (\lambda (_: C).((eq T t5 t0) \to ((eq T t6 t2) \to ((pr0 t5 t6) \to (ex2 T 
35055 (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t))))))) (\lambda 
35056 (H14: (eq T t5 t0)).(eq_ind T t0 (\lambda (t: T).((eq T t6 t2) \to ((pr0 t 
35057 t6) \to (ex2 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 
35058 t0)))))) (\lambda (H15: (eq T t6 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 t0 
35059 t) \to (ex2 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 
35060 t0))))) (\lambda (H16: (pr0 t0 t2)).(ex2_sym T (pr2 c t2) (pr2 c t1) 
35061 (pr2_confluence__pr2_free_delta c d t0 t2 t1 t4 u i H16 H9 H10 H11))) t6 
35062 (sym_eq T t6 t2 H15))) t5 (sym_eq T t5 t0 H14))) c1 (sym_eq C c1 c H8) H12 
35063 H13 H7)))) | (pr2_delta c1 d0 u0 i0 H7 t5 t6 H8 t7 H9) \Rightarrow (\lambda 
35064 (H12: (eq C c1 c)).(\lambda (H13: (eq T t5 t0)).(\lambda (H14: (eq T t7 
35065 t2)).(eq_ind C c (\lambda (c0: C).((eq T t5 t0) \to ((eq T t7 t2) \to ((getl 
35066 i0 c0 (CHead d0 (Bind Abbr) u0)) \to ((pr0 t5 t6) \to ((subst0 i0 u0 t6 t7) 
35067 \to (ex2 T (\lambda (t: T).(pr2 c t1 t)) (\lambda (t: T).(pr2 c t2 t))))))))) 
35068 (\lambda (H15: (eq T t5 t0)).(eq_ind T t0 (\lambda (t: T).((eq T t7 t2) \to 
35069 ((getl i0 c (CHead d0 (Bind Abbr) u0)) \to ((pr0 t t6) \to ((subst0 i0 u0 t6 
35070 t7) \to (ex2 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 
35071 t0)))))))) (\lambda (H16: (eq T t7 t2)).(eq_ind T t2 (\lambda (t: T).((getl 
35072 i0 c (CHead d0 (Bind Abbr) u0)) \to ((pr0 t0 t6) \to ((subst0 i0 u0 t6 t) \to 
35073 (ex2 T (\lambda (t0: T).(pr2 c t1 t0)) (\lambda (t0: T).(pr2 c t2 t0))))))) 
35074 (\lambda (H17: (getl i0 c (CHead d0 (Bind Abbr) u0))).(\lambda (H18: (pr0 t0 
35075 t6)).(\lambda (H19: (subst0 i0 u0 t6 t2)).(pr2_confluence__pr2_delta_delta c 
35076 d d0 t0 t1 t2 t4 t6 u u0 i i0 H9 H10 H11 H17 H18 H19)))) t7 (sym_eq T t7 t2 
35077 H16))) t5 (sym_eq T t5 t0 H15))) c1 (sym_eq C c1 c H12) H13 H14 H7 H8 
35078 H9))))]) in (H12 (refl_equal C c) (refl_equal T t0) (refl_equal T t2)))))) t 
35079 (sym_eq T t t1 H8))) t3 (sym_eq T t3 t0 H7))) c0 (sym_eq C c0 c H4) H5 H6 H1 
35080 H2 H3))))]) in (H1 (refl_equal C c) (refl_equal T t0) (refl_equal T 
35081 t1)))))))).
35082
35083 theorem pr2_delta1:
35084  \forall (c: C).(\forall (d: C).(\forall (u: T).(\forall (i: nat).((getl i c 
35085 (CHead d (Bind Abbr) u)) \to (\forall (t1: T).(\forall (t2: T).((pr0 t1 t2) 
35086 \to (\forall (t: T).((subst1 i u t2 t) \to (pr2 c t1 t))))))))))
35087 \def
35088  \lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
35089 (H: (getl i c (CHead d (Bind Abbr) u))).(\lambda (t1: T).(\lambda (t2: 
35090 T).(\lambda (H0: (pr0 t1 t2)).(\lambda (t: T).(\lambda (H1: (subst1 i u t2 
35091 t)).(subst1_ind i u t2 (\lambda (t0: T).(pr2 c t1 t0)) (pr2_free c t1 t2 H0) 
35092 (\lambda (t0: T).(\lambda (H2: (subst0 i u t2 t0)).(pr2_delta c d u i H t1 t2 
35093 H0 t0 H2))) t H1)))))))))).
35094
35095 theorem pr2_subst1:
35096  \forall (c: C).(\forall (e: C).(\forall (v: T).(\forall (i: nat).((getl i c 
35097 (CHead e (Bind Abbr) v)) \to (\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) 
35098 \to (\forall (w1: T).((subst1 i v t1 w1) \to (ex2 T (\lambda (w2: T).(pr2 c 
35099 w1 w2)) (\lambda (w2: T).(subst1 i v t2 w2))))))))))))
35100 \def
35101  \lambda (c: C).(\lambda (e: C).(\lambda (v: T).(\lambda (i: nat).(\lambda 
35102 (H: (getl i c (CHead e (Bind Abbr) v))).(\lambda (t1: T).(\lambda (t2: 
35103 T).(\lambda (H0: (pr2 c t1 t2)).(let H1 \def (match H0 return (\lambda (c0: 
35104 C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr2 c0 t t0)).((eq C c0 c) 
35105 \to ((eq T t t1) \to ((eq T t0 t2) \to (\forall (w1: T).((subst1 i v t1 w1) 
35106 \to (ex2 T (\lambda (w2: T).(pr2 c w1 w2)) (\lambda (w2: T).(subst1 i v t2 
35107 w2)))))))))))) with [(pr2_free c0 t0 t3 H1) \Rightarrow (\lambda (H2: (eq C 
35108 c0 c)).(\lambda (H3: (eq T t0 t1)).(\lambda (H4: (eq T t3 t2)).(eq_ind C c 
35109 (\lambda (_: C).((eq T t0 t1) \to ((eq T t3 t2) \to ((pr0 t0 t3) \to (\forall 
35110 (w1: T).((subst1 i v t1 w1) \to (ex2 T (\lambda (w2: T).(pr2 c w1 w2)) 
35111 (\lambda (w2: T).(subst1 i v t2 w2))))))))) (\lambda (H5: (eq T t0 
35112 t1)).(eq_ind T t1 (\lambda (t: T).((eq T t3 t2) \to ((pr0 t t3) \to (\forall 
35113 (w1: T).((subst1 i v t1 w1) \to (ex2 T (\lambda (w2: T).(pr2 c w1 w2)) 
35114 (\lambda (w2: T).(subst1 i v t2 w2)))))))) (\lambda (H6: (eq T t3 
35115 t2)).(eq_ind T t2 (\lambda (t: T).((pr0 t1 t) \to (\forall (w1: T).((subst1 i 
35116 v t1 w1) \to (ex2 T (\lambda (w2: T).(pr2 c w1 w2)) (\lambda (w2: T).(subst1 
35117 i v t2 w2))))))) (\lambda (H7: (pr0 t1 t2)).(\lambda (w1: T).(\lambda (H0: 
35118 (subst1 i v t1 w1)).(ex2_ind T (\lambda (w2: T).(pr0 w1 w2)) (\lambda (w2: 
35119 T).(subst1 i v t2 w2)) (ex2 T (\lambda (w2: T).(pr2 c w1 w2)) (\lambda (w2: 
35120 T).(subst1 i v t2 w2))) (\lambda (x: T).(\lambda (H8: (pr0 w1 x)).(\lambda 
35121 (H9: (subst1 i v t2 x)).(ex_intro2 T (\lambda (w2: T).(pr2 c w1 w2)) (\lambda 
35122 (w2: T).(subst1 i v t2 w2)) x (pr2_free c w1 x H8) H9)))) (pr0_subst1 t1 t2 
35123 H7 v w1 i H0 v (pr0_refl v)))))) t3 (sym_eq T t3 t2 H6))) t0 (sym_eq T t0 t1 
35124 H5))) c0 (sym_eq C c0 c H2) H3 H4 H1)))) | (pr2_delta c0 d u i0 H1 t0 t3 H2 t 
35125 H3) \Rightarrow (\lambda (H4: (eq C c0 c)).(\lambda (H5: (eq T t0 
35126 t1)).(\lambda (H6: (eq T t t2)).(eq_ind C c (\lambda (c1: C).((eq T t0 t1) 
35127 \to ((eq T t t2) \to ((getl i0 c1 (CHead d (Bind Abbr) u)) \to ((pr0 t0 t3) 
35128 \to ((subst0 i0 u t3 t) \to (\forall (w1: T).((subst1 i v t1 w1) \to (ex2 T 
35129 (\lambda (w2: T).(pr2 c w1 w2)) (\lambda (w2: T).(subst1 i v t2 w2))))))))))) 
35130 (\lambda (H7: (eq T t0 t1)).(eq_ind T t1 (\lambda (t4: T).((eq T t t2) \to 
35131 ((getl i0 c (CHead d (Bind Abbr) u)) \to ((pr0 t4 t3) \to ((subst0 i0 u t3 t) 
35132 \to (\forall (w1: T).((subst1 i v t1 w1) \to (ex2 T (\lambda (w2: T).(pr2 c 
35133 w1 w2)) (\lambda (w2: T).(subst1 i v t2 w2)))))))))) (\lambda (H8: (eq T t 
35134 t2)).(eq_ind T t2 (\lambda (t4: T).((getl i0 c (CHead d (Bind Abbr) u)) \to 
35135 ((pr0 t1 t3) \to ((subst0 i0 u t3 t4) \to (\forall (w1: T).((subst1 i v t1 
35136 w1) \to (ex2 T (\lambda (w2: T).(pr2 c w1 w2)) (\lambda (w2: T).(subst1 i v 
35137 t2 w2))))))))) (\lambda (H9: (getl i0 c (CHead d (Bind Abbr) u))).(\lambda 
35138 (H10: (pr0 t1 t3)).(\lambda (H11: (subst0 i0 u t3 t2)).(\lambda (w1: 
35139 T).(\lambda (H0: (subst1 i v t1 w1)).(ex2_ind T (\lambda (w2: T).(pr0 w1 w2)) 
35140 (\lambda (w2: T).(subst1 i v t3 w2)) (ex2 T (\lambda (w2: T).(pr2 c w1 w2)) 
35141 (\lambda (w2: T).(subst1 i v t2 w2))) (\lambda (x: T).(\lambda (H12: (pr0 w1 
35142 x)).(\lambda (H13: (subst1 i v t3 x)).(neq_eq_e i i0 (ex2 T (\lambda (w2: 
35143 T).(pr2 c w1 w2)) (\lambda (w2: T).(subst1 i v t2 w2))) (\lambda (H14: (not 
35144 (eq nat i i0))).(ex2_ind T (\lambda (t1: T).(subst1 i v t2 t1)) (\lambda (t1: 
35145 T).(subst1 i0 u x t1)) (ex2 T (\lambda (w2: T).(pr2 c w1 w2)) (\lambda (w2: 
35146 T).(subst1 i v t2 w2))) (\lambda (x0: T).(\lambda (H15: (subst1 i v t2 
35147 x0)).(\lambda (H16: (subst1 i0 u x x0)).(ex_intro2 T (\lambda (w2: T).(pr2 c 
35148 w1 w2)) (\lambda (w2: T).(subst1 i v t2 w2)) x0 (pr2_delta1 c d u i0 H9 w1 x 
35149 H12 x0 H16) H15)))) (subst1_confluence_neq t3 t2 u i0 (subst1_single i0 u t3 
35150 t2 H11) x v i H13 (sym_not_eq nat i i0 H14)))) (\lambda (H14: (eq nat i 
35151 i0)).(let H15 \def (eq_ind_r nat i0 (\lambda (n: nat).(subst0 n u t3 t2)) H11 
35152 i H14) in (let H16 \def (eq_ind_r nat i0 (\lambda (n: nat).(getl n c (CHead d 
35153 (Bind Abbr) u))) H9 i H14) in (let H17 \def (eq_ind C (CHead e (Bind Abbr) v) 
35154 (\lambda (c0: C).(getl i c c0)) H (CHead d (Bind Abbr) u) (getl_mono c (CHead 
35155 e (Bind Abbr) v) i H (CHead d (Bind Abbr) u) H16)) in (let H18 \def (f_equal 
35156 C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with [(CSort _) 
35157 \Rightarrow e | (CHead c _ _) \Rightarrow c])) (CHead e (Bind Abbr) v) (CHead 
35158 d (Bind Abbr) u) (getl_mono c (CHead e (Bind Abbr) v) i H (CHead d (Bind 
35159 Abbr) u) H16)) in ((let H19 \def (f_equal C T (\lambda (e0: C).(match e0 
35160 return (\lambda (_: C).T) with [(CSort _) \Rightarrow v | (CHead _ _ t) 
35161 \Rightarrow t])) (CHead e (Bind Abbr) v) (CHead d (Bind Abbr) u) (getl_mono c 
35162 (CHead e (Bind Abbr) v) i H (CHead d (Bind Abbr) u) H16)) in (\lambda (H20: 
35163 (eq C e d)).(let H21 \def (eq_ind_r T u (\lambda (t: T).(getl i c (CHead d 
35164 (Bind Abbr) t))) H17 v H19) in (let H22 \def (eq_ind_r T u (\lambda (t: 
35165 T).(subst0 i t t3 t2)) H15 v H19) in (let H23 \def (eq_ind_r C d (\lambda 
35166 (c0: C).(getl i c (CHead c0 (Bind Abbr) v))) H21 e H20) in (ex2_ind T 
35167 (\lambda (t1: T).(subst1 i v t2 t1)) (\lambda (t1: T).(subst1 i v x t1)) (ex2 
35168 T (\lambda (w2: T).(pr2 c w1 w2)) (\lambda (w2: T).(subst1 i v t2 w2))) 
35169 (\lambda (x0: T).(\lambda (H24: (subst1 i v t2 x0)).(\lambda (H25: (subst1 i 
35170 v x x0)).(ex_intro2 T (\lambda (w2: T).(pr2 c w1 w2)) (\lambda (w2: 
35171 T).(subst1 i v t2 w2)) x0 (pr2_delta1 c e v i H23 w1 x H12 x0 H25) H24)))) 
35172 (subst1_confluence_eq t3 t2 v i (subst1_single i v t3 t2 H22) x H13))))))) 
35173 H18)))))))))) (pr0_subst1 t1 t3 H10 v w1 i H0 v (pr0_refl v)))))))) t (sym_eq 
35174 T t t2 H8))) t0 (sym_eq T t0 t1 H7))) c0 (sym_eq C c0 c H4) H5 H6 H1 H2 
35175 H3))))]) in (H1 (refl_equal C c) (refl_equal T t1) (refl_equal T t2)))))))))).
35176
35177 theorem pr2_gen_cabbr:
35178  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall 
35179 (e: C).(\forall (u: T).(\forall (d: nat).((getl d c (CHead e (Bind Abbr) u)) 
35180 \to (\forall (a0: C).((csubst1 d u c a0) \to (\forall (a: C).((drop (S O) d 
35181 a0 a) \to (\forall (x1: T).((subst1 d u t1 (lift (S O) d x1)) \to (ex2 T 
35182 (\lambda (x2: T).(subst1 d u t2 (lift (S O) d x2))) (\lambda (x2: T).(pr2 a 
35183 x1 x2))))))))))))))))
35184 \def
35185  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t1 
35186 t2)).(pr2_ind (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\forall (e: 
35187 C).(\forall (u: T).(\forall (d: nat).((getl d c0 (CHead e (Bind Abbr) u)) \to 
35188 (\forall (a0: C).((csubst1 d u c0 a0) \to (\forall (a: C).((drop (S O) d a0 
35189 a) \to (\forall (x1: T).((subst1 d u t (lift (S O) d x1)) \to (ex2 T (\lambda 
35190 (x2: T).(subst1 d u t0 (lift (S O) d x2))) (\lambda (x2: T).(pr2 a x1 
35191 x2)))))))))))))))) (\lambda (c0: C).(\lambda (t3: T).(\lambda (t4: 
35192 T).(\lambda (H0: (pr0 t3 t4)).(\lambda (e: C).(\lambda (u: T).(\lambda (d: 
35193 nat).(\lambda (_: (getl d c0 (CHead e (Bind Abbr) u))).(\lambda (a0: 
35194 C).(\lambda (_: (csubst1 d u c0 a0)).(\lambda (a: C).(\lambda (_: (drop (S O) 
35195 d a0 a)).(\lambda (x1: T).(\lambda (H4: (subst1 d u t3 (lift (S O) d 
35196 x1))).(ex2_ind T (\lambda (w2: T).(pr0 (lift (S O) d x1) w2)) (\lambda (w2: 
35197 T).(subst1 d u t4 w2)) (ex2 T (\lambda (x2: T).(subst1 d u t4 (lift (S O) d 
35198 x2))) (\lambda (x2: T).(pr2 a x1 x2))) (\lambda (x: T).(\lambda (H5: (pr0 
35199 (lift (S O) d x1) x)).(\lambda (H6: (subst1 d u t4 x)).(ex2_ind T (\lambda 
35200 (t5: T).(eq T x (lift (S O) d t5))) (\lambda (t5: T).(pr0 x1 t5)) (ex2 T 
35201 (\lambda (x2: T).(subst1 d u t4 (lift (S O) d x2))) (\lambda (x2: T).(pr2 a 
35202 x1 x2))) (\lambda (x0: T).(\lambda (H7: (eq T x (lift (S O) d x0))).(\lambda 
35203 (H8: (pr0 x1 x0)).(let H9 \def (eq_ind T x (\lambda (t: T).(subst1 d u t4 t)) 
35204 H6 (lift (S O) d x0) H7) in (ex_intro2 T (\lambda (x2: T).(subst1 d u t4 
35205 (lift (S O) d x2))) (\lambda (x2: T).(pr2 a x1 x2)) x0 H9 (pr2_free a x1 x0 
35206 H8)))))) (pr0_gen_lift x1 x (S O) d H5))))) (pr0_subst1 t3 t4 H0 u (lift (S 
35207 O) d x1) d H4 u (pr0_refl u))))))))))))))))) (\lambda (c0: C).(\lambda (d: 
35208 C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind 
35209 Abbr) u))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H1: (pr0 t3 
35210 t4)).(\lambda (t: T).(\lambda (H2: (subst0 i u t4 t)).(\lambda (e: 
35211 C).(\lambda (u0: T).(\lambda (d0: nat).(\lambda (H3: (getl d0 c0 (CHead e 
35212 (Bind Abbr) u0))).(\lambda (a0: C).(\lambda (H4: (csubst1 d0 u0 c0 
35213 a0)).(\lambda (a: C).(\lambda (H5: (drop (S O) d0 a0 a)).(\lambda (x1: 
35214 T).(\lambda (H6: (subst1 d0 u0 t3 (lift (S O) d0 x1))).(ex2_ind T (\lambda 
35215 (w2: T).(pr0 (lift (S O) d0 x1) w2)) (\lambda (w2: T).(subst1 d0 u0 t4 w2)) 
35216 (ex2 T (\lambda (x2: T).(subst1 d0 u0 t (lift (S O) d0 x2))) (\lambda (x2: 
35217 T).(pr2 a x1 x2))) (\lambda (x: T).(\lambda (H7: (pr0 (lift (S O) d0 x1) 
35218 x)).(\lambda (H8: (subst1 d0 u0 t4 x)).(ex2_ind T (\lambda (t5: T).(eq T x 
35219 (lift (S O) d0 t5))) (\lambda (t5: T).(pr0 x1 t5)) (ex2 T (\lambda (x2: 
35220 T).(subst1 d0 u0 t (lift (S O) d0 x2))) (\lambda (x2: T).(pr2 a x1 x2))) 
35221 (\lambda (x0: T).(\lambda (H9: (eq T x (lift (S O) d0 x0))).(\lambda (H10: 
35222 (pr0 x1 x0)).(let H11 \def (eq_ind T x (\lambda (t: T).(subst1 d0 u0 t4 t)) 
35223 H8 (lift (S O) d0 x0) H9) in (lt_eq_gt_e i d0 (ex2 T (\lambda (x2: T).(subst1 
35224 d0 u0 t (lift (S O) d0 x2))) (\lambda (x2: T).(pr2 a x1 x2))) (\lambda (H12: 
35225 (lt i d0)).(ex2_ind T (\lambda (t0: T).(subst1 d0 u0 t t0)) (\lambda (t0: 
35226 T).(subst1 i u (lift (S O) d0 x0) t0)) (ex2 T (\lambda (x2: T).(subst1 d0 u0 
35227 t (lift (S O) d0 x2))) (\lambda (x2: T).(pr2 a x1 x2))) (\lambda (x2: 
35228 T).(\lambda (H13: (subst1 d0 u0 t x2)).(\lambda (H14: (subst1 i u (lift (S O) 
35229 d0 x0) x2)).(ex2_ind C (\lambda (e2: C).(csubst1 (minus d0 i) u0 (CHead d 
35230 (Bind Abbr) u) e2)) (\lambda (e2: C).(getl i a0 e2)) (ex2 T (\lambda (x3: 
35231 T).(subst1 d0 u0 t (lift (S O) d0 x3))) (\lambda (x3: T).(pr2 a x1 x3))) 
35232 (\lambda (x3: C).(\lambda (H15: (csubst1 (minus d0 i) u0 (CHead d (Bind Abbr) 
35233 u) x3)).(\lambda (H16: (getl i a0 x3)).(let H17 \def (eq_ind nat (minus d0 i) 
35234 (\lambda (n: nat).(csubst1 n u0 (CHead d (Bind Abbr) u) x3)) H15 (S (minus d0 
35235 (S i))) (minus_x_Sy d0 i H12)) in (let H18 \def (csubst1_gen_head (Bind Abbr) 
35236 d x3 u u0 (minus d0 (S i)) H17) in (ex3_2_ind T C (\lambda (u2: T).(\lambda 
35237 (c2: C).(eq C x3 (CHead c2 (Bind Abbr) u2)))) (\lambda (u2: T).(\lambda (_: 
35238 C).(subst1 (minus d0 (S i)) u0 u u2))) (\lambda (_: T).(\lambda (c2: 
35239 C).(csubst1 (minus d0 (S i)) u0 d c2))) (ex2 T (\lambda (x4: T).(subst1 d0 u0 
35240 t (lift (S O) d0 x4))) (\lambda (x4: T).(pr2 a x1 x4))) (\lambda (x4: 
35241 T).(\lambda (x5: C).(\lambda (H19: (eq C x3 (CHead x5 (Bind Abbr) 
35242 x4))).(\lambda (H20: (subst1 (minus d0 (S i)) u0 u x4)).(\lambda (_: (csubst1 
35243 (minus d0 (S i)) u0 d x5)).(let H22 \def (eq_ind C x3 (\lambda (c: C).(getl i 
35244 a0 c)) H16 (CHead x5 (Bind Abbr) x4) H19) in (let H23 \def (eq_ind nat d0 
35245 (\lambda (n: nat).(drop (S O) n a0 a)) H5 (S (plus i (minus d0 (S i)))) 
35246 (lt_plus_minus i d0 H12)) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: 
35247 C).(eq T x4 (lift (S O) (minus d0 (S i)) v)))) (\lambda (v: T).(\lambda (e0: 
35248 C).(getl i a (CHead e0 (Bind Abbr) v)))) (\lambda (_: T).(\lambda (e0: 
35249 C).(drop (S O) (minus d0 (S i)) x5 e0))) (ex2 T (\lambda (x6: T).(subst1 d0 
35250 u0 t (lift (S O) d0 x6))) (\lambda (x6: T).(pr2 a x1 x6))) (\lambda (x6: 
35251 T).(\lambda (x7: C).(\lambda (H24: (eq T x4 (lift (S O) (minus d0 (S i)) 
35252 x6))).(\lambda (H25: (getl i a (CHead x7 (Bind Abbr) x6))).(\lambda (_: (drop 
35253 (S O) (minus d0 (S i)) x5 x7)).(let H27 \def (eq_ind T x4 (\lambda (t: 
35254 T).(subst1 (minus d0 (S i)) u0 u t)) H20 (lift (S O) (minus d0 (S i)) x6) 
35255 H24) in (ex2_ind T (\lambda (t0: T).(subst1 i (lift (S O) (minus d0 (S i)) 
35256 x6) (lift (S O) d0 x0) t0)) (\lambda (t0: T).(subst1 (S (plus (minus d0 (S 
35257 i)) i)) u0 x2 t0)) (ex2 T (\lambda (x8: T).(subst1 d0 u0 t (lift (S O) d0 
35258 x8))) (\lambda (x8: T).(pr2 a x1 x8))) (\lambda (x8: T).(\lambda (H28: 
35259 (subst1 i (lift (S O) (minus d0 (S i)) x6) (lift (S O) d0 x0) x8)).(\lambda 
35260 (H29: (subst1 (S (plus (minus d0 (S i)) i)) u0 x2 x8)).(let H30 \def (eq_ind 
35261 nat d0 (\lambda (n: nat).(subst1 i (lift (S O) (minus d0 (S i)) x6) (lift (S 
35262 O) n x0) x8)) H28 (S (plus i (minus d0 (S i)))) (lt_plus_minus i d0 H12)) in 
35263 (ex2_ind T (\lambda (t5: T).(eq T x8 (lift (S O) (S (plus i (minus d0 (S 
35264 i)))) t5))) (\lambda (t5: T).(subst1 i x6 x0 t5)) (ex2 T (\lambda (x9: 
35265 T).(subst1 d0 u0 t (lift (S O) d0 x9))) (\lambda (x9: T).(pr2 a x1 x9))) 
35266 (\lambda (x9: T).(\lambda (H31: (eq T x8 (lift (S O) (S (plus i (minus d0 (S 
35267 i)))) x9))).(\lambda (H32: (subst1 i x6 x0 x9)).(let H33 \def (eq_ind T x8 
35268 (\lambda (t: T).(subst1 (S (plus (minus d0 (S i)) i)) u0 x2 t)) H29 (lift (S 
35269 O) (S (plus i (minus d0 (S i)))) x9) H31) in (let H34 \def (eq_ind_r nat (S 
35270 (plus i (minus d0 (S i)))) (\lambda (n: nat).(subst1 (S (plus (minus d0 (S 
35271 i)) i)) u0 x2 (lift (S O) n x9))) H33 d0 (lt_plus_minus i d0 H12)) in (let 
35272 H35 \def (eq_ind_r nat (S (plus (minus d0 (S i)) i)) (\lambda (n: 
35273 nat).(subst1 n u0 x2 (lift (S O) d0 x9))) H34 d0 (lt_plus_minus_r i d0 H12)) 
35274 in (ex_intro2 T (\lambda (x10: T).(subst1 d0 u0 t (lift (S O) d0 x10))) 
35275 (\lambda (x10: T).(pr2 a x1 x10)) x9 (subst1_trans x2 t u0 d0 H13 (lift (S O) 
35276 d0 x9) H35) (pr2_delta1 a x7 x6 i H25 x1 x0 H10 x9 H32)))))))) 
35277 (subst1_gen_lift_lt x6 x0 x8 i (S O) (minus d0 (S i)) H30)))))) 
35278 (subst1_subst1_back (lift (S O) d0 x0) x2 u i H14 (lift (S O) (minus d0 (S 
35279 i)) x6) u0 (minus d0 (S i)) H27)))))))) (getl_drop_conf_lt Abbr a0 x5 x4 i 
35280 H22 a (S O) (minus d0 (S i)) H23))))))))) H18)))))) (csubst1_getl_lt d0 i H12 
35281 c0 a0 u0 H4 (CHead d (Bind Abbr) u) H0))))) (subst1_confluence_neq t4 t u i 
35282 (subst1_single i u t4 t H2) (lift (S O) d0 x0) u0 d0 H11 (lt_neq i d0 H12)))) 
35283 (\lambda (H12: (eq nat i d0)).(let H13 \def (eq_ind_r nat d0 (\lambda (n: 
35284 nat).(subst1 n u0 t4 (lift (S O) n x0))) H11 i H12) in (let H14 \def 
35285 (eq_ind_r nat d0 (\lambda (n: nat).(drop (S O) n a0 a)) H5 i H12) in (let H15 
35286 \def (eq_ind_r nat d0 (\lambda (n: nat).(csubst1 n u0 c0 a0)) H4 i H12) in 
35287 (let H16 \def (eq_ind_r nat d0 (\lambda (n: nat).(getl n c0 (CHead e (Bind 
35288 Abbr) u0))) H3 i H12) in (eq_ind nat i (\lambda (n: nat).(ex2 T (\lambda (x2: 
35289 T).(subst1 n u0 t (lift (S O) n x2))) (\lambda (x2: T).(pr2 a x1 x2)))) (let 
35290 H17 \def (eq_ind C (CHead d (Bind Abbr) u) (\lambda (c: C).(getl i c0 c)) H0 
35291 (CHead e (Bind Abbr) u0) (getl_mono c0 (CHead d (Bind Abbr) u) i H0 (CHead e 
35292 (Bind Abbr) u0) H16)) in (let H18 \def (f_equal C C (\lambda (e0: C).(match 
35293 e0 return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) 
35294 \Rightarrow c])) (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono 
35295 c0 (CHead d (Bind Abbr) u) i H0 (CHead e (Bind Abbr) u0) H16)) in ((let H19 
35296 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
35297 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
35298 Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono c0 (CHead d (Bind Abbr) u) i H0 
35299 (CHead e (Bind Abbr) u0) H16)) in (\lambda (H20: (eq C d e)).(let H21 \def 
35300 (eq_ind_r T u0 (\lambda (t: T).(getl i c0 (CHead e (Bind Abbr) t))) H17 u 
35301 H19) in (let H22 \def (eq_ind_r T u0 (\lambda (t: T).(subst1 i t t4 (lift (S 
35302 O) i x0))) H13 u H19) in (let H23 \def (eq_ind_r T u0 (\lambda (t: 
35303 T).(csubst1 i t c0 a0)) H15 u H19) in (eq_ind T u (\lambda (t0: T).(ex2 T 
35304 (\lambda (x2: T).(subst1 i t0 t (lift (S O) i x2))) (\lambda (x2: T).(pr2 a 
35305 x1 x2)))) (let H24 \def (eq_ind_r C e (\lambda (c: C).(getl i c0 (CHead c 
35306 (Bind Abbr) u))) H21 d H20) in (ex2_ind T (\lambda (t0: T).(subst1 i u t t0)) 
35307 (\lambda (t0: T).(subst1 i u (lift (S O) i x0) t0)) (ex2 T (\lambda (x2: 
35308 T).(subst1 i u t (lift (S O) i x2))) (\lambda (x2: T).(pr2 a x1 x2))) 
35309 (\lambda (x2: T).(\lambda (H25: (subst1 i u t x2)).(\lambda (H26: (subst1 i u 
35310 (lift (S O) i x0) x2)).(let H27 \def (eq_ind T x2 (\lambda (t0: T).(subst1 i 
35311 u t t0)) H25 (lift (S O) i x0) (subst1_gen_lift_eq x0 u x2 (S O) i i (le_n i) 
35312 (eq_ind_r nat (plus (S O) i) (\lambda (n: nat).(lt i n)) (le_n (plus (S O) 
35313 i)) (plus i (S O)) (plus_comm i (S O))) H26)) in (ex_intro2 T (\lambda (x3: 
35314 T).(subst1 i u t (lift (S O) i x3))) (\lambda (x3: T).(pr2 a x1 x3)) x0 H27 
35315 (pr2_free a x1 x0 H10)))))) (subst1_confluence_eq t4 t u i (subst1_single i u 
35316 t4 t H2) (lift (S O) i x0) H22))) u0 H19)))))) H18))) d0 H12)))))) (\lambda 
35317 (H12: (lt d0 i)).(ex2_ind T (\lambda (t0: T).(subst1 d0 u0 t t0)) (\lambda 
35318 (t0: T).(subst1 i u (lift (S O) d0 x0) t0)) (ex2 T (\lambda (x2: T).(subst1 
35319 d0 u0 t (lift (S O) d0 x2))) (\lambda (x2: T).(pr2 a x1 x2))) (\lambda (x2: 
35320 T).(\lambda (H13: (subst1 d0 u0 t x2)).(\lambda (H14: (subst1 i u (lift (S O) 
35321 d0 x0) x2)).(ex2_ind T (\lambda (t5: T).(eq T x2 (lift (S O) d0 t5))) 
35322 (\lambda (t5: T).(subst1 (minus i (S O)) u x0 t5)) (ex2 T (\lambda (x3: 
35323 T).(subst1 d0 u0 t (lift (S O) d0 x3))) (\lambda (x3: T).(pr2 a x1 x3))) 
35324 (\lambda (x3: T).(\lambda (H15: (eq T x2 (lift (S O) d0 x3))).(\lambda (H16: 
35325 (subst1 (minus i (S O)) u x0 x3)).(let H17 \def (eq_ind T x2 (\lambda (t0: 
35326 T).(subst1 d0 u0 t t0)) H13 (lift (S O) d0 x3) H15) in (ex_intro2 T (\lambda 
35327 (x4: T).(subst1 d0 u0 t (lift (S O) d0 x4))) (\lambda (x4: T).(pr2 a x1 x4)) 
35328 x3 H17 (pr2_delta1 a d u (minus i (S O)) (getl_drop_conf_ge i (CHead d (Bind 
35329 Abbr) u) a0 (csubst1_getl_ge d0 i (le_S_n d0 i (le_S (S d0) i H12)) c0 a0 u0 
35330 H4 (CHead d (Bind Abbr) u) H0) a (S O) d0 H5 (eq_ind_r nat (plus (S O) d0) 
35331 (\lambda (n: nat).(le n i)) H12 (plus d0 (S O)) (plus_comm d0 (S O)))) x1 x0 
35332 H10 x3 H16)))))) (subst1_gen_lift_ge u x0 x2 i (S O) d0 H14 (eq_ind_r nat 
35333 (plus (S O) d0) (\lambda (n: nat).(le n i)) H12 (plus d0 (S O)) (plus_comm d0 
35334 (S O)))))))) (subst1_confluence_neq t4 t u i (subst1_single i u t4 t H2) 
35335 (lift (S O) d0 x0) u0 d0 H11 (sym_not_equal nat d0 i (lt_neq d0 i 
35336 H12)))))))))) (pr0_gen_lift x1 x (S O) d0 H7))))) (pr0_subst1 t3 t4 H1 u0 
35337 (lift (S O) d0 x1) d0 H6 u0 (pr0_refl u0))))))))))))))))))))))) c t1 t2 H)))).
35338
35339 inductive pr3 (c:C): T \to (T \to Prop) \def
35340 | pr3_refl: \forall (t: T).(pr3 c t t)
35341 | pr3_sing: \forall (t2: T).(\forall (t1: T).((pr2 c t1 t2) \to (\forall (t3: 
35342 T).((pr3 c t2 t3) \to (pr3 c t1 t3))))).
35343
35344 theorem pr3_gen_sort:
35345  \forall (c: C).(\forall (x: T).(\forall (n: nat).((pr3 c (TSort n) x) \to 
35346 (eq T x (TSort n)))))
35347 \def
35348  \lambda (c: C).(\lambda (x: T).(\lambda (n: nat).(\lambda (H: (pr3 c (TSort 
35349 n) x)).(insert_eq T (TSort n) (\lambda (t: T).(pr3 c t x)) (eq T x (TSort n)) 
35350 (\lambda (y: T).(\lambda (H0: (pr3 c y x)).(pr3_ind c (\lambda (t: 
35351 T).(\lambda (t0: T).((eq T t (TSort n)) \to (eq T t0 (TSort n))))) (\lambda 
35352 (t: T).(\lambda (H1: (eq T t (TSort n))).H1)) (\lambda (t2: T).(\lambda (t1: 
35353 T).(\lambda (H1: (pr2 c t1 t2)).(\lambda (t3: T).(\lambda (_: (pr3 c t2 
35354 t3)).(\lambda (H3: (((eq T t2 (TSort n)) \to (eq T t3 (TSort n))))).(\lambda 
35355 (H4: (eq T t1 (TSort n))).(let H5 \def (eq_ind T t1 (\lambda (t: T).(pr2 c t 
35356 t2)) H1 (TSort n) H4) in (H3 (pr2_gen_sort c t2 n H5)))))))))) y x H0))) 
35357 H)))).
35358
35359 theorem pr3_gen_abst:
35360  \forall (c: C).(\forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr3 c 
35361 (THead (Bind Abst) u1 t1) x) \to (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
35362 T).(eq T x (THead (Bind Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 
35363 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: 
35364 T).(pr3 (CHead c (Bind b) u) t1 t2))))))))))
35365 \def
35366  \lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda 
35367 (H: (pr3 c (THead (Bind Abst) u1 t1) x)).(insert_eq T (THead (Bind Abst) u1 
35368 t1) (\lambda (t: T).(pr3 c t x)) (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
35369 T).(eq T x (THead (Bind Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 
35370 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: 
35371 T).(pr3 (CHead c (Bind b) u) t1 t2)))))) (\lambda (y: T).(\lambda (H0: (pr3 c 
35372 y x)).(unintro T t1 (\lambda (t: T).((eq T y (THead (Bind Abst) u1 t)) \to 
35373 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind Abst) u2 
35374 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c u1 u2))) (\lambda (_: 
35375 T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
35376 t t2)))))))) (unintro T u1 (\lambda (t: T).(\forall (x0: T).((eq T y (THead 
35377 (Bind Abst) t x0)) \to (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x 
35378 (THead (Bind Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))) 
35379 (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead 
35380 c (Bind b) u) x0 t2))))))))) (pr3_ind c (\lambda (t: T).(\lambda (t0: 
35381 T).(\forall (x0: T).(\forall (x1: T).((eq T t (THead (Bind Abst) x0 x1)) \to 
35382 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t0 (THead (Bind Abst) u2 
35383 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
35384 T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
35385 x1 t2))))))))))) (\lambda (t: T).(\lambda (x0: T).(\lambda (x1: T).(\lambda 
35386 (H1: (eq T t (THead (Bind Abst) x0 x1))).(ex3_2_intro T T (\lambda (u2: 
35387 T).(\lambda (t2: T).(eq T t (THead (Bind Abst) u2 t2)))) (\lambda (u2: 
35388 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(\forall 
35389 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x1 t2))))) x0 x1 H1 
35390 (pr3_refl c x0) (\lambda (b: B).(\lambda (u: T).(pr3_refl (CHead c (Bind b) 
35391 u) x1)))))))) (\lambda (t2: T).(\lambda (t3: T).(\lambda (H1: (pr2 c t3 
35392 t2)).(\lambda (t4: T).(\lambda (_: (pr3 c t2 t4)).(\lambda (H3: ((\forall (x: 
35393 T).(\forall (x0: T).((eq T t2 (THead (Bind Abst) x x0)) \to (ex3_2 T T 
35394 (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead (Bind Abst) u2 t2)))) 
35395 (\lambda (u2: T).(\lambda (_: T).(pr3 c x u2))) (\lambda (_: T).(\lambda (t2: 
35396 T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x0 
35397 t2))))))))))).(\lambda (x0: T).(\lambda (x1: T).(\lambda (H4: (eq T t3 (THead 
35398 (Bind Abst) x0 x1))).(let H5 \def (eq_ind T t3 (\lambda (t: T).(pr2 c t t2)) 
35399 H1 (THead (Bind Abst) x0 x1) H4) in (let H6 \def (pr2_gen_abst c x0 x1 t2 H5) 
35400 in (ex3_2_ind T T (\lambda (u2: T).(\lambda (t5: T).(eq T t2 (THead (Bind 
35401 Abst) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) (\lambda (_: 
35402 T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
35403 x1 t5))))) (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind 
35404 Abst) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
35405 T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
35406 x1 t5)))))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H7: (eq T t2 (THead 
35407 (Bind Abst) x2 x3))).(\lambda (H8: (pr2 c x0 x2)).(\lambda (H9: ((\forall (b: 
35408 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x1 x3))))).(let H10 \def (eq_ind 
35409 T t2 (\lambda (t: T).(\forall (x: T).(\forall (x0: T).((eq T t (THead (Bind 
35410 Abst) x x0)) \to (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead 
35411 (Bind Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x u2))) 
35412 (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead 
35413 c (Bind b) u) x0 t2)))))))))) H3 (THead (Bind Abst) x2 x3) H7) in (let H11 
35414 \def (H10 x2 x3 (refl_equal T (THead (Bind Abst) x2 x3))) in (ex3_2_ind T T 
35415 (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind Abst) u2 t5)))) 
35416 (\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda 
35417 (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x3 t5))))) 
35418 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind Abst) u2 
35419 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
35420 T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
35421 x1 t5)))))) (\lambda (x4: T).(\lambda (x5: T).(\lambda (H12: (eq T t4 (THead 
35422 (Bind Abst) x4 x5))).(\lambda (H13: (pr3 c x2 x4)).(\lambda (H14: ((\forall 
35423 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x3 x5))))).(ex3_2_intro T T 
35424 (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind Abst) u2 t5)))) 
35425 (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda 
35426 (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x1 t5))))) 
35427 x4 x5 H12 (pr3_sing c x2 x0 H8 x4 H13) (\lambda (b: B).(\lambda (u: 
35428 T).(pr3_sing (CHead c (Bind b) u) x3 x1 (H9 b u) x5 (H14 b u)))))))))) 
35429 H11)))))))) H6)))))))))))) y x H0))))) H))))).
35430
35431 theorem pr3_gen_cast:
35432  \forall (c: C).(\forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr3 c 
35433 (THead (Flat Cast) u1 t1) x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda 
35434 (t2: T).(eq T x (THead (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
35435 T).(pr3 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c t1 t2)))) (pr3 c 
35436 t1 x))))))
35437 \def
35438  \lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda 
35439 (H: (pr3 c (THead (Flat Cast) u1 t1) x)).(insert_eq T (THead (Flat Cast) u1 
35440 t1) (\lambda (t: T).(pr3 c t x)) (or (ex3_2 T T (\lambda (u2: T).(\lambda 
35441 (t2: T).(eq T x (THead (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
35442 T).(pr3 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c t1 t2)))) (pr3 c 
35443 t1 x)) (\lambda (y: T).(\lambda (H0: (pr3 c y x)).(unintro T t1 (\lambda (t: 
35444 T).((eq T y (THead (Flat Cast) u1 t)) \to (or (ex3_2 T T (\lambda (u2: 
35445 T).(\lambda (t2: T).(eq T x (THead (Flat Cast) u2 t2)))) (\lambda (u2: 
35446 T).(\lambda (_: T).(pr3 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c t 
35447 t2)))) (pr3 c t x)))) (unintro T u1 (\lambda (t: T).(\forall (x0: T).((eq T y 
35448 (THead (Flat Cast) t x0)) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
35449 T).(eq T x (THead (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 
35450 c t u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c x0 t2)))) (pr3 c x0 x))))) 
35451 (pr3_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (x0: T).(\forall (x1: 
35452 T).((eq T t (THead (Flat Cast) x0 x1)) \to (or (ex3_2 T T (\lambda (u2: 
35453 T).(\lambda (t2: T).(eq T t0 (THead (Flat Cast) u2 t2)))) (\lambda (u2: 
35454 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c x1 
35455 t2)))) (pr3 c x1 t0))))))) (\lambda (t: T).(\lambda (x0: T).(\lambda (x1: 
35456 T).(\lambda (H1: (eq T t (THead (Flat Cast) x0 x1))).(eq_ind_r T (THead (Flat 
35457 Cast) x0 x1) (\lambda (t0: T).(or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
35458 T).(eq T t0 (THead (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
35459 T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c x1 t2)))) (pr3 c 
35460 x1 t0))) (or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T (THead 
35461 (Flat Cast) x0 x1) (THead (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
35462 T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c x1 t2)))) (pr3 c 
35463 x1 (THead (Flat Cast) x0 x1)) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t2: 
35464 T).(eq T (THead (Flat Cast) x0 x1) (THead (Flat Cast) u2 t2)))) (\lambda (u2: 
35465 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c x1 
35466 t2))) x0 x1 (refl_equal T (THead (Flat Cast) x0 x1)) (pr3_refl c x0) 
35467 (pr3_refl c x1))) t H1))))) (\lambda (t2: T).(\lambda (t3: T).(\lambda (H1: 
35468 (pr2 c t3 t2)).(\lambda (t4: T).(\lambda (H2: (pr3 c t2 t4)).(\lambda (H3: 
35469 ((\forall (x: T).(\forall (x0: T).((eq T t2 (THead (Flat Cast) x x0)) \to (or 
35470 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead (Flat Cast) u2 
35471 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x u2))) (\lambda (_: 
35472 T).(\lambda (t2: T).(pr3 c x0 t2)))) (pr3 c x0 t4))))))).(\lambda (x0: 
35473 T).(\lambda (x1: T).(\lambda (H4: (eq T t3 (THead (Flat Cast) x0 x1))).(let 
35474 H5 \def (eq_ind T t3 (\lambda (t: T).(pr2 c t t2)) H1 (THead (Flat Cast) x0 
35475 x1) H4) in (let H6 \def (pr2_gen_cast c x0 x1 t2 H5) in (or_ind (ex3_2 T T 
35476 (\lambda (u2: T).(\lambda (t5: T).(eq T t2 (THead (Flat Cast) u2 t5)))) 
35477 (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) (\lambda (_: T).(\lambda 
35478 (t5: T).(pr2 c x1 t5)))) (pr2 c x1 t2) (or (ex3_2 T T (\lambda (u2: 
35479 T).(\lambda (t5: T).(eq T t4 (THead (Flat Cast) u2 t5)))) (\lambda (u2: 
35480 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 
35481 t5)))) (pr3 c x1 t4)) (\lambda (H7: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
35482 T).(eq T t2 (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
35483 T).(pr2 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(pr2 c x1 
35484 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t5: T).(eq T t2 (THead 
35485 (Flat Cast) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) 
35486 (\lambda (_: T).(\lambda (t5: T).(pr2 c x1 t5))) (or (ex3_2 T T (\lambda (u2: 
35487 T).(\lambda (t5: T).(eq T t4 (THead (Flat Cast) u2 t5)))) (\lambda (u2: 
35488 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 
35489 t5)))) (pr3 c x1 t4)) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H8: (eq T 
35490 t2 (THead (Flat Cast) x2 x3))).(\lambda (H9: (pr2 c x0 x2)).(\lambda (H10: 
35491 (pr2 c x1 x3)).(let H11 \def (eq_ind T t2 (\lambda (t: T).(\forall (x: 
35492 T).(\forall (x0: T).((eq T t (THead (Flat Cast) x x0)) \to (or (ex3_2 T T 
35493 (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead (Flat Cast) u2 t2)))) 
35494 (\lambda (u2: T).(\lambda (_: T).(pr3 c x u2))) (\lambda (_: T).(\lambda (t2: 
35495 T).(pr3 c x0 t2)))) (pr3 c x0 t4)))))) H3 (THead (Flat Cast) x2 x3) H8) in 
35496 (let H12 \def (H11 x2 x3 (refl_equal T (THead (Flat Cast) x2 x3))) in (or_ind 
35497 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat Cast) u2 
35498 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: 
35499 T).(\lambda (t5: T).(pr3 c x3 t5)))) (pr3 c x3 t4) (or (ex3_2 T T (\lambda 
35500 (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat Cast) u2 t5)))) (\lambda (u2: 
35501 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 
35502 t5)))) (pr3 c x1 t4)) (\lambda (H13: (ex3_2 T T (\lambda (u2: T).(\lambda 
35503 (t2: T).(eq T t4 (THead (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
35504 T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c x3 
35505 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead 
35506 (Flat Cast) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))) 
35507 (\lambda (_: T).(\lambda (t5: T).(pr3 c x3 t5))) (or (ex3_2 T T (\lambda (u2: 
35508 T).(\lambda (t5: T).(eq T t4 (THead (Flat Cast) u2 t5)))) (\lambda (u2: 
35509 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 
35510 t5)))) (pr3 c x1 t4)) (\lambda (x4: T).(\lambda (x5: T).(\lambda (H14: (eq T 
35511 t4 (THead (Flat Cast) x4 x5))).(\lambda (H15: (pr3 c x2 x4)).(\lambda (H16: 
35512 (pr3 c x3 x5)).(eq_ind_r T (THead (Flat Cast) x4 x5) (\lambda (t: T).(or 
35513 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t (THead (Flat Cast) u2 
35514 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
35515 T).(\lambda (t5: T).(pr3 c x1 t5)))) (pr3 c x1 t))) (or_introl (ex3_2 T T 
35516 (\lambda (u2: T).(\lambda (t5: T).(eq T (THead (Flat Cast) x4 x5) (THead 
35517 (Flat Cast) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
35518 (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 t5)))) (pr3 c x1 (THead (Flat 
35519 Cast) x4 x5)) (ex3_2_intro T T (\lambda (u2: T).(\lambda (t5: T).(eq T (THead 
35520 (Flat Cast) x4 x5) (THead (Flat Cast) u2 t5)))) (\lambda (u2: T).(\lambda (_: 
35521 T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 t5))) x4 x5 
35522 (refl_equal T (THead (Flat Cast) x4 x5)) (pr3_sing c x2 x0 H9 x4 H15) 
35523 (pr3_sing c x3 x1 H10 x5 H16))) t4 H14)))))) H13)) (\lambda (H13: (pr3 c x3 
35524 t4)).(or_intror (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead 
35525 (Flat Cast) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
35526 (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 t5)))) (pr3 c x1 t4) (pr3_sing c 
35527 x3 x1 H10 t4 H13))) H12)))))))) H7)) (\lambda (H7: (pr2 c x1 t2)).(or_intror 
35528 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat Cast) u2 
35529 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
35530 T).(\lambda (t5: T).(pr3 c x1 t5)))) (pr3 c x1 t4) (pr3_sing c t2 x1 H7 t4 
35531 H2))) H6)))))))))))) y x H0))))) H))))).
35532
35533 theorem clear_pr3_trans:
35534  \forall (c2: C).(\forall (t1: T).(\forall (t2: T).((pr3 c2 t1 t2) \to 
35535 (\forall (c1: C).((clear c1 c2) \to (pr3 c1 t1 t2))))))
35536 \def
35537  \lambda (c2: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c2 t1 
35538 t2)).(\lambda (c1: C).(\lambda (H0: (clear c1 c2)).(pr3_ind c2 (\lambda (t: 
35539 T).(\lambda (t0: T).(pr3 c1 t t0))) (\lambda (t: T).(pr3_refl c1 t)) (\lambda 
35540 (t3: T).(\lambda (t4: T).(\lambda (H1: (pr2 c2 t4 t3)).(\lambda (t5: 
35541 T).(\lambda (_: (pr3 c2 t3 t5)).(\lambda (H3: (pr3 c1 t3 t5)).(pr3_sing c1 t3 
35542 t4 (clear_pr2_trans c2 t4 t3 H1 c1 H0) t5 H3))))))) t1 t2 H)))))).
35543
35544 theorem pr3_pr2:
35545  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (pr3 c 
35546 t1 t2))))
35547 \def
35548  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t1 
35549 t2)).(pr3_sing c t2 t1 H t2 (pr3_refl c t2))))).
35550
35551 theorem pr3_t:
35552  \forall (t2: T).(\forall (t1: T).(\forall (c: C).((pr3 c t1 t2) \to (\forall 
35553 (t3: T).((pr3 c t2 t3) \to (pr3 c t1 t3))))))
35554 \def
35555  \lambda (t2: T).(\lambda (t1: T).(\lambda (c: C).(\lambda (H: (pr3 c t1 
35556 t2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (t3: T).((pr3 c t0 
35557 t3) \to (pr3 c t t3))))) (\lambda (t: T).(\lambda (t3: T).(\lambda (H0: (pr3 
35558 c t t3)).H0))) (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c t3 
35559 t0)).(\lambda (t4: T).(\lambda (_: (pr3 c t0 t4)).(\lambda (H2: ((\forall 
35560 (t3: T).((pr3 c t4 t3) \to (pr3 c t0 t3))))).(\lambda (t5: T).(\lambda (H3: 
35561 (pr3 c t4 t5)).(pr3_sing c t0 t3 H0 t5 (H2 t5 H3)))))))))) t1 t2 H)))).
35562
35563 theorem pr3_thin_dx:
35564  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to (\forall 
35565 (u: T).(\forall (f: F).(pr3 c (THead (Flat f) u t1) (THead (Flat f) u 
35566 t2)))))))
35567 \def
35568  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t1 
35569 t2)).(\lambda (u: T).(\lambda (f: F).(pr3_ind c (\lambda (t: T).(\lambda (t0: 
35570 T).(pr3 c (THead (Flat f) u t) (THead (Flat f) u t0)))) (\lambda (t: 
35571 T).(pr3_refl c (THead (Flat f) u t))) (\lambda (t0: T).(\lambda (t3: 
35572 T).(\lambda (H0: (pr2 c t3 t0)).(\lambda (t4: T).(\lambda (_: (pr3 c t0 
35573 t4)).(\lambda (H2: (pr3 c (THead (Flat f) u t0) (THead (Flat f) u 
35574 t4))).(pr3_sing c (THead (Flat f) u t0) (THead (Flat f) u t3) (pr2_thin_dx c 
35575 t3 t0 H0 u f) (THead (Flat f) u t4) H2))))))) t1 t2 H)))))).
35576
35577 theorem pr3_head_1:
35578  \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pr3 c u1 u2) \to (\forall 
35579 (k: K).(\forall (t: T).(pr3 c (THead k u1 t) (THead k u2 t)))))))
35580 \def
35581  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr3 c u1 
35582 u2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (k: K).(\forall 
35583 (t1: T).(pr3 c (THead k t t1) (THead k t0 t1)))))) (\lambda (t: T).(\lambda 
35584 (k: K).(\lambda (t0: T).(pr3_refl c (THead k t t0))))) (\lambda (t2: 
35585 T).(\lambda (t1: T).(\lambda (H0: (pr2 c t1 t2)).(\lambda (t3: T).(\lambda 
35586 (_: (pr3 c t2 t3)).(\lambda (H2: ((\forall (k: K).(\forall (t: T).(pr3 c 
35587 (THead k t2 t) (THead k t3 t)))))).(\lambda (k: K).(\lambda (t: T).(pr3_sing 
35588 c (THead k t2 t) (THead k t1 t) (pr2_head_1 c t1 t2 H0 k t) (THead k t3 t) 
35589 (H2 k t)))))))))) u1 u2 H)))).
35590
35591 theorem pr3_head_2:
35592  \forall (c: C).(\forall (u: T).(\forall (t1: T).(\forall (t2: T).(\forall 
35593 (k: K).((pr3 (CHead c k u) t1 t2) \to (pr3 c (THead k u t1) (THead k u 
35594 t2)))))))
35595 \def
35596  \lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
35597 (k: K).(\lambda (H: (pr3 (CHead c k u) t1 t2)).(pr3_ind (CHead c k u) 
35598 (\lambda (t: T).(\lambda (t0: T).(pr3 c (THead k u t) (THead k u t0)))) 
35599 (\lambda (t: T).(pr3_refl c (THead k u t))) (\lambda (t0: T).(\lambda (t3: 
35600 T).(\lambda (H0: (pr2 (CHead c k u) t3 t0)).(\lambda (t4: T).(\lambda (_: 
35601 (pr3 (CHead c k u) t0 t4)).(\lambda (H2: (pr3 c (THead k u t0) (THead k u 
35602 t4))).(pr3_sing c (THead k u t0) (THead k u t3) (pr2_head_2 c u t3 t0 k H0) 
35603 (THead k u t4) H2))))))) t1 t2 H)))))).
35604
35605 theorem pr3_head_21:
35606  \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pr3 c u1 u2) \to (\forall 
35607 (k: K).(\forall (t1: T).(\forall (t2: T).((pr3 (CHead c k u1) t1 t2) \to (pr3 
35608 c (THead k u1 t1) (THead k u2 t2)))))))))
35609 \def
35610  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr3 c u1 
35611 u2)).(\lambda (k: K).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pr3 
35612 (CHead c k u1) t1 t2)).(pr3_t (THead k u1 t2) (THead k u1 t1) c (pr3_head_2 c 
35613 u1 t1 t2 k H0) (THead k u2 t2) (pr3_head_1 c u1 u2 H k t2))))))))).
35614
35615 theorem pr3_head_12:
35616  \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pr3 c u1 u2) \to (\forall 
35617 (k: K).(\forall (t1: T).(\forall (t2: T).((pr3 (CHead c k u2) t1 t2) \to (pr3 
35618 c (THead k u1 t1) (THead k u2 t2)))))))))
35619 \def
35620  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr3 c u1 
35621 u2)).(\lambda (k: K).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pr3 
35622 (CHead c k u2) t1 t2)).(pr3_t (THead k u2 t1) (THead k u1 t1) c (pr3_head_1 c 
35623 u1 u2 H k t1) (THead k u2 t2) (pr3_head_2 c u2 t1 t2 k H0))))))))).
35624
35625 theorem pr3_pr1:
35626  \forall (t1: T).(\forall (t2: T).((pr1 t1 t2) \to (\forall (c: C).(pr3 c t1 
35627 t2))))
35628 \def
35629  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr1 t1 t2)).(pr1_ind (\lambda 
35630 (t: T).(\lambda (t0: T).(\forall (c: C).(pr3 c t t0)))) (\lambda (t: 
35631 T).(\lambda (c: C).(pr3_refl c t))) (\lambda (t0: T).(\lambda (t3: 
35632 T).(\lambda (H0: (pr0 t3 t0)).(\lambda (t4: T).(\lambda (_: (pr1 t0 
35633 t4)).(\lambda (H2: ((\forall (c: C).(pr3 c t0 t4)))).(\lambda (c: 
35634 C).(pr3_sing c t0 t3 (pr2_free c t3 t0 H0) t4 (H2 c))))))))) t1 t2 H))).
35635
35636 theorem pr3_cflat:
35637  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to (\forall 
35638 (f: F).(\forall (v: T).(pr3 (CHead c (Flat f) v) t1 t2))))))
35639 \def
35640  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t1 
35641 t2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (f: F).(\forall (v: 
35642 T).(pr3 (CHead c (Flat f) v) t t0))))) (\lambda (t: T).(\lambda (f: 
35643 F).(\lambda (v: T).(pr3_refl (CHead c (Flat f) v) t)))) (\lambda (t3: 
35644 T).(\lambda (t4: T).(\lambda (H0: (pr2 c t4 t3)).(\lambda (t5: T).(\lambda 
35645 (_: (pr3 c t3 t5)).(\lambda (H2: ((\forall (f: F).(\forall (v: T).(pr3 (CHead 
35646 c (Flat f) v) t3 t5))))).(\lambda (f: F).(\lambda (v: T).(pr3_sing (CHead c 
35647 (Flat f) v) t3 t4 (pr2_cflat c t4 t3 H0 f v) t5 (H2 f v)))))))))) t1 t2 H)))).
35648
35649 theorem pr3_pr0_pr2_t:
35650  \forall (u1: T).(\forall (u2: T).((pr0 u1 u2) \to (\forall (c: C).(\forall 
35651 (t1: T).(\forall (t2: T).(\forall (k: K).((pr2 (CHead c k u2) t1 t2) \to (pr3 
35652 (CHead c k u1) t1 t2))))))))
35653 \def
35654  \lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr0 u1 u2)).(\lambda (c: 
35655 C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (k: K).(\lambda (H0: (pr2 
35656 (CHead c k u2) t1 t2)).(let H1 \def (match H0 return (\lambda (c0: 
35657 C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr2 c0 t t0)).((eq C c0 
35658 (CHead c k u2)) \to ((eq T t t1) \to ((eq T t0 t2) \to (pr3 (CHead c k u1) t1 
35659 t2)))))))) with [(pr2_free c0 t0 t3 H1) \Rightarrow (\lambda (H2: (eq C c0 
35660 (CHead c k u2))).(\lambda (H3: (eq T t0 t1)).(\lambda (H4: (eq T t3 
35661 t2)).(eq_ind C (CHead c k u2) (\lambda (_: C).((eq T t0 t1) \to ((eq T t3 t2) 
35662 \to ((pr0 t0 t3) \to (pr3 (CHead c k u1) t1 t2))))) (\lambda (H5: (eq T t0 
35663 t1)).(eq_ind T t1 (\lambda (t: T).((eq T t3 t2) \to ((pr0 t t3) \to (pr3 
35664 (CHead c k u1) t1 t2)))) (\lambda (H6: (eq T t3 t2)).(eq_ind T t2 (\lambda 
35665 (t: T).((pr0 t1 t) \to (pr3 (CHead c k u1) t1 t2))) (\lambda (H7: (pr0 t1 
35666 t2)).(pr3_pr2 (CHead c k u1) t1 t2 (pr2_free (CHead c k u1) t1 t2 H7))) t3 
35667 (sym_eq T t3 t2 H6))) t0 (sym_eq T t0 t1 H5))) c0 (sym_eq C c0 (CHead c k u2) 
35668 H2) H3 H4 H1)))) | (pr2_delta c0 d u i H1 t0 t3 H2 t H3) \Rightarrow (\lambda 
35669 (H4: (eq C c0 (CHead c k u2))).(\lambda (H5: (eq T t0 t1)).(\lambda (H6: (eq 
35670 T t t2)).(eq_ind C (CHead c k u2) (\lambda (c1: C).((eq T t0 t1) \to ((eq T t 
35671 t2) \to ((getl i c1 (CHead d (Bind Abbr) u)) \to ((pr0 t0 t3) \to ((subst0 i 
35672 u t3 t) \to (pr3 (CHead c k u1) t1 t2))))))) (\lambda (H7: (eq T t0 
35673 t1)).(eq_ind T t1 (\lambda (t4: T).((eq T t t2) \to ((getl i (CHead c k u2) 
35674 (CHead d (Bind Abbr) u)) \to ((pr0 t4 t3) \to ((subst0 i u t3 t) \to (pr3 
35675 (CHead c k u1) t1 t2)))))) (\lambda (H8: (eq T t t2)).(eq_ind T t2 (\lambda 
35676 (t4: T).((getl i (CHead c k u2) (CHead d (Bind Abbr) u)) \to ((pr0 t1 t3) \to 
35677 ((subst0 i u t3 t4) \to (pr3 (CHead c k u1) t1 t2))))) (\lambda (H9: (getl i 
35678 (CHead c k u2) (CHead d (Bind Abbr) u))).(\lambda (H10: (pr0 t1 t3)).(\lambda 
35679 (H11: (subst0 i u t3 t2)).(nat_ind (\lambda (n: nat).((getl n (CHead c k u2) 
35680 (CHead d (Bind Abbr) u)) \to ((subst0 n u t3 t2) \to (pr3 (CHead c k u1) t1 
35681 t2)))) (\lambda (H12: (getl O (CHead c k u2) (CHead d (Bind Abbr) 
35682 u))).(\lambda (H13: (subst0 O u t3 t2)).(K_ind (\lambda (k: K).((getl O 
35683 (CHead c k u2) (CHead d (Bind Abbr) u)) \to (pr3 (CHead c k u1) t1 t2))) 
35684 (\lambda (b: B).(\lambda (H14: (getl O (CHead c (Bind b) u2) (CHead d (Bind 
35685 Abbr) u))).(let H0 \def (f_equal C C (\lambda (e: C).(match e return (\lambda 
35686 (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) 
35687 (CHead d (Bind Abbr) u) (CHead c (Bind b) u2) (clear_gen_bind b c (CHead d 
35688 (Bind Abbr) u) u2 (getl_gen_O (CHead c (Bind b) u2) (CHead d (Bind Abbr) u) 
35689 H14))) in ((let H15 \def (f_equal C B (\lambda (e: C).(match e return 
35690 (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) 
35691 \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | 
35692 (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead c (Bind b) u2) 
35693 (clear_gen_bind b c (CHead d (Bind Abbr) u) u2 (getl_gen_O (CHead c (Bind b) 
35694 u2) (CHead d (Bind Abbr) u) H14))) in ((let H16 \def (f_equal C T (\lambda 
35695 (e: C).(match e return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | 
35696 (CHead _ _ t) \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead c (Bind b) u2) 
35697 (clear_gen_bind b c (CHead d (Bind Abbr) u) u2 (getl_gen_O (CHead c (Bind b) 
35698 u2) (CHead d (Bind Abbr) u) H14))) in (\lambda (H17: (eq B Abbr b)).(\lambda 
35699 (_: (eq C d c)).(let H19 \def (eq_ind T u (\lambda (t: T).(subst0 O t t3 t2)) 
35700 H13 u2 H16) in (eq_ind B Abbr (\lambda (b0: B).(pr3 (CHead c (Bind b0) u1) t1 
35701 t2)) (ex2_ind T (\lambda (t1: T).(subst0 O u1 t3 t1)) (\lambda (t1: T).(pr0 
35702 t1 t2)) (pr3 (CHead c (Bind Abbr) u1) t1 t2) (\lambda (x: T).(\lambda (H20: 
35703 (subst0 O u1 t3 x)).(\lambda (H21: (pr0 x t2)).(pr3_sing (CHead c (Bind Abbr) 
35704 u1) x t1 (pr2_delta (CHead c (Bind Abbr) u1) c u1 O (getl_refl Abbr c u1) t1 
35705 t3 H10 x H20) t2 (pr3_pr2 (CHead c (Bind Abbr) u1) x t2 (pr2_free (CHead c 
35706 (Bind Abbr) u1) x t2 H21)))))) (pr0_subst0_back u2 t3 t2 O H19 u1 H)) b 
35707 H17))))) H15)) H0)))) (\lambda (f: F).(\lambda (H14: (getl O (CHead c (Flat 
35708 f) u2) (CHead d (Bind Abbr) u))).(pr3_pr2 (CHead c (Flat f) u1) t1 t2 
35709 (pr2_cflat c t1 t2 (pr2_delta c d u O (getl_intro O c (CHead d (Bind Abbr) u) 
35710 c (drop_refl c) (clear_gen_flat f c (CHead d (Bind Abbr) u) u2 (getl_gen_O 
35711 (CHead c (Flat f) u2) (CHead d (Bind Abbr) u) H14))) t1 t3 H10 t2 H13) f 
35712 u1)))) k H12))) (\lambda (i0: nat).(\lambda (IHi: (((getl i0 (CHead c k u2) 
35713 (CHead d (Bind Abbr) u)) \to ((subst0 i0 u t3 t2) \to (pr3 (CHead c k u1) t1 
35714 t2))))).(\lambda (H12: (getl (S i0) (CHead c k u2) (CHead d (Bind Abbr) 
35715 u))).(\lambda (H13: (subst0 (S i0) u t3 t2)).(K_ind (\lambda (k: K).((getl (S 
35716 i0) (CHead c k u2) (CHead d (Bind Abbr) u)) \to ((((getl i0 (CHead c k u2) 
35717 (CHead d (Bind Abbr) u)) \to ((subst0 i0 u t3 t2) \to (pr3 (CHead c k u1) t1 
35718 t2)))) \to (pr3 (CHead c k u1) t1 t2)))) (\lambda (b: B).(\lambda (H14: (getl 
35719 (S i0) (CHead c (Bind b) u2) (CHead d (Bind Abbr) u))).(\lambda (_: (((getl 
35720 i0 (CHead c (Bind b) u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u t3 t2) 
35721 \to (pr3 (CHead c (Bind b) u1) t1 t2))))).(pr3_pr2 (CHead c (Bind b) u1) t1 
35722 t2 (pr2_delta (CHead c (Bind b) u1) d u (S i0) (getl_head (Bind b) i0 c 
35723 (CHead d (Bind Abbr) u) (getl_gen_S (Bind b) c (CHead d (Bind Abbr) u) u2 i0 
35724 H14) u1) t1 t3 H10 t2 H13))))) (\lambda (f: F).(\lambda (H14: (getl (S i0) 
35725 (CHead c (Flat f) u2) (CHead d (Bind Abbr) u))).(\lambda (_: (((getl i0 
35726 (CHead c (Flat f) u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u t3 t2) \to 
35727 (pr3 (CHead c (Flat f) u1) t1 t2))))).(pr3_pr2 (CHead c (Flat f) u1) t1 t2 
35728 (pr2_cflat c t1 t2 (pr2_delta c d u (r (Flat f) i0) (getl_gen_S (Flat f) c 
35729 (CHead d (Bind Abbr) u) u2 i0 H14) t1 t3 H10 t2 H13) f u1))))) k H12 IHi))))) 
35730 i H9 H11)))) t (sym_eq T t t2 H8))) t0 (sym_eq T t0 t1 H7))) c0 (sym_eq C c0 
35731 (CHead c k u2) H4) H5 H6 H1 H2 H3))))]) in (H1 (refl_equal C (CHead c k u2)) 
35732 (refl_equal T t1) (refl_equal T t2)))))))))).
35733
35734 theorem pr3_pr2_pr2_t:
35735  \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pr2 c u1 u2) \to (\forall 
35736 (t1: T).(\forall (t2: T).(\forall (k: K).((pr2 (CHead c k u2) t1 t2) \to (pr3 
35737 (CHead c k u1) t1 t2))))))))
35738 \def
35739  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr2 c u1 
35740 u2)).(let H0 \def (match H return (\lambda (c0: C).(\lambda (t: T).(\lambda 
35741 (t0: T).(\lambda (_: (pr2 c0 t t0)).((eq C c0 c) \to ((eq T t u1) \to ((eq T 
35742 t0 u2) \to (\forall (t1: T).(\forall (t2: T).(\forall (k: K).((pr2 (CHead c k 
35743 u2) t1 t2) \to (pr3 (CHead c k u1) t1 t2)))))))))))) with [(pr2_free c0 t1 t2 
35744 H0) \Rightarrow (\lambda (H1: (eq C c0 c)).(\lambda (H2: (eq T t1 
35745 u1)).(\lambda (H3: (eq T t2 u2)).(eq_ind C c (\lambda (_: C).((eq T t1 u1) 
35746 \to ((eq T t2 u2) \to ((pr0 t1 t2) \to (\forall (t3: T).(\forall (t4: 
35747 T).(\forall (k: K).((pr2 (CHead c k u2) t3 t4) \to (pr3 (CHead c k u1) t3 
35748 t4))))))))) (\lambda (H4: (eq T t1 u1)).(eq_ind T u1 (\lambda (t: T).((eq T 
35749 t2 u2) \to ((pr0 t t2) \to (\forall (t3: T).(\forall (t4: T).(\forall (k: 
35750 K).((pr2 (CHead c k u2) t3 t4) \to (pr3 (CHead c k u1) t3 t4)))))))) (\lambda 
35751 (H5: (eq T t2 u2)).(eq_ind T u2 (\lambda (t: T).((pr0 u1 t) \to (\forall (t3: 
35752 T).(\forall (t4: T).(\forall (k: K).((pr2 (CHead c k u2) t3 t4) \to (pr3 
35753 (CHead c k u1) t3 t4))))))) (\lambda (H6: (pr0 u1 u2)).(\lambda (t3: 
35754 T).(\lambda (t4: T).(\lambda (k: K).(\lambda (H: (pr2 (CHead c k u2) t3 
35755 t4)).(pr3_pr0_pr2_t u1 u2 H6 c t3 t4 k H)))))) t2 (sym_eq T t2 u2 H5))) t1 
35756 (sym_eq T t1 u1 H4))) c0 (sym_eq C c0 c H1) H2 H3 H0)))) | (pr2_delta c0 d u 
35757 i H0 t1 t2 H1 t H2) \Rightarrow (\lambda (H3: (eq C c0 c)).(\lambda (H4: (eq 
35758 T t1 u1)).(\lambda (H5: (eq T t u2)).(eq_ind C c (\lambda (c1: C).((eq T t1 
35759 u1) \to ((eq T t u2) \to ((getl i c1 (CHead d (Bind Abbr) u)) \to ((pr0 t1 
35760 t2) \to ((subst0 i u t2 t) \to (\forall (t3: T).(\forall (t4: T).(\forall (k: 
35761 K).((pr2 (CHead c k u2) t3 t4) \to (pr3 (CHead c k u1) t3 t4))))))))))) 
35762 (\lambda (H6: (eq T t1 u1)).(eq_ind T u1 (\lambda (t0: T).((eq T t u2) \to 
35763 ((getl i c (CHead d (Bind Abbr) u)) \to ((pr0 t0 t2) \to ((subst0 i u t2 t) 
35764 \to (\forall (t3: T).(\forall (t4: T).(\forall (k: K).((pr2 (CHead c k u2) t3 
35765 t4) \to (pr3 (CHead c k u1) t3 t4)))))))))) (\lambda (H7: (eq T t 
35766 u2)).(eq_ind T u2 (\lambda (t0: T).((getl i c (CHead d (Bind Abbr) u)) \to 
35767 ((pr0 u1 t2) \to ((subst0 i u t2 t0) \to (\forall (t3: T).(\forall (t4: 
35768 T).(\forall (k: K).((pr2 (CHead c k u2) t3 t4) \to (pr3 (CHead c k u1) t3 
35769 t4))))))))) (\lambda (H8: (getl i c (CHead d (Bind Abbr) u))).(\lambda (H9: 
35770 (pr0 u1 t2)).(\lambda (H10: (subst0 i u t2 u2)).(\lambda (t3: T).(\lambda 
35771 (t0: T).(\lambda (k: K).(\lambda (H: (pr2 (CHead c k u2) t3 t0)).(let H11 
35772 \def (match H return (\lambda (c0: C).(\lambda (t: T).(\lambda (t1: 
35773 T).(\lambda (_: (pr2 c0 t t1)).((eq C c0 (CHead c k u2)) \to ((eq T t t3) \to 
35774 ((eq T t1 t0) \to (pr3 (CHead c k u1) t3 t0)))))))) with [(pr2_free c0 t3 t4 
35775 H3) \Rightarrow (\lambda (H4: (eq C c0 (CHead c k u2))).(\lambda (H5: (eq T 
35776 t3 t3)).(\lambda (H6: (eq T t4 t0)).(eq_ind C (CHead c k u2) (\lambda (_: 
35777 C).((eq T t3 t3) \to ((eq T t4 t0) \to ((pr0 t3 t4) \to (pr3 (CHead c k u1) 
35778 t3 t0))))) (\lambda (H7: (eq T t3 t3)).(eq_ind T t3 (\lambda (t: T).((eq T t4 
35779 t0) \to ((pr0 t t4) \to (pr3 (CHead c k u1) t3 t0)))) (\lambda (H8: (eq T t4 
35780 t0)).(eq_ind T t0 (\lambda (t: T).((pr0 t3 t) \to (pr3 (CHead c k u1) t3 
35781 t0))) (\lambda (H9: (pr0 t3 t0)).(pr3_pr2 (CHead c k u1) t3 t0 (pr2_free 
35782 (CHead c k u1) t3 t0 H9))) t4 (sym_eq T t4 t0 H8))) t3 (sym_eq T t3 t3 H7))) 
35783 c0 (sym_eq C c0 (CHead c k u2) H4) H5 H6 H3)))) | (pr2_delta c0 d0 u0 i0 H3 
35784 t3 t4 H4 t H5) \Rightarrow (\lambda (H6: (eq C c0 (CHead c k u2))).(\lambda 
35785 (H7: (eq T t3 t3)).(\lambda (H11: (eq T t t0)).(eq_ind C (CHead c k u2) 
35786 (\lambda (c1: C).((eq T t3 t3) \to ((eq T t t0) \to ((getl i0 c1 (CHead d0 
35787 (Bind Abbr) u0)) \to ((pr0 t3 t4) \to ((subst0 i0 u0 t4 t) \to (pr3 (CHead c 
35788 k u1) t3 t0))))))) (\lambda (H12: (eq T t3 t3)).(eq_ind T t3 (\lambda (t1: 
35789 T).((eq T t t0) \to ((getl i0 (CHead c k u2) (CHead d0 (Bind Abbr) u0)) \to 
35790 ((pr0 t1 t4) \to ((subst0 i0 u0 t4 t) \to (pr3 (CHead c k u1) t3 t0)))))) 
35791 (\lambda (H13: (eq T t t0)).(eq_ind T t0 (\lambda (t1: T).((getl i0 (CHead c 
35792 k u2) (CHead d0 (Bind Abbr) u0)) \to ((pr0 t3 t4) \to ((subst0 i0 u0 t4 t1) 
35793 \to (pr3 (CHead c k u1) t3 t0))))) (\lambda (H14: (getl i0 (CHead c k u2) 
35794 (CHead d0 (Bind Abbr) u0))).(\lambda (H15: (pr0 t3 t4)).(\lambda (H16: 
35795 (subst0 i0 u0 t4 t0)).((match i0 return (\lambda (n: nat).((getl n (CHead c k 
35796 u2) (CHead d0 (Bind Abbr) u0)) \to ((subst0 n u0 t4 t0) \to (pr3 (CHead c k 
35797 u1) t3 t0)))) with [O \Rightarrow (\lambda (H17: (getl O (CHead c k u2) 
35798 (CHead d0 (Bind Abbr) u0))).(\lambda (H18: (subst0 O u0 t4 t0)).((match k 
35799 return (\lambda (k: K).((clear (CHead c k u2) (CHead d0 (Bind Abbr) u0)) \to 
35800 (pr3 (CHead c k u1) t3 t0))) with [(Bind b) \Rightarrow (\lambda (H19: (clear 
35801 (CHead c (Bind b) u2) (CHead d0 (Bind Abbr) u0))).(let H \def (f_equal C C 
35802 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
35803 \Rightarrow d0 | (CHead c _ _) \Rightarrow c])) (CHead d0 (Bind Abbr) u0) 
35804 (CHead c (Bind b) u2) (clear_gen_bind b c (CHead d0 (Bind Abbr) u0) u2 H19)) 
35805 in ((let H0 \def (f_equal C B (\lambda (e: C).(match e return (\lambda (_: 
35806 C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k 
35807 return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
35808 Abbr])])) (CHead d0 (Bind Abbr) u0) (CHead c (Bind b) u2) (clear_gen_bind b c 
35809 (CHead d0 (Bind Abbr) u0) u2 H19)) in ((let H1 \def (f_equal C T (\lambda (e: 
35810 C).(match e return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead 
35811 _ _ t) \Rightarrow t])) (CHead d0 (Bind Abbr) u0) (CHead c (Bind b) u2) 
35812 (clear_gen_bind b c (CHead d0 (Bind Abbr) u0) u2 H19)) in (\lambda (H20: (eq 
35813 B Abbr b)).(\lambda (_: (eq C d0 c)).(let H22 \def (eq_ind T u0 (\lambda (t: 
35814 T).(subst0 O t t4 t0)) H18 u2 H1) in (eq_ind B Abbr (\lambda (b0: B).(pr3 
35815 (CHead c (Bind b0) u1) t3 t0)) (ex2_ind T (\lambda (t0: T).(subst0 O t2 t4 
35816 t0)) (\lambda (t1: T).(subst0 (S (plus i O)) u t1 t0)) (pr3 (CHead c (Bind 
35817 Abbr) u1) t3 t0) (\lambda (x: T).(\lambda (H2: (subst0 O t2 t4 x)).(\lambda 
35818 (H10: (subst0 (S (plus i O)) u x t0)).(let H23 \def (f_equal nat nat S (plus 
35819 i O) i (sym_eq nat i (plus i O) (plus_n_O i))) in (let H24 \def (eq_ind nat 
35820 (S (plus i O)) (\lambda (n: nat).(subst0 n u x t0)) H10 (S i) H23) in 
35821 (ex2_ind T (\lambda (t0: T).(subst0 O u1 t4 t0)) (\lambda (t0: T).(pr0 t0 x)) 
35822 (pr3 (CHead c (Bind Abbr) u1) t3 t0) (\lambda (x0: T).(\lambda (H9: (subst0 O 
35823 u1 t4 x0)).(\lambda (H25: (pr0 x0 x)).(pr3_sing (CHead c (Bind Abbr) u1) x0 
35824 t3 (pr2_delta (CHead c (Bind Abbr) u1) c u1 O (getl_refl Abbr c u1) t3 t4 H15 
35825 x0 H9) t0 (pr3_pr2 (CHead c (Bind Abbr) u1) x0 t0 (pr2_delta (CHead c (Bind 
35826 Abbr) u1) d u (S i) (getl_clear_bind Abbr (CHead c (Bind Abbr) u1) c u1 
35827 (clear_bind Abbr c u1) (CHead d (Bind Abbr) u) i H8) x0 x H25 t0 H24)))))) 
35828 (pr0_subst0_back t2 t4 x O H2 u1 H9))))))) (subst0_subst0 t4 t0 u2 O H22 t2 u 
35829 i H10)) b H20))))) H0)) H))) | (Flat f) \Rightarrow (\lambda (H8: (clear 
35830 (CHead c (Flat f) u2) (CHead d0 (Bind Abbr) u0))).(pr3_pr2 (CHead c (Flat f) 
35831 u1) t3 t0 (pr2_cflat c t3 t0 (pr2_delta c d0 u0 O (getl_intro O c (CHead d0 
35832 (Bind Abbr) u0) c (drop_refl c) (clear_gen_flat f c (CHead d0 (Bind Abbr) u0) 
35833 u2 H8)) t3 t4 H15 t0 H18) f u1)))]) (getl_gen_O (CHead c k u2) (CHead d0 
35834 (Bind Abbr) u0) H17)))) | (S n) \Rightarrow (\lambda (H8: (getl (S n) (CHead 
35835 c k u2) (CHead d0 (Bind Abbr) u0))).(\lambda (H9: (subst0 (S n) u0 t4 
35836 t0)).((match k return (\lambda (k: K).((getl (S n) (CHead c k u2) (CHead d0 
35837 (Bind Abbr) u0)) \to (pr3 (CHead c k u1) t3 t0))) with [(Bind b) \Rightarrow 
35838 (\lambda (H10: (getl (S n) (CHead c (Bind b) u2) (CHead d0 (Bind Abbr) 
35839 u0))).(pr3_pr2 (CHead c (Bind b) u1) t3 t0 (pr2_delta (CHead c (Bind b) u1) 
35840 d0 u0 (S n) (getl_head (Bind b) n c (CHead d0 (Bind Abbr) u0) (getl_gen_S 
35841 (Bind b) c (CHead d0 (Bind Abbr) u0) u2 n H10) u1) t3 t4 H15 t0 H9))) | (Flat 
35842 f) \Rightarrow (\lambda (H10: (getl (S n) (CHead c (Flat f) u2) (CHead d0 
35843 (Bind Abbr) u0))).(pr3_pr2 (CHead c (Flat f) u1) t3 t0 (pr2_cflat c t3 t0 
35844 (pr2_delta c d0 u0 (r (Flat f) n) (getl_gen_S (Flat f) c (CHead d0 (Bind 
35845 Abbr) u0) u2 n H10) t3 t4 H15 t0 H9) f u1)))]) H8)))]) H14 H16)))) t (sym_eq 
35846 T t t0 H13))) t3 (sym_eq T t3 t3 H12))) c0 (sym_eq C c0 (CHead c k u2) H6) H7 
35847 H11 H3 H4 H5))))]) in (H11 (refl_equal C (CHead c k u2)) (refl_equal T t3) 
35848 (refl_equal T t0)))))))))) t (sym_eq T t u2 H7))) t1 (sym_eq T t1 u1 H6))) c0 
35849 (sym_eq C c0 c H3) H4 H5 H0 H1 H2))))]) in (H0 (refl_equal C c) (refl_equal T 
35850 u1) (refl_equal T u2)))))).
35851
35852 theorem pr3_pr2_pr3_t:
35853  \forall (c: C).(\forall (u2: T).(\forall (t1: T).(\forall (t2: T).(\forall 
35854 (k: K).((pr3 (CHead c k u2) t1 t2) \to (\forall (u1: T).((pr2 c u1 u2) \to 
35855 (pr3 (CHead c k u1) t1 t2))))))))
35856 \def
35857  \lambda (c: C).(\lambda (u2: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
35858 (k: K).(\lambda (H: (pr3 (CHead c k u2) t1 t2)).(pr3_ind (CHead c k u2) 
35859 (\lambda (t: T).(\lambda (t0: T).(\forall (u1: T).((pr2 c u1 u2) \to (pr3 
35860 (CHead c k u1) t t0))))) (\lambda (t: T).(\lambda (u1: T).(\lambda (_: (pr2 c 
35861 u1 u2)).(pr3_refl (CHead c k u1) t)))) (\lambda (t0: T).(\lambda (t3: 
35862 T).(\lambda (H0: (pr2 (CHead c k u2) t3 t0)).(\lambda (t4: T).(\lambda (_: 
35863 (pr3 (CHead c k u2) t0 t4)).(\lambda (H2: ((\forall (u1: T).((pr2 c u1 u2) 
35864 \to (pr3 (CHead c k u1) t0 t4))))).(\lambda (u1: T).(\lambda (H3: (pr2 c u1 
35865 u2)).(pr3_t t0 t3 (CHead c k u1) (pr3_pr2_pr2_t c u1 u2 H3 t3 t0 k H0) t4 (H2 
35866 u1 H3)))))))))) t1 t2 H)))))).
35867
35868 theorem pr3_pr3_pr3_t:
35869  \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pr3 c u1 u2) \to (\forall 
35870 (t1: T).(\forall (t2: T).(\forall (k: K).((pr3 (CHead c k u2) t1 t2) \to (pr3 
35871 (CHead c k u1) t1 t2))))))))
35872 \def
35873  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr3 c u1 
35874 u2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (t1: T).(\forall 
35875 (t2: T).(\forall (k: K).((pr3 (CHead c k t0) t1 t2) \to (pr3 (CHead c k t) t1 
35876 t2))))))) (\lambda (t: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (k: 
35877 K).(\lambda (H0: (pr3 (CHead c k t) t1 t2)).H0))))) (\lambda (t2: T).(\lambda 
35878 (t1: T).(\lambda (H0: (pr2 c t1 t2)).(\lambda (t3: T).(\lambda (_: (pr3 c t2 
35879 t3)).(\lambda (H2: ((\forall (t1: T).(\forall (t4: T).(\forall (k: K).((pr3 
35880 (CHead c k t3) t1 t4) \to (pr3 (CHead c k t2) t1 t4))))))).(\lambda (t0: 
35881 T).(\lambda (t4: T).(\lambda (k: K).(\lambda (H3: (pr3 (CHead c k t3) t0 
35882 t4)).(pr3_pr2_pr3_t c t2 t0 t4 k (H2 t0 t4 k H3) t1 H0))))))))))) u1 u2 H)))).
35883
35884 theorem pr3_lift:
35885  \forall (c: C).(\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h 
35886 d c e) \to (\forall (t1: T).(\forall (t2: T).((pr3 e t1 t2) \to (pr3 c (lift 
35887 h d t1) (lift h d t2)))))))))
35888 \def
35889  \lambda (c: C).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
35890 (H: (drop h d c e)).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pr3 e t1 
35891 t2)).(pr3_ind e (\lambda (t: T).(\lambda (t0: T).(pr3 c (lift h d t) (lift h 
35892 d t0)))) (\lambda (t: T).(pr3_refl c (lift h d t))) (\lambda (t0: T).(\lambda 
35893 (t3: T).(\lambda (H1: (pr2 e t3 t0)).(\lambda (t4: T).(\lambda (_: (pr3 e t0 
35894 t4)).(\lambda (H3: (pr3 c (lift h d t0) (lift h d t4))).(pr3_sing c (lift h d 
35895 t0) (lift h d t3) (pr2_lift c e h d H t3 t0 H1) (lift h d t4) H3))))))) t1 t2 
35896 H0)))))))).
35897
35898 theorem pr3_wcpr0_t:
35899  \forall (c1: C).(\forall (c2: C).((wcpr0 c2 c1) \to (\forall (t1: 
35900 T).(\forall (t2: T).((pr3 c1 t1 t2) \to (pr3 c2 t1 t2))))))
35901 \def
35902  \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c2 c1)).(wcpr0_ind 
35903 (\lambda (c: C).(\lambda (c0: C).(\forall (t1: T).(\forall (t2: T).((pr3 c0 
35904 t1 t2) \to (pr3 c t1 t2)))))) (\lambda (c: C).(\lambda (t1: T).(\lambda (t2: 
35905 T).(\lambda (H0: (pr3 c t1 t2)).H0)))) (\lambda (c0: C).(\lambda (c3: 
35906 C).(\lambda (H0: (wcpr0 c0 c3)).(\lambda (_: ((\forall (t1: T).(\forall (t2: 
35907 T).((pr3 c3 t1 t2) \to (pr3 c0 t1 t2)))))).(\lambda (u1: T).(\lambda (u2: 
35908 T).(\lambda (H2: (pr0 u1 u2)).(\lambda (k: K).(\lambda (t1: T).(\lambda (t2: 
35909 T).(\lambda (H3: (pr3 (CHead c3 k u2) t1 t2)).(pr3_ind (CHead c3 k u1) 
35910 (\lambda (t: T).(\lambda (t0: T).(pr3 (CHead c0 k u1) t t0))) (\lambda (t: 
35911 T).(pr3_refl (CHead c0 k u1) t)) (\lambda (t0: T).(\lambda (t3: T).(\lambda 
35912 (H4: (pr2 (CHead c3 k u1) t3 t0)).(\lambda (t4: T).(\lambda (_: (pr3 (CHead 
35913 c3 k u1) t0 t4)).(\lambda (H6: (pr3 (CHead c0 k u1) t0 t4)).(pr3_t t0 t3 
35914 (CHead c0 k u1) (let H7 \def (match H4 return (\lambda (c: C).(\lambda (t: 
35915 T).(\lambda (t1: T).(\lambda (_: (pr2 c t t1)).((eq C c (CHead c3 k u1)) \to 
35916 ((eq T t t3) \to ((eq T t1 t0) \to (pr3 (CHead c0 k u1) t3 t0)))))))) with 
35917 [(pr2_free c t1 t2 H2) \Rightarrow (\lambda (H3: (eq C c (CHead c3 k 
35918 u1))).(\lambda (H4: (eq T t1 t3)).(\lambda (H5: (eq T t2 t0)).(eq_ind C 
35919 (CHead c3 k u1) (\lambda (_: C).((eq T t1 t3) \to ((eq T t2 t0) \to ((pr0 t1 
35920 t2) \to (pr3 (CHead c0 k u1) t3 t0))))) (\lambda (H6: (eq T t1 t3)).(eq_ind T 
35921 t3 (\lambda (t: T).((eq T t2 t0) \to ((pr0 t t2) \to (pr3 (CHead c0 k u1) t3 
35922 t0)))) (\lambda (H7: (eq T t2 t0)).(eq_ind T t0 (\lambda (t: T).((pr0 t3 t) 
35923 \to (pr3 (CHead c0 k u1) t3 t0))) (\lambda (H8: (pr0 t3 t0)).(pr3_pr2 (CHead 
35924 c0 k u1) t3 t0 (pr2_free (CHead c0 k u1) t3 t0 H8))) t2 (sym_eq T t2 t0 H7))) 
35925 t1 (sym_eq T t1 t3 H6))) c (sym_eq C c (CHead c3 k u1) H3) H4 H5 H2)))) | 
35926 (pr2_delta c d u i H2 t1 t2 H3 t H4) \Rightarrow (\lambda (H5: (eq C c (CHead 
35927 c3 k u1))).(\lambda (H6: (eq T t1 t3)).(\lambda (H7: (eq T t t0)).(eq_ind C 
35928 (CHead c3 k u1) (\lambda (c1: C).((eq T t1 t3) \to ((eq T t t0) \to ((getl i 
35929 c1 (CHead d (Bind Abbr) u)) \to ((pr0 t1 t2) \to ((subst0 i u t2 t) \to (pr3 
35930 (CHead c0 k u1) t3 t0))))))) (\lambda (H8: (eq T t1 t3)).(eq_ind T t3 
35931 (\lambda (t4: T).((eq T t t0) \to ((getl i (CHead c3 k u1) (CHead d (Bind 
35932 Abbr) u)) \to ((pr0 t4 t2) \to ((subst0 i u t2 t) \to (pr3 (CHead c0 k u1) t3 
35933 t0)))))) (\lambda (H9: (eq T t t0)).(eq_ind T t0 (\lambda (t4: T).((getl i 
35934 (CHead c3 k u1) (CHead d (Bind Abbr) u)) \to ((pr0 t3 t2) \to ((subst0 i u t2 
35935 t4) \to (pr3 (CHead c0 k u1) t3 t0))))) (\lambda (H10: (getl i (CHead c3 k 
35936 u1) (CHead d (Bind Abbr) u))).(\lambda (H11: (pr0 t3 t2)).(\lambda (H12: 
35937 (subst0 i u t2 t0)).(ex3_2_ind C T (\lambda (e2: C).(\lambda (u2: T).(getl i 
35938 (CHead c0 k u1) (CHead e2 (Bind Abbr) u2)))) (\lambda (e2: C).(\lambda (_: 
35939 T).(wcpr0 e2 d))) (\lambda (_: C).(\lambda (u2: T).(pr0 u2 u))) (pr3 (CHead 
35940 c0 k u1) t3 t0) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H1: (getl i 
35941 (CHead c0 k u1) (CHead x0 (Bind Abbr) x1))).(\lambda (_: (wcpr0 x0 
35942 d)).(\lambda (H14: (pr0 x1 u)).(ex2_ind T (\lambda (t0: T).(subst0 i x1 t2 
35943 t0)) (\lambda (t3: T).(pr0 t3 t0)) (pr3 (CHead c0 k u1) t3 t0) (\lambda (x: 
35944 T).(\lambda (H15: (subst0 i x1 t2 x)).(\lambda (H16: (pr0 x t0)).(pr3_sing 
35945 (CHead c0 k u1) x t3 (pr2_delta (CHead c0 k u1) x0 x1 i H1 t3 t2 H11 x H15) 
35946 t0 (pr3_pr2 (CHead c0 k u1) x t0 (pr2_free (CHead c0 k u1) x t0 H16)))))) 
35947 (pr0_subst0_back u t2 t0 i H12 x1 H14))))))) (wcpr0_getl_back (CHead c3 k u1) 
35948 (CHead c0 k u1) (wcpr0_comp c0 c3 H0 u1 u1 (pr0_refl u1) k) i d u (Bind Abbr) 
35949 H10))))) t (sym_eq T t t0 H9))) t1 (sym_eq T t1 t3 H8))) c (sym_eq C c (CHead 
35950 c3 k u1) H5) H6 H7 H2 H3 H4))))]) in (H7 (refl_equal C (CHead c3 k u1)) 
35951 (refl_equal T t3) (refl_equal T t0))) t4 H6))))))) t1 t2 (pr3_pr2_pr3_t c3 u2 
35952 t1 t2 k H3 u1 (pr2_free c3 u1 u2 H2)))))))))))))) c2 c1 H))).
35953
35954 theorem pr3_gen_lift:
35955  \forall (c: C).(\forall (t1: T).(\forall (x: T).(\forall (h: nat).(\forall 
35956 (d: nat).((pr3 c (lift h d t1) x) \to (\forall (e: C).((drop h d c e) \to 
35957 (ex2 T (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(pr3 e t1 
35958 t2))))))))))
35959 \def
35960  \lambda (c: C).(\lambda (t1: T).(\lambda (x: T).(\lambda (h: nat).(\lambda 
35961 (d: nat).(\lambda (H: (pr3 c (lift h d t1) x)).(insert_eq T (lift h d t1) 
35962 (\lambda (t: T).(pr3 c t x)) (\forall (e: C).((drop h d c e) \to (ex2 T 
35963 (\lambda (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(pr3 e t1 t2))))) 
35964 (\lambda (y: T).(\lambda (H0: (pr3 c y x)).(unintro T t1 (\lambda (t: T).((eq 
35965 T y (lift h d t)) \to (\forall (e: C).((drop h d c e) \to (ex2 T (\lambda 
35966 (t2: T).(eq T x (lift h d t2))) (\lambda (t2: T).(pr3 e t t2))))))) (pr3_ind 
35967 c (\lambda (t: T).(\lambda (t0: T).(\forall (x0: T).((eq T t (lift h d x0)) 
35968 \to (\forall (e: C).((drop h d c e) \to (ex2 T (\lambda (t2: T).(eq T t0 
35969 (lift h d t2))) (\lambda (t2: T).(pr3 e x0 t2))))))))) (\lambda (t: 
35970 T).(\lambda (x0: T).(\lambda (H1: (eq T t (lift h d x0))).(\lambda (e: 
35971 C).(\lambda (_: (drop h d c e)).(ex_intro2 T (\lambda (t2: T).(eq T t (lift h 
35972 d t2))) (\lambda (t2: T).(pr3 e x0 t2)) x0 H1 (pr3_refl e x0))))))) (\lambda 
35973 (t2: T).(\lambda (t3: T).(\lambda (H1: (pr2 c t3 t2)).(\lambda (t4: 
35974 T).(\lambda (_: (pr3 c t2 t4)).(\lambda (H3: ((\forall (x: T).((eq T t2 (lift 
35975 h d x)) \to (\forall (e: C).((drop h d c e) \to (ex2 T (\lambda (t2: T).(eq T 
35976 t4 (lift h d t2))) (\lambda (t2: T).(pr3 e x t2))))))))).(\lambda (x0: 
35977 T).(\lambda (H4: (eq T t3 (lift h d x0))).(\lambda (e: C).(\lambda (H5: (drop 
35978 h d c e)).(let H6 \def (eq_ind T t3 (\lambda (t: T).(pr2 c t t2)) H1 (lift h 
35979 d x0) H4) in (let H7 \def (pr2_gen_lift c x0 t2 h d H6 e H5) in (ex2_ind T 
35980 (\lambda (t5: T).(eq T t2 (lift h d t5))) (\lambda (t5: T).(pr2 e x0 t5)) 
35981 (ex2 T (\lambda (t5: T).(eq T t4 (lift h d t5))) (\lambda (t5: T).(pr3 e x0 
35982 t5))) (\lambda (x1: T).(\lambda (H8: (eq T t2 (lift h d x1))).(\lambda (H9: 
35983 (pr2 e x0 x1)).(ex2_ind T (\lambda (t5: T).(eq T t4 (lift h d t5))) (\lambda 
35984 (t5: T).(pr3 e x1 t5)) (ex2 T (\lambda (t5: T).(eq T t4 (lift h d t5))) 
35985 (\lambda (t5: T).(pr3 e x0 t5))) (\lambda (x2: T).(\lambda (H10: (eq T t4 
35986 (lift h d x2))).(\lambda (H11: (pr3 e x1 x2)).(ex_intro2 T (\lambda (t5: 
35987 T).(eq T t4 (lift h d t5))) (\lambda (t5: T).(pr3 e x0 t5)) x2 H10 (pr3_sing 
35988 e x1 x0 H9 x2 H11))))) (H3 x1 H8 e H5))))) H7))))))))))))) y x H0)))) H)))))).
35989
35990 theorem pr3_gen_lref:
35991  \forall (c: C).(\forall (x: T).(\forall (n: nat).((pr3 c (TLRef n) x) \to 
35992 (or (eq T x (TLRef n)) (ex3_3 C T T (\lambda (d: C).(\lambda (u: T).(\lambda 
35993 (_: T).(getl n c (CHead d (Bind Abbr) u))))) (\lambda (d: C).(\lambda (u: 
35994 T).(\lambda (v: T).(pr3 d u v)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
35995 (v: T).(eq T x (lift (S n) O v))))))))))
35996 \def
35997  \lambda (c: C).(\lambda (x: T).(\lambda (n: nat).(\lambda (H: (pr3 c (TLRef 
35998 n) x)).(insert_eq T (TLRef n) (\lambda (t: T).(pr3 c t x)) (or (eq T x (TLRef 
35999 n)) (ex3_3 C T T (\lambda (d: C).(\lambda (u: T).(\lambda (_: T).(getl n c 
36000 (CHead d (Bind Abbr) u))))) (\lambda (d: C).(\lambda (u: T).(\lambda (v: 
36001 T).(pr3 d u v)))) (\lambda (_: C).(\lambda (_: T).(\lambda (v: T).(eq T x 
36002 (lift (S n) O v))))))) (\lambda (y: T).(\lambda (H0: (pr3 c y x)).(pr3_ind c 
36003 (\lambda (t: T).(\lambda (t0: T).((eq T t (TLRef n)) \to (or (eq T t0 (TLRef 
36004 n)) (ex3_3 C T T (\lambda (d: C).(\lambda (u: T).(\lambda (_: T).(getl n c 
36005 (CHead d (Bind Abbr) u))))) (\lambda (d: C).(\lambda (u: T).(\lambda (v: 
36006 T).(pr3 d u v)))) (\lambda (_: C).(\lambda (_: T).(\lambda (v: T).(eq T t0 
36007 (lift (S n) O v)))))))))) (\lambda (t: T).(\lambda (H1: (eq T t (TLRef 
36008 n))).(or_introl (eq T t (TLRef n)) (ex3_3 C T T (\lambda (d: C).(\lambda (u: 
36009 T).(\lambda (_: T).(getl n c (CHead d (Bind Abbr) u))))) (\lambda (d: 
36010 C).(\lambda (u: T).(\lambda (v: T).(pr3 d u v)))) (\lambda (_: C).(\lambda 
36011 (_: T).(\lambda (v: T).(eq T t (lift (S n) O v)))))) H1))) (\lambda (t2: 
36012 T).(\lambda (t1: T).(\lambda (H1: (pr2 c t1 t2)).(\lambda (t3: T).(\lambda 
36013 (H2: (pr3 c t2 t3)).(\lambda (H3: (((eq T t2 (TLRef n)) \to (or (eq T t3 
36014 (TLRef n)) (ex3_3 C T T (\lambda (d: C).(\lambda (u: T).(\lambda (_: T).(getl 
36015 n c (CHead d (Bind Abbr) u))))) (\lambda (d: C).(\lambda (u: T).(\lambda (v: 
36016 T).(pr3 d u v)))) (\lambda (_: C).(\lambda (_: T).(\lambda (v: T).(eq T t3 
36017 (lift (S n) O v)))))))))).(\lambda (H4: (eq T t1 (TLRef n))).(let H5 \def 
36018 (eq_ind T t1 (\lambda (t: T).(pr2 c t t2)) H1 (TLRef n) H4) in (let H6 \def 
36019 (pr2_gen_lref c t2 n H5) in (or_ind (eq T t2 (TLRef n)) (ex2_2 C T (\lambda 
36020 (d: C).(\lambda (u: T).(getl n c (CHead d (Bind Abbr) u)))) (\lambda (_: 
36021 C).(\lambda (u: T).(eq T t2 (lift (S n) O u))))) (or (eq T t3 (TLRef n)) 
36022 (ex3_3 C T T (\lambda (d: C).(\lambda (u: T).(\lambda (_: T).(getl n c (CHead 
36023 d (Bind Abbr) u))))) (\lambda (d: C).(\lambda (u: T).(\lambda (v: T).(pr3 d u 
36024 v)))) (\lambda (_: C).(\lambda (_: T).(\lambda (v: T).(eq T t3 (lift (S n) O 
36025 v))))))) (\lambda (H7: (eq T t2 (TLRef n))).(H3 H7)) (\lambda (H7: (ex2_2 C T 
36026 (\lambda (d: C).(\lambda (u: T).(getl n c (CHead d (Bind Abbr) u)))) (\lambda 
36027 (_: C).(\lambda (u: T).(eq T t2 (lift (S n) O u)))))).(ex2_2_ind C T (\lambda 
36028 (d: C).(\lambda (u: T).(getl n c (CHead d (Bind Abbr) u)))) (\lambda (_: 
36029 C).(\lambda (u: T).(eq T t2 (lift (S n) O u)))) (or (eq T t3 (TLRef n)) 
36030 (ex3_3 C T T (\lambda (d: C).(\lambda (u: T).(\lambda (_: T).(getl n c (CHead 
36031 d (Bind Abbr) u))))) (\lambda (d: C).(\lambda (u: T).(\lambda (v: T).(pr3 d u 
36032 v)))) (\lambda (_: C).(\lambda (_: T).(\lambda (v: T).(eq T t3 (lift (S n) O 
36033 v))))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H8: (getl n c (CHead x0 
36034 (Bind Abbr) x1))).(\lambda (H9: (eq T t2 (lift (S n) O x1))).(let H10 \def 
36035 (eq_ind T t2 (\lambda (t: T).(pr3 c t t3)) H2 (lift (S n) O x1) H9) in (let 
36036 H11 \def (pr3_gen_lift c x1 t3 (S n) O H10 x0 (getl_drop Abbr c x0 x1 n H8)) 
36037 in (ex2_ind T (\lambda (t4: T).(eq T t3 (lift (S n) O t4))) (\lambda (t4: 
36038 T).(pr3 x0 x1 t4)) (or (eq T t3 (TLRef n)) (ex3_3 C T T (\lambda (d: 
36039 C).(\lambda (u: T).(\lambda (_: T).(getl n c (CHead d (Bind Abbr) u))))) 
36040 (\lambda (d: C).(\lambda (u: T).(\lambda (v: T).(pr3 d u v)))) (\lambda (_: 
36041 C).(\lambda (_: T).(\lambda (v: T).(eq T t3 (lift (S n) O v))))))) (\lambda 
36042 (x2: T).(\lambda (H12: (eq T t3 (lift (S n) O x2))).(\lambda (H13: (pr3 x0 x1 
36043 x2)).(or_intror (eq T t3 (TLRef n)) (ex3_3 C T T (\lambda (d: C).(\lambda (u: 
36044 T).(\lambda (_: T).(getl n c (CHead d (Bind Abbr) u))))) (\lambda (d: 
36045 C).(\lambda (u: T).(\lambda (v: T).(pr3 d u v)))) (\lambda (_: C).(\lambda 
36046 (_: T).(\lambda (v: T).(eq T t3 (lift (S n) O v)))))) (ex3_3_intro C T T 
36047 (\lambda (d: C).(\lambda (u: T).(\lambda (_: T).(getl n c (CHead d (Bind 
36048 Abbr) u))))) (\lambda (d: C).(\lambda (u: T).(\lambda (v: T).(pr3 d u v)))) 
36049 (\lambda (_: C).(\lambda (_: T).(\lambda (v: T).(eq T t3 (lift (S n) O v))))) 
36050 x0 x1 x2 H8 H13 H12))))) H11))))))) H7)) H6)))))))))) y x H0))) H)))).
36051
36052 theorem pr3_gen_void:
36053  \forall (c: C).(\forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr3 c 
36054 (THead (Bind Void) u1 t1) x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda 
36055 (t2: T).(eq T x (THead (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
36056 T).(pr3 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall 
36057 (u: T).(pr3 (CHead c (Bind b) u) t1 t2)))))) (pr3 (CHead c (Bind Void) u1) t1 
36058 (lift (S O) O x)))))))
36059 \def
36060  \lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda 
36061 (H: (pr3 c (THead (Bind Void) u1 t1) x)).(insert_eq T (THead (Bind Void) u1 
36062 t1) (\lambda (t: T).(pr3 c t x)) (or (ex3_2 T T (\lambda (u2: T).(\lambda 
36063 (t2: T).(eq T x (THead (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
36064 T).(pr3 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall 
36065 (u: T).(pr3 (CHead c (Bind b) u) t1 t2)))))) (pr3 (CHead c (Bind Void) u1) t1 
36066 (lift (S O) O x))) (\lambda (y: T).(\lambda (H0: (pr3 c y x)).(unintro T t1 
36067 (\lambda (t: T).((eq T y (THead (Bind Void) u1 t)) \to (or (ex3_2 T T 
36068 (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind Void) u2 t2)))) 
36069 (\lambda (u2: T).(\lambda (_: T).(pr3 c u1 u2))) (\lambda (_: T).(\lambda 
36070 (t2: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t t2)))))) 
36071 (pr3 (CHead c (Bind Void) u1) t (lift (S O) O x))))) (unintro T u1 (\lambda 
36072 (t: T).(\forall (x0: T).((eq T y (THead (Bind Void) t x0)) \to (or (ex3_2 T T 
36073 (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind Void) u2 t2)))) 
36074 (\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))) (\lambda (_: T).(\lambda (t2: 
36075 T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x0 t2)))))) (pr3 
36076 (CHead c (Bind Void) t) x0 (lift (S O) O x)))))) (pr3_ind c (\lambda (t: 
36077 T).(\lambda (t0: T).(\forall (x0: T).(\forall (x1: T).((eq T t (THead (Bind 
36078 Void) x0 x1)) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t0 
36079 (THead (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36080 (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead 
36081 c (Bind b) u) x1 t2)))))) (pr3 (CHead c (Bind Void) x0) x1 (lift (S O) O 
36082 t0)))))))) (\lambda (t: T).(\lambda (x0: T).(\lambda (x1: T).(\lambda (H1: 
36083 (eq T t (THead (Bind Void) x0 x1))).(eq_ind_r T (THead (Bind Void) x0 x1) 
36084 (\lambda (t0: T).(or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t0 
36085 (THead (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36086 (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead 
36087 c (Bind b) u) x1 t2)))))) (pr3 (CHead c (Bind Void) x0) x1 (lift (S O) O 
36088 t0)))) (or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T (THead 
36089 (Bind Void) x0 x1) (THead (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
36090 T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall 
36091 (u: T).(pr3 (CHead c (Bind b) u) x1 t2)))))) (pr3 (CHead c (Bind Void) x0) x1 
36092 (lift (S O) O (THead (Bind Void) x0 x1))) (ex3_2_intro T T (\lambda (u2: 
36093 T).(\lambda (t2: T).(eq T (THead (Bind Void) x0 x1) (THead (Bind Void) u2 
36094 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
36095 T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
36096 x1 t2))))) x0 x1 (refl_equal T (THead (Bind Void) x0 x1)) (pr3_refl c x0) 
36097 (\lambda (b: B).(\lambda (u: T).(pr3_refl (CHead c (Bind b) u) x1))))) t 
36098 H1))))) (\lambda (t2: T).(\lambda (t3: T).(\lambda (H1: (pr2 c t3 
36099 t2)).(\lambda (t4: T).(\lambda (H2: (pr3 c t2 t4)).(\lambda (H3: ((\forall 
36100 (x: T).(\forall (x0: T).((eq T t2 (THead (Bind Void) x x0)) \to (or (ex3_2 T 
36101 T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead (Bind Void) u2 t2)))) 
36102 (\lambda (u2: T).(\lambda (_: T).(pr3 c x u2))) (\lambda (_: T).(\lambda (t2: 
36103 T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x0 t2)))))) (pr3 
36104 (CHead c (Bind Void) x) x0 (lift (S O) O t4)))))))).(\lambda (x0: T).(\lambda 
36105 (x1: T).(\lambda (H4: (eq T t3 (THead (Bind Void) x0 x1))).(let H5 \def 
36106 (eq_ind T t3 (\lambda (t: T).(pr2 c t t2)) H1 (THead (Bind Void) x0 x1) H4) 
36107 in (let H6 \def (pr2_gen_void c x0 x1 t2 H5) in (or_ind (ex3_2 T T (\lambda 
36108 (u2: T).(\lambda (t5: T).(eq T t2 (THead (Bind Void) u2 t5)))) (\lambda (u2: 
36109 T).(\lambda (_: T).(pr2 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(\forall 
36110 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x1 t5)))))) (\forall (b: 
36111 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x1 (lift (S O) O t2)))) (or 
36112 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind Void) u2 
36113 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
36114 T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
36115 x1 t5)))))) (pr3 (CHead c (Bind Void) x0) x1 (lift (S O) O t4))) (\lambda 
36116 (H7: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Void) 
36117 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) (\lambda (_: 
36118 T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
36119 x1 t2))))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t5: T).(eq T t2 (THead 
36120 (Bind Void) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) 
36121 (\lambda (_: T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead 
36122 c (Bind b) u) x1 t5))))) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq 
36123 T t4 (THead (Bind Void) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 
36124 u2))) (\lambda (_: T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 
36125 (CHead c (Bind b) u) x1 t5)))))) (pr3 (CHead c (Bind Void) x0) x1 (lift (S O) 
36126 O t4))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H8: (eq T t2 (THead (Bind 
36127 Void) x2 x3))).(\lambda (H9: (pr2 c x0 x2)).(\lambda (H10: ((\forall (b: 
36128 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x1 x3))))).(let H11 \def (eq_ind 
36129 T t2 (\lambda (t: T).(\forall (x: T).(\forall (x0: T).((eq T t (THead (Bind 
36130 Void) x x0)) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 
36131 (THead (Bind Void) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x u2))) 
36132 (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead 
36133 c (Bind b) u) x0 t2)))))) (pr3 (CHead c (Bind Void) x) x0 (lift (S O) O 
36134 t4))))))) H3 (THead (Bind Void) x2 x3) H8) in (let H12 \def (H11 x2 x3 
36135 (refl_equal T (THead (Bind Void) x2 x3))) in (or_ind (ex3_2 T T (\lambda (u2: 
36136 T).(\lambda (t5: T).(eq T t4 (THead (Bind Void) u2 t5)))) (\lambda (u2: 
36137 T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda (t5: T).(\forall 
36138 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x3 t5)))))) (pr3 (CHead c 
36139 (Bind Void) x2) x3 (lift (S O) O t4)) (or (ex3_2 T T (\lambda (u2: 
36140 T).(\lambda (t5: T).(eq T t4 (THead (Bind Void) u2 t5)))) (\lambda (u2: 
36141 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(\forall 
36142 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x1 t5)))))) (pr3 (CHead c 
36143 (Bind Void) x0) x1 (lift (S O) O t4))) (\lambda (H13: (ex3_2 T T (\lambda 
36144 (u2: T).(\lambda (t2: T).(eq T t4 (THead (Bind Void) u2 t2)))) (\lambda (u2: 
36145 T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda (t2: T).(\forall 
36146 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x3 t2))))))).(ex3_2_ind T T 
36147 (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind Void) u2 t5)))) 
36148 (\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda 
36149 (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x3 t5))))) 
36150 (or (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind Void) 
36151 u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
36152 T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
36153 x1 t5)))))) (pr3 (CHead c (Bind Void) x0) x1 (lift (S O) O t4))) (\lambda 
36154 (x4: T).(\lambda (x5: T).(\lambda (H14: (eq T t4 (THead (Bind Void) x4 
36155 x5))).(\lambda (H15: (pr3 c x2 x4)).(\lambda (H16: ((\forall (b: B).(\forall 
36156 (u: T).(pr3 (CHead c (Bind b) u) x3 x5))))).(or_introl (ex3_2 T T (\lambda 
36157 (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind Void) u2 t5)))) (\lambda (u2: 
36158 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(\forall 
36159 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x1 t5)))))) (pr3 (CHead c 
36160 (Bind Void) x0) x1 (lift (S O) O t4)) (ex3_2_intro T T (\lambda (u2: 
36161 T).(\lambda (t5: T).(eq T t4 (THead (Bind Void) u2 t5)))) (\lambda (u2: 
36162 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(\forall 
36163 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x1 t5))))) x4 x5 H14 
36164 (pr3_sing c x2 x0 H9 x4 H15) (\lambda (b: B).(\lambda (u: T).(pr3_sing (CHead 
36165 c (Bind b) u) x3 x1 (H10 b u) x5 (H16 b u))))))))))) H13)) (\lambda (H13: 
36166 (pr3 (CHead c (Bind Void) x2) x3 (lift (S O) O t4))).(or_intror (ex3_2 T T 
36167 (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind Void) u2 t5)))) 
36168 (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda 
36169 (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x1 t5)))))) 
36170 (pr3 (CHead c (Bind Void) x0) x1 (lift (S O) O t4)) (pr3_sing (CHead c (Bind 
36171 Void) x0) x3 x1 (H10 Void x0) (lift (S O) O t4) (pr3_pr2_pr3_t c x2 x3 (lift 
36172 (S O) O t4) (Bind Void) H13 x0 H9)))) H12)))))))) H7)) (\lambda (H7: 
36173 ((\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x1 (lift (S O) O 
36174 t2)))))).(or_intror (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 
36175 (THead (Bind Void) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36176 (\lambda (_: T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead 
36177 c (Bind b) u) x1 t5)))))) (pr3 (CHead c (Bind Void) x0) x1 (lift (S O) O t4)) 
36178 (pr3_sing (CHead c (Bind Void) x0) (lift (S O) O t2) x1 (H7 Void x0) (lift (S 
36179 O) O t4) (pr3_lift (CHead c (Bind Void) x0) c (S O) O (drop_drop (Bind Void) 
36180 O c c (drop_refl c) x0) t2 t4 H2)))) H6)))))))))))) y x H0))))) H))))).
36181
36182 theorem pr3_gen_abbr:
36183  \forall (c: C).(\forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr3 c 
36184 (THead (Bind Abbr) u1 t1) x) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda 
36185 (t2: T).(eq T x (THead (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
36186 T).(pr3 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 (CHead c (Bind Abbr) 
36187 u1) t1 t2)))) (pr3 (CHead c (Bind Abbr) u1) t1 (lift (S O) O x)))))))
36188 \def
36189  \lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda 
36190 (H: (pr3 c (THead (Bind Abbr) u1 t1) x)).(insert_eq T (THead (Bind Abbr) u1 
36191 t1) (\lambda (t: T).(pr3 c t x)) (or (ex3_2 T T (\lambda (u2: T).(\lambda 
36192 (t2: T).(eq T x (THead (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
36193 T).(pr3 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 (CHead c (Bind Abbr) 
36194 u1) t1 t2)))) (pr3 (CHead c (Bind Abbr) u1) t1 (lift (S O) O x))) (\lambda 
36195 (y: T).(\lambda (H0: (pr3 c y x)).(unintro T t1 (\lambda (t: T).((eq T y 
36196 (THead (Bind Abbr) u1 t)) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
36197 T).(eq T x (THead (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 
36198 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 (CHead c (Bind Abbr) u1) t 
36199 t2)))) (pr3 (CHead c (Bind Abbr) u1) t (lift (S O) O x))))) (unintro T u1 
36200 (\lambda (t: T).(\forall (x0: T).((eq T y (THead (Bind Abbr) t x0)) \to (or 
36201 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind Abbr) u2 
36202 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))) (\lambda (_: 
36203 T).(\lambda (t2: T).(pr3 (CHead c (Bind Abbr) t) x0 t2)))) (pr3 (CHead c 
36204 (Bind Abbr) t) x0 (lift (S O) O x)))))) (pr3_ind c (\lambda (t: T).(\lambda 
36205 (t0: T).(\forall (x0: T).(\forall (x1: T).((eq T t (THead (Bind Abbr) x0 x1)) 
36206 \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t0 (THead (Bind 
36207 Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
36208 T).(\lambda (t2: T).(pr3 (CHead c (Bind Abbr) x0) x1 t2)))) (pr3 (CHead c 
36209 (Bind Abbr) x0) x1 (lift (S O) O t0)))))))) (\lambda (t: T).(\lambda (x0: 
36210 T).(\lambda (x1: T).(\lambda (H1: (eq T t (THead (Bind Abbr) x0 
36211 x1))).(eq_ind_r T (THead (Bind Abbr) x0 x1) (\lambda (t0: T).(or (ex3_2 T T 
36212 (\lambda (u2: T).(\lambda (t2: T).(eq T t0 (THead (Bind Abbr) u2 t2)))) 
36213 (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda 
36214 (t2: T).(pr3 (CHead c (Bind Abbr) x0) x1 t2)))) (pr3 (CHead c (Bind Abbr) x0) 
36215 x1 (lift (S O) O t0)))) (or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
36216 T).(eq T (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 t2)))) (\lambda (u2: 
36217 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 
36218 (CHead c (Bind Abbr) x0) x1 t2)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S 
36219 O) O (THead (Bind Abbr) x0 x1))) (ex3_2_intro T T (\lambda (u2: T).(\lambda 
36220 (t2: T).(eq T (THead (Bind Abbr) x0 x1) (THead (Bind Abbr) u2 t2)))) (\lambda 
36221 (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 
36222 (CHead c (Bind Abbr) x0) x1 t2))) x0 x1 (refl_equal T (THead (Bind Abbr) x0 
36223 x1)) (pr3_refl c x0) (pr3_refl (CHead c (Bind Abbr) x0) x1))) t H1))))) 
36224 (\lambda (t2: T).(\lambda (t3: T).(\lambda (H1: (pr2 c t3 t2)).(\lambda (t4: 
36225 T).(\lambda (H2: (pr3 c t2 t4)).(\lambda (H3: ((\forall (x: T).(\forall (x0: 
36226 T).((eq T t2 (THead (Bind Abbr) x x0)) \to (or (ex3_2 T T (\lambda (u2: 
36227 T).(\lambda (t2: T).(eq T t4 (THead (Bind Abbr) u2 t2)))) (\lambda (u2: 
36228 T).(\lambda (_: T).(pr3 c x u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 
36229 (CHead c (Bind Abbr) x) x0 t2)))) (pr3 (CHead c (Bind Abbr) x) x0 (lift (S O) 
36230 O t4)))))))).(\lambda (x0: T).(\lambda (x1: T).(\lambda (H4: (eq T t3 (THead 
36231 (Bind Abbr) x0 x1))).(let H5 \def (eq_ind T t3 (\lambda (t: T).(pr2 c t t2)) 
36232 H1 (THead (Bind Abbr) x0 x1) H4) in (let H6 \def (pr2_gen_abbr c x0 x1 t2 H5) 
36233 in (or_ind (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t2 (THead (Bind 
36234 Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) (\lambda (_: 
36235 T).(\lambda (t5: T).(or3 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind 
36236 b) u) x1 t5))) (ex2 T (\lambda (u: T).(pr0 x0 u)) (\lambda (u: T).(pr2 (CHead 
36237 c (Bind Abbr) u) x1 t5))) (ex3_2 T T (\lambda (y0: T).(\lambda (_: T).(pr2 
36238 (CHead c (Bind Abbr) x0) x1 y0))) (\lambda (y0: T).(\lambda (z: T).(pr0 y0 
36239 z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) x0) z 
36240 t5)))))))) (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x1 (lift 
36241 (S O) O t2)))) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 
36242 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36243 (\lambda (_: T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 
36244 (CHead c (Bind Abbr) x0) x1 (lift (S O) O t4))) (\lambda (H7: (ex3_2 T T 
36245 (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Abbr) u2 t3)))) 
36246 (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) (\lambda (_: T).(\lambda 
36247 (t2: T).(or3 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x1 
36248 t2))) (ex2 T (\lambda (u: T).(pr0 x0 u)) (\lambda (u: T).(pr2 (CHead c (Bind 
36249 Abbr) u) x1 t2))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c 
36250 (Bind Abbr) x0) x1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda 
36251 (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) x0) z t2))))))))).(ex3_2_ind 
36252 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t2 (THead (Bind Abbr) u2 t5)))) 
36253 (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) (\lambda (_: T).(\lambda 
36254 (t5: T).(or3 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x1 
36255 t5))) (ex2 T (\lambda (u: T).(pr0 x0 u)) (\lambda (u: T).(pr2 (CHead c (Bind 
36256 Abbr) u) x1 t5))) (ex3_2 T T (\lambda (y0: T).(\lambda (_: T).(pr2 (CHead c 
36257 (Bind Abbr) x0) x1 y0))) (\lambda (y0: T).(\lambda (z: T).(pr0 y0 z))) 
36258 (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) x0) z t5))))))) (or 
36259 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind Abbr) u2 
36260 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
36261 T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 (CHead c 
36262 (Bind Abbr) x0) x1 (lift (S O) O t4))) (\lambda (x2: T).(\lambda (x3: 
36263 T).(\lambda (H8: (eq T t2 (THead (Bind Abbr) x2 x3))).(\lambda (H9: (pr2 c x0 
36264 x2)).(\lambda (H10: (or3 (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind 
36265 b) u) x1 x3))) (ex2 T (\lambda (u: T).(pr0 x0 u)) (\lambda (u: T).(pr2 (CHead 
36266 c (Bind Abbr) u) x1 x3))) (ex3_2 T T (\lambda (y: T).(\lambda (_: T).(pr2 
36267 (CHead c (Bind Abbr) x0) x1 y))) (\lambda (y: T).(\lambda (z: T).(pr0 y z))) 
36268 (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) x0) z 
36269 x3)))))).(or3_ind (\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
36270 x1 x3))) (ex2 T (\lambda (u: T).(pr0 x0 u)) (\lambda (u: T).(pr2 (CHead c 
36271 (Bind Abbr) u) x1 x3))) (ex3_2 T T (\lambda (y0: T).(\lambda (_: T).(pr2 
36272 (CHead c (Bind Abbr) x0) x1 y0))) (\lambda (y0: T).(\lambda (z: T).(pr0 y0 
36273 z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c (Bind Abbr) x0) z x3)))) 
36274 (or (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind Abbr) 
36275 u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
36276 T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 (CHead c 
36277 (Bind Abbr) x0) x1 (lift (S O) O t4))) (\lambda (H11: ((\forall (b: 
36278 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x1 x3))))).(let H12 \def (eq_ind 
36279 T t2 (\lambda (t: T).(\forall (x: T).(\forall (x0: T).((eq T t (THead (Bind 
36280 Abbr) x x0)) \to (or (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 
36281 (THead (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x u2))) 
36282 (\lambda (_: T).(\lambda (t2: T).(pr3 (CHead c (Bind Abbr) x) x0 t2)))) (pr3 
36283 (CHead c (Bind Abbr) x) x0 (lift (S O) O t4))))))) H3 (THead (Bind Abbr) x2 
36284 x3) H8) in (let H13 \def (H12 x2 x3 (refl_equal T (THead (Bind Abbr) x2 x3))) 
36285 in (or_ind (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind 
36286 Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: 
36287 T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x2) x3 t5)))) (pr3 (CHead c 
36288 (Bind Abbr) x2) x3 (lift (S O) O t4)) (or (ex3_2 T T (\lambda (u2: 
36289 T).(\lambda (t5: T).(eq T t4 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: 
36290 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36291 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S 
36292 O) O t4))) (\lambda (H14: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T 
36293 t4 (THead (Bind Abbr) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x2 
36294 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 (CHead c (Bind Abbr) x2) x3 
36295 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead 
36296 (Bind Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))) 
36297 (\lambda (_: T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x2) x3 t5))) (or 
36298 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Bind Abbr) u2 
36299 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
36300 T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 (CHead c 
36301 (Bind Abbr) x0) x1 (lift (S O) O t4))) (\lambda (x4: T).(\lambda (x5: 
36302 T).(\lambda (H15: (eq T t4 (THead (Bind Abbr) x4 x5))).(\lambda (H16: (pr3 c 
36303 x2 x4)).(\lambda (H17: (pr3 (CHead c (Bind Abbr) x2) x3 x5)).(eq_ind_r T 
36304 (THead (Bind Abbr) x4 x5) (\lambda (t: T).(or (ex3_2 T T (\lambda (u2: 
36305 T).(\lambda (t5: T).(eq T t (THead (Bind Abbr) u2 t5)))) (\lambda (u2: 
36306 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36307 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S 
36308 O) O t)))) (or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T 
36309 (THead (Bind Abbr) x4 x5) (THead (Bind Abbr) u2 t5)))) (\lambda (u2: 
36310 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36311 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S 
36312 O) O (THead (Bind Abbr) x4 x5))) (ex3_2_intro T T (\lambda (u2: T).(\lambda 
36313 (t5: T).(eq T (THead (Bind Abbr) x4 x5) (THead (Bind Abbr) u2 t5)))) (\lambda 
36314 (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36315 (CHead c (Bind Abbr) x0) x1 t5))) x4 x5 (refl_equal T (THead (Bind Abbr) x4 
36316 x5)) (pr3_sing c x2 x0 H9 x4 H16) (pr3_sing (CHead c (Bind Abbr) x0) x3 x1 
36317 (H11 Abbr x0) x5 (pr3_pr2_pr3_t c x2 x3 x5 (Bind Abbr) H17 x0 H9)))) t4 
36318 H15)))))) H14)) (\lambda (H14: (pr3 (CHead c (Bind Abbr) x2) x3 (lift (S O) O 
36319 t4))).(or_intror (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead 
36320 (Bind Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36321 (\lambda (_: T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 
36322 (CHead c (Bind Abbr) x0) x1 (lift (S O) O t4)) (pr3_sing (CHead c (Bind Abbr) 
36323 x0) x3 x1 (H11 Abbr x0) (lift (S O) O t4) (pr3_pr2_pr3_t c x2 x3 (lift (S O) 
36324 O t4) (Bind Abbr) H14 x0 H9)))) H13)))) (\lambda (H11: (ex2 T (\lambda (u: 
36325 T).(pr0 x0 u)) (\lambda (u: T).(pr2 (CHead c (Bind Abbr) u) x1 
36326 x3)))).(ex2_ind T (\lambda (u: T).(pr0 x0 u)) (\lambda (u: T).(pr2 (CHead c 
36327 (Bind Abbr) u) x1 x3)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T 
36328 t4 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 
36329 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 
36330 t5)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S O) O t4))) (\lambda (x4: 
36331 T).(\lambda (H12: (pr0 x0 x4)).(\lambda (H13: (pr2 (CHead c (Bind Abbr) x4) 
36332 x1 x3)).(let H14 \def (eq_ind T t2 (\lambda (t: T).(\forall (x: T).(\forall 
36333 (x0: T).((eq T t (THead (Bind Abbr) x x0)) \to (or (ex3_2 T T (\lambda (u2: 
36334 T).(\lambda (t2: T).(eq T t4 (THead (Bind Abbr) u2 t2)))) (\lambda (u2: 
36335 T).(\lambda (_: T).(pr3 c x u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 
36336 (CHead c (Bind Abbr) x) x0 t2)))) (pr3 (CHead c (Bind Abbr) x) x0 (lift (S O) 
36337 O t4))))))) H3 (THead (Bind Abbr) x2 x3) H8) in (let H15 \def (H14 x2 x3 
36338 (refl_equal T (THead (Bind Abbr) x2 x3))) in (or_ind (ex3_2 T T (\lambda (u2: 
36339 T).(\lambda (t5: T).(eq T t4 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: 
36340 T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36341 (CHead c (Bind Abbr) x2) x3 t5)))) (pr3 (CHead c (Bind Abbr) x2) x3 (lift (S 
36342 O) O t4)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead 
36343 (Bind Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36344 (\lambda (_: T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 
36345 (CHead c (Bind Abbr) x0) x1 (lift (S O) O t4))) (\lambda (H16: (ex3_2 T T 
36346 (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead (Bind Abbr) u2 t2)))) 
36347 (\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda 
36348 (t2: T).(pr3 (CHead c (Bind Abbr) x2) x3 t2))))).(ex3_2_ind T T (\lambda (u2: 
36349 T).(\lambda (t5: T).(eq T t4 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: 
36350 T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36351 (CHead c (Bind Abbr) x2) x3 t5))) (or (ex3_2 T T (\lambda (u2: T).(\lambda 
36352 (t5: T).(eq T t4 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: 
36353 T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) 
36354 x0) x1 t5)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S O) O t4))) (\lambda 
36355 (x5: T).(\lambda (x6: T).(\lambda (H17: (eq T t4 (THead (Bind Abbr) x5 
36356 x6))).(\lambda (H18: (pr3 c x2 x5)).(\lambda (H19: (pr3 (CHead c (Bind Abbr) 
36357 x2) x3 x6)).(eq_ind_r T (THead (Bind Abbr) x5 x6) (\lambda (t: T).(or (ex3_2 
36358 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t (THead (Bind Abbr) u2 t5)))) 
36359 (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda 
36360 (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 (CHead c (Bind Abbr) x0) 
36361 x1 (lift (S O) O t)))) (or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t5: 
36362 T).(eq T (THead (Bind Abbr) x5 x6) (THead (Bind Abbr) u2 t5)))) (\lambda (u2: 
36363 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36364 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S 
36365 O) O (THead (Bind Abbr) x5 x6))) (ex3_2_intro T T (\lambda (u2: T).(\lambda 
36366 (t5: T).(eq T (THead (Bind Abbr) x5 x6) (THead (Bind Abbr) u2 t5)))) (\lambda 
36367 (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36368 (CHead c (Bind Abbr) x0) x1 t5))) x5 x6 (refl_equal T (THead (Bind Abbr) x5 
36369 x6)) (pr3_sing c x2 x0 H9 x5 H18) (pr3_t x3 x1 (CHead c (Bind Abbr) x0) 
36370 (pr3_pr0_pr2_t x0 x4 H12 c x1 x3 (Bind Abbr) H13) x6 (pr3_pr2_pr3_t c x2 x3 
36371 x6 (Bind Abbr) H19 x0 H9)))) t4 H17)))))) H16)) (\lambda (H16: (pr3 (CHead c 
36372 (Bind Abbr) x2) x3 (lift (S O) O t4))).(or_intror (ex3_2 T T (\lambda (u2: 
36373 T).(\lambda (t5: T).(eq T t4 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: 
36374 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36375 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S 
36376 O) O t4)) (pr3_t x3 x1 (CHead c (Bind Abbr) x0) (pr3_pr0_pr2_t x0 x4 H12 c x1 
36377 x3 (Bind Abbr) H13) (lift (S O) O t4) (pr3_pr2_pr3_t c x2 x3 (lift (S O) O 
36378 t4) (Bind Abbr) H16 x0 H9)))) H15)))))) H11)) (\lambda (H11: (ex3_2 T T 
36379 (\lambda (y: T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) x0) x1 y))) 
36380 (\lambda (y: T).(\lambda (z: T).(pr0 y z))) (\lambda (_: T).(\lambda (z: 
36381 T).(pr2 (CHead c (Bind Abbr) x0) z x3))))).(ex3_2_ind T T (\lambda (y0: 
36382 T).(\lambda (_: T).(pr2 (CHead c (Bind Abbr) x0) x1 y0))) (\lambda (y0: 
36383 T).(\lambda (z: T).(pr0 y0 z))) (\lambda (_: T).(\lambda (z: T).(pr2 (CHead c 
36384 (Bind Abbr) x0) z x3))) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq 
36385 T t4 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 
36386 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 
36387 t5)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S O) O t4))) (\lambda (x4: 
36388 T).(\lambda (x5: T).(\lambda (H12: (pr2 (CHead c (Bind Abbr) x0) x1 
36389 x4)).(\lambda (H13: (pr0 x4 x5)).(\lambda (H14: (pr2 (CHead c (Bind Abbr) x0) 
36390 x5 x3)).(let H15 \def (eq_ind T t2 (\lambda (t: T).(\forall (x: T).(\forall 
36391 (x0: T).((eq T t (THead (Bind Abbr) x x0)) \to (or (ex3_2 T T (\lambda (u2: 
36392 T).(\lambda (t2: T).(eq T t4 (THead (Bind Abbr) u2 t2)))) (\lambda (u2: 
36393 T).(\lambda (_: T).(pr3 c x u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 
36394 (CHead c (Bind Abbr) x) x0 t2)))) (pr3 (CHead c (Bind Abbr) x) x0 (lift (S O) 
36395 O t4))))))) H3 (THead (Bind Abbr) x2 x3) H8) in (let H16 \def (H15 x2 x3 
36396 (refl_equal T (THead (Bind Abbr) x2 x3))) in (or_ind (ex3_2 T T (\lambda (u2: 
36397 T).(\lambda (t5: T).(eq T t4 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: 
36398 T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36399 (CHead c (Bind Abbr) x2) x3 t5)))) (pr3 (CHead c (Bind Abbr) x2) x3 (lift (S 
36400 O) O t4)) (or (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead 
36401 (Bind Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36402 (\lambda (_: T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 
36403 (CHead c (Bind Abbr) x0) x1 (lift (S O) O t4))) (\lambda (H17: (ex3_2 T T 
36404 (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead (Bind Abbr) u2 t2)))) 
36405 (\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda 
36406 (t2: T).(pr3 (CHead c (Bind Abbr) x2) x3 t2))))).(ex3_2_ind T T (\lambda (u2: 
36407 T).(\lambda (t5: T).(eq T t4 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: 
36408 T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36409 (CHead c (Bind Abbr) x2) x3 t5))) (or (ex3_2 T T (\lambda (u2: T).(\lambda 
36410 (t5: T).(eq T t4 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: 
36411 T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) 
36412 x0) x1 t5)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S O) O t4))) (\lambda 
36413 (x6: T).(\lambda (x7: T).(\lambda (H18: (eq T t4 (THead (Bind Abbr) x6 
36414 x7))).(\lambda (H19: (pr3 c x2 x6)).(\lambda (H20: (pr3 (CHead c (Bind Abbr) 
36415 x2) x3 x7)).(eq_ind_r T (THead (Bind Abbr) x6 x7) (\lambda (t: T).(or (ex3_2 
36416 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t (THead (Bind Abbr) u2 t5)))) 
36417 (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda 
36418 (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 (CHead c (Bind Abbr) x0) 
36419 x1 (lift (S O) O t)))) (or_introl (ex3_2 T T (\lambda (u2: T).(\lambda (t5: 
36420 T).(eq T (THead (Bind Abbr) x6 x7) (THead (Bind Abbr) u2 t5)))) (\lambda (u2: 
36421 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36422 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S 
36423 O) O (THead (Bind Abbr) x6 x7))) (ex3_2_intro T T (\lambda (u2: T).(\lambda 
36424 (t5: T).(eq T (THead (Bind Abbr) x6 x7) (THead (Bind Abbr) u2 t5)))) (\lambda 
36425 (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 
36426 (CHead c (Bind Abbr) x0) x1 t5))) x6 x7 (refl_equal T (THead (Bind Abbr) x6 
36427 x7)) (pr3_sing c x2 x0 H9 x6 H19) (pr3_sing (CHead c (Bind Abbr) x0) x4 x1 
36428 H12 x7 (pr3_sing (CHead c (Bind Abbr) x0) x5 x4 (pr2_free (CHead c (Bind 
36429 Abbr) x0) x4 x5 H13) x7 (pr3_sing (CHead c (Bind Abbr) x0) x3 x5 H14 x7 
36430 (pr3_pr2_pr3_t c x2 x3 x7 (Bind Abbr) H20 x0 H9)))))) t4 H18)))))) H17)) 
36431 (\lambda (H17: (pr3 (CHead c (Bind Abbr) x2) x3 (lift (S O) O 
36432 t4))).(or_intror (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead 
36433 (Bind Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36434 (\lambda (_: T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) x0) x1 t5)))) (pr3 
36435 (CHead c (Bind Abbr) x0) x1 (lift (S O) O t4)) (pr3_sing (CHead c (Bind Abbr) 
36436 x0) x4 x1 H12 (lift (S O) O t4) (pr3_sing (CHead c (Bind Abbr) x0) x5 x4 
36437 (pr2_free (CHead c (Bind Abbr) x0) x4 x5 H13) (lift (S O) O t4) (pr3_sing 
36438 (CHead c (Bind Abbr) x0) x3 x5 H14 (lift (S O) O t4) (pr3_pr2_pr3_t c x2 x3 
36439 (lift (S O) O t4) (Bind Abbr) H17 x0 H9)))))) H16)))))))) H11)) H10)))))) 
36440 H7)) (\lambda (H7: ((\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
36441 x1 (lift (S O) O t2)))))).(or_intror (ex3_2 T T (\lambda (u2: T).(\lambda 
36442 (t5: T).(eq T t4 (THead (Bind Abbr) u2 t5)))) (\lambda (u2: T).(\lambda (_: 
36443 T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 (CHead c (Bind Abbr) 
36444 x0) x1 t5)))) (pr3 (CHead c (Bind Abbr) x0) x1 (lift (S O) O t4)) (pr3_sing 
36445 (CHead c (Bind Abbr) x0) (lift (S O) O t2) x1 (H7 Abbr x0) (lift (S O) O t4) 
36446 (pr3_lift (CHead c (Bind Abbr) x0) c (S O) O (drop_drop (Bind Abbr) O c c 
36447 (drop_refl c) x0) t2 t4 H2)))) H6)))))))))))) y x H0))))) H))))).
36448
36449 theorem pr3_gen_appl:
36450  \forall (c: C).(\forall (u1: T).(\forall (t1: T).(\forall (x: T).((pr3 c 
36451 (THead (Flat Appl) u1 t1) x) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda 
36452 (t2: T).(eq T x (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
36453 T).(pr3 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c t1 t2)))) (ex4_4 T 
36454 T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 
36455 c (THead (Bind Abbr) u2 t2) x))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
36456 (u2: T).(\lambda (_: T).(pr3 c u1 u2))))) (\lambda (y1: T).(\lambda (z1: 
36457 T).(\lambda (_: T).(\lambda (_: T).(pr3 c t1 (THead (Bind Abst) y1 z1)))))) 
36458 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
36459 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T 
36460 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36461 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36462 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
36463 c t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
36464 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
36465 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) x))))))) (\lambda (_: 
36466 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36467 (_: T).(pr3 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36468 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36469 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36470 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2)))))))))))))
36471 \def
36472  \lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (x: T).(\lambda 
36473 (H: (pr3 c (THead (Flat Appl) u1 t1) x)).(insert_eq T (THead (Flat Appl) u1 
36474 t1) (\lambda (t: T).(pr3 c t x)) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda 
36475 (t2: T).(eq T x (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
36476 T).(pr3 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c t1 t2)))) (ex4_4 T 
36477 T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 
36478 c (THead (Bind Abbr) u2 t2) x))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
36479 (u2: T).(\lambda (_: T).(pr3 c u1 u2))))) (\lambda (y1: T).(\lambda (z1: 
36480 T).(\lambda (_: T).(\lambda (_: T).(pr3 c t1 (THead (Bind Abst) y1 z1)))))) 
36481 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
36482 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T 
36483 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36484 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36485 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
36486 c t1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
36487 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
36488 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) x))))))) (\lambda (_: 
36489 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36490 (_: T).(pr3 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36491 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36492 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36493 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda 
36494 (y: T).(\lambda (H0: (pr3 c y x)).(unintro T t1 (\lambda (t: T).((eq T y 
36495 (THead (Flat Appl) u1 t)) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
36496 T).(eq T x (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 
36497 c u1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c t t2)))) (ex4_4 T T T T 
36498 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 c 
36499 (THead (Bind Abbr) u2 t2) x))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
36500 (u2: T).(\lambda (_: T).(pr3 c u1 u2))))) (\lambda (y1: T).(\lambda (z1: 
36501 T).(\lambda (_: T).(\lambda (_: T).(pr3 c t (THead (Bind Abst) y1 z1)))))) 
36502 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
36503 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T 
36504 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36505 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36506 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
36507 c t (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
36508 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
36509 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) x))))))) (\lambda (_: 
36510 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36511 (_: T).(pr3 c u1 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36512 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36513 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36514 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))))) (unintro 
36515 T u1 (\lambda (t: T).(\forall (x0: T).((eq T y (THead (Flat Appl) t x0)) \to 
36516 (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Flat Appl) 
36517 u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))) (\lambda (_: 
36518 T).(\lambda (t2: T).(pr3 c x0 t2)))) (ex4_4 T T T T (\lambda (_: T).(\lambda 
36519 (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 c (THead (Bind Abbr) u2 t2) 
36520 x))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 
36521 c t u2))))) (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
36522 T).(pr3 c x0 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: 
36523 T).(\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 
36524 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T T T (\lambda (b: 
36525 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36526 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
36527 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x0 (THead 
36528 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
36529 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) 
36530 y2 (THead (Flat Appl) (lift (S O) O u2) z2)) x))))))) (\lambda (_: 
36531 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36532 (_: T).(pr3 c t u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36533 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36534 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36535 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2)))))))))))) (pr3_ind 
36536 c (\lambda (t: T).(\lambda (t0: T).(\forall (x0: T).(\forall (x1: T).((eq T t 
36537 (THead (Flat Appl) x0 x1)) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
36538 T).(eq T t0 (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
36539 T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c x1 t2)))) (ex4_4 T 
36540 T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 
36541 c (THead (Bind Abbr) u2 t2) t0))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
36542 (u2: T).(\lambda (_: T).(pr3 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: 
36543 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) 
36544 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
36545 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T 
36546 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36547 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36548 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
36549 c x1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
36550 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
36551 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t0))))))) (\lambda (_: 
36552 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36553 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36554 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36555 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36556 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2)))))))))))))) 
36557 (\lambda (t: T).(\lambda (x0: T).(\lambda (x1: T).(\lambda (H1: (eq T t 
36558 (THead (Flat Appl) x0 x1))).(eq_ind_r T (THead (Flat Appl) x0 x1) (\lambda 
36559 (t0: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t0 (THead 
36560 (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36561 (\lambda (_: T).(\lambda (t2: T).(pr3 c x1 t2)))) (ex4_4 T T T T (\lambda (_: 
36562 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 c (THead (Bind 
36563 Abbr) u2 t2) t0))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36564 T).(\lambda (_: T).(pr3 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: 
36565 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) 
36566 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
36567 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T 
36568 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36569 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36570 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
36571 c x1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
36572 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
36573 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t0))))))) (\lambda (_: 
36574 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36575 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36576 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36577 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36578 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2)))))))))) 
36579 (or3_intro0 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T (THead (Flat 
36580 Appl) x0 x1) (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
36581 T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c x1 t2)))) (ex4_4 T 
36582 T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 
36583 c (THead (Bind Abbr) u2 t2) (THead (Flat Appl) x0 x1)))))) (\lambda (_: 
36584 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))))) 
36585 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 
36586 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
36587 T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
36588 z1 t2)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
36589 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) 
36590 (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
36591 (_: T).(\lambda (_: T).(pr3 c x1 (THead (Bind b) y1 z1)))))))) (\lambda (b: 
36592 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
36593 (y2: T).(pr3 c (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) 
36594 (THead (Flat Appl) x0 x1)))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
36595 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))))))) 
36596 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
36597 T).(\lambda (y2: T).(pr3 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
36598 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr3 
36599 (CHead c (Bind b) y2) z1 z2)))))))) (ex3_2_intro T T (\lambda (u2: 
36600 T).(\lambda (t2: T).(eq T (THead (Flat Appl) x0 x1) (THead (Flat Appl) u2 
36601 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
36602 T).(\lambda (t2: T).(pr3 c x1 t2))) x0 x1 (refl_equal T (THead (Flat Appl) x0 
36603 x1)) (pr3_refl c x0) (pr3_refl c x1))) t H1))))) (\lambda (t2: T).(\lambda 
36604 (t3: T).(\lambda (H1: (pr2 c t3 t2)).(\lambda (t4: T).(\lambda (H2: (pr3 c t2 
36605 t4)).(\lambda (H3: ((\forall (x: T).(\forall (x0: T).((eq T t2 (THead (Flat 
36606 Appl) x x0)) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 
36607 (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x u2))) 
36608 (\lambda (_: T).(\lambda (t2: T).(pr3 c x0 t2)))) (ex4_4 T T T T (\lambda (_: 
36609 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 c (THead (Bind 
36610 Abbr) u2 t2) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36611 T).(\lambda (_: T).(pr3 c x u2))))) (\lambda (y1: T).(\lambda (z1: 
36612 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x0 (THead (Bind Abst) y1 z1)))))) 
36613 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
36614 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T 
36615 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36616 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36617 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
36618 c x0 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
36619 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
36620 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
36621 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36622 (_: T).(pr3 c x u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36623 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36624 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36625 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 
36626 z2)))))))))))))).(\lambda (x0: T).(\lambda (x1: T).(\lambda (H4: (eq T t3 
36627 (THead (Flat Appl) x0 x1))).(let H5 \def (eq_ind T t3 (\lambda (t: T).(pr2 c 
36628 t t2)) H1 (THead (Flat Appl) x0 x1) H4) in (let H6 \def (pr2_gen_appl c x0 x1 
36629 t2 H5) in (or3_ind (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t2 
36630 (THead (Flat Appl) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) 
36631 (\lambda (_: T).(\lambda (t5: T).(pr2 c x1 t5)))) (ex4_4 T T T T (\lambda 
36632 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T x1 (THead 
36633 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36634 T).(\lambda (t5: T).(eq T t2 (THead (Bind Abbr) u2 t5)))))) (\lambda (_: 
36635 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))))) 
36636 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t5: T).(\forall 
36637 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T 
36638 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36639 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36640 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq 
36641 T x1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
36642 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T t2 (THead 
36643 (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
36644 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36645 (_: T).(pr2 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36646 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
36647 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36648 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) (or3 (ex3_2 
36649 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat Appl) u2 t5)))) 
36650 (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda 
36651 (t5: T).(pr3 c x1 t5)))) (ex4_4 T T T T (\lambda (_: T).(\lambda (_: 
36652 T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind Abbr) u2 t5) t4))))) 
36653 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 
36654 u2))))) (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
36655 T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: 
36656 T).(\lambda (_: T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 
36657 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T T T (\lambda (b: 
36658 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36659 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
36660 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead 
36661 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
36662 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) 
36663 y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
36664 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36665 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36666 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36667 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36668 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda 
36669 (H7: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) 
36670 u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) (\lambda (_: 
36671 T).(\lambda (t2: T).(pr2 c x1 t2))))).(ex3_2_ind T T (\lambda (u2: 
36672 T).(\lambda (t5: T).(eq T t2 (THead (Flat Appl) u2 t5)))) (\lambda (u2: 
36673 T).(\lambda (_: T).(pr2 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr2 c x1 
36674 t5))) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat 
36675 Appl) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
36676 T).(\lambda (t5: T).(pr3 c x1 t5)))) (ex4_4 T T T T (\lambda (_: T).(\lambda 
36677 (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind Abbr) u2 t5) 
36678 t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 
36679 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
36680 T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: 
36681 T).(\lambda (_: T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 
36682 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T T T (\lambda (b: 
36683 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36684 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
36685 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead 
36686 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
36687 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) 
36688 y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
36689 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36690 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36691 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36692 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36693 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda 
36694 (x2: T).(\lambda (x3: T).(\lambda (H8: (eq T t2 (THead (Flat Appl) x2 
36695 x3))).(\lambda (H9: (pr2 c x0 x2)).(\lambda (H10: (pr2 c x1 x3)).(let H11 
36696 \def (eq_ind T t2 (\lambda (t: T).(\forall (x: T).(\forall (x0: T).((eq T t 
36697 (THead (Flat Appl) x x0)) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
36698 T).(eq T t4 (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
36699 T).(pr3 c x u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c x0 t2)))) (ex4_4 T 
36700 T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 
36701 c (THead (Bind Abbr) u2 t2) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
36702 (u2: T).(\lambda (_: T).(pr3 c x u2))))) (\lambda (y1: T).(\lambda (z1: 
36703 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x0 (THead (Bind Abst) y1 z1)))))) 
36704 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
36705 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T 
36706 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36707 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36708 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
36709 c x0 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
36710 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
36711 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
36712 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36713 (_: T).(pr3 c x u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36714 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36715 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36716 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))))))) H3 
36717 (THead (Flat Appl) x2 x3) H8) in (let H12 \def (eq_ind T t2 (\lambda (t: 
36718 T).(pr3 c t t4)) H2 (THead (Flat Appl) x2 x3) H8) in (let H13 \def (H11 x2 x3 
36719 (refl_equal T (THead (Flat Appl) x2 x3))) in (or3_ind (ex3_2 T T (\lambda 
36720 (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat Appl) u2 t5)))) (\lambda (u2: 
36721 T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c x3 
36722 t5)))) (ex4_4 T T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36723 T).(\lambda (t5: T).(pr3 c (THead (Bind Abbr) u2 t5) t4))))) (\lambda (_: 
36724 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))))) 
36725 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x3 
36726 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
36727 T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
36728 z1 t5)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
36729 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) 
36730 (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
36731 (_: T).(\lambda (_: T).(pr3 c x3 (THead (Bind b) y1 z1)))))))) (\lambda (b: 
36732 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
36733 (y2: T).(pr3 c (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) 
36734 t4))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
36735 T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))))))) (\lambda (_: 
36736 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36737 (y2: T).(pr3 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
36738 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) 
36739 y2) z1 z2)))))))) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 
36740 (THead (Flat Appl) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36741 (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 t5)))) (ex4_4 T T T T (\lambda (_: 
36742 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind 
36743 Abbr) u2 t5) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36744 T).(\lambda (_: T).(pr3 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: 
36745 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) 
36746 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t5: T).(\forall 
36747 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T 
36748 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36749 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36750 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
36751 c x1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
36752 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
36753 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
36754 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36755 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36756 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36757 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36758 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda 
36759 (H14: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead (Flat 
36760 Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: 
36761 T).(\lambda (t2: T).(pr3 c x3 t2))))).(ex3_2_ind T T (\lambda (u2: 
36762 T).(\lambda (t5: T).(eq T t4 (THead (Flat Appl) u2 t5)))) (\lambda (u2: 
36763 T).(\lambda (_: T).(pr3 c x2 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c x3 
36764 t5))) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat 
36765 Appl) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
36766 T).(\lambda (t5: T).(pr3 c x1 t5)))) (ex4_4 T T T T (\lambda (_: T).(\lambda 
36767 (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind Abbr) u2 t5) 
36768 t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 
36769 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
36770 T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: 
36771 T).(\lambda (_: T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 
36772 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T T T (\lambda (b: 
36773 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36774 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
36775 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead 
36776 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
36777 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) 
36778 y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
36779 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36780 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36781 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36782 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36783 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda 
36784 (x4: T).(\lambda (x5: T).(\lambda (H15: (eq T t4 (THead (Flat Appl) x4 
36785 x5))).(\lambda (H16: (pr3 c x2 x4)).(\lambda (H17: (pr3 c x3 x5)).(eq_ind_r T 
36786 (THead (Flat Appl) x4 x5) (\lambda (t: T).(or3 (ex3_2 T T (\lambda (u2: 
36787 T).(\lambda (t5: T).(eq T t (THead (Flat Appl) u2 t5)))) (\lambda (u2: 
36788 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 
36789 t5)))) (ex4_4 T T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36790 T).(\lambda (t5: T).(pr3 c (THead (Bind Abbr) u2 t5) t))))) (\lambda (_: 
36791 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))))) 
36792 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 
36793 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
36794 T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
36795 z1 t5)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
36796 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) 
36797 (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
36798 (_: T).(\lambda (_: T).(pr3 c x1 (THead (Bind b) y1 z1)))))))) (\lambda (b: 
36799 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
36800 (y2: T).(pr3 c (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) 
36801 t))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
36802 T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))))))) (\lambda (_: 
36803 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36804 (y2: T).(pr3 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
36805 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) 
36806 y2) z1 z2)))))))))) (or3_intro0 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: 
36807 T).(eq T (THead (Flat Appl) x4 x5) (THead (Flat Appl) u2 t5)))) (\lambda (u2: 
36808 T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 
36809 t5)))) (ex4_4 T T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36810 T).(\lambda (t5: T).(pr3 c (THead (Bind Abbr) u2 t5) (THead (Flat Appl) x4 
36811 x5)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: 
36812 T).(pr3 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
36813 T).(\lambda (_: T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
36814 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t5: T).(\forall (b: B).(\forall 
36815 (u: T).(pr3 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T T T (\lambda 
36816 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
36817 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
36818 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 
36819 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
36820 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) 
36821 y2 (THead (Flat Appl) (lift (S O) O u2) z2)) (THead (Flat Appl) x4 x5)))))))) 
36822 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36823 T).(\lambda (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: 
36824 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 
36825 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
36826 T).(\lambda (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2)))))))) 
36827 (ex3_2_intro T T (\lambda (u2: T).(\lambda (t5: T).(eq T (THead (Flat Appl) 
36828 x4 x5) (THead (Flat Appl) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c 
36829 x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 t5))) x4 x5 (refl_equal T 
36830 (THead (Flat Appl) x4 x5)) (pr3_sing c x2 x0 H9 x4 H16) (pr3_sing c x3 x1 H10 
36831 x5 H17))) t4 H15)))))) H14)) (\lambda (H14: (ex4_4 T T T T (\lambda (_: 
36832 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 c (THead (Bind 
36833 Abbr) u2 t2) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36834 T).(\lambda (_: T).(pr3 c x2 u2))))) (\lambda (y1: T).(\lambda (z1: 
36835 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x3 (THead (Bind Abst) y1 z1)))))) 
36836 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
36837 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t2))))))))).(ex4_4_ind T 
36838 T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 
36839 c (THead (Bind Abbr) u2 t5) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
36840 (u2: T).(\lambda (_: T).(pr3 c x2 u2))))) (\lambda (y1: T).(\lambda (z1: 
36841 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x3 (THead (Bind Abst) y1 z1)))))) 
36842 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t5: T).(\forall 
36843 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t5))))))) (or3 (ex3_2 T T 
36844 (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat Appl) u2 t5)))) 
36845 (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda 
36846 (t5: T).(pr3 c x1 t5)))) (ex4_4 T T T T (\lambda (_: T).(\lambda (_: 
36847 T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind Abbr) u2 t5) t4))))) 
36848 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 
36849 u2))))) (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
36850 T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: 
36851 T).(\lambda (_: T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 
36852 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T T T (\lambda (b: 
36853 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36854 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
36855 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead 
36856 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
36857 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) 
36858 y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
36859 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36860 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36861 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36862 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36863 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda 
36864 (x4: T).(\lambda (x5: T).(\lambda (x6: T).(\lambda (x7: T).(\lambda (H15: 
36865 (pr3 c (THead (Bind Abbr) x6 x7) t4)).(\lambda (H16: (pr3 c x2 x6)).(\lambda 
36866 (H17: (pr3 c x3 (THead (Bind Abst) x4 x5))).(\lambda (H18: ((\forall (b: 
36867 B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x5 x7))))).(or3_intro1 (ex3_2 T 
36868 T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat Appl) u2 t5)))) 
36869 (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda 
36870 (t5: T).(pr3 c x1 t5)))) (ex4_4 T T T T (\lambda (_: T).(\lambda (_: 
36871 T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind Abbr) u2 t5) t4))))) 
36872 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 
36873 u2))))) (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
36874 T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: 
36875 T).(\lambda (_: T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 
36876 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T T T (\lambda (b: 
36877 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36878 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
36879 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead 
36880 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
36881 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) 
36882 y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
36883 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36884 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36885 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36886 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36887 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2)))))))) (ex4_4_intro 
36888 T T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t5: 
36889 T).(pr3 c (THead (Bind Abbr) u2 t5) t4))))) (\lambda (_: T).(\lambda (_: 
36890 T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))))) (\lambda (y1: 
36891 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead (Bind 
36892 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
36893 (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 
36894 t5))))))) x4 x5 x6 x7 H15 (pr3_sing c x2 x0 H9 x6 H16) (pr3_sing c x3 x1 H10 
36895 (THead (Bind Abst) x4 x5) H17) H18)))))))))) H14)) (\lambda (H14: (ex6_6 B T 
36896 T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
36897 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
36898 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36899 (_: T).(pr3 c x3 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
36900 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c 
36901 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) 
36902 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36903 T).(\lambda (_: T).(pr3 c x2 u2))))))) (\lambda (_: B).(\lambda (y1: 
36904 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 
36905 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
36906 T).(\lambda (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 
36907 z2))))))))).(ex6_6_ind B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
36908 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
36909 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
36910 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x3 (THead (Bind b) y1 z1)))))))) 
36911 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda 
36912 (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) y2 (THead (Flat Appl) (lift 
36913 (S O) O u2) z2)) t4))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
36914 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x2 u2))))))) 
36915 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
36916 T).(\lambda (y2: T).(pr3 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
36917 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr3 
36918 (CHead c (Bind b) y2) z1 z2))))))) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda 
36919 (t5: T).(eq T t4 (THead (Flat Appl) u2 t5)))) (\lambda (u2: T).(\lambda (_: 
36920 T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 t5)))) (ex4_4 T 
36921 T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 
36922 c (THead (Bind Abbr) u2 t5) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
36923 (u2: T).(\lambda (_: T).(pr3 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: 
36924 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) 
36925 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t5: T).(\forall 
36926 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T 
36927 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36928 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36929 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
36930 c x1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
36931 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
36932 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
36933 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36934 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36935 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36936 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36937 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda 
36938 (x4: B).(\lambda (x5: T).(\lambda (x6: T).(\lambda (x7: T).(\lambda (x8: 
36939 T).(\lambda (x9: T).(\lambda (H15: (not (eq B x4 Abst))).(\lambda (H16: (pr3 
36940 c x3 (THead (Bind x4) x5 x6))).(\lambda (H17: (pr3 c (THead (Bind x4) x9 
36941 (THead (Flat Appl) (lift (S O) O x8) x7)) t4)).(\lambda (H18: (pr3 c x2 
36942 x8)).(\lambda (H19: (pr3 c x5 x9)).(\lambda (H20: (pr3 (CHead c (Bind x4) x9) 
36943 x6 x7)).(or3_intro2 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 
36944 (THead (Flat Appl) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36945 (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 t5)))) (ex4_4 T T T T (\lambda (_: 
36946 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind 
36947 Abbr) u2 t5) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36948 T).(\lambda (_: T).(pr3 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: 
36949 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) 
36950 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t5: T).(\forall 
36951 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T 
36952 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36953 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36954 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
36955 c x1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
36956 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
36957 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
36958 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36959 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
36960 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
36961 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
36962 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2)))))))) (ex6_6_intro 
36963 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
36964 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
36965 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36966 (_: T).(pr3 c x1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
36967 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c 
36968 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) 
36969 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36970 T).(\lambda (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: 
36971 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 
36972 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
36973 T).(\lambda (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))) 
36974 x4 x5 x6 x7 x8 x9 H15 (pr3_sing c x3 x1 H10 (THead (Bind x4) x5 x6) H16) H17 
36975 (pr3_sing c x2 x0 H9 x8 H18) H19 H20)))))))))))))) H14)) H13))))))))) H7)) 
36976 (\lambda (H7: (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
36977 T).(\lambda (_: T).(eq T x1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
36978 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind 
36979 Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36980 (_: T).(pr2 c x0 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
36981 T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
36982 z1 t2))))))))).(ex4_4_ind T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda 
36983 (_: T).(\lambda (_: T).(eq T x1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: 
36984 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t5: T).(eq T t2 (THead (Bind 
36985 Abbr) u2 t5)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
36986 (_: T).(pr2 c x0 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
36987 T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) 
36988 z1 t5))))))) (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 
36989 (THead (Flat Appl) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) 
36990 (\lambda (_: T).(\lambda (t5: T).(pr3 c x1 t5)))) (ex4_4 T T T T (\lambda (_: 
36991 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind 
36992 Abbr) u2 t5) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
36993 T).(\lambda (_: T).(pr3 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: 
36994 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) 
36995 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t5: T).(\forall 
36996 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T 
36997 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
36998 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
36999 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
37000 c x1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
37001 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
37002 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
37003 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
37004 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
37005 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
37006 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
37007 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda 
37008 (x2: T).(\lambda (x3: T).(\lambda (x4: T).(\lambda (x5: T).(\lambda (H8: (eq 
37009 T x1 (THead (Bind Abst) x2 x3))).(\lambda (H9: (eq T t2 (THead (Bind Abbr) x4 
37010 x5))).(\lambda (H10: (pr2 c x0 x4)).(\lambda (H11: ((\forall (b: B).(\forall 
37011 (u: T).(pr2 (CHead c (Bind b) u) x3 x5))))).(eq_ind_r T (THead (Bind Abst) x2 
37012 x3) (\lambda (t: T).(or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T 
37013 t4 (THead (Flat Appl) u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 
37014 u2))) (\lambda (_: T).(\lambda (t5: T).(pr3 c t t5)))) (ex4_4 T T T T 
37015 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c 
37016 (THead (Bind Abbr) u2 t5) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
37017 (u2: T).(\lambda (_: T).(pr3 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: 
37018 T).(\lambda (_: T).(\lambda (_: T).(pr3 c t (THead (Bind Abst) y1 z1)))))) 
37019 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t5: T).(\forall 
37020 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T 
37021 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
37022 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
37023 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
37024 c t (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
37025 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
37026 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
37027 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
37028 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
37029 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
37030 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
37031 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2)))))))))) (let H12 
37032 \def (eq_ind T t2 (\lambda (t: T).(\forall (x: T).(\forall (x0: T).((eq T t 
37033 (THead (Flat Appl) x x0)) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
37034 T).(eq T t4 (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
37035 T).(pr3 c x u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c x0 t2)))) (ex4_4 T 
37036 T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 
37037 c (THead (Bind Abbr) u2 t2) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
37038 (u2: T).(\lambda (_: T).(pr3 c x u2))))) (\lambda (y1: T).(\lambda (z1: 
37039 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x0 (THead (Bind Abst) y1 z1)))))) 
37040 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
37041 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T 
37042 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
37043 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
37044 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
37045 c x0 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
37046 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
37047 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
37048 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
37049 (_: T).(pr3 c x u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
37050 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
37051 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
37052 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))))))) H3 
37053 (THead (Bind Abbr) x4 x5) H9) in (let H13 \def (eq_ind T t2 (\lambda (t: 
37054 T).(pr3 c t t4)) H2 (THead (Bind Abbr) x4 x5) H9) in (or3_intro1 (ex3_2 T T 
37055 (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat Appl) u2 t5)))) 
37056 (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda 
37057 (t5: T).(pr3 c (THead (Bind Abst) x2 x3) t5)))) (ex4_4 T T T T (\lambda (_: 
37058 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind 
37059 Abbr) u2 t5) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
37060 T).(\lambda (_: T).(pr3 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: 
37061 T).(\lambda (_: T).(\lambda (_: T).(pr3 c (THead (Bind Abst) x2 x3) (THead 
37062 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
37063 T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
37064 z1 t5)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
37065 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) 
37066 (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
37067 (_: T).(\lambda (_: T).(pr3 c (THead (Bind Abst) x2 x3) (THead (Bind b) y1 
37068 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: 
37069 T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) y2 (THead (Flat 
37070 Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: B).(\lambda (_: 
37071 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 
37072 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
37073 T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) (\lambda (b: 
37074 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
37075 (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2)))))))) (ex4_4_intro T T T T 
37076 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c 
37077 (THead (Bind Abbr) u2 t5) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda 
37078 (u2: T).(\lambda (_: T).(pr3 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: 
37079 T).(\lambda (_: T).(\lambda (_: T).(pr3 c (THead (Bind Abst) x2 x3) (THead 
37080 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
37081 T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
37082 z1 t5))))))) x2 x3 x4 x5 H13 (pr3_pr2 c x0 x4 H10) (pr3_refl c (THead (Bind 
37083 Abst) x2 x3)) (\lambda (b: B).(\lambda (u: T).(pr3_pr2 (CHead c (Bind b) u) 
37084 x3 x5 (H11 b u)))))))) x1 H8))))))))) H7)) (\lambda (H7: (ex6_6 B T T T T T 
37085 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
37086 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
37087 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T x1 
37088 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
37089 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T t2 (THead (Bind 
37090 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
37091 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
37092 (_: T).(pr2 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
37093 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
37094 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
37095 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))).(ex6_6_ind 
37096 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
37097 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
37098 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
37099 (_: T).(eq T x1 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
37100 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
37101 t2 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) 
37102 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
37103 T).(\lambda (_: T).(pr2 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: 
37104 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
37105 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
37106 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))) 
37107 (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat Appl) 
37108 u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: 
37109 T).(\lambda (t5: T).(pr3 c x1 t5)))) (ex4_4 T T T T (\lambda (_: T).(\lambda 
37110 (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind Abbr) u2 t5) 
37111 t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 
37112 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
37113 T).(pr3 c x1 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: 
37114 T).(\lambda (_: T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 
37115 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T T T (\lambda (b: 
37116 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
37117 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
37118 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c x1 (THead 
37119 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
37120 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) 
37121 y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
37122 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
37123 (_: T).(pr3 c x0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
37124 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
37125 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
37126 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))) (\lambda 
37127 (x2: B).(\lambda (x3: T).(\lambda (x4: T).(\lambda (x5: T).(\lambda (x6: 
37128 T).(\lambda (x7: T).(\lambda (H8: (not (eq B x2 Abst))).(\lambda (H9: (eq T 
37129 x1 (THead (Bind x2) x3 x4))).(\lambda (H10: (eq T t2 (THead (Bind x2) x7 
37130 (THead (Flat Appl) (lift (S O) O x6) x5)))).(\lambda (H11: (pr2 c x0 
37131 x6)).(\lambda (H12: (pr2 c x3 x7)).(\lambda (H13: (pr2 (CHead c (Bind x2) x7) 
37132 x4 x5)).(eq_ind_r T (THead (Bind x2) x3 x4) (\lambda (t: T).(or3 (ex3_2 T T 
37133 (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat Appl) u2 t5)))) 
37134 (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda 
37135 (t5: T).(pr3 c t t5)))) (ex4_4 T T T T (\lambda (_: T).(\lambda (_: 
37136 T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind Abbr) u2 t5) t4))))) 
37137 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 
37138 u2))))) (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: 
37139 T).(pr3 c t (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: 
37140 T).(\lambda (_: T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 
37141 (CHead c (Bind b) u) z1 t5)))))))) (ex6_6 B T T T T T (\lambda (b: 
37142 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
37143 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
37144 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c t (THead (Bind 
37145 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
37146 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) y2 (THead 
37147 (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: B).(\lambda (_: 
37148 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 
37149 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
37150 T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) (\lambda (b: 
37151 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
37152 (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2)))))))))) (let H14 \def (eq_ind T t2 
37153 (\lambda (t: T).(\forall (x: T).(\forall (x0: T).((eq T t (THead (Flat Appl) 
37154 x x0)) \to (or3 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead 
37155 (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c x u2))) 
37156 (\lambda (_: T).(\lambda (t2: T).(pr3 c x0 t2)))) (ex4_4 T T T T (\lambda (_: 
37157 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 c (THead (Bind 
37158 Abbr) u2 t2) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
37159 T).(\lambda (_: T).(pr3 c x u2))))) (\lambda (y1: T).(\lambda (z1: 
37160 T).(\lambda (_: T).(\lambda (_: T).(pr3 c x0 (THead (Bind Abst) y1 z1)))))) 
37161 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
37162 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T 
37163 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
37164 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
37165 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 
37166 c x0 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda 
37167 (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind 
37168 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: 
37169 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
37170 (_: T).(pr3 c x u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
37171 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) 
37172 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
37173 (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))))))) H3 
37174 (THead (Bind x2) x7 (THead (Flat Appl) (lift (S O) O x6) x5)) H10) in (let 
37175 H15 \def (eq_ind T t2 (\lambda (t: T).(pr3 c t t4)) H2 (THead (Bind x2) x7 
37176 (THead (Flat Appl) (lift (S O) O x6) x5)) H10) in (or3_intro2 (ex3_2 T T 
37177 (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead (Flat Appl) u2 t5)))) 
37178 (\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda 
37179 (t5: T).(pr3 c (THead (Bind x2) x3 x4) t5)))) (ex4_4 T T T T (\lambda (_: 
37180 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t5: T).(pr3 c (THead (Bind 
37181 Abbr) u2 t5) t4))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
37182 T).(\lambda (_: T).(pr3 c x0 u2))))) (\lambda (y1: T).(\lambda (z1: 
37183 T).(\lambda (_: T).(\lambda (_: T).(pr3 c (THead (Bind x2) x3 x4) (THead 
37184 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: 
37185 T).(\lambda (t5: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
37186 z1 t5)))))))) (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
37187 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) 
37188 (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
37189 (_: T).(\lambda (_: T).(pr3 c (THead (Bind x2) x3 x4) (THead (Bind b) y1 
37190 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: 
37191 T).(\lambda (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) y2 (THead (Flat 
37192 Appl) (lift (S O) O u2) z2)) t4))))))) (\lambda (_: B).(\lambda (_: 
37193 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 
37194 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
37195 T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) (\lambda (b: 
37196 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
37197 (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2)))))))) (ex6_6_intro B T T T T T 
37198 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
37199 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
37200 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c 
37201 (THead (Bind x2) x3 x4) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
37202 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
37203 (y2: T).(pr3 c (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) 
37204 t4))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
37205 T).(\lambda (u2: T).(\lambda (_: T).(pr3 c x0 u2))))))) (\lambda (_: 
37206 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
37207 (y2: T).(pr3 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
37208 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) 
37209 y2) z1 z2))))))) x2 x3 x4 x5 x6 x7 H8 (pr3_refl c (THead (Bind x2) x3 x4)) 
37210 H15 (pr3_pr2 c x0 x6 H11) (pr3_pr2 c x3 x7 H12) (pr3_pr2 (CHead c (Bind x2) 
37211 x7) x4 x5 H13))))) x1 H9))))))))))))) H7)) H6)))))))))))) y x H0))))) H))))).
37212
37213 theorem pr3_strip:
37214  \forall (c: C).(\forall (t0: T).(\forall (t1: T).((pr3 c t0 t1) \to (\forall 
37215 (t2: T).((pr2 c t0 t2) \to (ex2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: 
37216 T).(pr3 c t2 t))))))))
37217 \def
37218  \lambda (c: C).(\lambda (t0: T).(\lambda (t1: T).(\lambda (H: (pr3 c t0 
37219 t1)).(pr3_ind c (\lambda (t: T).(\lambda (t2: T).(\forall (t3: T).((pr2 c t 
37220 t3) \to (ex2 T (\lambda (t4: T).(pr3 c t2 t4)) (\lambda (t4: T).(pr3 c t3 
37221 t4))))))) (\lambda (t: T).(\lambda (t2: T).(\lambda (H0: (pr2 c t 
37222 t2)).(ex_intro2 T (\lambda (t3: T).(pr3 c t t3)) (\lambda (t3: T).(pr3 c t2 
37223 t3)) t2 (pr3_pr2 c t t2 H0) (pr3_refl c t2))))) (\lambda (t2: T).(\lambda 
37224 (t3: T).(\lambda (H0: (pr2 c t3 t2)).(\lambda (t4: T).(\lambda (_: (pr3 c t2 
37225 t4)).(\lambda (H2: ((\forall (t3: T).((pr2 c t2 t3) \to (ex2 T (\lambda (t: 
37226 T).(pr3 c t4 t)) (\lambda (t: T).(pr3 c t3 t))))))).(\lambda (t5: T).(\lambda 
37227 (H3: (pr2 c t3 t5)).(ex2_ind T (\lambda (t: T).(pr2 c t5 t)) (\lambda (t: 
37228 T).(pr2 c t2 t)) (ex2 T (\lambda (t: T).(pr3 c t4 t)) (\lambda (t: T).(pr3 c 
37229 t5 t))) (\lambda (x: T).(\lambda (H4: (pr2 c t5 x)).(\lambda (H5: (pr2 c t2 
37230 x)).(ex2_ind T (\lambda (t: T).(pr3 c t4 t)) (\lambda (t: T).(pr3 c x t)) 
37231 (ex2 T (\lambda (t: T).(pr3 c t4 t)) (\lambda (t: T).(pr3 c t5 t))) (\lambda 
37232 (x0: T).(\lambda (H6: (pr3 c t4 x0)).(\lambda (H7: (pr3 c x x0)).(ex_intro2 T 
37233 (\lambda (t: T).(pr3 c t4 t)) (\lambda (t: T).(pr3 c t5 t)) x0 H6 (pr3_sing c 
37234 x t5 H4 x0 H7))))) (H2 x H5))))) (pr2_confluence c t3 t5 H3 t2 H0)))))))))) 
37235 t0 t1 H)))).
37236
37237 theorem pr3_confluence:
37238  \forall (c: C).(\forall (t0: T).(\forall (t1: T).((pr3 c t0 t1) \to (\forall 
37239 (t2: T).((pr3 c t0 t2) \to (ex2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: 
37240 T).(pr3 c t2 t))))))))
37241 \def
37242  \lambda (c: C).(\lambda (t0: T).(\lambda (t1: T).(\lambda (H: (pr3 c t0 
37243 t1)).(pr3_ind c (\lambda (t: T).(\lambda (t2: T).(\forall (t3: T).((pr3 c t 
37244 t3) \to (ex2 T (\lambda (t4: T).(pr3 c t2 t4)) (\lambda (t4: T).(pr3 c t3 
37245 t4))))))) (\lambda (t: T).(\lambda (t2: T).(\lambda (H0: (pr3 c t 
37246 t2)).(ex_intro2 T (\lambda (t3: T).(pr3 c t t3)) (\lambda (t3: T).(pr3 c t2 
37247 t3)) t2 H0 (pr3_refl c t2))))) (\lambda (t2: T).(\lambda (t3: T).(\lambda 
37248 (H0: (pr2 c t3 t2)).(\lambda (t4: T).(\lambda (_: (pr3 c t2 t4)).(\lambda 
37249 (H2: ((\forall (t3: T).((pr3 c t2 t3) \to (ex2 T (\lambda (t: T).(pr3 c t4 
37250 t)) (\lambda (t: T).(pr3 c t3 t))))))).(\lambda (t5: T).(\lambda (H3: (pr3 c 
37251 t3 t5)).(ex2_ind T (\lambda (t: T).(pr3 c t5 t)) (\lambda (t: T).(pr3 c t2 
37252 t)) (ex2 T (\lambda (t: T).(pr3 c t4 t)) (\lambda (t: T).(pr3 c t5 t))) 
37253 (\lambda (x: T).(\lambda (H4: (pr3 c t5 x)).(\lambda (H5: (pr3 c t2 
37254 x)).(ex2_ind T (\lambda (t: T).(pr3 c t4 t)) (\lambda (t: T).(pr3 c x t)) 
37255 (ex2 T (\lambda (t: T).(pr3 c t4 t)) (\lambda (t: T).(pr3 c t5 t))) (\lambda 
37256 (x0: T).(\lambda (H6: (pr3 c t4 x0)).(\lambda (H7: (pr3 c x x0)).(ex_intro2 T 
37257 (\lambda (t: T).(pr3 c t4 t)) (\lambda (t: T).(pr3 c t5 t)) x0 H6 (pr3_t x t5 
37258 c H4 x0 H7))))) (H2 x H5))))) (pr3_strip c t3 t5 H3 t2 H0)))))))))) t0 t1 
37259 H)))).
37260
37261 theorem pr3_subst1:
37262  \forall (c: C).(\forall (e: C).(\forall (v: T).(\forall (i: nat).((getl i c 
37263 (CHead e (Bind Abbr) v)) \to (\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) 
37264 \to (\forall (w1: T).((subst1 i v t1 w1) \to (ex2 T (\lambda (w2: T).(pr3 c 
37265 w1 w2)) (\lambda (w2: T).(subst1 i v t2 w2))))))))))))
37266 \def
37267  \lambda (c: C).(\lambda (e: C).(\lambda (v: T).(\lambda (i: nat).(\lambda 
37268 (H: (getl i c (CHead e (Bind Abbr) v))).(\lambda (t1: T).(\lambda (t2: 
37269 T).(\lambda (H0: (pr3 c t1 t2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: 
37270 T).(\forall (w1: T).((subst1 i v t w1) \to (ex2 T (\lambda (w2: T).(pr3 c w1 
37271 w2)) (\lambda (w2: T).(subst1 i v t0 w2))))))) (\lambda (t: T).(\lambda (w1: 
37272 T).(\lambda (H1: (subst1 i v t w1)).(ex_intro2 T (\lambda (w2: T).(pr3 c w1 
37273 w2)) (\lambda (w2: T).(subst1 i v t w2)) w1 (pr3_refl c w1) H1)))) (\lambda 
37274 (t3: T).(\lambda (t4: T).(\lambda (H1: (pr2 c t4 t3)).(\lambda (t5: 
37275 T).(\lambda (_: (pr3 c t3 t5)).(\lambda (H3: ((\forall (w1: T).((subst1 i v 
37276 t3 w1) \to (ex2 T (\lambda (w2: T).(pr3 c w1 w2)) (\lambda (w2: T).(subst1 i 
37277 v t5 w2))))))).(\lambda (w1: T).(\lambda (H4: (subst1 i v t4 w1)).(ex2_ind T 
37278 (\lambda (w2: T).(pr2 c w1 w2)) (\lambda (w2: T).(subst1 i v t3 w2)) (ex2 T 
37279 (\lambda (w2: T).(pr3 c w1 w2)) (\lambda (w2: T).(subst1 i v t5 w2))) 
37280 (\lambda (x: T).(\lambda (H5: (pr2 c w1 x)).(\lambda (H6: (subst1 i v t3 
37281 x)).(ex2_ind T (\lambda (w2: T).(pr3 c x w2)) (\lambda (w2: T).(subst1 i v t5 
37282 w2)) (ex2 T (\lambda (w2: T).(pr3 c w1 w2)) (\lambda (w2: T).(subst1 i v t5 
37283 w2))) (\lambda (x0: T).(\lambda (H7: (pr3 c x x0)).(\lambda (H8: (subst1 i v 
37284 t5 x0)).(ex_intro2 T (\lambda (w2: T).(pr3 c w1 w2)) (\lambda (w2: T).(subst1 
37285 i v t5 w2)) x0 (pr3_sing c x w1 H5 x0 H7) H8)))) (H3 x H6))))) (pr2_subst1 c 
37286 e v i H t4 t3 H1 w1 H4)))))))))) t1 t2 H0)))))))).
37287
37288 theorem pr3_gen_cabbr:
37289  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to (\forall 
37290 (e: C).(\forall (u: T).(\forall (d: nat).((getl d c (CHead e (Bind Abbr) u)) 
37291 \to (\forall (a0: C).((csubst1 d u c a0) \to (\forall (a: C).((drop (S O) d 
37292 a0 a) \to (\forall (x1: T).((subst1 d u t1 (lift (S O) d x1)) \to (ex2 T 
37293 (\lambda (x2: T).(subst1 d u t2 (lift (S O) d x2))) (\lambda (x2: T).(pr3 a 
37294 x1 x2))))))))))))))))
37295 \def
37296  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t1 
37297 t2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (e: C).(\forall (u: 
37298 T).(\forall (d: nat).((getl d c (CHead e (Bind Abbr) u)) \to (\forall (a0: 
37299 C).((csubst1 d u c a0) \to (\forall (a: C).((drop (S O) d a0 a) \to (\forall 
37300 (x1: T).((subst1 d u t (lift (S O) d x1)) \to (ex2 T (\lambda (x2: T).(subst1 
37301 d u t0 (lift (S O) d x2))) (\lambda (x2: T).(pr3 a x1 x2))))))))))))))) 
37302 (\lambda (t: T).(\lambda (e: C).(\lambda (u: T).(\lambda (d: nat).(\lambda 
37303 (_: (getl d c (CHead e (Bind Abbr) u))).(\lambda (a0: C).(\lambda (_: 
37304 (csubst1 d u c a0)).(\lambda (a: C).(\lambda (_: (drop (S O) d a0 
37305 a)).(\lambda (x1: T).(\lambda (H3: (subst1 d u t (lift (S O) d 
37306 x1))).(ex_intro2 T (\lambda (x2: T).(subst1 d u t (lift (S O) d x2))) 
37307 (\lambda (x2: T).(pr3 a x1 x2)) x1 H3 (pr3_refl a x1))))))))))))) (\lambda 
37308 (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c t3 t0)).(\lambda (t4: 
37309 T).(\lambda (_: (pr3 c t0 t4)).(\lambda (H2: ((\forall (e: C).(\forall (u: 
37310 T).(\forall (d: nat).((getl d c (CHead e (Bind Abbr) u)) \to (\forall (a0: 
37311 C).((csubst1 d u c a0) \to (\forall (a: C).((drop (S O) d a0 a) \to (\forall 
37312 (x1: T).((subst1 d u t0 (lift (S O) d x1)) \to (ex2 T (\lambda (x2: 
37313 T).(subst1 d u t4 (lift (S O) d x2))) (\lambda (x2: T).(pr3 a x1 
37314 x2))))))))))))))).(\lambda (e: C).(\lambda (u: T).(\lambda (d: nat).(\lambda 
37315 (H3: (getl d c (CHead e (Bind Abbr) u))).(\lambda (a0: C).(\lambda (H4: 
37316 (csubst1 d u c a0)).(\lambda (a: C).(\lambda (H5: (drop (S O) d a0 
37317 a)).(\lambda (x1: T).(\lambda (H6: (subst1 d u t3 (lift (S O) d 
37318 x1))).(ex2_ind T (\lambda (x2: T).(subst1 d u t0 (lift (S O) d x2))) (\lambda 
37319 (x2: T).(pr2 a x1 x2)) (ex2 T (\lambda (x2: T).(subst1 d u t4 (lift (S O) d 
37320 x2))) (\lambda (x2: T).(pr3 a x1 x2))) (\lambda (x: T).(\lambda (H7: (subst1 
37321 d u t0 (lift (S O) d x))).(\lambda (H8: (pr2 a x1 x)).(ex2_ind T (\lambda 
37322 (x2: T).(subst1 d u t4 (lift (S O) d x2))) (\lambda (x2: T).(pr3 a x x2)) 
37323 (ex2 T (\lambda (x2: T).(subst1 d u t4 (lift (S O) d x2))) (\lambda (x2: 
37324 T).(pr3 a x1 x2))) (\lambda (x0: T).(\lambda (H9: (subst1 d u t4 (lift (S O) 
37325 d x0))).(\lambda (H10: (pr3 a x x0)).(ex_intro2 T (\lambda (x2: T).(subst1 d 
37326 u t4 (lift (S O) d x2))) (\lambda (x2: T).(pr3 a x1 x2)) x0 H9 (pr3_sing a x 
37327 x1 H8 x0 H10))))) (H2 e u d H3 a0 H4 a H5 x H7))))) (pr2_gen_cabbr c t3 t0 H0 
37328 e u d H3 a0 H4 a H5 x1 H6)))))))))))))))))) t1 t2 H)))).
37329
37330 theorem pr3_iso_appls_cast:
37331  \forall (c: C).(\forall (v: T).(\forall (t: T).(\forall (vs: TList).(let u1 
37332 \def (THeads (Flat Appl) vs (THead (Flat Cast) v t)) in (\forall (u2: 
37333 T).((pr3 c u1 u2) \to ((((iso u1 u2) \to (\forall (P: Prop).P))) \to (pr3 c 
37334 (THeads (Flat Appl) vs t) u2))))))))
37335 \def
37336  \lambda (c: C).(\lambda (v: T).(\lambda (t: T).(\lambda (vs: 
37337 TList).(TList_ind (\lambda (t0: TList).(let u1 \def (THeads (Flat Appl) t0 
37338 (THead (Flat Cast) v t)) in (\forall (u2: T).((pr3 c u1 u2) \to ((((iso u1 
37339 u2) \to (\forall (P: Prop).P))) \to (pr3 c (THeads (Flat Appl) t0 t) u2)))))) 
37340 (\lambda (u2: T).(\lambda (H: (pr3 c (THead (Flat Cast) v t) u2)).(\lambda 
37341 (H0: (((iso (THead (Flat Cast) v t) u2) \to (\forall (P: Prop).P)))).(let H1 
37342 \def (pr3_gen_cast c v t u2 H) in (or_ind (ex3_2 T T (\lambda (u3: 
37343 T).(\lambda (t2: T).(eq T u2 (THead (Flat Cast) u3 t2)))) (\lambda (u3: 
37344 T).(\lambda (_: T).(pr3 c v u3))) (\lambda (_: T).(\lambda (t2: T).(pr3 c t 
37345 t2)))) (pr3 c t u2) (pr3 c t u2) (\lambda (H2: (ex3_2 T T (\lambda (u3: 
37346 T).(\lambda (t2: T).(eq T u2 (THead (Flat Cast) u3 t2)))) (\lambda (u2: 
37347 T).(\lambda (_: T).(pr3 c v u2))) (\lambda (_: T).(\lambda (t2: T).(pr3 c t 
37348 t2))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t2: T).(eq T u2 (THead 
37349 (Flat Cast) u3 t2)))) (\lambda (u3: T).(\lambda (_: T).(pr3 c v u3))) 
37350 (\lambda (_: T).(\lambda (t2: T).(pr3 c t t2))) (pr3 c t u2) (\lambda (x0: 
37351 T).(\lambda (x1: T).(\lambda (H3: (eq T u2 (THead (Flat Cast) x0 
37352 x1))).(\lambda (_: (pr3 c v x0)).(\lambda (_: (pr3 c t x1)).(let H6 \def 
37353 (eq_ind T u2 (\lambda (t0: T).((iso (THead (Flat Cast) v t) t0) \to (\forall 
37354 (P: Prop).P))) H0 (THead (Flat Cast) x0 x1) H3) in (eq_ind_r T (THead (Flat 
37355 Cast) x0 x1) (\lambda (t0: T).(pr3 c t t0)) (H6 (iso_head (Flat Cast) v x0 t 
37356 x1) (pr3 c t (THead (Flat Cast) x0 x1))) u2 H3))))))) H2)) (\lambda (H2: (pr3 
37357 c t u2)).H2) H1))))) (\lambda (t0: T).(\lambda (t1: TList).(\lambda (H: 
37358 ((\forall (u2: T).((pr3 c (THeads (Flat Appl) t1 (THead (Flat Cast) v t)) u2) 
37359 \to ((((iso (THeads (Flat Appl) t1 (THead (Flat Cast) v t)) u2) \to (\forall 
37360 (P: Prop).P))) \to (pr3 c (THeads (Flat Appl) t1 t) u2)))))).(\lambda (u2: 
37361 T).(\lambda (H0: (pr3 c (THead (Flat Appl) t0 (THeads (Flat Appl) t1 (THead 
37362 (Flat Cast) v t))) u2)).(\lambda (H1: (((iso (THead (Flat Appl) t0 (THeads 
37363 (Flat Appl) t1 (THead (Flat Cast) v t))) u2) \to (\forall (P: 
37364 Prop).P)))).(let H2 \def (pr3_gen_appl c t0 (THeads (Flat Appl) t1 (THead 
37365 (Flat Cast) v t)) u2 H0) in (or3_ind (ex3_2 T T (\lambda (u3: T).(\lambda 
37366 (t2: T).(eq T u2 (THead (Flat Appl) u3 t2)))) (\lambda (u3: T).(\lambda (_: 
37367 T).(pr3 c t0 u3))) (\lambda (_: T).(\lambda (t2: T).(pr3 c (THeads (Flat 
37368 Appl) t1 (THead (Flat Cast) v t)) t2)))) (ex4_4 T T T T (\lambda (_: 
37369 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (t2: T).(pr3 c (THead (Bind 
37370 Abbr) u3 t2) u2))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u3: 
37371 T).(\lambda (_: T).(pr3 c t0 u3))))) (\lambda (y1: T).(\lambda (z1: 
37372 T).(\lambda (_: T).(\lambda (_: T).(pr3 c (THeads (Flat Appl) t1 (THead (Flat 
37373 Cast) v t)) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: 
37374 T).(\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 
37375 (CHead c (Bind b) u) z1 t2)))))))) (ex6_6 B T T T T T (\lambda (b: 
37376 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
37377 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
37378 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c (THeads (Flat 
37379 Appl) t1 (THead (Flat Cast) v t)) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
37380 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u3: T).(\lambda 
37381 (y2: T).(pr3 c (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u3) z2)) 
37382 u2))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
37383 T).(\lambda (u3: T).(\lambda (_: T).(pr3 c t0 u3))))))) (\lambda (_: 
37384 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
37385 (y2: T).(pr3 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
37386 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) 
37387 y2) z1 z2)))))))) (pr3 c (THead (Flat Appl) t0 (THeads (Flat Appl) t1 t)) u2) 
37388 (\lambda (H3: (ex3_2 T T (\lambda (u3: T).(\lambda (t2: T).(eq T u2 (THead 
37389 (Flat Appl) u3 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c t0 u2))) 
37390 (\lambda (_: T).(\lambda (t2: T).(pr3 c (THeads (Flat Appl) t1 (THead (Flat 
37391 Cast) v t)) t2))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t2: T).(eq T u2 
37392 (THead (Flat Appl) u3 t2)))) (\lambda (u3: T).(\lambda (_: T).(pr3 c t0 u3))) 
37393 (\lambda (_: T).(\lambda (t2: T).(pr3 c (THeads (Flat Appl) t1 (THead (Flat 
37394 Cast) v t)) t2))) (pr3 c (THead (Flat Appl) t0 (THeads (Flat Appl) t1 t)) u2) 
37395 (\lambda (x0: T).(\lambda (x1: T).(\lambda (H4: (eq T u2 (THead (Flat Appl) 
37396 x0 x1))).(\lambda (_: (pr3 c t0 x0)).(\lambda (_: (pr3 c (THeads (Flat Appl) 
37397 t1 (THead (Flat Cast) v t)) x1)).(let H7 \def (eq_ind T u2 (\lambda (t2: 
37398 T).((iso (THead (Flat Appl) t0 (THeads (Flat Appl) t1 (THead (Flat Cast) v 
37399 t))) t2) \to (\forall (P: Prop).P))) H1 (THead (Flat Appl) x0 x1) H4) in 
37400 (eq_ind_r T (THead (Flat Appl) x0 x1) (\lambda (t2: T).(pr3 c (THead (Flat 
37401 Appl) t0 (THeads (Flat Appl) t1 t)) t2)) (H7 (iso_head (Flat Appl) t0 x0 
37402 (THeads (Flat Appl) t1 (THead (Flat Cast) v t)) x1) (pr3 c (THead (Flat Appl) 
37403 t0 (THeads (Flat Appl) t1 t)) (THead (Flat Appl) x0 x1))) u2 H4))))))) H3)) 
37404 (\lambda (H3: (ex4_4 T T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u3: 
37405 T).(\lambda (t2: T).(pr3 c (THead (Bind Abbr) u3 t2) u2))))) (\lambda (_: 
37406 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c t0 u2))))) 
37407 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(pr3 c 
37408 (THeads (Flat Appl) t1 (THead (Flat Cast) v t)) (THead (Bind Abst) y1 
37409 z1)))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: 
37410 T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 
37411 t2))))))))).(ex4_4_ind T T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u3: 
37412 T).(\lambda (t2: T).(pr3 c (THead (Bind Abbr) u3 t2) u2))))) (\lambda (_: 
37413 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(pr3 c t0 u3))))) 
37414 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(pr3 c 
37415 (THeads (Flat Appl) t1 (THead (Flat Cast) v t)) (THead (Bind Abst) y1 
37416 z1)))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: 
37417 T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) z1 t2))))))) 
37418 (pr3 c (THead (Flat Appl) t0 (THeads (Flat Appl) t1 t)) u2) (\lambda (x0: 
37419 T).(\lambda (x1: T).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H4: (pr3 c 
37420 (THead (Bind Abbr) x2 x3) u2)).(\lambda (H5: (pr3 c t0 x2)).(\lambda (H6: 
37421 (pr3 c (THeads (Flat Appl) t1 (THead (Flat Cast) v t)) (THead (Bind Abst) x0 
37422 x1))).(\lambda (H7: ((\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) 
37423 u) x1 x3))))).(pr3_t (THead (Bind Abbr) t0 x1) (THead (Flat Appl) t0 (THeads 
37424 (Flat Appl) t1 t)) c (pr3_t (THead (Flat Appl) t0 (THead (Bind Abst) x0 x1)) 
37425 (THead (Flat Appl) t0 (THeads (Flat Appl) t1 t)) c (pr3_thin_dx c (THeads 
37426 (Flat Appl) t1 t) (THead (Bind Abst) x0 x1) (H (THead (Bind Abst) x0 x1) H6 
37427 (\lambda (H8: (iso (THeads (Flat Appl) t1 (THead (Flat Cast) v t)) (THead 
37428 (Bind Abst) x0 x1))).(\lambda (P: Prop).(iso_flats_flat_bind_false Appl Cast 
37429 Abst x0 v x1 t t1 H8 P)))) t0 Appl) (THead (Bind Abbr) t0 x1) (pr3_pr2 c 
37430 (THead (Flat Appl) t0 (THead (Bind Abst) x0 x1)) (THead (Bind Abbr) t0 x1) 
37431 (pr2_free c (THead (Flat Appl) t0 (THead (Bind Abst) x0 x1)) (THead (Bind 
37432 Abbr) t0 x1) (pr0_beta x0 t0 t0 (pr0_refl t0) x1 x1 (pr0_refl x1))))) u2 
37433 (pr3_t (THead (Bind Abbr) x2 x3) (THead (Bind Abbr) t0 x1) c (pr3_head_12 c 
37434 t0 x2 H5 (Bind Abbr) x1 x3 (H7 Abbr x2)) u2 H4)))))))))) H3)) (\lambda (H3: 
37435 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
37436 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
37437 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
37438 (_: T).(pr3 c (THeads (Flat Appl) t1 (THead (Flat Cast) v t)) (THead (Bind b) 
37439 y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: 
37440 T).(\lambda (u3: T).(\lambda (y2: T).(pr3 c (THead (Bind b) y2 (THead (Flat 
37441 Appl) (lift (S O) O u3) z2)) u2))))))) (\lambda (_: B).(\lambda (_: 
37442 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c t0 
37443 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
37444 T).(\lambda (_: T).(\lambda (y2: T).(pr3 c y1 y2))))))) (\lambda (b: 
37445 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
37446 (y2: T).(pr3 (CHead c (Bind b) y2) z1 z2))))))))).(ex6_6_ind B T T T T T 
37447 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
37448 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
37449 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c 
37450 (THeads (Flat Appl) t1 (THead (Flat Cast) v t)) (THead (Bind b) y1 z1)))))))) 
37451 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda 
37452 (u3: T).(\lambda (y2: T).(pr3 c (THead (Bind b) y2 (THead (Flat Appl) (lift 
37453 (S O) O u3) z2)) u2))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
37454 T).(\lambda (_: T).(\lambda (u3: T).(\lambda (_: T).(pr3 c t0 u3))))))) 
37455 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
37456 T).(\lambda (y2: T).(pr3 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
37457 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr3 
37458 (CHead c (Bind b) y2) z1 z2))))))) (pr3 c (THead (Flat Appl) t0 (THeads (Flat 
37459 Appl) t1 t)) u2) (\lambda (x0: B).(\lambda (x1: T).(\lambda (x2: T).(\lambda 
37460 (x3: T).(\lambda (x4: T).(\lambda (x5: T).(\lambda (H4: (not (eq B x0 
37461 Abst))).(\lambda (H5: (pr3 c (THeads (Flat Appl) t1 (THead (Flat Cast) v t)) 
37462 (THead (Bind x0) x1 x2))).(\lambda (H6: (pr3 c (THead (Bind x0) x5 (THead 
37463 (Flat Appl) (lift (S O) O x4) x3)) u2)).(\lambda (H7: (pr3 c t0 x4)).(\lambda 
37464 (H8: (pr3 c x1 x5)).(\lambda (H9: (pr3 (CHead c (Bind x0) x5) x2 x3)).(pr3_t 
37465 (THead (Bind x0) x1 (THead (Flat Appl) (lift (S O) O x4) x2)) (THead (Flat 
37466 Appl) t0 (THeads (Flat Appl) t1 t)) c (pr3_t (THead (Bind x0) x1 (THead (Flat 
37467 Appl) (lift (S O) O t0) x2)) (THead (Flat Appl) t0 (THeads (Flat Appl) t1 t)) 
37468 c (pr3_t (THead (Flat Appl) t0 (THead (Bind x0) x1 x2)) (THead (Flat Appl) t0 
37469 (THeads (Flat Appl) t1 t)) c (pr3_thin_dx c (THeads (Flat Appl) t1 t) (THead 
37470 (Bind x0) x1 x2) (H (THead (Bind x0) x1 x2) H5 (\lambda (H10: (iso (THeads 
37471 (Flat Appl) t1 (THead (Flat Cast) v t)) (THead (Bind x0) x1 x2))).(\lambda 
37472 (P: Prop).(iso_flats_flat_bind_false Appl Cast x0 x1 v x2 t t1 H10 P)))) t0 
37473 Appl) (THead (Bind x0) x1 (THead (Flat Appl) (lift (S O) O t0) x2)) (pr3_pr2 
37474 c (THead (Flat Appl) t0 (THead (Bind x0) x1 x2)) (THead (Bind x0) x1 (THead 
37475 (Flat Appl) (lift (S O) O t0) x2)) (pr2_free c (THead (Flat Appl) t0 (THead 
37476 (Bind x0) x1 x2)) (THead (Bind x0) x1 (THead (Flat Appl) (lift (S O) O t0) 
37477 x2)) (pr0_upsilon x0 H4 t0 t0 (pr0_refl t0) x1 x1 (pr0_refl x1) x2 x2 
37478 (pr0_refl x2))))) (THead (Bind x0) x1 (THead (Flat Appl) (lift (S O) O x4) 
37479 x2)) (pr3_head_12 c x1 x1 (pr3_refl c x1) (Bind x0) (THead (Flat Appl) (lift 
37480 (S O) O t0) x2) (THead (Flat Appl) (lift (S O) O x4) x2) (pr3_head_12 (CHead 
37481 c (Bind x0) x1) (lift (S O) O t0) (lift (S O) O x4) (pr3_lift (CHead c (Bind 
37482 x0) x1) c (S O) O (drop_drop (Bind x0) O c c (drop_refl c) x1) t0 x4 H7) 
37483 (Flat Appl) x2 x2 (pr3_refl (CHead (CHead c (Bind x0) x1) (Flat Appl) (lift 
37484 (S O) O x4)) x2)))) u2 (pr3_t (THead (Bind x0) x5 (THead (Flat Appl) (lift (S 
37485 O) O x4) x3)) (THead (Bind x0) x1 (THead (Flat Appl) (lift (S O) O x4) x2)) c 
37486 (pr3_head_12 c x1 x5 H8 (Bind x0) (THead (Flat Appl) (lift (S O) O x4) x2) 
37487 (THead (Flat Appl) (lift (S O) O x4) x3) (pr3_thin_dx (CHead c (Bind x0) x5) 
37488 x2 x3 H9 (lift (S O) O x4) Appl)) u2 H6)))))))))))))) H3)) H2)))))))) vs)))).
37489
37490 inductive csuba (g:G): C \to (C \to Prop) \def
37491 | csuba_sort: \forall (n: nat).(csuba g (CSort n) (CSort n))
37492 | csuba_head: \forall (c1: C).(\forall (c2: C).((csuba g c1 c2) \to (\forall 
37493 (k: K).(\forall (u: T).(csuba g (CHead c1 k u) (CHead c2 k u))))))
37494 | csuba_abst: \forall (c1: C).(\forall (c2: C).((csuba g c1 c2) \to (\forall 
37495 (t: T).(\forall (a: A).((arity g c1 t (asucc g a)) \to (\forall (u: 
37496 T).((arity g c2 u a) \to (csuba g (CHead c1 (Bind Abst) t) (CHead c2 (Bind 
37497 Abbr) u))))))))).
37498
37499 theorem csuba_gen_abbr:
37500  \forall (g: G).(\forall (d1: C).(\forall (c: C).(\forall (u: T).((csuba g 
37501 (CHead d1 (Bind Abbr) u) c) \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 
37502 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)))))))
37503 \def
37504  \lambda (g: G).(\lambda (d1: C).(\lambda (c: C).(\lambda (u: T).(\lambda (H: 
37505 (csuba g (CHead d1 (Bind Abbr) u) c)).(let H0 \def (match H return (\lambda 
37506 (c0: C).(\lambda (c1: C).(\lambda (_: (csuba ? c0 c1)).((eq C c0 (CHead d1 
37507 (Bind Abbr) u)) \to ((eq C c1 c) \to (ex2 C (\lambda (d2: C).(eq C c (CHead 
37508 d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)))))))) with [(csuba_sort 
37509 n) \Rightarrow (\lambda (H0: (eq C (CSort n) (CHead d1 (Bind Abbr) 
37510 u))).(\lambda (H1: (eq C (CSort n) c)).((let H2 \def (eq_ind C (CSort n) 
37511 (\lambda (e: C).(match e return (\lambda (_: C).Prop) with [(CSort _) 
37512 \Rightarrow True | (CHead _ _ _) \Rightarrow False])) I (CHead d1 (Bind Abbr) 
37513 u) H0) in (False_ind ((eq C (CSort n) c) \to (ex2 C (\lambda (d2: C).(eq C c 
37514 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)))) H2)) H1))) | 
37515 (csuba_head c1 c2 H0 k u0) \Rightarrow (\lambda (H1: (eq C (CHead c1 k u0) 
37516 (CHead d1 (Bind Abbr) u))).(\lambda (H2: (eq C (CHead c2 k u0) c)).((let H3 
37517 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
37518 [(CSort _) \Rightarrow u0 | (CHead _ _ t) \Rightarrow t])) (CHead c1 k u0) 
37519 (CHead d1 (Bind Abbr) u) H1) in ((let H4 \def (f_equal C K (\lambda (e: 
37520 C).(match e return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | (CHead 
37521 _ k _) \Rightarrow k])) (CHead c1 k u0) (CHead d1 (Bind Abbr) u) H1) in ((let 
37522 H5 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with 
37523 [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k u0) 
37524 (CHead d1 (Bind Abbr) u) H1) in (eq_ind C d1 (\lambda (c0: C).((eq K k (Bind 
37525 Abbr)) \to ((eq T u0 u) \to ((eq C (CHead c2 k u0) c) \to ((csuba g c0 c2) 
37526 \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Abbr) u))) (\lambda (d2: 
37527 C).(csuba g d1 d2)))))))) (\lambda (H6: (eq K k (Bind Abbr))).(eq_ind K (Bind 
37528 Abbr) (\lambda (k0: K).((eq T u0 u) \to ((eq C (CHead c2 k0 u0) c) \to 
37529 ((csuba g d1 c2) \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Abbr) 
37530 u))) (\lambda (d2: C).(csuba g d1 d2))))))) (\lambda (H7: (eq T u0 
37531 u)).(eq_ind T u (\lambda (t: T).((eq C (CHead c2 (Bind Abbr) t) c) \to 
37532 ((csuba g d1 c2) \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Abbr) 
37533 u))) (\lambda (d2: C).(csuba g d1 d2)))))) (\lambda (H8: (eq C (CHead c2 
37534 (Bind Abbr) u) c)).(eq_ind C (CHead c2 (Bind Abbr) u) (\lambda (c: C).((csuba 
37535 g d1 c2) \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Abbr) u))) 
37536 (\lambda (d2: C).(csuba g d1 d2))))) (\lambda (H9: (csuba g d1 
37537 c2)).(ex_intro2 C (\lambda (d2: C).(eq C (CHead c2 (Bind Abbr) u) (CHead d2 
37538 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) c2 (refl_equal C (CHead c2 
37539 (Bind Abbr) u)) H9)) c H8)) u0 (sym_eq T u0 u H7))) k (sym_eq K k (Bind Abbr) 
37540 H6))) c1 (sym_eq C c1 d1 H5))) H4)) H3)) H2 H0))) | (csuba_abst c1 c2 H0 t a 
37541 H1 u0 H2) \Rightarrow (\lambda (H3: (eq C (CHead c1 (Bind Abst) t) (CHead d1 
37542 (Bind Abbr) u))).(\lambda (H4: (eq C (CHead c2 (Bind Abbr) u0) c)).((let H5 
37543 \def (eq_ind C (CHead c1 (Bind Abst) t) (\lambda (e: C).(match e return 
37544 (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) 
37545 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow 
37546 (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst 
37547 \Rightarrow True | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) 
37548 I (CHead d1 (Bind Abbr) u) H3) in (False_ind ((eq C (CHead c2 (Bind Abbr) u0) 
37549 c) \to ((csuba g c1 c2) \to ((arity g c1 t (asucc g a)) \to ((arity g c2 u0 
37550 a) \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Abbr) u))) (\lambda 
37551 (d2: C).(csuba g d1 d2))))))) H5)) H4 H0 H1 H2)))]) in (H0 (refl_equal C 
37552 (CHead d1 (Bind Abbr) u)) (refl_equal C c))))))).
37553
37554 theorem csuba_gen_void:
37555  \forall (g: G).(\forall (d1: C).(\forall (c: C).(\forall (u: T).((csuba g 
37556 (CHead d1 (Bind Void) u) c) \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 
37557 (Bind Void) u))) (\lambda (d2: C).(csuba g d1 d2)))))))
37558 \def
37559  \lambda (g: G).(\lambda (d1: C).(\lambda (c: C).(\lambda (u: T).(\lambda (H: 
37560 (csuba g (CHead d1 (Bind Void) u) c)).(let H0 \def (match H return (\lambda 
37561 (c0: C).(\lambda (c1: C).(\lambda (_: (csuba ? c0 c1)).((eq C c0 (CHead d1 
37562 (Bind Void) u)) \to ((eq C c1 c) \to (ex2 C (\lambda (d2: C).(eq C c (CHead 
37563 d2 (Bind Void) u))) (\lambda (d2: C).(csuba g d1 d2)))))))) with [(csuba_sort 
37564 n) \Rightarrow (\lambda (H0: (eq C (CSort n) (CHead d1 (Bind Void) 
37565 u))).(\lambda (H1: (eq C (CSort n) c)).((let H2 \def (eq_ind C (CSort n) 
37566 (\lambda (e: C).(match e return (\lambda (_: C).Prop) with [(CSort _) 
37567 \Rightarrow True | (CHead _ _ _) \Rightarrow False])) I (CHead d1 (Bind Void) 
37568 u) H0) in (False_ind ((eq C (CSort n) c) \to (ex2 C (\lambda (d2: C).(eq C c 
37569 (CHead d2 (Bind Void) u))) (\lambda (d2: C).(csuba g d1 d2)))) H2)) H1))) | 
37570 (csuba_head c1 c2 H0 k u0) \Rightarrow (\lambda (H1: (eq C (CHead c1 k u0) 
37571 (CHead d1 (Bind Void) u))).(\lambda (H2: (eq C (CHead c2 k u0) c)).((let H3 
37572 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
37573 [(CSort _) \Rightarrow u0 | (CHead _ _ t) \Rightarrow t])) (CHead c1 k u0) 
37574 (CHead d1 (Bind Void) u) H1) in ((let H4 \def (f_equal C K (\lambda (e: 
37575 C).(match e return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | (CHead 
37576 _ k _) \Rightarrow k])) (CHead c1 k u0) (CHead d1 (Bind Void) u) H1) in ((let 
37577 H5 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with 
37578 [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k u0) 
37579 (CHead d1 (Bind Void) u) H1) in (eq_ind C d1 (\lambda (c0: C).((eq K k (Bind 
37580 Void)) \to ((eq T u0 u) \to ((eq C (CHead c2 k u0) c) \to ((csuba g c0 c2) 
37581 \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Void) u))) (\lambda (d2: 
37582 C).(csuba g d1 d2)))))))) (\lambda (H6: (eq K k (Bind Void))).(eq_ind K (Bind 
37583 Void) (\lambda (k0: K).((eq T u0 u) \to ((eq C (CHead c2 k0 u0) c) \to 
37584 ((csuba g d1 c2) \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Void) 
37585 u))) (\lambda (d2: C).(csuba g d1 d2))))))) (\lambda (H7: (eq T u0 
37586 u)).(eq_ind T u (\lambda (t: T).((eq C (CHead c2 (Bind Void) t) c) \to 
37587 ((csuba g d1 c2) \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Void) 
37588 u))) (\lambda (d2: C).(csuba g d1 d2)))))) (\lambda (H8: (eq C (CHead c2 
37589 (Bind Void) u) c)).(eq_ind C (CHead c2 (Bind Void) u) (\lambda (c: C).((csuba 
37590 g d1 c2) \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Void) u))) 
37591 (\lambda (d2: C).(csuba g d1 d2))))) (\lambda (H9: (csuba g d1 
37592 c2)).(ex_intro2 C (\lambda (d2: C).(eq C (CHead c2 (Bind Void) u) (CHead d2 
37593 (Bind Void) u))) (\lambda (d2: C).(csuba g d1 d2)) c2 (refl_equal C (CHead c2 
37594 (Bind Void) u)) H9)) c H8)) u0 (sym_eq T u0 u H7))) k (sym_eq K k (Bind Void) 
37595 H6))) c1 (sym_eq C c1 d1 H5))) H4)) H3)) H2 H0))) | (csuba_abst c1 c2 H0 t a 
37596 H1 u0 H2) \Rightarrow (\lambda (H3: (eq C (CHead c1 (Bind Abst) t) (CHead d1 
37597 (Bind Void) u))).(\lambda (H4: (eq C (CHead c2 (Bind Abbr) u0) c)).((let H5 
37598 \def (eq_ind C (CHead c1 (Bind Abst) t) (\lambda (e: C).(match e return 
37599 (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) 
37600 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow 
37601 (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst 
37602 \Rightarrow True | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) 
37603 I (CHead d1 (Bind Void) u) H3) in (False_ind ((eq C (CHead c2 (Bind Abbr) u0) 
37604 c) \to ((csuba g c1 c2) \to ((arity g c1 t (asucc g a)) \to ((arity g c2 u0 
37605 a) \to (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Void) u))) (\lambda 
37606 (d2: C).(csuba g d1 d2))))))) H5)) H4 H0 H1 H2)))]) in (H0 (refl_equal C 
37607 (CHead d1 (Bind Void) u)) (refl_equal C c))))))).
37608
37609 theorem csuba_gen_abst:
37610  \forall (g: G).(\forall (d1: C).(\forall (c: C).(\forall (u1: T).((csuba g 
37611 (CHead d1 (Bind Abst) u1) c) \to (or (ex2 C (\lambda (d2: C).(eq C c (CHead 
37612 d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda 
37613 (d2: C).(\lambda (u2: T).(\lambda (_: A).(eq C c (CHead d2 (Bind Abbr) 
37614 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
37615 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
37616 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
37617 a))))))))))
37618 \def
37619  \lambda (g: G).(\lambda (d1: C).(\lambda (c: C).(\lambda (u1: T).(\lambda 
37620 (H: (csuba g (CHead d1 (Bind Abst) u1) c)).(let H0 \def (match H return 
37621 (\lambda (c0: C).(\lambda (c1: C).(\lambda (_: (csuba ? c0 c1)).((eq C c0 
37622 (CHead d1 (Bind Abst) u1)) \to ((eq C c1 c) \to (or (ex2 C (\lambda (d2: 
37623 C).(eq C c (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) 
37624 (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(eq C c (CHead 
37625 d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
37626 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
37627 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
37628 A).(arity g d2 u2 a))))))))))) with [(csuba_sort n) \Rightarrow (\lambda (H0: 
37629 (eq C (CSort n) (CHead d1 (Bind Abst) u1))).(\lambda (H1: (eq C (CSort n) 
37630 c)).((let H2 \def (eq_ind C (CSort n) (\lambda (e: C).(match e return 
37631 (\lambda (_: C).Prop) with [(CSort _) \Rightarrow True | (CHead _ _ _) 
37632 \Rightarrow False])) I (CHead d1 (Bind Abst) u1) H0) in (False_ind ((eq C 
37633 (CSort n) c) \to (or (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Abst) 
37634 u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
37635 C).(\lambda (u2: T).(\lambda (_: A).(eq C c (CHead d2 (Bind Abbr) u2))))) 
37636 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda 
37637 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) 
37638 (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))))) 
37639 H2)) H1))) | (csuba_head c1 c2 H0 k u) \Rightarrow (\lambda (H1: (eq C (CHead 
37640 c1 k u) (CHead d1 (Bind Abst) u1))).(\lambda (H2: (eq C (CHead c2 k u) 
37641 c)).((let H3 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: 
37642 C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead 
37643 c1 k u) (CHead d1 (Bind Abst) u1) H1) in ((let H4 \def (f_equal C K (\lambda 
37644 (e: C).(match e return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | 
37645 (CHead _ k _) \Rightarrow k])) (CHead c1 k u) (CHead d1 (Bind Abst) u1) H1) 
37646 in ((let H5 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: 
37647 C).C) with [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead 
37648 c1 k u) (CHead d1 (Bind Abst) u1) H1) in (eq_ind C d1 (\lambda (c0: C).((eq K 
37649 k (Bind Abst)) \to ((eq T u u1) \to ((eq C (CHead c2 k u) c) \to ((csuba g c0 
37650 c2) \to (or (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Abst) u1))) 
37651 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
37652 (u2: T).(\lambda (_: A).(eq C c (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
37653 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
37654 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
37655 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))))))))) (\lambda 
37656 (H6: (eq K k (Bind Abst))).(eq_ind K (Bind Abst) (\lambda (k0: K).((eq T u 
37657 u1) \to ((eq C (CHead c2 k0 u) c) \to ((csuba g d1 c2) \to (or (ex2 C 
37658 (\lambda (d2: C).(eq C c (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba 
37659 g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(eq 
37660 C c (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda 
37661 (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: 
37662 A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda 
37663 (a: A).(arity g d2 u2 a)))))))))) (\lambda (H7: (eq T u u1)).(eq_ind T u1 
37664 (\lambda (t: T).((eq C (CHead c2 (Bind Abst) t) c) \to ((csuba g d1 c2) \to 
37665 (or (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
37666 C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda 
37667 (_: A).(eq C c (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
37668 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
37669 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
37670 (u2: T).(\lambda (a: A).(arity g d2 u2 a))))))))) (\lambda (H8: (eq C (CHead 
37671 c2 (Bind Abst) u1) c)).(eq_ind C (CHead c2 (Bind Abst) u1) (\lambda (c: 
37672 C).((csuba g d1 c2) \to (or (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind 
37673 Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
37674 C).(\lambda (u2: T).(\lambda (_: A).(eq C c (CHead d2 (Bind Abbr) u2))))) 
37675 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda 
37676 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) 
37677 (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))))) 
37678 (\lambda (H9: (csuba g d1 c2)).(or_introl (ex2 C (\lambda (d2: C).(eq C 
37679 (CHead c2 (Bind Abst) u1) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba 
37680 g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(eq 
37681 C (CHead c2 (Bind Abst) u1) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
37682 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
37683 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
37684 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (ex_intro2 C 
37685 (\lambda (d2: C).(eq C (CHead c2 (Bind Abst) u1) (CHead d2 (Bind Abst) u1))) 
37686 (\lambda (d2: C).(csuba g d1 d2)) c2 (refl_equal C (CHead c2 (Bind Abst) u1)) 
37687 H9))) c H8)) u (sym_eq T u u1 H7))) k (sym_eq K k (Bind Abst) H6))) c1 
37688 (sym_eq C c1 d1 H5))) H4)) H3)) H2 H0))) | (csuba_abst c1 c2 H0 t a H1 u H2) 
37689 \Rightarrow (\lambda (H3: (eq C (CHead c1 (Bind Abst) t) (CHead d1 (Bind 
37690 Abst) u1))).(\lambda (H4: (eq C (CHead c2 (Bind Abbr) u) c)).((let H5 \def 
37691 (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort 
37692 _) \Rightarrow t | (CHead _ _ t) \Rightarrow t])) (CHead c1 (Bind Abst) t) 
37693 (CHead d1 (Bind Abst) u1) H3) in ((let H6 \def (f_equal C C (\lambda (e: 
37694 C).(match e return (\lambda (_: C).C) with [(CSort _) \Rightarrow c1 | (CHead 
37695 c _ _) \Rightarrow c])) (CHead c1 (Bind Abst) t) (CHead d1 (Bind Abst) u1) 
37696 H3) in (eq_ind C d1 (\lambda (c0: C).((eq T t u1) \to ((eq C (CHead c2 (Bind 
37697 Abbr) u) c) \to ((csuba g c0 c2) \to ((arity g c0 t (asucc g a)) \to ((arity 
37698 g c2 u a) \to (or (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind Abst) u1))) 
37699 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
37700 (u2: T).(\lambda (_: A).(eq C c (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
37701 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
37702 C).(\lambda (_: T).(\lambda (a0: A).(arity g d1 u1 (asucc g a0))))) (\lambda 
37703 (d2: C).(\lambda (u2: T).(\lambda (a0: A).(arity g d2 u2 a0)))))))))))) 
37704 (\lambda (H7: (eq T t u1)).(eq_ind T u1 (\lambda (t0: T).((eq C (CHead c2 
37705 (Bind Abbr) u) c) \to ((csuba g d1 c2) \to ((arity g d1 t0 (asucc g a)) \to 
37706 ((arity g c2 u a) \to (or (ex2 C (\lambda (d2: C).(eq C c (CHead d2 (Bind 
37707 Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
37708 C).(\lambda (u2: T).(\lambda (_: A).(eq C c (CHead d2 (Bind Abbr) u2))))) 
37709 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda 
37710 (_: C).(\lambda (_: T).(\lambda (a0: A).(arity g d1 u1 (asucc g a0))))) 
37711 (\lambda (d2: C).(\lambda (u2: T).(\lambda (a0: A).(arity g d2 u2 
37712 a0))))))))))) (\lambda (H8: (eq C (CHead c2 (Bind Abbr) u) c)).(eq_ind C 
37713 (CHead c2 (Bind Abbr) u) (\lambda (c: C).((csuba g d1 c2) \to ((arity g d1 u1 
37714 (asucc g a)) \to ((arity g c2 u a) \to (or (ex2 C (\lambda (d2: C).(eq C c 
37715 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A 
37716 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(eq C c (CHead d2 (Bind 
37717 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 
37718 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a0: A).(arity g d1 u1 (asucc 
37719 g a0))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a0: A).(arity g d2 u2 
37720 a0)))))))))) (\lambda (H9: (csuba g d1 c2)).(\lambda (H10: (arity g d1 u1 
37721 (asucc g a))).(\lambda (H11: (arity g c2 u a)).(or_intror (ex2 C (\lambda 
37722 (d2: C).(eq C (CHead c2 (Bind Abbr) u) (CHead d2 (Bind Abst) u1))) (\lambda 
37723 (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: 
37724 T).(\lambda (_: A).(eq C (CHead c2 (Bind Abbr) u) (CHead d2 (Bind Abbr) 
37725 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
37726 (\lambda (_: C).(\lambda (_: T).(\lambda (a0: A).(arity g d1 u1 (asucc g 
37727 a0))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a0: A).(arity g d2 u2 
37728 a0))))) (ex4_3_intro C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: 
37729 A).(eq C (CHead c2 (Bind Abbr) u) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
37730 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
37731 C).(\lambda (_: T).(\lambda (a0: A).(arity g d1 u1 (asucc g a0))))) (\lambda 
37732 (d2: C).(\lambda (u2: T).(\lambda (a0: A).(arity g d2 u2 a0)))) c2 u a 
37733 (refl_equal C (CHead c2 (Bind Abbr) u)) H9 H10 H11))))) c H8)) t (sym_eq T t 
37734 u1 H7))) c1 (sym_eq C c1 d1 H6))) H5)) H4 H0 H1 H2)))]) in (H0 (refl_equal C 
37735 (CHead d1 (Bind Abst) u1)) (refl_equal C c))))))).
37736
37737 theorem csuba_gen_flat:
37738  \forall (g: G).(\forall (d1: C).(\forall (c: C).(\forall (u1: T).(\forall 
37739 (f: F).((csuba g (CHead d1 (Flat f) u1) c) \to (ex2_2 C T (\lambda (d2: 
37740 C).(\lambda (u2: T).(eq C c (CHead d2 (Flat f) u2)))) (\lambda (d2: 
37741 C).(\lambda (_: T).(csuba g d1 d2)))))))))
37742 \def
37743  \lambda (g: G).(\lambda (d1: C).(\lambda (c: C).(\lambda (u1: T).(\lambda 
37744 (f: F).(\lambda (H: (csuba g (CHead d1 (Flat f) u1) c)).(let H0 \def (match H 
37745 return (\lambda (c0: C).(\lambda (c1: C).(\lambda (_: (csuba ? c0 c1)).((eq C 
37746 c0 (CHead d1 (Flat f) u1)) \to ((eq C c1 c) \to (ex2_2 C T (\lambda (d2: 
37747 C).(\lambda (u2: T).(eq C c (CHead d2 (Flat f) u2)))) (\lambda (d2: 
37748 C).(\lambda (_: T).(csuba g d1 d2))))))))) with [(csuba_sort n) \Rightarrow 
37749 (\lambda (H0: (eq C (CSort n) (CHead d1 (Flat f) u1))).(\lambda (H1: (eq C 
37750 (CSort n) c)).((let H2 \def (eq_ind C (CSort n) (\lambda (e: C).(match e 
37751 return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow True | (CHead _ _ _) 
37752 \Rightarrow False])) I (CHead d1 (Flat f) u1) H0) in (False_ind ((eq C (CSort 
37753 n) c) \to (ex2_2 C T (\lambda (d2: C).(\lambda (u2: T).(eq C c (CHead d2 
37754 (Flat f) u2)))) (\lambda (d2: C).(\lambda (_: T).(csuba g d1 d2))))) H2)) 
37755 H1))) | (csuba_head c1 c2 H0 k u) \Rightarrow (\lambda (H1: (eq C (CHead c1 k 
37756 u) (CHead d1 (Flat f) u1))).(\lambda (H2: (eq C (CHead c2 k u) c)).((let H3 
37757 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
37758 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead c1 k u) 
37759 (CHead d1 (Flat f) u1) H1) in ((let H4 \def (f_equal C K (\lambda (e: 
37760 C).(match e return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | (CHead 
37761 _ k _) \Rightarrow k])) (CHead c1 k u) (CHead d1 (Flat f) u1) H1) in ((let H5 
37762 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with 
37763 [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k u) 
37764 (CHead d1 (Flat f) u1) H1) in (eq_ind C d1 (\lambda (c0: C).((eq K k (Flat 
37765 f)) \to ((eq T u u1) \to ((eq C (CHead c2 k u) c) \to ((csuba g c0 c2) \to 
37766 (ex2_2 C T (\lambda (d2: C).(\lambda (u2: T).(eq C c (CHead d2 (Flat f) 
37767 u2)))) (\lambda (d2: C).(\lambda (_: T).(csuba g d1 d2))))))))) (\lambda (H6: 
37768 (eq K k (Flat f))).(eq_ind K (Flat f) (\lambda (k0: K).((eq T u u1) \to ((eq 
37769 C (CHead c2 k0 u) c) \to ((csuba g d1 c2) \to (ex2_2 C T (\lambda (d2: 
37770 C).(\lambda (u2: T).(eq C c (CHead d2 (Flat f) u2)))) (\lambda (d2: 
37771 C).(\lambda (_: T).(csuba g d1 d2)))))))) (\lambda (H7: (eq T u u1)).(eq_ind 
37772 T u1 (\lambda (t: T).((eq C (CHead c2 (Flat f) t) c) \to ((csuba g d1 c2) \to 
37773 (ex2_2 C T (\lambda (d2: C).(\lambda (u2: T).(eq C c (CHead d2 (Flat f) 
37774 u2)))) (\lambda (d2: C).(\lambda (_: T).(csuba g d1 d2))))))) (\lambda (H8: 
37775 (eq C (CHead c2 (Flat f) u1) c)).(eq_ind C (CHead c2 (Flat f) u1) (\lambda 
37776 (c: C).((csuba g d1 c2) \to (ex2_2 C T (\lambda (d2: C).(\lambda (u2: T).(eq 
37777 C c (CHead d2 (Flat f) u2)))) (\lambda (d2: C).(\lambda (_: T).(csuba g d1 
37778 d2)))))) (\lambda (H9: (csuba g d1 c2)).(ex2_2_intro C T (\lambda (d2: 
37779 C).(\lambda (u2: T).(eq C (CHead c2 (Flat f) u1) (CHead d2 (Flat f) u2)))) 
37780 (\lambda (d2: C).(\lambda (_: T).(csuba g d1 d2))) c2 u1 (refl_equal C (CHead 
37781 c2 (Flat f) u1)) H9)) c H8)) u (sym_eq T u u1 H7))) k (sym_eq K k (Flat f) 
37782 H6))) c1 (sym_eq C c1 d1 H5))) H4)) H3)) H2 H0))) | (csuba_abst c1 c2 H0 t a 
37783 H1 u H2) \Rightarrow (\lambda (H3: (eq C (CHead c1 (Bind Abst) t) (CHead d1 
37784 (Flat f) u1))).(\lambda (H4: (eq C (CHead c2 (Bind Abbr) u) c)).((let H5 \def 
37785 (eq_ind C (CHead c1 (Bind Abst) t) (\lambda (e: C).(match e return (\lambda 
37786 (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow 
37787 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat 
37788 _) \Rightarrow False])])) I (CHead d1 (Flat f) u1) H3) in (False_ind ((eq C 
37789 (CHead c2 (Bind Abbr) u) c) \to ((csuba g c1 c2) \to ((arity g c1 t (asucc g 
37790 a)) \to ((arity g c2 u a) \to (ex2_2 C T (\lambda (d2: C).(\lambda (u2: 
37791 T).(eq C c (CHead d2 (Flat f) u2)))) (\lambda (d2: C).(\lambda (_: T).(csuba 
37792 g d1 d2)))))))) H5)) H4 H0 H1 H2)))]) in (H0 (refl_equal C (CHead d1 (Flat f) 
37793 u1)) (refl_equal C c)))))))).
37794
37795 theorem csuba_gen_bind:
37796  \forall (g: G).(\forall (b1: B).(\forall (e1: C).(\forall (c2: C).(\forall 
37797 (v1: T).((csuba g (CHead e1 (Bind b1) v1) c2) \to (ex2_3 B C T (\lambda (b2: 
37798 B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind b2) v2))))) 
37799 (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csuba g e1 e2))))))))))
37800 \def
37801  \lambda (g: G).(\lambda (b1: B).(\lambda (e1: C).(\lambda (c2: C).(\lambda 
37802 (v1: T).(\lambda (H: (csuba g (CHead e1 (Bind b1) v1) c2)).(let H0 \def 
37803 (match H return (\lambda (c: C).(\lambda (c0: C).(\lambda (_: (csuba ? c 
37804 c0)).((eq C c (CHead e1 (Bind b1) v1)) \to ((eq C c0 c2) \to (ex2_3 B C T 
37805 (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind 
37806 b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csuba g e1 
37807 e2)))))))))) with [(csuba_sort n) \Rightarrow (\lambda (H0: (eq C (CSort n) 
37808 (CHead e1 (Bind b1) v1))).(\lambda (H1: (eq C (CSort n) c2)).((let H2 \def 
37809 (eq_ind C (CSort n) (\lambda (e: C).(match e return (\lambda (_: C).Prop) 
37810 with [(CSort _) \Rightarrow True | (CHead _ _ _) \Rightarrow False])) I 
37811 (CHead e1 (Bind b1) v1) H0) in (False_ind ((eq C (CSort n) c2) \to (ex2_3 B C 
37812 T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind 
37813 b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csuba g e1 
37814 e2)))))) H2)) H1))) | (csuba_head c1 c0 H0 k u) \Rightarrow (\lambda (H1: (eq 
37815 C (CHead c1 k u) (CHead e1 (Bind b1) v1))).(\lambda (H2: (eq C (CHead c0 k u) 
37816 c2)).((let H3 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: 
37817 C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead 
37818 c1 k u) (CHead e1 (Bind b1) v1) H1) in ((let H4 \def (f_equal C K (\lambda 
37819 (e: C).(match e return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | 
37820 (CHead _ k _) \Rightarrow k])) (CHead c1 k u) (CHead e1 (Bind b1) v1) H1) in 
37821 ((let H5 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) 
37822 with [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k 
37823 u) (CHead e1 (Bind b1) v1) H1) in (eq_ind C e1 (\lambda (c: C).((eq K k (Bind 
37824 b1)) \to ((eq T u v1) \to ((eq C (CHead c0 k u) c2) \to ((csuba g c c0) \to 
37825 (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 
37826 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: 
37827 T).(csuba g e1 e2)))))))))) (\lambda (H6: (eq K k (Bind b1))).(eq_ind K (Bind 
37828 b1) (\lambda (k0: K).((eq T u v1) \to ((eq C (CHead c0 k0 u) c2) \to ((csuba 
37829 g e1 c0) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: 
37830 T).(eq C c2 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: 
37831 C).(\lambda (_: T).(csuba g e1 e2))))))))) (\lambda (H7: (eq T u v1)).(eq_ind 
37832 T v1 (\lambda (t: T).((eq C (CHead c0 (Bind b1) t) c2) \to ((csuba g e1 c0) 
37833 \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 
37834 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: 
37835 T).(csuba g e1 e2)))))))) (\lambda (H8: (eq C (CHead c0 (Bind b1) v1) 
37836 c2)).(eq_ind C (CHead c0 (Bind b1) v1) (\lambda (c: C).((csuba g e1 c0) \to 
37837 (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c 
37838 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: 
37839 T).(csuba g e1 e2))))))) (\lambda (H9: (csuba g e1 c0)).(let H10 \def 
37840 (eq_ind_r C c2 (\lambda (c: C).(csuba g (CHead e1 (Bind b1) v1) c)) H (CHead 
37841 c0 (Bind b1) v1) H8) in (ex2_3_intro B C T (\lambda (b2: B).(\lambda (e2: 
37842 C).(\lambda (v2: T).(eq C (CHead c0 (Bind b1) v1) (CHead e2 (Bind b2) v2))))) 
37843 (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csuba g e1 e2)))) b1 c0 v1 
37844 (refl_equal C (CHead c0 (Bind b1) v1)) H9))) c2 H8)) u (sym_eq T u v1 H7))) k 
37845 (sym_eq K k (Bind b1) H6))) c1 (sym_eq C c1 e1 H5))) H4)) H3)) H2 H0))) | 
37846 (csuba_abst c1 c0 H0 t a H1 u H2) \Rightarrow (\lambda (H3: (eq C (CHead c1 
37847 (Bind Abst) t) (CHead e1 (Bind b1) v1))).(\lambda (H4: (eq C (CHead c0 (Bind 
37848 Abbr) u) c2)).((let H5 \def (f_equal C T (\lambda (e: C).(match e return 
37849 (\lambda (_: C).T) with [(CSort _) \Rightarrow t | (CHead _ _ t) \Rightarrow 
37850 t])) (CHead c1 (Bind Abst) t) (CHead e1 (Bind b1) v1) H3) in ((let H6 \def 
37851 (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) with [(CSort 
37852 _) \Rightarrow Abst | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
37853 K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abst])])) (CHead c1 
37854 (Bind Abst) t) (CHead e1 (Bind b1) v1) H3) in ((let H7 \def (f_equal C C 
37855 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
37856 \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 (Bind Abst) t) 
37857 (CHead e1 (Bind b1) v1) H3) in (eq_ind C e1 (\lambda (c: C).((eq B Abst b1) 
37858 \to ((eq T t v1) \to ((eq C (CHead c0 (Bind Abbr) u) c2) \to ((csuba g c c0) 
37859 \to ((arity g c t (asucc g a)) \to ((arity g c0 u a) \to (ex2_3 B C T 
37860 (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind 
37861 b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csuba g e1 
37862 e2)))))))))))) (\lambda (H8: (eq B Abst b1)).(eq_ind B Abst (\lambda (_: 
37863 B).((eq T t v1) \to ((eq C (CHead c0 (Bind Abbr) u) c2) \to ((csuba g e1 c0) 
37864 \to ((arity g e1 t (asucc g a)) \to ((arity g c0 u a) \to (ex2_3 B C T 
37865 (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind 
37866 b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csuba g e1 
37867 e2))))))))))) (\lambda (H9: (eq T t v1)).(eq_ind T v1 (\lambda (t0: T).((eq C 
37868 (CHead c0 (Bind Abbr) u) c2) \to ((csuba g e1 c0) \to ((arity g e1 t0 (asucc 
37869 g a)) \to ((arity g c0 u a) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: 
37870 C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind b2) v2))))) (\lambda (_: 
37871 B).(\lambda (e2: C).(\lambda (_: T).(csuba g e1 e2)))))))))) (\lambda (H10: 
37872 (eq C (CHead c0 (Bind Abbr) u) c2)).(eq_ind C (CHead c0 (Bind Abbr) u) 
37873 (\lambda (c: C).((csuba g e1 c0) \to ((arity g e1 v1 (asucc g a)) \to ((arity 
37874 g c0 u a) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: 
37875 T).(eq C c (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: 
37876 C).(\lambda (_: T).(csuba g e1 e2))))))))) (\lambda (H11: (csuba g e1 
37877 c0)).(\lambda (_: (arity g e1 v1 (asucc g a))).(\lambda (_: (arity g c0 u 
37878 a)).(let H14 \def (eq_ind_r C c2 (\lambda (c: C).(csuba g (CHead e1 (Bind b1) 
37879 v1) c)) H (CHead c0 (Bind Abbr) u) H10) in (let H15 \def (eq_ind_r B b1 
37880 (\lambda (b: B).(csuba g (CHead e1 (Bind b) v1) (CHead c0 (Bind Abbr) u))) 
37881 H14 Abst H8) in (ex2_3_intro B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda 
37882 (v2: T).(eq C (CHead c0 (Bind Abbr) u) (CHead e2 (Bind b2) v2))))) (\lambda 
37883 (_: B).(\lambda (e2: C).(\lambda (_: T).(csuba g e1 e2)))) Abbr c0 u 
37884 (refl_equal C (CHead c0 (Bind Abbr) u)) H11)))))) c2 H10)) t (sym_eq T t v1 
37885 H9))) b1 H8)) c1 (sym_eq C c1 e1 H7))) H6)) H5)) H4 H0 H1 H2)))]) in (H0 
37886 (refl_equal C (CHead e1 (Bind b1) v1)) (refl_equal C c2)))))))).
37887
37888 theorem csuba_refl:
37889  \forall (g: G).(\forall (c: C).(csuba g c c))
37890 \def
37891  \lambda (g: G).(\lambda (c: C).(C_ind (\lambda (c0: C).(csuba g c0 c0)) 
37892 (\lambda (n: nat).(csuba_sort g n)) (\lambda (c0: C).(\lambda (H: (csuba g c0 
37893 c0)).(\lambda (k: K).(\lambda (t: T).(csuba_head g c0 c0 H k t))))) c)).
37894
37895 theorem csuba_clear_conf:
37896  \forall (g: G).(\forall (c1: C).(\forall (c2: C).((csuba g c1 c2) \to 
37897 (\forall (e1: C).((clear c1 e1) \to (ex2 C (\lambda (e2: C).(csuba g e1 e2)) 
37898 (\lambda (e2: C).(clear c2 e2))))))))
37899 \def
37900  \lambda (g: G).(\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (csuba g c1 
37901 c2)).(csuba_ind g (\lambda (c: C).(\lambda (c0: C).(\forall (e1: C).((clear c 
37902 e1) \to (ex2 C (\lambda (e2: C).(csuba g e1 e2)) (\lambda (e2: C).(clear c0 
37903 e2))))))) (\lambda (n: nat).(\lambda (e1: C).(\lambda (H0: (clear (CSort n) 
37904 e1)).(clear_gen_sort e1 n H0 (ex2 C (\lambda (e2: C).(csuba g e1 e2)) 
37905 (\lambda (e2: C).(clear (CSort n) e2))))))) (\lambda (c3: C).(\lambda (c4: 
37906 C).(\lambda (H0: (csuba g c3 c4)).(\lambda (H1: ((\forall (e1: C).((clear c3 
37907 e1) \to (ex2 C (\lambda (e2: C).(csuba g e1 e2)) (\lambda (e2: C).(clear c4 
37908 e2))))))).(\lambda (k: K).(\lambda (u: T).(\lambda (e1: C).(\lambda (H2: 
37909 (clear (CHead c3 k u) e1)).((match k return (\lambda (k0: K).((clear (CHead 
37910 c3 k0 u) e1) \to (ex2 C (\lambda (e2: C).(csuba g e1 e2)) (\lambda (e2: 
37911 C).(clear (CHead c4 k0 u) e2))))) with [(Bind b) \Rightarrow (\lambda (H3: 
37912 (clear (CHead c3 (Bind b) u) e1)).(eq_ind_r C (CHead c3 (Bind b) u) (\lambda 
37913 (c: C).(ex2 C (\lambda (e2: C).(csuba g c e2)) (\lambda (e2: C).(clear (CHead 
37914 c4 (Bind b) u) e2)))) (ex_intro2 C (\lambda (e2: C).(csuba g (CHead c3 (Bind 
37915 b) u) e2)) (\lambda (e2: C).(clear (CHead c4 (Bind b) u) e2)) (CHead c4 (Bind 
37916 b) u) (csuba_head g c3 c4 H0 (Bind b) u) (clear_bind b c4 u)) e1 
37917 (clear_gen_bind b c3 e1 u H3))) | (Flat f) \Rightarrow (\lambda (H3: (clear 
37918 (CHead c3 (Flat f) u) e1)).(let H4 \def (H1 e1 (clear_gen_flat f c3 e1 u H3)) 
37919 in (ex2_ind C (\lambda (e2: C).(csuba g e1 e2)) (\lambda (e2: C).(clear c4 
37920 e2)) (ex2 C (\lambda (e2: C).(csuba g e1 e2)) (\lambda (e2: C).(clear (CHead 
37921 c4 (Flat f) u) e2))) (\lambda (x: C).(\lambda (H5: (csuba g e1 x)).(\lambda 
37922 (H6: (clear c4 x)).(ex_intro2 C (\lambda (e2: C).(csuba g e1 e2)) (\lambda 
37923 (e2: C).(clear (CHead c4 (Flat f) u) e2)) x H5 (clear_flat c4 x H6 f u))))) 
37924 H4)))]) H2))))))))) (\lambda (c3: C).(\lambda (c4: C).(\lambda (H0: (csuba g 
37925 c3 c4)).(\lambda (_: ((\forall (e1: C).((clear c3 e1) \to (ex2 C (\lambda 
37926 (e2: C).(csuba g e1 e2)) (\lambda (e2: C).(clear c4 e2))))))).(\lambda (t: 
37927 T).(\lambda (a: A).(\lambda (H2: (arity g c3 t (asucc g a))).(\lambda (u: 
37928 T).(\lambda (H3: (arity g c4 u a)).(\lambda (e1: C).(\lambda (H4: (clear 
37929 (CHead c3 (Bind Abst) t) e1)).(eq_ind_r C (CHead c3 (Bind Abst) t) (\lambda 
37930 (c: C).(ex2 C (\lambda (e2: C).(csuba g c e2)) (\lambda (e2: C).(clear (CHead 
37931 c4 (Bind Abbr) u) e2)))) (ex_intro2 C (\lambda (e2: C).(csuba g (CHead c3 
37932 (Bind Abst) t) e2)) (\lambda (e2: C).(clear (CHead c4 (Bind Abbr) u) e2)) 
37933 (CHead c4 (Bind Abbr) u) (csuba_abst g c3 c4 H0 t a H2 u H3) (clear_bind Abbr 
37934 c4 u)) e1 (clear_gen_bind Abst c3 e1 t H4))))))))))))) c1 c2 H)))).
37935
37936 theorem csuba_drop_abbr:
37937  \forall (i: nat).(\forall (c1: C).(\forall (d1: C).(\forall (u: T).((drop i 
37938 O c1 (CHead d1 (Bind Abbr) u)) \to (\forall (g: G).(\forall (c2: C).((csuba g 
37939 c1 c2) \to (ex2 C (\lambda (d2: C).(drop i O c2 (CHead d2 (Bind Abbr) u))) 
37940 (\lambda (d2: C).(csuba g d1 d2))))))))))
37941 \def
37942  \lambda (i: nat).(nat_ind (\lambda (n: nat).(\forall (c1: C).(\forall (d1: 
37943 C).(\forall (u: T).((drop n O c1 (CHead d1 (Bind Abbr) u)) \to (\forall (g: 
37944 G).(\forall (c2: C).((csuba g c1 c2) \to (ex2 C (\lambda (d2: C).(drop n O c2 
37945 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))))))))))) 
37946 (\lambda (c1: C).(\lambda (d1: C).(\lambda (u: T).(\lambda (H: (drop O O c1 
37947 (CHead d1 (Bind Abbr) u))).(\lambda (g: G).(\lambda (c2: C).(\lambda (H0: 
37948 (csuba g c1 c2)).(let H1 \def (eq_ind C c1 (\lambda (c: C).(csuba g c c2)) H0 
37949 (CHead d1 (Bind Abbr) u) (drop_gen_refl c1 (CHead d1 (Bind Abbr) u) H)) in 
37950 (let H2 \def (csuba_gen_abbr g d1 c2 u H1) in (ex2_ind C (\lambda (d2: C).(eq 
37951 C c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) (ex2 C 
37952 (\lambda (d2: C).(drop O O c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: 
37953 C).(csuba g d1 d2))) (\lambda (x: C).(\lambda (H3: (eq C c2 (CHead x (Bind 
37954 Abbr) u))).(\lambda (H4: (csuba g d1 x)).(eq_ind_r C (CHead x (Bind Abbr) u) 
37955 (\lambda (c: C).(ex2 C (\lambda (d2: C).(drop O O c (CHead d2 (Bind Abbr) 
37956 u))) (\lambda (d2: C).(csuba g d1 d2)))) (ex_intro2 C (\lambda (d2: C).(drop 
37957 O O (CHead x (Bind Abbr) u) (CHead d2 (Bind Abbr) u))) (\lambda (d2: 
37958 C).(csuba g d1 d2)) x (drop_refl (CHead x (Bind Abbr) u)) H4) c2 H3)))) 
37959 H2)))))))))) (\lambda (n: nat).(\lambda (H: ((\forall (c1: C).(\forall (d1: 
37960 C).(\forall (u: T).((drop n O c1 (CHead d1 (Bind Abbr) u)) \to (\forall (g: 
37961 G).(\forall (c2: C).((csuba g c1 c2) \to (ex2 C (\lambda (d2: C).(drop n O c2 
37962 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 
37963 d2)))))))))))).(\lambda (c1: C).(C_ind (\lambda (c: C).(\forall (d1: 
37964 C).(\forall (u: T).((drop (S n) O c (CHead d1 (Bind Abbr) u)) \to (\forall 
37965 (g: G).(\forall (c2: C).((csuba g c c2) \to (ex2 C (\lambda (d2: C).(drop (S 
37966 n) O c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)))))))))) 
37967 (\lambda (n0: nat).(\lambda (d1: C).(\lambda (u: T).(\lambda (H0: (drop (S n) 
37968 O (CSort n0) (CHead d1 (Bind Abbr) u))).(\lambda (g: G).(\lambda (c2: 
37969 C).(\lambda (_: (csuba g (CSort n0) c2)).(and3_ind (eq C (CHead d1 (Bind 
37970 Abbr) u) (CSort n0)) (eq nat (S n) O) (eq nat O O) (ex2 C (\lambda (d2: 
37971 C).(drop (S n) O c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 
37972 d2))) (\lambda (H2: (eq C (CHead d1 (Bind Abbr) u) (CSort n0))).(\lambda (_: 
37973 (eq nat (S n) O)).(\lambda (_: (eq nat O O)).(let H5 \def (match H2 return 
37974 (\lambda (c: C).(\lambda (_: (eq ? ? c)).((eq C c (CSort n0)) \to (ex2 C 
37975 (\lambda (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: 
37976 C).(csuba g d1 d2)))))) with [refl_equal \Rightarrow (\lambda (H4: (eq C 
37977 (CHead d1 (Bind Abbr) u) (CSort n0))).(let H5 \def (eq_ind C (CHead d1 (Bind 
37978 Abbr) u) (\lambda (e: C).(match e return (\lambda (_: C).Prop) with [(CSort 
37979 _) \Rightarrow False | (CHead _ _ _) \Rightarrow True])) I (CSort n0) H4) in 
37980 (False_ind (ex2 C (\lambda (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abbr) 
37981 u))) (\lambda (d2: C).(csuba g d1 d2))) H5)))]) in (H5 (refl_equal C (CSort 
37982 n0))))))) (drop_gen_sort n0 (S n) O (CHead d1 (Bind Abbr) u) H0))))))))) 
37983 (\lambda (c: C).(\lambda (H0: ((\forall (d1: C).(\forall (u: T).((drop (S n) 
37984 O c (CHead d1 (Bind Abbr) u)) \to (\forall (g: G).(\forall (c2: C).((csuba g 
37985 c c2) \to (ex2 C (\lambda (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abbr) u))) 
37986 (\lambda (d2: C).(csuba g d1 d2))))))))))).(\lambda (k: K).(\lambda (t: 
37987 T).(\lambda (d1: C).(\lambda (u: T).(\lambda (H1: (drop (S n) O (CHead c k t) 
37988 (CHead d1 (Bind Abbr) u))).(\lambda (g: G).(\lambda (c2: C).(\lambda (H2: 
37989 (csuba g (CHead c k t) c2)).(K_ind (\lambda (k0: K).((csuba g (CHead c k0 t) 
37990 c2) \to ((drop (r k0 n) O c (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda 
37991 (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g 
37992 d1 d2)))))) (\lambda (b: B).(\lambda (H3: (csuba g (CHead c (Bind b) t) 
37993 c2)).(\lambda (H4: (drop (r (Bind b) n) O c (CHead d1 (Bind Abbr) u))).(B_ind 
37994 (\lambda (b0: B).((csuba g (CHead c (Bind b0) t) c2) \to ((drop (r (Bind b0) 
37995 n) O c (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(drop (S n) O c2 
37996 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)))))) (\lambda 
37997 (H5: (csuba g (CHead c (Bind Abbr) t) c2)).(\lambda (H6: (drop (r (Bind Abbr) 
37998 n) O c (CHead d1 (Bind Abbr) u))).(let H7 \def (csuba_gen_abbr g c c2 t H5) 
37999 in (ex2_ind C (\lambda (d2: C).(eq C c2 (CHead d2 (Bind Abbr) t))) (\lambda 
38000 (d2: C).(csuba g c d2)) (ex2 C (\lambda (d2: C).(drop (S n) O c2 (CHead d2 
38001 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))) (\lambda (x: C).(\lambda 
38002 (H8: (eq C c2 (CHead x (Bind Abbr) t))).(\lambda (H9: (csuba g c 
38003 x)).(eq_ind_r C (CHead x (Bind Abbr) t) (\lambda (c0: C).(ex2 C (\lambda (d2: 
38004 C).(drop (S n) O c0 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 
38005 d2)))) (let H10 \def (H c d1 u H6 g x H9) in (ex2_ind C (\lambda (d2: 
38006 C).(drop n O x (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) 
38007 (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x (Bind Abbr) t) (CHead d2 (Bind 
38008 Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))) (\lambda (x0: C).(\lambda (H11: 
38009 (drop n O x (CHead x0 (Bind Abbr) u))).(\lambda (H12: (csuba g d1 x0)).(let 
38010 H13 \def (refl_equal nat (r (Bind Abbr) n)) in (let H14 \def (eq_ind nat n 
38011 (\lambda (n: nat).(drop n O x (CHead x0 (Bind Abbr) u))) H11 (r (Bind Abbr) 
38012 n) H13) in (ex_intro2 C (\lambda (d2: C).(drop (S n) O (CHead x (Bind Abbr) 
38013 t) (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) x0 (drop_drop 
38014 (Bind Abbr) n x (CHead x0 (Bind Abbr) u) H14 t) H12)))))) H10)) c2 H8)))) 
38015 H7)))) (\lambda (H5: (csuba g (CHead c (Bind Abst) t) c2)).(\lambda (H6: 
38016 (drop (r (Bind Abst) n) O c (CHead d1 (Bind Abbr) u))).(let H7 \def 
38017 (csuba_gen_abst g c c2 t H5) in (or_ind (ex2 C (\lambda (d2: C).(eq C c2 
38018 (CHead d2 (Bind Abst) t))) (\lambda (d2: C).(csuba g c d2))) (ex4_3 C T A 
38019 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(eq C c2 (CHead d2 (Bind 
38020 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g c 
38021 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g c t (asucc g 
38022 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38023 a))))) (ex2 C (\lambda (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abbr) u))) 
38024 (\lambda (d2: C).(csuba g d1 d2))) (\lambda (H8: (ex2 C (\lambda (d2: C).(eq 
38025 C c2 (CHead d2 (Bind Abst) t))) (\lambda (d2: C).(csuba g c d2)))).(ex2_ind C 
38026 (\lambda (d2: C).(eq C c2 (CHead d2 (Bind Abst) t))) (\lambda (d2: C).(csuba 
38027 g c d2)) (ex2 C (\lambda (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abbr) u))) 
38028 (\lambda (d2: C).(csuba g d1 d2))) (\lambda (x: C).(\lambda (H9: (eq C c2 
38029 (CHead x (Bind Abst) t))).(\lambda (H10: (csuba g c x)).(eq_ind_r C (CHead x 
38030 (Bind Abst) t) (\lambda (c0: C).(ex2 C (\lambda (d2: C).(drop (S n) O c0 
38031 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)))) (let H11 \def 
38032 (H c d1 u H6 g x H10) in (ex2_ind C (\lambda (d2: C).(drop n O x (CHead d2 
38033 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) (ex2 C (\lambda (d2: 
38034 C).(drop (S n) O (CHead x (Bind Abst) t) (CHead d2 (Bind Abbr) u))) (\lambda 
38035 (d2: C).(csuba g d1 d2))) (\lambda (x0: C).(\lambda (H12: (drop n O x (CHead 
38036 x0 (Bind Abbr) u))).(\lambda (H13: (csuba g d1 x0)).(let H14 \def (refl_equal 
38037 nat (r (Bind Abbr) n)) in (let H15 \def (eq_ind nat n (\lambda (n: nat).(drop 
38038 n O x (CHead x0 (Bind Abbr) u))) H12 (r (Bind Abbr) n) H14) in (ex_intro2 C 
38039 (\lambda (d2: C).(drop (S n) O (CHead x (Bind Abst) t) (CHead d2 (Bind Abbr) 
38040 u))) (\lambda (d2: C).(csuba g d1 d2)) x0 (drop_drop (Bind Abst) n x (CHead 
38041 x0 (Bind Abbr) u) H15 t) H13)))))) H11)) c2 H9)))) H8)) (\lambda (H8: (ex4_3 
38042 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(eq C c2 (CHead d2 
38043 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
38044 c d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g c t (asucc 
38045 g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38046 a)))))).(ex4_3_ind C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: 
38047 A).(eq C c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38048 T).(\lambda (_: A).(csuba g c d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda 
38049 (a: A).(arity g c t (asucc g a))))) (\lambda (d2: C).(\lambda (u2: 
38050 T).(\lambda (a: A).(arity g d2 u2 a)))) (ex2 C (\lambda (d2: C).(drop (S n) O 
38051 c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))) (\lambda 
38052 (x0: C).(\lambda (x1: T).(\lambda (x2: A).(\lambda (H9: (eq C c2 (CHead x0 
38053 (Bind Abbr) x1))).(\lambda (H10: (csuba g c x0)).(\lambda (_: (arity g c t 
38054 (asucc g x2))).(\lambda (_: (arity g x0 x1 x2)).(eq_ind_r C (CHead x0 (Bind 
38055 Abbr) x1) (\lambda (c0: C).(ex2 C (\lambda (d2: C).(drop (S n) O c0 (CHead d2 
38056 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)))) (let H13 \def (H c d1 u 
38057 H6 g x0 H10) in (ex2_ind C (\lambda (d2: C).(drop n O x0 (CHead d2 (Bind 
38058 Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) (ex2 C (\lambda (d2: C).(drop (S 
38059 n) O (CHead x0 (Bind Abbr) x1) (CHead d2 (Bind Abbr) u))) (\lambda (d2: 
38060 C).(csuba g d1 d2))) (\lambda (x: C).(\lambda (H14: (drop n O x0 (CHead x 
38061 (Bind Abbr) u))).(\lambda (H15: (csuba g d1 x)).(let H16 \def (refl_equal nat 
38062 (r (Bind Abbr) n)) in (let H17 \def (eq_ind nat n (\lambda (n: nat).(drop n O 
38063 x0 (CHead x (Bind Abbr) u))) H14 (r (Bind Abbr) n) H16) in (ex_intro2 C 
38064 (\lambda (d2: C).(drop (S n) O (CHead x0 (Bind Abbr) x1) (CHead d2 (Bind 
38065 Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) x (drop_drop (Bind Abbr) n x0 
38066 (CHead x (Bind Abbr) u) H17 x1) H15)))))) H13)) c2 H9)))))))) H8)) H7)))) 
38067 (\lambda (H5: (csuba g (CHead c (Bind Void) t) c2)).(\lambda (H6: (drop (r 
38068 (Bind Void) n) O c (CHead d1 (Bind Abbr) u))).(let H7 \def (csuba_gen_void g 
38069 c c2 t H5) in (ex2_ind C (\lambda (d2: C).(eq C c2 (CHead d2 (Bind Void) t))) 
38070 (\lambda (d2: C).(csuba g c d2)) (ex2 C (\lambda (d2: C).(drop (S n) O c2 
38071 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))) (\lambda (x: 
38072 C).(\lambda (H8: (eq C c2 (CHead x (Bind Void) t))).(\lambda (H9: (csuba g c 
38073 x)).(eq_ind_r C (CHead x (Bind Void) t) (\lambda (c0: C).(ex2 C (\lambda (d2: 
38074 C).(drop (S n) O c0 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 
38075 d2)))) (let H10 \def (H c d1 u H6 g x H9) in (ex2_ind C (\lambda (d2: 
38076 C).(drop n O x (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) 
38077 (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x (Bind Void) t) (CHead d2 (Bind 
38078 Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))) (\lambda (x0: C).(\lambda (H11: 
38079 (drop n O x (CHead x0 (Bind Abbr) u))).(\lambda (H12: (csuba g d1 x0)).(let 
38080 H13 \def (refl_equal nat (r (Bind Abbr) n)) in (let H14 \def (eq_ind nat n 
38081 (\lambda (n: nat).(drop n O x (CHead x0 (Bind Abbr) u))) H11 (r (Bind Abbr) 
38082 n) H13) in (ex_intro2 C (\lambda (d2: C).(drop (S n) O (CHead x (Bind Void) 
38083 t) (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) x0 (drop_drop 
38084 (Bind Void) n x (CHead x0 (Bind Abbr) u) H14 t) H12)))))) H10)) c2 H8)))) 
38085 H7)))) b H3 H4)))) (\lambda (f: F).(\lambda (H3: (csuba g (CHead c (Flat f) 
38086 t) c2)).(\lambda (H4: (drop (r (Flat f) n) O c (CHead d1 (Bind Abbr) 
38087 u))).(let H5 \def (csuba_gen_flat g c c2 t f H3) in (ex2_2_ind C T (\lambda 
38088 (d2: C).(\lambda (u2: T).(eq C c2 (CHead d2 (Flat f) u2)))) (\lambda (d2: 
38089 C).(\lambda (_: T).(csuba g c d2))) (ex2 C (\lambda (d2: C).(drop (S n) O c2 
38090 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))) (\lambda (x0: 
38091 C).(\lambda (x1: T).(\lambda (H6: (eq C c2 (CHead x0 (Flat f) x1))).(\lambda 
38092 (H7: (csuba g c x0)).(eq_ind_r C (CHead x0 (Flat f) x1) (\lambda (c0: C).(ex2 
38093 C (\lambda (d2: C).(drop (S n) O c0 (CHead d2 (Bind Abbr) u))) (\lambda (d2: 
38094 C).(csuba g d1 d2)))) (let H8 \def (H0 d1 u H4 g x0 H7) in (ex2_ind C 
38095 (\lambda (d2: C).(drop (S n) O x0 (CHead d2 (Bind Abbr) u))) (\lambda (d2: 
38096 C).(csuba g d1 d2)) (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x0 (Flat f) 
38097 x1) (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))) (\lambda 
38098 (x: C).(\lambda (H9: (drop (S n) O x0 (CHead x (Bind Abbr) u))).(\lambda 
38099 (H10: (csuba g d1 x)).(ex_intro2 C (\lambda (d2: C).(drop (S n) O (CHead x0 
38100 (Flat f) x1) (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) x 
38101 (drop_drop (Flat f) n x0 (CHead x (Bind Abbr) u) H9 x1) H10)))) H8)) c2 
38102 H6))))) H5))))) k H2 (drop_gen_drop k c (CHead d1 (Bind Abbr) u) t n 
38103 H1)))))))))))) c1)))) i).
38104
38105 theorem csuba_drop_abst:
38106  \forall (i: nat).(\forall (c1: C).(\forall (d1: C).(\forall (u1: T).((drop i 
38107 O c1 (CHead d1 (Bind Abst) u1)) \to (\forall (g: G).(\forall (c2: C).((csuba 
38108 g c1 c2) \to (or (ex2 C (\lambda (d2: C).(drop i O c2 (CHead d2 (Bind Abst) 
38109 u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38110 C).(\lambda (u2: T).(\lambda (_: A).(drop i O c2 (CHead d2 (Bind Abbr) 
38111 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38112 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38113 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38114 a)))))))))))))
38115 \def
38116  \lambda (i: nat).(nat_ind (\lambda (n: nat).(\forall (c1: C).(\forall (d1: 
38117 C).(\forall (u1: T).((drop n O c1 (CHead d1 (Bind Abst) u1)) \to (\forall (g: 
38118 G).(\forall (c2: C).((csuba g c1 c2) \to (or (ex2 C (\lambda (d2: C).(drop n 
38119 O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C 
38120 T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop n O c2 (CHead d2 
38121 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
38122 d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 
38123 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 
38124 u2 a)))))))))))))) (\lambda (c1: C).(\lambda (d1: C).(\lambda (u1: 
38125 T).(\lambda (H: (drop O O c1 (CHead d1 (Bind Abst) u1))).(\lambda (g: 
38126 G).(\lambda (c2: C).(\lambda (H0: (csuba g c1 c2)).(let H1 \def (eq_ind C c1 
38127 (\lambda (c: C).(csuba g c c2)) H0 (CHead d1 (Bind Abst) u1) (drop_gen_refl 
38128 c1 (CHead d1 (Bind Abst) u1) H)) in (let H2 \def (csuba_gen_abst g d1 c2 u1 
38129 H1) in (or_ind (ex2 C (\lambda (d2: C).(eq C c2 (CHead d2 (Bind Abst) u1))) 
38130 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
38131 (u2: T).(\lambda (_: A).(eq C c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38132 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38133 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38134 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (or (ex2 C 
38135 (\lambda (d2: C).(drop O O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
38136 C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda 
38137 (_: A).(drop O O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda 
38138 (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38139 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38140 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (H3: (ex2 C (\lambda 
38141 (d2: C).(eq C c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 
38142 d2)))).(ex2_ind C (\lambda (d2: C).(eq C c2 (CHead d2 (Bind Abst) u1))) 
38143 (\lambda (d2: C).(csuba g d1 d2)) (or (ex2 C (\lambda (d2: C).(drop O O c2 
38144 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A 
38145 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop O O c2 (CHead d2 
38146 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
38147 d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 
38148 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 
38149 u2 a)))))) (\lambda (x: C).(\lambda (H4: (eq C c2 (CHead x (Bind Abst) 
38150 u1))).(\lambda (H5: (csuba g d1 x)).(eq_ind_r C (CHead x (Bind Abst) u1) 
38151 (\lambda (c: C).(or (ex2 C (\lambda (d2: C).(drop O O c (CHead d2 (Bind Abst) 
38152 u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38153 C).(\lambda (u2: T).(\lambda (_: A).(drop O O c (CHead d2 (Bind Abbr) u2))))) 
38154 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda 
38155 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) 
38156 (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))))) 
38157 (or_introl (ex2 C (\lambda (d2: C).(drop O O (CHead x (Bind Abst) u1) (CHead 
38158 d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda 
38159 (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop O O (CHead x (Bind Abst) u1) 
38160 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38161 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38162 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38163 A).(arity g d2 u2 a))))) (ex_intro2 C (\lambda (d2: C).(drop O O (CHead x 
38164 (Bind Abst) u1) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2)) 
38165 x (drop_refl (CHead x (Bind Abst) u1)) H5)) c2 H4)))) H3)) (\lambda (H3: 
38166 (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(eq C c2 
38167 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38168 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38169 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38170 A).(arity g d2 u2 a)))))).(ex4_3_ind C T A (\lambda (d2: C).(\lambda (u2: 
38171 T).(\lambda (_: A).(eq C c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38172 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38173 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38174 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) (or (ex2 C 
38175 (\lambda (d2: C).(drop O O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
38176 C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda 
38177 (_: A).(drop O O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda 
38178 (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38179 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38180 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (x0: C).(\lambda (x1: 
38181 T).(\lambda (x2: A).(\lambda (H4: (eq C c2 (CHead x0 (Bind Abbr) 
38182 x1))).(\lambda (H5: (csuba g d1 x0)).(\lambda (H6: (arity g d1 u1 (asucc g 
38183 x2))).(\lambda (H7: (arity g x0 x1 x2)).(eq_ind_r C (CHead x0 (Bind Abbr) x1) 
38184 (\lambda (c: C).(or (ex2 C (\lambda (d2: C).(drop O O c (CHead d2 (Bind Abst) 
38185 u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38186 C).(\lambda (u2: T).(\lambda (_: A).(drop O O c (CHead d2 (Bind Abbr) u2))))) 
38187 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda 
38188 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) 
38189 (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))))) 
38190 (or_intror (ex2 C (\lambda (d2: C).(drop O O (CHead x0 (Bind Abbr) x1) (CHead 
38191 d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda 
38192 (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop O O (CHead x0 (Bind Abbr) x1) 
38193 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38194 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38195 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38196 A).(arity g d2 u2 a))))) (ex4_3_intro C T A (\lambda (d2: C).(\lambda (u2: 
38197 T).(\lambda (_: A).(drop O O (CHead x0 (Bind Abbr) x1) (CHead d2 (Bind Abbr) 
38198 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38199 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38200 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) 
38201 x0 x1 x2 (drop_refl (CHead x0 (Bind Abbr) x1)) H5 H6 H7)) c2 H4)))))))) H3)) 
38202 H2)))))))))) (\lambda (n: nat).(\lambda (H: ((\forall (c1: C).(\forall (d1: 
38203 C).(\forall (u1: T).((drop n O c1 (CHead d1 (Bind Abst) u1)) \to (\forall (g: 
38204 G).(\forall (c2: C).((csuba g c1 c2) \to (or (ex2 C (\lambda (d2: C).(drop n 
38205 O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C 
38206 T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop n O c2 (CHead d2 
38207 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
38208 d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 
38209 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 
38210 u2 a))))))))))))))).(\lambda (c1: C).(C_ind (\lambda (c: C).(\forall (d1: 
38211 C).(\forall (u1: T).((drop (S n) O c (CHead d1 (Bind Abst) u1)) \to (\forall 
38212 (g: G).(\forall (c2: C).((csuba g c c2) \to (or (ex2 C (\lambda (d2: C).(drop 
38213 (S n) O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) 
38214 (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O 
38215 c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda 
38216 (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: 
38217 A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda 
38218 (a: A).(arity g d2 u2 a))))))))))))) (\lambda (n0: nat).(\lambda (d1: 
38219 C).(\lambda (u1: T).(\lambda (H0: (drop (S n) O (CSort n0) (CHead d1 (Bind 
38220 Abst) u1))).(\lambda (g: G).(\lambda (c2: C).(\lambda (_: (csuba g (CSort n0) 
38221 c2)).(and3_ind (eq C (CHead d1 (Bind Abst) u1) (CSort n0)) (eq nat (S n) O) 
38222 (eq nat O O) (or (ex2 C (\lambda (d2: C).(drop (S n) O c2 (CHead d2 (Bind 
38223 Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38224 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O c2 (CHead d2 (Bind Abbr) 
38225 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38226 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38227 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38228 a)))))) (\lambda (H2: (eq C (CHead d1 (Bind Abst) u1) (CSort n0))).(\lambda 
38229 (_: (eq nat (S n) O)).(\lambda (_: (eq nat O O)).(let H5 \def (match H2 
38230 return (\lambda (c: C).(\lambda (_: (eq ? ? c)).((eq C c (CSort n0)) \to (or 
38231 (ex2 C (\lambda (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abst) u1))) (\lambda 
38232 (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: 
38233 T).(\lambda (_: A).(drop (S n) O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda 
38234 (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38235 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38236 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))))))) with 
38237 [refl_equal \Rightarrow (\lambda (H4: (eq C (CHead d1 (Bind Abst) u1) (CSort 
38238 n0))).(let H5 \def (eq_ind C (CHead d1 (Bind Abst) u1) (\lambda (e: C).(match 
38239 e return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ _ 
38240 _) \Rightarrow True])) I (CSort n0) H4) in (False_ind (or (ex2 C (\lambda 
38241 (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba 
38242 g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: 
38243 A).(drop (S n) O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda 
38244 (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38245 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38246 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) H5)))]) in (H5 (refl_equal C 
38247 (CSort n0))))))) (drop_gen_sort n0 (S n) O (CHead d1 (Bind Abst) u1) 
38248 H0))))))))) (\lambda (c: C).(\lambda (H0: ((\forall (d1: C).(\forall (u1: 
38249 T).((drop (S n) O c (CHead d1 (Bind Abst) u1)) \to (\forall (g: G).(\forall 
38250 (c2: C).((csuba g c c2) \to (or (ex2 C (\lambda (d2: C).(drop (S n) O c2 
38251 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A 
38252 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O c2 (CHead d2 
38253 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
38254 d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 
38255 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 
38256 u2 a)))))))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (d1: C).(\lambda 
38257 (u1: T).(\lambda (H1: (drop (S n) O (CHead c k t) (CHead d1 (Bind Abst) 
38258 u1))).(\lambda (g: G).(\lambda (c2: C).(\lambda (H2: (csuba g (CHead c k t) 
38259 c2)).(K_ind (\lambda (k0: K).((csuba g (CHead c k0 t) c2) \to ((drop (r k0 n) 
38260 O c (CHead d1 (Bind Abst) u1)) \to (or (ex2 C (\lambda (d2: C).(drop (S n) O 
38261 c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T 
38262 A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O c2 (CHead 
38263 d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38264 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38265 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38266 A).(arity g d2 u2 a))))))))) (\lambda (b: B).(\lambda (H3: (csuba g (CHead c 
38267 (Bind b) t) c2)).(\lambda (H4: (drop (r (Bind b) n) O c (CHead d1 (Bind Abst) 
38268 u1))).(B_ind (\lambda (b0: B).((csuba g (CHead c (Bind b0) t) c2) \to ((drop 
38269 (r (Bind b0) n) O c (CHead d1 (Bind Abst) u1)) \to (or (ex2 C (\lambda (d2: 
38270 C).(drop (S n) O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 
38271 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S 
38272 n) O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38273 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38274 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38275 (u2: T).(\lambda (a: A).(arity g d2 u2 a))))))))) (\lambda (H5: (csuba g 
38276 (CHead c (Bind Abbr) t) c2)).(\lambda (H6: (drop (r (Bind Abbr) n) O c (CHead 
38277 d1 (Bind Abst) u1))).(let H7 \def (csuba_gen_abbr g c c2 t H5) in (ex2_ind C 
38278 (\lambda (d2: C).(eq C c2 (CHead d2 (Bind Abbr) t))) (\lambda (d2: C).(csuba 
38279 g c d2)) (or (ex2 C (\lambda (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abst) 
38280 u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38281 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O c2 (CHead d2 (Bind Abbr) 
38282 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38283 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38284 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38285 a)))))) (\lambda (x: C).(\lambda (H8: (eq C c2 (CHead x (Bind Abbr) 
38286 t))).(\lambda (H9: (csuba g c x)).(eq_ind_r C (CHead x (Bind Abbr) t) 
38287 (\lambda (c0: C).(or (ex2 C (\lambda (d2: C).(drop (S n) O c0 (CHead d2 (Bind 
38288 Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38289 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O c0 (CHead d2 (Bind Abbr) 
38290 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38291 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38292 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38293 a))))))) (let H10 \def (H c d1 u1 H6 g x H9) in (or_ind (ex2 C (\lambda (d2: 
38294 C).(drop n O x (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) 
38295 (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop n O x 
38296 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38297 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38298 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38299 A).(arity g d2 u2 a))))) (or (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x 
38300 (Bind Abbr) t) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) 
38301 (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O 
38302 (CHead x (Bind Abbr) t) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38303 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38304 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38305 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda 
38306 (H11: (ex2 C (\lambda (d2: C).(drop n O x (CHead d2 (Bind Abst) u1))) 
38307 (\lambda (d2: C).(csuba g d1 d2)))).(ex2_ind C (\lambda (d2: C).(drop n O x 
38308 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2)) (or (ex2 C 
38309 (\lambda (d2: C).(drop (S n) O (CHead x (Bind Abbr) t) (CHead d2 (Bind Abst) 
38310 u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38311 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x (Bind Abbr) t) 
38312 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38313 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38314 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38315 A).(arity g d2 u2 a)))))) (\lambda (x0: C).(\lambda (H12: (drop n O x (CHead 
38316 x0 (Bind Abst) u1))).(\lambda (H13: (csuba g d1 x0)).(let H14 \def 
38317 (refl_equal nat (r (Bind Abbr) n)) in (let H15 \def (eq_ind nat n (\lambda 
38318 (n: nat).(drop n O x (CHead x0 (Bind Abst) u1))) H12 (r (Bind Abbr) n) H14) 
38319 in (or_introl (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x (Bind Abbr) t) 
38320 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A 
38321 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x 
38322 (Bind Abbr) t) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38323 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38324 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38325 (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (ex_intro2 C (\lambda (d2: 
38326 C).(drop (S n) O (CHead x (Bind Abbr) t) (CHead d2 (Bind Abst) u1))) (\lambda 
38327 (d2: C).(csuba g d1 d2)) x0 (drop_drop (Bind Abbr) n x (CHead x0 (Bind Abst) 
38328 u1) H15 t) H13))))))) H11)) (\lambda (H11: (ex4_3 C T A (\lambda (d2: 
38329 C).(\lambda (u2: T).(\lambda (_: A).(drop n O x (CHead d2 (Bind Abbr) u2))))) 
38330 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda 
38331 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) 
38332 (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38333 a)))))).(ex4_3_ind C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: 
38334 A).(drop n O x (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38335 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38336 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38337 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) (or (ex2 C (\lambda (d2: 
38338 C).(drop (S n) O (CHead x (Bind Abbr) t) (CHead d2 (Bind Abst) u1))) (\lambda 
38339 (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: 
38340 T).(\lambda (_: A).(drop (S n) O (CHead x (Bind Abbr) t) (CHead d2 (Bind 
38341 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 
38342 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc 
38343 g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38344 a)))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: A).(\lambda (H12: 
38345 (drop n O x (CHead x0 (Bind Abbr) x1))).(\lambda (H13: (csuba g d1 
38346 x0)).(\lambda (H14: (arity g d1 u1 (asucc g x2))).(\lambda (H15: (arity g x0 
38347 x1 x2)).(let H16 \def (refl_equal nat (r (Bind Abbr) n)) in (let H17 \def 
38348 (eq_ind nat n (\lambda (n: nat).(drop n O x (CHead x0 (Bind Abbr) x1))) H12 
38349 (r (Bind Abbr) n) H16) in (or_intror (ex2 C (\lambda (d2: C).(drop (S n) O 
38350 (CHead x (Bind Abbr) t) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g 
38351 d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop 
38352 (S n) O (CHead x (Bind Abbr) t) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38353 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38354 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38355 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (ex4_3_intro C 
38356 T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x 
38357 (Bind Abbr) t) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38358 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38359 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38360 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) x0 x1 x2 (drop_drop (Bind Abbr) 
38361 n x (CHead x0 (Bind Abbr) x1) H17 t) H13 H14 H15))))))))))) H11)) H10)) c2 
38362 H8)))) H7)))) (\lambda (H5: (csuba g (CHead c (Bind Abst) t) c2)).(\lambda 
38363 (H6: (drop (r (Bind Abst) n) O c (CHead d1 (Bind Abst) u1))).(let H7 \def 
38364 (csuba_gen_abst g c c2 t H5) in (or_ind (ex2 C (\lambda (d2: C).(eq C c2 
38365 (CHead d2 (Bind Abst) t))) (\lambda (d2: C).(csuba g c d2))) (ex4_3 C T A 
38366 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(eq C c2 (CHead d2 (Bind 
38367 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g c 
38368 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g c t (asucc g 
38369 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38370 a))))) (or (ex2 C (\lambda (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abst) 
38371 u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38372 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O c2 (CHead d2 (Bind Abbr) 
38373 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38374 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38375 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38376 a)))))) (\lambda (H8: (ex2 C (\lambda (d2: C).(eq C c2 (CHead d2 (Bind Abst) 
38377 t))) (\lambda (d2: C).(csuba g c d2)))).(ex2_ind C (\lambda (d2: C).(eq C c2 
38378 (CHead d2 (Bind Abst) t))) (\lambda (d2: C).(csuba g c d2)) (or (ex2 C 
38379 (\lambda (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
38380 C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda 
38381 (_: A).(drop (S n) O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38382 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38383 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38384 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (x: 
38385 C).(\lambda (H9: (eq C c2 (CHead x (Bind Abst) t))).(\lambda (H10: (csuba g c 
38386 x)).(eq_ind_r C (CHead x (Bind Abst) t) (\lambda (c0: C).(or (ex2 C (\lambda 
38387 (d2: C).(drop (S n) O c0 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba 
38388 g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: 
38389 A).(drop (S n) O c0 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda 
38390 (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38391 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38392 (u2: T).(\lambda (a: A).(arity g d2 u2 a))))))) (let H11 \def (H c d1 u1 H6 g 
38393 x H10) in (or_ind (ex2 C (\lambda (d2: C).(drop n O x (CHead d2 (Bind Abst) 
38394 u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38395 C).(\lambda (u2: T).(\lambda (_: A).(drop n O x (CHead d2 (Bind Abbr) u2))))) 
38396 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda 
38397 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) 
38398 (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (or 
38399 (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x (Bind Abst) t) (CHead d2 (Bind 
38400 Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38401 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x (Bind Abst) t) 
38402 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38403 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38404 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38405 A).(arity g d2 u2 a)))))) (\lambda (H12: (ex2 C (\lambda (d2: C).(drop n O x 
38406 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2)))).(ex2_ind C 
38407 (\lambda (d2: C).(drop n O x (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
38408 C).(csuba g d1 d2)) (or (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x (Bind 
38409 Abst) t) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) 
38410 (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O 
38411 (CHead x (Bind Abst) t) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38412 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38413 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38414 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (x0: 
38415 C).(\lambda (H13: (drop n O x (CHead x0 (Bind Abst) u1))).(\lambda (H14: 
38416 (csuba g d1 x0)).(let H15 \def (refl_equal nat (r (Bind Abbr) n)) in (let H16 
38417 \def (eq_ind nat n (\lambda (n: nat).(drop n O x (CHead x0 (Bind Abst) u1))) 
38418 H13 (r (Bind Abbr) n) H15) in (or_introl (ex2 C (\lambda (d2: C).(drop (S n) 
38419 O (CHead x (Bind Abst) t) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba 
38420 g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: 
38421 A).(drop (S n) O (CHead x (Bind Abst) t) (CHead d2 (Bind Abbr) u2))))) 
38422 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda 
38423 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) 
38424 (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) 
38425 (ex_intro2 C (\lambda (d2: C).(drop (S n) O (CHead x (Bind Abst) t) (CHead d2 
38426 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2)) x0 (drop_drop (Bind Abst) 
38427 n x (CHead x0 (Bind Abst) u1) H16 t) H14))))))) H12)) (\lambda (H12: (ex4_3 C 
38428 T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop n O x (CHead d2 
38429 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
38430 d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 
38431 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 
38432 u2 a)))))).(ex4_3_ind C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: 
38433 A).(drop n O x (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38434 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38435 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38436 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) (or (ex2 C (\lambda (d2: 
38437 C).(drop (S n) O (CHead x (Bind Abst) t) (CHead d2 (Bind Abst) u1))) (\lambda 
38438 (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: 
38439 T).(\lambda (_: A).(drop (S n) O (CHead x (Bind Abst) t) (CHead d2 (Bind 
38440 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 
38441 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc 
38442 g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38443 a)))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: A).(\lambda (H13: 
38444 (drop n O x (CHead x0 (Bind Abbr) x1))).(\lambda (H14: (csuba g d1 
38445 x0)).(\lambda (H15: (arity g d1 u1 (asucc g x2))).(\lambda (H16: (arity g x0 
38446 x1 x2)).(let H17 \def (refl_equal nat (r (Bind Abbr) n)) in (let H18 \def 
38447 (eq_ind nat n (\lambda (n: nat).(drop n O x (CHead x0 (Bind Abbr) x1))) H13 
38448 (r (Bind Abbr) n) H17) in (or_intror (ex2 C (\lambda (d2: C).(drop (S n) O 
38449 (CHead x (Bind Abst) t) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g 
38450 d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop 
38451 (S n) O (CHead x (Bind Abst) t) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38452 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38453 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38454 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (ex4_3_intro C 
38455 T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x 
38456 (Bind Abst) t) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38457 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38458 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38459 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) x0 x1 x2 (drop_drop (Bind Abst) 
38460 n x (CHead x0 (Bind Abbr) x1) H18 t) H14 H15 H16))))))))))) H12)) H11)) c2 
38461 H9)))) H8)) (\lambda (H8: (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: 
38462 T).(\lambda (_: A).(eq C c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38463 C).(\lambda (_: T).(\lambda (_: A).(csuba g c d2)))) (\lambda (_: C).(\lambda 
38464 (_: T).(\lambda (a: A).(arity g c t (asucc g a))))) (\lambda (d2: C).(\lambda 
38465 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))).(ex4_3_ind C T A (\lambda (d2: 
38466 C).(\lambda (u2: T).(\lambda (_: A).(eq C c2 (CHead d2 (Bind Abbr) u2))))) 
38467 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g c d2)))) (\lambda 
38468 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g c t (asucc g a))))) (\lambda 
38469 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) (or (ex2 C 
38470 (\lambda (d2: C).(drop (S n) O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
38471 C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda 
38472 (_: A).(drop (S n) O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38473 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38474 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38475 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (x0: 
38476 C).(\lambda (x1: T).(\lambda (x2: A).(\lambda (H9: (eq C c2 (CHead x0 (Bind 
38477 Abbr) x1))).(\lambda (H10: (csuba g c x0)).(\lambda (_: (arity g c t (asucc g 
38478 x2))).(\lambda (_: (arity g x0 x1 x2)).(eq_ind_r C (CHead x0 (Bind Abbr) x1) 
38479 (\lambda (c0: C).(or (ex2 C (\lambda (d2: C).(drop (S n) O c0 (CHead d2 (Bind 
38480 Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38481 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O c0 (CHead d2 (Bind Abbr) 
38482 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38483 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38484 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38485 a))))))) (let H13 \def (H c d1 u1 H6 g x0 H10) in (or_ind (ex2 C (\lambda 
38486 (d2: C).(drop n O x0 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 
38487 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop n 
38488 O x0 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda 
38489 (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: 
38490 A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda 
38491 (a: A).(arity g d2 u2 a))))) (or (ex2 C (\lambda (d2: C).(drop (S n) O (CHead 
38492 x0 (Bind Abbr) x1) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 
38493 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S 
38494 n) O (CHead x0 (Bind Abbr) x1) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38495 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38496 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38497 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda 
38498 (H14: (ex2 C (\lambda (d2: C).(drop n O x0 (CHead d2 (Bind Abst) u1))) 
38499 (\lambda (d2: C).(csuba g d1 d2)))).(ex2_ind C (\lambda (d2: C).(drop n O x0 
38500 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2)) (or (ex2 C 
38501 (\lambda (d2: C).(drop (S n) O (CHead x0 (Bind Abbr) x1) (CHead d2 (Bind 
38502 Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38503 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x0 (Bind Abbr) x1) 
38504 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38505 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38506 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38507 A).(arity g d2 u2 a)))))) (\lambda (x: C).(\lambda (H15: (drop n O x0 (CHead 
38508 x (Bind Abst) u1))).(\lambda (H16: (csuba g d1 x)).(let H17 \def (refl_equal 
38509 nat (r (Bind Abbr) n)) in (let H18 \def (eq_ind nat n (\lambda (n: nat).(drop 
38510 n O x0 (CHead x (Bind Abst) u1))) H15 (r (Bind Abbr) n) H17) in (or_introl 
38511 (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x0 (Bind Abbr) x1) (CHead d2 
38512 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda 
38513 (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x0 (Bind Abbr) 
38514 x1) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda 
38515 (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: 
38516 A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda 
38517 (a: A).(arity g d2 u2 a))))) (ex_intro2 C (\lambda (d2: C).(drop (S n) O 
38518 (CHead x0 (Bind Abbr) x1) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba 
38519 g d1 d2)) x (drop_drop (Bind Abbr) n x0 (CHead x (Bind Abst) u1) H18 x1) 
38520 H16))))))) H14)) (\lambda (H14: (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: 
38521 T).(\lambda (_: A).(drop n O x0 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38522 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38523 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38524 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))).(ex4_3_ind C 
38525 T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop n O x0 (CHead d2 
38526 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
38527 d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 
38528 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 
38529 u2 a)))) (or (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x0 (Bind Abbr) x1) 
38530 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A 
38531 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x0 
38532 (Bind Abbr) x1) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38533 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38534 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38535 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (x3: C).(\lambda (x4: 
38536 T).(\lambda (x5: A).(\lambda (H15: (drop n O x0 (CHead x3 (Bind Abbr) 
38537 x4))).(\lambda (H16: (csuba g d1 x3)).(\lambda (H17: (arity g d1 u1 (asucc g 
38538 x5))).(\lambda (H18: (arity g x3 x4 x5)).(let H19 \def (refl_equal nat (r 
38539 (Bind Abbr) n)) in (let H20 \def (eq_ind nat n (\lambda (n: nat).(drop n O x0 
38540 (CHead x3 (Bind Abbr) x4))) H15 (r (Bind Abbr) n) H19) in (or_intror (ex2 C 
38541 (\lambda (d2: C).(drop (S n) O (CHead x0 (Bind Abbr) x1) (CHead d2 (Bind 
38542 Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38543 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x0 (Bind Abbr) x1) 
38544 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38545 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38546 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38547 A).(arity g d2 u2 a))))) (ex4_3_intro C T A (\lambda (d2: C).(\lambda (u2: 
38548 T).(\lambda (_: A).(drop (S n) O (CHead x0 (Bind Abbr) x1) (CHead d2 (Bind 
38549 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 
38550 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc 
38551 g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38552 a)))) x3 x4 x5 (drop_drop (Bind Abbr) n x0 (CHead x3 (Bind Abbr) x4) H20 x1) 
38553 H16 H17 H18))))))))))) H14)) H13)) c2 H9)))))))) H8)) H7)))) (\lambda (H5: 
38554 (csuba g (CHead c (Bind Void) t) c2)).(\lambda (H6: (drop (r (Bind Void) n) O 
38555 c (CHead d1 (Bind Abst) u1))).(let H7 \def (csuba_gen_void g c c2 t H5) in 
38556 (ex2_ind C (\lambda (d2: C).(eq C c2 (CHead d2 (Bind Void) t))) (\lambda (d2: 
38557 C).(csuba g c d2)) (or (ex2 C (\lambda (d2: C).(drop (S n) O c2 (CHead d2 
38558 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda 
38559 (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O c2 (CHead d2 (Bind 
38560 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 
38561 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc 
38562 g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38563 a)))))) (\lambda (x: C).(\lambda (H8: (eq C c2 (CHead x (Bind Void) 
38564 t))).(\lambda (H9: (csuba g c x)).(eq_ind_r C (CHead x (Bind Void) t) 
38565 (\lambda (c0: C).(or (ex2 C (\lambda (d2: C).(drop (S n) O c0 (CHead d2 (Bind 
38566 Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38567 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O c0 (CHead d2 (Bind Abbr) 
38568 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38569 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38570 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38571 a))))))) (let H10 \def (H c d1 u1 H6 g x H9) in (or_ind (ex2 C (\lambda (d2: 
38572 C).(drop n O x (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) 
38573 (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop n O x 
38574 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38575 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38576 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38577 A).(arity g d2 u2 a))))) (or (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x 
38578 (Bind Void) t) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) 
38579 (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O 
38580 (CHead x (Bind Void) t) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38581 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38582 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38583 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda 
38584 (H11: (ex2 C (\lambda (d2: C).(drop n O x (CHead d2 (Bind Abst) u1))) 
38585 (\lambda (d2: C).(csuba g d1 d2)))).(ex2_ind C (\lambda (d2: C).(drop n O x 
38586 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2)) (or (ex2 C 
38587 (\lambda (d2: C).(drop (S n) O (CHead x (Bind Void) t) (CHead d2 (Bind Abst) 
38588 u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38589 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x (Bind Void) t) 
38590 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38591 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38592 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38593 A).(arity g d2 u2 a)))))) (\lambda (x0: C).(\lambda (H12: (drop n O x (CHead 
38594 x0 (Bind Abst) u1))).(\lambda (H13: (csuba g d1 x0)).(let H14 \def 
38595 (refl_equal nat (r (Bind Abbr) n)) in (let H15 \def (eq_ind nat n (\lambda 
38596 (n: nat).(drop n O x (CHead x0 (Bind Abst) u1))) H12 (r (Bind Abbr) n) H14) 
38597 in (or_introl (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x (Bind Void) t) 
38598 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A 
38599 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x 
38600 (Bind Void) t) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38601 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38602 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38603 (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (ex_intro2 C (\lambda (d2: 
38604 C).(drop (S n) O (CHead x (Bind Void) t) (CHead d2 (Bind Abst) u1))) (\lambda 
38605 (d2: C).(csuba g d1 d2)) x0 (drop_drop (Bind Void) n x (CHead x0 (Bind Abst) 
38606 u1) H15 t) H13))))))) H11)) (\lambda (H11: (ex4_3 C T A (\lambda (d2: 
38607 C).(\lambda (u2: T).(\lambda (_: A).(drop n O x (CHead d2 (Bind Abbr) u2))))) 
38608 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda 
38609 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) 
38610 (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38611 a)))))).(ex4_3_ind C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: 
38612 A).(drop n O x (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38613 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38614 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38615 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) (or (ex2 C (\lambda (d2: 
38616 C).(drop (S n) O (CHead x (Bind Void) t) (CHead d2 (Bind Abst) u1))) (\lambda 
38617 (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: 
38618 T).(\lambda (_: A).(drop (S n) O (CHead x (Bind Void) t) (CHead d2 (Bind 
38619 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 
38620 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc 
38621 g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38622 a)))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: A).(\lambda (H12: 
38623 (drop n O x (CHead x0 (Bind Abbr) x1))).(\lambda (H13: (csuba g d1 
38624 x0)).(\lambda (H14: (arity g d1 u1 (asucc g x2))).(\lambda (H15: (arity g x0 
38625 x1 x2)).(let H16 \def (refl_equal nat (r (Bind Abbr) n)) in (let H17 \def 
38626 (eq_ind nat n (\lambda (n: nat).(drop n O x (CHead x0 (Bind Abbr) x1))) H12 
38627 (r (Bind Abbr) n) H16) in (or_intror (ex2 C (\lambda (d2: C).(drop (S n) O 
38628 (CHead x (Bind Void) t) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g 
38629 d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop 
38630 (S n) O (CHead x (Bind Void) t) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38631 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38632 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38633 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (ex4_3_intro C 
38634 T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x 
38635 (Bind Void) t) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38636 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38637 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38638 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) x0 x1 x2 (drop_drop (Bind Void) 
38639 n x (CHead x0 (Bind Abbr) x1) H17 t) H13 H14 H15))))))))))) H11)) H10)) c2 
38640 H8)))) H7)))) b H3 H4)))) (\lambda (f: F).(\lambda (H3: (csuba g (CHead c 
38641 (Flat f) t) c2)).(\lambda (H4: (drop (r (Flat f) n) O c (CHead d1 (Bind Abst) 
38642 u1))).(let H5 \def (csuba_gen_flat g c c2 t f H3) in (ex2_2_ind C T (\lambda 
38643 (d2: C).(\lambda (u2: T).(eq C c2 (CHead d2 (Flat f) u2)))) (\lambda (d2: 
38644 C).(\lambda (_: T).(csuba g c d2))) (or (ex2 C (\lambda (d2: C).(drop (S n) O 
38645 c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T 
38646 A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O c2 (CHead 
38647 d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38648 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38649 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38650 A).(arity g d2 u2 a)))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (eq 
38651 C c2 (CHead x0 (Flat f) x1))).(\lambda (H7: (csuba g c x0)).(eq_ind_r C 
38652 (CHead x0 (Flat f) x1) (\lambda (c0: C).(or (ex2 C (\lambda (d2: C).(drop (S 
38653 n) O c0 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 
38654 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O c0 
38655 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38656 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38657 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38658 A).(arity g d2 u2 a))))))) (let H8 \def (H0 d1 u1 H4 g x0 H7) in (or_ind (ex2 
38659 C (\lambda (d2: C).(drop (S n) O x0 (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
38660 C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda 
38661 (_: A).(drop (S n) O x0 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38662 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38663 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38664 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (or (ex2 C 
38665 (\lambda (d2: C).(drop (S n) O (CHead x0 (Flat f) x1) (CHead d2 (Bind Abst) 
38666 u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38667 C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x0 (Flat f) x1) 
38668 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38669 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38670 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38671 A).(arity g d2 u2 a)))))) (\lambda (H9: (ex2 C (\lambda (d2: C).(drop (S n) O 
38672 x0 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2)))).(ex2_ind C 
38673 (\lambda (d2: C).(drop (S n) O x0 (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
38674 C).(csuba g d1 d2)) (or (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x0 (Flat 
38675 f) x1) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 
38676 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead 
38677 x0 (Flat f) x1) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38678 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38679 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38680 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (x: C).(\lambda (H10: 
38681 (drop (S n) O x0 (CHead x (Bind Abst) u1))).(\lambda (H11: (csuba g d1 
38682 x)).(or_introl (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x0 (Flat f) x1) 
38683 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A 
38684 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x0 
38685 (Flat f) x1) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38686 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38687 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38688 (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (ex_intro2 C (\lambda (d2: 
38689 C).(drop (S n) O (CHead x0 (Flat f) x1) (CHead d2 (Bind Abst) u1))) (\lambda 
38690 (d2: C).(csuba g d1 d2)) x (drop_drop (Flat f) n x0 (CHead x (Bind Abst) u1) 
38691 H10 x1) H11))))) H9)) (\lambda (H9: (ex4_3 C T A (\lambda (d2: C).(\lambda 
38692 (u2: T).(\lambda (_: A).(drop (S n) O x0 (CHead d2 (Bind Abbr) u2))))) 
38693 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda 
38694 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) 
38695 (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38696 a)))))).(ex4_3_ind C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: 
38697 A).(drop (S n) O x0 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda 
38698 (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38699 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38700 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) (or (ex2 C (\lambda (d2: 
38701 C).(drop (S n) O (CHead x0 (Flat f) x1) (CHead d2 (Bind Abst) u1))) (\lambda 
38702 (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: 
38703 T).(\lambda (_: A).(drop (S n) O (CHead x0 (Flat f) x1) (CHead d2 (Bind Abbr) 
38704 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38705 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38706 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38707 a)))))) (\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: A).(\lambda (H10: 
38708 (drop (S n) O x0 (CHead x2 (Bind Abbr) x3))).(\lambda (H11: (csuba g d1 
38709 x2)).(\lambda (H12: (arity g d1 u1 (asucc g x4))).(\lambda (H13: (arity g x2 
38710 x3 x4)).(or_intror (ex2 C (\lambda (d2: C).(drop (S n) O (CHead x0 (Flat f) 
38711 x1) (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T 
38712 A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x0 
38713 (Flat f) x1) (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38714 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38715 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38716 (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (ex4_3_intro C T A (\lambda 
38717 (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop (S n) O (CHead x0 (Flat f) x1) 
38718 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38719 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38720 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38721 A).(arity g d2 u2 a)))) x2 x3 x4 (drop_drop (Flat f) n x0 (CHead x2 (Bind 
38722 Abbr) x3) H10 x1) H11 H12 H13))))))))) H9)) H8)) c2 H6))))) H5))))) k H2 
38723 (drop_gen_drop k c (CHead d1 (Bind Abst) u1) t n H1)))))))))))) c1)))) i).
38724
38725 theorem csuba_getl_abbr:
38726  \forall (g: G).(\forall (c1: C).(\forall (d1: C).(\forall (u: T).(\forall 
38727 (i: nat).((getl i c1 (CHead d1 (Bind Abbr) u)) \to (\forall (c2: C).((csuba g 
38728 c1 c2) \to (ex2 C (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abbr) u))) 
38729 (\lambda (d2: C).(csuba g d1 d2))))))))))
38730 \def
38731  \lambda (g: G).(\lambda (c1: C).(\lambda (d1: C).(\lambda (u: T).(\lambda 
38732 (i: nat).(\lambda (H: (getl i c1 (CHead d1 (Bind Abbr) u))).(let H0 \def 
38733 (getl_gen_all c1 (CHead d1 (Bind Abbr) u) i H) in (ex2_ind C (\lambda (e: 
38734 C).(drop i O c1 e)) (\lambda (e: C).(clear e (CHead d1 (Bind Abbr) u))) 
38735 (\forall (c2: C).((csuba g c1 c2) \to (ex2 C (\lambda (d2: C).(getl i c2 
38736 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))))) (\lambda (x: 
38737 C).(\lambda (H1: (drop i O c1 x)).(\lambda (H2: (clear x (CHead d1 (Bind 
38738 Abbr) u))).((match x return (\lambda (c: C).((drop i O c1 c) \to ((clear c 
38739 (CHead d1 (Bind Abbr) u)) \to (\forall (c2: C).((csuba g c1 c2) \to (ex2 C 
38740 (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: 
38741 C).(csuba g d1 d2)))))))) with [(CSort n) \Rightarrow (\lambda (_: (drop i O 
38742 c1 (CSort n))).(\lambda (H4: (clear (CSort n) (CHead d1 (Bind Abbr) 
38743 u))).(clear_gen_sort (CHead d1 (Bind Abbr) u) n H4 (\forall (c2: C).((csuba g 
38744 c1 c2) \to (ex2 C (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abbr) u))) 
38745 (\lambda (d2: C).(csuba g d1 d2)))))))) | (CHead c k t) \Rightarrow (\lambda 
38746 (H3: (drop i O c1 (CHead c k t))).(\lambda (H4: (clear (CHead c k t) (CHead 
38747 d1 (Bind Abbr) u))).((match k return (\lambda (k0: K).((drop i O c1 (CHead c 
38748 k0 t)) \to ((clear (CHead c k0 t) (CHead d1 (Bind Abbr) u)) \to (\forall (c2: 
38749 C).((csuba g c1 c2) \to (ex2 C (\lambda (d2: C).(getl i c2 (CHead d2 (Bind 
38750 Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)))))))) with [(Bind b) \Rightarrow 
38751 (\lambda (H5: (drop i O c1 (CHead c (Bind b) t))).(\lambda (H6: (clear (CHead 
38752 c (Bind b) t) (CHead d1 (Bind Abbr) u))).(let H7 \def (f_equal C C (\lambda 
38753 (e: C).(match e return (\lambda (_: C).C) with [(CSort _) \Rightarrow d1 | 
38754 (CHead c _ _) \Rightarrow c])) (CHead d1 (Bind Abbr) u) (CHead c (Bind b) t) 
38755 (clear_gen_bind b c (CHead d1 (Bind Abbr) u) t H6)) in ((let H8 \def (f_equal 
38756 C B (\lambda (e: C).(match e return (\lambda (_: C).B) with [(CSort _) 
38757 \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
38758 K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d1 
38759 (Bind Abbr) u) (CHead c (Bind b) t) (clear_gen_bind b c (CHead d1 (Bind Abbr) 
38760 u) t H6)) in ((let H9 \def (f_equal C T (\lambda (e: C).(match e return 
38761 (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow 
38762 t])) (CHead d1 (Bind Abbr) u) (CHead c (Bind b) t) (clear_gen_bind b c (CHead 
38763 d1 (Bind Abbr) u) t H6)) in (\lambda (H10: (eq B Abbr b)).(\lambda (H11: (eq 
38764 C d1 c)).(\lambda (c2: C).(\lambda (H12: (csuba g c1 c2)).(let H13 \def 
38765 (eq_ind_r T t (\lambda (t: T).(drop i O c1 (CHead c (Bind b) t))) H5 u H9) in 
38766 (let H14 \def (eq_ind_r B b (\lambda (b: B).(drop i O c1 (CHead c (Bind b) 
38767 u))) H13 Abbr H10) in (let H15 \def (eq_ind_r C c (\lambda (c: C).(drop i O 
38768 c1 (CHead c (Bind Abbr) u))) H14 d1 H11) in (let H16 \def (csuba_drop_abbr i 
38769 c1 d1 u H15 g c2 H12) in (ex2_ind C (\lambda (d2: C).(drop i O c2 (CHead d2 
38770 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) (ex2 C (\lambda (d2: 
38771 C).(getl i c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))) 
38772 (\lambda (x0: C).(\lambda (H17: (drop i O c2 (CHead x0 (Bind Abbr) 
38773 u))).(\lambda (H18: (csuba g d1 x0)).(ex_intro2 C (\lambda (d2: C).(getl i c2 
38774 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2)) x0 (getl_intro i 
38775 c2 (CHead x0 (Bind Abbr) u) (CHead x0 (Bind Abbr) u) H17 (clear_bind Abbr x0 
38776 u)) H18)))) H16)))))))))) H8)) H7)))) | (Flat f) \Rightarrow (\lambda (H5: 
38777 (drop i O c1 (CHead c (Flat f) t))).(\lambda (H6: (clear (CHead c (Flat f) t) 
38778 (CHead d1 (Bind Abbr) u))).(let H7 \def H5 in (unintro C c1 (\lambda (c0: 
38779 C).((drop i O c0 (CHead c (Flat f) t)) \to (\forall (c2: C).((csuba g c0 c2) 
38780 \to (ex2 C (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abbr) u))) (\lambda 
38781 (d2: C).(csuba g d1 d2))))))) (nat_ind (\lambda (n: nat).(\forall (x0: 
38782 C).((drop n O x0 (CHead c (Flat f) t)) \to (\forall (c2: C).((csuba g x0 c2) 
38783 \to (ex2 C (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) u))) (\lambda 
38784 (d2: C).(csuba g d1 d2)))))))) (\lambda (x0: C).(\lambda (H8: (drop O O x0 
38785 (CHead c (Flat f) t))).(\lambda (c2: C).(\lambda (H9: (csuba g x0 c2)).(let 
38786 H10 \def (eq_ind C x0 (\lambda (c: C).(csuba g c c2)) H9 (CHead c (Flat f) t) 
38787 (drop_gen_refl x0 (CHead c (Flat f) t) H8)) in (let H_y \def (clear_flat c 
38788 (CHead d1 (Bind Abbr) u) (clear_gen_flat f c (CHead d1 (Bind Abbr) u) t H6) f 
38789 t) in (let H11 \def (csuba_clear_conf g (CHead c (Flat f) t) c2 H10 (CHead d1 
38790 (Bind Abbr) u) H_y) in (ex2_ind C (\lambda (e2: C).(csuba g (CHead d1 (Bind 
38791 Abbr) u) e2)) (\lambda (e2: C).(clear c2 e2)) (ex2 C (\lambda (d2: C).(getl O 
38792 c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))) (\lambda 
38793 (x1: C).(\lambda (H12: (csuba g (CHead d1 (Bind Abbr) u) x1)).(\lambda (H13: 
38794 (clear c2 x1)).(let H14 \def (csuba_gen_abbr g d1 x1 u H12) in (ex2_ind C 
38795 (\lambda (d2: C).(eq C x1 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba 
38796 g d1 d2)) (ex2 C (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abbr) u))) 
38797 (\lambda (d2: C).(csuba g d1 d2))) (\lambda (x2: C).(\lambda (H15: (eq C x1 
38798 (CHead x2 (Bind Abbr) u))).(\lambda (H16: (csuba g d1 x2)).(let H17 \def 
38799 (eq_ind C x1 (\lambda (c: C).(clear c2 c)) H13 (CHead x2 (Bind Abbr) u) H15) 
38800 in (ex_intro2 C (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abbr) u))) 
38801 (\lambda (d2: C).(csuba g d1 d2)) x2 (getl_intro O c2 (CHead x2 (Bind Abbr) 
38802 u) c2 (drop_refl c2) H17) H16))))) H14))))) H11)))))))) (\lambda (n: 
38803 nat).(\lambda (H8: ((\forall (x: C).((drop n O x (CHead c (Flat f) t)) \to 
38804 (\forall (c2: C).((csuba g x c2) \to (ex2 C (\lambda (d2: C).(getl n c2 
38805 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))))))))).(\lambda 
38806 (x0: C).(\lambda (H9: (drop (S n) O x0 (CHead c (Flat f) t))).(\lambda (c2: 
38807 C).(\lambda (H10: (csuba g x0 c2)).(let H11 \def (drop_clear x0 (CHead c 
38808 (Flat f) t) n H9) in (ex2_3_ind B C T (\lambda (b: B).(\lambda (e: 
38809 C).(\lambda (v: T).(clear x0 (CHead e (Bind b) v))))) (\lambda (_: 
38810 B).(\lambda (e: C).(\lambda (_: T).(drop n O e (CHead c (Flat f) t))))) (ex2 
38811 C (\lambda (d2: C).(getl (S n) c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: 
38812 C).(csuba g d1 d2))) (\lambda (x1: B).(\lambda (x2: C).(\lambda (x3: 
38813 T).(\lambda (H12: (clear x0 (CHead x2 (Bind x1) x3))).(\lambda (H13: (drop n 
38814 O x2 (CHead c (Flat f) t))).(let H14 \def (csuba_clear_conf g x0 c2 H10 
38815 (CHead x2 (Bind x1) x3) H12) in (ex2_ind C (\lambda (e2: C).(csuba g (CHead 
38816 x2 (Bind x1) x3) e2)) (\lambda (e2: C).(clear c2 e2)) (ex2 C (\lambda (d2: 
38817 C).(getl (S n) c2 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 
38818 d2))) (\lambda (x4: C).(\lambda (H15: (csuba g (CHead x2 (Bind x1) x3) 
38819 x4)).(\lambda (H16: (clear c2 x4)).(let H17 \def (csuba_gen_bind g x1 x2 x4 
38820 x3 H15) in (ex2_3_ind B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: 
38821 T).(eq C x4 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: 
38822 C).(\lambda (_: T).(csuba g x2 e2)))) (ex2 C (\lambda (d2: C).(getl (S n) c2 
38823 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))) (\lambda (x5: 
38824 B).(\lambda (x6: C).(\lambda (x7: T).(\lambda (H18: (eq C x4 (CHead x6 (Bind 
38825 x5) x7))).(\lambda (H19: (csuba g x2 x6)).(let H20 \def (eq_ind C x4 (\lambda 
38826 (c: C).(clear c2 c)) H16 (CHead x6 (Bind x5) x7) H18) in (let H21 \def (H8 x2 
38827 H13 x6 H19) in (ex2_ind C (\lambda (d2: C).(getl n x6 (CHead d2 (Bind Abbr) 
38828 u))) (\lambda (d2: C).(csuba g d1 d2)) (ex2 C (\lambda (d2: C).(getl (S n) c2 
38829 (CHead d2 (Bind Abbr) u))) (\lambda (d2: C).(csuba g d1 d2))) (\lambda (x8: 
38830 C).(\lambda (H22: (getl n x6 (CHead x8 (Bind Abbr) u))).(\lambda (H23: (csuba 
38831 g d1 x8)).(ex_intro2 C (\lambda (d2: C).(getl (S n) c2 (CHead d2 (Bind Abbr) 
38832 u))) (\lambda (d2: C).(csuba g d1 d2)) x8 (getl_clear_bind x5 c2 x6 x7 H20 
38833 (CHead x8 (Bind Abbr) u) n H22) H23)))) H21)))))))) H17))))) H14))))))) 
38834 H11)))))))) i) H7))))]) H3 H4)))]) H1 H2)))) H0))))))).
38835
38836 theorem csuba_getl_abst:
38837  \forall (g: G).(\forall (c1: C).(\forall (d1: C).(\forall (u1: T).(\forall 
38838 (i: nat).((getl i c1 (CHead d1 (Bind Abst) u1)) \to (\forall (c2: C).((csuba 
38839 g c1 c2) \to (or (ex2 C (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abst) 
38840 u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
38841 C).(\lambda (u2: T).(\lambda (_: A).(getl i c2 (CHead d2 (Bind Abbr) u2))))) 
38842 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda 
38843 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) 
38844 (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38845 a)))))))))))))
38846 \def
38847  \lambda (g: G).(\lambda (c1: C).(\lambda (d1: C).(\lambda (u1: T).(\lambda 
38848 (i: nat).(\lambda (H: (getl i c1 (CHead d1 (Bind Abst) u1))).(let H0 \def 
38849 (getl_gen_all c1 (CHead d1 (Bind Abst) u1) i H) in (ex2_ind C (\lambda (e: 
38850 C).(drop i O c1 e)) (\lambda (e: C).(clear e (CHead d1 (Bind Abst) u1))) 
38851 (\forall (c2: C).((csuba g c1 c2) \to (or (ex2 C (\lambda (d2: C).(getl i c2 
38852 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A 
38853 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl i c2 (CHead d2 (Bind 
38854 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 
38855 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc 
38856 g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38857 a)))))))) (\lambda (x: C).(\lambda (H1: (drop i O c1 x)).(\lambda (H2: (clear 
38858 x (CHead d1 (Bind Abst) u1))).((match x return (\lambda (c: C).((drop i O c1 
38859 c) \to ((clear c (CHead d1 (Bind Abst) u1)) \to (\forall (c2: C).((csuba g c1 
38860 c2) \to (or (ex2 C (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abst) u1))) 
38861 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
38862 (u2: T).(\lambda (_: A).(getl i c2 (CHead d2 (Bind Abbr) u2))))) (\lambda 
38863 (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38864 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38865 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))))))))) with 
38866 [(CSort n) \Rightarrow (\lambda (_: (drop i O c1 (CSort n))).(\lambda (H4: 
38867 (clear (CSort n) (CHead d1 (Bind Abst) u1))).(clear_gen_sort (CHead d1 (Bind 
38868 Abst) u1) n H4 (\forall (c2: C).((csuba g c1 c2) \to (or (ex2 C (\lambda (d2: 
38869 C).(getl i c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) 
38870 (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl i c2 
38871 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38872 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38873 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38874 A).(arity g d2 u2 a))))))))))) | (CHead c k t) \Rightarrow (\lambda (H3: 
38875 (drop i O c1 (CHead c k t))).(\lambda (H4: (clear (CHead c k t) (CHead d1 
38876 (Bind Abst) u1))).((match k return (\lambda (k0: K).((drop i O c1 (CHead c k0 
38877 t)) \to ((clear (CHead c k0 t) (CHead d1 (Bind Abst) u1)) \to (\forall (c2: 
38878 C).((csuba g c1 c2) \to (or (ex2 C (\lambda (d2: C).(getl i c2 (CHead d2 
38879 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda 
38880 (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl i c2 (CHead d2 (Bind Abbr) 
38881 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38882 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38883 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38884 a))))))))))) with [(Bind b) \Rightarrow (\lambda (H5: (drop i O c1 (CHead c 
38885 (Bind b) t))).(\lambda (H6: (clear (CHead c (Bind b) t) (CHead d1 (Bind Abst) 
38886 u1))).(let H7 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: 
38887 C).C) with [(CSort _) \Rightarrow d1 | (CHead c _ _) \Rightarrow c])) (CHead 
38888 d1 (Bind Abst) u1) (CHead c (Bind b) t) (clear_gen_bind b c (CHead d1 (Bind 
38889 Abst) u1) t H6)) in ((let H8 \def (f_equal C B (\lambda (e: C).(match e 
38890 return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abst | (CHead _ k _) 
38891 \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | 
38892 (Flat _) \Rightarrow Abst])])) (CHead d1 (Bind Abst) u1) (CHead c (Bind b) t) 
38893 (clear_gen_bind b c (CHead d1 (Bind Abst) u1) t H6)) in ((let H9 \def 
38894 (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort 
38895 _) \Rightarrow u1 | (CHead _ _ t) \Rightarrow t])) (CHead d1 (Bind Abst) u1) 
38896 (CHead c (Bind b) t) (clear_gen_bind b c (CHead d1 (Bind Abst) u1) t H6)) in 
38897 (\lambda (H10: (eq B Abst b)).(\lambda (H11: (eq C d1 c)).(\lambda (c2: 
38898 C).(\lambda (H12: (csuba g c1 c2)).(let H13 \def (eq_ind_r T t (\lambda (t: 
38899 T).(drop i O c1 (CHead c (Bind b) t))) H5 u1 H9) in (let H14 \def (eq_ind_r B 
38900 b (\lambda (b: B).(drop i O c1 (CHead c (Bind b) u1))) H13 Abst H10) in (let 
38901 H15 \def (eq_ind_r C c (\lambda (c: C).(drop i O c1 (CHead c (Bind Abst) 
38902 u1))) H14 d1 H11) in (let H16 \def (csuba_drop_abst i c1 d1 u1 H15 g c2 H12) 
38903 in (or_ind (ex2 C (\lambda (d2: C).(drop i O c2 (CHead d2 (Bind Abst) u1))) 
38904 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
38905 (u2: T).(\lambda (_: A).(drop i O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda 
38906 (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38907 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38908 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (or (ex2 C 
38909 (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
38910 C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda 
38911 (_: A).(getl i c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38912 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38913 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38914 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (H17: (ex2 C (\lambda 
38915 (d2: C).(drop i O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 
38916 d2)))).(ex2_ind C (\lambda (d2: C).(drop i O c2 (CHead d2 (Bind Abst) u1))) 
38917 (\lambda (d2: C).(csuba g d1 d2)) (or (ex2 C (\lambda (d2: C).(getl i c2 
38918 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A 
38919 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl i c2 (CHead d2 (Bind 
38920 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 
38921 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc 
38922 g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38923 a)))))) (\lambda (x0: C).(\lambda (H18: (drop i O c2 (CHead x0 (Bind Abst) 
38924 u1))).(\lambda (H19: (csuba g d1 x0)).(or_introl (ex2 C (\lambda (d2: 
38925 C).(getl i c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) 
38926 (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl i c2 
38927 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
38928 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
38929 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
38930 A).(arity g d2 u2 a))))) (ex_intro2 C (\lambda (d2: C).(getl i c2 (CHead d2 
38931 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2)) x0 (getl_intro i c2 
38932 (CHead x0 (Bind Abst) u1) (CHead x0 (Bind Abst) u1) H18 (clear_bind Abst x0 
38933 u1)) H19))))) H17)) (\lambda (H17: (ex4_3 C T A (\lambda (d2: C).(\lambda 
38934 (u2: T).(\lambda (_: A).(drop i O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda 
38935 (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38936 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38937 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))).(ex4_3_ind C 
38938 T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(drop i O c2 (CHead d2 
38939 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
38940 d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 
38941 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 
38942 u2 a)))) (or (ex2 C (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abst) u1))) 
38943 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
38944 (u2: T).(\lambda (_: A).(getl i c2 (CHead d2 (Bind Abbr) u2))))) (\lambda 
38945 (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38946 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38947 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (x0: 
38948 C).(\lambda (x1: T).(\lambda (x2: A).(\lambda (H18: (drop i O c2 (CHead x0 
38949 (Bind Abbr) x1))).(\lambda (H19: (csuba g d1 x0)).(\lambda (H20: (arity g d1 
38950 u1 (asucc g x2))).(\lambda (H21: (arity g x0 x1 x2)).(or_intror (ex2 C 
38951 (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
38952 C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda 
38953 (_: A).(getl i c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
38954 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
38955 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
38956 (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (ex4_3_intro C T A (\lambda 
38957 (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl i c2 (CHead d2 (Bind Abbr) 
38958 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38959 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38960 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) 
38961 x0 x1 x2 (getl_intro i c2 (CHead x0 (Bind Abbr) x1) (CHead x0 (Bind Abbr) x1) 
38962 H18 (clear_bind Abbr x0 x1)) H19 H20 H21))))))))) H17)) H16)))))))))) H8)) 
38963 H7)))) | (Flat f) \Rightarrow (\lambda (H5: (drop i O c1 (CHead c (Flat f) 
38964 t))).(\lambda (H6: (clear (CHead c (Flat f) t) (CHead d1 (Bind Abst) 
38965 u1))).(let H7 \def H5 in (unintro C c1 (\lambda (c0: C).((drop i O c0 (CHead 
38966 c (Flat f) t)) \to (\forall (c2: C).((csuba g c0 c2) \to (or (ex2 C (\lambda 
38967 (d2: C).(getl i c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 
38968 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl i 
38969 c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda 
38970 (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: 
38971 A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda 
38972 (a: A).(arity g d2 u2 a)))))))))) (nat_ind (\lambda (n: nat).(\forall (x0: 
38973 C).((drop n O x0 (CHead c (Flat f) t)) \to (\forall (c2: C).((csuba g x0 c2) 
38974 \to (or (ex2 C (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) u1))) 
38975 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
38976 (u2: T).(\lambda (_: A).(getl n c2 (CHead d2 (Bind Abbr) u2))))) (\lambda 
38977 (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38978 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
38979 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))))))))) (\lambda 
38980 (x0: C).(\lambda (H8: (drop O O x0 (CHead c (Flat f) t))).(\lambda (c2: 
38981 C).(\lambda (H9: (csuba g x0 c2)).(let H10 \def (eq_ind C x0 (\lambda (c: 
38982 C).(csuba g c c2)) H9 (CHead c (Flat f) t) (drop_gen_refl x0 (CHead c (Flat 
38983 f) t) H8)) in (let H_y \def (clear_flat c (CHead d1 (Bind Abst) u1) 
38984 (clear_gen_flat f c (CHead d1 (Bind Abst) u1) t H6) f t) in (let H11 \def 
38985 (csuba_clear_conf g (CHead c (Flat f) t) c2 H10 (CHead d1 (Bind Abst) u1) 
38986 H_y) in (ex2_ind C (\lambda (e2: C).(csuba g (CHead d1 (Bind Abst) u1) e2)) 
38987 (\lambda (e2: C).(clear c2 e2)) (or (ex2 C (\lambda (d2: C).(getl O c2 (CHead 
38988 d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda 
38989 (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl O c2 (CHead d2 (Bind Abbr) 
38990 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
38991 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
38992 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
38993 a)))))) (\lambda (x1: C).(\lambda (H12: (csuba g (CHead d1 (Bind Abst) u1) 
38994 x1)).(\lambda (H13: (clear c2 x1)).(let H14 \def (csuba_gen_abst g d1 x1 u1 
38995 H12) in (or_ind (ex2 C (\lambda (d2: C).(eq C x1 (CHead d2 (Bind Abst) u1))) 
38996 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
38997 (u2: T).(\lambda (_: A).(eq C x1 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
38998 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
38999 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
39000 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (or (ex2 C 
39001 (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
39002 C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda 
39003 (_: A).(getl O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
39004 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
39005 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
39006 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (H15: (ex2 C (\lambda 
39007 (d2: C).(eq C x1 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 
39008 d2)))).(ex2_ind C (\lambda (d2: C).(eq C x1 (CHead d2 (Bind Abst) u1))) 
39009 (\lambda (d2: C).(csuba g d1 d2)) (or (ex2 C (\lambda (d2: C).(getl O c2 
39010 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A 
39011 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl O c2 (CHead d2 (Bind 
39012 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 
39013 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc 
39014 g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
39015 a)))))) (\lambda (x2: C).(\lambda (H16: (eq C x1 (CHead x2 (Bind Abst) 
39016 u1))).(\lambda (H17: (csuba g d1 x2)).(let H18 \def (eq_ind C x1 (\lambda (c: 
39017 C).(clear c2 c)) H13 (CHead x2 (Bind Abst) u1) H16) in (or_introl (ex2 C 
39018 (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: 
39019 C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda 
39020 (_: A).(getl O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
39021 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
39022 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
39023 (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (ex_intro2 C (\lambda (d2: 
39024 C).(getl O c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2)) 
39025 x2 (getl_intro O c2 (CHead x2 (Bind Abst) u1) c2 (drop_refl c2) H18) 
39026 H17)))))) H15)) (\lambda (H15: (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: 
39027 T).(\lambda (_: A).(eq C x1 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: 
39028 C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
39029 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
39030 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))).(ex4_3_ind C 
39031 T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(eq C x1 (CHead d2 
39032 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
39033 d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 
39034 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 
39035 u2 a)))) (or (ex2 C (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) u1))) 
39036 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
39037 (u2: T).(\lambda (_: A).(getl O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda 
39038 (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
39039 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
39040 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (x2: 
39041 C).(\lambda (x3: T).(\lambda (x4: A).(\lambda (H16: (eq C x1 (CHead x2 (Bind 
39042 Abbr) x3))).(\lambda (H17: (csuba g d1 x2)).(\lambda (H18: (arity g d1 u1 
39043 (asucc g x4))).(\lambda (H19: (arity g x2 x3 x4)).(let H20 \def (eq_ind C x1 
39044 (\lambda (c: C).(clear c2 c)) H13 (CHead x2 (Bind Abbr) x3) H16) in 
39045 (or_intror (ex2 C (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) u1))) 
39046 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
39047 (u2: T).(\lambda (_: A).(getl O c2 (CHead d2 (Bind Abbr) u2))))) (\lambda 
39048 (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
39049 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
39050 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a))))) (ex4_3_intro C 
39051 T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl O c2 (CHead d2 
39052 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
39053 d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 
39054 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 
39055 u2 a)))) x2 x3 x4 (getl_intro O c2 (CHead x2 (Bind Abbr) x3) c2 (drop_refl 
39056 c2) H20) H17 H18 H19)))))))))) H15)) H14))))) H11)))))))) (\lambda (n: 
39057 nat).(\lambda (H8: ((\forall (x: C).((drop n O x (CHead c (Flat f) t)) \to 
39058 (\forall (c2: C).((csuba g x c2) \to (or (ex2 C (\lambda (d2: C).(getl n c2 
39059 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A 
39060 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl n c2 (CHead d2 (Bind 
39061 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 
39062 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc 
39063 g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
39064 a)))))))))))).(\lambda (x0: C).(\lambda (H9: (drop (S n) O x0 (CHead c (Flat 
39065 f) t))).(\lambda (c2: C).(\lambda (H10: (csuba g x0 c2)).(let H11 \def 
39066 (drop_clear x0 (CHead c (Flat f) t) n H9) in (ex2_3_ind B C T (\lambda (b: 
39067 B).(\lambda (e: C).(\lambda (v: T).(clear x0 (CHead e (Bind b) v))))) 
39068 (\lambda (_: B).(\lambda (e: C).(\lambda (_: T).(drop n O e (CHead c (Flat f) 
39069 t))))) (or (ex2 C (\lambda (d2: C).(getl (S n) c2 (CHead d2 (Bind Abst) u1))) 
39070 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
39071 (u2: T).(\lambda (_: A).(getl (S n) c2 (CHead d2 (Bind Abbr) u2))))) (\lambda 
39072 (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
39073 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
39074 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (x1: 
39075 B).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H12: (clear x0 (CHead x2 (Bind 
39076 x1) x3))).(\lambda (H13: (drop n O x2 (CHead c (Flat f) t))).(let H14 \def 
39077 (csuba_clear_conf g x0 c2 H10 (CHead x2 (Bind x1) x3) H12) in (ex2_ind C 
39078 (\lambda (e2: C).(csuba g (CHead x2 (Bind x1) x3) e2)) (\lambda (e2: 
39079 C).(clear c2 e2)) (or (ex2 C (\lambda (d2: C).(getl (S n) c2 (CHead d2 (Bind 
39080 Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: 
39081 C).(\lambda (u2: T).(\lambda (_: A).(getl (S n) c2 (CHead d2 (Bind Abbr) 
39082 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
39083 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
39084 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
39085 a)))))) (\lambda (x4: C).(\lambda (H15: (csuba g (CHead x2 (Bind x1) x3) 
39086 x4)).(\lambda (H16: (clear c2 x4)).(let H17 \def (csuba_gen_bind g x1 x2 x4 
39087 x3 H15) in (ex2_3_ind B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: 
39088 T).(eq C x4 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: 
39089 C).(\lambda (_: T).(csuba g x2 e2)))) (or (ex2 C (\lambda (d2: C).(getl (S n) 
39090 c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T 
39091 A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl (S n) c2 (CHead d2 
39092 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
39093 d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 
39094 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 
39095 u2 a)))))) (\lambda (x5: B).(\lambda (x6: C).(\lambda (x7: T).(\lambda (H18: 
39096 (eq C x4 (CHead x6 (Bind x5) x7))).(\lambda (H19: (csuba g x2 x6)).(let H20 
39097 \def (eq_ind C x4 (\lambda (c: C).(clear c2 c)) H16 (CHead x6 (Bind x5) x7) 
39098 H18) in (let H21 \def (H8 x2 H13 x6 H19) in (or_ind (ex2 C (\lambda (d2: 
39099 C).(getl n x6 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) 
39100 (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl n x6 
39101 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: 
39102 A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity 
39103 g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: 
39104 A).(arity g d2 u2 a))))) (or (ex2 C (\lambda (d2: C).(getl (S n) c2 (CHead d2 
39105 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda 
39106 (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl (S n) c2 (CHead d2 (Bind Abbr) 
39107 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
39108 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
39109 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
39110 a)))))) (\lambda (H22: (ex2 C (\lambda (d2: C).(getl n x6 (CHead d2 (Bind 
39111 Abst) u1))) (\lambda (d2: C).(csuba g d1 d2)))).(ex2_ind C (\lambda (d2: 
39112 C).(getl n x6 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2)) 
39113 (or (ex2 C (\lambda (d2: C).(getl (S n) c2 (CHead d2 (Bind Abst) u1))) 
39114 (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda 
39115 (u2: T).(\lambda (_: A).(getl (S n) c2 (CHead d2 (Bind Abbr) u2))))) (\lambda 
39116 (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: 
39117 C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda 
39118 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))) (\lambda (x8: 
39119 C).(\lambda (H23: (getl n x6 (CHead x8 (Bind Abst) u1))).(\lambda (H24: 
39120 (csuba g d1 x8)).(or_introl (ex2 C (\lambda (d2: C).(getl (S n) c2 (CHead d2 
39121 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda 
39122 (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl (S n) c2 (CHead d2 (Bind Abbr) 
39123 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
39124 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
39125 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
39126 a))))) (ex_intro2 C (\lambda (d2: C).(getl (S n) c2 (CHead d2 (Bind Abst) 
39127 u1))) (\lambda (d2: C).(csuba g d1 d2)) x8 (getl_clear_bind x5 c2 x6 x7 H20 
39128 (CHead x8 (Bind Abst) u1) n H23) H24))))) H22)) (\lambda (H22: (ex4_3 C T A 
39129 (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl n x6 (CHead d2 (Bind 
39130 Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 
39131 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc 
39132 g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
39133 a)))))).(ex4_3_ind C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: 
39134 A).(getl n x6 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
39135 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
39136 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
39137 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) (or (ex2 C (\lambda (d2: 
39138 C).(getl (S n) c2 (CHead d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 
39139 d2))) (ex4_3 C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl (S 
39140 n) c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda 
39141 (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: 
39142 A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda 
39143 (a: A).(arity g d2 u2 a)))))) (\lambda (x8: C).(\lambda (x9: T).(\lambda 
39144 (x10: A).(\lambda (H23: (getl n x6 (CHead x8 (Bind Abbr) x9))).(\lambda (H24: 
39145 (csuba g d1 x8)).(\lambda (H25: (arity g d1 u1 (asucc g x10))).(\lambda (H26: 
39146 (arity g x8 x9 x10)).(or_intror (ex2 C (\lambda (d2: C).(getl (S n) c2 (CHead 
39147 d2 (Bind Abst) u1))) (\lambda (d2: C).(csuba g d1 d2))) (ex4_3 C T A (\lambda 
39148 (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl (S n) c2 (CHead d2 (Bind Abbr) 
39149 u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d1 d2)))) 
39150 (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d1 u1 (asucc g 
39151 a))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 
39152 a))))) (ex4_3_intro C T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: 
39153 A).(getl (S n) c2 (CHead d2 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: 
39154 T).(\lambda (_: A).(csuba g d1 d2)))) (\lambda (_: C).(\lambda (_: 
39155 T).(\lambda (a: A).(arity g d1 u1 (asucc g a))))) (\lambda (d2: C).(\lambda 
39156 (u2: T).(\lambda (a: A).(arity g d2 u2 a)))) x8 x9 x10 (getl_clear_bind x5 c2 
39157 x6 x7 H20 (CHead x8 (Bind Abbr) x9) n H23) H24 H25 H26))))))))) H22)) 
39158 H21)))))))) H17))))) H14))))))) H11)))))))) i) H7))))]) H3 H4)))]) H1 H2)))) 
39159 H0))))))).
39160
39161 theorem csuba_arity:
39162  \forall (g: G).(\forall (c1: C).(\forall (t: T).(\forall (a: A).((arity g c1 
39163 t a) \to (\forall (c2: C).((csuba g c1 c2) \to (arity g c2 t a)))))))
39164 \def
39165  \lambda (g: G).(\lambda (c1: C).(\lambda (t: T).(\lambda (a: A).(\lambda (H: 
39166 (arity g c1 t a)).(arity_ind g (\lambda (c: C).(\lambda (t0: T).(\lambda (a0: 
39167 A).(\forall (c2: C).((csuba g c c2) \to (arity g c2 t0 a0)))))) (\lambda (c: 
39168 C).(\lambda (n: nat).(\lambda (c2: C).(\lambda (_: (csuba g c 
39169 c2)).(arity_sort g c2 n))))) (\lambda (c: C).(\lambda (d: C).(\lambda (u: 
39170 T).(\lambda (i: nat).(\lambda (H0: (getl i c (CHead d (Bind Abbr) 
39171 u))).(\lambda (a0: A).(\lambda (_: (arity g d u a0)).(\lambda (H2: ((\forall 
39172 (c2: C).((csuba g d c2) \to (arity g c2 u a0))))).(\lambda (c2: C).(\lambda 
39173 (H3: (csuba g c c2)).(let H4 \def (csuba_getl_abbr g c d u i H0 c2 H3) in 
39174 (ex2_ind C (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abbr) u))) (\lambda 
39175 (d2: C).(csuba g d d2)) (arity g c2 (TLRef i) a0) (\lambda (x: C).(\lambda 
39176 (H5: (getl i c2 (CHead x (Bind Abbr) u))).(\lambda (H6: (csuba g d 
39177 x)).(arity_abbr g c2 x u i H5 a0 (H2 x H6))))) H4)))))))))))) (\lambda (c: 
39178 C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c 
39179 (CHead d (Bind Abst) u))).(\lambda (a0: A).(\lambda (H1: (arity g d u (asucc 
39180 g a0))).(\lambda (H2: ((\forall (c2: C).((csuba g d c2) \to (arity g c2 u 
39181 (asucc g a0)))))).(\lambda (c2: C).(\lambda (H3: (csuba g c c2)).(let H4 \def 
39182 (csuba_getl_abst g c d u i H0 c2 H3) in (or_ind (ex2 C (\lambda (d2: C).(getl 
39183 i c2 (CHead d2 (Bind Abst) u))) (\lambda (d2: C).(csuba g d d2))) (ex4_3 C T 
39184 A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl i c2 (CHead d2 
39185 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
39186 d d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a1: A).(arity g d u (asucc 
39187 g a1))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a1: A).(arity g d2 u2 
39188 a1))))) (arity g c2 (TLRef i) a0) (\lambda (H5: (ex2 C (\lambda (d2: C).(getl 
39189 i c2 (CHead d2 (Bind Abst) u))) (\lambda (d2: C).(csuba g d d2)))).(ex2_ind C 
39190 (\lambda (d2: C).(getl i c2 (CHead d2 (Bind Abst) u))) (\lambda (d2: 
39191 C).(csuba g d d2)) (arity g c2 (TLRef i) a0) (\lambda (x: C).(\lambda (H6: 
39192 (getl i c2 (CHead x (Bind Abst) u))).(\lambda (H7: (csuba g d x)).(arity_abst 
39193 g c2 x u i H6 a0 (H2 x H7))))) H5)) (\lambda (H5: (ex4_3 C T A (\lambda (d2: 
39194 C).(\lambda (u2: T).(\lambda (_: A).(getl i c2 (CHead d2 (Bind Abbr) u2))))) 
39195 (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g d d2)))) (\lambda 
39196 (_: C).(\lambda (_: T).(\lambda (a: A).(arity g d u (asucc g a))))) (\lambda 
39197 (d2: C).(\lambda (u2: T).(\lambda (a: A).(arity g d2 u2 a)))))).(ex4_3_ind C 
39198 T A (\lambda (d2: C).(\lambda (u2: T).(\lambda (_: A).(getl i c2 (CHead d2 
39199 (Bind Abbr) u2))))) (\lambda (d2: C).(\lambda (_: T).(\lambda (_: A).(csuba g 
39200 d d2)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a1: A).(arity g d u (asucc 
39201 g a1))))) (\lambda (d2: C).(\lambda (u2: T).(\lambda (a1: A).(arity g d2 u2 
39202 a1)))) (arity g c2 (TLRef i) a0) (\lambda (x0: C).(\lambda (x1: T).(\lambda 
39203 (x2: A).(\lambda (H6: (getl i c2 (CHead x0 (Bind Abbr) x1))).(\lambda (_: 
39204 (csuba g d x0)).(\lambda (H8: (arity g d u (asucc g x2))).(\lambda (H9: 
39205 (arity g x0 x1 x2)).(arity_repl g c2 (TLRef i) x2 (arity_abbr g c2 x0 x1 i H6 
39206 x2 H9) a0 (asucc_inj g x2 a0 (arity_mono g d u (asucc g x2) H8 (asucc g a0) 
39207 H1)))))))))) H5)) H4)))))))))))) (\lambda (b: B).(\lambda (H0: (not (eq B b 
39208 Abst))).(\lambda (c: C).(\lambda (u: T).(\lambda (a1: A).(\lambda (_: (arity 
39209 g c u a1)).(\lambda (H2: ((\forall (c2: C).((csuba g c c2) \to (arity g c2 u 
39210 a1))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (_: (arity g (CHead c 
39211 (Bind b) u) t0 a2)).(\lambda (H4: ((\forall (c2: C).((csuba g (CHead c (Bind 
39212 b) u) c2) \to (arity g c2 t0 a2))))).(\lambda (c2: C).(\lambda (H5: (csuba g 
39213 c c2)).(arity_bind g b H0 c2 u a1 (H2 c2 H5) t0 a2 (H4 (CHead c2 (Bind b) u) 
39214 (csuba_head g c c2 H5 (Bind b) u)))))))))))))))) (\lambda (c: C).(\lambda (u: 
39215 T).(\lambda (a1: A).(\lambda (_: (arity g c u (asucc g a1))).(\lambda (H1: 
39216 ((\forall (c2: C).((csuba g c c2) \to (arity g c2 u (asucc g 
39217 a1)))))).(\lambda (t0: T).(\lambda (a2: A).(\lambda (_: (arity g (CHead c 
39218 (Bind Abst) u) t0 a2)).(\lambda (H3: ((\forall (c2: C).((csuba g (CHead c 
39219 (Bind Abst) u) c2) \to (arity g c2 t0 a2))))).(\lambda (c2: C).(\lambda (H4: 
39220 (csuba g c c2)).(arity_head g c2 u a1 (H1 c2 H4) t0 a2 (H3 (CHead c2 (Bind 
39221 Abst) u) (csuba_head g c c2 H4 (Bind Abst) u)))))))))))))) (\lambda (c: 
39222 C).(\lambda (u: T).(\lambda (a1: A).(\lambda (_: (arity g c u a1)).(\lambda 
39223 (H1: ((\forall (c2: C).((csuba g c c2) \to (arity g c2 u a1))))).(\lambda 
39224 (t0: T).(\lambda (a2: A).(\lambda (_: (arity g c t0 (AHead a1 a2))).(\lambda 
39225 (H3: ((\forall (c2: C).((csuba g c c2) \to (arity g c2 t0 (AHead a1 
39226 a2)))))).(\lambda (c2: C).(\lambda (H4: (csuba g c c2)).(arity_appl g c2 u a1 
39227 (H1 c2 H4) t0 a2 (H3 c2 H4))))))))))))) (\lambda (c: C).(\lambda (u: 
39228 T).(\lambda (a0: A).(\lambda (_: (arity g c u (asucc g a0))).(\lambda (H1: 
39229 ((\forall (c2: C).((csuba g c c2) \to (arity g c2 u (asucc g 
39230 a0)))))).(\lambda (t0: T).(\lambda (_: (arity g c t0 a0)).(\lambda (H3: 
39231 ((\forall (c2: C).((csuba g c c2) \to (arity g c2 t0 a0))))).(\lambda (c2: 
39232 C).(\lambda (H4: (csuba g c c2)).(arity_cast g c2 u a0 (H1 c2 H4) t0 (H3 c2 
39233 H4)))))))))))) (\lambda (c: C).(\lambda (t0: T).(\lambda (a1: A).(\lambda (_: 
39234 (arity g c t0 a1)).(\lambda (H1: ((\forall (c2: C).((csuba g c c2) \to (arity 
39235 g c2 t0 a1))))).(\lambda (a2: A).(\lambda (H2: (leq g a1 a2)).(\lambda (c2: 
39236 C).(\lambda (H3: (csuba g c c2)).(arity_repl g c2 t0 a1 (H1 c2 H3) a2 
39237 H2)))))))))) c1 t a H))))).
39238
39239 axiom csuba_arity_rev:
39240  \forall (g: G).(\forall (c1: C).(\forall (t: T).(\forall (a: A).((arity g c1 
39241 t a) \to (\forall (c2: C).((csuba g c2 c1) \to (arity g c2 t a)))))))
39242 .
39243
39244 theorem arity_appls_appl:
39245  \forall (g: G).(\forall (c: C).(\forall (v: T).(\forall (a1: A).((arity g c 
39246 v a1) \to (\forall (u: T).((arity g c u (asucc g a1)) \to (\forall (t: 
39247 T).(\forall (vs: TList).(\forall (a2: A).((arity g c (THeads (Flat Appl) vs 
39248 (THead (Bind Abbr) v t)) a2) \to (arity g c (THeads (Flat Appl) vs (THead 
39249 (Flat Appl) v (THead (Bind Abst) u t))) a2)))))))))))
39250 \def
39251  \lambda (g: G).(\lambda (c: C).(\lambda (v: T).(\lambda (a1: A).(\lambda (H: 
39252 (arity g c v a1)).(\lambda (u: T).(\lambda (H0: (arity g c u (asucc g 
39253 a1))).(\lambda (t: T).(\lambda (vs: TList).(TList_ind (\lambda (t0: 
39254 TList).(\forall (a2: A).((arity g c (THeads (Flat Appl) t0 (THead (Bind Abbr) 
39255 v t)) a2) \to (arity g c (THeads (Flat Appl) t0 (THead (Flat Appl) v (THead 
39256 (Bind Abst) u t))) a2)))) (\lambda (a2: A).(\lambda (H1: (arity g c (THead 
39257 (Bind Abbr) v t) a2)).(let H_x \def (arity_gen_bind Abbr (\lambda (H2: (eq B 
39258 Abbr Abst)).(not_abbr_abst H2)) g c v t a2 H1) in (let H2 \def H_x in 
39259 (ex2_ind A (\lambda (a3: A).(arity g c v a3)) (\lambda (_: A).(arity g (CHead 
39260 c (Bind Abbr) v) t a2)) (arity g c (THead (Flat Appl) v (THead (Bind Abst) u 
39261 t)) a2) (\lambda (x: A).(\lambda (_: (arity g c v x)).(\lambda (H4: (arity g 
39262 (CHead c (Bind Abbr) v) t a2)).(arity_appl g c v a1 H (THead (Bind Abst) u t) 
39263 a2 (arity_head g c u a1 H0 t a2 (csuba_arity_rev g (CHead c (Bind Abbr) v) t 
39264 a2 H4 (CHead c (Bind Abst) u) (csuba_abst g c c (csuba_refl g c) u a1 H0 v 
39265 H))))))) H2))))) (\lambda (t0: T).(\lambda (t1: TList).(\lambda (H1: 
39266 ((\forall (a2: A).((arity g c (THeads (Flat Appl) t1 (THead (Bind Abbr) v t)) 
39267 a2) \to (arity g c (THeads (Flat Appl) t1 (THead (Flat Appl) v (THead (Bind 
39268 Abst) u t))) a2))))).(\lambda (a2: A).(\lambda (H2: (arity g c (THead (Flat 
39269 Appl) t0 (THeads (Flat Appl) t1 (THead (Bind Abbr) v t))) a2)).(let H3 \def 
39270 (arity_gen_appl g c t0 (THeads (Flat Appl) t1 (THead (Bind Abbr) v t)) a2 H2) 
39271 in (ex2_ind A (\lambda (a3: A).(arity g c t0 a3)) (\lambda (a3: A).(arity g c 
39272 (THeads (Flat Appl) t1 (THead (Bind Abbr) v t)) (AHead a3 a2))) (arity g c 
39273 (THead (Flat Appl) t0 (THeads (Flat Appl) t1 (THead (Flat Appl) v (THead 
39274 (Bind Abst) u t)))) a2) (\lambda (x: A).(\lambda (H4: (arity g c t0 
39275 x)).(\lambda (H5: (arity g c (THeads (Flat Appl) t1 (THead (Bind Abbr) v t)) 
39276 (AHead x a2))).(arity_appl g c t0 x H4 (THeads (Flat Appl) t1 (THead (Flat 
39277 Appl) v (THead (Bind Abst) u t))) a2 (H1 (AHead x a2) H5))))) H3))))))) 
39278 vs))))))))).
39279
39280 theorem arity_sred_wcpr0_pr0:
39281  \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (a: A).((arity g 
39282 c1 t1 a) \to (\forall (c2: C).((wcpr0 c1 c2) \to (\forall (t2: T).((pr0 t1 
39283 t2) \to (arity g c2 t2 a)))))))))
39284 \def
39285  \lambda (g: G).(\lambda (c1: C).(\lambda (t1: T).(\lambda (a: A).(\lambda 
39286 (H: (arity g c1 t1 a)).(arity_ind g (\lambda (c: C).(\lambda (t: T).(\lambda 
39287 (a0: A).(\forall (c2: C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 t t2) \to 
39288 (arity g c2 t2 a0)))))))) (\lambda (c: C).(\lambda (n: nat).(\lambda (c2: 
39289 C).(\lambda (_: (wcpr0 c c2)).(\lambda (t2: T).(\lambda (H1: (pr0 (TSort n) 
39290 t2)).(eq_ind_r T (TSort n) (\lambda (t: T).(arity g c2 t (ASort O n))) 
39291 (arity_sort g c2 n) t2 (pr0_gen_sort t2 n H1)))))))) (\lambda (c: C).(\lambda 
39292 (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c (CHead d 
39293 (Bind Abbr) u))).(\lambda (a0: A).(\lambda (_: (arity g d u a0)).(\lambda 
39294 (H2: ((\forall (c2: C).((wcpr0 d c2) \to (\forall (t2: T).((pr0 u t2) \to 
39295 (arity g c2 t2 a0))))))).(\lambda (c2: C).(\lambda (H3: (wcpr0 c 
39296 c2)).(\lambda (t2: T).(\lambda (H4: (pr0 (TLRef i) t2)).(eq_ind_r T (TLRef i) 
39297 (\lambda (t: T).(arity g c2 t a0)) (ex3_2_ind C T (\lambda (e2: C).(\lambda 
39298 (u2: T).(getl i c2 (CHead e2 (Bind Abbr) u2)))) (\lambda (e2: C).(\lambda (_: 
39299 T).(wcpr0 d e2))) (\lambda (_: C).(\lambda (u2: T).(pr0 u u2))) (arity g c2 
39300 (TLRef i) a0) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H5: (getl i c2 
39301 (CHead x0 (Bind Abbr) x1))).(\lambda (H6: (wcpr0 d x0)).(\lambda (H7: (pr0 u 
39302 x1)).(arity_abbr g c2 x0 x1 i H5 a0 (H2 x0 H6 x1 H7))))))) (wcpr0_getl c c2 
39303 H3 i d u (Bind Abbr) H0)) t2 (pr0_gen_lref t2 i H4)))))))))))))) (\lambda (c: 
39304 C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c 
39305 (CHead d (Bind Abst) u))).(\lambda (a0: A).(\lambda (_: (arity g d u (asucc g 
39306 a0))).(\lambda (H2: ((\forall (c2: C).((wcpr0 d c2) \to (\forall (t2: 
39307 T).((pr0 u t2) \to (arity g c2 t2 (asucc g a0)))))))).(\lambda (c2: 
39308 C).(\lambda (H3: (wcpr0 c c2)).(\lambda (t2: T).(\lambda (H4: (pr0 (TLRef i) 
39309 t2)).(eq_ind_r T (TLRef i) (\lambda (t: T).(arity g c2 t a0)) (ex3_2_ind C T 
39310 (\lambda (e2: C).(\lambda (u2: T).(getl i c2 (CHead e2 (Bind Abst) u2)))) 
39311 (\lambda (e2: C).(\lambda (_: T).(wcpr0 d e2))) (\lambda (_: C).(\lambda (u2: 
39312 T).(pr0 u u2))) (arity g c2 (TLRef i) a0) (\lambda (x0: C).(\lambda (x1: 
39313 T).(\lambda (H5: (getl i c2 (CHead x0 (Bind Abst) x1))).(\lambda (H6: (wcpr0 
39314 d x0)).(\lambda (H7: (pr0 u x1)).(arity_abst g c2 x0 x1 i H5 a0 (H2 x0 H6 x1 
39315 H7))))))) (wcpr0_getl c c2 H3 i d u (Bind Abst) H0)) t2 (pr0_gen_lref t2 i 
39316 H4)))))))))))))) (\lambda (b: B).(\lambda (H0: (not (eq B b Abst))).(\lambda 
39317 (c: C).(\lambda (u: T).(\lambda (a1: A).(\lambda (_: (arity g c u 
39318 a1)).(\lambda (H2: ((\forall (c2: C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 
39319 u t2) \to (arity g c2 t2 a1))))))).(\lambda (t: T).(\lambda (a2: A).(\lambda 
39320 (H3: (arity g (CHead c (Bind b) u) t a2)).(\lambda (H4: ((\forall (c2: 
39321 C).((wcpr0 (CHead c (Bind b) u) c2) \to (\forall (t2: T).((pr0 t t2) \to 
39322 (arity g c2 t2 a2))))))).(\lambda (c2: C).(\lambda (H5: (wcpr0 c 
39323 c2)).(\lambda (t2: T).(\lambda (H6: (pr0 (THead (Bind b) u t) t2)).(insert_eq 
39324 T (THead (Bind b) u t) (\lambda (t0: T).(pr0 t0 t2)) (arity g c2 t2 a2) 
39325 (\lambda (y: T).(\lambda (H7: (pr0 y t2)).(pr0_ind (\lambda (t0: T).(\lambda 
39326 (t3: T).((eq T t0 (THead (Bind b) u t)) \to (arity g c2 t3 a2)))) (\lambda 
39327 (t0: T).(\lambda (H8: (eq T t0 (THead (Bind b) u t))).(let H9 \def (f_equal T 
39328 T (\lambda (e: T).e) t0 (THead (Bind b) u t) H8) in (eq_ind_r T (THead (Bind 
39329 b) u t) (\lambda (t3: T).(arity g c2 t3 a2)) (arity_bind g b H0 c2 u a1 (H2 
39330 c2 H5 u (pr0_refl u)) t a2 (H4 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H5 u u 
39331 (pr0_refl u) (Bind b)) t (pr0_refl t))) t0 H9)))) (\lambda (u1: T).(\lambda 
39332 (u2: T).(\lambda (H8: (pr0 u1 u2)).(\lambda (H9: (((eq T u1 (THead (Bind b) u 
39333 t)) \to (arity g c2 u2 a2)))).(\lambda (t3: T).(\lambda (t4: T).(\lambda 
39334 (H10: (pr0 t3 t4)).(\lambda (H11: (((eq T t3 (THead (Bind b) u t)) \to (arity 
39335 g c2 t4 a2)))).(\lambda (k: K).(\lambda (H12: (eq T (THead k u1 t3) (THead 
39336 (Bind b) u t))).(let H13 \def (f_equal T K (\lambda (e: T).(match e return 
39337 (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | 
39338 (THead k _ _) \Rightarrow k])) (THead k u1 t3) (THead (Bind b) u t) H12) in 
39339 ((let H14 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
39340 T).T) with [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t 
39341 _) \Rightarrow t])) (THead k u1 t3) (THead (Bind b) u t) H12) in ((let H15 
39342 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
39343 [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t) 
39344 \Rightarrow t])) (THead k u1 t3) (THead (Bind b) u t) H12) in (\lambda (H16: 
39345 (eq T u1 u)).(\lambda (H17: (eq K k (Bind b))).(eq_ind_r K (Bind b) (\lambda 
39346 (k0: K).(arity g c2 (THead k0 u2 t4) a2)) (let H18 \def (eq_ind T t3 (\lambda 
39347 (t0: T).((eq T t0 (THead (Bind b) u t)) \to (arity g c2 t4 a2))) H11 t H15) 
39348 in (let H19 \def (eq_ind T t3 (\lambda (t: T).(pr0 t t4)) H10 t H15) in (let 
39349 H20 \def (eq_ind T u1 (\lambda (t0: T).((eq T t0 (THead (Bind b) u t)) \to 
39350 (arity g c2 u2 a2))) H9 u H16) in (let H21 \def (eq_ind T u1 (\lambda (t: 
39351 T).(pr0 t u2)) H8 u H16) in (arity_bind g b H0 c2 u2 a1 (H2 c2 H5 u2 H21) t4 
39352 a2 (H4 (CHead c2 (Bind b) u2) (wcpr0_comp c c2 H5 u u2 H21 (Bind b)) t4 
39353 H19)))))) k H17)))) H14)) H13)))))))))))) (\lambda (u0: T).(\lambda (v1: 
39354 T).(\lambda (v2: T).(\lambda (_: (pr0 v1 v2)).(\lambda (_: (((eq T v1 (THead 
39355 (Bind b) u t)) \to (arity g c2 v2 a2)))).(\lambda (t3: T).(\lambda (t4: 
39356 T).(\lambda (_: (pr0 t3 t4)).(\lambda (_: (((eq T t3 (THead (Bind b) u t)) 
39357 \to (arity g c2 t4 a2)))).(\lambda (H12: (eq T (THead (Flat Appl) v1 (THead 
39358 (Bind Abst) u0 t3)) (THead (Bind b) u t))).(let H13 \def (eq_ind T (THead 
39359 (Flat Appl) v1 (THead (Bind Abst) u0 t3)) (\lambda (ee: T).(match ee return 
39360 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
39361 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
39362 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
39363 (THead (Bind b) u t) H12) in (False_ind (arity g c2 (THead (Bind Abbr) v2 t4) 
39364 a2) H13)))))))))))) (\lambda (b0: B).(\lambda (_: (not (eq B b0 
39365 Abst))).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: (pr0 v1 v2)).(\lambda 
39366 (_: (((eq T v1 (THead (Bind b) u t)) \to (arity g c2 v2 a2)))).(\lambda (u1: 
39367 T).(\lambda (u2: T).(\lambda (_: (pr0 u1 u2)).(\lambda (_: (((eq T u1 (THead 
39368 (Bind b) u t)) \to (arity g c2 u2 a2)))).(\lambda (t3: T).(\lambda (t4: 
39369 T).(\lambda (_: (pr0 t3 t4)).(\lambda (_: (((eq T t3 (THead (Bind b) u t)) 
39370 \to (arity g c2 t4 a2)))).(\lambda (H15: (eq T (THead (Flat Appl) v1 (THead 
39371 (Bind b0) u1 t3)) (THead (Bind b) u t))).(let H16 \def (eq_ind T (THead (Flat 
39372 Appl) v1 (THead (Bind b0) u1 t3)) (\lambda (ee: T).(match ee return (\lambda 
39373 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
39374 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
39375 _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u t) 
39376 H15) in (False_ind (arity g c2 (THead (Bind b0) u2 (THead (Flat Appl) (lift 
39377 (S O) O v2) t4)) a2) H16))))))))))))))))) (\lambda (u1: T).(\lambda (u2: 
39378 T).(\lambda (H8: (pr0 u1 u2)).(\lambda (H9: (((eq T u1 (THead (Bind b) u t)) 
39379 \to (arity g c2 u2 a2)))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H10: 
39380 (pr0 t3 t4)).(\lambda (H11: (((eq T t3 (THead (Bind b) u t)) \to (arity g c2 
39381 t4 a2)))).(\lambda (w: T).(\lambda (H12: (subst0 O u2 t4 w)).(\lambda (H13: 
39382 (eq T (THead (Bind Abbr) u1 t3) (THead (Bind b) u t))).(let H14 \def (f_equal 
39383 T B (\lambda (e: T).(match e return (\lambda (_: T).B) with [(TSort _) 
39384 \Rightarrow Abbr | (TLRef _) \Rightarrow Abbr | (THead k _ _) \Rightarrow 
39385 (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) 
39386 \Rightarrow Abbr])])) (THead (Bind Abbr) u1 t3) (THead (Bind b) u t) H13) in 
39387 ((let H15 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
39388 T).T) with [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t 
39389 _) \Rightarrow t])) (THead (Bind Abbr) u1 t3) (THead (Bind b) u t) H13) in 
39390 ((let H16 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
39391 T).T) with [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ 
39392 t) \Rightarrow t])) (THead (Bind Abbr) u1 t3) (THead (Bind b) u t) H13) in 
39393 (\lambda (H17: (eq T u1 u)).(\lambda (H18: (eq B Abbr b)).(let H19 \def 
39394 (eq_ind T t3 (\lambda (t0: T).((eq T t0 (THead (Bind b) u t)) \to (arity g c2 
39395 t4 a2))) H11 t H16) in (let H20 \def (eq_ind T t3 (\lambda (t: T).(pr0 t t4)) 
39396 H10 t H16) in (let H21 \def (eq_ind T u1 (\lambda (t0: T).((eq T t0 (THead 
39397 (Bind b) u t)) \to (arity g c2 u2 a2))) H9 u H17) in (let H22 \def (eq_ind T 
39398 u1 (\lambda (t: T).(pr0 t u2)) H8 u H17) in (let H23 \def (eq_ind_r B b 
39399 (\lambda (b: B).((eq T t (THead (Bind b) u t)) \to (arity g c2 t4 a2))) H19 
39400 Abbr H18) in (let H24 \def (eq_ind_r B b (\lambda (b: B).((eq T u (THead 
39401 (Bind b) u t)) \to (arity g c2 u2 a2))) H21 Abbr H18) in (let H25 \def 
39402 (eq_ind_r B b (\lambda (b: B).(\forall (c2: C).((wcpr0 (CHead c (Bind b) u) 
39403 c2) \to (\forall (t2: T).((pr0 t t2) \to (arity g c2 t2 a2)))))) H4 Abbr H18) 
39404 in (let H26 \def (eq_ind_r B b (\lambda (b: B).(arity g (CHead c (Bind b) u) 
39405 t a2)) H3 Abbr H18) in (let H27 \def (eq_ind_r B b (\lambda (b: B).(not (eq B 
39406 b Abst))) H0 Abbr H18) in (arity_bind g Abbr H27 c2 u2 a1 (H2 c2 H5 u2 H22) w 
39407 a2 (arity_subst0 g (CHead c2 (Bind Abbr) u2) t4 a2 (H25 (CHead c2 (Bind Abbr) 
39408 u2) (wcpr0_comp c c2 H5 u u2 H22 (Bind Abbr)) t4 H20) c2 u2 O (getl_refl Abbr 
39409 c2 u2) w H12)))))))))))))) H15)) H14))))))))))))) (\lambda (b0: B).(\lambda 
39410 (H8: (not (eq B b0 Abst))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H9: 
39411 (pr0 t3 t4)).(\lambda (H10: (((eq T t3 (THead (Bind b) u t)) \to (arity g c2 
39412 t4 a2)))).(\lambda (u0: T).(\lambda (H11: (eq T (THead (Bind b0) u0 (lift (S 
39413 O) O t3)) (THead (Bind b) u t))).(let H12 \def (f_equal T B (\lambda (e: 
39414 T).(match e return (\lambda (_: T).B) with [(TSort _) \Rightarrow b0 | (TLRef 
39415 _) \Rightarrow b0 | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
39416 K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b0])])) (THead 
39417 (Bind b0) u0 (lift (S O) O t3)) (THead (Bind b) u t) H11) in ((let H13 \def 
39418 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
39419 _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) 
39420 (THead (Bind b0) u0 (lift (S O) O t3)) (THead (Bind b) u t) H11) in ((let H14 
39421 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
39422 [(TSort _) \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: 
39423 T) on t: T \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) 
39424 \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | false 
39425 \Rightarrow (f i)])) | (THead k u t0) \Rightarrow (THead k (lref_map f d u) 
39426 (lref_map f (s k d) t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O 
39427 t3) | (TLRef _) \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) 
39428 (t: T) on t: T \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef 
39429 i) \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | false 
39430 \Rightarrow (f i)])) | (THead k u t0) \Rightarrow (THead k (lref_map f d u) 
39431 (lref_map f (s k d) t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O 
39432 t3) | (THead _ _ t) \Rightarrow t])) (THead (Bind b0) u0 (lift (S O) O t3)) 
39433 (THead (Bind b) u t) H11) in (\lambda (_: (eq T u0 u)).(\lambda (H16: (eq B 
39434 b0 b)).(let H17 \def (eq_ind B b0 (\lambda (b: B).(not (eq B b Abst))) H8 b 
39435 H16) in (let H18 \def (eq_ind_r T t (\lambda (t: T).((eq T t3 (THead (Bind b) 
39436 u t)) \to (arity g c2 t4 a2))) H10 (lift (S O) O t3) H14) in (let H19 \def 
39437 (eq_ind_r T t (\lambda (t: T).(\forall (c2: C).((wcpr0 (CHead c (Bind b) u) 
39438 c2) \to (\forall (t2: T).((pr0 t t2) \to (arity g c2 t2 a2)))))) H4 (lift (S 
39439 O) O t3) H14) in (let H20 \def (eq_ind_r T t (\lambda (t: T).(arity g (CHead 
39440 c (Bind b) u) t a2)) H3 (lift (S O) O t3) H14) in (arity_gen_lift g (CHead c2 
39441 (Bind b) u) t4 a2 (S O) O (H19 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H5 u u 
39442 (pr0_refl u) (Bind b)) (lift (S O) O t4) (pr0_lift t3 t4 H9 (S O) O)) c2 
39443 (drop_drop (Bind b) O c2 c2 (drop_refl c2) u))))))))) H13)) H12)))))))))) 
39444 (\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (pr0 t3 t4)).(\lambda (_: 
39445 (((eq T t3 (THead (Bind b) u t)) \to (arity g c2 t4 a2)))).(\lambda (u0: 
39446 T).(\lambda (H10: (eq T (THead (Flat Cast) u0 t3) (THead (Bind b) u t))).(let 
39447 H11 \def (eq_ind T (THead (Flat Cast) u0 t3) (\lambda (ee: T).(match ee 
39448 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
39449 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
39450 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
39451 (THead (Bind b) u t) H10) in (False_ind (arity g c2 t4 a2) H11)))))))) y t2 
39452 H7))) H6)))))))))))))))) (\lambda (c: C).(\lambda (u: T).(\lambda (a1: 
39453 A).(\lambda (_: (arity g c u (asucc g a1))).(\lambda (H1: ((\forall (c2: 
39454 C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 u t2) \to (arity g c2 t2 (asucc g 
39455 a1)))))))).(\lambda (t: T).(\lambda (a2: A).(\lambda (H2: (arity g (CHead c 
39456 (Bind Abst) u) t a2)).(\lambda (H3: ((\forall (c2: C).((wcpr0 (CHead c (Bind 
39457 Abst) u) c2) \to (\forall (t2: T).((pr0 t t2) \to (arity g c2 t2 
39458 a2))))))).(\lambda (c2: C).(\lambda (H4: (wcpr0 c c2)).(\lambda (t2: 
39459 T).(\lambda (H5: (pr0 (THead (Bind Abst) u t) t2)).(insert_eq T (THead (Bind 
39460 Abst) u t) (\lambda (t0: T).(pr0 t0 t2)) (arity g c2 t2 (AHead a1 a2)) 
39461 (\lambda (y: T).(\lambda (H6: (pr0 y t2)).(pr0_ind (\lambda (t0: T).(\lambda 
39462 (t3: T).((eq T t0 (THead (Bind Abst) u t)) \to (arity g c2 t3 (AHead a1 
39463 a2))))) (\lambda (t0: T).(\lambda (H7: (eq T t0 (THead (Bind Abst) u 
39464 t))).(let H8 \def (f_equal T T (\lambda (e: T).e) t0 (THead (Bind Abst) u t) 
39465 H7) in (eq_ind_r T (THead (Bind Abst) u t) (\lambda (t3: T).(arity g c2 t3 
39466 (AHead a1 a2))) (arity_head g c2 u a1 (H1 c2 H4 u (pr0_refl u)) t a2 (H3 
39467 (CHead c2 (Bind Abst) u) (wcpr0_comp c c2 H4 u u (pr0_refl u) (Bind Abst)) t 
39468 (pr0_refl t))) t0 H8)))) (\lambda (u1: T).(\lambda (u2: T).(\lambda (H7: (pr0 
39469 u1 u2)).(\lambda (H8: (((eq T u1 (THead (Bind Abst) u t)) \to (arity g c2 u2 
39470 (AHead a1 a2))))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H9: (pr0 t3 
39471 t4)).(\lambda (H10: (((eq T t3 (THead (Bind Abst) u t)) \to (arity g c2 t4 
39472 (AHead a1 a2))))).(\lambda (k: K).(\lambda (H11: (eq T (THead k u1 t3) (THead 
39473 (Bind Abst) u t))).(let H12 \def (f_equal T K (\lambda (e: T).(match e return 
39474 (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | 
39475 (THead k _ _) \Rightarrow k])) (THead k u1 t3) (THead (Bind Abst) u t) H11) 
39476 in ((let H13 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
39477 T).T) with [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t 
39478 _) \Rightarrow t])) (THead k u1 t3) (THead (Bind Abst) u t) H11) in ((let H14 
39479 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
39480 [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t) 
39481 \Rightarrow t])) (THead k u1 t3) (THead (Bind Abst) u t) H11) in (\lambda 
39482 (H15: (eq T u1 u)).(\lambda (H16: (eq K k (Bind Abst))).(eq_ind_r K (Bind 
39483 Abst) (\lambda (k0: K).(arity g c2 (THead k0 u2 t4) (AHead a1 a2))) (let H17 
39484 \def (eq_ind T t3 (\lambda (t0: T).((eq T t0 (THead (Bind Abst) u t)) \to 
39485 (arity g c2 t4 (AHead a1 a2)))) H10 t H14) in (let H18 \def (eq_ind T t3 
39486 (\lambda (t: T).(pr0 t t4)) H9 t H14) in (let H19 \def (eq_ind T u1 (\lambda 
39487 (t0: T).((eq T t0 (THead (Bind Abst) u t)) \to (arity g c2 u2 (AHead a1 
39488 a2)))) H8 u H15) in (let H20 \def (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) H7 
39489 u H15) in (arity_head g c2 u2 a1 (H1 c2 H4 u2 H20) t4 a2 (H3 (CHead c2 (Bind 
39490 Abst) u2) (wcpr0_comp c c2 H4 u u2 H20 (Bind Abst)) t4 H18)))))) k H16)))) 
39491 H13)) H12)))))))))))) (\lambda (u0: T).(\lambda (v1: T).(\lambda (v2: 
39492 T).(\lambda (_: (pr0 v1 v2)).(\lambda (_: (((eq T v1 (THead (Bind Abst) u t)) 
39493 \to (arity g c2 v2 (AHead a1 a2))))).(\lambda (t3: T).(\lambda (t4: 
39494 T).(\lambda (_: (pr0 t3 t4)).(\lambda (_: (((eq T t3 (THead (Bind Abst) u t)) 
39495 \to (arity g c2 t4 (AHead a1 a2))))).(\lambda (H11: (eq T (THead (Flat Appl) 
39496 v1 (THead (Bind Abst) u0 t3)) (THead (Bind Abst) u t))).(let H12 \def (eq_ind 
39497 T (THead (Flat Appl) v1 (THead (Bind Abst) u0 t3)) (\lambda (ee: T).(match ee 
39498 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
39499 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
39500 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
39501 (THead (Bind Abst) u t) H11) in (False_ind (arity g c2 (THead (Bind Abbr) v2 
39502 t4) (AHead a1 a2)) H12)))))))))))) (\lambda (b: B).(\lambda (_: (not (eq B b 
39503 Abst))).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: (pr0 v1 v2)).(\lambda 
39504 (_: (((eq T v1 (THead (Bind Abst) u t)) \to (arity g c2 v2 (AHead a1 
39505 a2))))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (_: (pr0 u1 u2)).(\lambda 
39506 (_: (((eq T u1 (THead (Bind Abst) u t)) \to (arity g c2 u2 (AHead a1 
39507 a2))))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (pr0 t3 t4)).(\lambda 
39508 (_: (((eq T t3 (THead (Bind Abst) u t)) \to (arity g c2 t4 (AHead a1 
39509 a2))))).(\lambda (H14: (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t3)) 
39510 (THead (Bind Abst) u t))).(let H15 \def (eq_ind T (THead (Flat Appl) v1 
39511 (THead (Bind b) u1 t3)) (\lambda (ee: T).(match ee return (\lambda (_: 
39512 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
39513 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
39514 _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind Abst) u 
39515 t) H14) in (False_ind (arity g c2 (THead (Bind b) u2 (THead (Flat Appl) (lift 
39516 (S O) O v2) t4)) (AHead a1 a2)) H15))))))))))))))))) (\lambda (u1: 
39517 T).(\lambda (u2: T).(\lambda (_: (pr0 u1 u2)).(\lambda (_: (((eq T u1 (THead 
39518 (Bind Abst) u t)) \to (arity g c2 u2 (AHead a1 a2))))).(\lambda (t3: 
39519 T).(\lambda (t4: T).(\lambda (_: (pr0 t3 t4)).(\lambda (_: (((eq T t3 (THead 
39520 (Bind Abst) u t)) \to (arity g c2 t4 (AHead a1 a2))))).(\lambda (w: 
39521 T).(\lambda (_: (subst0 O u2 t4 w)).(\lambda (H12: (eq T (THead (Bind Abbr) 
39522 u1 t3) (THead (Bind Abst) u t))).(let H13 \def (eq_ind T (THead (Bind Abbr) 
39523 u1 t3) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort 
39524 _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
39525 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow 
39526 (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow True | Abst 
39527 \Rightarrow False | Void \Rightarrow False]) | (Flat _) \Rightarrow 
39528 False])])) I (THead (Bind Abst) u t) H12) in (False_ind (arity g c2 (THead 
39529 (Bind Abbr) u2 w) (AHead a1 a2)) H13))))))))))))) (\lambda (b: B).(\lambda 
39530 (H7: (not (eq B b Abst))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (pr0 
39531 t3 t4)).(\lambda (H9: (((eq T t3 (THead (Bind Abst) u t)) \to (arity g c2 t4 
39532 (AHead a1 a2))))).(\lambda (u0: T).(\lambda (H10: (eq T (THead (Bind b) u0 
39533 (lift (S O) O t3)) (THead (Bind Abst) u t))).(let H11 \def (f_equal T B 
39534 (\lambda (e: T).(match e return (\lambda (_: T).B) with [(TSort _) 
39535 \Rightarrow b | (TLRef _) \Rightarrow b | (THead k _ _) \Rightarrow (match k 
39536 return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
39537 b])])) (THead (Bind b) u0 (lift (S O) O t3)) (THead (Bind Abst) u t) H10) in 
39538 ((let H12 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
39539 T).T) with [(TSort _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t 
39540 _) \Rightarrow t])) (THead (Bind b) u0 (lift (S O) O t3)) (THead (Bind Abst) 
39541 u t) H10) in ((let H13 \def (f_equal T T (\lambda (e: T).(match e return 
39542 (\lambda (_: T).T) with [(TSort _) \Rightarrow ((let rec lref_map (f: ((nat 
39543 \to nat))) (d: nat) (t: T) on t: T \def (match t with [(TSort n) \Rightarrow 
39544 (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d) with [true 
39545 \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow 
39546 (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda 
39547 (x: nat).(plus x (S O))) O t3) | (TLRef _) \Rightarrow ((let rec lref_map (f: 
39548 ((nat \to nat))) (d: nat) (t: T) on t: T \def (match t with [(TSort n) 
39549 \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d) with 
39550 [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow 
39551 (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda 
39552 (x: nat).(plus x (S O))) O t3) | (THead _ _ t) \Rightarrow t])) (THead (Bind 
39553 b) u0 (lift (S O) O t3)) (THead (Bind Abst) u t) H10) in (\lambda (_: (eq T 
39554 u0 u)).(\lambda (H15: (eq B b Abst)).(let H16 \def (eq_ind B b (\lambda (b: 
39555 B).(not (eq B b Abst))) H7 Abst H15) in (let H17 \def (eq_ind_r T t (\lambda 
39556 (t: T).((eq T t3 (THead (Bind Abst) u t)) \to (arity g c2 t4 (AHead a1 a2)))) 
39557 H9 (lift (S O) O t3) H13) in (let H18 \def (eq_ind_r T t (\lambda (t: 
39558 T).(\forall (c2: C).((wcpr0 (CHead c (Bind Abst) u) c2) \to (\forall (t2: 
39559 T).((pr0 t t2) \to (arity g c2 t2 a2)))))) H3 (lift (S O) O t3) H13) in (let 
39560 H19 \def (eq_ind_r T t (\lambda (t: T).(arity g (CHead c (Bind Abst) u) t 
39561 a2)) H2 (lift (S O) O t3) H13) in (let H20 \def (match (H16 (refl_equal B 
39562 Abst)) return (\lambda (_: False).(arity g c2 t4 (AHead a1 a2))) with []) in 
39563 H20)))))))) H12)) H11)))))))))) (\lambda (t3: T).(\lambda (t4: T).(\lambda 
39564 (_: (pr0 t3 t4)).(\lambda (_: (((eq T t3 (THead (Bind Abst) u t)) \to (arity 
39565 g c2 t4 (AHead a1 a2))))).(\lambda (u0: T).(\lambda (H9: (eq T (THead (Flat 
39566 Cast) u0 t3) (THead (Bind Abst) u t))).(let H10 \def (eq_ind T (THead (Flat 
39567 Cast) u0 t3) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with 
39568 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
39569 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
39570 False | (Flat _) \Rightarrow True])])) I (THead (Bind Abst) u t) H9) in 
39571 (False_ind (arity g c2 t4 (AHead a1 a2)) H10)))))))) y t2 H6))) 
39572 H5)))))))))))))) (\lambda (c: C).(\lambda (u: T).(\lambda (a1: A).(\lambda 
39573 (_: (arity g c u a1)).(\lambda (H1: ((\forall (c2: C).((wcpr0 c c2) \to 
39574 (\forall (t2: T).((pr0 u t2) \to (arity g c2 t2 a1))))))).(\lambda (t: 
39575 T).(\lambda (a2: A).(\lambda (H2: (arity g c t (AHead a1 a2))).(\lambda (H3: 
39576 ((\forall (c2: C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 t t2) \to (arity g 
39577 c2 t2 (AHead a1 a2)))))))).(\lambda (c2: C).(\lambda (H4: (wcpr0 c 
39578 c2)).(\lambda (t2: T).(\lambda (H5: (pr0 (THead (Flat Appl) u t) 
39579 t2)).(insert_eq T (THead (Flat Appl) u t) (\lambda (t0: T).(pr0 t0 t2)) 
39580 (arity g c2 t2 a2) (\lambda (y: T).(\lambda (H6: (pr0 y t2)).(pr0_ind 
39581 (\lambda (t0: T).(\lambda (t3: T).((eq T t0 (THead (Flat Appl) u t)) \to 
39582 (arity g c2 t3 a2)))) (\lambda (t0: T).(\lambda (H7: (eq T t0 (THead (Flat 
39583 Appl) u t))).(let H8 \def (f_equal T T (\lambda (e: T).e) t0 (THead (Flat 
39584 Appl) u t) H7) in (eq_ind_r T (THead (Flat Appl) u t) (\lambda (t3: T).(arity 
39585 g c2 t3 a2)) (arity_appl g c2 u a1 (H1 c2 H4 u (pr0_refl u)) t a2 (H3 c2 H4 t 
39586 (pr0_refl t))) t0 H8)))) (\lambda (u1: T).(\lambda (u2: T).(\lambda (H7: (pr0 
39587 u1 u2)).(\lambda (H8: (((eq T u1 (THead (Flat Appl) u t)) \to (arity g c2 u2 
39588 a2)))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H9: (pr0 t3 t4)).(\lambda 
39589 (H10: (((eq T t3 (THead (Flat Appl) u t)) \to (arity g c2 t4 a2)))).(\lambda 
39590 (k: K).(\lambda (H11: (eq T (THead k u1 t3) (THead (Flat Appl) u t))).(let 
39591 H12 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) with 
39592 [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
39593 \Rightarrow k])) (THead k u1 t3) (THead (Flat Appl) u t) H11) in ((let H13 
39594 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
39595 [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t _) 
39596 \Rightarrow t])) (THead k u1 t3) (THead (Flat Appl) u t) H11) in ((let H14 
39597 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
39598 [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t) 
39599 \Rightarrow t])) (THead k u1 t3) (THead (Flat Appl) u t) H11) in (\lambda 
39600 (H15: (eq T u1 u)).(\lambda (H16: (eq K k (Flat Appl))).(eq_ind_r K (Flat 
39601 Appl) (\lambda (k0: K).(arity g c2 (THead k0 u2 t4) a2)) (let H17 \def 
39602 (eq_ind T t3 (\lambda (t0: T).((eq T t0 (THead (Flat Appl) u t)) \to (arity g 
39603 c2 t4 a2))) H10 t H14) in (let H18 \def (eq_ind T t3 (\lambda (t: T).(pr0 t 
39604 t4)) H9 t H14) in (let H19 \def (eq_ind T u1 (\lambda (t0: T).((eq T t0 
39605 (THead (Flat Appl) u t)) \to (arity g c2 u2 a2))) H8 u H15) in (let H20 \def 
39606 (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) H7 u H15) in (arity_appl g c2 u2 a1 
39607 (H1 c2 H4 u2 H20) t4 a2 (H3 c2 H4 t4 H18)))))) k H16)))) H13)) 
39608 H12)))))))))))) (\lambda (u0: T).(\lambda (v1: T).(\lambda (v2: T).(\lambda 
39609 (H7: (pr0 v1 v2)).(\lambda (H8: (((eq T v1 (THead (Flat Appl) u t)) \to 
39610 (arity g c2 v2 a2)))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H9: (pr0 t3 
39611 t4)).(\lambda (H10: (((eq T t3 (THead (Flat Appl) u t)) \to (arity g c2 t4 
39612 a2)))).(\lambda (H11: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u0 t3)) 
39613 (THead (Flat Appl) u t))).(let H12 \def (f_equal T T (\lambda (e: T).(match e 
39614 return (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef _) 
39615 \Rightarrow v1 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) v1 (THead 
39616 (Bind Abst) u0 t3)) (THead (Flat Appl) u t) H11) in ((let H13 \def (f_equal T 
39617 T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
39618 \Rightarrow (THead (Bind Abst) u0 t3) | (TLRef _) \Rightarrow (THead (Bind 
39619 Abst) u0 t3) | (THead _ _ t) \Rightarrow t])) (THead (Flat Appl) v1 (THead 
39620 (Bind Abst) u0 t3)) (THead (Flat Appl) u t) H11) in (\lambda (H14: (eq T v1 
39621 u)).(let H15 \def (eq_ind T v1 (\lambda (t0: T).((eq T t0 (THead (Flat Appl) 
39622 u t)) \to (arity g c2 v2 a2))) H8 u H14) in (let H16 \def (eq_ind T v1 
39623 (\lambda (t: T).(pr0 t v2)) H7 u H14) in (let H17 \def (eq_ind_r T t (\lambda 
39624 (t: T).((eq T t3 (THead (Flat Appl) u t)) \to (arity g c2 t4 a2))) H10 (THead 
39625 (Bind Abst) u0 t3) H13) in (let H18 \def (eq_ind_r T t (\lambda (t: T).((eq T 
39626 u (THead (Flat Appl) u t)) \to (arity g c2 v2 a2))) H15 (THead (Bind Abst) u0 
39627 t3) H13) in (let H19 \def (eq_ind_r T t (\lambda (t: T).(\forall (c2: 
39628 C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 t t2) \to (arity g c2 t2 (AHead 
39629 a1 a2))))))) H3 (THead (Bind Abst) u0 t3) H13) in (let H20 \def (eq_ind_r T t 
39630 (\lambda (t: T).(arity g c t (AHead a1 a2))) H2 (THead (Bind Abst) u0 t3) 
39631 H13) in (let H21 \def (H1 c2 H4 v2 H16) in (let H22 \def (H19 c2 H4 (THead 
39632 (Bind Abst) u0 t4) (pr0_comp u0 u0 (pr0_refl u0) t3 t4 H9 (Bind Abst))) in 
39633 (let H23 \def (arity_gen_abst g c2 u0 t4 (AHead a1 a2) H22) in (ex3_2_ind A A 
39634 (\lambda (a3: A).(\lambda (a4: A).(eq A (AHead a1 a2) (AHead a3 a4)))) 
39635 (\lambda (a3: A).(\lambda (_: A).(arity g c2 u0 (asucc g a3)))) (\lambda (_: 
39636 A).(\lambda (a4: A).(arity g (CHead c2 (Bind Abst) u0) t4 a4))) (arity g c2 
39637 (THead (Bind Abbr) v2 t4) a2) (\lambda (x0: A).(\lambda (x1: A).(\lambda 
39638 (H24: (eq A (AHead a1 a2) (AHead x0 x1))).(\lambda (H25: (arity g c2 u0 
39639 (asucc g x0))).(\lambda (H26: (arity g (CHead c2 (Bind Abst) u0) t4 x1)).(let 
39640 H27 \def (f_equal A A (\lambda (e: A).(match e return (\lambda (_: A).A) with 
39641 [(ASort _ _) \Rightarrow a1 | (AHead a _) \Rightarrow a])) (AHead a1 a2) 
39642 (AHead x0 x1) H24) in ((let H28 \def (f_equal A A (\lambda (e: A).(match e 
39643 return (\lambda (_: A).A) with [(ASort _ _) \Rightarrow a2 | (AHead _ a) 
39644 \Rightarrow a])) (AHead a1 a2) (AHead x0 x1) H24) in (\lambda (H29: (eq A a1 
39645 x0)).(let H30 \def (eq_ind_r A x1 (\lambda (a: A).(arity g (CHead c2 (Bind 
39646 Abst) u0) t4 a)) H26 a2 H28) in (let H31 \def (eq_ind_r A x0 (\lambda (a: 
39647 A).(arity g c2 u0 (asucc g a))) H25 a1 H29) in (arity_bind g Abbr 
39648 not_abbr_abst c2 v2 a1 H21 t4 a2 (csuba_arity g (CHead c2 (Bind Abst) u0) t4 
39649 a2 H30 (CHead c2 (Bind Abbr) v2) (csuba_abst g c2 c2 (csuba_refl g c2) u0 a1 
39650 H31 v2 H21))))))) H27))))))) H23)))))))))))) H12)))))))))))) (\lambda (b: 
39651 B).(\lambda (H7: (not (eq B b Abst))).(\lambda (v1: T).(\lambda (v2: 
39652 T).(\lambda (H8: (pr0 v1 v2)).(\lambda (H9: (((eq T v1 (THead (Flat Appl) u 
39653 t)) \to (arity g c2 v2 a2)))).(\lambda (u1: T).(\lambda (u2: T).(\lambda 
39654 (H10: (pr0 u1 u2)).(\lambda (H11: (((eq T u1 (THead (Flat Appl) u t)) \to 
39655 (arity g c2 u2 a2)))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H12: (pr0 
39656 t3 t4)).(\lambda (H13: (((eq T t3 (THead (Flat Appl) u t)) \to (arity g c2 t4 
39657 a2)))).(\lambda (H14: (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t3)) 
39658 (THead (Flat Appl) u t))).(let H15 \def (f_equal T T (\lambda (e: T).(match e 
39659 return (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef _) 
39660 \Rightarrow v1 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) v1 (THead 
39661 (Bind b) u1 t3)) (THead (Flat Appl) u t) H14) in ((let H16 \def (f_equal T T 
39662 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
39663 \Rightarrow (THead (Bind b) u1 t3) | (TLRef _) \Rightarrow (THead (Bind b) u1 
39664 t3) | (THead _ _ t) \Rightarrow t])) (THead (Flat Appl) v1 (THead (Bind b) u1 
39665 t3)) (THead (Flat Appl) u t) H14) in (\lambda (H17: (eq T v1 u)).(let H18 
39666 \def (eq_ind T v1 (\lambda (t0: T).((eq T t0 (THead (Flat Appl) u t)) \to 
39667 (arity g c2 v2 a2))) H9 u H17) in (let H19 \def (eq_ind T v1 (\lambda (t: 
39668 T).(pr0 t v2)) H8 u H17) in (let H20 \def (eq_ind_r T t (\lambda (t: T).((eq 
39669 T t3 (THead (Flat Appl) u t)) \to (arity g c2 t4 a2))) H13 (THead (Bind b) u1 
39670 t3) H16) in (let H21 \def (eq_ind_r T t (\lambda (t: T).((eq T u1 (THead 
39671 (Flat Appl) u t)) \to (arity g c2 u2 a2))) H11 (THead (Bind b) u1 t3) H16) in 
39672 (let H22 \def (eq_ind_r T t (\lambda (t: T).((eq T u (THead (Flat Appl) u t)) 
39673 \to (arity g c2 v2 a2))) H18 (THead (Bind b) u1 t3) H16) in (let H23 \def 
39674 (eq_ind_r T t (\lambda (t: T).(\forall (c2: C).((wcpr0 c c2) \to (\forall 
39675 (t2: T).((pr0 t t2) \to (arity g c2 t2 (AHead a1 a2))))))) H3 (THead (Bind b) 
39676 u1 t3) H16) in (let H24 \def (eq_ind_r T t (\lambda (t: T).(arity g c t 
39677 (AHead a1 a2))) H2 (THead (Bind b) u1 t3) H16) in (let H25 \def (H1 c2 H4 v2 
39678 H19) in (let H26 \def (H23 c2 H4 (THead (Bind b) u2 t4) (pr0_comp u1 u2 H10 
39679 t3 t4 H12 (Bind b))) in (let H27 \def (arity_gen_bind b H7 g c2 u2 t4 (AHead 
39680 a1 a2) H26) in (ex2_ind A (\lambda (a3: A).(arity g c2 u2 a3)) (\lambda (_: 
39681 A).(arity g (CHead c2 (Bind b) u2) t4 (AHead a1 a2))) (arity g c2 (THead 
39682 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) a2) (\lambda (x: 
39683 A).(\lambda (H28: (arity g c2 u2 x)).(\lambda (H29: (arity g (CHead c2 (Bind 
39684 b) u2) t4 (AHead a1 a2))).(arity_bind g b H7 c2 u2 x H28 (THead (Flat Appl) 
39685 (lift (S O) O v2) t4) a2 (arity_appl g (CHead c2 (Bind b) u2) (lift (S O) O 
39686 v2) a1 (arity_lift g c2 v2 a1 H25 (CHead c2 (Bind b) u2) (S O) O (drop_drop 
39687 (Bind b) O c2 c2 (drop_refl c2) u2)) t4 a2 H29))))) H27))))))))))))) 
39688 H15))))))))))))))))) (\lambda (u1: T).(\lambda (u2: T).(\lambda (_: (pr0 u1 
39689 u2)).(\lambda (_: (((eq T u1 (THead (Flat Appl) u t)) \to (arity g c2 u2 
39690 a2)))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (pr0 t3 t4)).(\lambda 
39691 (_: (((eq T t3 (THead (Flat Appl) u t)) \to (arity g c2 t4 a2)))).(\lambda 
39692 (w: T).(\lambda (_: (subst0 O u2 t4 w)).(\lambda (H12: (eq T (THead (Bind 
39693 Abbr) u1 t3) (THead (Flat Appl) u t))).(let H13 \def (eq_ind T (THead (Bind 
39694 Abbr) u1 t3) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with 
39695 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
39696 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
39697 True | (Flat _) \Rightarrow False])])) I (THead (Flat Appl) u t) H12) in 
39698 (False_ind (arity g c2 (THead (Bind Abbr) u2 w) a2) H13))))))))))))) (\lambda 
39699 (b: B).(\lambda (_: (not (eq B b Abst))).(\lambda (t3: T).(\lambda (t4: 
39700 T).(\lambda (_: (pr0 t3 t4)).(\lambda (_: (((eq T t3 (THead (Flat Appl) u t)) 
39701 \to (arity g c2 t4 a2)))).(\lambda (u0: T).(\lambda (H10: (eq T (THead (Bind 
39702 b) u0 (lift (S O) O t3)) (THead (Flat Appl) u t))).(let H11 \def (eq_ind T 
39703 (THead (Bind b) u0 (lift (S O) O t3)) (\lambda (ee: T).(match ee return 
39704 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
39705 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
39706 K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I 
39707 (THead (Flat Appl) u t) H10) in (False_ind (arity g c2 t4 a2) H11)))))))))) 
39708 (\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (pr0 t3 t4)).(\lambda (_: 
39709 (((eq T t3 (THead (Flat Appl) u t)) \to (arity g c2 t4 a2)))).(\lambda (u0: 
39710 T).(\lambda (H9: (eq T (THead (Flat Cast) u0 t3) (THead (Flat Appl) u 
39711 t))).(let H10 \def (eq_ind T (THead (Flat Cast) u0 t3) (\lambda (ee: 
39712 T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
39713 (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k return 
39714 (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat f) \Rightarrow 
39715 (match f return (\lambda (_: F).Prop) with [Appl \Rightarrow False | Cast 
39716 \Rightarrow True])])])) I (THead (Flat Appl) u t) H9) in (False_ind (arity g 
39717 c2 t4 a2) H10)))))))) y t2 H6))) H5)))))))))))))) (\lambda (c: C).(\lambda 
39718 (u: T).(\lambda (a0: A).(\lambda (_: (arity g c u (asucc g a0))).(\lambda 
39719 (H1: ((\forall (c2: C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 u t2) \to 
39720 (arity g c2 t2 (asucc g a0)))))))).(\lambda (t: T).(\lambda (_: (arity g c t 
39721 a0)).(\lambda (H3: ((\forall (c2: C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 
39722 t t2) \to (arity g c2 t2 a0))))))).(\lambda (c2: C).(\lambda (H4: (wcpr0 c 
39723 c2)).(\lambda (t2: T).(\lambda (H5: (pr0 (THead (Flat Cast) u t) 
39724 t2)).(insert_eq T (THead (Flat Cast) u t) (\lambda (t0: T).(pr0 t0 t2)) 
39725 (arity g c2 t2 a0) (\lambda (y: T).(\lambda (H6: (pr0 y t2)).(pr0_ind 
39726 (\lambda (t0: T).(\lambda (t3: T).((eq T t0 (THead (Flat Cast) u t)) \to 
39727 (arity g c2 t3 a0)))) (\lambda (t0: T).(\lambda (H7: (eq T t0 (THead (Flat 
39728 Cast) u t))).(let H8 \def (f_equal T T (\lambda (e: T).e) t0 (THead (Flat 
39729 Cast) u t) H7) in (eq_ind_r T (THead (Flat Cast) u t) (\lambda (t3: T).(arity 
39730 g c2 t3 a0)) (arity_cast g c2 u a0 (H1 c2 H4 u (pr0_refl u)) t (H3 c2 H4 t 
39731 (pr0_refl t))) t0 H8)))) (\lambda (u1: T).(\lambda (u2: T).(\lambda (H7: (pr0 
39732 u1 u2)).(\lambda (H8: (((eq T u1 (THead (Flat Cast) u t)) \to (arity g c2 u2 
39733 a0)))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H9: (pr0 t3 t4)).(\lambda 
39734 (H10: (((eq T t3 (THead (Flat Cast) u t)) \to (arity g c2 t4 a0)))).(\lambda 
39735 (k: K).(\lambda (H11: (eq T (THead k u1 t3) (THead (Flat Cast) u t))).(let 
39736 H12 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) with 
39737 [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
39738 \Rightarrow k])) (THead k u1 t3) (THead (Flat Cast) u t) H11) in ((let H13 
39739 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
39740 [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t _) 
39741 \Rightarrow t])) (THead k u1 t3) (THead (Flat Cast) u t) H11) in ((let H14 
39742 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
39743 [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t) 
39744 \Rightarrow t])) (THead k u1 t3) (THead (Flat Cast) u t) H11) in (\lambda 
39745 (H15: (eq T u1 u)).(\lambda (H16: (eq K k (Flat Cast))).(eq_ind_r K (Flat 
39746 Cast) (\lambda (k0: K).(arity g c2 (THead k0 u2 t4) a0)) (let H17 \def 
39747 (eq_ind T t3 (\lambda (t0: T).((eq T t0 (THead (Flat Cast) u t)) \to (arity g 
39748 c2 t4 a0))) H10 t H14) in (let H18 \def (eq_ind T t3 (\lambda (t: T).(pr0 t 
39749 t4)) H9 t H14) in (let H19 \def (eq_ind T u1 (\lambda (t0: T).((eq T t0 
39750 (THead (Flat Cast) u t)) \to (arity g c2 u2 a0))) H8 u H15) in (let H20 \def 
39751 (eq_ind T u1 (\lambda (t: T).(pr0 t u2)) H7 u H15) in (arity_cast g c2 u2 a0 
39752 (H1 c2 H4 u2 H20) t4 (H3 c2 H4 t4 H18)))))) k H16)))) H13)) H12)))))))))))) 
39753 (\lambda (u0: T).(\lambda (v1: T).(\lambda (v2: T).(\lambda (_: (pr0 v1 
39754 v2)).(\lambda (_: (((eq T v1 (THead (Flat Cast) u t)) \to (arity g c2 v2 
39755 a0)))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (pr0 t3 t4)).(\lambda 
39756 (_: (((eq T t3 (THead (Flat Cast) u t)) \to (arity g c2 t4 a0)))).(\lambda 
39757 (H11: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u0 t3)) (THead (Flat 
39758 Cast) u t))).(let H12 \def (eq_ind T (THead (Flat Appl) v1 (THead (Bind Abst) 
39759 u0 t3)) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort 
39760 _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
39761 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
39762 False | (Flat f) \Rightarrow (match f return (\lambda (_: F).Prop) with [Appl 
39763 \Rightarrow True | Cast \Rightarrow False])])])) I (THead (Flat Cast) u t) 
39764 H11) in (False_ind (arity g c2 (THead (Bind Abbr) v2 t4) a0) H12)))))))))))) 
39765 (\lambda (b: B).(\lambda (_: (not (eq B b Abst))).(\lambda (v1: T).(\lambda 
39766 (v2: T).(\lambda (_: (pr0 v1 v2)).(\lambda (_: (((eq T v1 (THead (Flat Cast) 
39767 u t)) \to (arity g c2 v2 a0)))).(\lambda (u1: T).(\lambda (u2: T).(\lambda 
39768 (_: (pr0 u1 u2)).(\lambda (_: (((eq T u1 (THead (Flat Cast) u t)) \to (arity 
39769 g c2 u2 a0)))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (pr0 t3 
39770 t4)).(\lambda (_: (((eq T t3 (THead (Flat Cast) u t)) \to (arity g c2 t4 
39771 a0)))).(\lambda (H14: (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t3)) 
39772 (THead (Flat Cast) u t))).(let H15 \def (eq_ind T (THead (Flat Appl) v1 
39773 (THead (Bind b) u1 t3)) (\lambda (ee: T).(match ee return (\lambda (_: 
39774 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
39775 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
39776 _) \Rightarrow False | (Flat f) \Rightarrow (match f return (\lambda (_: 
39777 F).Prop) with [Appl \Rightarrow True | Cast \Rightarrow False])])])) I (THead 
39778 (Flat Cast) u t) H14) in (False_ind (arity g c2 (THead (Bind b) u2 (THead 
39779 (Flat Appl) (lift (S O) O v2) t4)) a0) H15))))))))))))))))) (\lambda (u1: 
39780 T).(\lambda (u2: T).(\lambda (_: (pr0 u1 u2)).(\lambda (_: (((eq T u1 (THead 
39781 (Flat Cast) u t)) \to (arity g c2 u2 a0)))).(\lambda (t3: T).(\lambda (t4: 
39782 T).(\lambda (_: (pr0 t3 t4)).(\lambda (_: (((eq T t3 (THead (Flat Cast) u t)) 
39783 \to (arity g c2 t4 a0)))).(\lambda (w: T).(\lambda (_: (subst0 O u2 t4 
39784 w)).(\lambda (H12: (eq T (THead (Bind Abbr) u1 t3) (THead (Flat Cast) u 
39785 t))).(let H13 \def (eq_ind T (THead (Bind Abbr) u1 t3) (\lambda (ee: 
39786 T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
39787 (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k return 
39788 (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow 
39789 False])])) I (THead (Flat Cast) u t) H12) in (False_ind (arity g c2 (THead 
39790 (Bind Abbr) u2 w) a0) H13))))))))))))) (\lambda (b: B).(\lambda (_: (not (eq 
39791 B b Abst))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (pr0 t3 
39792 t4)).(\lambda (_: (((eq T t3 (THead (Flat Cast) u t)) \to (arity g c2 t4 
39793 a0)))).(\lambda (u0: T).(\lambda (H10: (eq T (THead (Bind b) u0 (lift (S O) O 
39794 t3)) (THead (Flat Cast) u t))).(let H11 \def (eq_ind T (THead (Bind b) u0 
39795 (lift (S O) O t3)) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) 
39796 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ 
39797 _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) 
39798 \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Cast) u t) 
39799 H10) in (False_ind (arity g c2 t4 a0) H11)))))))))) (\lambda (t3: T).(\lambda 
39800 (t4: T).(\lambda (H7: (pr0 t3 t4)).(\lambda (H8: (((eq T t3 (THead (Flat 
39801 Cast) u t)) \to (arity g c2 t4 a0)))).(\lambda (u0: T).(\lambda (H9: (eq T 
39802 (THead (Flat Cast) u0 t3) (THead (Flat Cast) u t))).(let H10 \def (f_equal T 
39803 T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
39804 \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) 
39805 (THead (Flat Cast) u0 t3) (THead (Flat Cast) u t) H9) in ((let H11 \def 
39806 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
39807 _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t) \Rightarrow t])) 
39808 (THead (Flat Cast) u0 t3) (THead (Flat Cast) u t) H9) in (\lambda (_: (eq T 
39809 u0 u)).(let H13 \def (eq_ind T t3 (\lambda (t0: T).((eq T t0 (THead (Flat 
39810 Cast) u t)) \to (arity g c2 t4 a0))) H8 t H11) in (let H14 \def (eq_ind T t3 
39811 (\lambda (t: T).(pr0 t t4)) H7 t H11) in (H3 c2 H4 t4 H14))))) H10)))))))) y 
39812 t2 H6))) H5))))))))))))) (\lambda (c: C).(\lambda (t: T).(\lambda (a1: 
39813 A).(\lambda (_: (arity g c t a1)).(\lambda (H1: ((\forall (c2: C).((wcpr0 c 
39814 c2) \to (\forall (t2: T).((pr0 t t2) \to (arity g c2 t2 a1))))))).(\lambda 
39815 (a2: A).(\lambda (H2: (leq g a1 a2)).(\lambda (c2: C).(\lambda (H3: (wcpr0 c 
39816 c2)).(\lambda (t2: T).(\lambda (H4: (pr0 t t2)).(arity_repl g c2 t2 a1 (H1 c2 
39817 H3 t2 H4) a2 H2)))))))))))) c1 t1 a H))))).
39818
39819 theorem arity_sred_wcpr0_pr1:
39820  \forall (t1: T).(\forall (t2: T).((pr1 t1 t2) \to (\forall (g: G).(\forall 
39821 (c1: C).(\forall (a: A).((arity g c1 t1 a) \to (\forall (c2: C).((wcpr0 c1 
39822 c2) \to (arity g c2 t2 a)))))))))
39823 \def
39824  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr1 t1 t2)).(pr1_ind (\lambda 
39825 (t: T).(\lambda (t0: T).(\forall (g: G).(\forall (c1: C).(\forall (a: 
39826 A).((arity g c1 t a) \to (\forall (c2: C).((wcpr0 c1 c2) \to (arity g c2 t0 
39827 a))))))))) (\lambda (t: T).(\lambda (g: G).(\lambda (c1: C).(\lambda (a: 
39828 A).(\lambda (H0: (arity g c1 t a)).(\lambda (c2: C).(\lambda (H1: (wcpr0 c1 
39829 c2)).(arity_sred_wcpr0_pr0 g c1 t a H0 c2 H1 t (pr0_refl t))))))))) (\lambda 
39830 (t3: T).(\lambda (t4: T).(\lambda (H0: (pr0 t4 t3)).(\lambda (t5: T).(\lambda 
39831 (_: (pr1 t3 t5)).(\lambda (H2: ((\forall (g: G).(\forall (c1: C).(\forall (a: 
39832 A).((arity g c1 t3 a) \to (\forall (c2: C).((wcpr0 c1 c2) \to (arity g c2 t5 
39833 a))))))))).(\lambda (g: G).(\lambda (c1: C).(\lambda (a: A).(\lambda (H3: 
39834 (arity g c1 t4 a)).(\lambda (c2: C).(\lambda (H4: (wcpr0 c1 c2)).(H2 g c2 a 
39835 (arity_sred_wcpr0_pr0 g c1 t4 a H3 c2 H4 t3 H0) c2 (wcpr0_refl 
39836 c2)))))))))))))) t1 t2 H))).
39837
39838 theorem arity_sred_pr2:
39839  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall 
39840 (g: G).(\forall (a: A).((arity g c t1 a) \to (arity g c t2 a)))))))
39841 \def
39842  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t1 
39843 t2)).(pr2_ind (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\forall (g: 
39844 G).(\forall (a: A).((arity g c0 t a) \to (arity g c0 t0 a))))))) (\lambda 
39845 (c0: C).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H0: (pr0 t3 t4)).(\lambda 
39846 (g: G).(\lambda (a: A).(\lambda (H1: (arity g c0 t3 a)).(arity_sred_wcpr0_pr0 
39847 g c0 t3 a H1 c0 (wcpr0_refl c0) t4 H0)))))))) (\lambda (c0: C).(\lambda (d: 
39848 C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind 
39849 Abbr) u))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H1: (pr0 t3 
39850 t4)).(\lambda (t: T).(\lambda (H2: (subst0 i u t4 t)).(\lambda (g: 
39851 G).(\lambda (a: A).(\lambda (H3: (arity g c0 t3 a)).(arity_subst0 g c0 t4 a 
39852 (arity_sred_wcpr0_pr0 g c0 t3 a H3 c0 (wcpr0_refl c0) t4 H1) d u i H0 t 
39853 H2)))))))))))))) c t1 t2 H)))).
39854
39855 theorem arity_sred_pr3:
39856  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to (\forall 
39857 (g: G).(\forall (a: A).((arity g c t1 a) \to (arity g c t2 a)))))))
39858 \def
39859  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t1 
39860 t2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (g: G).(\forall (a: 
39861 A).((arity g c t a) \to (arity g c t0 a)))))) (\lambda (t: T).(\lambda (g: 
39862 G).(\lambda (a: A).(\lambda (H0: (arity g c t a)).H0)))) (\lambda (t3: 
39863 T).(\lambda (t4: T).(\lambda (H0: (pr2 c t4 t3)).(\lambda (t5: T).(\lambda 
39864 (_: (pr3 c t3 t5)).(\lambda (H2: ((\forall (g: G).(\forall (a: A).((arity g c 
39865 t3 a) \to (arity g c t5 a)))))).(\lambda (g: G).(\lambda (a: A).(\lambda (H3: 
39866 (arity g c t4 a)).(H2 g a (arity_sred_pr2 c t4 t3 H0 g a H3))))))))))) t1 t2 
39867 H)))).
39868
39869 definition nf2:
39870  C \to (T \to Prop)
39871 \def
39872  \lambda (c: C).(\lambda (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (eq T t1 
39873 t2)))).
39874
39875 theorem nf2_gen_base__aux:
39876  \forall (k: K).(\forall (t: T).(\forall (u: T).((eq T (THead k u t) t) \to 
39877 (\forall (P: Prop).P))))
39878 \def
39879  \lambda (k: K).(\lambda (t: T).(T_ind (\lambda (t0: T).(\forall (u: T).((eq 
39880 T (THead k u t0) t0) \to (\forall (P: Prop).P)))) (\lambda (n: nat).(\lambda 
39881 (u: T).(\lambda (H: (eq T (THead k u (TSort n)) (TSort n))).(\lambda (P: 
39882 Prop).(let H0 \def (eq_ind T (THead k u (TSort n)) (\lambda (ee: T).(match ee 
39883 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
39884 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H) in 
39885 (False_ind P H0)))))) (\lambda (n: nat).(\lambda (u: T).(\lambda (H: (eq T 
39886 (THead k u (TLRef n)) (TLRef n))).(\lambda (P: Prop).(let H0 \def (eq_ind T 
39887 (THead k u (TLRef n)) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) 
39888 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ 
39889 _) \Rightarrow True])) I (TLRef n) H) in (False_ind P H0)))))) (\lambda (k0: 
39890 K).(\lambda (t0: T).(\lambda (_: ((\forall (u: T).((eq T (THead k u t0) t0) 
39891 \to (\forall (P: Prop).P))))).(\lambda (t1: T).(\lambda (H0: ((\forall (u: 
39892 T).((eq T (THead k u t1) t1) \to (\forall (P: Prop).P))))).(\lambda (u: 
39893 T).(\lambda (H1: (eq T (THead k u (THead k0 t0 t1)) (THead k0 t0 
39894 t1))).(\lambda (P: Prop).(let H2 \def (f_equal T K (\lambda (e: T).(match e 
39895 return (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _) 
39896 \Rightarrow k | (THead k _ _) \Rightarrow k])) (THead k u (THead k0 t0 t1)) 
39897 (THead k0 t0 t1) H1) in ((let H3 \def (f_equal T T (\lambda (e: T).(match e 
39898 return (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) 
39899 \Rightarrow u | (THead _ t _) \Rightarrow t])) (THead k u (THead k0 t0 t1)) 
39900 (THead k0 t0 t1) H1) in ((let H4 \def (f_equal T T (\lambda (e: T).(match e 
39901 return (\lambda (_: T).T) with [(TSort _) \Rightarrow (THead k0 t0 t1) | 
39902 (TLRef _) \Rightarrow (THead k0 t0 t1) | (THead _ _ t) \Rightarrow t])) 
39903 (THead k u (THead k0 t0 t1)) (THead k0 t0 t1) H1) in (\lambda (_: (eq T u 
39904 t0)).(\lambda (H6: (eq K k k0)).(let H7 \def (eq_ind K k (\lambda (k: 
39905 K).(\forall (u: T).((eq T (THead k u t1) t1) \to (\forall (P: Prop).P)))) H0 
39906 k0 H6) in (H7 t0 H4 P))))) H3)) H2)))))))))) t)).
39907
39908 theorem nf2_gen_lref:
39909  \forall (c: C).(\forall (d: C).(\forall (u: T).(\forall (i: nat).((getl i c 
39910 (CHead d (Bind Abbr) u)) \to ((nf2 c (TLRef i)) \to (\forall (P: Prop).P))))))
39911 \def
39912  \lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
39913 (H: (getl i c (CHead d (Bind Abbr) u))).(\lambda (H0: ((\forall (t2: T).((pr2 
39914 c (TLRef i) t2) \to (eq T (TLRef i) t2))))).(\lambda (P: 
39915 Prop).(lift_gen_lref_false (S i) O i (le_O_n i) (le_n (plus O (S i))) u (H0 
39916 (lift (S i) O u) (pr2_delta c d u i H (TLRef i) (TLRef i) (pr0_refl (TLRef 
39917 i)) (lift (S i) O u) (subst0_lref u i))) P))))))).
39918
39919 theorem nf2_gen_abst:
39920  \forall (c: C).(\forall (u: T).(\forall (t: T).((nf2 c (THead (Bind Abst) u 
39921 t)) \to (land (nf2 c u) (nf2 (CHead c (Bind Abst) u) t)))))
39922 \def
39923  \lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H: ((\forall (t2: 
39924 T).((pr2 c (THead (Bind Abst) u t) t2) \to (eq T (THead (Bind Abst) u t) 
39925 t2))))).(conj (\forall (t2: T).((pr2 c u t2) \to (eq T u t2))) (\forall (t2: 
39926 T).((pr2 (CHead c (Bind Abst) u) t t2) \to (eq T t t2))) (\lambda (t2: 
39927 T).(\lambda (H0: (pr2 c u t2)).(let H1 \def (f_equal T T (\lambda (e: 
39928 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef 
39929 _) \Rightarrow u | (THead _ t _) \Rightarrow t])) (THead (Bind Abst) u t) 
39930 (THead (Bind Abst) t2 t) (H (THead (Bind Abst) t2 t) (pr2_head_1 c u t2 H0 
39931 (Bind Abst) t))) in (let H2 \def (eq_ind_r T t2 (\lambda (t: T).(pr2 c u t)) 
39932 H0 u H1) in (eq_ind T u (\lambda (t0: T).(eq T u t0)) (refl_equal T u) t2 
39933 H1))))) (\lambda (t2: T).(\lambda (H0: (pr2 (CHead c (Bind Abst) u) t 
39934 t2)).(let H1 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
39935 T).T) with [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ _ t) 
39936 \Rightarrow t])) (THead (Bind Abst) u t) (THead (Bind Abst) u t2) (H (THead 
39937 (Bind Abst) u t2) (let H_y \def (pr2_gen_cbind Abst c u t t2 H0) in H_y))) in 
39938 (let H2 \def (eq_ind_r T t2 (\lambda (t0: T).(pr2 (CHead c (Bind Abst) u) t 
39939 t0)) H0 t H1) in (eq_ind T t (\lambda (t0: T).(eq T t t0)) (refl_equal T t) 
39940 t2 H1))))))))).
39941
39942 theorem nf2_gen_cast:
39943  \forall (c: C).(\forall (u: T).(\forall (t: T).((nf2 c (THead (Flat Cast) u 
39944 t)) \to (\forall (P: Prop).P))))
39945 \def
39946  \lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H: (nf2 c (THead 
39947 (Flat Cast) u t))).(\lambda (P: Prop).(nf2_gen_base__aux (Flat Cast) t u (H t 
39948 (pr2_free c (THead (Flat Cast) u t) t (pr0_epsilon t t (pr0_refl t) u))) 
39949 P))))).
39950
39951 theorem nf2_gen_flat:
39952  \forall (f: F).(\forall (c: C).(\forall (u: T).(\forall (t: T).((nf2 c 
39953 (THead (Flat f) u t)) \to (land (nf2 c u) (nf2 c t))))))
39954 \def
39955  \lambda (f: F).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H: 
39956 ((\forall (t2: T).((pr2 c (THead (Flat f) u t) t2) \to (eq T (THead (Flat f) 
39957 u t) t2))))).(conj (\forall (t2: T).((pr2 c u t2) \to (eq T u t2))) (\forall 
39958 (t2: T).((pr2 c t t2) \to (eq T t t2))) (\lambda (t2: T).(\lambda (H0: (pr2 c 
39959 u t2)).(let H1 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
39960 T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t _) 
39961 \Rightarrow t])) (THead (Flat f) u t) (THead (Flat f) t2 t) (H (THead (Flat 
39962 f) t2 t) (pr2_head_1 c u t2 H0 (Flat f) t))) in H1))) (\lambda (t2: 
39963 T).(\lambda (H0: (pr2 c t t2)).(let H1 \def (f_equal T T (\lambda (e: 
39964 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow t | (TLRef 
39965 _) \Rightarrow t | (THead _ _ t) \Rightarrow t])) (THead (Flat f) u t) (THead 
39966 (Flat f) u t2) (H (THead (Flat f) u t2) (pr2_head_2 c u t t2 (Flat f) 
39967 (pr2_cflat c t t2 H0 f u)))) in H1)))))))).
39968
39969 theorem nf2_sort:
39970  \forall (c: C).(\forall (n: nat).(nf2 c (TSort n)))
39971 \def
39972  \lambda (c: C).(\lambda (n: nat).(\lambda (t2: T).(\lambda (H: (pr2 c (TSort 
39973 n) t2)).(eq_ind_r T (TSort n) (\lambda (t: T).(eq T (TSort n) t)) (refl_equal 
39974 T (TSort n)) t2 (pr2_gen_sort c t2 n H))))).
39975
39976 theorem nf2_abst:
39977  \forall (c: C).(\forall (u: T).((nf2 c u) \to (\forall (b: B).(\forall (v: 
39978 T).(\forall (t: T).((nf2 (CHead c (Bind b) v) t) \to (nf2 c (THead (Bind 
39979 Abst) u t))))))))
39980 \def
39981  \lambda (c: C).(\lambda (u: T).(\lambda (H: ((\forall (t2: T).((pr2 c u t2) 
39982 \to (eq T u t2))))).(\lambda (b: B).(\lambda (v: T).(\lambda (t: T).(\lambda 
39983 (H0: ((\forall (t2: T).((pr2 (CHead c (Bind b) v) t t2) \to (eq T t 
39984 t2))))).(\lambda (t2: T).(\lambda (H1: (pr2 c (THead (Bind Abst) u t) 
39985 t2)).(let H2 \def (pr2_gen_abst c u t t2 H1) in (ex3_2_ind T T (\lambda (u2: 
39986 T).(\lambda (t3: T).(eq T t2 (THead (Bind Abst) u2 t3)))) (\lambda (u2: 
39987 T).(\lambda (_: T).(pr2 c u u2))) (\lambda (_: T).(\lambda (t3: T).(\forall 
39988 (b0: B).(\forall (u0: T).(pr2 (CHead c (Bind b0) u0) t t3))))) (eq T (THead 
39989 (Bind Abst) u t) t2) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H3: (eq T t2 
39990 (THead (Bind Abst) x0 x1))).(\lambda (H4: (pr2 c u x0)).(\lambda (H5: 
39991 ((\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) t 
39992 x1))))).(eq_ind_r T (THead (Bind Abst) x0 x1) (\lambda (t0: T).(eq T (THead 
39993 (Bind Abst) u t) t0)) (f_equal3 K T T T THead (Bind Abst) (Bind Abst) u x0 t 
39994 x1 (refl_equal K (Bind Abst)) (H x0 H4) (H0 x1 (H5 b v))) t2 H3)))))) 
39995 H2)))))))))).
39996
39997 theorem nf2_pr3_unfold:
39998  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to ((nf2 c 
39999 t1) \to (eq T t1 t2)))))
40000 \def
40001  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t1 
40002 t2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).((nf2 c t) \to (eq T t 
40003 t0)))) (\lambda (t: T).(\lambda (H0: (nf2 c t)).(H0 t (pr2_free c t t 
40004 (pr0_refl t))))) (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c t3 
40005 t0)).(\lambda (t4: T).(\lambda (_: (pr3 c t0 t4)).(\lambda (H2: (((nf2 c t0) 
40006 \to (eq T t0 t4)))).(\lambda (H3: (nf2 c t3)).(let H4 \def H3 in (let H5 \def 
40007 (eq_ind T t3 (\lambda (t: T).(nf2 c t)) H3 t0 (H4 t0 H0)) in (let H6 \def 
40008 (eq_ind T t3 (\lambda (t: T).(pr2 c t t0)) H0 t0 (H4 t0 H0)) in (eq_ind_r T 
40009 t0 (\lambda (t: T).(eq T t t4)) (H2 H5) t3 (H4 t0 H0)))))))))))) t1 t2 H)))).
40010
40011 theorem nf2_pr3_confluence:
40012  \forall (c: C).(\forall (t1: T).((nf2 c t1) \to (\forall (t2: T).((nf2 c t2) 
40013 \to (\forall (t: T).((pr3 c t t1) \to ((pr3 c t t2) \to (eq T t1 t2))))))))
40014 \def
40015  \lambda (c: C).(\lambda (t1: T).(\lambda (H: (nf2 c t1)).(\lambda (t2: 
40016 T).(\lambda (H0: (nf2 c t2)).(\lambda (t: T).(\lambda (H1: (pr3 c t 
40017 t1)).(\lambda (H2: (pr3 c t t2)).(ex2_ind T (\lambda (t0: T).(pr3 c t2 t0)) 
40018 (\lambda (t0: T).(pr3 c t1 t0)) (eq T t1 t2) (\lambda (x: T).(\lambda (H3: 
40019 (pr3 c t2 x)).(\lambda (H4: (pr3 c t1 x)).(let H_y \def (nf2_pr3_unfold c t1 
40020 x H4 H) in (let H5 \def (eq_ind_r T x (\lambda (t: T).(pr3 c t1 t)) H4 t1 
40021 H_y) in (let H6 \def (eq_ind_r T x (\lambda (t: T).(pr3 c t2 t)) H3 t1 H_y) 
40022 in (let H_y0 \def (nf2_pr3_unfold c t2 t1 H6 H0) in (let H7 \def (eq_ind T t2 
40023 (\lambda (t: T).(pr3 c t t1)) H6 t1 H_y0) in (eq_ind_r T t1 (\lambda (t0: 
40024 T).(eq T t1 t0)) (refl_equal T t1) t2 H_y0))))))))) (pr3_confluence c t t2 H2 
40025 t1 H1))))))))).
40026
40027 theorem nf2_appl_lref:
40028  \forall (c: C).(\forall (u: T).((nf2 c u) \to (\forall (i: nat).((nf2 c 
40029 (TLRef i)) \to (nf2 c (THead (Flat Appl) u (TLRef i)))))))
40030 \def
40031  \lambda (c: C).(\lambda (u: T).(\lambda (H: ((\forall (t2: T).((pr2 c u t2) 
40032 \to (eq T u t2))))).(\lambda (i: nat).(\lambda (H0: ((\forall (t2: T).((pr2 c 
40033 (TLRef i) t2) \to (eq T (TLRef i) t2))))).(\lambda (t2: T).(\lambda (H1: (pr2 
40034 c (THead (Flat Appl) u (TLRef i)) t2)).(let H2 \def (pr2_gen_appl c u (TLRef 
40035 i) t2 H1) in (or3_ind (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 
40036 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u u2))) 
40037 (\lambda (_: T).(\lambda (t3: T).(pr2 c (TLRef i) t3)))) (ex4_4 T T T T 
40038 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
40039 (TLRef i) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: 
40040 T).(\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) 
40041 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u 
40042 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: 
40043 T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) 
40044 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
40045 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
40046 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
40047 (_: T).(eq T (TLRef i) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda 
40048 (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq 
40049 T t2 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) 
40050 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
40051 T).(\lambda (_: T).(pr2 c u u2))))))) (\lambda (_: B).(\lambda (y1: 
40052 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
40053 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
40054 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) 
40055 (eq T (THead (Flat Appl) u (TLRef i)) t2) (\lambda (H3: (ex3_2 T T (\lambda 
40056 (u2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
40057 T).(\lambda (_: T).(pr2 c u u2))) (\lambda (_: T).(\lambda (t2: T).(pr2 c 
40058 (TLRef i) t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 
40059 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c u u2))) 
40060 (\lambda (_: T).(\lambda (t3: T).(pr2 c (TLRef i) t3))) (eq T (THead (Flat 
40061 Appl) u (TLRef i)) t2) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H4: (eq T 
40062 t2 (THead (Flat Appl) x0 x1))).(\lambda (H5: (pr2 c u x0)).(\lambda (H6: (pr2 
40063 c (TLRef i) x1)).(eq_ind_r T (THead (Flat Appl) x0 x1) (\lambda (t: T).(eq T 
40064 (THead (Flat Appl) u (TLRef i)) t)) (let H7 \def (eq_ind_r T x1 (\lambda (t: 
40065 T).(pr2 c (TLRef i) t)) H6 (TLRef i) (H0 x1 H6)) in (eq_ind T (TLRef i) 
40066 (\lambda (t: T).(eq T (THead (Flat Appl) u (TLRef i)) (THead (Flat Appl) x0 
40067 t))) (let H8 \def (eq_ind_r T x0 (\lambda (t: T).(pr2 c u t)) H5 u (H x0 H5)) 
40068 in (eq_ind T u (\lambda (t: T).(eq T (THead (Flat Appl) u (TLRef i)) (THead 
40069 (Flat Appl) t (TLRef i)))) (refl_equal T (THead (Flat Appl) u (TLRef i))) x0 
40070 (H x0 H5))) x1 (H0 x1 H6))) t2 H4)))))) H3)) (\lambda (H3: (ex4_4 T T T T 
40071 (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
40072 (TLRef i) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: 
40073 T).(\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) 
40074 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c u 
40075 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: 
40076 T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 
40077 t2))))))))).(ex4_4_ind T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
40078 T).(\lambda (_: T).(eq T (TLRef i) (THead (Bind Abst) y1 z1)))))) (\lambda 
40079 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead 
40080 (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
40081 T).(\lambda (_: T).(pr2 c u u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda 
40082 (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind 
40083 b) u0) z1 t3))))))) (eq T (THead (Flat Appl) u (TLRef i)) t2) (\lambda (x0: 
40084 T).(\lambda (x1: T).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H4: (eq T 
40085 (TLRef i) (THead (Bind Abst) x0 x1))).(\lambda (H5: (eq T t2 (THead (Bind 
40086 Abbr) x2 x3))).(\lambda (_: (pr2 c u x2)).(\lambda (_: ((\forall (b: 
40087 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x1 x3))))).(eq_ind_r T (THead 
40088 (Bind Abbr) x2 x3) (\lambda (t: T).(eq T (THead (Flat Appl) u (TLRef i)) t)) 
40089 (let H8 \def (eq_ind T (TLRef i) (\lambda (ee: T).(match ee return (\lambda 
40090 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | 
40091 (THead _ _ _) \Rightarrow False])) I (THead (Bind Abst) x0 x1) H4) in 
40092 (False_ind (eq T (THead (Flat Appl) u (TLRef i)) (THead (Bind Abbr) x2 x3)) 
40093 H8)) t2 H5))))))))) H3)) (\lambda (H3: (ex6_6 B T T T T T (\lambda (b: 
40094 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
40095 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
40096 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T (TLRef i) 
40097 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
40098 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T t2 (THead (Bind 
40099 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
40100 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
40101 (_: T).(pr2 c u u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
40102 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
40103 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
40104 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))).(ex6_6_ind 
40105 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
40106 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
40107 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
40108 (_: T).(eq T (TLRef i) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda 
40109 (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq 
40110 T t2 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) 
40111 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
40112 T).(\lambda (_: T).(pr2 c u u2))))))) (\lambda (_: B).(\lambda (y1: 
40113 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
40114 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
40115 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))) 
40116 (eq T (THead (Flat Appl) u (TLRef i)) t2) (\lambda (x0: B).(\lambda (x1: 
40117 T).(\lambda (x2: T).(\lambda (x3: T).(\lambda (x4: T).(\lambda (x5: 
40118 T).(\lambda (_: (not (eq B x0 Abst))).(\lambda (H5: (eq T (TLRef i) (THead 
40119 (Bind x0) x1 x2))).(\lambda (H6: (eq T t2 (THead (Bind x0) x5 (THead (Flat 
40120 Appl) (lift (S O) O x4) x3)))).(\lambda (_: (pr2 c u x4)).(\lambda (_: (pr2 c 
40121 x1 x5)).(\lambda (_: (pr2 (CHead c (Bind x0) x5) x2 x3)).(eq_ind_r T (THead 
40122 (Bind x0) x5 (THead (Flat Appl) (lift (S O) O x4) x3)) (\lambda (t: T).(eq T 
40123 (THead (Flat Appl) u (TLRef i)) t)) (let H10 \def (eq_ind T (TLRef i) 
40124 (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
40125 \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow 
40126 False])) I (THead (Bind x0) x1 x2) H5) in (False_ind (eq T (THead (Flat Appl) 
40127 u (TLRef i)) (THead (Bind x0) x5 (THead (Flat Appl) (lift (S O) O x4) x3))) 
40128 H10)) t2 H6))))))))))))) H3)) H2)))))))).
40129
40130 theorem nf2_lref_abst:
40131  \forall (c: C).(\forall (e: C).(\forall (u: T).(\forall (i: nat).((getl i c 
40132 (CHead e (Bind Abst) u)) \to (nf2 c (TLRef i))))))
40133 \def
40134  \lambda (c: C).(\lambda (e: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
40135 (H: (getl i c (CHead e (Bind Abst) u))).(\lambda (t2: T).(\lambda (H0: (pr2 c 
40136 (TLRef i) t2)).(let H1 \def (pr2_gen_lref c t2 i H0) in (or_ind (eq T t2 
40137 (TLRef i)) (ex2_2 C T (\lambda (d: C).(\lambda (u0: T).(getl i c (CHead d 
40138 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(eq T t2 (lift (S i) O 
40139 u0))))) (eq T (TLRef i) t2) (\lambda (H2: (eq T t2 (TLRef i))).(eq_ind_r T 
40140 (TLRef i) (\lambda (t: T).(eq T (TLRef i) t)) (refl_equal T (TLRef i)) t2 
40141 H2)) (\lambda (H2: (ex2_2 C T (\lambda (d: C).(\lambda (u: T).(getl i c 
40142 (CHead d (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(eq T t2 (lift (S 
40143 i) O u)))))).(ex2_2_ind C T (\lambda (d: C).(\lambda (u0: T).(getl i c (CHead 
40144 d (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(eq T t2 (lift (S i) O 
40145 u0)))) (eq T (TLRef i) t2) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H3: 
40146 (getl i c (CHead x0 (Bind Abbr) x1))).(\lambda (H4: (eq T t2 (lift (S i) O 
40147 x1))).(eq_ind_r T (lift (S i) O x1) (\lambda (t: T).(eq T (TLRef i) t)) (let 
40148 H5 \def (eq_ind C (CHead e (Bind Abst) u) (\lambda (c0: C).(getl i c c0)) H 
40149 (CHead x0 (Bind Abbr) x1) (getl_mono c (CHead e (Bind Abst) u) i H (CHead x0 
40150 (Bind Abbr) x1) H3)) in (let H6 \def (eq_ind C (CHead e (Bind Abst) u) 
40151 (\lambda (ee: C).(match ee return (\lambda (_: C).Prop) with [(CSort _) 
40152 \Rightarrow False | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
40153 K).Prop) with [(Bind b) \Rightarrow (match b return (\lambda (_: B).Prop) 
40154 with [Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow 
40155 False]) | (Flat _) \Rightarrow False])])) I (CHead x0 (Bind Abbr) x1) 
40156 (getl_mono c (CHead e (Bind Abst) u) i H (CHead x0 (Bind Abbr) x1) H3)) in 
40157 (False_ind (eq T (TLRef i) (lift (S i) O x1)) H6))) t2 H4))))) H2)) 
40158 H1)))))))).
40159
40160 theorem nf2_lift:
40161  \forall (d: C).(\forall (t: T).((nf2 d t) \to (\forall (c: C).(\forall (h: 
40162 nat).(\forall (i: nat).((drop h i c d) \to (nf2 c (lift h i t))))))))
40163 \def
40164  \lambda (d: C).(\lambda (t: T).(\lambda (H: ((\forall (t2: T).((pr2 d t t2) 
40165 \to (eq T t t2))))).(\lambda (c: C).(\lambda (h: nat).(\lambda (i: 
40166 nat).(\lambda (H0: (drop h i c d)).(\lambda (t2: T).(\lambda (H1: (pr2 c 
40167 (lift h i t) t2)).(let H2 \def (pr2_gen_lift c t t2 h i H1 d H0) in (ex2_ind 
40168 T (\lambda (t3: T).(eq T t2 (lift h i t3))) (\lambda (t3: T).(pr2 d t t3)) 
40169 (eq T (lift h i t) t2) (\lambda (x: T).(\lambda (H3: (eq T t2 (lift h i 
40170 x))).(\lambda (H4: (pr2 d t x)).(eq_ind_r T (lift h i x) (\lambda (t0: T).(eq 
40171 T (lift h i t) t0)) (let H_y \def (H x H4) in (let H5 \def (eq_ind_r T x 
40172 (\lambda (t0: T).(pr2 d t t0)) H4 t H_y) in (eq_ind T t (\lambda (t0: T).(eq 
40173 T (lift h i t) (lift h i t0))) (refl_equal T (lift h i t)) x H_y))) t2 H3)))) 
40174 H2)))))))))).
40175
40176 theorem nf2_lift1:
40177  \forall (e: C).(\forall (hds: PList).(\forall (c: C).(\forall (t: T).((drop1 
40178 hds c e) \to ((nf2 e t) \to (nf2 c (lift1 hds t)))))))
40179 \def
40180  \lambda (e: C).(\lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall 
40181 (c: C).(\forall (t: T).((drop1 p c e) \to ((nf2 e t) \to (nf2 c (lift1 p 
40182 t))))))) (\lambda (c: C).(\lambda (t: T).(\lambda (H: (drop1 PNil c 
40183 e)).(\lambda (H0: (nf2 e t)).(let H1 \def (match H return (\lambda (p: 
40184 PList).(\lambda (c0: C).(\lambda (c1: C).(\lambda (_: (drop1 p c0 c1)).((eq 
40185 PList p PNil) \to ((eq C c0 c) \to ((eq C c1 e) \to (nf2 c t)))))))) with 
40186 [(drop1_nil c0) \Rightarrow (\lambda (_: (eq PList PNil PNil)).(\lambda (H2: 
40187 (eq C c0 c)).(\lambda (H3: (eq C c0 e)).(eq_ind C c (\lambda (c1: C).((eq C 
40188 c1 e) \to (nf2 c t))) (\lambda (H4: (eq C c e)).(eq_ind C e (\lambda (c: 
40189 C).(nf2 c t)) H0 c (sym_eq C c e H4))) c0 (sym_eq C c0 c H2) H3)))) | 
40190 (drop1_cons c1 c2 h d H1 c3 hds H2) \Rightarrow (\lambda (H3: (eq PList 
40191 (PCons h d hds) PNil)).(\lambda (H4: (eq C c1 c)).(\lambda (H5: (eq C c3 
40192 e)).((let H6 \def (eq_ind PList (PCons h d hds) (\lambda (e0: PList).(match 
40193 e0 return (\lambda (_: PList).Prop) with [PNil \Rightarrow False | (PCons _ _ 
40194 _) \Rightarrow True])) I PNil H3) in (False_ind ((eq C c1 c) \to ((eq C c3 e) 
40195 \to ((drop h d c1 c2) \to ((drop1 hds c2 c3) \to (nf2 c t))))) H6)) H4 H5 H1 
40196 H2))))]) in (H1 (refl_equal PList PNil) (refl_equal C c) (refl_equal C 
40197 e))))))) (\lambda (n: nat).(\lambda (n0: nat).(\lambda (p: PList).(\lambda 
40198 (H: ((\forall (c: C).(\forall (t: T).((drop1 p c e) \to ((nf2 e t) \to (nf2 c 
40199 (lift1 p t)))))))).(\lambda (c: C).(\lambda (t: T).(\lambda (H0: (drop1 
40200 (PCons n n0 p) c e)).(\lambda (H1: (nf2 e t)).(let H2 \def (match H0 return 
40201 (\lambda (p0: PList).(\lambda (c0: C).(\lambda (c1: C).(\lambda (_: (drop1 p0 
40202 c0 c1)).((eq PList p0 (PCons n n0 p)) \to ((eq C c0 c) \to ((eq C c1 e) \to 
40203 (nf2 c (lift n n0 (lift1 p t)))))))))) with [(drop1_nil c0) \Rightarrow 
40204 (\lambda (H2: (eq PList PNil (PCons n n0 p))).(\lambda (H3: (eq C c0 
40205 c)).(\lambda (H4: (eq C c0 e)).((let H5 \def (eq_ind PList PNil (\lambda (e0: 
40206 PList).(match e0 return (\lambda (_: PList).Prop) with [PNil \Rightarrow True 
40207 | (PCons _ _ _) \Rightarrow False])) I (PCons n n0 p) H2) in (False_ind ((eq 
40208 C c0 c) \to ((eq C c0 e) \to (nf2 c (lift n n0 (lift1 p t))))) H5)) H3 H4)))) 
40209 | (drop1_cons c1 c2 h d H2 c3 hds H3) \Rightarrow (\lambda (H4: (eq PList 
40210 (PCons h d hds) (PCons n n0 p))).(\lambda (H5: (eq C c1 c)).(\lambda (H6: (eq 
40211 C c3 e)).((let H7 \def (f_equal PList PList (\lambda (e0: PList).(match e0 
40212 return (\lambda (_: PList).PList) with [PNil \Rightarrow hds | (PCons _ _ p) 
40213 \Rightarrow p])) (PCons h d hds) (PCons n n0 p) H4) in ((let H8 \def (f_equal 
40214 PList nat (\lambda (e0: PList).(match e0 return (\lambda (_: PList).nat) with 
40215 [PNil \Rightarrow d | (PCons _ n _) \Rightarrow n])) (PCons h d hds) (PCons n 
40216 n0 p) H4) in ((let H9 \def (f_equal PList nat (\lambda (e0: PList).(match e0 
40217 return (\lambda (_: PList).nat) with [PNil \Rightarrow h | (PCons n _ _) 
40218 \Rightarrow n])) (PCons h d hds) (PCons n n0 p) H4) in (eq_ind nat n (\lambda 
40219 (n1: nat).((eq nat d n0) \to ((eq PList hds p) \to ((eq C c1 c) \to ((eq C c3 
40220 e) \to ((drop n1 d c1 c2) \to ((drop1 hds c2 c3) \to (nf2 c (lift n n0 (lift1 
40221 p t)))))))))) (\lambda (H10: (eq nat d n0)).(eq_ind nat n0 (\lambda (n1: 
40222 nat).((eq PList hds p) \to ((eq C c1 c) \to ((eq C c3 e) \to ((drop n n1 c1 
40223 c2) \to ((drop1 hds c2 c3) \to (nf2 c (lift n n0 (lift1 p t))))))))) (\lambda 
40224 (H11: (eq PList hds p)).(eq_ind PList p (\lambda (p0: PList).((eq C c1 c) \to 
40225 ((eq C c3 e) \to ((drop n n0 c1 c2) \to ((drop1 p0 c2 c3) \to (nf2 c (lift n 
40226 n0 (lift1 p t)))))))) (\lambda (H12: (eq C c1 c)).(eq_ind C c (\lambda (c0: 
40227 C).((eq C c3 e) \to ((drop n n0 c0 c2) \to ((drop1 p c2 c3) \to (nf2 c (lift 
40228 n n0 (lift1 p t))))))) (\lambda (H13: (eq C c3 e)).(eq_ind C e (\lambda (c0: 
40229 C).((drop n n0 c c2) \to ((drop1 p c2 c0) \to (nf2 c (lift n n0 (lift1 p 
40230 t)))))) (\lambda (H14: (drop n n0 c c2)).(\lambda (H15: (drop1 p c2 
40231 e)).(nf2_lift c2 (lift1 p t) (H c2 t H15 H1) c n n0 H14))) c3 (sym_eq C c3 e 
40232 H13))) c1 (sym_eq C c1 c H12))) hds (sym_eq PList hds p H11))) d (sym_eq nat 
40233 d n0 H10))) h (sym_eq nat h n H9))) H8)) H7)) H5 H6 H2 H3))))]) in (H2 
40234 (refl_equal PList (PCons n n0 p)) (refl_equal C c) (refl_equal C e))))))))))) 
40235 hds)).
40236
40237 theorem nf2_iso_appls_lref:
40238  \forall (c: C).(\forall (i: nat).((nf2 c (TLRef i)) \to (\forall (vs: 
40239 TList).(\forall (u: T).((pr3 c (THeads (Flat Appl) vs (TLRef i)) u) \to (iso 
40240 (THeads (Flat Appl) vs (TLRef i)) u))))))
40241 \def
40242  \lambda (c: C).(\lambda (i: nat).(\lambda (H: (nf2 c (TLRef i))).(\lambda 
40243 (vs: TList).(TList_ind (\lambda (t: TList).(\forall (u: T).((pr3 c (THeads 
40244 (Flat Appl) t (TLRef i)) u) \to (iso (THeads (Flat Appl) t (TLRef i)) u)))) 
40245 (\lambda (u: T).(\lambda (H0: (pr3 c (TLRef i) u)).(let H_y \def 
40246 (nf2_pr3_unfold c (TLRef i) u H0 H) in (let H1 \def (eq_ind_r T u (\lambda 
40247 (t: T).(pr3 c (TLRef i) t)) H0 (TLRef i) H_y) in (eq_ind T (TLRef i) (\lambda 
40248 (t: T).(iso (TLRef i) t)) (iso_lref i i) u H_y))))) (\lambda (t: T).(\lambda 
40249 (t0: TList).(\lambda (H0: ((\forall (u: T).((pr3 c (THeads (Flat Appl) t0 
40250 (TLRef i)) u) \to (iso (THeads (Flat Appl) t0 (TLRef i)) u))))).(\lambda (u: 
40251 T).(\lambda (H1: (pr3 c (THead (Flat Appl) t (THeads (Flat Appl) t0 (TLRef 
40252 i))) u)).(let H2 \def (pr3_gen_appl c t (THeads (Flat Appl) t0 (TLRef i)) u 
40253 H1) in (or3_ind (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T u (THead 
40254 (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))) 
40255 (\lambda (_: T).(\lambda (t2: T).(pr3 c (THeads (Flat Appl) t0 (TLRef i)) 
40256 t2)))) (ex4_4 T T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
40257 T).(\lambda (t2: T).(pr3 c (THead (Bind Abbr) u2 t2) u))))) (\lambda (_: 
40258 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))))) (\lambda 
40259 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(pr3 c (THeads (Flat 
40260 Appl) t0 (TLRef i)) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda 
40261 (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u0: 
40262 T).(pr3 (CHead c (Bind b) u0) z1 t2)))))))) (ex6_6 B T T T T T (\lambda (b: 
40263 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
40264 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
40265 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c (THeads (Flat 
40266 Appl) t0 (TLRef i)) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda 
40267 (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: 
40268 T).(pr3 c (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) 
40269 u))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
40270 T).(\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))))))) (\lambda (_: 
40271 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
40272 (y2: T).(pr3 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
40273 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) 
40274 y2) z1 z2)))))))) (iso (THead (Flat Appl) t (THeads (Flat Appl) t0 (TLRef 
40275 i))) u) (\lambda (H3: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T u 
40276 (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))) 
40277 (\lambda (_: T).(\lambda (t2: T).(pr3 c (THeads (Flat Appl) t0 (TLRef i)) 
40278 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t2: T).(eq T u (THead (Flat 
40279 Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))) (\lambda (_: 
40280 T).(\lambda (t2: T).(pr3 c (THeads (Flat Appl) t0 (TLRef i)) t2))) (iso 
40281 (THead (Flat Appl) t (THeads (Flat Appl) t0 (TLRef i))) u) (\lambda (x0: 
40282 T).(\lambda (x1: T).(\lambda (H4: (eq T u (THead (Flat Appl) x0 
40283 x1))).(\lambda (_: (pr3 c t x0)).(\lambda (_: (pr3 c (THeads (Flat Appl) t0 
40284 (TLRef i)) x1)).(eq_ind_r T (THead (Flat Appl) x0 x1) (\lambda (t1: T).(iso 
40285 (THead (Flat Appl) t (THeads (Flat Appl) t0 (TLRef i))) t1)) (iso_head (Flat 
40286 Appl) t x0 (THeads (Flat Appl) t0 (TLRef i)) x1) u H4)))))) H3)) (\lambda 
40287 (H3: (ex4_4 T T T T (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
40288 (t2: T).(pr3 c (THead (Bind Abbr) u2 t2) u))))) (\lambda (_: T).(\lambda (_: 
40289 T).(\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))))) (\lambda (y1: 
40290 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(pr3 c (THeads (Flat 
40291 Appl) t0 (TLRef i)) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda 
40292 (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 
40293 (CHead c (Bind b) u) z1 t2))))))))).(ex4_4_ind T T T T (\lambda (_: 
40294 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: T).(pr3 c (THead (Bind 
40295 Abbr) u2 t2) u))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
40296 (_: T).(pr3 c t u2))))) (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
40297 T).(\lambda (_: T).(pr3 c (THeads (Flat Appl) t0 (TLRef i)) (THead (Bind 
40298 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda 
40299 (t2: T).(\forall (b: B).(\forall (u0: T).(pr3 (CHead c (Bind b) u0) z1 
40300 t2))))))) (iso (THead (Flat Appl) t (THeads (Flat Appl) t0 (TLRef i))) u) 
40301 (\lambda (x0: T).(\lambda (x1: T).(\lambda (x2: T).(\lambda (x3: T).(\lambda 
40302 (_: (pr3 c (THead (Bind Abbr) x2 x3) u)).(\lambda (_: (pr3 c t x2)).(\lambda 
40303 (H6: (pr3 c (THeads (Flat Appl) t0 (TLRef i)) (THead (Bind Abst) x0 
40304 x1))).(\lambda (_: ((\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
40305 x1 x3))))).(let H_y \def (H0 (THead (Bind Abst) x0 x1) H6) in 
40306 (iso_flats_lref_bind_false Appl Abst i x0 x1 t0 H_y (iso (THead (Flat Appl) t 
40307 (THeads (Flat Appl) t0 (TLRef i))) u))))))))))) H3)) (\lambda (H3: (ex6_6 B T 
40308 T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
40309 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
40310 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
40311 (_: T).(pr3 c (THeads (Flat Appl) t0 (TLRef i)) (THead (Bind b) y1 z1)))))))) 
40312 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda 
40313 (u2: T).(\lambda (y2: T).(pr3 c (THead (Bind b) y2 (THead (Flat Appl) (lift 
40314 (S O) O u2) z2)) u))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: 
40315 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))))))) 
40316 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
40317 T).(\lambda (y2: T).(pr3 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
40318 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr3 
40319 (CHead c (Bind b) y2) z1 z2))))))))).(ex6_6_ind B T T T T T (\lambda (b: 
40320 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
40321 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
40322 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(pr3 c (THeads (Flat 
40323 Appl) t0 (TLRef i)) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda 
40324 (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: 
40325 T).(pr3 c (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2)) 
40326 u))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
40327 T).(\lambda (u2: T).(\lambda (_: T).(pr3 c t u2))))))) (\lambda (_: 
40328 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
40329 (y2: T).(pr3 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
40330 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr3 (CHead c (Bind b) 
40331 y2) z1 z2))))))) (iso (THead (Flat Appl) t (THeads (Flat Appl) t0 (TLRef i))) 
40332 u) (\lambda (x0: B).(\lambda (x1: T).(\lambda (x2: T).(\lambda (x3: 
40333 T).(\lambda (x4: T).(\lambda (x5: T).(\lambda (_: (not (eq B x0 
40334 Abst))).(\lambda (H5: (pr3 c (THeads (Flat Appl) t0 (TLRef i)) (THead (Bind 
40335 x0) x1 x2))).(\lambda (_: (pr3 c (THead (Bind x0) x5 (THead (Flat Appl) (lift 
40336 (S O) O x4) x3)) u)).(\lambda (_: (pr3 c t x4)).(\lambda (_: (pr3 c x1 
40337 x5)).(\lambda (_: (pr3 (CHead c (Bind x0) x5) x2 x3)).(let H_y \def (H0 
40338 (THead (Bind x0) x1 x2) H5) in (iso_flats_lref_bind_false Appl x0 i x1 x2 t0 
40339 H_y (iso (THead (Flat Appl) t (THeads (Flat Appl) t0 (TLRef i))) 
40340 u))))))))))))))) H3)) H2))))))) vs)))).
40341
40342 theorem nf2_dec:
40343  \forall (c: C).(\forall (t1: T).(or (nf2 c t1) (ex2 T (\lambda (t2: T).((eq 
40344 T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr2 c t1 t2)))))
40345 \def
40346  \lambda (c: C).(c_tail_ind (\lambda (c0: C).(\forall (t1: T).(or (\forall 
40347 (t2: T).((pr2 c0 t1 t2) \to (eq T t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 
40348 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr2 c0 t1 t2)))))) (\lambda 
40349 (n: nat).(\lambda (t1: T).(let H_x \def (nf0_dec t1) in (let H \def H_x in 
40350 (or_ind (\forall (t2: T).((pr0 t1 t2) \to (eq T t1 t2))) (ex2 T (\lambda (t2: 
40351 T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 t1 t2))) 
40352 (or (\forall (t2: T).((pr2 (CSort n) t1 t2) \to (eq T t1 t2))) (ex2 T 
40353 (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
40354 T).(pr2 (CSort n) t1 t2)))) (\lambda (H0: ((\forall (t2: T).((pr0 t1 t2) \to 
40355 (eq T t1 t2))))).(or_introl (\forall (t2: T).((pr2 (CSort n) t1 t2) \to (eq T 
40356 t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) 
40357 (\lambda (t2: T).(pr2 (CSort n) t1 t2))) (\lambda (t2: T).(\lambda (H1: (pr2 
40358 (CSort n) t1 t2)).(let H_y \def (pr2_gen_csort t1 t2 n H1) in (H0 t2 
40359 H_y)))))) (\lambda (H0: (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall 
40360 (P: Prop).P))) (\lambda (t2: T).(pr0 t1 t2)))).(ex2_ind T (\lambda (t2: 
40361 T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr0 t1 t2)) 
40362 (or (\forall (t2: T).((pr2 (CSort n) t1 t2) \to (eq T t1 t2))) (ex2 T 
40363 (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
40364 T).(pr2 (CSort n) t1 t2)))) (\lambda (x: T).(\lambda (H1: (((eq T t1 x) \to 
40365 (\forall (P: Prop).P)))).(\lambda (H2: (pr0 t1 x)).(or_intror (\forall (t2: 
40366 T).((pr2 (CSort n) t1 t2) \to (eq T t1 t2))) (ex2 T (\lambda (t2: T).((eq T 
40367 t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr2 (CSort n) t1 t2))) 
40368 (ex_intro2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) 
40369 (\lambda (t2: T).(pr2 (CSort n) t1 t2)) x H1 (pr2_free (CSort n) t1 x 
40370 H2)))))) H0)) H))))) (\lambda (c0: C).(\lambda (H: ((\forall (t1: T).(or 
40371 (\forall (t2: T).((pr2 c0 t1 t2) \to (eq T t1 t2))) (ex2 T (\lambda (t2: 
40372 T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr2 c0 t1 
40373 t2))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (t1: T).(let H_x \def (H 
40374 t1) in (let H0 \def H_x in (or_ind (\forall (t2: T).((pr2 c0 t1 t2) \to (eq T 
40375 t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) 
40376 (\lambda (t2: T).(pr2 c0 t1 t2))) (or (\forall (t2: T).((pr2 (CTail k t c0) 
40377 t1 t2) \to (eq T t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall 
40378 (P: Prop).P))) (\lambda (t2: T).(pr2 (CTail k t c0) t1 t2)))) (\lambda (H1: 
40379 ((\forall (t2: T).((pr2 c0 t1 t2) \to (eq T t1 t2))))).(match k return 
40380 (\lambda (k0: K).(or (\forall (t2: T).((pr2 (CTail k0 t c0) t1 t2) \to (eq T 
40381 t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) 
40382 (\lambda (t2: T).(pr2 (CTail k0 t c0) t1 t2))))) with [(Bind b) \Rightarrow 
40383 (match b return (\lambda (b0: B).(or (\forall (t2: T).((pr2 (CTail (Bind b0) 
40384 t c0) t1 t2) \to (eq T t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 t2) \to 
40385 (\forall (P: Prop).P))) (\lambda (t2: T).(pr2 (CTail (Bind b0) t c0) t1 
40386 t2))))) with [Abbr \Rightarrow (let H_x0 \def (dnf_dec t t1 (clen c0)) in 
40387 (let H2 \def H_x0 in (ex_ind T (\lambda (v: T).(or (subst0 (clen c0) t t1 
40388 (lift (S O) (clen c0) v)) (eq T t1 (lift (S O) (clen c0) v)))) (or (\forall 
40389 (t2: T).((pr2 (CTail (Bind Abbr) t c0) t1 t2) \to (eq T t1 t2))) (ex2 T 
40390 (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
40391 T).(pr2 (CTail (Bind Abbr) t c0) t1 t2)))) (\lambda (x: T).(\lambda (H3: (or 
40392 (subst0 (clen c0) t t1 (lift (S O) (clen c0) x)) (eq T t1 (lift (S O) (clen 
40393 c0) x)))).(or_ind (subst0 (clen c0) t t1 (lift (S O) (clen c0) x)) (eq T t1 
40394 (lift (S O) (clen c0) x)) (or (\forall (t2: T).((pr2 (CTail (Bind Abbr) t c0) 
40395 t1 t2) \to (eq T t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall 
40396 (P: Prop).P))) (\lambda (t2: T).(pr2 (CTail (Bind Abbr) t c0) t1 t2)))) 
40397 (\lambda (H4: (subst0 (clen c0) t t1 (lift (S O) (clen c0) x))).(let H_x1 
40398 \def (getl_ctail_clen Abbr t c0) in (let H5 \def H_x1 in (ex_ind nat (\lambda 
40399 (n: nat).(getl (clen c0) (CTail (Bind Abbr) t c0) (CHead (CSort n) (Bind 
40400 Abbr) t))) (or (\forall (t2: T).((pr2 (CTail (Bind Abbr) t c0) t1 t2) \to (eq 
40401 T t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) 
40402 (\lambda (t2: T).(pr2 (CTail (Bind Abbr) t c0) t1 t2)))) (\lambda (x0: 
40403 nat).(\lambda (H6: (getl (clen c0) (CTail (Bind Abbr) t c0) (CHead (CSort x0) 
40404 (Bind Abbr) t))).(or_intror (\forall (t2: T).((pr2 (CTail (Bind Abbr) t c0) 
40405 t1 t2) \to (eq T t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall 
40406 (P: Prop).P))) (\lambda (t2: T).(pr2 (CTail (Bind Abbr) t c0) t1 t2))) 
40407 (ex_intro2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) 
40408 (\lambda (t2: T).(pr2 (CTail (Bind Abbr) t c0) t1 t2)) (lift (S O) (clen c0) 
40409 x) (\lambda (H7: (eq T t1 (lift (S O) (clen c0) x))).(\lambda (P: Prop).(let 
40410 H8 \def (eq_ind T t1 (\lambda (t0: T).(subst0 (clen c0) t t0 (lift (S O) 
40411 (clen c0) x))) H4 (lift (S O) (clen c0) x) H7) in (subst0_gen_lift_false x t 
40412 (lift (S O) (clen c0) x) (S O) (clen c0) (clen c0) (le_n (clen c0)) (eq_ind_r 
40413 nat (plus (S O) (clen c0)) (\lambda (n: nat).(lt (clen c0) n)) (le_n (plus (S 
40414 O) (clen c0))) (plus (clen c0) (S O)) (plus_comm (clen c0) (S O))) H8 P)))) 
40415 (pr2_delta (CTail (Bind Abbr) t c0) (CSort x0) t (clen c0) H6 t1 t1 (pr0_refl 
40416 t1) (lift (S O) (clen c0) x) H4))))) H5)))) (\lambda (H4: (eq T t1 (lift (S 
40417 O) (clen c0) x))).(let H5 \def (eq_ind T t1 (\lambda (t: T).(\forall (t2: 
40418 T).((pr2 c0 t t2) \to (eq T t t2)))) H1 (lift (S O) (clen c0) x) H4) in 
40419 (eq_ind_r T (lift (S O) (clen c0) x) (\lambda (t0: T).(or (\forall (t2: 
40420 T).((pr2 (CTail (Bind Abbr) t c0) t0 t2) \to (eq T t0 t2))) (ex2 T (\lambda 
40421 (t2: T).((eq T t0 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr2 
40422 (CTail (Bind Abbr) t c0) t0 t2))))) (or_introl (\forall (t2: T).((pr2 (CTail 
40423 (Bind Abbr) t c0) (lift (S O) (clen c0) x) t2) \to (eq T (lift (S O) (clen 
40424 c0) x) t2))) (ex2 T (\lambda (t2: T).((eq T (lift (S O) (clen c0) x) t2) \to 
40425 (\forall (P: Prop).P))) (\lambda (t2: T).(pr2 (CTail (Bind Abbr) t c0) (lift 
40426 (S O) (clen c0) x) t2))) (\lambda (t2: T).(\lambda (H6: (pr2 (CTail (Bind 
40427 Abbr) t c0) (lift (S O) (clen c0) x) t2)).(let H_x1 \def (pr2_gen_ctail (Bind 
40428 Abbr) c0 t (lift (S O) (clen c0) x) t2 H6) in (let H7 \def H_x1 in (or_ind 
40429 (pr2 c0 (lift (S O) (clen c0) x) t2) (ex3 T (\lambda (_: T).(eq K (Bind Abbr) 
40430 (Bind Abbr))) (\lambda (t0: T).(pr0 (lift (S O) (clen c0) x) t0)) (\lambda 
40431 (t0: T).(subst0 (clen c0) t t0 t2))) (eq T (lift (S O) (clen c0) x) t2) 
40432 (\lambda (H8: (pr2 c0 (lift (S O) (clen c0) x) t2)).(H5 t2 H8)) (\lambda (H8: 
40433 (ex3 T (\lambda (_: T).(eq K (Bind Abbr) (Bind Abbr))) (\lambda (t: T).(pr0 
40434 (lift (S O) (clen c0) x) t)) (\lambda (t0: T).(subst0 (clen c0) t t0 
40435 t2)))).(ex3_ind T (\lambda (_: T).(eq K (Bind Abbr) (Bind Abbr))) (\lambda 
40436 (t0: T).(pr0 (lift (S O) (clen c0) x) t0)) (\lambda (t0: T).(subst0 (clen c0) 
40437 t t0 t2)) (eq T (lift (S O) (clen c0) x) t2) (\lambda (x0: T).(\lambda (_: 
40438 (eq K (Bind Abbr) (Bind Abbr))).(\lambda (H10: (pr0 (lift (S O) (clen c0) x) 
40439 x0)).(\lambda (H11: (subst0 (clen c0) t x0 t2)).(ex2_ind T (\lambda (t3: 
40440 T).(eq T x0 (lift (S O) (clen c0) t3))) (\lambda (t3: T).(pr0 x t3)) (eq T 
40441 (lift (S O) (clen c0) x) t2) (\lambda (x1: T).(\lambda (H12: (eq T x0 (lift 
40442 (S O) (clen c0) x1))).(\lambda (_: (pr0 x x1)).(let H14 \def (eq_ind T x0 
40443 (\lambda (t0: T).(subst0 (clen c0) t t0 t2)) H11 (lift (S O) (clen c0) x1) 
40444 H12) in (subst0_gen_lift_false x1 t t2 (S O) (clen c0) (clen c0) (le_n (clen 
40445 c0)) (eq_ind_r nat (plus (S O) (clen c0)) (\lambda (n: nat).(lt (clen c0) n)) 
40446 (le_n (plus (S O) (clen c0))) (plus (clen c0) (S O)) (plus_comm (clen c0) (S 
40447 O))) H14 (eq T (lift (S O) (clen c0) x) t2)))))) (pr0_gen_lift x x0 (S O) 
40448 (clen c0) H10)))))) H8)) H7)))))) t1 H4))) H3))) H2))) | Abst \Rightarrow 
40449 (or_introl (\forall (t2: T).((pr2 (CTail (Bind Abst) t c0) t1 t2) \to (eq T 
40450 t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) 
40451 (\lambda (t2: T).(pr2 (CTail (Bind Abst) t c0) t1 t2))) (\lambda (t2: 
40452 T).(\lambda (H2: (pr2 (CTail (Bind Abst) t c0) t1 t2)).(let H_x0 \def 
40453 (pr2_gen_ctail (Bind Abst) c0 t t1 t2 H2) in (let H3 \def H_x0 in (or_ind 
40454 (pr2 c0 t1 t2) (ex3 T (\lambda (_: T).(eq K (Bind Abst) (Bind Abbr))) 
40455 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(subst0 (clen c0) t t0 t2))) 
40456 (eq T t1 t2) (\lambda (H4: (pr2 c0 t1 t2)).(H1 t2 H4)) (\lambda (H4: (ex3 T 
40457 (\lambda (_: T).(eq K (Bind Abst) (Bind Abbr))) (\lambda (t: T).(pr0 t1 t)) 
40458 (\lambda (t0: T).(subst0 (clen c0) t t0 t2)))).(ex3_ind T (\lambda (_: T).(eq 
40459 K (Bind Abst) (Bind Abbr))) (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
40460 T).(subst0 (clen c0) t t0 t2)) (eq T t1 t2) (\lambda (x0: T).(\lambda (H5: 
40461 (eq K (Bind Abst) (Bind Abbr))).(\lambda (_: (pr0 t1 x0)).(\lambda (_: 
40462 (subst0 (clen c0) t x0 t2)).(let H8 \def (eq_ind K (Bind Abst) (\lambda (ee: 
40463 K).(match ee return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b 
40464 return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow 
40465 True | Void \Rightarrow False]) | (Flat _) \Rightarrow False])) I (Bind Abbr) 
40466 H5) in (False_ind (eq T t1 t2) H8)))))) H4)) H3)))))) | Void \Rightarrow 
40467 (or_introl (\forall (t2: T).((pr2 (CTail (Bind Void) t c0) t1 t2) \to (eq T 
40468 t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) 
40469 (\lambda (t2: T).(pr2 (CTail (Bind Void) t c0) t1 t2))) (\lambda (t2: 
40470 T).(\lambda (H2: (pr2 (CTail (Bind Void) t c0) t1 t2)).(let H_x0 \def 
40471 (pr2_gen_ctail (Bind Void) c0 t t1 t2 H2) in (let H3 \def H_x0 in (or_ind 
40472 (pr2 c0 t1 t2) (ex3 T (\lambda (_: T).(eq K (Bind Void) (Bind Abbr))) 
40473 (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(subst0 (clen c0) t t0 t2))) 
40474 (eq T t1 t2) (\lambda (H4: (pr2 c0 t1 t2)).(H1 t2 H4)) (\lambda (H4: (ex3 T 
40475 (\lambda (_: T).(eq K (Bind Void) (Bind Abbr))) (\lambda (t: T).(pr0 t1 t)) 
40476 (\lambda (t0: T).(subst0 (clen c0) t t0 t2)))).(ex3_ind T (\lambda (_: T).(eq 
40477 K (Bind Void) (Bind Abbr))) (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: 
40478 T).(subst0 (clen c0) t t0 t2)) (eq T t1 t2) (\lambda (x0: T).(\lambda (H5: 
40479 (eq K (Bind Void) (Bind Abbr))).(\lambda (_: (pr0 t1 x0)).(\lambda (_: 
40480 (subst0 (clen c0) t x0 t2)).(let H8 \def (eq_ind K (Bind Void) (\lambda (ee: 
40481 K).(match ee return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b 
40482 return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow 
40483 False | Void \Rightarrow True]) | (Flat _) \Rightarrow False])) I (Bind Abbr) 
40484 H5) in (False_ind (eq T t1 t2) H8)))))) H4)) H3))))))]) | (Flat f) 
40485 \Rightarrow (or_introl (\forall (t2: T).((pr2 (CTail (Flat f) t c0) t1 t2) 
40486 \to (eq T t1 t2))) (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: 
40487 Prop).P))) (\lambda (t2: T).(pr2 (CTail (Flat f) t c0) t1 t2))) (\lambda (t2: 
40488 T).(\lambda (H2: (pr2 (CTail (Flat f) t c0) t1 t2)).(let H_x0 \def 
40489 (pr2_gen_ctail (Flat f) c0 t t1 t2 H2) in (let H3 \def H_x0 in (or_ind (pr2 
40490 c0 t1 t2) (ex3 T (\lambda (_: T).(eq K (Flat f) (Bind Abbr))) (\lambda (t0: 
40491 T).(pr0 t1 t0)) (\lambda (t0: T).(subst0 (clen c0) t t0 t2))) (eq T t1 t2) 
40492 (\lambda (H4: (pr2 c0 t1 t2)).(H1 t2 H4)) (\lambda (H4: (ex3 T (\lambda (_: 
40493 T).(eq K (Flat f) (Bind Abbr))) (\lambda (t: T).(pr0 t1 t)) (\lambda (t0: 
40494 T).(subst0 (clen c0) t t0 t2)))).(ex3_ind T (\lambda (_: T).(eq K (Flat f) 
40495 (Bind Abbr))) (\lambda (t0: T).(pr0 t1 t0)) (\lambda (t0: T).(subst0 (clen 
40496 c0) t t0 t2)) (eq T t1 t2) (\lambda (x0: T).(\lambda (H5: (eq K (Flat f) 
40497 (Bind Abbr))).(\lambda (_: (pr0 t1 x0)).(\lambda (_: (subst0 (clen c0) t x0 
40498 t2)).(let H8 \def (eq_ind K (Flat f) (\lambda (ee: K).(match ee return 
40499 (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
40500 True])) I (Bind Abbr) H5) in (False_ind (eq T t1 t2) H8)))))) H4)) 
40501 H3))))))])) (\lambda (H1: (ex2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall 
40502 (P: Prop).P))) (\lambda (t2: T).(pr2 c0 t1 t2)))).(ex2_ind T (\lambda (t2: 
40503 T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr2 c0 t1 t2)) 
40504 (or (\forall (t2: T).((pr2 (CTail k t c0) t1 t2) \to (eq T t1 t2))) (ex2 T 
40505 (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
40506 T).(pr2 (CTail k t c0) t1 t2)))) (\lambda (x: T).(\lambda (H2: (((eq T t1 x) 
40507 \to (\forall (P: Prop).P)))).(\lambda (H3: (pr2 c0 t1 x)).(or_intror (\forall 
40508 (t2: T).((pr2 (CTail k t c0) t1 t2) \to (eq T t1 t2))) (ex2 T (\lambda (t2: 
40509 T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: T).(pr2 (CTail k t 
40510 c0) t1 t2))) (ex_intro2 T (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: 
40511 Prop).P))) (\lambda (t2: T).(pr2 (CTail k t c0) t1 t2)) x H2 (pr2_ctail c0 t1 
40512 x H3 k t)))))) H1)) H0)))))))) c).
40513
40514 inductive sn3 (c:C): T \to Prop \def
40515 | sn3_sing: \forall (t1: T).(((\forall (t2: T).((((eq T t1 t2) \to (\forall 
40516 (P: Prop).P))) \to ((pr3 c t1 t2) \to (sn3 c t2))))) \to (sn3 c t1)).
40517
40518 definition sns3:
40519  C \to (TList \to Prop)
40520 \def
40521  let rec sns3 (c: C) (ts: TList) on ts: Prop \def (match ts with [TNil 
40522 \Rightarrow True | (TCons t ts0) \Rightarrow (land (sn3 c t) (sns3 c ts0))]) 
40523 in sns3.
40524
40525 theorem sn3_gen_flat:
40526  \forall (f: F).(\forall (c: C).(\forall (u: T).(\forall (t: T).((sn3 c 
40527 (THead (Flat f) u t)) \to (land (sn3 c u) (sn3 c t))))))
40528 \def
40529  \lambda (f: F).(\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H: 
40530 (sn3 c (THead (Flat f) u t))).(insert_eq T (THead (Flat f) u t) (\lambda (t0: 
40531 T).(sn3 c t0)) (land (sn3 c u) (sn3 c t)) (\lambda (y: T).(\lambda (H0: (sn3 
40532 c y)).(unintro T t (\lambda (t0: T).((eq T y (THead (Flat f) u t0)) \to (land 
40533 (sn3 c u) (sn3 c t0)))) (unintro T u (\lambda (t0: T).(\forall (x: T).((eq T 
40534 y (THead (Flat f) t0 x)) \to (land (sn3 c t0) (sn3 c x))))) (sn3_ind c 
40535 (\lambda (t0: T).(\forall (x: T).(\forall (x0: T).((eq T t0 (THead (Flat f) x 
40536 x0)) \to (land (sn3 c x) (sn3 c x0)))))) (\lambda (t1: T).(\lambda (H1: 
40537 ((\forall (t2: T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t1 
40538 t2) \to (sn3 c t2)))))).(\lambda (H2: ((\forall (t2: T).((((eq T t1 t2) \to 
40539 (\forall (P: Prop).P))) \to ((pr3 c t1 t2) \to (\forall (x: T).(\forall (x0: 
40540 T).((eq T t2 (THead (Flat f) x x0)) \to (land (sn3 c x) (sn3 c 
40541 x0)))))))))).(\lambda (x: T).(\lambda (x0: T).(\lambda (H3: (eq T t1 (THead 
40542 (Flat f) x x0))).(let H4 \def (eq_ind T t1 (\lambda (t: T).(\forall (t2: 
40543 T).((((eq T t t2) \to (\forall (P: Prop).P))) \to ((pr3 c t t2) \to (\forall 
40544 (x: T).(\forall (x0: T).((eq T t2 (THead (Flat f) x x0)) \to (land (sn3 c x) 
40545 (sn3 c x0))))))))) H2 (THead (Flat f) x x0) H3) in (let H5 \def (eq_ind T t1 
40546 (\lambda (t: T).(\forall (t2: T).((((eq T t t2) \to (\forall (P: Prop).P))) 
40547 \to ((pr3 c t t2) \to (sn3 c t2))))) H1 (THead (Flat f) x x0) H3) in (conj 
40548 (sn3 c x) (sn3 c x0) (sn3_sing c x (\lambda (t2: T).(\lambda (H6: (((eq T x 
40549 t2) \to (\forall (P: Prop).P)))).(\lambda (H7: (pr3 c x t2)).(let H8 \def (H4 
40550 (THead (Flat f) t2 x0) (\lambda (H3: (eq T (THead (Flat f) x x0) (THead (Flat 
40551 f) t2 x0))).(\lambda (P: Prop).(let H4 \def (f_equal T T (\lambda (e: 
40552 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow x | (TLRef 
40553 _) \Rightarrow x | (THead _ t _) \Rightarrow t])) (THead (Flat f) x x0) 
40554 (THead (Flat f) t2 x0) H3) in (let H5 \def (eq_ind_r T t2 (\lambda (t: 
40555 T).(pr3 c x t)) H7 x H4) in (let H6 \def (eq_ind_r T t2 (\lambda (t: T).((eq 
40556 T x t) \to (\forall (P: Prop).P))) H6 x H4) in (H6 (refl_equal T x) P)))))) 
40557 (pr3_head_12 c x t2 H7 (Flat f) x0 x0 (pr3_refl (CHead c (Flat f) t2) x0)) t2 
40558 x0 (refl_equal T (THead (Flat f) t2 x0))) in (and_ind (sn3 c t2) (sn3 c x0) 
40559 (sn3 c t2) (\lambda (H9: (sn3 c t2)).(\lambda (_: (sn3 c x0)).H9)) H8)))))) 
40560 (sn3_sing c x0 (\lambda (t2: T).(\lambda (H6: (((eq T x0 t2) \to (\forall (P: 
40561 Prop).P)))).(\lambda (H7: (pr3 c x0 t2)).(let H8 \def (H4 (THead (Flat f) x 
40562 t2) (\lambda (H3: (eq T (THead (Flat f) x x0) (THead (Flat f) x 
40563 t2))).(\lambda (P: Prop).(let H4 \def (f_equal T T (\lambda (e: T).(match e 
40564 return (\lambda (_: T).T) with [(TSort _) \Rightarrow x0 | (TLRef _) 
40565 \Rightarrow x0 | (THead _ _ t) \Rightarrow t])) (THead (Flat f) x x0) (THead 
40566 (Flat f) x t2) H3) in (let H5 \def (eq_ind_r T t2 (\lambda (t: T).(pr3 c x0 
40567 t)) H7 x0 H4) in (let H6 \def (eq_ind_r T t2 (\lambda (t: T).((eq T x0 t) \to 
40568 (\forall (P: Prop).P))) H6 x0 H4) in (H6 (refl_equal T x0) P)))))) 
40569 (pr3_thin_dx c x0 t2 H7 x f) x t2 (refl_equal T (THead (Flat f) x t2))) in 
40570 (and_ind (sn3 c x) (sn3 c t2) (sn3 c t2) (\lambda (_: (sn3 c x)).(\lambda 
40571 (H10: (sn3 c t2)).H10)) H8))))))))))))))) y H0))))) H))))).
40572
40573 theorem sn3_nf2:
40574  \forall (c: C).(\forall (t: T).((nf2 c t) \to (sn3 c t)))
40575 \def
40576  \lambda (c: C).(\lambda (t: T).(\lambda (H: (nf2 c t)).(sn3_sing c t 
40577 (\lambda (t2: T).(\lambda (H0: (((eq T t t2) \to (\forall (P: 
40578 Prop).P)))).(\lambda (H1: (pr3 c t t2)).(let H_y \def (nf2_pr3_unfold c t t2 
40579 H1 H) in (let H2 \def (eq_ind_r T t2 (\lambda (t0: T).(pr3 c t t0)) H1 t H_y) 
40580 in (let H3 \def (eq_ind_r T t2 (\lambda (t0: T).((eq T t t0) \to (\forall (P: 
40581 Prop).P))) H0 t H_y) in (eq_ind T t (\lambda (t0: T).(sn3 c t0)) (H3 
40582 (refl_equal T t) (sn3 c t)) t2 H_y)))))))))).
40583
40584 theorem sn3_pr3_trans:
40585  \forall (c: C).(\forall (t1: T).((sn3 c t1) \to (\forall (t2: T).((pr3 c t1 
40586 t2) \to (sn3 c t2)))))
40587 \def
40588  \lambda (c: C).(\lambda (t1: T).(\lambda (H: (sn3 c t1)).(sn3_ind c (\lambda 
40589 (t: T).(\forall (t2: T).((pr3 c t t2) \to (sn3 c t2)))) (\lambda (t2: 
40590 T).(\lambda (H0: ((\forall (t3: T).((((eq T t2 t3) \to (\forall (P: 
40591 Prop).P))) \to ((pr3 c t2 t3) \to (sn3 c t3)))))).(\lambda (H1: ((\forall 
40592 (t3: T).((((eq T t2 t3) \to (\forall (P: Prop).P))) \to ((pr3 c t2 t3) \to 
40593 (\forall (t2: T).((pr3 c t3 t2) \to (sn3 c t2)))))))).(\lambda (t3: 
40594 T).(\lambda (H2: (pr3 c t2 t3)).(sn3_sing c t3 (\lambda (t0: T).(\lambda (H3: 
40595 (((eq T t3 t0) \to (\forall (P: Prop).P)))).(\lambda (H4: (pr3 c t3 t0)).(let 
40596 H_x \def (term_dec t2 t3) in (let H5 \def H_x in (or_ind (eq T t2 t3) ((eq T 
40597 t2 t3) \to (\forall (P: Prop).P)) (sn3 c t0) (\lambda (H6: (eq T t2 t3)).(let 
40598 H7 \def (eq_ind_r T t3 (\lambda (t: T).(pr3 c t t0)) H4 t2 H6) in (let H8 
40599 \def (eq_ind_r T t3 (\lambda (t: T).((eq T t t0) \to (\forall (P: Prop).P))) 
40600 H3 t2 H6) in (let H9 \def (eq_ind_r T t3 (\lambda (t: T).(pr3 c t2 t)) H2 t2 
40601 H6) in (H0 t0 H8 H7))))) (\lambda (H6: (((eq T t2 t3) \to (\forall (P: 
40602 Prop).P)))).(H1 t3 H6 H2 t0 H4)) H5)))))))))))) t1 H))).
40603
40604 theorem sn3_pr2_intro:
40605  \forall (c: C).(\forall (t1: T).(((\forall (t2: T).((((eq T t1 t2) \to 
40606 (\forall (P: Prop).P))) \to ((pr2 c t1 t2) \to (sn3 c t2))))) \to (sn3 c t1)))
40607 \def
40608  \lambda (c: C).(\lambda (t1: T).(\lambda (H: ((\forall (t2: T).((((eq T t1 
40609 t2) \to (\forall (P: Prop).P))) \to ((pr2 c t1 t2) \to (sn3 c 
40610 t2)))))).(sn3_sing c t1 (\lambda (t2: T).(\lambda (H0: (((eq T t1 t2) \to 
40611 (\forall (P: Prop).P)))).(\lambda (H1: (pr3 c t1 t2)).(let H2 \def H0 in 
40612 ((let H3 \def H in (pr3_ind c (\lambda (t: T).(\lambda (t0: T).(((\forall 
40613 (t2: T).((((eq T t t2) \to (\forall (P: Prop).P))) \to ((pr2 c t t2) \to (sn3 
40614 c t2))))) \to ((((eq T t t0) \to (\forall (P: Prop).P))) \to (sn3 c t0))))) 
40615 (\lambda (t: T).(\lambda (H4: ((\forall (t2: T).((((eq T t t2) \to (\forall 
40616 (P: Prop).P))) \to ((pr2 c t t2) \to (sn3 c t2)))))).(\lambda (H5: (((eq T t 
40617 t) \to (\forall (P: Prop).P)))).(H4 t H5 (pr2_free c t t (pr0_refl t)))))) 
40618 (\lambda (t3: T).(\lambda (t4: T).(\lambda (H4: (pr2 c t4 t3)).(\lambda (t5: 
40619 T).(\lambda (H5: (pr3 c t3 t5)).(\lambda (H6: ((((\forall (t2: T).((((eq T t3 
40620 t2) \to (\forall (P: Prop).P))) \to ((pr2 c t3 t2) \to (sn3 c t2))))) \to 
40621 ((((eq T t3 t5) \to (\forall (P: Prop).P))) \to (sn3 c t5))))).(\lambda (H7: 
40622 ((\forall (t2: T).((((eq T t4 t2) \to (\forall (P: Prop).P))) \to ((pr2 c t4 
40623 t2) \to (sn3 c t2)))))).(\lambda (H8: (((eq T t4 t5) \to (\forall (P: 
40624 Prop).P)))).(let H_x \def (term_dec t4 t3) in (let H9 \def H_x in (or_ind (eq 
40625 T t4 t3) ((eq T t4 t3) \to (\forall (P: Prop).P)) (sn3 c t5) (\lambda (H10: 
40626 (eq T t4 t3)).(let H11 \def (eq_ind T t4 (\lambda (t: T).((eq T t t5) \to 
40627 (\forall (P: Prop).P))) H8 t3 H10) in (let H12 \def (eq_ind T t4 (\lambda (t: 
40628 T).(\forall (t2: T).((((eq T t t2) \to (\forall (P: Prop).P))) \to ((pr2 c t 
40629 t2) \to (sn3 c t2))))) H7 t3 H10) in (let H13 \def (eq_ind T t4 (\lambda (t: 
40630 T).(pr2 c t t3)) H4 t3 H10) in (H6 H12 H11))))) (\lambda (H10: (((eq T t4 t3) 
40631 \to (\forall (P: Prop).P)))).(sn3_pr3_trans c t3 (H7 t3 H10 H4) t5 H5)) 
40632 H9))))))))))) t1 t2 H1 H3)) H2)))))))).
40633
40634 theorem sn3_cast:
40635  \forall (c: C).(\forall (u: T).((sn3 c u) \to (\forall (t: T).((sn3 c t) \to 
40636 (sn3 c (THead (Flat Cast) u t))))))
40637 \def
40638  \lambda (c: C).(\lambda (u: T).(\lambda (H: (sn3 c u)).(sn3_ind c (\lambda 
40639 (t: T).(\forall (t0: T).((sn3 c t0) \to (sn3 c (THead (Flat Cast) t t0))))) 
40640 (\lambda (t1: T).(\lambda (_: ((\forall (t2: T).((((eq T t1 t2) \to (\forall 
40641 (P: Prop).P))) \to ((pr3 c t1 t2) \to (sn3 c t2)))))).(\lambda (H1: ((\forall 
40642 (t2: T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t1 t2) \to 
40643 (\forall (t: T).((sn3 c t) \to (sn3 c (THead (Flat Cast) t2 
40644 t))))))))).(\lambda (t: T).(\lambda (H2: (sn3 c t)).(sn3_ind c (\lambda (t0: 
40645 T).(sn3 c (THead (Flat Cast) t1 t0))) (\lambda (t0: T).(\lambda (H3: 
40646 ((\forall (t2: T).((((eq T t0 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t0 
40647 t2) \to (sn3 c t2)))))).(\lambda (H4: ((\forall (t2: T).((((eq T t0 t2) \to 
40648 (\forall (P: Prop).P))) \to ((pr3 c t0 t2) \to (sn3 c (THead (Flat Cast) t1 
40649 t2))))))).(sn3_pr2_intro c (THead (Flat Cast) t1 t0) (\lambda (t2: 
40650 T).(\lambda (H5: (((eq T (THead (Flat Cast) t1 t0) t2) \to (\forall (P: 
40651 Prop).P)))).(\lambda (H6: (pr2 c (THead (Flat Cast) t1 t0) t2)).(let H7 \def 
40652 (pr2_gen_cast c t1 t0 t2 H6) in (or_ind (ex3_2 T T (\lambda (u2: T).(\lambda 
40653 (t3: T).(eq T t2 (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
40654 T).(pr2 c t1 u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c t0 t3)))) (pr2 c 
40655 t0 t2) (sn3 c t2) (\lambda (H8: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: 
40656 T).(eq T t2 (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
40657 T).(pr2 c t1 u2))) (\lambda (_: T).(\lambda (t2: T).(pr2 c t0 
40658 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead 
40659 (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c t1 u2))) 
40660 (\lambda (_: T).(\lambda (t3: T).(pr2 c t0 t3))) (sn3 c t2) (\lambda (x0: 
40661 T).(\lambda (x1: T).(\lambda (H9: (eq T t2 (THead (Flat Cast) x0 
40662 x1))).(\lambda (H10: (pr2 c t1 x0)).(\lambda (H11: (pr2 c t0 x1)).(let H12 
40663 \def (eq_ind T t2 (\lambda (t: T).((eq T (THead (Flat Cast) t1 t0) t) \to 
40664 (\forall (P: Prop).P))) H5 (THead (Flat Cast) x0 x1) H9) in (eq_ind_r T 
40665 (THead (Flat Cast) x0 x1) (\lambda (t3: T).(sn3 c t3)) (let H_x \def 
40666 (term_dec x0 t1) in (let H13 \def H_x in (or_ind (eq T x0 t1) ((eq T x0 t1) 
40667 \to (\forall (P: Prop).P)) (sn3 c (THead (Flat Cast) x0 x1)) (\lambda (H14: 
40668 (eq T x0 t1)).(let H15 \def (eq_ind T x0 (\lambda (t: T).((eq T (THead (Flat 
40669 Cast) t1 t0) (THead (Flat Cast) t x1)) \to (\forall (P: Prop).P))) H12 t1 
40670 H14) in (let H16 \def (eq_ind T x0 (\lambda (t: T).(pr2 c t1 t)) H10 t1 H14) 
40671 in (eq_ind_r T t1 (\lambda (t3: T).(sn3 c (THead (Flat Cast) t3 x1))) (let 
40672 H_x0 \def (term_dec t0 x1) in (let H17 \def H_x0 in (or_ind (eq T t0 x1) ((eq 
40673 T t0 x1) \to (\forall (P: Prop).P)) (sn3 c (THead (Flat Cast) t1 x1)) 
40674 (\lambda (H18: (eq T t0 x1)).(let H19 \def (eq_ind_r T x1 (\lambda (t: 
40675 T).((eq T (THead (Flat Cast) t1 t0) (THead (Flat Cast) t1 t)) \to (\forall 
40676 (P: Prop).P))) H15 t0 H18) in (let H20 \def (eq_ind_r T x1 (\lambda (t: 
40677 T).(pr2 c t0 t)) H11 t0 H18) in (eq_ind T t0 (\lambda (t3: T).(sn3 c (THead 
40678 (Flat Cast) t1 t3))) (H19 (refl_equal T (THead (Flat Cast) t1 t0)) (sn3 c 
40679 (THead (Flat Cast) t1 t0))) x1 H18)))) (\lambda (H18: (((eq T t0 x1) \to 
40680 (\forall (P: Prop).P)))).(H4 x1 H18 (pr3_pr2 c t0 x1 H11))) H17))) x0 H14)))) 
40681 (\lambda (H14: (((eq T x0 t1) \to (\forall (P: Prop).P)))).(H1 x0 (\lambda 
40682 (H15: (eq T t1 x0)).(\lambda (P: Prop).(let H16 \def (eq_ind_r T x0 (\lambda 
40683 (t: T).((eq T t t1) \to (\forall (P: Prop).P))) H14 t1 H15) in (let H17 \def 
40684 (eq_ind_r T x0 (\lambda (t: T).((eq T (THead (Flat Cast) t1 t0) (THead (Flat 
40685 Cast) t x1)) \to (\forall (P: Prop).P))) H12 t1 H15) in (let H18 \def 
40686 (eq_ind_r T x0 (\lambda (t: T).(pr2 c t1 t)) H10 t1 H15) in (H16 (refl_equal 
40687 T t1) P)))))) (pr3_pr2 c t1 x0 H10) x1 (let H_x0 \def (term_dec t0 x1) in 
40688 (let H15 \def H_x0 in (or_ind (eq T t0 x1) ((eq T t0 x1) \to (\forall (P: 
40689 Prop).P)) (sn3 c x1) (\lambda (H16: (eq T t0 x1)).(let H17 \def (eq_ind_r T 
40690 x1 (\lambda (t: T).((eq T (THead (Flat Cast) t1 t0) (THead (Flat Cast) x0 t)) 
40691 \to (\forall (P: Prop).P))) H12 t0 H16) in (let H18 \def (eq_ind_r T x1 
40692 (\lambda (t: T).(pr2 c t0 t)) H11 t0 H16) in (eq_ind T t0 (\lambda (t3: 
40693 T).(sn3 c t3)) (sn3_sing c t0 H3) x1 H16)))) (\lambda (H16: (((eq T t0 x1) 
40694 \to (\forall (P: Prop).P)))).(H3 x1 H16 (pr3_pr2 c t0 x1 H11))) H15))))) 
40695 H13))) t2 H9))))))) H8)) (\lambda (H8: (pr2 c t0 t2)).(sn3_pr3_trans c t0 
40696 (sn3_sing c t0 H3) t2 (pr3_pr2 c t0 t2 H8))) H7))))))))) t H2)))))) u H))).
40697
40698 theorem nf2_sn3:
40699  \forall (c: C).(\forall (t: T).((sn3 c t) \to (ex2 T (\lambda (u: T).(pr3 c 
40700 t u)) (\lambda (u: T).(nf2 c u)))))
40701 \def
40702  \lambda (c: C).(\lambda (t: T).(\lambda (H: (sn3 c t)).(sn3_ind c (\lambda 
40703 (t0: T).(ex2 T (\lambda (u: T).(pr3 c t0 u)) (\lambda (u: T).(nf2 c u)))) 
40704 (\lambda (t1: T).(\lambda (_: ((\forall (t2: T).((((eq T t1 t2) \to (\forall 
40705 (P: Prop).P))) \to ((pr3 c t1 t2) \to (sn3 c t2)))))).(\lambda (H1: ((\forall 
40706 (t2: T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t1 t2) \to 
40707 (ex2 T (\lambda (u: T).(pr3 c t2 u)) (\lambda (u: T).(nf2 c u)))))))).(let 
40708 H_x \def (nf2_dec c t1) in (let H2 \def H_x in (or_ind (nf2 c t1) (ex2 T 
40709 (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
40710 T).(pr2 c t1 t2))) (ex2 T (\lambda (u: T).(pr3 c t1 u)) (\lambda (u: T).(nf2 
40711 c u))) (\lambda (H3: (nf2 c t1)).(ex_intro2 T (\lambda (u: T).(pr3 c t1 u)) 
40712 (\lambda (u: T).(nf2 c u)) t1 (pr3_refl c t1) H3)) (\lambda (H3: (ex2 T 
40713 (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) (\lambda (t2: 
40714 T).(pr2 c t1 t2)))).(ex2_ind T (\lambda (t2: T).((eq T t1 t2) \to (\forall 
40715 (P: Prop).P))) (\lambda (t2: T).(pr2 c t1 t2)) (ex2 T (\lambda (u: T).(pr3 c 
40716 t1 u)) (\lambda (u: T).(nf2 c u))) (\lambda (x: T).(\lambda (H4: (((eq T t1 
40717 x) \to (\forall (P: Prop).P)))).(\lambda (H5: (pr2 c t1 x)).(let H_y \def (H1 
40718 x H4) in (let H6 \def (H_y (pr3_pr2 c t1 x H5)) in (ex2_ind T (\lambda (u: 
40719 T).(pr3 c x u)) (\lambda (u: T).(nf2 c u)) (ex2 T (\lambda (u: T).(pr3 c t1 
40720 u)) (\lambda (u: T).(nf2 c u))) (\lambda (x0: T).(\lambda (H7: (pr3 c x 
40721 x0)).(\lambda (H8: (nf2 c x0)).(ex_intro2 T (\lambda (u: T).(pr3 c t1 u)) 
40722 (\lambda (u: T).(nf2 c u)) x0 (pr3_sing c x t1 H5 x0 H7) H8)))) H6)))))) H3)) 
40723 H2)))))) t H))).
40724
40725 theorem sn3_appl_lref:
40726  \forall (c: C).(\forall (i: nat).((nf2 c (TLRef i)) \to (\forall (v: 
40727 T).((sn3 c v) \to (sn3 c (THead (Flat Appl) v (TLRef i)))))))
40728 \def
40729  \lambda (c: C).(\lambda (i: nat).(\lambda (H: (nf2 c (TLRef i))).(\lambda 
40730 (v: T).(\lambda (H0: (sn3 c v)).(sn3_ind c (\lambda (t: T).(sn3 c (THead 
40731 (Flat Appl) t (TLRef i)))) (\lambda (t1: T).(\lambda (_: ((\forall (t2: 
40732 T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t1 t2) \to (sn3 c 
40733 t2)))))).(\lambda (H2: ((\forall (t2: T).((((eq T t1 t2) \to (\forall (P: 
40734 Prop).P))) \to ((pr3 c t1 t2) \to (sn3 c (THead (Flat Appl) t2 (TLRef 
40735 i)))))))).(sn3_pr2_intro c (THead (Flat Appl) t1 (TLRef i)) (\lambda (t2: 
40736 T).(\lambda (H3: (((eq T (THead (Flat Appl) t1 (TLRef i)) t2) \to (\forall 
40737 (P: Prop).P)))).(\lambda (H4: (pr2 c (THead (Flat Appl) t1 (TLRef i)) 
40738 t2)).(let H5 \def (pr2_gen_appl c t1 (TLRef i) t2 H4) in (or3_ind (ex3_2 T T 
40739 (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) 
40740 (\lambda (u2: T).(\lambda (_: T).(pr2 c t1 u2))) (\lambda (_: T).(\lambda 
40741 (t3: T).(pr2 c (TLRef i) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
40742 T).(\lambda (_: T).(\lambda (_: T).(eq T (TLRef i) (THead (Bind Abst) y1 
40743 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
40744 T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
40745 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c t1 u2))))) (\lambda (_: 
40746 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall 
40747 (u: T).(pr2 (CHead c (Bind b) u) z1 t3)))))))) (ex6_6 B T T T T T (\lambda 
40748 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
40749 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
40750 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
40751 (TLRef i) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: 
40752 T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T 
40753 t2 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) 
40754 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
40755 T).(\lambda (_: T).(pr2 c t1 u2))))))) (\lambda (_: B).(\lambda (y1: 
40756 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
40757 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
40758 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) 
40759 (sn3 c t2) (\lambda (H6: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T 
40760 t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c t1 
40761 u2))) (\lambda (_: T).(\lambda (t2: T).(pr2 c (TLRef i) t2))))).(ex3_2_ind T 
40762 T (\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) 
40763 (\lambda (u2: T).(\lambda (_: T).(pr2 c t1 u2))) (\lambda (_: T).(\lambda 
40764 (t3: T).(pr2 c (TLRef i) t3))) (sn3 c t2) (\lambda (x0: T).(\lambda (x1: 
40765 T).(\lambda (H7: (eq T t2 (THead (Flat Appl) x0 x1))).(\lambda (H8: (pr2 c t1 
40766 x0)).(\lambda (H9: (pr2 c (TLRef i) x1)).(let H10 \def (eq_ind T t2 (\lambda 
40767 (t: T).((eq T (THead (Flat Appl) t1 (TLRef i)) t) \to (\forall (P: Prop).P))) 
40768 H3 (THead (Flat Appl) x0 x1) H7) in (eq_ind_r T (THead (Flat Appl) x0 x1) 
40769 (\lambda (t: T).(sn3 c t)) (let H11 \def (eq_ind_r T x1 (\lambda (t: T).((eq 
40770 T (THead (Flat Appl) t1 (TLRef i)) (THead (Flat Appl) x0 t)) \to (\forall (P: 
40771 Prop).P))) H10 (TLRef i) (H x1 H9)) in (let H12 \def (eq_ind_r T x1 (\lambda 
40772 (t: T).(pr2 c (TLRef i) t)) H9 (TLRef i) (H x1 H9)) in (eq_ind T (TLRef i) 
40773 (\lambda (t: T).(sn3 c (THead (Flat Appl) x0 t))) (let H_x \def (term_dec t1 
40774 x0) in (let H13 \def H_x in (or_ind (eq T t1 x0) ((eq T t1 x0) \to (\forall 
40775 (P: Prop).P)) (sn3 c (THead (Flat Appl) x0 (TLRef i))) (\lambda (H14: (eq T 
40776 t1 x0)).(let H15 \def (eq_ind_r T x0 (\lambda (t: T).((eq T (THead (Flat 
40777 Appl) t1 (TLRef i)) (THead (Flat Appl) t (TLRef i))) \to (\forall (P: 
40778 Prop).P))) H11 t1 H14) in (let H16 \def (eq_ind_r T x0 (\lambda (t: T).(pr2 c 
40779 t1 t)) H8 t1 H14) in (eq_ind T t1 (\lambda (t: T).(sn3 c (THead (Flat Appl) t 
40780 (TLRef i)))) (H15 (refl_equal T (THead (Flat Appl) t1 (TLRef i))) (sn3 c 
40781 (THead (Flat Appl) t1 (TLRef i)))) x0 H14)))) (\lambda (H14: (((eq T t1 x0) 
40782 \to (\forall (P: Prop).P)))).(H2 x0 H14 (pr3_pr2 c t1 x0 H8))) H13))) x1 (H 
40783 x1 H9)))) t2 H7))))))) H6)) (\lambda (H6: (ex4_4 T T T T (\lambda (y1: 
40784 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (TLRef i) (THead 
40785 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
40786 T).(\lambda (t3: T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
40787 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c t1 u2))))) 
40788 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall 
40789 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 t2))))))))).(ex4_4_ind T 
40790 T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T 
40791 (TLRef i) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: 
40792 T).(\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) 
40793 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c t1 
40794 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: 
40795 T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 t3))))))) 
40796 (sn3 c t2) (\lambda (x0: T).(\lambda (x1: T).(\lambda (x2: T).(\lambda (x3: 
40797 T).(\lambda (H7: (eq T (TLRef i) (THead (Bind Abst) x0 x1))).(\lambda (H8: 
40798 (eq T t2 (THead (Bind Abbr) x2 x3))).(\lambda (_: (pr2 c t1 x2)).(\lambda (_: 
40799 ((\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x1 x3))))).(let 
40800 H11 \def (eq_ind T t2 (\lambda (t: T).((eq T (THead (Flat Appl) t1 (TLRef i)) 
40801 t) \to (\forall (P: Prop).P))) H3 (THead (Bind Abbr) x2 x3) H8) in (eq_ind_r 
40802 T (THead (Bind Abbr) x2 x3) (\lambda (t: T).(sn3 c t)) (let H12 \def (eq_ind 
40803 T (TLRef i) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with 
40804 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) 
40805 \Rightarrow False])) I (THead (Bind Abst) x0 x1) H7) in (False_ind (sn3 c 
40806 (THead (Bind Abbr) x2 x3)) H12)) t2 H8)))))))))) H6)) (\lambda (H6: (ex6_6 B 
40807 T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
40808 T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
40809 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
40810 (_: T).(eq T (TLRef i) (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda 
40811 (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq 
40812 T t2 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) 
40813 (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
40814 T).(\lambda (_: T).(pr2 c t1 u2))))))) (\lambda (_: B).(\lambda (y1: 
40815 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 
40816 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: 
40817 T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 
40818 z2))))))))).(ex6_6_ind B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda 
40819 (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b 
40820 Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
40821 T).(\lambda (_: T).(\lambda (_: T).(eq T (TLRef i) (THead (Bind b) y1 
40822 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: 
40823 T).(\lambda (u2: T).(\lambda (y2: T).(eq T t2 (THead (Bind b) y2 (THead (Flat 
40824 Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda 
40825 (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c t1 u2))))))) 
40826 (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
40827 T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: 
40828 T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 
40829 (CHead c (Bind b) y2) z1 z2))))))) (sn3 c t2) (\lambda (x0: B).(\lambda (x1: 
40830 T).(\lambda (x2: T).(\lambda (x3: T).(\lambda (x4: T).(\lambda (x5: 
40831 T).(\lambda (_: (not (eq B x0 Abst))).(\lambda (H8: (eq T (TLRef i) (THead 
40832 (Bind x0) x1 x2))).(\lambda (H9: (eq T t2 (THead (Bind x0) x5 (THead (Flat 
40833 Appl) (lift (S O) O x4) x3)))).(\lambda (_: (pr2 c t1 x4)).(\lambda (_: (pr2 
40834 c x1 x5)).(\lambda (_: (pr2 (CHead c (Bind x0) x5) x2 x3)).(let H13 \def 
40835 (eq_ind T t2 (\lambda (t: T).((eq T (THead (Flat Appl) t1 (TLRef i)) t) \to 
40836 (\forall (P: Prop).P))) H3 (THead (Bind x0) x5 (THead (Flat Appl) (lift (S O) 
40837 O x4) x3)) H9) in (eq_ind_r T (THead (Bind x0) x5 (THead (Flat Appl) (lift (S 
40838 O) O x4) x3)) (\lambda (t: T).(sn3 c t)) (let H14 \def (eq_ind T (TLRef i) 
40839 (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
40840 \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow 
40841 False])) I (THead (Bind x0) x1 x2) H8) in (False_ind (sn3 c (THead (Bind x0) 
40842 x5 (THead (Flat Appl) (lift (S O) O x4) x3))) H14)) t2 H9)))))))))))))) H6)) 
40843 H5))))))))) v H0))))).
40844
40845 theorem sn3_appl_cast:
40846  \forall (c: C).(\forall (v: T).(\forall (u: T).((sn3 c (THead (Flat Appl) v 
40847 u)) \to (\forall (t: T).((sn3 c (THead (Flat Appl) v t)) \to (sn3 c (THead 
40848 (Flat Appl) v (THead (Flat Cast) u t))))))))
40849 \def
40850  \lambda (c: C).(\lambda (v: T).(\lambda (u: T).(\lambda (H: (sn3 c (THead 
40851 (Flat Appl) v u))).(insert_eq T (THead (Flat Appl) v u) (\lambda (t: T).(sn3 
40852 c t)) (\forall (t: T).((sn3 c (THead (Flat Appl) v t)) \to (sn3 c (THead 
40853 (Flat Appl) v (THead (Flat Cast) u t))))) (\lambda (y: T).(\lambda (H0: (sn3 
40854 c y)).(unintro T u (\lambda (t: T).((eq T y (THead (Flat Appl) v t)) \to 
40855 (\forall (t0: T).((sn3 c (THead (Flat Appl) v t0)) \to (sn3 c (THead (Flat 
40856 Appl) v (THead (Flat Cast) t t0))))))) (unintro T v (\lambda (t: T).(\forall 
40857 (x: T).((eq T y (THead (Flat Appl) t x)) \to (\forall (t0: T).((sn3 c (THead 
40858 (Flat Appl) t t0)) \to (sn3 c (THead (Flat Appl) t (THead (Flat Cast) x 
40859 t0)))))))) (sn3_ind c (\lambda (t: T).(\forall (x: T).(\forall (x0: T).((eq T 
40860 t (THead (Flat Appl) x x0)) \to (\forall (t0: T).((sn3 c (THead (Flat Appl) x 
40861 t0)) \to (sn3 c (THead (Flat Appl) x (THead (Flat Cast) x0 t0))))))))) 
40862 (\lambda (t1: T).(\lambda (H1: ((\forall (t2: T).((((eq T t1 t2) \to (\forall 
40863 (P: Prop).P))) \to ((pr3 c t1 t2) \to (sn3 c t2)))))).(\lambda (H2: ((\forall 
40864 (t2: T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t1 t2) \to 
40865 (\forall (x: T).(\forall (x0: T).((eq T t2 (THead (Flat Appl) x x0)) \to 
40866 (\forall (t: T).((sn3 c (THead (Flat Appl) x t)) \to (sn3 c (THead (Flat 
40867 Appl) x (THead (Flat Cast) x0 t))))))))))))).(\lambda (x: T).(\lambda (x0: 
40868 T).(\lambda (H3: (eq T t1 (THead (Flat Appl) x x0))).(\lambda (t: T).(\lambda 
40869 (H4: (sn3 c (THead (Flat Appl) x t))).(insert_eq T (THead (Flat Appl) x t) 
40870 (\lambda (t0: T).(sn3 c t0)) (sn3 c (THead (Flat Appl) x (THead (Flat Cast) 
40871 x0 t))) (\lambda (y0: T).(\lambda (H5: (sn3 c y0)).(unintro T t (\lambda (t0: 
40872 T).((eq T y0 (THead (Flat Appl) x t0)) \to (sn3 c (THead (Flat Appl) x (THead 
40873 (Flat Cast) x0 t0))))) (sn3_ind c (\lambda (t0: T).(\forall (x1: T).((eq T t0 
40874 (THead (Flat Appl) x x1)) \to (sn3 c (THead (Flat Appl) x (THead (Flat Cast) 
40875 x0 x1)))))) (\lambda (t0: T).(\lambda (H6: ((\forall (t2: T).((((eq T t0 t2) 
40876 \to (\forall (P: Prop).P))) \to ((pr3 c t0 t2) \to (sn3 c t2)))))).(\lambda 
40877 (H7: ((\forall (t2: T).((((eq T t0 t2) \to (\forall (P: Prop).P))) \to ((pr3 
40878 c t0 t2) \to (\forall (x1: T).((eq T t2 (THead (Flat Appl) x x1)) \to (sn3 c 
40879 (THead (Flat Appl) x (THead (Flat Cast) x0 x1)))))))))).(\lambda (x1: 
40880 T).(\lambda (H8: (eq T t0 (THead (Flat Appl) x x1))).(let H9 \def (eq_ind T 
40881 t0 (\lambda (t: T).(\forall (t2: T).((((eq T t t2) \to (\forall (P: 
40882 Prop).P))) \to ((pr3 c t t2) \to (\forall (x1: T).((eq T t2 (THead (Flat 
40883 Appl) x x1)) \to (sn3 c (THead (Flat Appl) x (THead (Flat Cast) x0 
40884 x1))))))))) H7 (THead (Flat Appl) x x1) H8) in (let H10 \def (eq_ind T t0 
40885 (\lambda (t: T).(\forall (t2: T).((((eq T t t2) \to (\forall (P: Prop).P))) 
40886 \to ((pr3 c t t2) \to (sn3 c t2))))) H6 (THead (Flat Appl) x x1) H8) in (let 
40887 H11 \def (eq_ind T t1 (\lambda (t: T).(\forall (t2: T).((((eq T t t2) \to 
40888 (\forall (P: Prop).P))) \to ((pr3 c t t2) \to (\forall (x: T).(\forall (x0: 
40889 T).((eq T t2 (THead (Flat Appl) x x0)) \to (\forall (t0: T).((sn3 c (THead 
40890 (Flat Appl) x t0)) \to (sn3 c (THead (Flat Appl) x (THead (Flat Cast) x0 
40891 t0)))))))))))) H2 (THead (Flat Appl) x x0) H3) in (let H12 \def (eq_ind T t1 
40892 (\lambda (t: T).(\forall (t2: T).((((eq T t t2) \to (\forall (P: Prop).P))) 
40893 \to ((pr3 c t t2) \to (sn3 c t2))))) H1 (THead (Flat Appl) x x0) H3) in 
40894 (sn3_pr2_intro c (THead (Flat Appl) x (THead (Flat Cast) x0 x1)) (\lambda 
40895 (t2: T).(\lambda (H13: (((eq T (THead (Flat Appl) x (THead (Flat Cast) x0 
40896 x1)) t2) \to (\forall (P: Prop).P)))).(\lambda (H14: (pr2 c (THead (Flat 
40897 Appl) x (THead (Flat Cast) x0 x1)) t2)).(let H15 \def (pr2_gen_appl c x 
40898 (THead (Flat Cast) x0 x1) t2 H14) in (or3_ind (ex3_2 T T (\lambda (u2: 
40899 T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
40900 T).(\lambda (_: T).(pr2 c x u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c 
40901 (THead (Flat Cast) x0 x1) t3)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda 
40902 (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Flat Cast) x0 x1) 
40903 (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
40904 T).(\lambda (t3: T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: 
40905 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c x u2))))) (\lambda 
40906 (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: T).(\forall (b: 
40907 B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3)))))))) (ex6_6 B T T T T 
40908 T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
40909 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
40910 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq 
40911 T (THead (Flat Cast) x0 x1) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
40912 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
40913 (y2: T).(eq T t2 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
40914 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
40915 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c x u2))))))) (\lambda (_: 
40916 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
40917 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
40918 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
40919 y2) z1 z2)))))))) (sn3 c t2) (\lambda (H16: (ex3_2 T T (\lambda (u2: 
40920 T).(\lambda (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: 
40921 T).(\lambda (_: T).(pr2 c x u2))) (\lambda (_: T).(\lambda (t2: T).(pr2 c 
40922 (THead (Flat Cast) x0 x1) t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda 
40923 (t3: T).(eq T t2 (THead (Flat Appl) u2 t3)))) (\lambda (u2: T).(\lambda (_: 
40924 T).(pr2 c x u2))) (\lambda (_: T).(\lambda (t3: T).(pr2 c (THead (Flat Cast) 
40925 x0 x1) t3))) (sn3 c t2) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H17: (eq 
40926 T t2 (THead (Flat Appl) x2 x3))).(\lambda (H18: (pr2 c x x2)).(\lambda (H19: 
40927 (pr2 c (THead (Flat Cast) x0 x1) x3)).(let H20 \def (eq_ind T t2 (\lambda (t: 
40928 T).((eq T (THead (Flat Appl) x (THead (Flat Cast) x0 x1)) t) \to (\forall (P: 
40929 Prop).P))) H13 (THead (Flat Appl) x2 x3) H17) in (eq_ind_r T (THead (Flat 
40930 Appl) x2 x3) (\lambda (t3: T).(sn3 c t3)) (let H21 \def (pr2_gen_cast c x0 x1 
40931 x3 H19) in (or_ind (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq T x3 
40932 (THead (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) 
40933 (\lambda (_: T).(\lambda (t3: T).(pr2 c x1 t3)))) (pr2 c x1 x3) (sn3 c (THead 
40934 (Flat Appl) x2 x3)) (\lambda (H22: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: 
40935 T).(eq T x3 (THead (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: 
40936 T).(pr2 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(pr2 c x1 
40937 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T x3 (THead 
40938 (Flat Cast) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c x0 u2))) 
40939 (\lambda (_: T).(\lambda (t3: T).(pr2 c x1 t3))) (sn3 c (THead (Flat Appl) x2 
40940 x3)) (\lambda (x4: T).(\lambda (x5: T).(\lambda (H23: (eq T x3 (THead (Flat 
40941 Cast) x4 x5))).(\lambda (H24: (pr2 c x0 x4)).(\lambda (H25: (pr2 c x1 
40942 x5)).(let H26 \def (eq_ind T x3 (\lambda (t: T).((eq T (THead (Flat Appl) x 
40943 (THead (Flat Cast) x0 x1)) (THead (Flat Appl) x2 t)) \to (\forall (P: 
40944 Prop).P))) H20 (THead (Flat Cast) x4 x5) H23) in (eq_ind_r T (THead (Flat 
40945 Cast) x4 x5) (\lambda (t3: T).(sn3 c (THead (Flat Appl) x2 t3))) (let H_x 
40946 \def (term_dec (THead (Flat Appl) x x0) (THead (Flat Appl) x2 x4)) in (let 
40947 H27 \def H_x in (or_ind (eq T (THead (Flat Appl) x x0) (THead (Flat Appl) x2 
40948 x4)) ((eq T (THead (Flat Appl) x x0) (THead (Flat Appl) x2 x4)) \to (\forall 
40949 (P: Prop).P)) (sn3 c (THead (Flat Appl) x2 (THead (Flat Cast) x4 x5))) 
40950 (\lambda (H28: (eq T (THead (Flat Appl) x x0) (THead (Flat Appl) x2 
40951 x4))).(let H29 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
40952 T).T) with [(TSort _) \Rightarrow x | (TLRef _) \Rightarrow x | (THead _ t _) 
40953 \Rightarrow t])) (THead (Flat Appl) x x0) (THead (Flat Appl) x2 x4) H28) in 
40954 ((let H30 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
40955 T).T) with [(TSort _) \Rightarrow x0 | (TLRef _) \Rightarrow x0 | (THead _ _ 
40956 t) \Rightarrow t])) (THead (Flat Appl) x x0) (THead (Flat Appl) x2 x4) H28) 
40957 in (\lambda (H31: (eq T x x2)).(let H32 \def (eq_ind_r T x4 (\lambda (t: 
40958 T).((eq T (THead (Flat Appl) x (THead (Flat Cast) x0 x1)) (THead (Flat Appl) 
40959 x2 (THead (Flat Cast) t x5))) \to (\forall (P: Prop).P))) H26 x0 H30) in (let 
40960 H33 \def (eq_ind_r T x4 (\lambda (t: T).(pr2 c x0 t)) H24 x0 H30) in (eq_ind 
40961 T x0 (\lambda (t3: T).(sn3 c (THead (Flat Appl) x2 (THead (Flat Cast) t3 
40962 x5)))) (let H34 \def (eq_ind_r T x2 (\lambda (t: T).((eq T (THead (Flat Appl) 
40963 x (THead (Flat Cast) x0 x1)) (THead (Flat Appl) t (THead (Flat Cast) x0 x5))) 
40964 \to (\forall (P: Prop).P))) H32 x H31) in (let H35 \def (eq_ind_r T x2 
40965 (\lambda (t: T).(pr2 c x t)) H18 x H31) in (eq_ind T x (\lambda (t3: T).(sn3 
40966 c (THead (Flat Appl) t3 (THead (Flat Cast) x0 x5)))) (let H_x0 \def (term_dec 
40967 (THead (Flat Appl) x x1) (THead (Flat Appl) x x5)) in (let H36 \def H_x0 in 
40968 (or_ind (eq T (THead (Flat Appl) x x1) (THead (Flat Appl) x x5)) ((eq T 
40969 (THead (Flat Appl) x x1) (THead (Flat Appl) x x5)) \to (\forall (P: Prop).P)) 
40970 (sn3 c (THead (Flat Appl) x (THead (Flat Cast) x0 x5))) (\lambda (H37: (eq T 
40971 (THead (Flat Appl) x x1) (THead (Flat Appl) x x5))).(let H38 \def (f_equal T 
40972 T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
40973 \Rightarrow x1 | (TLRef _) \Rightarrow x1 | (THead _ _ t) \Rightarrow t])) 
40974 (THead (Flat Appl) x x1) (THead (Flat Appl) x x5) H37) in (let H39 \def 
40975 (eq_ind_r T x5 (\lambda (t: T).((eq T (THead (Flat Appl) x (THead (Flat Cast) 
40976 x0 x1)) (THead (Flat Appl) x (THead (Flat Cast) x0 t))) \to (\forall (P: 
40977 Prop).P))) H34 x1 H38) in (let H40 \def (eq_ind_r T x5 (\lambda (t: T).(pr2 c 
40978 x1 t)) H25 x1 H38) in (eq_ind T x1 (\lambda (t3: T).(sn3 c (THead (Flat Appl) 
40979 x (THead (Flat Cast) x0 t3)))) (H39 (refl_equal T (THead (Flat Appl) x (THead 
40980 (Flat Cast) x0 x1))) (sn3 c (THead (Flat Appl) x (THead (Flat Cast) x0 x1)))) 
40981 x5 H38))))) (\lambda (H37: (((eq T (THead (Flat Appl) x x1) (THead (Flat 
40982 Appl) x x5)) \to (\forall (P: Prop).P)))).(H9 (THead (Flat Appl) x x5) H37 
40983 (pr3_pr2 c (THead (Flat Appl) x x1) (THead (Flat Appl) x x5) (pr2_thin_dx c 
40984 x1 x5 H25 x Appl)) x5 (refl_equal T (THead (Flat Appl) x x5)))) H36))) x2 
40985 H31))) x4 H30))))) H29))) (\lambda (H28: (((eq T (THead (Flat Appl) x x0) 
40986 (THead (Flat Appl) x2 x4)) \to (\forall (P: Prop).P)))).(let H_x0 \def 
40987 (term_dec (THead (Flat Appl) x x1) (THead (Flat Appl) x2 x5)) in (let H29 
40988 \def H_x0 in (or_ind (eq T (THead (Flat Appl) x x1) (THead (Flat Appl) x2 
40989 x5)) ((eq T (THead (Flat Appl) x x1) (THead (Flat Appl) x2 x5)) \to (\forall 
40990 (P: Prop).P)) (sn3 c (THead (Flat Appl) x2 (THead (Flat Cast) x4 x5))) 
40991 (\lambda (H30: (eq T (THead (Flat Appl) x x1) (THead (Flat Appl) x2 
40992 x5))).(let H31 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
40993 T).T) with [(TSort _) \Rightarrow x | (TLRef _) \Rightarrow x | (THead _ t _) 
40994 \Rightarrow t])) (THead (Flat Appl) x x1) (THead (Flat Appl) x2 x5) H30) in 
40995 ((let H32 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
40996 T).T) with [(TSort _) \Rightarrow x1 | (TLRef _) \Rightarrow x1 | (THead _ _ 
40997 t) \Rightarrow t])) (THead (Flat Appl) x x1) (THead (Flat Appl) x2 x5) H30) 
40998 in (\lambda (H33: (eq T x x2)).(let H34 \def (eq_ind_r T x5 (\lambda (t: 
40999 T).(pr2 c x1 t)) H25 x1 H32) in (eq_ind T x1 (\lambda (t3: T).(sn3 c (THead 
41000 (Flat Appl) x2 (THead (Flat Cast) x4 t3)))) (let H35 \def (eq_ind_r T x2 
41001 (\lambda (t: T).((eq T (THead (Flat Appl) x x0) (THead (Flat Appl) t x4)) \to 
41002 (\forall (P: Prop).P))) H28 x H33) in (let H36 \def (eq_ind_r T x2 (\lambda 
41003 (t: T).(pr2 c x t)) H18 x H33) in (eq_ind T x (\lambda (t3: T).(sn3 c (THead 
41004 (Flat Appl) t3 (THead (Flat Cast) x4 x1)))) (H11 (THead (Flat Appl) x x4) H35 
41005 (pr3_pr2 c (THead (Flat Appl) x x0) (THead (Flat Appl) x x4) (pr2_thin_dx c 
41006 x0 x4 H24 x Appl)) x x4 (refl_equal T (THead (Flat Appl) x x4)) x1 (sn3_sing 
41007 c (THead (Flat Appl) x x1) H10)) x2 H33))) x5 H32)))) H31))) (\lambda (H30: 
41008 (((eq T (THead (Flat Appl) x x1) (THead (Flat Appl) x2 x5)) \to (\forall (P: 
41009 Prop).P)))).(H11 (THead (Flat Appl) x2 x4) H28 (pr3_head_12 c x x2 (pr3_pr2 c 
41010 x x2 H18) (Flat Appl) x0 x4 (pr3_pr2 (CHead c (Flat Appl) x2) x0 x4 
41011 (pr2_cflat c x0 x4 H24 Appl x2))) x2 x4 (refl_equal T (THead (Flat Appl) x2 
41012 x4)) x5 (H10 (THead (Flat Appl) x2 x5) H30 (pr3_head_12 c x x2 (pr3_pr2 c x 
41013 x2 H18) (Flat Appl) x1 x5 (pr3_pr2 (CHead c (Flat Appl) x2) x1 x5 (pr2_cflat 
41014 c x1 x5 H25 Appl x2)))))) H29)))) H27))) x3 H23))))))) H22)) (\lambda (H22: 
41015 (pr2 c x1 x3)).(let H_x \def (term_dec (THead (Flat Appl) x x1) (THead (Flat 
41016 Appl) x2 x3)) in (let H23 \def H_x in (or_ind (eq T (THead (Flat Appl) x x1) 
41017 (THead (Flat Appl) x2 x3)) ((eq T (THead (Flat Appl) x x1) (THead (Flat Appl) 
41018 x2 x3)) \to (\forall (P: Prop).P)) (sn3 c (THead (Flat Appl) x2 x3)) (\lambda 
41019 (H24: (eq T (THead (Flat Appl) x x1) (THead (Flat Appl) x2 x3))).(let H25 
41020 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
41021 [(TSort _) \Rightarrow x | (TLRef _) \Rightarrow x | (THead _ t _) 
41022 \Rightarrow t])) (THead (Flat Appl) x x1) (THead (Flat Appl) x2 x3) H24) in 
41023 ((let H26 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
41024 T).T) with [(TSort _) \Rightarrow x1 | (TLRef _) \Rightarrow x1 | (THead _ _ 
41025 t) \Rightarrow t])) (THead (Flat Appl) x x1) (THead (Flat Appl) x2 x3) H24) 
41026 in (\lambda (H27: (eq T x x2)).(let H28 \def (eq_ind_r T x3 (\lambda (t: 
41027 T).(pr2 c x1 t)) H22 x1 H26) in (let H29 \def (eq_ind_r T x3 (\lambda (t: 
41028 T).((eq T (THead (Flat Appl) x (THead (Flat Cast) x0 x1)) (THead (Flat Appl) 
41029 x2 t)) \to (\forall (P: Prop).P))) H20 x1 H26) in (eq_ind T x1 (\lambda (t3: 
41030 T).(sn3 c (THead (Flat Appl) x2 t3))) (let H30 \def (eq_ind_r T x2 (\lambda 
41031 (t: T).((eq T (THead (Flat Appl) x (THead (Flat Cast) x0 x1)) (THead (Flat 
41032 Appl) t x1)) \to (\forall (P: Prop).P))) H29 x H27) in (let H31 \def 
41033 (eq_ind_r T x2 (\lambda (t: T).(pr2 c x t)) H18 x H27) in (eq_ind T x 
41034 (\lambda (t3: T).(sn3 c (THead (Flat Appl) t3 x1))) (sn3_sing c (THead (Flat 
41035 Appl) x x1) H10) x2 H27))) x3 H26))))) H25))) (\lambda (H24: (((eq T (THead 
41036 (Flat Appl) x x1) (THead (Flat Appl) x2 x3)) \to (\forall (P: 
41037 Prop).P)))).(H10 (THead (Flat Appl) x2 x3) H24 (pr3_head_12 c x x2 (pr3_pr2 c 
41038 x x2 H18) (Flat Appl) x1 x3 (pr3_pr2 (CHead c (Flat Appl) x2) x1 x3 
41039 (pr2_cflat c x1 x3 H22 Appl x2))))) H23)))) H21)) t2 H17))))))) H16)) 
41040 (\lambda (H16: (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
41041 T).(\lambda (_: T).(eq T (THead (Flat Cast) x0 x1) (THead (Bind Abst) y1 
41042 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t3: 
41043 T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) (\lambda (_: T).(\lambda (_: 
41044 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c x u2))))) (\lambda (_: T).(\lambda 
41045 (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr2 
41046 (CHead c (Bind b) u) z1 t2))))))))).(ex4_4_ind T T T T (\lambda (y1: 
41047 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Flat Cast) 
41048 x0 x1) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: 
41049 T).(\lambda (u2: T).(\lambda (t3: T).(eq T t2 (THead (Bind Abbr) u2 t3)))))) 
41050 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c x 
41051 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t3: 
41052 T).(\forall (b: B).(\forall (u0: T).(pr2 (CHead c (Bind b) u0) z1 t3))))))) 
41053 (sn3 c t2) (\lambda (x2: T).(\lambda (x3: T).(\lambda (x4: T).(\lambda (x5: 
41054 T).(\lambda (H17: (eq T (THead (Flat Cast) x0 x1) (THead (Bind Abst) x2 
41055 x3))).(\lambda (H18: (eq T t2 (THead (Bind Abbr) x4 x5))).(\lambda (_: (pr2 c 
41056 x x4)).(\lambda (_: ((\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) 
41057 u) x3 x5))))).(let H21 \def (eq_ind T t2 (\lambda (t: T).((eq T (THead (Flat 
41058 Appl) x (THead (Flat Cast) x0 x1)) t) \to (\forall (P: Prop).P))) H13 (THead 
41059 (Bind Abbr) x4 x5) H18) in (eq_ind_r T (THead (Bind Abbr) x4 x5) (\lambda 
41060 (t3: T).(sn3 c t3)) (let H22 \def (eq_ind T (THead (Flat Cast) x0 x1) 
41061 (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
41062 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
41063 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
41064 (Flat _) \Rightarrow True])])) I (THead (Bind Abst) x2 x3) H17) in (False_ind 
41065 (sn3 c (THead (Bind Abbr) x4 x5)) H22)) t2 H18)))))))))) H16)) (\lambda (H16: 
41066 (ex6_6 B T T T T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
41067 (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: 
41068 B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
41069 (_: T).(eq T (THead (Flat Cast) x0 x1) (THead (Bind b) y1 z1)))))))) (\lambda 
41070 (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: 
41071 T).(\lambda (y2: T).(eq T t2 (THead (Bind b) y2 (THead (Flat Appl) (lift (S 
41072 O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
41073 (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c x u2))))))) (\lambda (_: 
41074 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
41075 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
41076 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
41077 y2) z1 z2))))))))).(ex6_6_ind B T T T T T (\lambda (b: B).(\lambda (_: 
41078 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B 
41079 b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
41080 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Flat Cast) x0 x1) (THead 
41081 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
41082 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T t2 (THead (Bind 
41083 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
41084 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
41085 (_: T).(pr2 c x u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
41086 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
41087 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
41088 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))) (sn3 c t2) 
41089 (\lambda (x2: B).(\lambda (x3: T).(\lambda (x4: T).(\lambda (x5: T).(\lambda 
41090 (x6: T).(\lambda (x7: T).(\lambda (_: (not (eq B x2 Abst))).(\lambda (H18: 
41091 (eq T (THead (Flat Cast) x0 x1) (THead (Bind x2) x3 x4))).(\lambda (H19: (eq 
41092 T t2 (THead (Bind x2) x7 (THead (Flat Appl) (lift (S O) O x6) x5)))).(\lambda 
41093 (_: (pr2 c x x6)).(\lambda (_: (pr2 c x3 x7)).(\lambda (_: (pr2 (CHead c 
41094 (Bind x2) x7) x4 x5)).(let H23 \def (eq_ind T t2 (\lambda (t: T).((eq T 
41095 (THead (Flat Appl) x (THead (Flat Cast) x0 x1)) t) \to (\forall (P: 
41096 Prop).P))) H13 (THead (Bind x2) x7 (THead (Flat Appl) (lift (S O) O x6) x5)) 
41097 H19) in (eq_ind_r T (THead (Bind x2) x7 (THead (Flat Appl) (lift (S O) O x6) 
41098 x5)) (\lambda (t3: T).(sn3 c t3)) (let H24 \def (eq_ind T (THead (Flat Cast) 
41099 x0 x1) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort 
41100 _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
41101 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
41102 False | (Flat _) \Rightarrow True])])) I (THead (Bind x2) x3 x4) H18) in 
41103 (False_ind (sn3 c (THead (Bind x2) x7 (THead (Flat Appl) (lift (S O) O x6) 
41104 x5))) H24)) t2 H19)))))))))))))) H16)) H15))))))))))))))) y0 H5)))) 
41105 H4))))))))) y H0))))) H)))).
41106
41107 theorem sn3_appl_appl:
41108  \forall (v1: T).(\forall (t1: T).(let u1 \def (THead (Flat Appl) v1 t1) in 
41109 (\forall (c: C).((sn3 c u1) \to (\forall (v2: T).((sn3 c v2) \to (((\forall 
41110 (u2: T).((pr3 c u1 u2) \to ((((iso u1 u2) \to (\forall (P: Prop).P))) \to 
41111 (sn3 c (THead (Flat Appl) v2 u2)))))) \to (sn3 c (THead (Flat Appl) v2 
41112 u1)))))))))
41113 \def
41114  \lambda (v1: T).(\lambda (t1: T).(let u1 \def (THead (Flat Appl) v1 t1) in 
41115 (\lambda (c: C).(\lambda (H: (sn3 c (THead (Flat Appl) v1 t1))).(insert_eq T 
41116 (THead (Flat Appl) v1 t1) (\lambda (t: T).(sn3 c t)) (\forall (v2: T).((sn3 c 
41117 v2) \to (((\forall (u2: T).((pr3 c (THead (Flat Appl) v1 t1) u2) \to ((((iso 
41118 (THead (Flat Appl) v1 t1) u2) \to (\forall (P: Prop).P))) \to (sn3 c (THead 
41119 (Flat Appl) v2 u2)))))) \to (sn3 c (THead (Flat Appl) v2 (THead (Flat Appl) 
41120 v1 t1)))))) (\lambda (y: T).(\lambda (H0: (sn3 c y)).(unintro T t1 (\lambda 
41121 (t: T).((eq T y (THead (Flat Appl) v1 t)) \to (\forall (v2: T).((sn3 c v2) 
41122 \to (((\forall (u2: T).((pr3 c (THead (Flat Appl) v1 t) u2) \to ((((iso 
41123 (THead (Flat Appl) v1 t) u2) \to (\forall (P: Prop).P))) \to (sn3 c (THead 
41124 (Flat Appl) v2 u2)))))) \to (sn3 c (THead (Flat Appl) v2 (THead (Flat Appl) 
41125 v1 t)))))))) (unintro T v1 (\lambda (t: T).(\forall (x: T).((eq T y (THead 
41126 (Flat Appl) t x)) \to (\forall (v2: T).((sn3 c v2) \to (((\forall (u2: 
41127 T).((pr3 c (THead (Flat Appl) t x) u2) \to ((((iso (THead (Flat Appl) t x) 
41128 u2) \to (\forall (P: Prop).P))) \to (sn3 c (THead (Flat Appl) v2 u2)))))) \to 
41129 (sn3 c (THead (Flat Appl) v2 (THead (Flat Appl) t x))))))))) (sn3_ind c 
41130 (\lambda (t: T).(\forall (x: T).(\forall (x0: T).((eq T t (THead (Flat Appl) 
41131 x x0)) \to (\forall (v2: T).((sn3 c v2) \to (((\forall (u2: T).((pr3 c (THead 
41132 (Flat Appl) x x0) u2) \to ((((iso (THead (Flat Appl) x x0) u2) \to (\forall 
41133 (P: Prop).P))) \to (sn3 c (THead (Flat Appl) v2 u2)))))) \to (sn3 c (THead 
41134 (Flat Appl) v2 (THead (Flat Appl) x x0)))))))))) (\lambda (t2: T).(\lambda 
41135 (H1: ((\forall (t3: T).((((eq T t2 t3) \to (\forall (P: Prop).P))) \to ((pr3 
41136 c t2 t3) \to (sn3 c t3)))))).(\lambda (H2: ((\forall (t3: T).((((eq T t2 t3) 
41137 \to (\forall (P: Prop).P))) \to ((pr3 c t2 t3) \to (\forall (x: T).(\forall 
41138 (x0: T).((eq T t3 (THead (Flat Appl) x x0)) \to (\forall (v2: T).((sn3 c v2) 
41139 \to (((\forall (u2: T).((pr3 c (THead (Flat Appl) x x0) u2) \to ((((iso 
41140 (THead (Flat Appl) x x0) u2) \to (\forall (P: Prop).P))) \to (sn3 c (THead 
41141 (Flat Appl) v2 u2)))))) \to (sn3 c (THead (Flat Appl) v2 (THead (Flat Appl) x 
41142 x0)))))))))))))).(\lambda (x: T).(\lambda (x0: T).(\lambda (H3: (eq T t2 
41143 (THead (Flat Appl) x x0))).(\lambda (v2: T).(\lambda (H4: (sn3 c 
41144 v2)).(sn3_ind c (\lambda (t: T).(((\forall (u2: T).((pr3 c (THead (Flat Appl) 
41145 x x0) u2) \to ((((iso (THead (Flat Appl) x x0) u2) \to (\forall (P: 
41146 Prop).P))) \to (sn3 c (THead (Flat Appl) t u2)))))) \to (sn3 c (THead (Flat 
41147 Appl) t (THead (Flat Appl) x x0))))) (\lambda (t0: T).(\lambda (H5: ((\forall 
41148 (t2: T).((((eq T t0 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t0 t2) \to 
41149 (sn3 c t2)))))).(\lambda (H6: ((\forall (t2: T).((((eq T t0 t2) \to (\forall 
41150 (P: Prop).P))) \to ((pr3 c t0 t2) \to (((\forall (u2: T).((pr3 c (THead (Flat 
41151 Appl) x x0) u2) \to ((((iso (THead (Flat Appl) x x0) u2) \to (\forall (P: 
41152 Prop).P))) \to (sn3 c (THead (Flat Appl) t2 u2)))))) \to (sn3 c (THead (Flat 
41153 Appl) t2 (THead (Flat Appl) x x0))))))))).(\lambda (H7: ((\forall (u2: 
41154 T).((pr3 c (THead (Flat Appl) x x0) u2) \to ((((iso (THead (Flat Appl) x x0) 
41155 u2) \to (\forall (P: Prop).P))) \to (sn3 c (THead (Flat Appl) t0 
41156 u2))))))).(let H8 \def (eq_ind T t2 (\lambda (t: T).(\forall (t2: T).((((eq T 
41157 t t2) \to (\forall (P: Prop).P))) \to ((pr3 c t t2) \to (\forall (x: 
41158 T).(\forall (x0: T).((eq T t2 (THead (Flat Appl) x x0)) \to (\forall (v2: 
41159 T).((sn3 c v2) \to (((\forall (u2: T).((pr3 c (THead (Flat Appl) x x0) u2) 
41160 \to ((((iso (THead (Flat Appl) x x0) u2) \to (\forall (P: Prop).P))) \to (sn3 
41161 c (THead (Flat Appl) v2 u2)))))) \to (sn3 c (THead (Flat Appl) v2 (THead 
41162 (Flat Appl) x x0))))))))))))) H2 (THead (Flat Appl) x x0) H3) in (let H9 \def 
41163 (eq_ind T t2 (\lambda (t: T).(\forall (t2: T).((((eq T t t2) \to (\forall (P: 
41164 Prop).P))) \to ((pr3 c t t2) \to (sn3 c t2))))) H1 (THead (Flat Appl) x x0) 
41165 H3) in (sn3_pr2_intro c (THead (Flat Appl) t0 (THead (Flat Appl) x x0)) 
41166 (\lambda (t3: T).(\lambda (H10: (((eq T (THead (Flat Appl) t0 (THead (Flat 
41167 Appl) x x0)) t3) \to (\forall (P: Prop).P)))).(\lambda (H11: (pr2 c (THead 
41168 (Flat Appl) t0 (THead (Flat Appl) x x0)) t3)).(let H12 \def (pr2_gen_appl c 
41169 t0 (THead (Flat Appl) x x0) t3 H11) in (or3_ind (ex3_2 T T (\lambda (u2: 
41170 T).(\lambda (t4: T).(eq T t3 (THead (Flat Appl) u2 t4)))) (\lambda (u2: 
41171 T).(\lambda (_: T).(pr2 c t0 u2))) (\lambda (_: T).(\lambda (t4: T).(pr2 c 
41172 (THead (Flat Appl) x x0) t4)))) (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: 
41173 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Flat Appl) x x0) (THead 
41174 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
41175 T).(\lambda (t4: T).(eq T t3 (THead (Bind Abbr) u2 t4)))))) (\lambda (_: 
41176 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c t0 u2))))) 
41177 (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t4: T).(\forall 
41178 (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 t4)))))))) (ex6_6 B T T T 
41179 T T (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
41180 (_: T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda 
41181 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq 
41182 T (THead (Flat Appl) x x0) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
41183 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
41184 (y2: T).(eq T t3 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
41185 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
41186 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c t0 u2))))))) (\lambda (_: 
41187 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
41188 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
41189 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
41190 y2) z1 z2)))))))) (sn3 c t3) (\lambda (H13: (ex3_2 T T (\lambda (u2: 
41191 T).(\lambda (t2: T).(eq T t3 (THead (Flat Appl) u2 t2)))) (\lambda (u2: 
41192 T).(\lambda (_: T).(pr2 c t0 u2))) (\lambda (_: T).(\lambda (t2: T).(pr2 c 
41193 (THead (Flat Appl) x x0) t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda 
41194 (t4: T).(eq T t3 (THead (Flat Appl) u2 t4)))) (\lambda (u2: T).(\lambda (_: 
41195 T).(pr2 c t0 u2))) (\lambda (_: T).(\lambda (t4: T).(pr2 c (THead (Flat Appl) 
41196 x x0) t4))) (sn3 c t3) (\lambda (x1: T).(\lambda (x2: T).(\lambda (H14: (eq T 
41197 t3 (THead (Flat Appl) x1 x2))).(\lambda (H15: (pr2 c t0 x1)).(\lambda (H16: 
41198 (pr2 c (THead (Flat Appl) x x0) x2)).(let H17 \def (eq_ind T t3 (\lambda (t: 
41199 T).((eq T (THead (Flat Appl) t0 (THead (Flat Appl) x x0)) t) \to (\forall (P: 
41200 Prop).P))) H10 (THead (Flat Appl) x1 x2) H14) in (eq_ind_r T (THead (Flat 
41201 Appl) x1 x2) (\lambda (t: T).(sn3 c t)) (let H18 \def (pr2_gen_appl c x x0 x2 
41202 H16) in (or3_ind (ex3_2 T T (\lambda (u2: T).(\lambda (t4: T).(eq T x2 (THead 
41203 (Flat Appl) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c x u2))) 
41204 (\lambda (_: T).(\lambda (t4: T).(pr2 c x0 t4)))) (ex4_4 T T T T (\lambda 
41205 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T x0 (THead 
41206 (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: 
41207 T).(\lambda (t4: T).(eq T x2 (THead (Bind Abbr) u2 t4)))))) (\lambda (_: 
41208 T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c x u2))))) (\lambda 
41209 (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t4: T).(\forall (b: 
41210 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 t4)))))))) (ex6_6 B T T T T T 
41211 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
41212 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
41213 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T x0 
41214 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
41215 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x2 (THead (Bind 
41216 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
41217 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
41218 (_: T).(pr2 c x u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
41219 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
41220 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
41221 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2)))))))) (sn3 c 
41222 (THead (Flat Appl) x1 x2)) (\lambda (H19: (ex3_2 T T (\lambda (u2: 
41223 T).(\lambda (t2: T).(eq T x2 (THead (Flat Appl) u2 t2)))) (\lambda (u2: 
41224 T).(\lambda (_: T).(pr2 c x u2))) (\lambda (_: T).(\lambda (t2: T).(pr2 c x0 
41225 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t4: T).(eq T x2 (THead 
41226 (Flat Appl) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(pr2 c x u2))) 
41227 (\lambda (_: T).(\lambda (t4: T).(pr2 c x0 t4))) (sn3 c (THead (Flat Appl) x1 
41228 x2)) (\lambda (x3: T).(\lambda (x4: T).(\lambda (H20: (eq T x2 (THead (Flat 
41229 Appl) x3 x4))).(\lambda (H21: (pr2 c x x3)).(\lambda (H22: (pr2 c x0 
41230 x4)).(let H23 \def (eq_ind T x2 (\lambda (t: T).((eq T (THead (Flat Appl) t0 
41231 (THead (Flat Appl) x x0)) (THead (Flat Appl) x1 t)) \to (\forall (P: 
41232 Prop).P))) H17 (THead (Flat Appl) x3 x4) H20) in (eq_ind_r T (THead (Flat 
41233 Appl) x3 x4) (\lambda (t: T).(sn3 c (THead (Flat Appl) x1 t))) (let H_x \def 
41234 (term_dec (THead (Flat Appl) x x0) (THead (Flat Appl) x3 x4)) in (let H24 
41235 \def H_x in (or_ind (eq T (THead (Flat Appl) x x0) (THead (Flat Appl) x3 x4)) 
41236 ((eq T (THead (Flat Appl) x x0) (THead (Flat Appl) x3 x4)) \to (\forall (P: 
41237 Prop).P)) (sn3 c (THead (Flat Appl) x1 (THead (Flat Appl) x3 x4))) (\lambda 
41238 (H25: (eq T (THead (Flat Appl) x x0) (THead (Flat Appl) x3 x4))).(let H26 
41239 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
41240 [(TSort _) \Rightarrow x | (TLRef _) \Rightarrow x | (THead _ t _) 
41241 \Rightarrow t])) (THead (Flat Appl) x x0) (THead (Flat Appl) x3 x4) H25) in 
41242 ((let H27 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
41243 T).T) with [(TSort _) \Rightarrow x0 | (TLRef _) \Rightarrow x0 | (THead _ _ 
41244 t) \Rightarrow t])) (THead (Flat Appl) x x0) (THead (Flat Appl) x3 x4) H25) 
41245 in (\lambda (H28: (eq T x x3)).(let H29 \def (eq_ind_r T x4 (\lambda (t: 
41246 T).((eq T (THead (Flat Appl) t0 (THead (Flat Appl) x x0)) (THead (Flat Appl) 
41247 x1 (THead (Flat Appl) x3 t))) \to (\forall (P: Prop).P))) H23 x0 H27) in (let 
41248 H30 \def (eq_ind_r T x4 (\lambda (t: T).(pr2 c x0 t)) H22 x0 H27) in (eq_ind 
41249 T x0 (\lambda (t: T).(sn3 c (THead (Flat Appl) x1 (THead (Flat Appl) x3 t)))) 
41250 (let H31 \def (eq_ind_r T x3 (\lambda (t: T).((eq T (THead (Flat Appl) t0 
41251 (THead (Flat Appl) x x0)) (THead (Flat Appl) x1 (THead (Flat Appl) t x0))) 
41252 \to (\forall (P: Prop).P))) H29 x H28) in (let H32 \def (eq_ind_r T x3 
41253 (\lambda (t: T).(pr2 c x t)) H21 x H28) in (eq_ind T x (\lambda (t: T).(sn3 c 
41254 (THead (Flat Appl) x1 (THead (Flat Appl) t x0)))) (let H_x0 \def (term_dec t0 
41255 x1) in (let H33 \def H_x0 in (or_ind (eq T t0 x1) ((eq T t0 x1) \to (\forall 
41256 (P: Prop).P)) (sn3 c (THead (Flat Appl) x1 (THead (Flat Appl) x x0))) 
41257 (\lambda (H34: (eq T t0 x1)).(let H35 \def (eq_ind_r T x1 (\lambda (t: 
41258 T).((eq T (THead (Flat Appl) t0 (THead (Flat Appl) x x0)) (THead (Flat Appl) 
41259 t (THead (Flat Appl) x x0))) \to (\forall (P: Prop).P))) H31 t0 H34) in (let 
41260 H36 \def (eq_ind_r T x1 (\lambda (t: T).(pr2 c t0 t)) H15 t0 H34) in (eq_ind 
41261 T t0 (\lambda (t: T).(sn3 c (THead (Flat Appl) t (THead (Flat Appl) x x0)))) 
41262 (H35 (refl_equal T (THead (Flat Appl) t0 (THead (Flat Appl) x x0))) (sn3 c 
41263 (THead (Flat Appl) t0 (THead (Flat Appl) x x0)))) x1 H34)))) (\lambda (H34: 
41264 (((eq T t0 x1) \to (\forall (P: Prop).P)))).(H6 x1 H34 (pr3_pr2 c t0 x1 H15) 
41265 (\lambda (u2: T).(\lambda (H35: (pr3 c (THead (Flat Appl) x x0) u2)).(\lambda 
41266 (H36: (((iso (THead (Flat Appl) x x0) u2) \to (\forall (P: 
41267 Prop).P)))).(sn3_pr3_trans c (THead (Flat Appl) t0 u2) (H7 u2 H35 H36) (THead 
41268 (Flat Appl) x1 u2) (pr3_pr2 c (THead (Flat Appl) t0 u2) (THead (Flat Appl) x1 
41269 u2) (pr2_head_1 c t0 x1 H15 (Flat Appl) u2)))))))) H33))) x3 H28))) x4 
41270 H27))))) H26))) (\lambda (H25: (((eq T (THead (Flat Appl) x x0) (THead (Flat 
41271 Appl) x3 x4)) \to (\forall (P: Prop).P)))).(H8 (THead (Flat Appl) x3 x4) H25 
41272 (pr3_head_12 c x x3 (pr3_pr2 c x x3 H21) (Flat Appl) x0 x4 (pr3_pr2 (CHead c 
41273 (Flat Appl) x3) x0 x4 (pr2_cflat c x0 x4 H22 Appl x3))) x3 x4 (refl_equal T 
41274 (THead (Flat Appl) x3 x4)) x1 (sn3_pr3_trans c t0 (sn3_sing c t0 H5) x1 
41275 (pr3_pr2 c t0 x1 H15)) (\lambda (u2: T).(\lambda (H26: (pr3 c (THead (Flat 
41276 Appl) x3 x4) u2)).(\lambda (H27: (((iso (THead (Flat Appl) x3 x4) u2) \to 
41277 (\forall (P: Prop).P)))).(sn3_pr3_trans c (THead (Flat Appl) t0 u2) (H7 u2 
41278 (pr3_sing c (THead (Flat Appl) x x4) (THead (Flat Appl) x x0) (pr2_thin_dx c 
41279 x0 x4 H22 x Appl) u2 (pr3_sing c (THead (Flat Appl) x3 x4) (THead (Flat Appl) 
41280 x x4) (pr2_head_1 c x x3 H21 (Flat Appl) x4) u2 H26)) (\lambda (H28: (iso 
41281 (THead (Flat Appl) x x0) u2)).(\lambda (P: Prop).(H27 (iso_trans (THead (Flat 
41282 Appl) x3 x4) (THead (Flat Appl) x x0) (iso_head (Flat Appl) x3 x x4 x0) u2 
41283 H28) P)))) (THead (Flat Appl) x1 u2) (pr3_pr2 c (THead (Flat Appl) t0 u2) 
41284 (THead (Flat Appl) x1 u2) (pr2_head_1 c t0 x1 H15 (Flat Appl) u2)))))))) 
41285 H24))) x2 H20))))))) H19)) (\lambda (H19: (ex4_4 T T T T (\lambda (y1: 
41286 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T x0 (THead (Bind 
41287 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
41288 (t2: T).(eq T x2 (THead (Bind Abbr) u2 t2)))))) (\lambda (_: T).(\lambda (_: 
41289 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c x u2))))) (\lambda (_: T).(\lambda 
41290 (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr2 
41291 (CHead c (Bind b) u) z1 t2))))))))).(ex4_4_ind T T T T (\lambda (y1: 
41292 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T x0 (THead (Bind 
41293 Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
41294 (t4: T).(eq T x2 (THead (Bind Abbr) u2 t4)))))) (\lambda (_: T).(\lambda (_: 
41295 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c x u2))))) (\lambda (_: T).(\lambda 
41296 (z1: T).(\lambda (_: T).(\lambda (t4: T).(\forall (b: B).(\forall (u: T).(pr2 
41297 (CHead c (Bind b) u) z1 t4))))))) (sn3 c (THead (Flat Appl) x1 x2)) (\lambda 
41298 (x3: T).(\lambda (x4: T).(\lambda (x5: T).(\lambda (x6: T).(\lambda (H20: (eq 
41299 T x0 (THead (Bind Abst) x3 x4))).(\lambda (H21: (eq T x2 (THead (Bind Abbr) 
41300 x5 x6))).(\lambda (H22: (pr2 c x x5)).(\lambda (H23: ((\forall (b: 
41301 B).(\forall (u: T).(pr2 (CHead c (Bind b) u) x4 x6))))).(let H24 \def (eq_ind 
41302 T x2 (\lambda (t: T).((eq T (THead (Flat Appl) t0 (THead (Flat Appl) x x0)) 
41303 (THead (Flat Appl) x1 t)) \to (\forall (P: Prop).P))) H17 (THead (Bind Abbr) 
41304 x5 x6) H21) in (eq_ind_r T (THead (Bind Abbr) x5 x6) (\lambda (t: T).(sn3 c 
41305 (THead (Flat Appl) x1 t))) (let H25 \def (eq_ind T x0 (\lambda (t: T).((eq T 
41306 (THead (Flat Appl) t0 (THead (Flat Appl) x t)) (THead (Flat Appl) x1 (THead 
41307 (Bind Abbr) x5 x6))) \to (\forall (P: Prop).P))) H24 (THead (Bind Abst) x3 
41308 x4) H20) in (let H26 \def (eq_ind T x0 (\lambda (t: T).(\forall (t2: 
41309 T).((((eq T (THead (Flat Appl) x t) t2) \to (\forall (P: Prop).P))) \to ((pr3 
41310 c (THead (Flat Appl) x t) t2) \to (sn3 c t2))))) H9 (THead (Bind Abst) x3 x4) 
41311 H20) in (let H27 \def (eq_ind T x0 (\lambda (t: T).(\forall (t2: T).((((eq T 
41312 (THead (Flat Appl) x t) t2) \to (\forall (P: Prop).P))) \to ((pr3 c (THead 
41313 (Flat Appl) x t) t2) \to (\forall (x: T).(\forall (x0: T).((eq T t2 (THead 
41314 (Flat Appl) x x0)) \to (\forall (v2: T).((sn3 c v2) \to (((\forall (u2: 
41315 T).((pr3 c (THead (Flat Appl) x x0) u2) \to ((((iso (THead (Flat Appl) x x0) 
41316 u2) \to (\forall (P: Prop).P))) \to (sn3 c (THead (Flat Appl) v2 u2)))))) \to 
41317 (sn3 c (THead (Flat Appl) v2 (THead (Flat Appl) x x0))))))))))))) H8 (THead 
41318 (Bind Abst) x3 x4) H20) in (let H28 \def (eq_ind T x0 (\lambda (t: 
41319 T).(\forall (u2: T).((pr3 c (THead (Flat Appl) x t) u2) \to ((((iso (THead 
41320 (Flat Appl) x t) u2) \to (\forall (P: Prop).P))) \to (sn3 c (THead (Flat 
41321 Appl) t0 u2)))))) H7 (THead (Bind Abst) x3 x4) H20) in (let H29 \def (eq_ind 
41322 T x0 (\lambda (t: T).(\forall (t2: T).((((eq T t0 t2) \to (\forall (P: 
41323 Prop).P))) \to ((pr3 c t0 t2) \to (((\forall (u2: T).((pr3 c (THead (Flat 
41324 Appl) x t) u2) \to ((((iso (THead (Flat Appl) x t) u2) \to (\forall (P: 
41325 Prop).P))) \to (sn3 c (THead (Flat Appl) t2 u2)))))) \to (sn3 c (THead (Flat 
41326 Appl) t2 (THead (Flat Appl) x t)))))))) H6 (THead (Bind Abst) x3 x4) H20) in 
41327 (sn3_pr3_trans c (THead (Flat Appl) t0 (THead (Bind Abbr) x5 x6)) (H28 (THead 
41328 (Bind Abbr) x5 x6) (pr3_sing c (THead (Bind Abbr) x x4) (THead (Flat Appl) x 
41329 (THead (Bind Abst) x3 x4)) (pr2_free c (THead (Flat Appl) x (THead (Bind 
41330 Abst) x3 x4)) (THead (Bind Abbr) x x4) (pr0_beta x3 x x (pr0_refl x) x4 x4 
41331 (pr0_refl x4))) (THead (Bind Abbr) x5 x6) (pr3_head_12 c x x5 (pr3_pr2 c x x5 
41332 H22) (Bind Abbr) x4 x6 (pr3_pr2 (CHead c (Bind Abbr) x5) x4 x6 (H23 Abbr 
41333 x5)))) (\lambda (H30: (iso (THead (Flat Appl) x (THead (Bind Abst) x3 x4)) 
41334 (THead (Bind Abbr) x5 x6))).(\lambda (P: Prop).(let H31 \def (match H30 
41335 return (\lambda (t: T).(\lambda (t0: T).(\lambda (_: (iso t t0)).((eq T t 
41336 (THead (Flat Appl) x (THead (Bind Abst) x3 x4))) \to ((eq T t0 (THead (Bind 
41337 Abbr) x5 x6)) \to P))))) with [(iso_sort n1 n2) \Rightarrow (\lambda (H0: (eq 
41338 T (TSort n1) (THead (Flat Appl) x (THead (Bind Abst) x3 x4)))).(\lambda (H1: 
41339 (eq T (TSort n2) (THead (Bind Abbr) x5 x6))).((let H2 \def (eq_ind T (TSort 
41340 n1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
41341 \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
41342 False])) I (THead (Flat Appl) x (THead (Bind Abst) x3 x4)) H0) in (False_ind 
41343 ((eq T (TSort n2) (THead (Bind Abbr) x5 x6)) \to P) H2)) H1))) | (iso_lref i1 
41344 i2) \Rightarrow (\lambda (H0: (eq T (TLRef i1) (THead (Flat Appl) x (THead 
41345 (Bind Abst) x3 x4)))).(\lambda (H1: (eq T (TLRef i2) (THead (Bind Abbr) x5 
41346 x6))).((let H2 \def (eq_ind T (TLRef i1) (\lambda (e: T).(match e return 
41347 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
41348 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead (Flat Appl) x 
41349 (THead (Bind Abst) x3 x4)) H0) in (False_ind ((eq T (TLRef i2) (THead (Bind 
41350 Abbr) x5 x6)) \to P) H2)) H1))) | (iso_head k v4 v5 t1 t2) \Rightarrow 
41351 (\lambda (H0: (eq T (THead k v4 t1) (THead (Flat Appl) x (THead (Bind Abst) 
41352 x3 x4)))).(\lambda (H1: (eq T (THead k v5 t2) (THead (Bind Abbr) x5 
41353 x6))).((let H2 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
41354 T).T) with [(TSort _) \Rightarrow t1 | (TLRef _) \Rightarrow t1 | (THead _ _ 
41355 t) \Rightarrow t])) (THead k v4 t1) (THead (Flat Appl) x (THead (Bind Abst) 
41356 x3 x4)) H0) in ((let H3 \def (f_equal T T (\lambda (e: T).(match e return 
41357 (\lambda (_: T).T) with [(TSort _) \Rightarrow v4 | (TLRef _) \Rightarrow v4 
41358 | (THead _ t _) \Rightarrow t])) (THead k v4 t1) (THead (Flat Appl) x (THead 
41359 (Bind Abst) x3 x4)) H0) in ((let H4 \def (f_equal T K (\lambda (e: T).(match 
41360 e return (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _) 
41361 \Rightarrow k | (THead k _ _) \Rightarrow k])) (THead k v4 t1) (THead (Flat 
41362 Appl) x (THead (Bind Abst) x3 x4)) H0) in (eq_ind K (Flat Appl) (\lambda (k0: 
41363 K).((eq T v4 x) \to ((eq T t1 (THead (Bind Abst) x3 x4)) \to ((eq T (THead k0 
41364 v5 t2) (THead (Bind Abbr) x5 x6)) \to P)))) (\lambda (H5: (eq T v4 
41365 x)).(eq_ind T x (\lambda (_: T).((eq T t1 (THead (Bind Abst) x3 x4)) \to ((eq 
41366 T (THead (Flat Appl) v5 t2) (THead (Bind Abbr) x5 x6)) \to P))) (\lambda (H6: 
41367 (eq T t1 (THead (Bind Abst) x3 x4))).(eq_ind T (THead (Bind Abst) x3 x4) 
41368 (\lambda (_: T).((eq T (THead (Flat Appl) v5 t2) (THead (Bind Abbr) x5 x6)) 
41369 \to P)) (\lambda (H7: (eq T (THead (Flat Appl) v5 t2) (THead (Bind Abbr) x5 
41370 x6))).(let H8 \def (eq_ind T (THead (Flat Appl) v5 t2) (\lambda (e: T).(match 
41371 e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
41372 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
41373 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
41374 (THead (Bind Abbr) x5 x6) H7) in (False_ind P H8))) t1 (sym_eq T t1 (THead 
41375 (Bind Abst) x3 x4) H6))) v4 (sym_eq T v4 x H5))) k (sym_eq K k (Flat Appl) 
41376 H4))) H3)) H2)) H1)))]) in (H31 (refl_equal T (THead (Flat Appl) x (THead 
41377 (Bind Abst) x3 x4))) (refl_equal T (THead (Bind Abbr) x5 x6))))))) (THead 
41378 (Flat Appl) x1 (THead (Bind Abbr) x5 x6)) (pr3_pr2 c (THead (Flat Appl) t0 
41379 (THead (Bind Abbr) x5 x6)) (THead (Flat Appl) x1 (THead (Bind Abbr) x5 x6)) 
41380 (pr2_head_1 c t0 x1 H15 (Flat Appl) (THead (Bind Abbr) x5 x6))))))))) x2 
41381 H21)))))))))) H19)) (\lambda (H19: (ex6_6 B T T T T T (\lambda (b: 
41382 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
41383 (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda 
41384 (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T x0 (THead (Bind 
41385 b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda 
41386 (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x2 (THead (Bind b) y2 (THead 
41387 (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: B).(\lambda (_: 
41388 T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c x 
41389 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: 
41390 T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) (\lambda (b: 
41391 B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda (_: T).(\lambda 
41392 (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))))).(ex6_6_ind B T T T T T 
41393 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
41394 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
41395 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T x0 
41396 (THead (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
41397 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T x2 (THead (Bind 
41398 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
41399 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
41400 (_: T).(pr2 c x u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
41401 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
41402 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
41403 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))) (sn3 c (THead 
41404 (Flat Appl) x1 x2)) (\lambda (x3: B).(\lambda (x4: T).(\lambda (x5: 
41405 T).(\lambda (x6: T).(\lambda (x7: T).(\lambda (x8: T).(\lambda (H20: (not (eq 
41406 B x3 Abst))).(\lambda (H21: (eq T x0 (THead (Bind x3) x4 x5))).(\lambda (H22: 
41407 (eq T x2 (THead (Bind x3) x8 (THead (Flat Appl) (lift (S O) O x7) 
41408 x6)))).(\lambda (H23: (pr2 c x x7)).(\lambda (H24: (pr2 c x4 x8)).(\lambda 
41409 (H25: (pr2 (CHead c (Bind x3) x8) x5 x6)).(let H26 \def (eq_ind T x2 (\lambda 
41410 (t: T).((eq T (THead (Flat Appl) t0 (THead (Flat Appl) x x0)) (THead (Flat 
41411 Appl) x1 t)) \to (\forall (P: Prop).P))) H17 (THead (Bind x3) x8 (THead (Flat 
41412 Appl) (lift (S O) O x7) x6)) H22) in (eq_ind_r T (THead (Bind x3) x8 (THead 
41413 (Flat Appl) (lift (S O) O x7) x6)) (\lambda (t: T).(sn3 c (THead (Flat Appl) 
41414 x1 t))) (let H27 \def (eq_ind T x0 (\lambda (t: T).((eq T (THead (Flat Appl) 
41415 t0 (THead (Flat Appl) x t)) (THead (Flat Appl) x1 (THead (Bind x3) x8 (THead 
41416 (Flat Appl) (lift (S O) O x7) x6)))) \to (\forall (P: Prop).P))) H26 (THead 
41417 (Bind x3) x4 x5) H21) in (let H28 \def (eq_ind T x0 (\lambda (t: T).(\forall 
41418 (t2: T).((((eq T (THead (Flat Appl) x t) t2) \to (\forall (P: Prop).P))) \to 
41419 ((pr3 c (THead (Flat Appl) x t) t2) \to (sn3 c t2))))) H9 (THead (Bind x3) x4 
41420 x5) H21) in (let H29 \def (eq_ind T x0 (\lambda (t: T).(\forall (t2: 
41421 T).((((eq T (THead (Flat Appl) x t) t2) \to (\forall (P: Prop).P))) \to ((pr3 
41422 c (THead (Flat Appl) x t) t2) \to (\forall (x: T).(\forall (x0: T).((eq T t2 
41423 (THead (Flat Appl) x x0)) \to (\forall (v2: T).((sn3 c v2) \to (((\forall 
41424 (u2: T).((pr3 c (THead (Flat Appl) x x0) u2) \to ((((iso (THead (Flat Appl) x 
41425 x0) u2) \to (\forall (P: Prop).P))) \to (sn3 c (THead (Flat Appl) v2 u2)))))) 
41426 \to (sn3 c (THead (Flat Appl) v2 (THead (Flat Appl) x x0))))))))))))) H8 
41427 (THead (Bind x3) x4 x5) H21) in (let H30 \def (eq_ind T x0 (\lambda (t: 
41428 T).(\forall (u2: T).((pr3 c (THead (Flat Appl) x t) u2) \to ((((iso (THead 
41429 (Flat Appl) x t) u2) \to (\forall (P: Prop).P))) \to (sn3 c (THead (Flat 
41430 Appl) t0 u2)))))) H7 (THead (Bind x3) x4 x5) H21) in (let H31 \def (eq_ind T 
41431 x0 (\lambda (t: T).(\forall (t2: T).((((eq T t0 t2) \to (\forall (P: 
41432 Prop).P))) \to ((pr3 c t0 t2) \to (((\forall (u2: T).((pr3 c (THead (Flat 
41433 Appl) x t) u2) \to ((((iso (THead (Flat Appl) x t) u2) \to (\forall (P: 
41434 Prop).P))) \to (sn3 c (THead (Flat Appl) t2 u2)))))) \to (sn3 c (THead (Flat 
41435 Appl) t2 (THead (Flat Appl) x t)))))))) H6 (THead (Bind x3) x4 x5) H21) in 
41436 (sn3_pr3_trans c (THead (Flat Appl) t0 (THead (Bind x3) x8 (THead (Flat Appl) 
41437 (lift (S O) O x7) x6))) (H30 (THead (Bind x3) x8 (THead (Flat Appl) (lift (S 
41438 O) O x7) x6)) (pr3_sing c (THead (Bind x3) x4 (THead (Flat Appl) (lift (S O) 
41439 O x) x5)) (THead (Flat Appl) x (THead (Bind x3) x4 x5)) (pr2_free c (THead 
41440 (Flat Appl) x (THead (Bind x3) x4 x5)) (THead (Bind x3) x4 (THead (Flat Appl) 
41441 (lift (S O) O x) x5)) (pr0_upsilon x3 H20 x x (pr0_refl x) x4 x4 (pr0_refl 
41442 x4) x5 x5 (pr0_refl x5))) (THead (Bind x3) x8 (THead (Flat Appl) (lift (S O) 
41443 O x7) x6)) (pr3_head_12 c x4 x8 (pr3_pr2 c x4 x8 H24) (Bind x3) (THead (Flat 
41444 Appl) (lift (S O) O x) x5) (THead (Flat Appl) (lift (S O) O x7) x6) 
41445 (pr3_head_12 (CHead c (Bind x3) x8) (lift (S O) O x) (lift (S O) O x7) 
41446 (pr3_lift (CHead c (Bind x3) x8) c (S O) O (drop_drop (Bind x3) O c c 
41447 (drop_refl c) x8) x x7 (pr3_pr2 c x x7 H23)) (Flat Appl) x5 x6 (pr3_pr2 
41448 (CHead (CHead c (Bind x3) x8) (Flat Appl) (lift (S O) O x7)) x5 x6 (pr2_cflat 
41449 (CHead c (Bind x3) x8) x5 x6 H25 Appl (lift (S O) O x7)))))) (\lambda (H32: 
41450 (iso (THead (Flat Appl) x (THead (Bind x3) x4 x5)) (THead (Bind x3) x8 (THead 
41451 (Flat Appl) (lift (S O) O x7) x6)))).(\lambda (P: Prop).(let H33 \def (match 
41452 H32 return (\lambda (t: T).(\lambda (t0: T).(\lambda (_: (iso t t0)).((eq T t 
41453 (THead (Flat Appl) x (THead (Bind x3) x4 x5))) \to ((eq T t0 (THead (Bind x3) 
41454 x8 (THead (Flat Appl) (lift (S O) O x7) x6))) \to P))))) with [(iso_sort n1 
41455 n2) \Rightarrow (\lambda (H0: (eq T (TSort n1) (THead (Flat Appl) x (THead 
41456 (Bind x3) x4 x5)))).(\lambda (H1: (eq T (TSort n2) (THead (Bind x3) x8 (THead 
41457 (Flat Appl) (lift (S O) O x7) x6)))).((let H2 \def (eq_ind T (TSort n1) 
41458 (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
41459 \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
41460 False])) I (THead (Flat Appl) x (THead (Bind x3) x4 x5)) H0) in (False_ind 
41461 ((eq T (TSort n2) (THead (Bind x3) x8 (THead (Flat Appl) (lift (S O) O x7) 
41462 x6))) \to P) H2)) H1))) | (iso_lref i1 i2) \Rightarrow (\lambda (H0: (eq T 
41463 (TLRef i1) (THead (Flat Appl) x (THead (Bind x3) x4 x5)))).(\lambda (H1: (eq 
41464 T (TLRef i2) (THead (Bind x3) x8 (THead (Flat Appl) (lift (S O) O x7) 
41465 x6)))).((let H2 \def (eq_ind T (TLRef i1) (\lambda (e: T).(match e return 
41466 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
41467 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead (Flat Appl) x 
41468 (THead (Bind x3) x4 x5)) H0) in (False_ind ((eq T (TLRef i2) (THead (Bind x3) 
41469 x8 (THead (Flat Appl) (lift (S O) O x7) x6))) \to P) H2)) H1))) | (iso_head k 
41470 v4 v5 t1 t2) \Rightarrow (\lambda (H0: (eq T (THead k v4 t1) (THead (Flat 
41471 Appl) x (THead (Bind x3) x4 x5)))).(\lambda (H1: (eq T (THead k v5 t2) (THead 
41472 (Bind x3) x8 (THead (Flat Appl) (lift (S O) O x7) x6)))).((let H2 \def 
41473 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
41474 _) \Rightarrow t1 | (TLRef _) \Rightarrow t1 | (THead _ _ t) \Rightarrow t])) 
41475 (THead k v4 t1) (THead (Flat Appl) x (THead (Bind x3) x4 x5)) H0) in ((let H3 
41476 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
41477 [(TSort _) \Rightarrow v4 | (TLRef _) \Rightarrow v4 | (THead _ t _) 
41478 \Rightarrow t])) (THead k v4 t1) (THead (Flat Appl) x (THead (Bind x3) x4 
41479 x5)) H0) in ((let H4 \def (f_equal T K (\lambda (e: T).(match e return 
41480 (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | 
41481 (THead k _ _) \Rightarrow k])) (THead k v4 t1) (THead (Flat Appl) x (THead 
41482 (Bind x3) x4 x5)) H0) in (eq_ind K (Flat Appl) (\lambda (k0: K).((eq T v4 x) 
41483 \to ((eq T t1 (THead (Bind x3) x4 x5)) \to ((eq T (THead k0 v5 t2) (THead 
41484 (Bind x3) x8 (THead (Flat Appl) (lift (S O) O x7) x6))) \to P)))) (\lambda 
41485 (H5: (eq T v4 x)).(eq_ind T x (\lambda (_: T).((eq T t1 (THead (Bind x3) x4 
41486 x5)) \to ((eq T (THead (Flat Appl) v5 t2) (THead (Bind x3) x8 (THead (Flat 
41487 Appl) (lift (S O) O x7) x6))) \to P))) (\lambda (H6: (eq T t1 (THead (Bind 
41488 x3) x4 x5))).(eq_ind T (THead (Bind x3) x4 x5) (\lambda (_: T).((eq T (THead 
41489 (Flat Appl) v5 t2) (THead (Bind x3) x8 (THead (Flat Appl) (lift (S O) O x7) 
41490 x6))) \to P)) (\lambda (H7: (eq T (THead (Flat Appl) v5 t2) (THead (Bind x3) 
41491 x8 (THead (Flat Appl) (lift (S O) O x7) x6)))).(let H8 \def (eq_ind T (THead 
41492 (Flat Appl) v5 t2) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
41493 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
41494 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
41495 False | (Flat _) \Rightarrow True])])) I (THead (Bind x3) x8 (THead (Flat 
41496 Appl) (lift (S O) O x7) x6)) H7) in (False_ind P H8))) t1 (sym_eq T t1 (THead 
41497 (Bind x3) x4 x5) H6))) v4 (sym_eq T v4 x H5))) k (sym_eq K k (Flat Appl) 
41498 H4))) H3)) H2)) H1)))]) in (H33 (refl_equal T (THead (Flat Appl) x (THead 
41499 (Bind x3) x4 x5))) (refl_equal T (THead (Bind x3) x8 (THead (Flat Appl) (lift 
41500 (S O) O x7) x6)))))))) (THead (Flat Appl) x1 (THead (Bind x3) x8 (THead (Flat 
41501 Appl) (lift (S O) O x7) x6))) (pr3_pr2 c (THead (Flat Appl) t0 (THead (Bind 
41502 x3) x8 (THead (Flat Appl) (lift (S O) O x7) x6))) (THead (Flat Appl) x1 
41503 (THead (Bind x3) x8 (THead (Flat Appl) (lift (S O) O x7) x6))) (pr2_head_1 c 
41504 t0 x1 H15 (Flat Appl) (THead (Bind x3) x8 (THead (Flat Appl) (lift (S O) O 
41505 x7) x6)))))))))) x2 H22)))))))))))))) H19)) H18)) t3 H14))))))) H13)) 
41506 (\lambda (H13: (ex4_4 T T T T (\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
41507 T).(\lambda (_: T).(eq T (THead (Flat Appl) x x0) (THead (Bind Abst) y1 
41508 z1)))))) (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (t2: 
41509 T).(eq T t3 (THead (Bind Abbr) u2 t2)))))) (\lambda (_: T).(\lambda (_: 
41510 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c t0 u2))))) (\lambda (_: 
41511 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall 
41512 (u: T).(pr2 (CHead c (Bind b) u) z1 t2))))))))).(ex4_4_ind T T T T (\lambda 
41513 (y1: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Flat 
41514 Appl) x x0) (THead (Bind Abst) y1 z1)))))) (\lambda (_: T).(\lambda (_: 
41515 T).(\lambda (u2: T).(\lambda (t4: T).(eq T t3 (THead (Bind Abbr) u2 t4)))))) 
41516 (\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda (_: T).(pr2 c t0 
41517 u2))))) (\lambda (_: T).(\lambda (z1: T).(\lambda (_: T).(\lambda (t4: 
41518 T).(\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) u) z1 t4))))))) 
41519 (sn3 c t3) (\lambda (x1: T).(\lambda (x2: T).(\lambda (x3: T).(\lambda (x4: 
41520 T).(\lambda (H14: (eq T (THead (Flat Appl) x x0) (THead (Bind Abst) x1 
41521 x2))).(\lambda (H15: (eq T t3 (THead (Bind Abbr) x3 x4))).(\lambda (_: (pr2 c 
41522 t0 x3)).(\lambda (_: ((\forall (b: B).(\forall (u: T).(pr2 (CHead c (Bind b) 
41523 u) x2 x4))))).(let H18 \def (eq_ind T t3 (\lambda (t: T).((eq T (THead (Flat 
41524 Appl) t0 (THead (Flat Appl) x x0)) t) \to (\forall (P: Prop).P))) H10 (THead 
41525 (Bind Abbr) x3 x4) H15) in (eq_ind_r T (THead (Bind Abbr) x3 x4) (\lambda (t: 
41526 T).(sn3 c t)) (let H19 \def (eq_ind T (THead (Flat Appl) x x0) (\lambda (ee: 
41527 T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
41528 (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k return 
41529 (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
41530 True])])) I (THead (Bind Abst) x1 x2) H14) in (False_ind (sn3 c (THead (Bind 
41531 Abbr) x3 x4)) H19)) t3 H15)))))))))) H13)) (\lambda (H13: (ex6_6 B T T T T T 
41532 (\lambda (b: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
41533 T).(\lambda (_: T).(not (eq B b Abst)))))))) (\lambda (b: B).(\lambda (y1: 
41534 T).(\lambda (z1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(eq T 
41535 (THead (Flat Appl) x x0) (THead (Bind b) y1 z1)))))))) (\lambda (b: 
41536 B).(\lambda (_: T).(\lambda (_: T).(\lambda (z2: T).(\lambda (u2: T).(\lambda 
41537 (y2: T).(eq T t3 (THead (Bind b) y2 (THead (Flat Appl) (lift (S O) O u2) 
41538 z2))))))))) (\lambda (_: B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: 
41539 T).(\lambda (u2: T).(\lambda (_: T).(pr2 c t0 u2))))))) (\lambda (_: 
41540 B).(\lambda (y1: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda 
41541 (y2: T).(pr2 c y1 y2))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (z1: 
41542 T).(\lambda (z2: T).(\lambda (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) 
41543 y2) z1 z2))))))))).(ex6_6_ind B T T T T T (\lambda (b: B).(\lambda (_: 
41544 T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(not (eq B 
41545 b Abst)))))))) (\lambda (b: B).(\lambda (y1: T).(\lambda (z1: T).(\lambda (_: 
41546 T).(\lambda (_: T).(\lambda (_: T).(eq T (THead (Flat Appl) x x0) (THead 
41547 (Bind b) y1 z1)))))))) (\lambda (b: B).(\lambda (_: T).(\lambda (_: 
41548 T).(\lambda (z2: T).(\lambda (u2: T).(\lambda (y2: T).(eq T t3 (THead (Bind 
41549 b) y2 (THead (Flat Appl) (lift (S O) O u2) z2))))))))) (\lambda (_: 
41550 B).(\lambda (_: T).(\lambda (_: T).(\lambda (_: T).(\lambda (u2: T).(\lambda 
41551 (_: T).(pr2 c t0 u2))))))) (\lambda (_: B).(\lambda (y1: T).(\lambda (_: 
41552 T).(\lambda (_: T).(\lambda (_: T).(\lambda (y2: T).(pr2 c y1 y2))))))) 
41553 (\lambda (b: B).(\lambda (_: T).(\lambda (z1: T).(\lambda (z2: T).(\lambda 
41554 (_: T).(\lambda (y2: T).(pr2 (CHead c (Bind b) y2) z1 z2))))))) (sn3 c t3) 
41555 (\lambda (x1: B).(\lambda (x2: T).(\lambda (x3: T).(\lambda (x4: T).(\lambda 
41556 (x5: T).(\lambda (x6: T).(\lambda (_: (not (eq B x1 Abst))).(\lambda (H15: 
41557 (eq T (THead (Flat Appl) x x0) (THead (Bind x1) x2 x3))).(\lambda (H16: (eq T 
41558 t3 (THead (Bind x1) x6 (THead (Flat Appl) (lift (S O) O x5) x4)))).(\lambda 
41559 (_: (pr2 c t0 x5)).(\lambda (_: (pr2 c x2 x6)).(\lambda (_: (pr2 (CHead c 
41560 (Bind x1) x6) x3 x4)).(let H20 \def (eq_ind T t3 (\lambda (t: T).((eq T 
41561 (THead (Flat Appl) t0 (THead (Flat Appl) x x0)) t) \to (\forall (P: 
41562 Prop).P))) H10 (THead (Bind x1) x6 (THead (Flat Appl) (lift (S O) O x5) x4)) 
41563 H16) in (eq_ind_r T (THead (Bind x1) x6 (THead (Flat Appl) (lift (S O) O x5) 
41564 x4)) (\lambda (t: T).(sn3 c t)) (let H21 \def (eq_ind T (THead (Flat Appl) x 
41565 x0) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
41566 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
41567 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
41568 (Flat _) \Rightarrow True])])) I (THead (Bind x1) x2 x3) H15) in (False_ind 
41569 (sn3 c (THead (Bind x1) x6 (THead (Flat Appl) (lift (S O) O x5) x4))) H21)) 
41570 t3 H16)))))))))))))) H13)) H12)))))))))))) v2 H4))))))))) y H0))))) H))))).
41571
41572 theorem sn3_appl_appls:
41573  \forall (v1: T).(\forall (t1: T).(\forall (vs: TList).(let u1 \def (THeads 
41574 (Flat Appl) (TCons v1 vs) t1) in (\forall (c: C).((sn3 c u1) \to (\forall 
41575 (v2: T).((sn3 c v2) \to (((\forall (u2: T).((pr3 c u1 u2) \to ((((iso u1 u2) 
41576 \to (\forall (P: Prop).P))) \to (sn3 c (THead (Flat Appl) v2 u2)))))) \to 
41577 (sn3 c (THead (Flat Appl) v2 u1))))))))))
41578 \def
41579  \lambda (v1: T).(\lambda (t1: T).(\lambda (vs: TList).(let u1 \def (THeads 
41580 (Flat Appl) (TCons v1 vs) t1) in (\lambda (c: C).(\lambda (H: (sn3 c (THead 
41581 (Flat Appl) v1 (THeads (Flat Appl) vs t1)))).(\lambda (v2: T).(\lambda (H0: 
41582 (sn3 c v2)).(\lambda (H1: ((\forall (u2: T).((pr3 c (THead (Flat Appl) v1 
41583 (THeads (Flat Appl) vs t1)) u2) \to ((((iso (THead (Flat Appl) v1 (THeads 
41584 (Flat Appl) vs t1)) u2) \to (\forall (P: Prop).P))) \to (sn3 c (THead (Flat 
41585 Appl) v2 u2))))))).(sn3_appl_appl v1 (THeads (Flat Appl) vs t1) c H v2 H0 
41586 H1))))))))).
41587
41588 theorem sn3_appls_lref:
41589  \forall (c: C).(\forall (i: nat).((nf2 c (TLRef i)) \to (\forall (us: 
41590 TList).((sns3 c us) \to (sn3 c (THeads (Flat Appl) us (TLRef i)))))))
41591 \def
41592  \lambda (c: C).(\lambda (i: nat).(\lambda (H: (nf2 c (TLRef i))).(\lambda 
41593 (us: TList).(TList_ind (\lambda (t: TList).((sns3 c t) \to (sn3 c (THeads 
41594 (Flat Appl) t (TLRef i))))) (\lambda (_: True).(sn3_nf2 c (TLRef i) H)) 
41595 (\lambda (t: T).(\lambda (t0: TList).(TList_ind (\lambda (t1: TList).((((sns3 
41596 c t1) \to (sn3 c (THeads (Flat Appl) t1 (TLRef i))))) \to ((land (sn3 c t) 
41597 (sns3 c t1)) \to (sn3 c (THead (Flat Appl) t (THeads (Flat Appl) t1 (TLRef 
41598 i))))))) (\lambda (_: (((sns3 c TNil) \to (sn3 c (THeads (Flat Appl) TNil 
41599 (TLRef i)))))).(\lambda (H1: (land (sn3 c t) (sns3 c TNil))).(let H2 \def H1 
41600 in (and_ind (sn3 c t) True (sn3 c (THead (Flat Appl) t (THeads (Flat Appl) 
41601 TNil (TLRef i)))) (\lambda (H3: (sn3 c t)).(\lambda (_: True).(sn3_appl_lref 
41602 c i H t H3))) H2)))) (\lambda (t1: T).(\lambda (t2: TList).(\lambda (_: 
41603 (((((sns3 c t2) \to (sn3 c (THeads (Flat Appl) t2 (TLRef i))))) \to ((land 
41604 (sn3 c t) (sns3 c t2)) \to (sn3 c (THead (Flat Appl) t (THeads (Flat Appl) t2 
41605 (TLRef i)))))))).(\lambda (H1: (((sns3 c (TCons t1 t2)) \to (sn3 c (THeads 
41606 (Flat Appl) (TCons t1 t2) (TLRef i)))))).(\lambda (H2: (land (sn3 c t) (sns3 
41607 c (TCons t1 t2)))).(let H3 \def H2 in (and_ind (sn3 c t) (land (sn3 c t1) 
41608 (sns3 c t2)) (sn3 c (THead (Flat Appl) t (THeads (Flat Appl) (TCons t1 t2) 
41609 (TLRef i)))) (\lambda (H4: (sn3 c t)).(\lambda (H5: (land (sn3 c t1) (sns3 c 
41610 t2))).(and_ind (sn3 c t1) (sns3 c t2) (sn3 c (THead (Flat Appl) t (THeads 
41611 (Flat Appl) (TCons t1 t2) (TLRef i)))) (\lambda (H6: (sn3 c t1)).(\lambda 
41612 (H7: (sns3 c t2)).(sn3_appl_appls t1 (TLRef i) t2 c (H1 (conj (sn3 c t1) 
41613 (sns3 c t2) H6 H7)) t H4 (\lambda (u2: T).(\lambda (H8: (pr3 c (THeads (Flat 
41614 Appl) (TCons t1 t2) (TLRef i)) u2)).(\lambda (H9: (((iso (THeads (Flat Appl) 
41615 (TCons t1 t2) (TLRef i)) u2) \to (\forall (P: Prop).P)))).(H9 
41616 (nf2_iso_appls_lref c i H (TCons t1 t2) u2 H8) (sn3 c (THead (Flat Appl) t 
41617 u2))))))))) H5))) H3))))))) t0))) us)))).
41618
41619 theorem sn3_appls_cast:
41620  \forall (c: C).(\forall (vs: TList).(\forall (u: T).((sn3 c (THeads (Flat 
41621 Appl) vs u)) \to (\forall (t: T).((sn3 c (THeads (Flat Appl) vs t)) \to (sn3 
41622 c (THeads (Flat Appl) vs (THead (Flat Cast) u t))))))))
41623 \def
41624  \lambda (c: C).(\lambda (vs: TList).(TList_ind (\lambda (t: TList).(\forall 
41625 (u: T).((sn3 c (THeads (Flat Appl) t u)) \to (\forall (t0: T).((sn3 c (THeads 
41626 (Flat Appl) t t0)) \to (sn3 c (THeads (Flat Appl) t (THead (Flat Cast) u 
41627 t0)))))))) (\lambda (u: T).(\lambda (H: (sn3 c u)).(\lambda (t: T).(\lambda 
41628 (H0: (sn3 c t)).(sn3_cast c u H t H0))))) (\lambda (t: T).(\lambda (t0: 
41629 TList).(TList_ind (\lambda (t1: TList).(((\forall (u: T).((sn3 c (THeads 
41630 (Flat Appl) t1 u)) \to (\forall (t: T).((sn3 c (THeads (Flat Appl) t1 t)) \to 
41631 (sn3 c (THeads (Flat Appl) t1 (THead (Flat Cast) u t)))))))) \to (\forall (u: 
41632 T).((sn3 c (THead (Flat Appl) t (THeads (Flat Appl) t1 u))) \to (\forall (t2: 
41633 T).((sn3 c (THead (Flat Appl) t (THeads (Flat Appl) t1 t2))) \to (sn3 c 
41634 (THead (Flat Appl) t (THeads (Flat Appl) t1 (THead (Flat Cast) u t2)))))))))) 
41635 (\lambda (_: ((\forall (u: T).((sn3 c (THeads (Flat Appl) TNil u)) \to 
41636 (\forall (t: T).((sn3 c (THeads (Flat Appl) TNil t)) \to (sn3 c (THeads (Flat 
41637 Appl) TNil (THead (Flat Cast) u t))))))))).(\lambda (u: T).(\lambda (H0: (sn3 
41638 c (THead (Flat Appl) t (THeads (Flat Appl) TNil u)))).(\lambda (t1: 
41639 T).(\lambda (H1: (sn3 c (THead (Flat Appl) t (THeads (Flat Appl) TNil 
41640 t1)))).(sn3_appl_cast c t u H0 t1 H1)))))) (\lambda (t1: T).(\lambda (t2: 
41641 TList).(\lambda (_: ((((\forall (u: T).((sn3 c (THeads (Flat Appl) t2 u)) \to 
41642 (\forall (t: T).((sn3 c (THeads (Flat Appl) t2 t)) \to (sn3 c (THeads (Flat 
41643 Appl) t2 (THead (Flat Cast) u t)))))))) \to (\forall (u: T).((sn3 c (THead 
41644 (Flat Appl) t (THeads (Flat Appl) t2 u))) \to (\forall (t0: T).((sn3 c (THead 
41645 (Flat Appl) t (THeads (Flat Appl) t2 t0))) \to (sn3 c (THead (Flat Appl) t 
41646 (THeads (Flat Appl) t2 (THead (Flat Cast) u t0))))))))))).(\lambda (H0: 
41647 ((\forall (u: T).((sn3 c (THeads (Flat Appl) (TCons t1 t2) u)) \to (\forall 
41648 (t: T).((sn3 c (THeads (Flat Appl) (TCons t1 t2) t)) \to (sn3 c (THeads (Flat 
41649 Appl) (TCons t1 t2) (THead (Flat Cast) u t))))))))).(\lambda (u: T).(\lambda 
41650 (H1: (sn3 c (THead (Flat Appl) t (THeads (Flat Appl) (TCons t1 t2) 
41651 u)))).(\lambda (t3: T).(\lambda (H2: (sn3 c (THead (Flat Appl) t (THeads 
41652 (Flat Appl) (TCons t1 t2) t3)))).(let H3 \def (sn3_gen_flat Appl c t (THeads 
41653 (Flat Appl) (TCons t1 t2) t3) H2) in (and_ind (sn3 c t) (sn3 c (THead (Flat 
41654 Appl) t1 (THeads (Flat Appl) t2 t3))) (sn3 c (THead (Flat Appl) t (THeads 
41655 (Flat Appl) (TCons t1 t2) (THead (Flat Cast) u t3)))) (\lambda (_: (sn3 c 
41656 t)).(\lambda (H5: (sn3 c (THead (Flat Appl) t1 (THeads (Flat Appl) t2 
41657 t3)))).(let H6 \def H5 in (let H7 \def (sn3_gen_flat Appl c t (THeads (Flat 
41658 Appl) (TCons t1 t2) u) H1) in (and_ind (sn3 c t) (sn3 c (THead (Flat Appl) t1 
41659 (THeads (Flat Appl) t2 u))) (sn3 c (THead (Flat Appl) t (THeads (Flat Appl) 
41660 (TCons t1 t2) (THead (Flat Cast) u t3)))) (\lambda (H8: (sn3 c t)).(\lambda 
41661 (H9: (sn3 c (THead (Flat Appl) t1 (THeads (Flat Appl) t2 u)))).(let H10 \def 
41662 H9 in (sn3_appl_appls t1 (THead (Flat Cast) u t3) t2 c (H0 u H10 t3 H6) t H8 
41663 (\lambda (u2: T).(\lambda (H11: (pr3 c (THeads (Flat Appl) (TCons t1 t2) 
41664 (THead (Flat Cast) u t3)) u2)).(\lambda (H12: (((iso (THeads (Flat Appl) 
41665 (TCons t1 t2) (THead (Flat Cast) u t3)) u2) \to (\forall (P: 
41666 Prop).P)))).(sn3_pr3_trans c (THead (Flat Appl) t (THeads (Flat Appl) (TCons 
41667 t1 t2) t3)) H2 (THead (Flat Appl) t u2) (pr3_thin_dx c (THeads (Flat Appl) 
41668 (TCons t1 t2) t3) u2 (pr3_iso_appls_cast c u t3 (TCons t1 t2) u2 H11 H12) t 
41669 Appl))))))))) H7))))) H3)))))))))) t0))) vs)).
41670
41671 theorem sn3_lift:
41672  \forall (d: C).(\forall (t: T).((sn3 d t) \to (\forall (c: C).(\forall (h: 
41673 nat).(\forall (i: nat).((drop h i c d) \to (sn3 c (lift h i t))))))))
41674 \def
41675  \lambda (d: C).(\lambda (t: T).(\lambda (H: (sn3 d t)).(sn3_ind d (\lambda 
41676 (t0: T).(\forall (c: C).(\forall (h: nat).(\forall (i: nat).((drop h i c d) 
41677 \to (sn3 c (lift h i t0))))))) (\lambda (t1: T).(\lambda (_: ((\forall (t2: 
41678 T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 d t1 t2) \to (sn3 d 
41679 t2)))))).(\lambda (H1: ((\forall (t2: T).((((eq T t1 t2) \to (\forall (P: 
41680 Prop).P))) \to ((pr3 d t1 t2) \to (\forall (c: C).(\forall (h: nat).(\forall 
41681 (i: nat).((drop h i c d) \to (sn3 c (lift h i t2))))))))))).(\lambda (c: 
41682 C).(\lambda (h: nat).(\lambda (i: nat).(\lambda (H2: (drop h i c 
41683 d)).(sn3_pr2_intro c (lift h i t1) (\lambda (t2: T).(\lambda (H3: (((eq T 
41684 (lift h i t1) t2) \to (\forall (P: Prop).P)))).(\lambda (H4: (pr2 c (lift h i 
41685 t1) t2)).(let H5 \def (pr2_gen_lift c t1 t2 h i H4 d H2) in (ex2_ind T 
41686 (\lambda (t3: T).(eq T t2 (lift h i t3))) (\lambda (t3: T).(pr2 d t1 t3)) 
41687 (sn3 c t2) (\lambda (x: T).(\lambda (H6: (eq T t2 (lift h i x))).(\lambda 
41688 (H7: (pr2 d t1 x)).(let H8 \def (eq_ind T t2 (\lambda (t: T).((eq T (lift h i 
41689 t1) t) \to (\forall (P: Prop).P))) H3 (lift h i x) H6) in (eq_ind_r T (lift h 
41690 i x) (\lambda (t0: T).(sn3 c t0)) (H1 x (\lambda (H9: (eq T t1 x)).(\lambda 
41691 (P: Prop).(let H10 \def (eq_ind_r T x (\lambda (t: T).((eq T (lift h i t1) 
41692 (lift h i t)) \to (\forall (P: Prop).P))) H8 t1 H9) in (let H11 \def 
41693 (eq_ind_r T x (\lambda (t: T).(pr2 d t1 t)) H7 t1 H9) in (H10 (refl_equal T 
41694 (lift h i t1)) P))))) (pr3_pr2 d t1 x H7) c h i H2) t2 H6))))) 
41695 H5))))))))))))) t H))).
41696
41697 theorem sn3_abbr:
41698  \forall (c: C).(\forall (d: C).(\forall (v: T).(\forall (i: nat).((getl i c 
41699 (CHead d (Bind Abbr) v)) \to ((sn3 d v) \to (sn3 c (TLRef i)))))))
41700 \def
41701  \lambda (c: C).(\lambda (d: C).(\lambda (v: T).(\lambda (i: nat).(\lambda 
41702 (H: (getl i c (CHead d (Bind Abbr) v))).(\lambda (H0: (sn3 d 
41703 v)).(sn3_pr2_intro c (TLRef i) (\lambda (t2: T).(\lambda (H1: (((eq T (TLRef 
41704 i) t2) \to (\forall (P: Prop).P)))).(\lambda (H2: (pr2 c (TLRef i) t2)).(let 
41705 H3 \def (pr2_gen_lref c t2 i H2) in (or_ind (eq T t2 (TLRef i)) (ex2_2 C T 
41706 (\lambda (d0: C).(\lambda (u: T).(getl i c (CHead d0 (Bind Abbr) u)))) 
41707 (\lambda (_: C).(\lambda (u: T).(eq T t2 (lift (S i) O u))))) (sn3 c t2) 
41708 (\lambda (H4: (eq T t2 (TLRef i))).(let H5 \def (eq_ind T t2 (\lambda (t: 
41709 T).((eq T (TLRef i) t) \to (\forall (P: Prop).P))) H1 (TLRef i) H4) in 
41710 (eq_ind_r T (TLRef i) (\lambda (t: T).(sn3 c t)) (H5 (refl_equal T (TLRef i)) 
41711 (sn3 c (TLRef i))) t2 H4))) (\lambda (H4: (ex2_2 C T (\lambda (d: C).(\lambda 
41712 (u: T).(getl i c (CHead d (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: 
41713 T).(eq T t2 (lift (S i) O u)))))).(ex2_2_ind C T (\lambda (d0: C).(\lambda 
41714 (u: T).(getl i c (CHead d0 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: 
41715 T).(eq T t2 (lift (S i) O u)))) (sn3 c t2) (\lambda (x0: C).(\lambda (x1: 
41716 T).(\lambda (H5: (getl i c (CHead x0 (Bind Abbr) x1))).(\lambda (H6: (eq T t2 
41717 (lift (S i) O x1))).(let H7 \def (eq_ind T t2 (\lambda (t: T).((eq T (TLRef 
41718 i) t) \to (\forall (P: Prop).P))) H1 (lift (S i) O x1) H6) in (eq_ind_r T 
41719 (lift (S i) O x1) (\lambda (t: T).(sn3 c t)) (let H8 \def (eq_ind C (CHead d 
41720 (Bind Abbr) v) (\lambda (c0: C).(getl i c c0)) H (CHead x0 (Bind Abbr) x1) 
41721 (getl_mono c (CHead d (Bind Abbr) v) i H (CHead x0 (Bind Abbr) x1) H5)) in 
41722 (let H9 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) 
41723 with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind 
41724 Abbr) v) (CHead x0 (Bind Abbr) x1) (getl_mono c (CHead d (Bind Abbr) v) i H 
41725 (CHead x0 (Bind Abbr) x1) H5)) in ((let H10 \def (f_equal C T (\lambda (e: 
41726 C).(match e return (\lambda (_: C).T) with [(CSort _) \Rightarrow v | (CHead 
41727 _ _ t) \Rightarrow t])) (CHead d (Bind Abbr) v) (CHead x0 (Bind Abbr) x1) 
41728 (getl_mono c (CHead d (Bind Abbr) v) i H (CHead x0 (Bind Abbr) x1) H5)) in 
41729 (\lambda (H11: (eq C d x0)).(let H12 \def (eq_ind_r T x1 (\lambda (t: 
41730 T).(getl i c (CHead x0 (Bind Abbr) t))) H8 v H10) in (eq_ind T v (\lambda (t: 
41731 T).(sn3 c (lift (S i) O t))) (let H13 \def (eq_ind_r C x0 (\lambda (c0: 
41732 C).(getl i c (CHead c0 (Bind Abbr) v))) H12 d H11) in (sn3_lift d v H0 c (S 
41733 i) O (getl_drop Abbr c d v i H13))) x1 H10)))) H9))) t2 H6)))))) H4)) 
41734 H3))))))))))).
41735
41736 theorem sns3_lifts:
41737  \forall (c: C).(\forall (d: C).(\forall (h: nat).(\forall (i: nat).((drop h 
41738 i c d) \to (\forall (ts: TList).((sns3 d ts) \to (sns3 c (lifts h i ts))))))))
41739 \def
41740  \lambda (c: C).(\lambda (d: C).(\lambda (h: nat).(\lambda (i: nat).(\lambda 
41741 (H: (drop h i c d)).(\lambda (ts: TList).(TList_ind (\lambda (t: 
41742 TList).((sns3 d t) \to (sns3 c (lifts h i t)))) (\lambda (H0: True).H0) 
41743 (\lambda (t: T).(\lambda (t0: TList).(\lambda (H0: (((sns3 d t0) \to (sns3 c 
41744 (lifts h i t0))))).(\lambda (H1: (land (sn3 d t) (sns3 d t0))).(let H2 \def 
41745 H1 in (and_ind (sn3 d t) (sns3 d t0) (land (sn3 c (lift h i t)) (sns3 c 
41746 (lifts h i t0))) (\lambda (H3: (sn3 d t)).(\lambda (H4: (sns3 d t0)).(conj 
41747 (sn3 c (lift h i t)) (sns3 c (lifts h i t0)) (sn3_lift d t H3 c h i H) (H0 
41748 H4)))) H2)))))) ts)))))).
41749
41750 theorem sns3_lifts1:
41751  \forall (e: C).(\forall (hds: PList).(\forall (c: C).((drop1 hds c e) \to 
41752 (\forall (ts: TList).((sns3 e ts) \to (sns3 c (lifts1 hds ts)))))))
41753 \def
41754  \lambda (e: C).(\lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall 
41755 (c: C).((drop1 p c e) \to (\forall (ts: TList).((sns3 e ts) \to (sns3 c 
41756 (lifts1 p ts))))))) (\lambda (c: C).(\lambda (H: (drop1 PNil c e)).(\lambda 
41757 (ts: TList).(\lambda (H0: (sns3 e ts)).(let H1 \def (match H return (\lambda 
41758 (p: PList).(\lambda (c0: C).(\lambda (c1: C).(\lambda (_: (drop1 p c0 
41759 c1)).((eq PList p PNil) \to ((eq C c0 c) \to ((eq C c1 e) \to (sns3 c (lifts1 
41760 PNil ts))))))))) with [(drop1_nil c0) \Rightarrow (\lambda (_: (eq PList PNil 
41761 PNil)).(\lambda (H2: (eq C c0 c)).(\lambda (H3: (eq C c0 e)).(eq_ind C c 
41762 (\lambda (c1: C).((eq C c1 e) \to (sns3 c (lifts1 PNil ts)))) (\lambda (H4: 
41763 (eq C c e)).(eq_ind C e (\lambda (c: C).(sns3 c (lifts1 PNil ts))) (eq_ind_r 
41764 TList ts (\lambda (t: TList).(sns3 e t)) H0 (lifts1 PNil ts) (lifts1_nil ts)) 
41765 c (sym_eq C c e H4))) c0 (sym_eq C c0 c H2) H3)))) | (drop1_cons c1 c2 h d H1 
41766 c3 hds H2) \Rightarrow (\lambda (H3: (eq PList (PCons h d hds) 
41767 PNil)).(\lambda (H4: (eq C c1 c)).(\lambda (H5: (eq C c3 e)).((let H6 \def 
41768 (eq_ind PList (PCons h d hds) (\lambda (e0: PList).(match e0 return (\lambda 
41769 (_: PList).Prop) with [PNil \Rightarrow False | (PCons _ _ _) \Rightarrow 
41770 True])) I PNil H3) in (False_ind ((eq C c1 c) \to ((eq C c3 e) \to ((drop h d 
41771 c1 c2) \to ((drop1 hds c2 c3) \to (sns3 c (lifts1 PNil ts)))))) H6)) H4 H5 H1 
41772 H2))))]) in (H1 (refl_equal PList PNil) (refl_equal C c) (refl_equal C 
41773 e))))))) (\lambda (n: nat).(\lambda (n0: nat).(\lambda (p: PList).(\lambda 
41774 (H: ((\forall (c: C).((drop1 p c e) \to (\forall (ts: TList).((sns3 e ts) \to 
41775 (sns3 c (lifts1 p ts)))))))).(\lambda (c: C).(\lambda (H0: (drop1 (PCons n n0 
41776 p) c e)).(\lambda (ts: TList).(\lambda (H1: (sns3 e ts)).(let H2 \def (match 
41777 H0 return (\lambda (p0: PList).(\lambda (c0: C).(\lambda (c1: C).(\lambda (_: 
41778 (drop1 p0 c0 c1)).((eq PList p0 (PCons n n0 p)) \to ((eq C c0 c) \to ((eq C 
41779 c1 e) \to (sns3 c (lifts1 (PCons n n0 p) ts))))))))) with [(drop1_nil c0) 
41780 \Rightarrow (\lambda (H2: (eq PList PNil (PCons n n0 p))).(\lambda (H3: (eq C 
41781 c0 c)).(\lambda (H4: (eq C c0 e)).((let H5 \def (eq_ind PList PNil (\lambda 
41782 (e0: PList).(match e0 return (\lambda (_: PList).Prop) with [PNil \Rightarrow 
41783 True | (PCons _ _ _) \Rightarrow False])) I (PCons n n0 p) H2) in (False_ind 
41784 ((eq C c0 c) \to ((eq C c0 e) \to (sns3 c (lifts1 (PCons n n0 p) ts)))) H5)) 
41785 H3 H4)))) | (drop1_cons c1 c2 h d H2 c3 hds H3) \Rightarrow (\lambda (H4: (eq 
41786 PList (PCons h d hds) (PCons n n0 p))).(\lambda (H5: (eq C c1 c)).(\lambda 
41787 (H6: (eq C c3 e)).((let H7 \def (f_equal PList PList (\lambda (e0: 
41788 PList).(match e0 return (\lambda (_: PList).PList) with [PNil \Rightarrow hds 
41789 | (PCons _ _ p) \Rightarrow p])) (PCons h d hds) (PCons n n0 p) H4) in ((let 
41790 H8 \def (f_equal PList nat (\lambda (e0: PList).(match e0 return (\lambda (_: 
41791 PList).nat) with [PNil \Rightarrow d | (PCons _ n _) \Rightarrow n])) (PCons 
41792 h d hds) (PCons n n0 p) H4) in ((let H9 \def (f_equal PList nat (\lambda (e0: 
41793 PList).(match e0 return (\lambda (_: PList).nat) with [PNil \Rightarrow h | 
41794 (PCons n _ _) \Rightarrow n])) (PCons h d hds) (PCons n n0 p) H4) in (eq_ind 
41795 nat n (\lambda (n1: nat).((eq nat d n0) \to ((eq PList hds p) \to ((eq C c1 
41796 c) \to ((eq C c3 e) \to ((drop n1 d c1 c2) \to ((drop1 hds c2 c3) \to (sns3 c 
41797 (lifts1 (PCons n n0 p) ts))))))))) (\lambda (H10: (eq nat d n0)).(eq_ind nat 
41798 n0 (\lambda (n1: nat).((eq PList hds p) \to ((eq C c1 c) \to ((eq C c3 e) \to 
41799 ((drop n n1 c1 c2) \to ((drop1 hds c2 c3) \to (sns3 c (lifts1 (PCons n n0 p) 
41800 ts)))))))) (\lambda (H11: (eq PList hds p)).(eq_ind PList p (\lambda (p0: 
41801 PList).((eq C c1 c) \to ((eq C c3 e) \to ((drop n n0 c1 c2) \to ((drop1 p0 c2 
41802 c3) \to (sns3 c (lifts1 (PCons n n0 p) ts))))))) (\lambda (H12: (eq C c1 
41803 c)).(eq_ind C c (\lambda (c0: C).((eq C c3 e) \to ((drop n n0 c0 c2) \to 
41804 ((drop1 p c2 c3) \to (sns3 c (lifts1 (PCons n n0 p) ts)))))) (\lambda (H13: 
41805 (eq C c3 e)).(eq_ind C e (\lambda (c0: C).((drop n n0 c c2) \to ((drop1 p c2 
41806 c0) \to (sns3 c (lifts1 (PCons n n0 p) ts))))) (\lambda (H14: (drop n n0 c 
41807 c2)).(\lambda (H15: (drop1 p c2 e)).(eq_ind_r TList (lifts n n0 (lifts1 p 
41808 ts)) (\lambda (t: TList).(sns3 c t)) (sns3_lifts c c2 n n0 H14 (lifts1 p ts) 
41809 (H c2 H15 ts H1)) (lifts1 (PCons n n0 p) ts) (lifts1_cons n n0 p ts)))) c3 
41810 (sym_eq C c3 e H13))) c1 (sym_eq C c1 c H12))) hds (sym_eq PList hds p H11))) 
41811 d (sym_eq nat d n0 H10))) h (sym_eq nat h n H9))) H8)) H7)) H5 H6 H2 H3))))]) 
41812 in (H2 (refl_equal PList (PCons n n0 p)) (refl_equal C c) (refl_equal C 
41813 e))))))))))) hds)).
41814
41815 theorem sn3_gen_lift:
41816  \forall (c1: C).(\forall (t: T).(\forall (h: nat).(\forall (d: nat).((sn3 c1 
41817 (lift h d t)) \to (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2 t)))))))
41818 \def
41819  \lambda (c1: C).(\lambda (t: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
41820 (H: (sn3 c1 (lift h d t))).(insert_eq T (lift h d t) (\lambda (t0: T).(sn3 c1 
41821 t0)) (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2 t))) (\lambda (y: 
41822 T).(\lambda (H0: (sn3 c1 y)).(unintro T t (\lambda (t0: T).((eq T y (lift h d 
41823 t0)) \to (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2 t0))))) (sn3_ind c1 
41824 (\lambda (t0: T).(\forall (x: T).((eq T t0 (lift h d x)) \to (\forall (c2: 
41825 C).((drop h d c1 c2) \to (sn3 c2 x)))))) (\lambda (t1: T).(\lambda (H1: 
41826 ((\forall (t2: T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 c1 t1 
41827 t2) \to (sn3 c1 t2)))))).(\lambda (H2: ((\forall (t2: T).((((eq T t1 t2) \to 
41828 (\forall (P: Prop).P))) \to ((pr3 c1 t1 t2) \to (\forall (x: T).((eq T t2 
41829 (lift h d x)) \to (\forall (c2: C).((drop h d c1 c2) \to (sn3 c2 
41830 x)))))))))).(\lambda (x: T).(\lambda (H3: (eq T t1 (lift h d x))).(\lambda 
41831 (c2: C).(\lambda (H4: (drop h d c1 c2)).(let H5 \def (eq_ind T t1 (\lambda 
41832 (t: T).(\forall (t2: T).((((eq T t t2) \to (\forall (P: Prop).P))) \to ((pr3 
41833 c1 t t2) \to (\forall (x: T).((eq T t2 (lift h d x)) \to (\forall (c2: 
41834 C).((drop h d c1 c2) \to (sn3 c2 x))))))))) H2 (lift h d x) H3) in (let H6 
41835 \def (eq_ind T t1 (\lambda (t: T).(\forall (t2: T).((((eq T t t2) \to 
41836 (\forall (P: Prop).P))) \to ((pr3 c1 t t2) \to (sn3 c1 t2))))) H1 (lift h d 
41837 x) H3) in (sn3_sing c2 x (\lambda (t2: T).(\lambda (H7: (((eq T x t2) \to 
41838 (\forall (P: Prop).P)))).(\lambda (H8: (pr3 c2 x t2)).(H5 (lift h d t2) 
41839 (\lambda (H9: (eq T (lift h d x) (lift h d t2))).(\lambda (P: Prop).(let H10 
41840 \def (eq_ind_r T t2 (\lambda (t: T).(pr3 c2 x t)) H8 x (lift_inj x t2 h d 
41841 H9)) in (let H11 \def (eq_ind_r T t2 (\lambda (t: T).((eq T x t) \to (\forall 
41842 (P: Prop).P))) H7 x (lift_inj x t2 h d H9)) in (H11 (refl_equal T x) P))))) 
41843 (pr3_lift c1 c2 h d H4 x t2 H8) t2 (refl_equal T (lift h d t2)) c2 
41844 H4)))))))))))))) y H0)))) H))))).
41845
41846 definition sc3:
41847  G \to (A \to (C \to (T \to Prop)))
41848 \def
41849  let rec sc3 (g: G) (a: A) on a: (C \to (T \to Prop)) \def (\lambda (c: 
41850 C).(\lambda (t: T).(match a with [(ASort h n) \Rightarrow (land (arity g c t 
41851 (ASort h n)) (sn3 c t)) | (AHead a1 a2) \Rightarrow (land (arity g c t (AHead 
41852 a1 a2)) (\forall (d: C).(\forall (w: T).((sc3 g a1 d w) \to (\forall (is: 
41853 PList).((drop1 is d c) \to (sc3 g a2 d (THead (Flat Appl) w (lift1 is 
41854 t)))))))))]))) in sc3.
41855
41856 theorem sc3_arity_gen:
41857  \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (a: A).((sc3 g a c 
41858 t) \to (arity g c t a)))))
41859 \def
41860  \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (a: A).(A_ind 
41861 (\lambda (a0: A).((sc3 g a0 c t) \to (arity g c t a0))) (\lambda (n: 
41862 nat).(\lambda (n0: nat).(\lambda (H: (land (arity g c t (ASort n n0)) (sn3 c 
41863 t))).(let H0 \def H in (and_ind (arity g c t (ASort n n0)) (sn3 c t) (arity g 
41864 c t (ASort n n0)) (\lambda (H1: (arity g c t (ASort n n0))).(\lambda (_: (sn3 
41865 c t)).H1)) H0))))) (\lambda (a0: A).(\lambda (_: (((sc3 g a0 c t) \to (arity 
41866 g c t a0)))).(\lambda (a1: A).(\lambda (_: (((sc3 g a1 c t) \to (arity g c t 
41867 a1)))).(\lambda (H1: (land (arity g c t (AHead a0 a1)) (\forall (d: 
41868 C).(\forall (w: T).((sc3 g a0 d w) \to (\forall (is: PList).((drop1 is d c) 
41869 \to (sc3 g a1 d (THead (Flat Appl) w (lift1 is t)))))))))).(let H2 \def H1 in 
41870 (and_ind (arity g c t (AHead a0 a1)) (\forall (d: C).(\forall (w: T).((sc3 g 
41871 a0 d w) \to (\forall (is: PList).((drop1 is d c) \to (sc3 g a1 d (THead (Flat 
41872 Appl) w (lift1 is t)))))))) (arity g c t (AHead a0 a1)) (\lambda (H3: (arity 
41873 g c t (AHead a0 a1))).(\lambda (_: ((\forall (d: C).(\forall (w: T).((sc3 g 
41874 a0 d w) \to (\forall (is: PList).((drop1 is d c) \to (sc3 g a1 d (THead (Flat 
41875 Appl) w (lift1 is t)))))))))).H3)) H2))))))) a)))).
41876
41877 theorem sc3_repl:
41878  \forall (g: G).(\forall (a1: A).(\forall (c: C).(\forall (t: T).((sc3 g a1 c 
41879 t) \to (\forall (a2: A).((leq g a1 a2) \to (sc3 g a2 c t)))))))
41880 \def
41881  \lambda (g: G).(\lambda (a1: A).(llt_wf_ind (\lambda (a: A).(\forall (c: 
41882 C).(\forall (t: T).((sc3 g a c t) \to (\forall (a2: A).((leq g a a2) \to (sc3 
41883 g a2 c t))))))) (\lambda (a2: A).(A_ind (\lambda (a: A).(((\forall (a1: 
41884 A).((llt a1 a) \to (\forall (c: C).(\forall (t: T).((sc3 g a1 c t) \to 
41885 (\forall (a2: A).((leq g a1 a2) \to (sc3 g a2 c t))))))))) \to (\forall (c: 
41886 C).(\forall (t: T).((sc3 g a c t) \to (\forall (a3: A).((leq g a a3) \to (sc3 
41887 g a3 c t)))))))) (\lambda (n: nat).(\lambda (n0: nat).(\lambda (_: ((\forall 
41888 (a1: A).((llt a1 (ASort n n0)) \to (\forall (c: C).(\forall (t: T).((sc3 g a1 
41889 c t) \to (\forall (a2: A).((leq g a1 a2) \to (sc3 g a2 c t)))))))))).(\lambda 
41890 (c: C).(\lambda (t: T).(\lambda (H0: (land (arity g c t (ASort n n0)) (sn3 c 
41891 t))).(\lambda (a3: A).(\lambda (H1: (leq g (ASort n n0) a3)).(let H2 \def H0 
41892 in (and_ind (arity g c t (ASort n n0)) (sn3 c t) (sc3 g a3 c t) (\lambda (H3: 
41893 (arity g c t (ASort n n0))).(\lambda (H4: (sn3 c t)).(let H_y \def 
41894 (arity_repl g c t (ASort n n0) H3 a3 H1) in (let H_x \def (leq_gen_sort g n 
41895 n0 a3 H1) in (let H5 \def H_x in (ex2_3_ind nat nat nat (\lambda (n2: 
41896 nat).(\lambda (h2: nat).(\lambda (_: nat).(eq A a3 (ASort h2 n2))))) (\lambda 
41897 (n2: nat).(\lambda (h2: nat).(\lambda (k: nat).(eq A (aplus g (ASort n n0) k) 
41898 (aplus g (ASort h2 n2) k))))) (sc3 g a3 c t) (\lambda (x0: nat).(\lambda (x1: 
41899 nat).(\lambda (x2: nat).(\lambda (H6: (eq A a3 (ASort x1 x0))).(\lambda (_: 
41900 (eq A (aplus g (ASort n n0) x2) (aplus g (ASort x1 x0) x2))).(let H8 \def 
41901 (eq_ind A a3 (\lambda (a: A).(arity g c t a)) H_y (ASort x1 x0) H6) in 
41902 (eq_ind_r A (ASort x1 x0) (\lambda (a: A).(sc3 g a c t)) (conj (arity g c t 
41903 (ASort x1 x0)) (sn3 c t) H8 H4) a3 H6))))))) H5)))))) H2)))))))))) (\lambda 
41904 (a: A).(\lambda (_: ((((\forall (a1: A).((llt a1 a) \to (\forall (c: 
41905 C).(\forall (t: T).((sc3 g a1 c t) \to (\forall (a2: A).((leq g a1 a2) \to 
41906 (sc3 g a2 c t))))))))) \to (\forall (c: C).(\forall (t: T).((sc3 g a c t) \to 
41907 (\forall (a2: A).((leq g a a2) \to (sc3 g a2 c t))))))))).(\lambda (a0: 
41908 A).(\lambda (H0: ((((\forall (a1: A).((llt a1 a0) \to (\forall (c: 
41909 C).(\forall (t: T).((sc3 g a1 c t) \to (\forall (a2: A).((leq g a1 a2) \to 
41910 (sc3 g a2 c t))))))))) \to (\forall (c: C).(\forall (t: T).((sc3 g a0 c t) 
41911 \to (\forall (a2: A).((leq g a0 a2) \to (sc3 g a2 c t))))))))).(\lambda (H1: 
41912 ((\forall (a1: A).((llt a1 (AHead a a0)) \to (\forall (c: C).(\forall (t: 
41913 T).((sc3 g a1 c t) \to (\forall (a2: A).((leq g a1 a2) \to (sc3 g a2 c 
41914 t)))))))))).(\lambda (c: C).(\lambda (t: T).(\lambda (H2: (land (arity g c t 
41915 (AHead a a0)) (\forall (d: C).(\forall (w: T).((sc3 g a d w) \to (\forall 
41916 (is: PList).((drop1 is d c) \to (sc3 g a0 d (THead (Flat Appl) w (lift1 is 
41917 t)))))))))).(\lambda (a3: A).(\lambda (H3: (leq g (AHead a a0) a3)).(let H4 
41918 \def H2 in (and_ind (arity g c t (AHead a a0)) (\forall (d: C).(\forall (w: 
41919 T).((sc3 g a d w) \to (\forall (is: PList).((drop1 is d c) \to (sc3 g a0 d 
41920 (THead (Flat Appl) w (lift1 is t)))))))) (sc3 g a3 c t) (\lambda (H5: (arity 
41921 g c t (AHead a a0))).(\lambda (H6: ((\forall (d: C).(\forall (w: T).((sc3 g a 
41922 d w) \to (\forall (is: PList).((drop1 is d c) \to (sc3 g a0 d (THead (Flat 
41923 Appl) w (lift1 is t)))))))))).(let H_x \def (leq_gen_head g a a0 a3 H3) in 
41924 (let H7 \def H_x in (ex3_2_ind A A (\lambda (a4: A).(\lambda (a5: A).(eq A a3 
41925 (AHead a4 a5)))) (\lambda (a4: A).(\lambda (_: A).(leq g a a4))) (\lambda (_: 
41926 A).(\lambda (a5: A).(leq g a0 a5))) (sc3 g a3 c t) (\lambda (x0: A).(\lambda 
41927 (x1: A).(\lambda (H8: (eq A a3 (AHead x0 x1))).(\lambda (H9: (leq g a 
41928 x0)).(\lambda (H10: (leq g a0 x1)).(eq_ind_r A (AHead x0 x1) (\lambda (a4: 
41929 A).(sc3 g a4 c t)) (conj (arity g c t (AHead x0 x1)) (\forall (d: C).(\forall 
41930 (w: T).((sc3 g x0 d w) \to (\forall (is: PList).((drop1 is d c) \to (sc3 g x1 
41931 d (THead (Flat Appl) w (lift1 is t)))))))) (arity_repl g c t (AHead a a0) H5 
41932 (AHead x0 x1) (leq_head g a x0 H9 a0 x1 H10)) (\lambda (d: C).(\lambda (w: 
41933 T).(\lambda (H11: (sc3 g x0 d w)).(\lambda (is: PList).(\lambda (H12: (drop1 
41934 is d c)).(H0 (\lambda (a4: A).(\lambda (H13: (llt a4 a0)).(\lambda (c0: 
41935 C).(\lambda (t0: T).(\lambda (H14: (sc3 g a4 c0 t0)).(\lambda (a5: 
41936 A).(\lambda (H15: (leq g a4 a5)).(H1 a4 (llt_trans a4 a0 (AHead a a0) H13 
41937 (llt_head_dx a a0)) c0 t0 H14 a5 H15)))))))) d (THead (Flat Appl) w (lift1 is 
41938 t)) (H6 d w (H1 x0 (llt_repl g a x0 H9 (AHead a a0) (llt_head_sx a a0)) d w 
41939 H11 a (leq_sym g a x0 H9)) is H12) x1 H10))))))) a3 H8)))))) H7))))) 
41940 H4)))))))))))) a2)) a1)).
41941
41942 theorem sc3_lift:
41943  \forall (g: G).(\forall (a: A).(\forall (e: C).(\forall (t: T).((sc3 g a e 
41944 t) \to (\forall (c: C).(\forall (h: nat).(\forall (d: nat).((drop h d c e) 
41945 \to (sc3 g a c (lift h d t))))))))))
41946 \def
41947  \lambda (g: G).(\lambda (a: A).(A_ind (\lambda (a0: A).(\forall (e: 
41948 C).(\forall (t: T).((sc3 g a0 e t) \to (\forall (c: C).(\forall (h: 
41949 nat).(\forall (d: nat).((drop h d c e) \to (sc3 g a0 c (lift h d t)))))))))) 
41950 (\lambda (n: nat).(\lambda (n0: nat).(\lambda (e: C).(\lambda (t: T).(\lambda 
41951 (H: (land (arity g e t (ASort n n0)) (sn3 e t))).(\lambda (c: C).(\lambda (h: 
41952 nat).(\lambda (d: nat).(\lambda (H0: (drop h d c e)).(let H1 \def H in 
41953 (and_ind (arity g e t (ASort n n0)) (sn3 e t) (land (arity g c (lift h d t) 
41954 (ASort n n0)) (sn3 c (lift h d t))) (\lambda (H2: (arity g e t (ASort n 
41955 n0))).(\lambda (H3: (sn3 e t)).(conj (arity g c (lift h d t) (ASort n n0)) 
41956 (sn3 c (lift h d t)) (arity_lift g e t (ASort n n0) H2 c h d H0) (sn3_lift e 
41957 t H3 c h d H0)))) H1))))))))))) (\lambda (a0: A).(\lambda (_: ((\forall (e: 
41958 C).(\forall (t: T).((sc3 g a0 e t) \to (\forall (c: C).(\forall (h: 
41959 nat).(\forall (d: nat).((drop h d c e) \to (sc3 g a0 c (lift h d 
41960 t))))))))))).(\lambda (a1: A).(\lambda (_: ((\forall (e: C).(\forall (t: 
41961 T).((sc3 g a1 e t) \to (\forall (c: C).(\forall (h: nat).(\forall (d: 
41962 nat).((drop h d c e) \to (sc3 g a1 c (lift h d t))))))))))).(\lambda (e: 
41963 C).(\lambda (t: T).(\lambda (H1: (land (arity g e t (AHead a0 a1)) (\forall 
41964 (d: C).(\forall (w: T).((sc3 g a0 d w) \to (\forall (is: PList).((drop1 is d 
41965 e) \to (sc3 g a1 d (THead (Flat Appl) w (lift1 is t)))))))))).(\lambda (c: 
41966 C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H2: (drop h d c e)).(let H3 
41967 \def H1 in (and_ind (arity g e t (AHead a0 a1)) (\forall (d0: C).(\forall (w: 
41968 T).((sc3 g a0 d0 w) \to (\forall (is: PList).((drop1 is d0 e) \to (sc3 g a1 
41969 d0 (THead (Flat Appl) w (lift1 is t)))))))) (land (arity g c (lift h d t) 
41970 (AHead a0 a1)) (\forall (d0: C).(\forall (w: T).((sc3 g a0 d0 w) \to (\forall 
41971 (is: PList).((drop1 is d0 c) \to (sc3 g a1 d0 (THead (Flat Appl) w (lift1 is 
41972 (lift h d t)))))))))) (\lambda (H4: (arity g e t (AHead a0 a1))).(\lambda 
41973 (H5: ((\forall (d: C).(\forall (w: T).((sc3 g a0 d w) \to (\forall (is: 
41974 PList).((drop1 is d e) \to (sc3 g a1 d (THead (Flat Appl) w (lift1 is 
41975 t)))))))))).(conj (arity g c (lift h d t) (AHead a0 a1)) (\forall (d0: 
41976 C).(\forall (w: T).((sc3 g a0 d0 w) \to (\forall (is: PList).((drop1 is d0 c) 
41977 \to (sc3 g a1 d0 (THead (Flat Appl) w (lift1 is (lift h d t))))))))) 
41978 (arity_lift g e t (AHead a0 a1) H4 c h d H2) (\lambda (d0: C).(\lambda (w: 
41979 T).(\lambda (H6: (sc3 g a0 d0 w)).(\lambda (is: PList).(\lambda (H7: (drop1 
41980 is d0 c)).(let H_y \def (H5 d0 w H6 (PConsTail is h d)) in (eq_ind T (lift1 
41981 (PConsTail is h d) t) (\lambda (t0: T).(sc3 g a1 d0 (THead (Flat Appl) w 
41982 t0))) (H_y (drop1_cons_tail c e h d H2 is d0 H7)) (lift1 is (lift h d t)) 
41983 (lift1_cons_tail t h d is))))))))))) H3))))))))))))) a)).
41984
41985 theorem sc3_lift1:
41986  \forall (g: G).(\forall (e: C).(\forall (a: A).(\forall (hds: 
41987 PList).(\forall (c: C).(\forall (t: T).((sc3 g a e t) \to ((drop1 hds c e) 
41988 \to (sc3 g a c (lift1 hds t)))))))))
41989 \def
41990  \lambda (g: G).(\lambda (e: C).(\lambda (a: A).(\lambda (hds: 
41991 PList).(PList_ind (\lambda (p: PList).(\forall (c: C).(\forall (t: T).((sc3 g 
41992 a e t) \to ((drop1 p c e) \to (sc3 g a c (lift1 p t))))))) (\lambda (c: 
41993 C).(\lambda (t: T).(\lambda (H: (sc3 g a e t)).(\lambda (H0: (drop1 PNil c 
41994 e)).(let H1 \def (match H0 return (\lambda (p: PList).(\lambda (c0: 
41995 C).(\lambda (c1: C).(\lambda (_: (drop1 p c0 c1)).((eq PList p PNil) \to ((eq 
41996 C c0 c) \to ((eq C c1 e) \to (sc3 g a c t)))))))) with [(drop1_nil c0) 
41997 \Rightarrow (\lambda (_: (eq PList PNil PNil)).(\lambda (H2: (eq C c0 
41998 c)).(\lambda (H3: (eq C c0 e)).(eq_ind C c (\lambda (c1: C).((eq C c1 e) \to 
41999 (sc3 g a c t))) (\lambda (H4: (eq C c e)).(eq_ind C e (\lambda (c: C).(sc3 g 
42000 a c t)) H c (sym_eq C c e H4))) c0 (sym_eq C c0 c H2) H3)))) | (drop1_cons c1 
42001 c2 h d H1 c3 hds H2) \Rightarrow (\lambda (H3: (eq PList (PCons h d hds) 
42002 PNil)).(\lambda (H4: (eq C c1 c)).(\lambda (H5: (eq C c3 e)).((let H6 \def 
42003 (eq_ind PList (PCons h d hds) (\lambda (e0: PList).(match e0 return (\lambda 
42004 (_: PList).Prop) with [PNil \Rightarrow False | (PCons _ _ _) \Rightarrow 
42005 True])) I PNil H3) in (False_ind ((eq C c1 c) \to ((eq C c3 e) \to ((drop h d 
42006 c1 c2) \to ((drop1 hds c2 c3) \to (sc3 g a c t))))) H6)) H4 H5 H1 H2))))]) in 
42007 (H1 (refl_equal PList PNil) (refl_equal C c) (refl_equal C e))))))) (\lambda 
42008 (n: nat).(\lambda (n0: nat).(\lambda (p: PList).(\lambda (H: ((\forall (c: 
42009 C).(\forall (t: T).((sc3 g a e t) \to ((drop1 p c e) \to (sc3 g a c (lift1 p 
42010 t)))))))).(\lambda (c: C).(\lambda (t: T).(\lambda (H0: (sc3 g a e 
42011 t)).(\lambda (H1: (drop1 (PCons n n0 p) c e)).(let H2 \def (match H1 return 
42012 (\lambda (p0: PList).(\lambda (c0: C).(\lambda (c1: C).(\lambda (_: (drop1 p0 
42013 c0 c1)).((eq PList p0 (PCons n n0 p)) \to ((eq C c0 c) \to ((eq C c1 e) \to 
42014 (sc3 g a c (lift n n0 (lift1 p t)))))))))) with [(drop1_nil c0) \Rightarrow 
42015 (\lambda (H2: (eq PList PNil (PCons n n0 p))).(\lambda (H3: (eq C c0 
42016 c)).(\lambda (H4: (eq C c0 e)).((let H5 \def (eq_ind PList PNil (\lambda (e0: 
42017 PList).(match e0 return (\lambda (_: PList).Prop) with [PNil \Rightarrow True 
42018 | (PCons _ _ _) \Rightarrow False])) I (PCons n n0 p) H2) in (False_ind ((eq 
42019 C c0 c) \to ((eq C c0 e) \to (sc3 g a c (lift n n0 (lift1 p t))))) H5)) H3 
42020 H4)))) | (drop1_cons c1 c2 h d H2 c3 hds H3) \Rightarrow (\lambda (H4: (eq 
42021 PList (PCons h d hds) (PCons n n0 p))).(\lambda (H5: (eq C c1 c)).(\lambda 
42022 (H6: (eq C c3 e)).((let H7 \def (f_equal PList PList (\lambda (e0: 
42023 PList).(match e0 return (\lambda (_: PList).PList) with [PNil \Rightarrow hds 
42024 | (PCons _ _ p) \Rightarrow p])) (PCons h d hds) (PCons n n0 p) H4) in ((let 
42025 H8 \def (f_equal PList nat (\lambda (e0: PList).(match e0 return (\lambda (_: 
42026 PList).nat) with [PNil \Rightarrow d | (PCons _ n _) \Rightarrow n])) (PCons 
42027 h d hds) (PCons n n0 p) H4) in ((let H9 \def (f_equal PList nat (\lambda (e0: 
42028 PList).(match e0 return (\lambda (_: PList).nat) with [PNil \Rightarrow h | 
42029 (PCons n _ _) \Rightarrow n])) (PCons h d hds) (PCons n n0 p) H4) in (eq_ind 
42030 nat n (\lambda (n1: nat).((eq nat d n0) \to ((eq PList hds p) \to ((eq C c1 
42031 c) \to ((eq C c3 e) \to ((drop n1 d c1 c2) \to ((drop1 hds c2 c3) \to (sc3 g 
42032 a c (lift n n0 (lift1 p t)))))))))) (\lambda (H10: (eq nat d n0)).(eq_ind nat 
42033 n0 (\lambda (n1: nat).((eq PList hds p) \to ((eq C c1 c) \to ((eq C c3 e) \to 
42034 ((drop n n1 c1 c2) \to ((drop1 hds c2 c3) \to (sc3 g a c (lift n n0 (lift1 p 
42035 t))))))))) (\lambda (H11: (eq PList hds p)).(eq_ind PList p (\lambda (p0: 
42036 PList).((eq C c1 c) \to ((eq C c3 e) \to ((drop n n0 c1 c2) \to ((drop1 p0 c2 
42037 c3) \to (sc3 g a c (lift n n0 (lift1 p t)))))))) (\lambda (H12: (eq C c1 
42038 c)).(eq_ind C c (\lambda (c0: C).((eq C c3 e) \to ((drop n n0 c0 c2) \to 
42039 ((drop1 p c2 c3) \to (sc3 g a c (lift n n0 (lift1 p t))))))) (\lambda (H13: 
42040 (eq C c3 e)).(eq_ind C e (\lambda (c0: C).((drop n n0 c c2) \to ((drop1 p c2 
42041 c0) \to (sc3 g a c (lift n n0 (lift1 p t)))))) (\lambda (H14: (drop n n0 c 
42042 c2)).(\lambda (H15: (drop1 p c2 e)).(sc3_lift g a c2 (lift1 p t) (H c2 t H0 
42043 H15) c n n0 H14))) c3 (sym_eq C c3 e H13))) c1 (sym_eq C c1 c H12))) hds 
42044 (sym_eq PList hds p H11))) d (sym_eq nat d n0 H10))) h (sym_eq nat h n H9))) 
42045 H8)) H7)) H5 H6 H2 H3))))]) in (H2 (refl_equal PList (PCons n n0 p)) 
42046 (refl_equal C c) (refl_equal C e))))))))))) hds)))).
42047
42048 axiom sc3_abbr:
42049  \forall (g: G).(\forall (a: A).(\forall (vs: TList).(\forall (i: 
42050 nat).(\forall (d: C).(\forall (v: T).(\forall (c: C).((sc3 g a c (THeads 
42051 (Flat Appl) vs (lift (S i) O v))) \to ((getl i c (CHead d (Bind Abbr) v)) \to 
42052 (sc3 g a c (THeads (Flat Appl) vs (TLRef i)))))))))))
42053 .
42054
42055 theorem sc3_cast:
42056  \forall (g: G).(\forall (a: A).(\forall (vs: TList).(\forall (c: C).(\forall 
42057 (u: T).((sc3 g (asucc g a) c (THeads (Flat Appl) vs u)) \to (\forall (t: 
42058 T).((sc3 g a c (THeads (Flat Appl) vs t)) \to (sc3 g a c (THeads (Flat Appl) 
42059 vs (THead (Flat Cast) u t))))))))))
42060 \def
42061  \lambda (g: G).(\lambda (a: A).(A_ind (\lambda (a0: A).(\forall (vs: 
42062 TList).(\forall (c: C).(\forall (u: T).((sc3 g (asucc g a0) c (THeads (Flat 
42063 Appl) vs u)) \to (\forall (t: T).((sc3 g a0 c (THeads (Flat Appl) vs t)) \to 
42064 (sc3 g a0 c (THeads (Flat Appl) vs (THead (Flat Cast) u t)))))))))) (\lambda 
42065 (n: nat).(\lambda (n0: nat).(\lambda (vs: TList).(\lambda (c: C).(\lambda (u: 
42066 T).(\lambda (H: (sc3 g (match n with [O \Rightarrow (ASort O (next g n0)) | 
42067 (S h) \Rightarrow (ASort h n0)]) c (THeads (Flat Appl) vs u))).(\lambda (t: 
42068 T).(\lambda (H0: (land (arity g c (THeads (Flat Appl) vs t) (ASort n n0)) 
42069 (sn3 c (THeads (Flat Appl) vs t)))).((match n return (\lambda (n1: nat).((sc3 
42070 g (match n1 with [O \Rightarrow (ASort O (next g n0)) | (S h) \Rightarrow 
42071 (ASort h n0)]) c (THeads (Flat Appl) vs u)) \to ((land (arity g c (THeads 
42072 (Flat Appl) vs t) (ASort n1 n0)) (sn3 c (THeads (Flat Appl) vs t))) \to (land 
42073 (arity g c (THeads (Flat Appl) vs (THead (Flat Cast) u t)) (ASort n1 n0)) 
42074 (sn3 c (THeads (Flat Appl) vs (THead (Flat Cast) u t))))))) with [O 
42075 \Rightarrow (\lambda (H1: (sc3 g (ASort O (next g n0)) c (THeads (Flat Appl) 
42076 vs u))).(\lambda (H2: (land (arity g c (THeads (Flat Appl) vs t) (ASort O 
42077 n0)) (sn3 c (THeads (Flat Appl) vs t)))).(let H3 \def H1 in (and_ind (arity g 
42078 c (THeads (Flat Appl) vs u) (ASort O (next g n0))) (sn3 c (THeads (Flat Appl) 
42079 vs u)) (land (arity g c (THeads (Flat Appl) vs (THead (Flat Cast) u t)) 
42080 (ASort O n0)) (sn3 c (THeads (Flat Appl) vs (THead (Flat Cast) u t)))) 
42081 (\lambda (H4: (arity g c (THeads (Flat Appl) vs u) (ASort O (next g 
42082 n0)))).(\lambda (H5: (sn3 c (THeads (Flat Appl) vs u))).(let H6 \def H2 in 
42083 (and_ind (arity g c (THeads (Flat Appl) vs t) (ASort O n0)) (sn3 c (THeads 
42084 (Flat Appl) vs t)) (land (arity g c (THeads (Flat Appl) vs (THead (Flat Cast) 
42085 u t)) (ASort O n0)) (sn3 c (THeads (Flat Appl) vs (THead (Flat Cast) u t)))) 
42086 (\lambda (H7: (arity g c (THeads (Flat Appl) vs t) (ASort O n0))).(\lambda 
42087 (H8: (sn3 c (THeads (Flat Appl) vs t))).(conj (arity g c (THeads (Flat Appl) 
42088 vs (THead (Flat Cast) u t)) (ASort O n0)) (sn3 c (THeads (Flat Appl) vs 
42089 (THead (Flat Cast) u t))) (arity_appls_cast g c u t vs (ASort O n0) H4 H7) 
42090 (sn3_appls_cast c vs u H5 t H8)))) H6)))) H3)))) | (S n1) \Rightarrow 
42091 (\lambda (H1: (sc3 g (ASort n1 n0) c (THeads (Flat Appl) vs u))).(\lambda 
42092 (H2: (land (arity g c (THeads (Flat Appl) vs t) (ASort (S n1) n0)) (sn3 c 
42093 (THeads (Flat Appl) vs t)))).(let H3 \def H1 in (and_ind (arity g c (THeads 
42094 (Flat Appl) vs u) (ASort n1 n0)) (sn3 c (THeads (Flat Appl) vs u)) (land 
42095 (arity g c (THeads (Flat Appl) vs (THead (Flat Cast) u t)) (ASort (S n1) n0)) 
42096 (sn3 c (THeads (Flat Appl) vs (THead (Flat Cast) u t)))) (\lambda (H4: (arity 
42097 g c (THeads (Flat Appl) vs u) (ASort n1 n0))).(\lambda (H5: (sn3 c (THeads 
42098 (Flat Appl) vs u))).(let H6 \def H2 in (and_ind (arity g c (THeads (Flat 
42099 Appl) vs t) (ASort (S n1) n0)) (sn3 c (THeads (Flat Appl) vs t)) (land (arity 
42100 g c (THeads (Flat Appl) vs (THead (Flat Cast) u t)) (ASort (S n1) n0)) (sn3 c 
42101 (THeads (Flat Appl) vs (THead (Flat Cast) u t)))) (\lambda (H7: (arity g c 
42102 (THeads (Flat Appl) vs t) (ASort (S n1) n0))).(\lambda (H8: (sn3 c (THeads 
42103 (Flat Appl) vs t))).(conj (arity g c (THeads (Flat Appl) vs (THead (Flat 
42104 Cast) u t)) (ASort (S n1) n0)) (sn3 c (THeads (Flat Appl) vs (THead (Flat 
42105 Cast) u t))) (arity_appls_cast g c u t vs (ASort (S n1) n0) H4 H7) 
42106 (sn3_appls_cast c vs u H5 t H8)))) H6)))) H3))))]) H H0))))))))) (\lambda 
42107 (a0: A).(\lambda (_: ((\forall (vs: TList).(\forall (c: C).(\forall (u: 
42108 T).((sc3 g (asucc g a0) c (THeads (Flat Appl) vs u)) \to (\forall (t: 
42109 T).((sc3 g a0 c (THeads (Flat Appl) vs t)) \to (sc3 g a0 c (THeads (Flat 
42110 Appl) vs (THead (Flat Cast) u t))))))))))).(\lambda (a1: A).(\lambda (H0: 
42111 ((\forall (vs: TList).(\forall (c: C).(\forall (u: T).((sc3 g (asucc g a1) c 
42112 (THeads (Flat Appl) vs u)) \to (\forall (t: T).((sc3 g a1 c (THeads (Flat 
42113 Appl) vs t)) \to (sc3 g a1 c (THeads (Flat Appl) vs (THead (Flat Cast) u 
42114 t))))))))))).(\lambda (vs: TList).(\lambda (c: C).(\lambda (u: T).(\lambda 
42115 (H1: (land (arity g c (THeads (Flat Appl) vs u) (AHead a0 (asucc g a1))) 
42116 (\forall (d: C).(\forall (w: T).((sc3 g a0 d w) \to (\forall (is: 
42117 PList).((drop1 is d c) \to (sc3 g (asucc g a1) d (THead (Flat Appl) w (lift1 
42118 is (THeads (Flat Appl) vs u))))))))))).(\lambda (t: T).(\lambda (H2: (land 
42119 (arity g c (THeads (Flat Appl) vs t) (AHead a0 a1)) (\forall (d: C).(\forall 
42120 (w: T).((sc3 g a0 d w) \to (\forall (is: PList).((drop1 is d c) \to (sc3 g a1 
42121 d (THead (Flat Appl) w (lift1 is (THeads (Flat Appl) vs t))))))))))).(let H3 
42122 \def H1 in (and_ind (arity g c (THeads (Flat Appl) vs u) (AHead a0 (asucc g 
42123 a1))) (\forall (d: C).(\forall (w: T).((sc3 g a0 d w) \to (\forall (is: 
42124 PList).((drop1 is d c) \to (sc3 g (asucc g a1) d (THead (Flat Appl) w (lift1 
42125 is (THeads (Flat Appl) vs u))))))))) (land (arity g c (THeads (Flat Appl) vs 
42126 (THead (Flat Cast) u t)) (AHead a0 a1)) (\forall (d: C).(\forall (w: T).((sc3 
42127 g a0 d w) \to (\forall (is: PList).((drop1 is d c) \to (sc3 g a1 d (THead 
42128 (Flat Appl) w (lift1 is (THeads (Flat Appl) vs (THead (Flat Cast) u 
42129 t))))))))))) (\lambda (H4: (arity g c (THeads (Flat Appl) vs u) (AHead a0 
42130 (asucc g a1)))).(\lambda (H5: ((\forall (d: C).(\forall (w: T).((sc3 g a0 d 
42131 w) \to (\forall (is: PList).((drop1 is d c) \to (sc3 g (asucc g a1) d (THead 
42132 (Flat Appl) w (lift1 is (THeads (Flat Appl) vs u))))))))))).(let H6 \def H2 
42133 in (and_ind (arity g c (THeads (Flat Appl) vs t) (AHead a0 a1)) (\forall (d: 
42134 C).(\forall (w: T).((sc3 g a0 d w) \to (\forall (is: PList).((drop1 is d c) 
42135 \to (sc3 g a1 d (THead (Flat Appl) w (lift1 is (THeads (Flat Appl) vs 
42136 t))))))))) (land (arity g c (THeads (Flat Appl) vs (THead (Flat Cast) u t)) 
42137 (AHead a0 a1)) (\forall (d: C).(\forall (w: T).((sc3 g a0 d w) \to (\forall 
42138 (is: PList).((drop1 is d c) \to (sc3 g a1 d (THead (Flat Appl) w (lift1 is 
42139 (THeads (Flat Appl) vs (THead (Flat Cast) u t))))))))))) (\lambda (H7: (arity 
42140 g c (THeads (Flat Appl) vs t) (AHead a0 a1))).(\lambda (H8: ((\forall (d: 
42141 C).(\forall (w: T).((sc3 g a0 d w) \to (\forall (is: PList).((drop1 is d c) 
42142 \to (sc3 g a1 d (THead (Flat Appl) w (lift1 is (THeads (Flat Appl) vs 
42143 t))))))))))).(conj (arity g c (THeads (Flat Appl) vs (THead (Flat Cast) u t)) 
42144 (AHead a0 a1)) (\forall (d: C).(\forall (w: T).((sc3 g a0 d w) \to (\forall 
42145 (is: PList).((drop1 is d c) \to (sc3 g a1 d (THead (Flat Appl) w (lift1 is 
42146 (THeads (Flat Appl) vs (THead (Flat Cast) u t)))))))))) (arity_appls_cast g c 
42147 u t vs (AHead a0 a1) H4 H7) (\lambda (d: C).(\lambda (w: T).(\lambda (H9: 
42148 (sc3 g a0 d w)).(\lambda (is: PList).(\lambda (H10: (drop1 is d c)).(let H_y 
42149 \def (H0 (TCons w (lifts1 is vs))) in (eq_ind_r T (THeads (Flat Appl) (lifts1 
42150 is vs) (lift1 is (THead (Flat Cast) u t))) (\lambda (t0: T).(sc3 g a1 d 
42151 (THead (Flat Appl) w t0))) (eq_ind_r T (THead (Flat Cast) (lift1 is u) (lift1 
42152 is t)) (\lambda (t0: T).(sc3 g a1 d (THead (Flat Appl) w (THeads (Flat Appl) 
42153 (lifts1 is vs) t0)))) (H_y d (lift1 is u) (eq_ind T (lift1 is (THeads (Flat 
42154 Appl) vs u)) (\lambda (t0: T).(sc3 g (asucc g a1) d (THead (Flat Appl) w 
42155 t0))) (H5 d w H9 is H10) (THeads (Flat Appl) (lifts1 is vs) (lift1 is u)) 
42156 (lifts1_flat Appl is u vs)) (lift1 is t) (eq_ind T (lift1 is (THeads (Flat 
42157 Appl) vs t)) (\lambda (t0: T).(sc3 g a1 d (THead (Flat Appl) w t0))) (H8 d w 
42158 H9 is H10) (THeads (Flat Appl) (lifts1 is vs) (lift1 is t)) (lifts1_flat Appl 
42159 is t vs))) (lift1 is (THead (Flat Cast) u t)) (lift1_flat Cast is u t)) 
42160 (lift1 is (THeads (Flat Appl) vs (THead (Flat Cast) u t))) (lifts1_flat Appl 
42161 is (THead (Flat Cast) u t) vs))))))))))) H6)))) H3)))))))))))) a)).
42162
42163 axiom sc3_bind:
42164  \forall (g: G).(\forall (b: B).((not (eq B b Abst)) \to (\forall (a1: 
42165 A).(\forall (a2: A).(\forall (vs: TList).(\forall (c: C).(\forall (v: 
42166 T).(\forall (t: T).((sc3 g a2 (CHead c (Bind b) v) (THeads (Flat Appl) (lifts 
42167 (S O) O vs) t)) \to ((sc3 g a1 c v) \to (sc3 g a2 c (THeads (Flat Appl) vs 
42168 (THead (Bind b) v t)))))))))))))
42169 .
42170
42171 axiom sc3_appl:
42172  \forall (g: G).(\forall (a1: A).(\forall (a2: A).(\forall (vs: 
42173 TList).(\forall (c: C).(\forall (v: T).(\forall (t: T).((sc3 g a2 c (THeads 
42174 (Flat Appl) vs (THead (Bind Abbr) v t))) \to ((sc3 g a1 c v) \to (\forall (w: 
42175 T).((sc3 g (asucc g a1) c w) \to (sc3 g a2 c (THeads (Flat Appl) vs (THead 
42176 (Flat Appl) v (THead (Bind Abst) w t))))))))))))))
42177 .
42178
42179 theorem sc3_props__sc3_sn3_abst:
42180  \forall (g: G).(\forall (a: A).(land (\forall (c: C).(\forall (t: T).((sc3 g 
42181 a c t) \to (sn3 c t)))) (\forall (vs: TList).(\forall (i: nat).(let t \def 
42182 (THeads (Flat Appl) vs (TLRef i)) in (\forall (c: C).((arity g c t a) \to 
42183 ((nf2 c (TLRef i)) \to ((sns3 c vs) \to (sc3 g a c t))))))))))
42184 \def
42185  \lambda (g: G).(\lambda (a: A).(A_ind (\lambda (a0: A).(land (\forall (c: 
42186 C).(\forall (t: T).((sc3 g a0 c t) \to (sn3 c t)))) (\forall (vs: 
42187 TList).(\forall (i: nat).(let t \def (THeads (Flat Appl) vs (TLRef i)) in 
42188 (\forall (c: C).((arity g c t a0) \to ((nf2 c (TLRef i)) \to ((sns3 c vs) \to 
42189 (sc3 g a0 c t)))))))))) (\lambda (n: nat).(\lambda (n0: nat).(conj (\forall 
42190 (c: C).(\forall (t: T).((land (arity g c t (ASort n n0)) (sn3 c t)) \to (sn3 
42191 c t)))) (\forall (vs: TList).(\forall (i: nat).(\forall (c: C).((arity g c 
42192 (THeads (Flat Appl) vs (TLRef i)) (ASort n n0)) \to ((nf2 c (TLRef i)) \to 
42193 ((sns3 c vs) \to (land (arity g c (THeads (Flat Appl) vs (TLRef i)) (ASort n 
42194 n0)) (sn3 c (THeads (Flat Appl) vs (TLRef i)))))))))) (\lambda (c: 
42195 C).(\lambda (t: T).(\lambda (H: (land (arity g c t (ASort n n0)) (sn3 c 
42196 t))).(let H0 \def H in (and_ind (arity g c t (ASort n n0)) (sn3 c t) (sn3 c 
42197 t) (\lambda (_: (arity g c t (ASort n n0))).(\lambda (H2: (sn3 c t)).H2)) 
42198 H0))))) (\lambda (vs: TList).(\lambda (i: nat).(\lambda (c: C).(\lambda (H: 
42199 (arity g c (THeads (Flat Appl) vs (TLRef i)) (ASort n n0))).(\lambda (H0: 
42200 (nf2 c (TLRef i))).(\lambda (H1: (sns3 c vs)).(conj (arity g c (THeads (Flat 
42201 Appl) vs (TLRef i)) (ASort n n0)) (sn3 c (THeads (Flat Appl) vs (TLRef i))) H 
42202 (sn3_appls_lref c i H0 vs H1))))))))))) (\lambda (a0: A).(\lambda (H: (land 
42203 (\forall (c: C).(\forall (t: T).((sc3 g a0 c t) \to (sn3 c t)))) (\forall 
42204 (vs: TList).(\forall (i: nat).(\forall (c: C).((arity g c (THeads (Flat Appl) 
42205 vs (TLRef i)) a0) \to ((nf2 c (TLRef i)) \to ((sns3 c vs) \to (sc3 g a0 c 
42206 (THeads (Flat Appl) vs (TLRef i))))))))))).(\lambda (a1: A).(\lambda (H0: 
42207 (land (\forall (c: C).(\forall (t: T).((sc3 g a1 c t) \to (sn3 c t)))) 
42208 (\forall (vs: TList).(\forall (i: nat).(\forall (c: C).((arity g c (THeads 
42209 (Flat Appl) vs (TLRef i)) a1) \to ((nf2 c (TLRef i)) \to ((sns3 c vs) \to 
42210 (sc3 g a1 c (THeads (Flat Appl) vs (TLRef i))))))))))).(conj (\forall (c: 
42211 C).(\forall (t: T).((land (arity g c t (AHead a0 a1)) (\forall (d: 
42212 C).(\forall (w: T).((sc3 g a0 d w) \to (\forall (is: PList).((drop1 is d c) 
42213 \to (sc3 g a1 d (THead (Flat Appl) w (lift1 is t))))))))) \to (sn3 c t)))) 
42214 (\forall (vs: TList).(\forall (i: nat).(\forall (c: C).((arity g c (THeads 
42215 (Flat Appl) vs (TLRef i)) (AHead a0 a1)) \to ((nf2 c (TLRef i)) \to ((sns3 c 
42216 vs) \to (land (arity g c (THeads (Flat Appl) vs (TLRef i)) (AHead a0 a1)) 
42217 (\forall (d: C).(\forall (w: T).((sc3 g a0 d w) \to (\forall (is: 
42218 PList).((drop1 is d c) \to (sc3 g a1 d (THead (Flat Appl) w (lift1 is (THeads 
42219 (Flat Appl) vs (TLRef i))))))))))))))))) (\lambda (c: C).(\lambda (t: 
42220 T).(\lambda (H1: (land (arity g c t (AHead a0 a1)) (\forall (d: C).(\forall 
42221 (w: T).((sc3 g a0 d w) \to (\forall (is: PList).((drop1 is d c) \to (sc3 g a1 
42222 d (THead (Flat Appl) w (lift1 is t)))))))))).(let H2 \def H in (and_ind 
42223 (\forall (c0: C).(\forall (t0: T).((sc3 g a0 c0 t0) \to (sn3 c0 t0)))) 
42224 (\forall (vs: TList).(\forall (i: nat).(\forall (c0: C).((arity g c0 (THeads 
42225 (Flat Appl) vs (TLRef i)) a0) \to ((nf2 c0 (TLRef i)) \to ((sns3 c0 vs) \to 
42226 (sc3 g a0 c0 (THeads (Flat Appl) vs (TLRef i))))))))) (sn3 c t) (\lambda (_: 
42227 ((\forall (c: C).(\forall (t: T).((sc3 g a0 c t) \to (sn3 c t)))))).(\lambda 
42228 (H4: ((\forall (vs: TList).(\forall (i: nat).(\forall (c: C).((arity g c 
42229 (THeads (Flat Appl) vs (TLRef i)) a0) \to ((nf2 c (TLRef i)) \to ((sns3 c vs) 
42230 \to (sc3 g a0 c (THeads (Flat Appl) vs (TLRef i))))))))))).(let H5 \def H0 in 
42231 (and_ind (\forall (c0: C).(\forall (t0: T).((sc3 g a1 c0 t0) \to (sn3 c0 
42232 t0)))) (\forall (vs: TList).(\forall (i: nat).(\forall (c0: C).((arity g c0 
42233 (THeads (Flat Appl) vs (TLRef i)) a1) \to ((nf2 c0 (TLRef i)) \to ((sns3 c0 
42234 vs) \to (sc3 g a1 c0 (THeads (Flat Appl) vs (TLRef i))))))))) (sn3 c t) 
42235 (\lambda (H6: ((\forall (c: C).(\forall (t: T).((sc3 g a1 c t) \to (sn3 c 
42236 t)))))).(\lambda (_: ((\forall (vs: TList).(\forall (i: nat).(\forall (c: 
42237 C).((arity g c (THeads (Flat Appl) vs (TLRef i)) a1) \to ((nf2 c (TLRef i)) 
42238 \to ((sns3 c vs) \to (sc3 g a1 c (THeads (Flat Appl) vs (TLRef 
42239 i))))))))))).(let H8 \def H1 in (and_ind (arity g c t (AHead a0 a1)) (\forall 
42240 (d: C).(\forall (w: T).((sc3 g a0 d w) \to (\forall (is: PList).((drop1 is d 
42241 c) \to (sc3 g a1 d (THead (Flat Appl) w (lift1 is t)))))))) (sn3 c t) 
42242 (\lambda (H9: (arity g c t (AHead a0 a1))).(\lambda (H10: ((\forall (d: 
42243 C).(\forall (w: T).((sc3 g a0 d w) \to (\forall (is: PList).((drop1 is d c) 
42244 \to (sc3 g a1 d (THead (Flat Appl) w (lift1 is t)))))))))).(let H_y \def 
42245 (arity_aprem g c t (AHead a0 a1) H9 O a0) in (let H11 \def (H_y (aprem_zero 
42246 a0 a1)) in (ex2_3_ind C T nat (\lambda (d: C).(\lambda (_: T).(\lambda (j: 
42247 nat).(drop j O d c)))) (\lambda (d: C).(\lambda (u: T).(\lambda (_: 
42248 nat).(arity g d u (asucc g a0))))) (sn3 c t) (\lambda (x0: C).(\lambda (x1: 
42249 T).(\lambda (x2: nat).(\lambda (H12: (drop x2 O x0 c)).(\lambda (H13: (arity 
42250 g x0 x1 (asucc g a0))).(let H_y0 \def (H10 (CHead x0 (Bind Abst) x1) (TLRef 
42251 O) (H4 TNil O (CHead x0 (Bind Abst) x1) (arity_abst g (CHead x0 (Bind Abst) 
42252 x1) x0 x1 O (getl_refl Abst x0 x1) a0 H13) (nf2_lref_abst (CHead x0 (Bind 
42253 Abst) x1) x0 x1 O (getl_refl Abst x0 x1)) I) (PCons (S x2) O PNil)) in (let 
42254 H_y1 \def (H6 (CHead x0 (Bind Abst) x1) (THead (Flat Appl) (TLRef O) (lift (S 
42255 x2) O t)) (H_y0 (drop1_cons (CHead x0 (Bind Abst) x1) c (S x2) O (drop_drop 
42256 (Bind Abst) x2 x0 c H12 x1) c PNil (drop1_nil c)))) in (let H14 \def 
42257 (sn3_gen_flat Appl (CHead x0 (Bind Abst) x1) (TLRef O) (lift (S x2) O t) 
42258 H_y1) in (and_ind (sn3 (CHead x0 (Bind Abst) x1) (TLRef O)) (sn3 (CHead x0 
42259 (Bind Abst) x1) (lift (S x2) O t)) (sn3 c t) (\lambda (_: (sn3 (CHead x0 
42260 (Bind Abst) x1) (TLRef O))).(\lambda (H16: (sn3 (CHead x0 (Bind Abst) x1) 
42261 (lift (S x2) O t))).(sn3_gen_lift (CHead x0 (Bind Abst) x1) t (S x2) O H16 c 
42262 (drop_drop (Bind Abst) x2 x0 c H12 x1)))) H14))))))))) H11))))) H8)))) H5)))) 
42263 H2))))) (\lambda (vs: TList).(\lambda (i: nat).(\lambda (c: C).(\lambda (H1: 
42264 (arity g c (THeads (Flat Appl) vs (TLRef i)) (AHead a0 a1))).(\lambda (H2: 
42265 (nf2 c (TLRef i))).(\lambda (H3: (sns3 c vs)).(conj (arity g c (THeads (Flat 
42266 Appl) vs (TLRef i)) (AHead a0 a1)) (\forall (d: C).(\forall (w: T).((sc3 g a0 
42267 d w) \to (\forall (is: PList).((drop1 is d c) \to (sc3 g a1 d (THead (Flat 
42268 Appl) w (lift1 is (THeads (Flat Appl) vs (TLRef i)))))))))) H1 (\lambda (d: 
42269 C).(\lambda (w: T).(\lambda (H4: (sc3 g a0 d w)).(\lambda (is: 
42270 PList).(\lambda (H5: (drop1 is d c)).(let H6 \def H in (and_ind (\forall (c0: 
42271 C).(\forall (t: T).((sc3 g a0 c0 t) \to (sn3 c0 t)))) (\forall (vs0: 
42272 TList).(\forall (i0: nat).(\forall (c0: C).((arity g c0 (THeads (Flat Appl) 
42273 vs0 (TLRef i0)) a0) \to ((nf2 c0 (TLRef i0)) \to ((sns3 c0 vs0) \to (sc3 g a0 
42274 c0 (THeads (Flat Appl) vs0 (TLRef i0))))))))) (sc3 g a1 d (THead (Flat Appl) 
42275 w (lift1 is (THeads (Flat Appl) vs (TLRef i))))) (\lambda (H7: ((\forall (c: 
42276 C).(\forall (t: T).((sc3 g a0 c t) \to (sn3 c t)))))).(\lambda (_: ((\forall 
42277 (vs: TList).(\forall (i: nat).(\forall (c: C).((arity g c (THeads (Flat Appl) 
42278 vs (TLRef i)) a0) \to ((nf2 c (TLRef i)) \to ((sns3 c vs) \to (sc3 g a0 c 
42279 (THeads (Flat Appl) vs (TLRef i))))))))))).(let H9 \def H0 in (and_ind 
42280 (\forall (c0: C).(\forall (t: T).((sc3 g a1 c0 t) \to (sn3 c0 t)))) (\forall 
42281 (vs0: TList).(\forall (i0: nat).(\forall (c0: C).((arity g c0 (THeads (Flat 
42282 Appl) vs0 (TLRef i0)) a1) \to ((nf2 c0 (TLRef i0)) \to ((sns3 c0 vs0) \to 
42283 (sc3 g a1 c0 (THeads (Flat Appl) vs0 (TLRef i0))))))))) (sc3 g a1 d (THead 
42284 (Flat Appl) w (lift1 is (THeads (Flat Appl) vs (TLRef i))))) (\lambda (_: 
42285 ((\forall (c: C).(\forall (t: T).((sc3 g a1 c t) \to (sn3 c t)))))).(\lambda 
42286 (H11: ((\forall (vs: TList).(\forall (i: nat).(\forall (c: C).((arity g c 
42287 (THeads (Flat Appl) vs (TLRef i)) a1) \to ((nf2 c (TLRef i)) \to ((sns3 c vs) 
42288 \to (sc3 g a1 c (THeads (Flat Appl) vs (TLRef i))))))))))).(let H_y \def (H11 
42289 (TCons w (lifts1 is vs))) in (eq_ind_r T (THeads (Flat Appl) (lifts1 is vs) 
42290 (lift1 is (TLRef i))) (\lambda (t: T).(sc3 g a1 d (THead (Flat Appl) w t))) 
42291 (eq_ind_r T (TLRef (trans is i)) (\lambda (t: T).(sc3 g a1 d (THead (Flat 
42292 Appl) w (THeads (Flat Appl) (lifts1 is vs) t)))) (H_y (trans is i) d (eq_ind 
42293 T (lift1 is (TLRef i)) (\lambda (t: T).(arity g d (THead (Flat Appl) w 
42294 (THeads (Flat Appl) (lifts1 is vs) t)) a1)) (eq_ind T (lift1 is (THeads (Flat 
42295 Appl) vs (TLRef i))) (\lambda (t: T).(arity g d (THead (Flat Appl) w t) a1)) 
42296 (arity_appl g d w a0 (sc3_arity_gen g d w a0 H4) (lift1 is (THeads (Flat 
42297 Appl) vs (TLRef i))) a1 (arity_lift1 g (AHead a0 a1) c is d (THeads (Flat 
42298 Appl) vs (TLRef i)) H5 H1)) (THeads (Flat Appl) (lifts1 is vs) (lift1 is 
42299 (TLRef i))) (lifts1_flat Appl is (TLRef i) vs)) (TLRef (trans is i)) 
42300 (lift1_lref is i)) (eq_ind T (lift1 is (TLRef i)) (\lambda (t: T).(nf2 d t)) 
42301 (nf2_lift1 c is d (TLRef i) H5 H2) (TLRef (trans is i)) (lift1_lref is i)) 
42302 (conj (sn3 d w) (sns3 d (lifts1 is vs)) (H7 d w H4) (sns3_lifts1 c is d H5 vs 
42303 H3))) (lift1 is (TLRef i)) (lift1_lref is i)) (lift1 is (THeads (Flat Appl) 
42304 vs (TLRef i))) (lifts1_flat Appl is (TLRef i) vs))))) H9)))) 
42305 H6))))))))))))))))))) a)).
42306
42307 theorem sc3_sn3:
42308  \forall (g: G).(\forall (a: A).(\forall (c: C).(\forall (t: T).((sc3 g a c 
42309 t) \to (sn3 c t)))))
42310 \def
42311  \lambda (g: G).(\lambda (a: A).(\lambda (c: C).(\lambda (t: T).(\lambda (H: 
42312 (sc3 g a c t)).(let H_x \def (sc3_props__sc3_sn3_abst g a) in (let H0 \def 
42313 H_x in (and_ind (\forall (c0: C).(\forall (t0: T).((sc3 g a c0 t0) \to (sn3 
42314 c0 t0)))) (\forall (vs: TList).(\forall (i: nat).(let t0 \def (THeads (Flat 
42315 Appl) vs (TLRef i)) in (\forall (c0: C).((arity g c0 t0 a) \to ((nf2 c0 
42316 (TLRef i)) \to ((sns3 c0 vs) \to (sc3 g a c0 t0)))))))) (sn3 c t) (\lambda 
42317 (H1: ((\forall (c: C).(\forall (t: T).((sc3 g a c t) \to (sn3 c 
42318 t)))))).(\lambda (_: ((\forall (vs: TList).(\forall (i: nat).(let t \def 
42319 (THeads (Flat Appl) vs (TLRef i)) in (\forall (c: C).((arity g c t a) \to 
42320 ((nf2 c (TLRef i)) \to ((sns3 c vs) \to (sc3 g a c t)))))))))).(H1 c t H))) 
42321 H0))))))).
42322
42323 theorem sc3_abst:
42324  \forall (g: G).(\forall (a: A).(\forall (vs: TList).(\forall (c: C).(\forall 
42325 (i: nat).((arity g c (THeads (Flat Appl) vs (TLRef i)) a) \to ((nf2 c (TLRef 
42326 i)) \to ((sns3 c vs) \to (sc3 g a c (THeads (Flat Appl) vs (TLRef i))))))))))
42327 \def
42328  \lambda (g: G).(\lambda (a: A).(\lambda (vs: TList).(\lambda (c: C).(\lambda 
42329 (i: nat).(\lambda (H: (arity g c (THeads (Flat Appl) vs (TLRef i)) 
42330 a)).(\lambda (H0: (nf2 c (TLRef i))).(\lambda (H1: (sns3 c vs)).(let H_x \def 
42331 (sc3_props__sc3_sn3_abst g a) in (let H2 \def H_x in (and_ind (\forall (c0: 
42332 C).(\forall (t: T).((sc3 g a c0 t) \to (sn3 c0 t)))) (\forall (vs0: 
42333 TList).(\forall (i0: nat).(let t \def (THeads (Flat Appl) vs0 (TLRef i0)) in 
42334 (\forall (c0: C).((arity g c0 t a) \to ((nf2 c0 (TLRef i0)) \to ((sns3 c0 
42335 vs0) \to (sc3 g a c0 t)))))))) (sc3 g a c (THeads (Flat Appl) vs (TLRef i))) 
42336 (\lambda (_: ((\forall (c: C).(\forall (t: T).((sc3 g a c t) \to (sn3 c 
42337 t)))))).(\lambda (H4: ((\forall (vs: TList).(\forall (i: nat).(let t \def 
42338 (THeads (Flat Appl) vs (TLRef i)) in (\forall (c: C).((arity g c t a) \to 
42339 ((nf2 c (TLRef i)) \to ((sns3 c vs) \to (sc3 g a c t)))))))))).(H4 vs i c H 
42340 H0 H1))) H2)))))))))).
42341
42342 inductive csubc (g:G): C \to (C \to Prop) \def
42343 | csubc_sort: \forall (n: nat).(csubc g (CSort n) (CSort n))
42344 | csubc_head: \forall (c1: C).(\forall (c2: C).((csubc g c1 c2) \to (\forall 
42345 (k: K).(\forall (v: T).(csubc g (CHead c1 k v) (CHead c2 k v))))))
42346 | csubc_abst: \forall (c1: C).(\forall (c2: C).((csubc g c1 c2) \to (\forall 
42347 (v: T).(\forall (a: A).((sc3 g (asucc g a) c1 v) \to (\forall (w: T).((sc3 g 
42348 a c2 w) \to (csubc g (CHead c1 (Bind Abst) v) (CHead c2 (Bind Abbr) 
42349 w))))))))).
42350
42351 definition ceqc:
42352  G \to (C \to (C \to Prop))
42353 \def
42354  \lambda (g: G).(\lambda (c1: C).(\lambda (c2: C).(or (csubc g c1 c2) (csubc 
42355 g c2 c1)))).
42356
42357 theorem scubc_refl:
42358  \forall (g: G).(\forall (c: C).(csubc g c c))
42359 \def
42360  \lambda (g: G).(\lambda (c: C).(C_ind (\lambda (c0: C).(csubc g c0 c0)) 
42361 (\lambda (n: nat).(csubc_sort g n)) (\lambda (c0: C).(\lambda (H: (csubc g c0 
42362 c0)).(\lambda (k: K).(\lambda (t: T).(csubc_head g c0 c0 H k t))))) c)).
42363
42364 theorem ceqc_sym:
42365  \forall (g: G).(\forall (c1: C).(\forall (c2: C).((ceqc g c1 c2) \to (ceqc g 
42366 c2 c1))))
42367 \def
42368  \lambda (g: G).(\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (ceqc g c1 
42369 c2)).(let H0 \def H in (or_ind (csubc g c1 c2) (csubc g c2 c1) (ceqc g c2 c1) 
42370 (\lambda (H1: (csubc g c1 c2)).(or_intror (csubc g c2 c1) (csubc g c1 c2) 
42371 H1)) (\lambda (H1: (csubc g c2 c1)).(or_introl (csubc g c2 c1) (csubc g c1 
42372 c2) H1)) H0))))).
42373
42374 theorem drop_csubc_trans:
42375  \forall (g: G).(\forall (c2: C).(\forall (e2: C).(\forall (d: nat).(\forall 
42376 (h: nat).((drop h d c2 e2) \to (\forall (e1: C).((csubc g e2 e1) \to (ex2 C 
42377 (\lambda (c1: C).(drop h d c1 e1)) (\lambda (c1: C).(csubc g c2 c1))))))))))
42378 \def
42379  \lambda (g: G).(\lambda (c2: C).(C_ind (\lambda (c: C).(\forall (e2: 
42380 C).(\forall (d: nat).(\forall (h: nat).((drop h d c e2) \to (\forall (e1: 
42381 C).((csubc g e2 e1) \to (ex2 C (\lambda (c1: C).(drop h d c1 e1)) (\lambda 
42382 (c1: C).(csubc g c c1)))))))))) (\lambda (n: nat).(\lambda (e2: C).(\lambda 
42383 (d: nat).(\lambda (h: nat).(\lambda (H: (drop h d (CSort n) e2)).(\lambda 
42384 (e1: C).(\lambda (H0: (csubc g e2 e1)).(and3_ind (eq C e2 (CSort n)) (eq nat 
42385 h O) (eq nat d O) (ex2 C (\lambda (c1: C).(drop h d c1 e1)) (\lambda (c1: 
42386 C).(csubc g (CSort n) c1))) (\lambda (H1: (eq C e2 (CSort n))).(\lambda (H2: 
42387 (eq nat h O)).(\lambda (H3: (eq nat d O)).(eq_ind_r nat O (\lambda (n0: 
42388 nat).(ex2 C (\lambda (c1: C).(drop n0 d c1 e1)) (\lambda (c1: C).(csubc g 
42389 (CSort n) c1)))) (eq_ind_r nat O (\lambda (n0: nat).(ex2 C (\lambda (c1: 
42390 C).(drop O n0 c1 e1)) (\lambda (c1: C).(csubc g (CSort n) c1)))) (let H4 \def 
42391 (eq_ind C e2 (\lambda (c: C).(csubc g c e1)) H0 (CSort n) H1) in (ex_intro2 C 
42392 (\lambda (c1: C).(drop O O c1 e1)) (\lambda (c1: C).(csubc g (CSort n) c1)) 
42393 e1 (drop_refl e1) H4)) d H3) h H2)))) (drop_gen_sort n h d e2 H))))))))) 
42394 (\lambda (c: C).(\lambda (H: ((\forall (e2: C).(\forall (d: nat).(\forall (h: 
42395 nat).((drop h d c e2) \to (\forall (e1: C).((csubc g e2 e1) \to (ex2 C 
42396 (\lambda (c1: C).(drop h d c1 e1)) (\lambda (c1: C).(csubc g c 
42397 c1))))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (e2: C).(\lambda (d: 
42398 nat).(nat_ind (\lambda (n: nat).(\forall (h: nat).((drop h n (CHead c k t) 
42399 e2) \to (\forall (e1: C).((csubc g e2 e1) \to (ex2 C (\lambda (c1: C).(drop h 
42400 n c1 e1)) (\lambda (c1: C).(csubc g (CHead c k t) c1)))))))) (\lambda (h: 
42401 nat).(nat_ind (\lambda (n: nat).((drop n O (CHead c k t) e2) \to (\forall 
42402 (e1: C).((csubc g e2 e1) \to (ex2 C (\lambda (c1: C).(drop n O c1 e1)) 
42403 (\lambda (c1: C).(csubc g (CHead c k t) c1))))))) (\lambda (H0: (drop O O 
42404 (CHead c k t) e2)).(\lambda (e1: C).(\lambda (H1: (csubc g e2 e1)).(let H2 
42405 \def (eq_ind_r C e2 (\lambda (c: C).(csubc g c e1)) H1 (CHead c k t) 
42406 (drop_gen_refl (CHead c k t) e2 H0)) in (ex_intro2 C (\lambda (c1: C).(drop O 
42407 O c1 e1)) (\lambda (c1: C).(csubc g (CHead c k t) c1)) e1 (drop_refl e1) 
42408 H2))))) (\lambda (n: nat).(\lambda (_: (((drop n O (CHead c k t) e2) \to 
42409 (\forall (e1: C).((csubc g e2 e1) \to (ex2 C (\lambda (c1: C).(drop n O c1 
42410 e1)) (\lambda (c1: C).(csubc g (CHead c k t) c1)))))))).(\lambda (H1: (drop 
42411 (S n) O (CHead c k t) e2)).(\lambda (e1: C).(\lambda (H2: (csubc g e2 
42412 e1)).(let H_x \def (H e2 O (r k n) (drop_gen_drop k c e2 t n H1) e1 H2) in 
42413 (let H3 \def H_x in (ex2_ind C (\lambda (c1: C).(drop (r k n) O c1 e1)) 
42414 (\lambda (c1: C).(csubc g c c1)) (ex2 C (\lambda (c1: C).(drop (S n) O c1 
42415 e1)) (\lambda (c1: C).(csubc g (CHead c k t) c1))) (\lambda (x: C).(\lambda 
42416 (H4: (drop (r k n) O x e1)).(\lambda (H5: (csubc g c x)).(ex_intro2 C 
42417 (\lambda (c1: C).(drop (S n) O c1 e1)) (\lambda (c1: C).(csubc g (CHead c k 
42418 t) c1)) (CHead x k t) (drop_drop k n x e1 H4 t) (csubc_head g c x H5 k t))))) 
42419 H3)))))))) h)) (\lambda (n: nat).(\lambda (H0: ((\forall (h: nat).((drop h n 
42420 (CHead c k t) e2) \to (\forall (e1: C).((csubc g e2 e1) \to (ex2 C (\lambda 
42421 (c1: C).(drop h n c1 e1)) (\lambda (c1: C).(csubc g (CHead c k t) 
42422 c1))))))))).(\lambda (h: nat).(\lambda (H1: (drop h (S n) (CHead c k t) 
42423 e2)).(\lambda (e1: C).(\lambda (H2: (csubc g e2 e1)).(ex3_2_ind C T (\lambda 
42424 (e: C).(\lambda (v: T).(eq C e2 (CHead e k v)))) (\lambda (_: C).(\lambda (v: 
42425 T).(eq T t (lift h (r k n) v)))) (\lambda (e: C).(\lambda (_: T).(drop h (r k 
42426 n) c e))) (ex2 C (\lambda (c1: C).(drop h (S n) c1 e1)) (\lambda (c1: 
42427 C).(csubc g (CHead c k t) c1))) (\lambda (x0: C).(\lambda (x1: T).(\lambda 
42428 (H3: (eq C e2 (CHead x0 k x1))).(\lambda (H4: (eq T t (lift h (r k n) 
42429 x1))).(\lambda (H5: (drop h (r k n) c x0)).(let H6 \def (eq_ind C e2 (\lambda 
42430 (c: C).(csubc g c e1)) H2 (CHead x0 k x1) H3) in (let H7 \def (eq_ind C e2 
42431 (\lambda (c0: C).(\forall (h: nat).((drop h n (CHead c k t) c0) \to (\forall 
42432 (e1: C).((csubc g c0 e1) \to (ex2 C (\lambda (c1: C).(drop h n c1 e1)) 
42433 (\lambda (c1: C).(csubc g (CHead c k t) c1)))))))) H0 (CHead x0 k x1) H3) in 
42434 (let H8 \def (eq_ind T t (\lambda (t: T).(\forall (h: nat).((drop h n (CHead 
42435 c k t) (CHead x0 k x1)) \to (\forall (e1: C).((csubc g (CHead x0 k x1) e1) 
42436 \to (ex2 C (\lambda (c1: C).(drop h n c1 e1)) (\lambda (c1: C).(csubc g 
42437 (CHead c k t) c1)))))))) H7 (lift h (r k n) x1) H4) in (eq_ind_r T (lift h (r 
42438 k n) x1) (\lambda (t0: T).(ex2 C (\lambda (c1: C).(drop h (S n) c1 e1)) 
42439 (\lambda (c1: C).(csubc g (CHead c k t0) c1)))) (let H9 \def (match H6 return 
42440 (\lambda (c0: C).(\lambda (c1: C).(\lambda (_: (csubc ? c0 c1)).((eq C c0 
42441 (CHead x0 k x1)) \to ((eq C c1 e1) \to (ex2 C (\lambda (c2: C).(drop h (S n) 
42442 c2 e1)) (\lambda (c2: C).(csubc g (CHead c k (lift h (r k n) x1)) c2)))))))) 
42443 with [(csubc_sort n0) \Rightarrow (\lambda (H1: (eq C (CSort n0) (CHead x0 k 
42444 x1))).(\lambda (H3: (eq C (CSort n0) e1)).((let H4 \def (eq_ind C (CSort n0) 
42445 (\lambda (e: C).(match e return (\lambda (_: C).Prop) with [(CSort _) 
42446 \Rightarrow True | (CHead _ _ _) \Rightarrow False])) I (CHead x0 k x1) H1) 
42447 in (False_ind ((eq C (CSort n0) e1) \to (ex2 C (\lambda (c1: C).(drop h (S n) 
42448 c1 e1)) (\lambda (c1: C).(csubc g (CHead c k (lift h (r k n) x1)) c1)))) H4)) 
42449 H3))) | (csubc_head c1 c2 H1 k0 v) \Rightarrow (\lambda (H3: (eq C (CHead c1 
42450 k0 v) (CHead x0 k x1))).(\lambda (H6: (eq C (CHead c2 k0 v) e1)).((let H2 
42451 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
42452 [(CSort _) \Rightarrow v | (CHead _ _ t) \Rightarrow t])) (CHead c1 k0 v) 
42453 (CHead x0 k x1) H3) in ((let H4 \def (f_equal C K (\lambda (e: C).(match e 
42454 return (\lambda (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) 
42455 \Rightarrow k])) (CHead c1 k0 v) (CHead x0 k x1) H3) in ((let H7 \def 
42456 (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort 
42457 _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k0 v) (CHead x0 
42458 k x1) H3) in (eq_ind C x0 (\lambda (c0: C).((eq K k0 k) \to ((eq T v x1) \to 
42459 ((eq C (CHead c2 k0 v) e1) \to ((csubc g c0 c2) \to (ex2 C (\lambda (c3: 
42460 C).(drop h (S n) c3 e1)) (\lambda (c3: C).(csubc g (CHead c k (lift h (r k n) 
42461 x1)) c3)))))))) (\lambda (H8: (eq K k0 k)).(eq_ind K k (\lambda (k1: K).((eq 
42462 T v x1) \to ((eq C (CHead c2 k1 v) e1) \to ((csubc g x0 c2) \to (ex2 C 
42463 (\lambda (c3: C).(drop h (S n) c3 e1)) (\lambda (c3: C).(csubc g (CHead c k 
42464 (lift h (r k n) x1)) c3))))))) (\lambda (H9: (eq T v x1)).(eq_ind T x1 
42465 (\lambda (t: T).((eq C (CHead c2 k t) e1) \to ((csubc g x0 c2) \to (ex2 C 
42466 (\lambda (c3: C).(drop h (S n) c3 e1)) (\lambda (c3: C).(csubc g (CHead c k 
42467 (lift h (r k n) x1)) c3)))))) (\lambda (H10: (eq C (CHead c2 k x1) 
42468 e1)).(eq_ind C (CHead c2 k x1) (\lambda (c0: C).((csubc g x0 c2) \to (ex2 C 
42469 (\lambda (c3: C).(drop h (S n) c3 c0)) (\lambda (c3: C).(csubc g (CHead c k 
42470 (lift h (r k n) x1)) c3))))) (\lambda (H11: (csubc g x0 c2)).(let H_x \def (H 
42471 x0 (r k n) h H5 c2 H11) in (let H5 \def H_x in (ex2_ind C (\lambda (c3: 
42472 C).(drop h (r k n) c3 c2)) (\lambda (c3: C).(csubc g c c3)) (ex2 C (\lambda 
42473 (c3: C).(drop h (S n) c3 (CHead c2 k x1))) (\lambda (c3: C).(csubc g (CHead c 
42474 k (lift h (r k n) x1)) c3))) (\lambda (x: C).(\lambda (H12: (drop h (r k n) x 
42475 c2)).(\lambda (H13: (csubc g c x)).(ex_intro2 C (\lambda (c3: C).(drop h (S 
42476 n) c3 (CHead c2 k x1))) (\lambda (c3: C).(csubc g (CHead c k (lift h (r k n) 
42477 x1)) c3)) (CHead x k (lift h (r k n) x1)) (drop_skip k h n x c2 H12 x1) 
42478 (csubc_head g c x H13 k (lift h (r k n) x1)))))) H5)))) e1 H10)) v (sym_eq T 
42479 v x1 H9))) k0 (sym_eq K k0 k H8))) c1 (sym_eq C c1 x0 H7))) H4)) H2)) H6 
42480 H1))) | (csubc_abst c1 c2 H1 v a H3 w H5) \Rightarrow (\lambda (H6: (eq C 
42481 (CHead c1 (Bind Abst) v) (CHead x0 k x1))).(\lambda (H7: (eq C (CHead c2 
42482 (Bind Abbr) w) e1)).((let H2 \def (f_equal C T (\lambda (e: C).(match e 
42483 return (\lambda (_: C).T) with [(CSort _) \Rightarrow v | (CHead _ _ t) 
42484 \Rightarrow t])) (CHead c1 (Bind Abst) v) (CHead x0 k x1) H6) in ((let H4 
42485 \def (f_equal C K (\lambda (e: C).(match e return (\lambda (_: C).K) with 
42486 [(CSort _) \Rightarrow (Bind Abst) | (CHead _ k _) \Rightarrow k])) (CHead c1 
42487 (Bind Abst) v) (CHead x0 k x1) H6) in ((let H9 \def (f_equal C C (\lambda (e: 
42488 C).(match e return (\lambda (_: C).C) with [(CSort _) \Rightarrow c1 | (CHead 
42489 c _ _) \Rightarrow c])) (CHead c1 (Bind Abst) v) (CHead x0 k x1) H6) in 
42490 (eq_ind C x0 (\lambda (c0: C).((eq K (Bind Abst) k) \to ((eq T v x1) \to ((eq 
42491 C (CHead c2 (Bind Abbr) w) e1) \to ((csubc g c0 c2) \to ((sc3 g (asucc g a) 
42492 c0 v) \to ((sc3 g a c2 w) \to (ex2 C (\lambda (c3: C).(drop h (S n) c3 e1)) 
42493 (\lambda (c3: C).(csubc g (CHead c k (lift h (r k n) x1)) c3)))))))))) 
42494 (\lambda (H10: (eq K (Bind Abst) k)).(eq_ind K (Bind Abst) (\lambda (k: 
42495 K).((eq T v x1) \to ((eq C (CHead c2 (Bind Abbr) w) e1) \to ((csubc g x0 c2) 
42496 \to ((sc3 g (asucc g a) x0 v) \to ((sc3 g a c2 w) \to (ex2 C (\lambda (c3: 
42497 C).(drop h (S n) c3 e1)) (\lambda (c3: C).(csubc g (CHead c k (lift h (r k n) 
42498 x1)) c3))))))))) (\lambda (H11: (eq T v x1)).(eq_ind T x1 (\lambda (t: 
42499 T).((eq C (CHead c2 (Bind Abbr) w) e1) \to ((csubc g x0 c2) \to ((sc3 g 
42500 (asucc g a) x0 t) \to ((sc3 g a c2 w) \to (ex2 C (\lambda (c3: C).(drop h (S 
42501 n) c3 e1)) (\lambda (c3: C).(csubc g (CHead c (Bind Abst) (lift h (r (Bind 
42502 Abst) n) x1)) c3)))))))) (\lambda (H12: (eq C (CHead c2 (Bind Abbr) w) 
42503 e1)).(eq_ind C (CHead c2 (Bind Abbr) w) (\lambda (c0: C).((csubc g x0 c2) \to 
42504 ((sc3 g (asucc g a) x0 x1) \to ((sc3 g a c2 w) \to (ex2 C (\lambda (c3: 
42505 C).(drop h (S n) c3 c0)) (\lambda (c3: C).(csubc g (CHead c (Bind Abst) (lift 
42506 h (r (Bind Abst) n) x1)) c3))))))) (\lambda (H13: (csubc g x0 c2)).(\lambda 
42507 (H14: (sc3 g (asucc g a) x0 x1)).(\lambda (H15: (sc3 g a c2 w)).(let H8 \def 
42508 (eq_ind_r K k (\lambda (k: K).(\forall (h0: nat).((drop h0 n (CHead c k (lift 
42509 h (r k n) x1)) (CHead x0 k x1)) \to (\forall (e1: C).((csubc g (CHead x0 k 
42510 x1) e1) \to (ex2 C (\lambda (c1: C).(drop h0 n c1 e1)) (\lambda (c1: 
42511 C).(csubc g (CHead c k (lift h (r k n) x1)) c1)))))))) H8 (Bind Abst) H10) in 
42512 (let H16 \def (eq_ind_r K k (\lambda (k: K).(drop h (r k n) c x0)) H5 (Bind 
42513 Abst) H10) in (let H_x \def (H x0 (r (Bind Abst) n) h H16 c2 H13) in (let H17 
42514 \def H_x in (ex2_ind C (\lambda (c3: C).(drop h (r (Bind Abst) n) c3 c2)) 
42515 (\lambda (c3: C).(csubc g c c3)) (ex2 C (\lambda (c3: C).(drop h (S n) c3 
42516 (CHead c2 (Bind Abbr) w))) (\lambda (c3: C).(csubc g (CHead c (Bind Abst) 
42517 (lift h (r (Bind Abst) n) x1)) c3))) (\lambda (x: C).(\lambda (H18: (drop h 
42518 (r (Bind Abst) n) x c2)).(\lambda (H19: (csubc g c x)).(ex_intro2 C (\lambda 
42519 (c3: C).(drop h (S n) c3 (CHead c2 (Bind Abbr) w))) (\lambda (c3: C).(csubc g 
42520 (CHead c (Bind Abst) (lift h (r (Bind Abst) n) x1)) c3)) (CHead x (Bind Abbr) 
42521 (lift h n w)) (drop_skip_bind h n x c2 H18 Abbr w) (csubc_abst g c x H19 
42522 (lift h (r (Bind Abst) n) x1) a (sc3_lift g (asucc g a) x0 x1 H14 c h (r 
42523 (Bind Abst) n) H16) (lift h n w) (sc3_lift g a c2 w H15 x h n H18)))))) 
42524 H17)))))))) e1 H12)) v (sym_eq T v x1 H11))) k H10)) c1 (sym_eq C c1 x0 H9))) 
42525 H4)) H2)) H7 H1 H3 H5)))]) in (H9 (refl_equal C (CHead x0 k x1)) (refl_equal 
42526 C e1))) t H4))))))))) (drop_gen_skip_l c e2 t h n k H1)))))))) d))))))) c2)).
42527
42528 theorem csubc_drop_conf_rev:
42529  \forall (g: G).(\forall (c2: C).(\forall (e2: C).(\forall (d: nat).(\forall 
42530 (h: nat).((drop h d c2 e2) \to (\forall (e1: C).((csubc g e1 e2) \to (ex2 C 
42531 (\lambda (c1: C).(drop h d c1 e1)) (\lambda (c1: C).(csubc g c1 c2))))))))))
42532 \def
42533  \lambda (g: G).(\lambda (c2: C).(C_ind (\lambda (c: C).(\forall (e2: 
42534 C).(\forall (d: nat).(\forall (h: nat).((drop h d c e2) \to (\forall (e1: 
42535 C).((csubc g e1 e2) \to (ex2 C (\lambda (c1: C).(drop h d c1 e1)) (\lambda 
42536 (c1: C).(csubc g c1 c)))))))))) (\lambda (n: nat).(\lambda (e2: C).(\lambda 
42537 (d: nat).(\lambda (h: nat).(\lambda (H: (drop h d (CSort n) e2)).(\lambda 
42538 (e1: C).(\lambda (H0: (csubc g e1 e2)).(and3_ind (eq C e2 (CSort n)) (eq nat 
42539 h O) (eq nat d O) (ex2 C (\lambda (c1: C).(drop h d c1 e1)) (\lambda (c1: 
42540 C).(csubc g c1 (CSort n)))) (\lambda (H1: (eq C e2 (CSort n))).(\lambda (H2: 
42541 (eq nat h O)).(\lambda (H3: (eq nat d O)).(eq_ind_r nat O (\lambda (n0: 
42542 nat).(ex2 C (\lambda (c1: C).(drop n0 d c1 e1)) (\lambda (c1: C).(csubc g c1 
42543 (CSort n))))) (eq_ind_r nat O (\lambda (n0: nat).(ex2 C (\lambda (c1: 
42544 C).(drop O n0 c1 e1)) (\lambda (c1: C).(csubc g c1 (CSort n))))) (let H4 \def 
42545 (eq_ind C e2 (\lambda (c: C).(csubc g e1 c)) H0 (CSort n) H1) in (ex_intro2 C 
42546 (\lambda (c1: C).(drop O O c1 e1)) (\lambda (c1: C).(csubc g c1 (CSort n))) 
42547 e1 (drop_refl e1) H4)) d H3) h H2)))) (drop_gen_sort n h d e2 H))))))))) 
42548 (\lambda (c: C).(\lambda (H: ((\forall (e2: C).(\forall (d: nat).(\forall (h: 
42549 nat).((drop h d c e2) \to (\forall (e1: C).((csubc g e1 e2) \to (ex2 C 
42550 (\lambda (c1: C).(drop h d c1 e1)) (\lambda (c1: C).(csubc g c1 
42551 c))))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (e2: C).(\lambda (d: 
42552 nat).(nat_ind (\lambda (n: nat).(\forall (h: nat).((drop h n (CHead c k t) 
42553 e2) \to (\forall (e1: C).((csubc g e1 e2) \to (ex2 C (\lambda (c1: C).(drop h 
42554 n c1 e1)) (\lambda (c1: C).(csubc g c1 (CHead c k t))))))))) (\lambda (h: 
42555 nat).(nat_ind (\lambda (n: nat).((drop n O (CHead c k t) e2) \to (\forall 
42556 (e1: C).((csubc g e1 e2) \to (ex2 C (\lambda (c1: C).(drop n O c1 e1)) 
42557 (\lambda (c1: C).(csubc g c1 (CHead c k t)))))))) (\lambda (H0: (drop O O 
42558 (CHead c k t) e2)).(\lambda (e1: C).(\lambda (H1: (csubc g e1 e2)).(let H2 
42559 \def (eq_ind_r C e2 (\lambda (c: C).(csubc g e1 c)) H1 (CHead c k t) 
42560 (drop_gen_refl (CHead c k t) e2 H0)) in (ex_intro2 C (\lambda (c1: C).(drop O 
42561 O c1 e1)) (\lambda (c1: C).(csubc g c1 (CHead c k t))) e1 (drop_refl e1) 
42562 H2))))) (\lambda (n: nat).(\lambda (_: (((drop n O (CHead c k t) e2) \to 
42563 (\forall (e1: C).((csubc g e1 e2) \to (ex2 C (\lambda (c1: C).(drop n O c1 
42564 e1)) (\lambda (c1: C).(csubc g c1 (CHead c k t))))))))).(\lambda (H1: (drop 
42565 (S n) O (CHead c k t) e2)).(\lambda (e1: C).(\lambda (H2: (csubc g e1 
42566 e2)).(let H_x \def (H e2 O (r k n) (drop_gen_drop k c e2 t n H1) e1 H2) in 
42567 (let H3 \def H_x in (ex2_ind C (\lambda (c1: C).(drop (r k n) O c1 e1)) 
42568 (\lambda (c1: C).(csubc g c1 c)) (ex2 C (\lambda (c1: C).(drop (S n) O c1 
42569 e1)) (\lambda (c1: C).(csubc g c1 (CHead c k t)))) (\lambda (x: C).(\lambda 
42570 (H4: (drop (r k n) O x e1)).(\lambda (H5: (csubc g x c)).(ex_intro2 C 
42571 (\lambda (c1: C).(drop (S n) O c1 e1)) (\lambda (c1: C).(csubc g c1 (CHead c 
42572 k t))) (CHead x k t) (drop_drop k n x e1 H4 t) (csubc_head g x c H5 k t))))) 
42573 H3)))))))) h)) (\lambda (n: nat).(\lambda (H0: ((\forall (h: nat).((drop h n 
42574 (CHead c k t) e2) \to (\forall (e1: C).((csubc g e1 e2) \to (ex2 C (\lambda 
42575 (c1: C).(drop h n c1 e1)) (\lambda (c1: C).(csubc g c1 (CHead c k 
42576 t)))))))))).(\lambda (h: nat).(\lambda (H1: (drop h (S n) (CHead c k t) 
42577 e2)).(\lambda (e1: C).(\lambda (H2: (csubc g e1 e2)).(ex3_2_ind C T (\lambda 
42578 (e: C).(\lambda (v: T).(eq C e2 (CHead e k v)))) (\lambda (_: C).(\lambda (v: 
42579 T).(eq T t (lift h (r k n) v)))) (\lambda (e: C).(\lambda (_: T).(drop h (r k 
42580 n) c e))) (ex2 C (\lambda (c1: C).(drop h (S n) c1 e1)) (\lambda (c1: 
42581 C).(csubc g c1 (CHead c k t)))) (\lambda (x0: C).(\lambda (x1: T).(\lambda 
42582 (H3: (eq C e2 (CHead x0 k x1))).(\lambda (H4: (eq T t (lift h (r k n) 
42583 x1))).(\lambda (H5: (drop h (r k n) c x0)).(let H6 \def (eq_ind C e2 (\lambda 
42584 (c: C).(csubc g e1 c)) H2 (CHead x0 k x1) H3) in (let H7 \def (eq_ind C e2 
42585 (\lambda (c0: C).(\forall (h: nat).((drop h n (CHead c k t) c0) \to (\forall 
42586 (e1: C).((csubc g e1 c0) \to (ex2 C (\lambda (c1: C).(drop h n c1 e1)) 
42587 (\lambda (c1: C).(csubc g c1 (CHead c k t))))))))) H0 (CHead x0 k x1) H3) in 
42588 (let H8 \def (eq_ind T t (\lambda (t: T).(\forall (h: nat).((drop h n (CHead 
42589 c k t) (CHead x0 k x1)) \to (\forall (e1: C).((csubc g e1 (CHead x0 k x1)) 
42590 \to (ex2 C (\lambda (c1: C).(drop h n c1 e1)) (\lambda (c1: C).(csubc g c1 
42591 (CHead c k t))))))))) H7 (lift h (r k n) x1) H4) in (eq_ind_r T (lift h (r k 
42592 n) x1) (\lambda (t0: T).(ex2 C (\lambda (c1: C).(drop h (S n) c1 e1)) 
42593 (\lambda (c1: C).(csubc g c1 (CHead c k t0))))) (let H9 \def (match H6 return 
42594 (\lambda (c0: C).(\lambda (c1: C).(\lambda (_: (csubc ? c0 c1)).((eq C c0 e1) 
42595 \to ((eq C c1 (CHead x0 k x1)) \to (ex2 C (\lambda (c2: C).(drop h (S n) c2 
42596 e1)) (\lambda (c2: C).(csubc g c2 (CHead c k (lift h (r k n) x1)))))))))) 
42597 with [(csubc_sort n0) \Rightarrow (\lambda (H1: (eq C (CSort n0) 
42598 e1)).(\lambda (H3: (eq C (CSort n0) (CHead x0 k x1))).(eq_ind C (CSort n0) 
42599 (\lambda (c0: C).((eq C (CSort n0) (CHead x0 k x1)) \to (ex2 C (\lambda (c1: 
42600 C).(drop h (S n) c1 c0)) (\lambda (c1: C).(csubc g c1 (CHead c k (lift h (r k 
42601 n) x1))))))) (\lambda (H4: (eq C (CSort n0) (CHead x0 k x1))).(let H5 \def 
42602 (eq_ind C (CSort n0) (\lambda (e: C).(match e return (\lambda (_: C).Prop) 
42603 with [(CSort _) \Rightarrow True | (CHead _ _ _) \Rightarrow False])) I 
42604 (CHead x0 k x1) H4) in (False_ind (ex2 C (\lambda (c1: C).(drop h (S n) c1 
42605 (CSort n0))) (\lambda (c1: C).(csubc g c1 (CHead c k (lift h (r k n) x1))))) 
42606 H5))) e1 H1 H3))) | (csubc_head c1 c2 H1 k0 v) \Rightarrow (\lambda (H3: (eq 
42607 C (CHead c1 k0 v) e1)).(\lambda (H6: (eq C (CHead c2 k0 v) (CHead x0 k 
42608 x1))).(eq_ind C (CHead c1 k0 v) (\lambda (c0: C).((eq C (CHead c2 k0 v) 
42609 (CHead x0 k x1)) \to ((csubc g c1 c2) \to (ex2 C (\lambda (c3: C).(drop h (S 
42610 n) c3 c0)) (\lambda (c3: C).(csubc g c3 (CHead c k (lift h (r k n) x1)))))))) 
42611 (\lambda (H7: (eq C (CHead c2 k0 v) (CHead x0 k x1))).(let H2 \def (f_equal C 
42612 T (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort _) 
42613 \Rightarrow v | (CHead _ _ t) \Rightarrow t])) (CHead c2 k0 v) (CHead x0 k 
42614 x1) H7) in ((let H4 \def (f_equal C K (\lambda (e: C).(match e return 
42615 (\lambda (_: C).K) with [(CSort _) \Rightarrow k0 | (CHead _ k _) \Rightarrow 
42616 k])) (CHead c2 k0 v) (CHead x0 k x1) H7) in ((let H8 \def (f_equal C C 
42617 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
42618 \Rightarrow c2 | (CHead c _ _) \Rightarrow c])) (CHead c2 k0 v) (CHead x0 k 
42619 x1) H7) in (eq_ind C x0 (\lambda (c0: C).((eq K k0 k) \to ((eq T v x1) \to 
42620 ((csubc g c1 c0) \to (ex2 C (\lambda (c3: C).(drop h (S n) c3 (CHead c1 k0 
42621 v))) (\lambda (c3: C).(csubc g c3 (CHead c k (lift h (r k n) x1))))))))) 
42622 (\lambda (H9: (eq K k0 k)).(eq_ind K k (\lambda (k1: K).((eq T v x1) \to 
42623 ((csubc g c1 x0) \to (ex2 C (\lambda (c3: C).(drop h (S n) c3 (CHead c1 k1 
42624 v))) (\lambda (c3: C).(csubc g c3 (CHead c k (lift h (r k n) x1)))))))) 
42625 (\lambda (H10: (eq T v x1)).(eq_ind T x1 (\lambda (t: T).((csubc g c1 x0) \to 
42626 (ex2 C (\lambda (c3: C).(drop h (S n) c3 (CHead c1 k t))) (\lambda (c3: 
42627 C).(csubc g c3 (CHead c k (lift h (r k n) x1))))))) (\lambda (H11: (csubc g 
42628 c1 x0)).(let H12 \def (eq_ind T v (\lambda (t: T).(eq C (CHead c1 k0 t) e1)) 
42629 H3 x1 H10) in (let H13 \def (eq_ind K k0 (\lambda (k: K).(eq C (CHead c1 k 
42630 x1) e1)) H12 k H9) in (let H_x \def (H x0 (r k n) h H5 c1 H11) in (let H5 
42631 \def H_x in (ex2_ind C (\lambda (c3: C).(drop h (r k n) c3 c1)) (\lambda (c3: 
42632 C).(csubc g c3 c)) (ex2 C (\lambda (c3: C).(drop h (S n) c3 (CHead c1 k x1))) 
42633 (\lambda (c3: C).(csubc g c3 (CHead c k (lift h (r k n) x1))))) (\lambda (x: 
42634 C).(\lambda (H14: (drop h (r k n) x c1)).(\lambda (H15: (csubc g x 
42635 c)).(ex_intro2 C (\lambda (c3: C).(drop h (S n) c3 (CHead c1 k x1))) (\lambda 
42636 (c3: C).(csubc g c3 (CHead c k (lift h (r k n) x1)))) (CHead x k (lift h (r k 
42637 n) x1)) (drop_skip k h n x c1 H14 x1) (csubc_head g x c H15 k (lift h (r k n) 
42638 x1)))))) H5)))))) v (sym_eq T v x1 H10))) k0 (sym_eq K k0 k H9))) c2 (sym_eq 
42639 C c2 x0 H8))) H4)) H2))) e1 H3 H6 H1))) | (csubc_abst c1 c2 H1 v a H3 w H5) 
42640 \Rightarrow (\lambda (H6: (eq C (CHead c1 (Bind Abst) v) e1)).(\lambda (H7: 
42641 (eq C (CHead c2 (Bind Abbr) w) (CHead x0 k x1))).(eq_ind C (CHead c1 (Bind 
42642 Abst) v) (\lambda (c0: C).((eq C (CHead c2 (Bind Abbr) w) (CHead x0 k x1)) 
42643 \to ((csubc g c1 c2) \to ((sc3 g (asucc g a) c1 v) \to ((sc3 g a c2 w) \to 
42644 (ex2 C (\lambda (c3: C).(drop h (S n) c3 c0)) (\lambda (c3: C).(csubc g c3 
42645 (CHead c k (lift h (r k n) x1)))))))))) (\lambda (H9: (eq C (CHead c2 (Bind 
42646 Abbr) w) (CHead x0 k x1))).(let H2 \def (f_equal C T (\lambda (e: C).(match e 
42647 return (\lambda (_: C).T) with [(CSort _) \Rightarrow w | (CHead _ _ t) 
42648 \Rightarrow t])) (CHead c2 (Bind Abbr) w) (CHead x0 k x1) H9) in ((let H4 
42649 \def (f_equal C K (\lambda (e: C).(match e return (\lambda (_: C).K) with 
42650 [(CSort _) \Rightarrow (Bind Abbr) | (CHead _ k _) \Rightarrow k])) (CHead c2 
42651 (Bind Abbr) w) (CHead x0 k x1) H9) in ((let H10 \def (f_equal C C (\lambda 
42652 (e: C).(match e return (\lambda (_: C).C) with [(CSort _) \Rightarrow c2 | 
42653 (CHead c _ _) \Rightarrow c])) (CHead c2 (Bind Abbr) w) (CHead x0 k x1) H9) 
42654 in (eq_ind C x0 (\lambda (c0: C).((eq K (Bind Abbr) k) \to ((eq T w x1) \to 
42655 ((csubc g c1 c0) \to ((sc3 g (asucc g a) c1 v) \to ((sc3 g a c0 w) \to (ex2 C 
42656 (\lambda (c3: C).(drop h (S n) c3 (CHead c1 (Bind Abst) v))) (\lambda (c3: 
42657 C).(csubc g c3 (CHead c k (lift h (r k n) x1))))))))))) (\lambda (H11: (eq K 
42658 (Bind Abbr) k)).(eq_ind K (Bind Abbr) (\lambda (k: K).((eq T w x1) \to 
42659 ((csubc g c1 x0) \to ((sc3 g (asucc g a) c1 v) \to ((sc3 g a x0 w) \to (ex2 C 
42660 (\lambda (c3: C).(drop h (S n) c3 (CHead c1 (Bind Abst) v))) (\lambda (c3: 
42661 C).(csubc g c3 (CHead c k (lift h (r k n) x1)))))))))) (\lambda (H12: (eq T w 
42662 x1)).(eq_ind T x1 (\lambda (t: T).((csubc g c1 x0) \to ((sc3 g (asucc g a) c1 
42663 v) \to ((sc3 g a x0 t) \to (ex2 C (\lambda (c3: C).(drop h (S n) c3 (CHead c1 
42664 (Bind Abst) v))) (\lambda (c3: C).(csubc g c3 (CHead c (Bind Abbr) (lift h (r 
42665 (Bind Abbr) n) x1))))))))) (\lambda (H13: (csubc g c1 x0)).(\lambda (H14: 
42666 (sc3 g (asucc g a) c1 v)).(\lambda (H15: (sc3 g a x0 x1)).(let H8 \def 
42667 (eq_ind_r K k (\lambda (k: K).(\forall (h0: nat).((drop h0 n (CHead c k (lift 
42668 h (r k n) x1)) (CHead x0 k x1)) \to (\forall (e1: C).((csubc g e1 (CHead x0 k 
42669 x1)) \to (ex2 C (\lambda (c1: C).(drop h0 n c1 e1)) (\lambda (c1: C).(csubc g 
42670 c1 (CHead c k (lift h (r k n) x1)))))))))) H8 (Bind Abbr) H11) in (let H16 
42671 \def (eq_ind_r K k (\lambda (k: K).(drop h (r k n) c x0)) H5 (Bind Abbr) H11) 
42672 in (let H_x \def (H x0 (r (Bind Abbr) n) h H16 c1 H13) in (let H17 \def H_x 
42673 in (ex2_ind C (\lambda (c3: C).(drop h (r (Bind Abbr) n) c3 c1)) (\lambda 
42674 (c3: C).(csubc g c3 c)) (ex2 C (\lambda (c3: C).(drop h (S n) c3 (CHead c1 
42675 (Bind Abst) v))) (\lambda (c3: C).(csubc g c3 (CHead c (Bind Abbr) (lift h (r 
42676 (Bind Abbr) n) x1))))) (\lambda (x: C).(\lambda (H18: (drop h (r (Bind Abbr) 
42677 n) x c1)).(\lambda (H19: (csubc g x c)).(ex_intro2 C (\lambda (c3: C).(drop h 
42678 (S n) c3 (CHead c1 (Bind Abst) v))) (\lambda (c3: C).(csubc g c3 (CHead c 
42679 (Bind Abbr) (lift h (r (Bind Abbr) n) x1)))) (CHead x (Bind Abst) (lift h n 
42680 v)) (drop_skip_bind h n x c1 H18 Abst v) (csubc_abst g x c H19 (lift h n v) a 
42681 (sc3_lift g (asucc g a) c1 v H14 x h n H18) (lift h (r (Bind Abbr) n) x1) 
42682 (sc3_lift g a x0 x1 H15 c h (r (Bind Abbr) n) H16)))))) H17)))))))) w (sym_eq 
42683 T w x1 H12))) k H11)) c2 (sym_eq C c2 x0 H10))) H4)) H2))) e1 H6 H7 H1 H3 
42684 H5)))]) in (H9 (refl_equal C e1) (refl_equal C (CHead x0 k x1)))) t 
42685 H4))))))))) (drop_gen_skip_l c e2 t h n k H1)))))))) d))))))) c2)).
42686
42687 theorem drop1_csubc_trans:
42688  \forall (g: G).(\forall (hds: PList).(\forall (c2: C).(\forall (e2: 
42689 C).((drop1 hds c2 e2) \to (\forall (e1: C).((csubc g e2 e1) \to (ex2 C 
42690 (\lambda (c1: C).(drop1 hds c1 e1)) (\lambda (c1: C).(csubc g c2 c1)))))))))
42691 \def
42692  \lambda (g: G).(\lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall 
42693 (c2: C).(\forall (e2: C).((drop1 p c2 e2) \to (\forall (e1: C).((csubc g e2 
42694 e1) \to (ex2 C (\lambda (c1: C).(drop1 p c1 e1)) (\lambda (c1: C).(csubc g c2 
42695 c1))))))))) (\lambda (c2: C).(\lambda (e2: C).(\lambda (H: (drop1 PNil c2 
42696 e2)).(\lambda (e1: C).(\lambda (H0: (csubc g e2 e1)).(let H1 \def (match H 
42697 return (\lambda (p: PList).(\lambda (c: C).(\lambda (c0: C).(\lambda (_: 
42698 (drop1 p c c0)).((eq PList p PNil) \to ((eq C c c2) \to ((eq C c0 e2) \to 
42699 (ex2 C (\lambda (c1: C).(drop1 PNil c1 e1)) (\lambda (c1: C).(csubc g c2 
42700 c1)))))))))) with [(drop1_nil c) \Rightarrow (\lambda (_: (eq PList PNil 
42701 PNil)).(\lambda (H2: (eq C c c2)).(\lambda (H3: (eq C c e2)).(eq_ind C c2 
42702 (\lambda (c0: C).((eq C c0 e2) \to (ex2 C (\lambda (c1: C).(drop1 PNil c1 
42703 e1)) (\lambda (c1: C).(csubc g c2 c1))))) (\lambda (H4: (eq C c2 e2)).(eq_ind 
42704 C e2 (\lambda (c0: C).(ex2 C (\lambda (c1: C).(drop1 PNil c1 e1)) (\lambda 
42705 (c1: C).(csubc g c0 c1)))) (let H \def (eq_ind_r C e2 (\lambda (c: C).(csubc 
42706 g c e1)) H0 c2 H4) in (eq_ind C c2 (\lambda (c0: C).(ex2 C (\lambda (c1: 
42707 C).(drop1 PNil c1 e1)) (\lambda (c1: C).(csubc g c0 c1)))) (ex_intro2 C 
42708 (\lambda (c1: C).(drop1 PNil c1 e1)) (\lambda (c1: C).(csubc g c2 c1)) e1 
42709 (drop1_nil e1) H) e2 H4)) c2 (sym_eq C c2 e2 H4))) c (sym_eq C c c2 H2) 
42710 H3)))) | (drop1_cons c1 c0 h d H1 c3 hds H2) \Rightarrow (\lambda (H3: (eq 
42711 PList (PCons h d hds) PNil)).(\lambda (H4: (eq C c1 c2)).(\lambda (H5: (eq C 
42712 c3 e2)).((let H6 \def (eq_ind PList (PCons h d hds) (\lambda (e: 
42713 PList).(match e return (\lambda (_: PList).Prop) with [PNil \Rightarrow False 
42714 | (PCons _ _ _) \Rightarrow True])) I PNil H3) in (False_ind ((eq C c1 c2) 
42715 \to ((eq C c3 e2) \to ((drop h d c1 c0) \to ((drop1 hds c0 c3) \to (ex2 C 
42716 (\lambda (c2: C).(drop1 PNil c2 e1)) (\lambda (c4: C).(csubc g c2 c4))))))) 
42717 H6)) H4 H5 H1 H2))))]) in (H1 (refl_equal PList PNil) (refl_equal C c2) 
42718 (refl_equal C e2)))))))) (\lambda (n: nat).(\lambda (n0: nat).(\lambda (p: 
42719 PList).(\lambda (H: ((\forall (c2: C).(\forall (e2: C).((drop1 p c2 e2) \to 
42720 (\forall (e1: C).((csubc g e2 e1) \to (ex2 C (\lambda (c1: C).(drop1 p c1 
42721 e1)) (\lambda (c1: C).(csubc g c2 c1)))))))))).(\lambda (c2: C).(\lambda (e2: 
42722 C).(\lambda (H0: (drop1 (PCons n n0 p) c2 e2)).(\lambda (e1: C).(\lambda (H1: 
42723 (csubc g e2 e1)).(let H2 \def (match H0 return (\lambda (p0: PList).(\lambda 
42724 (c: C).(\lambda (c0: C).(\lambda (_: (drop1 p0 c c0)).((eq PList p0 (PCons n 
42725 n0 p)) \to ((eq C c c2) \to ((eq C c0 e2) \to (ex2 C (\lambda (c1: C).(drop1 
42726 (PCons n n0 p) c1 e1)) (\lambda (c1: C).(csubc g c2 c1)))))))))) with 
42727 [(drop1_nil c) \Rightarrow (\lambda (H2: (eq PList PNil (PCons n n0 
42728 p))).(\lambda (H3: (eq C c c2)).(\lambda (H4: (eq C c e2)).((let H5 \def 
42729 (eq_ind PList PNil (\lambda (e: PList).(match e return (\lambda (_: 
42730 PList).Prop) with [PNil \Rightarrow True | (PCons _ _ _) \Rightarrow False])) 
42731 I (PCons n n0 p) H2) in (False_ind ((eq C c c2) \to ((eq C c e2) \to (ex2 C 
42732 (\lambda (c1: C).(drop1 (PCons n n0 p) c1 e1)) (\lambda (c1: C).(csubc g c2 
42733 c1))))) H5)) H3 H4)))) | (drop1_cons c1 c0 h d H2 c3 hds H3) \Rightarrow 
42734 (\lambda (H4: (eq PList (PCons h d hds) (PCons n n0 p))).(\lambda (H5: (eq C 
42735 c1 c2)).(\lambda (H6: (eq C c3 e2)).((let H7 \def (f_equal PList PList 
42736 (\lambda (e: PList).(match e return (\lambda (_: PList).PList) with [PNil 
42737 \Rightarrow hds | (PCons _ _ p) \Rightarrow p])) (PCons h d hds) (PCons n n0 
42738 p) H4) in ((let H8 \def (f_equal PList nat (\lambda (e: PList).(match e 
42739 return (\lambda (_: PList).nat) with [PNil \Rightarrow d | (PCons _ n _) 
42740 \Rightarrow n])) (PCons h d hds) (PCons n n0 p) H4) in ((let H9 \def (f_equal 
42741 PList nat (\lambda (e: PList).(match e return (\lambda (_: PList).nat) with 
42742 [PNil \Rightarrow h | (PCons n _ _) \Rightarrow n])) (PCons h d hds) (PCons n 
42743 n0 p) H4) in (eq_ind nat n (\lambda (n1: nat).((eq nat d n0) \to ((eq PList 
42744 hds p) \to ((eq C c1 c2) \to ((eq C c3 e2) \to ((drop n1 d c1 c0) \to ((drop1 
42745 hds c0 c3) \to (ex2 C (\lambda (c2: C).(drop1 (PCons n n0 p) c2 e1)) (\lambda 
42746 (c4: C).(csubc g c2 c4)))))))))) (\lambda (H10: (eq nat d n0)).(eq_ind nat n0 
42747 (\lambda (n1: nat).((eq PList hds p) \to ((eq C c1 c2) \to ((eq C c3 e2) \to 
42748 ((drop n n1 c1 c0) \to ((drop1 hds c0 c3) \to (ex2 C (\lambda (c2: C).(drop1 
42749 (PCons n n0 p) c2 e1)) (\lambda (c4: C).(csubc g c2 c4))))))))) (\lambda 
42750 (H11: (eq PList hds p)).(eq_ind PList p (\lambda (p0: PList).((eq C c1 c2) 
42751 \to ((eq C c3 e2) \to ((drop n n0 c1 c0) \to ((drop1 p0 c0 c3) \to (ex2 C 
42752 (\lambda (c2: C).(drop1 (PCons n n0 p) c2 e1)) (\lambda (c4: C).(csubc g c2 
42753 c4)))))))) (\lambda (H12: (eq C c1 c2)).(eq_ind C c2 (\lambda (c: C).((eq C 
42754 c3 e2) \to ((drop n n0 c c0) \to ((drop1 p c0 c3) \to (ex2 C (\lambda (c2: 
42755 C).(drop1 (PCons n n0 p) c2 e1)) (\lambda (c4: C).(csubc g c2 c4))))))) 
42756 (\lambda (H13: (eq C c3 e2)).(eq_ind C e2 (\lambda (c: C).((drop n n0 c2 c0) 
42757 \to ((drop1 p c0 c) \to (ex2 C (\lambda (c2: C).(drop1 (PCons n n0 p) c2 e1)) 
42758 (\lambda (c4: C).(csubc g c2 c4)))))) (\lambda (H14: (drop n n0 c2 
42759 c0)).(\lambda (H15: (drop1 p c0 e2)).(let H_x \def (H c0 e2 H15 e1 H1) in 
42760 (let H0 \def H_x in (ex2_ind C (\lambda (c2: C).(drop1 p c2 e1)) (\lambda 
42761 (c2: C).(csubc g c0 c2)) (ex2 C (\lambda (c2: C).(drop1 (PCons n n0 p) c2 
42762 e1)) (\lambda (c4: C).(csubc g c2 c4))) (\lambda (x: C).(\lambda (H1: (drop1 
42763 p x e1)).(\lambda (H16: (csubc g c0 x)).(let H_x0 \def (drop_csubc_trans g c2 
42764 c0 n0 n H14 x H16) in (let H \def H_x0 in (ex2_ind C (\lambda (c2: C).(drop n 
42765 n0 c2 x)) (\lambda (c4: C).(csubc g c2 c4)) (ex2 C (\lambda (c2: C).(drop1 
42766 (PCons n n0 p) c2 e1)) (\lambda (c4: C).(csubc g c2 c4))) (\lambda (x0: 
42767 C).(\lambda (H17: (drop n n0 x0 x)).(\lambda (H18: (csubc g c2 
42768 x0)).(ex_intro2 C (\lambda (c2: C).(drop1 (PCons n n0 p) c2 e1)) (\lambda 
42769 (c4: C).(csubc g c2 c4)) x0 (drop1_cons x0 x n n0 H17 e1 p H1) H18)))) 
42770 H)))))) H0))))) c3 (sym_eq C c3 e2 H13))) c1 (sym_eq C c1 c2 H12))) hds 
42771 (sym_eq PList hds p H11))) d (sym_eq nat d n0 H10))) h (sym_eq nat h n H9))) 
42772 H8)) H7)) H5 H6 H2 H3))))]) in (H2 (refl_equal PList (PCons n n0 p)) 
42773 (refl_equal C c2) (refl_equal C e2)))))))))))) hds)).
42774
42775 theorem csubc_drop1_conf_rev:
42776  \forall (g: G).(\forall (hds: PList).(\forall (c2: C).(\forall (e2: 
42777 C).((drop1 hds c2 e2) \to (\forall (e1: C).((csubc g e1 e2) \to (ex2 C 
42778 (\lambda (c1: C).(drop1 hds c1 e1)) (\lambda (c1: C).(csubc g c1 c2)))))))))
42779 \def
42780  \lambda (g: G).(\lambda (hds: PList).(PList_ind (\lambda (p: PList).(\forall 
42781 (c2: C).(\forall (e2: C).((drop1 p c2 e2) \to (\forall (e1: C).((csubc g e1 
42782 e2) \to (ex2 C (\lambda (c1: C).(drop1 p c1 e1)) (\lambda (c1: C).(csubc g c1 
42783 c2))))))))) (\lambda (c2: C).(\lambda (e2: C).(\lambda (H: (drop1 PNil c2 
42784 e2)).(\lambda (e1: C).(\lambda (H0: (csubc g e1 e2)).(let H1 \def (match H 
42785 return (\lambda (p: PList).(\lambda (c: C).(\lambda (c0: C).(\lambda (_: 
42786 (drop1 p c c0)).((eq PList p PNil) \to ((eq C c c2) \to ((eq C c0 e2) \to 
42787 (ex2 C (\lambda (c1: C).(drop1 PNil c1 e1)) (\lambda (c1: C).(csubc g c1 
42788 c2)))))))))) with [(drop1_nil c) \Rightarrow (\lambda (_: (eq PList PNil 
42789 PNil)).(\lambda (H2: (eq C c c2)).(\lambda (H3: (eq C c e2)).(eq_ind C c2 
42790 (\lambda (c0: C).((eq C c0 e2) \to (ex2 C (\lambda (c1: C).(drop1 PNil c1 
42791 e1)) (\lambda (c1: C).(csubc g c1 c2))))) (\lambda (H4: (eq C c2 e2)).(eq_ind 
42792 C e2 (\lambda (c0: C).(ex2 C (\lambda (c1: C).(drop1 PNil c1 e1)) (\lambda 
42793 (c1: C).(csubc g c1 c0)))) (let H \def (eq_ind_r C e2 (\lambda (c: C).(csubc 
42794 g e1 c)) H0 c2 H4) in (eq_ind C c2 (\lambda (c0: C).(ex2 C (\lambda (c1: 
42795 C).(drop1 PNil c1 e1)) (\lambda (c1: C).(csubc g c1 c0)))) (ex_intro2 C 
42796 (\lambda (c1: C).(drop1 PNil c1 e1)) (\lambda (c1: C).(csubc g c1 c2)) e1 
42797 (drop1_nil e1) H) e2 H4)) c2 (sym_eq C c2 e2 H4))) c (sym_eq C c c2 H2) 
42798 H3)))) | (drop1_cons c1 c0 h d H1 c3 hds H2) \Rightarrow (\lambda (H3: (eq 
42799 PList (PCons h d hds) PNil)).(\lambda (H4: (eq C c1 c2)).(\lambda (H5: (eq C 
42800 c3 e2)).((let H6 \def (eq_ind PList (PCons h d hds) (\lambda (e: 
42801 PList).(match e return (\lambda (_: PList).Prop) with [PNil \Rightarrow False 
42802 | (PCons _ _ _) \Rightarrow True])) I PNil H3) in (False_ind ((eq C c1 c2) 
42803 \to ((eq C c3 e2) \to ((drop h d c1 c0) \to ((drop1 hds c0 c3) \to (ex2 C 
42804 (\lambda (c2: C).(drop1 PNil c2 e1)) (\lambda (c4: C).(csubc g c4 c2))))))) 
42805 H6)) H4 H5 H1 H2))))]) in (H1 (refl_equal PList PNil) (refl_equal C c2) 
42806 (refl_equal C e2)))))))) (\lambda (n: nat).(\lambda (n0: nat).(\lambda (p: 
42807 PList).(\lambda (H: ((\forall (c2: C).(\forall (e2: C).((drop1 p c2 e2) \to 
42808 (\forall (e1: C).((csubc g e1 e2) \to (ex2 C (\lambda (c1: C).(drop1 p c1 
42809 e1)) (\lambda (c1: C).(csubc g c1 c2)))))))))).(\lambda (c2: C).(\lambda (e2: 
42810 C).(\lambda (H0: (drop1 (PCons n n0 p) c2 e2)).(\lambda (e1: C).(\lambda (H1: 
42811 (csubc g e1 e2)).(let H2 \def (match H0 return (\lambda (p0: PList).(\lambda 
42812 (c: C).(\lambda (c0: C).(\lambda (_: (drop1 p0 c c0)).((eq PList p0 (PCons n 
42813 n0 p)) \to ((eq C c c2) \to ((eq C c0 e2) \to (ex2 C (\lambda (c1: C).(drop1 
42814 (PCons n n0 p) c1 e1)) (\lambda (c1: C).(csubc g c1 c2)))))))))) with 
42815 [(drop1_nil c) \Rightarrow (\lambda (H2: (eq PList PNil (PCons n n0 
42816 p))).(\lambda (H3: (eq C c c2)).(\lambda (H4: (eq C c e2)).((let H5 \def 
42817 (eq_ind PList PNil (\lambda (e: PList).(match e return (\lambda (_: 
42818 PList).Prop) with [PNil \Rightarrow True | (PCons _ _ _) \Rightarrow False])) 
42819 I (PCons n n0 p) H2) in (False_ind ((eq C c c2) \to ((eq C c e2) \to (ex2 C 
42820 (\lambda (c1: C).(drop1 (PCons n n0 p) c1 e1)) (\lambda (c1: C).(csubc g c1 
42821 c2))))) H5)) H3 H4)))) | (drop1_cons c1 c0 h d H2 c3 hds H3) \Rightarrow 
42822 (\lambda (H4: (eq PList (PCons h d hds) (PCons n n0 p))).(\lambda (H5: (eq C 
42823 c1 c2)).(\lambda (H6: (eq C c3 e2)).((let H7 \def (f_equal PList PList 
42824 (\lambda (e: PList).(match e return (\lambda (_: PList).PList) with [PNil 
42825 \Rightarrow hds | (PCons _ _ p) \Rightarrow p])) (PCons h d hds) (PCons n n0 
42826 p) H4) in ((let H8 \def (f_equal PList nat (\lambda (e: PList).(match e 
42827 return (\lambda (_: PList).nat) with [PNil \Rightarrow d | (PCons _ n _) 
42828 \Rightarrow n])) (PCons h d hds) (PCons n n0 p) H4) in ((let H9 \def (f_equal 
42829 PList nat (\lambda (e: PList).(match e return (\lambda (_: PList).nat) with 
42830 [PNil \Rightarrow h | (PCons n _ _) \Rightarrow n])) (PCons h d hds) (PCons n 
42831 n0 p) H4) in (eq_ind nat n (\lambda (n1: nat).((eq nat d n0) \to ((eq PList 
42832 hds p) \to ((eq C c1 c2) \to ((eq C c3 e2) \to ((drop n1 d c1 c0) \to ((drop1 
42833 hds c0 c3) \to (ex2 C (\lambda (c2: C).(drop1 (PCons n n0 p) c2 e1)) (\lambda 
42834 (c4: C).(csubc g c4 c2)))))))))) (\lambda (H10: (eq nat d n0)).(eq_ind nat n0 
42835 (\lambda (n1: nat).((eq PList hds p) \to ((eq C c1 c2) \to ((eq C c3 e2) \to 
42836 ((drop n n1 c1 c0) \to ((drop1 hds c0 c3) \to (ex2 C (\lambda (c2: C).(drop1 
42837 (PCons n n0 p) c2 e1)) (\lambda (c4: C).(csubc g c4 c2))))))))) (\lambda 
42838 (H11: (eq PList hds p)).(eq_ind PList p (\lambda (p0: PList).((eq C c1 c2) 
42839 \to ((eq C c3 e2) \to ((drop n n0 c1 c0) \to ((drop1 p0 c0 c3) \to (ex2 C 
42840 (\lambda (c2: C).(drop1 (PCons n n0 p) c2 e1)) (\lambda (c4: C).(csubc g c4 
42841 c2)))))))) (\lambda (H12: (eq C c1 c2)).(eq_ind C c2 (\lambda (c: C).((eq C 
42842 c3 e2) \to ((drop n n0 c c0) \to ((drop1 p c0 c3) \to (ex2 C (\lambda (c2: 
42843 C).(drop1 (PCons n n0 p) c2 e1)) (\lambda (c4: C).(csubc g c4 c2))))))) 
42844 (\lambda (H13: (eq C c3 e2)).(eq_ind C e2 (\lambda (c: C).((drop n n0 c2 c0) 
42845 \to ((drop1 p c0 c) \to (ex2 C (\lambda (c2: C).(drop1 (PCons n n0 p) c2 e1)) 
42846 (\lambda (c4: C).(csubc g c4 c2)))))) (\lambda (H14: (drop n n0 c2 
42847 c0)).(\lambda (H15: (drop1 p c0 e2)).(let H_x \def (H c0 e2 H15 e1 H1) in 
42848 (let H0 \def H_x in (ex2_ind C (\lambda (c2: C).(drop1 p c2 e1)) (\lambda 
42849 (c2: C).(csubc g c2 c0)) (ex2 C (\lambda (c2: C).(drop1 (PCons n n0 p) c2 
42850 e1)) (\lambda (c4: C).(csubc g c4 c2))) (\lambda (x: C).(\lambda (H1: (drop1 
42851 p x e1)).(\lambda (H16: (csubc g x c0)).(let H_x0 \def (csubc_drop_conf_rev g 
42852 c2 c0 n0 n H14 x H16) in (let H \def H_x0 in (ex2_ind C (\lambda (c2: 
42853 C).(drop n n0 c2 x)) (\lambda (c4: C).(csubc g c4 c2)) (ex2 C (\lambda (c2: 
42854 C).(drop1 (PCons n n0 p) c2 e1)) (\lambda (c4: C).(csubc g c4 c2))) (\lambda 
42855 (x0: C).(\lambda (H17: (drop n n0 x0 x)).(\lambda (H18: (csubc g x0 
42856 c2)).(ex_intro2 C (\lambda (c2: C).(drop1 (PCons n n0 p) c2 e1)) (\lambda 
42857 (c4: C).(csubc g c4 c2)) x0 (drop1_cons x0 x n n0 H17 e1 p H1) H18)))) 
42858 H)))))) H0))))) c3 (sym_eq C c3 e2 H13))) c1 (sym_eq C c1 c2 H12))) hds 
42859 (sym_eq PList hds p H11))) d (sym_eq nat d n0 H10))) h (sym_eq nat h n H9))) 
42860 H8)) H7)) H5 H6 H2 H3))))]) in (H2 (refl_equal PList (PCons n n0 p)) 
42861 (refl_equal C c2) (refl_equal C e2)))))))))))) hds)).
42862
42863 theorem drop1_ceqc_trans:
42864  \forall (g: G).(\forall (hds: PList).(\forall (c2: C).(\forall (e2: 
42865 C).((drop1 hds c2 e2) \to (\forall (e1: C).((ceqc g e2 e1) \to (ex2 C 
42866 (\lambda (c1: C).(drop1 hds c1 e1)) (\lambda (c1: C).(ceqc g c2 c1)))))))))
42867 \def
42868  \lambda (g: G).(\lambda (hds: PList).(\lambda (c2: C).(\lambda (e2: 
42869 C).(\lambda (H: (drop1 hds c2 e2)).(\lambda (e1: C).(\lambda (H0: (ceqc g e2 
42870 e1)).(let H1 \def H0 in (or_ind (csubc g e2 e1) (csubc g e1 e2) (ex2 C 
42871 (\lambda (c1: C).(drop1 hds c1 e1)) (\lambda (c1: C).(ceqc g c2 c1))) 
42872 (\lambda (H2: (csubc g e2 e1)).(let H_x \def (drop1_csubc_trans g hds c2 e2 H 
42873 e1 H2) in (let H3 \def H_x in (ex2_ind C (\lambda (c1: C).(drop1 hds c1 e1)) 
42874 (\lambda (c1: C).(csubc g c2 c1)) (ex2 C (\lambda (c1: C).(drop1 hds c1 e1)) 
42875 (\lambda (c1: C).(ceqc g c2 c1))) (\lambda (x: C).(\lambda (H4: (drop1 hds x 
42876 e1)).(\lambda (H5: (csubc g c2 x)).(ex_intro2 C (\lambda (c1: C).(drop1 hds 
42877 c1 e1)) (\lambda (c1: C).(ceqc g c2 c1)) x H4 (or_introl (csubc g c2 x) 
42878 (csubc g x c2) H5))))) H3)))) (\lambda (H2: (csubc g e1 e2)).(let H_x \def 
42879 (csubc_drop1_conf_rev g hds c2 e2 H e1 H2) in (let H3 \def H_x in (ex2_ind C 
42880 (\lambda (c1: C).(drop1 hds c1 e1)) (\lambda (c1: C).(csubc g c1 c2)) (ex2 C 
42881 (\lambda (c1: C).(drop1 hds c1 e1)) (\lambda (c1: C).(ceqc g c2 c1))) 
42882 (\lambda (x: C).(\lambda (H4: (drop1 hds x e1)).(\lambda (H5: (csubc g x 
42883 c2)).(ex_intro2 C (\lambda (c1: C).(drop1 hds c1 e1)) (\lambda (c1: C).(ceqc 
42884 g c2 c1)) x H4 (or_intror (csubc g c2 x) (csubc g x c2) H5))))) H3)))) 
42885 H1)))))))).
42886
42887 axiom sc3_ceqc_trans:
42888  \forall (g: G).(\forall (a: A).(\forall (vs: TList).(\forall (c1: 
42889 C).(\forall (t: T).((sc3 g a c1 (THeads (Flat Appl) vs t)) \to (\forall (c2: 
42890 C).((ceqc g c2 c1) \to (sc3 g a c2 (THeads (Flat Appl) vs t)))))))))
42891 .
42892
42893 theorem sc3_arity:
42894  \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (a: A).((arity g c t 
42895 a) \to (sc3 g a c t)))))
42896 \def
42897  \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (a: A).(\lambda (H: 
42898 (arity g c t a)).(arity_ind g (\lambda (c0: C).(\lambda (t0: T).(\lambda (a0: 
42899 A).(sc3 g a0 c0 t0)))) (\lambda (c0: C).(\lambda (n: nat).(conj (arity g c0 
42900 (TSort n) (ASort O n)) (sn3 c0 (TSort n)) (arity_sort g c0 n) (sn3_nf2 c0 
42901 (TSort n) (nf2_sort c0 n))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u: 
42902 T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind Abbr) 
42903 u))).(\lambda (a0: A).(\lambda (_: (arity g d u a0)).(\lambda (H2: (sc3 g a0 
42904 d u)).(let H_y \def (sc3_abbr g a0 TNil) in (H_y i d u c0 (sc3_lift g a0 d u 
42905 H2 c0 (S i) O (getl_drop Abbr c0 d u i H0)) H0)))))))))) (\lambda (c0: 
42906 C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 
42907 (CHead d (Bind Abst) u))).(\lambda (a0: A).(\lambda (H1: (arity g d u (asucc 
42908 g a0))).(\lambda (_: (sc3 g (asucc g a0) d u)).(let H3 \def (sc3_abst g a0 
42909 TNil) in (H3 c0 i (arity_abst g c0 d u i H0 a0 H1) (nf2_lref_abst c0 d u i 
42910 H0) I)))))))))) (\lambda (b: B).(\lambda (H0: (not (eq B b Abst))).(\lambda 
42911 (c0: C).(\lambda (u: T).(\lambda (a1: A).(\lambda (_: (arity g c0 u 
42912 a1)).(\lambda (H2: (sc3 g a1 c0 u)).(\lambda (t0: T).(\lambda (a2: 
42913 A).(\lambda (_: (arity g (CHead c0 (Bind b) u) t0 a2)).(\lambda (H4: (sc3 g 
42914 a2 (CHead c0 (Bind b) u) t0)).(let H_y \def (sc3_bind g b H0 a1 a2 TNil) in 
42915 (H_y c0 u t0 H4 H2))))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda 
42916 (a1: A).(\lambda (H0: (arity g c0 u (asucc g a1))).(\lambda (H1: (sc3 g 
42917 (asucc g a1) c0 u)).(\lambda (t0: T).(\lambda (a2: A).(\lambda (H2: (arity g 
42918 (CHead c0 (Bind Abst) u) t0 a2)).(\lambda (H3: (sc3 g a2 (CHead c0 (Bind 
42919 Abst) u) t0)).(conj (arity g c0 (THead (Bind Abst) u t0) (AHead a1 a2)) 
42920 (\forall (d: C).(\forall (w: T).((sc3 g a1 d w) \to (\forall (is: 
42921 PList).((drop1 is d c0) \to (sc3 g a2 d (THead (Flat Appl) w (lift1 is (THead 
42922 (Bind Abst) u t0))))))))) (arity_head g c0 u a1 H0 t0 a2 H2) (\lambda (d: 
42923 C).(\lambda (w: T).(\lambda (H4: (sc3 g a1 d w)).(\lambda (is: 
42924 PList).(\lambda (H5: (drop1 is d c0)).(let H6 \def (sc3_appl g a1 a2 TNil) in 
42925 (eq_ind_r T (THead (Bind Abst) (lift1 is u) (lift1 (Ss is) t0)) (\lambda (t1: 
42926 T).(sc3 g a2 d (THead (Flat Appl) w t1))) (H6 d w (lift1 (Ss is) t0) (let H_y 
42927 \def (sc3_bind g Abbr (\lambda (H3: (eq B Abbr Abst)).(not_abbr_abst H3)) a1 
42928 a2 TNil) in (H_y d w (lift1 (Ss is) t0) (let H7 \def (sc3_ceqc_trans g a2 
42929 TNil) in (H7 (CHead d (Bind Abst) (lift1 is u)) (lift1 (Ss is) t0) (sc3_lift1 
42930 g (CHead c0 (Bind Abst) u) a2 (Ss is) (CHead d (Bind Abst) (lift1 is u)) t0 
42931 H3 (drop1_skip_bind Abst c0 is d u H5)) (CHead d (Bind Abbr) w) (or_intror 
42932 (csubc g (CHead d (Bind Abbr) w) (CHead d (Bind Abst) (lift1 is u))) (csubc g 
42933 (CHead d (Bind Abst) (lift1 is u)) (CHead d (Bind Abbr) w)) (csubc_abst g d d 
42934 (scubc_refl g d) (lift1 is u) a1 (sc3_lift1 g c0 (asucc g a1) is d u H1 H5) w 
42935 H4)))) H4)) H4 (lift1 is u) (sc3_lift1 g c0 (asucc g a1) is d u H1 H5)) 
42936 (lift1 is (THead (Bind Abst) u t0)) (lift1_bind Abst is u 
42937 t0)))))))))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (a1: 
42938 A).(\lambda (_: (arity g c0 u a1)).(\lambda (H1: (sc3 g a1 c0 u)).(\lambda 
42939 (t0: T).(\lambda (a2: A).(\lambda (_: (arity g c0 t0 (AHead a1 a2))).(\lambda 
42940 (H3: (sc3 g (AHead a1 a2) c0 t0)).(let H4 \def H3 in (and_ind (arity g c0 t0 
42941 (AHead a1 a2)) (\forall (d: C).(\forall (w: T).((sc3 g a1 d w) \to (\forall 
42942 (is: PList).((drop1 is d c0) \to (sc3 g a2 d (THead (Flat Appl) w (lift1 is 
42943 t0)))))))) (sc3 g a2 c0 (THead (Flat Appl) u t0)) (\lambda (_: (arity g c0 t0 
42944 (AHead a1 a2))).(\lambda (H6: ((\forall (d: C).(\forall (w: T).((sc3 g a1 d 
42945 w) \to (\forall (is: PList).((drop1 is d c0) \to (sc3 g a2 d (THead (Flat 
42946 Appl) w (lift1 is t0)))))))))).(let H_y \def (H6 c0 u H1 PNil) in (H_y 
42947 (drop1_nil c0))))) H4))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda 
42948 (a0: A).(\lambda (_: (arity g c0 u (asucc g a0))).(\lambda (H1: (sc3 g (asucc 
42949 g a0) c0 u)).(\lambda (t0: T).(\lambda (_: (arity g c0 t0 a0)).(\lambda (H3: 
42950 (sc3 g a0 c0 t0)).(let H_y \def (sc3_cast g a0 TNil) in (H_y c0 u H1 t0 
42951 H3)))))))))) (\lambda (c0: C).(\lambda (t0: T).(\lambda (a1: A).(\lambda (_: 
42952 (arity g c0 t0 a1)).(\lambda (H1: (sc3 g a1 c0 t0)).(\lambda (a2: A).(\lambda 
42953 (H2: (leq g a1 a2)).(sc3_repl g a1 c0 t0 H1 a2 H2)))))))) c t a H))))).
42954
42955 definition pc1:
42956  T \to (T \to Prop)
42957 \def
42958  \lambda (t1: T).(\lambda (t2: T).(ex2 T (\lambda (t: T).(pr1 t1 t)) (\lambda 
42959 (t: T).(pr1 t2 t)))).
42960
42961 theorem pc1_pr0_r:
42962  \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (pc1 t1 t2)))
42963 \def
42964  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t1 t2)).(ex_intro2 T 
42965 (\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t2 t)) t2 (pr1_pr0 t1 t2 H) 
42966 (pr1_r t2)))).
42967
42968 theorem pc1_pr0_x:
42969  \forall (t1: T).(\forall (t2: T).((pr0 t2 t1) \to (pc1 t1 t2)))
42970 \def
42971  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t2 t1)).(ex_intro2 T 
42972 (\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t2 t)) t1 (pr1_r t1) 
42973 (pr1_pr0 t2 t1 H)))).
42974
42975 theorem pc1_pr0_u:
42976  \forall (t2: T).(\forall (t1: T).((pr0 t1 t2) \to (\forall (t3: T).((pc1 t2 
42977 t3) \to (pc1 t1 t3)))))
42978 \def
42979  \lambda (t2: T).(\lambda (t1: T).(\lambda (H: (pr0 t1 t2)).(\lambda (t3: 
42980 T).(\lambda (H0: (pc1 t2 t3)).(let H1 \def H0 in (ex2_ind T (\lambda (t: 
42981 T).(pr1 t2 t)) (\lambda (t: T).(pr1 t3 t)) (pc1 t1 t3) (\lambda (x: 
42982 T).(\lambda (H2: (pr1 t2 x)).(\lambda (H3: (pr1 t3 x)).(ex_intro2 T (\lambda 
42983 (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t3 t)) x (pr1_u t2 t1 H x H2) H3)))) 
42984 H1)))))).
42985
42986 theorem pc1_refl:
42987  \forall (t: T).(pc1 t t)
42988 \def
42989  \lambda (t: T).(ex_intro2 T (\lambda (t0: T).(pr1 t t0)) (\lambda (t0: 
42990 T).(pr1 t t0)) t (pr1_r t) (pr1_r t)).
42991
42992 theorem pc1_s:
42993  \forall (t2: T).(\forall (t1: T).((pc1 t1 t2) \to (pc1 t2 t1)))
42994 \def
42995  \lambda (t2: T).(\lambda (t1: T).(\lambda (H: (pc1 t1 t2)).(let H0 \def H in 
42996 (ex2_ind T (\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t2 t)) (pc1 t2 
42997 t1) (\lambda (x: T).(\lambda (H1: (pr1 t1 x)).(\lambda (H2: (pr1 t2 
42998 x)).(ex_intro2 T (\lambda (t: T).(pr1 t2 t)) (\lambda (t: T).(pr1 t1 t)) x H2 
42999 H1)))) H0)))).
43000
43001 theorem pc1_head_1:
43002  \forall (u1: T).(\forall (u2: T).((pc1 u1 u2) \to (\forall (t: T).(\forall 
43003 (k: K).(pc1 (THead k u1 t) (THead k u2 t))))))
43004 \def
43005  \lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pc1 u1 u2)).(\lambda (t: 
43006 T).(\lambda (k: K).(let H0 \def H in (ex2_ind T (\lambda (t0: T).(pr1 u1 t0)) 
43007 (\lambda (t0: T).(pr1 u2 t0)) (pc1 (THead k u1 t) (THead k u2 t)) (\lambda 
43008 (x: T).(\lambda (H1: (pr1 u1 x)).(\lambda (H2: (pr1 u2 x)).(ex_intro2 T 
43009 (\lambda (t0: T).(pr1 (THead k u1 t) t0)) (\lambda (t0: T).(pr1 (THead k u2 
43010 t) t0)) (THead k x t) (pr1_head_1 u1 x H1 t k) (pr1_head_1 u2 x H2 t k))))) 
43011 H0)))))).
43012
43013 theorem pc1_head_2:
43014  \forall (t1: T).(\forall (t2: T).((pc1 t1 t2) \to (\forall (u: T).(\forall 
43015 (k: K).(pc1 (THead k u t1) (THead k u t2))))))
43016 \def
43017  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc1 t1 t2)).(\lambda (u: 
43018 T).(\lambda (k: K).(let H0 \def H in (ex2_ind T (\lambda (t: T).(pr1 t1 t)) 
43019 (\lambda (t: T).(pr1 t2 t)) (pc1 (THead k u t1) (THead k u t2)) (\lambda (x: 
43020 T).(\lambda (H1: (pr1 t1 x)).(\lambda (H2: (pr1 t2 x)).(ex_intro2 T (\lambda 
43021 (t: T).(pr1 (THead k u t1) t)) (\lambda (t: T).(pr1 (THead k u t2) t)) (THead 
43022 k u x) (pr1_head_2 t1 x H1 u k) (pr1_head_2 t2 x H2 u k))))) H0)))))).
43023
43024 theorem pc1_t:
43025  \forall (t2: T).(\forall (t1: T).((pc1 t1 t2) \to (\forall (t3: T).((pc1 t2 
43026 t3) \to (pc1 t1 t3)))))
43027 \def
43028  \lambda (t2: T).(\lambda (t1: T).(\lambda (H: (pc1 t1 t2)).(\lambda (t3: 
43029 T).(\lambda (H0: (pc1 t2 t3)).(let H1 \def H0 in (ex2_ind T (\lambda (t: 
43030 T).(pr1 t2 t)) (\lambda (t: T).(pr1 t3 t)) (pc1 t1 t3) (\lambda (x: 
43031 T).(\lambda (H2: (pr1 t2 x)).(\lambda (H3: (pr1 t3 x)).(let H4 \def H in 
43032 (ex2_ind T (\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t2 t)) (pc1 t1 
43033 t3) (\lambda (x0: T).(\lambda (H5: (pr1 t1 x0)).(\lambda (H6: (pr1 t2 
43034 x0)).(ex2_ind T (\lambda (t: T).(pr1 x0 t)) (\lambda (t: T).(pr1 x t)) (pc1 
43035 t1 t3) (\lambda (x1: T).(\lambda (H7: (pr1 x0 x1)).(\lambda (H8: (pr1 x 
43036 x1)).(ex_intro2 T (\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t3 t)) x1 
43037 (pr1_t x0 t1 H5 x1 H7) (pr1_t x t3 H3 x1 H8))))) (pr1_confluence t2 x0 H6 x 
43038 H2))))) H4))))) H1)))))).
43039
43040 theorem pc1_pr0_u2:
43041  \forall (t0: T).(\forall (t1: T).((pr0 t0 t1) \to (\forall (t2: T).((pc1 t0 
43042 t2) \to (pc1 t1 t2)))))
43043 \def
43044  \lambda (t0: T).(\lambda (t1: T).(\lambda (H: (pr0 t0 t1)).(\lambda (t2: 
43045 T).(\lambda (H0: (pc1 t0 t2)).(pc1_t t0 t1 (pc1_pr0_x t1 t0 H) t2 H0))))).
43046
43047 theorem pc1_head:
43048  \forall (u1: T).(\forall (u2: T).((pc1 u1 u2) \to (\forall (t1: T).(\forall 
43049 (t2: T).((pc1 t1 t2) \to (\forall (k: K).(pc1 (THead k u1 t1) (THead k u2 
43050 t2))))))))
43051 \def
43052  \lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pc1 u1 u2)).(\lambda (t1: 
43053 T).(\lambda (t2: T).(\lambda (H0: (pc1 t1 t2)).(\lambda (k: K).(pc1_t (THead 
43054 k u2 t1) (THead k u1 t1) (pc1_head_1 u1 u2 H t1 k) (THead k u2 t2) 
43055 (pc1_head_2 t1 t2 H0 u2 k)))))))).
43056
43057 definition pc3:
43058  C \to (T \to (T \to Prop))
43059 \def
43060  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(ex2 T (\lambda (t: T).(pr3 
43061 c t1 t)) (\lambda (t: T).(pr3 c t2 t))))).
43062
43063 theorem clear_pc3_trans:
43064  \forall (c2: C).(\forall (t1: T).(\forall (t2: T).((pc3 c2 t1 t2) \to 
43065 (\forall (c1: C).((clear c1 c2) \to (pc3 c1 t1 t2))))))
43066 \def
43067  \lambda (c2: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3 c2 t1 
43068 t2)).(\lambda (c1: C).(\lambda (H0: (clear c1 c2)).(let H1 \def H in (ex2_ind 
43069 T (\lambda (t: T).(pr3 c2 t1 t)) (\lambda (t: T).(pr3 c2 t2 t)) (pc3 c1 t1 
43070 t2) (\lambda (x: T).(\lambda (H2: (pr3 c2 t1 x)).(\lambda (H3: (pr3 c2 t2 
43071 x)).(ex_intro2 T (\lambda (t: T).(pr3 c1 t1 t)) (\lambda (t: T).(pr3 c1 t2 
43072 t)) x (clear_pr3_trans c2 t1 x H2 c1 H0) (clear_pr3_trans c2 t2 x H3 c1 
43073 H0))))) H1))))))).
43074
43075 theorem pc3_pr2_r:
43076  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (pc3 c 
43077 t1 t2))))
43078 \def
43079  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t1 
43080 t2)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) 
43081 t2 (pr3_pr2 c t1 t2 H) (pr3_refl c t2))))).
43082
43083 theorem pc3_pr2_x:
43084  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t2 t1) \to (pc3 c 
43085 t1 t2))))
43086 \def
43087  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t2 
43088 t1)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) 
43089 t1 (pr3_refl c t1) (pr3_pr2 c t2 t1 H))))).
43090
43091 theorem pc3_pr3_r:
43092  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to (pc3 c 
43093 t1 t2))))
43094 \def
43095  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t1 
43096 t2)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) 
43097 t2 H (pr3_refl c t2))))).
43098
43099 theorem pc3_pr3_x:
43100  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t2 t1) \to (pc3 c 
43101 t1 t2))))
43102 \def
43103  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t2 
43104 t1)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) 
43105 t1 (pr3_refl c t1) H)))).
43106
43107 theorem pc3_pr3_t:
43108  \forall (c: C).(\forall (t1: T).(\forall (t0: T).((pr3 c t1 t0) \to (\forall 
43109 (t2: T).((pr3 c t2 t0) \to (pc3 c t1 t2))))))
43110 \def
43111  \lambda (c: C).(\lambda (t1: T).(\lambda (t0: T).(\lambda (H: (pr3 c t1 
43112 t0)).(\lambda (t2: T).(\lambda (H0: (pr3 c t2 t0)).(ex_intro2 T (\lambda (t: 
43113 T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) t0 H H0)))))).
43114
43115 theorem pc3_pr2_u:
43116  \forall (c: C).(\forall (t2: T).(\forall (t1: T).((pr2 c t1 t2) \to (\forall 
43117 (t3: T).((pc3 c t2 t3) \to (pc3 c t1 t3))))))
43118 \def
43119  \lambda (c: C).(\lambda (t2: T).(\lambda (t1: T).(\lambda (H: (pr2 c t1 
43120 t2)).(\lambda (t3: T).(\lambda (H0: (pc3 c t2 t3)).(let H1 \def H0 in 
43121 (ex2_ind T (\lambda (t: T).(pr3 c t2 t)) (\lambda (t: T).(pr3 c t3 t)) (pc3 c 
43122 t1 t3) (\lambda (x: T).(\lambda (H2: (pr3 c t2 x)).(\lambda (H3: (pr3 c t3 
43123 x)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t3 t)) 
43124 x (pr3_sing c t2 t1 H x H2) H3)))) H1))))))).
43125
43126 theorem pc3_refl:
43127  \forall (c: C).(\forall (t: T).(pc3 c t t))
43128 \def
43129  \lambda (c: C).(\lambda (t: T).(ex_intro2 T (\lambda (t0: T).(pr3 c t t0)) 
43130 (\lambda (t0: T).(pr3 c t t0)) t (pr3_refl c t) (pr3_refl c t))).
43131
43132 theorem pc3_s:
43133  \forall (c: C).(\forall (t2: T).(\forall (t1: T).((pc3 c t1 t2) \to (pc3 c 
43134 t2 t1))))
43135 \def
43136  \lambda (c: C).(\lambda (t2: T).(\lambda (t1: T).(\lambda (H: (pc3 c t1 
43137 t2)).(let H0 \def H in (ex2_ind T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: 
43138 T).(pr3 c t2 t)) (pc3 c t2 t1) (\lambda (x: T).(\lambda (H1: (pr3 c t1 
43139 x)).(\lambda (H2: (pr3 c t2 x)).(ex_intro2 T (\lambda (t: T).(pr3 c t2 t)) 
43140 (\lambda (t: T).(pr3 c t1 t)) x H2 H1)))) H0))))).
43141
43142 theorem pc3_thin_dx:
43143  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3 c t1 t2) \to (\forall 
43144 (u: T).(\forall (f: F).(pc3 c (THead (Flat f) u t1) (THead (Flat f) u 
43145 t2)))))))
43146 \def
43147  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3 c t1 
43148 t2)).(\lambda (u: T).(\lambda (f: F).(let H0 \def H in (ex2_ind T (\lambda 
43149 (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) (pc3 c (THead (Flat f) u 
43150 t1) (THead (Flat f) u t2)) (\lambda (x: T).(\lambda (H1: (pr3 c t1 
43151 x)).(\lambda (H2: (pr3 c t2 x)).(ex_intro2 T (\lambda (t: T).(pr3 c (THead 
43152 (Flat f) u t1) t)) (\lambda (t: T).(pr3 c (THead (Flat f) u t2) t)) (THead 
43153 (Flat f) u x) (pr3_thin_dx c t1 x H1 u f) (pr3_thin_dx c t2 x H2 u f))))) 
43154 H0))))))).
43155
43156 theorem pc3_head_1:
43157  \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pc3 c u1 u2) \to (\forall 
43158 (k: K).(\forall (t: T).(pc3 c (THead k u1 t) (THead k u2 t)))))))
43159 \def
43160  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pc3 c u1 
43161 u2)).(\lambda (k: K).(\lambda (t: T).(let H0 \def H in (ex2_ind T (\lambda 
43162 (t0: T).(pr3 c u1 t0)) (\lambda (t0: T).(pr3 c u2 t0)) (pc3 c (THead k u1 t) 
43163 (THead k u2 t)) (\lambda (x: T).(\lambda (H1: (pr3 c u1 x)).(\lambda (H2: 
43164 (pr3 c u2 x)).(ex_intro2 T (\lambda (t0: T).(pr3 c (THead k u1 t) t0)) 
43165 (\lambda (t0: T).(pr3 c (THead k u2 t) t0)) (THead k x t) (pr3_head_12 c u1 x 
43166 H1 k t t (pr3_refl (CHead c k x) t)) (pr3_head_12 c u2 x H2 k t t (pr3_refl 
43167 (CHead c k x) t)))))) H0))))))).
43168
43169 theorem pc3_head_2:
43170  \forall (c: C).(\forall (u: T).(\forall (t1: T).(\forall (t2: T).(\forall 
43171 (k: K).((pc3 (CHead c k u) t1 t2) \to (pc3 c (THead k u t1) (THead k u 
43172 t2)))))))
43173 \def
43174  \lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
43175 (k: K).(\lambda (H: (pc3 (CHead c k u) t1 t2)).(let H0 \def H in (ex2_ind T 
43176 (\lambda (t: T).(pr3 (CHead c k u) t1 t)) (\lambda (t: T).(pr3 (CHead c k u) 
43177 t2 t)) (pc3 c (THead k u t1) (THead k u t2)) (\lambda (x: T).(\lambda (H1: 
43178 (pr3 (CHead c k u) t1 x)).(\lambda (H2: (pr3 (CHead c k u) t2 x)).(ex_intro2 
43179 T (\lambda (t: T).(pr3 c (THead k u t1) t)) (\lambda (t: T).(pr3 c (THead k u 
43180 t2) t)) (THead k u x) (pr3_head_12 c u u (pr3_refl c u) k t1 x H1) 
43181 (pr3_head_12 c u u (pr3_refl c u) k t2 x H2))))) H0))))))).
43182
43183 theorem pc3_pc1:
43184  \forall (t1: T).(\forall (t2: T).((pc1 t1 t2) \to (\forall (c: C).(pc3 c t1 
43185 t2))))
43186 \def
43187  \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc1 t1 t2)).(\lambda (c: 
43188 C).(let H0 \def H in (ex2_ind T (\lambda (t: T).(pr1 t1 t)) (\lambda (t: 
43189 T).(pr1 t2 t)) (pc3 c t1 t2) (\lambda (x: T).(\lambda (H1: (pr1 t1 
43190 x)).(\lambda (H2: (pr1 t2 x)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) 
43191 (\lambda (t: T).(pr3 c t2 t)) x (pr3_pr1 t1 x H1 c) (pr3_pr1 t2 x H2 c))))) 
43192 H0))))).
43193
43194 theorem pc3_t:
43195  \forall (t2: T).(\forall (c: C).(\forall (t1: T).((pc3 c t1 t2) \to (\forall 
43196 (t3: T).((pc3 c t2 t3) \to (pc3 c t1 t3))))))
43197 \def
43198  \lambda (t2: T).(\lambda (c: C).(\lambda (t1: T).(\lambda (H: (pc3 c t1 
43199 t2)).(\lambda (t3: T).(\lambda (H0: (pc3 c t2 t3)).(let H1 \def H0 in 
43200 (ex2_ind T (\lambda (t: T).(pr3 c t2 t)) (\lambda (t: T).(pr3 c t3 t)) (pc3 c 
43201 t1 t3) (\lambda (x: T).(\lambda (H2: (pr3 c t2 x)).(\lambda (H3: (pr3 c t3 
43202 x)).(let H4 \def H in (ex2_ind T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: 
43203 T).(pr3 c t2 t)) (pc3 c t1 t3) (\lambda (x0: T).(\lambda (H5: (pr3 c t1 
43204 x0)).(\lambda (H6: (pr3 c t2 x0)).(ex2_ind T (\lambda (t: T).(pr3 c x0 t)) 
43205 (\lambda (t: T).(pr3 c x t)) (pc3 c t1 t3) (\lambda (x1: T).(\lambda (H7: 
43206 (pr3 c x0 x1)).(\lambda (H8: (pr3 c x x1)).(pc3_pr3_t c t1 x1 (pr3_t x0 t1 c 
43207 H5 x1 H7) t3 (pr3_t x t3 c H3 x1 H8))))) (pr3_confluence c t2 x0 H6 x H2))))) 
43208 H4))))) H1))))))).
43209
43210 theorem pc3_pr2_u2:
43211  \forall (c: C).(\forall (t0: T).(\forall (t1: T).((pr2 c t0 t1) \to (\forall 
43212 (t2: T).((pc3 c t0 t2) \to (pc3 c t1 t2))))))
43213 \def
43214  \lambda (c: C).(\lambda (t0: T).(\lambda (t1: T).(\lambda (H: (pr2 c t0 
43215 t1)).(\lambda (t2: T).(\lambda (H0: (pc3 c t0 t2)).(pc3_t t0 c t1 (pc3_pr2_x 
43216 c t1 t0 H) t2 H0)))))).
43217
43218 theorem pc3_head_12:
43219  \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pc3 c u1 u2) \to (\forall 
43220 (k: K).(\forall (t1: T).(\forall (t2: T).((pc3 (CHead c k u2) t1 t2) \to (pc3 
43221 c (THead k u1 t1) (THead k u2 t2)))))))))
43222 \def
43223  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pc3 c u1 
43224 u2)).(\lambda (k: K).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pc3 
43225 (CHead c k u2) t1 t2)).(pc3_t (THead k u2 t1) c (THead k u1 t1) (pc3_head_1 c 
43226 u1 u2 H k t1) (THead k u2 t2) (pc3_head_2 c u2 t1 t2 k H0))))))))).
43227
43228 theorem pc3_head_21:
43229  \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pc3 c u1 u2) \to (\forall 
43230 (k: K).(\forall (t1: T).(\forall (t2: T).((pc3 (CHead c k u1) t1 t2) \to (pc3 
43231 c (THead k u1 t1) (THead k u2 t2)))))))))
43232 \def
43233  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pc3 c u1 
43234 u2)).(\lambda (k: K).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pc3 
43235 (CHead c k u1) t1 t2)).(pc3_t (THead k u1 t2) c (THead k u1 t1) (pc3_head_2 c 
43236 u1 t1 t2 k H0) (THead k u2 t2) (pc3_head_1 c u1 u2 H k t2))))))))).
43237
43238 theorem pc3_pr0_pr2_t:
43239  \forall (u1: T).(\forall (u2: T).((pr0 u2 u1) \to (\forall (c: C).(\forall 
43240 (t1: T).(\forall (t2: T).(\forall (k: K).((pr2 (CHead c k u2) t1 t2) \to (pc3 
43241 (CHead c k u1) t1 t2))))))))
43242 \def
43243  \lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr0 u2 u1)).(\lambda (c: 
43244 C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (k: K).(\lambda (H0: (pr2 
43245 (CHead c k u2) t1 t2)).(let H1 \def (match H0 return (\lambda (c0: 
43246 C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr2 c0 t t0)).((eq C c0 
43247 (CHead c k u2)) \to ((eq T t t1) \to ((eq T t0 t2) \to (pc3 (CHead c k u1) t1 
43248 t2)))))))) with [(pr2_free c0 t0 t3 H1) \Rightarrow (\lambda (H2: (eq C c0 
43249 (CHead c k u2))).(\lambda (H3: (eq T t0 t1)).(\lambda (H4: (eq T t3 
43250 t2)).(eq_ind C (CHead c k u2) (\lambda (_: C).((eq T t0 t1) \to ((eq T t3 t2) 
43251 \to ((pr0 t0 t3) \to (pc3 (CHead c k u1) t1 t2))))) (\lambda (H5: (eq T t0 
43252 t1)).(eq_ind T t1 (\lambda (t: T).((eq T t3 t2) \to ((pr0 t t3) \to (pc3 
43253 (CHead c k u1) t1 t2)))) (\lambda (H6: (eq T t3 t2)).(eq_ind T t2 (\lambda 
43254 (t: T).((pr0 t1 t) \to (pc3 (CHead c k u1) t1 t2))) (\lambda (H7: (pr0 t1 
43255 t2)).(pc3_pr2_r (CHead c k u1) t1 t2 (pr2_free (CHead c k u1) t1 t2 H7))) t3 
43256 (sym_eq T t3 t2 H6))) t0 (sym_eq T t0 t1 H5))) c0 (sym_eq C c0 (CHead c k u2) 
43257 H2) H3 H4 H1)))) | (pr2_delta c0 d u i H1 t0 t3 H2 t H3) \Rightarrow (\lambda 
43258 (H4: (eq C c0 (CHead c k u2))).(\lambda (H5: (eq T t0 t1)).(\lambda (H6: (eq 
43259 T t t2)).(eq_ind C (CHead c k u2) (\lambda (c1: C).((eq T t0 t1) \to ((eq T t 
43260 t2) \to ((getl i c1 (CHead d (Bind Abbr) u)) \to ((pr0 t0 t3) \to ((subst0 i 
43261 u t3 t) \to (pc3 (CHead c k u1) t1 t2))))))) (\lambda (H7: (eq T t0 
43262 t1)).(eq_ind T t1 (\lambda (t4: T).((eq T t t2) \to ((getl i (CHead c k u2) 
43263 (CHead d (Bind Abbr) u)) \to ((pr0 t4 t3) \to ((subst0 i u t3 t) \to (pc3 
43264 (CHead c k u1) t1 t2)))))) (\lambda (H8: (eq T t t2)).(eq_ind T t2 (\lambda 
43265 (t4: T).((getl i (CHead c k u2) (CHead d (Bind Abbr) u)) \to ((pr0 t1 t3) \to 
43266 ((subst0 i u t3 t4) \to (pc3 (CHead c k u1) t1 t2))))) (\lambda (H9: (getl i 
43267 (CHead c k u2) (CHead d (Bind Abbr) u))).(\lambda (H10: (pr0 t1 t3)).(\lambda 
43268 (H11: (subst0 i u t3 t2)).(nat_ind (\lambda (n: nat).((getl n (CHead c k u2) 
43269 (CHead d (Bind Abbr) u)) \to ((subst0 n u t3 t2) \to (pc3 (CHead c k u1) t1 
43270 t2)))) (\lambda (H12: (getl O (CHead c k u2) (CHead d (Bind Abbr) 
43271 u))).(\lambda (H13: (subst0 O u t3 t2)).(K_ind (\lambda (k: K).((clear (CHead 
43272 c k u2) (CHead d (Bind Abbr) u)) \to (pc3 (CHead c k u1) t1 t2))) (\lambda 
43273 (b: B).(\lambda (H14: (clear (CHead c (Bind b) u2) (CHead d (Bind Abbr) 
43274 u))).(let H0 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: 
43275 C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d 
43276 (Bind Abbr) u) (CHead c (Bind b) u2) (clear_gen_bind b c (CHead d (Bind Abbr) 
43277 u) u2 H14)) in ((let H15 \def (f_equal C B (\lambda (e: C).(match e return 
43278 (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) 
43279 \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | 
43280 (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead c (Bind b) u2) 
43281 (clear_gen_bind b c (CHead d (Bind Abbr) u) u2 H14)) in ((let H16 \def 
43282 (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort 
43283 _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind Abbr) u) 
43284 (CHead c (Bind b) u2) (clear_gen_bind b c (CHead d (Bind Abbr) u) u2 H14)) in 
43285 (\lambda (H17: (eq B Abbr b)).(\lambda (_: (eq C d c)).(let H19 \def (eq_ind 
43286 T u (\lambda (t: T).(subst0 O t t3 t2)) H13 u2 H16) in (eq_ind B Abbr 
43287 (\lambda (b0: B).(pc3 (CHead c (Bind b0) u1) t1 t2)) (ex2_ind T (\lambda (t1: 
43288 T).(subst0 O u1 t3 t1)) (\lambda (t1: T).(pr0 t2 t1)) (pc3 (CHead c (Bind 
43289 Abbr) u1) t1 t2) (\lambda (x: T).(\lambda (H: (subst0 O u1 t3 x)).(\lambda 
43290 (H20: (pr0 t2 x)).(pc3_pr3_t (CHead c (Bind Abbr) u1) t1 x (pr3_pr2 (CHead c 
43291 (Bind Abbr) u1) t1 x (pr2_delta (CHead c (Bind Abbr) u1) c u1 O (getl_refl 
43292 Abbr c u1) t1 t3 H10 x H)) t2 (pr3_pr2 (CHead c (Bind Abbr) u1) t2 x 
43293 (pr2_free (CHead c (Bind Abbr) u1) t2 x H20)))))) (pr0_subst0_fwd u2 t3 t2 O 
43294 H19 u1 H)) b H17))))) H15)) H0)))) (\lambda (f: F).(\lambda (H14: (clear 
43295 (CHead c (Flat f) u2) (CHead d (Bind Abbr) u))).(clear_pc3_trans (CHead d 
43296 (Bind Abbr) u) t1 t2 (pc3_pr2_r (CHead d (Bind Abbr) u) t1 t2 (pr2_delta 
43297 (CHead d (Bind Abbr) u) d u O (getl_refl Abbr d u) t1 t3 H10 t2 H13)) (CHead 
43298 c (Flat f) u1) (clear_flat c (CHead d (Bind Abbr) u) (clear_gen_flat f c 
43299 (CHead d (Bind Abbr) u) u2 H14) f u1)))) k (getl_gen_O (CHead c k u2) (CHead 
43300 d (Bind Abbr) u) H12)))) (\lambda (i0: nat).(\lambda (IHi: (((getl i0 (CHead 
43301 c k u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u t3 t2) \to (pc3 (CHead c k 
43302 u1) t1 t2))))).(\lambda (H12: (getl (S i0) (CHead c k u2) (CHead d (Bind 
43303 Abbr) u))).(\lambda (H13: (subst0 (S i0) u t3 t2)).(K_ind (\lambda (k: 
43304 K).((((getl i0 (CHead c k u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u t3 
43305 t2) \to (pc3 (CHead c k u1) t1 t2)))) \to ((getl (r k i0) c (CHead d (Bind 
43306 Abbr) u)) \to (pc3 (CHead c k u1) t1 t2)))) (\lambda (b: B).(\lambda (_: 
43307 (((getl i0 (CHead c (Bind b) u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u 
43308 t3 t2) \to (pc3 (CHead c (Bind b) u1) t1 t2))))).(\lambda (H0: (getl (r (Bind 
43309 b) i0) c (CHead d (Bind Abbr) u))).(pc3_pr2_r (CHead c (Bind b) u1) t1 t2 
43310 (pr2_delta (CHead c (Bind b) u1) d u (S i0) (getl_head (Bind b) i0 c (CHead d 
43311 (Bind Abbr) u) H0 u1) t1 t3 H10 t2 H13))))) (\lambda (f: F).(\lambda (_: 
43312 (((getl i0 (CHead c (Flat f) u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u 
43313 t3 t2) \to (pc3 (CHead c (Flat f) u1) t1 t2))))).(\lambda (H0: (getl (r (Flat 
43314 f) i0) c (CHead d (Bind Abbr) u))).(pc3_pr2_r (CHead c (Flat f) u1) t1 t2 
43315 (pr2_cflat c t1 t2 (pr2_delta c d u (r (Flat f) i0) H0 t1 t3 H10 t2 H13) f 
43316 u1))))) k IHi (getl_gen_S k c (CHead d (Bind Abbr) u) u2 i0 H12)))))) i H9 
43317 H11)))) t (sym_eq T t t2 H8))) t0 (sym_eq T t0 t1 H7))) c0 (sym_eq C c0 
43318 (CHead c k u2) H4) H5 H6 H1 H2 H3))))]) in (H1 (refl_equal C (CHead c k u2)) 
43319 (refl_equal T t1) (refl_equal T t2)))))))))).
43320
43321 theorem pc3_pr2_pr2_t:
43322  \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pr2 c u2 u1) \to (\forall 
43323 (t1: T).(\forall (t2: T).(\forall (k: K).((pr2 (CHead c k u2) t1 t2) \to (pc3 
43324 (CHead c k u1) t1 t2))))))))
43325 \def
43326  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr2 c u2 
43327 u1)).(let H0 \def (match H return (\lambda (c0: C).(\lambda (t: T).(\lambda 
43328 (t0: T).(\lambda (_: (pr2 c0 t t0)).((eq C c0 c) \to ((eq T t u2) \to ((eq T 
43329 t0 u1) \to (\forall (t1: T).(\forall (t2: T).(\forall (k: K).((pr2 (CHead c k 
43330 u2) t1 t2) \to (pc3 (CHead c k u1) t1 t2)))))))))))) with [(pr2_free c0 t1 t2 
43331 H0) \Rightarrow (\lambda (H1: (eq C c0 c)).(\lambda (H2: (eq T t1 
43332 u2)).(\lambda (H3: (eq T t2 u1)).(eq_ind C c (\lambda (_: C).((eq T t1 u2) 
43333 \to ((eq T t2 u1) \to ((pr0 t1 t2) \to (\forall (t3: T).(\forall (t4: 
43334 T).(\forall (k: K).((pr2 (CHead c k u2) t3 t4) \to (pc3 (CHead c k u1) t3 
43335 t4))))))))) (\lambda (H4: (eq T t1 u2)).(eq_ind T u2 (\lambda (t: T).((eq T 
43336 t2 u1) \to ((pr0 t t2) \to (\forall (t3: T).(\forall (t4: T).(\forall (k: 
43337 K).((pr2 (CHead c k u2) t3 t4) \to (pc3 (CHead c k u1) t3 t4)))))))) (\lambda 
43338 (H5: (eq T t2 u1)).(eq_ind T u1 (\lambda (t: T).((pr0 u2 t) \to (\forall (t3: 
43339 T).(\forall (t4: T).(\forall (k: K).((pr2 (CHead c k u2) t3 t4) \to (pc3 
43340 (CHead c k u1) t3 t4))))))) (\lambda (H6: (pr0 u2 u1)).(\lambda (t0: 
43341 T).(\lambda (t3: T).(\lambda (k: K).(\lambda (H: (pr2 (CHead c k u2) t0 
43342 t3)).(pc3_pr0_pr2_t u1 u2 H6 c t0 t3 k H)))))) t2 (sym_eq T t2 u1 H5))) t1 
43343 (sym_eq T t1 u2 H4))) c0 (sym_eq C c0 c H1) H2 H3 H0)))) | (pr2_delta c0 d u 
43344 i H0 t1 t2 H1 t H2) \Rightarrow (\lambda (H3: (eq C c0 c)).(\lambda (H4: (eq 
43345 T t1 u2)).(\lambda (H5: (eq T t u1)).(eq_ind C c (\lambda (c1: C).((eq T t1 
43346 u2) \to ((eq T t u1) \to ((getl i c1 (CHead d (Bind Abbr) u)) \to ((pr0 t1 
43347 t2) \to ((subst0 i u t2 t) \to (\forall (t3: T).(\forall (t4: T).(\forall (k: 
43348 K).((pr2 (CHead c k u2) t3 t4) \to (pc3 (CHead c k u1) t3 t4))))))))))) 
43349 (\lambda (H6: (eq T t1 u2)).(eq_ind T u2 (\lambda (t0: T).((eq T t u1) \to 
43350 ((getl i c (CHead d (Bind Abbr) u)) \to ((pr0 t0 t2) \to ((subst0 i u t2 t) 
43351 \to (\forall (t3: T).(\forall (t4: T).(\forall (k: K).((pr2 (CHead c k u2) t3 
43352 t4) \to (pc3 (CHead c k u1) t3 t4)))))))))) (\lambda (H7: (eq T t 
43353 u1)).(eq_ind T u1 (\lambda (t0: T).((getl i c (CHead d (Bind Abbr) u)) \to 
43354 ((pr0 u2 t2) \to ((subst0 i u t2 t0) \to (\forall (t3: T).(\forall (t4: 
43355 T).(\forall (k: K).((pr2 (CHead c k u2) t3 t4) \to (pc3 (CHead c k u1) t3 
43356 t4))))))))) (\lambda (H8: (getl i c (CHead d (Bind Abbr) u))).(\lambda (H9: 
43357 (pr0 u2 t2)).(\lambda (H10: (subst0 i u t2 u1)).(\lambda (t0: T).(\lambda 
43358 (t3: T).(\lambda (k: K).(\lambda (H: (pr2 (CHead c k u2) t0 t3)).(let H11 
43359 \def (match H return (\lambda (c0: C).(\lambda (t: T).(\lambda (t1: 
43360 T).(\lambda (_: (pr2 c0 t t1)).((eq C c0 (CHead c k u2)) \to ((eq T t t0) \to 
43361 ((eq T t1 t3) \to (pc3 (CHead c k u1) t0 t3)))))))) with [(pr2_free c0 t1 t4 
43362 H3) \Rightarrow (\lambda (H4: (eq C c0 (CHead c k u2))).(\lambda (H5: (eq T 
43363 t1 t0)).(\lambda (H6: (eq T t4 t3)).(eq_ind C (CHead c k u2) (\lambda (_: 
43364 C).((eq T t1 t0) \to ((eq T t4 t3) \to ((pr0 t1 t4) \to (pc3 (CHead c k u1) 
43365 t0 t3))))) (\lambda (H7: (eq T t1 t0)).(eq_ind T t0 (\lambda (t: T).((eq T t4 
43366 t3) \to ((pr0 t t4) \to (pc3 (CHead c k u1) t0 t3)))) (\lambda (H8: (eq T t4 
43367 t3)).(eq_ind T t3 (\lambda (t: T).((pr0 t0 t) \to (pc3 (CHead c k u1) t0 
43368 t3))) (\lambda (H9: (pr0 t0 t3)).(pc3_pr2_r (CHead c k u1) t0 t3 (pr2_free 
43369 (CHead c k u1) t0 t3 H9))) t4 (sym_eq T t4 t3 H8))) t1 (sym_eq T t1 t0 H7))) 
43370 c0 (sym_eq C c0 (CHead c k u2) H4) H5 H6 H3)))) | (pr2_delta c0 d0 u0 i0 H3 
43371 t1 t4 H4 t H5) \Rightarrow (\lambda (H6: (eq C c0 (CHead c k u2))).(\lambda 
43372 (H7: (eq T t1 t0)).(\lambda (H11: (eq T t t3)).(eq_ind C (CHead c k u2) 
43373 (\lambda (c1: C).((eq T t1 t0) \to ((eq T t t3) \to ((getl i0 c1 (CHead d0 
43374 (Bind Abbr) u0)) \to ((pr0 t1 t4) \to ((subst0 i0 u0 t4 t) \to (pc3 (CHead c 
43375 k u1) t0 t3))))))) (\lambda (H12: (eq T t1 t0)).(eq_ind T t0 (\lambda (t2: 
43376 T).((eq T t t3) \to ((getl i0 (CHead c k u2) (CHead d0 (Bind Abbr) u0)) \to 
43377 ((pr0 t2 t4) \to ((subst0 i0 u0 t4 t) \to (pc3 (CHead c k u1) t0 t3)))))) 
43378 (\lambda (H13: (eq T t t3)).(eq_ind T t3 (\lambda (t2: T).((getl i0 (CHead c 
43379 k u2) (CHead d0 (Bind Abbr) u0)) \to ((pr0 t0 t4) \to ((subst0 i0 u0 t4 t2) 
43380 \to (pc3 (CHead c k u1) t0 t3))))) (\lambda (H14: (getl i0 (CHead c k u2) 
43381 (CHead d0 (Bind Abbr) u0))).(\lambda (H15: (pr0 t0 t4)).(\lambda (H16: 
43382 (subst0 i0 u0 t4 t3)).(nat_ind (\lambda (n: nat).((getl n (CHead c k u2) 
43383 (CHead d0 (Bind Abbr) u0)) \to ((subst0 n u0 t4 t3) \to (pc3 (CHead c k u1) 
43384 t0 t3)))) (\lambda (H17: (getl O (CHead c k u2) (CHead d0 (Bind Abbr) 
43385 u0))).(\lambda (H18: (subst0 O u0 t4 t3)).((match k return (\lambda (k: 
43386 K).((clear (CHead c k u2) (CHead d0 (Bind Abbr) u0)) \to (pc3 (CHead c k u1) 
43387 t0 t3))) with [(Bind b) \Rightarrow (\lambda (H19: (clear (CHead c (Bind b) 
43388 u2) (CHead d0 (Bind Abbr) u0))).(let H \def (f_equal C C (\lambda (e: 
43389 C).(match e return (\lambda (_: C).C) with [(CSort _) \Rightarrow d0 | (CHead 
43390 c _ _) \Rightarrow c])) (CHead d0 (Bind Abbr) u0) (CHead c (Bind b) u2) 
43391 (clear_gen_bind b c (CHead d0 (Bind Abbr) u0) u2 H19)) in ((let H0 \def 
43392 (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) with [(CSort 
43393 _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
43394 K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d0 
43395 (Bind Abbr) u0) (CHead c (Bind b) u2) (clear_gen_bind b c (CHead d0 (Bind 
43396 Abbr) u0) u2 H19)) in ((let H1 \def (f_equal C T (\lambda (e: C).(match e 
43397 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) 
43398 \Rightarrow t])) (CHead d0 (Bind Abbr) u0) (CHead c (Bind b) u2) 
43399 (clear_gen_bind b c (CHead d0 (Bind Abbr) u0) u2 H19)) in (\lambda (H20: (eq 
43400 B Abbr b)).(\lambda (_: (eq C d0 c)).(let H22 \def (eq_ind T u0 (\lambda (t: 
43401 T).(subst0 O t t4 t3)) H18 u2 H1) in (eq_ind B Abbr (\lambda (b0: B).(pc3 
43402 (CHead c (Bind b0) u1) t0 t3)) (ex2_ind T (\lambda (t0: T).(subst0 O t2 t4 
43403 t0)) (\lambda (t0: T).(pr0 t3 t0)) (pc3 (CHead c (Bind Abbr) u1) t0 t3) 
43404 (\lambda (x: T).(\lambda (H2: (subst0 O t2 t4 x)).(\lambda (H9: (pr0 t3 
43405 x)).(ex2_ind T (\lambda (t0: T).(subst0 O u1 t4 t0)) (\lambda (t0: T).(subst0 
43406 (S (plus i O)) u x t0)) (pc3 (CHead c (Bind Abbr) u1) t0 t3) (\lambda (x0: 
43407 T).(\lambda (H10: (subst0 O u1 t4 x0)).(\lambda (H23: (subst0 (S (plus i O)) 
43408 u x x0)).(let H24 \def (f_equal nat nat S (plus i O) i (sym_eq nat i (plus i 
43409 O) (plus_n_O i))) in (let H25 \def (eq_ind nat (S (plus i O)) (\lambda (n: 
43410 nat).(subst0 n u x x0)) H23 (S i) H24) in (pc3_pr2_u (CHead c (Bind Abbr) u1) 
43411 x0 t0 (pr2_delta (CHead c (Bind Abbr) u1) c u1 O (getl_refl Abbr c u1) t0 t4 
43412 H15 x0 H10) t3 (pc3_pr2_x (CHead c (Bind Abbr) u1) x0 t3 (pr2_delta (CHead c 
43413 (Bind Abbr) u1) d u (S i) (getl_head (Bind Abbr) i c (CHead d (Bind Abbr) u) 
43414 H8 u1) t3 x H9 x0 H25)))))))) (subst0_subst0_back t4 x t2 O H2 u1 u i 
43415 H10))))) (pr0_subst0_fwd u2 t4 t3 O H22 t2 H9)) b H20))))) H0)) H))) | (Flat 
43416 f) \Rightarrow (\lambda (H8: (clear (CHead c (Flat f) u2) (CHead d0 (Bind 
43417 Abbr) u0))).(clear_pc3_trans (CHead d0 (Bind Abbr) u0) t0 t3 (pc3_pr2_r 
43418 (CHead d0 (Bind Abbr) u0) t0 t3 (pr2_delta (CHead d0 (Bind Abbr) u0) d0 u0 O 
43419 (getl_refl Abbr d0 u0) t0 t4 H15 t3 H18)) (CHead c (Flat f) u1) (clear_flat c 
43420 (CHead d0 (Bind Abbr) u0) (clear_gen_flat f c (CHead d0 (Bind Abbr) u0) u2 
43421 H8) f u1)))]) (getl_gen_O (CHead c k u2) (CHead d0 (Bind Abbr) u0) H17)))) 
43422 (\lambda (i1: nat).(\lambda (_: (((getl i1 (CHead c k u2) (CHead d0 (Bind 
43423 Abbr) u0)) \to ((subst0 i1 u0 t4 t3) \to (pc3 (CHead c k u1) t0 
43424 t3))))).(\lambda (H8: (getl (S i1) (CHead c k u2) (CHead d0 (Bind Abbr) 
43425 u0))).(\lambda (H9: (subst0 (S i1) u0 t4 t3)).(K_ind (\lambda (k: K).((getl 
43426 (r k i1) c (CHead d0 (Bind Abbr) u0)) \to (pc3 (CHead c k u1) t0 t3))) 
43427 (\lambda (b: B).(\lambda (H: (getl (r (Bind b) i1) c (CHead d0 (Bind Abbr) 
43428 u0))).(pc3_pr2_r (CHead c (Bind b) u1) t0 t3 (pr2_delta (CHead c (Bind b) u1) 
43429 d0 u0 (S i1) (getl_head (Bind b) i1 c (CHead d0 (Bind Abbr) u0) H u1) t0 t4 
43430 H15 t3 H9)))) (\lambda (f: F).(\lambda (H: (getl (r (Flat f) i1) c (CHead d0 
43431 (Bind Abbr) u0))).(pc3_pr2_r (CHead c (Flat f) u1) t0 t3 (pr2_cflat c t0 t3 
43432 (pr2_delta c d0 u0 (r (Flat f) i1) H t0 t4 H15 t3 H9) f u1)))) k (getl_gen_S 
43433 k c (CHead d0 (Bind Abbr) u0) u2 i1 H8)))))) i0 H14 H16)))) t (sym_eq T t t3 
43434 H13))) t1 (sym_eq T t1 t0 H12))) c0 (sym_eq C c0 (CHead c k u2) H6) H7 H11 H3 
43435 H4 H5))))]) in (H11 (refl_equal C (CHead c k u2)) (refl_equal T t0) 
43436 (refl_equal T t3)))))))))) t (sym_eq T t u1 H7))) t1 (sym_eq T t1 u2 H6))) c0 
43437 (sym_eq C c0 c H3) H4 H5 H0 H1 H2))))]) in (H0 (refl_equal C c) (refl_equal T 
43438 u2) (refl_equal T u1)))))).
43439
43440 theorem pc3_pr2_pr3_t:
43441  \forall (c: C).(\forall (u2: T).(\forall (t1: T).(\forall (t2: T).(\forall 
43442 (k: K).((pr3 (CHead c k u2) t1 t2) \to (\forall (u1: T).((pr2 c u2 u1) \to 
43443 (pc3 (CHead c k u1) t1 t2))))))))
43444 \def
43445  \lambda (c: C).(\lambda (u2: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
43446 (k: K).(\lambda (H: (pr3 (CHead c k u2) t1 t2)).(pr3_ind (CHead c k u2) 
43447 (\lambda (t: T).(\lambda (t0: T).(\forall (u1: T).((pr2 c u2 u1) \to (pc3 
43448 (CHead c k u1) t t0))))) (\lambda (t: T).(\lambda (u1: T).(\lambda (_: (pr2 c 
43449 u2 u1)).(pc3_refl (CHead c k u1) t)))) (\lambda (t0: T).(\lambda (t3: 
43450 T).(\lambda (H0: (pr2 (CHead c k u2) t3 t0)).(\lambda (t4: T).(\lambda (_: 
43451 (pr3 (CHead c k u2) t0 t4)).(\lambda (H2: ((\forall (u1: T).((pr2 c u2 u1) 
43452 \to (pc3 (CHead c k u1) t0 t4))))).(\lambda (u1: T).(\lambda (H3: (pr2 c u2 
43453 u1)).(pc3_t t0 (CHead c k u1) t3 (pc3_pr2_pr2_t c u1 u2 H3 t3 t0 k H0) t4 (H2 
43454 u1 H3)))))))))) t1 t2 H)))))).
43455
43456 theorem pc3_pr3_pc3_t:
43457  \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pr3 c u2 u1) \to (\forall 
43458 (t1: T).(\forall (t2: T).(\forall (k: K).((pc3 (CHead c k u2) t1 t2) \to (pc3 
43459 (CHead c k u1) t1 t2))))))))
43460 \def
43461  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr3 c u2 
43462 u1)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (t1: T).(\forall 
43463 (t2: T).(\forall (k: K).((pc3 (CHead c k t) t1 t2) \to (pc3 (CHead c k t0) t1 
43464 t2))))))) (\lambda (t: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (k: 
43465 K).(\lambda (H0: (pc3 (CHead c k t) t1 t2)).H0))))) (\lambda (t2: T).(\lambda 
43466 (t1: T).(\lambda (H0: (pr2 c t1 t2)).(\lambda (t3: T).(\lambda (_: (pr3 c t2 
43467 t3)).(\lambda (H2: ((\forall (t1: T).(\forall (t4: T).(\forall (k: K).((pc3 
43468 (CHead c k t2) t1 t4) \to (pc3 (CHead c k t3) t1 t4))))))).(\lambda (t0: 
43469 T).(\lambda (t4: T).(\lambda (k: K).(\lambda (H3: (pc3 (CHead c k t1) t0 
43470 t4)).(H2 t0 t4 k (let H4 \def H3 in (ex2_ind T (\lambda (t: T).(pr3 (CHead c 
43471 k t1) t0 t)) (\lambda (t: T).(pr3 (CHead c k t1) t4 t)) (pc3 (CHead c k t2) 
43472 t0 t4) (\lambda (x: T).(\lambda (H5: (pr3 (CHead c k t1) t0 x)).(\lambda (H6: 
43473 (pr3 (CHead c k t1) t4 x)).(pc3_t x (CHead c k t2) t0 (pc3_pr2_pr3_t c t1 t0 
43474 x k H5 t2 H0) t4 (pc3_s (CHead c k t2) x t4 (pc3_pr2_pr3_t c t1 t4 x k H6 t2 
43475 H0)))))) H4))))))))))))) u2 u1 H)))).
43476
43477 theorem pc3_lift:
43478  \forall (c: C).(\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h 
43479 d c e) \to (\forall (t1: T).(\forall (t2: T).((pc3 e t1 t2) \to (pc3 c (lift 
43480 h d t1) (lift h d t2)))))))))
43481 \def
43482  \lambda (c: C).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda 
43483 (H: (drop h d c e)).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pc3 e t1 
43484 t2)).(let H1 \def H0 in (ex2_ind T (\lambda (t: T).(pr3 e t1 t)) (\lambda (t: 
43485 T).(pr3 e t2 t)) (pc3 c (lift h d t1) (lift h d t2)) (\lambda (x: T).(\lambda 
43486 (H2: (pr3 e t1 x)).(\lambda (H3: (pr3 e t2 x)).(pc3_pr3_t c (lift h d t1) 
43487 (lift h d x) (pr3_lift c e h d H t1 x H2) (lift h d t2) (pr3_lift c e h d H 
43488 t2 x H3))))) H1))))))))).
43489
43490 theorem pc3_wcpr0__pc3_wcpr0_t_aux:
43491  \forall (c1: C).(\forall (c2: C).((wcpr0 c1 c2) \to (\forall (k: K).(\forall 
43492 (u: T).(\forall (t1: T).(\forall (t2: T).((pr3 (CHead c1 k u) t1 t2) \to (pc3 
43493 (CHead c2 k u) t1 t2))))))))
43494 \def
43495  \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c1 c2)).(\lambda (k: 
43496 K).(\lambda (u: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pr3 
43497 (CHead c1 k u) t1 t2)).(pr3_ind (CHead c1 k u) (\lambda (t: T).(\lambda (t0: 
43498 T).(pc3 (CHead c2 k u) t t0))) (\lambda (t: T).(pc3_refl (CHead c2 k u) t)) 
43499 (\lambda (t0: T).(\lambda (t3: T).(\lambda (H1: (pr2 (CHead c1 k u) t3 
43500 t0)).(\lambda (t4: T).(\lambda (_: (pr3 (CHead c1 k u) t0 t4)).(\lambda (H3: 
43501 (pc3 (CHead c2 k u) t0 t4)).(pc3_t t0 (CHead c2 k u) t3 (let H4 \def (match 
43502 H1 return (\lambda (c: C).(\lambda (t: T).(\lambda (t1: T).(\lambda (_: (pr2 
43503 c t t1)).((eq C c (CHead c1 k u)) \to ((eq T t t3) \to ((eq T t1 t0) \to (pc3 
43504 (CHead c2 k u) t3 t0)))))))) with [(pr2_free c t1 t2 H2) \Rightarrow (\lambda 
43505 (H3: (eq C c (CHead c1 k u))).(\lambda (H4: (eq T t1 t3)).(\lambda (H5: (eq T 
43506 t2 t0)).(eq_ind C (CHead c1 k u) (\lambda (_: C).((eq T t1 t3) \to ((eq T t2 
43507 t0) \to ((pr0 t1 t2) \to (pc3 (CHead c2 k u) t3 t0))))) (\lambda (H6: (eq T 
43508 t1 t3)).(eq_ind T t3 (\lambda (t: T).((eq T t2 t0) \to ((pr0 t t2) \to (pc3 
43509 (CHead c2 k u) t3 t0)))) (\lambda (H7: (eq T t2 t0)).(eq_ind T t0 (\lambda 
43510 (t: T).((pr0 t3 t) \to (pc3 (CHead c2 k u) t3 t0))) (\lambda (H8: (pr0 t3 
43511 t0)).(pc3_pr2_r (CHead c2 k u) t3 t0 (pr2_free (CHead c2 k u) t3 t0 H8))) t2 
43512 (sym_eq T t2 t0 H7))) t1 (sym_eq T t1 t3 H6))) c (sym_eq C c (CHead c1 k u) 
43513 H3) H4 H5 H2)))) | (pr2_delta c d u0 i H2 t1 t2 H3 t H4) \Rightarrow (\lambda 
43514 (H5: (eq C c (CHead c1 k u))).(\lambda (H6: (eq T t1 t3)).(\lambda (H7: (eq T 
43515 t t0)).(eq_ind C (CHead c1 k u) (\lambda (c0: C).((eq T t1 t3) \to ((eq T t 
43516 t0) \to ((getl i c0 (CHead d (Bind Abbr) u0)) \to ((pr0 t1 t2) \to ((subst0 i 
43517 u0 t2 t) \to (pc3 (CHead c2 k u) t3 t0))))))) (\lambda (H8: (eq T t1 
43518 t3)).(eq_ind T t3 (\lambda (t4: T).((eq T t t0) \to ((getl i (CHead c1 k u) 
43519 (CHead d (Bind Abbr) u0)) \to ((pr0 t4 t2) \to ((subst0 i u0 t2 t) \to (pc3 
43520 (CHead c2 k u) t3 t0)))))) (\lambda (H9: (eq T t t0)).(eq_ind T t0 (\lambda 
43521 (t4: T).((getl i (CHead c1 k u) (CHead d (Bind Abbr) u0)) \to ((pr0 t3 t2) 
43522 \to ((subst0 i u0 t2 t4) \to (pc3 (CHead c2 k u) t3 t0))))) (\lambda (H10: 
43523 (getl i (CHead c1 k u) (CHead d (Bind Abbr) u0))).(\lambda (H11: (pr0 t3 
43524 t2)).(\lambda (H12: (subst0 i u0 t2 t0)).(ex3_2_ind C T (\lambda (e2: 
43525 C).(\lambda (u2: T).(getl i (CHead c2 k u) (CHead e2 (Bind Abbr) u2)))) 
43526 (\lambda (e2: C).(\lambda (_: T).(wcpr0 d e2))) (\lambda (_: C).(\lambda (u2: 
43527 T).(pr0 u0 u2))) (pc3 (CHead c2 k u) t3 t0) (\lambda (x0: C).(\lambda (x1: 
43528 T).(\lambda (H0: (getl i (CHead c2 k u) (CHead x0 (Bind Abbr) x1))).(\lambda 
43529 (_: (wcpr0 d x0)).(\lambda (H14: (pr0 u0 x1)).(ex2_ind T (\lambda (t0: 
43530 T).(subst0 i x1 t2 t0)) (\lambda (t3: T).(pr0 t0 t3)) (pc3 (CHead c2 k u) t3 
43531 t0) (\lambda (x: T).(\lambda (H15: (subst0 i x1 t2 x)).(\lambda (H16: (pr0 t0 
43532 x)).(pc3_pr2_u (CHead c2 k u) x t3 (pr2_delta (CHead c2 k u) x0 x1 i H0 t3 t2 
43533 H11 x H15) t0 (pc3_pr2_x (CHead c2 k u) x t0 (pr2_free (CHead c2 k u) t0 x 
43534 H16)))))) (pr0_subst0_fwd u0 t2 t0 i H12 x1 H14))))))) (wcpr0_getl (CHead c1 
43535 k u) (CHead c2 k u) (wcpr0_comp c1 c2 H u u (pr0_refl u) k) i d u0 (Bind 
43536 Abbr) H10))))) t (sym_eq T t t0 H9))) t1 (sym_eq T t1 t3 H8))) c (sym_eq C c 
43537 (CHead c1 k u) H5) H6 H7 H2 H3 H4))))]) in (H4 (refl_equal C (CHead c1 k u)) 
43538 (refl_equal T t3) (refl_equal T t0))) t4 H3))))))) t1 t2 H0)))))))).
43539
43540 theorem pc3_wcpr0_t:
43541  \forall (c1: C).(\forall (c2: C).((wcpr0 c1 c2) \to (\forall (t1: 
43542 T).(\forall (t2: T).((pr3 c1 t1 t2) \to (pc3 c2 t1 t2))))))
43543 \def
43544  \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c1 c2)).(wcpr0_ind 
43545 (\lambda (c: C).(\lambda (c0: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 
43546 t2) \to (pc3 c0 t1 t2)))))) (\lambda (c: C).(\lambda (t1: T).(\lambda (t2: 
43547 T).(\lambda (H0: (pr3 c t1 t2)).(pc3_pr3_r c t1 t2 H0))))) (\lambda (c0: 
43548 C).(\lambda (c3: C).(\lambda (H0: (wcpr0 c0 c3)).(\lambda (_: ((\forall (t1: 
43549 T).(\forall (t2: T).((pr3 c0 t1 t2) \to (pc3 c3 t1 t2)))))).(\lambda (u1: 
43550 T).(\lambda (u2: T).(\lambda (H2: (pr0 u1 u2)).(\lambda (k: K).(\lambda (t1: 
43551 T).(\lambda (t2: T).(\lambda (H3: (pr3 (CHead c0 k u1) t1 t2)).(let H4 \def 
43552 (pc3_pr2_pr3_t c0 u1 t1 t2 k H3 u2 (pr2_free c0 u1 u2 H2)) in (ex2_ind T 
43553 (\lambda (t: T).(pr3 (CHead c0 k u2) t1 t)) (\lambda (t: T).(pr3 (CHead c0 k 
43554 u2) t2 t)) (pc3 (CHead c3 k u2) t1 t2) (\lambda (x: T).(\lambda (H5: (pr3 
43555 (CHead c0 k u2) t1 x)).(\lambda (H6: (pr3 (CHead c0 k u2) t2 x)).(pc3_t x 
43556 (CHead c3 k u2) t1 (pc3_wcpr0__pc3_wcpr0_t_aux c0 c3 H0 k u2 t1 x H5) t2 
43557 (pc3_s (CHead c3 k u2) x t2 (pc3_wcpr0__pc3_wcpr0_t_aux c0 c3 H0 k u2 t2 x 
43558 H6)))))) H4))))))))))))) c1 c2 H))).
43559
43560 theorem pc3_wcpr0:
43561  \forall (c1: C).(\forall (c2: C).((wcpr0 c1 c2) \to (\forall (t1: 
43562 T).(\forall (t2: T).((pc3 c1 t1 t2) \to (pc3 c2 t1 t2))))))
43563 \def
43564  \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c1 c2)).(\lambda (t1: 
43565 T).(\lambda (t2: T).(\lambda (H0: (pc3 c1 t1 t2)).(let H1 \def H0 in (ex2_ind 
43566 T (\lambda (t: T).(pr3 c1 t1 t)) (\lambda (t: T).(pr3 c1 t2 t)) (pc3 c2 t1 
43567 t2) (\lambda (x: T).(\lambda (H2: (pr3 c1 t1 x)).(\lambda (H3: (pr3 c1 t2 
43568 x)).(pc3_t x c2 t1 (pc3_wcpr0_t c1 c2 H t1 x H2) t2 (pc3_s c2 x t2 
43569 (pc3_wcpr0_t c1 c2 H t2 x H3)))))) H1))))))).
43570
43571 inductive pc3_left (c:C): T \to (T \to Prop) \def
43572 | pc3_left_r: \forall (t: T).(pc3_left c t t)
43573 | pc3_left_ur: \forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall 
43574 (t3: T).((pc3_left c t2 t3) \to (pc3_left c t1 t3)))))
43575 | pc3_left_ux: \forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall 
43576 (t3: T).((pc3_left c t1 t3) \to (pc3_left c t2 t3))))).
43577
43578 theorem pc3_ind_left__pc3_left_pr3:
43579  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to 
43580 (pc3_left c t1 t2))))
43581 \def
43582  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t1 
43583 t2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(pc3_left c t t0))) (\lambda 
43584 (t: T).(pc3_left_r c t)) (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 
43585 c t3 t0)).(\lambda (t4: T).(\lambda (_: (pr3 c t0 t4)).(\lambda (H2: 
43586 (pc3_left c t0 t4)).(pc3_left_ur c t3 t0 H0 t4 H2))))))) t1 t2 H)))).
43587
43588 theorem pc3_ind_left__pc3_left_trans:
43589  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3_left c t1 t2) \to 
43590 (\forall (t3: T).((pc3_left c t2 t3) \to (pc3_left c t1 t3))))))
43591 \def
43592  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3_left c t1 
43593 t2)).(pc3_left_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (t3: 
43594 T).((pc3_left c t0 t3) \to (pc3_left c t t3))))) (\lambda (t: T).(\lambda 
43595 (t3: T).(\lambda (H0: (pc3_left c t t3)).H0))) (\lambda (t0: T).(\lambda (t3: 
43596 T).(\lambda (H0: (pr2 c t0 t3)).(\lambda (t4: T).(\lambda (_: (pc3_left c t3 
43597 t4)).(\lambda (H2: ((\forall (t5: T).((pc3_left c t4 t5) \to (pc3_left c t3 
43598 t5))))).(\lambda (t5: T).(\lambda (H3: (pc3_left c t4 t5)).(pc3_left_ur c t0 
43599 t3 H0 t5 (H2 t5 H3)))))))))) (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: 
43600 (pr2 c t0 t3)).(\lambda (t4: T).(\lambda (_: (pc3_left c t0 t4)).(\lambda 
43601 (H2: ((\forall (t3: T).((pc3_left c t4 t3) \to (pc3_left c t0 
43602 t3))))).(\lambda (t5: T).(\lambda (H3: (pc3_left c t4 t5)).(pc3_left_ux c t0 
43603 t3 H0 t5 (H2 t5 H3)))))))))) t1 t2 H)))).
43604
43605 theorem pc3_ind_left__pc3_left_sym:
43606  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3_left c t1 t2) \to 
43607 (pc3_left c t2 t1))))
43608 \def
43609  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3_left c t1 
43610 t2)).(pc3_left_ind c (\lambda (t: T).(\lambda (t0: T).(pc3_left c t0 t))) 
43611 (\lambda (t: T).(pc3_left_r c t)) (\lambda (t0: T).(\lambda (t3: T).(\lambda 
43612 (H0: (pr2 c t0 t3)).(\lambda (t4: T).(\lambda (_: (pc3_left c t3 
43613 t4)).(\lambda (H2: (pc3_left c t4 t3)).(pc3_ind_left__pc3_left_trans c t4 t3 
43614 H2 t0 (pc3_left_ux c t0 t3 H0 t0 (pc3_left_r c t0))))))))) (\lambda (t0: 
43615 T).(\lambda (t3: T).(\lambda (H0: (pr2 c t0 t3)).(\lambda (t4: T).(\lambda 
43616 (_: (pc3_left c t0 t4)).(\lambda (H2: (pc3_left c t4 
43617 t0)).(pc3_ind_left__pc3_left_trans c t4 t0 H2 t3 (pc3_left_ur c t0 t3 H0 t3 
43618 (pc3_left_r c t3))))))))) t1 t2 H)))).
43619
43620 theorem pc3_ind_left__pc3_left_pc3:
43621  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3 c t1 t2) \to 
43622 (pc3_left c t1 t2))))
43623 \def
43624  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3 c t1 
43625 t2)).(let H0 \def H in (ex2_ind T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: 
43626 T).(pr3 c t2 t)) (pc3_left c t1 t2) (\lambda (x: T).(\lambda (H1: (pr3 c t1 
43627 x)).(\lambda (H2: (pr3 c t2 x)).(pc3_ind_left__pc3_left_trans c t1 x 
43628 (pc3_ind_left__pc3_left_pr3 c t1 x H1) t2 (pc3_ind_left__pc3_left_sym c t2 x 
43629 (pc3_ind_left__pc3_left_pr3 c t2 x H2)))))) H0))))).
43630
43631 theorem pc3_ind_left__pc3_pc3_left:
43632  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3_left c t1 t2) \to 
43633 (pc3 c t1 t2))))
43634 \def
43635  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3_left c t1 
43636 t2)).(pc3_left_ind c (\lambda (t: T).(\lambda (t0: T).(pc3 c t t0))) (\lambda 
43637 (t: T).(pc3_refl c t)) (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c 
43638 t0 t3)).(\lambda (t4: T).(\lambda (_: (pc3_left c t3 t4)).(\lambda (H2: (pc3 
43639 c t3 t4)).(pc3_pr2_u c t3 t0 H0 t4 H2))))))) (\lambda (t0: T).(\lambda (t3: 
43640 T).(\lambda (H0: (pr2 c t0 t3)).(\lambda (t4: T).(\lambda (_: (pc3_left c t0 
43641 t4)).(\lambda (H2: (pc3 c t0 t4)).(pc3_t t0 c t3 (pc3_pr2_x c t3 t0 H0) t4 
43642 H2))))))) t1 t2 H)))).
43643
43644 theorem pc3_ind_left:
43645  \forall (c: C).(\forall (P: ((T \to (T \to Prop)))).(((\forall (t: T).(P t 
43646 t))) \to (((\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall (t3: 
43647 T).((pc3 c t2 t3) \to ((P t2 t3) \to (P t1 t3)))))))) \to (((\forall (t1: 
43648 T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall (t3: T).((pc3 c t1 t3) \to 
43649 ((P t1 t3) \to (P t2 t3)))))))) \to (\forall (t: T).(\forall (t0: T).((pc3 c 
43650 t t0) \to (P t t0))))))))
43651 \def
43652  \lambda (c: C).(\lambda (P: ((T \to (T \to Prop)))).(\lambda (H: ((\forall 
43653 (t: T).(P t t)))).(\lambda (H0: ((\forall (t1: T).(\forall (t2: T).((pr2 c t1 
43654 t2) \to (\forall (t3: T).((pc3 c t2 t3) \to ((P t2 t3) \to (P t1 
43655 t3))))))))).(\lambda (H1: ((\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) 
43656 \to (\forall (t3: T).((pc3 c t1 t3) \to ((P t1 t3) \to (P t2 
43657 t3))))))))).(\lambda (t: T).(\lambda (t0: T).(\lambda (H2: (pc3 c t 
43658 t0)).(pc3_left_ind c (\lambda (t1: T).(\lambda (t2: T).(P t1 t2))) H (\lambda 
43659 (t1: T).(\lambda (t2: T).(\lambda (H3: (pr2 c t1 t2)).(\lambda (t3: 
43660 T).(\lambda (H4: (pc3_left c t2 t3)).(\lambda (H5: (P t2 t3)).(H0 t1 t2 H3 t3 
43661 (pc3_ind_left__pc3_pc3_left c t2 t3 H4) H5))))))) (\lambda (t1: T).(\lambda 
43662 (t2: T).(\lambda (H3: (pr2 c t1 t2)).(\lambda (t3: T).(\lambda (H4: (pc3_left 
43663 c t1 t3)).(\lambda (H5: (P t1 t3)).(H1 t1 t2 H3 t3 
43664 (pc3_ind_left__pc3_pc3_left c t1 t3 H4) H5))))))) t t0 
43665 (pc3_ind_left__pc3_left_pc3 c t t0 H2))))))))).
43666
43667 theorem pc3_gen_sort:
43668  \forall (c: C).(\forall (m: nat).(\forall (n: nat).((pc3 c (TSort m) (TSort 
43669 n)) \to (eq nat m n))))
43670 \def
43671  \lambda (c: C).(\lambda (m: nat).(\lambda (n: nat).(\lambda (H: (pc3 c 
43672 (TSort m) (TSort n))).(let H0 \def H in (ex2_ind T (\lambda (t: T).(pr3 c 
43673 (TSort m) t)) (\lambda (t: T).(pr3 c (TSort n) t)) (eq nat m n) (\lambda (x: 
43674 T).(\lambda (H1: (pr3 c (TSort m) x)).(\lambda (H2: (pr3 c (TSort n) x)).(let 
43675 H3 \def (eq_ind T x (\lambda (t: T).(eq T t (TSort n))) (pr3_gen_sort c x n 
43676 H2) (TSort m) (pr3_gen_sort c x m H1)) in (let H4 \def (f_equal T nat 
43677 (\lambda (e: T).(match e return (\lambda (_: T).nat) with [(TSort n) 
43678 \Rightarrow n | (TLRef _) \Rightarrow m | (THead _ _ _) \Rightarrow m])) 
43679 (TSort m) (TSort n) H3) in H4))))) H0))))).
43680
43681 theorem pc3_gen_abst:
43682  \forall (c: C).(\forall (u1: T).(\forall (u2: T).(\forall (t1: T).(\forall 
43683 (t2: T).((pc3 c (THead (Bind Abst) u1 t1) (THead (Bind Abst) u2 t2)) \to 
43684 (land (pc3 c u1 u2) (\forall (b: B).(\forall (u: T).(pc3 (CHead c (Bind b) u) 
43685 t1 t2)))))))))
43686 \def
43687  \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (t1: T).(\lambda 
43688 (t2: T).(\lambda (H: (pc3 c (THead (Bind Abst) u1 t1) (THead (Bind Abst) u2 
43689 t2))).(let H0 \def H in (ex2_ind T (\lambda (t: T).(pr3 c (THead (Bind Abst) 
43690 u1 t1) t)) (\lambda (t: T).(pr3 c (THead (Bind Abst) u2 t2) t)) (land (pc3 c 
43691 u1 u2) (\forall (b: B).(\forall (u: T).(pc3 (CHead c (Bind b) u) t1 t2)))) 
43692 (\lambda (x: T).(\lambda (H1: (pr3 c (THead (Bind Abst) u1 t1) x)).(\lambda 
43693 (H2: (pr3 c (THead (Bind Abst) u2 t2) x)).(let H3 \def (pr3_gen_abst c u2 t2 
43694 x H2) in (ex3_2_ind T T (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead 
43695 (Bind Abst) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr3 c u2 u3))) 
43696 (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead 
43697 c (Bind b) u) t2 t3))))) (land (pc3 c u1 u2) (\forall (b: B).(\forall (u: 
43698 T).(pc3 (CHead c (Bind b) u) t1 t2)))) (\lambda (x0: T).(\lambda (x1: 
43699 T).(\lambda (H4: (eq T x (THead (Bind Abst) x0 x1))).(\lambda (H5: (pr3 c u2 
43700 x0)).(\lambda (H6: ((\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
43701 t2 x1))))).(let H7 \def (pr3_gen_abst c u1 t1 x H1) in (ex3_2_ind T T 
43702 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u3 t3)))) 
43703 (\lambda (u3: T).(\lambda (_: T).(pr3 c u1 u3))) (\lambda (_: T).(\lambda 
43704 (t3: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t1 t3))))) 
43705 (land (pc3 c u1 u2) (\forall (b: B).(\forall (u: T).(pc3 (CHead c (Bind b) u) 
43706 t1 t2)))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H8: (eq T x (THead 
43707 (Bind Abst) x2 x3))).(\lambda (H9: (pr3 c u1 x2)).(\lambda (H10: ((\forall 
43708 (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t1 x3))))).(let H11 \def 
43709 (eq_ind T x (\lambda (t: T).(eq T t (THead (Bind Abst) x0 x1))) H4 (THead 
43710 (Bind Abst) x2 x3) H8) in (let H12 \def (f_equal T T (\lambda (e: T).(match e 
43711 return (\lambda (_: T).T) with [(TSort _) \Rightarrow x2 | (TLRef _) 
43712 \Rightarrow x2 | (THead _ t _) \Rightarrow t])) (THead (Bind Abst) x2 x3) 
43713 (THead (Bind Abst) x0 x1) H11) in ((let H13 \def (f_equal T T (\lambda (e: 
43714 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow x3 | (TLRef 
43715 _) \Rightarrow x3 | (THead _ _ t) \Rightarrow t])) (THead (Bind Abst) x2 x3) 
43716 (THead (Bind Abst) x0 x1) H11) in (\lambda (H14: (eq T x2 x0)).(let H15 \def 
43717 (eq_ind T x3 (\lambda (t: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c 
43718 (Bind b) u) t1 t)))) H10 x1 H13) in (let H16 \def (eq_ind T x2 (\lambda (t: 
43719 T).(pr3 c u1 t)) H9 x0 H14) in (conj (pc3 c u1 u2) (\forall (b: B).(\forall 
43720 (u: T).(pc3 (CHead c (Bind b) u) t1 t2))) (pc3_pr3_t c u1 x0 H16 u2 H5) 
43721 (\lambda (b: B).(\lambda (u: T).(pc3_pr3_t (CHead c (Bind b) u) t1 x1 (H15 b 
43722 u) t2 (H6 b u))))))))) H12)))))))) H7))))))) H3))))) H0))))))).
43723
43724 theorem pc3_gen_lift:
43725  \forall (c: C).(\forall (t1: T).(\forall (t2: T).(\forall (h: nat).(\forall 
43726 (d: nat).((pc3 c (lift h d t1) (lift h d t2)) \to (\forall (e: C).((drop h d 
43727 c e) \to (pc3 e t1 t2))))))))
43728 \def
43729  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (h: nat).(\lambda 
43730 (d: nat).(\lambda (H: (pc3 c (lift h d t1) (lift h d t2))).(\lambda (e: 
43731 C).(\lambda (H0: (drop h d c e)).(let H1 \def H in (ex2_ind T (\lambda (t: 
43732 T).(pr3 c (lift h d t1) t)) (\lambda (t: T).(pr3 c (lift h d t2) t)) (pc3 e 
43733 t1 t2) (\lambda (x: T).(\lambda (H2: (pr3 c (lift h d t1) x)).(\lambda (H3: 
43734 (pr3 c (lift h d t2) x)).(let H4 \def (pr3_gen_lift c t2 x h d H3 e H0) in 
43735 (ex2_ind T (\lambda (t3: T).(eq T x (lift h d t3))) (\lambda (t3: T).(pr3 e 
43736 t2 t3)) (pc3 e t1 t2) (\lambda (x0: T).(\lambda (H5: (eq T x (lift h d 
43737 x0))).(\lambda (H6: (pr3 e t2 x0)).(let H7 \def (pr3_gen_lift c t1 x h d H2 e 
43738 H0) in (ex2_ind T (\lambda (t3: T).(eq T x (lift h d t3))) (\lambda (t3: 
43739 T).(pr3 e t1 t3)) (pc3 e t1 t2) (\lambda (x1: T).(\lambda (H8: (eq T x (lift 
43740 h d x1))).(\lambda (H9: (pr3 e t1 x1)).(let H10 \def (eq_ind T x (\lambda (t: 
43741 T).(eq T t (lift h d x0))) H5 (lift h d x1) H8) in (let H11 \def (eq_ind T x1 
43742 (\lambda (t: T).(pr3 e t1 t)) H9 x0 (lift_inj x1 x0 h d H10)) in (pc3_pr3_t e 
43743 t1 x0 H11 t2 H6)))))) H7))))) H4))))) H1))))))))).
43744
43745 theorem pc3_gen_not_abst:
43746  \forall (b: B).((not (eq B b Abst)) \to (\forall (c: C).(\forall (t1: 
43747 T).(\forall (t2: T).(\forall (u1: T).(\forall (u2: T).((pc3 c (THead (Bind b) 
43748 u1 t1) (THead (Bind Abst) u2 t2)) \to (pc3 (CHead c (Bind b) u1) t1 (lift (S 
43749 O) O (THead (Bind Abst) u2 t2))))))))))
43750 \def
43751  \lambda (b: B).(B_ind (\lambda (b0: B).((not (eq B b0 Abst)) \to (\forall 
43752 (c: C).(\forall (t1: T).(\forall (t2: T).(\forall (u1: T).(\forall (u2: 
43753 T).((pc3 c (THead (Bind b0) u1 t1) (THead (Bind Abst) u2 t2)) \to (pc3 (CHead 
43754 c (Bind b0) u1) t1 (lift (S O) O (THead (Bind Abst) u2 t2))))))))))) (\lambda 
43755 (_: (not (eq B Abbr Abst))).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: 
43756 T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H0: (pc3 c (THead (Bind Abbr) 
43757 u1 t1) (THead (Bind Abst) u2 t2))).(let H1 \def H0 in (ex2_ind T (\lambda (t: 
43758 T).(pr3 c (THead (Bind Abbr) u1 t1) t)) (\lambda (t: T).(pr3 c (THead (Bind 
43759 Abst) u2 t2) t)) (pc3 (CHead c (Bind Abbr) u1) t1 (lift (S O) O (THead (Bind 
43760 Abst) u2 t2))) (\lambda (x: T).(\lambda (H2: (pr3 c (THead (Bind Abbr) u1 t1) 
43761 x)).(\lambda (H3: (pr3 c (THead (Bind Abst) u2 t2) x)).(let H4 \def 
43762 (pr3_gen_abbr c u1 t1 x H2) in (or_ind (ex3_2 T T (\lambda (u3: T).(\lambda 
43763 (t3: T).(eq T x (THead (Bind Abbr) u3 t3)))) (\lambda (u3: T).(\lambda (_: 
43764 T).(pr3 c u1 u3))) (\lambda (_: T).(\lambda (t3: T).(pr3 (CHead c (Bind Abbr) 
43765 u1) t1 t3)))) (pr3 (CHead c (Bind Abbr) u1) t1 (lift (S O) O x)) (pc3 (CHead 
43766 c (Bind Abbr) u1) t1 (lift (S O) O (THead (Bind Abst) u2 t2))) (\lambda (H5: 
43767 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind Abbr) u2 
43768 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c u1 u2))) (\lambda (_: 
43769 T).(\lambda (t2: T).(pr3 (CHead c (Bind Abbr) u1) t1 t2))))).(ex3_2_ind T T 
43770 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Abbr) u3 t3)))) 
43771 (\lambda (u3: T).(\lambda (_: T).(pr3 c u1 u3))) (\lambda (_: T).(\lambda 
43772 (t3: T).(pr3 (CHead c (Bind Abbr) u1) t1 t3))) (pc3 (CHead c (Bind Abbr) u1) 
43773 t1 (lift (S O) O (THead (Bind Abst) u2 t2))) (\lambda (x0: T).(\lambda (x1: 
43774 T).(\lambda (H6: (eq T x (THead (Bind Abbr) x0 x1))).(\lambda (_: (pr3 c u1 
43775 x0)).(\lambda (_: (pr3 (CHead c (Bind Abbr) u1) t1 x1)).(let H9 \def 
43776 (pr3_gen_abst c u2 t2 x H3) in (ex3_2_ind T T (\lambda (u3: T).(\lambda (t3: 
43777 T).(eq T x (THead (Bind Abst) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr3 
43778 c u2 u3))) (\lambda (_: T).(\lambda (t3: T).(\forall (b0: B).(\forall (u: 
43779 T).(pr3 (CHead c (Bind b0) u) t2 t3))))) (pc3 (CHead c (Bind Abbr) u1) t1 
43780 (lift (S O) O (THead (Bind Abst) u2 t2))) (\lambda (x2: T).(\lambda (x3: 
43781 T).(\lambda (H10: (eq T x (THead (Bind Abst) x2 x3))).(\lambda (_: (pr3 c u2 
43782 x2)).(\lambda (_: ((\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
43783 t2 x3))))).(let H13 \def (eq_ind T x (\lambda (t: T).(eq T t (THead (Bind 
43784 Abbr) x0 x1))) H6 (THead (Bind Abst) x2 x3) H10) in (let H14 \def (eq_ind T 
43785 (THead (Bind Abst) x2 x3) (\lambda (ee: T).(match ee return (\lambda (_: 
43786 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
43787 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
43788 b) \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow 
43789 False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat _) 
43790 \Rightarrow False])])) I (THead (Bind Abbr) x0 x1) H13) in (False_ind (pc3 
43791 (CHead c (Bind Abbr) u1) t1 (lift (S O) O (THead (Bind Abst) u2 t2))) 
43792 H14)))))))) H9))))))) H5)) (\lambda (H5: (pr3 (CHead c (Bind Abbr) u1) t1 
43793 (lift (S O) O x))).(let H6 \def (pr3_gen_abst c u2 t2 x H3) in (ex3_2_ind T T 
43794 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u3 t3)))) 
43795 (\lambda (u3: T).(\lambda (_: T).(pr3 c u2 u3))) (\lambda (_: T).(\lambda 
43796 (t3: T).(\forall (b0: B).(\forall (u: T).(pr3 (CHead c (Bind b0) u) t2 
43797 t3))))) (pc3 (CHead c (Bind Abbr) u1) t1 (lift (S O) O (THead (Bind Abst) u2 
43798 t2))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H7: (eq T x (THead (Bind 
43799 Abst) x0 x1))).(\lambda (H8: (pr3 c u2 x0)).(\lambda (H9: ((\forall (b: 
43800 B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t2 x1))))).(let H10 \def (eq_ind 
43801 T x (\lambda (t: T).(pr3 (CHead c (Bind Abbr) u1) t1 (lift (S O) O t))) H5 
43802 (THead (Bind Abst) x0 x1) H7) in (pc3_pr3_t (CHead c (Bind Abbr) u1) t1 (lift 
43803 (S O) O (THead (Bind Abst) x0 x1)) H10 (lift (S O) O (THead (Bind Abst) u2 
43804 t2)) (pr3_lift (CHead c (Bind Abbr) u1) c (S O) O (drop_drop (Bind Abbr) O c 
43805 c (drop_refl c) u1) (THead (Bind Abst) u2 t2) (THead (Bind Abst) x0 x1) 
43806 (pr3_head_12 c u2 x0 H8 (Bind Abst) t2 x1 (H9 Abst x0)))))))))) H6))) H4))))) 
43807 H1))))))))) (\lambda (H: (not (eq B Abst Abst))).(\lambda (c: C).(\lambda 
43808 (t1: T).(\lambda (t2: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (_: (pc3 
43809 c (THead (Bind Abst) u1 t1) (THead (Bind Abst) u2 t2))).(let H1 \def (match 
43810 (H (refl_equal B Abst)) return (\lambda (_: False).(pc3 (CHead c (Bind Abst) 
43811 u1) t1 (lift (S O) O (THead (Bind Abst) u2 t2)))) with []) in H1)))))))) 
43812 (\lambda (_: (not (eq B Void Abst))).(\lambda (c: C).(\lambda (t1: 
43813 T).(\lambda (t2: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H0: (pc3 c 
43814 (THead (Bind Void) u1 t1) (THead (Bind Abst) u2 t2))).(let H1 \def H0 in 
43815 (ex2_ind T (\lambda (t: T).(pr3 c (THead (Bind Void) u1 t1) t)) (\lambda (t: 
43816 T).(pr3 c (THead (Bind Abst) u2 t2) t)) (pc3 (CHead c (Bind Void) u1) t1 
43817 (lift (S O) O (THead (Bind Abst) u2 t2))) (\lambda (x: T).(\lambda (H2: (pr3 
43818 c (THead (Bind Void) u1 t1) x)).(\lambda (H3: (pr3 c (THead (Bind Abst) u2 
43819 t2) x)).(let H4 \def (pr3_gen_void c u1 t1 x H2) in (or_ind (ex3_2 T T 
43820 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u3 t3)))) 
43821 (\lambda (u3: T).(\lambda (_: T).(pr3 c u1 u3))) (\lambda (_: T).(\lambda 
43822 (t3: T).(\forall (b0: B).(\forall (u: T).(pr3 (CHead c (Bind b0) u) t1 
43823 t3)))))) (pr3 (CHead c (Bind Void) u1) t1 (lift (S O) O x)) (pc3 (CHead c 
43824 (Bind Void) u1) t1 (lift (S O) O (THead (Bind Abst) u2 t2))) (\lambda (H5: 
43825 (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T x (THead (Bind Void) u2 
43826 t2)))) (\lambda (u2: T).(\lambda (_: T).(pr3 c u1 u2))) (\lambda (_: 
43827 T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
43828 t1 t2))))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead 
43829 (Bind Void) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr3 c u1 u3))) 
43830 (\lambda (_: T).(\lambda (t3: T).(\forall (b0: B).(\forall (u: T).(pr3 (CHead 
43831 c (Bind b0) u) t1 t3))))) (pc3 (CHead c (Bind Void) u1) t1 (lift (S O) O 
43832 (THead (Bind Abst) u2 t2))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H6: 
43833 (eq T x (THead (Bind Void) x0 x1))).(\lambda (_: (pr3 c u1 x0)).(\lambda (_: 
43834 ((\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t1 x1))))).(let H9 
43835 \def (pr3_gen_abst c u2 t2 x H3) in (ex3_2_ind T T (\lambda (u3: T).(\lambda 
43836 (t3: T).(eq T x (THead (Bind Abst) u3 t3)))) (\lambda (u3: T).(\lambda (_: 
43837 T).(pr3 c u2 u3))) (\lambda (_: T).(\lambda (t3: T).(\forall (b0: B).(\forall 
43838 (u: T).(pr3 (CHead c (Bind b0) u) t2 t3))))) (pc3 (CHead c (Bind Void) u1) t1 
43839 (lift (S O) O (THead (Bind Abst) u2 t2))) (\lambda (x2: T).(\lambda (x3: 
43840 T).(\lambda (H10: (eq T x (THead (Bind Abst) x2 x3))).(\lambda (_: (pr3 c u2 
43841 x2)).(\lambda (_: ((\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
43842 t2 x3))))).(let H13 \def (eq_ind T x (\lambda (t: T).(eq T t (THead (Bind 
43843 Void) x0 x1))) H6 (THead (Bind Abst) x2 x3) H10) in (let H14 \def (eq_ind T 
43844 (THead (Bind Abst) x2 x3) (\lambda (ee: T).(match ee return (\lambda (_: 
43845 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
43846 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
43847 b) \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow 
43848 False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat _) 
43849 \Rightarrow False])])) I (THead (Bind Void) x0 x1) H13) in (False_ind (pc3 
43850 (CHead c (Bind Void) u1) t1 (lift (S O) O (THead (Bind Abst) u2 t2))) 
43851 H14)))))))) H9))))))) H5)) (\lambda (H5: (pr3 (CHead c (Bind Void) u1) t1 
43852 (lift (S O) O x))).(let H6 \def (pr3_gen_abst c u2 t2 x H3) in (ex3_2_ind T T 
43853 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u3 t3)))) 
43854 (\lambda (u3: T).(\lambda (_: T).(pr3 c u2 u3))) (\lambda (_: T).(\lambda 
43855 (t3: T).(\forall (b0: B).(\forall (u: T).(pr3 (CHead c (Bind b0) u) t2 
43856 t3))))) (pc3 (CHead c (Bind Void) u1) t1 (lift (S O) O (THead (Bind Abst) u2 
43857 t2))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H7: (eq T x (THead (Bind 
43858 Abst) x0 x1))).(\lambda (H8: (pr3 c u2 x0)).(\lambda (H9: ((\forall (b: 
43859 B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t2 x1))))).(let H10 \def (eq_ind 
43860 T x (\lambda (t: T).(pr3 (CHead c (Bind Void) u1) t1 (lift (S O) O t))) H5 
43861 (THead (Bind Abst) x0 x1) H7) in (pc3_pr3_t (CHead c (Bind Void) u1) t1 (lift 
43862 (S O) O (THead (Bind Abst) x0 x1)) H10 (lift (S O) O (THead (Bind Abst) u2 
43863 t2)) (pr3_lift (CHead c (Bind Void) u1) c (S O) O (drop_drop (Bind Void) O c 
43864 c (drop_refl c) u1) (THead (Bind Abst) u2 t2) (THead (Bind Abst) x0 x1) 
43865 (pr3_head_12 c u2 x0 H8 (Bind Abst) t2 x1 (H9 Abst x0)))))))))) H6))) H4))))) 
43866 H1))))))))) b).
43867
43868 theorem pc3_gen_lift_abst:
43869  \forall (c: C).(\forall (t: T).(\forall (t2: T).(\forall (u2: T).(\forall 
43870 (h: nat).(\forall (d: nat).((pc3 c (lift h d t) (THead (Bind Abst) u2 t2)) 
43871 \to (\forall (e: C).((drop h d c e) \to (ex3_2 T T (\lambda (u1: T).(\lambda 
43872 (t1: T).(pr3 e t (THead (Bind Abst) u1 t1)))) (\lambda (u1: T).(\lambda (_: 
43873 T).(pr3 c u2 (lift h d u1)))) (\lambda (_: T).(\lambda (t1: T).(\forall (b: 
43874 B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t2 (lift h (S d) 
43875 t1)))))))))))))))
43876 \def
43877  \lambda (c: C).(\lambda (t: T).(\lambda (t2: T).(\lambda (u2: T).(\lambda 
43878 (h: nat).(\lambda (d: nat).(\lambda (H: (pc3 c (lift h d t) (THead (Bind 
43879 Abst) u2 t2))).(\lambda (e: C).(\lambda (H0: (drop h d c e)).(let H1 \def H 
43880 in (ex2_ind T (\lambda (t0: T).(pr3 c (lift h d t) t0)) (\lambda (t0: T).(pr3 
43881 c (THead (Bind Abst) u2 t2) t0)) (ex3_2 T T (\lambda (u1: T).(\lambda (t1: 
43882 T).(pr3 e t (THead (Bind Abst) u1 t1)))) (\lambda (u1: T).(\lambda (_: 
43883 T).(pr3 c u2 (lift h d u1)))) (\lambda (_: T).(\lambda (t1: T).(\forall (b: 
43884 B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t2 (lift h (S d) t1))))))) 
43885 (\lambda (x: T).(\lambda (H2: (pr3 c (lift h d t) x)).(\lambda (H3: (pr3 c 
43886 (THead (Bind Abst) u2 t2) x)).(let H4 \def (pr3_gen_lift c t x h d H2 e H0) 
43887 in (ex2_ind T (\lambda (t3: T).(eq T x (lift h d t3))) (\lambda (t3: T).(pr3 
43888 e t t3)) (ex3_2 T T (\lambda (u1: T).(\lambda (t1: T).(pr3 e t (THead (Bind 
43889 Abst) u1 t1)))) (\lambda (u1: T).(\lambda (_: T).(pr3 c u2 (lift h d u1)))) 
43890 (\lambda (_: T).(\lambda (t1: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead 
43891 c (Bind b) u) t2 (lift h (S d) t1))))))) (\lambda (x0: T).(\lambda (H5: (eq T 
43892 x (lift h d x0))).(\lambda (H6: (pr3 e t x0)).(let H7 \def (pr3_gen_abst c u2 
43893 t2 x H3) in (ex3_2_ind T T (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead 
43894 (Bind Abst) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr3 c u2 u3))) 
43895 (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead 
43896 c (Bind b) u) t2 t3))))) (ex3_2 T T (\lambda (u1: T).(\lambda (t1: T).(pr3 e 
43897 t (THead (Bind Abst) u1 t1)))) (\lambda (u1: T).(\lambda (_: T).(pr3 c u2 
43898 (lift h d u1)))) (\lambda (_: T).(\lambda (t1: T).(\forall (b: B).(\forall 
43899 (u: T).(pr3 (CHead c (Bind b) u) t2 (lift h (S d) t1))))))) (\lambda (x1: 
43900 T).(\lambda (x2: T).(\lambda (H8: (eq T x (THead (Bind Abst) x1 
43901 x2))).(\lambda (H9: (pr3 c u2 x1)).(\lambda (H10: ((\forall (b: B).(\forall 
43902 (u: T).(pr3 (CHead c (Bind b) u) t2 x2))))).(let H11 \def (eq_ind T x 
43903 (\lambda (t: T).(eq T t (lift h d x0))) H5 (THead (Bind Abst) x1 x2) H8) in 
43904 (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x0 (THead (Bind Abst) y 
43905 z)))) (\lambda (y: T).(\lambda (_: T).(eq T x1 (lift h d y)))) (\lambda (_: 
43906 T).(\lambda (z: T).(eq T x2 (lift h (S d) z)))) (ex3_2 T T (\lambda (u1: 
43907 T).(\lambda (t1: T).(pr3 e t (THead (Bind Abst) u1 t1)))) (\lambda (u1: 
43908 T).(\lambda (_: T).(pr3 c u2 (lift h d u1)))) (\lambda (_: T).(\lambda (t1: 
43909 T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t2 (lift h (S d) 
43910 t1))))))) (\lambda (x3: T).(\lambda (x4: T).(\lambda (H12: (eq T x0 (THead 
43911 (Bind Abst) x3 x4))).(\lambda (H13: (eq T x1 (lift h d x3))).(\lambda (H14: 
43912 (eq T x2 (lift h (S d) x4))).(let H15 \def (eq_ind T x2 (\lambda (t: 
43913 T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t2 t)))) H10 
43914 (lift h (S d) x4) H14) in (let H16 \def (eq_ind T x1 (\lambda (t: T).(pr3 c 
43915 u2 t)) H9 (lift h d x3) H13) in (let H17 \def (eq_ind T x0 (\lambda (t0: 
43916 T).(pr3 e t t0)) H6 (THead (Bind Abst) x3 x4) H12) in (ex3_2_intro T T 
43917 (\lambda (u1: T).(\lambda (t1: T).(pr3 e t (THead (Bind Abst) u1 t1)))) 
43918 (\lambda (u1: T).(\lambda (_: T).(pr3 c u2 (lift h d u1)))) (\lambda (_: 
43919 T).(\lambda (t1: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) 
43920 t2 (lift h (S d) t1)))))) x3 x4 H17 H16 H15))))))))) (lift_gen_bind Abst x1 
43921 x2 x0 h d H11)))))))) H7))))) H4))))) H1)))))))))).
43922
43923 theorem pc3_pr2_fsubst0:
43924  \forall (c1: C).(\forall (t1: T).(\forall (t: T).((pr2 c1 t1 t) \to (\forall 
43925 (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t2: T).((fsubst0 i u c1 
43926 t1 c2 t2) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 
43927 c2 t2 t)))))))))))
43928 \def
43929  \lambda (c1: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: (pr2 c1 t1 
43930 t)).(pr2_ind (\lambda (c: C).(\lambda (t0: T).(\lambda (t2: T).(\forall (i: 
43931 nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: T).((fsubst0 i u c t0 c2 
43932 t3) \to (\forall (e: C).((getl i c (CHead e (Bind Abbr) u)) \to (pc3 c2 t3 
43933 t2))))))))))) (\lambda (c: C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: 
43934 (pr0 t2 t3)).(\lambda (i: nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t0: 
43935 T).(\lambda (H1: (fsubst0 i u c t2 c2 t0)).(fsubst0_ind i u c t2 (\lambda 
43936 (c0: C).(\lambda (t4: T).(\forall (e: C).((getl i c (CHead e (Bind Abbr) u)) 
43937 \to (pc3 c0 t4 t3))))) (\lambda (t4: T).(\lambda (H2: (subst0 i u t2 
43938 t4)).(\lambda (e: C).(\lambda (H3: (getl i c (CHead e (Bind Abbr) 
43939 u))).(or_ind (pr0 t4 t3) (ex2 T (\lambda (w2: T).(pr0 t4 w2)) (\lambda (w2: 
43940 T).(subst0 i u t3 w2))) (pc3 c t4 t3) (\lambda (H4: (pr0 t4 t3)).(pc3_pr2_r c 
43941 t4 t3 (pr2_free c t4 t3 H4))) (\lambda (H4: (ex2 T (\lambda (w2: T).(pr0 t4 
43942 w2)) (\lambda (w2: T).(subst0 i u t3 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 
43943 t4 w2)) (\lambda (w2: T).(subst0 i u t3 w2)) (pc3 c t4 t3) (\lambda (x: 
43944 T).(\lambda (H5: (pr0 t4 x)).(\lambda (H6: (subst0 i u t3 x)).(pc3_pr2_u c x 
43945 t4 (pr2_free c t4 x H5) t3 (pc3_pr2_x c x t3 (pr2_delta c e u i H3 t3 t3 
43946 (pr0_refl t3) x H6)))))) H4)) (pr0_subst0 t2 t3 H0 u t4 i H2 u (pr0_refl 
43947 u))))))) (\lambda (c0: C).(\lambda (_: (csubst0 i u c c0)).(\lambda (e: 
43948 C).(\lambda (_: (getl i c (CHead e (Bind Abbr) u))).(pc3_pr2_r c0 t2 t3 
43949 (pr2_free c0 t2 t3 H0)))))) (\lambda (t4: T).(\lambda (H2: (subst0 i u t2 
43950 t4)).(\lambda (c0: C).(\lambda (H3: (csubst0 i u c c0)).(\lambda (e: 
43951 C).(\lambda (H4: (getl i c (CHead e (Bind Abbr) u))).(or_ind (pr0 t4 t3) (ex2 
43952 T (\lambda (w2: T).(pr0 t4 w2)) (\lambda (w2: T).(subst0 i u t3 w2))) (pc3 c0 
43953 t4 t3) (\lambda (H5: (pr0 t4 t3)).(pc3_pr2_r c0 t4 t3 (pr2_free c0 t4 t3 
43954 H5))) (\lambda (H5: (ex2 T (\lambda (w2: T).(pr0 t4 w2)) (\lambda (w2: 
43955 T).(subst0 i u t3 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 t4 w2)) (\lambda 
43956 (w2: T).(subst0 i u t3 w2)) (pc3 c0 t4 t3) (\lambda (x: T).(\lambda (H6: (pr0 
43957 t4 x)).(\lambda (H7: (subst0 i u t3 x)).(pc3_pr2_u c0 x t4 (pr2_free c0 t4 x 
43958 H6) t3 (pc3_pr2_x c0 x t3 (pr2_delta c0 e u i (csubst0_getl_ge i i (le_n i) c 
43959 c0 u H3 (CHead e (Bind Abbr) u) H4) t3 t3 (pr0_refl t3) x H7)))))) H5)) 
43960 (pr0_subst0 t2 t3 H0 u t4 i H2 u (pr0_refl u))))))))) c2 t0 H1)))))))))) 
43961 (\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
43962 (H0: (getl i c (CHead d (Bind Abbr) u))).(\lambda (t2: T).(\lambda (t3: 
43963 T).(\lambda (H1: (pr0 t2 t3)).(\lambda (t0: T).(\lambda (H2: (subst0 i u t3 
43964 t0)).(\lambda (i0: nat).(\lambda (u0: T).(\lambda (c2: C).(\lambda (t4: 
43965 T).(\lambda (H3: (fsubst0 i0 u0 c t2 c2 t4)).(fsubst0_ind i0 u0 c t2 (\lambda 
43966 (c0: C).(\lambda (t5: T).(\forall (e: C).((getl i0 c (CHead e (Bind Abbr) 
43967 u0)) \to (pc3 c0 t5 t0))))) (\lambda (t5: T).(\lambda (H4: (subst0 i0 u0 t2 
43968 t5)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) 
43969 u0))).(pc3_t t2 c t5 (pc3_s c t5 t2 (pc3_pr2_r c t2 t5 (pr2_delta c e u0 i0 
43970 H5 t2 t2 (pr0_refl t2) t5 H4))) t0 (pc3_pr2_r c t2 t0 (pr2_delta c d u i H0 
43971 t2 t3 H1 t0 H2))))))) (\lambda (c0: C).(\lambda (H4: (csubst0 i0 u0 c 
43972 c0)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) 
43973 u0))).(lt_le_e i i0 (pc3 c0 t2 t0) (\lambda (H6: (lt i i0)).(let H7 \def 
43974 (csubst0_getl_lt i0 i H6 c c0 u0 H4 (CHead d (Bind Abbr) u) H0) in (or4_ind 
43975 (getl i c0 (CHead d (Bind Abbr) u)) (ex3_4 B C T T (\lambda (b: B).(\lambda 
43976 (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead 
43977 e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
43978 T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: 
43979 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) 
43980 u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
43981 C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) 
43982 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 
43983 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
43984 C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) (ex4_5 B C C T T 
43985 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
43986 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda 
43987 (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl 
43988 i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
43989 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) 
43990 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
43991 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))) (pc3 c0 t2 t0) (\lambda (H8: 
43992 (getl i c0 (CHead d (Bind Abbr) u))).(pc3_pr2_r c0 t2 t0 (pr2_delta c0 d u i 
43993 H8 t2 t3 H1 t0 H2))) (\lambda (H8: (ex3_4 B C T T (\lambda (b: B).(\lambda 
43994 (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead 
43995 e0 (Bind b) u0)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
43996 T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: 
43997 B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (S i)) 
43998 u0 u w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda 
43999 (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) 
44000 u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
44001 T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
44002 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w))))) 
44003 (pc3 c0 t2 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: T).(\lambda 
44004 (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
44005 x2))).(\lambda (H10: (getl i c0 (CHead x1 (Bind x0) x3))).(\lambda (H11: 
44006 (subst0 (minus i0 (S i)) u0 x2 x3)).(let H12 \def (f_equal C C (\lambda (e0: 
44007 C).(match e0 return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead 
44008 c _ _) \Rightarrow c])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H9) 
44009 in ((let H13 \def (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: 
44010 C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k 
44011 return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
44012 Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H9) in ((let H14 
44013 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
44014 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
44015 Abbr) u) (CHead x1 (Bind x0) x2) H9) in (\lambda (H15: (eq B Abbr 
44016 x0)).(\lambda (H16: (eq C d x1)).(let H17 \def (eq_ind_r T x2 (\lambda (t: 
44017 T).(subst0 (minus i0 (S i)) u0 t x3)) H11 u H14) in (let H18 \def (eq_ind_r C 
44018 x1 (\lambda (c: C).(getl i c0 (CHead c (Bind x0) x3))) H10 d H16) in (let H19 
44019 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 (CHead d (Bind b) x3))) H18 
44020 Abbr H15) in (ex2_ind T (\lambda (t5: T).(subst0 i x3 t3 t5)) (\lambda (t5: 
44021 T).(subst0 (S (plus (minus i0 (S i)) i)) u0 t0 t5)) (pc3 c0 t2 t0) (\lambda 
44022 (x: T).(\lambda (H20: (subst0 i x3 t3 x)).(\lambda (H21: (subst0 (S (plus 
44023 (minus i0 (S i)) i)) u0 t0 x)).(let H22 \def (eq_ind_r nat (S (plus (minus i0 
44024 (S i)) i)) (\lambda (n: nat).(subst0 n u0 t0 x)) H21 i0 (lt_plus_minus_r i i0 
44025 H6)) in (pc3_pr2_u c0 x t2 (pr2_delta c0 d x3 i H19 t2 t3 H1 x H20) t0 
44026 (pc3_pr2_x c0 x t0 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c 
44027 c0 u0 H4 (CHead e (Bind Abbr) u0) H5) t0 t0 (pr0_refl t0) x H22))))))) 
44028 (subst0_subst0_back t3 t0 u i H2 x3 u0 (minus i0 (S i)) H17)))))))) H13)) 
44029 H12))))))))) H8)) (\lambda (H8: (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
44030 C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 
44031 (Bind b) u0)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
44032 (u: T).(getl i c0 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
44033 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 
44034 e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
44035 C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) 
44036 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 
44037 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
44038 C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))) (pc3 c0 t2 t0) 
44039 (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda 
44040 (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3))).(\lambda (H10: 
44041 (getl i c0 (CHead x2 (Bind x0) x3))).(\lambda (H11: (csubst0 (minus i0 (S i)) 
44042 u0 x1 x2)).(let H12 \def (f_equal C C (\lambda (e0: C).(match e0 return 
44043 (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow 
44044 c])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H13 \def 
44045 (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: C).B) with 
44046 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return 
44047 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
44048 Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H14 
44049 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
44050 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
44051 Abbr) u) (CHead x1 (Bind x0) x3) H9) in (\lambda (H15: (eq B Abbr 
44052 x0)).(\lambda (H16: (eq C d x1)).(let H17 \def (eq_ind_r T x3 (\lambda (t: 
44053 T).(getl i c0 (CHead x2 (Bind x0) t))) H10 u H14) in (let H18 \def (eq_ind_r 
44054 C x1 (\lambda (c: C).(csubst0 (minus i0 (S i)) u0 c x2)) H11 d H16) in (let 
44055 H19 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 (CHead x2 (Bind b) u))) 
44056 H17 Abbr H15) in (pc3_pr2_r c0 t2 t0 (pr2_delta c0 x2 u i H19 t2 t3 H1 t0 
44057 H2)))))))) H13)) H12))))))))) H8)) (\lambda (H8: (ex4_5 B C C T T (\lambda 
44058 (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
44059 C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u0))))))) (\lambda (b: 
44060 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl i 
44061 c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
44062 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u w)))))) 
44063 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
44064 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))))).(ex4_5_ind B C C T T 
44065 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
44066 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda 
44067 (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl 
44068 i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
44069 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) 
44070 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
44071 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) (pc3 c0 t2 t0) (\lambda (x0: 
44072 B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: 
44073 T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
44074 x3))).(\lambda (H10: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda (H11: 
44075 (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H12: (csubst0 (minus i0 (S i)) 
44076 u0 x1 x2)).(let H13 \def (f_equal C C (\lambda (e0: C).(match e0 return 
44077 (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow 
44078 c])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H14 \def 
44079 (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: C).B) with 
44080 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return 
44081 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
44082 Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H15 
44083 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
44084 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
44085 Abbr) u) (CHead x1 (Bind x0) x3) H9) in (\lambda (H16: (eq B Abbr 
44086 x0)).(\lambda (H17: (eq C d x1)).(let H18 \def (eq_ind_r T x3 (\lambda (t: 
44087 T).(subst0 (minus i0 (S i)) u0 t x4)) H11 u H15) in (let H19 \def (eq_ind_r C 
44088 x1 (\lambda (c: C).(csubst0 (minus i0 (S i)) u0 c x2)) H12 d H17) in (let H20 
44089 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 (CHead x2 (Bind b) x4))) H10 
44090 Abbr H16) in (ex2_ind T (\lambda (t5: T).(subst0 i x4 t3 t5)) (\lambda (t5: 
44091 T).(subst0 (S (plus (minus i0 (S i)) i)) u0 t0 t5)) (pc3 c0 t2 t0) (\lambda 
44092 (x: T).(\lambda (H21: (subst0 i x4 t3 x)).(\lambda (H22: (subst0 (S (plus 
44093 (minus i0 (S i)) i)) u0 t0 x)).(let H23 \def (eq_ind_r nat (S (plus (minus i0 
44094 (S i)) i)) (\lambda (n: nat).(subst0 n u0 t0 x)) H22 i0 (lt_plus_minus_r i i0 
44095 H6)) in (pc3_pr2_u c0 x t2 (pr2_delta c0 x2 x4 i H20 t2 t3 H1 x H21) t0 
44096 (pc3_pr2_x c0 x t0 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c 
44097 c0 u0 H4 (CHead e (Bind Abbr) u0) H5) t0 t0 (pr0_refl t0) x H23))))))) 
44098 (subst0_subst0_back t3 t0 u i H2 x4 u0 (minus i0 (S i)) H18)))))))) H14)) 
44099 H13))))))))))) H8)) H7))) (\lambda (H6: (le i0 i)).(pc3_pr2_r c0 t2 t0 
44100 (pr2_delta c0 d u i (csubst0_getl_ge i0 i H6 c c0 u0 H4 (CHead d (Bind Abbr) 
44101 u) H0) t2 t3 H1 t0 H2)))))))) (\lambda (t5: T).(\lambda (H4: (subst0 i0 u0 t2 
44102 t5)).(\lambda (c0: C).(\lambda (H5: (csubst0 i0 u0 c c0)).(\lambda (e: 
44103 C).(\lambda (H6: (getl i0 c (CHead e (Bind Abbr) u0))).(lt_le_e i i0 (pc3 c0 
44104 t5 t0) (\lambda (H7: (lt i i0)).(let H8 \def (csubst0_getl_lt i0 i H7 c c0 u0 
44105 H5 (CHead d (Bind Abbr) u) H0) in (or4_ind (getl i c0 (CHead d (Bind Abbr) 
44106 u)) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda 
44107 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: 
44108 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 
44109 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda 
44110 (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: 
44111 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind 
44112 Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda 
44113 (e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) u1)))))) (\lambda (_: 
44114 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S 
44115 i)) u0 e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda 
44116 (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead 
44117 e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
44118 C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) 
44119 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: 
44120 T).(subst0 (minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: 
44121 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) 
44122 u0 e1 e2))))))) (pc3 c0 t5 t0) (\lambda (H9: (getl i c0 (CHead d (Bind Abbr) 
44123 u))).(pc3_pr2_u2 c0 t2 t5 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n 
44124 i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) H6) t2 t2 (pr0_refl t2) t5 H4) t0 
44125 (pc3_pr2_r c0 t2 t0 (pr2_delta c0 d u i H9 t2 t3 H1 t0 H2)))) (\lambda (H9: 
44126 (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: 
44127 T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u0)))))) (\lambda (b: 
44128 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 
44129 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: 
44130 T).(subst0 (minus i0 (S i)) u0 u w))))))).(ex3_4_ind B C T T (\lambda (b: 
44131 B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind 
44132 Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: 
44133 C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) 
44134 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 
44135 (minus i0 (S i)) u0 u1 w))))) (pc3 c0 t5 t0) (\lambda (x0: B).(\lambda (x1: 
44136 C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind 
44137 Abbr) u) (CHead x1 (Bind x0) x2))).(\lambda (H11: (getl i c0 (CHead x1 (Bind 
44138 x0) x3))).(\lambda (H12: (subst0 (minus i0 (S i)) u0 x2 x3)).(let H13 \def 
44139 (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
44140 [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind 
44141 Abbr) u) (CHead x1 (Bind x0) x2) H10) in ((let H14 \def (f_equal C B (\lambda 
44142 (e0: C).(match e0 return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr 
44143 | (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
44144 \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead 
44145 x1 (Bind x0) x2) H10) in ((let H15 \def (f_equal C T (\lambda (e0: C).(match 
44146 e0 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) 
44147 \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H10) in 
44148 (\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let H18 \def 
44149 (eq_ind_r T x2 (\lambda (t: T).(subst0 (minus i0 (S i)) u0 t x3)) H12 u H15) 
44150 in (let H19 \def (eq_ind_r C x1 (\lambda (c: C).(getl i c0 (CHead c (Bind x0) 
44151 x3))) H11 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 
44152 (CHead d (Bind b) x3))) H19 Abbr H16) in (ex2_ind T (\lambda (t6: T).(subst0 
44153 i x3 t3 t6)) (\lambda (t6: T).(subst0 (S (plus (minus i0 (S i)) i)) u0 t0 
44154 t6)) (pc3 c0 t5 t0) (\lambda (x: T).(\lambda (H21: (subst0 i x3 t3 
44155 x)).(\lambda (H22: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let H23 
44156 \def (eq_ind_r nat (S (plus (minus i0 (S i)) i)) (\lambda (n: nat).(subst0 n 
44157 u0 t0 x)) H22 i0 (lt_plus_minus_r i i0 H7)) in (pc3_pr2_u2 c0 t2 t5 
44158 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e 
44159 (Bind Abbr) u0) H6) t2 t2 (pr0_refl t2) t5 H4) t0 (pc3_pr2_u c0 x t2 
44160 (pr2_delta c0 d x3 i H20 t2 t3 H1 x H21) t0 (pc3_pr2_x c0 x t0 (pr2_delta c0 
44161 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) 
44162 H6) t0 t0 (pr0_refl t0) x H23)))))))) (subst0_subst0_back t3 t0 u i H2 x3 u0 
44163 (minus i0 (S i)) H18)))))))) H14)) H13))))))))) H9)) (\lambda (H9: (ex3_4 B C 
44164 C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C 
44165 (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u0)))))) (\lambda (b: B).(\lambda 
44166 (_: C).(\lambda (e2: C).(\lambda (u: T).(getl i c0 (CHead e2 (Bind b) u)))))) 
44167 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
44168 (minus i0 (S i)) u0 e1 e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda 
44169 (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead 
44170 e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
44171 C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) u1)))))) (\lambda (_: 
44172 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S 
44173 i)) u0 e1 e2))))) (pc3 c0 t5 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda 
44174 (x2: C).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead 
44175 x1 (Bind x0) x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) 
44176 x3))).(\lambda (H12: (csubst0 (minus i0 (S i)) u0 x1 x2)).(let H13 \def 
44177 (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
44178 [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind 
44179 Abbr) u) (CHead x1 (Bind x0) x3) H10) in ((let H14 \def (f_equal C B (\lambda 
44180 (e0: C).(match e0 return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr 
44181 | (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
44182 \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead 
44183 x1 (Bind x0) x3) H10) in ((let H15 \def (f_equal C T (\lambda (e0: C).(match 
44184 e0 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) 
44185 \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H10) in 
44186 (\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let H18 \def 
44187 (eq_ind_r T x3 (\lambda (t: T).(getl i c0 (CHead x2 (Bind x0) t))) H11 u H15) 
44188 in (let H19 \def (eq_ind_r C x1 (\lambda (c: C).(csubst0 (minus i0 (S i)) u0 
44189 c x2)) H12 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 
44190 (CHead x2 (Bind b) u))) H18 Abbr H16) in (pc3_pr2_u2 c0 t2 t5 (pr2_delta c0 e 
44191 u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) 
44192 H6) t2 t2 (pr0_refl t2) t5 H4) t0 (pc3_pr2_r c0 t2 t0 (pr2_delta c0 x2 u i 
44193 H20 t2 t3 H1 t0 H2))))))))) H14)) H13))))))))) H9)) (\lambda (H9: (ex4_5 B C 
44194 C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: 
44195 T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u0))))))) 
44196 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
44197 T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
44198 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (S i)) 
44199 u0 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
44200 T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))))).(ex4_5_ind B C 
44201 C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
44202 T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) 
44203 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
44204 T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
44205 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) 
44206 u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
44207 T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) (pc3 c0 t5 t0) 
44208 (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda 
44209 (x4: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
44210 x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda (H12: 
44211 (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H13: (csubst0 (minus i0 (S i)) 
44212 u0 x1 x2)).(let H14 \def (f_equal C C (\lambda (e0: C).(match e0 return 
44213 (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow 
44214 c])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H10) in ((let H15 \def 
44215 (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: C).B) with 
44216 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return 
44217 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
44218 Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H10) in ((let H16 
44219 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
44220 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
44221 Abbr) u) (CHead x1 (Bind x0) x3) H10) in (\lambda (H17: (eq B Abbr 
44222 x0)).(\lambda (H18: (eq C d x1)).(let H19 \def (eq_ind_r T x3 (\lambda (t: 
44223 T).(subst0 (minus i0 (S i)) u0 t x4)) H12 u H16) in (let H20 \def (eq_ind_r C 
44224 x1 (\lambda (c: C).(csubst0 (minus i0 (S i)) u0 c x2)) H13 d H18) in (let H21 
44225 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 (CHead x2 (Bind b) x4))) H11 
44226 Abbr H17) in (ex2_ind T (\lambda (t6: T).(subst0 i x4 t3 t6)) (\lambda (t6: 
44227 T).(subst0 (S (plus (minus i0 (S i)) i)) u0 t0 t6)) (pc3 c0 t5 t0) (\lambda 
44228 (x: T).(\lambda (H22: (subst0 i x4 t3 x)).(\lambda (H23: (subst0 (S (plus 
44229 (minus i0 (S i)) i)) u0 t0 x)).(let H24 \def (eq_ind_r nat (S (plus (minus i0 
44230 (S i)) i)) (\lambda (n: nat).(subst0 n u0 t0 x)) H23 i0 (lt_plus_minus_r i i0 
44231 H7)) in (pc3_pr2_u2 c0 t2 t5 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 
44232 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) H6) t2 t2 (pr0_refl t2) t5 H4) 
44233 t0 (pc3_pr2_u c0 x t2 (pr2_delta c0 x2 x4 i H21 t2 t3 H1 x H22) t0 (pc3_pr2_x 
44234 c0 x t0 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 
44235 (CHead e (Bind Abbr) u0) H6) t0 t0 (pr0_refl t0) x H24)))))))) 
44236 (subst0_subst0_back t3 t0 u i H2 x4 u0 (minus i0 (S i)) H19)))))))) H15)) 
44237 H14))))))))))) H9)) H8))) (\lambda (H7: (le i0 i)).(pc3_pr2_u2 c0 t2 t5 
44238 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e 
44239 (Bind Abbr) u0) H6) t2 t2 (pr0_refl t2) t5 H4) t0 (pc3_pr2_r c0 t2 t0 
44240 (pr2_delta c0 d u i (csubst0_getl_ge i0 i H7 c c0 u0 H5 (CHead d (Bind Abbr) 
44241 u) H0) t2 t3 H1 t0 H2))))))))))) c2 t4 H3)))))))))))))))) c1 t1 t H)))).
44242
44243 theorem pc3_pr2_fsubst0_back:
44244  \forall (c1: C).(\forall (t: T).(\forall (t1: T).((pr2 c1 t t1) \to (\forall 
44245 (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t2: T).((fsubst0 i u c1 
44246 t1 c2 t2) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 
44247 c2 t t2)))))))))))
44248 \def
44249  \lambda (c1: C).(\lambda (t: T).(\lambda (t1: T).(\lambda (H: (pr2 c1 t 
44250 t1)).(pr2_ind (\lambda (c: C).(\lambda (t0: T).(\lambda (t2: T).(\forall (i: 
44251 nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: T).((fsubst0 i u c t2 c2 
44252 t3) \to (\forall (e: C).((getl i c (CHead e (Bind Abbr) u)) \to (pc3 c2 t0 
44253 t3))))))))))) (\lambda (c: C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: 
44254 (pr0 t2 t3)).(\lambda (i: nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t0: 
44255 T).(\lambda (H1: (fsubst0 i u c t3 c2 t0)).(fsubst0_ind i u c t3 (\lambda 
44256 (c0: C).(\lambda (t4: T).(\forall (e: C).((getl i c (CHead e (Bind Abbr) u)) 
44257 \to (pc3 c0 t2 t4))))) (\lambda (t4: T).(\lambda (H2: (subst0 i u t3 
44258 t4)).(\lambda (e: C).(\lambda (H3: (getl i c (CHead e (Bind Abbr) 
44259 u))).(pc3_pr2_u c t3 t2 (pr2_free c t2 t3 H0) t4 (pc3_pr2_r c t3 t4 
44260 (pr2_delta c e u i H3 t3 t3 (pr0_refl t3) t4 H2))))))) (\lambda (c0: 
44261 C).(\lambda (_: (csubst0 i u c c0)).(\lambda (e: C).(\lambda (_: (getl i c 
44262 (CHead e (Bind Abbr) u))).(pc3_pr2_r c0 t2 t3 (pr2_free c0 t2 t3 H0)))))) 
44263 (\lambda (t4: T).(\lambda (H2: (subst0 i u t3 t4)).(\lambda (c0: C).(\lambda 
44264 (H3: (csubst0 i u c c0)).(\lambda (e: C).(\lambda (H4: (getl i c (CHead e 
44265 (Bind Abbr) u))).(pc3_pr2_u c0 t3 t2 (pr2_free c0 t2 t3 H0) t4 (pc3_pr2_r c0 
44266 t3 t4 (pr2_delta c0 e u i (csubst0_getl_ge i i (le_n i) c c0 u H3 (CHead e 
44267 (Bind Abbr) u) H4) t3 t3 (pr0_refl t3) t4 H2))))))))) c2 t0 H1)))))))))) 
44268 (\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
44269 (H0: (getl i c (CHead d (Bind Abbr) u))).(\lambda (t2: T).(\lambda (t3: 
44270 T).(\lambda (H1: (pr0 t2 t3)).(\lambda (t0: T).(\lambda (H2: (subst0 i u t3 
44271 t0)).(\lambda (i0: nat).(\lambda (u0: T).(\lambda (c2: C).(\lambda (t4: 
44272 T).(\lambda (H3: (fsubst0 i0 u0 c t0 c2 t4)).(fsubst0_ind i0 u0 c t0 (\lambda 
44273 (c0: C).(\lambda (t5: T).(\forall (e: C).((getl i0 c (CHead e (Bind Abbr) 
44274 u0)) \to (pc3 c0 t2 t5))))) (\lambda (t5: T).(\lambda (H4: (subst0 i0 u0 t0 
44275 t5)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) 
44276 u0))).(pc3_t t3 c t2 (pc3_pr3_r c t2 t3 (pr3_pr2 c t2 t3 (pr2_free c t2 t3 
44277 H1))) t5 (pc3_pr3_r c t3 t5 (pr3_sing c t0 t3 (pr2_delta c d u i H0 t3 t3 
44278 (pr0_refl t3) t0 H2) t5 (pr3_pr2 c t0 t5 (pr2_delta c e u0 i0 H5 t0 t0 
44279 (pr0_refl t0) t5 H4))))))))) (\lambda (c0: C).(\lambda (H4: (csubst0 i0 u0 c 
44280 c0)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) 
44281 u0))).(lt_le_e i i0 (pc3 c0 t2 t0) (\lambda (H6: (lt i i0)).(let H7 \def 
44282 (csubst0_getl_lt i0 i H6 c c0 u0 H4 (CHead d (Bind Abbr) u) H0) in (or4_ind 
44283 (getl i c0 (CHead d (Bind Abbr) u)) (ex3_4 B C T T (\lambda (b: B).(\lambda 
44284 (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead 
44285 e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
44286 T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: 
44287 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) 
44288 u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
44289 C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) 
44290 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 
44291 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
44292 C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) (ex4_5 B C C T T 
44293 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
44294 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda 
44295 (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl 
44296 i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
44297 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) 
44298 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
44299 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))) (pc3 c0 t2 t0) (\lambda (H8: 
44300 (getl i c0 (CHead d (Bind Abbr) u))).(pc3_pr2_r c0 t2 t0 (pr2_delta c0 d u i 
44301 H8 t2 t3 H1 t0 H2))) (\lambda (H8: (ex3_4 B C T T (\lambda (b: B).(\lambda 
44302 (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead 
44303 e0 (Bind b) u0)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
44304 T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: 
44305 B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (S i)) 
44306 u0 u w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda 
44307 (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) 
44308 u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: 
44309 T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
44310 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w))))) 
44311 (pc3 c0 t2 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: T).(\lambda 
44312 (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
44313 x2))).(\lambda (H10: (getl i c0 (CHead x1 (Bind x0) x3))).(\lambda (H11: 
44314 (subst0 (minus i0 (S i)) u0 x2 x3)).(let H12 \def (f_equal C C (\lambda (e0: 
44315 C).(match e0 return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead 
44316 c _ _) \Rightarrow c])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H9) 
44317 in ((let H13 \def (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: 
44318 C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k 
44319 return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
44320 Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H9) in ((let H14 
44321 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
44322 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
44323 Abbr) u) (CHead x1 (Bind x0) x2) H9) in (\lambda (H15: (eq B Abbr 
44324 x0)).(\lambda (H16: (eq C d x1)).(let H17 \def (eq_ind_r T x2 (\lambda (t: 
44325 T).(subst0 (minus i0 (S i)) u0 t x3)) H11 u H14) in (let H18 \def (eq_ind_r C 
44326 x1 (\lambda (c: C).(getl i c0 (CHead c (Bind x0) x3))) H10 d H16) in (let H19 
44327 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 (CHead d (Bind b) x3))) H18 
44328 Abbr H15) in (ex2_ind T (\lambda (t5: T).(subst0 i x3 t3 t5)) (\lambda (t5: 
44329 T).(subst0 (S (plus (minus i0 (S i)) i)) u0 t0 t5)) (pc3 c0 t2 t0) (\lambda 
44330 (x: T).(\lambda (H20: (subst0 i x3 t3 x)).(\lambda (H21: (subst0 (S (plus 
44331 (minus i0 (S i)) i)) u0 t0 x)).(let H22 \def (eq_ind_r nat (S (plus (minus i0 
44332 (S i)) i)) (\lambda (n: nat).(subst0 n u0 t0 x)) H21 i0 (lt_plus_minus_r i i0 
44333 H6)) in (pc3_pr2_u c0 x t2 (pr2_delta c0 d x3 i H19 t2 t3 H1 x H20) t0 
44334 (pc3_pr2_x c0 x t0 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c 
44335 c0 u0 H4 (CHead e (Bind Abbr) u0) H5) t0 t0 (pr0_refl t0) x H22))))))) 
44336 (subst0_subst0_back t3 t0 u i H2 x3 u0 (minus i0 (S i)) H17)))))))) H13)) 
44337 H12))))))))) H8)) (\lambda (H8: (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
44338 C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 
44339 (Bind b) u0)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
44340 (u: T).(getl i c0 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
44341 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 
44342 e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
44343 C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) 
44344 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 
44345 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
44346 C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))) (pc3 c0 t2 t0) 
44347 (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda 
44348 (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3))).(\lambda (H10: 
44349 (getl i c0 (CHead x2 (Bind x0) x3))).(\lambda (H11: (csubst0 (minus i0 (S i)) 
44350 u0 x1 x2)).(let H12 \def (f_equal C C (\lambda (e0: C).(match e0 return 
44351 (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow 
44352 c])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H13 \def 
44353 (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: C).B) with 
44354 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return 
44355 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
44356 Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H14 
44357 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
44358 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
44359 Abbr) u) (CHead x1 (Bind x0) x3) H9) in (\lambda (H15: (eq B Abbr 
44360 x0)).(\lambda (H16: (eq C d x1)).(let H17 \def (eq_ind_r T x3 (\lambda (t: 
44361 T).(getl i c0 (CHead x2 (Bind x0) t))) H10 u H14) in (let H18 \def (eq_ind_r 
44362 C x1 (\lambda (c: C).(csubst0 (minus i0 (S i)) u0 c x2)) H11 d H16) in (let 
44363 H19 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 (CHead x2 (Bind b) u))) 
44364 H17 Abbr H15) in (pc3_pr2_r c0 t2 t0 (pr2_delta c0 x2 u i H19 t2 t3 H1 t0 
44365 H2)))))))) H13)) H12))))))))) H8)) (\lambda (H8: (ex4_5 B C C T T (\lambda 
44366 (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq 
44367 C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u0))))))) (\lambda (b: 
44368 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl i 
44369 c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
44370 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u w)))))) 
44371 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
44372 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))))).(ex4_5_ind B C C T T 
44373 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
44374 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda 
44375 (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl 
44376 i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
44377 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) 
44378 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
44379 (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) (pc3 c0 t2 t0) (\lambda (x0: 
44380 B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: 
44381 T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
44382 x3))).(\lambda (H10: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda (H11: 
44383 (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H12: (csubst0 (minus i0 (S i)) 
44384 u0 x1 x2)).(let H13 \def (f_equal C C (\lambda (e0: C).(match e0 return 
44385 (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow 
44386 c])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H14 \def 
44387 (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: C).B) with 
44388 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return 
44389 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
44390 Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H15 
44391 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
44392 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
44393 Abbr) u) (CHead x1 (Bind x0) x3) H9) in (\lambda (H16: (eq B Abbr 
44394 x0)).(\lambda (H17: (eq C d x1)).(let H18 \def (eq_ind_r T x3 (\lambda (t: 
44395 T).(subst0 (minus i0 (S i)) u0 t x4)) H11 u H15) in (let H19 \def (eq_ind_r C 
44396 x1 (\lambda (c: C).(csubst0 (minus i0 (S i)) u0 c x2)) H12 d H17) in (let H20 
44397 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 (CHead x2 (Bind b) x4))) H10 
44398 Abbr H16) in (ex2_ind T (\lambda (t5: T).(subst0 i x4 t3 t5)) (\lambda (t5: 
44399 T).(subst0 (S (plus (minus i0 (S i)) i)) u0 t0 t5)) (pc3 c0 t2 t0) (\lambda 
44400 (x: T).(\lambda (H21: (subst0 i x4 t3 x)).(\lambda (H22: (subst0 (S (plus 
44401 (minus i0 (S i)) i)) u0 t0 x)).(let H23 \def (eq_ind_r nat (S (plus (minus i0 
44402 (S i)) i)) (\lambda (n: nat).(subst0 n u0 t0 x)) H22 i0 (lt_plus_minus_r i i0 
44403 H6)) in (pc3_pr2_u c0 x t2 (pr2_delta c0 x2 x4 i H20 t2 t3 H1 x H21) t0 
44404 (pc3_pr2_x c0 x t0 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c 
44405 c0 u0 H4 (CHead e (Bind Abbr) u0) H5) t0 t0 (pr0_refl t0) x H23))))))) 
44406 (subst0_subst0_back t3 t0 u i H2 x4 u0 (minus i0 (S i)) H18)))))))) H14)) 
44407 H13))))))))))) H8)) H7))) (\lambda (H6: (le i0 i)).(pc3_pr2_r c0 t2 t0 
44408 (pr2_delta c0 d u i (csubst0_getl_ge i0 i H6 c c0 u0 H4 (CHead d (Bind Abbr) 
44409 u) H0) t2 t3 H1 t0 H2)))))))) (\lambda (t5: T).(\lambda (H4: (subst0 i0 u0 t0 
44410 t5)).(\lambda (c0: C).(\lambda (H5: (csubst0 i0 u0 c c0)).(\lambda (e: 
44411 C).(\lambda (H6: (getl i0 c (CHead e (Bind Abbr) u0))).(lt_le_e i i0 (pc3 c0 
44412 t2 t5) (\lambda (H7: (lt i i0)).(let H8 \def (csubst0_getl_lt i0 i H7 c c0 u0 
44413 H5 (CHead d (Bind Abbr) u) H0) in (or4_ind (getl i c0 (CHead d (Bind Abbr) 
44414 u)) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda 
44415 (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: 
44416 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 
44417 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda 
44418 (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: 
44419 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind 
44420 Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda 
44421 (e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) u1)))))) (\lambda (_: 
44422 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S 
44423 i)) u0 e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda 
44424 (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead 
44425 e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
44426 C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) 
44427 (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: 
44428 T).(subst0 (minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: 
44429 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) 
44430 u0 e1 e2))))))) (pc3 c0 t2 t5) (\lambda (H9: (getl i c0 (CHead d (Bind Abbr) 
44431 u))).(pc3_pr2_u c0 t3 t2 (pr2_free c0 t2 t3 H1) t5 (pc3_pr3_r c0 t3 t5 
44432 (pr3_sing c0 t0 t3 (pr2_delta c0 d u i H9 t3 t3 (pr0_refl t3) t0 H2) t5 
44433 (pr3_pr2 c0 t0 t5 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 
44434 u0 H5 (CHead e (Bind Abbr) u0) H6) t0 t0 (pr0_refl t0) t5 H4)))))) (\lambda 
44435 (H9: (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u0: 
44436 T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u0)))))) 
44437 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 
44438 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u: 
44439 T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u w))))))).(ex3_4_ind B C T T 
44440 (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C 
44441 (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda 
44442 (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) 
44443 (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 
44444 (minus i0 (S i)) u0 u1 w))))) (pc3 c0 t2 t5) (\lambda (x0: B).(\lambda (x1: 
44445 C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind 
44446 Abbr) u) (CHead x1 (Bind x0) x2))).(\lambda (H11: (getl i c0 (CHead x1 (Bind 
44447 x0) x3))).(\lambda (H12: (subst0 (minus i0 (S i)) u0 x2 x3)).(let H13 \def 
44448 (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
44449 [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind 
44450 Abbr) u) (CHead x1 (Bind x0) x2) H10) in ((let H14 \def (f_equal C B (\lambda 
44451 (e0: C).(match e0 return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr 
44452 | (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
44453 \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead 
44454 x1 (Bind x0) x2) H10) in ((let H15 \def (f_equal C T (\lambda (e0: C).(match 
44455 e0 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) 
44456 \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H10) in 
44457 (\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let H18 \def 
44458 (eq_ind_r T x2 (\lambda (t: T).(subst0 (minus i0 (S i)) u0 t x3)) H12 u H15) 
44459 in (let H19 \def (eq_ind_r C x1 (\lambda (c: C).(getl i c0 (CHead c (Bind x0) 
44460 x3))) H11 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 
44461 (CHead d (Bind b) x3))) H19 Abbr H16) in (ex2_ind T (\lambda (t6: T).(subst0 
44462 i x3 t3 t6)) (\lambda (t6: T).(subst0 (S (plus (minus i0 (S i)) i)) u0 t0 
44463 t6)) (pc3 c0 t2 t5) (\lambda (x: T).(\lambda (H21: (subst0 i x3 t3 
44464 x)).(\lambda (H22: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let H23 
44465 \def (eq_ind_r nat (S (plus (minus i0 (S i)) i)) (\lambda (n: nat).(subst0 n 
44466 u0 t0 x)) H22 i0 (lt_plus_minus_r i i0 H7)) in (pc3_pr2_u c0 x t2 (pr2_delta 
44467 c0 d x3 i H20 t2 t3 H1 x H21) t5 (pc3_pr2_u2 c0 t0 x (pr2_delta c0 e u0 i0 
44468 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) H6) t0 
44469 t0 (pr0_refl t0) x H23) t5 (pc3_pr2_r c0 t0 t5 (pr2_delta c0 e u0 i0 
44470 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) H6) t0 
44471 t0 (pr0_refl t0) t5 H4)))))))) (subst0_subst0_back t3 t0 u i H2 x3 u0 (minus 
44472 i0 (S i)) H18)))))))) H14)) H13))))))))) H9)) (\lambda (H9: (ex3_4 B C C T 
44473 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq C 
44474 (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u0)))))) (\lambda (b: B).(\lambda 
44475 (_: C).(\lambda (e2: C).(\lambda (u: T).(getl i c0 (CHead e2 (Bind b) u)))))) 
44476 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 
44477 (minus i0 (S i)) u0 e1 e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda 
44478 (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead 
44479 e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: 
44480 C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) u1)))))) (\lambda (_: 
44481 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S 
44482 i)) u0 e1 e2))))) (pc3 c0 t2 t5) (\lambda (x0: B).(\lambda (x1: C).(\lambda 
44483 (x2: C).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead 
44484 x1 (Bind x0) x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) 
44485 x3))).(\lambda (H12: (csubst0 (minus i0 (S i)) u0 x1 x2)).(let H13 \def 
44486 (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
44487 [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind 
44488 Abbr) u) (CHead x1 (Bind x0) x3) H10) in ((let H14 \def (f_equal C B (\lambda 
44489 (e0: C).(match e0 return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr 
44490 | (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
44491 \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead 
44492 x1 (Bind x0) x3) H10) in ((let H15 \def (f_equal C T (\lambda (e0: C).(match 
44493 e0 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) 
44494 \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H10) in 
44495 (\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let H18 \def 
44496 (eq_ind_r T x3 (\lambda (t: T).(getl i c0 (CHead x2 (Bind x0) t))) H11 u H15) 
44497 in (let H19 \def (eq_ind_r C x1 (\lambda (c: C).(csubst0 (minus i0 (S i)) u0 
44498 c x2)) H12 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 
44499 (CHead x2 (Bind b) u))) H18 Abbr H16) in (pc3_pr2_u c0 t0 t2 (pr2_delta c0 x2 
44500 u i H20 t2 t3 H1 t0 H2) t5 (pc3_pr2_r c0 t0 t5 (pr2_delta c0 e u0 i0 
44501 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) H6) t0 
44502 t0 (pr0_refl t0) t5 H4))))))))) H14)) H13))))))))) H9)) (\lambda (H9: (ex4_5 
44503 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: 
44504 T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u0))))))) 
44505 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
44506 T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
44507 C).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i0 (S i)) 
44508 u0 u w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
44509 T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))))).(ex4_5_ind B C 
44510 C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: 
44511 T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) 
44512 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: 
44513 T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: 
44514 C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) 
44515 u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: 
44516 T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) (pc3 c0 t2 t5) 
44517 (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda 
44518 (x4: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
44519 x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda (H12: 
44520 (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H13: (csubst0 (minus i0 (S i)) 
44521 u0 x1 x2)).(let H14 \def (f_equal C C (\lambda (e0: C).(match e0 return 
44522 (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow 
44523 c])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H10) in ((let H15 \def 
44524 (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: C).B) with 
44525 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return 
44526 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
44527 Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H10) in ((let H16 
44528 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
44529 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
44530 Abbr) u) (CHead x1 (Bind x0) x3) H10) in (\lambda (H17: (eq B Abbr 
44531 x0)).(\lambda (H18: (eq C d x1)).(let H19 \def (eq_ind_r T x3 (\lambda (t: 
44532 T).(subst0 (minus i0 (S i)) u0 t x4)) H12 u H16) in (let H20 \def (eq_ind_r C 
44533 x1 (\lambda (c: C).(csubst0 (minus i0 (S i)) u0 c x2)) H13 d H18) in (let H21 
44534 \def (eq_ind_r B x0 (\lambda (b: B).(getl i c0 (CHead x2 (Bind b) x4))) H11 
44535 Abbr H17) in (ex2_ind T (\lambda (t6: T).(subst0 i x4 t3 t6)) (\lambda (t6: 
44536 T).(subst0 (S (plus (minus i0 (S i)) i)) u0 t0 t6)) (pc3 c0 t2 t5) (\lambda 
44537 (x: T).(\lambda (H22: (subst0 i x4 t3 x)).(\lambda (H23: (subst0 (S (plus 
44538 (minus i0 (S i)) i)) u0 t0 x)).(let H24 \def (eq_ind_r nat (S (plus (minus i0 
44539 (S i)) i)) (\lambda (n: nat).(subst0 n u0 t0 x)) H23 i0 (lt_plus_minus_r i i0 
44540 H7)) in (pc3_pr2_u c0 x t2 (pr2_delta c0 x2 x4 i H21 t2 t3 H1 x H22) t5 
44541 (pc3_pr2_u2 c0 t0 x (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c 
44542 c0 u0 H5 (CHead e (Bind Abbr) u0) H6) t0 t0 (pr0_refl t0) x H24) t5 
44543 (pc3_pr2_r c0 t0 t5 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c 
44544 c0 u0 H5 (CHead e (Bind Abbr) u0) H6) t0 t0 (pr0_refl t0) t5 H4)))))))) 
44545 (subst0_subst0_back t3 t0 u i H2 x4 u0 (minus i0 (S i)) H19)))))))) H15)) 
44546 H14))))))))))) H9)) H8))) (\lambda (H7: (le i0 i)).(pc3_pr2_u c0 t0 t2 
44547 (pr2_delta c0 d u i (csubst0_getl_ge i0 i H7 c c0 u0 H5 (CHead d (Bind Abbr) 
44548 u) H0) t2 t3 H1 t0 H2) t5 (pc3_pr2_r c0 t0 t5 (pr2_delta c0 e u0 i0 
44549 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) H6) t0 
44550 t0 (pr0_refl t0) t5 H4))))))))))) c2 t4 H3)))))))))))))))) c1 t t1 H)))).
44551
44552 theorem pc3_fsubst0:
44553  \forall (c1: C).(\forall (t1: T).(\forall (t: T).((pc3 c1 t1 t) \to (\forall 
44554 (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t2: T).((fsubst0 i u c1 
44555 t1 c2 t2) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 
44556 c2 t2 t)))))))))))
44557 \def
44558  \lambda (c1: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: (pc3 c1 t1 
44559 t)).(pc3_ind_left c1 (\lambda (t0: T).(\lambda (t2: T).(\forall (i: 
44560 nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: T).((fsubst0 i u c1 t0 c2 
44561 t3) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c2 t3 
44562 t2)))))))))) (\lambda (t0: T).(\lambda (i: nat).(\lambda (u: T).(\lambda (c2: 
44563 C).(\lambda (t2: T).(\lambda (H0: (fsubst0 i u c1 t0 c2 t2)).(fsubst0_ind i u 
44564 c1 t0 (\lambda (c: C).(\lambda (t3: T).(\forall (e: C).((getl i c1 (CHead e 
44565 (Bind Abbr) u)) \to (pc3 c t3 t0))))) (\lambda (t3: T).(\lambda (H1: (subst0 
44566 i u t0 t3)).(\lambda (e: C).(\lambda (H2: (getl i c1 (CHead e (Bind Abbr) 
44567 u))).(pc3_pr2_x c1 t3 t0 (pr2_delta c1 e u i H2 t0 t0 (pr0_refl t0) t3 
44568 H1)))))) (\lambda (c0: C).(\lambda (_: (csubst0 i u c1 c0)).(\lambda (e: 
44569 C).(\lambda (_: (getl i c1 (CHead e (Bind Abbr) u))).(pc3_refl c0 t0))))) 
44570 (\lambda (t3: T).(\lambda (H1: (subst0 i u t0 t3)).(\lambda (c0: C).(\lambda 
44571 (H2: (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H3: (getl i c1 (CHead e 
44572 (Bind Abbr) u))).(pc3_pr2_x c0 t3 t0 (pr2_delta c0 e u i (csubst0_getl_ge i i 
44573 (le_n i) c1 c0 u H2 (CHead e (Bind Abbr) u) H3) t0 t0 (pr0_refl t0) t3 
44574 H1)))))))) c2 t2 H0))))))) (\lambda (t0: T).(\lambda (t2: T).(\lambda (H0: 
44575 (pr2 c1 t0 t2)).(\lambda (t3: T).(\lambda (H1: (pc3 c1 t2 t3)).(\lambda (H2: 
44576 ((\forall (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t4: 
44577 T).((fsubst0 i u c1 t2 c2 t4) \to (\forall (e: C).((getl i c1 (CHead e (Bind 
44578 Abbr) u)) \to (pc3 c2 t4 t3)))))))))).(\lambda (i: nat).(\lambda (u: 
44579 T).(\lambda (c2: C).(\lambda (t4: T).(\lambda (H3: (fsubst0 i u c1 t0 c2 
44580 t4)).(fsubst0_ind i u c1 t0 (\lambda (c: C).(\lambda (t5: T).(\forall (e: 
44581 C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c t5 t3))))) (\lambda (t5: 
44582 T).(\lambda (H4: (subst0 i u t0 t5)).(\lambda (e: C).(\lambda (H5: (getl i c1 
44583 (CHead e (Bind Abbr) u))).(pc3_t t2 c1 t5 (pc3_pr2_fsubst0 c1 t0 t2 H0 i u c1 
44584 t5 (fsubst0_snd i u c1 t0 t5 H4) e H5) t3 H1))))) (\lambda (c0: C).(\lambda 
44585 (H4: (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e 
44586 (Bind Abbr) u))).(pc3_t t2 c0 t0 (pc3_pr2_fsubst0 c1 t0 t2 H0 i u c0 t0 
44587 (fsubst0_fst i u c1 t0 c0 H4) e H5) t3 (H2 i u c0 t2 (fsubst0_fst i u c1 t2 
44588 c0 H4) e H5)))))) (\lambda (t5: T).(\lambda (H4: (subst0 i u t0 t5)).(\lambda 
44589 (c0: C).(\lambda (H5: (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H6: 
44590 (getl i c1 (CHead e (Bind Abbr) u))).(pc3_t t2 c0 t5 (pc3_pr2_fsubst0 c1 t0 
44591 t2 H0 i u c0 t5 (fsubst0_both i u c1 t0 t5 H4 c0 H5) e H6) t3 (H2 i u c0 t2 
44592 (fsubst0_fst i u c1 t2 c0 H5) e H6)))))))) c2 t4 H3)))))))))))) (\lambda (t0: 
44593 T).(\lambda (t2: T).(\lambda (H0: (pr2 c1 t0 t2)).(\lambda (t3: T).(\lambda 
44594 (H1: (pc3 c1 t0 t3)).(\lambda (H2: ((\forall (i: nat).(\forall (u: 
44595 T).(\forall (c2: C).(\forall (t2: T).((fsubst0 i u c1 t0 c2 t2) \to (\forall 
44596 (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c2 t2 
44597 t3)))))))))).(\lambda (i: nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t4: 
44598 T).(\lambda (H3: (fsubst0 i u c1 t2 c2 t4)).(fsubst0_ind i u c1 t2 (\lambda 
44599 (c: C).(\lambda (t5: T).(\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) 
44600 \to (pc3 c t5 t3))))) (\lambda (t5: T).(\lambda (H4: (subst0 i u t2 
44601 t5)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e (Bind Abbr) 
44602 u))).(pc3_t t0 c1 t5 (pc3_s c1 t5 t0 (pc3_pr2_fsubst0_back c1 t0 t2 H0 i u c1 
44603 t5 (fsubst0_snd i u c1 t2 t5 H4) e H5)) t3 H1))))) (\lambda (c0: C).(\lambda 
44604 (H4: (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e 
44605 (Bind Abbr) u))).(pc3_t t0 c0 t2 (pc3_s c0 t2 t0 (pc3_pr2_fsubst0_back c1 t0 
44606 t2 H0 i u c0 t2 (fsubst0_fst i u c1 t2 c0 H4) e H5)) t3 (H2 i u c0 t0 
44607 (fsubst0_fst i u c1 t0 c0 H4) e H5)))))) (\lambda (t5: T).(\lambda (H4: 
44608 (subst0 i u t2 t5)).(\lambda (c0: C).(\lambda (H5: (csubst0 i u c1 
44609 c0)).(\lambda (e: C).(\lambda (H6: (getl i c1 (CHead e (Bind Abbr) 
44610 u))).(pc3_t t0 c0 t5 (pc3_s c0 t5 t0 (pc3_pr2_fsubst0_back c1 t0 t2 H0 i u c0 
44611 t5 (fsubst0_both i u c1 t2 t5 H4 c0 H5) e H6)) t3 (H2 i u c0 t0 (fsubst0_fst 
44612 i u c1 t0 c0 H5) e H6)))))))) c2 t4 H3)))))))))))) t1 t H)))).
44613
44614 theorem pc3_gen_cabbr:
44615  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3 c t1 t2) \to (\forall 
44616 (e: C).(\forall (u: T).(\forall (d: nat).((getl d c (CHead e (Bind Abbr) u)) 
44617 \to (\forall (a0: C).((csubst1 d u c a0) \to (\forall (a: C).((drop (S O) d 
44618 a0 a) \to (\forall (x1: T).((subst1 d u t1 (lift (S O) d x1)) \to (\forall 
44619 (x2: T).((subst1 d u t2 (lift (S O) d x2)) \to (pc3 a x1 x2))))))))))))))))
44620 \def
44621  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3 c t1 
44622 t2)).(\lambda (e: C).(\lambda (u: T).(\lambda (d: nat).(\lambda (H0: (getl d 
44623 c (CHead e (Bind Abbr) u))).(\lambda (a0: C).(\lambda (H1: (csubst1 d u c 
44624 a0)).(\lambda (a: C).(\lambda (H2: (drop (S O) d a0 a)).(\lambda (x1: 
44625 T).(\lambda (H3: (subst1 d u t1 (lift (S O) d x1))).(\lambda (x2: T).(\lambda 
44626 (H4: (subst1 d u t2 (lift (S O) d x2))).(let H5 \def H in (ex2_ind T (\lambda 
44627 (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) (pc3 a x1 x2) (\lambda (x: 
44628 T).(\lambda (H6: (pr3 c t1 x)).(\lambda (H7: (pr3 c t2 x)).(ex2_ind T 
44629 (\lambda (x3: T).(subst1 d u x (lift (S O) d x3))) (\lambda (x3: T).(pr3 a x2 
44630 x3)) (pc3 a x1 x2) (\lambda (x0: T).(\lambda (H8: (subst1 d u x (lift (S O) d 
44631 x0))).(\lambda (H9: (pr3 a x2 x0)).(ex2_ind T (\lambda (x3: T).(subst1 d u x 
44632 (lift (S O) d x3))) (\lambda (x3: T).(pr3 a x1 x3)) (pc3 a x1 x2) (\lambda 
44633 (x3: T).(\lambda (H10: (subst1 d u x (lift (S O) d x3))).(\lambda (H11: (pr3 
44634 a x1 x3)).(let H12 \def (eq_ind T x3 (\lambda (t: T).(pr3 a x1 t)) H11 x0 
44635 (subst1_confluence_lift x x3 u d H10 x0 H8)) in (pc3_pr3_t a x1 x0 H12 x2 
44636 H9))))) (pr3_gen_cabbr c t1 x H6 e u d H0 a0 H1 a H2 x1 H3))))) 
44637 (pr3_gen_cabbr c t2 x H7 e u d H0 a0 H1 a H2 x2 H4))))) H5))))))))))))))))).
44638
44639 inductive ty3 (g:G): C \to (T \to (T \to Prop)) \def
44640 | ty3_conv: \forall (c: C).(\forall (t2: T).(\forall (t: T).((ty3 g c t2 t) 
44641 \to (\forall (u: T).(\forall (t1: T).((ty3 g c u t1) \to ((pc3 c t1 t2) \to 
44642 (ty3 g c u t2))))))))
44643 | ty3_sort: \forall (c: C).(\forall (m: nat).(ty3 g c (TSort m) (TSort (next 
44644 g m))))
44645 | ty3_abbr: \forall (n: nat).(\forall (c: C).(\forall (d: C).(\forall (u: 
44646 T).((getl n c (CHead d (Bind Abbr) u)) \to (\forall (t: T).((ty3 g d u t) \to 
44647 (ty3 g c (TLRef n) (lift (S n) O t))))))))
44648 | ty3_abst: \forall (n: nat).(\forall (c: C).(\forall (d: C).(\forall (u: 
44649 T).((getl n c (CHead d (Bind Abst) u)) \to (\forall (t: T).((ty3 g d u t) \to 
44650 (ty3 g c (TLRef n) (lift (S n) O u))))))))
44651 | ty3_bind: \forall (c: C).(\forall (u: T).(\forall (t: T).((ty3 g c u t) \to 
44652 (\forall (b: B).(\forall (t1: T).(\forall (t2: T).((ty3 g (CHead c (Bind b) 
44653 u) t1 t2) \to (\forall (t0: T).((ty3 g (CHead c (Bind b) u) t2 t0) \to (ty3 g 
44654 c (THead (Bind b) u t1) (THead (Bind b) u t2)))))))))))
44655 | ty3_appl: \forall (c: C).(\forall (w: T).(\forall (u: T).((ty3 g c w u) \to 
44656 (\forall (v: T).(\forall (t: T).((ty3 g c v (THead (Bind Abst) u t)) \to (ty3 
44657 g c (THead (Flat Appl) w v) (THead (Flat Appl) w (THead (Bind Abst) u 
44658 t)))))))))
44659 | ty3_cast: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c t1 t2) 
44660 \to (\forall (t0: T).((ty3 g c t2 t0) \to (ty3 g c (THead (Flat Cast) t2 t1) 
44661 t2)))))).
44662
44663 theorem ty3_gen_sort:
44664  \forall (g: G).(\forall (c: C).(\forall (x: T).(\forall (n: nat).((ty3 g c 
44665 (TSort n) x) \to (pc3 c (TSort (next g n)) x)))))
44666 \def
44667  \lambda (g: G).(\lambda (c: C).(\lambda (x: T).(\lambda (n: nat).(\lambda 
44668 (H: (ty3 g c (TSort n) x)).(insert_eq T (TSort n) (\lambda (t: T).(ty3 g c t 
44669 x)) (pc3 c (TSort (next g n)) x) (\lambda (y: T).(\lambda (H0: (ty3 g c y 
44670 x)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).((eq T t 
44671 (TSort n)) \to (pc3 c0 (TSort (next g n)) t0))))) (\lambda (c0: C).(\lambda 
44672 (t2: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t2 t)).(\lambda (_: (((eq T t2 
44673 (TSort n)) \to (pc3 c0 (TSort (next g n)) t)))).(\lambda (u: T).(\lambda (t1: 
44674 T).(\lambda (H3: (ty3 g c0 u t1)).(\lambda (H4: (((eq T u (TSort n)) \to (pc3 
44675 c0 (TSort (next g n)) t1)))).(\lambda (H5: (pc3 c0 t1 t2)).(\lambda (H6: (eq 
44676 T u (TSort n))).(let H7 \def (f_equal T T (\lambda (e: T).e) u (TSort n) H6) 
44677 in (let H8 \def (eq_ind T u (\lambda (t: T).((eq T t (TSort n)) \to (pc3 c0 
44678 (TSort (next g n)) t1))) H4 (TSort n) H7) in (let H9 \def (eq_ind T u 
44679 (\lambda (t: T).(ty3 g c0 t t1)) H3 (TSort n) H7) in (pc3_t t1 c0 (TSort 
44680 (next g n)) (H8 (refl_equal T (TSort n))) t2 H5))))))))))))))) (\lambda (c0: 
44681 C).(\lambda (m: nat).(\lambda (H1: (eq T (TSort m) (TSort n))).(let H2 \def 
44682 (f_equal T nat (\lambda (e: T).(match e return (\lambda (_: T).nat) with 
44683 [(TSort n) \Rightarrow n | (TLRef _) \Rightarrow m | (THead _ _ _) 
44684 \Rightarrow m])) (TSort m) (TSort n) H1) in (eq_ind_r nat n (\lambda (n0: 
44685 nat).(pc3 c0 (TSort (next g n)) (TSort (next g n0)))) (pc3_refl c0 (TSort 
44686 (next g n))) m H2))))) (\lambda (n0: nat).(\lambda (c0: C).(\lambda (d: 
44687 C).(\lambda (u: T).(\lambda (_: (getl n0 c0 (CHead d (Bind Abbr) 
44688 u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (_: (((eq T u 
44689 (TSort n)) \to (pc3 d (TSort (next g n)) t)))).(\lambda (H4: (eq T (TLRef n0) 
44690 (TSort n))).(let H5 \def (eq_ind T (TLRef n0) (\lambda (ee: T).(match ee 
44691 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
44692 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (TSort n) H4) in 
44693 (False_ind (pc3 c0 (TSort (next g n)) (lift (S n0) O t)) H5))))))))))) 
44694 (\lambda (n0: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda 
44695 (_: (getl n0 c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda (_: (ty3 g 
44696 d u t)).(\lambda (_: (((eq T u (TSort n)) \to (pc3 d (TSort (next g n)) 
44697 t)))).(\lambda (H4: (eq T (TLRef n0) (TSort n))).(let H5 \def (eq_ind T 
44698 (TLRef n0) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with 
44699 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) 
44700 \Rightarrow False])) I (TSort n) H4) in (False_ind (pc3 c0 (TSort (next g n)) 
44701 (lift (S n0) O u)) H5))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda 
44702 (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (_: (((eq T u (TSort n)) \to 
44703 (pc3 c0 (TSort (next g n)) t)))).(\lambda (b: B).(\lambda (t1: T).(\lambda 
44704 (t2: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t1 t2)).(\lambda (_: (((eq 
44705 T t1 (TSort n)) \to (pc3 (CHead c0 (Bind b) u) (TSort (next g n)) 
44706 t2)))).(\lambda (t0: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t2 
44707 t0)).(\lambda (_: (((eq T t2 (TSort n)) \to (pc3 (CHead c0 (Bind b) u) (TSort 
44708 (next g n)) t0)))).(\lambda (H7: (eq T (THead (Bind b) u t1) (TSort n))).(let 
44709 H8 \def (eq_ind T (THead (Bind b) u t1) (\lambda (ee: T).(match ee return 
44710 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
44711 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H7) in 
44712 (False_ind (pc3 c0 (TSort (next g n)) (THead (Bind b) u t2)) 
44713 H8)))))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda (u: T).(\lambda 
44714 (_: (ty3 g c0 w u)).(\lambda (_: (((eq T w (TSort n)) \to (pc3 c0 (TSort 
44715 (next g n)) u)))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v 
44716 (THead (Bind Abst) u t))).(\lambda (_: (((eq T v (TSort n)) \to (pc3 c0 
44717 (TSort (next g n)) (THead (Bind Abst) u t))))).(\lambda (H5: (eq T (THead 
44718 (Flat Appl) w v) (TSort n))).(let H6 \def (eq_ind T (THead (Flat Appl) w v) 
44719 (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
44720 \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
44721 True])) I (TSort n) H5) in (False_ind (pc3 c0 (TSort (next g n)) (THead (Flat 
44722 Appl) w (THead (Bind Abst) u t))) H6)))))))))))) (\lambda (c0: C).(\lambda 
44723 (t1: T).(\lambda (t2: T).(\lambda (_: (ty3 g c0 t1 t2)).(\lambda (_: (((eq T 
44724 t1 (TSort n)) \to (pc3 c0 (TSort (next g n)) t2)))).(\lambda (t0: T).(\lambda 
44725 (_: (ty3 g c0 t2 t0)).(\lambda (_: (((eq T t2 (TSort n)) \to (pc3 c0 (TSort 
44726 (next g n)) t0)))).(\lambda (H5: (eq T (THead (Flat Cast) t2 t1) (TSort 
44727 n))).(let H6 \def (eq_ind T (THead (Flat Cast) t2 t1) (\lambda (ee: T).(match 
44728 ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
44729 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H5) in 
44730 (False_ind (pc3 c0 (TSort (next g n)) t2) H6))))))))))) c y x H0))) H))))).
44731
44732 theorem ty3_gen_lref:
44733  \forall (g: G).(\forall (c: C).(\forall (x: T).(\forall (n: nat).((ty3 g c 
44734 (TLRef n) x) \to (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda 
44735 (t: T).(pc3 c (lift (S n) O t) x)))) (\lambda (e: C).(\lambda (u: T).(\lambda 
44736 (_: T).(getl n c (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
44737 T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda 
44738 (u: T).(\lambda (_: T).(pc3 c (lift (S n) O u) x)))) (\lambda (e: C).(\lambda 
44739 (u: T).(\lambda (_: T).(getl n c (CHead e (Bind Abst) u))))) (\lambda (e: 
44740 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))))))))
44741 \def
44742  \lambda (g: G).(\lambda (c: C).(\lambda (x: T).(\lambda (n: nat).(\lambda 
44743 (H: (ty3 g c (TLRef n) x)).(insert_eq T (TLRef n) (\lambda (t: T).(ty3 g c t 
44744 x)) (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c 
44745 (lift (S n) O t) x)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl 
44746 n c (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
44747 T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda 
44748 (_: T).(pc3 c (lift (S n) O u) x)))) (\lambda (e: C).(\lambda (u: T).(\lambda 
44749 (_: T).(getl n c (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: 
44750 T).(\lambda (t: T).(ty3 g e u t)))))) (\lambda (y: T).(\lambda (H0: (ty3 g c 
44751 y x)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).((eq T t 
44752 (TLRef n)) \to (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t1: 
44753 T).(pc3 c0 (lift (S n) O t1) t0)))) (\lambda (e: C).(\lambda (u: T).(\lambda 
44754 (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
44755 T).(\lambda (t1: T).(ty3 g e u t1))))) (ex3_3 C T T (\lambda (_: C).(\lambda 
44756 (u: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u) t0)))) (\lambda (e: 
44757 C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) 
44758 (\lambda (e: C).(\lambda (u: T).(\lambda (t1: T).(ty3 g e u t1)))))))))) 
44759 (\lambda (c0: C).(\lambda (t2: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t2 
44760 t)).(\lambda (_: (((eq T t2 (TLRef n)) \to (or (ex3_3 C T T (\lambda (_: 
44761 C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t)))) (\lambda 
44762 (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) 
44763 (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T 
44764 T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u) 
44765 t)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e 
44766 (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
44767 t))))))))).(\lambda (u: T).(\lambda (t1: T).(\lambda (H3: (ty3 g c0 u 
44768 t1)).(\lambda (H4: (((eq T u (TLRef n)) \to (or (ex3_3 C T T (\lambda (_: 
44769 C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S n) O t) t1)))) (\lambda 
44770 (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) 
44771 (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T 
44772 T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u) 
44773 t1)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e 
44774 (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
44775 t))))))))).(\lambda (H5: (pc3 c0 t1 t2)).(\lambda (H6: (eq T u (TLRef 
44776 n))).(let H7 \def (f_equal T T (\lambda (e: T).e) u (TLRef n) H6) in (let H8 
44777 \def (eq_ind T u (\lambda (t: T).((eq T t (TLRef n)) \to (or (ex3_3 C T T 
44778 (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) 
44779 t1)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e 
44780 (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t0: T).(ty3 g e 
44781 u t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 
44782 c0 (lift (S n) O u) t1)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: 
44783 T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: 
44784 T).(\lambda (t0: T).(ty3 g e u t0)))))))) H4 (TLRef n) H7) in (let H9 \def 
44785 (eq_ind T u (\lambda (t: T).(ty3 g c0 t t1)) H3 (TLRef n) H7) in (let H10 
44786 \def (H8 (refl_equal T (TLRef n))) in (or_ind (ex3_3 C T T (\lambda (_: 
44787 C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t1)))) (\lambda 
44788 (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) 
44789 u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) 
44790 (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c0 (lift 
44791 (S n) O u0) t1)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n 
44792 c0 (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda 
44793 (t0: T).(ty3 g e u0 t0))))) (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: 
44794 T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda (e: C).(\lambda 
44795 (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u0))))) (\lambda (e: 
44796 C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex3_3 C T T 
44797 (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) 
44798 t2)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e 
44799 (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g 
44800 e u0 t0)))))) (\lambda (H11: (ex3_3 C T T (\lambda (_: C).(\lambda (_: 
44801 T).(\lambda (t: T).(pc3 c0 (lift (S n) O t) t1)))) (\lambda (e: C).(\lambda 
44802 (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: 
44803 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))).(ex3_3_ind C T T 
44804 (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) 
44805 t1)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e 
44806 (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g 
44807 e u0 t0)))) (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: 
44808 T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda (e: C).(\lambda (u0: T).(\lambda 
44809 (_: T).(getl n c0 (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: 
44810 T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda 
44811 (u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) t2)))) (\lambda (e: 
44812 C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) 
44813 (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0)))))) 
44814 (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H12: (pc3 c0 
44815 (lift (S n) O x2) t1)).(\lambda (H13: (getl n c0 (CHead x0 (Bind Abbr) 
44816 x1))).(\lambda (H14: (ty3 g x0 x1 x2)).(or_introl (ex3_3 C T T (\lambda (_: 
44817 C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda 
44818 (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) 
44819 u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) 
44820 (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c0 (lift 
44821 (S n) O u0) t2)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n 
44822 c0 (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda 
44823 (t0: T).(ty3 g e u0 t0))))) (ex3_3_intro C T T (\lambda (_: C).(\lambda (_: 
44824 T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda (e: C).(\lambda 
44825 (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u0))))) (\lambda (e: 
44826 C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0)))) x0 x1 x2 (pc3_t t1 c0 
44827 (lift (S n) O x2) H12 t2 H5) H13 H14)))))))) H11)) (\lambda (H11: (ex3_3 C T 
44828 T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u) 
44829 t1)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e 
44830 (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
44831 t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: 
44832 T).(pc3 c0 (lift (S n) O u0) t1)))) (\lambda (e: C).(\lambda (u0: T).(\lambda 
44833 (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: 
44834 T).(\lambda (t0: T).(ty3 g e u0 t0)))) (or (ex3_3 C T T (\lambda (_: 
44835 C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda 
44836 (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) 
44837 u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) 
44838 (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c0 (lift 
44839 (S n) O u0) t2)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n 
44840 c0 (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda 
44841 (t0: T).(ty3 g e u0 t0)))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: 
44842 T).(\lambda (H12: (pc3 c0 (lift (S n) O x1) t1)).(\lambda (H13: (getl n c0 
44843 (CHead x0 (Bind Abst) x1))).(\lambda (H14: (ty3 g x0 x1 x2)).(or_intror 
44844 (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift 
44845 (S n) O t0) t2)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n 
44846 c0 (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda 
44847 (t0: T).(ty3 g e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: 
44848 T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) t2)))) (\lambda (e: C).(\lambda 
44849 (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: 
44850 C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex3_3_intro C T T 
44851 (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) 
44852 t2)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e 
44853 (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g 
44854 e u0 t0)))) x0 x1 x2 (pc3_t t1 c0 (lift (S n) O x1) H12 t2 H5) H13 
44855 H14)))))))) H11)) H10)))))))))))))))) (\lambda (c0: C).(\lambda (m: 
44856 nat).(\lambda (H1: (eq T (TSort m) (TLRef n))).(let H2 \def (eq_ind T (TSort 
44857 m) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
44858 \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
44859 False])) I (TLRef n) H1) in (False_ind (or (ex3_3 C T T (\lambda (_: 
44860 C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S n) O t) (TSort (next g 
44861 m)))))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e 
44862 (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
44863 t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c0 
44864 (lift (S n) O u) (TSort (next g m)))))) (\lambda (e: C).(\lambda (u: 
44865 T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: 
44866 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))) H2))))) (\lambda (n0: 
44867 nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (H1: (getl n0 
44868 c0 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda (H2: (ty3 g d u 
44869 t)).(\lambda (_: (((eq T u (TLRef n)) \to (or (ex3_3 C T T (\lambda (_: 
44870 C).(\lambda (_: T).(\lambda (t0: T).(pc3 d (lift (S n) O t0) t)))) (\lambda 
44871 (e: C).(\lambda (u: T).(\lambda (_: T).(getl n d (CHead e (Bind Abbr) u))))) 
44872 (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T 
44873 T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 d (lift (S n) O u) 
44874 t)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n d (CHead e 
44875 (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
44876 t))))))))).(\lambda (H4: (eq T (TLRef n0) (TLRef n))).(let H5 \def (f_equal T 
44877 nat (\lambda (e: T).(match e return (\lambda (_: T).nat) with [(TSort _) 
44878 \Rightarrow n0 | (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow n0])) 
44879 (TLRef n0) (TLRef n) H4) in (let H6 \def (eq_ind nat n0 (\lambda (n: 
44880 nat).(getl n c0 (CHead d (Bind Abbr) u))) H1 n H5) in (eq_ind_r nat n 
44881 (\lambda (n1: nat).(or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda 
44882 (t0: T).(pc3 c0 (lift (S n) O t0) (lift (S n1) O t))))) (\lambda (e: 
44883 C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u0))))) 
44884 (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex3_3 
44885 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O 
44886 u0) (lift (S n1) O t))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: 
44887 T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: 
44888 T).(\lambda (t0: T).(ty3 g e u0 t0))))))) (or_introl (ex3_3 C T T (\lambda 
44889 (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) (lift (S n) 
44890 O t))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e 
44891 (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g 
44892 e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: 
44893 T).(pc3 c0 (lift (S n) O u0) (lift (S n) O t))))) (\lambda (e: C).(\lambda 
44894 (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: 
44895 C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex3_3_intro C T T 
44896 (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) 
44897 (lift (S n) O t))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n 
44898 c0 (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda 
44899 (t0: T).(ty3 g e u0 t0)))) d u t (pc3_refl c0 (lift (S n) O t)) H6 H2)) n0 
44900 H5)))))))))))) (\lambda (n0: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda 
44901 (u: T).(\lambda (H1: (getl n0 c0 (CHead d (Bind Abst) u))).(\lambda (t: 
44902 T).(\lambda (H2: (ty3 g d u t)).(\lambda (_: (((eq T u (TLRef n)) \to (or 
44903 (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 d (lift (S 
44904 n) O t0) t)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n d 
44905 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
44906 T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda 
44907 (_: T).(pc3 d (lift (S n) O u) t)))) (\lambda (e: C).(\lambda (u: T).(\lambda 
44908 (_: T).(getl n d (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: 
44909 T).(\lambda (t: T).(ty3 g e u t))))))))).(\lambda (H4: (eq T (TLRef n0) 
44910 (TLRef n))).(let H5 \def (f_equal T nat (\lambda (e: T).(match e return 
44911 (\lambda (_: T).nat) with [(TSort _) \Rightarrow n0 | (TLRef n) \Rightarrow n 
44912 | (THead _ _ _) \Rightarrow n0])) (TLRef n0) (TLRef n) H4) in (let H6 \def 
44913 (eq_ind nat n0 (\lambda (n: nat).(getl n c0 (CHead d (Bind Abst) u))) H1 n 
44914 H5) in (eq_ind_r nat n (\lambda (n1: nat).(or (ex3_3 C T T (\lambda (_: 
44915 C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) (lift (S n1) O 
44916 u))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e 
44917 (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g 
44918 e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: 
44919 T).(pc3 c0 (lift (S n) O u0) (lift (S n1) O u))))) (\lambda (e: C).(\lambda 
44920 (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: 
44921 C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))))) (or_intror (ex3_3 
44922 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O 
44923 t0) (lift (S n) O u))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: 
44924 T).(getl n c0 (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: 
44925 T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda 
44926 (u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) (lift (S n) O u))))) 
44927 (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
44928 Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 
44929 t0))))) (ex3_3_intro C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: 
44930 T).(pc3 c0 (lift (S n) O u0) (lift (S n) O u))))) (\lambda (e: C).(\lambda 
44931 (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: 
44932 C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0)))) d u t (pc3_refl c0 
44933 (lift (S n) O u)) H6 H2)) n0 H5)))))))))))) (\lambda (c0: C).(\lambda (u: 
44934 T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (_: (((eq T u (TLRef 
44935 n)) \to (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: 
44936 T).(pc3 c0 (lift (S n) O t0) t)))) (\lambda (e: C).(\lambda (u: T).(\lambda 
44937 (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
44938 T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda 
44939 (u: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u) t)))) (\lambda (e: 
44940 C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) 
44941 (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
44942 t))))))))).(\lambda (b: B).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: 
44943 (ty3 g (CHead c0 (Bind b) u) t1 t2)).(\lambda (_: (((eq T t1 (TLRef n)) \to 
44944 (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 (CHead 
44945 c0 (Bind b) u) (lift (S n) O t) t2)))) (\lambda (e: C).(\lambda (u0: 
44946 T).(\lambda (_: T).(getl n (CHead c0 (Bind b) u) (CHead e (Bind Abbr) u0))))) 
44947 (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T 
44948 T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 (CHead c0 (Bind b) u) 
44949 (lift (S n) O u0) t2)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: 
44950 T).(getl n (CHead c0 (Bind b) u) (CHead e (Bind Abst) u0))))) (\lambda (e: 
44951 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))))))).(\lambda (t0: 
44952 T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t2 t0)).(\lambda (_: (((eq T t2 
44953 (TLRef n)) \to (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: 
44954 T).(pc3 (CHead c0 (Bind b) u) (lift (S n) O t) t0)))) (\lambda (e: 
44955 C).(\lambda (u0: T).(\lambda (_: T).(getl n (CHead c0 (Bind b) u) (CHead e 
44956 (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e 
44957 u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 
44958 (CHead c0 (Bind b) u) (lift (S n) O u0) t0)))) (\lambda (e: C).(\lambda (u0: 
44959 T).(\lambda (_: T).(getl n (CHead c0 (Bind b) u) (CHead e (Bind Abst) u0))))) 
44960 (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
44961 t))))))))).(\lambda (H7: (eq T (THead (Bind b) u t1) (TLRef n))).(let H8 \def 
44962 (eq_ind T (THead (Bind b) u t1) (\lambda (ee: T).(match ee return (\lambda 
44963 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
44964 | (THead _ _ _) \Rightarrow True])) I (TLRef n) H7) in (False_ind (or (ex3_3 
44965 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t3: T).(pc3 c0 (lift (S n) O 
44966 t3) (THead (Bind b) u t2))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: 
44967 T).(getl n c0 (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: 
44968 T).(\lambda (t3: T).(ty3 g e u0 t3))))) (ex3_3 C T T (\lambda (_: C).(\lambda 
44969 (u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) (THead (Bind b) u t2))))) 
44970 (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
44971 Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t3: T).(ty3 g e u0 
44972 t3)))))) H8)))))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda (u: 
44973 T).(\lambda (_: (ty3 g c0 w u)).(\lambda (_: (((eq T w (TLRef n)) \to (or 
44974 (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S 
44975 n) O t) u)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 
44976 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
44977 T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda 
44978 (_: T).(pc3 c0 (lift (S n) O u0) u)))) (\lambda (e: C).(\lambda (u: 
44979 T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: 
44980 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))))))).(\lambda (v: 
44981 T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead (Bind Abst) u 
44982 t))).(\lambda (_: (((eq T v (TLRef n)) \to (or (ex3_3 C T T (\lambda (_: 
44983 C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) (THead (Bind 
44984 Abst) u t))))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 
44985 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
44986 T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda 
44987 (_: T).(pc3 c0 (lift (S n) O u0) (THead (Bind Abst) u t))))) (\lambda (e: 
44988 C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) 
44989 (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
44990 t))))))))).(\lambda (H5: (eq T (THead (Flat Appl) w v) (TLRef n))).(let H6 
44991 \def (eq_ind T (THead (Flat Appl) w v) (\lambda (ee: T).(match ee return 
44992 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
44993 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) H5) in 
44994 (False_ind (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: 
44995 T).(pc3 c0 (lift (S n) O t0) (THead (Flat Appl) w (THead (Bind Abst) u 
44996 t)))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e 
44997 (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g 
44998 e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: 
44999 T).(pc3 c0 (lift (S n) O u0) (THead (Flat Appl) w (THead (Bind Abst) u 
45000 t)))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e 
45001 (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g 
45002 e u0 t0)))))) H6)))))))))))) (\lambda (c0: C).(\lambda (t1: T).(\lambda (t2: 
45003 T).(\lambda (_: (ty3 g c0 t1 t2)).(\lambda (_: (((eq T t1 (TLRef n)) \to (or 
45004 (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S 
45005 n) O t) t2)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 
45006 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
45007 T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda 
45008 (_: T).(pc3 c0 (lift (S n) O u) t2)))) (\lambda (e: C).(\lambda (u: 
45009 T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: 
45010 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))))))).(\lambda (t0: 
45011 T).(\lambda (_: (ty3 g c0 t2 t0)).(\lambda (_: (((eq T t2 (TLRef n)) \to (or 
45012 (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S 
45013 n) O t) t0)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 
45014 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
45015 T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda 
45016 (_: T).(pc3 c0 (lift (S n) O u) t0)))) (\lambda (e: C).(\lambda (u: 
45017 T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: 
45018 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))))))).(\lambda (H5: (eq T 
45019 (THead (Flat Cast) t2 t1) (TLRef n))).(let H6 \def (eq_ind T (THead (Flat 
45020 Cast) t2 t1) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with 
45021 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
45022 \Rightarrow True])) I (TLRef n) H5) in (False_ind (or (ex3_3 C T T (\lambda 
45023 (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S n) O t) t2)))) 
45024 (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
45025 Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
45026 t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c0 
45027 (lift (S n) O u) t2)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl 
45028 n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
45029 T).(ty3 g e u t)))))) H6))))))))))) c y x H0))) H))))).
45030
45031 theorem ty3_gen_bind:
45032  \forall (g: G).(\forall (b: B).(\forall (c: C).(\forall (u: T).(\forall (t1: 
45033 T).(\forall (x: T).((ty3 g c (THead (Bind b) u t1) x) \to (ex4_3 T T T 
45034 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c (THead (Bind b) u t2) 
45035 x)))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g c u t)))) 
45036 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c (Bind b) u) 
45037 t1 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead c 
45038 (Bind b) u) t2 t0)))))))))))
45039 \def
45040  \lambda (g: G).(\lambda (b: B).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: 
45041 T).(\lambda (x: T).(\lambda (H: (ty3 g c (THead (Bind b) u t1) x)).(insert_eq 
45042 T (THead (Bind b) u t1) (\lambda (t: T).(ty3 g c t x)) (ex4_3 T T T (\lambda 
45043 (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c (THead (Bind b) u t2) x)))) 
45044 (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g c u t)))) (\lambda 
45045 (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c (Bind b) u) t1 t2)))) 
45046 (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead c (Bind b) u) 
45047 t2 t0))))) (\lambda (y: T).(\lambda (H0: (ty3 g c y x)).(ty3_ind g (\lambda 
45048 (c0: C).(\lambda (t: T).(\lambda (t0: T).((eq T t (THead (Bind b) u t1)) \to 
45049 (ex4_3 T T T (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead 
45050 (Bind b) u t2) t0)))) (\lambda (_: T).(\lambda (t3: T).(\lambda (_: T).(ty3 g 
45051 c0 u t3)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 
45052 (Bind b) u) t1 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t4: T).(ty3 
45053 g (CHead c0 (Bind b) u) t2 t4))))))))) (\lambda (c0: C).(\lambda (t2: 
45054 T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t2 t)).(\lambda (_: (((eq T t2 
45055 (THead (Bind b) u t1)) \to (ex4_3 T T T (\lambda (t2: T).(\lambda (_: 
45056 T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t2) t)))) (\lambda (_: 
45057 T).(\lambda (t: T).(\lambda (_: T).(ty3 g c0 u t)))) (\lambda (t2: 
45058 T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)))) 
45059 (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead c0 (Bind b) 
45060 u) t2 t0)))))))).(\lambda (u0: T).(\lambda (t0: T).(\lambda (H3: (ty3 g c0 u0 
45061 t0)).(\lambda (H4: (((eq T u0 (THead (Bind b) u t1)) \to (ex4_3 T T T 
45062 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u 
45063 t2) t0)))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g c0 u t)))) 
45064 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) 
45065 t1 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead c0 
45066 (Bind b) u) t2 t0)))))))).(\lambda (H5: (pc3 c0 t0 t2)).(\lambda (H6: (eq T 
45067 u0 (THead (Bind b) u t1))).(let H7 \def (f_equal T T (\lambda (e: T).e) u0 
45068 (THead (Bind b) u t1) H6) in (let H8 \def (eq_ind T u0 (\lambda (t: T).((eq T 
45069 t (THead (Bind b) u t1)) \to (ex4_3 T T T (\lambda (t2: T).(\lambda (_: 
45070 T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t2) t0)))) (\lambda (_: 
45071 T).(\lambda (t0: T).(\lambda (_: T).(ty3 g c0 u t0)))) (\lambda (t2: 
45072 T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)))) 
45073 (\lambda (t2: T).(\lambda (_: T).(\lambda (t1: T).(ty3 g (CHead c0 (Bind b) 
45074 u) t2 t1))))))) H4 (THead (Bind b) u t1) H7) in (let H9 \def (eq_ind T u0 
45075 (\lambda (t: T).(ty3 g c0 t t0)) H3 (THead (Bind b) u t1) H7) in (let H10 
45076 \def (H8 (refl_equal T (THead (Bind b) u t1))) in (ex4_3_ind T T T (\lambda 
45077 (t3: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t3) t0)))) 
45078 (\lambda (_: T).(\lambda (t4: T).(\lambda (_: T).(ty3 g c0 u t4)))) (\lambda 
45079 (t3: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 
45080 t3)))) (\lambda (t3: T).(\lambda (_: T).(\lambda (t5: T).(ty3 g (CHead c0 
45081 (Bind b) u) t3 t5)))) (ex4_3 T T T (\lambda (t3: T).(\lambda (_: T).(\lambda 
45082 (_: T).(pc3 c0 (THead (Bind b) u t3) t2)))) (\lambda (_: T).(\lambda (t4: 
45083 T).(\lambda (_: T).(ty3 g c0 u t4)))) (\lambda (t3: T).(\lambda (_: 
45084 T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t3)))) (\lambda (t3: 
45085 T).(\lambda (_: T).(\lambda (t5: T).(ty3 g (CHead c0 (Bind b) u) t3 t5))))) 
45086 (\lambda (x0: T).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H11: (pc3 c0 
45087 (THead (Bind b) u x0) t0)).(\lambda (H12: (ty3 g c0 u x1)).(\lambda (H13: 
45088 (ty3 g (CHead c0 (Bind b) u) t1 x0)).(\lambda (H14: (ty3 g (CHead c0 (Bind b) 
45089 u) x0 x2)).(ex4_3_intro T T T (\lambda (t3: T).(\lambda (_: T).(\lambda (_: 
45090 T).(pc3 c0 (THead (Bind b) u t3) t2)))) (\lambda (_: T).(\lambda (t4: 
45091 T).(\lambda (_: T).(ty3 g c0 u t4)))) (\lambda (t3: T).(\lambda (_: 
45092 T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t3)))) (\lambda (t3: 
45093 T).(\lambda (_: T).(\lambda (t5: T).(ty3 g (CHead c0 (Bind b) u) t3 t5)))) x0 
45094 x1 x2 (pc3_t t0 c0 (THead (Bind b) u x0) H11 t2 H5) H12 H13 H14)))))))) 
45095 H10)))))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda (H1: (eq T 
45096 (TSort m) (THead (Bind b) u t1))).(let H2 \def (eq_ind T (TSort m) (\lambda 
45097 (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
45098 True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I 
45099 (THead (Bind b) u t1) H1) in (False_ind (ex4_3 T T T (\lambda (t2: 
45100 T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t2) (TSort (next 
45101 g m)))))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g c0 u t)))) 
45102 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) 
45103 t1 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead c0 
45104 (Bind b) u) t2 t0))))) H2))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda 
45105 (d: C).(\lambda (u0: T).(\lambda (_: (getl n c0 (CHead d (Bind Abbr) 
45106 u0))).(\lambda (t: T).(\lambda (_: (ty3 g d u0 t)).(\lambda (_: (((eq T u0 
45107 (THead (Bind b) u t1)) \to (ex4_3 T T T (\lambda (t2: T).(\lambda (_: 
45108 T).(\lambda (_: T).(pc3 d (THead (Bind b) u t2) t)))) (\lambda (_: 
45109 T).(\lambda (t: T).(\lambda (_: T).(ty3 g d u t)))) (\lambda (t2: T).(\lambda 
45110 (_: T).(\lambda (_: T).(ty3 g (CHead d (Bind b) u) t1 t2)))) (\lambda (t2: 
45111 T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead d (Bind b) u) t2 
45112 t0)))))))).(\lambda (H4: (eq T (TLRef n) (THead (Bind b) u t1))).(let H5 \def 
45113 (eq_ind T (TLRef n) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) 
45114 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ 
45115 _) \Rightarrow False])) I (THead (Bind b) u t1) H4) in (False_ind (ex4_3 T T 
45116 T (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u 
45117 t2) (lift (S n) O t))))) (\lambda (_: T).(\lambda (t0: T).(\lambda (_: 
45118 T).(ty3 g c0 u t0)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g 
45119 (CHead c0 (Bind b) u) t1 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda 
45120 (t3: T).(ty3 g (CHead c0 (Bind b) u) t2 t3))))) H5))))))))))) (\lambda (n: 
45121 nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (_: (getl n 
45122 c0 (CHead d (Bind Abst) u0))).(\lambda (t: T).(\lambda (_: (ty3 g d u0 
45123 t)).(\lambda (_: (((eq T u0 (THead (Bind b) u t1)) \to (ex4_3 T T T (\lambda 
45124 (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 d (THead (Bind b) u t2) t)))) 
45125 (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g d u t)))) (\lambda 
45126 (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead d (Bind b) u) t1 t2)))) 
45127 (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead d (Bind b) u) 
45128 t2 t0)))))))).(\lambda (H4: (eq T (TLRef n) (THead (Bind b) u t1))).(let H5 
45129 \def (eq_ind T (TLRef n) (\lambda (ee: T).(match ee return (\lambda (_: 
45130 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | 
45131 (THead _ _ _) \Rightarrow False])) I (THead (Bind b) u t1) H4) in (False_ind 
45132 (ex4_3 T T T (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead 
45133 (Bind b) u t2) (lift (S n) O u0))))) (\lambda (_: T).(\lambda (t0: 
45134 T).(\lambda (_: T).(ty3 g c0 u t0)))) (\lambda (t2: T).(\lambda (_: 
45135 T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)))) (\lambda (t2: 
45136 T).(\lambda (_: T).(\lambda (t3: T).(ty3 g (CHead c0 (Bind b) u) t2 t3))))) 
45137 H5))))))))))) (\lambda (c0: C).(\lambda (u0: T).(\lambda (t: T).(\lambda (H1: 
45138 (ty3 g c0 u0 t)).(\lambda (H2: (((eq T u0 (THead (Bind b) u t1)) \to (ex4_3 T 
45139 T T (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) 
45140 u t2) t)))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g c0 u t)))) 
45141 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) 
45142 t1 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead c0 
45143 (Bind b) u) t2 t0)))))))).(\lambda (b0: B).(\lambda (t0: T).(\lambda (t2: 
45144 T).(\lambda (H3: (ty3 g (CHead c0 (Bind b0) u0) t0 t2)).(\lambda (H4: (((eq T 
45145 t0 (THead (Bind b) u t1)) \to (ex4_3 T T T (\lambda (t3: T).(\lambda (_: 
45146 T).(\lambda (_: T).(pc3 (CHead c0 (Bind b0) u0) (THead (Bind b) u t3) t2)))) 
45147 (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b0) 
45148 u0) u t)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead 
45149 (CHead c0 (Bind b0) u0) (Bind b) u) t1 t2)))) (\lambda (t2: T).(\lambda (_: 
45150 T).(\lambda (t0: T).(ty3 g (CHead (CHead c0 (Bind b0) u0) (Bind b) u) t2 
45151 t0)))))))).(\lambda (t3: T).(\lambda (H5: (ty3 g (CHead c0 (Bind b0) u0) t2 
45152 t3)).(\lambda (H6: (((eq T t2 (THead (Bind b) u t1)) \to (ex4_3 T T T 
45153 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 (CHead c0 (Bind b0) u0) 
45154 (THead (Bind b) u t2) t3)))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: 
45155 T).(ty3 g (CHead c0 (Bind b0) u0) u t)))) (\lambda (t2: T).(\lambda (_: 
45156 T).(\lambda (_: T).(ty3 g (CHead (CHead c0 (Bind b0) u0) (Bind b) u) t1 
45157 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead (CHead 
45158 c0 (Bind b0) u0) (Bind b) u) t2 t0)))))))).(\lambda (H7: (eq T (THead (Bind 
45159 b0) u0 t0) (THead (Bind b) u t1))).(let H8 \def (f_equal T B (\lambda (e: 
45160 T).(match e return (\lambda (_: T).B) with [(TSort _) \Rightarrow b0 | (TLRef 
45161 _) \Rightarrow b0 | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
45162 K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow b0])])) (THead 
45163 (Bind b0) u0 t0) (THead (Bind b) u t1) H7) in ((let H9 \def (f_equal T T 
45164 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
45165 \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead _ t _) \Rightarrow t])) 
45166 (THead (Bind b0) u0 t0) (THead (Bind b) u t1) H7) in ((let H10 \def (f_equal 
45167 T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
45168 \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) 
45169 (THead (Bind b0) u0 t0) (THead (Bind b) u t1) H7) in (\lambda (H11: (eq T u0 
45170 u)).(\lambda (H12: (eq B b0 b)).(let H13 \def (eq_ind T t0 (\lambda (t: 
45171 T).((eq T t (THead (Bind b) u t1)) \to (ex4_3 T T T (\lambda (t3: T).(\lambda 
45172 (_: T).(\lambda (_: T).(pc3 (CHead c0 (Bind b0) u0) (THead (Bind b) u t3) 
45173 t2)))) (\lambda (_: T).(\lambda (t0: T).(\lambda (_: T).(ty3 g (CHead c0 
45174 (Bind b0) u0) u t0)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 
45175 g (CHead (CHead c0 (Bind b0) u0) (Bind b) u) t1 t2)))) (\lambda (t2: 
45176 T).(\lambda (_: T).(\lambda (t1: T).(ty3 g (CHead (CHead c0 (Bind b0) u0) 
45177 (Bind b) u) t2 t1))))))) H4 t1 H10) in (let H14 \def (eq_ind T t0 (\lambda 
45178 (t: T).(ty3 g (CHead c0 (Bind b0) u0) t t2)) H3 t1 H10) in (let H15 \def 
45179 (eq_ind B b0 (\lambda (b0: B).((eq T t2 (THead (Bind b) u t1)) \to (ex4_3 T T 
45180 T (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 (CHead c0 (Bind b0) 
45181 u0) (THead (Bind b) u t2) t3)))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: 
45182 T).(ty3 g (CHead c0 (Bind b0) u0) u t)))) (\lambda (t2: T).(\lambda (_: 
45183 T).(\lambda (_: T).(ty3 g (CHead (CHead c0 (Bind b0) u0) (Bind b) u) t1 
45184 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead (CHead 
45185 c0 (Bind b0) u0) (Bind b) u) t2 t0))))))) H6 b H12) in (let H16 \def (eq_ind 
45186 B b0 (\lambda (b: B).(ty3 g (CHead c0 (Bind b) u0) t2 t3)) H5 b H12) in (let 
45187 H17 \def (eq_ind B b0 (\lambda (b0: B).((eq T t1 (THead (Bind b) u t1)) \to 
45188 (ex4_3 T T T (\lambda (t3: T).(\lambda (_: T).(\lambda (_: T).(pc3 (CHead c0 
45189 (Bind b0) u0) (THead (Bind b) u t3) t2)))) (\lambda (_: T).(\lambda (t: 
45190 T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b0) u0) u t)))) (\lambda (t2: 
45191 T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead (CHead c0 (Bind b0) u0) 
45192 (Bind b) u) t1 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 
45193 g (CHead (CHead c0 (Bind b0) u0) (Bind b) u) t2 t0))))))) H13 b H12) in (let 
45194 H18 \def (eq_ind B b0 (\lambda (b: B).(ty3 g (CHead c0 (Bind b) u0) t1 t2)) 
45195 H14 b H12) in (eq_ind_r B b (\lambda (b1: B).(ex4_3 T T T (\lambda (t4: 
45196 T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t4) (THead (Bind 
45197 b1) u0 t2))))) (\lambda (_: T).(\lambda (t5: T).(\lambda (_: T).(ty3 g c0 u 
45198 t5)))) (\lambda (t4: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 
45199 (Bind b) u) t1 t4)))) (\lambda (t4: T).(\lambda (_: T).(\lambda (t6: T).(ty3 
45200 g (CHead c0 (Bind b) u) t4 t6)))))) (let H19 \def (eq_ind T u0 (\lambda (t: 
45201 T).((eq T t2 (THead (Bind b) u t1)) \to (ex4_3 T T T (\lambda (t2: 
45202 T).(\lambda (_: T).(\lambda (_: T).(pc3 (CHead c0 (Bind b) t) (THead (Bind b) 
45203 u t2) t3)))) (\lambda (_: T).(\lambda (t0: T).(\lambda (_: T).(ty3 g (CHead 
45204 c0 (Bind b) t) u t0)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 
45205 g (CHead (CHead c0 (Bind b) t) (Bind b) u) t1 t2)))) (\lambda (t2: 
45206 T).(\lambda (_: T).(\lambda (t1: T).(ty3 g (CHead (CHead c0 (Bind b) t) (Bind 
45207 b) u) t2 t1))))))) H15 u H11) in (let H20 \def (eq_ind T u0 (\lambda (t: 
45208 T).(ty3 g (CHead c0 (Bind b) t) t2 t3)) H16 u H11) in (let H21 \def (eq_ind T 
45209 u0 (\lambda (t: T).((eq T t1 (THead (Bind b) u t1)) \to (ex4_3 T T T (\lambda 
45210 (t3: T).(\lambda (_: T).(\lambda (_: T).(pc3 (CHead c0 (Bind b) t) (THead 
45211 (Bind b) u t3) t2)))) (\lambda (_: T).(\lambda (t0: T).(\lambda (_: T).(ty3 g 
45212 (CHead c0 (Bind b) t) u t0)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (_: 
45213 T).(ty3 g (CHead (CHead c0 (Bind b) t) (Bind b) u) t1 t2)))) (\lambda (t2: 
45214 T).(\lambda (_: T).(\lambda (t1: T).(ty3 g (CHead (CHead c0 (Bind b) t) (Bind 
45215 b) u) t2 t1))))))) H17 u H11) in (let H22 \def (eq_ind T u0 (\lambda (t: 
45216 T).(ty3 g (CHead c0 (Bind b) t) t1 t2)) H18 u H11) in (let H23 \def (eq_ind T 
45217 u0 (\lambda (t0: T).((eq T t0 (THead (Bind b) u t1)) \to (ex4_3 T T T 
45218 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u 
45219 t2) t)))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g c0 u t)))) 
45220 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) 
45221 t1 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t1: T).(ty3 g (CHead c0 
45222 (Bind b) u) t2 t1))))))) H2 u H11) in (let H24 \def (eq_ind T u0 (\lambda 
45223 (t0: T).(ty3 g c0 t0 t)) H1 u H11) in (eq_ind_r T u (\lambda (t4: T).(ex4_3 T 
45224 T T (\lambda (t5: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) 
45225 u t5) (THead (Bind b) t4 t2))))) (\lambda (_: T).(\lambda (t6: T).(\lambda 
45226 (_: T).(ty3 g c0 u t6)))) (\lambda (t5: T).(\lambda (_: T).(\lambda (_: 
45227 T).(ty3 g (CHead c0 (Bind b) u) t1 t5)))) (\lambda (t5: T).(\lambda (_: 
45228 T).(\lambda (t7: T).(ty3 g (CHead c0 (Bind b) u) t5 t7)))))) (ex4_3_intro T T 
45229 T (\lambda (t4: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u 
45230 t4) (THead (Bind b) u t2))))) (\lambda (_: T).(\lambda (t5: T).(\lambda (_: 
45231 T).(ty3 g c0 u t5)))) (\lambda (t4: T).(\lambda (_: T).(\lambda (_: T).(ty3 g 
45232 (CHead c0 (Bind b) u) t1 t4)))) (\lambda (t4: T).(\lambda (_: T).(\lambda 
45233 (t6: T).(ty3 g (CHead c0 (Bind b) u) t4 t6)))) t2 t t3 (pc3_refl c0 (THead 
45234 (Bind b) u t2)) H24 H22 H20) u0 H11))))))) b0 H12)))))))))) H9)) 
45235 H8)))))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda (u0: T).(\lambda 
45236 (_: (ty3 g c0 w u0)).(\lambda (_: (((eq T w (THead (Bind b) u t1)) \to (ex4_3 
45237 T T T (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind 
45238 b) u t2) u0)))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g c0 u 
45239 t)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind 
45240 b) u) t1 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g 
45241 (CHead c0 (Bind b) u) t2 t0)))))))).(\lambda (v: T).(\lambda (t: T).(\lambda 
45242 (_: (ty3 g c0 v (THead (Bind Abst) u0 t))).(\lambda (_: (((eq T v (THead 
45243 (Bind b) u t1)) \to (ex4_3 T T T (\lambda (t2: T).(\lambda (_: T).(\lambda 
45244 (_: T).(pc3 c0 (THead (Bind b) u t2) (THead (Bind Abst) u0 t))))) (\lambda 
45245 (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g c0 u t)))) (\lambda (t2: 
45246 T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)))) 
45247 (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead c0 (Bind b) 
45248 u) t2 t0)))))))).(\lambda (H5: (eq T (THead (Flat Appl) w v) (THead (Bind b) 
45249 u t1))).(let H6 \def (eq_ind T (THead (Flat Appl) w v) (\lambda (ee: 
45250 T).(match ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
45251 (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k return 
45252 (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
45253 True])])) I (THead (Bind b) u t1) H5) in (False_ind (ex4_3 T T T (\lambda 
45254 (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t2) (THead 
45255 (Flat Appl) w (THead (Bind Abst) u0 t)))))) (\lambda (_: T).(\lambda (t0: 
45256 T).(\lambda (_: T).(ty3 g c0 u t0)))) (\lambda (t2: T).(\lambda (_: 
45257 T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)))) (\lambda (t2: 
45258 T).(\lambda (_: T).(\lambda (t3: T).(ty3 g (CHead c0 (Bind b) u) t2 t3))))) 
45259 H6)))))))))))) (\lambda (c0: C).(\lambda (t0: T).(\lambda (t2: T).(\lambda 
45260 (_: (ty3 g c0 t0 t2)).(\lambda (_: (((eq T t0 (THead (Bind b) u t1)) \to 
45261 (ex4_3 T T T (\lambda (t3: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead 
45262 (Bind b) u t3) t2)))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g 
45263 c0 u t)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 
45264 (Bind b) u) t1 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 
45265 g (CHead c0 (Bind b) u) t2 t0)))))))).(\lambda (t3: T).(\lambda (_: (ty3 g c0 
45266 t2 t3)).(\lambda (_: (((eq T t2 (THead (Bind b) u t1)) \to (ex4_3 T T T 
45267 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u 
45268 t2) t3)))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g c0 u t)))) 
45269 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) 
45270 t1 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t0: T).(ty3 g (CHead c0 
45271 (Bind b) u) t2 t0)))))))).(\lambda (H5: (eq T (THead (Flat Cast) t2 t0) 
45272 (THead (Bind b) u t1))).(let H6 \def (eq_ind T (THead (Flat Cast) t2 t0) 
45273 (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
45274 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
45275 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
45276 (Flat _) \Rightarrow True])])) I (THead (Bind b) u t1) H5) in (False_ind 
45277 (ex4_3 T T T (\lambda (t4: T).(\lambda (_: T).(\lambda (_: T).(pc3 c0 (THead 
45278 (Bind b) u t4) t2)))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g 
45279 c0 u t)))) (\lambda (t4: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 
45280 (Bind b) u) t1 t4)))) (\lambda (t4: T).(\lambda (_: T).(\lambda (t5: T).(ty3 
45281 g (CHead c0 (Bind b) u) t4 t5))))) H6))))))))))) c y x H0))) H))))))).
45282
45283 theorem ty3_gen_appl:
45284  \forall (g: G).(\forall (c: C).(\forall (w: T).(\forall (v: T).(\forall (x: 
45285 T).((ty3 g c (THead (Flat Appl) w v) x) \to (ex3_2 T T (\lambda (u: 
45286 T).(\lambda (t: T).(pc3 c (THead (Flat Appl) w (THead (Bind Abst) u t)) x))) 
45287 (\lambda (u: T).(\lambda (t: T).(ty3 g c v (THead (Bind Abst) u t)))) 
45288 (\lambda (u: T).(\lambda (_: T).(ty3 g c w u)))))))))
45289 \def
45290  \lambda (g: G).(\lambda (c: C).(\lambda (w: T).(\lambda (v: T).(\lambda (x: 
45291 T).(\lambda (H: (ty3 g c (THead (Flat Appl) w v) x)).(insert_eq T (THead 
45292 (Flat Appl) w v) (\lambda (t: T).(ty3 g c t x)) (ex3_2 T T (\lambda (u: 
45293 T).(\lambda (t: T).(pc3 c (THead (Flat Appl) w (THead (Bind Abst) u t)) x))) 
45294 (\lambda (u: T).(\lambda (t: T).(ty3 g c v (THead (Bind Abst) u t)))) 
45295 (\lambda (u: T).(\lambda (_: T).(ty3 g c w u)))) (\lambda (y: T).(\lambda 
45296 (H0: (ty3 g c y x)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: 
45297 T).((eq T t (THead (Flat Appl) w v)) \to (ex3_2 T T (\lambda (u: T).(\lambda 
45298 (t1: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u t1)) t0))) (\lambda 
45299 (u: T).(\lambda (t1: T).(ty3 g c0 v (THead (Bind Abst) u t1)))) (\lambda (u: 
45300 T).(\lambda (_: T).(ty3 g c0 w u)))))))) (\lambda (c0: C).(\lambda (t2: 
45301 T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t2 t)).(\lambda (_: (((eq T t2 
45302 (THead (Flat Appl) w v)) \to (ex3_2 T T (\lambda (u: T).(\lambda (t0: T).(pc3 
45303 c0 (THead (Flat Appl) w (THead (Bind Abst) u t0)) t))) (\lambda (u: 
45304 T).(\lambda (t: T).(ty3 g c0 v (THead (Bind Abst) u t)))) (\lambda (u: 
45305 T).(\lambda (_: T).(ty3 g c0 w u))))))).(\lambda (u: T).(\lambda (t1: 
45306 T).(\lambda (H3: (ty3 g c0 u t1)).(\lambda (H4: (((eq T u (THead (Flat Appl) 
45307 w v)) \to (ex3_2 T T (\lambda (u: T).(\lambda (t: T).(pc3 c0 (THead (Flat 
45308 Appl) w (THead (Bind Abst) u t)) t1))) (\lambda (u: T).(\lambda (t: T).(ty3 g 
45309 c0 v (THead (Bind Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w 
45310 u))))))).(\lambda (H5: (pc3 c0 t1 t2)).(\lambda (H6: (eq T u (THead (Flat 
45311 Appl) w v))).(let H7 \def (f_equal T T (\lambda (e: T).e) u (THead (Flat 
45312 Appl) w v) H6) in (let H8 \def (eq_ind T u (\lambda (t: T).((eq T t (THead 
45313 (Flat Appl) w v)) \to (ex3_2 T T (\lambda (u: T).(\lambda (t0: T).(pc3 c0 
45314 (THead (Flat Appl) w (THead (Bind Abst) u t0)) t1))) (\lambda (u: T).(\lambda 
45315 (t0: T).(ty3 g c0 v (THead (Bind Abst) u t0)))) (\lambda (u: T).(\lambda (_: 
45316 T).(ty3 g c0 w u)))))) H4 (THead (Flat Appl) w v) H7) in (let H9 \def (eq_ind 
45317 T u (\lambda (t: T).(ty3 g c0 t t1)) H3 (THead (Flat Appl) w v) H7) in (let 
45318 H10 \def (H8 (refl_equal T (THead (Flat Appl) w v))) in (ex3_2_ind T T 
45319 (\lambda (u0: T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind 
45320 Abst) u0 t0)) t1))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g c0 v (THead 
45321 (Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0))) 
45322 (ex3_2 T T (\lambda (u0: T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w 
45323 (THead (Bind Abst) u0 t0)) t2))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g c0 
45324 v (THead (Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w 
45325 u0)))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H11: (pc3 c0 (THead (Flat 
45326 Appl) w (THead (Bind Abst) x0 x1)) t1)).(\lambda (H12: (ty3 g c0 v (THead 
45327 (Bind Abst) x0 x1))).(\lambda (H13: (ty3 g c0 w x0)).(ex3_2_intro T T 
45328 (\lambda (u0: T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind 
45329 Abst) u0 t0)) t2))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g c0 v (THead 
45330 (Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0))) x0 
45331 x1 (pc3_t t1 c0 (THead (Flat Appl) w (THead (Bind Abst) x0 x1)) H11 t2 H5) 
45332 H12 H13)))))) H10)))))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda 
45333 (H1: (eq T (TSort m) (THead (Flat Appl) w v))).(let H2 \def (eq_ind T (TSort 
45334 m) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
45335 \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
45336 False])) I (THead (Flat Appl) w v) H1) in (False_ind (ex3_2 T T (\lambda (u: 
45337 T).(\lambda (t: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u t)) 
45338 (TSort (next g m))))) (\lambda (u: T).(\lambda (t: T).(ty3 g c0 v (THead 
45339 (Bind Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w u)))) H2))))) 
45340 (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda 
45341 (_: (getl n c0 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda (_: (ty3 g 
45342 d u t)).(\lambda (_: (((eq T u (THead (Flat Appl) w v)) \to (ex3_2 T T 
45343 (\lambda (u: T).(\lambda (t0: T).(pc3 d (THead (Flat Appl) w (THead (Bind 
45344 Abst) u t0)) t))) (\lambda (u: T).(\lambda (t: T).(ty3 g d v (THead (Bind 
45345 Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g d w u))))))).(\lambda 
45346 (H4: (eq T (TLRef n) (THead (Flat Appl) w v))).(let H5 \def (eq_ind T (TLRef 
45347 n) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
45348 \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow 
45349 False])) I (THead (Flat Appl) w v) H4) in (False_ind (ex3_2 T T (\lambda (u0: 
45350 T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) 
45351 (lift (S n) O t)))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g c0 v (THead 
45352 (Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0)))) 
45353 H5))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: 
45354 T).(\lambda (_: (getl n c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda 
45355 (_: (ty3 g d u t)).(\lambda (_: (((eq T u (THead (Flat Appl) w v)) \to (ex3_2 
45356 T T (\lambda (u: T).(\lambda (t0: T).(pc3 d (THead (Flat Appl) w (THead (Bind 
45357 Abst) u t0)) t))) (\lambda (u: T).(\lambda (t: T).(ty3 g d v (THead (Bind 
45358 Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g d w u))))))).(\lambda 
45359 (H4: (eq T (TLRef n) (THead (Flat Appl) w v))).(let H5 \def (eq_ind T (TLRef 
45360 n) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with [(TSort _) 
45361 \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow 
45362 False])) I (THead (Flat Appl) w v) H4) in (False_ind (ex3_2 T T (\lambda (u0: 
45363 T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) 
45364 (lift (S n) O u)))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g c0 v (THead 
45365 (Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0)))) 
45366 H5))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (t: T).(\lambda (_: 
45367 (ty3 g c0 u t)).(\lambda (_: (((eq T u (THead (Flat Appl) w v)) \to (ex3_2 T 
45368 T (\lambda (u: T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind 
45369 Abst) u t0)) t))) (\lambda (u: T).(\lambda (t: T).(ty3 g c0 v (THead (Bind 
45370 Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w u))))))).(\lambda 
45371 (b: B).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (ty3 g (CHead c0 (Bind 
45372 b) u) t1 t2)).(\lambda (_: (((eq T t1 (THead (Flat Appl) w v)) \to (ex3_2 T T 
45373 (\lambda (u0: T).(\lambda (t: T).(pc3 (CHead c0 (Bind b) u) (THead (Flat 
45374 Appl) w (THead (Bind Abst) u0 t)) t2))) (\lambda (u0: T).(\lambda (t: T).(ty3 
45375 g (CHead c0 (Bind b) u) v (THead (Bind Abst) u0 t)))) (\lambda (u0: 
45376 T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) w u0))))))).(\lambda (t0: 
45377 T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t2 t0)).(\lambda (_: (((eq T t2 
45378 (THead (Flat Appl) w v)) \to (ex3_2 T T (\lambda (u0: T).(\lambda (t: T).(pc3 
45379 (CHead c0 (Bind b) u) (THead (Flat Appl) w (THead (Bind Abst) u0 t)) t0))) 
45380 (\lambda (u0: T).(\lambda (t: T).(ty3 g (CHead c0 (Bind b) u) v (THead (Bind 
45381 Abst) u0 t)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) 
45382 w u0))))))).(\lambda (H7: (eq T (THead (Bind b) u t1) (THead (Flat Appl) w 
45383 v))).(let H8 \def (eq_ind T (THead (Bind b) u t1) (\lambda (ee: T).(match ee 
45384 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
45385 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
45386 K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I 
45387 (THead (Flat Appl) w v) H7) in (False_ind (ex3_2 T T (\lambda (u0: 
45388 T).(\lambda (t3: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t3)) 
45389 (THead (Bind b) u t2)))) (\lambda (u0: T).(\lambda (t3: T).(ty3 g c0 v (THead 
45390 (Bind Abst) u0 t3)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0)))) 
45391 H8)))))))))))))))) (\lambda (c0: C).(\lambda (w0: T).(\lambda (u: T).(\lambda 
45392 (H1: (ty3 g c0 w0 u)).(\lambda (H2: (((eq T w0 (THead (Flat Appl) w v)) \to 
45393 (ex3_2 T T (\lambda (u0: T).(\lambda (t: T).(pc3 c0 (THead (Flat Appl) w 
45394 (THead (Bind Abst) u0 t)) u))) (\lambda (u: T).(\lambda (t: T).(ty3 g c0 v 
45395 (THead (Bind Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w 
45396 u))))))).(\lambda (v0: T).(\lambda (t: T).(\lambda (H3: (ty3 g c0 v0 (THead 
45397 (Bind Abst) u t))).(\lambda (H4: (((eq T v0 (THead (Flat Appl) w v)) \to 
45398 (ex3_2 T T (\lambda (u0: T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w 
45399 (THead (Bind Abst) u0 t0)) (THead (Bind Abst) u t)))) (\lambda (u: 
45400 T).(\lambda (t: T).(ty3 g c0 v (THead (Bind Abst) u t)))) (\lambda (u: 
45401 T).(\lambda (_: T).(ty3 g c0 w u))))))).(\lambda (H5: (eq T (THead (Flat 
45402 Appl) w0 v0) (THead (Flat Appl) w v))).(let H6 \def (f_equal T T (\lambda (e: 
45403 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow w0 | (TLRef 
45404 _) \Rightarrow w0 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) w0 v0) 
45405 (THead (Flat Appl) w v) H5) in ((let H7 \def (f_equal T T (\lambda (e: 
45406 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow v0 | (TLRef 
45407 _) \Rightarrow v0 | (THead _ _ t) \Rightarrow t])) (THead (Flat Appl) w0 v0) 
45408 (THead (Flat Appl) w v) H5) in (\lambda (H8: (eq T w0 w)).(let H9 \def 
45409 (eq_ind T v0 (\lambda (t0: T).((eq T t0 (THead (Flat Appl) w v)) \to (ex3_2 T 
45410 T (\lambda (u0: T).(\lambda (t1: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind 
45411 Abst) u0 t1)) (THead (Bind Abst) u t)))) (\lambda (u: T).(\lambda (t: T).(ty3 
45412 g c0 v (THead (Bind Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w 
45413 u)))))) H4 v H7) in (let H10 \def (eq_ind T v0 (\lambda (t0: T).(ty3 g c0 t0 
45414 (THead (Bind Abst) u t))) H3 v H7) in (let H11 \def (eq_ind T w0 (\lambda (t: 
45415 T).((eq T t (THead (Flat Appl) w v)) \to (ex3_2 T T (\lambda (u0: T).(\lambda 
45416 (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) u))) (\lambda 
45417 (u: T).(\lambda (t0: T).(ty3 g c0 v (THead (Bind Abst) u t0)))) (\lambda (u: 
45418 T).(\lambda (_: T).(ty3 g c0 w u)))))) H2 w H8) in (let H12 \def (eq_ind T w0 
45419 (\lambda (t: T).(ty3 g c0 t u)) H1 w H8) in (eq_ind_r T w (\lambda (t0: 
45420 T).(ex3_2 T T (\lambda (u0: T).(\lambda (t1: T).(pc3 c0 (THead (Flat Appl) w 
45421 (THead (Bind Abst) u0 t1)) (THead (Flat Appl) t0 (THead (Bind Abst) u t))))) 
45422 (\lambda (u0: T).(\lambda (t1: T).(ty3 g c0 v (THead (Bind Abst) u0 t1)))) 
45423 (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0))))) (ex3_2_intro T T 
45424 (\lambda (u0: T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind 
45425 Abst) u0 t0)) (THead (Flat Appl) w (THead (Bind Abst) u t))))) (\lambda (u0: 
45426 T).(\lambda (t0: T).(ty3 g c0 v (THead (Bind Abst) u0 t0)))) (\lambda (u0: 
45427 T).(\lambda (_: T).(ty3 g c0 w u0))) u t (pc3_refl c0 (THead (Flat Appl) w 
45428 (THead (Bind Abst) u t))) H10 H12) w0 H8))))))) H6)))))))))))) (\lambda (c0: 
45429 C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (ty3 g c0 t1 t2)).(\lambda 
45430 (_: (((eq T t1 (THead (Flat Appl) w v)) \to (ex3_2 T T (\lambda (u: 
45431 T).(\lambda (t: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u t)) 
45432 t2))) (\lambda (u: T).(\lambda (t: T).(ty3 g c0 v (THead (Bind Abst) u t)))) 
45433 (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w u))))))).(\lambda (t0: 
45434 T).(\lambda (_: (ty3 g c0 t2 t0)).(\lambda (_: (((eq T t2 (THead (Flat Appl) 
45435 w v)) \to (ex3_2 T T (\lambda (u: T).(\lambda (t: T).(pc3 c0 (THead (Flat 
45436 Appl) w (THead (Bind Abst) u t)) t0))) (\lambda (u: T).(\lambda (t: T).(ty3 g 
45437 c0 v (THead (Bind Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w 
45438 u))))))).(\lambda (H5: (eq T (THead (Flat Cast) t2 t1) (THead (Flat Appl) w 
45439 v))).(let H6 \def (eq_ind T (THead (Flat Cast) t2 t1) (\lambda (ee: T).(match 
45440 ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
45441 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
45442 K).Prop) with [(Bind _) \Rightarrow False | (Flat f) \Rightarrow (match f 
45443 return (\lambda (_: F).Prop) with [Appl \Rightarrow False | Cast \Rightarrow 
45444 True])])])) I (THead (Flat Appl) w v) H5) in (False_ind (ex3_2 T T (\lambda 
45445 (u: T).(\lambda (t: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u t)) 
45446 t2))) (\lambda (u: T).(\lambda (t: T).(ty3 g c0 v (THead (Bind Abst) u t)))) 
45447 (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w u)))) H6))))))))))) c y x H0))) 
45448 H)))))).
45449
45450 theorem ty3_gen_cast:
45451  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).(\forall 
45452 (x: T).((ty3 g c (THead (Flat Cast) t2 t1) x) \to (land (pc3 c t2 x) (ty3 g c 
45453 t1 t2)))))))
45454 \def
45455  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
45456 (x: T).(\lambda (H: (ty3 g c (THead (Flat Cast) t2 t1) x)).(insert_eq T 
45457 (THead (Flat Cast) t2 t1) (\lambda (t: T).(ty3 g c t x)) (land (pc3 c t2 x) 
45458 (ty3 g c t1 t2)) (\lambda (y: T).(\lambda (H0: (ty3 g c y x)).(ty3_ind g 
45459 (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).((eq T t (THead (Flat Cast) 
45460 t2 t1)) \to (land (pc3 c0 t2 t0) (ty3 g c0 t1 t2)))))) (\lambda (c0: 
45461 C).(\lambda (t0: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t0 t)).(\lambda 
45462 (_: (((eq T t0 (THead (Flat Cast) t2 t1)) \to (land (pc3 c0 t2 t) (ty3 g c0 
45463 t1 t2))))).(\lambda (u: T).(\lambda (t3: T).(\lambda (H3: (ty3 g c0 u 
45464 t3)).(\lambda (H4: (((eq T u (THead (Flat Cast) t2 t1)) \to (land (pc3 c0 t2 
45465 t3) (ty3 g c0 t1 t2))))).(\lambda (H5: (pc3 c0 t3 t0)).(\lambda (H6: (eq T u 
45466 (THead (Flat Cast) t2 t1))).(let H7 \def (f_equal T T (\lambda (e: T).e) u 
45467 (THead (Flat Cast) t2 t1) H6) in (let H8 \def (eq_ind T u (\lambda (t: 
45468 T).((eq T t (THead (Flat Cast) t2 t1)) \to (land (pc3 c0 t2 t3) (ty3 g c0 t1 
45469 t2)))) H4 (THead (Flat Cast) t2 t1) H7) in (let H9 \def (eq_ind T u (\lambda 
45470 (t: T).(ty3 g c0 t t3)) H3 (THead (Flat Cast) t2 t1) H7) in (let H10 \def (H8 
45471 (refl_equal T (THead (Flat Cast) t2 t1))) in (and_ind (pc3 c0 t2 t3) (ty3 g 
45472 c0 t1 t2) (land (pc3 c0 t2 t0) (ty3 g c0 t1 t2)) (\lambda (H11: (pc3 c0 t2 
45473 t3)).(\lambda (H12: (ty3 g c0 t1 t2)).(conj (pc3 c0 t2 t0) (ty3 g c0 t1 t2) 
45474 (pc3_t t3 c0 t2 H11 t0 H5) H12))) H10)))))))))))))))) (\lambda (c0: 
45475 C).(\lambda (m: nat).(\lambda (H1: (eq T (TSort m) (THead (Flat Cast) t2 
45476 t1))).(let H2 \def (eq_ind T (TSort m) (\lambda (ee: T).(match ee return 
45477 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) 
45478 \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (THead (Flat Cast) 
45479 t2 t1) H1) in (False_ind (land (pc3 c0 t2 (TSort (next g m))) (ty3 g c0 t1 
45480 t2)) H2))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: 
45481 T).(\lambda (_: (getl n c0 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda 
45482 (_: (ty3 g d u t)).(\lambda (_: (((eq T u (THead (Flat Cast) t2 t1)) \to 
45483 (land (pc3 d t2 t) (ty3 g d t1 t2))))).(\lambda (H4: (eq T (TLRef n) (THead 
45484 (Flat Cast) t2 t1))).(let H5 \def (eq_ind T (TLRef n) (\lambda (ee: T).(match 
45485 ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
45486 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead (Flat Cast) t2 
45487 t1) H4) in (False_ind (land (pc3 c0 t2 (lift (S n) O t)) (ty3 g c0 t1 t2)) 
45488 H5))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: 
45489 T).(\lambda (_: (getl n c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda 
45490 (_: (ty3 g d u t)).(\lambda (_: (((eq T u (THead (Flat Cast) t2 t1)) \to 
45491 (land (pc3 d t2 t) (ty3 g d t1 t2))))).(\lambda (H4: (eq T (TLRef n) (THead 
45492 (Flat Cast) t2 t1))).(let H5 \def (eq_ind T (TLRef n) (\lambda (ee: T).(match 
45493 ee return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
45494 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead (Flat Cast) t2 
45495 t1) H4) in (False_ind (land (pc3 c0 t2 (lift (S n) O u)) (ty3 g c0 t1 t2)) 
45496 H5))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (t: T).(\lambda (_: 
45497 (ty3 g c0 u t)).(\lambda (_: (((eq T u (THead (Flat Cast) t2 t1)) \to (land 
45498 (pc3 c0 t2 t) (ty3 g c0 t1 t2))))).(\lambda (b: B).(\lambda (t0: T).(\lambda 
45499 (t3: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t0 t3)).(\lambda (_: (((eq 
45500 T t0 (THead (Flat Cast) t2 t1)) \to (land (pc3 (CHead c0 (Bind b) u) t2 t3) 
45501 (ty3 g (CHead c0 (Bind b) u) t1 t2))))).(\lambda (t4: T).(\lambda (_: (ty3 g 
45502 (CHead c0 (Bind b) u) t3 t4)).(\lambda (_: (((eq T t3 (THead (Flat Cast) t2 
45503 t1)) \to (land (pc3 (CHead c0 (Bind b) u) t2 t4) (ty3 g (CHead c0 (Bind b) u) 
45504 t1 t2))))).(\lambda (H7: (eq T (THead (Bind b) u t0) (THead (Flat Cast) t2 
45505 t1))).(let H8 \def (eq_ind T (THead (Bind b) u t0) (\lambda (ee: T).(match ee 
45506 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
45507 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
45508 K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I 
45509 (THead (Flat Cast) t2 t1) H7) in (False_ind (land (pc3 c0 t2 (THead (Bind b) 
45510 u t3)) (ty3 g c0 t1 t2)) H8)))))))))))))))) (\lambda (c0: C).(\lambda (w: 
45511 T).(\lambda (u: T).(\lambda (_: (ty3 g c0 w u)).(\lambda (_: (((eq T w (THead 
45512 (Flat Cast) t2 t1)) \to (land (pc3 c0 t2 u) (ty3 g c0 t1 t2))))).(\lambda (v: 
45513 T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead (Bind Abst) u 
45514 t))).(\lambda (_: (((eq T v (THead (Flat Cast) t2 t1)) \to (land (pc3 c0 t2 
45515 (THead (Bind Abst) u t)) (ty3 g c0 t1 t2))))).(\lambda (H5: (eq T (THead 
45516 (Flat Appl) w v) (THead (Flat Cast) t2 t1))).(let H6 \def (eq_ind T (THead 
45517 (Flat Appl) w v) (\lambda (ee: T).(match ee return (\lambda (_: T).Prop) with 
45518 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
45519 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
45520 False | (Flat f) \Rightarrow (match f return (\lambda (_: F).Prop) with [Appl 
45521 \Rightarrow True | Cast \Rightarrow False])])])) I (THead (Flat Cast) t2 t1) 
45522 H5) in (False_ind (land (pc3 c0 t2 (THead (Flat Appl) w (THead (Bind Abst) u 
45523 t))) (ty3 g c0 t1 t2)) H6)))))))))))) (\lambda (c0: C).(\lambda (t0: 
45524 T).(\lambda (t3: T).(\lambda (H1: (ty3 g c0 t0 t3)).(\lambda (H2: (((eq T t0 
45525 (THead (Flat Cast) t2 t1)) \to (land (pc3 c0 t2 t3) (ty3 g c0 t1 
45526 t2))))).(\lambda (t4: T).(\lambda (H3: (ty3 g c0 t3 t4)).(\lambda (H4: (((eq 
45527 T t3 (THead (Flat Cast) t2 t1)) \to (land (pc3 c0 t2 t4) (ty3 g c0 t1 
45528 t2))))).(\lambda (H5: (eq T (THead (Flat Cast) t3 t0) (THead (Flat Cast) t2 
45529 t1))).(let H6 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
45530 T).T) with [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ t 
45531 _) \Rightarrow t])) (THead (Flat Cast) t3 t0) (THead (Flat Cast) t2 t1) H5) 
45532 in ((let H7 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
45533 T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ 
45534 t) \Rightarrow t])) (THead (Flat Cast) t3 t0) (THead (Flat Cast) t2 t1) H5) 
45535 in (\lambda (H8: (eq T t3 t2)).(let H9 \def (eq_ind T t3 (\lambda (t: T).((eq 
45536 T t (THead (Flat Cast) t2 t1)) \to (land (pc3 c0 t2 t4) (ty3 g c0 t1 t2)))) 
45537 H4 t2 H8) in (let H10 \def (eq_ind T t3 (\lambda (t: T).(ty3 g c0 t t4)) H3 
45538 t2 H8) in (let H11 \def (eq_ind T t3 (\lambda (t: T).((eq T t0 (THead (Flat 
45539 Cast) t2 t1)) \to (land (pc3 c0 t2 t) (ty3 g c0 t1 t2)))) H2 t2 H8) in (let 
45540 H12 \def (eq_ind T t3 (\lambda (t: T).(ty3 g c0 t0 t)) H1 t2 H8) in (eq_ind_r 
45541 T t2 (\lambda (t: T).(land (pc3 c0 t2 t) (ty3 g c0 t1 t2))) (let H13 \def 
45542 (eq_ind T t0 (\lambda (t: T).((eq T t (THead (Flat Cast) t2 t1)) \to (land 
45543 (pc3 c0 t2 t2) (ty3 g c0 t1 t2)))) H11 t1 H7) in (let H14 \def (eq_ind T t0 
45544 (\lambda (t: T).(ty3 g c0 t t2)) H12 t1 H7) in (conj (pc3 c0 t2 t2) (ty3 g c0 
45545 t1 t2) (pc3_refl c0 t2) H14))) t3 H8))))))) H6))))))))))) c y x H0))) H)))))).
45546
45547 theorem ty3_lift:
45548  \forall (g: G).(\forall (e: C).(\forall (t1: T).(\forall (t2: T).((ty3 g e 
45549 t1 t2) \to (\forall (c: C).(\forall (d: nat).(\forall (h: nat).((drop h d c 
45550 e) \to (ty3 g c (lift h d t1) (lift h d t2))))))))))
45551 \def
45552  \lambda (g: G).(\lambda (e: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
45553 (H: (ty3 g e t1 t2)).(ty3_ind g (\lambda (c: C).(\lambda (t: T).(\lambda (t0: 
45554 T).(\forall (c0: C).(\forall (d: nat).(\forall (h: nat).((drop h d c0 c) \to 
45555 (ty3 g c0 (lift h d t) (lift h d t0))))))))) (\lambda (c: C).(\lambda (t0: 
45556 T).(\lambda (t: T).(\lambda (_: (ty3 g c t0 t)).(\lambda (H1: ((\forall (c0: 
45557 C).(\forall (d: nat).(\forall (h: nat).((drop h d c0 c) \to (ty3 g c0 (lift h 
45558 d t0) (lift h d t)))))))).(\lambda (u: T).(\lambda (t3: T).(\lambda (_: (ty3 
45559 g c u t3)).(\lambda (H3: ((\forall (c0: C).(\forall (d: nat).(\forall (h: 
45560 nat).((drop h d c0 c) \to (ty3 g c0 (lift h d u) (lift h d 
45561 t3)))))))).(\lambda (H4: (pc3 c t3 t0)).(\lambda (c0: C).(\lambda (d: 
45562 nat).(\lambda (h: nat).(\lambda (H5: (drop h d c0 c)).(ty3_conv g c0 (lift h 
45563 d t0) (lift h d t) (H1 c0 d h H5) (lift h d u) (lift h d t3) (H3 c0 d h H5) 
45564 (pc3_lift c0 c h d H5 t3 t0 H4)))))))))))))))) (\lambda (c: C).(\lambda (m: 
45565 nat).(\lambda (c0: C).(\lambda (d: nat).(\lambda (h: nat).(\lambda (_: (drop 
45566 h d c0 c)).(eq_ind_r T (TSort m) (\lambda (t: T).(ty3 g c0 t (lift h d (TSort 
45567 (next g m))))) (eq_ind_r T (TSort (next g m)) (\lambda (t: T).(ty3 g c0 
45568 (TSort m) t)) (ty3_sort g c0 m) (lift h d (TSort (next g m))) (lift_sort 
45569 (next g m) h d)) (lift h d (TSort m)) (lift_sort m h d)))))))) (\lambda (n: 
45570 nat).(\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n c 
45571 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda (H1: (ty3 g d u 
45572 t)).(\lambda (H2: ((\forall (c: C).(\forall (d0: nat).(\forall (h: 
45573 nat).((drop h d0 c d) \to (ty3 g c (lift h d0 u) (lift h d0 
45574 t)))))))).(\lambda (c0: C).(\lambda (d0: nat).(\lambda (h: nat).(\lambda (H3: 
45575 (drop h d0 c0 c)).(lt_le_e n d0 (ty3 g c0 (lift h d0 (TLRef n)) (lift h d0 
45576 (lift (S n) O t))) (\lambda (H4: (lt n d0)).(let H5 \def (drop_getl_trans_le 
45577 n d0 (le_S_n n d0 (le_S (S n) d0 H4)) c0 c h H3 (CHead d (Bind Abbr) u) H0) 
45578 in (ex3_2_ind C C (\lambda (e0: C).(\lambda (_: C).(drop n O c0 e0))) 
45579 (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d0 n) e0 e1))) (\lambda (_: 
45580 C).(\lambda (e1: C).(clear e1 (CHead d (Bind Abbr) u)))) (ty3 g c0 (lift h d0 
45581 (TLRef n)) (lift h d0 (lift (S n) O t))) (\lambda (x0: C).(\lambda (x1: 
45582 C).(\lambda (H6: (drop n O c0 x0)).(\lambda (H7: (drop h (minus d0 n) x0 
45583 x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abbr) u))).(let H9 \def (eq_ind 
45584 nat (minus d0 n) (\lambda (n: nat).(drop h n x0 x1)) H7 (S (minus d0 (S n))) 
45585 (minus_x_Sy d0 n H4)) in (let H10 \def (drop_clear_S x1 x0 h (minus d0 (S n)) 
45586 H9 Abbr d u H8) in (ex2_ind C (\lambda (c1: C).(clear x0 (CHead c1 (Bind 
45587 Abbr) (lift h (minus d0 (S n)) u)))) (\lambda (c1: C).(drop h (minus d0 (S 
45588 n)) c1 d)) (ty3 g c0 (lift h d0 (TLRef n)) (lift h d0 (lift (S n) O t))) 
45589 (\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abbr) (lift h (minus 
45590 d0 (S n)) u)))).(\lambda (H12: (drop h (minus d0 (S n)) x d)).(eq_ind_r T 
45591 (TLRef n) (\lambda (t0: T).(ty3 g c0 t0 (lift h d0 (lift (S n) O t)))) 
45592 (eq_ind nat (plus (S n) (minus d0 (S n))) (\lambda (n0: nat).(ty3 g c0 (TLRef 
45593 n) (lift h n0 (lift (S n) O t)))) (eq_ind_r T (lift (S n) O (lift h (minus d0 
45594 (S n)) t)) (\lambda (t0: T).(ty3 g c0 (TLRef n) t0)) (eq_ind nat d0 (\lambda 
45595 (_: nat).(ty3 g c0 (TLRef n) (lift (S n) O (lift h (minus d0 (S n)) t)))) 
45596 (ty3_abbr g n c0 x (lift h (minus d0 (S n)) u) (getl_intro n c0 (CHead x 
45597 (Bind Abbr) (lift h (minus d0 (S n)) u)) x0 H6 H11) (lift h (minus d0 (S n)) 
45598 t) (H2 x (minus d0 (S n)) h H12)) (plus (S n) (minus d0 (S n))) 
45599 (le_plus_minus (S n) d0 H4)) (lift h (plus (S n) (minus d0 (S n))) (lift (S 
45600 n) O t)) (lift_d t h (S n) (minus d0 (S n)) O (le_O_n (minus d0 (S n))))) d0 
45601 (le_plus_minus_r (S n) d0 H4)) (lift h d0 (TLRef n)) (lift_lref_lt n h d0 
45602 H4))))) H10)))))))) H5))) (\lambda (H4: (le d0 n)).(eq_ind_r T (TLRef (plus n 
45603 h)) (\lambda (t0: T).(ty3 g c0 t0 (lift h d0 (lift (S n) O t)))) (eq_ind nat 
45604 (S n) (\lambda (_: nat).(ty3 g c0 (TLRef (plus n h)) (lift h d0 (lift (S n) O 
45605 t)))) (eq_ind_r T (lift (plus h (S n)) O t) (\lambda (t0: T).(ty3 g c0 (TLRef 
45606 (plus n h)) t0)) (eq_ind_r nat (plus (S n) h) (\lambda (n0: nat).(ty3 g c0 
45607 (TLRef (plus n h)) (lift n0 O t))) (ty3_abbr g (plus n h) c0 d u 
45608 (drop_getl_trans_ge n c0 c d0 h H3 (CHead d (Bind Abbr) u) H0 H4) t H1) (plus 
45609 h (S n)) (plus_comm h (S n))) (lift h d0 (lift (S n) O t)) (lift_free t (S n) 
45610 h O d0 (le_S d0 n H4) (le_O_n d0))) (plus n (S O)) (eq_ind_r nat (plus (S O) 
45611 n) (\lambda (n0: nat).(eq nat (S n) n0)) (refl_equal nat (plus (S O) n)) 
45612 (plus n (S O)) (plus_comm n (S O)))) (lift h d0 (TLRef n)) (lift_lref_ge n h 
45613 d0 H4)))))))))))))))) (\lambda (n: nat).(\lambda (c: C).(\lambda (d: 
45614 C).(\lambda (u: T).(\lambda (H0: (getl n c (CHead d (Bind Abst) u))).(\lambda 
45615 (t: T).(\lambda (H1: (ty3 g d u t)).(\lambda (H2: ((\forall (c: C).(\forall 
45616 (d0: nat).(\forall (h: nat).((drop h d0 c d) \to (ty3 g c (lift h d0 u) (lift 
45617 h d0 t)))))))).(\lambda (c0: C).(\lambda (d0: nat).(\lambda (h: nat).(\lambda 
45618 (H3: (drop h d0 c0 c)).(lt_le_e n d0 (ty3 g c0 (lift h d0 (TLRef n)) (lift h 
45619 d0 (lift (S n) O u))) (\lambda (H4: (lt n d0)).(let H5 \def 
45620 (drop_getl_trans_le n d0 (le_S_n n d0 (le_S (S n) d0 H4)) c0 c h H3 (CHead d 
45621 (Bind Abst) u) H0) in (ex3_2_ind C C (\lambda (e0: C).(\lambda (_: C).(drop n 
45622 O c0 e0))) (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d0 n) e0 e1))) 
45623 (\lambda (_: C).(\lambda (e1: C).(clear e1 (CHead d (Bind Abst) u)))) (ty3 g 
45624 c0 (lift h d0 (TLRef n)) (lift h d0 (lift (S n) O u))) (\lambda (x0: 
45625 C).(\lambda (x1: C).(\lambda (H6: (drop n O c0 x0)).(\lambda (H7: (drop h 
45626 (minus d0 n) x0 x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abst) u))).(let 
45627 H9 \def (eq_ind nat (minus d0 n) (\lambda (n: nat).(drop h n x0 x1)) H7 (S 
45628 (minus d0 (S n))) (minus_x_Sy d0 n H4)) in (let H10 \def (drop_clear_S x1 x0 
45629 h (minus d0 (S n)) H9 Abst d u H8) in (ex2_ind C (\lambda (c1: C).(clear x0 
45630 (CHead c1 (Bind Abst) (lift h (minus d0 (S n)) u)))) (\lambda (c1: C).(drop h 
45631 (minus d0 (S n)) c1 d)) (ty3 g c0 (lift h d0 (TLRef n)) (lift h d0 (lift (S 
45632 n) O u))) (\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abst) (lift 
45633 h (minus d0 (S n)) u)))).(\lambda (H12: (drop h (minus d0 (S n)) x 
45634 d)).(eq_ind_r T (TLRef n) (\lambda (t0: T).(ty3 g c0 t0 (lift h d0 (lift (S 
45635 n) O u)))) (eq_ind nat (plus (S n) (minus d0 (S n))) (\lambda (n0: nat).(ty3 
45636 g c0 (TLRef n) (lift h n0 (lift (S n) O u)))) (eq_ind_r T (lift (S n) O (lift 
45637 h (minus d0 (S n)) u)) (\lambda (t0: T).(ty3 g c0 (TLRef n) t0)) (eq_ind nat 
45638 d0 (\lambda (_: nat).(ty3 g c0 (TLRef n) (lift (S n) O (lift h (minus d0 (S 
45639 n)) u)))) (ty3_abst g n c0 x (lift h (minus d0 (S n)) u) (getl_intro n c0 
45640 (CHead x (Bind Abst) (lift h (minus d0 (S n)) u)) x0 H6 H11) (lift h (minus 
45641 d0 (S n)) t) (H2 x (minus d0 (S n)) h H12)) (plus (S n) (minus d0 (S n))) 
45642 (le_plus_minus (S n) d0 H4)) (lift h (plus (S n) (minus d0 (S n))) (lift (S 
45643 n) O u)) (lift_d u h (S n) (minus d0 (S n)) O (le_O_n (minus d0 (S n))))) d0 
45644 (le_plus_minus_r (S n) d0 H4)) (lift h d0 (TLRef n)) (lift_lref_lt n h d0 
45645 H4))))) H10)))))))) H5))) (\lambda (H4: (le d0 n)).(eq_ind_r T (TLRef (plus n 
45646 h)) (\lambda (t0: T).(ty3 g c0 t0 (lift h d0 (lift (S n) O u)))) (eq_ind nat 
45647 (S n) (\lambda (_: nat).(ty3 g c0 (TLRef (plus n h)) (lift h d0 (lift (S n) O 
45648 u)))) (eq_ind_r T (lift (plus h (S n)) O u) (\lambda (t0: T).(ty3 g c0 (TLRef 
45649 (plus n h)) t0)) (eq_ind_r nat (plus (S n) h) (\lambda (n0: nat).(ty3 g c0 
45650 (TLRef (plus n h)) (lift n0 O u))) (ty3_abst g (plus n h) c0 d u 
45651 (drop_getl_trans_ge n c0 c d0 h H3 (CHead d (Bind Abst) u) H0 H4) t H1) (plus 
45652 h (S n)) (plus_comm h (S n))) (lift h d0 (lift (S n) O u)) (lift_free u (S n) 
45653 h O d0 (le_S d0 n H4) (le_O_n d0))) (plus n (S O)) (eq_ind_r nat (plus (S O) 
45654 n) (\lambda (n0: nat).(eq nat (S n) n0)) (refl_equal nat (plus (S O) n)) 
45655 (plus n (S O)) (plus_comm n (S O)))) (lift h d0 (TLRef n)) (lift_lref_ge n h 
45656 d0 H4)))))))))))))))) (\lambda (c: C).(\lambda (u: T).(\lambda (t: 
45657 T).(\lambda (_: (ty3 g c u t)).(\lambda (H1: ((\forall (c0: C).(\forall (d: 
45658 nat).(\forall (h: nat).((drop h d c0 c) \to (ty3 g c0 (lift h d u) (lift h d 
45659 t)))))))).(\lambda (b: B).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (ty3 
45660 g (CHead c (Bind b) u) t0 t3)).(\lambda (H3: ((\forall (c0: C).(\forall (d: 
45661 nat).(\forall (h: nat).((drop h d c0 (CHead c (Bind b) u)) \to (ty3 g c0 
45662 (lift h d t0) (lift h d t3)))))))).(\lambda (t4: T).(\lambda (_: (ty3 g 
45663 (CHead c (Bind b) u) t3 t4)).(\lambda (H5: ((\forall (c0: C).(\forall (d: 
45664 nat).(\forall (h: nat).((drop h d c0 (CHead c (Bind b) u)) \to (ty3 g c0 
45665 (lift h d t3) (lift h d t4)))))))).(\lambda (c0: C).(\lambda (d: 
45666 nat).(\lambda (h: nat).(\lambda (H6: (drop h d c0 c)).(eq_ind_r T (THead 
45667 (Bind b) (lift h d u) (lift h (s (Bind b) d) t0)) (\lambda (t5: T).(ty3 g c0 
45668 t5 (lift h d (THead (Bind b) u t3)))) (eq_ind_r T (THead (Bind b) (lift h d 
45669 u) (lift h (s (Bind b) d) t3)) (\lambda (t5: T).(ty3 g c0 (THead (Bind b) 
45670 (lift h d u) (lift h (s (Bind b) d) t0)) t5)) (ty3_bind g c0 (lift h d u) 
45671 (lift h d t) (H1 c0 d h H6) b (lift h (S d) t0) (lift h (S d) t3) (H3 (CHead 
45672 c0 (Bind b) (lift h d u)) (S d) h (drop_skip_bind h d c0 c H6 b u)) (lift h 
45673 (S d) t4) (H5 (CHead c0 (Bind b) (lift h d u)) (S d) h (drop_skip_bind h d c0 
45674 c H6 b u))) (lift h d (THead (Bind b) u t3)) (lift_head (Bind b) u t3 h d)) 
45675 (lift h d (THead (Bind b) u t0)) (lift_head (Bind b) u t0 h 
45676 d))))))))))))))))))) (\lambda (c: C).(\lambda (w: T).(\lambda (u: T).(\lambda 
45677 (_: (ty3 g c w u)).(\lambda (H1: ((\forall (c0: C).(\forall (d: nat).(\forall 
45678 (h: nat).((drop h d c0 c) \to (ty3 g c0 (lift h d w) (lift h d 
45679 u)))))))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c v (THead 
45680 (Bind Abst) u t))).(\lambda (H3: ((\forall (c0: C).(\forall (d: nat).(\forall 
45681 (h: nat).((drop h d c0 c) \to (ty3 g c0 (lift h d v) (lift h d (THead (Bind 
45682 Abst) u t))))))))).(\lambda (c0: C).(\lambda (d: nat).(\lambda (h: 
45683 nat).(\lambda (H4: (drop h d c0 c)).(eq_ind_r T (THead (Flat Appl) (lift h d 
45684 w) (lift h (s (Flat Appl) d) v)) (\lambda (t0: T).(ty3 g c0 t0 (lift h d 
45685 (THead (Flat Appl) w (THead (Bind Abst) u t))))) (eq_ind_r T (THead (Flat 
45686 Appl) (lift h d w) (lift h (s (Flat Appl) d) (THead (Bind Abst) u t))) 
45687 (\lambda (t0: T).(ty3 g c0 (THead (Flat Appl) (lift h d w) (lift h (s (Flat 
45688 Appl) d) v)) t0)) (eq_ind_r T (THead (Bind Abst) (lift h (s (Flat Appl) d) u) 
45689 (lift h (s (Bind Abst) (s (Flat Appl) d)) t)) (\lambda (t0: T).(ty3 g c0 
45690 (THead (Flat Appl) (lift h d w) (lift h (s (Flat Appl) d) v)) (THead (Flat 
45691 Appl) (lift h d w) t0))) (ty3_appl g c0 (lift h d w) (lift h d u) (H1 c0 d h 
45692 H4) (lift h d v) (lift h (S d) t) (eq_ind T (lift h d (THead (Bind Abst) u 
45693 t)) (\lambda (t0: T).(ty3 g c0 (lift h d v) t0)) (H3 c0 d h H4) (THead (Bind 
45694 Abst) (lift h d u) (lift h (S d) t)) (lift_bind Abst u t h d))) (lift h (s 
45695 (Flat Appl) d) (THead (Bind Abst) u t)) (lift_head (Bind Abst) u t h (s (Flat 
45696 Appl) d))) (lift h d (THead (Flat Appl) w (THead (Bind Abst) u t))) 
45697 (lift_head (Flat Appl) w (THead (Bind Abst) u t) h d)) (lift h d (THead (Flat 
45698 Appl) w v)) (lift_head (Flat Appl) w v h d))))))))))))))) (\lambda (c: 
45699 C).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (ty3 g c t0 t3)).(\lambda 
45700 (H1: ((\forall (c0: C).(\forall (d: nat).(\forall (h: nat).((drop h d c0 c) 
45701 \to (ty3 g c0 (lift h d t0) (lift h d t3)))))))).(\lambda (t4: T).(\lambda 
45702 (_: (ty3 g c t3 t4)).(\lambda (H3: ((\forall (c0: C).(\forall (d: 
45703 nat).(\forall (h: nat).((drop h d c0 c) \to (ty3 g c0 (lift h d t3) (lift h d 
45704 t4)))))))).(\lambda (c0: C).(\lambda (d: nat).(\lambda (h: nat).(\lambda (H4: 
45705 (drop h d c0 c)).(eq_ind_r T (THead (Flat Cast) (lift h d t3) (lift h (s 
45706 (Flat Cast) d) t0)) (\lambda (t: T).(ty3 g c0 t (lift h d t3))) (ty3_cast g 
45707 c0 (lift h (s (Flat Cast) d) t0) (lift h d t3) (H1 c0 d h H4) (lift h d t4) 
45708 (H3 c0 d h H4)) (lift h d (THead (Flat Cast) t3 t0)) (lift_head (Flat Cast) 
45709 t3 t0 h d)))))))))))))) e t1 t2 H))))).
45710
45711 theorem ty3_correct:
45712  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c 
45713 t1 t2) \to (ex T (\lambda (t: T).(ty3 g c t2 t)))))))
45714 \def
45715  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
45716 (H: (ty3 g c t1 t2)).(ty3_ind g (\lambda (c0: C).(\lambda (_: T).(\lambda 
45717 (t0: T).(ex T (\lambda (t3: T).(ty3 g c0 t0 t3)))))) (\lambda (c0: 
45718 C).(\lambda (t0: T).(\lambda (t: T).(\lambda (H0: (ty3 g c0 t0 t)).(\lambda 
45719 (_: (ex T (\lambda (t0: T).(ty3 g c0 t t0)))).(\lambda (u: T).(\lambda (t3: 
45720 T).(\lambda (_: (ty3 g c0 u t3)).(\lambda (_: (ex T (\lambda (t: T).(ty3 g c0 
45721 t3 t)))).(\lambda (_: (pc3 c0 t3 t0)).(ex_intro T (\lambda (t4: T).(ty3 g c0 
45722 t0 t4)) t H0))))))))))) (\lambda (c0: C).(\lambda (m: nat).(ex_intro T 
45723 (\lambda (t: T).(ty3 g c0 (TSort (next g m)) t)) (TSort (next g (next g m))) 
45724 (ty3_sort g c0 (next g m))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: 
45725 C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abbr) 
45726 u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: (ex T (\lambda 
45727 (t0: T).(ty3 g d t t0)))).(let H3 \def H2 in (ex_ind T (\lambda (t0: T).(ty3 
45728 g d t t0)) (ex T (\lambda (t0: T).(ty3 g c0 (lift (S n) O t) t0))) (\lambda 
45729 (x: T).(\lambda (H4: (ty3 g d t x)).(ex_intro T (\lambda (t0: T).(ty3 g c0 
45730 (lift (S n) O t) t0)) (lift (S n) O x) (ty3_lift g d t x H4 c0 O (S n) 
45731 (getl_drop Abbr c0 d u n H0))))) H3)))))))))) (\lambda (n: nat).(\lambda (c0: 
45732 C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind 
45733 Abst) u))).(\lambda (t: T).(\lambda (H1: (ty3 g d u t)).(\lambda (_: (ex T 
45734 (\lambda (t0: T).(ty3 g d t t0)))).(ex_intro T (\lambda (t0: T).(ty3 g c0 
45735 (lift (S n) O u) t0)) (lift (S n) O t) (ty3_lift g d u t H1 c0 O (S n) 
45736 (getl_drop Abst c0 d u n H0))))))))))) (\lambda (c0: C).(\lambda (u: 
45737 T).(\lambda (t: T).(\lambda (H0: (ty3 g c0 u t)).(\lambda (_: (ex T (\lambda 
45738 (t0: T).(ty3 g c0 t t0)))).(\lambda (b: B).(\lambda (t0: T).(\lambda (t3: 
45739 T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t0 t3)).(\lambda (_: (ex T 
45740 (\lambda (t: T).(ty3 g (CHead c0 (Bind b) u) t3 t)))).(\lambda (t4: 
45741 T).(\lambda (H4: (ty3 g (CHead c0 (Bind b) u) t3 t4)).(\lambda (H5: (ex T 
45742 (\lambda (t: T).(ty3 g (CHead c0 (Bind b) u) t4 t)))).(let H6 \def H5 in 
45743 (ex_ind T (\lambda (t5: T).(ty3 g (CHead c0 (Bind b) u) t4 t5)) (ex T 
45744 (\lambda (t5: T).(ty3 g c0 (THead (Bind b) u t3) t5))) (\lambda (x: 
45745 T).(\lambda (H7: (ty3 g (CHead c0 (Bind b) u) t4 x)).(ex_intro T (\lambda 
45746 (t5: T).(ty3 g c0 (THead (Bind b) u t3) t5)) (THead (Bind b) u t4) (ty3_bind 
45747 g c0 u t H0 b t3 t4 H4 x H7)))) H6))))))))))))))) (\lambda (c0: C).(\lambda 
45748 (w: T).(\lambda (u: T).(\lambda (H0: (ty3 g c0 w u)).(\lambda (H1: (ex T 
45749 (\lambda (t: T).(ty3 g c0 u t)))).(\lambda (v: T).(\lambda (t: T).(\lambda 
45750 (_: (ty3 g c0 v (THead (Bind Abst) u t))).(\lambda (H3: (ex T (\lambda (t0: 
45751 T).(ty3 g c0 (THead (Bind Abst) u t) t0)))).(let H4 \def H1 in (ex_ind T 
45752 (\lambda (t0: T).(ty3 g c0 u t0)) (ex T (\lambda (t0: T).(ty3 g c0 (THead 
45753 (Flat Appl) w (THead (Bind Abst) u t)) t0))) (\lambda (x: T).(\lambda (_: 
45754 (ty3 g c0 u x)).(let H6 \def H3 in (ex_ind T (\lambda (t0: T).(ty3 g c0 
45755 (THead (Bind Abst) u t) t0)) (ex T (\lambda (t0: T).(ty3 g c0 (THead (Flat 
45756 Appl) w (THead (Bind Abst) u t)) t0))) (\lambda (x0: T).(\lambda (H7: (ty3 g 
45757 c0 (THead (Bind Abst) u t) x0)).(ex4_3_ind T T T (\lambda (t3: T).(\lambda 
45758 (_: T).(\lambda (_: T).(pc3 c0 (THead (Bind Abst) u t3) x0)))) (\lambda (_: 
45759 T).(\lambda (t0: T).(\lambda (_: T).(ty3 g c0 u t0)))) (\lambda (t3: 
45760 T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind Abst) u) t t3)))) 
45761 (\lambda (t3: T).(\lambda (_: T).(\lambda (t4: T).(ty3 g (CHead c0 (Bind 
45762 Abst) u) t3 t4)))) (ex T (\lambda (t0: T).(ty3 g c0 (THead (Flat Appl) w 
45763 (THead (Bind Abst) u t)) t0))) (\lambda (x1: T).(\lambda (x2: T).(\lambda 
45764 (x3: T).(\lambda (_: (pc3 c0 (THead (Bind Abst) u x1) x0)).(\lambda (H9: (ty3 
45765 g c0 u x2)).(\lambda (H10: (ty3 g (CHead c0 (Bind Abst) u) t x1)).(\lambda 
45766 (H11: (ty3 g (CHead c0 (Bind Abst) u) x1 x3)).(ex_intro T (\lambda (t0: 
45767 T).(ty3 g c0 (THead (Flat Appl) w (THead (Bind Abst) u t)) t0)) (THead (Flat 
45768 Appl) w (THead (Bind Abst) u x1)) (ty3_appl g c0 w u H0 (THead (Bind Abst) u 
45769 t) x1 (ty3_bind g c0 u x2 H9 Abst t x1 H10 x3 H11)))))))))) (ty3_gen_bind g 
45770 Abst c0 u t x0 H7)))) H6)))) H4))))))))))) (\lambda (c0: C).(\lambda (t0: 
45771 T).(\lambda (t3: T).(\lambda (_: (ty3 g c0 t0 t3)).(\lambda (H1: (ex T 
45772 (\lambda (t: T).(ty3 g c0 t3 t)))).(\lambda (t4: T).(\lambda (_: (ty3 g c0 t3 
45773 t4)).(\lambda (_: (ex T (\lambda (t: T).(ty3 g c0 t4 t)))).H1)))))))) c t1 t2 
45774 H))))).
45775
45776 theorem ty3_unique:
45777  \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t1: T).((ty3 g c u 
45778 t1) \to (\forall (t2: T).((ty3 g c u t2) \to (pc3 c t1 t2)))))))
45779 \def
45780  \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (H: 
45781 (ty3 g c u t1)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: 
45782 T).(\forall (t2: T).((ty3 g c0 t t2) \to (pc3 c0 t0 t2)))))) (\lambda (c0: 
45783 C).(\lambda (t2: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t2 t)).(\lambda 
45784 (_: ((\forall (t3: T).((ty3 g c0 t2 t3) \to (pc3 c0 t t3))))).(\lambda (u0: 
45785 T).(\lambda (t0: T).(\lambda (_: (ty3 g c0 u0 t0)).(\lambda (H3: ((\forall 
45786 (t2: T).((ty3 g c0 u0 t2) \to (pc3 c0 t0 t2))))).(\lambda (H4: (pc3 c0 t0 
45787 t2)).(\lambda (t3: T).(\lambda (H5: (ty3 g c0 u0 t3)).(pc3_t t0 c0 t2 (pc3_s 
45788 c0 t2 t0 H4) t3 (H3 t3 H5)))))))))))))) (\lambda (c0: C).(\lambda (m: 
45789 nat).(\lambda (t2: T).(\lambda (H0: (ty3 g c0 (TSort m) t2)).(ty3_gen_sort g 
45790 c0 t2 m H0))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda 
45791 (u0: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abbr) u0))).(\lambda (t: 
45792 T).(\lambda (_: (ty3 g d u0 t)).(\lambda (H2: ((\forall (t2: T).((ty3 g d u0 
45793 t2) \to (pc3 d t t2))))).(\lambda (t2: T).(\lambda (H3: (ty3 g c0 (TLRef n) 
45794 t2)).(or_ind (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: 
45795 T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda 
45796 (_: T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: 
45797 T).(\lambda (t0: T).(ty3 g e u1 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda 
45798 (u1: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u1) t2)))) (\lambda (e: 
45799 C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u1))))) 
45800 (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0))))) (pc3 c0 
45801 (lift (S n) O t) t2) (\lambda (H4: (ex3_3 C T T (\lambda (_: C).(\lambda (_: 
45802 T).(\lambda (t: T).(pc3 c0 (lift (S n) O t) t2)))) (\lambda (e: C).(\lambda 
45803 (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: 
45804 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))).(ex3_3_ind C T T 
45805 (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) 
45806 t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e 
45807 (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g 
45808 e u1 t0)))) (pc3 c0 (lift (S n) O t) t2) (\lambda (x0: C).(\lambda (x1: 
45809 T).(\lambda (x2: T).(\lambda (H5: (pc3 c0 (lift (S n) O x2) t2)).(\lambda 
45810 (H6: (getl n c0 (CHead x0 (Bind Abbr) x1))).(\lambda (H7: (ty3 g x0 x1 
45811 x2)).(let H8 \def (eq_ind C (CHead d (Bind Abbr) u0) (\lambda (c: C).(getl n 
45812 c0 c)) H0 (CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d (Bind Abbr) u0) n 
45813 H0 (CHead x0 (Bind Abbr) x1) H6)) in (let H9 \def (f_equal C C (\lambda (e: 
45814 C).(match e return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead 
45815 c _ _) \Rightarrow c])) (CHead d (Bind Abbr) u0) (CHead x0 (Bind Abbr) x1) 
45816 (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in 
45817 ((let H10 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: 
45818 C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) \Rightarrow t])) (CHead 
45819 d (Bind Abbr) u0) (CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d (Bind 
45820 Abbr) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in (\lambda (H11: (eq C d 
45821 x0)).(let H12 \def (eq_ind_r T x1 (\lambda (t: T).(getl n c0 (CHead x0 (Bind 
45822 Abbr) t))) H8 u0 H10) in (let H13 \def (eq_ind_r T x1 (\lambda (t: T).(ty3 g 
45823 x0 t x2)) H7 u0 H10) in (let H14 \def (eq_ind_r C x0 (\lambda (c: C).(getl n 
45824 c0 (CHead c (Bind Abbr) u0))) H12 d H11) in (let H15 \def (eq_ind_r C x0 
45825 (\lambda (c: C).(ty3 g c u0 x2)) H13 d H11) in (pc3_t (lift (S n) O x2) c0 
45826 (lift (S n) O t) (pc3_lift c0 d (S n) O (getl_drop Abbr c0 d u0 n H14) t x2 
45827 (H2 x2 H15)) t2 H5))))))) H9))))))))) H4)) (\lambda (H4: (ex3_3 C T T 
45828 (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u) 
45829 t2)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e 
45830 (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
45831 t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u1: T).(\lambda (_: 
45832 T).(pc3 c0 (lift (S n) O u1) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda 
45833 (_: T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: 
45834 T).(\lambda (t0: T).(ty3 g e u1 t0)))) (pc3 c0 (lift (S n) O t) t2) (\lambda 
45835 (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 c0 (lift (S n) O 
45836 x1) t2)).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abst) x1))).(\lambda (_: 
45837 (ty3 g x0 x1 x2)).(let H8 \def (eq_ind C (CHead d (Bind Abbr) u0) (\lambda 
45838 (c: C).(getl n c0 c)) H0 (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d 
45839 (Bind Abbr) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in (let H9 \def (eq_ind C 
45840 (CHead d (Bind Abbr) u0) (\lambda (ee: C).(match ee return (\lambda (_: 
45841 C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match 
45842 k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b return 
45843 (\lambda (_: B).Prop) with [Abbr \Rightarrow True | Abst \Rightarrow False | 
45844 Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead x0 (Bind 
45845 Abst) x1) (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead x0 (Bind Abst) 
45846 x1) H6)) in (False_ind (pc3 c0 (lift (S n) O t) t2) H9))))))))) H4)) 
45847 (ty3_gen_lref g c0 t2 n H3)))))))))))) (\lambda (n: nat).(\lambda (c0: 
45848 C).(\lambda (d: C).(\lambda (u0: T).(\lambda (H0: (getl n c0 (CHead d (Bind 
45849 Abst) u0))).(\lambda (t: T).(\lambda (_: (ty3 g d u0 t)).(\lambda (_: 
45850 ((\forall (t2: T).((ty3 g d u0 t2) \to (pc3 d t t2))))).(\lambda (t2: 
45851 T).(\lambda (H3: (ty3 g c0 (TLRef n) t2)).(or_ind (ex3_3 C T T (\lambda (_: 
45852 C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda 
45853 (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) 
45854 u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0))))) 
45855 (ex3_3 C T T (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(pc3 c0 (lift 
45856 (S n) O u1) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n 
45857 c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda 
45858 (t0: T).(ty3 g e u1 t0))))) (pc3 c0 (lift (S n) O u0) t2) (\lambda (H4: 
45859 (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S 
45860 n) O t) t2)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 
45861 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
45862 T).(ty3 g e u t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (_: 
45863 T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda (e: C).(\lambda 
45864 (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: 
45865 C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0)))) (pc3 c0 (lift (S n) O 
45866 u0) t2) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 
45867 c0 (lift (S n) O x2) t2)).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abbr) 
45868 x1))).(\lambda (_: (ty3 g x0 x1 x2)).(let H8 \def (eq_ind C (CHead d (Bind 
45869 Abst) u0) (\lambda (c: C).(getl n c0 c)) H0 (CHead x0 (Bind Abbr) x1) 
45870 (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in 
45871 (let H9 \def (eq_ind C (CHead d (Bind Abst) u0) (\lambda (ee: C).(match ee 
45872 return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k 
45873 _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind b) 
45874 \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow 
45875 False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat _) 
45876 \Rightarrow False])])) I (CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d 
45877 (Bind Abst) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in (False_ind (pc3 c0 
45878 (lift (S n) O u0) t2) H9))))))))) H4)) (\lambda (H4: (ex3_3 C T T (\lambda 
45879 (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u) t2)))) 
45880 (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind 
45881 Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
45882 t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u1: T).(\lambda (_: 
45883 T).(pc3 c0 (lift (S n) O u1) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda 
45884 (_: T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: 
45885 T).(\lambda (t0: T).(ty3 g e u1 t0)))) (pc3 c0 (lift (S n) O u0) t2) (\lambda 
45886 (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H5: (pc3 c0 (lift (S n) O 
45887 x1) t2)).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abst) x1))).(\lambda (H7: 
45888 (ty3 g x0 x1 x2)).(let H8 \def (eq_ind C (CHead d (Bind Abst) u0) (\lambda 
45889 (c: C).(getl n c0 c)) H0 (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d 
45890 (Bind Abst) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in (let H9 \def (f_equal 
45891 C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
45892 \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind Abst) u0) 
45893 (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead 
45894 x0 (Bind Abst) x1) H6)) in ((let H10 \def (f_equal C T (\lambda (e: C).(match 
45895 e return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) 
45896 \Rightarrow t])) (CHead d (Bind Abst) u0) (CHead x0 (Bind Abst) x1) 
45897 (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in 
45898 (\lambda (H11: (eq C d x0)).(let H12 \def (eq_ind_r T x1 (\lambda (t: 
45899 T).(getl n c0 (CHead x0 (Bind Abst) t))) H8 u0 H10) in (let H13 \def 
45900 (eq_ind_r T x1 (\lambda (t: T).(ty3 g x0 t x2)) H7 u0 H10) in (let H14 \def 
45901 (eq_ind_r T x1 (\lambda (t: T).(pc3 c0 (lift (S n) O t) t2)) H5 u0 H10) in 
45902 (let H15 \def (eq_ind_r C x0 (\lambda (c: C).(getl n c0 (CHead c (Bind Abst) 
45903 u0))) H12 d H11) in (let H16 \def (eq_ind_r C x0 (\lambda (c: C).(ty3 g c u0 
45904 x2)) H13 d H11) in H14))))))) H9))))))))) H4)) (ty3_gen_lref g c0 t2 n 
45905 H3)))))))))))) (\lambda (c0: C).(\lambda (u0: T).(\lambda (t: T).(\lambda (_: 
45906 (ty3 g c0 u0 t)).(\lambda (_: ((\forall (t2: T).((ty3 g c0 u0 t2) \to (pc3 c0 
45907 t t2))))).(\lambda (b: B).(\lambda (t0: T).(\lambda (t2: T).(\lambda (_: (ty3 
45908 g (CHead c0 (Bind b) u0) t0 t2)).(\lambda (H3: ((\forall (t3: T).((ty3 g 
45909 (CHead c0 (Bind b) u0) t0 t3) \to (pc3 (CHead c0 (Bind b) u0) t2 
45910 t3))))).(\lambda (t3: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u0) t2 
45911 t3)).(\lambda (_: ((\forall (t4: T).((ty3 g (CHead c0 (Bind b) u0) t2 t4) \to 
45912 (pc3 (CHead c0 (Bind b) u0) t3 t4))))).(\lambda (t4: T).(\lambda (H6: (ty3 g 
45913 c0 (THead (Bind b) u0 t0) t4)).(ex4_3_ind T T T (\lambda (t5: T).(\lambda (_: 
45914 T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u0 t5) t4)))) (\lambda (_: 
45915 T).(\lambda (t6: T).(\lambda (_: T).(ty3 g c0 u0 t6)))) (\lambda (t5: 
45916 T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u0) t0 t5)))) 
45917 (\lambda (t5: T).(\lambda (_: T).(\lambda (t7: T).(ty3 g (CHead c0 (Bind b) 
45918 u0) t5 t7)))) (pc3 c0 (THead (Bind b) u0 t2) t4) (\lambda (x0: T).(\lambda 
45919 (x1: T).(\lambda (x2: T).(\lambda (H7: (pc3 c0 (THead (Bind b) u0 x0) 
45920 t4)).(\lambda (_: (ty3 g c0 u0 x1)).(\lambda (H9: (ty3 g (CHead c0 (Bind b) 
45921 u0) t0 x0)).(\lambda (_: (ty3 g (CHead c0 (Bind b) u0) x0 x2)).(pc3_t (THead 
45922 (Bind b) u0 x0) c0 (THead (Bind b) u0 t2) (pc3_head_2 c0 u0 t2 x0 (Bind b) 
45923 (H3 x0 H9)) t4 H7)))))))) (ty3_gen_bind g b c0 u0 t0 t4 H6))))))))))))))))) 
45924 (\lambda (c0: C).(\lambda (w: T).(\lambda (u0: T).(\lambda (_: (ty3 g c0 w 
45925 u0)).(\lambda (_: ((\forall (t2: T).((ty3 g c0 w t2) \to (pc3 c0 u0 
45926 t2))))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead (Bind 
45927 Abst) u0 t))).(\lambda (H3: ((\forall (t2: T).((ty3 g c0 v t2) \to (pc3 c0 
45928 (THead (Bind Abst) u0 t) t2))))).(\lambda (t2: T).(\lambda (H4: (ty3 g c0 
45929 (THead (Flat Appl) w v) t2)).(ex3_2_ind T T (\lambda (u1: T).(\lambda (t0: 
45930 T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u1 t0)) t2))) (\lambda 
45931 (u1: T).(\lambda (t0: T).(ty3 g c0 v (THead (Bind Abst) u1 t0)))) (\lambda 
45932 (u1: T).(\lambda (_: T).(ty3 g c0 w u1))) (pc3 c0 (THead (Flat Appl) w (THead 
45933 (Bind Abst) u0 t)) t2) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H5: (pc3 
45934 c0 (THead (Flat Appl) w (THead (Bind Abst) x0 x1)) t2)).(\lambda (H6: (ty3 g 
45935 c0 v (THead (Bind Abst) x0 x1))).(\lambda (_: (ty3 g c0 w x0)).(pc3_t (THead 
45936 (Flat Appl) w (THead (Bind Abst) x0 x1)) c0 (THead (Flat Appl) w (THead (Bind 
45937 Abst) u0 t)) (pc3_thin_dx c0 (THead (Bind Abst) u0 t) (THead (Bind Abst) x0 
45938 x1) (H3 (THead (Bind Abst) x0 x1) H6) w Appl) t2 H5)))))) (ty3_gen_appl g c0 
45939 w v t2 H4))))))))))))) (\lambda (c0: C).(\lambda (t0: T).(\lambda (t2: 
45940 T).(\lambda (_: (ty3 g c0 t0 t2)).(\lambda (_: ((\forall (t3: T).((ty3 g c0 
45941 t0 t3) \to (pc3 c0 t2 t3))))).(\lambda (t3: T).(\lambda (_: (ty3 g c0 t2 
45942 t3)).(\lambda (_: ((\forall (t4: T).((ty3 g c0 t2 t4) \to (pc3 c0 t3 
45943 t4))))).(\lambda (t4: T).(\lambda (H4: (ty3 g c0 (THead (Flat Cast) t2 t0) 
45944 t4)).(and_ind (pc3 c0 t2 t4) (ty3 g c0 t0 t2) (pc3 c0 t2 t4) (\lambda (H5: 
45945 (pc3 c0 t2 t4)).(\lambda (_: (ty3 g c0 t0 t2)).H5)) (ty3_gen_cast g c0 t0 t2 
45946 t4 H4)))))))))))) c u t1 H))))).
45947
45948 theorem ty3_fsubst0:
45949  \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t: T).((ty3 g c1 
45950 t1 t) \to (\forall (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t2: 
45951 T).((fsubst0 i u c1 t1 c2 t2) \to (\forall (e: C).((getl i c1 (CHead e (Bind 
45952 Abbr) u)) \to (ty3 g c2 t2 t))))))))))))
45953 \def
45954  \lambda (g: G).(\lambda (c1: C).(\lambda (t1: T).(\lambda (t: T).(\lambda 
45955 (H: (ty3 g c1 t1 t)).(ty3_ind g (\lambda (c: C).(\lambda (t0: T).(\lambda 
45956 (t2: T).(\forall (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: 
45957 T).((fsubst0 i u c t0 c2 t3) \to (\forall (e: C).((getl i c (CHead e (Bind 
45958 Abbr) u)) \to (ty3 g c2 t3 t2))))))))))) (\lambda (c: C).(\lambda (t2: 
45959 T).(\lambda (t0: T).(\lambda (H0: (ty3 g c t2 t0)).(\lambda (H1: ((\forall 
45960 (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: T).((fsubst0 i u c t2 
45961 c2 t3) \to (\forall (e: C).((getl i c (CHead e (Bind Abbr) u)) \to (ty3 g c2 
45962 t3 t0)))))))))).(\lambda (u: T).(\lambda (t3: T).(\lambda (_: (ty3 g c u 
45963 t3)).(\lambda (H3: ((\forall (i: nat).(\forall (u0: T).(\forall (c2: 
45964 C).(\forall (t2: T).((fsubst0 i u0 c u c2 t2) \to (\forall (e: C).((getl i c 
45965 (CHead e (Bind Abbr) u0)) \to (ty3 g c2 t2 t3)))))))))).(\lambda (H4: (pc3 c 
45966 t3 t2)).(\lambda (i: nat).(\lambda (u0: T).(\lambda (c2: C).(\lambda (t4: 
45967 T).(\lambda (H5: (fsubst0 i u0 c u c2 t4)).(fsubst0_ind i u0 c u (\lambda 
45968 (c0: C).(\lambda (t5: T).(\forall (e: C).((getl i c (CHead e (Bind Abbr) u0)) 
45969 \to (ty3 g c0 t5 t2))))) (\lambda (t5: T).(\lambda (H6: (subst0 i u0 u 
45970 t5)).(\lambda (e: C).(\lambda (H7: (getl i c (CHead e (Bind Abbr) 
45971 u0))).(ty3_conv g c t2 t0 H0 t5 t3 (H3 i u0 c t5 (fsubst0_snd i u0 c u t5 H6) 
45972 e H7) H4))))) (\lambda (c3: C).(\lambda (H6: (csubst0 i u0 c c3)).(\lambda 
45973 (e: C).(\lambda (H7: (getl i c (CHead e (Bind Abbr) u0))).(ty3_conv g c3 t2 
45974 t0 (H1 i u0 c3 t2 (fsubst0_fst i u0 c t2 c3 H6) e H7) u t3 (H3 i u0 c3 u 
45975 (fsubst0_fst i u0 c u c3 H6) e H7) (pc3_fsubst0 c t3 t2 H4 i u0 c3 t3 
45976 (fsubst0_fst i u0 c t3 c3 H6) e H7)))))) (\lambda (t5: T).(\lambda (H6: 
45977 (subst0 i u0 u t5)).(\lambda (c3: C).(\lambda (H7: (csubst0 i u0 c 
45978 c3)).(\lambda (e: C).(\lambda (H8: (getl i c (CHead e (Bind Abbr) 
45979 u0))).(ty3_conv g c3 t2 t0 (H1 i u0 c3 t2 (fsubst0_fst i u0 c t2 c3 H7) e H8) 
45980 t5 t3 (H3 i u0 c3 t5 (fsubst0_both i u0 c u t5 H6 c3 H7) e H8) (pc3_fsubst0 c 
45981 t3 t2 H4 i u0 c3 t3 (fsubst0_fst i u0 c t3 c3 H7) e H8)))))))) c2 t4 
45982 H5)))))))))))))))) (\lambda (c: C).(\lambda (m: nat).(\lambda (i: 
45983 nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t2: T).(\lambda (H0: (fsubst0 
45984 i u c (TSort m) c2 t2)).(fsubst0_ind i u c (TSort m) (\lambda (c0: 
45985 C).(\lambda (t0: T).(\forall (e: C).((getl i c (CHead e (Bind Abbr) u)) \to 
45986 (ty3 g c0 t0 (TSort (next g m))))))) (\lambda (t3: T).(\lambda (H1: (subst0 i 
45987 u (TSort m) t3)).(\lambda (e: C).(\lambda (_: (getl i c (CHead e (Bind Abbr) 
45988 u))).(subst0_gen_sort u t3 i m H1 (ty3 g c t3 (TSort (next g m)))))))) 
45989 (\lambda (c3: C).(\lambda (_: (csubst0 i u c c3)).(\lambda (e: C).(\lambda 
45990 (_: (getl i c (CHead e (Bind Abbr) u))).(ty3_sort g c3 m))))) (\lambda (t3: 
45991 T).(\lambda (H1: (subst0 i u (TSort m) t3)).(\lambda (c3: C).(\lambda (_: 
45992 (csubst0 i u c c3)).(\lambda (e: C).(\lambda (_: (getl i c (CHead e (Bind 
45993 Abbr) u))).(subst0_gen_sort u t3 i m H1 (ty3 g c3 t3 (TSort (next g 
45994 m)))))))))) c2 t2 H0)))))))) (\lambda (n: nat).(\lambda (c: C).(\lambda (d: 
45995 C).(\lambda (u: T).(\lambda (H0: (getl n c (CHead d (Bind Abbr) u))).(\lambda 
45996 (t0: T).(\lambda (H1: (ty3 g d u t0)).(\lambda (H2: ((\forall (i: 
45997 nat).(\forall (u0: T).(\forall (c2: C).(\forall (t2: T).((fsubst0 i u0 d u c2 
45998 t2) \to (\forall (e: C).((getl i d (CHead e (Bind Abbr) u0)) \to (ty3 g c2 t2 
45999 t0)))))))))).(\lambda (i: nat).(\lambda (u0: T).(\lambda (c2: C).(\lambda 
46000 (t2: T).(\lambda (H3: (fsubst0 i u0 c (TLRef n) c2 t2)).(fsubst0_ind i u0 c 
46001 (TLRef n) (\lambda (c0: C).(\lambda (t3: T).(\forall (e: C).((getl i c (CHead 
46002 e (Bind Abbr) u0)) \to (ty3 g c0 t3 (lift (S n) O t0)))))) (\lambda (t3: 
46003 T).(\lambda (H4: (subst0 i u0 (TLRef n) t3)).(\lambda (e: C).(\lambda (H5: 
46004 (getl i c (CHead e (Bind Abbr) u0))).(and_ind (eq nat n i) (eq T t3 (lift (S 
46005 n) O u0)) (ty3 g c t3 (lift (S n) O t0)) (\lambda (H6: (eq nat n i)).(\lambda 
46006 (H7: (eq T t3 (lift (S n) O u0))).(eq_ind_r T (lift (S n) O u0) (\lambda (t4: 
46007 T).(ty3 g c t4 (lift (S n) O t0))) (let H8 \def (eq_ind_r nat i (\lambda (n: 
46008 nat).(getl n c (CHead e (Bind Abbr) u0))) H5 n H6) in (let H9 \def (eq_ind C 
46009 (CHead d (Bind Abbr) u) (\lambda (c0: C).(getl n c c0)) H0 (CHead e (Bind 
46010 Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Abbr) u0) 
46011 H8)) in (let H10 \def (f_equal C C (\lambda (e0: C).(match e0 return (\lambda 
46012 (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) 
46013 (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind 
46014 Abbr) u) n H0 (CHead e (Bind Abbr) u0) H8)) in ((let H11 \def (f_equal C T 
46015 (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with [(CSort _) 
46016 \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead 
46017 e (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) n H0 (CHead e (Bind 
46018 Abbr) u0) H8)) in (\lambda (H12: (eq C d e)).(let H13 \def (eq_ind_r C e 
46019 (\lambda (c0: C).(getl n c (CHead c0 (Bind Abbr) u0))) H9 d H12) in (let H14 
46020 \def (eq_ind_r T u0 (\lambda (t: T).(getl n c (CHead d (Bind Abbr) t))) H13 u 
46021 H11) in (eq_ind T u (\lambda (t4: T).(ty3 g c (lift (S n) O t4) (lift (S n) O 
46022 t0))) (ty3_lift g d u t0 H1 c O (S n) (getl_drop Abbr c d u n H14)) u0 
46023 H11))))) H10)))) t3 H7))) (subst0_gen_lref u0 t3 i n H4)))))) (\lambda (c3: 
46024 C).(\lambda (H4: (csubst0 i u0 c c3)).(\lambda (e: C).(\lambda (H5: (getl i c 
46025 (CHead e (Bind Abbr) u0))).(lt_le_e n i (ty3 g c3 (TLRef n) (lift (S n) O 
46026 t0)) (\lambda (H6: (lt n i)).(let H7 \def (csubst0_getl_lt i n H6 c c3 u0 H4 
46027 (CHead d (Bind Abbr) u) H0) in (or4_ind (getl n c3 (CHead d (Bind Abbr) u)) 
46028 (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: 
46029 T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: 
46030 B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e0 
46031 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda 
46032 (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: 
46033 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind 
46034 Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda 
46035 (e2: C).(\lambda (u1: T).(getl n c3 (CHead e2 (Bind b) u1)))))) (\lambda (_: 
46036 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
46037 u0 e1 e2)))))) (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
46038 C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 
46039 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
46040 (_: T).(\lambda (w: T).(getl n c3 (CHead e2 (Bind b) w))))))) (\lambda (_: 
46041 B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 
46042 (minus i (S n)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
46043 C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) u0 e1 e2))))))) 
46044 (ty3 g c3 (TLRef n) (lift (S n) O t0)) (\lambda (H8: (getl n c3 (CHead d 
46045 (Bind Abbr) u))).(ty3_abbr g n c3 d u H8 t0 H1)) (\lambda (H8: (ex3_4 B C T T 
46046 (\lambda (b: B).(\lambda (e0: C).(\lambda (u0: T).(\lambda (_: T).(eq C 
46047 (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u0)))))) (\lambda (b: B).(\lambda 
46048 (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e0 (Bind b) w)))))) 
46049 (\lambda (_: B).(\lambda (_: C).(\lambda (u: T).(\lambda (w: T).(subst0 
46050 (minus i (S n)) u0 u w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda 
46051 (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead 
46052 e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
46053 T).(\lambda (w: T).(getl n c3 (CHead e0 (Bind b) w)))))) (\lambda (_: 
46054 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) 
46055 u0 u1 w))))) (ty3 g c3 (TLRef n) (lift (S n) O t0)) (\lambda (x0: B).(\lambda 
46056 (x1: C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind 
46057 Abbr) u) (CHead x1 (Bind x0) x2))).(\lambda (H10: (getl n c3 (CHead x1 (Bind 
46058 x0) x3))).(\lambda (H11: (subst0 (minus i (S n)) u0 x2 x3)).(let H12 \def 
46059 (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
46060 [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind 
46061 Abbr) u) (CHead x1 (Bind x0) x2) H9) in ((let H13 \def (f_equal C B (\lambda 
46062 (e0: C).(match e0 return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr 
46063 | (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
46064 \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead 
46065 x1 (Bind x0) x2) H9) in ((let H14 \def (f_equal C T (\lambda (e0: C).(match 
46066 e0 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) 
46067 \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H9) in 
46068 (\lambda (H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let H17 \def 
46069 (eq_ind_r T x2 (\lambda (t: T).(subst0 (minus i (S n)) u0 t x3)) H11 u H14) 
46070 in (let H18 \def (eq_ind_r C x1 (\lambda (c: C).(getl n c3 (CHead c (Bind x0) 
46071 x3))) H10 d H16) in (let H19 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 
46072 (CHead d (Bind b) x3))) H18 Abbr H15) in (let H20 \def (eq_ind nat (minus i 
46073 n) (\lambda (n: nat).(getl n (CHead d (Bind Abbr) x3) (CHead e (Bind Abbr) 
46074 u0))) (getl_conf_le i (CHead e (Bind Abbr) u0) c3 (csubst0_getl_ge i i (le_n 
46075 i) c c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead d (Bind Abbr) x3) n H19 
46076 (le_S_n n i (le_S (S n) i H6))) (S (minus i (S n))) (minus_x_Sy i n H6)) in 
46077 (ty3_abbr g n c3 d x3 H19 t0 (H2 (minus i (S n)) u0 d x3 (fsubst0_snd (minus 
46078 i (S n)) u0 d u x3 H17) e (getl_gen_S (Bind Abbr) d (CHead e (Bind Abbr) u0) 
46079 x3 (minus i (S n)) H20)))))))))) H13)) H12))))))))) H8)) (\lambda (H8: (ex3_4 
46080 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u0: T).(eq 
46081 C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u0)))))) (\lambda (b: 
46082 B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u: T).(getl n c3 (CHead e2 
46083 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda 
46084 (_: T).(csubst0 (minus i (S n)) u0 e1 e2))))))).(ex3_4_ind B C C T (\lambda 
46085 (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind 
46086 Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda 
46087 (e2: C).(\lambda (u1: T).(getl n c3 (CHead e2 (Bind b) u1)))))) (\lambda (_: 
46088 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) 
46089 u0 e1 e2))))) (ty3 g c3 (TLRef n) (lift (S n) O t0)) (\lambda (x0: 
46090 B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H9: (eq C 
46091 (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3))).(\lambda (H10: (getl n c3 
46092 (CHead x2 (Bind x0) x3))).(\lambda (H11: (csubst0 (minus i (S n)) u0 x1 
46093 x2)).(let H12 \def (f_equal C C (\lambda (e0: C).(match e0 return (\lambda 
46094 (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) 
46095 (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H13 \def 
46096 (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: C).B) with 
46097 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return 
46098 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
46099 Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H14 
46100 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
46101 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
46102 Abbr) u) (CHead x1 (Bind x0) x3) H9) in (\lambda (H15: (eq B Abbr 
46103 x0)).(\lambda (H16: (eq C d x1)).(let H17 \def (eq_ind_r T x3 (\lambda (t: 
46104 T).(getl n c3 (CHead x2 (Bind x0) t))) H10 u H14) in (let H18 \def (eq_ind_r 
46105 C x1 (\lambda (c: C).(csubst0 (minus i (S n)) u0 c x2)) H11 d H16) in (let 
46106 H19 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 (CHead x2 (Bind b) u))) 
46107 H17 Abbr H15) in (let H20 \def (eq_ind nat (minus i n) (\lambda (n: 
46108 nat).(getl n (CHead x2 (Bind Abbr) u) (CHead e (Bind Abbr) u0))) 
46109 (getl_conf_le i (CHead e (Bind Abbr) u0) c3 (csubst0_getl_ge i i (le_n i) c 
46110 c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead x2 (Bind Abbr) u) n H19 (le_S_n 
46111 n i (le_S (S n) i H6))) (S (minus i (S n))) (minus_x_Sy i n H6)) in (ty3_abbr 
46112 g n c3 x2 u H19 t0 (H2 (minus i (S n)) u0 x2 u (fsubst0_fst (minus i (S n)) 
46113 u0 d u x2 H18) e (csubst0_getl_ge_back (minus i (S n)) (minus i (S n)) (le_n 
46114 (minus i (S n))) d x2 u0 H18 (CHead e (Bind Abbr) u0) (getl_gen_S (Bind Abbr) 
46115 x2 (CHead e (Bind Abbr) u0) u (minus i (S n)) H20))))))))))) H13)) 
46116 H12))))))))) H8)) (\lambda (H8: (ex4_5 B C C T T (\lambda (b: B).(\lambda 
46117 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead d (Bind 
46118 Abbr) u) (CHead e1 (Bind b) u0))))))) (\lambda (b: B).(\lambda (_: 
46119 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e2 
46120 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
46121 (u: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u w)))))) (\lambda (_: 
46122 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
46123 (minus i (S n)) u0 e1 e2)))))))).(ex4_5_ind B C C T T (\lambda (b: 
46124 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C 
46125 (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda 
46126 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e2 
46127 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
46128 (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) (\lambda (_: 
46129 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
46130 (minus i (S n)) u0 e1 e2)))))) (ty3 g c3 (TLRef n) (lift (S n) O t0)) 
46131 (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda 
46132 (x4: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) 
46133 x3))).(\lambda (H10: (getl n c3 (CHead x2 (Bind x0) x4))).(\lambda (H11: 
46134 (subst0 (minus i (S n)) u0 x3 x4)).(\lambda (H12: (csubst0 (minus i (S n)) u0 
46135 x1 x2)).(let H13 \def (f_equal C C (\lambda (e0: C).(match e0 return (\lambda 
46136 (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) 
46137 (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H14 \def 
46138 (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: C).B) with 
46139 [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return 
46140 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
46141 Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H15 
46142 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
46143 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
46144 Abbr) u) (CHead x1 (Bind x0) x3) H9) in (\lambda (H16: (eq B Abbr 
46145 x0)).(\lambda (H17: (eq C d x1)).(let H18 \def (eq_ind_r T x3 (\lambda (t: 
46146 T).(subst0 (minus i (S n)) u0 t x4)) H11 u H15) in (let H19 \def (eq_ind_r C 
46147 x1 (\lambda (c: C).(csubst0 (minus i (S n)) u0 c x2)) H12 d H17) in (let H20 
46148 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 (CHead x2 (Bind b) x4))) H10 
46149 Abbr H16) in (let H21 \def (eq_ind nat (minus i n) (\lambda (n: nat).(getl n 
46150 (CHead x2 (Bind Abbr) x4) (CHead e (Bind Abbr) u0))) (getl_conf_le i (CHead e 
46151 (Bind Abbr) u0) c3 (csubst0_getl_ge i i (le_n i) c c3 u0 H4 (CHead e (Bind 
46152 Abbr) u0) H5) (CHead x2 (Bind Abbr) x4) n H20 (le_S_n n i (le_S (S n) i H6))) 
46153 (S (minus i (S n))) (minus_x_Sy i n H6)) in (ty3_abbr g n c3 x2 x4 H20 t0 (H2 
46154 (minus i (S n)) u0 x2 x4 (fsubst0_both (minus i (S n)) u0 d u x4 H18 x2 H19) 
46155 e (csubst0_getl_ge_back (minus i (S n)) (minus i (S n)) (le_n (minus i (S 
46156 n))) d x2 u0 H19 (CHead e (Bind Abbr) u0) (getl_gen_S (Bind Abbr) x2 (CHead e 
46157 (Bind Abbr) u0) x4 (minus i (S n)) H21))))))))))) H14)) H13))))))))))) H8)) 
46158 H7))) (\lambda (H6: (le i n)).(ty3_abbr g n c3 d u (csubst0_getl_ge i n H6 c 
46159 c3 u0 H4 (CHead d (Bind Abbr) u) H0) t0 H1))))))) (\lambda (t3: T).(\lambda 
46160 (H4: (subst0 i u0 (TLRef n) t3)).(\lambda (c3: C).(\lambda (H5: (csubst0 i u0 
46161 c c3)).(\lambda (e: C).(\lambda (H6: (getl i c (CHead e (Bind Abbr) 
46162 u0))).(and_ind (eq nat n i) (eq T t3 (lift (S n) O u0)) (ty3 g c3 t3 (lift (S 
46163 n) O t0)) (\lambda (H7: (eq nat n i)).(\lambda (H8: (eq T t3 (lift (S n) O 
46164 u0))).(eq_ind_r T (lift (S n) O u0) (\lambda (t4: T).(ty3 g c3 t4 (lift (S n) 
46165 O t0))) (let H9 \def (eq_ind_r nat i (\lambda (n: nat).(getl n c (CHead e 
46166 (Bind Abbr) u0))) H6 n H7) in (let H10 \def (eq_ind_r nat i (\lambda (n: 
46167 nat).(csubst0 n u0 c c3)) H5 n H7) in (let H11 \def (eq_ind C (CHead d (Bind 
46168 Abbr) u) (\lambda (c0: C).(getl n c c0)) H0 (CHead e (Bind Abbr) u0) 
46169 (getl_mono c (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Abbr) u0) H9)) in 
46170 (let H12 \def (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: 
46171 C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d 
46172 (Bind Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) 
46173 n H0 (CHead e (Bind Abbr) u0) H9)) in ((let H13 \def (f_equal C T (\lambda 
46174 (e0: C).(match e0 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | 
46175 (CHead _ _ t) \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) 
46176 u0) (getl_mono c (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Abbr) u0) H9)) 
46177 in (\lambda (H14: (eq C d e)).(let H15 \def (eq_ind_r C e (\lambda (c0: 
46178 C).(getl n c (CHead c0 (Bind Abbr) u0))) H11 d H14) in (let H16 \def 
46179 (eq_ind_r T u0 (\lambda (t: T).(getl n c (CHead d (Bind Abbr) t))) H15 u H13) 
46180 in (let H17 \def (eq_ind_r T u0 (\lambda (t: T).(csubst0 n t c c3)) H10 u 
46181 H13) in (eq_ind T u (\lambda (t4: T).(ty3 g c3 (lift (S n) O t4) (lift (S n) 
46182 O t0))) (ty3_lift g d u t0 H1 c3 O (S n) (getl_drop Abbr c3 d u n 
46183 (csubst0_getl_ge n n (le_n n) c c3 u H17 (CHead d (Bind Abbr) u) H16))) u0 
46184 H13)))))) H12))))) t3 H8))) (subst0_gen_lref u0 t3 i n H4)))))))) c2 t2 
46185 H3)))))))))))))) (\lambda (n: nat).(\lambda (c: C).(\lambda (d: C).(\lambda 
46186 (u: T).(\lambda (H0: (getl n c (CHead d (Bind Abst) u))).(\lambda (t0: 
46187 T).(\lambda (H1: (ty3 g d u t0)).(\lambda (H2: ((\forall (i: nat).(\forall 
46188 (u0: T).(\forall (c2: C).(\forall (t2: T).((fsubst0 i u0 d u c2 t2) \to 
46189 (\forall (e: C).((getl i d (CHead e (Bind Abbr) u0)) \to (ty3 g c2 t2 
46190 t0)))))))))).(\lambda (i: nat).(\lambda (u0: T).(\lambda (c2: C).(\lambda 
46191 (t2: T).(\lambda (H3: (fsubst0 i u0 c (TLRef n) c2 t2)).(fsubst0_ind i u0 c 
46192 (TLRef n) (\lambda (c0: C).(\lambda (t3: T).(\forall (e: C).((getl i c (CHead 
46193 e (Bind Abbr) u0)) \to (ty3 g c0 t3 (lift (S n) O u)))))) (\lambda (t3: 
46194 T).(\lambda (H4: (subst0 i u0 (TLRef n) t3)).(\lambda (e: C).(\lambda (H5: 
46195 (getl i c (CHead e (Bind Abbr) u0))).(and_ind (eq nat n i) (eq T t3 (lift (S 
46196 n) O u0)) (ty3 g c t3 (lift (S n) O u)) (\lambda (H6: (eq nat n i)).(\lambda 
46197 (H7: (eq T t3 (lift (S n) O u0))).(eq_ind_r T (lift (S n) O u0) (\lambda (t4: 
46198 T).(ty3 g c t4 (lift (S n) O u))) (let H8 \def (eq_ind_r nat i (\lambda (n: 
46199 nat).(getl n c (CHead e (Bind Abbr) u0))) H5 n H6) in (let H9 \def (eq_ind C 
46200 (CHead d (Bind Abst) u) (\lambda (c0: C).(getl n c c0)) H0 (CHead e (Bind 
46201 Abbr) u0) (getl_mono c (CHead d (Bind Abst) u) n H0 (CHead e (Bind Abbr) u0) 
46202 H8)) in (let H10 \def (eq_ind C (CHead d (Bind Abst) u) (\lambda (ee: 
46203 C).(match ee return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | 
46204 (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
46205 b) \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow 
46206 False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat _) 
46207 \Rightarrow False])])) I (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind 
46208 Abst) u) n H0 (CHead e (Bind Abbr) u0) H8)) in (False_ind (ty3 g c (lift (S 
46209 n) O u0) (lift (S n) O u)) H10)))) t3 H7))) (subst0_gen_lref u0 t3 i n 
46210 H4)))))) (\lambda (c3: C).(\lambda (H4: (csubst0 i u0 c c3)).(\lambda (e: 
46211 C).(\lambda (H5: (getl i c (CHead e (Bind Abbr) u0))).(lt_le_e n i (ty3 g c3 
46212 (TLRef n) (lift (S n) O u)) (\lambda (H6: (lt n i)).(let H7 \def 
46213 (csubst0_getl_lt i n H6 c c3 u0 H4 (CHead d (Bind Abst) u) H0) in (or4_ind 
46214 (getl n c3 (CHead d (Bind Abst) u)) (ex3_4 B C T T (\lambda (b: B).(\lambda 
46215 (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abst) u) (CHead 
46216 e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: 
46217 T).(\lambda (w: T).(getl n c3 (CHead e0 (Bind b) w)))))) (\lambda (_: 
46218 B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) 
46219 u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
46220 C).(\lambda (u1: T).(eq C (CHead d (Bind Abst) u) (CHead e1 (Bind b) u1)))))) 
46221 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl n c3 
46222 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
46223 C).(\lambda (_: T).(csubst0 (minus i (S n)) u0 e1 e2)))))) (ex4_5 B C C T T 
46224 (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda 
46225 (_: T).(eq C (CHead d (Bind Abst) u) (CHead e1 (Bind b) u1))))))) (\lambda 
46226 (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl 
46227 n c3 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: 
46228 C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) 
46229 (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda 
46230 (_: T).(csubst0 (minus i (S n)) u0 e1 e2))))))) (ty3 g c3 (TLRef n) (lift (S 
46231 n) O u)) (\lambda (H8: (getl n c3 (CHead d (Bind Abst) u))).(ty3_abst g n c3 
46232 d u H8 t0 H1)) (\lambda (H8: (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: 
46233 C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead d (Bind Abst) u) (CHead e0 
46234 (Bind b) u0)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda 
46235 (w: T).(getl n c3 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: 
46236 C).(\lambda (u: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u 
46237 w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: 
46238 T).(\lambda (_: T).(eq C (CHead d (Bind Abst) u) (CHead e0 (Bind b) u1)))))) 
46239 (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 
46240 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: 
46241 T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w))))) (ty3 g c3 (TLRef n) 
46242 (lift (S n) O u)) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: T).(\lambda 
46243 (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abst) u) (CHead x1 (Bind x0) 
46244 x2))).(\lambda (H10: (getl n c3 (CHead x1 (Bind x0) x3))).(\lambda (H11: 
46245 (subst0 (minus i (S n)) u0 x2 x3)).(let H12 \def (f_equal C C (\lambda (e0: 
46246 C).(match e0 return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead 
46247 c _ _) \Rightarrow c])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x2) H9) 
46248 in ((let H13 \def (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: 
46249 C).B) with [(CSort _) \Rightarrow Abst | (CHead _ k _) \Rightarrow (match k 
46250 return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
46251 Abst])])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x2) H9) in ((let H14 
46252 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
46253 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
46254 Abst) u) (CHead x1 (Bind x0) x2) H9) in (\lambda (H15: (eq B Abst 
46255 x0)).(\lambda (H16: (eq C d x1)).(let H17 \def (eq_ind_r T x2 (\lambda (t: 
46256 T).(subst0 (minus i (S n)) u0 t x3)) H11 u H14) in (let H18 \def (eq_ind_r C 
46257 x1 (\lambda (c: C).(getl n c3 (CHead c (Bind x0) x3))) H10 d H16) in (let H19 
46258 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 (CHead d (Bind b) x3))) H18 
46259 Abst H15) in (let H20 \def (eq_ind nat (minus i n) (\lambda (n: nat).(getl n 
46260 (CHead d (Bind Abst) x3) (CHead e (Bind Abbr) u0))) (getl_conf_le i (CHead e 
46261 (Bind Abbr) u0) c3 (csubst0_getl_ge i i (le_n i) c c3 u0 H4 (CHead e (Bind 
46262 Abbr) u0) H5) (CHead d (Bind Abst) x3) n H19 (le_S_n n i (le_S (S n) i H6))) 
46263 (S (minus i (S n))) (minus_x_Sy i n H6)) in (ty3_conv g c3 (lift (S n) O u) 
46264 (lift (S n) O t0) (ty3_lift g d u t0 H1 c3 O (S n) (getl_drop Abst c3 d x3 n 
46265 H19)) (TLRef n) (lift (S n) O x3) (ty3_abst g n c3 d x3 H19 t0 (H2 (minus i 
46266 (S n)) u0 d x3 (fsubst0_snd (minus i (S n)) u0 d u x3 H17) e (getl_gen_S 
46267 (Bind Abst) d (CHead e (Bind Abbr) u0) x3 (minus i (S n)) H20))) (pc3_lift c3 
46268 d (S n) O (getl_drop Abst c3 d x3 n H19) x3 u (pc3_pr2_x d x3 u (pr2_delta d 
46269 e u0 (r (Bind Abst) (minus i (S n))) (getl_gen_S (Bind Abst) d (CHead e (Bind 
46270 Abbr) u0) x3 (minus i (S n)) H20) u u (pr0_refl u) x3 H17))))))))))) H13)) 
46271 H12))))))))) H8)) (\lambda (H8: (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: 
46272 C).(\lambda (_: C).(\lambda (u0: T).(eq C (CHead d (Bind Abst) u) (CHead e1 
46273 (Bind b) u0)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda 
46274 (u: T).(getl n c3 (CHead e2 (Bind b) u)))))) (\lambda (_: B).(\lambda (e1: 
46275 C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) u0 e1 
46276 e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: 
46277 C).(\lambda (u1: T).(eq C (CHead d (Bind Abst) u) (CHead e1 (Bind b) u1)))))) 
46278 (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl n c3 
46279 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: 
46280 C).(\lambda (_: T).(csubst0 (minus i (S n)) u0 e1 e2))))) (ty3 g c3 (TLRef n) 
46281 (lift (S n) O u)) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda 
46282 (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abst) u) (CHead x1 (Bind x0) 
46283 x3))).(\lambda (H10: (getl n c3 (CHead x2 (Bind x0) x3))).(\lambda (H11: 
46284 (csubst0 (minus i (S n)) u0 x1 x2)).(let H12 \def (f_equal C C (\lambda (e0: 
46285 C).(match e0 return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead 
46286 c _ _) \Rightarrow c])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x3) H9) 
46287 in ((let H13 \def (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: 
46288 C).B) with [(CSort _) \Rightarrow Abst | (CHead _ k _) \Rightarrow (match k 
46289 return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
46290 Abst])])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x3) H9) in ((let H14 
46291 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
46292 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
46293 Abst) u) (CHead x1 (Bind x0) x3) H9) in (\lambda (H15: (eq B Abst 
46294 x0)).(\lambda (H16: (eq C d x1)).(let H17 \def (eq_ind_r T x3 (\lambda (t: 
46295 T).(getl n c3 (CHead x2 (Bind x0) t))) H10 u H14) in (let H18 \def (eq_ind_r 
46296 C x1 (\lambda (c: C).(csubst0 (minus i (S n)) u0 c x2)) H11 d H16) in (let 
46297 H19 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 (CHead x2 (Bind b) u))) 
46298 H17 Abst H15) in (let H20 \def (eq_ind nat (minus i n) (\lambda (n: 
46299 nat).(getl n (CHead x2 (Bind Abst) u) (CHead e (Bind Abbr) u0))) 
46300 (getl_conf_le i (CHead e (Bind Abbr) u0) c3 (csubst0_getl_ge i i (le_n i) c 
46301 c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead x2 (Bind Abst) u) n H19 (le_S_n 
46302 n i (le_S (S n) i H6))) (S (minus i (S n))) (minus_x_Sy i n H6)) in (ty3_abst 
46303 g n c3 x2 u H19 t0 (H2 (minus i (S n)) u0 x2 u (fsubst0_fst (minus i (S n)) 
46304 u0 d u x2 H18) e (csubst0_getl_ge_back (minus i (S n)) (minus i (S n)) (le_n 
46305 (minus i (S n))) d x2 u0 H18 (CHead e (Bind Abbr) u0) (getl_gen_S (Bind Abst) 
46306 x2 (CHead e (Bind Abbr) u0) u (minus i (S n)) H20))))))))))) H13)) 
46307 H12))))))))) H8)) (\lambda (H8: (ex4_5 B C C T T (\lambda (b: B).(\lambda 
46308 (e1: C).(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(eq C (CHead d (Bind 
46309 Abst) u) (CHead e1 (Bind b) u0))))))) (\lambda (b: B).(\lambda (_: 
46310 C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e2 
46311 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
46312 (u: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u w)))))) (\lambda (_: 
46313 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
46314 (minus i (S n)) u0 e1 e2)))))))).(ex4_5_ind B C C T T (\lambda (b: 
46315 B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C 
46316 (CHead d (Bind Abst) u) (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda 
46317 (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e2 
46318 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda 
46319 (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) (\lambda (_: 
46320 B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 
46321 (minus i (S n)) u0 e1 e2)))))) (ty3 g c3 (TLRef n) (lift (S n) O u)) (\lambda 
46322 (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: 
46323 T).(\lambda (H9: (eq C (CHead d (Bind Abst) u) (CHead x1 (Bind x0) 
46324 x3))).(\lambda (H10: (getl n c3 (CHead x2 (Bind x0) x4))).(\lambda (H11: 
46325 (subst0 (minus i (S n)) u0 x3 x4)).(\lambda (H12: (csubst0 (minus i (S n)) u0 
46326 x1 x2)).(let H13 \def (f_equal C C (\lambda (e0: C).(match e0 return (\lambda 
46327 (_: C).C) with [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) 
46328 (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x3) H9) in ((let H14 \def 
46329 (f_equal C B (\lambda (e0: C).(match e0 return (\lambda (_: C).B) with 
46330 [(CSort _) \Rightarrow Abst | (CHead _ k _) \Rightarrow (match k return 
46331 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
46332 Abst])])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x3) H9) in ((let H15 
46333 \def (f_equal C T (\lambda (e0: C).(match e0 return (\lambda (_: C).T) with 
46334 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead d (Bind 
46335 Abst) u) (CHead x1 (Bind x0) x3) H9) in (\lambda (H16: (eq B Abst 
46336 x0)).(\lambda (H17: (eq C d x1)).(let H18 \def (eq_ind_r T x3 (\lambda (t: 
46337 T).(subst0 (minus i (S n)) u0 t x4)) H11 u H15) in (let H19 \def (eq_ind_r C 
46338 x1 (\lambda (c: C).(csubst0 (minus i (S n)) u0 c x2)) H12 d H17) in (let H20 
46339 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 (CHead x2 (Bind b) x4))) H10 
46340 Abst H16) in (let H21 \def (eq_ind nat (minus i n) (\lambda (n: nat).(getl n 
46341 (CHead x2 (Bind Abst) x4) (CHead e (Bind Abbr) u0))) (getl_conf_le i (CHead e 
46342 (Bind Abbr) u0) c3 (csubst0_getl_ge i i (le_n i) c c3 u0 H4 (CHead e (Bind 
46343 Abbr) u0) H5) (CHead x2 (Bind Abst) x4) n H20 (le_S_n n i (le_S (S n) i H6))) 
46344 (S (minus i (S n))) (minus_x_Sy i n H6)) in (ty3_conv g c3 (lift (S n) O u) 
46345 (lift (S n) O t0) (ty3_lift g x2 u t0 (H2 (minus i (S n)) u0 x2 u 
46346 (fsubst0_fst (minus i (S n)) u0 d u x2 H19) e (csubst0_getl_ge_back (minus i 
46347 (S n)) (minus i (S n)) (le_n (minus i (S n))) d x2 u0 H19 (CHead e (Bind 
46348 Abbr) u0) (getl_gen_S (Bind Abst) x2 (CHead e (Bind Abbr) u0) x4 (minus i (S 
46349 n)) H21))) c3 O (S n) (getl_drop Abst c3 x2 x4 n H20)) (TLRef n) (lift (S n) 
46350 O x4) (ty3_abst g n c3 x2 x4 H20 t0 (H2 (minus i (S n)) u0 x2 x4 
46351 (fsubst0_both (minus i (S n)) u0 d u x4 H18 x2 H19) e (csubst0_getl_ge_back 
46352 (minus i (S n)) (minus i (S n)) (le_n (minus i (S n))) d x2 u0 H19 (CHead e 
46353 (Bind Abbr) u0) (getl_gen_S (Bind Abst) x2 (CHead e (Bind Abbr) u0) x4 (minus 
46354 i (S n)) H21)))) (pc3_lift c3 x2 (S n) O (getl_drop Abst c3 x2 x4 n H20) x4 u 
46355 (pc3_fsubst0 d u u (pc3_refl d u) (minus i (S n)) u0 x2 x4 (fsubst0_both 
46356 (minus i (S n)) u0 d u x4 H18 x2 H19) e (csubst0_getl_ge_back (minus i (S n)) 
46357 (minus i (S n)) (le_n (minus i (S n))) d x2 u0 H19 (CHead e (Bind Abbr) u0) 
46358 (getl_gen_S (Bind Abst) x2 (CHead e (Bind Abbr) u0) x4 (minus i (S n)) 
46359 H21)))))))))))) H14)) H13))))))))))) H8)) H7))) (\lambda (H6: (le i 
46360 n)).(ty3_abst g n c3 d u (csubst0_getl_ge i n H6 c c3 u0 H4 (CHead d (Bind 
46361 Abst) u) H0) t0 H1))))))) (\lambda (t3: T).(\lambda (H4: (subst0 i u0 (TLRef 
46362 n) t3)).(\lambda (c3: C).(\lambda (H5: (csubst0 i u0 c c3)).(\lambda (e: 
46363 C).(\lambda (H6: (getl i c (CHead e (Bind Abbr) u0))).(and_ind (eq nat n i) 
46364 (eq T t3 (lift (S n) O u0)) (ty3 g c3 t3 (lift (S n) O u)) (\lambda (H7: (eq 
46365 nat n i)).(\lambda (H8: (eq T t3 (lift (S n) O u0))).(eq_ind_r T (lift (S n) 
46366 O u0) (\lambda (t4: T).(ty3 g c3 t4 (lift (S n) O u))) (let H9 \def (eq_ind_r 
46367 nat i (\lambda (n: nat).(getl n c (CHead e (Bind Abbr) u0))) H6 n H7) in (let 
46368 H10 \def (eq_ind_r nat i (\lambda (n: nat).(csubst0 n u0 c c3)) H5 n H7) in 
46369 (let H11 \def (eq_ind C (CHead d (Bind Abst) u) (\lambda (c0: C).(getl n c 
46370 c0)) H0 (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abst) u) n H0 
46371 (CHead e (Bind Abbr) u0) H9)) in (let H12 \def (eq_ind C (CHead d (Bind Abst) 
46372 u) (\lambda (ee: C).(match ee return (\lambda (_: C).Prop) with [(CSort _) 
46373 \Rightarrow False | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
46374 K).Prop) with [(Bind b) \Rightarrow (match b return (\lambda (_: B).Prop) 
46375 with [Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow 
46376 False]) | (Flat _) \Rightarrow False])])) I (CHead e (Bind Abbr) u0) 
46377 (getl_mono c (CHead d (Bind Abst) u) n H0 (CHead e (Bind Abbr) u0) H9)) in 
46378 (False_ind (ty3 g c3 (lift (S n) O u0) (lift (S n) O u)) H12))))) t3 H8))) 
46379 (subst0_gen_lref u0 t3 i n H4)))))))) c2 t2 H3)))))))))))))) (\lambda (c: 
46380 C).(\lambda (u: T).(\lambda (t0: T).(\lambda (H0: (ty3 g c u t0)).(\lambda 
46381 (H1: ((\forall (i: nat).(\forall (u0: T).(\forall (c2: C).(\forall (t2: 
46382 T).((fsubst0 i u0 c u c2 t2) \to (\forall (e: C).((getl i c (CHead e (Bind 
46383 Abbr) u0)) \to (ty3 g c2 t2 t0)))))))))).(\lambda (b: B).(\lambda (t2: 
46384 T).(\lambda (t3: T).(\lambda (_: (ty3 g (CHead c (Bind b) u) t2 t3)).(\lambda 
46385 (H3: ((\forall (i: nat).(\forall (u0: T).(\forall (c2: C).(\forall (t4: 
46386 T).((fsubst0 i u0 (CHead c (Bind b) u) t2 c2 t4) \to (\forall (e: C).((getl i 
46387 (CHead c (Bind b) u) (CHead e (Bind Abbr) u0)) \to (ty3 g c2 t4 
46388 t3)))))))))).(\lambda (t4: T).(\lambda (H4: (ty3 g (CHead c (Bind b) u) t3 
46389 t4)).(\lambda (_: ((\forall (i: nat).(\forall (u0: T).(\forall (c2: 
46390 C).(\forall (t2: T).((fsubst0 i u0 (CHead c (Bind b) u) t3 c2 t2) \to 
46391 (\forall (e: C).((getl i (CHead c (Bind b) u) (CHead e (Bind Abbr) u0)) \to 
46392 (ty3 g c2 t2 t4)))))))))).(\lambda (i: nat).(\lambda (u0: T).(\lambda (c2: 
46393 C).(\lambda (t5: T).(\lambda (H6: (fsubst0 i u0 c (THead (Bind b) u t2) c2 
46394 t5)).(fsubst0_ind i u0 c (THead (Bind b) u t2) (\lambda (c0: C).(\lambda (t6: 
46395 T).(\forall (e: C).((getl i c (CHead e (Bind Abbr) u0)) \to (ty3 g c0 t6 
46396 (THead (Bind b) u t3)))))) (\lambda (t6: T).(\lambda (H7: (subst0 i u0 (THead 
46397 (Bind b) u t2) t6)).(\lambda (e: C).(\lambda (H8: (getl i c (CHead e (Bind 
46398 Abbr) u0))).(or3_ind (ex2 T (\lambda (u2: T).(eq T t6 (THead (Bind b) u2 
46399 t2))) (\lambda (u2: T).(subst0 i u0 u u2))) (ex2 T (\lambda (t7: T).(eq T t6 
46400 (THead (Bind b) u t7))) (\lambda (t7: T).(subst0 (s (Bind b) i) u0 t2 t7))) 
46401 (ex3_2 T T (\lambda (u2: T).(\lambda (t7: T).(eq T t6 (THead (Bind b) u2 
46402 t7)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: 
46403 T).(\lambda (t7: T).(subst0 (s (Bind b) i) u0 t2 t7)))) (ty3 g c t6 (THead 
46404 (Bind b) u t3)) (\lambda (H9: (ex2 T (\lambda (u2: T).(eq T t6 (THead (Bind 
46405 b) u2 t2))) (\lambda (u2: T).(subst0 i u0 u u2)))).(ex2_ind T (\lambda (u2: 
46406 T).(eq T t6 (THead (Bind b) u2 t2))) (\lambda (u2: T).(subst0 i u0 u u2)) 
46407 (ty3 g c t6 (THead (Bind b) u t3)) (\lambda (x: T).(\lambda (H10: (eq T t6 
46408 (THead (Bind b) x t2))).(\lambda (H11: (subst0 i u0 u x)).(eq_ind_r T (THead 
46409 (Bind b) x t2) (\lambda (t7: T).(ty3 g c t7 (THead (Bind b) u t3))) (ex_ind T 
46410 (\lambda (t7: T).(ty3 g (CHead c (Bind b) u) t4 t7)) (ty3 g c (THead (Bind b) 
46411 x t2) (THead (Bind b) u t3)) (\lambda (x0: T).(\lambda (H12: (ty3 g (CHead c 
46412 (Bind b) u) t4 x0)).(ex_ind T (\lambda (t7: T).(ty3 g (CHead c (Bind b) x) t3 
46413 t7)) (ty3 g c (THead (Bind b) x t2) (THead (Bind b) u t3)) (\lambda (x1: 
46414 T).(\lambda (H13: (ty3 g (CHead c (Bind b) x) t3 x1)).(ty3_conv g c (THead 
46415 (Bind b) u t3) (THead (Bind b) u t4) (ty3_bind g c u t0 H0 b t3 t4 H4 x0 H12) 
46416 (THead (Bind b) x t2) (THead (Bind b) x t3) (ty3_bind g c x t0 (H1 i u0 c x 
46417 (fsubst0_snd i u0 c u x H11) e H8) b t2 t3 (H3 (S i) u0 (CHead c (Bind b) x) 
46418 t2 (fsubst0_fst (S i) u0 (CHead c (Bind b) u) t2 (CHead c (Bind b) x) 
46419 (csubst0_snd_bind b i u0 u x H11 c)) e (getl_head (Bind b) i c (CHead e (Bind 
46420 Abbr) u0) H8 u)) x1 H13) (pc3_fsubst0 c (THead (Bind b) u t3) (THead (Bind b) 
46421 u t3) (pc3_refl c (THead (Bind b) u t3)) i u0 c (THead (Bind b) x t3) 
46422 (fsubst0_snd i u0 c (THead (Bind b) u t3) (THead (Bind b) x t3) (subst0_fst 
46423 u0 x u i H11 t3 (Bind b))) e H8)))) (ty3_correct g (CHead c (Bind b) x) t2 t3 
46424 (H3 (S i) u0 (CHead c (Bind b) x) t2 (fsubst0_fst (S i) u0 (CHead c (Bind b) 
46425 u) t2 (CHead c (Bind b) x) (csubst0_snd_bind b i u0 u x H11 c)) e (getl_head 
46426 (Bind b) i c (CHead e (Bind Abbr) u0) H8 u)))))) (ty3_correct g (CHead c 
46427 (Bind b) u) t3 t4 H4)) t6 H10)))) H9)) (\lambda (H9: (ex2 T (\lambda (t2: 
46428 T).(eq T t6 (THead (Bind b) u t2))) (\lambda (t3: T).(subst0 (s (Bind b) i) 
46429 u0 t2 t3)))).(ex2_ind T (\lambda (t7: T).(eq T t6 (THead (Bind b) u t7))) 
46430 (\lambda (t7: T).(subst0 (s (Bind b) i) u0 t2 t7)) (ty3 g c t6 (THead (Bind 
46431 b) u t3)) (\lambda (x: T).(\lambda (H10: (eq T t6 (THead (Bind b) u 
46432 x))).(\lambda (H11: (subst0 (s (Bind b) i) u0 t2 x)).(eq_ind_r T (THead (Bind 
46433 b) u x) (\lambda (t7: T).(ty3 g c t7 (THead (Bind b) u t3))) (ex_ind T 
46434 (\lambda (t7: T).(ty3 g (CHead c (Bind b) u) t3 t7)) (ty3 g c (THead (Bind b) 
46435 u x) (THead (Bind b) u t3)) (\lambda (x0: T).(\lambda (H12: (ty3 g (CHead c 
46436 (Bind b) u) t3 x0)).(ty3_bind g c u t0 H0 b x t3 (H3 (S i) u0 (CHead c (Bind 
46437 b) u) x (fsubst0_snd (S i) u0 (CHead c (Bind b) u) t2 x H11) e (getl_head 
46438 (Bind b) i c (CHead e (Bind Abbr) u0) H8 u)) x0 H12))) (ty3_correct g (CHead 
46439 c (Bind b) u) x t3 (H3 (S i) u0 (CHead c (Bind b) u) x (fsubst0_snd (S i) u0 
46440 (CHead c (Bind b) u) t2 x H11) e (getl_head (Bind b) i c (CHead e (Bind Abbr) 
46441 u0) H8 u)))) t6 H10)))) H9)) (\lambda (H9: (ex3_2 T T (\lambda (u2: 
46442 T).(\lambda (t2: T).(eq T t6 (THead (Bind b) u2 t2)))) (\lambda (u2: 
46443 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t3: 
46444 T).(subst0 (s (Bind b) i) u0 t2 t3))))).(ex3_2_ind T T (\lambda (u2: 
46445 T).(\lambda (t7: T).(eq T t6 (THead (Bind b) u2 t7)))) (\lambda (u2: 
46446 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t7: 
46447 T).(subst0 (s (Bind b) i) u0 t2 t7))) (ty3 g c t6 (THead (Bind b) u t3)) 
46448 (\lambda (x0: T).(\lambda (x1: T).(\lambda (H10: (eq T t6 (THead (Bind b) x0 
46449 x1))).(\lambda (H11: (subst0 i u0 u x0)).(\lambda (H12: (subst0 (s (Bind b) 
46450 i) u0 t2 x1)).(eq_ind_r T (THead (Bind b) x0 x1) (\lambda (t7: T).(ty3 g c t7 
46451 (THead (Bind b) u t3))) (ex_ind T (\lambda (t7: T).(ty3 g (CHead c (Bind b) 
46452 u) t4 t7)) (ty3 g c (THead (Bind b) x0 x1) (THead (Bind b) u t3)) (\lambda 
46453 (x: T).(\lambda (H13: (ty3 g (CHead c (Bind b) u) t4 x)).(ex_ind T (\lambda 
46454 (t7: T).(ty3 g (CHead c (Bind b) x0) t3 t7)) (ty3 g c (THead (Bind b) x0 x1) 
46455 (THead (Bind b) u t3)) (\lambda (x2: T).(\lambda (H14: (ty3 g (CHead c (Bind 
46456 b) x0) t3 x2)).(ty3_conv g c (THead (Bind b) u t3) (THead (Bind b) u t4) 
46457 (ty3_bind g c u t0 H0 b t3 t4 H4 x H13) (THead (Bind b) x0 x1) (THead (Bind 
46458 b) x0 t3) (ty3_bind g c x0 t0 (H1 i u0 c x0 (fsubst0_snd i u0 c u x0 H11) e 
46459 H8) b x1 t3 (H3 (S i) u0 (CHead c (Bind b) x0) x1 (fsubst0_both (S i) u0 
46460 (CHead c (Bind b) u) t2 x1 H12 (CHead c (Bind b) x0) (csubst0_snd_bind b i u0 
46461 u x0 H11 c)) e (getl_head (Bind b) i c (CHead e (Bind Abbr) u0) H8 u)) x2 
46462 H14) (pc3_fsubst0 c (THead (Bind b) u t3) (THead (Bind b) u t3) (pc3_refl c 
46463 (THead (Bind b) u t3)) i u0 c (THead (Bind b) x0 t3) (fsubst0_snd i u0 c 
46464 (THead (Bind b) u t3) (THead (Bind b) x0 t3) (subst0_fst u0 x0 u i H11 t3 
46465 (Bind b))) e H8)))) (ty3_correct g (CHead c (Bind b) x0) x1 t3 (H3 (S i) u0 
46466 (CHead c (Bind b) x0) x1 (fsubst0_both (S i) u0 (CHead c (Bind b) u) t2 x1 
46467 H12 (CHead c (Bind b) x0) (csubst0_snd_bind b i u0 u x0 H11 c)) e (getl_head 
46468 (Bind b) i c (CHead e (Bind Abbr) u0) H8 u)))))) (ty3_correct g (CHead c 
46469 (Bind b) u) t3 t4 H4)) t6 H10)))))) H9)) (subst0_gen_head (Bind b) u0 u t2 t6 
46470 i H7)))))) (\lambda (c3: C).(\lambda (H7: (csubst0 i u0 c c3)).(\lambda (e: 
46471 C).(\lambda (H8: (getl i c (CHead e (Bind Abbr) u0))).(ex_ind T (\lambda (t6: 
46472 T).(ty3 g (CHead c3 (Bind b) u) t3 t6)) (ty3 g c3 (THead (Bind b) u t2) 
46473 (THead (Bind b) u t3)) (\lambda (x: T).(\lambda (H9: (ty3 g (CHead c3 (Bind 
46474 b) u) t3 x)).(ty3_bind g c3 u t0 (H1 i u0 c3 u (fsubst0_fst i u0 c u c3 H7) e 
46475 H8) b t2 t3 (H3 (S i) u0 (CHead c3 (Bind b) u) t2 (fsubst0_fst (S i) u0 
46476 (CHead c (Bind b) u) t2 (CHead c3 (Bind b) u) (csubst0_fst_bind b i c c3 u0 
46477 H7 u)) e (getl_head (Bind b) i c (CHead e (Bind Abbr) u0) H8 u)) x H9))) 
46478 (ty3_correct g (CHead c3 (Bind b) u) t2 t3 (H3 (S i) u0 (CHead c3 (Bind b) u) 
46479 t2 (fsubst0_fst (S i) u0 (CHead c (Bind b) u) t2 (CHead c3 (Bind b) u) 
46480 (csubst0_fst_bind b i c c3 u0 H7 u)) e (getl_head (Bind b) i c (CHead e (Bind 
46481 Abbr) u0) H8 u)))))))) (\lambda (t6: T).(\lambda (H7: (subst0 i u0 (THead 
46482 (Bind b) u t2) t6)).(\lambda (c3: C).(\lambda (H8: (csubst0 i u0 c 
46483 c3)).(\lambda (e: C).(\lambda (H9: (getl i c (CHead e (Bind Abbr) 
46484 u0))).(or3_ind (ex2 T (\lambda (u2: T).(eq T t6 (THead (Bind b) u2 t2))) 
46485 (\lambda (u2: T).(subst0 i u0 u u2))) (ex2 T (\lambda (t7: T).(eq T t6 (THead 
46486 (Bind b) u t7))) (\lambda (t7: T).(subst0 (s (Bind b) i) u0 t2 t7))) (ex3_2 T 
46487 T (\lambda (u2: T).(\lambda (t7: T).(eq T t6 (THead (Bind b) u2 t7)))) 
46488 (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: 
46489 T).(\lambda (t7: T).(subst0 (s (Bind b) i) u0 t2 t7)))) (ty3 g c3 t6 (THead 
46490 (Bind b) u t3)) (\lambda (H10: (ex2 T (\lambda (u2: T).(eq T t6 (THead (Bind 
46491 b) u2 t2))) (\lambda (u2: T).(subst0 i u0 u u2)))).(ex2_ind T (\lambda (u2: 
46492 T).(eq T t6 (THead (Bind b) u2 t2))) (\lambda (u2: T).(subst0 i u0 u u2)) 
46493 (ty3 g c3 t6 (THead (Bind b) u t3)) (\lambda (x: T).(\lambda (H11: (eq T t6 
46494 (THead (Bind b) x t2))).(\lambda (H12: (subst0 i u0 u x)).(eq_ind_r T (THead 
46495 (Bind b) x t2) (\lambda (t7: T).(ty3 g c3 t7 (THead (Bind b) u t3))) (ex_ind 
46496 T (\lambda (t7: T).(ty3 g (CHead c3 (Bind b) u) t3 t7)) (ty3 g c3 (THead 
46497 (Bind b) x t2) (THead (Bind b) u t3)) (\lambda (x0: T).(\lambda (H13: (ty3 g 
46498 (CHead c3 (Bind b) u) t3 x0)).(ex_ind T (\lambda (t7: T).(ty3 g (CHead c3 
46499 (Bind b) u) x0 t7)) (ty3 g c3 (THead (Bind b) x t2) (THead (Bind b) u t3)) 
46500 (\lambda (x1: T).(\lambda (H14: (ty3 g (CHead c3 (Bind b) u) x0 x1)).(ex_ind 
46501 T (\lambda (t7: T).(ty3 g (CHead c3 (Bind b) x) t3 t7)) (ty3 g c3 (THead 
46502 (Bind b) x t2) (THead (Bind b) u t3)) (\lambda (x2: T).(\lambda (H15: (ty3 g 
46503 (CHead c3 (Bind b) x) t3 x2)).(ty3_conv g c3 (THead (Bind b) u t3) (THead 
46504 (Bind b) u x0) (ty3_bind g c3 u t0 (H1 i u0 c3 u (fsubst0_fst i u0 c u c3 H8) 
46505 e H9) b t3 x0 H13 x1 H14) (THead (Bind b) x t2) (THead (Bind b) x t3) 
46506 (ty3_bind g c3 x t0 (H1 i u0 c3 x (fsubst0_both i u0 c u x H12 c3 H8) e H9) b 
46507 t2 t3 (H3 (S i) u0 (CHead c3 (Bind b) x) t2 (fsubst0_fst (S i) u0 (CHead c 
46508 (Bind b) u) t2 (CHead c3 (Bind b) x) (csubst0_both_bind b i u0 u x H12 c c3 
46509 H8)) e (getl_head (Bind b) i c (CHead e (Bind Abbr) u0) H9 u)) x2 H15) 
46510 (pc3_fsubst0 c (THead (Bind b) u t3) (THead (Bind b) u t3) (pc3_refl c (THead 
46511 (Bind b) u t3)) i u0 c3 (THead (Bind b) x t3) (fsubst0_both i u0 c (THead 
46512 (Bind b) u t3) (THead (Bind b) x t3) (subst0_fst u0 x u i H12 t3 (Bind b)) c3 
46513 H8) e H9)))) (ty3_correct g (CHead c3 (Bind b) x) t2 t3 (H3 (S i) u0 (CHead 
46514 c3 (Bind b) x) t2 (fsubst0_fst (S i) u0 (CHead c (Bind b) u) t2 (CHead c3 
46515 (Bind b) x) (csubst0_both_bind b i u0 u x H12 c c3 H8)) e (getl_head (Bind b) 
46516 i c (CHead e (Bind Abbr) u0) H9 u)))))) (ty3_correct g (CHead c3 (Bind b) u) 
46517 t3 x0 H13)))) (ty3_correct g (CHead c3 (Bind b) u) t2 t3 (H3 (S i) u0 (CHead 
46518 c3 (Bind b) u) t2 (fsubst0_fst (S i) u0 (CHead c (Bind b) u) t2 (CHead c3 
46519 (Bind b) u) (csubst0_fst_bind b i c c3 u0 H8 u)) e (getl_head (Bind b) i c 
46520 (CHead e (Bind Abbr) u0) H9 u)))) t6 H11)))) H10)) (\lambda (H10: (ex2 T 
46521 (\lambda (t2: T).(eq T t6 (THead (Bind b) u t2))) (\lambda (t3: T).(subst0 (s 
46522 (Bind b) i) u0 t2 t3)))).(ex2_ind T (\lambda (t7: T).(eq T t6 (THead (Bind b) 
46523 u t7))) (\lambda (t7: T).(subst0 (s (Bind b) i) u0 t2 t7)) (ty3 g c3 t6 
46524 (THead (Bind b) u t3)) (\lambda (x: T).(\lambda (H11: (eq T t6 (THead (Bind 
46525 b) u x))).(\lambda (H12: (subst0 (s (Bind b) i) u0 t2 x)).(eq_ind_r T (THead 
46526 (Bind b) u x) (\lambda (t7: T).(ty3 g c3 t7 (THead (Bind b) u t3))) (ex_ind T 
46527 (\lambda (t7: T).(ty3 g (CHead c3 (Bind b) u) t3 t7)) (ty3 g c3 (THead (Bind 
46528 b) u x) (THead (Bind b) u t3)) (\lambda (x0: T).(\lambda (H13: (ty3 g (CHead 
46529 c3 (Bind b) u) t3 x0)).(ty3_bind g c3 u t0 (H1 i u0 c3 u (fsubst0_fst i u0 c 
46530 u c3 H8) e H9) b x t3 (H3 (S i) u0 (CHead c3 (Bind b) u) x (fsubst0_both (S 
46531 i) u0 (CHead c (Bind b) u) t2 x H12 (CHead c3 (Bind b) u) (csubst0_fst_bind b 
46532 i c c3 u0 H8 u)) e (getl_head (Bind b) i c (CHead e (Bind Abbr) u0) H9 u)) x0 
46533 H13))) (ty3_correct g (CHead c3 (Bind b) u) x t3 (H3 (S i) u0 (CHead c3 (Bind 
46534 b) u) x (fsubst0_both (S i) u0 (CHead c (Bind b) u) t2 x H12 (CHead c3 (Bind 
46535 b) u) (csubst0_fst_bind b i c c3 u0 H8 u)) e (getl_head (Bind b) i c (CHead e 
46536 (Bind Abbr) u0) H9 u)))) t6 H11)))) H10)) (\lambda (H10: (ex3_2 T T (\lambda 
46537 (u2: T).(\lambda (t2: T).(eq T t6 (THead (Bind b) u2 t2)))) (\lambda (u2: 
46538 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t3: 
46539 T).(subst0 (s (Bind b) i) u0 t2 t3))))).(ex3_2_ind T T (\lambda (u2: 
46540 T).(\lambda (t7: T).(eq T t6 (THead (Bind b) u2 t7)))) (\lambda (u2: 
46541 T).(\lambda (_: T).(subst0 i u0 u u2))) (\lambda (_: T).(\lambda (t7: 
46542 T).(subst0 (s (Bind b) i) u0 t2 t7))) (ty3 g c3 t6 (THead (Bind b) u t3)) 
46543 (\lambda (x0: T).(\lambda (x1: T).(\lambda (H11: (eq T t6 (THead (Bind b) x0 
46544 x1))).(\lambda (H12: (subst0 i u0 u x0)).(\lambda (H13: (subst0 (s (Bind b) 
46545 i) u0 t2 x1)).(eq_ind_r T (THead (Bind b) x0 x1) (\lambda (t7: T).(ty3 g c3 
46546 t7 (THead (Bind b) u t3))) (ex_ind T (\lambda (t7: T).(ty3 g (CHead c3 (Bind 
46547 b) u) t3 t7)) (ty3 g c3 (THead (Bind b) x0 x1) (THead (Bind b) u t3)) 
46548 (\lambda (x: T).(\lambda (H14: (ty3 g (CHead c3 (Bind b) u) t3 x)).(ex_ind T 
46549 (\lambda (t7: T).(ty3 g (CHead c3 (Bind b) u) x t7)) (ty3 g c3 (THead (Bind 
46550 b) x0 x1) (THead (Bind b) u t3)) (\lambda (x2: T).(\lambda (H15: (ty3 g 
46551 (CHead c3 (Bind b) u) x x2)).(ex_ind T (\lambda (t7: T).(ty3 g (CHead c3 
46552 (Bind b) x0) t3 t7)) (ty3 g c3 (THead (Bind b) x0 x1) (THead (Bind b) u t3)) 
46553 (\lambda (x3: T).(\lambda (H16: (ty3 g (CHead c3 (Bind b) x0) t3 
46554 x3)).(ty3_conv g c3 (THead (Bind b) u t3) (THead (Bind b) u x) (ty3_bind g c3 
46555 u t0 (H1 i u0 c3 u (fsubst0_fst i u0 c u c3 H8) e H9) b t3 x H14 x2 H15) 
46556 (THead (Bind b) x0 x1) (THead (Bind b) x0 t3) (ty3_bind g c3 x0 t0 (H1 i u0 
46557 c3 x0 (fsubst0_both i u0 c u x0 H12 c3 H8) e H9) b x1 t3 (H3 (S i) u0 (CHead 
46558 c3 (Bind b) x0) x1 (fsubst0_both (S i) u0 (CHead c (Bind b) u) t2 x1 H13 
46559 (CHead c3 (Bind b) x0) (csubst0_both_bind b i u0 u x0 H12 c c3 H8)) e 
46560 (getl_head (Bind b) i c (CHead e (Bind Abbr) u0) H9 u)) x3 H16) (pc3_fsubst0 
46561 c (THead (Bind b) u t3) (THead (Bind b) u t3) (pc3_refl c (THead (Bind b) u 
46562 t3)) i u0 c3 (THead (Bind b) x0 t3) (fsubst0_both i u0 c (THead (Bind b) u 
46563 t3) (THead (Bind b) x0 t3) (subst0_fst u0 x0 u i H12 t3 (Bind b)) c3 H8) e 
46564 H9)))) (ty3_correct g (CHead c3 (Bind b) x0) x1 t3 (H3 (S i) u0 (CHead c3 
46565 (Bind b) x0) x1 (fsubst0_both (S i) u0 (CHead c (Bind b) u) t2 x1 H13 (CHead 
46566 c3 (Bind b) x0) (csubst0_both_bind b i u0 u x0 H12 c c3 H8)) e (getl_head 
46567 (Bind b) i c (CHead e (Bind Abbr) u0) H9 u)))))) (ty3_correct g (CHead c3 
46568 (Bind b) u) t3 x H14)))) (ty3_correct g (CHead c3 (Bind b) u) t2 t3 (H3 (S i) 
46569 u0 (CHead c3 (Bind b) u) t2 (fsubst0_fst (S i) u0 (CHead c (Bind b) u) t2 
46570 (CHead c3 (Bind b) u) (csubst0_fst_bind b i c c3 u0 H8 u)) e (getl_head (Bind 
46571 b) i c (CHead e (Bind Abbr) u0) H9 u)))) t6 H11)))))) H10)) (subst0_gen_head 
46572 (Bind b) u0 u t2 t6 i H7)))))))) c2 t5 H6))))))))))))))))))) (\lambda (c: 
46573 C).(\lambda (w: T).(\lambda (u: T).(\lambda (H0: (ty3 g c w u)).(\lambda (H1: 
46574 ((\forall (i: nat).(\forall (u0: T).(\forall (c2: C).(\forall (t2: 
46575 T).((fsubst0 i u0 c w c2 t2) \to (\forall (e: C).((getl i c (CHead e (Bind 
46576 Abbr) u0)) \to (ty3 g c2 t2 u)))))))))).(\lambda (v: T).(\lambda (t0: 
46577 T).(\lambda (H2: (ty3 g c v (THead (Bind Abst) u t0))).(\lambda (H3: 
46578 ((\forall (i: nat).(\forall (u0: T).(\forall (c2: C).(\forall (t2: 
46579 T).((fsubst0 i u0 c v c2 t2) \to (\forall (e: C).((getl i c (CHead e (Bind 
46580 Abbr) u0)) \to (ty3 g c2 t2 (THead (Bind Abst) u t0))))))))))).(\lambda (i: 
46581 nat).(\lambda (u0: T).(\lambda (c2: C).(\lambda (t2: T).(\lambda (H4: 
46582 (fsubst0 i u0 c (THead (Flat Appl) w v) c2 t2)).(fsubst0_ind i u0 c (THead 
46583 (Flat Appl) w v) (\lambda (c0: C).(\lambda (t3: T).(\forall (e: C).((getl i c 
46584 (CHead e (Bind Abbr) u0)) \to (ty3 g c0 t3 (THead (Flat Appl) w (THead (Bind 
46585 Abst) u t0))))))) (\lambda (t3: T).(\lambda (H5: (subst0 i u0 (THead (Flat 
46586 Appl) w v) t3)).(\lambda (e: C).(\lambda (H6: (getl i c (CHead e (Bind Abbr) 
46587 u0))).(or3_ind (ex2 T (\lambda (u2: T).(eq T t3 (THead (Flat Appl) u2 v))) 
46588 (\lambda (u2: T).(subst0 i u0 w u2))) (ex2 T (\lambda (t4: T).(eq T t3 (THead 
46589 (Flat Appl) w t4))) (\lambda (t4: T).(subst0 (s (Flat Appl) i) u0 v t4))) 
46590 (ex3_2 T T (\lambda (u2: T).(\lambda (t4: T).(eq T t3 (THead (Flat Appl) u2 
46591 t4)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 w u2))) (\lambda (_: 
46592 T).(\lambda (t4: T).(subst0 (s (Flat Appl) i) u0 v t4)))) (ty3 g c t3 (THead 
46593 (Flat Appl) w (THead (Bind Abst) u t0))) (\lambda (H7: (ex2 T (\lambda (u2: 
46594 T).(eq T t3 (THead (Flat Appl) u2 v))) (\lambda (u2: T).(subst0 i u0 w 
46595 u2)))).(ex2_ind T (\lambda (u2: T).(eq T t3 (THead (Flat Appl) u2 v))) 
46596 (\lambda (u2: T).(subst0 i u0 w u2)) (ty3 g c t3 (THead (Flat Appl) w (THead 
46597 (Bind Abst) u t0))) (\lambda (x: T).(\lambda (H8: (eq T t3 (THead (Flat Appl) 
46598 x v))).(\lambda (H9: (subst0 i u0 w x)).(eq_ind_r T (THead (Flat Appl) x v) 
46599 (\lambda (t4: T).(ty3 g c t4 (THead (Flat Appl) w (THead (Bind Abst) u t0)))) 
46600 (ex_ind T (\lambda (t4: T).(ty3 g c (THead (Bind Abst) u t0) t4)) (ty3 g c 
46601 (THead (Flat Appl) x v) (THead (Flat Appl) w (THead (Bind Abst) u t0))) 
46602 (\lambda (x0: T).(\lambda (H10: (ty3 g c (THead (Bind Abst) u t0) 
46603 x0)).(ex4_3_ind T T T (\lambda (t4: T).(\lambda (_: T).(\lambda (_: T).(pc3 c 
46604 (THead (Bind Abst) u t4) x0)))) (\lambda (_: T).(\lambda (t5: T).(\lambda (_: 
46605 T).(ty3 g c u t5)))) (\lambda (t4: T).(\lambda (_: T).(\lambda (_: T).(ty3 g 
46606 (CHead c (Bind Abst) u) t0 t4)))) (\lambda (t4: T).(\lambda (_: T).(\lambda 
46607 (t6: T).(ty3 g (CHead c (Bind Abst) u) t4 t6)))) (ty3 g c (THead (Flat Appl) 
46608 x v) (THead (Flat Appl) w (THead (Bind Abst) u t0))) (\lambda (x1: 
46609 T).(\lambda (x2: T).(\lambda (x3: T).(\lambda (_: (pc3 c (THead (Bind Abst) u 
46610 x1) x0)).(\lambda (_: (ty3 g c u x2)).(\lambda (H13: (ty3 g (CHead c (Bind 
46611 Abst) u) t0 x1)).(\lambda (H14: (ty3 g (CHead c (Bind Abst) u) x1 
46612 x3)).(ex_ind T (\lambda (t4: T).(ty3 g c u t4)) (ty3 g c (THead (Flat Appl) x 
46613 v) (THead (Flat Appl) w (THead (Bind Abst) u t0))) (\lambda (x4: T).(\lambda 
46614 (H15: (ty3 g c u x4)).(ty3_conv g c (THead (Flat Appl) w (THead (Bind Abst) u 
46615 t0)) (THead (Flat Appl) w (THead (Bind Abst) u x1)) (ty3_appl g c w u H0 
46616 (THead (Bind Abst) u t0) x1 (ty3_bind g c u x4 H15 Abst t0 x1 H13 x3 H14)) 
46617 (THead (Flat Appl) x v) (THead (Flat Appl) x (THead (Bind Abst) u t0)) 
46618 (ty3_appl g c x u (H1 i u0 c x (fsubst0_snd i u0 c w x H9) e H6) v t0 H2) 
46619 (pc3_fsubst0 c (THead (Flat Appl) w (THead (Bind Abst) u t0)) (THead (Flat 
46620 Appl) w (THead (Bind Abst) u t0)) (pc3_refl c (THead (Flat Appl) w (THead 
46621 (Bind Abst) u t0))) i u0 c (THead (Flat Appl) x (THead (Bind Abst) u t0)) 
46622 (fsubst0_snd i u0 c (THead (Flat Appl) w (THead (Bind Abst) u t0)) (THead 
46623 (Flat Appl) x (THead (Bind Abst) u t0)) (subst0_fst u0 x w i H9 (THead (Bind 
46624 Abst) u t0) (Flat Appl))) e H6)))) (ty3_correct g c x u (H1 i u0 c x 
46625 (fsubst0_snd i u0 c w x H9) e H6)))))))))) (ty3_gen_bind g Abst c u t0 x0 
46626 H10)))) (ty3_correct g c v (THead (Bind Abst) u t0) H2)) t3 H8)))) H7)) 
46627 (\lambda (H7: (ex2 T (\lambda (t2: T).(eq T t3 (THead (Flat Appl) w t2))) 
46628 (\lambda (t2: T).(subst0 (s (Flat Appl) i) u0 v t2)))).(ex2_ind T (\lambda 
46629 (t4: T).(eq T t3 (THead (Flat Appl) w t4))) (\lambda (t4: T).(subst0 (s (Flat 
46630 Appl) i) u0 v t4)) (ty3 g c t3 (THead (Flat Appl) w (THead (Bind Abst) u 
46631 t0))) (\lambda (x: T).(\lambda (H8: (eq T t3 (THead (Flat Appl) w 
46632 x))).(\lambda (H9: (subst0 (s (Flat Appl) i) u0 v x)).(eq_ind_r T (THead 
46633 (Flat Appl) w x) (\lambda (t4: T).(ty3 g c t4 (THead (Flat Appl) w (THead 
46634 (Bind Abst) u t0)))) (ty3_appl g c w u H0 x t0 (H3 (s (Flat Appl) i) u0 c x 
46635 (fsubst0_snd (s (Flat Appl) i) u0 c v x H9) e H6)) t3 H8)))) H7)) (\lambda 
46636 (H7: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t3 (THead (Flat Appl) 
46637 u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 w u2))) (\lambda (_: 
46638 T).(\lambda (t2: T).(subst0 (s (Flat Appl) i) u0 v t2))))).(ex3_2_ind T T 
46639 (\lambda (u2: T).(\lambda (t4: T).(eq T t3 (THead (Flat Appl) u2 t4)))) 
46640 (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 w u2))) (\lambda (_: 
46641 T).(\lambda (t4: T).(subst0 (s (Flat Appl) i) u0 v t4))) (ty3 g c t3 (THead 
46642 (Flat Appl) w (THead (Bind Abst) u t0))) (\lambda (x0: T).(\lambda (x1: 
46643 T).(\lambda (H8: (eq T t3 (THead (Flat Appl) x0 x1))).(\lambda (H9: (subst0 i 
46644 u0 w x0)).(\lambda (H10: (subst0 (s (Flat Appl) i) u0 v x1)).(eq_ind_r T 
46645 (THead (Flat Appl) x0 x1) (\lambda (t4: T).(ty3 g c t4 (THead (Flat Appl) w 
46646 (THead (Bind Abst) u t0)))) (ex_ind T (\lambda (t4: T).(ty3 g c (THead (Bind 
46647 Abst) u t0) t4)) (ty3 g c (THead (Flat Appl) x0 x1) (THead (Flat Appl) w 
46648 (THead (Bind Abst) u t0))) (\lambda (x: T).(\lambda (H11: (ty3 g c (THead 
46649 (Bind Abst) u t0) x)).(ex4_3_ind T T T (\lambda (t4: T).(\lambda (_: 
46650 T).(\lambda (_: T).(pc3 c (THead (Bind Abst) u t4) x)))) (\lambda (_: 
46651 T).(\lambda (t5: T).(\lambda (_: T).(ty3 g c u t5)))) (\lambda (t4: 
46652 T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) u) t0 t4)))) 
46653 (\lambda (t4: T).(\lambda (_: T).(\lambda (t6: T).(ty3 g (CHead c (Bind Abst) 
46654 u) t4 t6)))) (ty3 g c (THead (Flat Appl) x0 x1) (THead (Flat Appl) w (THead 
46655 (Bind Abst) u t0))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (x4: 
46656 T).(\lambda (_: (pc3 c (THead (Bind Abst) u x2) x)).(\lambda (_: (ty3 g c u 
46657 x3)).(\lambda (H14: (ty3 g (CHead c (Bind Abst) u) t0 x2)).(\lambda (H15: 
46658 (ty3 g (CHead c (Bind Abst) u) x2 x4)).(ex_ind T (\lambda (t4: T).(ty3 g c u 
46659 t4)) (ty3 g c (THead (Flat Appl) x0 x1) (THead (Flat Appl) w (THead (Bind 
46660 Abst) u t0))) (\lambda (x5: T).(\lambda (H16: (ty3 g c u x5)).(ty3_conv g c 
46661 (THead (Flat Appl) w (THead (Bind Abst) u t0)) (THead (Flat Appl) w (THead 
46662 (Bind Abst) u x2)) (ty3_appl g c w u H0 (THead (Bind Abst) u t0) x2 (ty3_bind 
46663 g c u x5 H16 Abst t0 x2 H14 x4 H15)) (THead (Flat Appl) x0 x1) (THead (Flat 
46664 Appl) x0 (THead (Bind Abst) u t0)) (ty3_appl g c x0 u (H1 i u0 c x0 
46665 (fsubst0_snd i u0 c w x0 H9) e H6) x1 t0 (H3 (s (Flat Appl) i) u0 c x1 
46666 (fsubst0_snd (s (Flat Appl) i) u0 c v x1 H10) e H6)) (pc3_fsubst0 c (THead 
46667 (Flat Appl) w (THead (Bind Abst) u t0)) (THead (Flat Appl) w (THead (Bind 
46668 Abst) u t0)) (pc3_refl c (THead (Flat Appl) w (THead (Bind Abst) u t0))) i u0 
46669 c (THead (Flat Appl) x0 (THead (Bind Abst) u t0)) (fsubst0_snd i u0 c (THead 
46670 (Flat Appl) w (THead (Bind Abst) u t0)) (THead (Flat Appl) x0 (THead (Bind 
46671 Abst) u t0)) (subst0_fst u0 x0 w i H9 (THead (Bind Abst) u t0) (Flat Appl))) 
46672 e H6)))) (ty3_correct g c w u H0))))))))) (ty3_gen_bind g Abst c u t0 x 
46673 H11)))) (ty3_correct g c v (THead (Bind Abst) u t0) H2)) t3 H8)))))) H7)) 
46674 (subst0_gen_head (Flat Appl) u0 w v t3 i H5)))))) (\lambda (c3: C).(\lambda 
46675 (H5: (csubst0 i u0 c c3)).(\lambda (e: C).(\lambda (H6: (getl i c (CHead e 
46676 (Bind Abbr) u0))).(ty3_appl g c3 w u (H1 i u0 c3 w (fsubst0_fst i u0 c w c3 
46677 H5) e H6) v t0 (H3 i u0 c3 v (fsubst0_fst i u0 c v c3 H5) e H6)))))) (\lambda 
46678 (t3: T).(\lambda (H5: (subst0 i u0 (THead (Flat Appl) w v) t3)).(\lambda (c3: 
46679 C).(\lambda (H6: (csubst0 i u0 c c3)).(\lambda (e: C).(\lambda (H7: (getl i c 
46680 (CHead e (Bind Abbr) u0))).(or3_ind (ex2 T (\lambda (u2: T).(eq T t3 (THead 
46681 (Flat Appl) u2 v))) (\lambda (u2: T).(subst0 i u0 w u2))) (ex2 T (\lambda 
46682 (t4: T).(eq T t3 (THead (Flat Appl) w t4))) (\lambda (t4: T).(subst0 (s (Flat 
46683 Appl) i) u0 v t4))) (ex3_2 T T (\lambda (u2: T).(\lambda (t4: T).(eq T t3 
46684 (THead (Flat Appl) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u0 w 
46685 u2))) (\lambda (_: T).(\lambda (t4: T).(subst0 (s (Flat Appl) i) u0 v t4)))) 
46686 (ty3 g c3 t3 (THead (Flat Appl) w (THead (Bind Abst) u t0))) (\lambda (H8: 
46687 (ex2 T (\lambda (u2: T).(eq T t3 (THead (Flat Appl) u2 v))) (\lambda (u2: 
46688 T).(subst0 i u0 w u2)))).(ex2_ind T (\lambda (u2: T).(eq T t3 (THead (Flat 
46689 Appl) u2 v))) (\lambda (u2: T).(subst0 i u0 w u2)) (ty3 g c3 t3 (THead (Flat 
46690 Appl) w (THead (Bind Abst) u t0))) (\lambda (x: T).(\lambda (H9: (eq T t3 
46691 (THead (Flat Appl) x v))).(\lambda (H10: (subst0 i u0 w x)).(eq_ind_r T 
46692 (THead (Flat Appl) x v) (\lambda (t4: T).(ty3 g c3 t4 (THead (Flat Appl) w 
46693 (THead (Bind Abst) u t0)))) (ex_ind T (\lambda (t4: T).(ty3 g c3 (THead (Bind 
46694 Abst) u t0) t4)) (ty3 g c3 (THead (Flat Appl) x v) (THead (Flat Appl) w 
46695 (THead (Bind Abst) u t0))) (\lambda (x0: T).(\lambda (H11: (ty3 g c3 (THead 
46696 (Bind Abst) u t0) x0)).(ex4_3_ind T T T (\lambda (t4: T).(\lambda (_: 
46697 T).(\lambda (_: T).(pc3 c3 (THead (Bind Abst) u t4) x0)))) (\lambda (_: 
46698 T).(\lambda (t5: T).(\lambda (_: T).(ty3 g c3 u t5)))) (\lambda (t4: 
46699 T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c3 (Bind Abst) u) t0 t4)))) 
46700 (\lambda (t4: T).(\lambda (_: T).(\lambda (t6: T).(ty3 g (CHead c3 (Bind 
46701 Abst) u) t4 t6)))) (ty3 g c3 (THead (Flat Appl) x v) (THead (Flat Appl) w 
46702 (THead (Bind Abst) u t0))) (\lambda (x1: T).(\lambda (x2: T).(\lambda (x3: 
46703 T).(\lambda (_: (pc3 c3 (THead (Bind Abst) u x1) x0)).(\lambda (H13: (ty3 g 
46704 c3 u x2)).(\lambda (H14: (ty3 g (CHead c3 (Bind Abst) u) t0 x1)).(\lambda 
46705 (H15: (ty3 g (CHead c3 (Bind Abst) u) x1 x3)).(ty3_conv g c3 (THead (Flat 
46706 Appl) w (THead (Bind Abst) u t0)) (THead (Flat Appl) w (THead (Bind Abst) u 
46707 x1)) (ty3_appl g c3 w u (H1 i u0 c3 w (fsubst0_fst i u0 c w c3 H6) e H7) 
46708 (THead (Bind Abst) u t0) x1 (ty3_bind g c3 u x2 H13 Abst t0 x1 H14 x3 H15)) 
46709 (THead (Flat Appl) x v) (THead (Flat Appl) x (THead (Bind Abst) u t0)) 
46710 (ty3_appl g c3 x u (H1 i u0 c3 x (fsubst0_both i u0 c w x H10 c3 H6) e H7) v 
46711 t0 (H3 i u0 c3 v (fsubst0_fst i u0 c v c3 H6) e H7)) (pc3_fsubst0 c (THead 
46712 (Flat Appl) w (THead (Bind Abst) u t0)) (THead (Flat Appl) w (THead (Bind 
46713 Abst) u t0)) (pc3_refl c (THead (Flat Appl) w (THead (Bind Abst) u t0))) i u0 
46714 c3 (THead (Flat Appl) x (THead (Bind Abst) u t0)) (fsubst0_both i u0 c (THead 
46715 (Flat Appl) w (THead (Bind Abst) u t0)) (THead (Flat Appl) x (THead (Bind 
46716 Abst) u t0)) (subst0_fst u0 x w i H10 (THead (Bind Abst) u t0) (Flat Appl)) 
46717 c3 H6) e H7))))))))) (ty3_gen_bind g Abst c3 u t0 x0 H11)))) (ty3_correct g 
46718 c3 v (THead (Bind Abst) u t0) (H3 i u0 c3 v (fsubst0_fst i u0 c v c3 H6) e 
46719 H7))) t3 H9)))) H8)) (\lambda (H8: (ex2 T (\lambda (t2: T).(eq T t3 (THead 
46720 (Flat Appl) w t2))) (\lambda (t2: T).(subst0 (s (Flat Appl) i) u0 v 
46721 t2)))).(ex2_ind T (\lambda (t4: T).(eq T t3 (THead (Flat Appl) w t4))) 
46722 (\lambda (t4: T).(subst0 (s (Flat Appl) i) u0 v t4)) (ty3 g c3 t3 (THead 
46723 (Flat Appl) w (THead (Bind Abst) u t0))) (\lambda (x: T).(\lambda (H9: (eq T 
46724 t3 (THead (Flat Appl) w x))).(\lambda (H10: (subst0 (s (Flat Appl) i) u0 v 
46725 x)).(eq_ind_r T (THead (Flat Appl) w x) (\lambda (t4: T).(ty3 g c3 t4 (THead 
46726 (Flat Appl) w (THead (Bind Abst) u t0)))) (ty3_appl g c3 w u (H1 i u0 c3 w 
46727 (fsubst0_fst i u0 c w c3 H6) e H7) x t0 (H3 i u0 c3 x (fsubst0_both i u0 c v 
46728 x H10 c3 H6) e H7)) t3 H9)))) H8)) (\lambda (H8: (ex3_2 T T (\lambda (u2: 
46729 T).(\lambda (t2: T).(eq T t3 (THead (Flat Appl) u2 t2)))) (\lambda (u2: 
46730 T).(\lambda (_: T).(subst0 i u0 w u2))) (\lambda (_: T).(\lambda (t2: 
46731 T).(subst0 (s (Flat Appl) i) u0 v t2))))).(ex3_2_ind T T (\lambda (u2: 
46732 T).(\lambda (t4: T).(eq T t3 (THead (Flat Appl) u2 t4)))) (\lambda (u2: 
46733 T).(\lambda (_: T).(subst0 i u0 w u2))) (\lambda (_: T).(\lambda (t4: 
46734 T).(subst0 (s (Flat Appl) i) u0 v t4))) (ty3 g c3 t3 (THead (Flat Appl) w 
46735 (THead (Bind Abst) u t0))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H9: 
46736 (eq T t3 (THead (Flat Appl) x0 x1))).(\lambda (H10: (subst0 i u0 w 
46737 x0)).(\lambda (H11: (subst0 (s (Flat Appl) i) u0 v x1)).(eq_ind_r T (THead 
46738 (Flat Appl) x0 x1) (\lambda (t4: T).(ty3 g c3 t4 (THead (Flat Appl) w (THead 
46739 (Bind Abst) u t0)))) (ex_ind T (\lambda (t4: T).(ty3 g c3 (THead (Bind Abst) 
46740 u t0) t4)) (ty3 g c3 (THead (Flat Appl) x0 x1) (THead (Flat Appl) w (THead 
46741 (Bind Abst) u t0))) (\lambda (x: T).(\lambda (H12: (ty3 g c3 (THead (Bind 
46742 Abst) u t0) x)).(ex4_3_ind T T T (\lambda (t4: T).(\lambda (_: T).(\lambda 
46743 (_: T).(pc3 c3 (THead (Bind Abst) u t4) x)))) (\lambda (_: T).(\lambda (t5: 
46744 T).(\lambda (_: T).(ty3 g c3 u t5)))) (\lambda (t4: T).(\lambda (_: 
46745 T).(\lambda (_: T).(ty3 g (CHead c3 (Bind Abst) u) t0 t4)))) (\lambda (t4: 
46746 T).(\lambda (_: T).(\lambda (t6: T).(ty3 g (CHead c3 (Bind Abst) u) t4 t6)))) 
46747 (ty3 g c3 (THead (Flat Appl) x0 x1) (THead (Flat Appl) w (THead (Bind Abst) u 
46748 t0))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (x4: T).(\lambda (_: (pc3 c3 
46749 (THead (Bind Abst) u x2) x)).(\lambda (_: (ty3 g c3 u x3)).(\lambda (H15: 
46750 (ty3 g (CHead c3 (Bind Abst) u) t0 x2)).(\lambda (H16: (ty3 g (CHead c3 (Bind 
46751 Abst) u) x2 x4)).(ex_ind T (\lambda (t4: T).(ty3 g c3 u t4)) (ty3 g c3 (THead 
46752 (Flat Appl) x0 x1) (THead (Flat Appl) w (THead (Bind Abst) u t0))) (\lambda 
46753 (x5: T).(\lambda (H17: (ty3 g c3 u x5)).(ty3_conv g c3 (THead (Flat Appl) w 
46754 (THead (Bind Abst) u t0)) (THead (Flat Appl) w (THead (Bind Abst) u x2)) 
46755 (ty3_appl g c3 w u (H1 i u0 c3 w (fsubst0_fst i u0 c w c3 H6) e H7) (THead 
46756 (Bind Abst) u t0) x2 (ty3_bind g c3 u x5 H17 Abst t0 x2 H15 x4 H16)) (THead 
46757 (Flat Appl) x0 x1) (THead (Flat Appl) x0 (THead (Bind Abst) u t0)) (ty3_appl 
46758 g c3 x0 u (H1 i u0 c3 x0 (fsubst0_both i u0 c w x0 H10 c3 H6) e H7) x1 t0 (H3 
46759 i u0 c3 x1 (fsubst0_both i u0 c v x1 H11 c3 H6) e H7)) (pc3_fsubst0 c (THead 
46760 (Flat Appl) w (THead (Bind Abst) u t0)) (THead (Flat Appl) w (THead (Bind 
46761 Abst) u t0)) (pc3_refl c (THead (Flat Appl) w (THead (Bind Abst) u t0))) i u0 
46762 c3 (THead (Flat Appl) x0 (THead (Bind Abst) u t0)) (fsubst0_both i u0 c 
46763 (THead (Flat Appl) w (THead (Bind Abst) u t0)) (THead (Flat Appl) x0 (THead 
46764 (Bind Abst) u t0)) (subst0_fst u0 x0 w i H10 (THead (Bind Abst) u t0) (Flat 
46765 Appl)) c3 H6) e H7)))) (ty3_correct g c3 w u (H1 i u0 c3 w (fsubst0_fst i u0 
46766 c w c3 H6) e H7)))))))))) (ty3_gen_bind g Abst c3 u t0 x H12)))) (ty3_correct 
46767 g c3 v (THead (Bind Abst) u t0) (H3 i u0 c3 v (fsubst0_fst i u0 c v c3 H6) e 
46768 H7))) t3 H9)))))) H8)) (subst0_gen_head (Flat Appl) u0 w v t3 i H5)))))))) c2 
46769 t2 H4))))))))))))))) (\lambda (c: C).(\lambda (t2: T).(\lambda (t3: 
46770 T).(\lambda (H0: (ty3 g c t2 t3)).(\lambda (H1: ((\forall (i: nat).(\forall 
46771 (u: T).(\forall (c2: C).(\forall (t4: T).((fsubst0 i u c t2 c2 t4) \to 
46772 (\forall (e: C).((getl i c (CHead e (Bind Abbr) u)) \to (ty3 g c2 t4 
46773 t3)))))))))).(\lambda (t0: T).(\lambda (H2: (ty3 g c t3 t0)).(\lambda (H3: 
46774 ((\forall (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t2: 
46775 T).((fsubst0 i u c t3 c2 t2) \to (\forall (e: C).((getl i c (CHead e (Bind 
46776 Abbr) u)) \to (ty3 g c2 t2 t0)))))))))).(\lambda (i: nat).(\lambda (u: 
46777 T).(\lambda (c2: C).(\lambda (t4: T).(\lambda (H4: (fsubst0 i u c (THead 
46778 (Flat Cast) t3 t2) c2 t4)).(fsubst0_ind i u c (THead (Flat Cast) t3 t2) 
46779 (\lambda (c0: C).(\lambda (t5: T).(\forall (e: C).((getl i c (CHead e (Bind 
46780 Abbr) u)) \to (ty3 g c0 t5 t3))))) (\lambda (t5: T).(\lambda (H5: (subst0 i u 
46781 (THead (Flat Cast) t3 t2) t5)).(\lambda (e: C).(\lambda (H6: (getl i c (CHead 
46782 e (Bind Abbr) u))).(or3_ind (ex2 T (\lambda (u2: T).(eq T t5 (THead (Flat 
46783 Cast) u2 t2))) (\lambda (u2: T).(subst0 i u t3 u2))) (ex2 T (\lambda (t6: 
46784 T).(eq T t5 (THead (Flat Cast) t3 t6))) (\lambda (t6: T).(subst0 (s (Flat 
46785 Cast) i) u t2 t6))) (ex3_2 T T (\lambda (u2: T).(\lambda (t6: T).(eq T t5 
46786 (THead (Flat Cast) u2 t6)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u t3 
46787 u2))) (\lambda (_: T).(\lambda (t6: T).(subst0 (s (Flat Cast) i) u t2 t6)))) 
46788 (ty3 g c t5 t3) (\lambda (H7: (ex2 T (\lambda (u2: T).(eq T t5 (THead (Flat 
46789 Cast) u2 t2))) (\lambda (u2: T).(subst0 i u t3 u2)))).(ex2_ind T (\lambda 
46790 (u2: T).(eq T t5 (THead (Flat Cast) u2 t2))) (\lambda (u2: T).(subst0 i u t3 
46791 u2)) (ty3 g c t5 t3) (\lambda (x: T).(\lambda (H8: (eq T t5 (THead (Flat 
46792 Cast) x t2))).(\lambda (H9: (subst0 i u t3 x)).(eq_ind_r T (THead (Flat Cast) 
46793 x t2) (\lambda (t6: T).(ty3 g c t6 t3)) (ty3_conv g c t3 t0 H2 (THead (Flat 
46794 Cast) x t2) x (ty3_cast g c t2 x (ty3_conv g c x t0 (H3 i u c x (fsubst0_snd 
46795 i u c t3 x H9) e H6) t2 t3 H0 (pc3_s c t3 x (pc3_fsubst0 c t3 t3 (pc3_refl c 
46796 t3) i u c x (fsubst0_snd i u c t3 x H9) e H6))) t0 (H3 i u c x (fsubst0_snd i 
46797 u c t3 x H9) e H6)) (pc3_fsubst0 c t3 t3 (pc3_refl c t3) i u c x (fsubst0_snd 
46798 i u c t3 x H9) e H6)) t5 H8)))) H7)) (\lambda (H7: (ex2 T (\lambda (t2: 
46799 T).(eq T t5 (THead (Flat Cast) t3 t2))) (\lambda (t3: T).(subst0 (s (Flat 
46800 Cast) i) u t2 t3)))).(ex2_ind T (\lambda (t6: T).(eq T t5 (THead (Flat Cast) 
46801 t3 t6))) (\lambda (t6: T).(subst0 (s (Flat Cast) i) u t2 t6)) (ty3 g c t5 t3) 
46802 (\lambda (x: T).(\lambda (H8: (eq T t5 (THead (Flat Cast) t3 x))).(\lambda 
46803 (H9: (subst0 (s (Flat Cast) i) u t2 x)).(eq_ind_r T (THead (Flat Cast) t3 x) 
46804 (\lambda (t6: T).(ty3 g c t6 t3)) (ty3_cast g c x t3 (H1 (s (Flat Cast) i) u 
46805 c x (fsubst0_snd (s (Flat Cast) i) u c t2 x H9) e H6) t0 H2) t5 H8)))) H7)) 
46806 (\lambda (H7: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t5 (THead 
46807 (Flat Cast) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u t3 u2))) 
46808 (\lambda (_: T).(\lambda (t3: T).(subst0 (s (Flat Cast) i) u t2 
46809 t3))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t6: T).(eq T t5 (THead 
46810 (Flat Cast) u2 t6)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u t3 u2))) 
46811 (\lambda (_: T).(\lambda (t6: T).(subst0 (s (Flat Cast) i) u t2 t6))) (ty3 g 
46812 c t5 t3) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H8: (eq T t5 (THead 
46813 (Flat Cast) x0 x1))).(\lambda (H9: (subst0 i u t3 x0)).(\lambda (H10: (subst0 
46814 (s (Flat Cast) i) u t2 x1)).(eq_ind_r T (THead (Flat Cast) x0 x1) (\lambda 
46815 (t6: T).(ty3 g c t6 t3)) (ty3_conv g c t3 t0 H2 (THead (Flat Cast) x0 x1) x0 
46816 (ty3_cast g c x1 x0 (ty3_conv g c x0 t0 (H3 i u c x0 (fsubst0_snd i u c t3 x0 
46817 H9) e H6) x1 t3 (H1 (s (Flat Cast) i) u c x1 (fsubst0_snd (s (Flat Cast) i) u 
46818 c t2 x1 H10) e H6) (pc3_s c t3 x0 (pc3_fsubst0 c t3 t3 (pc3_refl c t3) i u c 
46819 x0 (fsubst0_snd i u c t3 x0 H9) e H6))) t0 (H3 i u c x0 (fsubst0_snd i u c t3 
46820 x0 H9) e H6)) (pc3_fsubst0 c t3 t3 (pc3_refl c t3) i u c x0 (fsubst0_snd i u 
46821 c t3 x0 H9) e H6)) t5 H8)))))) H7)) (subst0_gen_head (Flat Cast) u t3 t2 t5 i 
46822 H5)))))) (\lambda (c3: C).(\lambda (H5: (csubst0 i u c c3)).(\lambda (e: 
46823 C).(\lambda (H6: (getl i c (CHead e (Bind Abbr) u))).(ty3_cast g c3 t2 t3 (H1 
46824 i u c3 t2 (fsubst0_fst i u c t2 c3 H5) e H6) t0 (H3 i u c3 t3 (fsubst0_fst i 
46825 u c t3 c3 H5) e H6)))))) (\lambda (t5: T).(\lambda (H5: (subst0 i u (THead 
46826 (Flat Cast) t3 t2) t5)).(\lambda (c3: C).(\lambda (H6: (csubst0 i u c 
46827 c3)).(\lambda (e: C).(\lambda (H7: (getl i c (CHead e (Bind Abbr) 
46828 u))).(or3_ind (ex2 T (\lambda (u2: T).(eq T t5 (THead (Flat Cast) u2 t2))) 
46829 (\lambda (u2: T).(subst0 i u t3 u2))) (ex2 T (\lambda (t6: T).(eq T t5 (THead 
46830 (Flat Cast) t3 t6))) (\lambda (t6: T).(subst0 (s (Flat Cast) i) u t2 t6))) 
46831 (ex3_2 T T (\lambda (u2: T).(\lambda (t6: T).(eq T t5 (THead (Flat Cast) u2 
46832 t6)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i u t3 u2))) (\lambda (_: 
46833 T).(\lambda (t6: T).(subst0 (s (Flat Cast) i) u t2 t6)))) (ty3 g c3 t5 t3) 
46834 (\lambda (H8: (ex2 T (\lambda (u2: T).(eq T t5 (THead (Flat Cast) u2 t2))) 
46835 (\lambda (u2: T).(subst0 i u t3 u2)))).(ex2_ind T (\lambda (u2: T).(eq T t5 
46836 (THead (Flat Cast) u2 t2))) (\lambda (u2: T).(subst0 i u t3 u2)) (ty3 g c3 t5 
46837 t3) (\lambda (x: T).(\lambda (H9: (eq T t5 (THead (Flat Cast) x 
46838 t2))).(\lambda (H10: (subst0 i u t3 x)).(eq_ind_r T (THead (Flat Cast) x t2) 
46839 (\lambda (t6: T).(ty3 g c3 t6 t3)) (ty3_conv g c3 t3 t0 (H3 i u c3 t3 
46840 (fsubst0_fst i u c t3 c3 H6) e H7) (THead (Flat Cast) x t2) x (ty3_cast g c3 
46841 t2 x (ty3_conv g c3 x t0 (H3 i u c3 x (fsubst0_both i u c t3 x H10 c3 H6) e 
46842 H7) t2 t3 (H1 i u c3 t2 (fsubst0_fst i u c t2 c3 H6) e H7) (pc3_s c3 t3 x 
46843 (pc3_fsubst0 c t3 t3 (pc3_refl c t3) i u c3 x (fsubst0_both i u c t3 x H10 c3 
46844 H6) e H7))) t0 (H3 i u c3 x (fsubst0_both i u c t3 x H10 c3 H6) e H7)) 
46845 (pc3_fsubst0 c t3 t3 (pc3_refl c t3) i u c3 x (fsubst0_both i u c t3 x H10 c3 
46846 H6) e H7)) t5 H9)))) H8)) (\lambda (H8: (ex2 T (\lambda (t2: T).(eq T t5 
46847 (THead (Flat Cast) t3 t2))) (\lambda (t3: T).(subst0 (s (Flat Cast) i) u t2 
46848 t3)))).(ex2_ind T (\lambda (t6: T).(eq T t5 (THead (Flat Cast) t3 t6))) 
46849 (\lambda (t6: T).(subst0 (s (Flat Cast) i) u t2 t6)) (ty3 g c3 t5 t3) 
46850 (\lambda (x: T).(\lambda (H9: (eq T t5 (THead (Flat Cast) t3 x))).(\lambda 
46851 (H10: (subst0 (s (Flat Cast) i) u t2 x)).(eq_ind_r T (THead (Flat Cast) t3 x) 
46852 (\lambda (t6: T).(ty3 g c3 t6 t3)) (ty3_cast g c3 x t3 (H1 i u c3 x 
46853 (fsubst0_both i u c t2 x H10 c3 H6) e H7) t0 (H3 i u c3 t3 (fsubst0_fst i u c 
46854 t3 c3 H6) e H7)) t5 H9)))) H8)) (\lambda (H8: (ex3_2 T T (\lambda (u2: 
46855 T).(\lambda (t2: T).(eq T t5 (THead (Flat Cast) u2 t2)))) (\lambda (u2: 
46856 T).(\lambda (_: T).(subst0 i u t3 u2))) (\lambda (_: T).(\lambda (t3: 
46857 T).(subst0 (s (Flat Cast) i) u t2 t3))))).(ex3_2_ind T T (\lambda (u2: 
46858 T).(\lambda (t6: T).(eq T t5 (THead (Flat Cast) u2 t6)))) (\lambda (u2: 
46859 T).(\lambda (_: T).(subst0 i u t3 u2))) (\lambda (_: T).(\lambda (t6: 
46860 T).(subst0 (s (Flat Cast) i) u t2 t6))) (ty3 g c3 t5 t3) (\lambda (x0: 
46861 T).(\lambda (x1: T).(\lambda (H9: (eq T t5 (THead (Flat Cast) x0 
46862 x1))).(\lambda (H10: (subst0 i u t3 x0)).(\lambda (H11: (subst0 (s (Flat 
46863 Cast) i) u t2 x1)).(eq_ind_r T (THead (Flat Cast) x0 x1) (\lambda (t6: 
46864 T).(ty3 g c3 t6 t3)) (ty3_conv g c3 t3 t0 (H3 i u c3 t3 (fsubst0_fst i u c t3 
46865 c3 H6) e H7) (THead (Flat Cast) x0 x1) x0 (ty3_cast g c3 x1 x0 (ty3_conv g c3 
46866 x0 t0 (H3 i u c3 x0 (fsubst0_both i u c t3 x0 H10 c3 H6) e H7) x1 t3 (H1 i u 
46867 c3 x1 (fsubst0_both i u c t2 x1 H11 c3 H6) e H7) (pc3_s c3 t3 x0 (pc3_fsubst0 
46868 c t3 t3 (pc3_refl c t3) i u c3 x0 (fsubst0_both i u c t3 x0 H10 c3 H6) e 
46869 H7))) t0 (H3 i u c3 x0 (fsubst0_both i u c t3 x0 H10 c3 H6) e H7)) 
46870 (pc3_fsubst0 c t3 t3 (pc3_refl c t3) i u c3 x0 (fsubst0_both i u c t3 x0 H10 
46871 c3 H6) e H7)) t5 H9)))))) H8)) (subst0_gen_head (Flat Cast) u t3 t2 t5 i 
46872 H5)))))))) c2 t4 H4)))))))))))))) c1 t1 t H))))).
46873
46874 theorem ty3_csubst0:
46875  \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c1 
46876 t1 t2) \to (\forall (e: C).(\forall (u: T).(\forall (i: nat).((getl i c1 
46877 (CHead e (Bind Abbr) u)) \to (\forall (c2: C).((csubst0 i u c1 c2) \to (ty3 g 
46878 c2 t1 t2)))))))))))
46879 \def
46880  \lambda (g: G).(\lambda (c1: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
46881 (H: (ty3 g c1 t1 t2)).(\lambda (e: C).(\lambda (u: T).(\lambda (i: 
46882 nat).(\lambda (H0: (getl i c1 (CHead e (Bind Abbr) u))).(\lambda (c2: 
46883 C).(\lambda (H1: (csubst0 i u c1 c2)).(ty3_fsubst0 g c1 t1 t2 H i u c2 t1 
46884 (fsubst0_fst i u c1 t1 c2 H1) e H0))))))))))).
46885
46886 theorem ty3_subst0:
46887  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((ty3 g c t1 
46888 t) \to (\forall (e: C).(\forall (u: T).(\forall (i: nat).((getl i c (CHead e 
46889 (Bind Abbr) u)) \to (\forall (t2: T).((subst0 i u t1 t2) \to (ty3 g c t2 
46890 t)))))))))))
46891 \def
46892  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: 
46893 (ty3 g c t1 t)).(\lambda (e: C).(\lambda (u: T).(\lambda (i: nat).(\lambda 
46894 (H0: (getl i c (CHead e (Bind Abbr) u))).(\lambda (t2: T).(\lambda (H1: 
46895 (subst0 i u t1 t2)).(ty3_fsubst0 g c t1 t H i u c t2 (fsubst0_snd i u c t1 t2 
46896 H1) e H0))))))))))).
46897
46898 theorem ty3_gen_cabbr:
46899  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c 
46900 t1 t2) \to (\forall (e: C).(\forall (u: T).(\forall (d: nat).((getl d c 
46901 (CHead e (Bind Abbr) u)) \to (\forall (a0: C).((csubst1 d u c a0) \to 
46902 (\forall (a: C).((drop (S O) d a0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda 
46903 (_: T).(subst1 d u t1 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: 
46904 T).(subst1 d u t2 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 
46905 g a y1 y2))))))))))))))))
46906 \def
46907  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
46908 (H: (ty3 g c t1 t2)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda 
46909 (t0: T).(\forall (e: C).(\forall (u: T).(\forall (d: nat).((getl d c0 (CHead 
46910 e (Bind Abbr) u)) \to (\forall (a0: C).((csubst1 d u c0 a0) \to (\forall (a: 
46911 C).((drop (S O) d a0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: 
46912 T).(subst1 d u t (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: 
46913 T).(subst1 d u t0 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 
46914 g a y1 y2))))))))))))))) (\lambda (c0: C).(\lambda (t3: T).(\lambda (t: 
46915 T).(\lambda (_: (ty3 g c0 t3 t)).(\lambda (H1: ((\forall (e: C).(\forall (u: 
46916 T).(\forall (d: nat).((getl d c0 (CHead e (Bind Abbr) u)) \to (\forall (a0: 
46917 C).((csubst1 d u c0 a0) \to (\forall (a: C).((drop (S O) d a0 a) \to (ex3_2 T 
46918 T (\lambda (y1: T).(\lambda (_: T).(subst1 d u t3 (lift (S O) d y1)))) 
46919 (\lambda (_: T).(\lambda (y2: T).(subst1 d u t (lift (S O) d y2)))) (\lambda 
46920 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\lambda (u: 
46921 T).(\lambda (t4: T).(\lambda (_: (ty3 g c0 u t4)).(\lambda (H3: ((\forall (e: 
46922 C).(\forall (u0: T).(\forall (d: nat).((getl d c0 (CHead e (Bind Abbr) u0)) 
46923 \to (\forall (a0: C).((csubst1 d u0 c0 a0) \to (\forall (a: C).((drop (S O) d 
46924 a0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 u (lift (S 
46925 O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 t4 (lift (S O) d 
46926 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
46927 y2)))))))))))))).(\lambda (H4: (pc3 c0 t4 t3)).(\lambda (e: C).(\lambda (u0: 
46928 T).(\lambda (d: nat).(\lambda (H5: (getl d c0 (CHead e (Bind Abbr) 
46929 u0))).(\lambda (a0: C).(\lambda (H6: (csubst1 d u0 c0 a0)).(\lambda (a: 
46930 C).(\lambda (H7: (drop (S O) d a0 a)).(let H8 \def (H3 e u0 d H5 a0 H6 a H7) 
46931 in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 u (lift (S O) 
46932 d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 t4 (lift (S O) d 
46933 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (ex3_2 T T 
46934 (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 u (lift (S O) d y1)))) (\lambda 
46935 (_: T).(\lambda (y2: T).(subst1 d u0 t3 (lift (S O) d y2)))) (\lambda (y1: 
46936 T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x0: T).(\lambda (x1: 
46937 T).(\lambda (H9: (subst1 d u0 u (lift (S O) d x0))).(\lambda (H10: (subst1 d 
46938 u0 t4 (lift (S O) d x1))).(\lambda (H11: (ty3 g a x0 x1)).(let H12 \def (H1 e 
46939 u0 d H5 a0 H6 a H7) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: 
46940 T).(subst1 d u0 t3 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: 
46941 T).(subst1 d u0 t (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 
46942 g a y1 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 u (lift 
46943 (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 t3 (lift (S O) d 
46944 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x2: 
46945 T).(\lambda (x3: T).(\lambda (H13: (subst1 d u0 t3 (lift (S O) d 
46946 x2))).(\lambda (_: (subst1 d u0 t (lift (S O) d x3))).(\lambda (H15: (ty3 g a 
46947 x2 x3)).(ex3_2_intro T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 u 
46948 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 t3 (lift 
46949 (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) x0 x2 H9 
46950 H13 (ty3_conv g a x2 x3 H15 x0 x1 H11 (pc3_gen_cabbr c0 t4 t3 H4 e u0 d H5 a0 
46951 H6 a H7 x1 H10 x2 H13)))))))) H12))))))) H8)))))))))))))))))))) (\lambda (c0: 
46952 C).(\lambda (m: nat).(\lambda (e: C).(\lambda (u: T).(\lambda (d: 
46953 nat).(\lambda (_: (getl d c0 (CHead e (Bind Abbr) u))).(\lambda (a0: 
46954 C).(\lambda (_: (csubst1 d u c0 a0)).(\lambda (a: C).(\lambda (_: (drop (S O) 
46955 d a0 a)).(ex3_2_intro T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u (TSort 
46956 m) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u (TSort 
46957 (next g m)) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a 
46958 y1 y2))) (TSort m) (TSort (next g m)) (eq_ind_r T (TSort m) (\lambda (t: 
46959 T).(subst1 d u (TSort m) t)) (subst1_refl d u (TSort m)) (lift (S O) d (TSort 
46960 m)) (lift_sort m (S O) d)) (eq_ind_r T (TSort (next g m)) (\lambda (t: 
46961 T).(subst1 d u (TSort (next g m)) t)) (subst1_refl d u (TSort (next g m))) 
46962 (lift (S O) d (TSort (next g m))) (lift_sort (next g m) (S O) d)) (ty3_sort g 
46963 a m)))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda 
46964 (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abbr) u))).(\lambda (t: 
46965 T).(\lambda (H1: (ty3 g d u t)).(\lambda (H2: ((\forall (e: C).(\forall (u0: 
46966 T).(\forall (d0: nat).((getl d0 d (CHead e (Bind Abbr) u0)) \to (\forall (a0: 
46967 C).((csubst1 d0 u0 d a0) \to (\forall (a: C).((drop (S O) d0 a0 a) \to (ex3_2 
46968 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 u (lift (S O) d0 y1)))) 
46969 (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 t (lift (S O) d0 y2)))) 
46970 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\lambda (e: 
46971 C).(\lambda (u0: T).(\lambda (d0: nat).(\lambda (H3: (getl d0 c0 (CHead e 
46972 (Bind Abbr) u0))).(\lambda (a0: C).(\lambda (H4: (csubst1 d0 u0 c0 
46973 a0)).(\lambda (a: C).(\lambda (H5: (drop (S O) d0 a0 a)).(lt_eq_gt_e n d0 
46974 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S 
46975 O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O t) 
46976 (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) 
46977 (\lambda (H6: (lt n d0)).(let H7 \def (eq_ind nat (minus d0 n) (\lambda (n: 
46978 nat).(getl n (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0))) (getl_conf_le 
46979 d0 (CHead e (Bind Abbr) u0) c0 H3 (CHead d (Bind Abbr) u) n H0 (le_S_n n d0 
46980 (le_S (S n) d0 H6))) (S (minus d0 (S n))) (minus_x_Sy d0 n H6)) in (ex2_ind C 
46981 (\lambda (e2: C).(csubst1 (minus d0 n) u0 (CHead d (Bind Abbr) u) e2)) 
46982 (\lambda (e2: C).(getl n a0 e2)) (ex3_2 T T (\lambda (y1: T).(\lambda (_: 
46983 T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda 
46984 (y2: T).(subst1 d0 u0 (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: 
46985 T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x: C).(\lambda (H8: (csubst1 
46986 (minus d0 n) u0 (CHead d (Bind Abbr) u) x)).(\lambda (H9: (getl n a0 x)).(let 
46987 H10 \def (eq_ind nat (minus d0 n) (\lambda (n: nat).(csubst1 n u0 (CHead d 
46988 (Bind Abbr) u) x)) H8 (S (minus d0 (S n))) (minus_x_Sy d0 n H6)) in (let H11 
46989 \def (csubst1_gen_head (Bind Abbr) d x u u0 (minus d0 (S n)) H10) in 
46990 (ex3_2_ind T C (\lambda (u2: T).(\lambda (c2: C).(eq C x (CHead c2 (Bind 
46991 Abbr) u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 (minus d0 (S n)) u0 u 
46992 u2))) (\lambda (_: T).(\lambda (c2: C).(csubst1 (minus d0 (S n)) u0 d c2))) 
46993 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S 
46994 O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O t) 
46995 (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) 
46996 (\lambda (x0: T).(\lambda (x1: C).(\lambda (H12: (eq C x (CHead x1 (Bind 
46997 Abbr) x0))).(\lambda (H13: (subst1 (minus d0 (S n)) u0 u x0)).(\lambda (H14: 
46998 (csubst1 (minus d0 (S n)) u0 d x1)).(let H15 \def (eq_ind C x (\lambda (c: 
46999 C).(getl n a0 c)) H9 (CHead x1 (Bind Abbr) x0) H12) in (let H16 \def (eq_ind 
47000 nat d0 (\lambda (n: nat).(drop (S O) n a0 a)) H5 (S (plus n (minus d0 (S 
47001 n)))) (lt_plus_minus n d0 H6)) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: 
47002 C).(eq T x0 (lift (S O) (minus d0 (S n)) v)))) (\lambda (v: T).(\lambda (e0: 
47003 C).(getl n a (CHead e0 (Bind Abbr) v)))) (\lambda (_: T).(\lambda (e0: 
47004 C).(drop (S O) (minus d0 (S n)) x1 e0))) (ex3_2 T T (\lambda (y1: T).(\lambda 
47005 (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda 
47006 (y2: T).(subst1 d0 u0 (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: 
47007 T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x2: T).(\lambda (x3: 
47008 C).(\lambda (H17: (eq T x0 (lift (S O) (minus d0 (S n)) x2))).(\lambda (H18: 
47009 (getl n a (CHead x3 (Bind Abbr) x2))).(\lambda (H19: (drop (S O) (minus d0 (S 
47010 n)) x1 x3)).(let H20 \def (eq_ind T x0 (\lambda (t: T).(subst1 (minus d0 (S 
47011 n)) u0 u t)) H13 (lift (S O) (minus d0 (S n)) x2) H17) in (let H21 \def (H2 e 
47012 u0 (minus d0 (S n)) (getl_gen_S (Bind Abbr) d (CHead e (Bind Abbr) u0) u 
47013 (minus d0 (S n)) H7) x1 H14 x3 H19) in (ex3_2_ind T T (\lambda (y1: 
47014 T).(\lambda (_: T).(subst1 (minus d0 (S n)) u0 u (lift (S O) (minus d0 (S n)) 
47015 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 (minus d0 (S n)) u0 t (lift 
47016 (S O) (minus d0 (S n)) y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g x3 y1 
47017 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) 
47018 (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S 
47019 n) O t) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47020 y2)))) (\lambda (x4: T).(\lambda (x5: T).(\lambda (H22: (subst1 (minus d0 (S 
47021 n)) u0 u (lift (S O) (minus d0 (S n)) x4))).(\lambda (H23: (subst1 (minus d0 
47022 (S n)) u0 t (lift (S O) (minus d0 (S n)) x5))).(\lambda (H24: (ty3 g x3 x4 
47023 x5)).(let H25 \def (eq_ind T x4 (\lambda (t: T).(ty3 g x3 t x5)) H24 x2 
47024 (subst1_confluence_lift u x4 u0 (minus d0 (S n)) H22 x2 H20)) in (eq_ind_r 
47025 nat (plus (minus d0 (S n)) (S n)) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: 
47026 T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: 
47027 T).(\lambda (y2: T).(subst1 n0 u0 (lift (S n) O t) (lift (S O) d0 y2)))) 
47028 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind_r nat (plus (S 
47029 n) (minus d0 (S n))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda 
47030 (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda 
47031 (y2: T).(subst1 (plus (minus d0 (S n)) (S n)) u0 (lift (S n) O t) (lift (S O) 
47032 n0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro 
47033 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 
47034 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 (plus (minus d0 (S n)) (S n)) 
47035 u0 (lift (S n) O t) (lift (S O) (plus (S n) (minus d0 (S n))) y2)))) (\lambda 
47036 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (TLRef n) (lift (S n) O x5) 
47037 (eq_ind_r T (TLRef n) (\lambda (t0: T).(subst1 d0 u0 (TLRef n) t0)) 
47038 (subst1_refl d0 u0 (TLRef n)) (lift (S O) d0 (TLRef n)) (lift_lref_lt n (S O) 
47039 d0 H6)) (eq_ind_r T (lift (S n) O (lift (S O) (minus d0 (S n)) x5)) (\lambda 
47040 (t0: T).(subst1 (plus (minus d0 (S n)) (S n)) u0 (lift (S n) O t) t0)) 
47041 (subst1_lift_ge t (lift (S O) (minus d0 (S n)) x5) u0 (minus d0 (S n)) (S n) 
47042 H23 O (le_O_n (minus d0 (S n)))) (lift (S O) (plus (S n) (minus d0 (S n))) 
47043 (lift (S n) O x5)) (lift_d x5 (S O) (S n) (minus d0 (S n)) O (le_O_n (minus 
47044 d0 (S n))))) (ty3_abbr g n a x3 x2 H18 x5 H25)) d0 (le_plus_minus (S n) d0 
47045 H6)) d0 (le_plus_minus_sym (S n) d0 H6)))))))) H21)))))))) (getl_drop_conf_lt 
47046 Abbr a0 x1 x0 n H15 a (S O) (minus d0 (S n)) H16))))))))) H11)))))) 
47047 (csubst1_getl_lt d0 n H6 c0 a0 u0 H4 (CHead d (Bind Abbr) u) H0)))) (\lambda 
47048 (H6: (eq nat n d0)).(let H7 \def (eq_ind_r nat d0 (\lambda (n: nat).(drop (S 
47049 O) n a0 a)) H5 n H6) in (let H8 \def (eq_ind_r nat d0 (\lambda (n: 
47050 nat).(csubst1 n u0 c0 a0)) H4 n H6) in (let H9 \def (eq_ind_r nat d0 (\lambda 
47051 (n: nat).(getl n c0 (CHead e (Bind Abbr) u0))) H3 n H6) in (eq_ind nat n 
47052 (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 n0 u0 
47053 (TLRef n) (lift (S O) n0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 n0 
47054 u0 (lift (S n) O t) (lift (S O) n0 y2)))) (\lambda (y1: T).(\lambda (y2: 
47055 T).(ty3 g a y1 y2))))) (let H10 \def (eq_ind C (CHead d (Bind Abbr) u) 
47056 (\lambda (c: C).(getl n c0 c)) H0 (CHead e (Bind Abbr) u0) (getl_mono c0 
47057 (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Abbr) u0) H9)) in (let H11 \def 
47058 (f_equal C C (\lambda (e0: C).(match e0 return (\lambda (_: C).C) with 
47059 [(CSort _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind 
47060 Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono c0 (CHead d (Bind Abbr) u) n H0 
47061 (CHead e (Bind Abbr) u0) H9)) in ((let H12 \def (f_equal C T (\lambda (e0: 
47062 C).(match e0 return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead 
47063 _ _ t) \Rightarrow t])) (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0) 
47064 (getl_mono c0 (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Abbr) u0) H9)) in 
47065 (\lambda (H13: (eq C d e)).(let H14 \def (eq_ind_r T u0 (\lambda (t: T).(getl 
47066 n c0 (CHead e (Bind Abbr) t))) H10 u H12) in (let H15 \def (eq_ind_r T u0 
47067 (\lambda (t: T).(csubst1 n t c0 a0)) H8 u H12) in (eq_ind T u (\lambda (t0: 
47068 T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 n t0 (TLRef n) (lift 
47069 (S O) n y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 n t0 (lift (S n) O t) 
47070 (lift (S O) n y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) 
47071 (let H16 \def (eq_ind_r C e (\lambda (c: C).(getl n c0 (CHead c (Bind Abbr) 
47072 u))) H14 d H13) in (ex3_2_intro T T (\lambda (y1: T).(\lambda (_: T).(subst1 
47073 n u (TLRef n) (lift (S O) n y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 n 
47074 u (lift (S n) O t) (lift (S O) n y2)))) (\lambda (y1: T).(\lambda (y2: 
47075 T).(ty3 g a y1 y2))) (lift n O u) (lift n O t) (subst1_single n u (TLRef n) 
47076 (lift (S O) n (lift n O u)) (eq_ind_r T (lift (plus (S O) n) O u) (\lambda 
47077 (t0: T).(subst0 n u (TLRef n) t0)) (subst0_lref u n) (lift (S O) n (lift n O 
47078 u)) (lift_free u n (S O) O n (le_n (plus O n)) (le_O_n n)))) (eq_ind_r T 
47079 (lift (plus (S O) n) O t) (\lambda (t0: T).(subst1 n u (lift (S n) O t) t0)) 
47080 (subst1_refl n u (lift (S n) O t)) (lift (S O) n (lift n O t)) (lift_free t n 
47081 (S O) O n (le_n (plus O n)) (le_O_n n))) (ty3_lift g d u t H1 a O n 
47082 (getl_conf_ge_drop Abbr a0 d u n (csubst1_getl_ge n n (le_n n) c0 a0 u H15 
47083 (CHead d (Bind Abbr) u) H16) a H7)))) u0 H12))))) H11))) d0 H6))))) (\lambda 
47084 (H6: (lt d0 n)).(eq_ind_r nat (S (plus O (minus n (S O)))) (\lambda (n0: 
47085 nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n0) 
47086 (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S 
47087 n) O t) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47088 y2))))) (eq_ind nat (plus (S O) (minus n (S O))) (\lambda (n0: nat).(ex3_2 T 
47089 T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n0) (lift (S O) d0 
47090 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O t) (lift 
47091 (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) 
47092 (eq_ind_r nat (plus (minus n (S O)) (S O)) (\lambda (n0: nat).(ex3_2 T T 
47093 (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n0) (lift (S O) d0 
47094 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O t) (lift 
47095 (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) 
47096 (ex3_2_intro T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef (plus 
47097 (minus n (S O)) (S O))) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: 
47098 T).(subst1 d0 u0 (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: 
47099 T).(\lambda (y2: T).(ty3 g a y1 y2))) (TLRef (minus n (S O))) (lift n O t) 
47100 (eq_ind_r T (TLRef (plus (minus n (S O)) (S O))) (\lambda (t0: T).(subst1 d0 
47101 u0 (TLRef (plus (minus n (S O)) (S O))) t0)) (subst1_refl d0 u0 (TLRef (plus 
47102 (minus n (S O)) (S O)))) (lift (S O) d0 (TLRef (minus n (S O)))) 
47103 (lift_lref_ge (minus n (S O)) (S O) d0 (lt_le_minus d0 n H6))) (eq_ind_r T 
47104 (lift (plus (S O) n) O t) (\lambda (t0: T).(subst1 d0 u0 (lift (S n) O t) 
47105 t0)) (subst1_refl d0 u0 (lift (S n) O t)) (lift (S O) d0 (lift n O t)) 
47106 (lift_free t n (S O) O d0 (le_S_n d0 (plus O n) (le_S (S d0) (plus O n) H6)) 
47107 (le_O_n d0))) (eq_ind_r nat (S (minus n (S O))) (\lambda (n0: nat).(ty3 g a 
47108 (TLRef (minus n (S O))) (lift n0 O t))) (ty3_abbr g (minus n (S O)) a d u 
47109 (getl_drop_conf_ge n (CHead d (Bind Abbr) u) a0 (csubst1_getl_ge d0 n (le_S_n 
47110 d0 n (le_S (S d0) n H6)) c0 a0 u0 H4 (CHead d (Bind Abbr) u) H0) a (S O) d0 
47111 H5 (eq_ind_r nat (plus (S O) d0) (\lambda (n0: nat).(le n0 n)) H6 (plus d0 (S 
47112 O)) (plus_comm d0 (S O)))) t H1) n (minus_x_SO n (le_lt_trans O d0 n (le_O_n 
47113 d0) H6)))) (plus (S O) (minus n (S O))) (plus_comm (S O) (minus n (S O)))) (S 
47114 (plus O (minus n (S O)))) (refl_equal nat (S (plus O (minus n (S O)))))) n 
47115 (lt_plus_minus O n (le_lt_trans O d0 n (le_O_n d0) H6))))))))))))))))))))) 
47116 (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda 
47117 (H0: (getl n c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda (H1: (ty3 
47118 g d u t)).(\lambda (H2: ((\forall (e: C).(\forall (u0: T).(\forall (d0: 
47119 nat).((getl d0 d (CHead e (Bind Abbr) u0)) \to (\forall (a0: C).((csubst1 d0 
47120 u0 d a0) \to (\forall (a: C).((drop (S O) d0 a0 a) \to (ex3_2 T T (\lambda 
47121 (y1: T).(\lambda (_: T).(subst1 d0 u0 u (lift (S O) d0 y1)))) (\lambda (_: 
47122 T).(\lambda (y2: T).(subst1 d0 u0 t (lift (S O) d0 y2)))) (\lambda (y1: 
47123 T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\lambda (e: C).(\lambda 
47124 (u0: T).(\lambda (d0: nat).(\lambda (H3: (getl d0 c0 (CHead e (Bind Abbr) 
47125 u0))).(\lambda (a0: C).(\lambda (H4: (csubst1 d0 u0 c0 a0)).(\lambda (a: 
47126 C).(\lambda (H5: (drop (S O) d0 a0 a)).(lt_eq_gt_e n d0 (ex3_2 T T (\lambda 
47127 (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 y1)))) 
47128 (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O u) (lift (S O) 
47129 d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (H6: 
47130 (lt n d0)).(let H7 \def (eq_ind nat (minus d0 n) (\lambda (n: nat).(getl n 
47131 (CHead d (Bind Abst) u) (CHead e (Bind Abbr) u0))) (getl_conf_le d0 (CHead e 
47132 (Bind Abbr) u0) c0 H3 (CHead d (Bind Abst) u) n H0 (le_S_n n d0 (le_S (S n) 
47133 d0 H6))) (S (minus d0 (S n))) (minus_x_Sy d0 n H6)) in (ex2_ind C (\lambda 
47134 (e2: C).(csubst1 (minus d0 n) u0 (CHead d (Bind Abst) u) e2)) (\lambda (e2: 
47135 C).(getl n a0 e2)) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 
47136 (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 
47137 u0 (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: 
47138 T).(ty3 g a y1 y2)))) (\lambda (x: C).(\lambda (H8: (csubst1 (minus d0 n) u0 
47139 (CHead d (Bind Abst) u) x)).(\lambda (H9: (getl n a0 x)).(let H10 \def 
47140 (eq_ind nat (minus d0 n) (\lambda (n: nat).(csubst1 n u0 (CHead d (Bind Abst) 
47141 u) x)) H8 (S (minus d0 (S n))) (minus_x_Sy d0 n H6)) in (let H11 \def 
47142 (csubst1_gen_head (Bind Abst) d x u u0 (minus d0 (S n)) H10) in (ex3_2_ind T 
47143 C (\lambda (u2: T).(\lambda (c2: C).(eq C x (CHead c2 (Bind Abst) u2)))) 
47144 (\lambda (u2: T).(\lambda (_: C).(subst1 (minus d0 (S n)) u0 u u2))) (\lambda 
47145 (_: T).(\lambda (c2: C).(csubst1 (minus d0 (S n)) u0 d c2))) (ex3_2 T T 
47146 (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 
47147 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O u) (lift 
47148 (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda 
47149 (x0: T).(\lambda (x1: C).(\lambda (H12: (eq C x (CHead x1 (Bind Abst) 
47150 x0))).(\lambda (H13: (subst1 (minus d0 (S n)) u0 u x0)).(\lambda (H14: 
47151 (csubst1 (minus d0 (S n)) u0 d x1)).(let H15 \def (eq_ind C x (\lambda (c: 
47152 C).(getl n a0 c)) H9 (CHead x1 (Bind Abst) x0) H12) in (let H16 \def (eq_ind 
47153 nat d0 (\lambda (n: nat).(drop (S O) n a0 a)) H5 (S (plus n (minus d0 (S 
47154 n)))) (lt_plus_minus n d0 H6)) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: 
47155 C).(eq T x0 (lift (S O) (minus d0 (S n)) v)))) (\lambda (v: T).(\lambda (e0: 
47156 C).(getl n a (CHead e0 (Bind Abst) v)))) (\lambda (_: T).(\lambda (e0: 
47157 C).(drop (S O) (minus d0 (S n)) x1 e0))) (ex3_2 T T (\lambda (y1: T).(\lambda 
47158 (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda 
47159 (y2: T).(subst1 d0 u0 (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda (y1: 
47160 T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x2: T).(\lambda (x3: 
47161 C).(\lambda (H17: (eq T x0 (lift (S O) (minus d0 (S n)) x2))).(\lambda (H18: 
47162 (getl n a (CHead x3 (Bind Abst) x2))).(\lambda (H19: (drop (S O) (minus d0 (S 
47163 n)) x1 x3)).(let H20 \def (eq_ind T x0 (\lambda (t: T).(subst1 (minus d0 (S 
47164 n)) u0 u t)) H13 (lift (S O) (minus d0 (S n)) x2) H17) in (let H21 \def (H2 e 
47165 u0 (minus d0 (S n)) (getl_gen_S (Bind Abst) d (CHead e (Bind Abbr) u0) u 
47166 (minus d0 (S n)) H7) x1 H14 x3 H19) in (ex3_2_ind T T (\lambda (y1: 
47167 T).(\lambda (_: T).(subst1 (minus d0 (S n)) u0 u (lift (S O) (minus d0 (S n)) 
47168 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 (minus d0 (S n)) u0 t (lift 
47169 (S O) (minus d0 (S n)) y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g x3 y1 
47170 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) 
47171 (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S 
47172 n) O u) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47173 y2)))) (\lambda (x4: T).(\lambda (x5: T).(\lambda (H22: (subst1 (minus d0 (S 
47174 n)) u0 u (lift (S O) (minus d0 (S n)) x4))).(\lambda (_: (subst1 (minus d0 (S 
47175 n)) u0 t (lift (S O) (minus d0 (S n)) x5))).(\lambda (H24: (ty3 g x3 x4 
47176 x5)).(let H25 \def (eq_ind T x4 (\lambda (t: T).(ty3 g x3 t x5)) H24 x2 
47177 (subst1_confluence_lift u x4 u0 (minus d0 (S n)) H22 x2 H20)) in (eq_ind_r 
47178 nat (plus (minus d0 (S n)) (S n)) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: 
47179 T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: 
47180 T).(\lambda (y2: T).(subst1 n0 u0 (lift (S n) O u) (lift (S O) d0 y2)))) 
47181 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind_r nat (plus (S 
47182 n) (minus d0 (S n))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda 
47183 (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda 
47184 (y2: T).(subst1 (plus (minus d0 (S n)) (S n)) u0 (lift (S n) O u) (lift (S O) 
47185 n0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro 
47186 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 
47187 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 (plus (minus d0 (S n)) (S n)) 
47188 u0 (lift (S n) O u) (lift (S O) (plus (S n) (minus d0 (S n))) y2)))) (\lambda 
47189 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (TLRef n) (lift (S n) O x2) 
47190 (eq_ind_r T (TLRef n) (\lambda (t0: T).(subst1 d0 u0 (TLRef n) t0)) 
47191 (subst1_refl d0 u0 (TLRef n)) (lift (S O) d0 (TLRef n)) (lift_lref_lt n (S O) 
47192 d0 H6)) (eq_ind_r T (lift (S n) O (lift (S O) (minus d0 (S n)) x2)) (\lambda 
47193 (t0: T).(subst1 (plus (minus d0 (S n)) (S n)) u0 (lift (S n) O u) t0)) 
47194 (subst1_lift_ge u (lift (S O) (minus d0 (S n)) x2) u0 (minus d0 (S n)) (S n) 
47195 H20 O (le_O_n (minus d0 (S n)))) (lift (S O) (plus (S n) (minus d0 (S n))) 
47196 (lift (S n) O x2)) (lift_d x2 (S O) (S n) (minus d0 (S n)) O (le_O_n (minus 
47197 d0 (S n))))) (ty3_abst g n a x3 x2 H18 x5 H25)) d0 (le_plus_minus (S n) d0 
47198 H6)) d0 (le_plus_minus_sym (S n) d0 H6)))))))) H21)))))))) (getl_drop_conf_lt 
47199 Abst a0 x1 x0 n H15 a (S O) (minus d0 (S n)) H16))))))))) H11)))))) 
47200 (csubst1_getl_lt d0 n H6 c0 a0 u0 H4 (CHead d (Bind Abst) u) H0)))) (\lambda 
47201 (H6: (eq nat n d0)).(let H7 \def (eq_ind_r nat d0 (\lambda (n: nat).(drop (S 
47202 O) n a0 a)) H5 n H6) in (let H8 \def (eq_ind_r nat d0 (\lambda (n: 
47203 nat).(csubst1 n u0 c0 a0)) H4 n H6) in (let H9 \def (eq_ind_r nat d0 (\lambda 
47204 (n: nat).(getl n c0 (CHead e (Bind Abbr) u0))) H3 n H6) in (eq_ind nat n 
47205 (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 n0 u0 
47206 (TLRef n) (lift (S O) n0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 n0 
47207 u0 (lift (S n) O u) (lift (S O) n0 y2)))) (\lambda (y1: T).(\lambda (y2: 
47208 T).(ty3 g a y1 y2))))) (let H10 \def (eq_ind C (CHead d (Bind Abst) u) 
47209 (\lambda (c: C).(getl n c0 c)) H0 (CHead e (Bind Abbr) u0) (getl_mono c0 
47210 (CHead d (Bind Abst) u) n H0 (CHead e (Bind Abbr) u0) H9)) in (let H11 \def 
47211 (eq_ind C (CHead d (Bind Abst) u) (\lambda (ee: C).(match ee return (\lambda 
47212 (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow 
47213 (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b 
47214 return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow 
47215 True | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead e 
47216 (Bind Abbr) u0) (getl_mono c0 (CHead d (Bind Abst) u) n H0 (CHead e (Bind 
47217 Abbr) u0) H9)) in (False_ind (ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47218 T).(subst1 n u0 (TLRef n) (lift (S O) n y1)))) (\lambda (_: T).(\lambda (y2: 
47219 T).(subst1 n u0 (lift (S n) O u) (lift (S O) n y2)))) (\lambda (y1: 
47220 T).(\lambda (y2: T).(ty3 g a y1 y2)))) H11))) d0 H6))))) (\lambda (H6: (lt d0 
47221 n)).(eq_ind_r nat (S (plus O (minus n (S O)))) (\lambda (n0: nat).(ex3_2 T T 
47222 (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n0) (lift (S O) d0 
47223 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O u) (lift 
47224 (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind 
47225 nat (plus (S O) (minus n (S O))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: 
47226 T).(\lambda (_: T).(subst1 d0 u0 (TLRef n0) (lift (S O) d0 y1)))) (\lambda 
47227 (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O u) (lift (S O) d0 y2)))) 
47228 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind_r nat (plus 
47229 (minus n (S O)) (S O)) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: 
47230 T).(\lambda (_: T).(subst1 d0 u0 (TLRef n0) (lift (S O) d0 y1)))) (\lambda 
47231 (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O u) (lift (S O) d0 y2)))) 
47232 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T 
47233 (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef (plus (minus n (S O)) 
47234 (S O))) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 
47235 (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 
47236 g a y1 y2))) (TLRef (minus n (S O))) (lift n O u) (eq_ind_r T (TLRef (plus 
47237 (minus n (S O)) (S O))) (\lambda (t0: T).(subst1 d0 u0 (TLRef (plus (minus n 
47238 (S O)) (S O))) t0)) (subst1_refl d0 u0 (TLRef (plus (minus n (S O)) (S O)))) 
47239 (lift (S O) d0 (TLRef (minus n (S O)))) (lift_lref_ge (minus n (S O)) (S O) 
47240 d0 (lt_le_minus d0 n H6))) (eq_ind_r T (lift (plus (S O) n) O u) (\lambda 
47241 (t0: T).(subst1 d0 u0 (lift (S n) O u) t0)) (subst1_refl d0 u0 (lift (S n) O 
47242 u)) (lift (S O) d0 (lift n O u)) (lift_free u n (S O) O d0 (le_S_n d0 (plus O 
47243 n) (le_S (S d0) (plus O n) H6)) (le_O_n d0))) (eq_ind_r nat (S (minus n (S 
47244 O))) (\lambda (n0: nat).(ty3 g a (TLRef (minus n (S O))) (lift n0 O u))) 
47245 (ty3_abst g (minus n (S O)) a d u (getl_drop_conf_ge n (CHead d (Bind Abst) 
47246 u) a0 (csubst1_getl_ge d0 n (le_S_n d0 n (le_S (S d0) n H6)) c0 a0 u0 H4 
47247 (CHead d (Bind Abst) u) H0) a (S O) d0 H5 (eq_ind_r nat (plus (S O) d0) 
47248 (\lambda (n0: nat).(le n0 n)) H6 (plus d0 (S O)) (plus_comm d0 (S O)))) t H1) 
47249 n (minus_x_SO n (le_lt_trans O d0 n (le_O_n d0) H6)))) (plus (S O) (minus n 
47250 (S O))) (plus_comm (S O) (minus n (S O)))) (S (plus O (minus n (S O)))) 
47251 (refl_equal nat (S (plus O (minus n (S O)))))) n (lt_plus_minus O n 
47252 (le_lt_trans O d0 n (le_O_n d0) H6))))))))))))))))))))) (\lambda (c0: 
47253 C).(\lambda (u: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (H1: 
47254 ((\forall (e: C).(\forall (u0: T).(\forall (d: nat).((getl d c0 (CHead e 
47255 (Bind Abbr) u0)) \to (\forall (a0: C).((csubst1 d u0 c0 a0) \to (\forall (a: 
47256 C).((drop (S O) d a0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47257 T).(subst1 d u0 u (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: 
47258 T).(subst1 d u0 t (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 
47259 g a y1 y2)))))))))))))).(\lambda (b: B).(\lambda (t3: T).(\lambda (t4: 
47260 T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t3 t4)).(\lambda (H3: ((\forall 
47261 (e: C).(\forall (u0: T).(\forall (d: nat).((getl d (CHead c0 (Bind b) u) 
47262 (CHead e (Bind Abbr) u0)) \to (\forall (a0: C).((csubst1 d u0 (CHead c0 (Bind 
47263 b) u) a0) \to (\forall (a: C).((drop (S O) d a0 a) \to (ex3_2 T T (\lambda 
47264 (y1: T).(\lambda (_: T).(subst1 d u0 t3 (lift (S O) d y1)))) (\lambda (_: 
47265 T).(\lambda (y2: T).(subst1 d u0 t4 (lift (S O) d y2)))) (\lambda (y1: 
47266 T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\lambda (t0: T).(\lambda 
47267 (_: (ty3 g (CHead c0 (Bind b) u) t4 t0)).(\lambda (H5: ((\forall (e: 
47268 C).(\forall (u0: T).(\forall (d: nat).((getl d (CHead c0 (Bind b) u) (CHead e 
47269 (Bind Abbr) u0)) \to (\forall (a0: C).((csubst1 d u0 (CHead c0 (Bind b) u) 
47270 a0) \to (\forall (a: C).((drop (S O) d a0 a) \to (ex3_2 T T (\lambda (y1: 
47271 T).(\lambda (_: T).(subst1 d u0 t4 (lift (S O) d y1)))) (\lambda (_: 
47272 T).(\lambda (y2: T).(subst1 d u0 t0 (lift (S O) d y2)))) (\lambda (y1: 
47273 T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\lambda (e: C).(\lambda 
47274 (u0: T).(\lambda (d: nat).(\lambda (H6: (getl d c0 (CHead e (Bind Abbr) 
47275 u0))).(\lambda (a0: C).(\lambda (H7: (csubst1 d u0 c0 a0)).(\lambda (a: 
47276 C).(\lambda (H8: (drop (S O) d a0 a)).(let H9 \def (H1 e u0 d H6 a0 H7 a H8) 
47277 in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 u (lift (S O) 
47278 d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 t (lift (S O) d y2)))) 
47279 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (ex3_2 T T (\lambda (y1: 
47280 T).(\lambda (_: T).(subst1 d u0 (THead (Bind b) u t3) (lift (S O) d y1)))) 
47281 (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 (THead (Bind b) u t4) (lift (S 
47282 O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda 
47283 (x0: T).(\lambda (x1: T).(\lambda (H10: (subst1 d u0 u (lift (S O) d 
47284 x0))).(\lambda (_: (subst1 d u0 t (lift (S O) d x1))).(\lambda (H12: (ty3 g a 
47285 x0 x1)).(let H13 \def (H5 e u0 (S d) (getl_head (Bind b) d c0 (CHead e (Bind 
47286 Abbr) u0) H6 u) (CHead a0 (Bind b) (lift (S O) d x0)) (csubst1_bind b d u0 u 
47287 (lift (S O) d x0) H10 c0 a0 H7) (CHead a (Bind b) x0) (drop_skip_bind (S O) d 
47288 a0 a H8 b x0)) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(subst1 (S 
47289 d) u0 t4 (lift (S O) (S d) y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 (S 
47290 d) u0 t0 (lift (S O) (S d) y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g 
47291 (CHead a (Bind b) x0) y1 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47292 T).(subst1 d u0 (THead (Bind b) u t3) (lift (S O) d y1)))) (\lambda (_: 
47293 T).(\lambda (y2: T).(subst1 d u0 (THead (Bind b) u t4) (lift (S O) d y2)))) 
47294 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x2: 
47295 T).(\lambda (x3: T).(\lambda (H14: (subst1 (S d) u0 t4 (lift (S O) (S d) 
47296 x2))).(\lambda (_: (subst1 (S d) u0 t0 (lift (S O) (S d) x3))).(\lambda (H16: 
47297 (ty3 g (CHead a (Bind b) x0) x2 x3)).(let H17 \def (H3 e u0 (S d) (getl_head 
47298 (Bind b) d c0 (CHead e (Bind Abbr) u0) H6 u) (CHead a0 (Bind b) (lift (S O) d 
47299 x0)) (csubst1_bind b d u0 u (lift (S O) d x0) H10 c0 a0 H7) (CHead a (Bind b) 
47300 x0) (drop_skip_bind (S O) d a0 a H8 b x0)) in (ex3_2_ind T T (\lambda (y1: 
47301 T).(\lambda (_: T).(subst1 (S d) u0 t3 (lift (S O) (S d) y1)))) (\lambda (_: 
47302 T).(\lambda (y2: T).(subst1 (S d) u0 t4 (lift (S O) (S d) y2)))) (\lambda 
47303 (y1: T).(\lambda (y2: T).(ty3 g (CHead a (Bind b) x0) y1 y2))) (ex3_2 T T 
47304 (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 (THead (Bind b) u t3) (lift (S 
47305 O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 (THead (Bind b) u 
47306 t4) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) 
47307 (\lambda (x4: T).(\lambda (x5: T).(\lambda (H18: (subst1 (S d) u0 t3 (lift (S 
47308 O) (S d) x4))).(\lambda (H19: (subst1 (S d) u0 t4 (lift (S O) (S d) 
47309 x5))).(\lambda (H20: (ty3 g (CHead a (Bind b) x0) x4 x5)).(let H21 \def 
47310 (eq_ind T x5 (\lambda (t: T).(ty3 g (CHead a (Bind b) x0) x4 t)) H20 x2 
47311 (subst1_confluence_lift t4 x5 u0 (S d) H19 x2 H14)) in (ex3_2_intro T T 
47312 (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 (THead (Bind b) u t3) (lift (S 
47313 O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 (THead (Bind b) u 
47314 t4) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) 
47315 (THead (Bind b) x0 x4) (THead (Bind b) x0 x2) (eq_ind_r T (THead (Bind b) 
47316 (lift (S O) d x0) (lift (S O) (S d) x4)) (\lambda (t5: T).(subst1 d u0 (THead 
47317 (Bind b) u t3) t5)) (subst1_head u0 u (lift (S O) d x0) d H10 (Bind b) t3 
47318 (lift (S O) (S d) x4) H18) (lift (S O) d (THead (Bind b) x0 x4)) (lift_bind b 
47319 x0 x4 (S O) d)) (eq_ind_r T (THead (Bind b) (lift (S O) d x0) (lift (S O) (S 
47320 d) x2)) (\lambda (t5: T).(subst1 d u0 (THead (Bind b) u t4) t5)) (subst1_head 
47321 u0 u (lift (S O) d x0) d H10 (Bind b) t4 (lift (S O) (S d) x2) H14) (lift (S 
47322 O) d (THead (Bind b) x0 x2)) (lift_bind b x0 x2 (S O) d)) (ty3_bind g a x0 x1 
47323 H12 b x4 x2 H21 x3 H16)))))))) H17))))))) H13))))))) 
47324 H9))))))))))))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda (u: 
47325 T).(\lambda (_: (ty3 g c0 w u)).(\lambda (H1: ((\forall (e: C).(\forall (u0: 
47326 T).(\forall (d: nat).((getl d c0 (CHead e (Bind Abbr) u0)) \to (\forall (a0: 
47327 C).((csubst1 d u0 c0 a0) \to (\forall (a: C).((drop (S O) d a0 a) \to (ex3_2 
47328 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 w (lift (S O) d y1)))) 
47329 (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 u (lift (S O) d y2)))) (\lambda 
47330 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\lambda (v: 
47331 T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead (Bind Abst) u 
47332 t))).(\lambda (H3: ((\forall (e: C).(\forall (u0: T).(\forall (d: nat).((getl 
47333 d c0 (CHead e (Bind Abbr) u0)) \to (\forall (a0: C).((csubst1 d u0 c0 a0) \to 
47334 (\forall (a: C).((drop (S O) d a0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda 
47335 (_: T).(subst1 d u0 v (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: 
47336 T).(subst1 d u0 (THead (Bind Abst) u t) (lift (S O) d y2)))) (\lambda (y1: 
47337 T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\lambda (e: C).(\lambda 
47338 (u0: T).(\lambda (d: nat).(\lambda (H4: (getl d c0 (CHead e (Bind Abbr) 
47339 u0))).(\lambda (a0: C).(\lambda (H5: (csubst1 d u0 c0 a0)).(\lambda (a: 
47340 C).(\lambda (H6: (drop (S O) d a0 a)).(let H7 \def (H3 e u0 d H4 a0 H5 a H6) 
47341 in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 v (lift (S O) 
47342 d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 (THead (Bind Abst) u 
47343 t) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) 
47344 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 (THead (Flat Appl) w 
47345 v) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 (THead 
47346 (Flat Appl) w (THead (Bind Abst) u t)) (lift (S O) d y2)))) (\lambda (y1: 
47347 T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x0: T).(\lambda (x1: 
47348 T).(\lambda (H8: (subst1 d u0 v (lift (S O) d x0))).(\lambda (H9: (subst1 d 
47349 u0 (THead (Bind Abst) u t) (lift (S O) d x1))).(\lambda (H10: (ty3 g a x0 
47350 x1)).(let H11 \def (H1 e u0 d H4 a0 H5 a H6) in (ex3_2_ind T T (\lambda (y1: 
47351 T).(\lambda (_: T).(subst1 d u0 w (lift (S O) d y1)))) (\lambda (_: 
47352 T).(\lambda (y2: T).(subst1 d u0 u (lift (S O) d y2)))) (\lambda (y1: 
47353 T).(\lambda (y2: T).(ty3 g a y1 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda 
47354 (_: T).(subst1 d u0 (THead (Flat Appl) w v) (lift (S O) d y1)))) (\lambda (_: 
47355 T).(\lambda (y2: T).(subst1 d u0 (THead (Flat Appl) w (THead (Bind Abst) u 
47356 t)) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) 
47357 (\lambda (x2: T).(\lambda (x3: T).(\lambda (H12: (subst1 d u0 w (lift (S O) d 
47358 x2))).(\lambda (H13: (subst1 d u0 u (lift (S O) d x3))).(\lambda (H14: (ty3 g 
47359 a x2 x3)).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t3: T).(eq T (lift (S O) 
47360 d x1) (THead (Bind Abst) u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst1 d 
47361 u0 u u2))) (\lambda (_: T).(\lambda (t3: T).(subst1 (s (Bind Abst) d) u0 t 
47362 t3))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 (THead (Flat 
47363 Appl) w v) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 
47364 (THead (Flat Appl) w (THead (Bind Abst) u t)) (lift (S O) d y2)))) (\lambda 
47365 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x4: T).(\lambda (x5: 
47366 T).(\lambda (H15: (eq T (lift (S O) d x1) (THead (Bind Abst) x4 
47367 x5))).(\lambda (H16: (subst1 d u0 u x4)).(\lambda (H17: (subst1 (s (Bind 
47368 Abst) d) u0 t x5)).(let H18 \def (sym_equal T (lift (S O) d x1) (THead (Bind 
47369 Abst) x4 x5) H15) in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x1 
47370 (THead (Bind Abst) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T x4 (lift (S 
47371 O) d y)))) (\lambda (_: T).(\lambda (z: T).(eq T x5 (lift (S O) (S d) z)))) 
47372 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 (THead (Flat Appl) w 
47373 v) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 (THead 
47374 (Flat Appl) w (THead (Bind Abst) u t)) (lift (S O) d y2)))) (\lambda (y1: 
47375 T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x6: T).(\lambda (x7: 
47376 T).(\lambda (H19: (eq T x1 (THead (Bind Abst) x6 x7))).(\lambda (H20: (eq T 
47377 x4 (lift (S O) d x6))).(\lambda (H21: (eq T x5 (lift (S O) (S d) x7))).(let 
47378 H22 \def (eq_ind T x5 (\lambda (t0: T).(subst1 (s (Bind Abst) d) u0 t t0)) 
47379 H17 (lift (S O) (S d) x7) H21) in (let H23 \def (eq_ind T x4 (\lambda (t: 
47380 T).(subst1 d u0 u t)) H16 (lift (S O) d x6) H20) in (let H24 \def (eq_ind T 
47381 x1 (\lambda (t: T).(ty3 g a x0 t)) H10 (THead (Bind Abst) x6 x7) H19) in (let 
47382 H25 \def (eq_ind T x6 (\lambda (t: T).(ty3 g a x0 (THead (Bind Abst) t x7))) 
47383 H24 x3 (subst1_confluence_lift u x6 u0 d H23 x3 H13)) in (ex3_2_intro T T 
47384 (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 (THead (Flat Appl) w v) (lift 
47385 (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 (THead (Flat 
47386 Appl) w (THead (Bind Abst) u t)) (lift (S O) d y2)))) (\lambda (y1: 
47387 T).(\lambda (y2: T).(ty3 g a y1 y2))) (THead (Flat Appl) x2 x0) (THead (Flat 
47388 Appl) x2 (THead (Bind Abst) x3 x7)) (eq_ind_r T (THead (Flat Appl) (lift (S 
47389 O) d x2) (lift (S O) d x0)) (\lambda (t0: T).(subst1 d u0 (THead (Flat Appl) 
47390 w v) t0)) (subst1_head u0 w (lift (S O) d x2) d H12 (Flat Appl) v (lift (S O) 
47391 d x0) H8) (lift (S O) d (THead (Flat Appl) x2 x0)) (lift_flat Appl x2 x0 (S 
47392 O) d)) (eq_ind_r T (THead (Flat Appl) (lift (S O) d x2) (lift (S O) d (THead 
47393 (Bind Abst) x3 x7))) (\lambda (t0: T).(subst1 d u0 (THead (Flat Appl) w 
47394 (THead (Bind Abst) u t)) t0)) (subst1_head u0 w (lift (S O) d x2) d H12 (Flat 
47395 Appl) (THead (Bind Abst) u t) (lift (S O) d (THead (Bind Abst) x3 x7)) 
47396 (eq_ind_r T (THead (Bind Abst) (lift (S O) d x3) (lift (S O) (S d) x7)) 
47397 (\lambda (t0: T).(subst1 (s (Flat Appl) d) u0 (THead (Bind Abst) u t) t0)) 
47398 (subst1_head u0 u (lift (S O) d x3) (s (Flat Appl) d) H13 (Bind Abst) t (lift 
47399 (S O) (S d) x7) H22) (lift (S O) d (THead (Bind Abst) x3 x7)) (lift_bind Abst 
47400 x3 x7 (S O) d))) (lift (S O) d (THead (Flat Appl) x2 (THead (Bind Abst) x3 
47401 x7))) (lift_flat Appl x2 (THead (Bind Abst) x3 x7) (S O) d)) (ty3_appl g a x2 
47402 x3 H14 x0 x7 H25))))))))))) (lift_gen_bind Abst x4 x5 x1 (S O) d H18)))))))) 
47403 (subst1_gen_head (Bind Abst) u0 u t (lift (S O) d x1) d H9))))))) H11))))))) 
47404 H7))))))))))))))))))) (\lambda (c0: C).(\lambda (t3: T).(\lambda (t4: 
47405 T).(\lambda (_: (ty3 g c0 t3 t4)).(\lambda (H1: ((\forall (e: C).(\forall (u: 
47406 T).(\forall (d: nat).((getl d c0 (CHead e (Bind Abbr) u)) \to (\forall (a0: 
47407 C).((csubst1 d u c0 a0) \to (\forall (a: C).((drop (S O) d a0 a) \to (ex3_2 T 
47408 T (\lambda (y1: T).(\lambda (_: T).(subst1 d u t3 (lift (S O) d y1)))) 
47409 (\lambda (_: T).(\lambda (y2: T).(subst1 d u t4 (lift (S O) d y2)))) (\lambda 
47410 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\lambda (t0: 
47411 T).(\lambda (_: (ty3 g c0 t4 t0)).(\lambda (H3: ((\forall (e: C).(\forall (u: 
47412 T).(\forall (d: nat).((getl d c0 (CHead e (Bind Abbr) u)) \to (\forall (a0: 
47413 C).((csubst1 d u c0 a0) \to (\forall (a: C).((drop (S O) d a0 a) \to (ex3_2 T 
47414 T (\lambda (y1: T).(\lambda (_: T).(subst1 d u t4 (lift (S O) d y1)))) 
47415 (\lambda (_: T).(\lambda (y2: T).(subst1 d u t0 (lift (S O) d y2)))) (\lambda 
47416 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\lambda (e: 
47417 C).(\lambda (u: T).(\lambda (d: nat).(\lambda (H4: (getl d c0 (CHead e (Bind 
47418 Abbr) u))).(\lambda (a0: C).(\lambda (H5: (csubst1 d u c0 a0)).(\lambda (a: 
47419 C).(\lambda (H6: (drop (S O) d a0 a)).(let H7 \def (H3 e u d H4 a0 H5 a H6) 
47420 in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u t4 (lift (S O) 
47421 d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u t0 (lift (S O) d y2)))) 
47422 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (ex3_2 T T (\lambda (y1: 
47423 T).(\lambda (_: T).(subst1 d u (THead (Flat Cast) t4 t3) (lift (S O) d y1)))) 
47424 (\lambda (_: T).(\lambda (y2: T).(subst1 d u t4 (lift (S O) d y2)))) (\lambda 
47425 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x0: T).(\lambda (x1: 
47426 T).(\lambda (H8: (subst1 d u t4 (lift (S O) d x0))).(\lambda (_: (subst1 d u 
47427 t0 (lift (S O) d x1))).(\lambda (H10: (ty3 g a x0 x1)).(let H11 \def (H1 e u 
47428 d H4 a0 H5 a H6) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(subst1 d 
47429 u t3 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u t4 
47430 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) 
47431 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u (THead (Flat Cast) t4 
47432 t3) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u t4 
47433 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) 
47434 (\lambda (x2: T).(\lambda (x3: T).(\lambda (H12: (subst1 d u t3 (lift (S O) d 
47435 x2))).(\lambda (H13: (subst1 d u t4 (lift (S O) d x3))).(\lambda (H14: (ty3 g 
47436 a x2 x3)).(let H15 \def (eq_ind T x3 (\lambda (t: T).(ty3 g a x2 t)) H14 x0 
47437 (subst1_confluence_lift t4 x3 u d H13 x0 H8)) in (ex3_2_intro T T (\lambda 
47438 (y1: T).(\lambda (_: T).(subst1 d u (THead (Flat Cast) t4 t3) (lift (S O) d 
47439 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u t4 (lift (S O) d y2)))) 
47440 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (THead (Flat Cast) x0 x2) 
47441 x0 (eq_ind_r T (THead (Flat Cast) (lift (S O) d x0) (lift (S O) d x2)) 
47442 (\lambda (t: T).(subst1 d u (THead (Flat Cast) t4 t3) t)) (subst1_head u t4 
47443 (lift (S O) d x0) d H8 (Flat Cast) t3 (lift (S O) d x2) H12) (lift (S O) d 
47444 (THead (Flat Cast) x0 x2)) (lift_flat Cast x0 x2 (S O) d)) H8 (ty3_cast g a 
47445 x2 x0 H15 x1 H10)))))))) H11))))))) H7)))))))))))))))))) c t1 t2 H))))).
47446
47447 theorem ty3_gen_cvoid:
47448  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c 
47449 t1 t2) \to (\forall (e: C).(\forall (u: T).(\forall (d: nat).((getl d c 
47450 (CHead e (Bind Void) u)) \to (\forall (a: C).((drop (S O) d c a) \to (ex3_2 T 
47451 T (\lambda (y1: T).(\lambda (_: T).(eq T t1 (lift (S O) d y1)))) (\lambda (_: 
47452 T).(\lambda (y2: T).(eq T t2 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda 
47453 (y2: T).(ty3 g a y1 y2))))))))))))))
47454 \def
47455  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
47456 (H: (ty3 g c t1 t2)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda 
47457 (t0: T).(\forall (e: C).(\forall (u: T).(\forall (d: nat).((getl d c0 (CHead 
47458 e (Bind Void) u)) \to (\forall (a: C).((drop (S O) d c0 a) \to (ex3_2 T T 
47459 (\lambda (y1: T).(\lambda (_: T).(eq T t (lift (S O) d y1)))) (\lambda (_: 
47460 T).(\lambda (y2: T).(eq T t0 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda 
47461 (y2: T).(ty3 g a y1 y2))))))))))))) (\lambda (c0: C).(\lambda (t3: 
47462 T).(\lambda (t: T).(\lambda (H0: (ty3 g c0 t3 t)).(\lambda (H1: ((\forall (e: 
47463 C).(\forall (u: T).(\forall (d: nat).((getl d c0 (CHead e (Bind Void) u)) \to 
47464 (\forall (a: C).((drop (S O) d c0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda 
47465 (_: T).(eq T t3 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t 
47466 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47467 y2)))))))))))).(\lambda (u: T).(\lambda (t4: T).(\lambda (H2: (ty3 g c0 u 
47468 t4)).(\lambda (H3: ((\forall (e: C).(\forall (u0: T).(\forall (d: nat).((getl 
47469 d c0 (CHead e (Bind Void) u0)) \to (\forall (a: C).((drop (S O) d c0 a) \to 
47470 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T u (lift (S O) d y1)))) 
47471 (\lambda (_: T).(\lambda (y2: T).(eq T t4 (lift (S O) d y2)))) (\lambda (y1: 
47472 T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))).(\lambda (H4: (pc3 c0 t4 
47473 t3)).(\lambda (e: C).(\lambda (u0: T).(\lambda (d: nat).(\lambda (H5: (getl d 
47474 c0 (CHead e (Bind Void) u0))).(\lambda (a: C).(\lambda (H6: (drop (S O) d c0 
47475 a)).(let H7 \def (H3 e u0 d H5 a H6) in (ex3_2_ind T T (\lambda (y1: 
47476 T).(\lambda (_: T).(eq T u (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: 
47477 T).(eq T t4 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a 
47478 y1 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T u (lift (S O) d 
47479 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t3 (lift (S O) d y2)))) 
47480 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x0: 
47481 T).(\lambda (x1: T).(\lambda (H8: (eq T u (lift (S O) d x0))).(\lambda (H9: 
47482 (eq T t4 (lift (S O) d x1))).(\lambda (H10: (ty3 g a x0 x1)).(let H11 \def 
47483 (eq_ind T t4 (\lambda (t: T).(pc3 c0 t t3)) H4 (lift (S O) d x1) H9) in (let 
47484 H12 \def (eq_ind T t4 (\lambda (t: T).(ty3 g c0 u t)) H2 (lift (S O) d x1) 
47485 H9) in (let H13 \def (eq_ind T u (\lambda (t: T).(ty3 g c0 t (lift (S O) d 
47486 x1))) H12 (lift (S O) d x0) H8) in (eq_ind_r T (lift (S O) d x0) (\lambda 
47487 (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T t0 (lift (S O) d 
47488 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t3 (lift (S O) d y2)))) 
47489 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H14 \def (H1 e u0 
47490 d H5 a H6) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T t3 (lift 
47491 (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) d y2)))) 
47492 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (ex3_2 T T (\lambda (y1: 
47493 T).(\lambda (_: T).(eq T (lift (S O) d x0) (lift (S O) d y1)))) (\lambda (_: 
47494 T).(\lambda (y2: T).(eq T t3 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda 
47495 (y2: T).(ty3 g a y1 y2)))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H15: 
47496 (eq T t3 (lift (S O) d x2))).(\lambda (H16: (eq T t (lift (S O) d 
47497 x3))).(\lambda (H17: (ty3 g a x2 x3)).(let H18 \def (eq_ind T t (\lambda (t: 
47498 T).(ty3 g c0 t3 t)) H0 (lift (S O) d x3) H16) in (let H19 \def (eq_ind T t3 
47499 (\lambda (t: T).(ty3 g c0 t (lift (S O) d x3))) H18 (lift (S O) d x2) H15) in 
47500 (let H20 \def (eq_ind T t3 (\lambda (t: T).(pc3 c0 (lift (S O) d x1) t)) H11 
47501 (lift (S O) d x2) H15) in (eq_ind_r T (lift (S O) d x2) (\lambda (t0: 
47502 T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (lift (S O) d x0) (lift 
47503 (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t0 (lift (S O) d y2)))) 
47504 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T 
47505 (\lambda (y1: T).(\lambda (_: T).(eq T (lift (S O) d x0) (lift (S O) d y1)))) 
47506 (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) d x2) (lift (S O) d y2)))) 
47507 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) x0 x2 (refl_equal T (lift 
47508 (S O) d x0)) (refl_equal T (lift (S O) d x2)) (ty3_conv g a x2 x3 H17 x0 x1 
47509 H10 (pc3_gen_lift c0 x1 x2 (S O) d H20 a H6))) t3 H15))))))))) H14)) u 
47510 H8))))))))) H7)))))))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda 
47511 (e: C).(\lambda (u: T).(\lambda (d: nat).(\lambda (_: (getl d c0 (CHead e 
47512 (Bind Void) u))).(\lambda (a: C).(\lambda (_: (drop (S O) d c0 
47513 a)).(ex3_2_intro T T (\lambda (y1: T).(\lambda (_: T).(eq T (TSort m) (lift 
47514 (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (TSort (next g m)) 
47515 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) 
47516 (TSort m) (TSort (next g m)) (eq_ind_r T (TSort m) (\lambda (t: T).(eq T 
47517 (TSort m) t)) (refl_equal T (TSort m)) (lift (S O) d (TSort m)) (lift_sort m 
47518 (S O) d)) (eq_ind_r T (TSort (next g m)) (\lambda (t: T).(eq T (TSort (next g 
47519 m)) t)) (refl_equal T (TSort (next g m))) (lift (S O) d (TSort (next g m))) 
47520 (lift_sort (next g m) (S O) d)) (ty3_sort g a m)))))))))) (\lambda (n: 
47521 nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n 
47522 c0 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda (H1: (ty3 g d u 
47523 t)).(\lambda (H2: ((\forall (e: C).(\forall (u0: T).(\forall (d0: nat).((getl 
47524 d0 d (CHead e (Bind Void) u0)) \to (\forall (a: C).((drop (S O) d0 d a) \to 
47525 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T u (lift (S O) d0 y1)))) 
47526 (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) d0 y2)))) (\lambda (y1: 
47527 T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))).(\lambda (e: C).(\lambda (u0: 
47528 T).(\lambda (d0: nat).(\lambda (H3: (getl d0 c0 (CHead e (Bind Void) 
47529 u0))).(\lambda (a: C).(\lambda (H4: (drop (S O) d0 c0 a)).(lt_eq_gt_e n d0 
47530 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 
47531 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) d0 
47532 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (H5: (lt 
47533 n d0)).(let H6 \def (eq_ind nat (minus d0 n) (\lambda (n: nat).(getl n (CHead 
47534 d (Bind Abbr) u) (CHead e (Bind Void) u0))) (getl_conf_le d0 (CHead e (Bind 
47535 Void) u0) c0 H3 (CHead d (Bind Abbr) u) n H0 (le_S_n n d0 (le_S (S n) d0 
47536 H5))) (S (minus d0 (S n))) (minus_x_Sy d0 n H5)) in (let H7 \def (eq_ind nat 
47537 d0 (\lambda (n: nat).(drop (S O) n c0 a)) H4 (S (plus n (minus d0 (S n)))) 
47538 (lt_plus_minus n d0 H5)) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: 
47539 C).(eq T u (lift (S O) (minus d0 (S n)) v)))) (\lambda (v: T).(\lambda (e0: 
47540 C).(getl n a (CHead e0 (Bind Abbr) v)))) (\lambda (_: T).(\lambda (e0: 
47541 C).(drop (S O) (minus d0 (S n)) d e0))) (ex3_2 T T (\lambda (y1: T).(\lambda 
47542 (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: 
47543 T).(eq T (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda 
47544 (y2: T).(ty3 g a y1 y2)))) (\lambda (x0: T).(\lambda (x1: C).(\lambda (H8: 
47545 (eq T u (lift (S O) (minus d0 (S n)) x0))).(\lambda (H9: (getl n a (CHead x1 
47546 (Bind Abbr) x0))).(\lambda (H10: (drop (S O) (minus d0 (S n)) d x1)).(let H11 
47547 \def (eq_ind T u (\lambda (t0: T).(\forall (e: C).(\forall (u: T).(\forall 
47548 (d0: nat).((getl d0 d (CHead e (Bind Void) u)) \to (\forall (a: C).((drop (S 
47549 O) d0 d a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T t0 (lift (S 
47550 O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) d0 y2)))) 
47551 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))))))))) H2 (lift (S O) 
47552 (minus d0 (S n)) x0) H8) in (let H12 \def (eq_ind T u (\lambda (t0: T).(ty3 g 
47553 d t0 t)) H1 (lift (S O) (minus d0 (S n)) x0) H8) in (let H13 \def (H11 e u0 
47554 (minus d0 (S n)) (getl_gen_S (Bind Abbr) d (CHead e (Bind Void) u0) u (minus 
47555 d0 (S n)) H6) x1 H10) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq 
47556 T (lift (S O) (minus d0 (S n)) x0) (lift (S O) (minus d0 (S n)) y1)))) 
47557 (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) (minus d0 (S n)) y2)))) 
47558 (\lambda (y1: T).(\lambda (y2: T).(ty3 g x1 y1 y2))) (ex3_2 T T (\lambda (y1: 
47559 T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: 
47560 T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda 
47561 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x2: T).(\lambda (x3: 
47562 T).(\lambda (H14: (eq T (lift (S O) (minus d0 (S n)) x0) (lift (S O) (minus 
47563 d0 (S n)) x2))).(\lambda (H15: (eq T t (lift (S O) (minus d0 (S n)) 
47564 x3))).(\lambda (H16: (ty3 g x1 x2 x3)).(let H17 \def (eq_ind T t (\lambda (t: 
47565 T).(ty3 g d (lift (S O) (minus d0 (S n)) x0) t)) H12 (lift (S O) (minus d0 (S 
47566 n)) x3) H15) in (eq_ind_r T (lift (S O) (minus d0 (S n)) x3) (\lambda (t0: 
47567 T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 
47568 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t0) (lift (S O) 
47569 d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H18 \def 
47570 (eq_ind_r T x2 (\lambda (t: T).(ty3 g x1 t x3)) H16 x0 (lift_inj x0 x2 (S O) 
47571 (minus d0 (S n)) H14)) in (eq_ind T (lift (S O) (plus (S n) (minus d0 (S n))) 
47572 (lift (S n) O x3)) (\lambda (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47573 T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq 
47574 T t0 (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47575 y2))))) (eq_ind nat d0 (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: 
47576 T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: 
47577 T).(\lambda (y2: T).(eq T (lift (S O) n0 (lift (S n) O x3)) (lift (S O) d0 
47578 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T 
47579 (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) 
47580 (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) d0 (lift (S n) O x3)) 
47581 (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) 
47582 (TLRef n) (lift (S n) O x3) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T 
47583 (TLRef n) t0)) (refl_equal T (TLRef n)) (lift (S O) d0 (TLRef n)) 
47584 (lift_lref_lt n (S O) d0 H5)) (refl_equal T (lift (S O) d0 (lift (S n) O 
47585 x3))) (ty3_abbr g n a x1 x0 H9 x3 H18)) (plus (S n) (minus d0 (S n))) 
47586 (le_plus_minus (S n) d0 H5)) (lift (S n) O (lift (S O) (minus d0 (S n)) x3)) 
47587 (lift_d x3 (S O) (S n) (minus d0 (S n)) O (le_O_n (minus d0 (S n)))))) t 
47588 H15))))))) H13))))))))) (getl_drop_conf_lt Abbr c0 d u n H0 a (S O) (minus d0 
47589 (S n)) H7))))) (\lambda (H5: (eq nat n d0)).(let H6 \def (eq_ind_r nat d0 
47590 (\lambda (n: nat).(drop (S O) n c0 a)) H4 n H5) in (let H7 \def (eq_ind_r nat 
47591 d0 (\lambda (n: nat).(getl n c0 (CHead e (Bind Void) u0))) H3 n H5) in 
47592 (eq_ind nat n (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47593 T).(eq T (TLRef n) (lift (S O) n0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq 
47594 T (lift (S n) O t) (lift (S O) n0 y2)))) (\lambda (y1: T).(\lambda (y2: 
47595 T).(ty3 g a y1 y2))))) (let H8 \def (eq_ind C (CHead d (Bind Abbr) u) 
47596 (\lambda (c: C).(getl n c0 c)) H0 (CHead e (Bind Void) u0) (getl_mono c0 
47597 (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Void) u0) H7)) in (let H9 \def 
47598 (eq_ind C (CHead d (Bind Abbr) u) (\lambda (ee: C).(match ee return (\lambda 
47599 (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow 
47600 (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b 
47601 return (\lambda (_: B).Prop) with [Abbr \Rightarrow True | Abst \Rightarrow 
47602 False | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead e 
47603 (Bind Void) u0) (getl_mono c0 (CHead d (Bind Abbr) u) n H0 (CHead e (Bind 
47604 Void) u0) H7)) in (False_ind (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq 
47605 T (TLRef n) (lift (S O) n y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift 
47606 (S n) O t) (lift (S O) n y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47607 y2)))) H9))) d0 H5)))) (\lambda (H5: (lt d0 n)).(eq_ind_r nat (S (plus O 
47608 (minus n (S O)))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47609 T).(eq T (TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: 
47610 T).(eq T (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda 
47611 (y2: T).(ty3 g a y1 y2))))) (eq_ind nat (plus (S O) (minus n (S O))) (\lambda 
47612 (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n0) (lift 
47613 (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift 
47614 (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) 
47615 (eq_ind_r nat (plus (minus n (S O)) (S O)) (\lambda (n0: nat).(ex3_2 T T 
47616 (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n0) (lift (S O) d0 y1)))) 
47617 (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) d0 y2)))) 
47618 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T 
47619 (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef (plus (minus n (S O)) (S O))) 
47620 (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) 
47621 (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) 
47622 (TLRef (minus n (S O))) (lift n O t) (eq_ind_r T (TLRef (plus (minus n (S O)) 
47623 (S O))) (\lambda (t0: T).(eq T (TLRef (plus (minus n (S O)) (S O))) t0)) 
47624 (refl_equal T (TLRef (plus (minus n (S O)) (S O)))) (lift (S O) d0 (TLRef 
47625 (minus n (S O)))) (lift_lref_ge (minus n (S O)) (S O) d0 (lt_le_minus d0 n 
47626 H5))) (eq_ind_r T (lift (plus (S O) n) O t) (\lambda (t0: T).(eq T (lift (S 
47627 n) O t) t0)) (refl_equal T (lift (S n) O t)) (lift (S O) d0 (lift n O t)) 
47628 (lift_free t n (S O) O d0 (le_S_n d0 (plus O n) (le_S (S d0) (plus O n) H5)) 
47629 (le_O_n d0))) (eq_ind_r nat (S (minus n (S O))) (\lambda (n0: nat).(ty3 g a 
47630 (TLRef (minus n (S O))) (lift n0 O t))) (ty3_abbr g (minus n (S O)) a d u 
47631 (getl_drop_conf_ge n (CHead d (Bind Abbr) u) c0 H0 a (S O) d0 H4 (eq_ind_r 
47632 nat (plus (S O) d0) (\lambda (n0: nat).(le n0 n)) H5 (plus d0 (S O)) 
47633 (plus_comm d0 (S O)))) t H1) n (minus_x_SO n (le_lt_trans O d0 n (le_O_n d0) 
47634 H5)))) (plus (S O) (minus n (S O))) (plus_comm (S O) (minus n (S O)))) (S 
47635 (plus O (minus n (S O)))) (refl_equal nat (S (plus O (minus n (S O)))))) n 
47636 (lt_plus_minus O n (le_lt_trans O d0 n (le_O_n d0) H5))))))))))))))))))) 
47637 (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda 
47638 (H0: (getl n c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda (H1: (ty3 
47639 g d u t)).(\lambda (H2: ((\forall (e: C).(\forall (u0: T).(\forall (d0: 
47640 nat).((getl d0 d (CHead e (Bind Void) u0)) \to (\forall (a: C).((drop (S O) 
47641 d0 d a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T u (lift (S O) 
47642 d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) d0 y2)))) 
47643 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))).(\lambda (e: 
47644 C).(\lambda (u0: T).(\lambda (d0: nat).(\lambda (H3: (getl d0 c0 (CHead e 
47645 (Bind Void) u0))).(\lambda (a: C).(\lambda (H4: (drop (S O) d0 c0 
47646 a)).(lt_eq_gt_e n d0 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef 
47647 n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O 
47648 u) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) 
47649 (\lambda (H5: (lt n d0)).(let H6 \def (eq_ind nat (minus d0 n) (\lambda (n: 
47650 nat).(getl n (CHead d (Bind Abst) u) (CHead e (Bind Void) u0))) (getl_conf_le 
47651 d0 (CHead e (Bind Void) u0) c0 H3 (CHead d (Bind Abst) u) n H0 (le_S_n n d0 
47652 (le_S (S n) d0 H5))) (S (minus d0 (S n))) (minus_x_Sy d0 n H5)) in (let H7 
47653 \def (eq_ind nat d0 (\lambda (n: nat).(drop (S O) n c0 a)) H4 (S (plus n 
47654 (minus d0 (S n)))) (lt_plus_minus n d0 H5)) in (ex3_2_ind T C (\lambda (v: 
47655 T).(\lambda (_: C).(eq T u (lift (S O) (minus d0 (S n)) v)))) (\lambda (v: 
47656 T).(\lambda (e0: C).(getl n a (CHead e0 (Bind Abst) v)))) (\lambda (_: 
47657 T).(\lambda (e0: C).(drop (S O) (minus d0 (S n)) d e0))) (ex3_2 T T (\lambda 
47658 (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: 
47659 T).(\lambda (y2: T).(eq T (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda 
47660 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x0: T).(\lambda (x1: 
47661 C).(\lambda (H8: (eq T u (lift (S O) (minus d0 (S n)) x0))).(\lambda (H9: 
47662 (getl n a (CHead x1 (Bind Abst) x0))).(\lambda (H10: (drop (S O) (minus d0 (S 
47663 n)) d x1)).(let H11 \def (eq_ind T u (\lambda (t0: T).(\forall (e: 
47664 C).(\forall (u: T).(\forall (d0: nat).((getl d0 d (CHead e (Bind Void) u)) 
47665 \to (\forall (a: C).((drop (S O) d0 d a) \to (ex3_2 T T (\lambda (y1: 
47666 T).(\lambda (_: T).(eq T t0 (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda 
47667 (y2: T).(eq T t (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 
47668 g a y1 y2))))))))))) H2 (lift (S O) (minus d0 (S n)) x0) H8) in (let H12 \def 
47669 (eq_ind T u (\lambda (t0: T).(ty3 g d t0 t)) H1 (lift (S O) (minus d0 (S n)) 
47670 x0) H8) in (eq_ind_r T (lift (S O) (minus d0 (S n)) x0) (\lambda (t0: 
47671 T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 
47672 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t0) (lift (S O) 
47673 d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H13 \def 
47674 (H11 e u0 (minus d0 (S n)) (getl_gen_S (Bind Abst) d (CHead e (Bind Void) u0) 
47675 u (minus d0 (S n)) H6) x1 H10) in (ex3_2_ind T T (\lambda (y1: T).(\lambda 
47676 (_: T).(eq T (lift (S O) (minus d0 (S n)) x0) (lift (S O) (minus d0 (S n)) 
47677 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) (minus d0 (S n)) 
47678 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g x1 y1 y2))) (ex3_2 T T 
47679 (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) 
47680 (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O (lift (S O) (minus d0 (S 
47681 n)) x0)) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47682 y2)))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H14: (eq T (lift (S O) 
47683 (minus d0 (S n)) x0) (lift (S O) (minus d0 (S n)) x2))).(\lambda (H15: (eq T 
47684 t (lift (S O) (minus d0 (S n)) x3))).(\lambda (H16: (ty3 g x1 x2 x3)).(let 
47685 H17 \def (eq_ind T t (\lambda (t: T).(ty3 g d (lift (S O) (minus d0 (S n)) 
47686 x0) t)) H12 (lift (S O) (minus d0 (S n)) x3) H15) in (let H18 \def (eq_ind_r 
47687 T x2 (\lambda (t: T).(ty3 g x1 t x3)) H16 x0 (lift_inj x0 x2 (S O) (minus d0 
47688 (S n)) H14)) in (eq_ind T (lift (S O) (plus (S n) (minus d0 (S n))) (lift (S 
47689 n) O x0)) (\lambda (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T 
47690 (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t0 
47691 (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) 
47692 (eq_ind nat d0 (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47693 T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq 
47694 T (lift (S O) n0 (lift (S n) O x0)) (lift (S O) d0 y2)))) (\lambda (y1: 
47695 T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T (\lambda (y1: 
47696 T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: 
47697 T).(\lambda (y2: T).(eq T (lift (S O) d0 (lift (S n) O x0)) (lift (S O) d0 
47698 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (TLRef n) (lift (S 
47699 n) O x0) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) t0)) 
47700 (refl_equal T (TLRef n)) (lift (S O) d0 (TLRef n)) (lift_lref_lt n (S O) d0 
47701 H5)) (refl_equal T (lift (S O) d0 (lift (S n) O x0))) (ty3_abst g n a x1 x0 
47702 H9 x3 H18)) (plus (S n) (minus d0 (S n))) (le_plus_minus (S n) d0 H5)) (lift 
47703 (S n) O (lift (S O) (minus d0 (S n)) x0)) (lift_d x0 (S O) (S n) (minus d0 (S 
47704 n)) O (le_O_n (minus d0 (S n)))))))))))) H13)) u H8)))))))) 
47705 (getl_drop_conf_lt Abst c0 d u n H0 a (S O) (minus d0 (S n)) H7))))) (\lambda 
47706 (H5: (eq nat n d0)).(let H6 \def (eq_ind_r nat d0 (\lambda (n: nat).(drop (S 
47707 O) n c0 a)) H4 n H5) in (let H7 \def (eq_ind_r nat d0 (\lambda (n: nat).(getl 
47708 n c0 (CHead e (Bind Void) u0))) H3 n H5) in (eq_ind nat n (\lambda (n0: 
47709 nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) 
47710 n0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O u) (lift (S O) 
47711 n0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H8 \def 
47712 (eq_ind C (CHead d (Bind Abst) u) (\lambda (c: C).(getl n c0 c)) H0 (CHead e 
47713 (Bind Void) u0) (getl_mono c0 (CHead d (Bind Abst) u) n H0 (CHead e (Bind 
47714 Void) u0) H7)) in (let H9 \def (eq_ind C (CHead d (Bind Abst) u) (\lambda 
47715 (ee: C).(match ee return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow 
47716 False | (CHead _ k _) \Rightarrow (match k return (\lambda (_: K).Prop) with 
47717 [(Bind b) \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr 
47718 \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat 
47719 _) \Rightarrow False])])) I (CHead e (Bind Void) u0) (getl_mono c0 (CHead d 
47720 (Bind Abst) u) n H0 (CHead e (Bind Void) u0) H7)) in (False_ind (ex3_2 T T 
47721 (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) n y1)))) 
47722 (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O u) (lift (S O) n y2)))) 
47723 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) H9))) d0 H5)))) (\lambda 
47724 (H5: (lt d0 n)).(eq_ind_r nat (S (plus O (minus n (S O)))) (\lambda (n0: 
47725 nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n0) (lift (S O) 
47726 d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O u) (lift (S O) 
47727 d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind nat 
47728 (plus (S O) (minus n (S O))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: 
47729 T).(\lambda (_: T).(eq T (TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: 
47730 T).(\lambda (y2: T).(eq T (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda 
47731 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind_r nat (plus (minus n (S 
47732 O)) (S O)) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq 
47733 T (TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T 
47734 (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 
47735 g a y1 y2))))) (ex3_2_intro T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef 
47736 (plus (minus n (S O)) (S O))) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda 
47737 (y2: T).(eq T (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda (y1: 
47738 T).(\lambda (y2: T).(ty3 g a y1 y2))) (TLRef (minus n (S O))) (lift n O u) 
47739 (eq_ind_r T (TLRef (plus (minus n (S O)) (S O))) (\lambda (t0: T).(eq T 
47740 (TLRef (plus (minus n (S O)) (S O))) t0)) (refl_equal T (TLRef (plus (minus n 
47741 (S O)) (S O)))) (lift (S O) d0 (TLRef (minus n (S O)))) (lift_lref_ge (minus 
47742 n (S O)) (S O) d0 (lt_le_minus d0 n H5))) (eq_ind_r T (lift (plus (S O) n) O 
47743 u) (\lambda (t0: T).(eq T (lift (S n) O u) t0)) (refl_equal T (lift (S n) O 
47744 u)) (lift (S O) d0 (lift n O u)) (lift_free u n (S O) O d0 (le_S_n d0 (plus O 
47745 n) (le_S (S d0) (plus O n) H5)) (le_O_n d0))) (eq_ind_r nat (S (minus n (S 
47746 O))) (\lambda (n0: nat).(ty3 g a (TLRef (minus n (S O))) (lift n0 O u))) 
47747 (ty3_abst g (minus n (S O)) a d u (getl_drop_conf_ge n (CHead d (Bind Abst) 
47748 u) c0 H0 a (S O) d0 H4 (eq_ind_r nat (plus (S O) d0) (\lambda (n0: nat).(le 
47749 n0 n)) H5 (plus d0 (S O)) (plus_comm d0 (S O)))) t H1) n (minus_x_SO n 
47750 (le_lt_trans O d0 n (le_O_n d0) H5)))) (plus (S O) (minus n (S O))) 
47751 (plus_comm (S O) (minus n (S O)))) (S (plus O (minus n (S O)))) (refl_equal 
47752 nat (S (plus O (minus n (S O)))))) n (lt_plus_minus O n (le_lt_trans O d0 n 
47753 (le_O_n d0) H5))))))))))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda 
47754 (t: T).(\lambda (H0: (ty3 g c0 u t)).(\lambda (H1: ((\forall (e: C).(\forall 
47755 (u0: T).(\forall (d: nat).((getl d c0 (CHead e (Bind Void) u0)) \to (\forall 
47756 (a: C).((drop (S O) d c0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47757 T).(eq T u (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t 
47758 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47759 y2)))))))))))).(\lambda (b: B).(\lambda (t3: T).(\lambda (t4: T).(\lambda 
47760 (H2: (ty3 g (CHead c0 (Bind b) u) t3 t4)).(\lambda (H3: ((\forall (e: 
47761 C).(\forall (u0: T).(\forall (d: nat).((getl d (CHead c0 (Bind b) u) (CHead e 
47762 (Bind Void) u0)) \to (\forall (a: C).((drop (S O) d (CHead c0 (Bind b) u) a) 
47763 \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T t3 (lift (S O) d y1)))) 
47764 (\lambda (_: T).(\lambda (y2: T).(eq T t4 (lift (S O) d y2)))) (\lambda (y1: 
47765 T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))).(\lambda (t0: T).(\lambda (H4: 
47766 (ty3 g (CHead c0 (Bind b) u) t4 t0)).(\lambda (H5: ((\forall (e: C).(\forall 
47767 (u0: T).(\forall (d: nat).((getl d (CHead c0 (Bind b) u) (CHead e (Bind Void) 
47768 u0)) \to (\forall (a: C).((drop (S O) d (CHead c0 (Bind b) u) a) \to (ex3_2 T 
47769 T (\lambda (y1: T).(\lambda (_: T).(eq T t4 (lift (S O) d y1)))) (\lambda (_: 
47770 T).(\lambda (y2: T).(eq T t0 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda 
47771 (y2: T).(ty3 g a y1 y2)))))))))))).(\lambda (e: C).(\lambda (u0: T).(\lambda 
47772 (d: nat).(\lambda (H6: (getl d c0 (CHead e (Bind Void) u0))).(\lambda (a: 
47773 C).(\lambda (H7: (drop (S O) d c0 a)).(let H8 \def (H1 e u0 d H6 a H7) in 
47774 (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T u (lift (S O) d y1)))) 
47775 (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) d y2)))) (\lambda (y1: 
47776 T).(\lambda (y2: T).(ty3 g a y1 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda 
47777 (_: T).(eq T (THead (Bind b) u t3) (lift (S O) d y1)))) (\lambda (_: 
47778 T).(\lambda (y2: T).(eq T (THead (Bind b) u t4) (lift (S O) d y2)))) (\lambda 
47779 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x0: T).(\lambda (x1: 
47780 T).(\lambda (H9: (eq T u (lift (S O) d x0))).(\lambda (H10: (eq T t (lift (S 
47781 O) d x1))).(\lambda (H11: (ty3 g a x0 x1)).(let H12 \def (eq_ind T t (\lambda 
47782 (t: T).(ty3 g c0 u t)) H0 (lift (S O) d x1) H10) in (let H13 \def (eq_ind T u 
47783 (\lambda (t: T).(ty3 g c0 t (lift (S O) d x1))) H12 (lift (S O) d x0) H9) in 
47784 (let H14 \def (eq_ind T u (\lambda (t: T).(\forall (e: C).(\forall (u: 
47785 T).(\forall (d: nat).((getl d (CHead c0 (Bind b) t) (CHead e (Bind Void) u)) 
47786 \to (\forall (a: C).((drop (S O) d (CHead c0 (Bind b) t) a) \to (ex3_2 T T 
47787 (\lambda (y1: T).(\lambda (_: T).(eq T t4 (lift (S O) d y1)))) (\lambda (_: 
47788 T).(\lambda (y2: T).(eq T t0 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda 
47789 (y2: T).(ty3 g a y1 y2))))))))))) H5 (lift (S O) d x0) H9) in (let H15 \def 
47790 (eq_ind T u (\lambda (t: T).(ty3 g (CHead c0 (Bind b) t) t4 t0)) H4 (lift (S 
47791 O) d x0) H9) in (let H16 \def (eq_ind T u (\lambda (t: T).(\forall (e: 
47792 C).(\forall (u: T).(\forall (d: nat).((getl d (CHead c0 (Bind b) t) (CHead e 
47793 (Bind Void) u)) \to (\forall (a: C).((drop (S O) d (CHead c0 (Bind b) t) a) 
47794 \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T t3 (lift (S O) d y1)))) 
47795 (\lambda (_: T).(\lambda (y2: T).(eq T t4 (lift (S O) d y2)))) (\lambda (y1: 
47796 T).(\lambda (y2: T).(ty3 g a y1 y2))))))))))) H3 (lift (S O) d x0) H9) in 
47797 (let H17 \def (eq_ind T u (\lambda (t: T).(ty3 g (CHead c0 (Bind b) t) t3 
47798 t4)) H2 (lift (S O) d x0) H9) in (eq_ind_r T (lift (S O) d x0) (\lambda (t5: 
47799 T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (THead (Bind b) t5 t3) 
47800 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (THead (Bind b) 
47801 t5 t4) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47802 y2))))) (let H18 \def (H16 e u0 (S d) (getl_head (Bind b) d c0 (CHead e (Bind 
47803 Void) u0) H6 (lift (S O) d x0)) (CHead a (Bind b) x0) (drop_skip_bind (S O) d 
47804 c0 a H7 b x0)) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T t3 
47805 (lift (S O) (S d) y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t4 (lift (S 
47806 O) (S d) y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g (CHead a (Bind b) 
47807 x0) y1 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (THead (Bind 
47808 b) (lift (S O) d x0) t3) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: 
47809 T).(eq T (THead (Bind b) (lift (S O) d x0) t4) (lift (S O) d y2)))) (\lambda 
47810 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x2: T).(\lambda (x3: 
47811 T).(\lambda (H19: (eq T t3 (lift (S O) (S d) x2))).(\lambda (H20: (eq T t4 
47812 (lift (S O) (S d) x3))).(\lambda (H21: (ty3 g (CHead a (Bind b) x0) x2 
47813 x3)).(let H22 \def (eq_ind T t4 (\lambda (t: T).(\forall (e: C).(\forall (u: 
47814 T).(\forall (d0: nat).((getl d0 (CHead c0 (Bind b) (lift (S O) d x0)) (CHead 
47815 e (Bind Void) u)) \to (\forall (a: C).((drop (S O) d0 (CHead c0 (Bind b) 
47816 (lift (S O) d x0)) a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T t 
47817 (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t0 (lift (S O) 
47818 d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))))))))) H14 
47819 (lift (S O) (S d) x3) H20) in (eq_ind_r T (lift (S O) (S d) x3) (\lambda (t5: 
47820 T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (THead (Bind b) (lift (S 
47821 O) d x0) t3) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T 
47822 (THead (Bind b) (lift (S O) d x0) t5) (lift (S O) d y2)))) (\lambda (y1: 
47823 T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind_r T (lift (S O) (S d) x2) 
47824 (\lambda (t5: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (THead 
47825 (Bind b) (lift (S O) d x0) t5) (lift (S O) d y1)))) (\lambda (_: T).(\lambda 
47826 (y2: T).(eq T (THead (Bind b) (lift (S O) d x0) (lift (S O) (S d) x3)) (lift 
47827 (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H23 
47828 \def (H22 e u0 (S d) (getl_head (Bind b) d c0 (CHead e (Bind Void) u0) H6 
47829 (lift (S O) d x0)) (CHead a (Bind b) x0) (drop_skip_bind (S O) d c0 a H7 b 
47830 x0)) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T (lift (S O) (S 
47831 d) x3) (lift (S O) (S d) y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t0 
47832 (lift (S O) (S d) y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g (CHead a 
47833 (Bind b) x0) y1 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T 
47834 (THead (Bind b) (lift (S O) d x0) (lift (S O) (S d) x2)) (lift (S O) d y1)))) 
47835 (\lambda (_: T).(\lambda (y2: T).(eq T (THead (Bind b) (lift (S O) d x0) 
47836 (lift (S O) (S d) x3)) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: 
47837 T).(ty3 g a y1 y2)))) (\lambda (x4: T).(\lambda (x5: T).(\lambda (H24: (eq T 
47838 (lift (S O) (S d) x3) (lift (S O) (S d) x4))).(\lambda (_: (eq T t0 (lift (S 
47839 O) (S d) x5))).(\lambda (H26: (ty3 g (CHead a (Bind b) x0) x4 x5)).(let H27 
47840 \def (eq_ind_r T x4 (\lambda (t: T).(ty3 g (CHead a (Bind b) x0) t x5)) H26 
47841 x3 (lift_inj x3 x4 (S O) (S d) H24)) in (eq_ind T (lift (S O) d (THead (Bind 
47842 b) x0 x2)) (\lambda (t5: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T 
47843 t5 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (THead (Bind 
47844 b) (lift (S O) d x0) (lift (S O) (S d) x3)) (lift (S O) d y2)))) (\lambda 
47845 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind T (lift (S O) d (THead 
47846 (Bind b) x0 x3)) (\lambda (t5: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47847 T).(eq T (lift (S O) d (THead (Bind b) x0 x2)) (lift (S O) d y1)))) (\lambda 
47848 (_: T).(\lambda (y2: T).(eq T t5 (lift (S O) d y2)))) (\lambda (y1: 
47849 T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T (\lambda (y1: 
47850 T).(\lambda (_: T).(eq T (lift (S O) d (THead (Bind b) x0 x2)) (lift (S O) d 
47851 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) d (THead (Bind b) 
47852 x0 x3)) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47853 y2))) (THead (Bind b) x0 x2) (THead (Bind b) x0 x3) (refl_equal T (lift (S O) 
47854 d (THead (Bind b) x0 x2))) (refl_equal T (lift (S O) d (THead (Bind b) x0 
47855 x3))) (ty3_bind g a x0 x1 H11 b x2 x3 H21 x5 H27)) (THead (Bind b) (lift (S 
47856 O) d x0) (lift (S O) (S d) x3)) (lift_bind b x0 x3 (S O) d)) (THead (Bind b) 
47857 (lift (S O) d x0) (lift (S O) (S d) x2)) (lift_bind b x0 x2 (S O) d)))))))) 
47858 H23)) t3 H19) t4 H20))))))) H18)) u H9)))))))))))) H8))))))))))))))))))))) 
47859 (\lambda (c0: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: (ty3 g c0 w 
47860 u)).(\lambda (H1: ((\forall (e: C).(\forall (u0: T).(\forall (d: nat).((getl 
47861 d c0 (CHead e (Bind Void) u0)) \to (\forall (a: C).((drop (S O) d c0 a) \to 
47862 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T w (lift (S O) d y1)))) 
47863 (\lambda (_: T).(\lambda (y2: T).(eq T u (lift (S O) d y2)))) (\lambda (y1: 
47864 T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))).(\lambda (v: T).(\lambda (t: 
47865 T).(\lambda (H2: (ty3 g c0 v (THead (Bind Abst) u t))).(\lambda (H3: 
47866 ((\forall (e: C).(\forall (u0: T).(\forall (d: nat).((getl d c0 (CHead e 
47867 (Bind Void) u0)) \to (\forall (a: C).((drop (S O) d c0 a) \to (ex3_2 T T 
47868 (\lambda (y1: T).(\lambda (_: T).(eq T v (lift (S O) d y1)))) (\lambda (_: 
47869 T).(\lambda (y2: T).(eq T (THead (Bind Abst) u t) (lift (S O) d y2)))) 
47870 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))).(\lambda (e: 
47871 C).(\lambda (u0: T).(\lambda (d: nat).(\lambda (H4: (getl d c0 (CHead e (Bind 
47872 Void) u0))).(\lambda (a: C).(\lambda (H5: (drop (S O) d c0 a)).(let H6 \def 
47873 (H3 e u0 d H4 a H5) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T 
47874 v (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (THead (Bind 
47875 Abst) u t) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47876 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (THead (Flat Appl) w 
47877 v) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (THead (Flat 
47878 Appl) w (THead (Bind Abst) u t)) (lift (S O) d y2)))) (\lambda (y1: 
47879 T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x0: T).(\lambda (x1: 
47880 T).(\lambda (H7: (eq T v (lift (S O) d x0))).(\lambda (H8: (eq T (THead (Bind 
47881 Abst) u t) (lift (S O) d x1))).(\lambda (H9: (ty3 g a x0 x1)).(let H10 \def 
47882 (eq_ind T v (\lambda (t0: T).(ty3 g c0 t0 (THead (Bind Abst) u t))) H2 (lift 
47883 (S O) d x0) H7) in (eq_ind_r T (lift (S O) d x0) (\lambda (t0: T).(ex3_2 T T 
47884 (\lambda (y1: T).(\lambda (_: T).(eq T (THead (Flat Appl) w t0) (lift (S O) d 
47885 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (THead (Flat Appl) w (THead 
47886 (Bind Abst) u t)) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 
47887 g a y1 y2))))) (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x1 (THead 
47888 (Bind Abst) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift (S O) d 
47889 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift (S O) (S d) z)))) (ex3_2 
47890 T T (\lambda (y1: T).(\lambda (_: T).(eq T (THead (Flat Appl) w (lift (S O) d 
47891 x0)) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (THead (Flat 
47892 Appl) w (THead (Bind Abst) u t)) (lift (S O) d y2)))) (\lambda (y1: 
47893 T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x2: T).(\lambda (x3: 
47894 T).(\lambda (H11: (eq T x1 (THead (Bind Abst) x2 x3))).(\lambda (H12: (eq T u 
47895 (lift (S O) d x2))).(\lambda (H13: (eq T t (lift (S O) (S d) x3))).(let H14 
47896 \def (eq_ind T x1 (\lambda (t: T).(ty3 g a x0 t)) H9 (THead (Bind Abst) x2 
47897 x3) H11) in (eq_ind_r T (lift (S O) (S d) x3) (\lambda (t0: T).(ex3_2 T T 
47898 (\lambda (y1: T).(\lambda (_: T).(eq T (THead (Flat Appl) w (lift (S O) d 
47899 x0)) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (THead (Flat 
47900 Appl) w (THead (Bind Abst) u t0)) (lift (S O) d y2)))) (\lambda (y1: 
47901 T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H15 \def (eq_ind T u (\lambda 
47902 (t: T).(\forall (e: C).(\forall (u: T).(\forall (d: nat).((getl d c0 (CHead e 
47903 (Bind Void) u)) \to (\forall (a: C).((drop (S O) d c0 a) \to (ex3_2 T T 
47904 (\lambda (y1: T).(\lambda (_: T).(eq T w (lift (S O) d y1)))) (\lambda (_: 
47905 T).(\lambda (y2: T).(eq T t (lift (S O) d y2)))) (\lambda (y1: T).(\lambda 
47906 (y2: T).(ty3 g a y1 y2))))))))))) H1 (lift (S O) d x2) H12) in (eq_ind_r T 
47907 (lift (S O) d x2) (\lambda (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47908 T).(eq T (THead (Flat Appl) w (lift (S O) d x0)) (lift (S O) d y1)))) 
47909 (\lambda (_: T).(\lambda (y2: T).(eq T (THead (Flat Appl) w (THead (Bind 
47910 Abst) t0 (lift (S O) (S d) x3))) (lift (S O) d y2)))) (\lambda (y1: 
47911 T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H16 \def (H15 e u0 d H4 a H5) in 
47912 (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T w (lift (S O) d y1)))) 
47913 (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) d x2) (lift (S O) d y2)))) 
47914 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (ex3_2 T T (\lambda (y1: 
47915 T).(\lambda (_: T).(eq T (THead (Flat Appl) w (lift (S O) d x0)) (lift (S O) 
47916 d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (THead (Flat Appl) w (THead 
47917 (Bind Abst) (lift (S O) d x2) (lift (S O) (S d) x3))) (lift (S O) d y2)))) 
47918 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x4: 
47919 T).(\lambda (x5: T).(\lambda (H17: (eq T w (lift (S O) d x4))).(\lambda (H18: 
47920 (eq T (lift (S O) d x2) (lift (S O) d x5))).(\lambda (H19: (ty3 g a x4 
47921 x5)).(eq_ind_r T (lift (S O) d x4) (\lambda (t0: T).(ex3_2 T T (\lambda (y1: 
47922 T).(\lambda (_: T).(eq T (THead (Flat Appl) t0 (lift (S O) d x0)) (lift (S O) 
47923 d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (THead (Flat Appl) t0 (THead 
47924 (Bind Abst) (lift (S O) d x2) (lift (S O) (S d) x3))) (lift (S O) d y2)))) 
47925 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H20 \def (eq_ind_r 
47926 T x5 (\lambda (t: T).(ty3 g a x4 t)) H19 x2 (lift_inj x2 x5 (S O) d H18)) in 
47927 (eq_ind T (lift (S O) d (THead (Bind Abst) x2 x3)) (\lambda (t0: T).(ex3_2 T 
47928 T (\lambda (y1: T).(\lambda (_: T).(eq T (THead (Flat Appl) (lift (S O) d x4) 
47929 (lift (S O) d x0)) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq 
47930 T (THead (Flat Appl) (lift (S O) d x4) t0) (lift (S O) d y2)))) (\lambda (y1: 
47931 T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind T (lift (S O) d (THead (Flat 
47932 Appl) x4 x0)) (\lambda (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47933 T).(eq T t0 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T 
47934 (THead (Flat Appl) (lift (S O) d x4) (lift (S O) d (THead (Bind Abst) x2 
47935 x3))) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47936 y2))))) (eq_ind T (lift (S O) d (THead (Flat Appl) x4 (THead (Bind Abst) x2 
47937 x3))) (\lambda (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T 
47938 (lift (S O) d (THead (Flat Appl) x4 x0)) (lift (S O) d y1)))) (\lambda (_: 
47939 T).(\lambda (y2: T).(eq T t0 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda 
47940 (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T (\lambda (y1: T).(\lambda (_: 
47941 T).(eq T (lift (S O) d (THead (Flat Appl) x4 x0)) (lift (S O) d y1)))) 
47942 (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) d (THead (Flat Appl) x4 
47943 (THead (Bind Abst) x2 x3))) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda 
47944 (y2: T).(ty3 g a y1 y2))) (THead (Flat Appl) x4 x0) (THead (Flat Appl) x4 
47945 (THead (Bind Abst) x2 x3)) (refl_equal T (lift (S O) d (THead (Flat Appl) x4 
47946 x0))) (refl_equal T (lift (S O) d (THead (Flat Appl) x4 (THead (Bind Abst) x2 
47947 x3)))) (ty3_appl g a x4 x2 H20 x0 x3 H14)) (THead (Flat Appl) (lift (S O) d 
47948 x4) (lift (S O) d (THead (Bind Abst) x2 x3))) (lift_flat Appl x4 (THead (Bind 
47949 Abst) x2 x3) (S O) d)) (THead (Flat Appl) (lift (S O) d x4) (lift (S O) d 
47950 x0)) (lift_flat Appl x4 x0 (S O) d)) (THead (Bind Abst) (lift (S O) d x2) 
47951 (lift (S O) (S d) x3)) (lift_bind Abst x2 x3 (S O) d))) w H17)))))) H16)) u 
47952 H12)) t H13))))))) (lift_gen_bind Abst u t x1 (S O) d H8)) v H7))))))) 
47953 H6))))))))))))))))) (\lambda (c0: C).(\lambda (t3: T).(\lambda (t4: 
47954 T).(\lambda (H0: (ty3 g c0 t3 t4)).(\lambda (H1: ((\forall (e: C).(\forall 
47955 (u: T).(\forall (d: nat).((getl d c0 (CHead e (Bind Void) u)) \to (\forall 
47956 (a: C).((drop (S O) d c0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47957 T).(eq T t3 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t4 
47958 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 
47959 y2)))))))))))).(\lambda (t0: T).(\lambda (H2: (ty3 g c0 t4 t0)).(\lambda (H3: 
47960 ((\forall (e: C).(\forall (u: T).(\forall (d: nat).((getl d c0 (CHead e (Bind 
47961 Void) u)) \to (\forall (a: C).((drop (S O) d c0 a) \to (ex3_2 T T (\lambda 
47962 (y1: T).(\lambda (_: T).(eq T t4 (lift (S O) d y1)))) (\lambda (_: 
47963 T).(\lambda (y2: T).(eq T t0 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda 
47964 (y2: T).(ty3 g a y1 y2)))))))))))).(\lambda (e: C).(\lambda (u: T).(\lambda 
47965 (d: nat).(\lambda (H4: (getl d c0 (CHead e (Bind Void) u))).(\lambda (a: 
47966 C).(\lambda (H5: (drop (S O) d c0 a)).(let H6 \def (H3 e u d H4 a H5) in 
47967 (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T t4 (lift (S O) d y1)))) 
47968 (\lambda (_: T).(\lambda (y2: T).(eq T t0 (lift (S O) d y2)))) (\lambda (y1: 
47969 T).(\lambda (y2: T).(ty3 g a y1 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda 
47970 (_: T).(eq T (THead (Flat Cast) t4 t3) (lift (S O) d y1)))) (\lambda (_: 
47971 T).(\lambda (y2: T).(eq T t4 (lift (S O) d y2)))) (\lambda (y1: T).(\lambda 
47972 (y2: T).(ty3 g a y1 y2)))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H7: 
47973 (eq T t4 (lift (S O) d x0))).(\lambda (H8: (eq T t0 (lift (S O) d 
47974 x1))).(\lambda (H9: (ty3 g a x0 x1)).(let H10 \def (eq_ind T t0 (\lambda (t: 
47975 T).(ty3 g c0 t4 t)) H2 (lift (S O) d x1) H8) in (let H11 \def (eq_ind T t4 
47976 (\lambda (t: T).(ty3 g c0 t (lift (S O) d x1))) H10 (lift (S O) d x0) H7) in 
47977 (let H12 \def (eq_ind T t4 (\lambda (t: T).(\forall (e: C).(\forall (u: 
47978 T).(\forall (d: nat).((getl d c0 (CHead e (Bind Void) u)) \to (\forall (a: 
47979 C).((drop (S O) d c0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T 
47980 t3 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) 
47981 d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))))))))) H1 (lift 
47982 (S O) d x0) H7) in (let H13 \def (eq_ind T t4 (\lambda (t: T).(ty3 g c0 t3 
47983 t)) H0 (lift (S O) d x0) H7) in (eq_ind_r T (lift (S O) d x0) (\lambda (t: 
47984 T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (THead (Flat Cast) t t3) 
47985 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) d 
47986 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H14 \def 
47987 (H12 e u d H4 a H5) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T 
47988 t3 (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) d 
47989 x0) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) 
47990 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (THead (Flat Cast) (lift (S 
47991 O) d x0) t3) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T 
47992 (lift (S O) d x0) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 
47993 g a y1 y2)))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H15: (eq T t3 (lift 
47994 (S O) d x2))).(\lambda (H16: (eq T (lift (S O) d x0) (lift (S O) d 
47995 x3))).(\lambda (H17: (ty3 g a x2 x3)).(let H18 \def (eq_ind T t3 (\lambda (t: 
47996 T).(ty3 g c0 t (lift (S O) d x0))) H13 (lift (S O) d x2) H15) in (eq_ind_r T 
47997 (lift (S O) d x2) (\lambda (t: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: 
47998 T).(eq T (THead (Flat Cast) (lift (S O) d x0) t) (lift (S O) d y1)))) 
47999 (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) d x0) (lift (S O) d y2)))) 
48000 (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H19 \def (eq_ind_r 
48001 T x3 (\lambda (t: T).(ty3 g a x2 t)) H17 x0 (lift_inj x0 x3 (S O) d H16)) in 
48002 (eq_ind T (lift (S O) d (THead (Flat Cast) x0 x2)) (\lambda (t: T).(ex3_2 T T 
48003 (\lambda (y1: T).(\lambda (_: T).(eq T t (lift (S O) d y1)))) (\lambda (_: 
48004 T).(\lambda (y2: T).(eq T (lift (S O) d x0) (lift (S O) d y2)))) (\lambda 
48005 (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T (\lambda (y1: 
48006 T).(\lambda (_: T).(eq T (lift (S O) d (THead (Flat Cast) x0 x2)) (lift (S O) 
48007 d y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) d x0) (lift (S O) 
48008 d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (THead (Flat 
48009 Cast) x0 x2) x0 (refl_equal T (lift (S O) d (THead (Flat Cast) x0 x2))) 
48010 (refl_equal T (lift (S O) d x0)) (ty3_cast g a x2 x0 H19 x1 H9)) (THead (Flat 
48011 Cast) (lift (S O) d x0) (lift (S O) d x2)) (lift_flat Cast x0 x2 (S O) d))) 
48012 t3 H15))))))) H14)) t4 H7)))))))))) H6)))))))))))))))) c t1 t2 H))))).
48013
48014 inductive csub3 (g:G): C \to (C \to Prop) \def
48015 | csub3_sort: \forall (n: nat).(csub3 g (CSort n) (CSort n))
48016 | csub3_head: \forall (c1: C).(\forall (c2: C).((csub3 g c1 c2) \to (\forall 
48017 (k: K).(\forall (u: T).(csub3 g (CHead c1 k u) (CHead c2 k u))))))
48018 | csub3_void: \forall (c1: C).(\forall (c2: C).((csub3 g c1 c2) \to (\forall 
48019 (b: B).((not (eq B b Void)) \to (\forall (u1: T).(\forall (u2: T).(csub3 g 
48020 (CHead c1 (Bind Void) u1) (CHead c2 (Bind b) u2))))))))
48021 | csub3_abst: \forall (c1: C).(\forall (c2: C).((csub3 g c1 c2) \to (\forall 
48022 (u: T).(\forall (t: T).((ty3 g c2 u t) \to (csub3 g (CHead c1 (Bind Abst) t) 
48023 (CHead c2 (Bind Abbr) u))))))).
48024
48025 theorem csub3_gen_abbr:
48026  \forall (g: G).(\forall (e1: C).(\forall (c2: C).(\forall (v: T).((csub3 g 
48027 (CHead e1 (Bind Abbr) v) c2) \to (ex2 C (\lambda (e2: C).(eq C c2 (CHead e2 
48028 (Bind Abbr) v))) (\lambda (e2: C).(csub3 g e1 e2)))))))
48029 \def
48030  \lambda (g: G).(\lambda (e1: C).(\lambda (c2: C).(\lambda (v: T).(\lambda 
48031 (H: (csub3 g (CHead e1 (Bind Abbr) v) c2)).(let H0 \def (match H return 
48032 (\lambda (c: C).(\lambda (c0: C).(\lambda (_: (csub3 ? c c0)).((eq C c (CHead 
48033 e1 (Bind Abbr) v)) \to ((eq C c0 c2) \to (ex2 C (\lambda (e2: C).(eq C c2 
48034 (CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csub3 g e1 e2)))))))) with 
48035 [(csub3_sort n) \Rightarrow (\lambda (H0: (eq C (CSort n) (CHead e1 (Bind 
48036 Abbr) v))).(\lambda (H1: (eq C (CSort n) c2)).((let H2 \def (eq_ind C (CSort 
48037 n) (\lambda (e: C).(match e return (\lambda (_: C).Prop) with [(CSort _) 
48038 \Rightarrow True | (CHead _ _ _) \Rightarrow False])) I (CHead e1 (Bind Abbr) 
48039 v) H0) in (False_ind ((eq C (CSort n) c2) \to (ex2 C (\lambda (e2: C).(eq C 
48040 c2 (CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csub3 g e1 e2)))) H2)) H1))) 
48041 | (csub3_head c1 c0 H0 k u) \Rightarrow (\lambda (H1: (eq C (CHead c1 k u) 
48042 (CHead e1 (Bind Abbr) v))).(\lambda (H2: (eq C (CHead c0 k u) c2)).((let H3 
48043 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with 
48044 [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead c1 k u) 
48045 (CHead e1 (Bind Abbr) v) H1) in ((let H4 \def (f_equal C K (\lambda (e: 
48046 C).(match e return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | (CHead 
48047 _ k _) \Rightarrow k])) (CHead c1 k u) (CHead e1 (Bind Abbr) v) H1) in ((let 
48048 H5 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with 
48049 [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k u) 
48050 (CHead e1 (Bind Abbr) v) H1) in (eq_ind C e1 (\lambda (c: C).((eq K k (Bind 
48051 Abbr)) \to ((eq T u v) \to ((eq C (CHead c0 k u) c2) \to ((csub3 g c c0) \to 
48052 (ex2 C (\lambda (e2: C).(eq C c2 (CHead e2 (Bind Abbr) v))) (\lambda (e2: 
48053 C).(csub3 g e1 e2)))))))) (\lambda (H6: (eq K k (Bind Abbr))).(eq_ind K (Bind 
48054 Abbr) (\lambda (k0: K).((eq T u v) \to ((eq C (CHead c0 k0 u) c2) \to ((csub3 
48055 g e1 c0) \to (ex2 C (\lambda (e2: C).(eq C c2 (CHead e2 (Bind Abbr) v))) 
48056 (\lambda (e2: C).(csub3 g e1 e2))))))) (\lambda (H7: (eq T u v)).(eq_ind T v 
48057 (\lambda (t: T).((eq C (CHead c0 (Bind Abbr) t) c2) \to ((csub3 g e1 c0) \to 
48058 (ex2 C (\lambda (e2: C).(eq C c2 (CHead e2 (Bind Abbr) v))) (\lambda (e2: 
48059 C).(csub3 g e1 e2)))))) (\lambda (H8: (eq C (CHead c0 (Bind Abbr) v) 
48060 c2)).(eq_ind C (CHead c0 (Bind Abbr) v) (\lambda (c: C).((csub3 g e1 c0) \to 
48061 (ex2 C (\lambda (e2: C).(eq C c (CHead e2 (Bind Abbr) v))) (\lambda (e2: 
48062 C).(csub3 g e1 e2))))) (\lambda (H9: (csub3 g e1 c0)).(let H10 \def (eq_ind_r 
48063 C c2 (\lambda (c: C).(csub3 g (CHead e1 (Bind Abbr) v) c)) H (CHead c0 (Bind 
48064 Abbr) v) H8) in (ex_intro2 C (\lambda (e2: C).(eq C (CHead c0 (Bind Abbr) v) 
48065 (CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csub3 g e1 e2)) c0 (refl_equal C 
48066 (CHead c0 (Bind Abbr) v)) H9))) c2 H8)) u (sym_eq T u v H7))) k (sym_eq K k 
48067 (Bind Abbr) H6))) c1 (sym_eq C c1 e1 H5))) H4)) H3)) H2 H0))) | (csub3_void 
48068 c1 c0 H0 b H1 u1 u2) \Rightarrow (\lambda (H2: (eq C (CHead c1 (Bind Void) 
48069 u1) (CHead e1 (Bind Abbr) v))).(\lambda (H3: (eq C (CHead c0 (Bind b) u2) 
48070 c2)).((let H4 \def (eq_ind C (CHead c1 (Bind Void) u1) (\lambda (e: C).(match 
48071 e return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k 
48072 _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind b) 
48073 \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow 
48074 False | Abst \Rightarrow False | Void \Rightarrow True]) | (Flat _) 
48075 \Rightarrow False])])) I (CHead e1 (Bind Abbr) v) H2) in (False_ind ((eq C 
48076 (CHead c0 (Bind b) u2) c2) \to ((csub3 g c1 c0) \to ((not (eq B b Void)) \to 
48077 (ex2 C (\lambda (e2: C).(eq C c2 (CHead e2 (Bind Abbr) v))) (\lambda (e2: 
48078 C).(csub3 g e1 e2)))))) H4)) H3 H0 H1))) | (csub3_abst c1 c0 H0 u t H1) 
48079 \Rightarrow (\lambda (H2: (eq C (CHead c1 (Bind Abst) t) (CHead e1 (Bind 
48080 Abbr) v))).(\lambda (H3: (eq C (CHead c0 (Bind Abbr) u) c2)).((let H4 \def 
48081 (eq_ind C (CHead c1 (Bind Abst) t) (\lambda (e: C).(match e return (\lambda 
48082 (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow 
48083 (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b 
48084 return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow 
48085 True | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead e1 
48086 (Bind Abbr) v) H2) in (False_ind ((eq C (CHead c0 (Bind Abbr) u) c2) \to 
48087 ((csub3 g c1 c0) \to ((ty3 g c0 u t) \to (ex2 C (\lambda (e2: C).(eq C c2 
48088 (CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csub3 g e1 e2)))))) H4)) H3 H0 
48089 H1)))]) in (H0 (refl_equal C (CHead e1 (Bind Abbr) v)) (refl_equal C 
48090 c2))))))).
48091
48092 theorem csub3_gen_abst:
48093  \forall (g: G).(\forall (e1: C).(\forall (c2: C).(\forall (v1: T).((csub3 g 
48094 (CHead e1 (Bind Abst) v1) c2) \to (or (ex2 C (\lambda (e2: C).(eq C c2 (CHead 
48095 e2 (Bind Abst) v1))) (\lambda (e2: C).(csub3 g e1 e2))) (ex3_2 C T (\lambda 
48096 (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: 
48097 C).(\lambda (_: T).(csub3 g e1 e2))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g 
48098 e2 v2 v1)))))))))
48099 \def
48100  \lambda (g: G).(\lambda (e1: C).(\lambda (c2: C).(\lambda (v1: T).(\lambda 
48101 (H: (csub3 g (CHead e1 (Bind Abst) v1) c2)).(let H0 \def (match H return 
48102 (\lambda (c: C).(\lambda (c0: C).(\lambda (_: (csub3 ? c c0)).((eq C c (CHead 
48103 e1 (Bind Abst) v1)) \to ((eq C c0 c2) \to (or (ex2 C (\lambda (e2: C).(eq C 
48104 c2 (CHead e2 (Bind Abst) v1))) (\lambda (e2: C).(csub3 g e1 e2))) (ex3_2 C T 
48105 (\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind Abbr) v2)))) 
48106 (\lambda (e2: C).(\lambda (_: T).(csub3 g e1 e2))) (\lambda (e2: C).(\lambda 
48107 (v2: T).(ty3 g e2 v2 v1)))))))))) with [(csub3_sort n) \Rightarrow (\lambda 
48108 (H0: (eq C (CSort n) (CHead e1 (Bind Abst) v1))).(\lambda (H1: (eq C (CSort 
48109 n) c2)).((let H2 \def (eq_ind C (CSort n) (\lambda (e: C).(match e return 
48110 (\lambda (_: C).Prop) with [(CSort _) \Rightarrow True | (CHead _ _ _) 
48111 \Rightarrow False])) I (CHead e1 (Bind Abst) v1) H0) in (False_ind ((eq C 
48112 (CSort n) c2) \to (or (ex2 C (\lambda (e2: C).(eq C c2 (CHead e2 (Bind Abst) 
48113 v1))) (\lambda (e2: C).(csub3 g e1 e2))) (ex3_2 C T (\lambda (e2: C).(\lambda 
48114 (v2: T).(eq C c2 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: 
48115 T).(csub3 g e1 e2))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1)))))) 
48116 H2)) H1))) | (csub3_head c1 c0 H0 k u) \Rightarrow (\lambda (H1: (eq C (CHead 
48117 c1 k u) (CHead e1 (Bind Abst) v1))).(\lambda (H2: (eq C (CHead c0 k u) 
48118 c2)).((let H3 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: 
48119 C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead 
48120 c1 k u) (CHead e1 (Bind Abst) v1) H1) in ((let H4 \def (f_equal C K (\lambda 
48121 (e: C).(match e return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | 
48122 (CHead _ k _) \Rightarrow k])) (CHead c1 k u) (CHead e1 (Bind Abst) v1) H1) 
48123 in ((let H5 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: 
48124 C).C) with [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead 
48125 c1 k u) (CHead e1 (Bind Abst) v1) H1) in (eq_ind C e1 (\lambda (c: C).((eq K 
48126 k (Bind Abst)) \to ((eq T u v1) \to ((eq C (CHead c0 k u) c2) \to ((csub3 g c 
48127 c0) \to (or (ex2 C (\lambda (e2: C).(eq C c2 (CHead e2 (Bind Abst) v1))) 
48128 (\lambda (e2: C).(csub3 g e1 e2))) (ex3_2 C T (\lambda (e2: C).(\lambda (v2: 
48129 T).(eq C c2 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: 
48130 T).(csub3 g e1 e2))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 
48131 v1)))))))))) (\lambda (H6: (eq K k (Bind Abst))).(eq_ind K (Bind Abst) 
48132 (\lambda (k0: K).((eq T u v1) \to ((eq C (CHead c0 k0 u) c2) \to ((csub3 g e1 
48133 c0) \to (or (ex2 C (\lambda (e2: C).(eq C c2 (CHead e2 (Bind Abst) v1))) 
48134 (\lambda (e2: C).(csub3 g e1 e2))) (ex3_2 C T (\lambda (e2: C).(\lambda (v2: 
48135 T).(eq C c2 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: 
48136 T).(csub3 g e1 e2))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 
48137 v1))))))))) (\lambda (H7: (eq T u v1)).(eq_ind T v1 (\lambda (t: T).((eq C 
48138 (CHead c0 (Bind Abst) t) c2) \to ((csub3 g e1 c0) \to (or (ex2 C (\lambda 
48139 (e2: C).(eq C c2 (CHead e2 (Bind Abst) v1))) (\lambda (e2: C).(csub3 g e1 
48140 e2))) (ex3_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind 
48141 Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csub3 g e1 e2))) (\lambda (e2: 
48142 C).(\lambda (v2: T).(ty3 g e2 v2 v1)))))))) (\lambda (H8: (eq C (CHead c0 
48143 (Bind Abst) v1) c2)).(eq_ind C (CHead c0 (Bind Abst) v1) (\lambda (c: 
48144 C).((csub3 g e1 c0) \to (or (ex2 C (\lambda (e2: C).(eq C c (CHead e2 (Bind 
48145 Abst) v1))) (\lambda (e2: C).(csub3 g e1 e2))) (ex3_2 C T (\lambda (e2: 
48146 C).(\lambda (v2: T).(eq C c (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: 
48147 C).(\lambda (_: T).(csub3 g e1 e2))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g 
48148 e2 v2 v1))))))) (\lambda (H9: (csub3 g e1 c0)).(let H10 \def (eq_ind_r C c2 
48149 (\lambda (c: C).(csub3 g (CHead e1 (Bind Abst) v1) c)) H (CHead c0 (Bind 
48150 Abst) v1) H8) in (or_introl (ex2 C (\lambda (e2: C).(eq C (CHead c0 (Bind 
48151 Abst) v1) (CHead e2 (Bind Abst) v1))) (\lambda (e2: C).(csub3 g e1 e2))) 
48152 (ex3_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C (CHead c0 (Bind Abst) v1) 
48153 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csub3 g e1 
48154 e2))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1)))) (ex_intro2 C 
48155 (\lambda (e2: C).(eq C (CHead c0 (Bind Abst) v1) (CHead e2 (Bind Abst) v1))) 
48156 (\lambda (e2: C).(csub3 g e1 e2)) c0 (refl_equal C (CHead c0 (Bind Abst) v1)) 
48157 H9)))) c2 H8)) u (sym_eq T u v1 H7))) k (sym_eq K k (Bind Abst) H6))) c1 
48158 (sym_eq C c1 e1 H5))) H4)) H3)) H2 H0))) | (csub3_void c1 c0 H0 b H1 u1 u2) 
48159 \Rightarrow (\lambda (H2: (eq C (CHead c1 (Bind Void) u1) (CHead e1 (Bind 
48160 Abst) v1))).(\lambda (H3: (eq C (CHead c0 (Bind b) u2) c2)).((let H4 \def 
48161 (eq_ind C (CHead c1 (Bind Void) u1) (\lambda (e: C).(match e return (\lambda 
48162 (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow 
48163 (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b 
48164 return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow 
48165 False | Void \Rightarrow True]) | (Flat _) \Rightarrow False])])) I (CHead e1 
48166 (Bind Abst) v1) H2) in (False_ind ((eq C (CHead c0 (Bind b) u2) c2) \to 
48167 ((csub3 g c1 c0) \to ((not (eq B b Void)) \to (or (ex2 C (\lambda (e2: C).(eq 
48168 C c2 (CHead e2 (Bind Abst) v1))) (\lambda (e2: C).(csub3 g e1 e2))) (ex3_2 C 
48169 T (\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind Abbr) v2)))) 
48170 (\lambda (e2: C).(\lambda (_: T).(csub3 g e1 e2))) (\lambda (e2: C).(\lambda 
48171 (v2: T).(ty3 g e2 v2 v1)))))))) H4)) H3 H0 H1))) | (csub3_abst c1 c0 H0 u t 
48172 H1) \Rightarrow (\lambda (H2: (eq C (CHead c1 (Bind Abst) t) (CHead e1 (Bind 
48173 Abst) v1))).(\lambda (H3: (eq C (CHead c0 (Bind Abbr) u) c2)).((let H4 \def 
48174 (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort 
48175 _) \Rightarrow t | (CHead _ _ t) \Rightarrow t])) (CHead c1 (Bind Abst) t) 
48176 (CHead e1 (Bind Abst) v1) H2) in ((let H5 \def (f_equal C C (\lambda (e: 
48177 C).(match e return (\lambda (_: C).C) with [(CSort _) \Rightarrow c1 | (CHead 
48178 c _ _) \Rightarrow c])) (CHead c1 (Bind Abst) t) (CHead e1 (Bind Abst) v1) 
48179 H2) in (eq_ind C e1 (\lambda (c: C).((eq T t v1) \to ((eq C (CHead c0 (Bind 
48180 Abbr) u) c2) \to ((csub3 g c c0) \to ((ty3 g c0 u t) \to (or (ex2 C (\lambda 
48181 (e2: C).(eq C c2 (CHead e2 (Bind Abst) v1))) (\lambda (e2: C).(csub3 g e1 
48182 e2))) (ex3_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind 
48183 Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csub3 g e1 e2))) (\lambda (e2: 
48184 C).(\lambda (v2: T).(ty3 g e2 v2 v1)))))))))) (\lambda (H6: (eq T t 
48185 v1)).(eq_ind T v1 (\lambda (t0: T).((eq C (CHead c0 (Bind Abbr) u) c2) \to 
48186 ((csub3 g e1 c0) \to ((ty3 g c0 u t0) \to (or (ex2 C (\lambda (e2: C).(eq C 
48187 c2 (CHead e2 (Bind Abst) v1))) (\lambda (e2: C).(csub3 g e1 e2))) (ex3_2 C T 
48188 (\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind Abbr) v2)))) 
48189 (\lambda (e2: C).(\lambda (_: T).(csub3 g e1 e2))) (\lambda (e2: C).(\lambda 
48190 (v2: T).(ty3 g e2 v2 v1))))))))) (\lambda (H7: (eq C (CHead c0 (Bind Abbr) u) 
48191 c2)).(eq_ind C (CHead c0 (Bind Abbr) u) (\lambda (c: C).((csub3 g e1 c0) \to 
48192 ((ty3 g c0 u v1) \to (or (ex2 C (\lambda (e2: C).(eq C c (CHead e2 (Bind 
48193 Abst) v1))) (\lambda (e2: C).(csub3 g e1 e2))) (ex3_2 C T (\lambda (e2: 
48194 C).(\lambda (v2: T).(eq C c (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: 
48195 C).(\lambda (_: T).(csub3 g e1 e2))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g 
48196 e2 v2 v1)))))))) (\lambda (H8: (csub3 g e1 c0)).(\lambda (H9: (ty3 g c0 u 
48197 v1)).(let H10 \def (eq_ind_r C c2 (\lambda (c: C).(csub3 g (CHead e1 (Bind 
48198 Abst) v1) c)) H (CHead c0 (Bind Abbr) u) H7) in (or_intror (ex2 C (\lambda 
48199 (e2: C).(eq C (CHead c0 (Bind Abbr) u) (CHead e2 (Bind Abst) v1))) (\lambda 
48200 (e2: C).(csub3 g e1 e2))) (ex3_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C 
48201 (CHead c0 (Bind Abbr) u) (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: 
48202 C).(\lambda (_: T).(csub3 g e1 e2))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g 
48203 e2 v2 v1)))) (ex3_2_intro C T (\lambda (e2: C).(\lambda (v2: T).(eq C (CHead 
48204 c0 (Bind Abbr) u) (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: 
48205 T).(csub3 g e1 e2))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1))) c0 
48206 u (refl_equal C (CHead c0 (Bind Abbr) u)) H8 H9))))) c2 H7)) t (sym_eq T t v1 
48207 H6))) c1 (sym_eq C c1 e1 H5))) H4)) H3 H0 H1)))]) in (H0 (refl_equal C (CHead 
48208 e1 (Bind Abst) v1)) (refl_equal C c2))))))).
48209
48210 theorem csub3_gen_bind:
48211  \forall (g: G).(\forall (b1: B).(\forall (e1: C).(\forall (c2: C).(\forall 
48212 (v1: T).((csub3 g (CHead e1 (Bind b1) v1) c2) \to (ex2_3 B C T (\lambda (b2: 
48213 B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind b2) v2))))) 
48214 (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csub3 g e1 e2))))))))))
48215 \def
48216  \lambda (g: G).(\lambda (b1: B).(\lambda (e1: C).(\lambda (c2: C).(\lambda 
48217 (v1: T).(\lambda (H: (csub3 g (CHead e1 (Bind b1) v1) c2)).(let H0 \def 
48218 (match H return (\lambda (c: C).(\lambda (c0: C).(\lambda (_: (csub3 ? c 
48219 c0)).((eq C c (CHead e1 (Bind b1) v1)) \to ((eq C c0 c2) \to (ex2_3 B C T 
48220 (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind 
48221 b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csub3 g e1 
48222 e2)))))))))) with [(csub3_sort n) \Rightarrow (\lambda (H0: (eq C (CSort n) 
48223 (CHead e1 (Bind b1) v1))).(\lambda (H1: (eq C (CSort n) c2)).((let H2 \def 
48224 (eq_ind C (CSort n) (\lambda (e: C).(match e return (\lambda (_: C).Prop) 
48225 with [(CSort _) \Rightarrow True | (CHead _ _ _) \Rightarrow False])) I 
48226 (CHead e1 (Bind b1) v1) H0) in (False_ind ((eq C (CSort n) c2) \to (ex2_3 B C 
48227 T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind 
48228 b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csub3 g e1 
48229 e2)))))) H2)) H1))) | (csub3_head c1 c0 H0 k u) \Rightarrow (\lambda (H1: (eq 
48230 C (CHead c1 k u) (CHead e1 (Bind b1) v1))).(\lambda (H2: (eq C (CHead c0 k u) 
48231 c2)).((let H3 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: 
48232 C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead 
48233 c1 k u) (CHead e1 (Bind b1) v1) H1) in ((let H4 \def (f_equal C K (\lambda 
48234 (e: C).(match e return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | 
48235 (CHead _ k _) \Rightarrow k])) (CHead c1 k u) (CHead e1 (Bind b1) v1) H1) in 
48236 ((let H5 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) 
48237 with [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k 
48238 u) (CHead e1 (Bind b1) v1) H1) in (eq_ind C e1 (\lambda (c: C).((eq K k (Bind 
48239 b1)) \to ((eq T u v1) \to ((eq C (CHead c0 k u) c2) \to ((csub3 g c c0) \to 
48240 (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 
48241 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: 
48242 T).(csub3 g e1 e2)))))))))) (\lambda (H6: (eq K k (Bind b1))).(eq_ind K (Bind 
48243 b1) (\lambda (k0: K).((eq T u v1) \to ((eq C (CHead c0 k0 u) c2) \to ((csub3 
48244 g e1 c0) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: 
48245 T).(eq C c2 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: 
48246 C).(\lambda (_: T).(csub3 g e1 e2))))))))) (\lambda (H7: (eq T u v1)).(eq_ind 
48247 T v1 (\lambda (t: T).((eq C (CHead c0 (Bind b1) t) c2) \to ((csub3 g e1 c0) 
48248 \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 
48249 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: 
48250 T).(csub3 g e1 e2)))))))) (\lambda (H8: (eq C (CHead c0 (Bind b1) v1) 
48251 c2)).(eq_ind C (CHead c0 (Bind b1) v1) (\lambda (c: C).((csub3 g e1 c0) \to 
48252 (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c 
48253 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: 
48254 T).(csub3 g e1 e2))))))) (\lambda (H9: (csub3 g e1 c0)).(let H10 \def 
48255 (eq_ind_r C c2 (\lambda (c: C).(csub3 g (CHead e1 (Bind b1) v1) c)) H (CHead 
48256 c0 (Bind b1) v1) H8) in (ex2_3_intro B C T (\lambda (b2: B).(\lambda (e2: 
48257 C).(\lambda (v2: T).(eq C (CHead c0 (Bind b1) v1) (CHead e2 (Bind b2) v2))))) 
48258 (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csub3 g e1 e2)))) b1 c0 v1 
48259 (refl_equal C (CHead c0 (Bind b1) v1)) H9))) c2 H8)) u (sym_eq T u v1 H7))) k 
48260 (sym_eq K k (Bind b1) H6))) c1 (sym_eq C c1 e1 H5))) H4)) H3)) H2 H0))) | 
48261 (csub3_void c1 c0 H0 b H1 u1 u2) \Rightarrow (\lambda (H2: (eq C (CHead c1 
48262 (Bind Void) u1) (CHead e1 (Bind b1) v1))).(\lambda (H3: (eq C (CHead c0 (Bind 
48263 b) u2) c2)).((let H4 \def (f_equal C T (\lambda (e: C).(match e return 
48264 (\lambda (_: C).T) with [(CSort _) \Rightarrow u1 | (CHead _ _ t) \Rightarrow 
48265 t])) (CHead c1 (Bind Void) u1) (CHead e1 (Bind b1) v1) H2) in ((let H5 \def 
48266 (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) with [(CSort 
48267 _) \Rightarrow Void | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
48268 K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Void])])) (CHead c1 
48269 (Bind Void) u1) (CHead e1 (Bind b1) v1) H2) in ((let H6 \def (f_equal C C 
48270 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
48271 \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 (Bind Void) u1) 
48272 (CHead e1 (Bind b1) v1) H2) in (eq_ind C e1 (\lambda (c: C).((eq B Void b1) 
48273 \to ((eq T u1 v1) \to ((eq C (CHead c0 (Bind b) u2) c2) \to ((csub3 g c c0) 
48274 \to ((not (eq B b Void)) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: 
48275 C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind b2) v2))))) (\lambda (_: 
48276 B).(\lambda (e2: C).(\lambda (_: T).(csub3 g e1 e2))))))))))) (\lambda (H7: 
48277 (eq B Void b1)).(eq_ind B Void (\lambda (_: B).((eq T u1 v1) \to ((eq C 
48278 (CHead c0 (Bind b) u2) c2) \to ((csub3 g e1 c0) \to ((not (eq B b Void)) \to 
48279 (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 
48280 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: 
48281 T).(csub3 g e1 e2)))))))))) (\lambda (H8: (eq T u1 v1)).(eq_ind T v1 (\lambda 
48282 (_: T).((eq C (CHead c0 (Bind b) u2) c2) \to ((csub3 g e1 c0) \to ((not (eq B 
48283 b Void)) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: 
48284 T).(eq C c2 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: 
48285 C).(\lambda (_: T).(csub3 g e1 e2))))))))) (\lambda (H9: (eq C (CHead c0 
48286 (Bind b) u2) c2)).(eq_ind C (CHead c0 (Bind b) u2) (\lambda (c: C).((csub3 g 
48287 e1 c0) \to ((not (eq B b Void)) \to (ex2_3 B C T (\lambda (b2: B).(\lambda 
48288 (e2: C).(\lambda (v2: T).(eq C c (CHead e2 (Bind b2) v2))))) (\lambda (_: 
48289 B).(\lambda (e2: C).(\lambda (_: T).(csub3 g e1 e2)))))))) (\lambda (H10: 
48290 (csub3 g e1 c0)).(\lambda (_: (not (eq B b Void))).(let H12 \def (eq_ind_r C 
48291 c2 (\lambda (c: C).(csub3 g (CHead e1 (Bind b1) v1) c)) H (CHead c0 (Bind b) 
48292 u2) H9) in (let H13 \def (eq_ind_r B b1 (\lambda (b0: B).(csub3 g (CHead e1 
48293 (Bind b0) v1) (CHead c0 (Bind b) u2))) H12 Void H7) in (ex2_3_intro B C T 
48294 (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C (CHead c0 (Bind b) 
48295 u2) (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: 
48296 T).(csub3 g e1 e2)))) b c0 u2 (refl_equal C (CHead c0 (Bind b) u2)) H10))))) 
48297 c2 H9)) u1 (sym_eq T u1 v1 H8))) b1 H7)) c1 (sym_eq C c1 e1 H6))) H5)) H4)) 
48298 H3 H0 H1))) | (csub3_abst c1 c0 H0 u t H1) \Rightarrow (\lambda (H2: (eq C 
48299 (CHead c1 (Bind Abst) t) (CHead e1 (Bind b1) v1))).(\lambda (H3: (eq C (CHead 
48300 c0 (Bind Abbr) u) c2)).((let H4 \def (f_equal C T (\lambda (e: C).(match e 
48301 return (\lambda (_: C).T) with [(CSort _) \Rightarrow t | (CHead _ _ t) 
48302 \Rightarrow t])) (CHead c1 (Bind Abst) t) (CHead e1 (Bind b1) v1) H2) in 
48303 ((let H5 \def (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) 
48304 with [(CSort _) \Rightarrow Abst | (CHead _ k _) \Rightarrow (match k return 
48305 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
48306 Abst])])) (CHead c1 (Bind Abst) t) (CHead e1 (Bind b1) v1) H2) in ((let H6 
48307 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with 
48308 [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 (Bind 
48309 Abst) t) (CHead e1 (Bind b1) v1) H2) in (eq_ind C e1 (\lambda (c: C).((eq B 
48310 Abst b1) \to ((eq T t v1) \to ((eq C (CHead c0 (Bind Abbr) u) c2) \to ((csub3 
48311 g c c0) \to ((ty3 g c0 u t) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: 
48312 C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind b2) v2))))) (\lambda (_: 
48313 B).(\lambda (e2: C).(\lambda (_: T).(csub3 g e1 e2))))))))))) (\lambda (H7: 
48314 (eq B Abst b1)).(eq_ind B Abst (\lambda (_: B).((eq T t v1) \to ((eq C (CHead 
48315 c0 (Bind Abbr) u) c2) \to ((csub3 g e1 c0) \to ((ty3 g c0 u t) \to (ex2_3 B C 
48316 T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind 
48317 b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csub3 g e1 
48318 e2)))))))))) (\lambda (H8: (eq T t v1)).(eq_ind T v1 (\lambda (t0: T).((eq C 
48319 (CHead c0 (Bind Abbr) u) c2) \to ((csub3 g e1 c0) \to ((ty3 g c0 u t0) \to 
48320 (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 
48321 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: 
48322 T).(csub3 g e1 e2))))))))) (\lambda (H9: (eq C (CHead c0 (Bind Abbr) u) 
48323 c2)).(eq_ind C (CHead c0 (Bind Abbr) u) (\lambda (c: C).((csub3 g e1 c0) \to 
48324 ((ty3 g c0 u v1) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda 
48325 (v2: T).(eq C c (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: 
48326 C).(\lambda (_: T).(csub3 g e1 e2)))))))) (\lambda (H10: (csub3 g e1 
48327 c0)).(\lambda (_: (ty3 g c0 u v1)).(let H12 \def (eq_ind_r C c2 (\lambda (c: 
48328 C).(csub3 g (CHead e1 (Bind b1) v1) c)) H (CHead c0 (Bind Abbr) u) H9) in 
48329 (let H13 \def (eq_ind_r B b1 (\lambda (b: B).(csub3 g (CHead e1 (Bind b) v1) 
48330 (CHead c0 (Bind Abbr) u))) H12 Abst H7) in (ex2_3_intro B C T (\lambda (b2: 
48331 B).(\lambda (e2: C).(\lambda (v2: T).(eq C (CHead c0 (Bind Abbr) u) (CHead e2 
48332 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csub3 g 
48333 e1 e2)))) Abbr c0 u (refl_equal C (CHead c0 (Bind Abbr) u)) H10))))) c2 H9)) 
48334 t (sym_eq T t v1 H8))) b1 H7)) c1 (sym_eq C c1 e1 H6))) H5)) H4)) H3 H0 
48335 H1)))]) in (H0 (refl_equal C (CHead e1 (Bind b1) v1)) (refl_equal C 
48336 c2)))))))).
48337
48338 theorem csub3_refl:
48339  \forall (g: G).(\forall (c: C).(csub3 g c c))
48340 \def
48341  \lambda (g: G).(\lambda (c: C).(C_ind (\lambda (c0: C).(csub3 g c0 c0)) 
48342 (\lambda (n: nat).(csub3_sort g n)) (\lambda (c0: C).(\lambda (H: (csub3 g c0 
48343 c0)).(\lambda (k: K).(\lambda (t: T).(csub3_head g c0 c0 H k t))))) c)).
48344
48345 theorem csub3_clear_conf:
48346  \forall (g: G).(\forall (c1: C).(\forall (c2: C).((csub3 g c1 c2) \to 
48347 (\forall (e1: C).((clear c1 e1) \to (ex2 C (\lambda (e2: C).(csub3 g e1 e2)) 
48348 (\lambda (e2: C).(clear c2 e2))))))))
48349 \def
48350  \lambda (g: G).(\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (csub3 g c1 
48351 c2)).(csub3_ind g (\lambda (c: C).(\lambda (c0: C).(\forall (e1: C).((clear c 
48352 e1) \to (ex2 C (\lambda (e2: C).(csub3 g e1 e2)) (\lambda (e2: C).(clear c0 
48353 e2))))))) (\lambda (n: nat).(\lambda (e1: C).(\lambda (H0: (clear (CSort n) 
48354 e1)).(clear_gen_sort e1 n H0 (ex2 C (\lambda (e2: C).(csub3 g e1 e2)) 
48355 (\lambda (e2: C).(clear (CSort n) e2))))))) (\lambda (c3: C).(\lambda (c4: 
48356 C).(\lambda (H0: (csub3 g c3 c4)).(\lambda (H1: ((\forall (e1: C).((clear c3 
48357 e1) \to (ex2 C (\lambda (e2: C).(csub3 g e1 e2)) (\lambda (e2: C).(clear c4 
48358 e2))))))).(\lambda (k: K).(\lambda (u: T).(\lambda (e1: C).(\lambda (H2: 
48359 (clear (CHead c3 k u) e1)).((match k return (\lambda (k0: K).((clear (CHead 
48360 c3 k0 u) e1) \to (ex2 C (\lambda (e2: C).(csub3 g e1 e2)) (\lambda (e2: 
48361 C).(clear (CHead c4 k0 u) e2))))) with [(Bind b) \Rightarrow (\lambda (H3: 
48362 (clear (CHead c3 (Bind b) u) e1)).(eq_ind_r C (CHead c3 (Bind b) u) (\lambda 
48363 (c: C).(ex2 C (\lambda (e2: C).(csub3 g c e2)) (\lambda (e2: C).(clear (CHead 
48364 c4 (Bind b) u) e2)))) (ex_intro2 C (\lambda (e2: C).(csub3 g (CHead c3 (Bind 
48365 b) u) e2)) (\lambda (e2: C).(clear (CHead c4 (Bind b) u) e2)) (CHead c4 (Bind 
48366 b) u) (csub3_head g c3 c4 H0 (Bind b) u) (clear_bind b c4 u)) e1 
48367 (clear_gen_bind b c3 e1 u H3))) | (Flat f) \Rightarrow (\lambda (H3: (clear 
48368 (CHead c3 (Flat f) u) e1)).(let H4 \def (H1 e1 (clear_gen_flat f c3 e1 u H3)) 
48369 in (ex2_ind C (\lambda (e2: C).(csub3 g e1 e2)) (\lambda (e2: C).(clear c4 
48370 e2)) (ex2 C (\lambda (e2: C).(csub3 g e1 e2)) (\lambda (e2: C).(clear (CHead 
48371 c4 (Flat f) u) e2))) (\lambda (x: C).(\lambda (H5: (csub3 g e1 x)).(\lambda 
48372 (H6: (clear c4 x)).(ex_intro2 C (\lambda (e2: C).(csub3 g e1 e2)) (\lambda 
48373 (e2: C).(clear (CHead c4 (Flat f) u) e2)) x H5 (clear_flat c4 x H6 f u))))) 
48374 H4)))]) H2))))))))) (\lambda (c3: C).(\lambda (c4: C).(\lambda (H0: (csub3 g 
48375 c3 c4)).(\lambda (_: ((\forall (e1: C).((clear c3 e1) \to (ex2 C (\lambda 
48376 (e2: C).(csub3 g e1 e2)) (\lambda (e2: C).(clear c4 e2))))))).(\lambda (b: 
48377 B).(\lambda (H2: (not (eq B b Void))).(\lambda (u1: T).(\lambda (u2: 
48378 T).(\lambda (e1: C).(\lambda (H3: (clear (CHead c3 (Bind Void) u1) 
48379 e1)).(eq_ind_r C (CHead c3 (Bind Void) u1) (\lambda (c: C).(ex2 C (\lambda 
48380 (e2: C).(csub3 g c e2)) (\lambda (e2: C).(clear (CHead c4 (Bind b) u2) e2)))) 
48381 (ex_intro2 C (\lambda (e2: C).(csub3 g (CHead c3 (Bind Void) u1) e2)) 
48382 (\lambda (e2: C).(clear (CHead c4 (Bind b) u2) e2)) (CHead c4 (Bind b) u2) 
48383 (csub3_void g c3 c4 H0 b H2 u1 u2) (clear_bind b c4 u2)) e1 (clear_gen_bind 
48384 Void c3 e1 u1 H3)))))))))))) (\lambda (c3: C).(\lambda (c4: C).(\lambda (H0: 
48385 (csub3 g c3 c4)).(\lambda (_: ((\forall (e1: C).((clear c3 e1) \to (ex2 C 
48386 (\lambda (e2: C).(csub3 g e1 e2)) (\lambda (e2: C).(clear c4 
48387 e2))))))).(\lambda (u: T).(\lambda (t: T).(\lambda (H2: (ty3 g c4 u 
48388 t)).(\lambda (e1: C).(\lambda (H3: (clear (CHead c3 (Bind Abst) t) 
48389 e1)).(eq_ind_r C (CHead c3 (Bind Abst) t) (\lambda (c: C).(ex2 C (\lambda 
48390 (e2: C).(csub3 g c e2)) (\lambda (e2: C).(clear (CHead c4 (Bind Abbr) u) 
48391 e2)))) (ex_intro2 C (\lambda (e2: C).(csub3 g (CHead c3 (Bind Abst) t) e2)) 
48392 (\lambda (e2: C).(clear (CHead c4 (Bind Abbr) u) e2)) (CHead c4 (Bind Abbr) 
48393 u) (csub3_abst g c3 c4 H0 u t H2) (clear_bind Abbr c4 u)) e1 (clear_gen_bind 
48394 Abst c3 e1 t H3))))))))))) c1 c2 H)))).
48395
48396 theorem csub3_drop_flat:
48397  \forall (g: G).(\forall (f: F).(\forall (n: nat).(\forall (c1: C).(\forall 
48398 (c2: C).((csub3 g c1 c2) \to (\forall (d1: C).(\forall (u: T).((drop n O c1 
48399 (CHead d1 (Flat f) u)) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
48400 (d2: C).(drop n O c2 (CHead d2 (Flat f) u))))))))))))
48401 \def
48402  \lambda (g: G).(\lambda (f: F).(\lambda (n: nat).(nat_ind (\lambda (n0: 
48403 nat).(\forall (c1: C).(\forall (c2: C).((csub3 g c1 c2) \to (\forall (d1: 
48404 C).(\forall (u: T).((drop n0 O c1 (CHead d1 (Flat f) u)) \to (ex2 C (\lambda 
48405 (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop n0 O c2 (CHead d2 (Flat f) 
48406 u))))))))))) (\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (csub3 g c1 
48407 c2)).(\lambda (d1: C).(\lambda (u: T).(\lambda (H0: (drop O O c1 (CHead d1 
48408 (Flat f) u))).(let H1 \def (eq_ind C c1 (\lambda (c: C).(csub3 g c c2)) H 
48409 (CHead d1 (Flat f) u) (drop_gen_refl c1 (CHead d1 (Flat f) u) H0)) in (let H2 
48410 \def (match H1 return (\lambda (c: C).(\lambda (c0: C).(\lambda (_: (csub3 ? 
48411 c c0)).((eq C c (CHead d1 (Flat f) u)) \to ((eq C c0 c2) \to (ex2 C (\lambda 
48412 (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead d2 (Flat f) 
48413 u))))))))) with [(csub3_sort n) \Rightarrow (\lambda (H0: (eq C (CSort n) 
48414 (CHead d1 (Flat f) u))).(\lambda (H1: (eq C (CSort n) c2)).((let H2 \def 
48415 (eq_ind C (CSort n) (\lambda (e: C).(match e return (\lambda (_: C).Prop) 
48416 with [(CSort _) \Rightarrow True | (CHead _ _ _) \Rightarrow False])) I 
48417 (CHead d1 (Flat f) u) H0) in (False_ind ((eq C (CSort n) c2) \to (ex2 C 
48418 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead d2 
48419 (Flat f) u))))) H2)) H1))) | (csub3_head c1 c0 H0 k u0) \Rightarrow (\lambda 
48420 (H1: (eq C (CHead c1 k u0) (CHead d1 (Flat f) u))).(\lambda (H2: (eq C (CHead 
48421 c0 k u0) c2)).((let H3 \def (f_equal C T (\lambda (e: C).(match e return 
48422 (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) \Rightarrow 
48423 t])) (CHead c1 k u0) (CHead d1 (Flat f) u) H1) in ((let H4 \def (f_equal C K 
48424 (\lambda (e: C).(match e return (\lambda (_: C).K) with [(CSort _) 
48425 \Rightarrow k | (CHead _ k _) \Rightarrow k])) (CHead c1 k u0) (CHead d1 
48426 (Flat f) u) H1) in ((let H5 \def (f_equal C C (\lambda (e: C).(match e return 
48427 (\lambda (_: C).C) with [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow 
48428 c])) (CHead c1 k u0) (CHead d1 (Flat f) u) H1) in (eq_ind C d1 (\lambda (c: 
48429 C).((eq K k (Flat f)) \to ((eq T u0 u) \to ((eq C (CHead c0 k u0) c2) \to 
48430 ((csub3 g c c0) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
48431 C).(drop O O c2 (CHead d2 (Flat f) u))))))))) (\lambda (H6: (eq K k (Flat 
48432 f))).(eq_ind K (Flat f) (\lambda (k0: K).((eq T u0 u) \to ((eq C (CHead c0 k0 
48433 u0) c2) \to ((csub3 g d1 c0) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
48434 (\lambda (d2: C).(drop O O c2 (CHead d2 (Flat f) u)))))))) (\lambda (H7: (eq 
48435 T u0 u)).(eq_ind T u (\lambda (t: T).((eq C (CHead c0 (Flat f) t) c2) \to 
48436 ((csub3 g d1 c0) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
48437 C).(drop O O c2 (CHead d2 (Flat f) u))))))) (\lambda (H8: (eq C (CHead c0 
48438 (Flat f) u) c2)).(eq_ind C (CHead c0 (Flat f) u) (\lambda (c: C).((csub3 g d1 
48439 c0) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c 
48440 (CHead d2 (Flat f) u)))))) (\lambda (H9: (csub3 g d1 c0)).(ex_intro2 C 
48441 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O (CHead c0 (Flat 
48442 f) u) (CHead d2 (Flat f) u))) c0 H9 (drop_refl (CHead c0 (Flat f) u)))) c2 
48443 H8)) u0 (sym_eq T u0 u H7))) k (sym_eq K k (Flat f) H6))) c1 (sym_eq C c1 d1 
48444 H5))) H4)) H3)) H2 H0))) | (csub3_void c1 c0 H0 b H1 u1 u2) \Rightarrow 
48445 (\lambda (H2: (eq C (CHead c1 (Bind Void) u1) (CHead d1 (Flat f) 
48446 u))).(\lambda (H3: (eq C (CHead c0 (Bind b) u2) c2)).((let H4 \def (eq_ind C 
48447 (CHead c1 (Bind Void) u1) (\lambda (e: C).(match e return (\lambda (_: 
48448 C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match 
48449 k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) 
48450 \Rightarrow False])])) I (CHead d1 (Flat f) u) H2) in (False_ind ((eq C 
48451 (CHead c0 (Bind b) u2) c2) \to ((csub3 g c1 c0) \to ((not (eq B b Void)) \to 
48452 (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead 
48453 d2 (Flat f) u))))))) H4)) H3 H0 H1))) | (csub3_abst c1 c0 H0 u0 t H1) 
48454 \Rightarrow (\lambda (H2: (eq C (CHead c1 (Bind Abst) t) (CHead d1 (Flat f) 
48455 u))).(\lambda (H3: (eq C (CHead c0 (Bind Abbr) u0) c2)).((let H4 \def (eq_ind 
48456 C (CHead c1 (Bind Abst) t) (\lambda (e: C).(match e return (\lambda (_: 
48457 C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match 
48458 k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) 
48459 \Rightarrow False])])) I (CHead d1 (Flat f) u) H2) in (False_ind ((eq C 
48460 (CHead c0 (Bind Abbr) u0) c2) \to ((csub3 g c1 c0) \to ((ty3 g c0 u0 t) \to 
48461 (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead 
48462 d2 (Flat f) u))))))) H4)) H3 H0 H1)))]) in (H2 (refl_equal C (CHead d1 (Flat 
48463 f) u)) (refl_equal C c2)))))))))) (\lambda (n0: nat).(\lambda (H: ((\forall 
48464 (c1: C).(\forall (c2: C).((csub3 g c1 c2) \to (\forall (d1: C).(\forall (u: 
48465 T).((drop n0 O c1 (CHead d1 (Flat f) u)) \to (ex2 C (\lambda (d2: C).(csub3 g 
48466 d1 d2)) (\lambda (d2: C).(drop n0 O c2 (CHead d2 (Flat f) 
48467 u)))))))))))).(\lambda (c1: C).(\lambda (c2: C).(\lambda (H0: (csub3 g c1 
48468 c2)).(csub3_ind g (\lambda (c: C).(\lambda (c0: C).(\forall (d1: C).(\forall 
48469 (u: T).((drop (S n0) O c (CHead d1 (Flat f) u)) \to (ex2 C (\lambda (d2: 
48470 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O c0 (CHead d2 (Flat f) 
48471 u))))))))) (\lambda (n1: nat).(\lambda (d1: C).(\lambda (u: T).(\lambda (H1: 
48472 (drop (S n0) O (CSort n1) (CHead d1 (Flat f) u))).(let H2 \def (match H1 
48473 return (\lambda (n: nat).(\lambda (n2: nat).(\lambda (c: C).(\lambda (c0: 
48474 C).(\lambda (_: (drop n n2 c c0)).((eq nat n (S n0)) \to ((eq nat n2 O) \to 
48475 ((eq C c (CSort n1)) \to ((eq C c0 (CHead d1 (Flat f) u)) \to (ex2 C (\lambda 
48476 (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 
48477 (Flat f) u))))))))))))) with [(drop_refl c) \Rightarrow (\lambda (H1: (eq nat 
48478 O (S n0))).(\lambda (H2: (eq nat O O)).(\lambda (H3: (eq C c (CSort 
48479 n1))).(\lambda (H4: (eq C c (CHead d1 (Flat f) u))).((let H5 \def (eq_ind nat 
48480 O (\lambda (e: nat).(match e return (\lambda (_: nat).Prop) with [O 
48481 \Rightarrow True | (S _) \Rightarrow False])) I (S n0) H1) in (False_ind ((eq 
48482 nat O O) \to ((eq C c (CSort n1)) \to ((eq C c (CHead d1 (Flat f) u)) \to 
48483 (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O 
48484 (CSort n1) (CHead d2 (Flat f) u))))))) H5)) H2 H3 H4))))) | (drop_drop k h c 
48485 e H1 u0) \Rightarrow (\lambda (H2: (eq nat (S h) (S n0))).(\lambda (H3: (eq 
48486 nat O O)).(\lambda (H4: (eq C (CHead c k u0) (CSort n1))).(\lambda (H5: (eq C 
48487 e (CHead d1 (Flat f) u))).((let H6 \def (f_equal nat nat (\lambda (e0: 
48488 nat).(match e0 return (\lambda (_: nat).nat) with [O \Rightarrow h | (S n) 
48489 \Rightarrow n])) (S h) (S n0) H2) in (eq_ind nat n0 (\lambda (n: nat).((eq 
48490 nat O O) \to ((eq C (CHead c k u0) (CSort n1)) \to ((eq C e (CHead d1 (Flat 
48491 f) u)) \to ((drop (r k n) O c e) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
48492 (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 (Flat f) u))))))))) 
48493 (\lambda (_: (eq nat O O)).(\lambda (H8: (eq C (CHead c k u0) (CSort 
48494 n1))).(let H9 \def (eq_ind C (CHead c k u0) (\lambda (e0: C).(match e0 return 
48495 (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ _ _) 
48496 \Rightarrow True])) I (CSort n1) H8) in (False_ind ((eq C e (CHead d1 (Flat 
48497 f) u)) \to ((drop (r k n0) O c e) \to (ex2 C (\lambda (d2: C).(csub3 g d1 
48498 d2)) (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 (Flat f) u)))))) 
48499 H9)))) h (sym_eq nat h n0 H6))) H3 H4 H5 H1))))) | (drop_skip k h d c e H1 
48500 u0) \Rightarrow (\lambda (H2: (eq nat h (S n0))).(\lambda (H3: (eq nat (S d) 
48501 O)).(\lambda (H4: (eq C (CHead c k (lift h (r k d) u0)) (CSort n1))).(\lambda 
48502 (H5: (eq C (CHead e k u0) (CHead d1 (Flat f) u))).(eq_ind nat (S n0) (\lambda 
48503 (n: nat).((eq nat (S d) O) \to ((eq C (CHead c k (lift n (r k d) u0)) (CSort 
48504 n1)) \to ((eq C (CHead e k u0) (CHead d1 (Flat f) u)) \to ((drop n (r k d) c 
48505 e) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) 
48506 O (CSort n1) (CHead d2 (Flat f) u))))))))) (\lambda (H6: (eq nat (S d) 
48507 O)).(let H7 \def (eq_ind nat (S d) (\lambda (e0: nat).(match e0 return 
48508 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
48509 I O H6) in (False_ind ((eq C (CHead c k (lift (S n0) (r k d) u0)) (CSort n1)) 
48510 \to ((eq C (CHead e k u0) (CHead d1 (Flat f) u)) \to ((drop (S n0) (r k d) c 
48511 e) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) 
48512 O (CSort n1) (CHead d2 (Flat f) u))))))) H7))) h (sym_eq nat h (S n0) H2) H3 
48513 H4 H5 H1)))))]) in (H2 (refl_equal nat (S n0)) (refl_equal nat O) (refl_equal 
48514 C (CSort n1)) (refl_equal C (CHead d1 (Flat f) u)))))))) (\lambda (c0: 
48515 C).(\lambda (c3: C).(\lambda (H1: (csub3 g c0 c3)).(\lambda (H2: ((\forall 
48516 (d1: C).(\forall (u: T).((drop (S n0) O c0 (CHead d1 (Flat f) u)) \to (ex2 C 
48517 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead 
48518 d2 (Flat f) u))))))))).(\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (u: 
48519 T).(\forall (d1: C).(\forall (u0: T).((drop (S n0) O (CHead c0 k0 u) (CHead 
48520 d1 (Flat f) u0)) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
48521 C).(drop (S n0) O (CHead c3 k0 u) (CHead d2 (Flat f) u0))))))))) (\lambda (b: 
48522 B).(\lambda (u: T).(\lambda (d1: C).(\lambda (u0: T).(\lambda (H3: (drop (S 
48523 n0) O (CHead c0 (Bind b) u) (CHead d1 (Flat f) u0))).(ex2_ind C (\lambda (d2: 
48524 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Flat f) u0))) 
48525 (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O 
48526 (CHead c3 (Bind b) u) (CHead d2 (Flat f) u0)))) (\lambda (x: C).(\lambda (H4: 
48527 (csub3 g d1 x)).(\lambda (H5: (drop n0 O c3 (CHead x (Flat f) 
48528 u0))).(ex_intro2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop 
48529 (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Flat f) u0))) x H4 (drop_drop (Bind 
48530 b) n0 c3 (CHead x (Flat f) u0) H5 u))))) (H c0 c3 H1 d1 u0 (drop_gen_drop 
48531 (Bind b) c0 (CHead d1 (Flat f) u0) u n0 H3)))))))) (\lambda (f0: F).(\lambda 
48532 (u: T).(\lambda (d1: C).(\lambda (u0: T).(\lambda (H3: (drop (S n0) O (CHead 
48533 c0 (Flat f0) u) (CHead d1 (Flat f) u0))).(ex2_ind C (\lambda (d2: C).(csub3 g 
48534 d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Flat f) u0))) (ex2 C 
48535 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
48536 (Flat f0) u) (CHead d2 (Flat f) u0)))) (\lambda (x: C).(\lambda (H4: (csub3 g 
48537 d1 x)).(\lambda (H5: (drop (S n0) O c3 (CHead x (Flat f) u0))).(ex_intro2 C 
48538 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
48539 (Flat f0) u) (CHead d2 (Flat f) u0))) x H4 (drop_drop (Flat f0) n0 c3 (CHead 
48540 x (Flat f) u0) H5 u))))) (H2 d1 u0 (drop_gen_drop (Flat f0) c0 (CHead d1 
48541 (Flat f) u0) u n0 H3)))))))) k)))))) (\lambda (c0: C).(\lambda (c3: 
48542 C).(\lambda (H1: (csub3 g c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (u: 
48543 T).((drop (S n0) O c0 (CHead d1 (Flat f) u)) \to (ex2 C (\lambda (d2: 
48544 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Flat f) 
48545 u))))))))).(\lambda (b: B).(\lambda (_: (not (eq B b Void))).(\lambda (u1: 
48546 T).(\lambda (u2: T).(\lambda (d1: C).(\lambda (u: T).(\lambda (H4: (drop (S 
48547 n0) O (CHead c0 (Bind Void) u1) (CHead d1 (Flat f) u))).(ex2_ind C (\lambda 
48548 (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Flat f) 
48549 u))) (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O 
48550 (CHead c3 (Bind b) u2) (CHead d2 (Flat f) u)))) (\lambda (x: C).(\lambda (H5: 
48551 (csub3 g d1 x)).(\lambda (H6: (drop n0 O c3 (CHead x (Flat f) u))).(ex_intro2 
48552 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
48553 (Bind b) u2) (CHead d2 (Flat f) u))) x H5 (drop_drop (Bind b) n0 c3 (CHead x 
48554 (Flat f) u) H6 u2))))) (H c0 c3 H1 d1 u (drop_gen_drop (Bind Void) c0 (CHead 
48555 d1 (Flat f) u) u1 n0 H4)))))))))))))) (\lambda (c0: C).(\lambda (c3: 
48556 C).(\lambda (H1: (csub3 g c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (u: 
48557 T).((drop (S n0) O c0 (CHead d1 (Flat f) u)) \to (ex2 C (\lambda (d2: 
48558 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Flat f) 
48559 u))))))))).(\lambda (u: T).(\lambda (t: T).(\lambda (_: (ty3 g c3 u 
48560 t)).(\lambda (d1: C).(\lambda (u0: T).(\lambda (H4: (drop (S n0) O (CHead c0 
48561 (Bind Abst) t) (CHead d1 (Flat f) u0))).(ex2_ind C (\lambda (d2: C).(csub3 g 
48562 d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Flat f) u0))) (ex2 C 
48563 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
48564 (Bind Abbr) u) (CHead d2 (Flat f) u0)))) (\lambda (x: C).(\lambda (H5: (csub3 
48565 g d1 x)).(\lambda (H6: (drop n0 O c3 (CHead x (Flat f) u0))).(ex_intro2 C 
48566 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
48567 (Bind Abbr) u) (CHead d2 (Flat f) u0))) x H5 (drop_drop (Bind Abbr) n0 c3 
48568 (CHead x (Flat f) u0) H6 u))))) (H c0 c3 H1 d1 u0 (drop_gen_drop (Bind Abst) 
48569 c0 (CHead d1 (Flat f) u0) t n0 H4))))))))))))) c1 c2 H0)))))) n))).
48570
48571 theorem csub3_drop_abbr:
48572  \forall (g: G).(\forall (n: nat).(\forall (c1: C).(\forall (c2: C).((csub3 g 
48573 c1 c2) \to (\forall (d1: C).(\forall (u: T).((drop n O c1 (CHead d1 (Bind 
48574 Abbr) u)) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop 
48575 n O c2 (CHead d2 (Bind Abbr) u)))))))))))
48576 \def
48577  \lambda (g: G).(\lambda (n: nat).(nat_ind (\lambda (n0: nat).(\forall (c1: 
48578 C).(\forall (c2: C).((csub3 g c1 c2) \to (\forall (d1: C).(\forall (u: 
48579 T).((drop n0 O c1 (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: 
48580 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop n0 O c2 (CHead d2 (Bind Abbr) 
48581 u))))))))))) (\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (csub3 g c1 
48582 c2)).(\lambda (d1: C).(\lambda (u: T).(\lambda (H0: (drop O O c1 (CHead d1 
48583 (Bind Abbr) u))).(let H1 \def (eq_ind C c1 (\lambda (c: C).(csub3 g c c2)) H 
48584 (CHead d1 (Bind Abbr) u) (drop_gen_refl c1 (CHead d1 (Bind Abbr) u) H0)) in 
48585 (let H2 \def (match H1 return (\lambda (c: C).(\lambda (c0: C).(\lambda (_: 
48586 (csub3 ? c c0)).((eq C c (CHead d1 (Bind Abbr) u)) \to ((eq C c0 c2) \to (ex2 
48587 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead d2 
48588 (Bind Abbr) u))))))))) with [(csub3_sort n) \Rightarrow (\lambda (H0: (eq C 
48589 (CSort n) (CHead d1 (Bind Abbr) u))).(\lambda (H1: (eq C (CSort n) c2)).((let 
48590 H2 \def (eq_ind C (CSort n) (\lambda (e: C).(match e return (\lambda (_: 
48591 C).Prop) with [(CSort _) \Rightarrow True | (CHead _ _ _) \Rightarrow 
48592 False])) I (CHead d1 (Bind Abbr) u) H0) in (False_ind ((eq C (CSort n) c2) 
48593 \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c2 
48594 (CHead d2 (Bind Abbr) u))))) H2)) H1))) | (csub3_head c1 c0 H0 k u0) 
48595 \Rightarrow (\lambda (H1: (eq C (CHead c1 k u0) (CHead d1 (Bind Abbr) 
48596 u))).(\lambda (H2: (eq C (CHead c0 k u0) c2)).((let H3 \def (f_equal C T 
48597 (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort _) 
48598 \Rightarrow u0 | (CHead _ _ t) \Rightarrow t])) (CHead c1 k u0) (CHead d1 
48599 (Bind Abbr) u) H1) in ((let H4 \def (f_equal C K (\lambda (e: C).(match e 
48600 return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | (CHead _ k _) 
48601 \Rightarrow k])) (CHead c1 k u0) (CHead d1 (Bind Abbr) u) H1) in ((let H5 
48602 \def (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with 
48603 [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k u0) 
48604 (CHead d1 (Bind Abbr) u) H1) in (eq_ind C d1 (\lambda (c: C).((eq K k (Bind 
48605 Abbr)) \to ((eq T u0 u) \to ((eq C (CHead c0 k u0) c2) \to ((csub3 g c c0) 
48606 \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c2 
48607 (CHead d2 (Bind Abbr) u))))))))) (\lambda (H6: (eq K k (Bind Abbr))).(eq_ind 
48608 K (Bind Abbr) (\lambda (k0: K).((eq T u0 u) \to ((eq C (CHead c0 k0 u0) c2) 
48609 \to ((csub3 g d1 c0) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
48610 (d2: C).(drop O O c2 (CHead d2 (Bind Abbr) u)))))))) (\lambda (H7: (eq T u0 
48611 u)).(eq_ind T u (\lambda (t: T).((eq C (CHead c0 (Bind Abbr) t) c2) \to 
48612 ((csub3 g d1 c0) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
48613 C).(drop O O c2 (CHead d2 (Bind Abbr) u))))))) (\lambda (H8: (eq C (CHead c0 
48614 (Bind Abbr) u) c2)).(eq_ind C (CHead c0 (Bind Abbr) u) (\lambda (c: 
48615 C).((csub3 g d1 c0) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
48616 (d2: C).(drop O O c (CHead d2 (Bind Abbr) u)))))) (\lambda (H9: (csub3 g d1 
48617 c0)).(ex_intro2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O 
48618 O (CHead c0 (Bind Abbr) u) (CHead d2 (Bind Abbr) u))) c0 H9 (drop_refl (CHead 
48619 c0 (Bind Abbr) u)))) c2 H8)) u0 (sym_eq T u0 u H7))) k (sym_eq K k (Bind 
48620 Abbr) H6))) c1 (sym_eq C c1 d1 H5))) H4)) H3)) H2 H0))) | (csub3_void c1 c0 
48621 H0 b H1 u1 u2) \Rightarrow (\lambda (H2: (eq C (CHead c1 (Bind Void) u1) 
48622 (CHead d1 (Bind Abbr) u))).(\lambda (H3: (eq C (CHead c0 (Bind b) u2) 
48623 c2)).((let H4 \def (eq_ind C (CHead c1 (Bind Void) u1) (\lambda (e: C).(match 
48624 e return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k 
48625 _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind b) 
48626 \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow 
48627 False | Abst \Rightarrow False | Void \Rightarrow True]) | (Flat _) 
48628 \Rightarrow False])])) I (CHead d1 (Bind Abbr) u) H2) in (False_ind ((eq C 
48629 (CHead c0 (Bind b) u2) c2) \to ((csub3 g c1 c0) \to ((not (eq B b Void)) \to 
48630 (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead 
48631 d2 (Bind Abbr) u))))))) H4)) H3 H0 H1))) | (csub3_abst c1 c0 H0 u0 t H1) 
48632 \Rightarrow (\lambda (H2: (eq C (CHead c1 (Bind Abst) t) (CHead d1 (Bind 
48633 Abbr) u))).(\lambda (H3: (eq C (CHead c0 (Bind Abbr) u0) c2)).((let H4 \def 
48634 (eq_ind C (CHead c1 (Bind Abst) t) (\lambda (e: C).(match e return (\lambda 
48635 (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow 
48636 (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b 
48637 return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow 
48638 True | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead d1 
48639 (Bind Abbr) u) H2) in (False_ind ((eq C (CHead c0 (Bind Abbr) u0) c2) \to 
48640 ((csub3 g c1 c0) \to ((ty3 g c0 u0 t) \to (ex2 C (\lambda (d2: C).(csub3 g d1 
48641 d2)) (\lambda (d2: C).(drop O O c2 (CHead d2 (Bind Abbr) u))))))) H4)) H3 H0 
48642 H1)))]) in (H2 (refl_equal C (CHead d1 (Bind Abbr) u)) (refl_equal C 
48643 c2)))))))))) (\lambda (n0: nat).(\lambda (H: ((\forall (c1: C).(\forall (c2: 
48644 C).((csub3 g c1 c2) \to (\forall (d1: C).(\forall (u: T).((drop n0 O c1 
48645 (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
48646 (\lambda (d2: C).(drop n0 O c2 (CHead d2 (Bind Abbr) u)))))))))))).(\lambda 
48647 (c1: C).(\lambda (c2: C).(\lambda (H0: (csub3 g c1 c2)).(csub3_ind g (\lambda 
48648 (c: C).(\lambda (c0: C).(\forall (d1: C).(\forall (u: T).((drop (S n0) O c 
48649 (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
48650 (\lambda (d2: C).(drop (S n0) O c0 (CHead d2 (Bind Abbr) u))))))))) (\lambda 
48651 (n1: nat).(\lambda (d1: C).(\lambda (u: T).(\lambda (H1: (drop (S n0) O 
48652 (CSort n1) (CHead d1 (Bind Abbr) u))).(let H2 \def (match H1 return (\lambda 
48653 (n: nat).(\lambda (n2: nat).(\lambda (c: C).(\lambda (c0: C).(\lambda (_: 
48654 (drop n n2 c c0)).((eq nat n (S n0)) \to ((eq nat n2 O) \to ((eq C c (CSort 
48655 n1)) \to ((eq C c0 (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: 
48656 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 
48657 (Bind Abbr) u))))))))))))) with [(drop_refl c) \Rightarrow (\lambda (H1: (eq 
48658 nat O (S n0))).(\lambda (H2: (eq nat O O)).(\lambda (H3: (eq C c (CSort 
48659 n1))).(\lambda (H4: (eq C c (CHead d1 (Bind Abbr) u))).((let H5 \def (eq_ind 
48660 nat O (\lambda (e: nat).(match e return (\lambda (_: nat).Prop) with [O 
48661 \Rightarrow True | (S _) \Rightarrow False])) I (S n0) H1) in (False_ind ((eq 
48662 nat O O) \to ((eq C c (CSort n1)) \to ((eq C c (CHead d1 (Bind Abbr) u)) \to 
48663 (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O 
48664 (CSort n1) (CHead d2 (Bind Abbr) u))))))) H5)) H2 H3 H4))))) | (drop_drop k h 
48665 c e H1 u0) \Rightarrow (\lambda (H2: (eq nat (S h) (S n0))).(\lambda (H3: (eq 
48666 nat O O)).(\lambda (H4: (eq C (CHead c k u0) (CSort n1))).(\lambda (H5: (eq C 
48667 e (CHead d1 (Bind Abbr) u))).((let H6 \def (f_equal nat nat (\lambda (e0: 
48668 nat).(match e0 return (\lambda (_: nat).nat) with [O \Rightarrow h | (S n) 
48669 \Rightarrow n])) (S h) (S n0) H2) in (eq_ind nat n0 (\lambda (n: nat).((eq 
48670 nat O O) \to ((eq C (CHead c k u0) (CSort n1)) \to ((eq C e (CHead d1 (Bind 
48671 Abbr) u)) \to ((drop (r k n) O c e) \to (ex2 C (\lambda (d2: C).(csub3 g d1 
48672 d2)) (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abbr) 
48673 u))))))))) (\lambda (_: (eq nat O O)).(\lambda (H8: (eq C (CHead c k u0) 
48674 (CSort n1))).(let H9 \def (eq_ind C (CHead c k u0) (\lambda (e0: C).(match e0 
48675 return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ _ 
48676 _) \Rightarrow True])) I (CSort n1) H8) in (False_ind ((eq C e (CHead d1 
48677 (Bind Abbr) u)) \to ((drop (r k n0) O c e) \to (ex2 C (\lambda (d2: C).(csub3 
48678 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abbr) 
48679 u)))))) H9)))) h (sym_eq nat h n0 H6))) H3 H4 H5 H1))))) | (drop_skip k h d c 
48680 e H1 u0) \Rightarrow (\lambda (H2: (eq nat h (S n0))).(\lambda (H3: (eq nat 
48681 (S d) O)).(\lambda (H4: (eq C (CHead c k (lift h (r k d) u0)) (CSort 
48682 n1))).(\lambda (H5: (eq C (CHead e k u0) (CHead d1 (Bind Abbr) u))).(eq_ind 
48683 nat (S n0) (\lambda (n: nat).((eq nat (S d) O) \to ((eq C (CHead c k (lift n 
48684 (r k d) u0)) (CSort n1)) \to ((eq C (CHead e k u0) (CHead d1 (Bind Abbr) u)) 
48685 \to ((drop n (r k d) c e) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
48686 (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abbr) u))))))))) 
48687 (\lambda (H6: (eq nat (S d) O)).(let H7 \def (eq_ind nat (S d) (\lambda (e0: 
48688 nat).(match e0 return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S 
48689 _) \Rightarrow True])) I O H6) in (False_ind ((eq C (CHead c k (lift (S n0) 
48690 (r k d) u0)) (CSort n1)) \to ((eq C (CHead e k u0) (CHead d1 (Bind Abbr) u)) 
48691 \to ((drop (S n0) (r k d) c e) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
48692 (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abbr) u))))))) 
48693 H7))) h (sym_eq nat h (S n0) H2) H3 H4 H5 H1)))))]) in (H2 (refl_equal nat (S 
48694 n0)) (refl_equal nat O) (refl_equal C (CSort n1)) (refl_equal C (CHead d1 
48695 (Bind Abbr) u)))))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda (H1: (csub3 
48696 g c0 c3)).(\lambda (H2: ((\forall (d1: C).(\forall (u: T).((drop (S n0) O c0 
48697 (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
48698 (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u))))))))).(\lambda 
48699 (k: K).(K_ind (\lambda (k0: K).(\forall (u: T).(\forall (d1: C).(\forall (u0: 
48700 T).((drop (S n0) O (CHead c0 k0 u) (CHead d1 (Bind Abbr) u0)) \to (ex2 C 
48701 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
48702 k0 u) (CHead d2 (Bind Abbr) u0))))))))) (\lambda (b: B).(\lambda (u: 
48703 T).(\lambda (d1: C).(\lambda (u0: T).(\lambda (H3: (drop (S n0) O (CHead c0 
48704 (Bind b) u) (CHead d1 (Bind Abbr) u0))).(ex2_ind C (\lambda (d2: C).(csub3 g 
48705 d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Bind Abbr) u0))) (ex2 C 
48706 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
48707 (Bind b) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (x: C).(\lambda (H4: (csub3 
48708 g d1 x)).(\lambda (H5: (drop n0 O c3 (CHead x (Bind Abbr) u0))).(ex_intro2 C 
48709 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
48710 (Bind b) u) (CHead d2 (Bind Abbr) u0))) x H4 (drop_drop (Bind b) n0 c3 (CHead 
48711 x (Bind Abbr) u0) H5 u))))) (H c0 c3 H1 d1 u0 (drop_gen_drop (Bind b) c0 
48712 (CHead d1 (Bind Abbr) u0) u n0 H3)))))))) (\lambda (f: F).(\lambda (u: 
48713 T).(\lambda (d1: C).(\lambda (u0: T).(\lambda (H3: (drop (S n0) O (CHead c0 
48714 (Flat f) u) (CHead d1 (Bind Abbr) u0))).(ex2_ind C (\lambda (d2: C).(csub3 g 
48715 d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u0))) (ex2 C 
48716 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
48717 (Flat f) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (x: C).(\lambda (H4: (csub3 
48718 g d1 x)).(\lambda (H5: (drop (S n0) O c3 (CHead x (Bind Abbr) 
48719 u0))).(ex_intro2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop 
48720 (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind Abbr) u0))) x H4 (drop_drop 
48721 (Flat f) n0 c3 (CHead x (Bind Abbr) u0) H5 u))))) (H2 d1 u0 (drop_gen_drop 
48722 (Flat f) c0 (CHead d1 (Bind Abbr) u0) u n0 H3)))))))) k)))))) (\lambda (c0: 
48723 C).(\lambda (c3: C).(\lambda (H1: (csub3 g c0 c3)).(\lambda (_: ((\forall 
48724 (d1: C).(\forall (u: T).((drop (S n0) O c0 (CHead d1 (Bind Abbr) u)) \to (ex2 
48725 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead 
48726 d2 (Bind Abbr) u))))))))).(\lambda (b: B).(\lambda (_: (not (eq B b 
48727 Void))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (d1: C).(\lambda (u: 
48728 T).(\lambda (H4: (drop (S n0) O (CHead c0 (Bind Void) u1) (CHead d1 (Bind 
48729 Abbr) u))).(ex2_ind C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
48730 C).(drop n0 O c3 (CHead d2 (Bind Abbr) u))) (ex2 C (\lambda (d2: C).(csub3 g 
48731 d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) u2) (CHead d2 
48732 (Bind Abbr) u)))) (\lambda (x: C).(\lambda (H5: (csub3 g d1 x)).(\lambda (H6: 
48733 (drop n0 O c3 (CHead x (Bind Abbr) u))).(ex_intro2 C (\lambda (d2: C).(csub3 
48734 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) u2) (CHead d2 
48735 (Bind Abbr) u))) x H5 (drop_drop (Bind b) n0 c3 (CHead x (Bind Abbr) u) H6 
48736 u2))))) (H c0 c3 H1 d1 u (drop_gen_drop (Bind Void) c0 (CHead d1 (Bind Abbr) 
48737 u) u1 n0 H4)))))))))))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda (H1: 
48738 (csub3 g c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (u: T).((drop (S n0) 
48739 O c0 (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
48740 (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u))))))))).(\lambda 
48741 (u: T).(\lambda (t: T).(\lambda (_: (ty3 g c3 u t)).(\lambda (d1: C).(\lambda 
48742 (u0: T).(\lambda (H4: (drop (S n0) O (CHead c0 (Bind Abst) t) (CHead d1 (Bind 
48743 Abbr) u0))).(ex2_ind C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
48744 C).(drop n0 O c3 (CHead d2 (Bind Abbr) u0))) (ex2 C (\lambda (d2: C).(csub3 g 
48745 d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 
48746 (Bind Abbr) u0)))) (\lambda (x: C).(\lambda (H5: (csub3 g d1 x)).(\lambda 
48747 (H6: (drop n0 O c3 (CHead x (Bind Abbr) u0))).(ex_intro2 C (\lambda (d2: 
48748 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind Abbr) u) 
48749 (CHead d2 (Bind Abbr) u0))) x H5 (drop_drop (Bind Abbr) n0 c3 (CHead x (Bind 
48750 Abbr) u0) H6 u))))) (H c0 c3 H1 d1 u0 (drop_gen_drop (Bind Abst) c0 (CHead d1 
48751 (Bind Abbr) u0) t n0 H4))))))))))))) c1 c2 H0)))))) n)).
48752
48753 theorem csub3_drop_abst:
48754  \forall (g: G).(\forall (n: nat).(\forall (c1: C).(\forall (c2: C).((csub3 g 
48755 c1 c2) \to (\forall (d1: C).(\forall (t: T).((drop n O c1 (CHead d1 (Bind 
48756 Abst) t)) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
48757 C).(drop n O c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
48758 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop n 
48759 O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
48760 t))))))))))))
48761 \def
48762  \lambda (g: G).(\lambda (n: nat).(nat_ind (\lambda (n0: nat).(\forall (c1: 
48763 C).(\forall (c2: C).((csub3 g c1 c2) \to (\forall (d1: C).(\forall (t: 
48764 T).((drop n0 O c1 (CHead d1 (Bind Abst) t)) \to (or (ex2 C (\lambda (d2: 
48765 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop n0 O c2 (CHead d2 (Bind Abst) 
48766 t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda 
48767 (d2: C).(\lambda (u: T).(drop n0 O c2 (CHead d2 (Bind Abbr) u)))) (\lambda 
48768 (d2: C).(\lambda (u: T).(ty3 g d2 u t)))))))))))) (\lambda (c1: C).(\lambda 
48769 (c2: C).(\lambda (H: (csub3 g c1 c2)).(\lambda (d1: C).(\lambda (t: 
48770 T).(\lambda (H0: (drop O O c1 (CHead d1 (Bind Abst) t))).(let H1 \def (eq_ind 
48771 C c1 (\lambda (c: C).(csub3 g c c2)) H (CHead d1 (Bind Abst) t) 
48772 (drop_gen_refl c1 (CHead d1 (Bind Abst) t) H0)) in (let H2 \def (match H1 
48773 return (\lambda (c: C).(\lambda (c0: C).(\lambda (_: (csub3 ? c c0)).((eq C c 
48774 (CHead d1 (Bind Abst) t)) \to ((eq C c0 c2) \to (or (ex2 C (\lambda (d2: 
48775 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead d2 (Bind Abst) t)))) 
48776 (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: 
48777 C).(\lambda (u: T).(drop O O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: 
48778 C).(\lambda (u: T).(ty3 g d2 u t)))))))))) with [(csub3_sort n) \Rightarrow 
48779 (\lambda (H1: (eq C (CSort n) (CHead d1 (Bind Abst) t))).(\lambda (H2: (eq C 
48780 (CSort n) c2)).((let H3 \def (eq_ind C (CSort n) (\lambda (e: C).(match e 
48781 return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow True | (CHead _ _ _) 
48782 \Rightarrow False])) I (CHead d1 (Bind Abst) t) H1) in (False_ind ((eq C 
48783 (CSort n) c2) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
48784 C).(drop O O c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
48785 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop O 
48786 O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
48787 t)))))) H3)) H2))) | (csub3_head c0 c3 H1 k u) \Rightarrow (\lambda (H2: (eq 
48788 C (CHead c0 k u) (CHead d1 (Bind Abst) t))).(\lambda (H3: (eq C (CHead c3 k 
48789 u) c2)).((let H4 \def (f_equal C T (\lambda (e: C).(match e return (\lambda 
48790 (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) 
48791 (CHead c0 k u) (CHead d1 (Bind Abst) t) H2) in ((let H5 \def (f_equal C K 
48792 (\lambda (e: C).(match e return (\lambda (_: C).K) with [(CSort _) 
48793 \Rightarrow k | (CHead _ k _) \Rightarrow k])) (CHead c0 k u) (CHead d1 (Bind 
48794 Abst) t) H2) in ((let H6 \def (f_equal C C (\lambda (e: C).(match e return 
48795 (\lambda (_: C).C) with [(CSort _) \Rightarrow c0 | (CHead c _ _) \Rightarrow 
48796 c])) (CHead c0 k u) (CHead d1 (Bind Abst) t) H2) in (eq_ind C d1 (\lambda (c: 
48797 C).((eq K k (Bind Abst)) \to ((eq T u t) \to ((eq C (CHead c3 k u) c2) \to 
48798 ((csub3 g c c3) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
48799 (d2: C).(drop O O c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
48800 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop 
48801 O O c2 (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g 
48802 d2 u0 t)))))))))) (\lambda (H7: (eq K k (Bind Abst))).(eq_ind K (Bind Abst) 
48803 (\lambda (k0: K).((eq T u t) \to ((eq C (CHead c3 k0 u) c2) \to ((csub3 g d1 
48804 c3) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O 
48805 O c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
48806 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop O O c2 (CHead d2 
48807 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))))))))) 
48808 (\lambda (H8: (eq T u t)).(eq_ind T t (\lambda (t0: T).((eq C (CHead c3 (Bind 
48809 Abst) t0) c2) \to ((csub3 g d1 c3) \to (or (ex2 C (\lambda (d2: C).(csub3 g 
48810 d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T 
48811 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
48812 (u0: T).(drop O O c2 (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda 
48813 (u0: T).(ty3 g d2 u0 t)))))))) (\lambda (H9: (eq C (CHead c3 (Bind Abst) t) 
48814 c2)).(eq_ind C (CHead c3 (Bind Abst) t) (\lambda (c: C).((csub3 g d1 c3) \to 
48815 (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c 
48816 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
48817 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop O O c (CHead d2 
48818 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))))))) 
48819 (\lambda (H10: (csub3 g d1 c3)).(or_introl (ex2 C (\lambda (d2: C).(csub3 g 
48820 d1 d2)) (\lambda (d2: C).(drop O O (CHead c3 (Bind Abst) t) (CHead d2 (Bind 
48821 Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) 
48822 (\lambda (d2: C).(\lambda (u0: T).(drop O O (CHead c3 (Bind Abst) t) (CHead 
48823 d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t)))) 
48824 (ex_intro2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O 
48825 (CHead c3 (Bind Abst) t) (CHead d2 (Bind Abst) t))) c3 H10 (drop_refl (CHead 
48826 c3 (Bind Abst) t))))) c2 H9)) u (sym_eq T u t H8))) k (sym_eq K k (Bind Abst) 
48827 H7))) c0 (sym_eq C c0 d1 H6))) H5)) H4)) H3 H1))) | (csub3_void c0 c3 H1 b H2 
48828 u1 u2) \Rightarrow (\lambda (H3: (eq C (CHead c0 (Bind Void) u1) (CHead d1 
48829 (Bind Abst) t))).(\lambda (H4: (eq C (CHead c3 (Bind b) u2) c2)).((let H5 
48830 \def (eq_ind C (CHead c0 (Bind Void) u1) (\lambda (e: C).(match e return 
48831 (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) 
48832 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow 
48833 (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst 
48834 \Rightarrow False | Void \Rightarrow True]) | (Flat _) \Rightarrow False])])) 
48835 I (CHead d1 (Bind Abst) t) H3) in (False_ind ((eq C (CHead c3 (Bind b) u2) 
48836 c2) \to ((csub3 g c0 c3) \to ((not (eq B b Void)) \to (or (ex2 C (\lambda 
48837 (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead d2 (Bind Abst) 
48838 t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda 
48839 (d2: C).(\lambda (u: T).(drop O O c2 (CHead d2 (Bind Abbr) u)))) (\lambda 
48840 (d2: C).(\lambda (u: T).(ty3 g d2 u t)))))))) H5)) H4 H1 H2))) | (csub3_abst 
48841 c0 c3 H1 u t0 H2) \Rightarrow (\lambda (H3: (eq C (CHead c0 (Bind Abst) t0) 
48842 (CHead d1 (Bind Abst) t))).(\lambda (H4: (eq C (CHead c3 (Bind Abbr) u) 
48843 c2)).((let H5 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: 
48844 C).T) with [(CSort _) \Rightarrow t0 | (CHead _ _ t) \Rightarrow t])) (CHead 
48845 c0 (Bind Abst) t0) (CHead d1 (Bind Abst) t) H3) in ((let H6 \def (f_equal C C 
48846 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
48847 \Rightarrow c0 | (CHead c _ _) \Rightarrow c])) (CHead c0 (Bind Abst) t0) 
48848 (CHead d1 (Bind Abst) t) H3) in (eq_ind C d1 (\lambda (c: C).((eq T t0 t) \to 
48849 ((eq C (CHead c3 (Bind Abbr) u) c2) \to ((csub3 g c c3) \to ((ty3 g c3 u t0) 
48850 \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O 
48851 c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
48852 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop O O c2 (CHead d2 
48853 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t)))))))))) 
48854 (\lambda (H7: (eq T t0 t)).(eq_ind T t (\lambda (t1: T).((eq C (CHead c3 
48855 (Bind Abbr) u) c2) \to ((csub3 g d1 c3) \to ((ty3 g c3 u t1) \to (or (ex2 C 
48856 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead d2 
48857 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 
48858 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop O O c2 (CHead d2 (Bind Abbr) 
48859 u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))))))))) (\lambda 
48860 (H8: (eq C (CHead c3 (Bind Abbr) u) c2)).(eq_ind C (CHead c3 (Bind Abbr) u) 
48861 (\lambda (c: C).((csub3 g d1 c3) \to ((ty3 g c3 u t) \to (or (ex2 C (\lambda 
48862 (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop O O c (CHead d2 (Bind Abst) 
48863 t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda 
48864 (d2: C).(\lambda (u0: T).(drop O O c (CHead d2 (Bind Abbr) u0)))) (\lambda 
48865 (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t)))))))) (\lambda (H9: (csub3 g d1 
48866 c3)).(\lambda (H10: (ty3 g c3 u t)).(or_intror (ex2 C (\lambda (d2: C).(csub3 
48867 g d1 d2)) (\lambda (d2: C).(drop O O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind 
48868 Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) 
48869 (\lambda (d2: C).(\lambda (u0: T).(drop O O (CHead c3 (Bind Abbr) u) (CHead 
48870 d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t)))) 
48871 (ex3_2_intro C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda 
48872 (d2: C).(\lambda (u0: T).(drop O O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind 
48873 Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))) c3 u H9 
48874 (drop_refl (CHead c3 (Bind Abbr) u)) H10)))) c2 H8)) t0 (sym_eq T t0 t H7))) 
48875 c0 (sym_eq C c0 d1 H6))) H5)) H4 H1 H2)))]) in (H2 (refl_equal C (CHead d1 
48876 (Bind Abst) t)) (refl_equal C c2)))))))))) (\lambda (n0: nat).(\lambda (H: 
48877 ((\forall (c1: C).(\forall (c2: C).((csub3 g c1 c2) \to (\forall (d1: 
48878 C).(\forall (t: T).((drop n0 O c1 (CHead d1 (Bind Abst) t)) \to (or (ex2 C 
48879 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop n0 O c2 (CHead d2 
48880 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 
48881 d2))) (\lambda (d2: C).(\lambda (u: T).(drop n0 O c2 (CHead d2 (Bind Abbr) 
48882 u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))))))))))).(\lambda 
48883 (c1: C).(\lambda (c2: C).(\lambda (H0: (csub3 g c1 c2)).(csub3_ind g (\lambda 
48884 (c: C).(\lambda (c0: C).(\forall (d1: C).(\forall (t: T).((drop (S n0) O c 
48885 (CHead d1 (Bind Abst) t)) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
48886 (\lambda (d2: C).(drop (S n0) O c0 (CHead d2 (Bind Abst) t)))) (ex3_2 C T 
48887 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
48888 (u: T).(drop (S n0) O c0 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: 
48889 C).(\lambda (u: T).(ty3 g d2 u t)))))))))) (\lambda (n1: nat).(\lambda (d1: 
48890 C).(\lambda (t: T).(\lambda (H1: (drop (S n0) O (CSort n1) (CHead d1 (Bind 
48891 Abst) t))).(let H2 \def (match H1 return (\lambda (n: nat).(\lambda (n2: 
48892 nat).(\lambda (c: C).(\lambda (c0: C).(\lambda (_: (drop n n2 c c0)).((eq nat 
48893 n (S n0)) \to ((eq nat n2 O) \to ((eq C c (CSort n1)) \to ((eq C c0 (CHead d1 
48894 (Bind Abst) t)) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
48895 (d2: C).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abst) t)))) (ex3_2 C T 
48896 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
48897 (u: T).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abbr) u)))) (\lambda (d2: 
48898 C).(\lambda (u: T).(ty3 g d2 u t)))))))))))))) with [(drop_refl c) 
48899 \Rightarrow (\lambda (H1: (eq nat O (S n0))).(\lambda (H2: (eq nat O 
48900 O)).(\lambda (H3: (eq C c (CSort n1))).(\lambda (H4: (eq C c (CHead d1 (Bind 
48901 Abst) t))).((let H5 \def (eq_ind nat O (\lambda (e: nat).(match e return 
48902 (\lambda (_: nat).Prop) with [O \Rightarrow True | (S _) \Rightarrow False])) 
48903 I (S n0) H1) in (False_ind ((eq nat O O) \to ((eq C c (CSort n1)) \to ((eq C 
48904 c (CHead d1 (Bind Abst) t)) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
48905 (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abst) t)))) (ex3_2 
48906 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: 
48907 C).(\lambda (u: T).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abbr) u)))) 
48908 (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))))))) H5)) H2 H3 H4))))) | 
48909 (drop_drop k h c e H1 u) \Rightarrow (\lambda (H2: (eq nat (S h) (S 
48910 n0))).(\lambda (H3: (eq nat O O)).(\lambda (H4: (eq C (CHead c k u) (CSort 
48911 n1))).(\lambda (H5: (eq C e (CHead d1 (Bind Abst) t))).((let H6 \def (f_equal 
48912 nat nat (\lambda (e0: nat).(match e0 return (\lambda (_: nat).nat) with [O 
48913 \Rightarrow h | (S n) \Rightarrow n])) (S h) (S n0) H2) in (eq_ind nat n0 
48914 (\lambda (n: nat).((eq nat O O) \to ((eq C (CHead c k u) (CSort n1)) \to ((eq 
48915 C e (CHead d1 (Bind Abst) t)) \to ((drop (r k n) O c e) \to (or (ex2 C 
48916 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CSort n1) 
48917 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
48918 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CSort 
48919 n1) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 
48920 u0 t)))))))))) (\lambda (_: (eq nat O O)).(\lambda (H8: (eq C (CHead c k u) 
48921 (CSort n1))).(let H9 \def (eq_ind C (CHead c k u) (\lambda (e0: C).(match e0 
48922 return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ _ 
48923 _) \Rightarrow True])) I (CSort n1) H8) in (False_ind ((eq C e (CHead d1 
48924 (Bind Abst) t)) \to ((drop (r k n0) O c e) \to (or (ex2 C (\lambda (d2: 
48925 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 
48926 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 
48927 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CSort n1) (CHead d2 
48928 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))))))) 
48929 H9)))) h (sym_eq nat h n0 H6))) H3 H4 H5 H1))))) | (drop_skip k h d c e H1 u) 
48930 \Rightarrow (\lambda (H2: (eq nat h (S n0))).(\lambda (H3: (eq nat (S d) 
48931 O)).(\lambda (H4: (eq C (CHead c k (lift h (r k d) u)) (CSort n1))).(\lambda 
48932 (H5: (eq C (CHead e k u) (CHead d1 (Bind Abst) t))).(eq_ind nat (S n0) 
48933 (\lambda (n: nat).((eq nat (S d) O) \to ((eq C (CHead c k (lift n (r k d) u)) 
48934 (CSort n1)) \to ((eq C (CHead e k u) (CHead d1 (Bind Abst) t)) \to ((drop n 
48935 (r k d) c e) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
48936 C).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda 
48937 (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: 
48938 T).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: 
48939 C).(\lambda (u0: T).(ty3 g d2 u0 t)))))))))) (\lambda (H6: (eq nat (S d) 
48940 O)).(let H7 \def (eq_ind nat (S d) (\lambda (e0: nat).(match e0 return 
48941 (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) 
48942 I O H6) in (False_ind ((eq C (CHead c k (lift (S n0) (r k d) u)) (CSort n1)) 
48943 \to ((eq C (CHead e k u) (CHead d1 (Bind Abst) t)) \to ((drop (S n0) (r k d) 
48944 c e) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop 
48945 (S n0) O (CSort n1) (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
48946 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop 
48947 (S n0) O (CSort n1) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda 
48948 (u0: T).(ty3 g d2 u0 t)))))))) H7))) h (sym_eq nat h (S n0) H2) H3 H4 H5 
48949 H1)))))]) in (H2 (refl_equal nat (S n0)) (refl_equal nat O) (refl_equal C 
48950 (CSort n1)) (refl_equal C (CHead d1 (Bind Abst) t)))))))) (\lambda (c0: 
48951 C).(\lambda (c3: C).(\lambda (H1: (csub3 g c0 c3)).(\lambda (H2: ((\forall 
48952 (d1: C).(\forall (t: T).((drop (S n0) O c0 (CHead d1 (Bind Abst) t)) \to (or 
48953 (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 
48954 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
48955 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O c3 
48956 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
48957 t)))))))))).(\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (u: T).(\forall 
48958 (d1: C).(\forall (t: T).((drop (S n0) O (CHead c0 k0 u) (CHead d1 (Bind Abst) 
48959 t)) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop 
48960 (S n0) O (CHead c3 k0 u) (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
48961 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop 
48962 (S n0) O (CHead c3 k0 u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: 
48963 C).(\lambda (u0: T).(ty3 g d2 u0 t)))))))))) (\lambda (b: B).(\lambda (u: 
48964 T).(\lambda (d1: C).(\lambda (t: T).(\lambda (H3: (drop (S n0) O (CHead c0 
48965 (Bind b) u) (CHead d1 (Bind Abst) t))).(or_ind (ex2 C (\lambda (d2: C).(csub3 
48966 g d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Bind Abst) t)))) (ex3_2 C 
48967 T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: 
48968 C).(\lambda (u0: T).(drop n0 O c3 (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: 
48969 C).(\lambda (u0: T).(ty3 g d2 u0 t)))) (or (ex2 C (\lambda (d2: C).(csub3 g 
48970 d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind 
48971 Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) 
48972 (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CHead c3 (Bind b) u) (CHead 
48973 d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))))) 
48974 (\lambda (H4: (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop 
48975 n0 O c3 (CHead d2 (Bind Abst) t))))).(ex2_ind C (\lambda (d2: C).(csub3 g d1 
48976 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Bind Abst) t))) (or (ex2 C 
48977 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
48978 (Bind b) u) (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda 
48979 (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O 
48980 (CHead c3 (Bind b) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda 
48981 (u0: T).(ty3 g d2 u0 t))))) (\lambda (x: C).(\lambda (H5: (csub3 g d1 
48982 x)).(\lambda (H6: (drop n0 O c3 (CHead x (Bind Abst) t))).(or_introl (ex2 C 
48983 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
48984 (Bind b) u) (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda 
48985 (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O 
48986 (CHead c3 (Bind b) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda 
48987 (u0: T).(ty3 g d2 u0 t)))) (ex_intro2 C (\lambda (d2: C).(csub3 g d1 d2)) 
48988 (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind Abst) 
48989 t))) x H5 (drop_drop (Bind b) n0 c3 (CHead x (Bind Abst) t) H6 u)))))) H4)) 
48990 (\lambda (H4: (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) 
48991 (\lambda (d2: C).(\lambda (u: T).(drop n0 O c3 (CHead d2 (Bind Abbr) u)))) 
48992 (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))).(ex3_2_ind C T (\lambda 
48993 (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: 
48994 T).(drop n0 O c3 (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: 
48995 T).(ty3 g d2 u0 t))) (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
48996 (d2: C).(drop (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind Abst) t)))) 
48997 (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: 
48998 C).(\lambda (u0: T).(drop (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind 
48999 Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))))) (\lambda 
49000 (x0: C).(\lambda (x1: T).(\lambda (H5: (csub3 g d1 x0)).(\lambda (H6: (drop 
49001 n0 O c3 (CHead x0 (Bind Abbr) x1))).(\lambda (H7: (ty3 g x0 x1 t)).(or_intror 
49002 (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O 
49003 (CHead c3 (Bind b) u) (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49004 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop 
49005 (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: 
49006 C).(\lambda (u0: T).(ty3 g d2 u0 t)))) (ex3_2_intro C T (\lambda (d2: 
49007 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop 
49008 (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: 
49009 C).(\lambda (u0: T).(ty3 g d2 u0 t))) x0 x1 H5 (drop_drop (Bind b) n0 c3 
49010 (CHead x0 (Bind Abbr) x1) H6 u) H7))))))) H4)) (H c0 c3 H1 d1 t 
49011 (drop_gen_drop (Bind b) c0 (CHead d1 (Bind Abst) t) u n0 H3)))))))) (\lambda 
49012 (f: F).(\lambda (u: T).(\lambda (d1: C).(\lambda (t: T).(\lambda (H3: (drop 
49013 (S n0) O (CHead c0 (Flat f) u) (CHead d1 (Bind Abst) t))).(or_ind (ex2 C 
49014 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead 
49015 d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 
49016 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O c3 (CHead d2 (Bind 
49017 Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t)))) (or (ex2 C 
49018 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
49019 (Flat f) u) (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda 
49020 (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O 
49021 (CHead c3 (Flat f) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda 
49022 (u0: T).(ty3 g d2 u0 t))))) (\lambda (H4: (ex2 C (\lambda (d2: C).(csub3 g d1 
49023 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abst) t))))).(ex2_ind 
49024 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead 
49025 d2 (Bind Abst) t))) (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49026 (d2: C).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind Abst) t)))) 
49027 (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: 
49028 C).(\lambda (u0: T).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind 
49029 Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))))) (\lambda 
49030 (x: C).(\lambda (H5: (csub3 g d1 x)).(\lambda (H6: (drop (S n0) O c3 (CHead x 
49031 (Bind Abst) t))).(or_introl (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49032 (d2: C).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind Abst) t)))) 
49033 (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: 
49034 C).(\lambda (u0: T).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind 
49035 Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t)))) (ex_intro2 
49036 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
49037 (Flat f) u) (CHead d2 (Bind Abst) t))) x H5 (drop_drop (Flat f) n0 c3 (CHead 
49038 x (Bind Abst) t) H6 u)))))) H4)) (\lambda (H4: (ex3_2 C T (\lambda (d2: 
49039 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop 
49040 (S n0) O c3 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 
49041 g d2 u t))))).(ex3_2_ind C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 
49042 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O c3 (CHead d2 (Bind 
49043 Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))) (or (ex2 C 
49044 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
49045 (Flat f) u) (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda 
49046 (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O 
49047 (CHead c3 (Flat f) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda 
49048 (u0: T).(ty3 g d2 u0 t))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H5: 
49049 (csub3 g d1 x0)).(\lambda (H6: (drop (S n0) O c3 (CHead x0 (Bind Abbr) 
49050 x1))).(\lambda (H7: (ty3 g x0 x1 t)).(or_intror (ex2 C (\lambda (d2: 
49051 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Flat f) u) 
49052 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49053 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CHead 
49054 c3 (Flat f) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: 
49055 T).(ty3 g d2 u0 t)))) (ex3_2_intro C T (\lambda (d2: C).(\lambda (_: 
49056 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CHead 
49057 c3 (Flat f) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: 
49058 T).(ty3 g d2 u0 t))) x0 x1 H5 (drop_drop (Flat f) n0 c3 (CHead x0 (Bind Abbr) 
49059 x1) H6 u) H7))))))) H4)) (H2 d1 t (drop_gen_drop (Flat f) c0 (CHead d1 (Bind 
49060 Abst) t) u n0 H3)))))))) k)))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda 
49061 (H1: (csub3 g c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (t: T).((drop 
49062 (S n0) O c0 (CHead d1 (Bind Abst) t)) \to (or (ex2 C (\lambda (d2: C).(csub3 
49063 g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abst) t)))) 
49064 (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: 
49065 C).(\lambda (u: T).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u)))) (\lambda 
49066 (d2: C).(\lambda (u: T).(ty3 g d2 u t)))))))))).(\lambda (b: B).(\lambda (_: 
49067 (not (eq B b Void))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (d1: 
49068 C).(\lambda (t: T).(\lambda (H4: (drop (S n0) O (CHead c0 (Bind Void) u1) 
49069 (CHead d1 (Bind Abst) t))).(or_ind (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
49070 (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Bind Abst) t)))) (ex3_2 C T 
49071 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
49072 (u: T).(drop n0 O c3 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda 
49073 (u: T).(ty3 g d2 u t)))) (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
49074 (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) u2) (CHead d2 (Bind Abst) 
49075 t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda 
49076 (d2: C).(\lambda (u: T).(drop (S n0) O (CHead c3 (Bind b) u2) (CHead d2 (Bind 
49077 Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) (\lambda (H5: 
49078 (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop n0 O c3 
49079 (CHead d2 (Bind Abst) t))))).(ex2_ind C (\lambda (d2: C).(csub3 g d1 d2)) 
49080 (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Bind Abst) t))) (or (ex2 C (\lambda 
49081 (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) 
49082 u2) (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49083 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O (CHead 
49084 c3 (Bind b) u2) (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: 
49085 T).(ty3 g d2 u t))))) (\lambda (x: C).(\lambda (H6: (csub3 g d1 x)).(\lambda 
49086 (H7: (drop n0 O c3 (CHead x (Bind Abst) t))).(or_introl (ex2 C (\lambda (d2: 
49087 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) u2) 
49088 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49089 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O (CHead 
49090 c3 (Bind b) u2) (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: 
49091 T).(ty3 g d2 u t)))) (ex_intro2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49092 (d2: C).(drop (S n0) O (CHead c3 (Bind b) u2) (CHead d2 (Bind Abst) t))) x H6 
49093 (drop_drop (Bind b) n0 c3 (CHead x (Bind Abst) t) H7 u2)))))) H5)) (\lambda 
49094 (H5: (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda 
49095 (d2: C).(\lambda (u: T).(drop n0 O c3 (CHead d2 (Bind Abbr) u)))) (\lambda 
49096 (d2: C).(\lambda (u: T).(ty3 g d2 u t))))).(ex3_2_ind C T (\lambda (d2: 
49097 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop 
49098 n0 O c3 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g 
49099 d2 u t))) (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop 
49100 (S n0) O (CHead c3 (Bind b) u2) (CHead d2 (Bind Abst) t)))) (ex3_2 C T 
49101 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
49102 (u: T).(drop (S n0) O (CHead c3 (Bind b) u2) (CHead d2 (Bind Abbr) u)))) 
49103 (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) (\lambda (x0: C).(\lambda 
49104 (x1: T).(\lambda (H6: (csub3 g d1 x0)).(\lambda (H7: (drop n0 O c3 (CHead x0 
49105 (Bind Abbr) x1))).(\lambda (H8: (ty3 g x0 x1 t)).(or_intror (ex2 C (\lambda 
49106 (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) 
49107 u2) (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49108 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O (CHead 
49109 c3 (Bind b) u2) (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: 
49110 T).(ty3 g d2 u t)))) (ex3_2_intro C T (\lambda (d2: C).(\lambda (_: T).(csub3 
49111 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O (CHead c3 (Bind b) 
49112 u2) (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
49113 t))) x0 x1 H6 (drop_drop (Bind b) n0 c3 (CHead x0 (Bind Abbr) x1) H7 u2) 
49114 H8))))))) H5)) (H c0 c3 H1 d1 t (drop_gen_drop (Bind Void) c0 (CHead d1 (Bind 
49115 Abst) t) u1 n0 H4)))))))))))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda 
49116 (H1: (csub3 g c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (t: T).((drop 
49117 (S n0) O c0 (CHead d1 (Bind Abst) t)) \to (or (ex2 C (\lambda (d2: C).(csub3 
49118 g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abst) t)))) 
49119 (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: 
49120 C).(\lambda (u: T).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u)))) (\lambda 
49121 (d2: C).(\lambda (u: T).(ty3 g d2 u t)))))))))).(\lambda (u: T).(\lambda (t: 
49122 T).(\lambda (_: (ty3 g c3 u t)).(\lambda (d1: C).(\lambda (t0: T).(\lambda 
49123 (H4: (drop (S n0) O (CHead c0 (Bind Abst) t) (CHead d1 (Bind Abst) 
49124 t0))).(or_ind (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop 
49125 n0 O c3 (CHead d2 (Bind Abst) t0)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49126 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop n0 O c3 (CHead 
49127 d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t0)))) 
49128 (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O 
49129 (CHead c3 (Bind Abbr) u) (CHead d2 (Bind Abst) t0)))) (ex3_2 C T (\lambda 
49130 (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: 
49131 T).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind Abbr) u0)))) 
49132 (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t0))))) (\lambda (H5: (ex2 C 
49133 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 
49134 (Bind Abst) t0))))).(ex2_ind C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49135 (d2: C).(drop n0 O c3 (CHead d2 (Bind Abst) t0))) (or (ex2 C (\lambda (d2: 
49136 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind Abbr) u) 
49137 (CHead d2 (Bind Abst) t0)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49138 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CHead 
49139 c3 (Bind Abbr) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: 
49140 T).(ty3 g d2 u0 t0))))) (\lambda (x: C).(\lambda (H6: (csub3 g d1 
49141 x)).(\lambda (H7: (drop n0 O c3 (CHead x (Bind Abst) t0))).(or_introl (ex2 C 
49142 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 
49143 (Bind Abbr) u) (CHead d2 (Bind Abst) t0)))) (ex3_2 C T (\lambda (d2: 
49144 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop 
49145 (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: 
49146 C).(\lambda (u0: T).(ty3 g d2 u0 t0)))) (ex_intro2 C (\lambda (d2: C).(csub3 
49147 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 
49148 (Bind Abst) t0))) x H6 (drop_drop (Bind Abbr) n0 c3 (CHead x (Bind Abst) t0) 
49149 H7 u)))))) H5)) (\lambda (H5: (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49150 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop n0 O c3 (CHead d2 
49151 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
49152 t0))))).(ex3_2_ind C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) 
49153 (\lambda (d2: C).(\lambda (u0: T).(drop n0 O c3 (CHead d2 (Bind Abbr) u0)))) 
49154 (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t0))) (or (ex2 C (\lambda (d2: 
49155 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind Abbr) u) 
49156 (CHead d2 (Bind Abst) t0)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49157 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CHead 
49158 c3 (Bind Abbr) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: 
49159 T).(ty3 g d2 u0 t0))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: 
49160 (csub3 g d1 x0)).(\lambda (H7: (drop n0 O c3 (CHead x0 (Bind Abbr) 
49161 x1))).(\lambda (H8: (ty3 g x0 x1 t0)).(or_intror (ex2 C (\lambda (d2: 
49162 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind Abbr) u) 
49163 (CHead d2 (Bind Abst) t0)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49164 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CHead 
49165 c3 (Bind Abbr) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: 
49166 T).(ty3 g d2 u0 t0)))) (ex3_2_intro C T (\lambda (d2: C).(\lambda (_: 
49167 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CHead 
49168 c3 (Bind Abbr) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: 
49169 T).(ty3 g d2 u0 t0))) x0 x1 H6 (drop_drop (Bind Abbr) n0 c3 (CHead x0 (Bind 
49170 Abbr) x1) H7 u) H8))))))) H5)) (H c0 c3 H1 d1 t0 (drop_gen_drop (Bind Abst) 
49171 c0 (CHead d1 (Bind Abst) t0) t n0 H4))))))))))))) c1 c2 H0)))))) n)).
49172
49173 theorem csub3_getl_abbr:
49174  \forall (g: G).(\forall (c1: C).(\forall (d1: C).(\forall (u: T).(\forall 
49175 (n: nat).((getl n c1 (CHead d1 (Bind Abbr) u)) \to (\forall (c2: C).((csub3 g 
49176 c1 c2) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl n 
49177 c2 (CHead d2 (Bind Abbr) u)))))))))))
49178 \def
49179  \lambda (g: G).(\lambda (c1: C).(\lambda (d1: C).(\lambda (u: T).(\lambda 
49180 (n: nat).(\lambda (H: (getl n c1 (CHead d1 (Bind Abbr) u))).(let H0 \def 
49181 (getl_gen_all c1 (CHead d1 (Bind Abbr) u) n H) in (ex2_ind C (\lambda (e: 
49182 C).(drop n O c1 e)) (\lambda (e: C).(clear e (CHead d1 (Bind Abbr) u))) 
49183 (\forall (c2: C).((csub3 g c1 c2) \to (ex2 C (\lambda (d2: C).(csub3 g d1 
49184 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) u)))))) (\lambda (x: 
49185 C).(\lambda (H1: (drop n O c1 x)).(\lambda (H2: (clear x (CHead d1 (Bind 
49186 Abbr) u))).((match x return (\lambda (c: C).((drop n O c1 c) \to ((clear c 
49187 (CHead d1 (Bind Abbr) u)) \to (\forall (c2: C).((csub3 g c1 c2) \to (ex2 C 
49188 (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind 
49189 Abbr) u))))))))) with [(CSort n0) \Rightarrow (\lambda (_: (drop n O c1 
49190 (CSort n0))).(\lambda (H4: (clear (CSort n0) (CHead d1 (Bind Abbr) 
49191 u))).(clear_gen_sort (CHead d1 (Bind Abbr) u) n0 H4 (\forall (c2: C).((csub3 
49192 g c1 c2) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl 
49193 n c2 (CHead d2 (Bind Abbr) u))))))))) | (CHead c k t) \Rightarrow (\lambda 
49194 (H3: (drop n O c1 (CHead c k t))).(\lambda (H4: (clear (CHead c k t) (CHead 
49195 d1 (Bind Abbr) u))).((match k return (\lambda (k0: K).((drop n O c1 (CHead c 
49196 k0 t)) \to ((clear (CHead c k0 t) (CHead d1 (Bind Abbr) u)) \to (\forall (c2: 
49197 C).((csub3 g c1 c2) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49198 (d2: C).(getl n c2 (CHead d2 (Bind Abbr) u))))))))) with [(Bind b) 
49199 \Rightarrow (\lambda (H5: (drop n O c1 (CHead c (Bind b) t))).(\lambda (H6: 
49200 (clear (CHead c (Bind b) t) (CHead d1 (Bind Abbr) u))).(let H7 \def (f_equal 
49201 C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
49202 \Rightarrow d1 | (CHead c _ _) \Rightarrow c])) (CHead d1 (Bind Abbr) u) 
49203 (CHead c (Bind b) t) (clear_gen_bind b c (CHead d1 (Bind Abbr) u) t H6)) in 
49204 ((let H8 \def (f_equal C B (\lambda (e: C).(match e return (\lambda (_: C).B) 
49205 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k return 
49206 (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
49207 Abbr])])) (CHead d1 (Bind Abbr) u) (CHead c (Bind b) t) (clear_gen_bind b c 
49208 (CHead d1 (Bind Abbr) u) t H6)) in ((let H9 \def (f_equal C T (\lambda (e: 
49209 C).(match e return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead 
49210 _ _ t) \Rightarrow t])) (CHead d1 (Bind Abbr) u) (CHead c (Bind b) t) 
49211 (clear_gen_bind b c (CHead d1 (Bind Abbr) u) t H6)) in (\lambda (H10: (eq B 
49212 Abbr b)).(\lambda (H11: (eq C d1 c)).(\lambda (c2: C).(\lambda (H12: (csub3 g 
49213 c1 c2)).(let H13 \def (eq_ind_r T t (\lambda (t: T).(drop n O c1 (CHead c 
49214 (Bind b) t))) H5 u H9) in (let H14 \def (eq_ind_r B b (\lambda (b: B).(drop n 
49215 O c1 (CHead c (Bind b) u))) H13 Abbr H10) in (let H15 \def (eq_ind_r C c 
49216 (\lambda (c: C).(drop n O c1 (CHead c (Bind Abbr) u))) H14 d1 H11) in 
49217 (ex2_ind C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(drop n O c2 
49218 (CHead d2 (Bind Abbr) u))) (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49219 (d2: C).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (x0: C).(\lambda 
49220 (H16: (csub3 g d1 x0)).(\lambda (H17: (drop n O c2 (CHead x0 (Bind Abbr) 
49221 u))).(ex_intro2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl n 
49222 c2 (CHead d2 (Bind Abbr) u))) x0 H16 (getl_intro n c2 (CHead x0 (Bind Abbr) 
49223 u) (CHead x0 (Bind Abbr) u) H17 (clear_bind Abbr x0 u)))))) (csub3_drop_abbr 
49224 g n c1 c2 H12 d1 u H15)))))))))) H8)) H7)))) | (Flat f) \Rightarrow (\lambda 
49225 (H5: (drop n O c1 (CHead c (Flat f) t))).(\lambda (H6: (clear (CHead c (Flat 
49226 f) t) (CHead d1 (Bind Abbr) u))).(let H7 \def H5 in (unintro C c1 (\lambda 
49227 (c0: C).((drop n O c0 (CHead c (Flat f) t)) \to (\forall (c2: C).((csub3 g c0 
49228 c2) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl n c2 
49229 (CHead d2 (Bind Abbr) u)))))))) (nat_ind (\lambda (n0: nat).(\forall (x0: 
49230 C).((drop n0 O x0 (CHead c (Flat f) t)) \to (\forall (c2: C).((csub3 g x0 c2) 
49231 \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl n0 c2 
49232 (CHead d2 (Bind Abbr) u))))))))) (\lambda (x0: C).(\lambda (H8: (drop O O x0 
49233 (CHead c (Flat f) t))).(\lambda (c2: C).(\lambda (H9: (csub3 g x0 c2)).(let 
49234 H10 \def (eq_ind C x0 (\lambda (c: C).(csub3 g c c2)) H9 (CHead c (Flat f) t) 
49235 (drop_gen_refl x0 (CHead c (Flat f) t) H8)) in (let H_y \def (clear_flat c 
49236 (CHead d1 (Bind Abbr) u) (clear_gen_flat f c (CHead d1 (Bind Abbr) u) t H6) f 
49237 t) in (let H11 \def (csub3_clear_conf g (CHead c (Flat f) t) c2 H10 (CHead d1 
49238 (Bind Abbr) u) H_y) in (ex2_ind C (\lambda (e2: C).(csub3 g (CHead d1 (Bind 
49239 Abbr) u) e2)) (\lambda (e2: C).(clear c2 e2)) (ex2 C (\lambda (d2: C).(csub3 
49240 g d1 d2)) (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abbr) u)))) (\lambda 
49241 (x1: C).(\lambda (H12: (csub3 g (CHead d1 (Bind Abbr) u) x1)).(\lambda (H13: 
49242 (clear c2 x1)).(let H14 \def (csub3_gen_abbr g d1 x1 u H12) in (ex2_ind C 
49243 (\lambda (e2: C).(eq C x1 (CHead e2 (Bind Abbr) u))) (\lambda (e2: C).(csub3 
49244 g d1 e2)) (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl O 
49245 c2 (CHead d2 (Bind Abbr) u)))) (\lambda (x2: C).(\lambda (H15: (eq C x1 
49246 (CHead x2 (Bind Abbr) u))).(\lambda (H16: (csub3 g d1 x2)).(let H17 \def 
49247 (eq_ind C x1 (\lambda (c: C).(clear c2 c)) H13 (CHead x2 (Bind Abbr) u) H15) 
49248 in (ex_intro2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl O c2 
49249 (CHead d2 (Bind Abbr) u))) x2 H16 (getl_intro O c2 (CHead x2 (Bind Abbr) u) 
49250 c2 (drop_refl c2) H17)))))) H14))))) H11)))))))) (\lambda (n0: nat).(\lambda 
49251 (H8: ((\forall (x: C).((drop n0 O x (CHead c (Flat f) t)) \to (\forall (c2: 
49252 C).((csub3 g x c2) \to (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
49253 C).(getl n0 c2 (CHead d2 (Bind Abbr) u)))))))))).(\lambda (x0: C).(\lambda 
49254 (H9: (drop (S n0) O x0 (CHead c (Flat f) t))).(\lambda (c2: C).(\lambda (H10: 
49255 (csub3 g x0 c2)).(let H11 \def (drop_clear x0 (CHead c (Flat f) t) n0 H9) in 
49256 (ex2_3_ind B C T (\lambda (b: B).(\lambda (e: C).(\lambda (v: T).(clear x0 
49257 (CHead e (Bind b) v))))) (\lambda (_: B).(\lambda (e: C).(\lambda (_: 
49258 T).(drop n0 O e (CHead c (Flat f) t))))) (ex2 C (\lambda (d2: C).(csub3 g d1 
49259 d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda 
49260 (x1: B).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H12: (clear x0 (CHead x2 
49261 (Bind x1) x3))).(\lambda (H13: (drop n0 O x2 (CHead c (Flat f) t))).(let H14 
49262 \def (csub3_clear_conf g x0 c2 H10 (CHead x2 (Bind x1) x3) H12) in (ex2_ind C 
49263 (\lambda (e2: C).(csub3 g (CHead x2 (Bind x1) x3) e2)) (\lambda (e2: 
49264 C).(clear c2 e2)) (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
49265 C).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (x4: C).(\lambda 
49266 (H15: (csub3 g (CHead x2 (Bind x1) x3) x4)).(\lambda (H16: (clear c2 
49267 x4)).(let H17 \def (csub3_gen_bind g x1 x2 x4 x3 H15) in (ex2_3_ind B C T 
49268 (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C x4 (CHead e2 (Bind 
49269 b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csub3 g x2 
49270 e2)))) (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl (S n0) 
49271 c2 (CHead d2 (Bind Abbr) u)))) (\lambda (x5: B).(\lambda (x6: C).(\lambda 
49272 (x7: T).(\lambda (H18: (eq C x4 (CHead x6 (Bind x5) x7))).(\lambda (H19: 
49273 (csub3 g x2 x6)).(let H20 \def (eq_ind C x4 (\lambda (c: C).(clear c2 c)) H16 
49274 (CHead x6 (Bind x5) x7) H18) in (let H21 \def (H8 x2 H13 x6 H19) in (ex2_ind 
49275 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl n0 x6 (CHead d2 
49276 (Bind Abbr) u))) (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
49277 C).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (x8: C).(\lambda 
49278 (H22: (csub3 g d1 x8)).(\lambda (H23: (getl n0 x6 (CHead x8 (Bind Abbr) 
49279 u))).(ex_intro2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl (S 
49280 n0) c2 (CHead d2 (Bind Abbr) u))) x8 H22 (getl_clear_bind x5 c2 x6 x7 H20 
49281 (CHead x8 (Bind Abbr) u) n0 H23))))) H21)))))))) H17))))) H14))))))) 
49282 H11)))))))) n) H7))))]) H3 H4)))]) H1 H2)))) H0))))))).
49283
49284 theorem csub3_getl_abst:
49285  \forall (g: G).(\forall (c1: C).(\forall (d1: C).(\forall (t: T).(\forall 
49286 (n: nat).((getl n c1 (CHead d1 (Bind Abst) t)) \to (\forall (c2: C).((csub3 g 
49287 c1 c2) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
49288 C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49289 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n 
49290 c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
49291 t))))))))))))
49292 \def
49293  \lambda (g: G).(\lambda (c1: C).(\lambda (d1: C).(\lambda (t: T).(\lambda 
49294 (n: nat).(\lambda (H: (getl n c1 (CHead d1 (Bind Abst) t))).(let H0 \def 
49295 (getl_gen_all c1 (CHead d1 (Bind Abst) t) n H) in (ex2_ind C (\lambda (e: 
49296 C).(drop n O c1 e)) (\lambda (e: C).(clear e (CHead d1 (Bind Abst) t))) 
49297 (\forall (c2: C).((csub3 g c1 c2) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 
49298 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T 
49299 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
49300 (u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: 
49301 T).(ty3 g d2 u t))))))) (\lambda (x: C).(\lambda (H1: (drop n O c1 
49302 x)).(\lambda (H2: (clear x (CHead d1 (Bind Abst) t))).((match x return 
49303 (\lambda (c: C).((drop n O c1 c) \to ((clear c (CHead d1 (Bind Abst) t)) \to 
49304 (\forall (c2: C).((csub3 g c1 c2) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 
49305 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T 
49306 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
49307 (u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: 
49308 T).(ty3 g d2 u t)))))))))) with [(CSort n0) \Rightarrow (\lambda (_: (drop n 
49309 O c1 (CSort n0))).(\lambda (H4: (clear (CSort n0) (CHead d1 (Bind Abst) 
49310 t))).(clear_gen_sort (CHead d1 (Bind Abst) t) n0 H4 (\forall (c2: C).((csub3 
49311 g c1 c2) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
49312 C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49313 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n 
49314 c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
49315 t)))))))))) | (CHead c k t0) \Rightarrow (\lambda (H3: (drop n O c1 (CHead c 
49316 k t0))).(\lambda (H4: (clear (CHead c k t0) (CHead d1 (Bind Abst) 
49317 t))).((match k return (\lambda (k0: K).((drop n O c1 (CHead c k0 t0)) \to 
49318 ((clear (CHead c k0 t0) (CHead d1 (Bind Abst) t)) \to (\forall (c2: 
49319 C).((csub3 g c1 c2) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49320 (d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49321 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n 
49322 c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
49323 t)))))))))) with [(Bind b) \Rightarrow (\lambda (H5: (drop n O c1 (CHead c 
49324 (Bind b) t0))).(\lambda (H6: (clear (CHead c (Bind b) t0) (CHead d1 (Bind 
49325 Abst) t))).(let H7 \def (f_equal C C (\lambda (e: C).(match e return (\lambda 
49326 (_: C).C) with [(CSort _) \Rightarrow d1 | (CHead c _ _) \Rightarrow c])) 
49327 (CHead d1 (Bind Abst) t) (CHead c (Bind b) t0) (clear_gen_bind b c (CHead d1 
49328 (Bind Abst) t) t0 H6)) in ((let H8 \def (f_equal C B (\lambda (e: C).(match e 
49329 return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abst | (CHead _ k _) 
49330 \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | 
49331 (Flat _) \Rightarrow Abst])])) (CHead d1 (Bind Abst) t) (CHead c (Bind b) t0) 
49332 (clear_gen_bind b c (CHead d1 (Bind Abst) t) t0 H6)) in ((let H9 \def 
49333 (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort 
49334 _) \Rightarrow t | (CHead _ _ t) \Rightarrow t])) (CHead d1 (Bind Abst) t) 
49335 (CHead c (Bind b) t0) (clear_gen_bind b c (CHead d1 (Bind Abst) t) t0 H6)) in 
49336 (\lambda (H10: (eq B Abst b)).(\lambda (H11: (eq C d1 c)).(\lambda (c2: 
49337 C).(\lambda (H12: (csub3 g c1 c2)).(let H13 \def (eq_ind_r T t0 (\lambda (t: 
49338 T).(drop n O c1 (CHead c (Bind b) t))) H5 t H9) in (let H14 \def (eq_ind_r B 
49339 b (\lambda (b: B).(drop n O c1 (CHead c (Bind b) t))) H13 Abst H10) in (let 
49340 H15 \def (eq_ind_r C c (\lambda (c: C).(drop n O c1 (CHead c (Bind Abst) t))) 
49341 H14 d1 H11) in (or_ind (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
49342 C).(drop n O c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49343 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop n 
49344 O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
49345 t)))) (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl n 
49346 c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49347 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n c2 (CHead d2 
49348 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) 
49349 (\lambda (H16: (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
49350 C).(drop n O c2 (CHead d2 (Bind Abst) t))))).(ex2_ind C (\lambda (d2: 
49351 C).(csub3 g d1 d2)) (\lambda (d2: C).(drop n O c2 (CHead d2 (Bind Abst) t))) 
49352 (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl n c2 
49353 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49354 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n c2 (CHead d2 
49355 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) 
49356 (\lambda (x0: C).(\lambda (H17: (csub3 g d1 x0)).(\lambda (H18: (drop n O c2 
49357 (CHead x0 (Bind Abst) t))).(or_introl (ex2 C (\lambda (d2: C).(csub3 g d1 
49358 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T 
49359 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
49360 (u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: 
49361 T).(ty3 g d2 u t)))) (ex_intro2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49362 (d2: C).(getl n c2 (CHead d2 (Bind Abst) t))) x0 H17 (getl_intro n c2 (CHead 
49363 x0 (Bind Abst) t) (CHead x0 (Bind Abst) t) H18 (clear_bind Abst x0 t))))))) 
49364 H16)) (\lambda (H16: (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 
49365 d2))) (\lambda (d2: C).(\lambda (u: T).(drop n O c2 (CHead d2 (Bind Abbr) 
49366 u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))).(ex3_2_ind C T 
49367 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
49368 (u: T).(drop n O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: 
49369 T).(ty3 g d2 u t))) (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49370 (d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49371 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n 
49372 c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
49373 t))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H17: (csub3 g d1 
49374 x0)).(\lambda (H18: (drop n O c2 (CHead x0 (Bind Abbr) x1))).(\lambda (H19: 
49375 (ty3 g x0 x1 t)).(or_intror (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49376 (d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49377 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n 
49378 c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
49379 t)))) (ex3_2_intro C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) 
49380 (\lambda (d2: C).(\lambda (u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) 
49381 (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) x0 x1 H17 (getl_intro n c2 
49382 (CHead x0 (Bind Abbr) x1) (CHead x0 (Bind Abbr) x1) H18 (clear_bind Abbr x0 
49383 x1)) H19))))))) H16)) (csub3_drop_abst g n c1 c2 H12 d1 t H15)))))))))) H8)) 
49384 H7)))) | (Flat f) \Rightarrow (\lambda (H5: (drop n O c1 (CHead c (Flat f) 
49385 t0))).(\lambda (H6: (clear (CHead c (Flat f) t0) (CHead d1 (Bind Abst) 
49386 t))).(let H7 \def H5 in (unintro C c1 (\lambda (c0: C).((drop n O c0 (CHead c 
49387 (Flat f) t0)) \to (\forall (c2: C).((csub3 g c0 c2) \to (or (ex2 C (\lambda 
49388 (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) 
49389 t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda 
49390 (d2: C).(\lambda (u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: 
49391 C).(\lambda (u: T).(ty3 g d2 u t))))))))) (nat_ind (\lambda (n0: 
49392 nat).(\forall (x0: C).((drop n0 O x0 (CHead c (Flat f) t0)) \to (\forall (c2: 
49393 C).((csub3 g x0 c2) \to (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49394 (d2: C).(getl n0 c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49395 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl 
49396 n0 c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 
49397 u t)))))))))) (\lambda (x0: C).(\lambda (H8: (drop O O x0 (CHead c (Flat f) 
49398 t0))).(\lambda (c2: C).(\lambda (H9: (csub3 g x0 c2)).(let H10 \def (eq_ind C 
49399 x0 (\lambda (c: C).(csub3 g c c2)) H9 (CHead c (Flat f) t0) (drop_gen_refl x0 
49400 (CHead c (Flat f) t0) H8)) in (let H_y \def (clear_flat c (CHead d1 (Bind 
49401 Abst) t) (clear_gen_flat f c (CHead d1 (Bind Abst) t) t0 H6) f t0) in (let 
49402 H11 \def (csub3_clear_conf g (CHead c (Flat f) t0) c2 H10 (CHead d1 (Bind 
49403 Abst) t) H_y) in (ex2_ind C (\lambda (e2: C).(csub3 g (CHead d1 (Bind Abst) 
49404 t) e2)) (\lambda (e2: C).(clear c2 e2)) (or (ex2 C (\lambda (d2: C).(csub3 g 
49405 d1 d2)) (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T 
49406 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
49407 (u: T).(getl O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: 
49408 T).(ty3 g d2 u t))))) (\lambda (x1: C).(\lambda (H12: (csub3 g (CHead d1 
49409 (Bind Abst) t) x1)).(\lambda (H13: (clear c2 x1)).(let H14 \def 
49410 (csub3_gen_abst g d1 x1 t H12) in (or_ind (ex2 C (\lambda (e2: C).(eq C x1 
49411 (CHead e2 (Bind Abst) t))) (\lambda (e2: C).(csub3 g d1 e2))) (ex3_2 C T 
49412 (\lambda (e2: C).(\lambda (v2: T).(eq C x1 (CHead e2 (Bind Abbr) v2)))) 
49413 (\lambda (e2: C).(\lambda (_: T).(csub3 g d1 e2))) (\lambda (e2: C).(\lambda 
49414 (v2: T).(ty3 g e2 v2 t)))) (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
49415 (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda 
49416 (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: 
49417 T).(getl O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: 
49418 T).(ty3 g d2 u t))))) (\lambda (H15: (ex2 C (\lambda (e2: C).(eq C x1 (CHead 
49419 e2 (Bind Abst) t))) (\lambda (e2: C).(csub3 g d1 e2)))).(ex2_ind C (\lambda 
49420 (e2: C).(eq C x1 (CHead e2 (Bind Abst) t))) (\lambda (e2: C).(csub3 g d1 e2)) 
49421 (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl O c2 
49422 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49423 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl O c2 (CHead d2 
49424 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) 
49425 (\lambda (x2: C).(\lambda (H16: (eq C x1 (CHead x2 (Bind Abst) t))).(\lambda 
49426 (H17: (csub3 g d1 x2)).(let H18 \def (eq_ind C x1 (\lambda (c: C).(clear c2 
49427 c)) H13 (CHead x2 (Bind Abst) t) H16) in (or_introl (ex2 C (\lambda (d2: 
49428 C).(csub3 g d1 d2)) (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) t)))) 
49429 (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: 
49430 C).(\lambda (u: T).(getl O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: 
49431 C).(\lambda (u: T).(ty3 g d2 u t)))) (ex_intro2 C (\lambda (d2: C).(csub3 g 
49432 d1 d2)) (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) t))) x2 H17 
49433 (getl_intro O c2 (CHead x2 (Bind Abst) t) c2 (drop_refl c2) H18))))))) H15)) 
49434 (\lambda (H15: (ex3_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C x1 (CHead 
49435 e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csub3 g d1 e2))) 
49436 (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 t))))).(ex3_2_ind C T (\lambda 
49437 (e2: C).(\lambda (v2: T).(eq C x1 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: 
49438 C).(\lambda (_: T).(csub3 g d1 e2))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g 
49439 e2 v2 t))) (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
49440 C).(getl O c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49441 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl O 
49442 c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
49443 t))))) (\lambda (x2: C).(\lambda (x3: T).(\lambda (H16: (eq C x1 (CHead x2 
49444 (Bind Abbr) x3))).(\lambda (H17: (csub3 g d1 x2)).(\lambda (H18: (ty3 g x2 x3 
49445 t)).(let H19 \def (eq_ind C x1 (\lambda (c: C).(clear c2 c)) H13 (CHead x2 
49446 (Bind Abbr) x3) H16) in (or_intror (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
49447 (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda 
49448 (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: 
49449 T).(getl O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: 
49450 T).(ty3 g d2 u t)))) (ex3_2_intro C T (\lambda (d2: C).(\lambda (_: T).(csub3 
49451 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl O c2 (CHead d2 (Bind Abbr) 
49452 u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) x2 x3 H17 (getl_intro 
49453 O c2 (CHead x2 (Bind Abbr) x3) c2 (drop_refl c2) H19) H18)))))))) H15)) 
49454 H14))))) H11)))))))) (\lambda (n0: nat).(\lambda (H8: ((\forall (x: C).((drop 
49455 n0 O x (CHead c (Flat f) t0)) \to (\forall (c2: C).((csub3 g x c2) \to (or 
49456 (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl n0 c2 (CHead 
49457 d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 
49458 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n0 c2 (CHead d2 (Bind Abbr) 
49459 u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))))))))).(\lambda (x0: 
49460 C).(\lambda (H9: (drop (S n0) O x0 (CHead c (Flat f) t0))).(\lambda (c2: 
49461 C).(\lambda (H10: (csub3 g x0 c2)).(let H11 \def (drop_clear x0 (CHead c 
49462 (Flat f) t0) n0 H9) in (ex2_3_ind B C T (\lambda (b: B).(\lambda (e: 
49463 C).(\lambda (v: T).(clear x0 (CHead e (Bind b) v))))) (\lambda (_: 
49464 B).(\lambda (e: C).(\lambda (_: T).(drop n0 O e (CHead c (Flat f) t0))))) (or 
49465 (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl (S n0) c2 
49466 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49467 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl (S n0) c2 (CHead 
49468 d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) 
49469 (\lambda (x1: B).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H12: (clear x0 
49470 (CHead x2 (Bind x1) x3))).(\lambda (H13: (drop n0 O x2 (CHead c (Flat f) 
49471 t0))).(let H14 \def (csub3_clear_conf g x0 c2 H10 (CHead x2 (Bind x1) x3) 
49472 H12) in (ex2_ind C (\lambda (e2: C).(csub3 g (CHead x2 (Bind x1) x3) e2)) 
49473 (\lambda (e2: C).(clear c2 e2)) (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) 
49474 (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T 
49475 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
49476 (u: T).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda 
49477 (u: T).(ty3 g d2 u t))))) (\lambda (x4: C).(\lambda (H15: (csub3 g (CHead x2 
49478 (Bind x1) x3) x4)).(\lambda (H16: (clear c2 x4)).(let H17 \def 
49479 (csub3_gen_bind g x1 x2 x4 x3 H15) in (ex2_3_ind B C T (\lambda (b2: 
49480 B).(\lambda (e2: C).(\lambda (v2: T).(eq C x4 (CHead e2 (Bind b2) v2))))) 
49481 (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csub3 g x2 e2)))) (or (ex2 
49482 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead 
49483 d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 
49484 d2))) (\lambda (d2: C).(\lambda (u: T).(getl (S n0) c2 (CHead d2 (Bind Abbr) 
49485 u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) (\lambda (x5: 
49486 B).(\lambda (x6: C).(\lambda (x7: T).(\lambda (H18: (eq C x4 (CHead x6 (Bind 
49487 x5) x7))).(\lambda (H19: (csub3 g x2 x6)).(let H20 \def (eq_ind C x4 (\lambda 
49488 (c: C).(clear c2 c)) H16 (CHead x6 (Bind x5) x7) H18) in (let H21 \def (H8 x2 
49489 H13 x6 H19) in (or_ind (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
49490 C).(getl n0 x6 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49491 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl 
49492 n0 x6 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 
49493 u t)))) (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl 
49494 (S n0) c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda 
49495 (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl (S n0) c2 
49496 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u 
49497 t))))) (\lambda (H22: (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: 
49498 C).(getl n0 x6 (CHead d2 (Bind Abst) t))))).(ex2_ind C (\lambda (d2: 
49499 C).(csub3 g d1 d2)) (\lambda (d2: C).(getl n0 x6 (CHead d2 (Bind Abst) t))) 
49500 (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda (d2: C).(getl (S n0) c2 
49501 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: C).(\lambda (_: 
49502 T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl (S n0) c2 (CHead 
49503 d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) 
49504 (\lambda (x8: C).(\lambda (H23: (csub3 g d1 x8)).(\lambda (H24: (getl n0 x6 
49505 (CHead x8 (Bind Abst) t))).(or_introl (ex2 C (\lambda (d2: C).(csub3 g d1 
49506 d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T 
49507 (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda 
49508 (u: T).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda 
49509 (u: T).(ty3 g d2 u t)))) (ex_intro2 C (\lambda (d2: C).(csub3 g d1 d2)) 
49510 (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) t))) x8 H23 
49511 (getl_clear_bind x5 c2 x6 x7 H20 (CHead x8 (Bind Abst) t) n0 H24)))))) H22)) 
49512 (\lambda (H22: (ex3_2 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 d2))) 
49513 (\lambda (d2: C).(\lambda (u: T).(getl n0 x6 (CHead d2 (Bind Abbr) u)))) 
49514 (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))).(ex3_2_ind C T (\lambda 
49515 (d2: C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: 
49516 T).(getl n0 x6 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: 
49517 T).(ty3 g d2 u t))) (or (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49518 (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49519 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl 
49520 (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g 
49521 d2 u t))))) (\lambda (x8: C).(\lambda (x9: T).(\lambda (H23: (csub3 g d1 
49522 x8)).(\lambda (H24: (getl n0 x6 (CHead x8 (Bind Abbr) x9))).(\lambda (H25: 
49523 (ty3 g x8 x9 t)).(or_intror (ex2 C (\lambda (d2: C).(csub3 g d1 d2)) (\lambda 
49524 (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) t)))) (ex3_2 C T (\lambda (d2: 
49525 C).(\lambda (_: T).(csub3 g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl 
49526 (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g 
49527 d2 u t)))) (ex3_2_intro C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d1 
49528 d2))) (\lambda (d2: C).(\lambda (u: T).(getl (S n0) c2 (CHead d2 (Bind Abbr) 
49529 u)))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) x8 x9 H23 
49530 (getl_clear_bind x5 c2 x6 x7 H20 (CHead x8 (Bind Abbr) x9) n0 H24) H25))))))) 
49531 H22)) H21)))))))) H17))))) H14))))))) H11)))))))) n) H7))))]) H3 H4)))]) H1 
49532 H2)))) H0))))))).
49533
49534 theorem csub3_pr2:
49535  \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t2: T).((pr2 c1 
49536 t1 t2) \to (\forall (c2: C).((csub3 g c1 c2) \to (pr2 c2 t1 t2)))))))
49537 \def
49538  \lambda (g: G).(\lambda (c1: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
49539 (H: (pr2 c1 t1 t2)).(pr2_ind (\lambda (c: C).(\lambda (t: T).(\lambda (t0: 
49540 T).(\forall (c2: C).((csub3 g c c2) \to (pr2 c2 t t0)))))) (\lambda (c: 
49541 C).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H0: (pr0 t3 t4)).(\lambda (c2: 
49542 C).(\lambda (_: (csub3 g c c2)).(pr2_free c2 t3 t4 H0))))))) (\lambda (c: 
49543 C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c 
49544 (CHead d (Bind Abbr) u))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H1: 
49545 (pr0 t3 t4)).(\lambda (t: T).(\lambda (H2: (subst0 i u t4 t)).(\lambda (c2: 
49546 C).(\lambda (H3: (csub3 g c c2)).(let H4 \def (csub3_getl_abbr g c d u i H0 
49547 c2 H3) in (ex2_ind C (\lambda (d2: C).(csub3 g d d2)) (\lambda (d2: C).(getl 
49548 i c2 (CHead d2 (Bind Abbr) u))) (pr2 c2 t3 t) (\lambda (x: C).(\lambda (_: 
49549 (csub3 g d x)).(\lambda (H6: (getl i c2 (CHead x (Bind Abbr) u))).(pr2_delta 
49550 c2 x u i H6 t3 t4 H1 t H2)))) H4)))))))))))))) c1 t1 t2 H))))).
49551
49552 theorem csub3_pc3:
49553  \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t2: T).((pc3 c1 
49554 t1 t2) \to (\forall (c2: C).((csub3 g c1 c2) \to (pc3 c2 t1 t2)))))))
49555 \def
49556  \lambda (g: G).(\lambda (c1: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
49557 (H: (pc3 c1 t1 t2)).(pc3_ind_left c1 (\lambda (t: T).(\lambda (t0: 
49558 T).(\forall (c2: C).((csub3 g c1 c2) \to (pc3 c2 t t0))))) (\lambda (t: 
49559 T).(\lambda (c2: C).(\lambda (_: (csub3 g c1 c2)).(pc3_refl c2 t)))) (\lambda 
49560 (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c1 t0 t3)).(\lambda (t4: 
49561 T).(\lambda (_: (pc3 c1 t3 t4)).(\lambda (H2: ((\forall (c2: C).((csub3 g c1 
49562 c2) \to (pc3 c2 t3 t4))))).(\lambda (c2: C).(\lambda (H3: (csub3 g c1 
49563 c2)).(pc3_pr2_u c2 t3 t0 (csub3_pr2 g c1 t0 t3 H0 c2 H3) t4 (H2 c2 
49564 H3)))))))))) (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c1 t0 
49565 t3)).(\lambda (t4: T).(\lambda (_: (pc3 c1 t0 t4)).(\lambda (H2: ((\forall 
49566 (c2: C).((csub3 g c1 c2) \to (pc3 c2 t0 t4))))).(\lambda (c2: C).(\lambda 
49567 (H3: (csub3 g c1 c2)).(pc3_t t0 c2 t3 (pc3_pr2_x c2 t3 t0 (csub3_pr2 g c1 t0 
49568 t3 H0 c2 H3)) t4 (H2 c2 H3)))))))))) t1 t2 H))))).
49569
49570 theorem csub3_ty3:
49571  \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c1 
49572 t1 t2) \to (\forall (c2: C).((csub3 g c1 c2) \to (ty3 g c2 t1 t2)))))))
49573 \def
49574  \lambda (g: G).(\lambda (c1: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
49575 (H: (ty3 g c1 t1 t2)).(ty3_ind g (\lambda (c: C).(\lambda (t: T).(\lambda 
49576 (t0: T).(\forall (c2: C).((csub3 g c c2) \to (ty3 g c2 t t0)))))) (\lambda 
49577 (c: C).(\lambda (t0: T).(\lambda (t: T).(\lambda (_: (ty3 g c t0 t)).(\lambda 
49578 (H1: ((\forall (c2: C).((csub3 g c c2) \to (ty3 g c2 t0 t))))).(\lambda (u: 
49579 T).(\lambda (t3: T).(\lambda (_: (ty3 g c u t3)).(\lambda (H3: ((\forall (c2: 
49580 C).((csub3 g c c2) \to (ty3 g c2 u t3))))).(\lambda (H4: (pc3 c t3 
49581 t0)).(\lambda (c2: C).(\lambda (H5: (csub3 g c c2)).(ty3_conv g c2 t0 t (H1 
49582 c2 H5) u t3 (H3 c2 H5) (csub3_pc3 g c t3 t0 H4 c2 H5)))))))))))))) (\lambda 
49583 (c: C).(\lambda (m: nat).(\lambda (c2: C).(\lambda (_: (csub3 g c 
49584 c2)).(ty3_sort g c2 m))))) (\lambda (n: nat).(\lambda (c: C).(\lambda (d: 
49585 C).(\lambda (u: T).(\lambda (H0: (getl n c (CHead d (Bind Abbr) u))).(\lambda 
49586 (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: ((\forall (c2: C).((csub3 g 
49587 d c2) \to (ty3 g c2 u t))))).(\lambda (c2: C).(\lambda (H3: (csub3 g c 
49588 c2)).(let H4 \def (csub3_getl_abbr g c d u n H0 c2 H3) in (ex2_ind C (\lambda 
49589 (d2: C).(csub3 g d d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) 
49590 u))) (ty3 g c2 (TLRef n) (lift (S n) O t)) (\lambda (x: C).(\lambda (H5: 
49591 (csub3 g d x)).(\lambda (H6: (getl n c2 (CHead x (Bind Abbr) u))).(ty3_abbr g 
49592 n c2 x u H6 t (H2 x H5))))) H4)))))))))))) (\lambda (n: nat).(\lambda (c: 
49593 C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n c (CHead d (Bind 
49594 Abst) u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: 
49595 ((\forall (c2: C).((csub3 g d c2) \to (ty3 g c2 u t))))).(\lambda (c2: 
49596 C).(\lambda (H3: (csub3 g c c2)).(let H4 \def (csub3_getl_abst g c d u n H0 
49597 c2 H3) in (or_ind (ex2 C (\lambda (d2: C).(csub3 g d d2)) (\lambda (d2: 
49598 C).(getl n c2 (CHead d2 (Bind Abst) u)))) (ex3_2 C T (\lambda (d2: 
49599 C).(\lambda (_: T).(csub3 g d d2))) (\lambda (d2: C).(\lambda (u0: T).(getl n 
49600 c2 (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 
49601 u0 u)))) (ty3 g c2 (TLRef n) (lift (S n) O u)) (\lambda (H5: (ex2 C (\lambda 
49602 (d2: C).(csub3 g d d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) 
49603 u))))).(ex2_ind C (\lambda (d2: C).(csub3 g d d2)) (\lambda (d2: C).(getl n 
49604 c2 (CHead d2 (Bind Abst) u))) (ty3 g c2 (TLRef n) (lift (S n) O u)) (\lambda 
49605 (x: C).(\lambda (H6: (csub3 g d x)).(\lambda (H7: (getl n c2 (CHead x (Bind 
49606 Abst) u))).(ty3_abst g n c2 x u H7 t (H2 x H6))))) H5)) (\lambda (H5: (ex3_2 
49607 C T (\lambda (d2: C).(\lambda (_: T).(csub3 g d d2))) (\lambda (d2: 
49608 C).(\lambda (u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (d2: 
49609 C).(\lambda (u0: T).(ty3 g d2 u0 u))))).(ex3_2_ind C T (\lambda (d2: 
49610 C).(\lambda (_: T).(csub3 g d d2))) (\lambda (d2: C).(\lambda (u0: T).(getl n 
49611 c2 (CHead d2 (Bind Abbr) u0)))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 
49612 u0 u))) (ty3 g c2 (TLRef n) (lift (S n) O u)) (\lambda (x0: C).(\lambda (x1: 
49613 T).(\lambda (_: (csub3 g d x0)).(\lambda (H7: (getl n c2 (CHead x0 (Bind 
49614 Abbr) x1))).(\lambda (H8: (ty3 g x0 x1 u)).(ty3_abbr g n c2 x0 x1 H7 u 
49615 H8)))))) H5)) H4)))))))))))) (\lambda (c: C).(\lambda (u: T).(\lambda (t: 
49616 T).(\lambda (_: (ty3 g c u t)).(\lambda (H1: ((\forall (c2: C).((csub3 g c 
49617 c2) \to (ty3 g c2 u t))))).(\lambda (b: B).(\lambda (t0: T).(\lambda (t3: 
49618 T).(\lambda (_: (ty3 g (CHead c (Bind b) u) t0 t3)).(\lambda (H3: ((\forall 
49619 (c2: C).((csub3 g (CHead c (Bind b) u) c2) \to (ty3 g c2 t0 t3))))).(\lambda 
49620 (t4: T).(\lambda (_: (ty3 g (CHead c (Bind b) u) t3 t4)).(\lambda (H5: 
49621 ((\forall (c2: C).((csub3 g (CHead c (Bind b) u) c2) \to (ty3 g c2 t3 
49622 t4))))).(\lambda (c2: C).(\lambda (H6: (csub3 g c c2)).(ty3_bind g c2 u t (H1 
49623 c2 H6) b t0 t3 (H3 (CHead c2 (Bind b) u) (csub3_head g c c2 H6 (Bind b) u)) 
49624 t4 (H5 (CHead c2 (Bind b) u) (csub3_head g c c2 H6 (Bind b) 
49625 u)))))))))))))))))) (\lambda (c: C).(\lambda (w: T).(\lambda (u: T).(\lambda 
49626 (_: (ty3 g c w u)).(\lambda (H1: ((\forall (c2: C).((csub3 g c c2) \to (ty3 g 
49627 c2 w u))))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c v (THead 
49628 (Bind Abst) u t))).(\lambda (H3: ((\forall (c2: C).((csub3 g c c2) \to (ty3 g 
49629 c2 v (THead (Bind Abst) u t)))))).(\lambda (c2: C).(\lambda (H4: (csub3 g c 
49630 c2)).(ty3_appl g c2 w u (H1 c2 H4) v t (H3 c2 H4))))))))))))) (\lambda (c: 
49631 C).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (ty3 g c t0 t3)).(\lambda 
49632 (H1: ((\forall (c2: C).((csub3 g c c2) \to (ty3 g c2 t0 t3))))).(\lambda (t4: 
49633 T).(\lambda (_: (ty3 g c t3 t4)).(\lambda (H3: ((\forall (c2: C).((csub3 g c 
49634 c2) \to (ty3 g c2 t3 t4))))).(\lambda (c2: C).(\lambda (H4: (csub3 g c 
49635 c2)).(ty3_cast g c2 t0 t3 (H1 c2 H4) t4 (H3 c2 H4)))))))))))) c1 t1 t2 H))))).
49636
49637 theorem csub3_ty3_ld:
49638  \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (v: T).((ty3 g c u 
49639 v) \to (\forall (t1: T).(\forall (t2: T).((ty3 g (CHead c (Bind Abst) v) t1 
49640 t2) \to (ty3 g (CHead c (Bind Abbr) u) t1 t2))))))))
49641 \def
49642  \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (v: T).(\lambda (H: 
49643 (ty3 g c u v)).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (ty3 g (CHead 
49644 c (Bind Abst) v) t1 t2)).(csub3_ty3 g (CHead c (Bind Abst) v) t1 t2 H0 (CHead 
49645 c (Bind Abbr) u) (csub3_abst g c c (csub3_refl g c) u v H))))))))).
49646
49647 theorem ty3_sred_wcpr0_pr0:
49648  \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t: T).((ty3 g c1 
49649 t1 t) \to (\forall (c2: C).((wcpr0 c1 c2) \to (\forall (t2: T).((pr0 t1 t2) 
49650 \to (ty3 g c2 t2 t)))))))))
49651 \def
49652  \lambda (g: G).(\lambda (c1: C).(\lambda (t1: T).(\lambda (t: T).(\lambda 
49653 (H: (ty3 g c1 t1 t)).(ty3_ind g (\lambda (c: C).(\lambda (t0: T).(\lambda 
49654 (t2: T).(\forall (c2: C).((wcpr0 c c2) \to (\forall (t3: T).((pr0 t0 t3) \to 
49655 (ty3 g c2 t3 t2)))))))) (\lambda (c: C).(\lambda (t2: T).(\lambda (t0: 
49656 T).(\lambda (_: (ty3 g c t2 t0)).(\lambda (H1: ((\forall (c2: C).((wcpr0 c 
49657 c2) \to (\forall (t3: T).((pr0 t2 t3) \to (ty3 g c2 t3 t0))))))).(\lambda (u: 
49658 T).(\lambda (t3: T).(\lambda (_: (ty3 g c u t3)).(\lambda (H3: ((\forall (c2: 
49659 C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 u t2) \to (ty3 g c2 t2 
49660 t3))))))).(\lambda (H4: (pc3 c t3 t2)).(\lambda (c2: C).(\lambda (H5: (wcpr0 
49661 c c2)).(\lambda (t4: T).(\lambda (H6: (pr0 u t4)).(ty3_conv g c2 t2 t0 (H1 c2 
49662 H5 t2 (pr0_refl t2)) t4 t3 (H3 c2 H5 t4 H6) (pc3_wcpr0 c c2 H5 t3 t2 
49663 H4)))))))))))))))) (\lambda (c: C).(\lambda (m: nat).(\lambda (c2: 
49664 C).(\lambda (_: (wcpr0 c c2)).(\lambda (t2: T).(\lambda (H1: (pr0 (TSort m) 
49665 t2)).(eq_ind_r T (TSort m) (\lambda (t0: T).(ty3 g c2 t0 (TSort (next g m)))) 
49666 (ty3_sort g c2 m) t2 (pr0_gen_sort t2 m H1)))))))) (\lambda (n: nat).(\lambda 
49667 (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n c (CHead d (Bind 
49668 Abbr) u))).(\lambda (t0: T).(\lambda (_: (ty3 g d u t0)).(\lambda (H2: 
49669 ((\forall (c2: C).((wcpr0 d c2) \to (\forall (t2: T).((pr0 u t2) \to (ty3 g 
49670 c2 t2 t0))))))).(\lambda (c2: C).(\lambda (H3: (wcpr0 c c2)).(\lambda (t2: 
49671 T).(\lambda (H4: (pr0 (TLRef n) t2)).(eq_ind_r T (TLRef n) (\lambda (t3: 
49672 T).(ty3 g c2 t3 (lift (S n) O t0))) (ex3_2_ind C T (\lambda (e2: C).(\lambda 
49673 (u2: T).(getl n c2 (CHead e2 (Bind Abbr) u2)))) (\lambda (e2: C).(\lambda (_: 
49674 T).(wcpr0 d e2))) (\lambda (_: C).(\lambda (u2: T).(pr0 u u2))) (ty3 g c2 
49675 (TLRef n) (lift (S n) O t0)) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H5: 
49676 (getl n c2 (CHead x0 (Bind Abbr) x1))).(\lambda (H6: (wcpr0 d x0)).(\lambda 
49677 (H7: (pr0 u x1)).(ty3_abbr g n c2 x0 x1 H5 t0 (H2 x0 H6 x1 H7))))))) 
49678 (wcpr0_getl c c2 H3 n d u (Bind Abbr) H0)) t2 (pr0_gen_lref t2 n 
49679 H4)))))))))))))) (\lambda (n: nat).(\lambda (c: C).(\lambda (d: C).(\lambda 
49680 (u: T).(\lambda (H0: (getl n c (CHead d (Bind Abst) u))).(\lambda (t0: 
49681 T).(\lambda (_: (ty3 g d u t0)).(\lambda (H2: ((\forall (c2: C).((wcpr0 d c2) 
49682 \to (\forall (t2: T).((pr0 u t2) \to (ty3 g c2 t2 t0))))))).(\lambda (c2: 
49683 C).(\lambda (H3: (wcpr0 c c2)).(\lambda (t2: T).(\lambda (H4: (pr0 (TLRef n) 
49684 t2)).(eq_ind_r T (TLRef n) (\lambda (t3: T).(ty3 g c2 t3 (lift (S n) O u))) 
49685 (ex3_2_ind C T (\lambda (e2: C).(\lambda (u2: T).(getl n c2 (CHead e2 (Bind 
49686 Abst) u2)))) (\lambda (e2: C).(\lambda (_: T).(wcpr0 d e2))) (\lambda (_: 
49687 C).(\lambda (u2: T).(pr0 u u2))) (ty3 g c2 (TLRef n) (lift (S n) O u)) 
49688 (\lambda (x0: C).(\lambda (x1: T).(\lambda (H5: (getl n c2 (CHead x0 (Bind 
49689 Abst) x1))).(\lambda (H6: (wcpr0 d x0)).(\lambda (H7: (pr0 u x1)).(ty3_conv g 
49690 c2 (lift (S n) O u) (lift (S n) O t0) (ty3_lift g x0 u t0 (H2 x0 H6 u 
49691 (pr0_refl u)) c2 O (S n) (getl_drop Abst c2 x0 x1 n H5)) (TLRef n) (lift (S 
49692 n) O x1) (ty3_abst g n c2 x0 x1 H5 t0 (H2 x0 H6 x1 H7)) (pc3_lift c2 x0 (S n) 
49693 O (getl_drop Abst c2 x0 x1 n H5) x1 u (pc3_pr2_x x0 x1 u (pr2_free x0 u x1 
49694 H7))))))))) (wcpr0_getl c c2 H3 n d u (Bind Abst) H0)) t2 (pr0_gen_lref t2 n 
49695 H4)))))))))))))) (\lambda (c: C).(\lambda (u: T).(\lambda (t0: T).(\lambda 
49696 (_: (ty3 g c u t0)).(\lambda (H1: ((\forall (c2: C).((wcpr0 c c2) \to 
49697 (\forall (t2: T).((pr0 u t2) \to (ty3 g c2 t2 t0))))))).(\lambda (b: 
49698 B).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H2: (ty3 g (CHead c (Bind b) 
49699 u) t2 t3)).(\lambda (H3: ((\forall (c2: C).((wcpr0 (CHead c (Bind b) u) c2) 
49700 \to (\forall (t4: T).((pr0 t2 t4) \to (ty3 g c2 t4 t3))))))).(\lambda (t4: 
49701 T).(\lambda (H4: (ty3 g (CHead c (Bind b) u) t3 t4)).(\lambda (H5: ((\forall 
49702 (c2: C).((wcpr0 (CHead c (Bind b) u) c2) \to (\forall (t2: T).((pr0 t3 t2) 
49703 \to (ty3 g c2 t2 t4))))))).(\lambda (c2: C).(\lambda (H6: (wcpr0 c 
49704 c2)).(\lambda (t5: T).(\lambda (H7: (pr0 (THead (Bind b) u t2) t5)).(let H8 
49705 \def (match H7 return (\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr0 t 
49706 t0)).((eq T t (THead (Bind b) u t2)) \to ((eq T t0 t5) \to (ty3 g c2 t5 
49707 (THead (Bind b) u t3))))))) with [(pr0_refl t4) \Rightarrow (\lambda (H7: (eq 
49708 T t4 (THead (Bind b) u t2))).(\lambda (H8: (eq T t4 t5)).(eq_ind T (THead 
49709 (Bind b) u t2) (\lambda (t: T).((eq T t t5) \to (ty3 g c2 t5 (THead (Bind b) 
49710 u t3)))) (\lambda (H9: (eq T (THead (Bind b) u t2) t5)).(eq_ind T (THead 
49711 (Bind b) u t2) (\lambda (t: T).(ty3 g c2 t (THead (Bind b) u t3))) (ty3_bind 
49712 g c2 u t0 (H1 c2 H6 u (pr0_refl u)) b t2 t3 (H3 (CHead c2 (Bind b) u) 
49713 (wcpr0_comp c c2 H6 u u (pr0_refl u) (Bind b)) t2 (pr0_refl t2)) t4 (H5 
49714 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H6 u u (pr0_refl u) (Bind b)) t3 
49715 (pr0_refl t3))) t5 H9)) t4 (sym_eq T t4 (THead (Bind b) u t2) H7) H8))) | 
49716 (pr0_comp u1 u2 H7 t4 t5 H8 k) \Rightarrow (\lambda (H9: (eq T (THead k u1 
49717 t4) (THead (Bind b) u t2))).(\lambda (H10: (eq T (THead k u2 t5) t5)).((let 
49718 H11 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
49719 [(TSort _) \Rightarrow t4 | (TLRef _) \Rightarrow t4 | (THead _ _ t) 
49720 \Rightarrow t])) (THead k u1 t4) (THead (Bind b) u t2) H9) in ((let H12 \def 
49721 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
49722 _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t _) \Rightarrow t])) 
49723 (THead k u1 t4) (THead (Bind b) u t2) H9) in ((let H13 \def (f_equal T K 
49724 (\lambda (e: T).(match e return (\lambda (_: T).K) with [(TSort _) 
49725 \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) \Rightarrow k])) 
49726 (THead k u1 t4) (THead (Bind b) u t2) H9) in (eq_ind K (Bind b) (\lambda (k0: 
49727 K).((eq T u1 u) \to ((eq T t4 t2) \to ((eq T (THead k0 u2 t5) t5) \to ((pr0 
49728 u1 u2) \to ((pr0 t4 t5) \to (ty3 g c2 t5 (THead (Bind b) u t3)))))))) 
49729 (\lambda (H14: (eq T u1 u)).(eq_ind T u (\lambda (t: T).((eq T t4 t2) \to 
49730 ((eq T (THead (Bind b) u2 t5) t5) \to ((pr0 t u2) \to ((pr0 t4 t5) \to (ty3 g 
49731 c2 t5 (THead (Bind b) u t3))))))) (\lambda (H15: (eq T t4 t2)).(eq_ind T t2 
49732 (\lambda (t: T).((eq T (THead (Bind b) u2 t5) t5) \to ((pr0 u u2) \to ((pr0 t 
49733 t5) \to (ty3 g c2 t5 (THead (Bind b) u t3)))))) (\lambda (H16: (eq T (THead 
49734 (Bind b) u2 t5) t5)).(eq_ind T (THead (Bind b) u2 t5) (\lambda (t: T).((pr0 u 
49735 u2) \to ((pr0 t2 t5) \to (ty3 g c2 t (THead (Bind b) u t3))))) (\lambda (H17: 
49736 (pr0 u u2)).(\lambda (H18: (pr0 t2 t5)).(ex_ind T (\lambda (t: T).(ty3 g 
49737 (CHead c2 (Bind b) u) t4 t)) (ty3 g c2 (THead (Bind b) u2 t5) (THead (Bind b) 
49738 u t3)) (\lambda (x: T).(\lambda (H19: (ty3 g (CHead c2 (Bind b) u) t4 
49739 x)).(ex_ind T (\lambda (t: T).(ty3 g (CHead c2 (Bind b) u2) t3 t)) (ty3 g c2 
49740 (THead (Bind b) u2 t5) (THead (Bind b) u t3)) (\lambda (x0: T).(\lambda (H20: 
49741 (ty3 g (CHead c2 (Bind b) u2) t3 x0)).(ty3_conv g c2 (THead (Bind b) u t3) 
49742 (THead (Bind b) u t4) (ty3_bind g c2 u t0 (H1 c2 H6 u (pr0_refl u)) b t3 t4 
49743 (H5 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H6 u u (pr0_refl u) (Bind b)) t3 
49744 (pr0_refl t3)) x H19) (THead (Bind b) u2 t5) (THead (Bind b) u2 t3) (ty3_bind 
49745 g c2 u2 t0 (H1 c2 H6 u2 H17) b t5 t3 (H3 (CHead c2 (Bind b) u2) (wcpr0_comp c 
49746 c2 H6 u u2 H17 (Bind b)) t5 H18) x0 H20) (pc3_pr2_x c2 (THead (Bind b) u2 t3) 
49747 (THead (Bind b) u t3) (pr2_head_1 c2 u u2 (pr2_free c2 u u2 H17) (Bind b) 
49748 t3))))) (ty3_correct g (CHead c2 (Bind b) u2) t5 t3 (H3 (CHead c2 (Bind b) 
49749 u2) (wcpr0_comp c c2 H6 u u2 H17 (Bind b)) t5 H18))))) (ty3_correct g (CHead 
49750 c2 (Bind b) u) t3 t4 (H5 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H6 u u 
49751 (pr0_refl u) (Bind b)) t3 (pr0_refl t3)))))) t5 H16)) t4 (sym_eq T t4 t2 
49752 H15))) u1 (sym_eq T u1 u H14))) k (sym_eq K k (Bind b) H13))) H12)) H11)) H10 
49753 H7 H8))) | (pr0_beta u0 v1 v2 H7 t4 t5 H8) \Rightarrow (\lambda (H9: (eq T 
49754 (THead (Flat Appl) v1 (THead (Bind Abst) u0 t4)) (THead (Bind b) u 
49755 t2))).(\lambda (H10: (eq T (THead (Bind Abbr) v2 t5) t5)).((let H11 \def 
49756 (eq_ind T (THead (Flat Appl) v1 (THead (Bind Abst) u0 t4)) (\lambda (e: 
49757 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
49758 (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k return 
49759 (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow 
49760 True])])) I (THead (Bind b) u t2) H9) in (False_ind ((eq T (THead (Bind Abbr) 
49761 v2 t5) t5) \to ((pr0 v1 v2) \to ((pr0 t4 t5) \to (ty3 g c2 t5 (THead (Bind b) 
49762 u t3))))) H11)) H10 H7 H8))) | (pr0_upsilon b0 H7 v1 v2 H8 u1 u2 H9 t4 t5 
49763 H10) \Rightarrow (\lambda (H11: (eq T (THead (Flat Appl) v1 (THead (Bind b0) 
49764 u1 t4)) (THead (Bind b) u t2))).(\lambda (H12: (eq T (THead (Bind b0) u2 
49765 (THead (Flat Appl) (lift (S O) O v2) t5)) t5)).((let H13 \def (eq_ind T 
49766 (THead (Flat Appl) v1 (THead (Bind b0) u1 t4)) (\lambda (e: T).(match e 
49767 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
49768 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
49769 K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I 
49770 (THead (Bind b) u t2) H11) in (False_ind ((eq T (THead (Bind b0) u2 (THead 
49771 (Flat Appl) (lift (S O) O v2) t5)) t5) \to ((not (eq B b0 Abst)) \to ((pr0 v1 
49772 v2) \to ((pr0 u1 u2) \to ((pr0 t4 t5) \to (ty3 g c2 t5 (THead (Bind b) u 
49773 t3))))))) H13)) H12 H7 H8 H9 H10))) | (pr0_delta u1 u2 H7 t4 t5 H8 w H9) 
49774 \Rightarrow (\lambda (H10: (eq T (THead (Bind Abbr) u1 t4) (THead (Bind b) u 
49775 t2))).(\lambda (H11: (eq T (THead (Bind Abbr) u2 w) t5)).((let H12 \def 
49776 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
49777 _) \Rightarrow t4 | (TLRef _) \Rightarrow t4 | (THead _ _ t) \Rightarrow t])) 
49778 (THead (Bind Abbr) u1 t4) (THead (Bind b) u t2) H10) in ((let H13 \def 
49779 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
49780 _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t _) \Rightarrow t])) 
49781 (THead (Bind Abbr) u1 t4) (THead (Bind b) u t2) H10) in ((let H14 \def 
49782 (f_equal T B (\lambda (e: T).(match e return (\lambda (_: T).B) with [(TSort 
49783 _) \Rightarrow Abbr | (TLRef _) \Rightarrow Abbr | (THead k _ _) \Rightarrow 
49784 (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) 
49785 \Rightarrow Abbr])])) (THead (Bind Abbr) u1 t4) (THead (Bind b) u t2) H10) in 
49786 (eq_ind B Abbr (\lambda (b: B).((eq T u1 u) \to ((eq T t4 t2) \to ((eq T 
49787 (THead (Bind Abbr) u2 w) t5) \to ((pr0 u1 u2) \to ((pr0 t4 t5) \to ((subst0 O 
49788 u2 t5 w) \to (ty3 g c2 t5 (THead (Bind b) u t3))))))))) (\lambda (H15: (eq T 
49789 u1 u)).(eq_ind T u (\lambda (t: T).((eq T t4 t2) \to ((eq T (THead (Bind 
49790 Abbr) u2 w) t5) \to ((pr0 t u2) \to ((pr0 t4 t5) \to ((subst0 O u2 t5 w) \to 
49791 (ty3 g c2 t5 (THead (Bind Abbr) u t3)))))))) (\lambda (H16: (eq T t4 
49792 t2)).(eq_ind T t2 (\lambda (t: T).((eq T (THead (Bind Abbr) u2 w) t5) \to 
49793 ((pr0 u u2) \to ((pr0 t t5) \to ((subst0 O u2 t5 w) \to (ty3 g c2 t5 (THead 
49794 (Bind Abbr) u t3))))))) (\lambda (H17: (eq T (THead (Bind Abbr) u2 w) 
49795 t5)).(eq_ind T (THead (Bind Abbr) u2 w) (\lambda (t: T).((pr0 u u2) \to ((pr0 
49796 t2 t5) \to ((subst0 O u2 t5 w) \to (ty3 g c2 t (THead (Bind Abbr) u t3)))))) 
49797 (\lambda (H18: (pr0 u u2)).(\lambda (H19: (pr0 t2 t5)).(\lambda (H20: (subst0 
49798 O u2 t5 w)).(let H21 \def (eq_ind_r B b (\lambda (b: B).(\forall (c2: 
49799 C).((wcpr0 (CHead c (Bind b) u) c2) \to (\forall (t2: T).((pr0 t3 t2) \to 
49800 (ty3 g c2 t2 t4)))))) H5 Abbr H14) in (let H22 \def (eq_ind_r B b (\lambda 
49801 (b: B).(ty3 g (CHead c (Bind b) u) t3 t4)) H4 Abbr H14) in (let H23 \def 
49802 (eq_ind_r B b (\lambda (b: B).(\forall (c2: C).((wcpr0 (CHead c (Bind b) u) 
49803 c2) \to (\forall (t4: T).((pr0 t2 t4) \to (ty3 g c2 t4 t3)))))) H3 Abbr H14) 
49804 in (let H24 \def (eq_ind_r B b (\lambda (b: B).(ty3 g (CHead c (Bind b) u) t2 
49805 t3)) H2 Abbr H14) in (ex_ind T (\lambda (t: T).(ty3 g (CHead c2 (Bind Abbr) 
49806 u) t4 t)) (ty3 g c2 (THead (Bind Abbr) u2 w) (THead (Bind Abbr) u t3)) 
49807 (\lambda (x: T).(\lambda (H25: (ty3 g (CHead c2 (Bind Abbr) u) t4 x)).(ex_ind 
49808 T (\lambda (t: T).(ty3 g (CHead c2 (Bind Abbr) u2) t3 t)) (ty3 g c2 (THead 
49809 (Bind Abbr) u2 w) (THead (Bind Abbr) u t3)) (\lambda (x0: T).(\lambda (H26: 
49810 (ty3 g (CHead c2 (Bind Abbr) u2) t3 x0)).(ty3_conv g c2 (THead (Bind Abbr) u 
49811 t3) (THead (Bind Abbr) u t4) (ty3_bind g c2 u t0 (H1 c2 H6 u (pr0_refl u)) 
49812 Abbr t3 t4 (H21 (CHead c2 (Bind Abbr) u) (wcpr0_comp c c2 H6 u u (pr0_refl u) 
49813 (Bind Abbr)) t3 (pr0_refl t3)) x H25) (THead (Bind Abbr) u2 w) (THead (Bind 
49814 Abbr) u2 t3) (ty3_bind g c2 u2 t0 (H1 c2 H6 u2 H18) Abbr w t3 (ty3_subst0 g 
49815 (CHead c2 (Bind Abbr) u2) t5 t3 (H23 (CHead c2 (Bind Abbr) u2) (wcpr0_comp c 
49816 c2 H6 u u2 H18 (Bind Abbr)) t5 H19) c2 u2 O (getl_refl Abbr c2 u2) w H20) x0 
49817 H26) (pc3_pr2_x c2 (THead (Bind Abbr) u2 t3) (THead (Bind Abbr) u t3) 
49818 (pr2_head_1 c2 u u2 (pr2_free c2 u u2 H18) (Bind Abbr) t3))))) (ty3_correct g 
49819 (CHead c2 (Bind Abbr) u2) t5 t3 (H23 (CHead c2 (Bind Abbr) u2) (wcpr0_comp c 
49820 c2 H6 u u2 H18 (Bind Abbr)) t5 H19))))) (ty3_correct g (CHead c2 (Bind Abbr) 
49821 u) t3 t4 (H21 (CHead c2 (Bind Abbr) u) (wcpr0_comp c c2 H6 u u (pr0_refl u) 
49822 (Bind Abbr)) t3 (pr0_refl t3))))))))))) t5 H17)) t4 (sym_eq T t4 t2 H16))) u1 
49823 (sym_eq T u1 u H15))) b H14)) H13)) H12)) H11 H7 H8 H9))) | (pr0_zeta b0 H7 
49824 t4 t5 H8 u0) \Rightarrow (\lambda (H9: (eq T (THead (Bind b0) u0 (lift (S O) 
49825 O t4)) (THead (Bind b) u t2))).(\lambda (H10: (eq T t5 t5)).((let H11 \def 
49826 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
49827 _) \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: 
49828 T \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow 
49829 (TLRef (match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) 
49830 | (THead k u t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) 
49831 t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t4) | (TLRef _) 
49832 \Rightarrow ((let rec lref_map (f: ((nat \to nat))) (d: nat) (t: T) on t: T 
49833 \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow 
49834 (TLRef (match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) 
49835 | (THead k u t0) \Rightarrow (THead k (lref_map f d u) (lref_map f (s k d) 
49836 t0))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t4) | (THead _ _ t) 
49837 \Rightarrow t])) (THead (Bind b0) u0 (lift (S O) O t4)) (THead (Bind b) u t2) 
49838 H9) in ((let H12 \def (f_equal T T (\lambda (e: T).(match e return (\lambda 
49839 (_: T).T) with [(TSort _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | (THead 
49840 _ t _) \Rightarrow t])) (THead (Bind b0) u0 (lift (S O) O t4)) (THead (Bind 
49841 b) u t2) H9) in ((let H13 \def (f_equal T B (\lambda (e: T).(match e return 
49842 (\lambda (_: T).B) with [(TSort _) \Rightarrow b0 | (TLRef _) \Rightarrow b0 
49843 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) 
49844 \Rightarrow b | (Flat _) \Rightarrow b0])])) (THead (Bind b0) u0 (lift (S O) 
49845 O t4)) (THead (Bind b) u t2) H9) in (eq_ind B b (\lambda (b1: B).((eq T u0 u) 
49846 \to ((eq T (lift (S O) O t4) t2) \to ((eq T t5 t5) \to ((not (eq B b1 Abst)) 
49847 \to ((pr0 t4 t5) \to (ty3 g c2 t5 (THead (Bind b) u t3)))))))) (\lambda (H14: 
49848 (eq T u0 u)).(eq_ind T u (\lambda (_: T).((eq T (lift (S O) O t4) t2) \to 
49849 ((eq T t5 t5) \to ((not (eq B b Abst)) \to ((pr0 t4 t5) \to (ty3 g c2 t5 
49850 (THead (Bind b) u t3))))))) (\lambda (H15: (eq T (lift (S O) O t4) 
49851 t2)).(eq_ind T (lift (S O) O t4) (\lambda (_: T).((eq T t5 t5) \to ((not (eq 
49852 B b Abst)) \to ((pr0 t4 t5) \to (ty3 g c2 t5 (THead (Bind b) u t3)))))) 
49853 (\lambda (H16: (eq T t5 t5)).(eq_ind T t5 (\lambda (t: T).((not (eq B b 
49854 Abst)) \to ((pr0 t4 t) \to (ty3 g c2 t5 (THead (Bind b) u t3))))) (\lambda 
49855 (H17: (not (eq B b Abst))).(\lambda (H18: (pr0 t4 t5)).(let H19 \def 
49856 (eq_ind_r T t2 (\lambda (t: T).(\forall (c2: C).((wcpr0 (CHead c (Bind b) u) 
49857 c2) \to (\forall (t2: T).((pr0 t t2) \to (ty3 g c2 t2 t3)))))) H3 (lift (S O) 
49858 O t4) H15) in (let H20 \def (eq_ind_r T t2 (\lambda (t: T).(ty3 g (CHead c 
49859 (Bind b) u) t t3)) H2 (lift (S O) O t4) H15) in (ex_ind T (\lambda (t: 
49860 T).(ty3 g (CHead c2 (Bind b) u) t4 t)) (ty3 g c2 t5 (THead (Bind b) u t3)) 
49861 (\lambda (x: T).(\lambda (H4: (ty3 g (CHead c2 (Bind b) u) t4 x)).(B_ind 
49862 (\lambda (b: B).((not (eq B b Abst)) \to ((ty3 g (CHead c2 (Bind b) u) t3 t4) 
49863 \to ((ty3 g (CHead c2 (Bind b) u) t4 x) \to ((ty3 g (CHead c2 (Bind b) u) 
49864 (lift (S O) O t5) t3) \to (ty3 g c2 t5 (THead (Bind b) u t3))))))) (\lambda 
49865 (H21: (not (eq B Abbr Abst))).(\lambda (H2: (ty3 g (CHead c2 (Bind Abbr) u) 
49866 t3 t4)).(\lambda (H5: (ty3 g (CHead c2 (Bind Abbr) u) t4 x)).(\lambda (H22: 
49867 (ty3 g (CHead c2 (Bind Abbr) u) (lift (S O) O t5) t3)).(let H \def 
49868 (ty3_gen_cabbr g (CHead c2 (Bind Abbr) u) (lift (S O) O t5) t3 H22 c2 u O 
49869 (getl_refl Abbr c2 u) (CHead c2 (Bind Abbr) u) (csubst1_refl O u (CHead c2 
49870 (Bind Abbr) u)) c2 (drop_drop (Bind Abbr) O c2 c2 (drop_refl c2) u)) in 
49871 (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(subst1 O u (lift (S O) O t5) 
49872 (lift (S O) O y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 O u t3 (lift (S 
49873 O) O y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g c2 y1 y2))) (ty3 g c2 t5 
49874 (THead (Bind Abbr) u t3)) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H0: 
49875 (subst1 O u (lift (S O) O t5) (lift (S O) O x0))).(\lambda (H3: (subst1 O u 
49876 t3 (lift (S O) O x1))).(\lambda (H23: (ty3 g c2 x0 x1)).(let H24 \def (eq_ind 
49877 T x0 (\lambda (t: T).(ty3 g c2 t x1)) H23 t5 (lift_inj x0 t5 (S O) O 
49878 (subst1_gen_lift_eq t5 u (lift (S O) O x0) (S O) O O (le_n O) (eq_ind_r nat 
49879 (plus (S O) O) (\lambda (n: nat).(lt O n)) (le_n (plus (S O) O)) (plus O (S 
49880 O)) (plus_comm O (S O))) H0))) in (ty3_conv g c2 (THead (Bind Abbr) u t3) 
49881 (THead (Bind Abbr) u t4) (ty3_bind g c2 u t0 (H1 c2 H6 u (pr0_refl u)) Abbr 
49882 t3 t4 H2 x H5) t5 x1 H24 (pc3_pr3_x c2 x1 (THead (Bind Abbr) u t3) (pr3_t 
49883 (THead (Bind Abbr) u (lift (S O) O x1)) (THead (Bind Abbr) u t3) c2 (pr3_pr2 
49884 c2 (THead (Bind Abbr) u t3) (THead (Bind Abbr) u (lift (S O) O x1)) (pr2_free 
49885 c2 (THead (Bind Abbr) u t3) (THead (Bind Abbr) u (lift (S O) O x1)) 
49886 (pr0_delta1 u u (pr0_refl u) t3 t3 (pr0_refl t3) (lift (S O) O x1) H3))) x1 
49887 (pr3_pr2 c2 (THead (Bind Abbr) u (lift (S O) O x1)) x1 (pr2_free c2 (THead 
49888 (Bind Abbr) u (lift (S O) O x1)) x1 (pr0_zeta Abbr H21 x1 x1 (pr0_refl x1) 
49889 u)))))))))))) H)))))) (\lambda (H21: (not (eq B Abst Abst))).(\lambda (_: 
49890 (ty3 g (CHead c2 (Bind Abst) u) t3 t4)).(\lambda (_: (ty3 g (CHead c2 (Bind 
49891 Abst) u) t4 x)).(\lambda (_: (ty3 g (CHead c2 (Bind Abst) u) (lift (S O) O 
49892 t5) t3)).(let H \def (match (H21 (refl_equal B Abst)) return (\lambda (_: 
49893 False).(ty3 g c2 t5 (THead (Bind Abst) u t3))) with []) in H))))) (\lambda 
49894 (H21: (not (eq B Void Abst))).(\lambda (H2: (ty3 g (CHead c2 (Bind Void) u) 
49895 t3 t4)).(\lambda (H5: (ty3 g (CHead c2 (Bind Void) u) t4 x)).(\lambda (H22: 
49896 (ty3 g (CHead c2 (Bind Void) u) (lift (S O) O t5) t3)).(let H \def 
49897 (ty3_gen_cvoid g (CHead c2 (Bind Void) u) (lift (S O) O t5) t3 H22 c2 u O 
49898 (getl_refl Void c2 u) c2 (drop_drop (Bind Void) O c2 c2 (drop_refl c2) u)) in 
49899 (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T (lift (S O) O t5) (lift 
49900 (S O) O y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t3 (lift (S O) O y2)))) 
49901 (\lambda (y1: T).(\lambda (y2: T).(ty3 g c2 y1 y2))) (ty3 g c2 t5 (THead 
49902 (Bind Void) u t3)) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H0: (eq T 
49903 (lift (S O) O t5) (lift (S O) O x0))).(\lambda (H3: (eq T t3 (lift (S O) O 
49904 x1))).(\lambda (H23: (ty3 g c2 x0 x1)).(let H24 \def (eq_ind T t3 (\lambda 
49905 (t: T).(ty3 g (CHead c2 (Bind Void) u) t t4)) H2 (lift (S O) O x1) H3) in 
49906 (eq_ind_r T (lift (S O) O x1) (\lambda (t: T).(ty3 g c2 t5 (THead (Bind Void) 
49907 u t))) (let H25 \def (eq_ind_r T x0 (\lambda (t: T).(ty3 g c2 t x1)) H23 t5 
49908 (lift_inj t5 x0 (S O) O H0)) in (ty3_conv g c2 (THead (Bind Void) u (lift (S 
49909 O) O x1)) (THead (Bind Void) u t4) (ty3_bind g c2 u t0 (H1 c2 H6 u (pr0_refl 
49910 u)) Void (lift (S O) O x1) t4 H24 x H5) t5 x1 H25 (pc3_pr2_x c2 x1 (THead 
49911 (Bind Void) u (lift (S O) O x1)) (pr2_free c2 (THead (Bind Void) u (lift (S 
49912 O) O x1)) x1 (pr0_zeta Void H21 x1 x1 (pr0_refl x1) u))))) t3 H3))))))) 
49913 H)))))) b H17 (H5 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H6 u u (pr0_refl u) 
49914 (Bind b)) t3 (pr0_refl t3)) H4 (H19 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H6 
49915 u u (pr0_refl u) (Bind b)) (lift (S O) O t5) (pr0_lift t4 t5 H18 (S O) O))))) 
49916 (ty3_correct g (CHead c2 (Bind b) u) t3 t4 (H5 (CHead c2 (Bind b) u) 
49917 (wcpr0_comp c c2 H6 u u (pr0_refl u) (Bind b)) t3 (pr0_refl t3)))))))) t5 
49918 (sym_eq T t5 t5 H16))) t2 H15)) u0 (sym_eq T u0 u H14))) b0 (sym_eq B b0 b 
49919 H13))) H12)) H11)) H10 H7 H8))) | (pr0_epsilon t4 t5 H7 u0) \Rightarrow 
49920 (\lambda (H8: (eq T (THead (Flat Cast) u0 t4) (THead (Bind b) u 
49921 t2))).(\lambda (H9: (eq T t5 t5)).((let H10 \def (eq_ind T (THead (Flat Cast) 
49922 u0 t4) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
49923 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
49924 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | 
49925 (Flat _) \Rightarrow True])])) I (THead (Bind b) u t2) H8) in (False_ind ((eq 
49926 T t5 t5) \to ((pr0 t4 t5) \to (ty3 g c2 t5 (THead (Bind b) u t3)))) H10)) H9 
49927 H7)))]) in (H8 (refl_equal T (THead (Bind b) u t2)) (refl_equal T 
49928 t5)))))))))))))))))))) (\lambda (c: C).(\lambda (w: T).(\lambda (u: 
49929 T).(\lambda (_: (ty3 g c w u)).(\lambda (H1: ((\forall (c2: C).((wcpr0 c c2) 
49930 \to (\forall (t2: T).((pr0 w t2) \to (ty3 g c2 t2 u))))))).(\lambda (v: 
49931 T).(\lambda (t0: T).(\lambda (H2: (ty3 g c v (THead (Bind Abst) u 
49932 t0))).(\lambda (H3: ((\forall (c2: C).((wcpr0 c c2) \to (\forall (t2: 
49933 T).((pr0 v t2) \to (ty3 g c2 t2 (THead (Bind Abst) u t0)))))))).(\lambda (c2: 
49934 C).(\lambda (H4: (wcpr0 c c2)).(\lambda (t2: T).(\lambda (H5: (pr0 (THead 
49935 (Flat Appl) w v) t2)).(let H6 \def (match H5 return (\lambda (t: T).(\lambda 
49936 (t1: T).(\lambda (_: (pr0 t t1)).((eq T t (THead (Flat Appl) w v)) \to ((eq T 
49937 t1 t2) \to (ty3 g c2 t2 (THead (Flat Appl) w (THead (Bind Abst) u t0)))))))) 
49938 with [(pr0_refl t0) \Rightarrow (\lambda (H5: (eq T t0 (THead (Flat Appl) w 
49939 v))).(\lambda (H6: (eq T t0 t2)).(eq_ind T (THead (Flat Appl) w v) (\lambda 
49940 (t: T).((eq T t t2) \to (ty3 g c2 t2 (THead (Flat Appl) w (THead (Bind Abst) 
49941 u t0))))) (\lambda (H7: (eq T (THead (Flat Appl) w v) t2)).(eq_ind T (THead 
49942 (Flat Appl) w v) (\lambda (t: T).(ty3 g c2 t (THead (Flat Appl) w (THead 
49943 (Bind Abst) u t0)))) (ty3_appl g c2 w u (H1 c2 H4 w (pr0_refl w)) v t0 (H3 c2 
49944 H4 v (pr0_refl v))) t2 H7)) t0 (sym_eq T t0 (THead (Flat Appl) w v) H5) H6))) 
49945 | (pr0_comp u1 u2 H5 t1 t0 H6 k) \Rightarrow (\lambda (H7: (eq T (THead k u1 
49946 t1) (THead (Flat Appl) w v))).(\lambda (H8: (eq T (THead k u2 t0) t2)).((let 
49947 H9 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
49948 [(TSort _) \Rightarrow t1 | (TLRef _) \Rightarrow t1 | (THead _ _ t) 
49949 \Rightarrow t])) (THead k u1 t1) (THead (Flat Appl) w v) H7) in ((let H10 
49950 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with 
49951 [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t _) 
49952 \Rightarrow t])) (THead k u1 t1) (THead (Flat Appl) w v) H7) in ((let H11 
49953 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) with 
49954 [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
49955 \Rightarrow k])) (THead k u1 t1) (THead (Flat Appl) w v) H7) in (eq_ind K 
49956 (Flat Appl) (\lambda (k0: K).((eq T u1 w) \to ((eq T t1 v) \to ((eq T (THead 
49957 k0 u2 t0) t2) \to ((pr0 u1 u2) \to ((pr0 t1 t0) \to (ty3 g c2 t2 (THead (Flat 
49958 Appl) w (THead (Bind Abst) u t0))))))))) (\lambda (H12: (eq T u1 w)).(eq_ind 
49959 T w (\lambda (t: T).((eq T t1 v) \to ((eq T (THead (Flat Appl) u2 t0) t2) \to 
49960 ((pr0 t u2) \to ((pr0 t1 t0) \to (ty3 g c2 t2 (THead (Flat Appl) w (THead 
49961 (Bind Abst) u t0)))))))) (\lambda (H13: (eq T t1 v)).(eq_ind T v (\lambda (t: 
49962 T).((eq T (THead (Flat Appl) u2 t0) t2) \to ((pr0 w u2) \to ((pr0 t t0) \to 
49963 (ty3 g c2 t2 (THead (Flat Appl) w (THead (Bind Abst) u t0))))))) (\lambda 
49964 (H14: (eq T (THead (Flat Appl) u2 t0) t2)).(eq_ind T (THead (Flat Appl) u2 
49965 t0) (\lambda (t: T).((pr0 w u2) \to ((pr0 v t0) \to (ty3 g c2 t (THead (Flat 
49966 Appl) w (THead (Bind Abst) u t0)))))) (\lambda (H15: (pr0 w u2)).(\lambda 
49967 (H16: (pr0 v t0)).(ex_ind T (\lambda (t: T).(ty3 g c2 (THead (Bind Abst) u 
49968 t0) t)) (ty3 g c2 (THead (Flat Appl) u2 t0) (THead (Flat Appl) w (THead (Bind 
49969 Abst) u t0))) (\lambda (x: T).(\lambda (H17: (ty3 g c2 (THead (Bind Abst) u 
49970 t0) x)).(ex4_3_ind T T T (\lambda (t2: T).(\lambda (_: T).(\lambda (_: 
49971 T).(pc3 c2 (THead (Bind Abst) u t2) x)))) (\lambda (_: T).(\lambda (t: 
49972 T).(\lambda (_: T).(ty3 g c2 u t)))) (\lambda (t2: T).(\lambda (_: 
49973 T).(\lambda (_: T).(ty3 g (CHead c2 (Bind Abst) u) t0 t2)))) (\lambda (t2: 
49974 T).(\lambda (_: T).(\lambda (t3: T).(ty3 g (CHead c2 (Bind Abst) u) t2 t3)))) 
49975 (ty3 g c2 (THead (Flat Appl) u2 t0) (THead (Flat Appl) w (THead (Bind Abst) u 
49976 t0))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 c2 
49977 (THead (Bind Abst) u x0) x)).(\lambda (H19: (ty3 g c2 u x1)).(\lambda (H20: 
49978 (ty3 g (CHead c2 (Bind Abst) u) t0 x0)).(\lambda (H21: (ty3 g (CHead c2 (Bind 
49979 Abst) u) x0 x2)).(ty3_conv g c2 (THead (Flat Appl) w (THead (Bind Abst) u 
49980 t0)) (THead (Flat Appl) w (THead (Bind Abst) u x0)) (ty3_appl g c2 w u (H1 c2 
49981 H4 w (pr0_refl w)) (THead (Bind Abst) u t0) x0 (ty3_bind g c2 u x1 H19 Abst 
49982 t0 x0 H20 x2 H21)) (THead (Flat Appl) u2 t0) (THead (Flat Appl) u2 (THead 
49983 (Bind Abst) u t0)) (ty3_appl g c2 u2 u (H1 c2 H4 u2 H15) t0 t0 (H3 c2 H4 t0 
49984 H16)) (pc3_pr2_x c2 (THead (Flat Appl) u2 (THead (Bind Abst) u t0)) (THead 
49985 (Flat Appl) w (THead (Bind Abst) u t0)) (pr2_head_1 c2 w u2 (pr2_free c2 w u2 
49986 H15) (Flat Appl) (THead (Bind Abst) u t0))))))))))) (ty3_gen_bind g Abst c2 u 
49987 t0 x H17)))) (ty3_correct g c2 v (THead (Bind Abst) u t0) (H3 c2 H4 v 
49988 (pr0_refl v)))))) t2 H14)) t1 (sym_eq T t1 v H13))) u1 (sym_eq T u1 w H12))) 
49989 k (sym_eq K k (Flat Appl) H11))) H10)) H9)) H8 H5 H6))) | (pr0_beta u0 v1 v2 
49990 H5 t1 t0 H6) \Rightarrow (\lambda (H7: (eq T (THead (Flat Appl) v1 (THead 
49991 (Bind Abst) u0 t1)) (THead (Flat Appl) w v))).(\lambda (H8: (eq T (THead 
49992 (Bind Abbr) v2 t0) t2)).((let H9 \def (f_equal T T (\lambda (e: T).(match e 
49993 return (\lambda (_: T).T) with [(TSort _) \Rightarrow (THead (Bind Abst) u0 
49994 t1) | (TLRef _) \Rightarrow (THead (Bind Abst) u0 t1) | (THead _ _ t) 
49995 \Rightarrow t])) (THead (Flat Appl) v1 (THead (Bind Abst) u0 t1)) (THead 
49996 (Flat Appl) w v) H7) in ((let H10 \def (f_equal T T (\lambda (e: T).(match e 
49997 return (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef _) 
49998 \Rightarrow v1 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) v1 (THead 
49999 (Bind Abst) u0 t1)) (THead (Flat Appl) w v) H7) in (eq_ind T w (\lambda (t: 
50000 T).((eq T (THead (Bind Abst) u0 t1) v) \to ((eq T (THead (Bind Abbr) v2 t0) 
50001 t2) \to ((pr0 t v2) \to ((pr0 t1 t0) \to (ty3 g c2 t2 (THead (Flat Appl) w 
50002 (THead (Bind Abst) u t0)))))))) (\lambda (H11: (eq T (THead (Bind Abst) u0 
50003 t1) v)).(eq_ind T (THead (Bind Abst) u0 t1) (\lambda (_: T).((eq T (THead 
50004 (Bind Abbr) v2 t0) t2) \to ((pr0 w v2) \to ((pr0 t1 t0) \to (ty3 g c2 t2 
50005 (THead (Flat Appl) w (THead (Bind Abst) u t0))))))) (\lambda (H12: (eq T 
50006 (THead (Bind Abbr) v2 t0) t2)).(eq_ind T (THead (Bind Abbr) v2 t0) (\lambda 
50007 (t: T).((pr0 w v2) \to ((pr0 t1 t0) \to (ty3 g c2 t (THead (Flat Appl) w 
50008 (THead (Bind Abst) u t0)))))) (\lambda (H13: (pr0 w v2)).(\lambda (H14: (pr0 
50009 t1 t0)).(let H15 \def (eq_ind_r T v (\lambda (t: T).(\forall (c2: C).((wcpr0 
50010 c c2) \to (\forall (t2: T).((pr0 t t2) \to (ty3 g c2 t2 (THead (Bind Abst) u 
50011 t0))))))) H3 (THead (Bind Abst) u0 t1) H11) in (let H16 \def (eq_ind_r T v 
50012 (\lambda (t: T).(ty3 g c t (THead (Bind Abst) u t0))) H2 (THead (Bind Abst) 
50013 u0 t1) H11) in (ex_ind T (\lambda (t: T).(ty3 g c2 (THead (Bind Abst) u t0) 
50014 t)) (ty3 g c2 (THead (Bind Abbr) v2 t0) (THead (Flat Appl) w (THead (Bind 
50015 Abst) u t0))) (\lambda (x: T).(\lambda (H2: (ty3 g c2 (THead (Bind Abst) u 
50016 t0) x)).(ex4_3_ind T T T (\lambda (t2: T).(\lambda (_: T).(\lambda (_: 
50017 T).(pc3 c2 (THead (Bind Abst) u t2) x)))) (\lambda (_: T).(\lambda (t: 
50018 T).(\lambda (_: T).(ty3 g c2 u t)))) (\lambda (t2: T).(\lambda (_: 
50019 T).(\lambda (_: T).(ty3 g (CHead c2 (Bind Abst) u) t0 t2)))) (\lambda (t2: 
50020 T).(\lambda (_: T).(\lambda (t3: T).(ty3 g (CHead c2 (Bind Abst) u) t2 t3)))) 
50021 (ty3 g c2 (THead (Bind Abbr) v2 t0) (THead (Flat Appl) w (THead (Bind Abst) u 
50022 t0))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 c2 
50023 (THead (Bind Abst) u x0) x)).(\lambda (H17: (ty3 g c2 u x1)).(\lambda (H18: 
50024 (ty3 g (CHead c2 (Bind Abst) u) t0 x0)).(\lambda (H19: (ty3 g (CHead c2 (Bind 
50025 Abst) u) x0 x2)).(ex4_3_ind T T T (\lambda (t2: T).(\lambda (_: T).(\lambda 
50026 (_: T).(pc3 c2 (THead (Bind Abst) u0 t2) (THead (Bind Abst) u t0))))) 
50027 (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g c2 u0 t)))) (\lambda 
50028 (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c2 (Bind Abst) u0) t0 
50029 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t3: T).(ty3 g (CHead c2 
50030 (Bind Abst) u0) t2 t3)))) (ty3 g c2 (THead (Bind Abbr) v2 t0) (THead (Flat 
50031 Appl) w (THead (Bind Abst) u t0))) (\lambda (x3: T).(\lambda (x4: T).(\lambda 
50032 (x5: T).(\lambda (H0: (pc3 c2 (THead (Bind Abst) u0 x3) (THead (Bind Abst) u 
50033 t0))).(\lambda (H20: (ty3 g c2 u0 x4)).(\lambda (H21: (ty3 g (CHead c2 (Bind 
50034 Abst) u0) t0 x3)).(\lambda (H22: (ty3 g (CHead c2 (Bind Abst) u0) x3 
50035 x5)).(and_ind (pc3 c2 u0 u) (\forall (b: B).(\forall (u: T).(pc3 (CHead c2 
50036 (Bind b) u) x3 t0))) (ty3 g c2 (THead (Bind Abbr) v2 t0) (THead (Flat Appl) w 
50037 (THead (Bind Abst) u t0))) (\lambda (H23: (pc3 c2 u0 u)).(\lambda (H24: 
50038 ((\forall (b: B).(\forall (u: T).(pc3 (CHead c2 (Bind b) u) x3 
50039 t0))))).(ty3_conv g c2 (THead (Flat Appl) w (THead (Bind Abst) u t0)) (THead 
50040 (Flat Appl) w (THead (Bind Abst) u x0)) (ty3_appl g c2 w u (H1 c2 H4 w 
50041 (pr0_refl w)) (THead (Bind Abst) u t0) x0 (ty3_bind g c2 u x1 H17 Abst t0 x0 
50042 H18 x2 H19)) (THead (Bind Abbr) v2 t0) (THead (Bind Abbr) v2 x3) (ty3_bind g 
50043 c2 v2 u (H1 c2 H4 v2 H13) Abbr t0 x3 (csub3_ty3_ld g c2 v2 u0 (ty3_conv g c2 
50044 u0 x4 H20 v2 u (H1 c2 H4 v2 H13) (pc3_s c2 u u0 H23)) t0 x3 H21) x5 
50045 (csub3_ty3_ld g c2 v2 u0 (ty3_conv g c2 u0 x4 H20 v2 u (H1 c2 H4 v2 H13) 
50046 (pc3_s c2 u u0 H23)) x3 x5 H22)) (pc3_t (THead (Bind Abbr) v2 t0) c2 (THead 
50047 (Bind Abbr) v2 x3) (pc3_head_2 c2 v2 x3 t0 (Bind Abbr) (H24 Abbr v2)) (THead 
50048 (Flat Appl) w (THead (Bind Abst) u t0)) (pc3_pr2_x c2 (THead (Bind Abbr) v2 
50049 t0) (THead (Flat Appl) w (THead (Bind Abst) u t0)) (pr2_free c2 (THead (Flat 
50050 Appl) w (THead (Bind Abst) u t0)) (THead (Bind Abbr) v2 t0) (pr0_beta u w v2 
50051 H13 t0 t0 (pr0_refl t0)))))))) (pc3_gen_abst c2 u0 u x3 t0 H0))))))))) 
50052 (ty3_gen_bind g Abst c2 u0 t0 (THead (Bind Abst) u t0) (H15 c2 H4 (THead 
50053 (Bind Abst) u0 t0) (pr0_comp u0 u0 (pr0_refl u0) t1 t0 H14 (Bind 
50054 Abst)))))))))))) (ty3_gen_bind g Abst c2 u t0 x H2)))) (ty3_correct g c2 
50055 (THead (Bind Abst) u0 t1) (THead (Bind Abst) u t0) (H15 c2 H4 (THead (Bind 
50056 Abst) u0 t1) (pr0_refl (THead (Bind Abst) u0 t1))))))))) t2 H12)) v H11)) v1 
50057 (sym_eq T v1 w H10))) H9)) H8 H5 H6))) | (pr0_upsilon b H5 v1 v2 H6 u1 u2 H7 
50058 t1 t0 H8) \Rightarrow (\lambda (H9: (eq T (THead (Flat Appl) v1 (THead (Bind 
50059 b) u1 t1)) (THead (Flat Appl) w v))).(\lambda (H10: (eq T (THead (Bind b) u2 
50060 (THead (Flat Appl) (lift (S O) O v2) t0)) t2)).((let H11 \def (f_equal T T 
50061 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
50062 \Rightarrow (THead (Bind b) u1 t1) | (TLRef _) \Rightarrow (THead (Bind b) u1 
50063 t1) | (THead _ _ t) \Rightarrow t])) (THead (Flat Appl) v1 (THead (Bind b) u1 
50064 t1)) (THead (Flat Appl) w v) H9) in ((let H12 \def (f_equal T T (\lambda (e: 
50065 T).(match e return (\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef 
50066 _) \Rightarrow v1 | (THead _ t _) \Rightarrow t])) (THead (Flat Appl) v1 
50067 (THead (Bind b) u1 t1)) (THead (Flat Appl) w v) H9) in (eq_ind T w (\lambda 
50068 (t: T).((eq T (THead (Bind b) u1 t1) v) \to ((eq T (THead (Bind b) u2 (THead 
50069 (Flat Appl) (lift (S O) O v2) t0)) t2) \to ((not (eq B b Abst)) \to ((pr0 t 
50070 v2) \to ((pr0 u1 u2) \to ((pr0 t1 t0) \to (ty3 g c2 t2 (THead (Flat Appl) w 
50071 (THead (Bind Abst) u t0)))))))))) (\lambda (H13: (eq T (THead (Bind b) u1 t1) 
50072 v)).(eq_ind T (THead (Bind b) u1 t1) (\lambda (_: T).((eq T (THead (Bind b) 
50073 u2 (THead (Flat Appl) (lift (S O) O v2) t0)) t2) \to ((not (eq B b Abst)) \to 
50074 ((pr0 w v2) \to ((pr0 u1 u2) \to ((pr0 t1 t0) \to (ty3 g c2 t2 (THead (Flat 
50075 Appl) w (THead (Bind Abst) u t0))))))))) (\lambda (H14: (eq T (THead (Bind b) 
50076 u2 (THead (Flat Appl) (lift (S O) O v2) t0)) t2)).(eq_ind T (THead (Bind b) 
50077 u2 (THead (Flat Appl) (lift (S O) O v2) t0)) (\lambda (t: T).((not (eq B b 
50078 Abst)) \to ((pr0 w v2) \to ((pr0 u1 u2) \to ((pr0 t1 t0) \to (ty3 g c2 t 
50079 (THead (Flat Appl) w (THead (Bind Abst) u t0)))))))) (\lambda (H15: (not (eq 
50080 B b Abst))).(\lambda (H16: (pr0 w v2)).(\lambda (H17: (pr0 u1 u2)).(\lambda 
50081 (H18: (pr0 t1 t0)).(let H19 \def (eq_ind_r T v (\lambda (t: T).(\forall (c2: 
50082 C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 t t2) \to (ty3 g c2 t2 (THead 
50083 (Bind Abst) u t0))))))) H3 (THead (Bind b) u1 t1) H13) in (let H20 \def 
50084 (eq_ind_r T v (\lambda (t: T).(ty3 g c t (THead (Bind Abst) u t0))) H2 (THead 
50085 (Bind b) u1 t1) H13) in (ex_ind T (\lambda (t: T).(ty3 g c2 (THead (Bind 
50086 Abst) u t0) t)) (ty3 g c2 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O 
50087 v2) t0)) (THead (Flat Appl) w (THead (Bind Abst) u t0))) (\lambda (x: 
50088 T).(\lambda (H2: (ty3 g c2 (THead (Bind Abst) u t0) x)).(let H3 \def H2 in 
50089 (ex4_3_ind T T T (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 c2 
50090 (THead (Bind Abst) u t2) x)))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: 
50091 T).(ty3 g c2 u t)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g 
50092 (CHead c2 (Bind Abst) u) t0 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda 
50093 (t3: T).(ty3 g (CHead c2 (Bind Abst) u) t2 t3)))) (ty3 g c2 (THead (Bind b) 
50094 u2 (THead (Flat Appl) (lift (S O) O v2) t0)) (THead (Flat Appl) w (THead 
50095 (Bind Abst) u t0))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (x2: 
50096 T).(\lambda (_: (pc3 c2 (THead (Bind Abst) u x0) x)).(\lambda (H22: (ty3 g c2 
50097 u x1)).(\lambda (H23: (ty3 g (CHead c2 (Bind Abst) u) t0 x0)).(\lambda (H24: 
50098 (ty3 g (CHead c2 (Bind Abst) u) x0 x2)).(ex4_3_ind T T T (\lambda (t2: 
50099 T).(\lambda (_: T).(\lambda (_: T).(pc3 c2 (THead (Bind b) u2 t2) (THead 
50100 (Bind Abst) u t0))))) (\lambda (_: T).(\lambda (t: T).(\lambda (_: T).(ty3 g 
50101 c2 u2 t)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c2 
50102 (Bind b) u2) t0 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t3: T).(ty3 
50103 g (CHead c2 (Bind b) u2) t2 t3)))) (ty3 g c2 (THead (Bind b) u2 (THead (Flat 
50104 Appl) (lift (S O) O v2) t0)) (THead (Flat Appl) w (THead (Bind Abst) u t0))) 
50105 (\lambda (x3: T).(\lambda (x4: T).(\lambda (x5: T).(\lambda (H0: (pc3 c2 
50106 (THead (Bind b) u2 x3) (THead (Bind Abst) u t0))).(\lambda (H25: (ty3 g c2 u2 
50107 x4)).(\lambda (H26: (ty3 g (CHead c2 (Bind b) u2) t0 x3)).(\lambda (_: (ty3 g 
50108 (CHead c2 (Bind b) u2) x3 x5)).(let H28 \def (eq_ind T (lift (S O) O (THead 
50109 (Bind Abst) u t0)) (\lambda (t: T).(pc3 (CHead c2 (Bind b) u2) x3 t)) 
50110 (pc3_gen_not_abst b H15 c2 x3 t0 u2 u H0) (THead (Bind Abst) (lift (S O) O u) 
50111 (lift (S O) (S O) t0)) (lift_bind Abst u t0 (S O) O)) in (let H29 \def 
50112 (eq_ind T (lift (S O) O (THead (Bind Abst) u t0)) (\lambda (t: T).(ty3 g 
50113 (CHead c2 (Bind b) u2) t (lift (S O) O x))) (ty3_lift g c2 (THead (Bind Abst) 
50114 u t0) x H2 (CHead c2 (Bind b) u2) O (S O) (drop_drop (Bind b) O c2 c2 
50115 (drop_refl c2) u2)) (THead (Bind Abst) (lift (S O) O u) (lift (S O) (S O) 
50116 t0)) (lift_bind Abst u t0 (S O) O)) in (ex4_3_ind T T T (\lambda (t2: 
50117 T).(\lambda (_: T).(\lambda (_: T).(pc3 (CHead c2 (Bind b) u2) (THead (Bind 
50118 Abst) (lift (S O) O u) t2) (lift (S O) O x))))) (\lambda (_: T).(\lambda (t: 
50119 T).(\lambda (_: T).(ty3 g (CHead c2 (Bind b) u2) (lift (S O) O u) t)))) 
50120 (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead (CHead c2 
50121 (Bind b) u2) (Bind Abst) (lift (S O) O u)) (lift (S O) (S O) t0) t2)))) 
50122 (\lambda (t2: T).(\lambda (_: T).(\lambda (t3: T).(ty3 g (CHead (CHead c2 
50123 (Bind b) u2) (Bind Abst) (lift (S O) O u)) t2 t3)))) (ty3 g c2 (THead (Bind 
50124 b) u2 (THead (Flat Appl) (lift (S O) O v2) t0)) (THead (Flat Appl) w (THead 
50125 (Bind Abst) u t0))) (\lambda (x6: T).(\lambda (x7: T).(\lambda (x8: 
50126 T).(\lambda (_: (pc3 (CHead c2 (Bind b) u2) (THead (Bind Abst) (lift (S O) O 
50127 u) x6) (lift (S O) O x))).(\lambda (H31: (ty3 g (CHead c2 (Bind b) u2) (lift 
50128 (S O) O u) x7)).(\lambda (H32: (ty3 g (CHead (CHead c2 (Bind b) u2) (Bind 
50129 Abst) (lift (S O) O u)) (lift (S O) (S O) t0) x6)).(\lambda (H33: (ty3 g 
50130 (CHead (CHead c2 (Bind b) u2) (Bind Abst) (lift (S O) O u)) x6 x8)).(ty3_conv 
50131 g c2 (THead (Flat Appl) w (THead (Bind Abst) u t0)) (THead (Flat Appl) w 
50132 (THead (Bind Abst) u x0)) (ty3_appl g c2 w u (H1 c2 H4 w (pr0_refl w)) (THead 
50133 (Bind Abst) u t0) x0 (ty3_bind g c2 u x1 H22 Abst t0 x0 H23 x2 H24)) (THead 
50134 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t0)) (THead (Bind b) u2 
50135 (THead (Flat Appl) (lift (S O) O v2) (THead (Bind Abst) (lift (S O) O u) 
50136 (lift (S O) (S O) t0)))) (ty3_bind g c2 u2 x4 H25 b (THead (Flat Appl) (lift 
50137 (S O) O v2) t0) (THead (Flat Appl) (lift (S O) O v2) (THead (Bind Abst) (lift 
50138 (S O) O u) (lift (S O) (S O) t0))) (ty3_appl g (CHead c2 (Bind b) u2) (lift 
50139 (S O) O v2) (lift (S O) O u) (ty3_lift g c2 v2 u (H1 c2 H4 v2 H16) (CHead c2 
50140 (Bind b) u2) O (S O) (drop_drop (Bind b) O c2 c2 (drop_refl c2) u2)) t0 (lift 
50141 (S O) (S O) t0) (ty3_conv g (CHead c2 (Bind b) u2) (THead (Bind Abst) (lift 
50142 (S O) O u) (lift (S O) (S O) t0)) (THead (Bind Abst) (lift (S O) O u) x6) 
50143 (ty3_bind g (CHead c2 (Bind b) u2) (lift (S O) O u) x7 H31 Abst (lift (S O) 
50144 (S O) t0) x6 H32 x8 H33) t0 x3 H26 H28)) (THead (Flat Appl) (lift (S O) O v2) 
50145 (THead (Bind Abst) (lift (S O) O u) x6)) (ty3_appl g (CHead c2 (Bind b) u2) 
50146 (lift (S O) O v2) (lift (S O) O u) (ty3_lift g c2 v2 u (H1 c2 H4 v2 H16) 
50147 (CHead c2 (Bind b) u2) O (S O) (drop_drop (Bind b) O c2 c2 (drop_refl c2) 
50148 u2)) (THead (Bind Abst) (lift (S O) O u) (lift (S O) (S O) t0)) x6 (ty3_bind 
50149 g (CHead c2 (Bind b) u2) (lift (S O) O u) x7 H31 Abst (lift (S O) (S O) t0) 
50150 x6 H32 x8 H33))) (eq_ind T (lift (S O) O (THead (Bind Abst) u t0)) (\lambda 
50151 (t: T).(pc3 c2 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t)) 
50152 (THead (Flat Appl) w (THead (Bind Abst) u t0)))) (pc3_pc1 (THead (Bind b) u2 
50153 (THead (Flat Appl) (lift (S O) O v2) (lift (S O) O (THead (Bind Abst) u 
50154 t0)))) (THead (Flat Appl) w (THead (Bind Abst) u t0)) (pc1_pr0_u2 (THead 
50155 (Flat Appl) v2 (THead (Bind b) u2 (lift (S O) O (THead (Bind Abst) u t0)))) 
50156 (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) (lift (S O) O (THead 
50157 (Bind Abst) u t0)))) (pr0_upsilon b H15 v2 v2 (pr0_refl v2) u2 u2 (pr0_refl 
50158 u2) (lift (S O) O (THead (Bind Abst) u t0)) (lift (S O) O (THead (Bind Abst) 
50159 u t0)) (pr0_refl (lift (S O) O (THead (Bind Abst) u t0)))) (THead (Flat Appl) 
50160 w (THead (Bind Abst) u t0)) (pc1_s (THead (Flat Appl) v2 (THead (Bind b) u2 
50161 (lift (S O) O (THead (Bind Abst) u t0)))) (THead (Flat Appl) w (THead (Bind 
50162 Abst) u t0)) (pc1_head w v2 (pc1_pr0_r w v2 H16) (THead (Bind Abst) u t0) 
50163 (THead (Bind b) u2 (lift (S O) O (THead (Bind Abst) u t0))) (pc1_pr0_x (THead 
50164 (Bind Abst) u t0) (THead (Bind b) u2 (lift (S O) O (THead (Bind Abst) u t0))) 
50165 (pr0_zeta b H15 (THead (Bind Abst) u t0) (THead (Bind Abst) u t0) (pr0_refl 
50166 (THead (Bind Abst) u t0)) u2)) (Flat Appl)))) c2) (THead (Bind Abst) (lift (S 
50167 O) O u) (lift (S O) (S O) t0)) (lift_bind Abst u t0 (S O) O)))))))))) 
50168 (ty3_gen_bind g Abst (CHead c2 (Bind b) u2) (lift (S O) O u) (lift (S O) (S 
50169 O) t0) (lift (S O) O x) H29))))))))))) (ty3_gen_bind g b c2 u2 t0 (THead 
50170 (Bind Abst) u t0) (H19 c2 H4 (THead (Bind b) u2 t0) (pr0_comp u1 u2 H17 t1 t0 
50171 H18 (Bind b)))))))))))) (ty3_gen_bind g Abst c2 u t0 x H3))))) (ty3_correct g 
50172 c2 (THead (Bind b) u2 t0) (THead (Bind Abst) u t0) (H19 c2 H4 (THead (Bind b) 
50173 u2 t0) (pr0_comp u1 u2 H17 t1 t0 H18 (Bind b))))))))))) t2 H14)) v H13)) v1 
50174 (sym_eq T v1 w H12))) H11)) H10 H5 H6 H7 H8))) | (pr0_delta u1 u2 H5 t1 t0 H6 
50175 w0 H7) \Rightarrow (\lambda (H8: (eq T (THead (Bind Abbr) u1 t1) (THead (Flat 
50176 Appl) w v))).(\lambda (H9: (eq T (THead (Bind Abbr) u2 w0) t2)).((let H10 
50177 \def (eq_ind T (THead (Bind Abbr) u1 t1) (\lambda (e: T).(match e return 
50178 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
50179 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
50180 K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I 
50181 (THead (Flat Appl) w v) H8) in (False_ind ((eq T (THead (Bind Abbr) u2 w0) 
50182 t2) \to ((pr0 u1 u2) \to ((pr0 t1 t0) \to ((subst0 O u2 t0 w0) \to (ty3 g c2 
50183 t2 (THead (Flat Appl) w (THead (Bind Abst) u t0))))))) H10)) H9 H5 H6 H7))) | 
50184 (pr0_zeta b H5 t1 t0 H6 u0) \Rightarrow (\lambda (H7: (eq T (THead (Bind b) 
50185 u0 (lift (S O) O t1)) (THead (Flat Appl) w v))).(\lambda (H8: (eq T t0 
50186 t2)).((let H9 \def (eq_ind T (THead (Bind b) u0 (lift (S O) O t1)) (\lambda 
50187 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
50188 False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k 
50189 return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) 
50190 \Rightarrow False])])) I (THead (Flat Appl) w v) H7) in (False_ind ((eq T t0 
50191 t2) \to ((not (eq B b Abst)) \to ((pr0 t1 t0) \to (ty3 g c2 t2 (THead (Flat 
50192 Appl) w (THead (Bind Abst) u t0)))))) H9)) H8 H5 H6))) | (pr0_epsilon t1 t0 
50193 H5 u0) \Rightarrow (\lambda (H6: (eq T (THead (Flat Cast) u0 t1) (THead (Flat 
50194 Appl) w v))).(\lambda (H7: (eq T t0 t2)).((let H8 \def (eq_ind T (THead (Flat 
50195 Cast) u0 t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
50196 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
50197 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
50198 False | (Flat f) \Rightarrow (match f return (\lambda (_: F).Prop) with [Appl 
50199 \Rightarrow False | Cast \Rightarrow True])])])) I (THead (Flat Appl) w v) 
50200 H6) in (False_ind ((eq T t0 t2) \to ((pr0 t1 t0) \to (ty3 g c2 t2 (THead 
50201 (Flat Appl) w (THead (Bind Abst) u t0))))) H8)) H7 H5)))]) in (H6 (refl_equal 
50202 T (THead (Flat Appl) w v)) (refl_equal T t2)))))))))))))))) (\lambda (c: 
50203 C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (ty3 g c t2 t3)).(\lambda 
50204 (H1: ((\forall (c2: C).((wcpr0 c c2) \to (\forall (t4: T).((pr0 t2 t4) \to 
50205 (ty3 g c2 t4 t3))))))).(\lambda (t0: T).(\lambda (_: (ty3 g c t3 
50206 t0)).(\lambda (H3: ((\forall (c2: C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 
50207 t3 t2) \to (ty3 g c2 t2 t0))))))).(\lambda (c2: C).(\lambda (H4: (wcpr0 c 
50208 c2)).(\lambda (t4: T).(\lambda (H5: (pr0 (THead (Flat Cast) t3 t2) t4)).(let 
50209 H6 \def (match H5 return (\lambda (t: T).(\lambda (t0: T).(\lambda (_: (pr0 t 
50210 t0)).((eq T t (THead (Flat Cast) t3 t2)) \to ((eq T t0 t4) \to (ty3 g c2 t4 
50211 t3)))))) with [(pr0_refl t) \Rightarrow (\lambda (H5: (eq T t (THead (Flat 
50212 Cast) t3 t2))).(\lambda (H6: (eq T t t4)).(eq_ind T (THead (Flat Cast) t3 t2) 
50213 (\lambda (t0: T).((eq T t0 t4) \to (ty3 g c2 t4 t3))) (\lambda (H7: (eq T 
50214 (THead (Flat Cast) t3 t2) t4)).(eq_ind T (THead (Flat Cast) t3 t2) (\lambda 
50215 (t0: T).(ty3 g c2 t0 t3)) (ty3_cast g c2 t2 t3 (H1 c2 H4 t2 (pr0_refl t2)) t0 
50216 (H3 c2 H4 t3 (pr0_refl t3))) t4 H7)) t (sym_eq T t (THead (Flat Cast) t3 t2) 
50217 H5) H6))) | (pr0_comp u1 u2 H5 t4 t5 H6 k) \Rightarrow (\lambda (H7: (eq T 
50218 (THead k u1 t4) (THead (Flat Cast) t3 t2))).(\lambda (H8: (eq T (THead k u2 
50219 t5) t4)).((let H9 \def (f_equal T T (\lambda (e: T).(match e return (\lambda 
50220 (_: T).T) with [(TSort _) \Rightarrow t4 | (TLRef _) \Rightarrow t4 | (THead 
50221 _ _ t) \Rightarrow t])) (THead k u1 t4) (THead (Flat Cast) t3 t2) H7) in 
50222 ((let H10 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
50223 T).T) with [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t 
50224 _) \Rightarrow t])) (THead k u1 t4) (THead (Flat Cast) t3 t2) H7) in ((let 
50225 H11 \def (f_equal T K (\lambda (e: T).(match e return (\lambda (_: T).K) with 
50226 [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) 
50227 \Rightarrow k])) (THead k u1 t4) (THead (Flat Cast) t3 t2) H7) in (eq_ind K 
50228 (Flat Cast) (\lambda (k0: K).((eq T u1 t3) \to ((eq T t4 t2) \to ((eq T 
50229 (THead k0 u2 t5) t4) \to ((pr0 u1 u2) \to ((pr0 t4 t5) \to (ty3 g c2 t4 
50230 t3))))))) (\lambda (H12: (eq T u1 t3)).(eq_ind T t3 (\lambda (t: T).((eq T t4 
50231 t2) \to ((eq T (THead (Flat Cast) u2 t5) t4) \to ((pr0 t u2) \to ((pr0 t4 t5) 
50232 \to (ty3 g c2 t4 t3)))))) (\lambda (H13: (eq T t4 t2)).(eq_ind T t2 (\lambda 
50233 (t: T).((eq T (THead (Flat Cast) u2 t5) t4) \to ((pr0 t3 u2) \to ((pr0 t t5) 
50234 \to (ty3 g c2 t4 t3))))) (\lambda (H14: (eq T (THead (Flat Cast) u2 t5) 
50235 t4)).(eq_ind T (THead (Flat Cast) u2 t5) (\lambda (t: T).((pr0 t3 u2) \to 
50236 ((pr0 t2 t5) \to (ty3 g c2 t t3)))) (\lambda (H15: (pr0 t3 u2)).(\lambda 
50237 (H16: (pr0 t2 t5)).(ty3_conv g c2 t3 t0 (H3 c2 H4 t3 (pr0_refl t3)) (THead 
50238 (Flat Cast) u2 t5) u2 (ty3_cast g c2 t5 u2 (ty3_conv g c2 u2 t0 (H3 c2 H4 u2 
50239 H15) t5 t3 (H1 c2 H4 t5 H16) (pc3_pr2_r c2 t3 u2 (pr2_free c2 t3 u2 H15))) t0 
50240 (H3 c2 H4 u2 H15)) (pc3_pr2_x c2 u2 t3 (pr2_free c2 t3 u2 H15))))) t4 H14)) 
50241 t4 (sym_eq T t4 t2 H13))) u1 (sym_eq T u1 t3 H12))) k (sym_eq K k (Flat Cast) 
50242 H11))) H10)) H9)) H8 H5 H6))) | (pr0_beta u v1 v2 H5 t4 t5 H6) \Rightarrow 
50243 (\lambda (H7: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u t4)) (THead 
50244 (Flat Cast) t3 t2))).(\lambda (H8: (eq T (THead (Bind Abbr) v2 t5) t4)).((let 
50245 H9 \def (eq_ind T (THead (Flat Appl) v1 (THead (Bind Abst) u t4)) (\lambda 
50246 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
50247 False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k 
50248 return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat f) 
50249 \Rightarrow (match f return (\lambda (_: F).Prop) with [Appl \Rightarrow True 
50250 | Cast \Rightarrow False])])])) I (THead (Flat Cast) t3 t2) H7) in (False_ind 
50251 ((eq T (THead (Bind Abbr) v2 t5) t4) \to ((pr0 v1 v2) \to ((pr0 t4 t5) \to 
50252 (ty3 g c2 t4 t3)))) H9)) H8 H5 H6))) | (pr0_upsilon b H5 v1 v2 H6 u1 u2 H7 t4 
50253 t5 H8) \Rightarrow (\lambda (H9: (eq T (THead (Flat Appl) v1 (THead (Bind b) 
50254 u1 t4)) (THead (Flat Cast) t3 t2))).(\lambda (H10: (eq T (THead (Bind b) u2 
50255 (THead (Flat Appl) (lift (S O) O v2) t5)) t4)).((let H11 \def (eq_ind T 
50256 (THead (Flat Appl) v1 (THead (Bind b) u1 t4)) (\lambda (e: T).(match e return 
50257 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
50258 \Rightarrow False | (THead k _ _) \Rightarrow (match k return (\lambda (_: 
50259 K).Prop) with [(Bind _) \Rightarrow False | (Flat f) \Rightarrow (match f 
50260 return (\lambda (_: F).Prop) with [Appl \Rightarrow True | Cast \Rightarrow 
50261 False])])])) I (THead (Flat Cast) t3 t2) H9) in (False_ind ((eq T (THead 
50262 (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t5)) t4) \to ((not (eq B b 
50263 Abst)) \to ((pr0 v1 v2) \to ((pr0 u1 u2) \to ((pr0 t4 t5) \to (ty3 g c2 t4 
50264 t3)))))) H11)) H10 H5 H6 H7 H8))) | (pr0_delta u1 u2 H5 t4 t5 H6 w H7) 
50265 \Rightarrow (\lambda (H8: (eq T (THead (Bind Abbr) u1 t4) (THead (Flat Cast) 
50266 t3 t2))).(\lambda (H9: (eq T (THead (Bind Abbr) u2 w) t4)).((let H10 \def 
50267 (eq_ind T (THead (Bind Abbr) u1 t4) (\lambda (e: T).(match e return (\lambda 
50268 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
50269 | (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
50270 _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Cast) t3 
50271 t2) H8) in (False_ind ((eq T (THead (Bind Abbr) u2 w) t4) \to ((pr0 u1 u2) 
50272 \to ((pr0 t4 t5) \to ((subst0 O u2 t5 w) \to (ty3 g c2 t4 t3))))) H10)) H9 H5 
50273 H6 H7))) | (pr0_zeta b H5 t4 t5 H6 u) \Rightarrow (\lambda (H7: (eq T (THead 
50274 (Bind b) u (lift (S O) O t4)) (THead (Flat Cast) t3 t2))).(\lambda (H8: (eq T 
50275 t5 t4)).((let H9 \def (eq_ind T (THead (Bind b) u (lift (S O) O t4)) (\lambda 
50276 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
50277 False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k 
50278 return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) 
50279 \Rightarrow False])])) I (THead (Flat Cast) t3 t2) H7) in (False_ind ((eq T 
50280 t5 t4) \to ((not (eq B b Abst)) \to ((pr0 t4 t5) \to (ty3 g c2 t4 t3)))) H9)) 
50281 H8 H5 H6))) | (pr0_epsilon t4 t5 H5 u) \Rightarrow (\lambda (H6: (eq T (THead 
50282 (Flat Cast) u t4) (THead (Flat Cast) t3 t2))).(\lambda (H7: (eq T t5 
50283 t4)).((let H8 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: 
50284 T).T) with [(TSort _) \Rightarrow t4 | (TLRef _) \Rightarrow t4 | (THead _ _ 
50285 t) \Rightarrow t])) (THead (Flat Cast) u t4) (THead (Flat Cast) t3 t2) H6) in 
50286 ((let H9 \def (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) 
50287 with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t _) 
50288 \Rightarrow t])) (THead (Flat Cast) u t4) (THead (Flat Cast) t3 t2) H6) in 
50289 (eq_ind T t3 (\lambda (_: T).((eq T t4 t2) \to ((eq T t5 t4) \to ((pr0 t4 t5) 
50290 \to (ty3 g c2 t4 t3))))) (\lambda (H10: (eq T t4 t2)).(eq_ind T t2 (\lambda 
50291 (t: T).((eq T t5 t4) \to ((pr0 t t5) \to (ty3 g c2 t4 t3)))) (\lambda (H11: 
50292 (eq T t5 t4)).(eq_ind T t4 (\lambda (t: T).((pr0 t2 t) \to (ty3 g c2 t4 t3))) 
50293 (\lambda (H12: (pr0 t2 t4)).(H1 c2 H4 t4 H12)) t5 (sym_eq T t5 t4 H11))) t4 
50294 (sym_eq T t4 t2 H10))) u (sym_eq T u t3 H9))) H8)) H7 H5)))]) in (H6 
50295 (refl_equal T (THead (Flat Cast) t3 t2)) (refl_equal T t4))))))))))))))) c1 
50296 t1 t H))))).
50297
50298 theorem ty3_sred_pr1:
50299  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr1 t1 t2) \to (\forall 
50300 (g: G).(\forall (t: T).((ty3 g c t1 t) \to (ty3 g c t2 t)))))))
50301 \def
50302  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr1 t1 
50303 t2)).(pr1_ind (\lambda (t: T).(\lambda (t0: T).(\forall (g: G).(\forall (t3: 
50304 T).((ty3 g c t t3) \to (ty3 g c t0 t3)))))) (\lambda (t: T).(\lambda (g: 
50305 G).(\lambda (t0: T).(\lambda (H0: (ty3 g c t t0)).H0)))) (\lambda (t3: 
50306 T).(\lambda (t4: T).(\lambda (H0: (pr0 t4 t3)).(\lambda (t5: T).(\lambda (_: 
50307 (pr1 t3 t5)).(\lambda (H2: ((\forall (g: G).(\forall (t: T).((ty3 g c t3 t) 
50308 \to (ty3 g c t5 t)))))).(\lambda (g: G).(\lambda (t: T).(\lambda (H3: (ty3 g 
50309 c t4 t)).(H2 g t (ty3_sred_wcpr0_pr0 g c t4 t H3 c (wcpr0_refl c) t3 
50310 H0))))))))))) t1 t2 H)))).
50311
50312 theorem ty3_sred_pr2:
50313  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall 
50314 (g: G).(\forall (t: T).((ty3 g c t1 t) \to (ty3 g c t2 t)))))))
50315 \def
50316  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t1 
50317 t2)).(pr2_ind (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\forall (g: 
50318 G).(\forall (t3: T).((ty3 g c0 t t3) \to (ty3 g c0 t0 t3))))))) (\lambda (c0: 
50319 C).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H0: (pr0 t3 t4)).(\lambda (g: 
50320 G).(\lambda (t: T).(\lambda (H1: (ty3 g c0 t3 t)).(ty3_sred_wcpr0_pr0 g c0 t3 
50321 t H1 c0 (wcpr0_refl c0) t4 H0)))))))) (\lambda (c0: C).(\lambda (d: 
50322 C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind 
50323 Abbr) u))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H1: (pr0 t3 
50324 t4)).(\lambda (t: T).(\lambda (H2: (subst0 i u t4 t)).(\lambda (g: 
50325 G).(\lambda (t0: T).(\lambda (H3: (ty3 g c0 t3 t0)).(ty3_subst0 g c0 t4 t0 
50326 (ty3_sred_wcpr0_pr0 g c0 t3 t0 H3 c0 (wcpr0_refl c0) t4 H1) d u i H0 t 
50327 H2)))))))))))))) c t1 t2 H)))).
50328
50329 theorem ty3_sred_pr3:
50330  \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to (\forall 
50331 (g: G).(\forall (t: T).((ty3 g c t1 t) \to (ty3 g c t2 t)))))))
50332 \def
50333  \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t1 
50334 t2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (g: G).(\forall 
50335 (t3: T).((ty3 g c t t3) \to (ty3 g c t0 t3)))))) (\lambda (t: T).(\lambda (g: 
50336 G).(\lambda (t0: T).(\lambda (H0: (ty3 g c t t0)).H0)))) (\lambda (t3: 
50337 T).(\lambda (t4: T).(\lambda (H0: (pr2 c t4 t3)).(\lambda (t5: T).(\lambda 
50338 (_: (pr3 c t3 t5)).(\lambda (H2: ((\forall (g: G).(\forall (t: T).((ty3 g c 
50339 t3 t) \to (ty3 g c t5 t)))))).(\lambda (g: G).(\lambda (t: T).(\lambda (H3: 
50340 (ty3 g c t4 t)).(H2 g t (ty3_sred_pr2 c t4 t3 H0 g t H3))))))))))) t1 t2 
50341 H)))).
50342
50343 theorem ty3_cred_pr2:
50344  \forall (g: G).(\forall (c: C).(\forall (v1: T).(\forall (v2: T).((pr2 c v1 
50345 v2) \to (\forall (b: B).(\forall (t1: T).(\forall (t2: T).((ty3 g (CHead c 
50346 (Bind b) v1) t1 t2) \to (ty3 g (CHead c (Bind b) v2) t1 t2)))))))))
50347 \def
50348  \lambda (g: G).(\lambda (c: C).(\lambda (v1: T).(\lambda (v2: T).(\lambda 
50349 (H: (pr2 c v1 v2)).(pr2_ind (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: 
50350 T).(\forall (b: B).(\forall (t1: T).(\forall (t2: T).((ty3 g (CHead c0 (Bind 
50351 b) t) t1 t2) \to (ty3 g (CHead c0 (Bind b) t0) t1 t2)))))))) (\lambda (c0: 
50352 C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pr0 t1 t2)).(\lambda (b: 
50353 B).(\lambda (t0: T).(\lambda (t3: T).(\lambda (H1: (ty3 g (CHead c0 (Bind b) 
50354 t1) t0 t3)).(ty3_sred_wcpr0_pr0 g (CHead c0 (Bind b) t1) t0 t3 H1 (CHead c0 
50355 (Bind b) t2) (wcpr0_comp c0 c0 (wcpr0_refl c0) t1 t2 H0 (Bind b)) t0 
50356 (pr0_refl t0)))))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u: 
50357 T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind Abbr) 
50358 u))).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H1: (pr0 t1 t2)).(\lambda 
50359 (t: T).(\lambda (H2: (subst0 i u t2 t)).(\lambda (b: B).(\lambda (t0: 
50360 T).(\lambda (t3: T).(\lambda (H3: (ty3 g (CHead c0 (Bind b) t1) t0 
50361 t3)).(ty3_csubst0 g (CHead c0 (Bind b) t2) t0 t3 (ty3_sred_wcpr0_pr0 g (CHead 
50362 c0 (Bind b) t1) t0 t3 H3 (CHead c0 (Bind b) t2) (wcpr0_comp c0 c0 (wcpr0_refl 
50363 c0) t1 t2 H1 (Bind b)) t0 (pr0_refl t0)) d u (S i) (getl_clear_bind b (CHead 
50364 c0 (Bind b) t2) c0 t2 (clear_bind b c0 t2) (CHead d (Bind Abbr) u) i H0) 
50365 (CHead c0 (Bind b) t) (csubst0_snd_bind b i u t2 t H2 c0)))))))))))))))) c v1 
50366 v2 H))))).
50367
50368 theorem ty3_cred_pr3:
50369  \forall (g: G).(\forall (c: C).(\forall (v1: T).(\forall (v2: T).((pr3 c v1 
50370 v2) \to (\forall (b: B).(\forall (t1: T).(\forall (t2: T).((ty3 g (CHead c 
50371 (Bind b) v1) t1 t2) \to (ty3 g (CHead c (Bind b) v2) t1 t2)))))))))
50372 \def
50373  \lambda (g: G).(\lambda (c: C).(\lambda (v1: T).(\lambda (v2: T).(\lambda 
50374 (H: (pr3 c v1 v2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (b: 
50375 B).(\forall (t1: T).(\forall (t2: T).((ty3 g (CHead c (Bind b) t) t1 t2) \to 
50376 (ty3 g (CHead c (Bind b) t0) t1 t2))))))) (\lambda (t: T).(\lambda (b: 
50377 B).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (ty3 g (CHead c (Bind b) 
50378 t) t1 t2)).H0))))) (\lambda (t2: T).(\lambda (t1: T).(\lambda (H0: (pr2 c t1 
50379 t2)).(\lambda (t3: T).(\lambda (_: (pr3 c t2 t3)).(\lambda (H2: ((\forall (b: 
50380 B).(\forall (t1: T).(\forall (t4: T).((ty3 g (CHead c (Bind b) t2) t1 t4) \to 
50381 (ty3 g (CHead c (Bind b) t3) t1 t4))))))).(\lambda (b: B).(\lambda (t0: 
50382 T).(\lambda (t4: T).(\lambda (H3: (ty3 g (CHead c (Bind b) t1) t0 t4)).(H2 b 
50383 t0 t4 (ty3_cred_pr2 g c t1 t2 H0 b t0 t4 H3)))))))))))) v1 v2 H))))).
50384
50385 theorem ty3_gen__le_S_minus:
50386  \forall (d: nat).(\forall (h: nat).(\forall (n: nat).((le (plus d h) n) \to 
50387 (le d (S (minus n h))))))
50388 \def
50389  \lambda (d: nat).(\lambda (h: nat).(\lambda (n: nat).(\lambda (H: (le (plus 
50390 d h) n)).(let H0 \def (le_trans d (plus d h) n (le_plus_l d h) H) in (let H1 
50391 \def (eq_ind nat n (\lambda (n: nat).(le d n)) H0 (plus (minus n h) h) 
50392 (le_plus_minus_sym h n (le_trans_plus_r d h n H))) in (le_S d (minus n h) 
50393 (le_minus d n h H))))))).
50394
50395 theorem ty3_gen_lift:
50396  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (x: T).(\forall (h: 
50397 nat).(\forall (d: nat).((ty3 g c (lift h d t1) x) \to (\forall (e: C).((drop 
50398 h d c e) \to (ex2 T (\lambda (t2: T).(pc3 c (lift h d t2) x)) (\lambda (t2: 
50399 T).(ty3 g e t1 t2)))))))))))
50400 \def
50401  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (x: T).(\lambda (h: 
50402 nat).(\lambda (d: nat).(\lambda (H: (ty3 g c (lift h d t1) x)).(insert_eq T 
50403 (lift h d t1) (\lambda (t: T).(ty3 g c t x)) (\forall (e: C).((drop h d c e) 
50404 \to (ex2 T (\lambda (t2: T).(pc3 c (lift h d t2) x)) (\lambda (t2: T).(ty3 g 
50405 e t1 t2))))) (\lambda (y: T).(\lambda (H0: (ty3 g c y x)).(unintro nat d 
50406 (\lambda (n: nat).((eq T y (lift h n t1)) \to (\forall (e: C).((drop h n c e) 
50407 \to (ex2 T (\lambda (t2: T).(pc3 c (lift h n t2) x)) (\lambda (t2: T).(ty3 g 
50408 e t1 t2))))))) (unintro T t1 (\lambda (t: T).(\forall (x0: nat).((eq T y 
50409 (lift h x0 t)) \to (\forall (e: C).((drop h x0 c e) \to (ex2 T (\lambda (t2: 
50410 T).(pc3 c (lift h x0 t2) x)) (\lambda (t2: T).(ty3 g e t t2)))))))) (ty3_ind 
50411 g (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\forall (x0: T).(\forall 
50412 (x1: nat).((eq T t (lift h x1 x0)) \to (\forall (e: C).((drop h x1 c0 e) \to 
50413 (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) t0)) (\lambda (t2: T).(ty3 g e 
50414 x0 t2))))))))))) (\lambda (c0: C).(\lambda (t2: T).(\lambda (t: T).(\lambda 
50415 (_: (ty3 g c0 t2 t)).(\lambda (_: ((\forall (x: T).(\forall (x0: nat).((eq T 
50416 t2 (lift h x0 x)) \to (\forall (e: C).((drop h x0 c0 e) \to (ex2 T (\lambda 
50417 (t2: T).(pc3 c0 (lift h x0 t2) t)) (\lambda (t2: T).(ty3 g e x 
50418 t2)))))))))).(\lambda (u: T).(\lambda (t3: T).(\lambda (H3: (ty3 g c0 u 
50419 t3)).(\lambda (H4: ((\forall (x: T).(\forall (x0: nat).((eq T u (lift h x0 
50420 x)) \to (\forall (e: C).((drop h x0 c0 e) \to (ex2 T (\lambda (t2: T).(pc3 c0 
50421 (lift h x0 t2) t3)) (\lambda (t2: T).(ty3 g e x t2)))))))))).(\lambda (H5: 
50422 (pc3 c0 t3 t2)).(\lambda (x0: T).(\lambda (x1: nat).(\lambda (H6: (eq T u 
50423 (lift h x1 x0))).(\lambda (e: C).(\lambda (H7: (drop h x1 c0 e)).(let H8 \def 
50424 (eq_ind T u (\lambda (t: T).(\forall (x: T).(\forall (x0: nat).((eq T t (lift 
50425 h x0 x)) \to (\forall (e: C).((drop h x0 c0 e) \to (ex2 T (\lambda (t2: 
50426 T).(pc3 c0 (lift h x0 t2) t3)) (\lambda (t2: T).(ty3 g e x t2))))))))) H4 
50427 (lift h x1 x0) H6) in (let H9 \def (eq_ind T u (\lambda (t: T).(ty3 g c0 t 
50428 t3)) H3 (lift h x1 x0) H6) in (let H10 \def (H8 x0 x1 (refl_equal T (lift h 
50429 x1 x0)) e H7) in (ex2_ind T (\lambda (t4: T).(pc3 c0 (lift h x1 t4) t3)) 
50430 (\lambda (t4: T).(ty3 g e x0 t4)) (ex2 T (\lambda (t4: T).(pc3 c0 (lift h x1 
50431 t4) t2)) (\lambda (t4: T).(ty3 g e x0 t4))) (\lambda (x2: T).(\lambda (H11: 
50432 (pc3 c0 (lift h x1 x2) t3)).(\lambda (H12: (ty3 g e x0 x2)).(ex_intro2 T 
50433 (\lambda (t4: T).(pc3 c0 (lift h x1 t4) t2)) (\lambda (t4: T).(ty3 g e x0 
50434 t4)) x2 (pc3_t t3 c0 (lift h x1 x2) H11 t2 H5) H12)))) H10))))))))))))))))))) 
50435 (\lambda (c0: C).(\lambda (m: nat).(\lambda (x0: T).(\lambda (x1: 
50436 nat).(\lambda (H1: (eq T (TSort m) (lift h x1 x0))).(\lambda (e: C).(\lambda 
50437 (_: (drop h x1 c0 e)).(eq_ind_r T (TSort m) (\lambda (t: T).(ex2 T (\lambda 
50438 (t2: T).(pc3 c0 (lift h x1 t2) (TSort (next g m)))) (\lambda (t2: T).(ty3 g e 
50439 t t2)))) (ex_intro2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (TSort (next g 
50440 m)))) (\lambda (t2: T).(ty3 g e (TSort m) t2)) (TSort (next g m)) (eq_ind_r T 
50441 (TSort (next g m)) (\lambda (t: T).(pc3 c0 t (TSort (next g m)))) (pc3_refl 
50442 c0 (TSort (next g m))) (lift h x1 (TSort (next g m))) (lift_sort (next g m) h 
50443 x1)) (ty3_sort g e m)) x0 (lift_gen_sort h x1 m x0 H1))))))))) (\lambda (n: 
50444 nat).(\lambda (c0: C).(\lambda (d0: C).(\lambda (u: T).(\lambda (H1: (getl n 
50445 c0 (CHead d0 (Bind Abbr) u))).(\lambda (t: T).(\lambda (H2: (ty3 g d0 u 
50446 t)).(\lambda (H3: ((\forall (x: T).(\forall (x0: nat).((eq T u (lift h x0 x)) 
50447 \to (\forall (e: C).((drop h x0 d0 e) \to (ex2 T (\lambda (t2: T).(pc3 d0 
50448 (lift h x0 t2) t)) (\lambda (t2: T).(ty3 g e x t2)))))))))).(\lambda (x0: 
50449 T).(\lambda (x1: nat).(\lambda (H4: (eq T (TLRef n) (lift h x1 x0))).(\lambda 
50450 (e: C).(\lambda (H5: (drop h x1 c0 e)).(let H_x \def (lift_gen_lref x0 x1 h n 
50451 H4) in (let H6 \def H_x in (or_ind (land (lt n x1) (eq T x0 (TLRef n))) (land 
50452 (le (plus x1 h) n) (eq T x0 (TLRef (minus n h)))) (ex2 T (\lambda (t2: 
50453 T).(pc3 c0 (lift h x1 t2) (lift (S n) O t))) (\lambda (t2: T).(ty3 g e x0 
50454 t2))) (\lambda (H7: (land (lt n x1) (eq T x0 (TLRef n)))).(and_ind (lt n x1) 
50455 (eq T x0 (TLRef n)) (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (lift (S 
50456 n) O t))) (\lambda (t2: T).(ty3 g e x0 t2))) (\lambda (H8: (lt n 
50457 x1)).(\lambda (H9: (eq T x0 (TLRef n))).(eq_ind_r T (TLRef n) (\lambda (t0: 
50458 T).(ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (lift (S n) O t))) (\lambda 
50459 (t2: T).(ty3 g e t0 t2)))) (let H10 \def (eq_ind nat x1 (\lambda (n: 
50460 nat).(drop h n c0 e)) H5 (S (plus n (minus x1 (S n)))) (lt_plus_minus n x1 
50461 H8)) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h (minus 
50462 x1 (S n)) v)))) (\lambda (v: T).(\lambda (e0: C).(getl n e (CHead e0 (Bind 
50463 Abbr) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h (minus x1 (S n)) d0 
50464 e0))) (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (lift (S n) O t))) 
50465 (\lambda (t2: T).(ty3 g e (TLRef n) t2))) (\lambda (x2: T).(\lambda (x3: 
50466 C).(\lambda (H11: (eq T u (lift h (minus x1 (S n)) x2))).(\lambda (H12: (getl 
50467 n e (CHead x3 (Bind Abbr) x2))).(\lambda (H13: (drop h (minus x1 (S n)) d0 
50468 x3)).(let H14 \def (eq_ind T u (\lambda (t0: T).(\forall (x: T).(\forall (x0: 
50469 nat).((eq T t0 (lift h x0 x)) \to (\forall (e: C).((drop h x0 d0 e) \to (ex2 
50470 T (\lambda (t2: T).(pc3 d0 (lift h x0 t2) t)) (\lambda (t2: T).(ty3 g e x 
50471 t2))))))))) H3 (lift h (minus x1 (S n)) x2) H11) in (let H15 \def (eq_ind T u 
50472 (\lambda (t0: T).(ty3 g d0 t0 t)) H2 (lift h (minus x1 (S n)) x2) H11) in 
50473 (let H16 \def (H14 x2 (minus x1 (S n)) (refl_equal T (lift h (minus x1 (S n)) 
50474 x2)) x3 H13) in (ex2_ind T (\lambda (t2: T).(pc3 d0 (lift h (minus x1 (S n)) 
50475 t2) t)) (\lambda (t2: T).(ty3 g x3 x2 t2)) (ex2 T (\lambda (t2: T).(pc3 c0 
50476 (lift h x1 t2) (lift (S n) O t))) (\lambda (t2: T).(ty3 g e (TLRef n) t2))) 
50477 (\lambda (x4: T).(\lambda (H17: (pc3 d0 (lift h (minus x1 (S n)) x4) 
50478 t)).(\lambda (H18: (ty3 g x3 x2 x4)).(eq_ind_r nat (plus (S n) (minus x1 (S 
50479 n))) (\lambda (n0: nat).(ex2 T (\lambda (t2: T).(pc3 c0 (lift h n0 t2) (lift 
50480 (S n) O t))) (\lambda (t2: T).(ty3 g e (TLRef n) t2)))) (ex_intro2 T (\lambda 
50481 (t2: T).(pc3 c0 (lift h (plus (S n) (minus x1 (S n))) t2) (lift (S n) O t))) 
50482 (\lambda (t2: T).(ty3 g e (TLRef n) t2)) (lift (S n) O x4) (eq_ind_r T (lift 
50483 (S n) O (lift h (minus x1 (S n)) x4)) (\lambda (t0: T).(pc3 c0 t0 (lift (S n) 
50484 O t))) (pc3_lift c0 d0 (S n) O (getl_drop Abbr c0 d0 u n H1) (lift h (minus 
50485 x1 (S n)) x4) t H17) (lift h (plus (S n) (minus x1 (S n))) (lift (S n) O x4)) 
50486 (lift_d x4 h (S n) (minus x1 (S n)) O (le_O_n (minus x1 (S n))))) (ty3_abbr g 
50487 n e x3 x2 H12 x4 H18)) x1 (le_plus_minus (S n) x1 H8))))) H16))))))))) 
50488 (getl_drop_conf_lt Abbr c0 d0 u n H1 e h (minus x1 (S n)) H10))) x0 H9))) 
50489 H7)) (\lambda (H7: (land (le (plus x1 h) n) (eq T x0 (TLRef (minus n 
50490 h))))).(and_ind (le (plus x1 h) n) (eq T x0 (TLRef (minus n h))) (ex2 T 
50491 (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (lift (S n) O t))) (\lambda (t2: 
50492 T).(ty3 g e x0 t2))) (\lambda (H8: (le (plus x1 h) n)).(\lambda (H9: (eq T x0 
50493 (TLRef (minus n h)))).(eq_ind_r T (TLRef (minus n h)) (\lambda (t0: T).(ex2 T 
50494 (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (lift (S n) O t))) (\lambda (t2: 
50495 T).(ty3 g e t0 t2)))) (ex_intro2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) 
50496 (lift (S n) O t))) (\lambda (t2: T).(ty3 g e (TLRef (minus n h)) t2)) (lift 
50497 (S (minus n h)) O t) (eq_ind_r T (lift (plus h (S (minus n h))) O t) (\lambda 
50498 (t0: T).(pc3 c0 t0 (lift (S n) O t))) (eq_ind nat (S (plus h (minus n h))) 
50499 (\lambda (n0: nat).(pc3 c0 (lift n0 O t) (lift (S n) O t))) (eq_ind nat n 
50500 (\lambda (n0: nat).(pc3 c0 (lift (S n0) O t) (lift (S n) O t))) (pc3_refl c0 
50501 (lift (S n) O t)) (plus h (minus n h)) (le_plus_minus h n (le_trans_plus_r x1 
50502 h n H8))) (plus h (S (minus n h))) (plus_n_Sm h (minus n h))) (lift h x1 
50503 (lift (S (minus n h)) O t)) (lift_free t (S (minus n h)) h O x1 (le_trans x1 
50504 (S (minus n h)) (plus O (S (minus n h))) (ty3_gen__le_S_minus x1 h n H8) 
50505 (le_n (plus O (S (minus n h))))) (le_O_n x1))) (ty3_abbr g (minus n h) e d0 u 
50506 (getl_drop_conf_ge n (CHead d0 (Bind Abbr) u) c0 H1 e h x1 H5 H8) t H2)) x0 
50507 H9))) H7)) H6)))))))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda 
50508 (d0: C).(\lambda (u: T).(\lambda (H1: (getl n c0 (CHead d0 (Bind Abst) 
50509 u))).(\lambda (t: T).(\lambda (H2: (ty3 g d0 u t)).(\lambda (H3: ((\forall 
50510 (x: T).(\forall (x0: nat).((eq T u (lift h x0 x)) \to (\forall (e: C).((drop 
50511 h x0 d0 e) \to (ex2 T (\lambda (t2: T).(pc3 d0 (lift h x0 t2) t)) (\lambda 
50512 (t2: T).(ty3 g e x t2)))))))))).(\lambda (x0: T).(\lambda (x1: nat).(\lambda 
50513 (H4: (eq T (TLRef n) (lift h x1 x0))).(\lambda (e: C).(\lambda (H5: (drop h 
50514 x1 c0 e)).(let H_x \def (lift_gen_lref x0 x1 h n H4) in (let H6 \def H_x in 
50515 (or_ind (land (lt n x1) (eq T x0 (TLRef n))) (land (le (plus x1 h) n) (eq T 
50516 x0 (TLRef (minus n h)))) (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (lift 
50517 (S n) O u))) (\lambda (t2: T).(ty3 g e x0 t2))) (\lambda (H7: (land (lt n x1) 
50518 (eq T x0 (TLRef n)))).(and_ind (lt n x1) (eq T x0 (TLRef n)) (ex2 T (\lambda 
50519 (t2: T).(pc3 c0 (lift h x1 t2) (lift (S n) O u))) (\lambda (t2: T).(ty3 g e 
50520 x0 t2))) (\lambda (H8: (lt n x1)).(\lambda (H9: (eq T x0 (TLRef 
50521 n))).(eq_ind_r T (TLRef n) (\lambda (t0: T).(ex2 T (\lambda (t2: T).(pc3 c0 
50522 (lift h x1 t2) (lift (S n) O u))) (\lambda (t2: T).(ty3 g e t0 t2)))) (let 
50523 H10 \def (eq_ind nat x1 (\lambda (n: nat).(drop h n c0 e)) H5 (S (plus n 
50524 (minus x1 (S n)))) (lt_plus_minus n x1 H8)) in (ex3_2_ind T C (\lambda (v: 
50525 T).(\lambda (_: C).(eq T u (lift h (minus x1 (S n)) v)))) (\lambda (v: 
50526 T).(\lambda (e0: C).(getl n e (CHead e0 (Bind Abst) v)))) (\lambda (_: 
50527 T).(\lambda (e0: C).(drop h (minus x1 (S n)) d0 e0))) (ex2 T (\lambda (t2: 
50528 T).(pc3 c0 (lift h x1 t2) (lift (S n) O u))) (\lambda (t2: T).(ty3 g e (TLRef 
50529 n) t2))) (\lambda (x2: T).(\lambda (x3: C).(\lambda (H11: (eq T u (lift h 
50530 (minus x1 (S n)) x2))).(\lambda (H12: (getl n e (CHead x3 (Bind Abst) 
50531 x2))).(\lambda (H13: (drop h (minus x1 (S n)) d0 x3)).(let H14 \def (eq_ind T 
50532 u (\lambda (t0: T).(\forall (x: T).(\forall (x0: nat).((eq T t0 (lift h x0 
50533 x)) \to (\forall (e: C).((drop h x0 d0 e) \to (ex2 T (\lambda (t2: T).(pc3 d0 
50534 (lift h x0 t2) t)) (\lambda (t2: T).(ty3 g e x t2))))))))) H3 (lift h (minus 
50535 x1 (S n)) x2) H11) in (let H15 \def (eq_ind T u (\lambda (t0: T).(ty3 g d0 t0 
50536 t)) H2 (lift h (minus x1 (S n)) x2) H11) in (eq_ind_r T (lift h (minus x1 (S 
50537 n)) x2) (\lambda (t0: T).(ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (lift 
50538 (S n) O t0))) (\lambda (t2: T).(ty3 g e (TLRef n) t2)))) (let H16 \def (H14 
50539 x2 (minus x1 (S n)) (refl_equal T (lift h (minus x1 (S n)) x2)) x3 H13) in 
50540 (ex2_ind T (\lambda (t2: T).(pc3 d0 (lift h (minus x1 (S n)) t2) t)) (\lambda 
50541 (t2: T).(ty3 g x3 x2 t2)) (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) 
50542 (lift (S n) O (lift h (minus x1 (S n)) x2)))) (\lambda (t2: T).(ty3 g e 
50543 (TLRef n) t2))) (\lambda (x4: T).(\lambda (_: (pc3 d0 (lift h (minus x1 (S 
50544 n)) x4) t)).(\lambda (H18: (ty3 g x3 x2 x4)).(eq_ind_r nat (plus (S n) (minus 
50545 x1 (S n))) (\lambda (n0: nat).(ex2 T (\lambda (t2: T).(pc3 c0 (lift h n0 t2) 
50546 (lift (S n) O (lift h (minus n0 (S n)) x2)))) (\lambda (t2: T).(ty3 g e 
50547 (TLRef n) t2)))) (ex_intro2 T (\lambda (t2: T).(pc3 c0 (lift h (plus (S n) 
50548 (minus x1 (S n))) t2) (lift (S n) O (lift h (minus (plus (S n) (minus x1 (S 
50549 n))) (S n)) x2)))) (\lambda (t2: T).(ty3 g e (TLRef n) t2)) (lift (S n) O x2) 
50550 (eq_ind_r T (lift (S n) O (lift h (minus x1 (S n)) x2)) (\lambda (t0: T).(pc3 
50551 c0 t0 (lift (S n) O (lift h (minus (plus (S n) (minus x1 (S n))) (S n)) 
50552 x2)))) (eq_ind nat x1 (\lambda (n0: nat).(pc3 c0 (lift (S n) O (lift h (minus 
50553 x1 (S n)) x2)) (lift (S n) O (lift h (minus n0 (S n)) x2)))) (pc3_refl c0 
50554 (lift (S n) O (lift h (minus x1 (S n)) x2))) (plus (S n) (minus x1 (S n))) 
50555 (le_plus_minus (S n) x1 H8)) (lift h (plus (S n) (minus x1 (S n))) (lift (S 
50556 n) O x2)) (lift_d x2 h (S n) (minus x1 (S n)) O (le_O_n (minus x1 (S n))))) 
50557 (ty3_abst g n e x3 x2 H12 x4 H18)) x1 (le_plus_minus (S n) x1 H8))))) H16)) u 
50558 H11)))))))) (getl_drop_conf_lt Abst c0 d0 u n H1 e h (minus x1 (S n)) H10))) 
50559 x0 H9))) H7)) (\lambda (H7: (land (le (plus x1 h) n) (eq T x0 (TLRef (minus n 
50560 h))))).(and_ind (le (plus x1 h) n) (eq T x0 (TLRef (minus n h))) (ex2 T 
50561 (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (lift (S n) O u))) (\lambda (t2: 
50562 T).(ty3 g e x0 t2))) (\lambda (H8: (le (plus x1 h) n)).(\lambda (H9: (eq T x0 
50563 (TLRef (minus n h)))).(eq_ind_r T (TLRef (minus n h)) (\lambda (t0: T).(ex2 T 
50564 (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (lift (S n) O u))) (\lambda (t2: 
50565 T).(ty3 g e t0 t2)))) (ex_intro2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) 
50566 (lift (S n) O u))) (\lambda (t2: T).(ty3 g e (TLRef (minus n h)) t2)) (lift 
50567 (S (minus n h)) O u) (eq_ind_r T (lift (plus h (S (minus n h))) O u) (\lambda 
50568 (t0: T).(pc3 c0 t0 (lift (S n) O u))) (eq_ind nat (S (plus h (minus n h))) 
50569 (\lambda (n0: nat).(pc3 c0 (lift n0 O u) (lift (S n) O u))) (eq_ind nat n 
50570 (\lambda (n0: nat).(pc3 c0 (lift (S n0) O u) (lift (S n) O u))) (pc3_refl c0 
50571 (lift (S n) O u)) (plus h (minus n h)) (le_plus_minus h n (le_trans_plus_r x1 
50572 h n H8))) (plus h (S (minus n h))) (plus_n_Sm h (minus n h))) (lift h x1 
50573 (lift (S (minus n h)) O u)) (lift_free u (S (minus n h)) h O x1 (le_trans x1 
50574 (S (minus n h)) (plus O (S (minus n h))) (ty3_gen__le_S_minus x1 h n H8) 
50575 (le_n (plus O (S (minus n h))))) (le_O_n x1))) (ty3_abst g (minus n h) e d0 u 
50576 (getl_drop_conf_ge n (CHead d0 (Bind Abst) u) c0 H1 e h x1 H5 H8) t H2)) x0 
50577 H9))) H7)) H6)))))))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (t: 
50578 T).(\lambda (H1: (ty3 g c0 u t)).(\lambda (H2: ((\forall (x: T).(\forall (x0: 
50579 nat).((eq T u (lift h x0 x)) \to (\forall (e: C).((drop h x0 c0 e) \to (ex2 T 
50580 (\lambda (t2: T).(pc3 c0 (lift h x0 t2) t)) (\lambda (t2: T).(ty3 g e x 
50581 t2)))))))))).(\lambda (b: B).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H3: 
50582 (ty3 g (CHead c0 (Bind b) u) t2 t3)).(\lambda (H4: ((\forall (x: T).(\forall 
50583 (x0: nat).((eq T t2 (lift h x0 x)) \to (\forall (e: C).((drop h x0 (CHead c0 
50584 (Bind b) u) e) \to (ex2 T (\lambda (t2: T).(pc3 (CHead c0 (Bind b) u) (lift h 
50585 x0 t2) t3)) (\lambda (t2: T).(ty3 g e x t2)))))))))).(\lambda (t0: 
50586 T).(\lambda (H5: (ty3 g (CHead c0 (Bind b) u) t3 t0)).(\lambda (H6: ((\forall 
50587 (x: T).(\forall (x0: nat).((eq T t3 (lift h x0 x)) \to (\forall (e: C).((drop 
50588 h x0 (CHead c0 (Bind b) u) e) \to (ex2 T (\lambda (t2: T).(pc3 (CHead c0 
50589 (Bind b) u) (lift h x0 t2) t0)) (\lambda (t2: T).(ty3 g e x 
50590 t2)))))))))).(\lambda (x0: T).(\lambda (x1: nat).(\lambda (H7: (eq T (THead 
50591 (Bind b) u t2) (lift h x1 x0))).(\lambda (e: C).(\lambda (H8: (drop h x1 c0 
50592 e)).(ex3_2_ind T T (\lambda (y0: T).(\lambda (z: T).(eq T x0 (THead (Bind b) 
50593 y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T u (lift h x1 y0)))) (\lambda 
50594 (_: T).(\lambda (z: T).(eq T t2 (lift h (S x1) z)))) (ex2 T (\lambda (t4: 
50595 T).(pc3 c0 (lift h x1 t4) (THead (Bind b) u t3))) (\lambda (t4: T).(ty3 g e 
50596 x0 t4))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H9: (eq T x0 (THead 
50597 (Bind b) x2 x3))).(\lambda (H10: (eq T u (lift h x1 x2))).(\lambda (H11: (eq 
50598 T t2 (lift h (S x1) x3))).(eq_ind_r T (THead (Bind b) x2 x3) (\lambda (t4: 
50599 T).(ex2 T (\lambda (t5: T).(pc3 c0 (lift h x1 t5) (THead (Bind b) u t3))) 
50600 (\lambda (t5: T).(ty3 g e t4 t5)))) (let H12 \def (eq_ind T t2 (\lambda (t: 
50601 T).(\forall (x: T).(\forall (x0: nat).((eq T t (lift h x0 x)) \to (\forall 
50602 (e: C).((drop h x0 (CHead c0 (Bind b) u) e) \to (ex2 T (\lambda (t2: T).(pc3 
50603 (CHead c0 (Bind b) u) (lift h x0 t2) t3)) (\lambda (t2: T).(ty3 g e x 
50604 t2))))))))) H4 (lift h (S x1) x3) H11) in (let H13 \def (eq_ind T t2 (\lambda 
50605 (t: T).(ty3 g (CHead c0 (Bind b) u) t t3)) H3 (lift h (S x1) x3) H11) in (let 
50606 H14 \def (eq_ind T u (\lambda (t: T).(ty3 g (CHead c0 (Bind b) t) (lift h (S 
50607 x1) x3) t3)) H13 (lift h x1 x2) H10) in (let H15 \def (eq_ind T u (\lambda 
50608 (t: T).(\forall (x: T).(\forall (x0: nat).((eq T (lift h (S x1) x3) (lift h 
50609 x0 x)) \to (\forall (e: C).((drop h x0 (CHead c0 (Bind b) t) e) \to (ex2 T 
50610 (\lambda (t2: T).(pc3 (CHead c0 (Bind b) t) (lift h x0 t2) t3)) (\lambda (t2: 
50611 T).(ty3 g e x t2))))))))) H12 (lift h x1 x2) H10) in (let H16 \def (eq_ind T 
50612 u (\lambda (t: T).(\forall (x: T).(\forall (x0: nat).((eq T t3 (lift h x0 x)) 
50613 \to (\forall (e: C).((drop h x0 (CHead c0 (Bind b) t) e) \to (ex2 T (\lambda 
50614 (t2: T).(pc3 (CHead c0 (Bind b) t) (lift h x0 t2) t0)) (\lambda (t2: T).(ty3 
50615 g e x t2))))))))) H6 (lift h x1 x2) H10) in (let H17 \def (eq_ind T u 
50616 (\lambda (t: T).(ty3 g (CHead c0 (Bind b) t) t3 t0)) H5 (lift h x1 x2) H10) 
50617 in (let H18 \def (eq_ind T u (\lambda (t0: T).(\forall (x: T).(\forall (x0: 
50618 nat).((eq T t0 (lift h x0 x)) \to (\forall (e: C).((drop h x0 c0 e) \to (ex2 
50619 T (\lambda (t2: T).(pc3 c0 (lift h x0 t2) t)) (\lambda (t2: T).(ty3 g e x 
50620 t2))))))))) H2 (lift h x1 x2) H10) in (let H19 \def (eq_ind T u (\lambda (t0: 
50621 T).(ty3 g c0 t0 t)) H1 (lift h x1 x2) H10) in (eq_ind_r T (lift h x1 x2) 
50622 (\lambda (t4: T).(ex2 T (\lambda (t5: T).(pc3 c0 (lift h x1 t5) (THead (Bind 
50623 b) t4 t3))) (\lambda (t5: T).(ty3 g e (THead (Bind b) x2 x3) t5)))) (let H20 
50624 \def (H18 x2 x1 (refl_equal T (lift h x1 x2)) e H8) in (ex2_ind T (\lambda 
50625 (t4: T).(pc3 c0 (lift h x1 t4) t)) (\lambda (t4: T).(ty3 g e x2 t4)) (ex2 T 
50626 (\lambda (t4: T).(pc3 c0 (lift h x1 t4) (THead (Bind b) (lift h x1 x2) t3))) 
50627 (\lambda (t4: T).(ty3 g e (THead (Bind b) x2 x3) t4))) (\lambda (x4: 
50628 T).(\lambda (_: (pc3 c0 (lift h x1 x4) t)).(\lambda (H22: (ty3 g e x2 
50629 x4)).(let H23 \def (H15 x3 (S x1) (refl_equal T (lift h (S x1) x3)) (CHead e 
50630 (Bind b) x2) (drop_skip_bind h x1 c0 e H8 b x2)) in (ex2_ind T (\lambda (t4: 
50631 T).(pc3 (CHead c0 (Bind b) (lift h x1 x2)) (lift h (S x1) t4) t3)) (\lambda 
50632 (t4: T).(ty3 g (CHead e (Bind b) x2) x3 t4)) (ex2 T (\lambda (t4: T).(pc3 c0 
50633 (lift h x1 t4) (THead (Bind b) (lift h x1 x2) t3))) (\lambda (t4: T).(ty3 g e 
50634 (THead (Bind b) x2 x3) t4))) (\lambda (x5: T).(\lambda (H24: (pc3 (CHead c0 
50635 (Bind b) (lift h x1 x2)) (lift h (S x1) x5) t3)).(\lambda (H25: (ty3 g (CHead 
50636 e (Bind b) x2) x3 x5)).(ex_ind T (\lambda (t4: T).(ty3 g (CHead e (Bind b) 
50637 x2) x5 t4)) (ex2 T (\lambda (t4: T).(pc3 c0 (lift h x1 t4) (THead (Bind b) 
50638 (lift h x1 x2) t3))) (\lambda (t4: T).(ty3 g e (THead (Bind b) x2 x3) t4))) 
50639 (\lambda (x6: T).(\lambda (H26: (ty3 g (CHead e (Bind b) x2) x5 
50640 x6)).(ex_intro2 T (\lambda (t4: T).(pc3 c0 (lift h x1 t4) (THead (Bind b) 
50641 (lift h x1 x2) t3))) (\lambda (t4: T).(ty3 g e (THead (Bind b) x2 x3) t4)) 
50642 (THead (Bind b) x2 x5) (eq_ind_r T (THead (Bind b) (lift h x1 x2) (lift h (S 
50643 x1) x5)) (\lambda (t4: T).(pc3 c0 t4 (THead (Bind b) (lift h x1 x2) t3))) 
50644 (pc3_head_2 c0 (lift h x1 x2) (lift h (S x1) x5) t3 (Bind b) H24) (lift h x1 
50645 (THead (Bind b) x2 x5)) (lift_bind b x2 x5 h x1)) (ty3_bind g e x2 x4 H22 b 
50646 x3 x5 H25 x6 H26)))) (ty3_correct g (CHead e (Bind b) x2) x3 x5 H25))))) 
50647 H23))))) H20)) u H10))))))))) x0 H9)))))) (lift_gen_bind b u t2 x0 h x1 
50648 H7)))))))))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda (u: 
50649 T).(\lambda (H1: (ty3 g c0 w u)).(\lambda (H2: ((\forall (x: T).(\forall (x0: 
50650 nat).((eq T w (lift h x0 x)) \to (\forall (e: C).((drop h x0 c0 e) \to (ex2 T 
50651 (\lambda (t2: T).(pc3 c0 (lift h x0 t2) u)) (\lambda (t2: T).(ty3 g e x 
50652 t2)))))))))).(\lambda (v: T).(\lambda (t: T).(\lambda (H3: (ty3 g c0 v (THead 
50653 (Bind Abst) u t))).(\lambda (H4: ((\forall (x: T).(\forall (x0: nat).((eq T v 
50654 (lift h x0 x)) \to (\forall (e: C).((drop h x0 c0 e) \to (ex2 T (\lambda (t2: 
50655 T).(pc3 c0 (lift h x0 t2) (THead (Bind Abst) u t))) (\lambda (t2: T).(ty3 g e 
50656 x t2)))))))))).(\lambda (x0: T).(\lambda (x1: nat).(\lambda (H5: (eq T (THead 
50657 (Flat Appl) w v) (lift h x1 x0))).(\lambda (e: C).(\lambda (H6: (drop h x1 c0 
50658 e)).(ex3_2_ind T T (\lambda (y0: T).(\lambda (z: T).(eq T x0 (THead (Flat 
50659 Appl) y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T w (lift h x1 y0)))) 
50660 (\lambda (_: T).(\lambda (z: T).(eq T v (lift h x1 z)))) (ex2 T (\lambda (t2: 
50661 T).(pc3 c0 (lift h x1 t2) (THead (Flat Appl) w (THead (Bind Abst) u t)))) 
50662 (\lambda (t2: T).(ty3 g e x0 t2))) (\lambda (x2: T).(\lambda (x3: T).(\lambda 
50663 (H7: (eq T x0 (THead (Flat Appl) x2 x3))).(\lambda (H8: (eq T w (lift h x1 
50664 x2))).(\lambda (H9: (eq T v (lift h x1 x3))).(eq_ind_r T (THead (Flat Appl) 
50665 x2 x3) (\lambda (t0: T).(ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (THead 
50666 (Flat Appl) w (THead (Bind Abst) u t)))) (\lambda (t2: T).(ty3 g e t0 t2)))) 
50667 (let H10 \def (eq_ind T v (\lambda (t0: T).(\forall (x: T).(\forall (x0: 
50668 nat).((eq T t0 (lift h x0 x)) \to (\forall (e: C).((drop h x0 c0 e) \to (ex2 
50669 T (\lambda (t2: T).(pc3 c0 (lift h x0 t2) (THead (Bind Abst) u t))) (\lambda 
50670 (t2: T).(ty3 g e x t2))))))))) H4 (lift h x1 x3) H9) in (let H11 \def (eq_ind 
50671 T v (\lambda (t0: T).(ty3 g c0 t0 (THead (Bind Abst) u t))) H3 (lift h x1 x3) 
50672 H9) in (let H12 \def (eq_ind T w (\lambda (t: T).(\forall (x: T).(\forall 
50673 (x0: nat).((eq T t (lift h x0 x)) \to (\forall (e: C).((drop h x0 c0 e) \to 
50674 (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x0 t2) u)) (\lambda (t2: T).(ty3 g e 
50675 x t2))))))))) H2 (lift h x1 x2) H8) in (let H13 \def (eq_ind T w (\lambda (t: 
50676 T).(ty3 g c0 t u)) H1 (lift h x1 x2) H8) in (eq_ind_r T (lift h x1 x2) 
50677 (\lambda (t0: T).(ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (THead (Flat 
50678 Appl) t0 (THead (Bind Abst) u t)))) (\lambda (t2: T).(ty3 g e (THead (Flat 
50679 Appl) x2 x3) t2)))) (let H14 \def (H12 x2 x1 (refl_equal T (lift h x1 x2)) e 
50680 H6) in (ex2_ind T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) u)) (\lambda (t2: 
50681 T).(ty3 g e x2 t2)) (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (THead 
50682 (Flat Appl) (lift h x1 x2) (THead (Bind Abst) u t)))) (\lambda (t2: T).(ty3 g 
50683 e (THead (Flat Appl) x2 x3) t2))) (\lambda (x4: T).(\lambda (H15: (pc3 c0 
50684 (lift h x1 x4) u)).(\lambda (H16: (ty3 g e x2 x4)).(let H17 \def (H10 x3 x1 
50685 (refl_equal T (lift h x1 x3)) e H6) in (ex2_ind T (\lambda (t2: T).(pc3 c0 
50686 (lift h x1 t2) (THead (Bind Abst) u t))) (\lambda (t2: T).(ty3 g e x3 t2)) 
50687 (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (THead (Flat Appl) (lift h x1 
50688 x2) (THead (Bind Abst) u t)))) (\lambda (t2: T).(ty3 g e (THead (Flat Appl) 
50689 x2 x3) t2))) (\lambda (x5: T).(\lambda (H18: (pc3 c0 (lift h x1 x5) (THead 
50690 (Bind Abst) u t))).(\lambda (H19: (ty3 g e x3 x5)).(ex3_2_ind T T (\lambda 
50691 (u1: T).(\lambda (t2: T).(pr3 e x5 (THead (Bind Abst) u1 t2)))) (\lambda (u1: 
50692 T).(\lambda (_: T).(pr3 c0 u (lift h x1 u1)))) (\lambda (_: T).(\lambda (t2: 
50693 T).(\forall (b: B).(\forall (u0: T).(pr3 (CHead c0 (Bind b) u0) t (lift h (S 
50694 x1) t2)))))) (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (THead (Flat 
50695 Appl) (lift h x1 x2) (THead (Bind Abst) u t)))) (\lambda (t2: T).(ty3 g e 
50696 (THead (Flat Appl) x2 x3) t2))) (\lambda (x6: T).(\lambda (x7: T).(\lambda 
50697 (H20: (pr3 e x5 (THead (Bind Abst) x6 x7))).(\lambda (H21: (pr3 c0 u (lift h 
50698 x1 x6))).(\lambda (H22: ((\forall (b: B).(\forall (u: T).(pr3 (CHead c0 (Bind 
50699 b) u) t (lift h (S x1) x7)))))).(ex_ind T (\lambda (t0: T).(ty3 g e x5 t0)) 
50700 (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (THead (Flat Appl) (lift h x1 
50701 x2) (THead (Bind Abst) u t)))) (\lambda (t2: T).(ty3 g e (THead (Flat Appl) 
50702 x2 x3) t2))) (\lambda (x8: T).(\lambda (H23: (ty3 g e x5 x8)).(ex4_3_ind T T 
50703 T (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(pc3 e (THead (Bind Abst) 
50704 x6 t2) x8)))) (\lambda (_: T).(\lambda (t0: T).(\lambda (_: T).(ty3 g e x6 
50705 t0)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead e (Bind 
50706 Abst) x6) x7 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t3: T).(ty3 g 
50707 (CHead e (Bind Abst) x6) t2 t3)))) (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x1 
50708 t2) (THead (Flat Appl) (lift h x1 x2) (THead (Bind Abst) u t)))) (\lambda 
50709 (t2: T).(ty3 g e (THead (Flat Appl) x2 x3) t2))) (\lambda (x9: T).(\lambda 
50710 (x10: T).(\lambda (x11: T).(\lambda (_: (pc3 e (THead (Bind Abst) x6 x9) 
50711 x8)).(\lambda (H25: (ty3 g e x6 x10)).(\lambda (H26: (ty3 g (CHead e (Bind 
50712 Abst) x6) x7 x9)).(\lambda (H27: (ty3 g (CHead e (Bind Abst) x6) x9 
50713 x11)).(ex_intro2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) (THead (Flat Appl) 
50714 (lift h x1 x2) (THead (Bind Abst) u t)))) (\lambda (t2: T).(ty3 g e (THead 
50715 (Flat Appl) x2 x3) t2)) (THead (Flat Appl) x2 (THead (Bind Abst) x6 x7)) 
50716 (eq_ind_r T (THead (Flat Appl) (lift h x1 x2) (lift h x1 (THead (Bind Abst) 
50717 x6 x7))) (\lambda (t0: T).(pc3 c0 t0 (THead (Flat Appl) (lift h x1 x2) (THead 
50718 (Bind Abst) u t)))) (pc3_thin_dx c0 (lift h x1 (THead (Bind Abst) x6 x7)) 
50719 (THead (Bind Abst) u t) (eq_ind_r T (THead (Bind Abst) (lift h x1 x6) (lift h 
50720 (S x1) x7)) (\lambda (t0: T).(pc3 c0 t0 (THead (Bind Abst) u t))) 
50721 (pc3_head_21 c0 (lift h x1 x6) u (pc3_pr3_x c0 (lift h x1 x6) u H21) (Bind 
50722 Abst) (lift h (S x1) x7) t (pc3_pr3_x (CHead c0 (Bind Abst) (lift h x1 x6)) 
50723 (lift h (S x1) x7) t (H22 Abst (lift h x1 x6)))) (lift h x1 (THead (Bind 
50724 Abst) x6 x7)) (lift_bind Abst x6 x7 h x1)) (lift h x1 x2) Appl) (lift h x1 
50725 (THead (Flat Appl) x2 (THead (Bind Abst) x6 x7))) (lift_flat Appl x2 (THead 
50726 (Bind Abst) x6 x7) h x1)) (ty3_appl g e x2 x6 (ty3_conv g e x6 x10 H25 x2 x4 
50727 H16 (pc3_gen_lift c0 x4 x6 h x1 (pc3_t u c0 (lift h x1 x4) H15 (lift h x1 x6) 
50728 (pc3_pr3_r c0 u (lift h x1 x6) H21)) e H6)) x3 x7 (ty3_conv g e (THead (Bind 
50729 Abst) x6 x7) (THead (Bind Abst) x6 x9) (ty3_bind g e x6 x10 H25 Abst x7 x9 
50730 H26 x11 H27) x3 x5 H19 (pc3_pr3_r e x5 (THead (Bind Abst) x6 x7) 
50731 H20))))))))))) (ty3_gen_bind g Abst e x6 x7 x8 (ty3_sred_pr3 e x5 (THead 
50732 (Bind Abst) x6 x7) H20 g x8 H23))))) (ty3_correct g e x3 x5 H19))))))) 
50733 (pc3_gen_lift_abst c0 x5 t u h x1 H18 e H6))))) H17))))) H14)) w H8))))) x0 
50734 H7)))))) (lift_gen_flat Appl w v x0 h x1 H5)))))))))))))))) (\lambda (c0: 
50735 C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H1: (ty3 g c0 t2 t3)).(\lambda 
50736 (H2: ((\forall (x: T).(\forall (x0: nat).((eq T t2 (lift h x0 x)) \to 
50737 (\forall (e: C).((drop h x0 c0 e) \to (ex2 T (\lambda (t2: T).(pc3 c0 (lift h 
50738 x0 t2) t3)) (\lambda (t2: T).(ty3 g e x t2)))))))))).(\lambda (t0: 
50739 T).(\lambda (H3: (ty3 g c0 t3 t0)).(\lambda (H4: ((\forall (x: T).(\forall 
50740 (x0: nat).((eq T t3 (lift h x0 x)) \to (\forall (e: C).((drop h x0 c0 e) \to 
50741 (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x0 t2) t0)) (\lambda (t2: T).(ty3 g e 
50742 x t2)))))))))).(\lambda (x0: T).(\lambda (x1: nat).(\lambda (H5: (eq T (THead 
50743 (Flat Cast) t3 t2) (lift h x1 x0))).(\lambda (e: C).(\lambda (H6: (drop h x1 
50744 c0 e)).(ex3_2_ind T T (\lambda (y0: T).(\lambda (z: T).(eq T x0 (THead (Flat 
50745 Cast) y0 z)))) (\lambda (y0: T).(\lambda (_: T).(eq T t3 (lift h x1 y0)))) 
50746 (\lambda (_: T).(\lambda (z: T).(eq T t2 (lift h x1 z)))) (ex2 T (\lambda 
50747 (t4: T).(pc3 c0 (lift h x1 t4) t3)) (\lambda (t4: T).(ty3 g e x0 t4))) 
50748 (\lambda (x2: T).(\lambda (x3: T).(\lambda (H7: (eq T x0 (THead (Flat Cast) 
50749 x2 x3))).(\lambda (H8: (eq T t3 (lift h x1 x2))).(\lambda (H9: (eq T t2 (lift 
50750 h x1 x3))).(eq_ind_r T (THead (Flat Cast) x2 x3) (\lambda (t: T).(ex2 T 
50751 (\lambda (t4: T).(pc3 c0 (lift h x1 t4) t3)) (\lambda (t4: T).(ty3 g e t 
50752 t4)))) (let H10 \def (eq_ind T t3 (\lambda (t: T).(\forall (x: T).(\forall 
50753 (x0: nat).((eq T t (lift h x0 x)) \to (\forall (e: C).((drop h x0 c0 e) \to 
50754 (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x0 t2) t0)) (\lambda (t2: T).(ty3 g e 
50755 x t2))))))))) H4 (lift h x1 x2) H8) in (let H11 \def (eq_ind T t3 (\lambda 
50756 (t: T).(ty3 g c0 t t0)) H3 (lift h x1 x2) H8) in (let H12 \def (eq_ind T t3 
50757 (\lambda (t: T).(\forall (x: T).(\forall (x0: nat).((eq T t2 (lift h x0 x)) 
50758 \to (\forall (e: C).((drop h x0 c0 e) \to (ex2 T (\lambda (t2: T).(pc3 c0 
50759 (lift h x0 t2) t)) (\lambda (t2: T).(ty3 g e x t2))))))))) H2 (lift h x1 x2) 
50760 H8) in (let H13 \def (eq_ind T t3 (\lambda (t: T).(ty3 g c0 t2 t)) H1 (lift h 
50761 x1 x2) H8) in (eq_ind_r T (lift h x1 x2) (\lambda (t: T).(ex2 T (\lambda (t4: 
50762 T).(pc3 c0 (lift h x1 t4) t)) (\lambda (t4: T).(ty3 g e (THead (Flat Cast) x2 
50763 x3) t4)))) (let H14 \def (eq_ind T t2 (\lambda (t: T).(ty3 g c0 t (lift h x1 
50764 x2))) H13 (lift h x1 x3) H9) in (let H15 \def (eq_ind T t2 (\lambda (t: 
50765 T).(\forall (x: T).(\forall (x0: nat).((eq T t (lift h x0 x)) \to (\forall 
50766 (e: C).((drop h x0 c0 e) \to (ex2 T (\lambda (t2: T).(pc3 c0 (lift h x0 t2) 
50767 (lift h x1 x2))) (\lambda (t2: T).(ty3 g e x t2))))))))) H12 (lift h x1 x3) 
50768 H9) in (let H16 \def (H15 x3 x1 (refl_equal T (lift h x1 x3)) e H6) in 
50769 (ex2_ind T (\lambda (t4: T).(pc3 c0 (lift h x1 t4) (lift h x1 x2))) (\lambda 
50770 (t4: T).(ty3 g e x3 t4)) (ex2 T (\lambda (t4: T).(pc3 c0 (lift h x1 t4) (lift 
50771 h x1 x2))) (\lambda (t4: T).(ty3 g e (THead (Flat Cast) x2 x3) t4))) (\lambda 
50772 (x4: T).(\lambda (H17: (pc3 c0 (lift h x1 x4) (lift h x1 x2))).(\lambda (H18: 
50773 (ty3 g e x3 x4)).(let H19 \def (H10 x2 x1 (refl_equal T (lift h x1 x2)) e H6) 
50774 in (ex2_ind T (\lambda (t4: T).(pc3 c0 (lift h x1 t4) t0)) (\lambda (t4: 
50775 T).(ty3 g e x2 t4)) (ex2 T (\lambda (t4: T).(pc3 c0 (lift h x1 t4) (lift h x1 
50776 x2))) (\lambda (t4: T).(ty3 g e (THead (Flat Cast) x2 x3) t4))) (\lambda (x5: 
50777 T).(\lambda (_: (pc3 c0 (lift h x1 x5) t0)).(\lambda (H21: (ty3 g e x2 
50778 x5)).(ex_intro2 T (\lambda (t4: T).(pc3 c0 (lift h x1 t4) (lift h x1 x2))) 
50779 (\lambda (t4: T).(ty3 g e (THead (Flat Cast) x2 x3) t4)) x2 (pc3_refl c0 
50780 (lift h x1 x2)) (ty3_cast g e x3 x2 (ty3_conv g e x2 x5 H21 x3 x4 H18 
50781 (pc3_gen_lift c0 x4 x2 h x1 H17 e H6)) x5 H21))))) H19))))) H16)))) t3 
50782 H8))))) x0 H7)))))) (lift_gen_flat Cast t3 t2 x0 h x1 H5))))))))))))))) c y x 
50783 H0))))) H))))))).
50784
50785 theorem ty3_tred:
50786  \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t1: T).((ty3 g c u 
50787 t1) \to (\forall (t2: T).((pr3 c t1 t2) \to (ty3 g c u t2)))))))
50788 \def
50789  \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (H: 
50790 (ty3 g c u t1)).(\lambda (t2: T).(\lambda (H0: (pr3 c t1 t2)).(ex_ind T 
50791 (\lambda (t: T).(ty3 g c t1 t)) (ty3 g c u t2) (\lambda (x: T).(\lambda (H1: 
50792 (ty3 g c t1 x)).(ty3_conv g c t2 x (ty3_sred_pr3 c t1 t2 H0 g x H1) u t1 H 
50793 (pc3_pr3_r c t1 t2 H0)))) (ty3_correct g c u t1 H)))))))).
50794
50795 theorem ty3_sconv_pc3:
50796  \forall (g: G).(\forall (c: C).(\forall (u1: T).(\forall (t1: T).((ty3 g c 
50797 u1 t1) \to (\forall (u2: T).(\forall (t2: T).((ty3 g c u2 t2) \to ((pc3 c u1 
50798 u2) \to (pc3 c t1 t2)))))))))
50799 \def
50800  \lambda (g: G).(\lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda 
50801 (H: (ty3 g c u1 t1)).(\lambda (u2: T).(\lambda (t2: T).(\lambda (H0: (ty3 g c 
50802 u2 t2)).(\lambda (H1: (pc3 c u1 u2)).(let H2 \def H1 in (ex2_ind T (\lambda 
50803 (t: T).(pr3 c u1 t)) (\lambda (t: T).(pr3 c u2 t)) (pc3 c t1 t2) (\lambda (x: 
50804 T).(\lambda (H3: (pr3 c u1 x)).(\lambda (H4: (pr3 c u2 x)).(ty3_unique g c x 
50805 t1 (ty3_sred_pr3 c u1 x H3 g t1 H) t2 (ty3_sred_pr3 c u2 x H4 g t2 H0))))) 
50806 H2)))))))))).
50807
50808 theorem ty3_sred_back:
50809  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t0: T).((ty3 g c 
50810 t1 t0) \to (\forall (t2: T).((pr3 c t1 t2) \to (\forall (t: T).((ty3 g c t2 
50811 t) \to (ty3 g c t1 t)))))))))
50812 \def
50813  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t0: T).(\lambda 
50814 (H: (ty3 g c t1 t0)).(\lambda (t2: T).(\lambda (H0: (pr3 c t1 t2)).(\lambda 
50815 (t: T).(\lambda (H1: (ty3 g c t2 t)).(ex_ind T (\lambda (t3: T).(ty3 g c t 
50816 t3)) (ty3 g c t1 t) (\lambda (x: T).(\lambda (H2: (ty3 g c t x)).(ty3_conv g 
50817 c t x H2 t1 t0 H (ty3_unique g c t2 t0 (ty3_sred_pr3 c t1 t2 H0 g t0 H) t 
50818 H1)))) (ty3_correct g c t2 t H1)))))))))).
50819
50820 theorem ty3_sconv:
50821  \forall (g: G).(\forall (c: C).(\forall (u1: T).(\forall (t1: T).((ty3 g c 
50822 u1 t1) \to (\forall (u2: T).(\forall (t2: T).((ty3 g c u2 t2) \to ((pc3 c u1 
50823 u2) \to (ty3 g c u1 t2)))))))))
50824 \def
50825  \lambda (g: G).(\lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda 
50826 (H: (ty3 g c u1 t1)).(\lambda (u2: T).(\lambda (t2: T).(\lambda (H0: (ty3 g c 
50827 u2 t2)).(\lambda (H1: (pc3 c u1 u2)).(let H2 \def H1 in (ex2_ind T (\lambda 
50828 (t: T).(pr3 c u1 t)) (\lambda (t: T).(pr3 c u2 t)) (ty3 g c u1 t2) (\lambda 
50829 (x: T).(\lambda (H3: (pr3 c u1 x)).(\lambda (H4: (pr3 c u2 x)).(ty3_sred_back 
50830 g c u1 t1 H x H3 t2 (ty3_sred_pr3 c u2 x H4 g t2 H0))))) H2)))))))))).
50831
50832 theorem ty3_tau0:
50833  \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t1: T).((ty3 g c u 
50834 t1) \to (\forall (t2: T).((tau0 g c u t2) \to (ty3 g c u t2)))))))
50835 \def
50836  \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (H: 
50837 (ty3 g c u t1)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda (_: 
50838 T).(\forall (t2: T).((tau0 g c0 t t2) \to (ty3 g c0 t t2)))))) (\lambda (c0: 
50839 C).(\lambda (t2: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t2 t)).(\lambda 
50840 (_: ((\forall (t3: T).((tau0 g c0 t2 t3) \to (ty3 g c0 t2 t3))))).(\lambda 
50841 (u0: T).(\lambda (t3: T).(\lambda (_: (ty3 g c0 u0 t3)).(\lambda (H3: 
50842 ((\forall (t2: T).((tau0 g c0 u0 t2) \to (ty3 g c0 u0 t2))))).(\lambda (_: 
50843 (pc3 c0 t3 t2)).(\lambda (t0: T).(\lambda (H5: (tau0 g c0 u0 t0)).(H3 t0 
50844 H5))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda (t2: T).(\lambda 
50845 (H0: (tau0 g c0 (TSort m) t2)).(let H1 \def (match H0 return (\lambda (c: 
50846 C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (tau0 ? c t t0)).((eq C c 
50847 c0) \to ((eq T t (TSort m)) \to ((eq T t0 t2) \to (ty3 g c0 (TSort m) 
50848 t2)))))))) with [(tau0_sort c0 n) \Rightarrow (\lambda (H0: (eq C c0 
50849 c0)).(\lambda (H1: (eq T (TSort n) (TSort m))).(\lambda (H2: (eq T (TSort 
50850 (next g n)) t2)).(eq_ind C c0 (\lambda (_: C).((eq T (TSort n) (TSort m)) \to 
50851 ((eq T (TSort (next g n)) t2) \to (ty3 g c0 (TSort m) t2)))) (\lambda (H3: 
50852 (eq T (TSort n) (TSort m))).(let H4 \def (f_equal T nat (\lambda (e: 
50853 T).(match e return (\lambda (_: T).nat) with [(TSort n) \Rightarrow n | 
50854 (TLRef _) \Rightarrow n | (THead _ _ _) \Rightarrow n])) (TSort n) (TSort m) 
50855 H3) in (eq_ind nat m (\lambda (n0: nat).((eq T (TSort (next g n0)) t2) \to 
50856 (ty3 g c0 (TSort m) t2))) (\lambda (H5: (eq T (TSort (next g m)) t2)).(eq_ind 
50857 T (TSort (next g m)) (\lambda (t: T).(ty3 g c0 (TSort m) t)) (ty3_sort g c0 
50858 m) t2 H5)) n (sym_eq nat n m H4)))) c0 (sym_eq C c0 c0 H0) H1 H2)))) | 
50859 (tau0_abbr c0 d v i H0 w H1) \Rightarrow (\lambda (H2: (eq C c0 c0)).(\lambda 
50860 (H3: (eq T (TLRef i) (TSort m))).(\lambda (H4: (eq T (lift (S i) O w) 
50861 t2)).(eq_ind C c0 (\lambda (c: C).((eq T (TLRef i) (TSort m)) \to ((eq T 
50862 (lift (S i) O w) t2) \to ((getl i c (CHead d (Bind Abbr) v)) \to ((tau0 g d v 
50863 w) \to (ty3 g c0 (TSort m) t2)))))) (\lambda (H5: (eq T (TLRef i) (TSort 
50864 m))).(let H6 \def (eq_ind T (TLRef i) (\lambda (e: T).(match e return 
50865 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
50866 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (TSort m) H5) in 
50867 (False_ind ((eq T (lift (S i) O w) t2) \to ((getl i c0 (CHead d (Bind Abbr) 
50868 v)) \to ((tau0 g d v w) \to (ty3 g c0 (TSort m) t2)))) H6))) c0 (sym_eq C c0 
50869 c0 H2) H3 H4 H0 H1)))) | (tau0_abst c0 d v i H0 w H1) \Rightarrow (\lambda 
50870 (H2: (eq C c0 c0)).(\lambda (H3: (eq T (TLRef i) (TSort m))).(\lambda (H4: 
50871 (eq T (lift (S i) O v) t2)).(eq_ind C c0 (\lambda (c: C).((eq T (TLRef i) 
50872 (TSort m)) \to ((eq T (lift (S i) O v) t2) \to ((getl i c (CHead d (Bind 
50873 Abst) v)) \to ((tau0 g d v w) \to (ty3 g c0 (TSort m) t2)))))) (\lambda (H5: 
50874 (eq T (TLRef i) (TSort m))).(let H6 \def (eq_ind T (TLRef i) (\lambda (e: 
50875 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | 
50876 (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (TSort m) 
50877 H5) in (False_ind ((eq T (lift (S i) O v) t2) \to ((getl i c0 (CHead d (Bind 
50878 Abst) v)) \to ((tau0 g d v w) \to (ty3 g c0 (TSort m) t2)))) H6))) c0 (sym_eq 
50879 C c0 c0 H2) H3 H4 H0 H1)))) | (tau0_bind b c0 v t1 t0 H0) \Rightarrow 
50880 (\lambda (H1: (eq C c0 c0)).(\lambda (H2: (eq T (THead (Bind b) v t1) (TSort 
50881 m))).(\lambda (H3: (eq T (THead (Bind b) v t0) t2)).(eq_ind C c0 (\lambda (c: 
50882 C).((eq T (THead (Bind b) v t1) (TSort m)) \to ((eq T (THead (Bind b) v t0) 
50883 t2) \to ((tau0 g (CHead c (Bind b) v) t1 t0) \to (ty3 g c0 (TSort m) t2))))) 
50884 (\lambda (H4: (eq T (THead (Bind b) v t1) (TSort m))).(let H5 \def (eq_ind T 
50885 (THead (Bind b) v t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
50886 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ 
50887 _) \Rightarrow True])) I (TSort m) H4) in (False_ind ((eq T (THead (Bind b) v 
50888 t0) t2) \to ((tau0 g (CHead c0 (Bind b) v) t1 t0) \to (ty3 g c0 (TSort m) 
50889 t2))) H5))) c0 (sym_eq C c0 c0 H1) H2 H3 H0)))) | (tau0_appl c0 v t1 t0 H0) 
50890 \Rightarrow (\lambda (H1: (eq C c0 c0)).(\lambda (H2: (eq T (THead (Flat 
50891 Appl) v t1) (TSort m))).(\lambda (H3: (eq T (THead (Flat Appl) v t0) 
50892 t2)).(eq_ind C c0 (\lambda (c: C).((eq T (THead (Flat Appl) v t1) (TSort m)) 
50893 \to ((eq T (THead (Flat Appl) v t0) t2) \to ((tau0 g c t1 t0) \to (ty3 g c0 
50894 (TSort m) t2))))) (\lambda (H4: (eq T (THead (Flat Appl) v t1) (TSort 
50895 m))).(let H5 \def (eq_ind T (THead (Flat Appl) v t1) (\lambda (e: T).(match e 
50896 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
50897 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort m) H4) in 
50898 (False_ind ((eq T (THead (Flat Appl) v t0) t2) \to ((tau0 g c0 t1 t0) \to 
50899 (ty3 g c0 (TSort m) t2))) H5))) c0 (sym_eq C c0 c0 H1) H2 H3 H0)))) | 
50900 (tau0_cast c0 v1 v2 H0 t1 t0 H1) \Rightarrow (\lambda (H2: (eq C c0 
50901 c0)).(\lambda (H3: (eq T (THead (Flat Cast) v1 t1) (TSort m))).(\lambda (H4: 
50902 (eq T (THead (Flat Cast) v2 t0) t2)).(eq_ind C c0 (\lambda (c: C).((eq T 
50903 (THead (Flat Cast) v1 t1) (TSort m)) \to ((eq T (THead (Flat Cast) v2 t0) t2) 
50904 \to ((tau0 g c v1 v2) \to ((tau0 g c t1 t0) \to (ty3 g c0 (TSort m) t2)))))) 
50905 (\lambda (H5: (eq T (THead (Flat Cast) v1 t1) (TSort m))).(let H6 \def 
50906 (eq_ind T (THead (Flat Cast) v1 t1) (\lambda (e: T).(match e return (\lambda 
50907 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
50908 | (THead _ _ _) \Rightarrow True])) I (TSort m) H5) in (False_ind ((eq T 
50909 (THead (Flat Cast) v2 t0) t2) \to ((tau0 g c0 v1 v2) \to ((tau0 g c0 t1 t0) 
50910 \to (ty3 g c0 (TSort m) t2)))) H6))) c0 (sym_eq C c0 c0 H2) H3 H4 H0 H1))))]) 
50911 in (H1 (refl_equal C c0) (refl_equal T (TSort m)) (refl_equal T t2))))))) 
50912 (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda 
50913 (H0: (getl n c0 (CHead d (Bind Abbr) u0))).(\lambda (t: T).(\lambda (_: (ty3 
50914 g d u0 t)).(\lambda (H2: ((\forall (t2: T).((tau0 g d u0 t2) \to (ty3 g d u0 
50915 t2))))).(\lambda (t2: T).(\lambda (H3: (tau0 g c0 (TLRef n) t2)).(let H4 \def 
50916 (match H3 return (\lambda (c: C).(\lambda (t: T).(\lambda (t0: T).(\lambda 
50917 (_: (tau0 ? c t t0)).((eq C c c0) \to ((eq T t (TLRef n)) \to ((eq T t0 t2) 
50918 \to (ty3 g c0 (TLRef n) t2)))))))) with [(tau0_sort c0 n0) \Rightarrow 
50919 (\lambda (H3: (eq C c0 c0)).(\lambda (H4: (eq T (TSort n0) (TLRef 
50920 n))).(\lambda (H5: (eq T (TSort (next g n0)) t2)).(eq_ind C c0 (\lambda (_: 
50921 C).((eq T (TSort n0) (TLRef n)) \to ((eq T (TSort (next g n0)) t2) \to (ty3 g 
50922 c0 (TLRef n) t2)))) (\lambda (H6: (eq T (TSort n0) (TLRef n))).(let H7 \def 
50923 (eq_ind T (TSort n0) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
50924 with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ 
50925 _) \Rightarrow False])) I (TLRef n) H6) in (False_ind ((eq T (TSort (next g 
50926 n0)) t2) \to (ty3 g c0 (TLRef n) t2)) H7))) c0 (sym_eq C c0 c0 H3) H4 H5)))) 
50927 | (tau0_abbr c0 d0 v i H3 w H4) \Rightarrow (\lambda (H5: (eq C c0 
50928 c0)).(\lambda (H6: (eq T (TLRef i) (TLRef n))).(\lambda (H7: (eq T (lift (S 
50929 i) O w) t2)).(eq_ind C c0 (\lambda (c: C).((eq T (TLRef i) (TLRef n)) \to 
50930 ((eq T (lift (S i) O w) t2) \to ((getl i c (CHead d0 (Bind Abbr) v)) \to 
50931 ((tau0 g d0 v w) \to (ty3 g c0 (TLRef n) t2)))))) (\lambda (H8: (eq T (TLRef 
50932 i) (TLRef n))).(let H9 \def (f_equal T nat (\lambda (e: T).(match e return 
50933 (\lambda (_: T).nat) with [(TSort _) \Rightarrow i | (TLRef n) \Rightarrow n 
50934 | (THead _ _ _) \Rightarrow i])) (TLRef i) (TLRef n) H8) in (eq_ind nat n 
50935 (\lambda (n0: nat).((eq T (lift (S n0) O w) t2) \to ((getl n0 c0 (CHead d0 
50936 (Bind Abbr) v)) \to ((tau0 g d0 v w) \to (ty3 g c0 (TLRef n) t2))))) (\lambda 
50937 (H10: (eq T (lift (S n) O w) t2)).(eq_ind T (lift (S n) O w) (\lambda (t: 
50938 T).((getl n c0 (CHead d0 (Bind Abbr) v)) \to ((tau0 g d0 v w) \to (ty3 g c0 
50939 (TLRef n) t)))) (\lambda (H11: (getl n c0 (CHead d0 (Bind Abbr) v))).(\lambda 
50940 (H12: (tau0 g d0 v w)).(let H13 \def (eq_ind C (CHead d (Bind Abbr) u0) 
50941 (\lambda (c: C).(getl n c0 c)) H0 (CHead d0 (Bind Abbr) v) (getl_mono c0 
50942 (CHead d (Bind Abbr) u0) n H0 (CHead d0 (Bind Abbr) v) H11)) in (let H14 \def 
50943 (f_equal C C (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort 
50944 _) \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind Abbr) u0) 
50945 (CHead d0 (Bind Abbr) v) (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead 
50946 d0 (Bind Abbr) v) H11)) in ((let H15 \def (f_equal C T (\lambda (e: C).(match 
50947 e return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) 
50948 \Rightarrow t])) (CHead d (Bind Abbr) u0) (CHead d0 (Bind Abbr) v) (getl_mono 
50949 c0 (CHead d (Bind Abbr) u0) n H0 (CHead d0 (Bind Abbr) v) H11)) in (\lambda 
50950 (H16: (eq C d d0)).(let H17 \def (eq_ind_r T v (\lambda (t: T).(getl n c0 
50951 (CHead d0 (Bind Abbr) t))) H13 u0 H15) in (let H18 \def (eq_ind_r T v 
50952 (\lambda (t: T).(tau0 g d0 t w)) H12 u0 H15) in (let H19 \def (eq_ind_r C d0 
50953 (\lambda (c: C).(getl n c0 (CHead c (Bind Abbr) u0))) H17 d H16) in (let H20 
50954 \def (eq_ind_r C d0 (\lambda (c: C).(tau0 g c u0 w)) H18 d H16) in (ty3_abbr 
50955 g n c0 d u0 H19 w (H2 w H20)))))))) H14))))) t2 H10)) i (sym_eq nat i n 
50956 H9)))) c0 (sym_eq C c0 c0 H5) H6 H7 H3 H4)))) | (tau0_abst c0 d0 v i H3 w H4) 
50957 \Rightarrow (\lambda (H5: (eq C c0 c0)).(\lambda (H6: (eq T (TLRef i) (TLRef 
50958 n))).(\lambda (H7: (eq T (lift (S i) O v) t2)).(eq_ind C c0 (\lambda (c: 
50959 C).((eq T (TLRef i) (TLRef n)) \to ((eq T (lift (S i) O v) t2) \to ((getl i c 
50960 (CHead d0 (Bind Abst) v)) \to ((tau0 g d0 v w) \to (ty3 g c0 (TLRef n) 
50961 t2)))))) (\lambda (H8: (eq T (TLRef i) (TLRef n))).(let H9 \def (f_equal T 
50962 nat (\lambda (e: T).(match e return (\lambda (_: T).nat) with [(TSort _) 
50963 \Rightarrow i | (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow i])) 
50964 (TLRef i) (TLRef n) H8) in (eq_ind nat n (\lambda (n0: nat).((eq T (lift (S 
50965 n0) O v) t2) \to ((getl n0 c0 (CHead d0 (Bind Abst) v)) \to ((tau0 g d0 v w) 
50966 \to (ty3 g c0 (TLRef n) t2))))) (\lambda (H10: (eq T (lift (S n) O v) 
50967 t2)).(eq_ind T (lift (S n) O v) (\lambda (t: T).((getl n c0 (CHead d0 (Bind 
50968 Abst) v)) \to ((tau0 g d0 v w) \to (ty3 g c0 (TLRef n) t)))) (\lambda (H11: 
50969 (getl n c0 (CHead d0 (Bind Abst) v))).(\lambda (_: (tau0 g d0 v w)).(let H2 
50970 \def (eq_ind C (CHead d (Bind Abbr) u0) (\lambda (c: C).(getl n c0 c)) H0 
50971 (CHead d0 (Bind Abst) v) (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead 
50972 d0 (Bind Abst) v) H11)) in (let H13 \def (eq_ind C (CHead d (Bind Abbr) u0) 
50973 (\lambda (ee: C).(match ee return (\lambda (_: C).Prop) with [(CSort _) 
50974 \Rightarrow False | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
50975 K).Prop) with [(Bind b) \Rightarrow (match b return (\lambda (_: B).Prop) 
50976 with [Abbr \Rightarrow True | Abst \Rightarrow False | Void \Rightarrow 
50977 False]) | (Flat _) \Rightarrow False])])) I (CHead d0 (Bind Abst) v) 
50978 (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead d0 (Bind Abst) v) H11)) in 
50979 (False_ind (ty3 g c0 (TLRef n) (lift (S n) O v)) H13))))) t2 H10)) i (sym_eq 
50980 nat i n H9)))) c0 (sym_eq C c0 c0 H5) H6 H7 H3 H4)))) | (tau0_bind b c0 v t1 
50981 t0 H3) \Rightarrow (\lambda (H4: (eq C c0 c0)).(\lambda (H5: (eq T (THead 
50982 (Bind b) v t1) (TLRef n))).(\lambda (H6: (eq T (THead (Bind b) v t0) 
50983 t2)).(eq_ind C c0 (\lambda (c: C).((eq T (THead (Bind b) v t1) (TLRef n)) \to 
50984 ((eq T (THead (Bind b) v t0) t2) \to ((tau0 g (CHead c (Bind b) v) t1 t0) \to 
50985 (ty3 g c0 (TLRef n) t2))))) (\lambda (H7: (eq T (THead (Bind b) v t1) (TLRef 
50986 n))).(let H8 \def (eq_ind T (THead (Bind b) v t1) (\lambda (e: T).(match e 
50987 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
50988 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) H7) in 
50989 (False_ind ((eq T (THead (Bind b) v t0) t2) \to ((tau0 g (CHead c0 (Bind b) 
50990 v) t1 t0) \to (ty3 g c0 (TLRef n) t2))) H8))) c0 (sym_eq C c0 c0 H4) H5 H6 
50991 H3)))) | (tau0_appl c0 v t1 t0 H3) \Rightarrow (\lambda (H4: (eq C c0 
50992 c0)).(\lambda (H5: (eq T (THead (Flat Appl) v t1) (TLRef n))).(\lambda (H6: 
50993 (eq T (THead (Flat Appl) v t0) t2)).(eq_ind C c0 (\lambda (c: C).((eq T 
50994 (THead (Flat Appl) v t1) (TLRef n)) \to ((eq T (THead (Flat Appl) v t0) t2) 
50995 \to ((tau0 g c t1 t0) \to (ty3 g c0 (TLRef n) t2))))) (\lambda (H7: (eq T 
50996 (THead (Flat Appl) v t1) (TLRef n))).(let H8 \def (eq_ind T (THead (Flat 
50997 Appl) v t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
50998 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
50999 \Rightarrow True])) I (TLRef n) H7) in (False_ind ((eq T (THead (Flat Appl) v 
51000 t0) t2) \to ((tau0 g c0 t1 t0) \to (ty3 g c0 (TLRef n) t2))) H8))) c0 (sym_eq 
51001 C c0 c0 H4) H5 H6 H3)))) | (tau0_cast c0 v1 v2 H3 t1 t0 H4) \Rightarrow 
51002 (\lambda (H5: (eq C c0 c0)).(\lambda (H6: (eq T (THead (Flat Cast) v1 t1) 
51003 (TLRef n))).(\lambda (H7: (eq T (THead (Flat Cast) v2 t0) t2)).(eq_ind C c0 
51004 (\lambda (c: C).((eq T (THead (Flat Cast) v1 t1) (TLRef n)) \to ((eq T (THead 
51005 (Flat Cast) v2 t0) t2) \to ((tau0 g c v1 v2) \to ((tau0 g c t1 t0) \to (ty3 g 
51006 c0 (TLRef n) t2)))))) (\lambda (H8: (eq T (THead (Flat Cast) v1 t1) (TLRef 
51007 n))).(let H9 \def (eq_ind T (THead (Flat Cast) v1 t1) (\lambda (e: T).(match 
51008 e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
51009 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) H8) in 
51010 (False_ind ((eq T (THead (Flat Cast) v2 t0) t2) \to ((tau0 g c0 v1 v2) \to 
51011 ((tau0 g c0 t1 t0) \to (ty3 g c0 (TLRef n) t2)))) H9))) c0 (sym_eq C c0 c0 
51012 H5) H6 H7 H3 H4))))]) in (H4 (refl_equal C c0) (refl_equal T (TLRef n)) 
51013 (refl_equal T t2))))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: 
51014 C).(\lambda (u0: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abst) 
51015 u0))).(\lambda (t: T).(\lambda (H1: (ty3 g d u0 t)).(\lambda (_: ((\forall 
51016 (t2: T).((tau0 g d u0 t2) \to (ty3 g d u0 t2))))).(\lambda (t2: T).(\lambda 
51017 (H3: (tau0 g c0 (TLRef n) t2)).(let H4 \def (match H3 return (\lambda (c: 
51018 C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (tau0 ? c t t0)).((eq C c 
51019 c0) \to ((eq T t (TLRef n)) \to ((eq T t0 t2) \to (ty3 g c0 (TLRef n) 
51020 t2)))))))) with [(tau0_sort c0 n0) \Rightarrow (\lambda (H3: (eq C c0 
51021 c0)).(\lambda (H4: (eq T (TSort n0) (TLRef n))).(\lambda (H5: (eq T (TSort 
51022 (next g n0)) t2)).(eq_ind C c0 (\lambda (_: C).((eq T (TSort n0) (TLRef n)) 
51023 \to ((eq T (TSort (next g n0)) t2) \to (ty3 g c0 (TLRef n) t2)))) (\lambda 
51024 (H6: (eq T (TSort n0) (TLRef n))).(let H7 \def (eq_ind T (TSort n0) (\lambda 
51025 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True 
51026 | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (TLRef 
51027 n) H6) in (False_ind ((eq T (TSort (next g n0)) t2) \to (ty3 g c0 (TLRef n) 
51028 t2)) H7))) c0 (sym_eq C c0 c0 H3) H4 H5)))) | (tau0_abbr c0 d0 v i H3 w H4) 
51029 \Rightarrow (\lambda (H5: (eq C c0 c0)).(\lambda (H6: (eq T (TLRef i) (TLRef 
51030 n))).(\lambda (H7: (eq T (lift (S i) O w) t2)).(eq_ind C c0 (\lambda (c: 
51031 C).((eq T (TLRef i) (TLRef n)) \to ((eq T (lift (S i) O w) t2) \to ((getl i c 
51032 (CHead d0 (Bind Abbr) v)) \to ((tau0 g d0 v w) \to (ty3 g c0 (TLRef n) 
51033 t2)))))) (\lambda (H8: (eq T (TLRef i) (TLRef n))).(let H9 \def (f_equal T 
51034 nat (\lambda (e: T).(match e return (\lambda (_: T).nat) with [(TSort _) 
51035 \Rightarrow i | (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow i])) 
51036 (TLRef i) (TLRef n) H8) in (eq_ind nat n (\lambda (n0: nat).((eq T (lift (S 
51037 n0) O w) t2) \to ((getl n0 c0 (CHead d0 (Bind Abbr) v)) \to ((tau0 g d0 v w) 
51038 \to (ty3 g c0 (TLRef n) t2))))) (\lambda (H10: (eq T (lift (S n) O w) 
51039 t2)).(eq_ind T (lift (S n) O w) (\lambda (t: T).((getl n c0 (CHead d0 (Bind 
51040 Abbr) v)) \to ((tau0 g d0 v w) \to (ty3 g c0 (TLRef n) t)))) (\lambda (H11: 
51041 (getl n c0 (CHead d0 (Bind Abbr) v))).(\lambda (_: (tau0 g d0 v w)).(let H2 
51042 \def (eq_ind C (CHead d (Bind Abst) u0) (\lambda (c: C).(getl n c0 c)) H0 
51043 (CHead d0 (Bind Abbr) v) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead 
51044 d0 (Bind Abbr) v) H11)) in (let H13 \def (eq_ind C (CHead d (Bind Abst) u0) 
51045 (\lambda (ee: C).(match ee return (\lambda (_: C).Prop) with [(CSort _) 
51046 \Rightarrow False | (CHead _ k _) \Rightarrow (match k return (\lambda (_: 
51047 K).Prop) with [(Bind b) \Rightarrow (match b return (\lambda (_: B).Prop) 
51048 with [Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow 
51049 False]) | (Flat _) \Rightarrow False])])) I (CHead d0 (Bind Abbr) v) 
51050 (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead d0 (Bind Abbr) v) H11)) in 
51051 (False_ind (ty3 g c0 (TLRef n) (lift (S n) O w)) H13))))) t2 H10)) i (sym_eq 
51052 nat i n H9)))) c0 (sym_eq C c0 c0 H5) H6 H7 H3 H4)))) | (tau0_abst c0 d0 v i 
51053 H3 w H4) \Rightarrow (\lambda (H5: (eq C c0 c0)).(\lambda (H6: (eq T (TLRef 
51054 i) (TLRef n))).(\lambda (H7: (eq T (lift (S i) O v) t2)).(eq_ind C c0 
51055 (\lambda (c: C).((eq T (TLRef i) (TLRef n)) \to ((eq T (lift (S i) O v) t2) 
51056 \to ((getl i c (CHead d0 (Bind Abst) v)) \to ((tau0 g d0 v w) \to (ty3 g c0 
51057 (TLRef n) t2)))))) (\lambda (H8: (eq T (TLRef i) (TLRef n))).(let H9 \def 
51058 (f_equal T nat (\lambda (e: T).(match e return (\lambda (_: T).nat) with 
51059 [(TSort _) \Rightarrow i | (TLRef n) \Rightarrow n | (THead _ _ _) 
51060 \Rightarrow i])) (TLRef i) (TLRef n) H8) in (eq_ind nat n (\lambda (n0: 
51061 nat).((eq T (lift (S n0) O v) t2) \to ((getl n0 c0 (CHead d0 (Bind Abst) v)) 
51062 \to ((tau0 g d0 v w) \to (ty3 g c0 (TLRef n) t2))))) (\lambda (H10: (eq T 
51063 (lift (S n) O v) t2)).(eq_ind T (lift (S n) O v) (\lambda (t: T).((getl n c0 
51064 (CHead d0 (Bind Abst) v)) \to ((tau0 g d0 v w) \to (ty3 g c0 (TLRef n) t)))) 
51065 (\lambda (H11: (getl n c0 (CHead d0 (Bind Abst) v))).(\lambda (H12: (tau0 g 
51066 d0 v w)).(let H2 \def (eq_ind C (CHead d (Bind Abst) u0) (\lambda (c: 
51067 C).(getl n c0 c)) H0 (CHead d0 (Bind Abst) v) (getl_mono c0 (CHead d (Bind 
51068 Abst) u0) n H0 (CHead d0 (Bind Abst) v) H11)) in (let H13 \def (f_equal C C 
51069 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
51070 \Rightarrow d | (CHead c _ _) \Rightarrow c])) (CHead d (Bind Abst) u0) 
51071 (CHead d0 (Bind Abst) v) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead 
51072 d0 (Bind Abst) v) H11)) in ((let H14 \def (f_equal C T (\lambda (e: C).(match 
51073 e return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t) 
51074 \Rightarrow t])) (CHead d (Bind Abst) u0) (CHead d0 (Bind Abst) v) (getl_mono 
51075 c0 (CHead d (Bind Abst) u0) n H0 (CHead d0 (Bind Abst) v) H11)) in (\lambda 
51076 (H15: (eq C d d0)).(let H16 \def (eq_ind_r T v (\lambda (t: T).(getl n c0 
51077 (CHead d0 (Bind Abst) t))) H2 u0 H14) in (let H17 \def (eq_ind_r T v (\lambda 
51078 (t: T).(tau0 g d0 t w)) H12 u0 H14) in (eq_ind T u0 (\lambda (t: T).(ty3 g c0 
51079 (TLRef n) (lift (S n) O t))) (let H18 \def (eq_ind_r C d0 (\lambda (c: 
51080 C).(getl n c0 (CHead c (Bind Abst) u0))) H16 d H15) in (let H19 \def 
51081 (eq_ind_r C d0 (\lambda (c: C).(tau0 g c u0 w)) H17 d H15) in (ty3_abst g n 
51082 c0 d u0 H18 t H1))) v H14))))) H13))))) t2 H10)) i (sym_eq nat i n H9)))) c0 
51083 (sym_eq C c0 c0 H5) H6 H7 H3 H4)))) | (tau0_bind b c0 v t1 t0 H3) \Rightarrow 
51084 (\lambda (H4: (eq C c0 c0)).(\lambda (H5: (eq T (THead (Bind b) v t1) (TLRef 
51085 n))).(\lambda (H6: (eq T (THead (Bind b) v t0) t2)).(eq_ind C c0 (\lambda (c: 
51086 C).((eq T (THead (Bind b) v t1) (TLRef n)) \to ((eq T (THead (Bind b) v t0) 
51087 t2) \to ((tau0 g (CHead c (Bind b) v) t1 t0) \to (ty3 g c0 (TLRef n) t2))))) 
51088 (\lambda (H7: (eq T (THead (Bind b) v t1) (TLRef n))).(let H8 \def (eq_ind T 
51089 (THead (Bind b) v t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) 
51090 with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ 
51091 _) \Rightarrow True])) I (TLRef n) H7) in (False_ind ((eq T (THead (Bind b) v 
51092 t0) t2) \to ((tau0 g (CHead c0 (Bind b) v) t1 t0) \to (ty3 g c0 (TLRef n) 
51093 t2))) H8))) c0 (sym_eq C c0 c0 H4) H5 H6 H3)))) | (tau0_appl c0 v t1 t0 H3) 
51094 \Rightarrow (\lambda (H4: (eq C c0 c0)).(\lambda (H5: (eq T (THead (Flat 
51095 Appl) v t1) (TLRef n))).(\lambda (H6: (eq T (THead (Flat Appl) v t0) 
51096 t2)).(eq_ind C c0 (\lambda (c: C).((eq T (THead (Flat Appl) v t1) (TLRef n)) 
51097 \to ((eq T (THead (Flat Appl) v t0) t2) \to ((tau0 g c t1 t0) \to (ty3 g c0 
51098 (TLRef n) t2))))) (\lambda (H7: (eq T (THead (Flat Appl) v t1) (TLRef 
51099 n))).(let H8 \def (eq_ind T (THead (Flat Appl) v t1) (\lambda (e: T).(match e 
51100 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
51101 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) H7) in 
51102 (False_ind ((eq T (THead (Flat Appl) v t0) t2) \to ((tau0 g c0 t1 t0) \to 
51103 (ty3 g c0 (TLRef n) t2))) H8))) c0 (sym_eq C c0 c0 H4) H5 H6 H3)))) | 
51104 (tau0_cast c0 v1 v2 H3 t1 t0 H4) \Rightarrow (\lambda (H5: (eq C c0 
51105 c0)).(\lambda (H6: (eq T (THead (Flat Cast) v1 t1) (TLRef n))).(\lambda (H7: 
51106 (eq T (THead (Flat Cast) v2 t0) t2)).(eq_ind C c0 (\lambda (c: C).((eq T 
51107 (THead (Flat Cast) v1 t1) (TLRef n)) \to ((eq T (THead (Flat Cast) v2 t0) t2) 
51108 \to ((tau0 g c v1 v2) \to ((tau0 g c t1 t0) \to (ty3 g c0 (TLRef n) t2)))))) 
51109 (\lambda (H8: (eq T (THead (Flat Cast) v1 t1) (TLRef n))).(let H9 \def 
51110 (eq_ind T (THead (Flat Cast) v1 t1) (\lambda (e: T).(match e return (\lambda 
51111 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
51112 | (THead _ _ _) \Rightarrow True])) I (TLRef n) H8) in (False_ind ((eq T 
51113 (THead (Flat Cast) v2 t0) t2) \to ((tau0 g c0 v1 v2) \to ((tau0 g c0 t1 t0) 
51114 \to (ty3 g c0 (TLRef n) t2)))) H9))) c0 (sym_eq C c0 c0 H5) H6 H7 H3 H4))))]) 
51115 in (H4 (refl_equal C c0) (refl_equal T (TLRef n)) (refl_equal T 
51116 t2))))))))))))) (\lambda (c0: C).(\lambda (u0: T).(\lambda (t: T).(\lambda 
51117 (H0: (ty3 g c0 u0 t)).(\lambda (_: ((\forall (t2: T).((tau0 g c0 u0 t2) \to 
51118 (ty3 g c0 u0 t2))))).(\lambda (b: B).(\lambda (t2: T).(\lambda (t3: 
51119 T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u0) t2 t3)).(\lambda (H3: ((\forall 
51120 (t3: T).((tau0 g (CHead c0 (Bind b) u0) t2 t3) \to (ty3 g (CHead c0 (Bind b) 
51121 u0) t2 t3))))).(\lambda (t0: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u0) t3 
51122 t0)).(\lambda (_: ((\forall (t2: T).((tau0 g (CHead c0 (Bind b) u0) t3 t2) 
51123 \to (ty3 g (CHead c0 (Bind b) u0) t3 t2))))).(\lambda (t4: T).(\lambda (H6: 
51124 (tau0 g c0 (THead (Bind b) u0 t2) t4)).(let H7 \def (match H6 return (\lambda 
51125 (c: C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (tau0 ? c t t0)).((eq C 
51126 c c0) \to ((eq T t (THead (Bind b) u0 t2)) \to ((eq T t0 t4) \to (ty3 g c0 
51127 (THead (Bind b) u0 t2) t4)))))))) with [(tau0_sort c0 n) \Rightarrow (\lambda 
51128 (H6: (eq C c0 c0)).(\lambda (H7: (eq T (TSort n) (THead (Bind b) u0 
51129 t2))).(\lambda (H8: (eq T (TSort (next g n)) t4)).(eq_ind C c0 (\lambda (_: 
51130 C).((eq T (TSort n) (THead (Bind b) u0 t2)) \to ((eq T (TSort (next g n)) t4) 
51131 \to (ty3 g c0 (THead (Bind b) u0 t2) t4)))) (\lambda (H9: (eq T (TSort n) 
51132 (THead (Bind b) u0 t2))).(let H10 \def (eq_ind T (TSort n) (\lambda (e: 
51133 T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | 
51134 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (THead 
51135 (Bind b) u0 t2) H9) in (False_ind ((eq T (TSort (next g n)) t4) \to (ty3 g c0 
51136 (THead (Bind b) u0 t2) t4)) H10))) c0 (sym_eq C c0 c0 H6) H7 H8)))) | 
51137 (tau0_abbr c0 d v i H6 w H7) \Rightarrow (\lambda (H8: (eq C c0 c0)).(\lambda 
51138 (H9: (eq T (TLRef i) (THead (Bind b) u0 t2))).(\lambda (H10: (eq T (lift (S 
51139 i) O w) t4)).(eq_ind C c0 (\lambda (c: C).((eq T (TLRef i) (THead (Bind b) u0 
51140 t2)) \to ((eq T (lift (S i) O w) t4) \to ((getl i c (CHead d (Bind Abbr) v)) 
51141 \to ((tau0 g d v w) \to (ty3 g c0 (THead (Bind b) u0 t2) t4)))))) (\lambda 
51142 (H11: (eq T (TLRef i) (THead (Bind b) u0 t2))).(let H12 \def (eq_ind T (TLRef 
51143 i) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
51144 \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow 
51145 False])) I (THead (Bind b) u0 t2) H11) in (False_ind ((eq T (lift (S i) O w) 
51146 t4) \to ((getl i c0 (CHead d (Bind Abbr) v)) \to ((tau0 g d v w) \to (ty3 g 
51147 c0 (THead (Bind b) u0 t2) t4)))) H12))) c0 (sym_eq C c0 c0 H8) H9 H10 H6 
51148 H7)))) | (tau0_abst c0 d v i H6 w H7) \Rightarrow (\lambda (H8: (eq C c0 
51149 c0)).(\lambda (H9: (eq T (TLRef i) (THead (Bind b) u0 t2))).(\lambda (H10: 
51150 (eq T (lift (S i) O v) t4)).(eq_ind C c0 (\lambda (c: C).((eq T (TLRef i) 
51151 (THead (Bind b) u0 t2)) \to ((eq T (lift (S i) O v) t4) \to ((getl i c (CHead 
51152 d (Bind Abst) v)) \to ((tau0 g d v w) \to (ty3 g c0 (THead (Bind b) u0 t2) 
51153 t4)))))) (\lambda (H11: (eq T (TLRef i) (THead (Bind b) u0 t2))).(let H12 
51154 \def (eq_ind T (TLRef i) (\lambda (e: T).(match e return (\lambda (_: 
51155 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | 
51156 (THead _ _ _) \Rightarrow False])) I (THead (Bind b) u0 t2) H11) in 
51157 (False_ind ((eq T (lift (S i) O v) t4) \to ((getl i c0 (CHead d (Bind Abst) 
51158 v)) \to ((tau0 g d v w) \to (ty3 g c0 (THead (Bind b) u0 t2) t4)))) H12))) c0 
51159 (sym_eq C c0 c0 H8) H9 H10 H6 H7)))) | (tau0_bind b0 c0 v t4 t5 H6) 
51160 \Rightarrow (\lambda (H7: (eq C c0 c0)).(\lambda (H8: (eq T (THead (Bind b0) 
51161 v t4) (THead (Bind b) u0 t2))).(\lambda (H9: (eq T (THead (Bind b0) v t5) 
51162 t4)).(eq_ind C c0 (\lambda (c: C).((eq T (THead (Bind b0) v t4) (THead (Bind 
51163 b) u0 t2)) \to ((eq T (THead (Bind b0) v t5) t4) \to ((tau0 g (CHead c (Bind 
51164 b0) v) t4 t5) \to (ty3 g c0 (THead (Bind b) u0 t2) t4))))) (\lambda (H10: (eq 
51165 T (THead (Bind b0) v t4) (THead (Bind b) u0 t2))).(let H11 \def (f_equal T T 
51166 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
51167 \Rightarrow t4 | (TLRef _) \Rightarrow t4 | (THead _ _ t) \Rightarrow t])) 
51168 (THead (Bind b0) v t4) (THead (Bind b) u0 t2) H10) in ((let H12 \def (f_equal 
51169 T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
51170 \Rightarrow v | (TLRef _) \Rightarrow v | (THead _ t _) \Rightarrow t])) 
51171 (THead (Bind b0) v t4) (THead (Bind b) u0 t2) H10) in ((let H13 \def (f_equal 
51172 T B (\lambda (e: T).(match e return (\lambda (_: T).B) with [(TSort _) 
51173 \Rightarrow b0 | (TLRef _) \Rightarrow b0 | (THead k _ _) \Rightarrow (match 
51174 k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) 
51175 \Rightarrow b0])])) (THead (Bind b0) v t4) (THead (Bind b) u0 t2) H10) in 
51176 (eq_ind B b (\lambda (b1: B).((eq T v u0) \to ((eq T t4 t2) \to ((eq T (THead 
51177 (Bind b1) v t5) t4) \to ((tau0 g (CHead c0 (Bind b1) v) t4 t5) \to (ty3 g c0 
51178 (THead (Bind b) u0 t2) t4)))))) (\lambda (H14: (eq T v u0)).(eq_ind T u0 
51179 (\lambda (t: T).((eq T t4 t2) \to ((eq T (THead (Bind b) t t5) t4) \to ((tau0 
51180 g (CHead c0 (Bind b) t) t4 t5) \to (ty3 g c0 (THead (Bind b) u0 t2) t4))))) 
51181 (\lambda (H15: (eq T t4 t2)).(eq_ind T t2 (\lambda (t: T).((eq T (THead (Bind 
51182 b) u0 t5) t4) \to ((tau0 g (CHead c0 (Bind b) u0) t t5) \to (ty3 g c0 (THead 
51183 (Bind b) u0 t2) t4)))) (\lambda (H16: (eq T (THead (Bind b) u0 t5) 
51184 t4)).(eq_ind T (THead (Bind b) u0 t5) (\lambda (t: T).((tau0 g (CHead c0 
51185 (Bind b) u0) t2 t5) \to (ty3 g c0 (THead (Bind b) u0 t2) t))) (\lambda (H17: 
51186 (tau0 g (CHead c0 (Bind b) u0) t2 t5)).(let H_y \def (H3 t5 H17) in (ex_ind T 
51187 (\lambda (t: T).(ty3 g (CHead c0 (Bind b) u0) t5 t)) (ty3 g c0 (THead (Bind 
51188 b) u0 t2) (THead (Bind b) u0 t5)) (\lambda (x: T).(\lambda (H1: (ty3 g (CHead 
51189 c0 (Bind b) u0) t5 x)).(ty3_bind g c0 u0 t H0 b t2 t5 H_y x H1))) 
51190 (ty3_correct g (CHead c0 (Bind b) u0) t2 t5 H_y)))) t4 H16)) t4 (sym_eq T t4 
51191 t2 H15))) v (sym_eq T v u0 H14))) b0 (sym_eq B b0 b H13))) H12)) H11))) c0 
51192 (sym_eq C c0 c0 H7) H8 H9 H6)))) | (tau0_appl c0 v t4 t5 H6) \Rightarrow 
51193 (\lambda (H7: (eq C c0 c0)).(\lambda (H8: (eq T (THead (Flat Appl) v t4) 
51194 (THead (Bind b) u0 t2))).(\lambda (H9: (eq T (THead (Flat Appl) v t5) 
51195 t4)).(eq_ind C c0 (\lambda (c: C).((eq T (THead (Flat Appl) v t4) (THead 
51196 (Bind b) u0 t2)) \to ((eq T (THead (Flat Appl) v t5) t4) \to ((tau0 g c t4 
51197 t5) \to (ty3 g c0 (THead (Bind b) u0 t2) t4))))) (\lambda (H10: (eq T (THead 
51198 (Flat Appl) v t4) (THead (Bind b) u0 t2))).(let H11 \def (eq_ind T (THead 
51199 (Flat Appl) v t4) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
51200 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
51201 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
51202 False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u0 t2) H10) in 
51203 (False_ind ((eq T (THead (Flat Appl) v t5) t4) \to ((tau0 g c0 t4 t5) \to 
51204 (ty3 g c0 (THead (Bind b) u0 t2) t4))) H11))) c0 (sym_eq C c0 c0 H7) H8 H9 
51205 H6)))) | (tau0_cast c0 v1 v2 H6 t4 t5 H7) \Rightarrow (\lambda (H8: (eq C c0 
51206 c0)).(\lambda (H9: (eq T (THead (Flat Cast) v1 t4) (THead (Bind b) u0 
51207 t2))).(\lambda (H10: (eq T (THead (Flat Cast) v2 t5) t4)).(eq_ind C c0 
51208 (\lambda (c: C).((eq T (THead (Flat Cast) v1 t4) (THead (Bind b) u0 t2)) \to 
51209 ((eq T (THead (Flat Cast) v2 t5) t4) \to ((tau0 g c v1 v2) \to ((tau0 g c t4 
51210 t5) \to (ty3 g c0 (THead (Bind b) u0 t2) t4)))))) (\lambda (H11: (eq T (THead 
51211 (Flat Cast) v1 t4) (THead (Bind b) u0 t2))).(let H12 \def (eq_ind T (THead 
51212 (Flat Cast) v1 t4) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
51213 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
51214 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
51215 False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u0 t2) H11) in 
51216 (False_ind ((eq T (THead (Flat Cast) v2 t5) t4) \to ((tau0 g c0 v1 v2) \to 
51217 ((tau0 g c0 t4 t5) \to (ty3 g c0 (THead (Bind b) u0 t2) t4)))) H12))) c0 
51218 (sym_eq C c0 c0 H8) H9 H10 H6 H7))))]) in (H7 (refl_equal C c0) (refl_equal T 
51219 (THead (Bind b) u0 t2)) (refl_equal T t4)))))))))))))))))) (\lambda (c0: 
51220 C).(\lambda (w: T).(\lambda (u0: T).(\lambda (H0: (ty3 g c0 w u0)).(\lambda 
51221 (_: ((\forall (t2: T).((tau0 g c0 w t2) \to (ty3 g c0 w t2))))).(\lambda (v: 
51222 T).(\lambda (t: T).(\lambda (H2: (ty3 g c0 v (THead (Bind Abst) u0 
51223 t))).(\lambda (H3: ((\forall (t2: T).((tau0 g c0 v t2) \to (ty3 g c0 v 
51224 t2))))).(\lambda (t2: T).(\lambda (H4: (tau0 g c0 (THead (Flat Appl) w v) 
51225 t2)).(let H5 \def (match H4 return (\lambda (c: C).(\lambda (t: T).(\lambda 
51226 (t0: T).(\lambda (_: (tau0 ? c t t0)).((eq C c c0) \to ((eq T t (THead (Flat 
51227 Appl) w v)) \to ((eq T t0 t2) \to (ty3 g c0 (THead (Flat Appl) w v) 
51228 t2)))))))) with [(tau0_sort c0 n) \Rightarrow (\lambda (H4: (eq C c0 
51229 c0)).(\lambda (H5: (eq T (TSort n) (THead (Flat Appl) w v))).(\lambda (H6: 
51230 (eq T (TSort (next g n)) t2)).(eq_ind C c0 (\lambda (_: C).((eq T (TSort n) 
51231 (THead (Flat Appl) w v)) \to ((eq T (TSort (next g n)) t2) \to (ty3 g c0 
51232 (THead (Flat Appl) w v) t2)))) (\lambda (H7: (eq T (TSort n) (THead (Flat 
51233 Appl) w v))).(let H8 \def (eq_ind T (TSort n) (\lambda (e: T).(match e return 
51234 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) 
51235 \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (THead (Flat Appl) w 
51236 v) H7) in (False_ind ((eq T (TSort (next g n)) t2) \to (ty3 g c0 (THead (Flat 
51237 Appl) w v) t2)) H8))) c0 (sym_eq C c0 c0 H4) H5 H6)))) | (tau0_abbr c0 d v0 i 
51238 H4 w0 H5) \Rightarrow (\lambda (H6: (eq C c0 c0)).(\lambda (H7: (eq T (TLRef 
51239 i) (THead (Flat Appl) w v))).(\lambda (H8: (eq T (lift (S i) O w0) 
51240 t2)).(eq_ind C c0 (\lambda (c: C).((eq T (TLRef i) (THead (Flat Appl) w v)) 
51241 \to ((eq T (lift (S i) O w0) t2) \to ((getl i c (CHead d (Bind Abbr) v0)) \to 
51242 ((tau0 g d v0 w0) \to (ty3 g c0 (THead (Flat Appl) w v) t2)))))) (\lambda 
51243 (H9: (eq T (TLRef i) (THead (Flat Appl) w v))).(let H10 \def (eq_ind T (TLRef 
51244 i) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
51245 \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow 
51246 False])) I (THead (Flat Appl) w v) H9) in (False_ind ((eq T (lift (S i) O w0) 
51247 t2) \to ((getl i c0 (CHead d (Bind Abbr) v0)) \to ((tau0 g d v0 w0) \to (ty3 
51248 g c0 (THead (Flat Appl) w v) t2)))) H10))) c0 (sym_eq C c0 c0 H6) H7 H8 H4 
51249 H5)))) | (tau0_abst c0 d v0 i H4 w0 H5) \Rightarrow (\lambda (H6: (eq C c0 
51250 c0)).(\lambda (H7: (eq T (TLRef i) (THead (Flat Appl) w v))).(\lambda (H8: 
51251 (eq T (lift (S i) O v0) t2)).(eq_ind C c0 (\lambda (c: C).((eq T (TLRef i) 
51252 (THead (Flat Appl) w v)) \to ((eq T (lift (S i) O v0) t2) \to ((getl i c 
51253 (CHead d (Bind Abst) v0)) \to ((tau0 g d v0 w0) \to (ty3 g c0 (THead (Flat 
51254 Appl) w v) t2)))))) (\lambda (H9: (eq T (TLRef i) (THead (Flat Appl) w 
51255 v))).(let H10 \def (eq_ind T (TLRef i) (\lambda (e: T).(match e return 
51256 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
51257 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead (Flat Appl) w 
51258 v) H9) in (False_ind ((eq T (lift (S i) O v0) t2) \to ((getl i c0 (CHead d 
51259 (Bind Abst) v0)) \to ((tau0 g d v0 w0) \to (ty3 g c0 (THead (Flat Appl) w v) 
51260 t2)))) H10))) c0 (sym_eq C c0 c0 H6) H7 H8 H4 H5)))) | (tau0_bind b c0 v0 t1 
51261 t0 H4) \Rightarrow (\lambda (H5: (eq C c0 c0)).(\lambda (H6: (eq T (THead 
51262 (Bind b) v0 t1) (THead (Flat Appl) w v))).(\lambda (H7: (eq T (THead (Bind b) 
51263 v0 t0) t2)).(eq_ind C c0 (\lambda (c: C).((eq T (THead (Bind b) v0 t1) (THead 
51264 (Flat Appl) w v)) \to ((eq T (THead (Bind b) v0 t0) t2) \to ((tau0 g (CHead c 
51265 (Bind b) v0) t1 t0) \to (ty3 g c0 (THead (Flat Appl) w v) t2))))) (\lambda 
51266 (H8: (eq T (THead (Bind b) v0 t1) (THead (Flat Appl) w v))).(let H9 \def 
51267 (eq_ind T (THead (Bind b) v0 t1) (\lambda (e: T).(match e return (\lambda (_: 
51268 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
51269 (THead k _ _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind 
51270 _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Appl) w 
51271 v) H8) in (False_ind ((eq T (THead (Bind b) v0 t0) t2) \to ((tau0 g (CHead c0 
51272 (Bind b) v0) t1 t0) \to (ty3 g c0 (THead (Flat Appl) w v) t2))) H9))) c0 
51273 (sym_eq C c0 c0 H5) H6 H7 H4)))) | (tau0_appl c0 v0 t1 t0 H4) \Rightarrow 
51274 (\lambda (H5: (eq C c0 c0)).(\lambda (H6: (eq T (THead (Flat Appl) v0 t1) 
51275 (THead (Flat Appl) w v))).(\lambda (H7: (eq T (THead (Flat Appl) v0 t0) 
51276 t2)).(eq_ind C c0 (\lambda (c: C).((eq T (THead (Flat Appl) v0 t1) (THead 
51277 (Flat Appl) w v)) \to ((eq T (THead (Flat Appl) v0 t0) t2) \to ((tau0 g c t1 
51278 t0) \to (ty3 g c0 (THead (Flat Appl) w v) t2))))) (\lambda (H8: (eq T (THead 
51279 (Flat Appl) v0 t1) (THead (Flat Appl) w v))).(let H9 \def (f_equal T T 
51280 (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
51281 \Rightarrow t1 | (TLRef _) \Rightarrow t1 | (THead _ _ t) \Rightarrow t])) 
51282 (THead (Flat Appl) v0 t1) (THead (Flat Appl) w v) H8) in ((let H10 \def 
51283 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
51284 _) \Rightarrow v0 | (TLRef _) \Rightarrow v0 | (THead _ t _) \Rightarrow t])) 
51285 (THead (Flat Appl) v0 t1) (THead (Flat Appl) w v) H8) in (eq_ind T w (\lambda 
51286 (t: T).((eq T t1 v) \to ((eq T (THead (Flat Appl) t t0) t2) \to ((tau0 g c0 
51287 t1 t0) \to (ty3 g c0 (THead (Flat Appl) w v) t2))))) (\lambda (H11: (eq T t1 
51288 v)).(eq_ind T v (\lambda (t: T).((eq T (THead (Flat Appl) w t0) t2) \to 
51289 ((tau0 g c0 t t0) \to (ty3 g c0 (THead (Flat Appl) w v) t2)))) (\lambda (H12: 
51290 (eq T (THead (Flat Appl) w t0) t2)).(eq_ind T (THead (Flat Appl) w t0) 
51291 (\lambda (t: T).((tau0 g c0 v t0) \to (ty3 g c0 (THead (Flat Appl) w v) t))) 
51292 (\lambda (H13: (tau0 g c0 v t0)).(let H_y \def (H3 t0 H13) in (let H1 \def 
51293 (ty3_unique g c0 v t0 H_y (THead (Bind Abst) u0 t) H2) in (ex_ind T (\lambda 
51294 (t: T).(ty3 g c0 t0 t)) (ty3 g c0 (THead (Flat Appl) w v) (THead (Flat Appl) 
51295 w t0)) (\lambda (x: T).(\lambda (H3: (ty3 g c0 t0 x)).(ex_ind T (\lambda (t: 
51296 T).(ty3 g c0 u0 t)) (ty3 g c0 (THead (Flat Appl) w v) (THead (Flat Appl) w 
51297 t0)) (\lambda (x0: T).(\lambda (_: (ty3 g c0 u0 x0)).(ex_ind T (\lambda (t2: 
51298 T).(ty3 g c0 (THead (Bind Abst) u0 t) t2)) (ty3 g c0 (THead (Flat Appl) w v) 
51299 (THead (Flat Appl) w t0)) (\lambda (x1: T).(\lambda (H15: (ty3 g c0 (THead 
51300 (Bind Abst) u0 t) x1)).(ex4_3_ind T T T (\lambda (t2: T).(\lambda (_: 
51301 T).(\lambda (_: T).(pc3 c0 (THead (Bind Abst) u0 t2) x1)))) (\lambda (_: 
51302 T).(\lambda (t: T).(\lambda (_: T).(ty3 g c0 u0 t)))) (\lambda (t2: 
51303 T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind Abst) u0) t t2)))) 
51304 (\lambda (t2: T).(\lambda (_: T).(\lambda (t3: T).(ty3 g (CHead c0 (Bind 
51305 Abst) u0) t2 t3)))) (ty3 g c0 (THead (Flat Appl) w v) (THead (Flat Appl) w 
51306 t0)) (\lambda (x2: T).(\lambda (x3: T).(\lambda (x4: T).(\lambda (_: (pc3 c0 
51307 (THead (Bind Abst) u0 x2) x1)).(\lambda (H17: (ty3 g c0 u0 x3)).(\lambda 
51308 (H18: (ty3 g (CHead c0 (Bind Abst) u0) t x2)).(\lambda (H19: (ty3 g (CHead c0 
51309 (Bind Abst) u0) x2 x4)).(ty3_conv g c0 (THead (Flat Appl) w t0) (THead (Flat 
51310 Appl) w (THead (Bind Abst) u0 x2)) (ty3_appl g c0 w u0 H0 t0 x2 (ty3_sconv g 
51311 c0 t0 x H3 (THead (Bind Abst) u0 t) (THead (Bind Abst) u0 x2) (ty3_bind g c0 
51312 u0 x3 H17 Abst t x2 H18 x4 H19) H1)) (THead (Flat Appl) w v) (THead (Flat 
51313 Appl) w (THead (Bind Abst) u0 t)) (ty3_appl g c0 w u0 H0 v t H2) (pc3_s c0 
51314 (THead (Flat Appl) w (THead (Bind Abst) u0 t)) (THead (Flat Appl) w t0) 
51315 (pc3_thin_dx c0 t0 (THead (Bind Abst) u0 t) H1 w Appl)))))))))) (ty3_gen_bind 
51316 g Abst c0 u0 t x1 H15)))) (ty3_correct g c0 v (THead (Bind Abst) u0 t) H2)))) 
51317 (ty3_correct g c0 w u0 H0)))) (ty3_correct g c0 v t0 H_y))))) t2 H12)) t1 
51318 (sym_eq T t1 v H11))) v0 (sym_eq T v0 w H10))) H9))) c0 (sym_eq C c0 c0 H5) 
51319 H6 H7 H4)))) | (tau0_cast c0 v1 v2 H4 t1 t0 H5) \Rightarrow (\lambda (H6: (eq 
51320 C c0 c0)).(\lambda (H7: (eq T (THead (Flat Cast) v1 t1) (THead (Flat Appl) w 
51321 v))).(\lambda (H8: (eq T (THead (Flat Cast) v2 t0) t2)).(eq_ind C c0 (\lambda 
51322 (c: C).((eq T (THead (Flat Cast) v1 t1) (THead (Flat Appl) w v)) \to ((eq T 
51323 (THead (Flat Cast) v2 t0) t2) \to ((tau0 g c v1 v2) \to ((tau0 g c t1 t0) \to 
51324 (ty3 g c0 (THead (Flat Appl) w v) t2)))))) (\lambda (H9: (eq T (THead (Flat 
51325 Cast) v1 t1) (THead (Flat Appl) w v))).(let H10 \def (eq_ind T (THead (Flat 
51326 Cast) v1 t1) (\lambda (e: T).(match e return (\lambda (_: T).Prop) with 
51327 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) 
51328 \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow 
51329 False | (Flat f) \Rightarrow (match f return (\lambda (_: F).Prop) with [Appl 
51330 \Rightarrow False | Cast \Rightarrow True])])])) I (THead (Flat Appl) w v) 
51331 H9) in (False_ind ((eq T (THead (Flat Cast) v2 t0) t2) \to ((tau0 g c0 v1 v2) 
51332 \to ((tau0 g c0 t1 t0) \to (ty3 g c0 (THead (Flat Appl) w v) t2)))) H10))) c0 
51333 (sym_eq C c0 c0 H6) H7 H8 H4 H5))))]) in (H5 (refl_equal C c0) (refl_equal T 
51334 (THead (Flat Appl) w v)) (refl_equal T t2)))))))))))))) (\lambda (c0: 
51335 C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: (ty3 g c0 t2 t3)).(\lambda 
51336 (H1: ((\forall (t3: T).((tau0 g c0 t2 t3) \to (ty3 g c0 t2 t3))))).(\lambda 
51337 (t0: T).(\lambda (_: (ty3 g c0 t3 t0)).(\lambda (H3: ((\forall (t2: T).((tau0 
51338 g c0 t3 t2) \to (ty3 g c0 t3 t2))))).(\lambda (t4: T).(\lambda (H4: (tau0 g 
51339 c0 (THead (Flat Cast) t3 t2) t4)).(let H5 \def (match H4 return (\lambda (c: 
51340 C).(\lambda (t: T).(\lambda (t0: T).(\lambda (_: (tau0 ? c t t0)).((eq C c 
51341 c0) \to ((eq T t (THead (Flat Cast) t3 t2)) \to ((eq T t0 t4) \to (ty3 g c0 
51342 (THead (Flat Cast) t3 t2) t4)))))))) with [(tau0_sort c0 n) \Rightarrow 
51343 (\lambda (H4: (eq C c0 c0)).(\lambda (H5: (eq T (TSort n) (THead (Flat Cast) 
51344 t3 t2))).(\lambda (H6: (eq T (TSort (next g n)) t4)).(eq_ind C c0 (\lambda 
51345 (_: C).((eq T (TSort n) (THead (Flat Cast) t3 t2)) \to ((eq T (TSort (next g 
51346 n)) t4) \to (ty3 g c0 (THead (Flat Cast) t3 t2) t4)))) (\lambda (H7: (eq T 
51347 (TSort n) (THead (Flat Cast) t3 t2))).(let H8 \def (eq_ind T (TSort n) 
51348 (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
51349 \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow 
51350 False])) I (THead (Flat Cast) t3 t2) H7) in (False_ind ((eq T (TSort (next g 
51351 n)) t4) \to (ty3 g c0 (THead (Flat Cast) t3 t2) t4)) H8))) c0 (sym_eq C c0 c0 
51352 H4) H5 H6)))) | (tau0_abbr c0 d v i H4 w H5) \Rightarrow (\lambda (H6: (eq C 
51353 c0 c0)).(\lambda (H7: (eq T (TLRef i) (THead (Flat Cast) t3 t2))).(\lambda 
51354 (H8: (eq T (lift (S i) O w) t4)).(eq_ind C c0 (\lambda (c: C).((eq T (TLRef 
51355 i) (THead (Flat Cast) t3 t2)) \to ((eq T (lift (S i) O w) t4) \to ((getl i c 
51356 (CHead d (Bind Abbr) v)) \to ((tau0 g d v w) \to (ty3 g c0 (THead (Flat Cast) 
51357 t3 t2) t4)))))) (\lambda (H9: (eq T (TLRef i) (THead (Flat Cast) t3 
51358 t2))).(let H10 \def (eq_ind T (TLRef i) (\lambda (e: T).(match e return 
51359 (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) 
51360 \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead (Flat Cast) t3 
51361 t2) H9) in (False_ind ((eq T (lift (S i) O w) t4) \to ((getl i c0 (CHead d 
51362 (Bind Abbr) v)) \to ((tau0 g d v w) \to (ty3 g c0 (THead (Flat Cast) t3 t2) 
51363 t4)))) H10))) c0 (sym_eq C c0 c0 H6) H7 H8 H4 H5)))) | (tau0_abst c0 d v i H4 
51364 w H5) \Rightarrow (\lambda (H6: (eq C c0 c0)).(\lambda (H7: (eq T (TLRef i) 
51365 (THead (Flat Cast) t3 t2))).(\lambda (H8: (eq T (lift (S i) O v) t4)).(eq_ind 
51366 C c0 (\lambda (c: C).((eq T (TLRef i) (THead (Flat Cast) t3 t2)) \to ((eq T 
51367 (lift (S i) O v) t4) \to ((getl i c (CHead d (Bind Abst) v)) \to ((tau0 g d v 
51368 w) \to (ty3 g c0 (THead (Flat Cast) t3 t2) t4)))))) (\lambda (H9: (eq T 
51369 (TLRef i) (THead (Flat Cast) t3 t2))).(let H10 \def (eq_ind T (TLRef i) 
51370 (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
51371 \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow 
51372 False])) I (THead (Flat Cast) t3 t2) H9) in (False_ind ((eq T (lift (S i) O 
51373 v) t4) \to ((getl i c0 (CHead d (Bind Abst) v)) \to ((tau0 g d v w) \to (ty3 
51374 g c0 (THead (Flat Cast) t3 t2) t4)))) H10))) c0 (sym_eq C c0 c0 H6) H7 H8 H4 
51375 H5)))) | (tau0_bind b c0 v t4 t5 H4) \Rightarrow (\lambda (H5: (eq C c0 
51376 c0)).(\lambda (H6: (eq T (THead (Bind b) v t4) (THead (Flat Cast) t3 
51377 t2))).(\lambda (H7: (eq T (THead (Bind b) v t5) t4)).(eq_ind C c0 (\lambda 
51378 (c: C).((eq T (THead (Bind b) v t4) (THead (Flat Cast) t3 t2)) \to ((eq T 
51379 (THead (Bind b) v t5) t4) \to ((tau0 g (CHead c (Bind b) v) t4 t5) \to (ty3 g 
51380 c0 (THead (Flat Cast) t3 t2) t4))))) (\lambda (H8: (eq T (THead (Bind b) v 
51381 t4) (THead (Flat Cast) t3 t2))).(let H9 \def (eq_ind T (THead (Bind b) v t4) 
51382 (\lambda (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) 
51383 \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow 
51384 (match k return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat 
51385 _) \Rightarrow False])])) I (THead (Flat Cast) t3 t2) H8) in (False_ind ((eq 
51386 T (THead (Bind b) v t5) t4) \to ((tau0 g (CHead c0 (Bind b) v) t4 t5) \to 
51387 (ty3 g c0 (THead (Flat Cast) t3 t2) t4))) H9))) c0 (sym_eq C c0 c0 H5) H6 H7 
51388 H4)))) | (tau0_appl c0 v t4 t5 H4) \Rightarrow (\lambda (H5: (eq C c0 
51389 c0)).(\lambda (H6: (eq T (THead (Flat Appl) v t4) (THead (Flat Cast) t3 
51390 t2))).(\lambda (H7: (eq T (THead (Flat Appl) v t5) t4)).(eq_ind C c0 (\lambda 
51391 (c: C).((eq T (THead (Flat Appl) v t4) (THead (Flat Cast) t3 t2)) \to ((eq T 
51392 (THead (Flat Appl) v t5) t4) \to ((tau0 g c t4 t5) \to (ty3 g c0 (THead (Flat 
51393 Cast) t3 t2) t4))))) (\lambda (H8: (eq T (THead (Flat Appl) v t4) (THead 
51394 (Flat Cast) t3 t2))).(let H9 \def (eq_ind T (THead (Flat Appl) v t4) (\lambda 
51395 (e: T).(match e return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
51396 False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k 
51397 return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat f) 
51398 \Rightarrow (match f return (\lambda (_: F).Prop) with [Appl \Rightarrow True 
51399 | Cast \Rightarrow False])])])) I (THead (Flat Cast) t3 t2) H8) in (False_ind 
51400 ((eq T (THead (Flat Appl) v t5) t4) \to ((tau0 g c0 t4 t5) \to (ty3 g c0 
51401 (THead (Flat Cast) t3 t2) t4))) H9))) c0 (sym_eq C c0 c0 H5) H6 H7 H4)))) | 
51402 (tau0_cast c0 v1 v2 H4 t4 t5 H5) \Rightarrow (\lambda (H6: (eq C c0 
51403 c0)).(\lambda (H7: (eq T (THead (Flat Cast) v1 t4) (THead (Flat Cast) t3 
51404 t2))).(\lambda (H8: (eq T (THead (Flat Cast) v2 t5) t4)).(eq_ind C c0 
51405 (\lambda (c: C).((eq T (THead (Flat Cast) v1 t4) (THead (Flat Cast) t3 t2)) 
51406 \to ((eq T (THead (Flat Cast) v2 t5) t4) \to ((tau0 g c v1 v2) \to ((tau0 g c 
51407 t4 t5) \to (ty3 g c0 (THead (Flat Cast) t3 t2) t4)))))) (\lambda (H9: (eq T 
51408 (THead (Flat Cast) v1 t4) (THead (Flat Cast) t3 t2))).(let H10 \def (f_equal 
51409 T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort _) 
51410 \Rightarrow t4 | (TLRef _) \Rightarrow t4 | (THead _ _ t) \Rightarrow t])) 
51411 (THead (Flat Cast) v1 t4) (THead (Flat Cast) t3 t2) H9) in ((let H11 \def 
51412 (f_equal T T (\lambda (e: T).(match e return (\lambda (_: T).T) with [(TSort 
51413 _) \Rightarrow v1 | (TLRef _) \Rightarrow v1 | (THead _ t _) \Rightarrow t])) 
51414 (THead (Flat Cast) v1 t4) (THead (Flat Cast) t3 t2) H9) in (eq_ind T t3 
51415 (\lambda (t: T).((eq T t4 t2) \to ((eq T (THead (Flat Cast) v2 t5) t4) \to 
51416 ((tau0 g c0 t v2) \to ((tau0 g c0 t4 t5) \to (ty3 g c0 (THead (Flat Cast) t3 
51417 t2) t4)))))) (\lambda (H12: (eq T t4 t2)).(eq_ind T t2 (\lambda (t: T).((eq T 
51418 (THead (Flat Cast) v2 t5) t4) \to ((tau0 g c0 t3 v2) \to ((tau0 g c0 t t5) 
51419 \to (ty3 g c0 (THead (Flat Cast) t3 t2) t4))))) (\lambda (H13: (eq T (THead 
51420 (Flat Cast) v2 t5) t4)).(eq_ind T (THead (Flat Cast) v2 t5) (\lambda (t: 
51421 T).((tau0 g c0 t3 v2) \to ((tau0 g c0 t2 t5) \to (ty3 g c0 (THead (Flat Cast) 
51422 t3 t2) t)))) (\lambda (H14: (tau0 g c0 t3 v2)).(\lambda (H15: (tau0 g c0 t2 
51423 t5)).(let H_y \def (H1 t5 H15) in (let H_y0 \def (H3 v2 H14) in (let H3 \def 
51424 (ty3_unique g c0 t2 t5 H_y t3 H0) in (ex_ind T (\lambda (t: T).(ty3 g c0 v2 
51425 t)) (ty3 g c0 (THead (Flat Cast) t3 t2) (THead (Flat Cast) v2 t5)) (\lambda 
51426 (x: T).(\lambda (H16: (ty3 g c0 v2 x)).(ex_ind T (\lambda (t: T).(ty3 g c0 t5 
51427 t)) (ty3 g c0 (THead (Flat Cast) t3 t2) (THead (Flat Cast) v2 t5)) (\lambda 
51428 (x0: T).(\lambda (H17: (ty3 g c0 t5 x0)).(ty3_conv g c0 (THead (Flat Cast) v2 
51429 t5) v2 (ty3_cast g c0 t5 v2 (ty3_sconv g c0 t5 x0 H17 t3 v2 H_y0 H3) x H16) 
51430 (THead (Flat Cast) t3 t2) t3 (ty3_cast g c0 t2 t3 H0 v2 H_y0) (pc3_s c0 t3 
51431 (THead (Flat Cast) v2 t5) (pc3_pr2_u c0 t5 (THead (Flat Cast) v2 t5) 
51432 (pr2_free c0 (THead (Flat Cast) v2 t5) t5 (pr0_epsilon t5 t5 (pr0_refl t5) 
51433 v2)) t3 H3))))) (ty3_correct g c0 t2 t5 H_y)))) (ty3_correct g c0 t3 v2 
51434 H_y0))))))) t4 H13)) t4 (sym_eq T t4 t2 H12))) v1 (sym_eq T v1 t3 H11))) 
51435 H10))) c0 (sym_eq C c0 c0 H6) H7 H8 H4 H5))))]) in (H5 (refl_equal C c0) 
51436 (refl_equal T (THead (Flat Cast) t3 t2)) (refl_equal T t4))))))))))))) c u t1 
51437 H))))).
51438
51439 theorem ty3_arity:
51440  \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c 
51441 t1 t2) \to (ex2 A (\lambda (a1: A).(arity g c t1 a1)) (\lambda (a1: A).(arity 
51442 g c t2 (asucc g a1))))))))
51443 \def
51444  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda 
51445 (H: (ty3 g c t1 t2)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda 
51446 (t0: T).(ex2 A (\lambda (a1: A).(arity g c0 t a1)) (\lambda (a1: A).(arity g 
51447 c0 t0 (asucc g a1))))))) (\lambda (c0: C).(\lambda (t3: T).(\lambda (t: 
51448 T).(\lambda (_: (ty3 g c0 t3 t)).(\lambda (H1: (ex2 A (\lambda (a1: A).(arity 
51449 g c0 t3 a1)) (\lambda (a1: A).(arity g c0 t (asucc g a1))))).(\lambda (u: 
51450 T).(\lambda (t4: T).(\lambda (_: (ty3 g c0 u t4)).(\lambda (H3: (ex2 A 
51451 (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t4 (asucc g 
51452 a1))))).(\lambda (H4: (pc3 c0 t4 t3)).(let H5 \def H1 in (ex2_ind A (\lambda 
51453 (a1: A).(arity g c0 t3 a1)) (\lambda (a1: A).(arity g c0 t (asucc g a1))) 
51454 (ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t3 
51455 (asucc g a1)))) (\lambda (x: A).(\lambda (H6: (arity g c0 t3 x)).(\lambda (_: 
51456 (arity g c0 t (asucc g x))).(let H8 \def H3 in (ex2_ind A (\lambda (a1: 
51457 A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t4 (asucc g a1))) (ex2 A 
51458 (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t3 (asucc g 
51459 a1)))) (\lambda (x0: A).(\lambda (H9: (arity g c0 u x0)).(\lambda (H10: 
51460 (arity g c0 t4 (asucc g x0))).(let H11 \def H4 in (ex2_ind T (\lambda (t0: 
51461 T).(pr3 c0 t4 t0)) (\lambda (t0: T).(pr3 c0 t3 t0)) (ex2 A (\lambda (a1: 
51462 A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t3 (asucc g a1)))) 
51463 (\lambda (x1: T).(\lambda (H12: (pr3 c0 t4 x1)).(\lambda (H13: (pr3 c0 t3 
51464 x1)).(ex_intro2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity 
51465 g c0 t3 (asucc g a1))) x0 H9 (arity_repl g c0 t3 x H6 (asucc g x0) (leq_sym g 
51466 (asucc g x0) x (arity_mono g c0 x1 (asucc g x0) (arity_sred_pr3 c0 t4 x1 H12 
51467 g (asucc g x0) H10) x (arity_sred_pr3 c0 t3 x1 H13 g x H6)))))))) H11))))) 
51468 H8))))) H5)))))))))))) (\lambda (c0: C).(\lambda (m: nat).(ex_intro2 A 
51469 (\lambda (a1: A).(arity g c0 (TSort m) a1)) (\lambda (a1: A).(arity g c0 
51470 (TSort (next g m)) (asucc g a1))) (ASort O m) (arity_sort g c0 m) (arity_sort 
51471 g c0 (next g m))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: 
51472 C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abbr) 
51473 u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: (ex2 A 
51474 (\lambda (a1: A).(arity g d u a1)) (\lambda (a1: A).(arity g d t (asucc g 
51475 a1))))).(let H3 \def H2 in (ex2_ind A (\lambda (a1: A).(arity g d u a1)) 
51476 (\lambda (a1: A).(arity g d t (asucc g a1))) (ex2 A (\lambda (a1: A).(arity g 
51477 c0 (TLRef n) a1)) (\lambda (a1: A).(arity g c0 (lift (S n) O t) (asucc g 
51478 a1)))) (\lambda (x: A).(\lambda (H4: (arity g d u x)).(\lambda (H5: (arity g 
51479 d t (asucc g x))).(ex_intro2 A (\lambda (a1: A).(arity g c0 (TLRef n) a1)) 
51480 (\lambda (a1: A).(arity g c0 (lift (S n) O t) (asucc g a1))) x (arity_abbr g 
51481 c0 d u n H0 x H4) (arity_lift g d t (asucc g x) H5 c0 (S n) O (getl_drop Abbr 
51482 c0 d u n H0)))))) H3)))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda 
51483 (d: C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abst) 
51484 u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: (ex2 A 
51485 (\lambda (a1: A).(arity g d u a1)) (\lambda (a1: A).(arity g d t (asucc g 
51486 a1))))).(let H3 \def H2 in (ex2_ind A (\lambda (a1: A).(arity g d u a1)) 
51487 (\lambda (a1: A).(arity g d t (asucc g a1))) (ex2 A (\lambda (a1: A).(arity g 
51488 c0 (TLRef n) a1)) (\lambda (a1: A).(arity g c0 (lift (S n) O u) (asucc g 
51489 a1)))) (\lambda (x: A).(\lambda (H4: (arity g d u x)).(\lambda (_: (arity g d 
51490 t (asucc g x))).(let H_x \def (leq_asucc g x) in (let H6 \def H_x in (ex_ind 
51491 A (\lambda (a0: A).(leq g x (asucc g a0))) (ex2 A (\lambda (a1: A).(arity g 
51492 c0 (TLRef n) a1)) (\lambda (a1: A).(arity g c0 (lift (S n) O u) (asucc g 
51493 a1)))) (\lambda (x0: A).(\lambda (H7: (leq g x (asucc g x0))).(ex_intro2 A 
51494 (\lambda (a1: A).(arity g c0 (TLRef n) a1)) (\lambda (a1: A).(arity g c0 
51495 (lift (S n) O u) (asucc g a1))) x0 (arity_abst g c0 d u n H0 x0 (arity_repl g 
51496 d u x H4 (asucc g x0) H7)) (arity_lift g d u (asucc g x0) (arity_repl g d u x 
51497 H4 (asucc g x0) H7) c0 (S n) O (getl_drop Abst c0 d u n H0))))) H6)))))) 
51498 H3)))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (t: T).(\lambda (_: 
51499 (ty3 g c0 u t)).(\lambda (H1: (ex2 A (\lambda (a1: A).(arity g c0 u a1)) 
51500 (\lambda (a1: A).(arity g c0 t (asucc g a1))))).(\lambda (b: B).(\lambda (t3: 
51501 T).(\lambda (t4: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t3 
51502 t4)).(\lambda (H3: (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind b) u) t3 
51503 a1)) (\lambda (a1: A).(arity g (CHead c0 (Bind b) u) t4 (asucc g 
51504 a1))))).(\lambda (t0: T).(\lambda (H4: (ty3 g (CHead c0 (Bind b) u) t4 
51505 t0)).(\lambda (H5: (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind b) u) t4 
51506 a1)) (\lambda (a1: A).(arity g (CHead c0 (Bind b) u) t0 (asucc g a1))))).(let 
51507 H6 \def H1 in (ex2_ind A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: 
51508 A).(arity g c0 t (asucc g a1))) (ex2 A (\lambda (a1: A).(arity g c0 (THead 
51509 (Bind b) u t3) a1)) (\lambda (a1: A).(arity g c0 (THead (Bind b) u t4) (asucc 
51510 g a1)))) (\lambda (x: A).(\lambda (H7: (arity g c0 u x)).(\lambda (_: (arity 
51511 g c0 t (asucc g x))).(let H9 \def H3 in (ex2_ind A (\lambda (a1: A).(arity g 
51512 (CHead c0 (Bind b) u) t3 a1)) (\lambda (a1: A).(arity g (CHead c0 (Bind b) u) 
51513 t4 (asucc g a1))) (ex2 A (\lambda (a1: A).(arity g c0 (THead (Bind b) u t3) 
51514 a1)) (\lambda (a1: A).(arity g c0 (THead (Bind b) u t4) (asucc g a1)))) 
51515 (\lambda (x0: A).(\lambda (H10: (arity g (CHead c0 (Bind b) u) t3 
51516 x0)).(\lambda (H11: (arity g (CHead c0 (Bind b) u) t4 (asucc g x0))).(let H_x 
51517 \def (leq_asucc g x) in (let H12 \def H_x in (ex_ind A (\lambda (a0: A).(leq 
51518 g x (asucc g a0))) (ex2 A (\lambda (a1: A).(arity g c0 (THead (Bind b) u t3) 
51519 a1)) (\lambda (a1: A).(arity g c0 (THead (Bind b) u t4) (asucc g a1)))) 
51520 (\lambda (x1: A).(\lambda (H13: (leq g x (asucc g x1))).((match b return 
51521 (\lambda (b0: B).((ty3 g (CHead c0 (Bind b0) u) t4 t0) \to ((ex2 A (\lambda 
51522 (a1: A).(arity g (CHead c0 (Bind b0) u) t4 a1)) (\lambda (a1: A).(arity g 
51523 (CHead c0 (Bind b0) u) t0 (asucc g a1)))) \to ((arity g (CHead c0 (Bind b0) 
51524 u) t3 x0) \to ((arity g (CHead c0 (Bind b0) u) t4 (asucc g x0)) \to (ex2 A 
51525 (\lambda (a1: A).(arity g c0 (THead (Bind b0) u t3) a1)) (\lambda (a1: 
51526 A).(arity g c0 (THead (Bind b0) u t4) (asucc g a1))))))))) with [Abbr 
51527 \Rightarrow (\lambda (_: (ty3 g (CHead c0 (Bind Abbr) u) t4 t0)).(\lambda (_: 
51528 (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind Abbr) u) t4 a1)) (\lambda 
51529 (a1: A).(arity g (CHead c0 (Bind Abbr) u) t0 (asucc g a1))))).(\lambda (H16: 
51530 (arity g (CHead c0 (Bind Abbr) u) t3 x0)).(\lambda (H17: (arity g (CHead c0 
51531 (Bind Abbr) u) t4 (asucc g x0))).(ex_intro2 A (\lambda (a1: A).(arity g c0 
51532 (THead (Bind Abbr) u t3) a1)) (\lambda (a1: A).(arity g c0 (THead (Bind Abbr) 
51533 u t4) (asucc g a1))) x0 (arity_bind g Abbr not_abbr_abst c0 u x H7 t3 x0 H16) 
51534 (arity_bind g Abbr not_abbr_abst c0 u x H7 t4 (asucc g x0) H17)))))) | Abst 
51535 \Rightarrow (\lambda (_: (ty3 g (CHead c0 (Bind Abst) u) t4 t0)).(\lambda (_: 
51536 (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind Abst) u) t4 a1)) (\lambda 
51537 (a1: A).(arity g (CHead c0 (Bind Abst) u) t0 (asucc g a1))))).(\lambda (H16: 
51538 (arity g (CHead c0 (Bind Abst) u) t3 x0)).(\lambda (H17: (arity g (CHead c0 
51539 (Bind Abst) u) t4 (asucc g x0))).(ex_intro2 A (\lambda (a1: A).(arity g c0 
51540 (THead (Bind Abst) u t3) a1)) (\lambda (a1: A).(arity g c0 (THead (Bind Abst) 
51541 u t4) (asucc g a1))) (AHead x1 x0) (arity_head g c0 u x1 (arity_repl g c0 u x 
51542 H7 (asucc g x1) H13) t3 x0 H16) (arity_repl g c0 (THead (Bind Abst) u t4) 
51543 (AHead x1 (asucc g x0)) (arity_head g c0 u x1 (arity_repl g c0 u x H7 (asucc 
51544 g x1) H13) t4 (asucc g x0) H17) (asucc g (AHead x1 x0)) (leq_refl g (asucc g 
51545 (AHead x1 x0))))))))) | Void \Rightarrow (\lambda (_: (ty3 g (CHead c0 (Bind 
51546 Void) u) t4 t0)).(\lambda (_: (ex2 A (\lambda (a1: A).(arity g (CHead c0 
51547 (Bind Void) u) t4 a1)) (\lambda (a1: A).(arity g (CHead c0 (Bind Void) u) t0 
51548 (asucc g a1))))).(\lambda (H16: (arity g (CHead c0 (Bind Void) u) t3 
51549 x0)).(\lambda (H17: (arity g (CHead c0 (Bind Void) u) t4 (asucc g 
51550 x0))).(ex_intro2 A (\lambda (a1: A).(arity g c0 (THead (Bind Void) u t3) a1)) 
51551 (\lambda (a1: A).(arity g c0 (THead (Bind Void) u t4) (asucc g a1))) x0 
51552 (arity_bind g Void not_void_abst c0 u x H7 t3 x0 H16) (arity_bind g Void 
51553 not_void_abst c0 u x H7 t4 (asucc g x0) H17))))))]) H4 H5 H10 H11))) 
51554 H12)))))) H9))))) H6))))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda 
51555 (u: T).(\lambda (_: (ty3 g c0 w u)).(\lambda (H1: (ex2 A (\lambda (a1: 
51556 A).(arity g c0 w a1)) (\lambda (a1: A).(arity g c0 u (asucc g 
51557 a1))))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead (Bind 
51558 Abst) u t))).(\lambda (H3: (ex2 A (\lambda (a1: A).(arity g c0 v a1)) 
51559 (\lambda (a1: A).(arity g c0 (THead (Bind Abst) u t) (asucc g a1))))).(let H4 
51560 \def H1 in (ex2_ind A (\lambda (a1: A).(arity g c0 w a1)) (\lambda (a1: 
51561 A).(arity g c0 u (asucc g a1))) (ex2 A (\lambda (a1: A).(arity g c0 (THead 
51562 (Flat Appl) w v) a1)) (\lambda (a1: A).(arity g c0 (THead (Flat Appl) w 
51563 (THead (Bind Abst) u t)) (asucc g a1)))) (\lambda (x: A).(\lambda (H5: (arity 
51564 g c0 w x)).(\lambda (H6: (arity g c0 u (asucc g x))).(let H7 \def H3 in 
51565 (ex2_ind A (\lambda (a1: A).(arity g c0 v a1)) (\lambda (a1: A).(arity g c0 
51566 (THead (Bind Abst) u t) (asucc g a1))) (ex2 A (\lambda (a1: A).(arity g c0 
51567 (THead (Flat Appl) w v) a1)) (\lambda (a1: A).(arity g c0 (THead (Flat Appl) 
51568 w (THead (Bind Abst) u t)) (asucc g a1)))) (\lambda (x0: A).(\lambda (H8: 
51569 (arity g c0 v x0)).(\lambda (H9: (arity g c0 (THead (Bind Abst) u t) (asucc g 
51570 x0))).(let H10 \def (arity_gen_abst g c0 u t (asucc g x0) H9) in (ex3_2_ind A 
51571 A (\lambda (a1: A).(\lambda (a2: A).(eq A (asucc g x0) (AHead a1 a2)))) 
51572 (\lambda (a1: A).(\lambda (_: A).(arity g c0 u (asucc g a1)))) (\lambda (_: 
51573 A).(\lambda (a2: A).(arity g (CHead c0 (Bind Abst) u) t a2))) (ex2 A (\lambda 
51574 (a1: A).(arity g c0 (THead (Flat Appl) w v) a1)) (\lambda (a1: A).(arity g c0 
51575 (THead (Flat Appl) w (THead (Bind Abst) u t)) (asucc g a1)))) (\lambda (x1: 
51576 A).(\lambda (x2: A).(\lambda (H11: (eq A (asucc g x0) (AHead x1 
51577 x2))).(\lambda (H12: (arity g c0 u (asucc g x1))).(\lambda (H13: (arity g 
51578 (CHead c0 (Bind Abst) u) t x2)).(let H14 \def (sym_equal A (asucc g x0) 
51579 (AHead x1 x2) H11) in (let H15 \def (asucc_gen_head g x1 x2 x0 H14) in 
51580 (ex2_ind A (\lambda (a0: A).(eq A x0 (AHead x1 a0))) (\lambda (a0: A).(eq A 
51581 x2 (asucc g a0))) (ex2 A (\lambda (a1: A).(arity g c0 (THead (Flat Appl) w v) 
51582 a1)) (\lambda (a1: A).(arity g c0 (THead (Flat Appl) w (THead (Bind Abst) u 
51583 t)) (asucc g a1)))) (\lambda (x3: A).(\lambda (H16: (eq A x0 (AHead x1 
51584 x3))).(\lambda (H17: (eq A x2 (asucc g x3))).(let H18 \def (eq_ind A x2 
51585 (\lambda (a: A).(arity g (CHead c0 (Bind Abst) u) t a)) H13 (asucc g x3) H17) 
51586 in (let H19 \def (eq_ind A x0 (\lambda (a: A).(arity g c0 v a)) H8 (AHead x1 
51587 x3) H16) in (ex_intro2 A (\lambda (a1: A).(arity g c0 (THead (Flat Appl) w v) 
51588 a1)) (\lambda (a1: A).(arity g c0 (THead (Flat Appl) w (THead (Bind Abst) u 
51589 t)) (asucc g a1))) x3 (arity_appl g c0 w x1 (arity_repl g c0 w x H5 x1 
51590 (leq_sym g x1 x (asucc_inj g x1 x (arity_mono g c0 u (asucc g x1) H12 (asucc 
51591 g x) H6)))) v x3 H19) (arity_appl g c0 w x H5 (THead (Bind Abst) u t) (asucc 
51592 g x3) (arity_head g c0 u x H6 t (asucc g x3) H18)))))))) H15)))))))) H10))))) 
51593 H7))))) H4))))))))))) (\lambda (c0: C).(\lambda (t3: T).(\lambda (t4: 
51594 T).(\lambda (_: (ty3 g c0 t3 t4)).(\lambda (H1: (ex2 A (\lambda (a1: 
51595 A).(arity g c0 t3 a1)) (\lambda (a1: A).(arity g c0 t4 (asucc g 
51596 a1))))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t4 t0)).(\lambda (_: (ex2 A 
51597 (\lambda (a1: A).(arity g c0 t4 a1)) (\lambda (a1: A).(arity g c0 t0 (asucc g 
51598 a1))))).(let H4 \def H1 in (ex2_ind A (\lambda (a1: A).(arity g c0 t3 a1)) 
51599 (\lambda (a1: A).(arity g c0 t4 (asucc g a1))) (ex2 A (\lambda (a1: A).(arity 
51600 g c0 (THead (Flat Cast) t4 t3) a1)) (\lambda (a1: A).(arity g c0 t4 (asucc g 
51601 a1)))) (\lambda (x: A).(\lambda (H5: (arity g c0 t3 x)).(\lambda (H6: (arity 
51602 g c0 t4 (asucc g x))).(ex_intro2 A (\lambda (a1: A).(arity g c0 (THead (Flat 
51603 Cast) t4 t3) a1)) (\lambda (a1: A).(arity g c0 t4 (asucc g a1))) x 
51604 (arity_cast g c0 t4 x H6 t3 H5) H6)))) H4)))))))))) c t1 t2 H))))).
51605
51606 theorem ty3_predicative:
51607  \forall (g: G).(\forall (c: C).(\forall (v: T).(\forall (t: T).(\forall (u: 
51608 T).((ty3 g c (THead (Bind Abst) v t) u) \to ((pc3 c u v) \to (\forall (P: 
51609 Prop).P)))))))
51610 \def
51611  \lambda (g: G).(\lambda (c: C).(\lambda (v: T).(\lambda (t: T).(\lambda (u: 
51612 T).(\lambda (H: (ty3 g c (THead (Bind Abst) v t) u)).(\lambda (H0: (pc3 c u 
51613 v)).(\lambda (P: Prop).(let H1 \def H in (ex4_3_ind T T T (\lambda (t2: 
51614 T).(\lambda (_: T).(\lambda (_: T).(pc3 c (THead (Bind Abst) v t2) u)))) 
51615 (\lambda (_: T).(\lambda (t0: T).(\lambda (_: T).(ty3 g c v t0)))) (\lambda 
51616 (t2: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) v) t 
51617 t2)))) (\lambda (t2: T).(\lambda (_: T).(\lambda (t1: T).(ty3 g (CHead c 
51618 (Bind Abst) v) t2 t1)))) P (\lambda (x0: T).(\lambda (x1: T).(\lambda (x2: 
51619 T).(\lambda (_: (pc3 c (THead (Bind Abst) v x0) u)).(\lambda (H3: (ty3 g c v 
51620 x1)).(\lambda (_: (ty3 g (CHead c (Bind Abst) v) t x0)).(\lambda (_: (ty3 g 
51621 (CHead c (Bind Abst) v) x0 x2)).(let H_y \def (ty3_conv g c v x1 H3 (THead 
51622 (Bind Abst) v t) u H H0) in (let H_x \def (ty3_arity g c (THead (Bind Abst) v 
51623 t) v H_y) in (let H6 \def H_x in (ex2_ind A (\lambda (a1: A).(arity g c 
51624 (THead (Bind Abst) v t) a1)) (\lambda (a1: A).(arity g c v (asucc g a1))) P 
51625 (\lambda (x: A).(\lambda (H7: (arity g c (THead (Bind Abst) v t) x)).(\lambda 
51626 (H8: (arity g c v (asucc g x))).(let H9 \def (arity_gen_abst g c v t x H7) in 
51627 (ex3_2_ind A A (\lambda (a1: A).(\lambda (a2: A).(eq A x (AHead a1 a2)))) 
51628 (\lambda (a1: A).(\lambda (_: A).(arity g c v (asucc g a1)))) (\lambda (_: 
51629 A).(\lambda (a2: A).(arity g (CHead c (Bind Abst) v) t a2))) P (\lambda (x3: 
51630 A).(\lambda (x4: A).(\lambda (H10: (eq A x (AHead x3 x4))).(\lambda (H11: 
51631 (arity g c v (asucc g x3))).(\lambda (_: (arity g (CHead c (Bind Abst) v) t 
51632 x4)).(let H13 \def (eq_ind A x (\lambda (a: A).(arity g c v (asucc g a))) H8 
51633 (AHead x3 x4) H10) in (leq_ahead_asucc_false g x3 (asucc g x4) (arity_mono g 
51634 c v (asucc g (AHead x3 x4)) H13 (asucc g x3) H11) P))))))) H9))))) 
51635 H6))))))))))) (ty3_gen_bind g Abst c v t u H1)))))))))).
51636
51637 theorem ty3_acyclic:
51638  \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (u: T).((ty3 g c t 
51639 u) \to ((pc3 c u t) \to (\forall (P: Prop).P))))))
51640 \def
51641  \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (u: T).(\lambda (H: 
51642 (ty3 g c t u)).(\lambda (H0: (pc3 c u t)).(\lambda (P: Prop).(let H_y \def 
51643 (ty3_conv g c t u H t u H H0) in (let H_x \def (ty3_arity g c t t H_y) in 
51644 (let H1 \def H_x in (ex2_ind A (\lambda (a1: A).(arity g c t a1)) (\lambda 
51645 (a1: A).(arity g c t (asucc g a1))) P (\lambda (x: A).(\lambda (H2: (arity g 
51646 c t x)).(\lambda (H3: (arity g c t (asucc g x))).(leq_asucc_false g x 
51647 (arity_mono g c t (asucc g x) H3 x H2) P)))) H1)))))))))).
51648
51649 theorem ty3_sn3:
51650  \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (u: T).((ty3 g c t 
51651 u) \to (sn3 c t)))))
51652 \def
51653  \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (u: T).(\lambda (H: 
51654 (ty3 g c t u)).(let H_x \def (ty3_arity g c t u H) in (let H0 \def H_x in 
51655 (ex2_ind A (\lambda (a1: A).(arity g c t a1)) (\lambda (a1: A).(arity g c u 
51656 (asucc g a1))) (sn3 c t) (\lambda (x: A).(\lambda (H1: (arity g c t 
51657 x)).(\lambda (_: (arity g c u (asucc g x))).(sc3_sn3 g x c t (sc3_arity g c t 
51658 x H1))))) H0))))))).
51659
51660 theorem pc3_dec:
51661  \forall (g: G).(\forall (c: C).(\forall (u1: T).(\forall (t1: T).((ty3 g c 
51662 u1 t1) \to (\forall (u2: T).(\forall (t2: T).((ty3 g c u2 t2) \to (or (pc3 c 
51663 u1 u2) ((pc3 c u1 u2) \to (\forall (P: Prop).P))))))))))
51664 \def
51665  \lambda (g: G).(\lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda 
51666 (H: (ty3 g c u1 t1)).(\lambda (u2: T).(\lambda (t2: T).(\lambda (H0: (ty3 g c 
51667 u2 t2)).(let H_y \def (ty3_sn3 g c u1 t1 H) in (let H_y0 \def (ty3_sn3 g c u2 
51668 t2 H0) in (let H_x \def (nf2_sn3 c u1 H_y) in (let H1 \def H_x in (ex2_ind T 
51669 (\lambda (u: T).(pr3 c u1 u)) (\lambda (u: T).(nf2 c u)) (or (pc3 c u1 u2) 
51670 ((pc3 c u1 u2) \to (\forall (P: Prop).P))) (\lambda (x: T).(\lambda (H2: (pr3 
51671 c u1 x)).(\lambda (H3: (nf2 c x)).(let H_x0 \def (nf2_sn3 c u2 H_y0) in (let 
51672 H4 \def H_x0 in (ex2_ind T (\lambda (u: T).(pr3 c u2 u)) (\lambda (u: T).(nf2 
51673 c u)) (or (pc3 c u1 u2) ((pc3 c u1 u2) \to (\forall (P: Prop).P))) (\lambda 
51674 (x0: T).(\lambda (H5: (pr3 c u2 x0)).(\lambda (H6: (nf2 c x0)).(let H_x1 \def 
51675 (term_dec x x0) in (let H7 \def H_x1 in (or_ind (eq T x x0) ((eq T x x0) \to 
51676 (\forall (P: Prop).P)) (or (pc3 c u1 u2) ((pc3 c u1 u2) \to (\forall (P: 
51677 Prop).P))) (\lambda (H8: (eq T x x0)).(let H9 \def (eq_ind_r T x0 (\lambda 
51678 (t: T).(nf2 c t)) H6 x H8) in (let H10 \def (eq_ind_r T x0 (\lambda (t: 
51679 T).(pr3 c u2 t)) H5 x H8) in (or_introl (pc3 c u1 u2) ((pc3 c u1 u2) \to 
51680 (\forall (P: Prop).P)) (pc3_pr3_t c u1 x H2 u2 H10))))) (\lambda (H8: (((eq T 
51681 x x0) \to (\forall (P: Prop).P)))).(or_intror (pc3 c u1 u2) ((pc3 c u1 u2) 
51682 \to (\forall (P: Prop).P)) (\lambda (H9: (pc3 c u1 u2)).(\lambda (P: 
51683 Prop).(let H10 \def H9 in (ex2_ind T (\lambda (t: T).(pr3 c u1 t)) (\lambda 
51684 (t: T).(pr3 c u2 t)) P (\lambda (x1: T).(\lambda (H11: (pr3 c u1 
51685 x1)).(\lambda (H12: (pr3 c u2 x1)).(let H_x2 \def (pr3_confluence c u2 x0 H5 
51686 x1 H12) in (let H13 \def H_x2 in (ex2_ind T (\lambda (t: T).(pr3 c x0 t)) 
51687 (\lambda (t: T).(pr3 c x1 t)) P (\lambda (x2: T).(\lambda (H14: (pr3 c x0 
51688 x2)).(\lambda (H15: (pr3 c x1 x2)).(let H_y1 \def (nf2_pr3_unfold c x0 x2 H14 
51689 H6) in (let H16 \def (eq_ind_r T x2 (\lambda (t: T).(pr3 c x1 t)) H15 x0 
51690 H_y1) in (let H17 \def (nf2_pr3_confluence c x H3 x0 H6 u1 H2) in (H8 (H17 
51691 (pr3_t x1 u1 c H11 x0 H16)) P))))))) H13)))))) H10)))))) H7)))))) H4)))))) 
51692 H1)))))))))))).
51693
51694 theorem pc3_abst_dec:
51695  \forall (g: G).(\forall (c: C).(\forall (u1: T).(\forall (t1: T).((ty3 g c 
51696 u1 t1) \to (\forall (u2: T).(\forall (t2: T).((ty3 g c u2 t2) \to (or (ex4_2 
51697 T T (\lambda (u: T).(\lambda (_: T).(pc3 c u1 (THead (Bind Abst) u2 u)))) 
51698 (\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead (Bind Abst) v2 u) t1))) 
51699 (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) (\lambda (_: T).(\lambda 
51700 (v2: T).(nf2 c v2)))) (\forall (u: T).((pc3 c u1 (THead (Bind Abst) u2 u)) 
51701 \to (\forall (P: Prop).P)))))))))))
51702 \def
51703  \lambda (g: G).(\lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda 
51704 (H: (ty3 g c u1 t1)).(\lambda (u2: T).(\lambda (t2: T).(\lambda (H0: (ty3 g c 
51705 u2 t2)).(let H1 \def (ty3_sn3 g c u1 t1 H) in (let H2 \def (ty3_sn3 g c u2 t2 
51706 H0) in (let H_x \def (nf2_sn3 c u1 H1) in (let H3 \def H_x in (ex2_ind T 
51707 (\lambda (u: T).(pr3 c u1 u)) (\lambda (u: T).(nf2 c u)) (or (ex4_2 T T 
51708 (\lambda (u: T).(\lambda (_: T).(pc3 c u1 (THead (Bind Abst) u2 u)))) 
51709 (\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead (Bind Abst) v2 u) t1))) 
51710 (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) (\lambda (_: T).(\lambda 
51711 (v2: T).(nf2 c v2)))) (\forall (u: T).((pc3 c u1 (THead (Bind Abst) u2 u)) 
51712 \to (\forall (P: Prop).P)))) (\lambda (x: T).(\lambda (H4: (pr3 c u1 
51713 x)).(\lambda (H5: (nf2 c x)).(let H_x0 \def (nf2_sn3 c u2 H2) in (let H6 \def 
51714 H_x0 in (ex2_ind T (\lambda (u: T).(pr3 c u2 u)) (\lambda (u: T).(nf2 c u)) 
51715 (or (ex4_2 T T (\lambda (u: T).(\lambda (_: T).(pc3 c u1 (THead (Bind Abst) 
51716 u2 u)))) (\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead (Bind Abst) v2 u) 
51717 t1))) (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) (\lambda (_: 
51718 T).(\lambda (v2: T).(nf2 c v2)))) (\forall (u: T).((pc3 c u1 (THead (Bind 
51719 Abst) u2 u)) \to (\forall (P: Prop).P)))) (\lambda (x0: T).(\lambda (H7: (pr3 
51720 c u2 x0)).(\lambda (H8: (nf2 c x0)).(let H_x1 \def (abst_dec x x0) in (let H9 
51721 \def H_x1 in (or_ind (ex T (\lambda (t: T).(eq T x (THead (Bind Abst) x0 
51722 t)))) (\forall (t: T).((eq T x (THead (Bind Abst) x0 t)) \to (\forall (P: 
51723 Prop).P))) (or (ex4_2 T T (\lambda (u: T).(\lambda (_: T).(pc3 c u1 (THead 
51724 (Bind Abst) u2 u)))) (\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead (Bind 
51725 Abst) v2 u) t1))) (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) (\lambda 
51726 (_: T).(\lambda (v2: T).(nf2 c v2)))) (\forall (u: T).((pc3 c u1 (THead (Bind 
51727 Abst) u2 u)) \to (\forall (P: Prop).P)))) (\lambda (H10: (ex T (\lambda (t: 
51728 T).(eq T x (THead (Bind Abst) x0 t))))).(ex_ind T (\lambda (t: T).(eq T x 
51729 (THead (Bind Abst) x0 t))) (or (ex4_2 T T (\lambda (u: T).(\lambda (_: 
51730 T).(pc3 c u1 (THead (Bind Abst) u2 u)))) (\lambda (u: T).(\lambda (v2: 
51731 T).(ty3 g c (THead (Bind Abst) v2 u) t1))) (\lambda (_: T).(\lambda (v2: 
51732 T).(pr3 c u2 v2))) (\lambda (_: T).(\lambda (v2: T).(nf2 c v2)))) (\forall 
51733 (u: T).((pc3 c u1 (THead (Bind Abst) u2 u)) \to (\forall (P: Prop).P)))) 
51734 (\lambda (x1: T).(\lambda (H11: (eq T x (THead (Bind Abst) x0 x1))).(let H12 
51735 \def (eq_ind T x (\lambda (t: T).(nf2 c t)) H5 (THead (Bind Abst) x0 x1) H11) 
51736 in (let H13 \def (eq_ind T x (\lambda (t: T).(pr3 c u1 t)) H4 (THead (Bind 
51737 Abst) x0 x1) H11) in (or_introl (ex4_2 T T (\lambda (u: T).(\lambda (_: 
51738 T).(pc3 c u1 (THead (Bind Abst) u2 u)))) (\lambda (u: T).(\lambda (v2: 
51739 T).(ty3 g c (THead (Bind Abst) v2 u) t1))) (\lambda (_: T).(\lambda (v2: 
51740 T).(pr3 c u2 v2))) (\lambda (_: T).(\lambda (v2: T).(nf2 c v2)))) (\forall 
51741 (u: T).((pc3 c u1 (THead (Bind Abst) u2 u)) \to (\forall (P: Prop).P))) 
51742 (ex4_2_intro T T (\lambda (u: T).(\lambda (_: T).(pc3 c u1 (THead (Bind Abst) 
51743 u2 u)))) (\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead (Bind Abst) v2 u) 
51744 t1))) (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) (\lambda (_: 
51745 T).(\lambda (v2: T).(nf2 c v2))) x1 x0 (pc3_pr3_t c u1 (THead (Bind Abst) x0 
51746 x1) H13 (THead (Bind Abst) u2 x1) (pr3_head_12 c u2 x0 H7 (Bind Abst) x1 x1 
51747 (pr3_refl (CHead c (Bind Abst) x0) x1))) (ty3_sred_pr3 c u1 (THead (Bind 
51748 Abst) x0 x1) H13 g t1 H) H7 H8)))))) H10)) (\lambda (H10: ((\forall (t: 
51749 T).((eq T x (THead (Bind Abst) x0 t)) \to (\forall (P: 
51750 Prop).P))))).(or_intror (ex4_2 T T (\lambda (u: T).(\lambda (_: T).(pc3 c u1 
51751 (THead (Bind Abst) u2 u)))) (\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead 
51752 (Bind Abst) v2 u) t1))) (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) 
51753 (\lambda (_: T).(\lambda (v2: T).(nf2 c v2)))) (\forall (u: T).((pc3 c u1 
51754 (THead (Bind Abst) u2 u)) \to (\forall (P: Prop).P))) (\lambda (u: 
51755 T).(\lambda (H11: (pc3 c u1 (THead (Bind Abst) u2 u))).(\lambda (P: 
51756 Prop).(let H12 \def H11 in (ex2_ind T (\lambda (t: T).(pr3 c u1 t)) (\lambda 
51757 (t: T).(pr3 c (THead (Bind Abst) u2 u) t)) P (\lambda (x1: T).(\lambda (H13: 
51758 (pr3 c u1 x1)).(\lambda (H14: (pr3 c (THead (Bind Abst) u2 u) x1)).(ex2_ind T 
51759 (\lambda (t: T).(pr3 c x1 t)) (\lambda (t: T).(pr3 c x t)) P (\lambda (x2: 
51760 T).(\lambda (H15: (pr3 c x1 x2)).(\lambda (H16: (pr3 c x x2)).(let H_y \def 
51761 (nf2_pr3_unfold c x x2 H16 H5) in (let H17 \def (eq_ind_r T x2 (\lambda (t: 
51762 T).(pr3 c x1 t)) H15 x H_y) in (let H18 \def (pr3_gen_abst c u2 u x1 H14) in 
51763 (ex3_2_ind T T (\lambda (u3: T).(\lambda (t3: T).(eq T x1 (THead (Bind Abst) 
51764 u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr3 c u2 u3))) (\lambda (_: 
51765 T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr3 (CHead c (Bind b) 
51766 u0) u t3))))) P (\lambda (x3: T).(\lambda (x4: T).(\lambda (H19: (eq T x1 
51767 (THead (Bind Abst) x3 x4))).(\lambda (H20: (pr3 c u2 x3)).(\lambda (_: 
51768 ((\forall (b: B).(\forall (u0: T).(pr3 (CHead c (Bind b) u0) u x4))))).(let 
51769 H22 \def (eq_ind T x1 (\lambda (t: T).(pr3 c t x)) H17 (THead (Bind Abst) x3 
51770 x4) H19) in (let H23 \def (pr3_gen_abst c x3 x4 x H22) in (ex3_2_ind T T 
51771 (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u3 t3)))) 
51772 (\lambda (u3: T).(\lambda (_: T).(pr3 c x3 u3))) (\lambda (_: T).(\lambda 
51773 (t3: T).(\forall (b: B).(\forall (u0: T).(pr3 (CHead c (Bind b) u0) x4 
51774 t3))))) P (\lambda (x5: T).(\lambda (x6: T).(\lambda (H24: (eq T x (THead 
51775 (Bind Abst) x5 x6))).(\lambda (H25: (pr3 c x3 x5)).(\lambda (_: ((\forall (b: 
51776 B).(\forall (u: T).(pr3 (CHead c (Bind b) u) x4 x6))))).(let H27 \def (eq_ind 
51777 T x (\lambda (t: T).(\forall (t0: T).((eq T t (THead (Bind Abst) x0 t0)) \to 
51778 (\forall (P: Prop).P)))) H10 (THead (Bind Abst) x5 x6) H24) in (let H28 \def 
51779 (eq_ind T x (\lambda (t: T).(nf2 c t)) H5 (THead (Bind Abst) x5 x6) H24) in 
51780 (let H29 \def (nf2_gen_abst c x5 x6 H28) in (and_ind (nf2 c x5) (nf2 (CHead c 
51781 (Bind Abst) x5) x6) P (\lambda (H30: (nf2 c x5)).(\lambda (_: (nf2 (CHead c 
51782 (Bind Abst) x5) x6)).(let H32 \def (nf2_pr3_confluence c x0 H8 x5 H30 u2 H7) 
51783 in (H27 x6 (sym_equal T (THead (Bind Abst) x0 x6) (THead (Bind Abst) x5 x6) 
51784 (f_equal3 K T T T THead (Bind Abst) (Bind Abst) x0 x5 x6 x6 (refl_equal K 
51785 (Bind Abst)) (H32 (pr3_t x3 u2 c H20 x5 H25)) (refl_equal T x6))) P)))) 
51786 H29))))))))) H23)))))))) H18))))))) (pr3_confluence c u1 x1 H13 x H4))))) 
51787 H12))))))) H9)))))) H6)))))) H3)))))))))))).
51788
51789 theorem ty3_inference:
51790  \forall (g: G).(\forall (c: C).(\forall (t1: T).(or (ex T (\lambda (t2: 
51791 T).(ty3 g c t1 t2))) (\forall (t2: T).((ty3 g c t1 t2) \to (\forall (P: 
51792 Prop).P))))))
51793 \def
51794  \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(flt_wf_ind (\lambda (c0: 
51795 C).(\lambda (t: T).(or (ex T (\lambda (t2: T).(ty3 g c0 t t2))) (\forall (t2: 
51796 T).((ty3 g c0 t t2) \to (\forall (P: Prop).P)))))) (\lambda (c2: C).(\lambda 
51797 (t2: T).(match t2 return (\lambda (t: T).(((\forall (c1: C).(\forall (t1: 
51798 T).((flt c1 t1 c2 t) \to (or (ex T (\lambda (t2: T).(ty3 g c1 t1 t2))) 
51799 (\forall (t2: T).((ty3 g c1 t1 t2) \to (\forall (P: Prop).P)))))))) \to (or 
51800 (ex T (\lambda (t3: T).(ty3 g c2 t t3))) (\forall (t3: T).((ty3 g c2 t t3) 
51801 \to (\forall (P: Prop).P)))))) with [(TSort n) \Rightarrow (\lambda (_: 
51802 ((\forall (c1: C).(\forall (t1: T).((flt c1 t1 c2 (TSort n)) \to (or (ex T 
51803 (\lambda (t2: T).(ty3 g c1 t1 t2))) (\forall (t2: T).((ty3 g c1 t1 t2) \to 
51804 (\forall (P: Prop).P))))))))).(or_introl (ex T (\lambda (t3: T).(ty3 g c2 
51805 (TSort n) t3))) (\forall (t3: T).((ty3 g c2 (TSort n) t3) \to (\forall (P: 
51806 Prop).P))) (ex_intro T (\lambda (t3: T).(ty3 g c2 (TSort n) t3)) (TSort (next 
51807 g n)) (ty3_sort g c2 n)))) | (TLRef n) \Rightarrow (\lambda (H: ((\forall 
51808 (c1: C).(\forall (t1: T).((flt c1 t1 c2 (TLRef n)) \to (or (ex T (\lambda 
51809 (t2: T).(ty3 g c1 t1 t2))) (\forall (t2: T).((ty3 g c1 t1 t2) \to (\forall 
51810 (P: Prop).P))))))))).(let H_x \def (getl_dec c2 n) in (let H0 \def H_x in 
51811 (or_ind (ex_3 C B T (\lambda (e: C).(\lambda (b: B).(\lambda (v: T).(getl n 
51812 c2 (CHead e (Bind b) v)))))) (\forall (d: C).((getl n c2 d) \to (\forall (P: 
51813 Prop).P))) (or (ex T (\lambda (t3: T).(ty3 g c2 (TLRef n) t3))) (\forall (t3: 
51814 T).((ty3 g c2 (TLRef n) t3) \to (\forall (P: Prop).P)))) (\lambda (H1: (ex_3 
51815 C B T (\lambda (e: C).(\lambda (b: B).(\lambda (v: T).(getl n c2 (CHead e 
51816 (Bind b) v))))))).(ex_3_ind C B T (\lambda (e: C).(\lambda (b: B).(\lambda 
51817 (v: T).(getl n c2 (CHead e (Bind b) v))))) (or (ex T (\lambda (t3: T).(ty3 g 
51818 c2 (TLRef n) t3))) (\forall (t3: T).((ty3 g c2 (TLRef n) t3) \to (\forall (P: 
51819 Prop).P)))) (\lambda (x0: C).(\lambda (x1: B).(\lambda (x2: T).(\lambda (H2: 
51820 (getl n c2 (CHead x0 (Bind x1) x2))).(let H3 \def (H x0 x2 (getl_flt x1 c2 x0 
51821 x2 n H2)) in (or_ind (ex T (\lambda (t3: T).(ty3 g x0 x2 t3))) (\forall (t3: 
51822 T).((ty3 g x0 x2 t3) \to (\forall (P: Prop).P))) (or (ex T (\lambda (t3: 
51823 T).(ty3 g c2 (TLRef n) t3))) (\forall (t3: T).((ty3 g c2 (TLRef n) t3) \to 
51824 (\forall (P: Prop).P)))) (\lambda (H4: (ex T (\lambda (t2: T).(ty3 g x0 x2 
51825 t2)))).(ex_ind T (\lambda (t3: T).(ty3 g x0 x2 t3)) (or (ex T (\lambda (t3: 
51826 T).(ty3 g c2 (TLRef n) t3))) (\forall (t3: T).((ty3 g c2 (TLRef n) t3) \to 
51827 (\forall (P: Prop).P)))) (\lambda (x: T).(\lambda (H5: (ty3 g x0 x2 
51828 x)).((match x1 return (\lambda (b: B).((getl n c2 (CHead x0 (Bind b) x2)) \to 
51829 (or (ex T (\lambda (t3: T).(ty3 g c2 (TLRef n) t3))) (\forall (t3: T).((ty3 g 
51830 c2 (TLRef n) t3) \to (\forall (P: Prop).P)))))) with [Abbr \Rightarrow 
51831 (\lambda (H6: (getl n c2 (CHead x0 (Bind Abbr) x2))).(or_introl (ex T 
51832 (\lambda (t3: T).(ty3 g c2 (TLRef n) t3))) (\forall (t3: T).((ty3 g c2 (TLRef 
51833 n) t3) \to (\forall (P: Prop).P))) (ex_intro T (\lambda (t3: T).(ty3 g c2 
51834 (TLRef n) t3)) (lift (S n) O x) (ty3_abbr g n c2 x0 x2 H6 x H5)))) | Abst 
51835 \Rightarrow (\lambda (H6: (getl n c2 (CHead x0 (Bind Abst) x2))).(or_introl 
51836 (ex T (\lambda (t3: T).(ty3 g c2 (TLRef n) t3))) (\forall (t3: T).((ty3 g c2 
51837 (TLRef n) t3) \to (\forall (P: Prop).P))) (ex_intro T (\lambda (t3: T).(ty3 g 
51838 c2 (TLRef n) t3)) (lift (S n) O x2) (ty3_abst g n c2 x0 x2 H6 x H5)))) | Void 
51839 \Rightarrow (\lambda (H6: (getl n c2 (CHead x0 (Bind Void) x2))).(or_intror 
51840 (ex T (\lambda (t3: T).(ty3 g c2 (TLRef n) t3))) (\forall (t3: T).((ty3 g c2 
51841 (TLRef n) t3) \to (\forall (P: Prop).P))) (\lambda (t3: T).(\lambda (H7: (ty3 
51842 g c2 (TLRef n) t3)).(\lambda (P: Prop).(or_ind (ex3_3 C T T (\lambda (_: 
51843 C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda 
51844 (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) 
51845 (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T 
51846 T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) 
51847 t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e 
51848 (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
51849 t))))) P (\lambda (H8: (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda 
51850 (t: T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda (e: C).(\lambda (u: 
51851 T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) (\lambda (e: 
51852 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))).(ex3_3_ind C T T 
51853 (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) 
51854 t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e 
51855 (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
51856 t)))) P (\lambda (x3: C).(\lambda (x4: T).(\lambda (x5: T).(\lambda (_: (pc3 
51857 c2 (lift (S n) O x5) t3)).(\lambda (H10: (getl n c2 (CHead x3 (Bind Abbr) 
51858 x4))).(\lambda (_: (ty3 g x3 x4 x5)).(let H12 \def (eq_ind C (CHead x0 (Bind 
51859 Void) x2) (\lambda (c: C).(getl n c2 c)) H6 (CHead x3 (Bind Abbr) x4) 
51860 (getl_mono c2 (CHead x0 (Bind Void) x2) n H6 (CHead x3 (Bind Abbr) x4) H10)) 
51861 in (let H13 \def (eq_ind C (CHead x0 (Bind Void) x2) (\lambda (ee: C).(match 
51862 ee return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ 
51863 k _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind b) 
51864 \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow 
51865 False | Abst \Rightarrow False | Void \Rightarrow True]) | (Flat _) 
51866 \Rightarrow False])])) I (CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 
51867 (Bind Void) x2) n H6 (CHead x3 (Bind Abbr) x4) H10)) in (False_ind P 
51868 H13))))))))) H8)) (\lambda (H8: (ex3_3 C T T (\lambda (_: C).(\lambda (u: 
51869 T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) t3)))) (\lambda (e: C).(\lambda 
51870 (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abst) u))))) (\lambda (e: 
51871 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))).(ex3_3_ind C T T 
51872 (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) 
51873 t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e 
51874 (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
51875 t)))) P (\lambda (x3: C).(\lambda (x4: T).(\lambda (x5: T).(\lambda (_: (pc3 
51876 c2 (lift (S n) O x4) t3)).(\lambda (H10: (getl n c2 (CHead x3 (Bind Abst) 
51877 x4))).(\lambda (_: (ty3 g x3 x4 x5)).(let H12 \def (eq_ind C (CHead x0 (Bind 
51878 Void) x2) (\lambda (c: C).(getl n c2 c)) H6 (CHead x3 (Bind Abst) x4) 
51879 (getl_mono c2 (CHead x0 (Bind Void) x2) n H6 (CHead x3 (Bind Abst) x4) H10)) 
51880 in (let H13 \def (eq_ind C (CHead x0 (Bind Void) x2) (\lambda (ee: C).(match 
51881 ee return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ 
51882 k _) \Rightarrow (match k return (\lambda (_: K).Prop) with [(Bind b) 
51883 \Rightarrow (match b return (\lambda (_: B).Prop) with [Abbr \Rightarrow 
51884 False | Abst \Rightarrow False | Void \Rightarrow True]) | (Flat _) 
51885 \Rightarrow False])])) I (CHead x3 (Bind Abst) x4) (getl_mono c2 (CHead x0 
51886 (Bind Void) x2) n H6 (CHead x3 (Bind Abst) x4) H10)) in (False_ind P 
51887 H13))))))))) H8)) (ty3_gen_lref g c2 t3 n H7)))))))]) H2))) H4)) (\lambda 
51888 (H4: ((\forall (t2: T).((ty3 g x0 x2 t2) \to (\forall (P: 
51889 Prop).P))))).(or_intror (ex T (\lambda (t3: T).(ty3 g c2 (TLRef n) t3))) 
51890 (\forall (t3: T).((ty3 g c2 (TLRef n) t3) \to (\forall (P: Prop).P))) 
51891 (\lambda (t3: T).(\lambda (H5: (ty3 g c2 (TLRef n) t3)).(\lambda (P: 
51892 Prop).(or_ind (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: 
51893 T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda 
51894 (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
51895 T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda 
51896 (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) t3)))) (\lambda (e: 
51897 C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abst) u))))) 
51898 (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) P (\lambda 
51899 (H6: (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 
51900 (lift (S n) O t) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl 
51901 n c2 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
51902 T).(ty3 g e u t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (_: 
51903 T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda (e: C).(\lambda 
51904 (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) (\lambda (e: 
51905 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))) P (\lambda (x3: 
51906 C).(\lambda (x4: T).(\lambda (x5: T).(\lambda (_: (pc3 c2 (lift (S n) O x5) 
51907 t3)).(\lambda (H8: (getl n c2 (CHead x3 (Bind Abbr) x4))).(\lambda (H9: (ty3 
51908 g x3 x4 x5)).(let H10 \def (eq_ind C (CHead x0 (Bind x1) x2) (\lambda (c: 
51909 C).(getl n c2 c)) H2 (CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 (Bind 
51910 x1) x2) n H2 (CHead x3 (Bind Abbr) x4) H8)) in (let H11 \def (f_equal C C 
51911 (\lambda (e: C).(match e return (\lambda (_: C).C) with [(CSort _) 
51912 \Rightarrow x0 | (CHead c _ _) \Rightarrow c])) (CHead x0 (Bind x1) x2) 
51913 (CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 (Bind x1) x2) n H2 (CHead 
51914 x3 (Bind Abbr) x4) H8)) in ((let H12 \def (f_equal C B (\lambda (e: C).(match 
51915 e return (\lambda (_: C).B) with [(CSort _) \Rightarrow x1 | (CHead _ k _) 
51916 \Rightarrow (match k return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | 
51917 (Flat _) \Rightarrow x1])])) (CHead x0 (Bind x1) x2) (CHead x3 (Bind Abbr) 
51918 x4) (getl_mono c2 (CHead x0 (Bind x1) x2) n H2 (CHead x3 (Bind Abbr) x4) H8)) 
51919 in ((let H13 \def (f_equal C T (\lambda (e: C).(match e return (\lambda (_: 
51920 C).T) with [(CSort _) \Rightarrow x2 | (CHead _ _ t) \Rightarrow t])) (CHead 
51921 x0 (Bind x1) x2) (CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 (Bind x1) 
51922 x2) n H2 (CHead x3 (Bind Abbr) x4) H8)) in (\lambda (_: (eq B x1 
51923 Abbr)).(\lambda (H15: (eq C x0 x3)).(let H16 \def (eq_ind_r T x4 (\lambda (t: 
51924 T).(getl n c2 (CHead x3 (Bind Abbr) t))) H10 x2 H13) in (let H17 \def 
51925 (eq_ind_r T x4 (\lambda (t: T).(ty3 g x3 t x5)) H9 x2 H13) in (let H18 \def 
51926 (eq_ind_r C x3 (\lambda (c: C).(getl n c2 (CHead c (Bind Abbr) x2))) H16 x0 
51927 H15) in (let H19 \def (eq_ind_r C x3 (\lambda (c: C).(ty3 g c x2 x5)) H17 x0 
51928 H15) in (H4 x5 H19 P)))))))) H12)) H11))))))))) H6)) (\lambda (H6: (ex3_3 C T 
51929 T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) 
51930 t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e 
51931 (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u 
51932 t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 
51933 c2 (lift (S n) O u) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: 
51934 T).(getl n c2 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: 
51935 T).(\lambda (t: T).(ty3 g e u t)))) P (\lambda (x3: C).(\lambda (x4: 
51936 T).(\lambda (x5: T).(\lambda (H7: (pc3 c2 (lift (S n) O x4) t3)).(\lambda 
51937 (H8: (getl n c2 (CHead x3 (Bind Abst) x4))).(\lambda (H9: (ty3 g x3 x4 
51938 x5)).(let H10 \def (eq_ind C (CHead x0 (Bind x1) x2) (\lambda (c: C).(getl n 
51939 c2 c)) H2 (CHead x3 (Bind Abst) x4) (getl_mono c2 (CHead x0 (Bind x1) x2) n 
51940 H2 (CHead x3 (Bind Abst) x4) H8)) in (let H11 \def (f_equal C C (\lambda (e: 
51941 C).(match e return (\lambda (_: C).C) with [(CSort _) \Rightarrow x0 | (CHead 
51942 c _ _) \Rightarrow c])) (CHead x0 (Bind x1) x2) (CHead x3 (Bind Abst) x4) 
51943 (getl_mono c2 (CHead x0 (Bind x1) x2) n H2 (CHead x3 (Bind Abst) x4) H8)) in 
51944 ((let H12 \def (f_equal C B (\lambda (e: C).(match e return (\lambda (_: 
51945 C).B) with [(CSort _) \Rightarrow x1 | (CHead _ k _) \Rightarrow (match k 
51946 return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow 
51947 x1])])) (CHead x0 (Bind x1) x2) (CHead x3 (Bind Abst) x4) (getl_mono c2 
51948 (CHead x0 (Bind x1) x2) n H2 (CHead x3 (Bind Abst) x4) H8)) in ((let H13 \def 
51949 (f_equal C T (\lambda (e: C).(match e return (\lambda (_: C).T) with [(CSort 
51950 _) \Rightarrow x2 | (CHead _ _ t) \Rightarrow t])) (CHead x0 (Bind x1) x2) 
51951 (CHead x3 (Bind Abst) x4) (getl_mono c2 (CHead x0 (Bind x1) x2) n H2 (CHead 
51952 x3 (Bind Abst) x4) H8)) in (\lambda (_: (eq B x1 Abst)).(\lambda (H15: (eq C 
51953 x0 x3)).(let H16 \def (eq_ind_r T x4 (\lambda (t: T).(getl n c2 (CHead x3 
51954 (Bind Abst) t))) H10 x2 H13) in (let H17 \def (eq_ind_r T x4 (\lambda (t: 
51955 T).(ty3 g x3 t x5)) H9 x2 H13) in (let H18 \def (eq_ind_r T x4 (\lambda (t: 
51956 T).(pc3 c2 (lift (S n) O t) t3)) H7 x2 H13) in (let H19 \def (eq_ind_r C x3 
51957 (\lambda (c: C).(getl n c2 (CHead c (Bind Abst) x2))) H16 x0 H15) in (let H20 
51958 \def (eq_ind_r C x3 (\lambda (c: C).(ty3 g c x2 x5)) H17 x0 H15) in (H4 x5 
51959 H20 P))))))))) H12)) H11))))))))) H6)) (ty3_gen_lref g c2 t3 n H5))))))) 
51960 H3)))))) H1)) (\lambda (H1: ((\forall (d: C).((getl n c2 d) \to (\forall (P: 
51961 Prop).P))))).(or_intror (ex T (\lambda (t3: T).(ty3 g c2 (TLRef n) t3))) 
51962 (\forall (t3: T).((ty3 g c2 (TLRef n) t3) \to (\forall (P: Prop).P))) 
51963 (\lambda (t3: T).(\lambda (H2: (ty3 g c2 (TLRef n) t3)).(\lambda (P: 
51964 Prop).(or_ind (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: 
51965 T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda 
51966 (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: 
51967 T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda 
51968 (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) t3)))) (\lambda (e: 
51969 C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abst) u))))) 
51970 (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) P (\lambda 
51971 (H3: (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 
51972 (lift (S n) O t) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl 
51973 n c2 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
51974 T).(ty3 g e u t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (_: 
51975 T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda (e: C).(\lambda 
51976 (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) (\lambda (e: 
51977 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))) P (\lambda (x0: 
51978 C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 c2 (lift (S n) O x2) 
51979 t3)).(\lambda (H5: (getl n c2 (CHead x0 (Bind Abbr) x1))).(\lambda (_: (ty3 g 
51980 x0 x1 x2)).(H1 (CHead x0 (Bind Abbr) x1) H5 P))))))) H3)) (\lambda (H3: 
51981 (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 (lift (S 
51982 n) O u) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 
51983 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: 
51984 T).(ty3 g e u t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u: 
51985 T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) t3)))) (\lambda (e: C).(\lambda 
51986 (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abst) u))))) (\lambda (e: 
51987 C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))) P (\lambda (x0: 
51988 C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 c2 (lift (S n) O x1) 
51989 t3)).(\lambda (H5: (getl n c2 (CHead x0 (Bind Abst) x1))).(\lambda (_: (ty3 g 
51990 x0 x1 x2)).(H1 (CHead x0 (Bind Abst) x1) H5 P))))))) H3)) (ty3_gen_lref g c2 
51991 t3 n H2))))))) H0)))) | (THead k t t0) \Rightarrow (\lambda (H: ((\forall 
51992 (c1: C).(\forall (t1: T).((flt c1 t1 c2 (THead k t t0)) \to (or (ex T 
51993 (\lambda (t2: T).(ty3 g c1 t1 t2))) (\forall (t2: T).((ty3 g c1 t1 t2) \to 
51994 (\forall (P: Prop).P))))))))).((match k return (\lambda (k0: K).(((\forall 
51995 (c1: C).(\forall (t1: T).((flt c1 t1 c2 (THead k0 t t0)) \to (or (ex T 
51996 (\lambda (t2: T).(ty3 g c1 t1 t2))) (\forall (t2: T).((ty3 g c1 t1 t2) \to 
51997 (\forall (P: Prop).P)))))))) \to (or (ex T (\lambda (t3: T).(ty3 g c2 (THead 
51998 k0 t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead k0 t t0) t3) \to (\forall 
51999 (P: Prop).P)))))) with [(Bind b) \Rightarrow (\lambda (H0: ((\forall (c1: 
52000 C).(\forall (t1: T).((flt c1 t1 c2 (THead (Bind b) t t0)) \to (or (ex T 
52001 (\lambda (t2: T).(ty3 g c1 t1 t2))) (\forall (t2: T).((ty3 g c1 t1 t2) \to 
52002 (\forall (P: Prop).P))))))))).(let H1 \def (H0 c2 t (flt_thead_sx (Bind b) c2 
52003 t t0)) in (or_ind (ex T (\lambda (t3: T).(ty3 g c2 t t3))) (\forall (t3: 
52004 T).((ty3 g c2 t t3) \to (\forall (P: Prop).P))) (or (ex T (\lambda (t3: 
52005 T).(ty3 g c2 (THead (Bind b) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead 
52006 (Bind b) t t0) t3) \to (\forall (P: Prop).P)))) (\lambda (H2: (ex T (\lambda 
52007 (t2: T).(ty3 g c2 t t2)))).(ex_ind T (\lambda (t3: T).(ty3 g c2 t t3)) (or 
52008 (ex T (\lambda (t3: T).(ty3 g c2 (THead (Bind b) t t0) t3))) (\forall (t3: 
52009 T).((ty3 g c2 (THead (Bind b) t t0) t3) \to (\forall (P: Prop).P)))) (\lambda 
52010 (x: T).(\lambda (H3: (ty3 g c2 t x)).(let H4 \def (H0 (CHead c2 (Bind b) t) 
52011 t0 (flt_shift (Bind b) c2 t t0)) in (or_ind (ex T (\lambda (t3: T).(ty3 g 
52012 (CHead c2 (Bind b) t) t0 t3))) (\forall (t3: T).((ty3 g (CHead c2 (Bind b) t) 
52013 t0 t3) \to (\forall (P: Prop).P))) (or (ex T (\lambda (t3: T).(ty3 g c2 
52014 (THead (Bind b) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Bind b) t t0) 
52015 t3) \to (\forall (P: Prop).P)))) (\lambda (H5: (ex T (\lambda (t2: T).(ty3 g 
52016 (CHead c2 (Bind b) t) t0 t2)))).(ex_ind T (\lambda (t3: T).(ty3 g (CHead c2 
52017 (Bind b) t) t0 t3)) (or (ex T (\lambda (t3: T).(ty3 g c2 (THead (Bind b) t 
52018 t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Bind b) t t0) t3) \to (\forall 
52019 (P: Prop).P)))) (\lambda (x0: T).(\lambda (H6: (ty3 g (CHead c2 (Bind b) t) 
52020 t0 x0)).(ex_ind T (\lambda (t3: T).(ty3 g (CHead c2 (Bind b) t) x0 t3)) (or 
52021 (ex T (\lambda (t3: T).(ty3 g c2 (THead (Bind b) t t0) t3))) (\forall (t3: 
52022 T).((ty3 g c2 (THead (Bind b) t t0) t3) \to (\forall (P: Prop).P)))) (\lambda 
52023 (x1: T).(\lambda (H7: (ty3 g (CHead c2 (Bind b) t) x0 x1)).(or_introl (ex T 
52024 (\lambda (t3: T).(ty3 g c2 (THead (Bind b) t t0) t3))) (\forall (t3: T).((ty3 
52025 g c2 (THead (Bind b) t t0) t3) \to (\forall (P: Prop).P))) (ex_intro T 
52026 (\lambda (t3: T).(ty3 g c2 (THead (Bind b) t t0) t3)) (THead (Bind b) t x0) 
52027 (ty3_bind g c2 t x H3 b t0 x0 H6 x1 H7))))) (ty3_correct g (CHead c2 (Bind b) 
52028 t) t0 x0 H6)))) H5)) (\lambda (H5: ((\forall (t2: T).((ty3 g (CHead c2 (Bind 
52029 b) t) t0 t2) \to (\forall (P: Prop).P))))).(or_intror (ex T (\lambda (t3: 
52030 T).(ty3 g c2 (THead (Bind b) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead 
52031 (Bind b) t t0) t3) \to (\forall (P: Prop).P))) (\lambda (t3: T).(\lambda (H6: 
52032 (ty3 g c2 (THead (Bind b) t t0) t3)).(\lambda (P: Prop).(ex4_3_ind T T T 
52033 (\lambda (t4: T).(\lambda (_: T).(\lambda (_: T).(pc3 c2 (THead (Bind b) t 
52034 t4) t3)))) (\lambda (_: T).(\lambda (t5: T).(\lambda (_: T).(ty3 g c2 t 
52035 t5)))) (\lambda (t4: T).(\lambda (_: T).(\lambda (_: T).(ty3 g (CHead c2 
52036 (Bind b) t) t0 t4)))) (\lambda (t4: T).(\lambda (_: T).(\lambda (t6: T).(ty3 
52037 g (CHead c2 (Bind b) t) t4 t6)))) P (\lambda (x0: T).(\lambda (x1: 
52038 T).(\lambda (x2: T).(\lambda (_: (pc3 c2 (THead (Bind b) t x0) t3)).(\lambda 
52039 (_: (ty3 g c2 t x1)).(\lambda (H9: (ty3 g (CHead c2 (Bind b) t) t0 
52040 x0)).(\lambda (_: (ty3 g (CHead c2 (Bind b) t) x0 x2)).(H5 x0 H9 P)))))))) 
52041 (ty3_gen_bind g b c2 t t0 t3 H6))))))) H4)))) H2)) (\lambda (H2: ((\forall 
52042 (t2: T).((ty3 g c2 t t2) \to (\forall (P: Prop).P))))).(or_intror (ex T 
52043 (\lambda (t3: T).(ty3 g c2 (THead (Bind b) t t0) t3))) (\forall (t3: T).((ty3 
52044 g c2 (THead (Bind b) t t0) t3) \to (\forall (P: Prop).P))) (\lambda (t3: 
52045 T).(\lambda (H3: (ty3 g c2 (THead (Bind b) t t0) t3)).(\lambda (P: 
52046 Prop).(ex4_3_ind T T T (\lambda (t4: T).(\lambda (_: T).(\lambda (_: T).(pc3 
52047 c2 (THead (Bind b) t t4) t3)))) (\lambda (_: T).(\lambda (t5: T).(\lambda (_: 
52048 T).(ty3 g c2 t t5)))) (\lambda (t4: T).(\lambda (_: T).(\lambda (_: T).(ty3 g 
52049 (CHead c2 (Bind b) t) t0 t4)))) (\lambda (t4: T).(\lambda (_: T).(\lambda 
52050 (t6: T).(ty3 g (CHead c2 (Bind b) t) t4 t6)))) P (\lambda (x0: T).(\lambda 
52051 (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 c2 (THead (Bind b) t x0) 
52052 t3)).(\lambda (H5: (ty3 g c2 t x1)).(\lambda (_: (ty3 g (CHead c2 (Bind b) t) 
52053 t0 x0)).(\lambda (_: (ty3 g (CHead c2 (Bind b) t) x0 x2)).(H2 x1 H5 P)))))))) 
52054 (ty3_gen_bind g b c2 t t0 t3 H3))))))) H1))) | (Flat f) \Rightarrow (\lambda 
52055 (H0: ((\forall (c1: C).(\forall (t1: T).((flt c1 t1 c2 (THead (Flat f) t t0)) 
52056 \to (or (ex T (\lambda (t2: T).(ty3 g c1 t1 t2))) (\forall (t2: T).((ty3 g c1 
52057 t1 t2) \to (\forall (P: Prop).P))))))))).((match f return (\lambda (f0: 
52058 F).(((\forall (c1: C).(\forall (t1: T).((flt c1 t1 c2 (THead (Flat f0) t t0)) 
52059 \to (or (ex T (\lambda (t2: T).(ty3 g c1 t1 t2))) (\forall (t2: T).((ty3 g c1 
52060 t1 t2) \to (\forall (P: Prop).P)))))))) \to (or (ex T (\lambda (t3: T).(ty3 g 
52061 c2 (THead (Flat f0) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat f0) 
52062 t t0) t3) \to (\forall (P: Prop).P)))))) with [Appl \Rightarrow (\lambda (H1: 
52063 ((\forall (c1: C).(\forall (t1: T).((flt c1 t1 c2 (THead (Flat Appl) t t0)) 
52064 \to (or (ex T (\lambda (t2: T).(ty3 g c1 t1 t2))) (\forall (t2: T).((ty3 g c1 
52065 t1 t2) \to (\forall (P: Prop).P))))))))).(let H2 \def (H1 c2 t (flt_thead_sx 
52066 (Flat Appl) c2 t t0)) in (or_ind (ex T (\lambda (t3: T).(ty3 g c2 t t3))) 
52067 (\forall (t3: T).((ty3 g c2 t t3) \to (\forall (P: Prop).P))) (or (ex T 
52068 (\lambda (t3: T).(ty3 g c2 (THead (Flat Appl) t t0) t3))) (\forall (t3: 
52069 T).((ty3 g c2 (THead (Flat Appl) t t0) t3) \to (\forall (P: Prop).P)))) 
52070 (\lambda (H3: (ex T (\lambda (t2: T).(ty3 g c2 t t2)))).(ex_ind T (\lambda 
52071 (t3: T).(ty3 g c2 t t3)) (or (ex T (\lambda (t3: T).(ty3 g c2 (THead (Flat 
52072 Appl) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Appl) t t0) t3) 
52073 \to (\forall (P: Prop).P)))) (\lambda (x: T).(\lambda (H4: (ty3 g c2 t 
52074 x)).(let H5 \def (H1 c2 t0 (flt_thead_dx (Flat Appl) c2 t t0)) in (or_ind (ex 
52075 T (\lambda (t3: T).(ty3 g c2 t0 t3))) (\forall (t3: T).((ty3 g c2 t0 t3) \to 
52076 (\forall (P: Prop).P))) (or (ex T (\lambda (t3: T).(ty3 g c2 (THead (Flat 
52077 Appl) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Appl) t t0) t3) 
52078 \to (\forall (P: Prop).P)))) (\lambda (H6: (ex T (\lambda (t2: T).(ty3 g c2 
52079 t0 t2)))).(ex_ind T (\lambda (t3: T).(ty3 g c2 t0 t3)) (or (ex T (\lambda 
52080 (t3: T).(ty3 g c2 (THead (Flat Appl) t t0) t3))) (\forall (t3: T).((ty3 g c2 
52081 (THead (Flat Appl) t t0) t3) \to (\forall (P: Prop).P)))) (\lambda (x0: 
52082 T).(\lambda (H7: (ty3 g c2 t0 x0)).(ex_ind T (\lambda (t3: T).(ty3 g c2 x0 
52083 t3)) (or (ex T (\lambda (t3: T).(ty3 g c2 (THead (Flat Appl) t t0) t3))) 
52084 (\forall (t3: T).((ty3 g c2 (THead (Flat Appl) t t0) t3) \to (\forall (P: 
52085 Prop).P)))) (\lambda (x1: T).(\lambda (H8: (ty3 g c2 x0 x1)).(ex_ind T 
52086 (\lambda (t3: T).(ty3 g c2 x t3)) (or (ex T (\lambda (t3: T).(ty3 g c2 (THead 
52087 (Flat Appl) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Appl) t t0) 
52088 t3) \to (\forall (P: Prop).P)))) (\lambda (x2: T).(\lambda (H9: (ty3 g c2 x 
52089 x2)).(let H10 \def (ty3_sn3 g c2 x x2 H9) in (let H_x \def (nf2_sn3 c2 x H10) 
52090 in (let H11 \def H_x in (ex2_ind T (\lambda (u: T).(pr3 c2 x u)) (\lambda (u: 
52091 T).(nf2 c2 u)) (or (ex T (\lambda (t3: T).(ty3 g c2 (THead (Flat Appl) t t0) 
52092 t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Appl) t t0) t3) \to (\forall 
52093 (P: Prop).P)))) (\lambda (x3: T).(\lambda (H12: (pr3 c2 x x3)).(\lambda (H13: 
52094 (nf2 c2 x3)).(let H14 \def (ty3_sred_pr3 c2 x x3 H12 g x2 H9) in (let H_x0 
52095 \def (pc3_abst_dec g c2 x0 x1 H8 x3 x2 H14) in (let H15 \def H_x0 in (or_ind 
52096 (ex4_2 T T (\lambda (u: T).(\lambda (_: T).(pc3 c2 x0 (THead (Bind Abst) x3 
52097 u)))) (\lambda (u: T).(\lambda (v2: T).(ty3 g c2 (THead (Bind Abst) v2 u) 
52098 x1))) (\lambda (_: T).(\lambda (v2: T).(pr3 c2 x3 v2))) (\lambda (_: 
52099 T).(\lambda (v2: T).(nf2 c2 v2)))) (\forall (u: T).((pc3 c2 x0 (THead (Bind 
52100 Abst) x3 u)) \to (\forall (P: Prop).P))) (or (ex T (\lambda (t3: T).(ty3 g c2 
52101 (THead (Flat Appl) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Appl) 
52102 t t0) t3) \to (\forall (P: Prop).P)))) (\lambda (H16: (ex4_2 T T (\lambda (u: 
52103 T).(\lambda (_: T).(pc3 c2 x0 (THead (Bind Abst) x3 u)))) (\lambda (u: 
52104 T).(\lambda (v2: T).(ty3 g c2 (THead (Bind Abst) v2 u) x1))) (\lambda (_: 
52105 T).(\lambda (v2: T).(pr3 c2 x3 v2))) (\lambda (_: T).(\lambda (v2: T).(nf2 c2 
52106 v2))))).(ex4_2_ind T T (\lambda (u: T).(\lambda (_: T).(pc3 c2 x0 (THead 
52107 (Bind Abst) x3 u)))) (\lambda (u: T).(\lambda (v2: T).(ty3 g c2 (THead (Bind 
52108 Abst) v2 u) x1))) (\lambda (_: T).(\lambda (v2: T).(pr3 c2 x3 v2))) (\lambda 
52109 (_: T).(\lambda (v2: T).(nf2 c2 v2))) (or (ex T (\lambda (t3: T).(ty3 g c2 
52110 (THead (Flat Appl) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Appl) 
52111 t t0) t3) \to (\forall (P: Prop).P)))) (\lambda (x4: T).(\lambda (x5: 
52112 T).(\lambda (H17: (pc3 c2 x0 (THead (Bind Abst) x3 x4))).(\lambda (H18: (ty3 
52113 g c2 (THead (Bind Abst) x5 x4) x1)).(\lambda (H19: (pr3 c2 x3 x5)).(\lambda 
52114 (_: (nf2 c2 x5)).(let H_y \def (nf2_pr3_unfold c2 x3 x5 H19 H13) in (let H21 
52115 \def (eq_ind_r T x5 (\lambda (t: T).(pr3 c2 x3 t)) H19 x3 H_y) in (let H22 
52116 \def (eq_ind_r T x5 (\lambda (t: T).(ty3 g c2 (THead (Bind Abst) t x4) x1)) 
52117 H18 x3 H_y) in (or_introl (ex T (\lambda (t3: T).(ty3 g c2 (THead (Flat Appl) 
52118 t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Appl) t t0) t3) \to 
52119 (\forall (P: Prop).P))) (ex_intro T (\lambda (t3: T).(ty3 g c2 (THead (Flat 
52120 Appl) t t0) t3)) (THead (Flat Appl) t (THead (Bind Abst) x3 x4)) (ty3_appl g 
52121 c2 t x3 (ty3_tred g c2 t x H4 x3 H12) t0 x4 (ty3_conv g c2 (THead (Bind Abst) 
52122 x3 x4) x1 H22 t0 x0 H7 H17))))))))))))) H16)) (\lambda (H16: ((\forall (u: 
52123 T).((pc3 c2 x0 (THead (Bind Abst) x3 u)) \to (\forall (P: 
52124 Prop).P))))).(or_intror (ex T (\lambda (t3: T).(ty3 g c2 (THead (Flat Appl) t 
52125 t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Appl) t t0) t3) \to 
52126 (\forall (P: Prop).P))) (\lambda (t3: T).(\lambda (H17: (ty3 g c2 (THead 
52127 (Flat Appl) t t0) t3)).(\lambda (P: Prop).(ex3_2_ind T T (\lambda (u: 
52128 T).(\lambda (t4: T).(pc3 c2 (THead (Flat Appl) t (THead (Bind Abst) u t4)) 
52129 t3))) (\lambda (u: T).(\lambda (t4: T).(ty3 g c2 t0 (THead (Bind Abst) u 
52130 t4)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c2 t u))) P (\lambda (x4: 
52131 T).(\lambda (x5: T).(\lambda (_: (pc3 c2 (THead (Flat Appl) t (THead (Bind 
52132 Abst) x4 x5)) t3)).(\lambda (H19: (ty3 g c2 t0 (THead (Bind Abst) x4 
52133 x5))).(\lambda (H20: (ty3 g c2 t x4)).(let H_y \def (ty3_unique g c2 t x4 H20 
52134 x H4) in (let H_y0 \def (ty3_unique g c2 t0 (THead (Bind Abst) x4 x5) H19 x0 
52135 H7) in (H16 x5 (pc3_t (THead (Bind Abst) x4 x5) c2 x0 (pc3_s c2 x0 (THead 
52136 (Bind Abst) x4 x5) H_y0) (THead (Bind Abst) x3 x5) (pc3_head_1 c2 x4 x3 
52137 (pc3_t x c2 x4 H_y x3 (pc3_pr3_r c2 x x3 H12)) (Bind Abst) x5)) P)))))))) 
52138 (ty3_gen_appl g c2 t t0 t3 H17))))))) H15))))))) H11)))))) (ty3_correct g c2 
52139 t x H4)))) (ty3_correct g c2 t0 x0 H7)))) H6)) (\lambda (H6: ((\forall (t2: 
52140 T).((ty3 g c2 t0 t2) \to (\forall (P: Prop).P))))).(or_intror (ex T (\lambda 
52141 (t3: T).(ty3 g c2 (THead (Flat Appl) t t0) t3))) (\forall (t3: T).((ty3 g c2 
52142 (THead (Flat Appl) t t0) t3) \to (\forall (P: Prop).P))) (\lambda (t3: 
52143 T).(\lambda (H7: (ty3 g c2 (THead (Flat Appl) t t0) t3)).(\lambda (P: 
52144 Prop).(ex3_2_ind T T (\lambda (u: T).(\lambda (t4: T).(pc3 c2 (THead (Flat 
52145 Appl) t (THead (Bind Abst) u t4)) t3))) (\lambda (u: T).(\lambda (t4: T).(ty3 
52146 g c2 t0 (THead (Bind Abst) u t4)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c2 
52147 t u))) P (\lambda (x0: T).(\lambda (x1: T).(\lambda (_: (pc3 c2 (THead (Flat 
52148 Appl) t (THead (Bind Abst) x0 x1)) t3)).(\lambda (H9: (ty3 g c2 t0 (THead 
52149 (Bind Abst) x0 x1))).(\lambda (_: (ty3 g c2 t x0)).(H6 (THead (Bind Abst) x0 
52150 x1) H9 P)))))) (ty3_gen_appl g c2 t t0 t3 H7))))))) H5)))) H3)) (\lambda (H3: 
52151 ((\forall (t2: T).((ty3 g c2 t t2) \to (\forall (P: Prop).P))))).(or_intror 
52152 (ex T (\lambda (t3: T).(ty3 g c2 (THead (Flat Appl) t t0) t3))) (\forall (t3: 
52153 T).((ty3 g c2 (THead (Flat Appl) t t0) t3) \to (\forall (P: Prop).P))) 
52154 (\lambda (t3: T).(\lambda (H4: (ty3 g c2 (THead (Flat Appl) t t0) 
52155 t3)).(\lambda (P: Prop).(ex3_2_ind T T (\lambda (u: T).(\lambda (t4: T).(pc3 
52156 c2 (THead (Flat Appl) t (THead (Bind Abst) u t4)) t3))) (\lambda (u: 
52157 T).(\lambda (t4: T).(ty3 g c2 t0 (THead (Bind Abst) u t4)))) (\lambda (u: 
52158 T).(\lambda (_: T).(ty3 g c2 t u))) P (\lambda (x0: T).(\lambda (x1: 
52159 T).(\lambda (_: (pc3 c2 (THead (Flat Appl) t (THead (Bind Abst) x0 x1)) 
52160 t3)).(\lambda (_: (ty3 g c2 t0 (THead (Bind Abst) x0 x1))).(\lambda (H7: (ty3 
52161 g c2 t x0)).(H3 x0 H7 P)))))) (ty3_gen_appl g c2 t t0 t3 H4))))))) H2))) | 
52162 Cast \Rightarrow (\lambda (H1: ((\forall (c1: C).(\forall (t1: T).((flt c1 t1 
52163 c2 (THead (Flat Cast) t t0)) \to (or (ex T (\lambda (t2: T).(ty3 g c1 t1 
52164 t2))) (\forall (t2: T).((ty3 g c1 t1 t2) \to (\forall (P: 
52165 Prop).P))))))))).(let H2 \def (H1 c2 t (flt_thead_sx (Flat Cast) c2 t t0)) in 
52166 (or_ind (ex T (\lambda (t3: T).(ty3 g c2 t t3))) (\forall (t3: T).((ty3 g c2 
52167 t t3) \to (\forall (P: Prop).P))) (or (ex T (\lambda (t3: T).(ty3 g c2 (THead 
52168 (Flat Cast) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Cast) t t0) 
52169 t3) \to (\forall (P: Prop).P)))) (\lambda (H3: (ex T (\lambda (t2: T).(ty3 g 
52170 c2 t t2)))).(ex_ind T (\lambda (t3: T).(ty3 g c2 t t3)) (or (ex T (\lambda 
52171 (t3: T).(ty3 g c2 (THead (Flat Cast) t t0) t3))) (\forall (t3: T).((ty3 g c2 
52172 (THead (Flat Cast) t t0) t3) \to (\forall (P: Prop).P)))) (\lambda (x: 
52173 T).(\lambda (H4: (ty3 g c2 t x)).(let H5 \def (H1 c2 t0 (flt_thead_dx (Flat 
52174 Cast) c2 t t0)) in (or_ind (ex T (\lambda (t3: T).(ty3 g c2 t0 t3))) (\forall 
52175 (t3: T).((ty3 g c2 t0 t3) \to (\forall (P: Prop).P))) (or (ex T (\lambda (t3: 
52176 T).(ty3 g c2 (THead (Flat Cast) t t0) t3))) (\forall (t3: T).((ty3 g c2 
52177 (THead (Flat Cast) t t0) t3) \to (\forall (P: Prop).P)))) (\lambda (H6: (ex T 
52178 (\lambda (t2: T).(ty3 g c2 t0 t2)))).(ex_ind T (\lambda (t3: T).(ty3 g c2 t0 
52179 t3)) (or (ex T (\lambda (t3: T).(ty3 g c2 (THead (Flat Cast) t t0) t3))) 
52180 (\forall (t3: T).((ty3 g c2 (THead (Flat Cast) t t0) t3) \to (\forall (P: 
52181 Prop).P)))) (\lambda (x0: T).(\lambda (H7: (ty3 g c2 t0 x0)).(ex_ind T 
52182 (\lambda (t3: T).(ty3 g c2 x0 t3)) (or (ex T (\lambda (t3: T).(ty3 g c2 
52183 (THead (Flat Cast) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Cast) 
52184 t t0) t3) \to (\forall (P: Prop).P)))) (\lambda (x1: T).(\lambda (H8: (ty3 g 
52185 c2 x0 x1)).(let H_x \def (pc3_dec g c2 x0 x1 H8 t x H4) in (let H9 \def H_x 
52186 in (or_ind (pc3 c2 x0 t) ((pc3 c2 x0 t) \to (\forall (P: Prop).P)) (or (ex T 
52187 (\lambda (t3: T).(ty3 g c2 (THead (Flat Cast) t t0) t3))) (\forall (t3: 
52188 T).((ty3 g c2 (THead (Flat Cast) t t0) t3) \to (\forall (P: Prop).P)))) 
52189 (\lambda (H10: (pc3 c2 x0 t)).(or_introl (ex T (\lambda (t3: T).(ty3 g c2 
52190 (THead (Flat Cast) t t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Cast) 
52191 t t0) t3) \to (\forall (P: Prop).P))) (ex_intro T (\lambda (t3: T).(ty3 g c2 
52192 (THead (Flat Cast) t t0) t3)) t (ty3_cast g c2 t0 t (ty3_conv g c2 t x H4 t0 
52193 x0 H7 H10) x H4)))) (\lambda (H10: (((pc3 c2 x0 t) \to (\forall (P: 
52194 Prop).P)))).(or_intror (ex T (\lambda (t3: T).(ty3 g c2 (THead (Flat Cast) t 
52195 t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Cast) t t0) t3) \to 
52196 (\forall (P: Prop).P))) (\lambda (t3: T).(\lambda (H11: (ty3 g c2 (THead 
52197 (Flat Cast) t t0) t3)).(\lambda (P: Prop).(and_ind (pc3 c2 t t3) (ty3 g c2 t0 
52198 t) P (\lambda (_: (pc3 c2 t t3)).(\lambda (H13: (ty3 g c2 t0 t)).(let H_y 
52199 \def (ty3_unique g c2 t0 t H13 x0 H7) in (H10 (pc3_s c2 x0 t H_y) P)))) 
52200 (ty3_gen_cast g c2 t0 t t3 H11))))))) H9))))) (ty3_correct g c2 t0 x0 H7)))) 
52201 H6)) (\lambda (H6: ((\forall (t2: T).((ty3 g c2 t0 t2) \to (\forall (P: 
52202 Prop).P))))).(or_intror (ex T (\lambda (t3: T).(ty3 g c2 (THead (Flat Cast) t 
52203 t0) t3))) (\forall (t3: T).((ty3 g c2 (THead (Flat Cast) t t0) t3) \to 
52204 (\forall (P: Prop).P))) (\lambda (t3: T).(\lambda (H7: (ty3 g c2 (THead (Flat 
52205 Cast) t t0) t3)).(\lambda (P: Prop).(and_ind (pc3 c2 t t3) (ty3 g c2 t0 t) P 
52206 (\lambda (_: (pc3 c2 t t3)).(\lambda (H9: (ty3 g c2 t0 t)).(H6 t H9 P))) 
52207 (ty3_gen_cast g c2 t0 t t3 H7))))))) H5)))) H3)) (\lambda (H3: ((\forall (t2: 
52208 T).((ty3 g c2 t t2) \to (\forall (P: Prop).P))))).(or_intror (ex T (\lambda 
52209 (t3: T).(ty3 g c2 (THead (Flat Cast) t t0) t3))) (\forall (t3: T).((ty3 g c2 
52210 (THead (Flat Cast) t t0) t3) \to (\forall (P: Prop).P))) (\lambda (t3: 
52211 T).(\lambda (H4: (ty3 g c2 (THead (Flat Cast) t t0) t3)).(\lambda (P: 
52212 Prop).(and_ind (pc3 c2 t t3) (ty3 g c2 t0 t) P (\lambda (_: (pc3 c2 t 
52213 t3)).(\lambda (H6: (ty3 g c2 t0 t)).(ex_ind T (\lambda (t4: T).(ty3 g c2 t 
52214 t4)) P (\lambda (x: T).(\lambda (H7: (ty3 g c2 t x)).(H3 x H7 P))) 
52215 (ty3_correct g c2 t0 t H6)))) (ty3_gen_cast g c2 t0 t t3 H4))))))) H2)))]) 
52216 H0))]) H))]))) c t1))).
52217