1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 (* This file was automatically generated: do not edit *********************)
17 set "baseuri" "cic:/matita/LAMBDA-TYPES/Level-1/LambdaDelta".
19 include "LambdaDelta/theory.ma".
22 ((nat \to nat)) \to (nat \to (nat \to nat))
24 \lambda (f: ((nat \to nat))).(\lambda (w: nat).(\lambda (n: nat).(match n
25 with [O \Rightarrow w | (S m) \Rightarrow (f m)]))).
27 definition weight_map:
28 ((nat \to nat)) \to (T \to nat)
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.
42 weight_map (\lambda (_: nat).O).
47 \lambda (t1: T).(\lambda (t2: T).(lt (weight t1) (weight t2))).
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))))))))
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))))))).
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))))))))
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)))
73 \forall (n: nat).(eq nat (wadd (\lambda (_: nat).O) O n) O)
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).
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)
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).
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)))))
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)))))))).
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))
182 \lambda (t: T).(weight_eq t (wadd (\lambda (_: nat).O) O) (\lambda (_:
183 nat).O) (\lambda (n: nat).(wadd_O n))).
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)))
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
197 \forall (v: T).(\forall (u: T).(\forall (t: T).((tlt u v) \to ((tlt v t) \to
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))))).
205 \forall (k: K).(\forall (u: T).(\forall (t: T).(tlt u (THead k u t))))
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).
250 \forall (k: K).(\forall (u: T).(\forall (t: T).(tlt t (THead k u t))))
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).
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)))
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
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)))
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)))).
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)))))).
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)))))))
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)))))).
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:
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)))))))))
520 \forall (t1: T).(\forall (t2: T).((iso t1 t2) \to (\forall (t3: T).((iso t2
521 t3) \to (iso t1 t3)))))
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))).
606 inductive C: Set \def
608 | CHead: C \to (K \to (T \to C)).
613 \lambda (k: K).(\lambda (i: nat).(match k with [(Bind _) \Rightarrow i |
614 (Flat _) \Rightarrow (S i)])).
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.
623 \forall (k: K).(\forall (i: nat).(eq nat (r k (S i)) (S (r k i))))
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
631 \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (r k (plus i j))
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).
641 \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (r k (plus i j))
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).
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)))))))
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)))).
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)))
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).
673 \forall (k: K).(\forall (i: nat).(eq nat (s k (r k i)) (S i)))
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)))]).
681 \forall (k: K).(\forall (i: nat).(eq nat (minus (r k (S i)) (S O)) (r k i)))
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))).
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))))
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)))).
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.
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.
712 \lambda (c1: C).(\lambda (c2: C).(lt (cweight c1) (cweight c2))).
717 \lambda (c1: C).(\lambda (c2: C).(le (cweight c1) (cweight c2))).
720 \forall (t: T).(lt O (tweight t))
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))))))]).
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))))))
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)
738 \forall (k: K).(\forall (c: C).(\forall (u: T).(clt c (CHead c k u))))
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))))).
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)))
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
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)))
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)))))))))))))
775 K \to (T \to (C \to C))
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.
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))))))))
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).
806 \forall (k: K).(\forall (u: T).(\forall (c: C).(clt c (CTail k u c))))
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))).
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))))
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)))).
837 \lambda (c: C).(\lambda (t: T).(plus (cweight c) (tweight t))).
840 C \to (T \to (C \to (T \to Prop)))
842 \lambda (c1: C).(\lambda (t1: T).(\lambda (c2: C).(\lambda (t2: T).(lt
843 (fweight c1 t1) (fweight c2 t2))))).
845 theorem flt_thead_sx:
846 \forall (k: K).(\forall (c: C).(\forall (u: T).(\forall (t: T).(flt c u c
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)))))))).
855 theorem flt_thead_dx:
856 \forall (k: K).(\forall (c: C).(\forall (u: T).(\forall (t: T).(flt c t c
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)))))))).
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)))))
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)
880 \forall (k: K).(\forall (c: C).(\forall (t: T).(\forall (i: nat).(flt c t
881 (CHead c k t) (TLRef i)))))
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
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)))))))))
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
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)))))))))
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)))))))))))))).
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
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))))))).
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))))
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
953 ((nat \to nat)) \to (nat \to (T \to T))
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
962 nat \to (nat \to (T \to T))
964 \lambda (h: nat).(\lambda (i: nat).(\lambda (t: T).(lref_map (\lambda (x:
965 nat).(plus x h)) i t))).
968 nat \to (nat \to (TList \to TList))
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.
975 \forall (n: nat).(\forall (h: nat).(\forall (d: nat).(eq T (lift h d (TSort
978 \lambda (n: nat).(\lambda (_: nat).(\lambda (_: nat).(refl_equal T (TSort
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)))))
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)))))).
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))))))
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
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)
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))))))).
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)))))))
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))))))).
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)
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))))))).
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))))))
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)))).
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)))))))))
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).
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)))))))
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))))).
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
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)))))).
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)))))))
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))))).
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)))))))))))
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)))).
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)))))))))))
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)))).
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)))))))))))
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)))).
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))))))
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)).
1658 \forall (t: T).(\forall (d: nat).(eq T (lift O d t) t))
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).
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))))
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))))))).
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)))))
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).
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)))))))))))
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)))))))))))))
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))))))))
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
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))))))))
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).
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))))))
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).
2182 theorem lift_weight:
2183 \forall (t: T).(\forall (h: nat).(\forall (d: nat).(eq nat (weight (lift h d
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
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)))))))))))
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)).
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)
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)))))))).
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)))))))
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)))))).
2366 inductive PList: Set \def
2368 | PCons: nat \to (nat \to (PList \to PList)).
2370 definition PConsTail:
2371 PList \to (nat \to (nat \to PList))
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.
2379 PList \to (nat \to nat)
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.
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.
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
2400 PList \to (TList \to TList)
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.
2407 \forall (hds: PList).(\forall (i: nat).(eq T (lift1 hds (TLRef i)) (TLRef
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
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
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)).
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
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)).
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))))))
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)))).
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))))))
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)))).
2496 \forall (ts: TList).(eq TList (lifts1 PNil ts) ts)
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
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))))))
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)
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))))
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).
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))))
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)).
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
2559 \forall (t: T).((cnt t) \to (\forall (i: nat).(\forall (d: nat).(cnt (lift i
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)).
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)
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)))))))).
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))))))
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))))).
2612 theorem drop_gen_refl:
2613 \forall (x: C).(\forall (e: C).((drop O O x e) \to (eq C x e)))
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))).
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))))))
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)))))).
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
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)))))))))).
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))))))))))
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))))))))).
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))))))))
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)))))))).
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))))))))
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
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))))))
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)).
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))))))))
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).
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)))))))
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).
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)))))))))))))
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)))))))))
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)))))))))
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).
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)))))))))
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).
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)))))))))))
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).
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)))))))))
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))))
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)))))))).
3594 PList \to (nat \to (T \to T))
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.
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)))))))
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))).
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))))))))
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)))))).
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)))))
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).
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))))).
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
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)))))))))).
3813 theorem clear_gen_sort:
3814 \forall (x: C).(\forall (n: nat).((clear (CSort n) x) \to (\forall (P:
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)))))).
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))))))
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))))))).
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)))))
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))))))).
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)))))
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)))))).
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))))))))
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))).
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
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
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))))))))
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)).
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)))))))))))
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).
4103 theorem clear_clear:
4104 \forall (c1: C).(\forall (c2: C).((clear c1 c2) \to (clear c2 c2)))
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).
4119 \forall (c: C).(\forall (c1: C).((clear c c1) \to (\forall (c2: C).((clear c
4120 c2) \to (eq C c1 c2)))))
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).
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)))))
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).
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))))))))
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)).
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))))))
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)))).
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))))
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
4232 \forall (e: C).(\forall (x: C).((getl O e x) \to (clear e x)))
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)))).
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))))))
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))))))).
4252 \forall (b: B).(\forall (c: C).(\forall (u: T).(getl O (CHead c (Bind b) u)
4253 (CHead c (Bind b) u))))
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)))).
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))))))
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)))))))))
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))))))
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))))))).
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))))))
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))))))).
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))))))
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))))))).
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))))))
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)).
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))))))))
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))])
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)))))))))
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))))))))).
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))))))
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))).
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)))))
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))))))
4532 \forall (c1: C).(\forall (c2: C).((clear c1 c2) \to (cle c2 c1)))
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))))))])
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)))))))
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)).
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))))))
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))))).
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)))))))))
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
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))))))))))))
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)))))).
4908 theorem cimp_flat_sx:
4909 \forall (f: F).(\forall (c: C).(\forall (v: T).(cimp (CHead c (Flat f) v)
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)))))))).
4925 theorem cimp_flat_dx:
4926 \forall (f: F).(\forall (c: C).(\forall (v: T).(cimp c (CHead c (Flat f)
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))))))))).
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))))))
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)))))))))).
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))))))
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))))))).
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))))))
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).
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)))))))))))))
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)).
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)))))))))
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)))))))))).
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))))))))
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
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
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))))))))).
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)))))))))))
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)))))))))).
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)))))))))))))
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)))))))))))).
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))))))))))))
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)))))
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)))))))))
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)))))))))).
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
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).
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
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)))))))).
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)))))))))))))
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).
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)))))))))))
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)))
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
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
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)))))
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)))))))).
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)))))))
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))))))).
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)))))))))))
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))))))))).
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))))
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
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)))))))))
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)).
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)))))))))
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).
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))))))))))
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)).
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)))))))))
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))))).
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)))))))))
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)))))).
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))))))))
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)))))))))).
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)))))))))
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)))))))).
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)))))))))))
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))))).
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)))))))))))
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
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
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))))).
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))))))))))))
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))))).
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))))))))
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))))).
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)))))))
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)))))))).
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))))))))))
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
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))))))))))
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))))).
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)))))
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))))))))).
8361 \forall (u: T).(\forall (t: T).(\forall (z: T).((subst0 O u t z) \to (tlt z
8362 (THead (Bind Abbr) u t)))))
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))))).
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)))))))
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)).
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)).
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))))))))))
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))))).
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))))))
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
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
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
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))))))))))
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))))))).
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)))))))))
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
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))))))))))
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))))))))).
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))))))))))
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)))))))).
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)))))))))
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))))).
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)))))))))
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)))))).
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))))))
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)).
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)))))))))))
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
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)))))))))))
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))))).
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
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))))).
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))))))))))))
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))))).
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)))))))))
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))))).
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)))))))
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
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
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))))))))
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
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))))))))
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))))))))).
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)
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
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)))))
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)))))))).
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
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))))))))).
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)))))))))
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).
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)))))))))
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).
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))))))))))))))))
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).
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))))))))))))))
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).
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))))))))))))))
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).
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))))))
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).
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))))))
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).
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))))))))))))))
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).
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)))))))))
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)))))))))).
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))))))))))))))))
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)))))))))).
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)))))))))
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)))))))))).
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)).
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))))))))))
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)))))).
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)
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
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)
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)))))))))).
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))))))))))
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))))))))).
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)))))))))
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))))))).
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)))))))))))
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))))))).
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)))))))))
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))))))).
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
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).
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
18216 | fsubst0_fst: \forall (c2: C).((csubst0 i v c1 c2) \to (fsubst0 i v c1 t1 c2
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)))).
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)))))))))
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
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
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
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)))))))).
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))))))))))
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))))).
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)))))))
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))))).
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)))).
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)))))))
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))))))).
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))))))))
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))))))).
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
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)))))).
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))))))))))
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))))).
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)))))))
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))))).
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)))))))))
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
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)))))))))))
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))))).
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
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))))).
18671 inductive A: Set \def
18672 | ASort: nat \to (nat \to A)
18673 | AHead: A \to (A \to A).
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
18684 G \to (A \to (nat \to A))
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.
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
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
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
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))))))))
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))))))).
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)))))))))
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)))).
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))))))))
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)))).
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)))))))))
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))))))).
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))))))
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))).
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)))))
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)))).
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))))
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))))).
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)))))
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)))))).
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)))))
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)))).
18995 \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g (asucc g a1) (asucc
18996 g a2)) \to (leq g a1 a2))))
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)).
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)))))
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)).
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))))))
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)).
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)))))))
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))))))).
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))))))
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)))))))
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))))
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)).
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)))))
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)).
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))))))
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))))))))).
19574 \forall (g: G).(\forall (a: A).(leq g a a))
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
19583 \forall (g: G).(\forall (a1: A).(\forall (a2: A).((eq A a1 a2) \to (leq g a1
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)))).
19590 \forall (g: G).(\forall (a: A).(ex A (\lambda (a0: A).(leq g a (asucc g
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))))))
19606 \forall (g: G).(\forall (a1: A).(\forall (a2: A).((leq g a1 a2) \to (leq g
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)))).
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))))))
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)))).
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))))
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)))))))))))
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))))
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)).
19903 theorem leq_asucc_false:
19904 \forall (g: G).(\forall (a: A).((leq g (asucc g a) a) \to (\forall (P:
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)).
20026 definition lweight:
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
20036 \lambda (a1: A).(\lambda (a2: A).(lt (lweight a1) (lweight a2))).
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)))))
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
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))))))
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)))))).
20064 \forall (a1: A).(\forall (a2: A).(\forall (a3: A).((llt a1 a2) \to ((llt a2
20065 a3) \to (llt a1 a3)))))
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))))).
20071 theorem llt_head_sx:
20072 \forall (a1: A).(\forall (a2: A).(llt a1 (AHead a1 a2)))
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)))))).
20079 theorem llt_head_dx:
20080 \forall (a1: A).(\forall (a2: A).(llt a2 (AHead a1 a2)))
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)))))).
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)))
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
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)))
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)))).
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))))).
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)))))))))
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)))).
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)))))
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
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
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))))))).
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))))))
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)
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)))))
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)))))
20332 theorem next_plus_gz:
20333 \forall (n: nat).(\forall (h: nat).(eq nat (next_plus gz n h) (plus h n)))
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)).
20341 \forall (a1: A).(\forall (a2: A).((leq gz a1 a2) \to (leqz a1 a2)))
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))).
20410 \forall (a1: A).(\forall (a2: A).((leqz a1 a2) \to (leq gz a1 a2)))
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))).
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
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
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)))))).
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))))))
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))))).
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))))))))))
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))))).
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))))))))))
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)))))))).
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)))))))))
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)))))).
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)))))))))
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)))))).
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)))))))
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)))))).
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))))))))
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)))).
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)))))))
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))).
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))))))))))))
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))))).
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))))))))))))
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))))))))))).
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)))))))))
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))))))).
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)))))))))
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
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))))))))
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)))).
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)))))))
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))))).
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)))))))
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))))).
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
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))))).
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))))))))
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))))).
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)))))))))
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))))))).
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)))))))))))
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))))))))).
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))))))))))))
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
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
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)))))))))))).
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
23527 | pr0_epsilon: \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (u:
23528 T).(pr0 (THead (Flat Cast) u t1) t2)))).
23530 theorem pr0_gen_sort:
23531 \forall (x: T).(\forall (n: nat).((pr0 (TSort n) x) \to (eq T x (TSort n))))
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
23584 theorem pr0_gen_lref:
23585 \forall (x: T).(\forall (n: nat).((pr0 (TLRef n) x) \to (eq T x (TLRef n))))
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
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)))))))
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)))))).
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))))))))))))
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)))))).
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)))))
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
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))))))
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))).
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))))))
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)))))).
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))))))
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)))))).
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)))))))
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))))).
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)))))))))
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))))).
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)))))))))
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))))).
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))))))))))))
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))).
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)))))))))))))))
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
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)))))))))))))))))))
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))))))))))))))))))).
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))))))))))))))))))))
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))))))))))))))))))).
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)))))))))))))))))
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)
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))))))))))))))
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))))))))))))).
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)))))))))))))))))))
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))))))))))))))))))).
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))))))))))))))))
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))))))))))))))).
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
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)))))))).
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)))))))
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
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)))))))))
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)))))))).
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)))))))))
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))))).
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)))))))))
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))))).
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
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))))))).
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:
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)
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))))).
30213 \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (pr1 t1 t2)))
30215 \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t1 t2)).(pr1_u t2 t1 H t2
30219 \forall (t2: T).(\forall (t1: T).((pr1 t1 t2) \to (\forall (t3: T).((pr1 t2
30220 t3) \to (pr1 t1 t3)))))
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))).
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))))))
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))))).
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))))))
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))))).
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)))))))
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))).
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)))))))
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))).
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)))))))).
30302 theorem wcpr0_gen_sort:
30303 \forall (x: C).(\forall (n: nat).((wcpr0 (CSort n) x) \to (eq C x (CSort
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))))).
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)))))))))
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))))))).
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)))))))))))
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))).
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)))))))))))
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))).
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)))))))))))
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
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)))))))))))
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
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
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
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)))))
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)))))).
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
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)))))).
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))))))))))
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
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
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))))))).
31255 theorem pr2_gen_csort:
31256 \forall (t1: T).(\forall (t2: T).(\forall (n: nat).((pr2 (CSort n) t1 t2)
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)))))).
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)))))))))
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)))))).
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
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)))))).
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)))))))
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
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
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))))).
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))))))
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
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))))))
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)))).
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))))))
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)))))).
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)))))))
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)))))))).
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))))))
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)))))))).
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)))))))))
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
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)))))))))))))
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))))))).
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)))))))))
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
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)))))))))
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))))))).
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
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)))))))))).
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))))))))
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))))))).
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
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))))))))))))).
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))))))))))))))))))))
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))))))))))))))))))).
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))))))))
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
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))))))))))
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)))))))))).
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))))))))))))
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)))))))))).
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))))))))))))))))
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)))).
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))))).
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)))))
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)))
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))))))))))
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))))).
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
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))))).
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))))))
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)))))).
35545 \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (pr3 c
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))))).
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))))))
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)))).
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
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)))))).
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)))))))
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)))).
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
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)))))).
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)))))))))
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))))))))).
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)))))))))
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))))))))).
35626 \forall (t1: T).(\forall (t2: T).((pr1 t1 t2) \to (\forall (c: C).(pr3 c t1
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))).
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))))))
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)))).
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))))))))
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)))))))))).
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))))))))
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)))))).
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))))))))
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)))))).
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))))))))
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)))).
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)))))))))
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
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))))))
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))).
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
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)))))).
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))))))))))
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)))).
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)))))))
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))))).
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)))))))
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))))).
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)))))))))))))
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))))).
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))))))))
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))))))))))
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))))))))
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
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))))))))))))
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)))))))).
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))))))))))))))))
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)))).
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))))))))
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)))).
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
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)))))))
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))))))).
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)))))))
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))))))).
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
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))))))).
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)))))))))
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)))))))).
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))))))))))
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)))))))).
37888 theorem csuba_refl:
37889 \forall (g: G).(\forall (c: C).(csuba g c c))
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)).
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))))))))
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)))).
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))))))))))
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).
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
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).
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))))))))))
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))))))).
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
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))))
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)))))))
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))))).
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)))))))
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)))))))))))
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)))))))
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)))))))))
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))))).
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)))))))))
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))).
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)))))))
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)))).
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)))))))
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
39872 \lambda (c: C).(\lambda (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (eq T t1
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))))
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)).
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))))))
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))))))).
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)))))
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)
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))))
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)))
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))))))
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)))))))).
39970 \forall (c: C).(\forall (n: nat).(nf2 c (TSort n)))
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))))).
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
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))))))
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)))))
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)))).
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))))))))
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
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)))))))
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)))))))).
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))))))
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))
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))))))))
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))))
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)))))))
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)))))))))))
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))))))
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)))).
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)))))
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).
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)).
40519 C \to (TList \to Prop)
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))])
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))))))
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))))).
40574 \forall (c: C).(\forall (t: T).((nf2 c t) \to (sn3 c t)))
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)))))))))).
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)))))
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))).
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)))
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)))))))).
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))))))
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))).
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)))))
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))
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)))))))
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))))).
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))))))))
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)))).
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
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))))).
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))))))))))
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
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)))))))
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)))).
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))))))))
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)).
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))))))))
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))).
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)))))))
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))
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))))))))
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)))))).
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)))))))
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)).
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)))))))
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))))).
41847 G \to (A \to (C \to (T \to Prop)))
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.
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)))))
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)))).
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)))))))
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)).
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))))))))))
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)).
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)))))))))
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)))).
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)))))))))))
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))))))))))
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)).
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)))))))))))))
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))))))))))))))
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))))))))))
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)).
42308 \forall (g: G).(\forall (a: A).(\forall (c: C).(\forall (t: T).((sc3 g a c
42309 t) \to (sn3 c t)))))
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)))
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))))))))))
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)))))))))).
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)
42352 G \to (C \to (C \to Prop))
42354 \lambda (g: G).(\lambda (c1: C).(\lambda (c2: C).(or (csubc g c1 c2) (csubc
42357 theorem scubc_refl:
42358 \forall (g: G).(\forall (c: C).(csubc g c c))
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)).
42365 \forall (g: G).(\forall (c1: C).(\forall (c2: C).((ceqc g c1 c2) \to (ceqc g
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
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))))))))))
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)).
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))))))))))
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)).
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)))))))))
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)).
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)))))))))
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)).
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)))))))))
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))))
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)))))))))
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)))))
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))))).
42958 \lambda (t1: T).(\lambda (t2: T).(ex2 T (\lambda (t: T).(pr1 t1 t)) (\lambda
42959 (t: T).(pr1 t2 t)))).
42962 \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (pc1 t1 t2)))
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)
42969 \forall (t1: T).(\forall (t2: T).((pr0 t2 t1) \to (pc1 t1 t2)))
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)))).
42976 \forall (t2: T).(\forall (t1: T).((pr0 t1 t2) \to (\forall (t3: T).((pc1 t2
42977 t3) \to (pc1 t1 t3)))))
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))))
42987 \forall (t: T).(pc1 t t)
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)).
42993 \forall (t2: T).(\forall (t1: T).((pc1 t1 t2) \to (pc1 t2 t1)))
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
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))))))
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)))))
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))))))
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)))))).
43025 \forall (t2: T).(\forall (t1: T).((pc1 t1 t2) \to (\forall (t3: T).((pc1 t2
43026 t3) \to (pc1 t1 t3)))))
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)))))).
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)))))
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))))).
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
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)))))))).
43058 C \to (T \to (T \to Prop))
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))))).
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))))))
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
43076 \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (pc3 c
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))))).
43084 \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t2 t1) \to (pc3 c
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))))).
43092 \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to (pc3 c
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))))).
43100 \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t2 t1) \to (pc3 c
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)))).
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))))))
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)))))).
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))))))
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))))))).
43127 \forall (c: C).(\forall (t: T).(pc3 c t t))
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))).
43133 \forall (c: C).(\forall (t2: T).(\forall (t1: T).((pc3 c t1 t2) \to (pc3 c
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))))).
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
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)))))
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)))))))
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))))))).
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
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))))))).
43184 \forall (t1: T).(\forall (t2: T).((pc1 t1 t2) \to (\forall (c: C).(pc3 c t1
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)))))
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))))))
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)))))
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))))))
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)))))).
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)))))))))
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))))))))).
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)))))))))
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))))))))).
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))))))))
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)))))))))).
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))))))))
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)))))).
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))))))))
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)))))).
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))))))))
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)))).
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)))))))))
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))))))))).
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))))))))
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)))))))).
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))))))
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))).
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))))))
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))))))).
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))))).
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))))
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)))).
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))))))
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)))).
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))))
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)))).
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))))
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))))).
43631 theorem pc3_ind_left__pc3_pc3_left:
43632 \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3_left c t1 t2) \to
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)))).
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))))))))
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))))))))).
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))))
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))))).
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)
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))))))).
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))))))))
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))))))))).
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))))))))))
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)))))
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)
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)))))))))).
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
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)))).
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
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)))).
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
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)))).
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))))))))))))))))
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))))))))))))))))).
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
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
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)
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)))))
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))))).
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))))))))))
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))))).
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)))))))))))
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))))))).
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)))))))))
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)))
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
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)))))).
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))))))))))
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))))).
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)))))))
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
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)))))))
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))))).
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))))))))))))
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))))).
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)))))))))))
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))))))))))).
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
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))))))))))).
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))))))))))))))))
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))))).
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))))))))))))))
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))))).
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))))))).
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)))))))
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
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
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))))))).
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))))))))))
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
48338 theorem csub3_refl:
48339 \forall (g: G).(\forall (c: C).(csub3 g c c))
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)).
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))))))))
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)))).
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))))))))))))
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))).
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)))))))))))
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)).
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
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)).
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)))))))))))
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))))))).
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
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
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)))))))
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))))).
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)))))))
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))))).
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)))))))
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))))).
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))))))))
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))))))))).
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)))))))))
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
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)))))))
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)))).
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)))))))
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)))).
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)))))))
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
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)))))))))
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
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)))))))))
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))))).
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))))))
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))))))).
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)))))))))))
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
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)))))))
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)))))))).
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)))))))))
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)))))
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)))))))))
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)))))))))).
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)))))))))
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)))))))))).
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)))))))
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
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))))))))
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))))).
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:
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)))))))))).
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))))))
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)))))))))).
51650 \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (u: T).((ty3 g c t
51651 u) \to (sn3 c t)))))
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))))))).
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))))))))))
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))))))
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)))))))))))
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)))))))))))).
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:
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))).