]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_1A/getl/drop.ma
update in lambdadelta
[helm.git] / matita / matita / contribs / lambdadelta / basic_1A / getl / drop.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* This file was automatically generated: do not edit *********************)
16
17 include "basic_1A/getl/props.ma".
18
19 include "basic_1A/clear/drop.ma".
20
21 lemma getl_drop:
22  \forall (b: B).(\forall (c: C).(\forall (e: C).(\forall (u: T).(\forall (h: 
23 nat).((getl h c (CHead e (Bind b) u)) \to (drop (S h) O c e))))))
24 \def
25  \lambda (b: B).(\lambda (c: C).(C_ind (\lambda (c0: C).(\forall (e: 
26 C).(\forall (u: T).(\forall (h: nat).((getl h c0 (CHead e (Bind b) u)) \to 
27 (drop (S h) O c0 e)))))) (\lambda (n: nat).(\lambda (e: C).(\lambda (u: 
28 T).(\lambda (h: nat).(\lambda (H: (getl h (CSort n) (CHead e (Bind b) 
29 u))).(getl_gen_sort n h (CHead e (Bind b) u) H (drop (S h) O (CSort n) 
30 e))))))) (\lambda (c0: C).(\lambda (H: ((\forall (e: C).(\forall (u: 
31 T).(\forall (h: nat).((getl h c0 (CHead e (Bind b) u)) \to (drop (S h) O c0 
32 e))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (e: C).(\lambda (u: 
33 T).(\lambda (h: nat).(nat_ind (\lambda (n: nat).((getl n (CHead c0 k t) 
34 (CHead e (Bind b) u)) \to (drop (S n) O (CHead c0 k t) e))) (\lambda (H0: 
35 (getl O (CHead c0 k t) (CHead e (Bind b) u))).(K_ind (\lambda (k0: K).((clear 
36 (CHead c0 k0 t) (CHead e (Bind b) u)) \to (drop (S O) O (CHead c0 k0 t) e))) 
37 (\lambda (b0: B).(\lambda (H1: (clear (CHead c0 (Bind b0) t) (CHead e (Bind 
38 b) u))).(let H2 \def (f_equal C C (\lambda (e0: C).(match e0 with [(CSort _) 
39 \Rightarrow e | (CHead c1 _ _) \Rightarrow c1])) (CHead e (Bind b) u) (CHead 
40 c0 (Bind b0) t) (clear_gen_bind b0 c0 (CHead e (Bind b) u) t H1)) in ((let H3 
41 \def (f_equal C B (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow b | 
42 (CHead _ k0 _) \Rightarrow (match k0 with [(Bind b1) \Rightarrow b1 | (Flat 
43 _) \Rightarrow b])])) (CHead e (Bind b) u) (CHead c0 (Bind b0) t) 
44 (clear_gen_bind b0 c0 (CHead e (Bind b) u) t H1)) in ((let H4 \def (f_equal C 
45 T (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t0) 
46 \Rightarrow t0])) (CHead e (Bind b) u) (CHead c0 (Bind b0) t) (clear_gen_bind 
47 b0 c0 (CHead e (Bind b) u) t H1)) in (\lambda (H5: (eq B b b0)).(\lambda (H6: 
48 (eq C e c0)).(eq_ind_r C c0 (\lambda (c1: C).(drop (S O) O (CHead c0 (Bind 
49 b0) t) c1)) (eq_ind B b (\lambda (b1: B).(drop (S O) O (CHead c0 (Bind b1) t) 
50 c0)) (drop_drop (Bind b) O c0 c0 (drop_refl c0) t) b0 H5) e H6)))) H3)) 
51 H2)))) (\lambda (f: F).(\lambda (H1: (clear (CHead c0 (Flat f) t) (CHead e 
52 (Bind b) u))).(drop_clear_O b (CHead c0 (Flat f) t) e u (clear_flat c0 (CHead 
53 e (Bind b) u) (clear_gen_flat f c0 (CHead e (Bind b) u) t H1) f t) e O 
54 (drop_refl e)))) k (getl_gen_O (CHead c0 k t) (CHead e (Bind b) u) H0))) 
55 (\lambda (n: nat).(\lambda (_: (((getl n (CHead c0 k t) (CHead e (Bind b) u)) 
56 \to (drop (S n) O (CHead c0 k t) e)))).(\lambda (H1: (getl (S n) (CHead c0 k 
57 t) (CHead e (Bind b) u))).(drop_drop k (S n) c0 e (eq_ind_r nat (S (r k n)) 
58 (\lambda (n0: nat).(drop n0 O c0 e)) (H e u (r k n) (getl_gen_S k c0 (CHead e 
59 (Bind b) u) t n H1)) (r k (S n)) (r_S k n)) t)))) h)))))))) c)).
60
61 lemma getl_drop_conf_lt:
62  \forall (b: B).(\forall (c: C).(\forall (c0: C).(\forall (u: T).(\forall (i: 
63 nat).((getl i c (CHead c0 (Bind b) u)) \to (\forall (e: C).(\forall (h: 
64 nat).(\forall (d: nat).((drop h (S (plus i d)) c e) \to (ex3_2 T C (\lambda 
65 (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
66 C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop 
67 h d c0 e0)))))))))))))
68 \def
69  \lambda (b: B).(\lambda (c: C).(C_ind (\lambda (c0: C).(\forall (c1: 
70 C).(\forall (u: T).(\forall (i: nat).((getl i c0 (CHead c1 (Bind b) u)) \to 
71 (\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h (S (plus i d)) 
72 c0 e) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
73 (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda 
74 (_: T).(\lambda (e0: C).(drop h d c1 e0))))))))))))) (\lambda (n: 
75 nat).(\lambda (c0: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H: (getl i 
76 (CSort n) (CHead c0 (Bind b) u))).(\lambda (e: C).(\lambda (h: nat).(\lambda 
77 (d: nat).(\lambda (_: (drop h (S (plus i d)) (CSort n) e)).(getl_gen_sort n i 
78 (CHead c0 (Bind b) u) H (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u 
79 (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) 
80 v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c0 e0)))))))))))))) (\lambda 
81 (c0: C).(\lambda (H: ((\forall (c1: C).(\forall (u: T).(\forall (i: 
82 nat).((getl i c0 (CHead c1 (Bind b) u)) \to (\forall (e: C).(\forall (h: 
83 nat).(\forall (d: nat).((drop h (S (plus i d)) c0 e) \to (ex3_2 T C (\lambda 
84 (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
85 C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop 
86 h d c1 e0)))))))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (c1: 
87 C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i (CHead c0 k t) 
88 (CHead c1 (Bind b) u))).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: 
89 nat).(\lambda (H1: (drop h (S (plus i d)) (CHead c0 k t) e)).(let H2 \def 
90 (getl_gen_all (CHead c0 k t) (CHead c1 (Bind b) u) i H0) in (ex2_ind C 
91 (\lambda (e0: C).(drop i O (CHead c0 k t) e0)) (\lambda (e0: C).(clear e0 
92 (CHead c1 (Bind b) u))) (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u 
93 (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) 
94 v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0)))) (\lambda (x: 
95 C).(\lambda (H3: (drop i O (CHead c0 k t) x)).(\lambda (H4: (clear x (CHead 
96 c1 (Bind b) u))).(C_ind (\lambda (c2: C).((drop i O (CHead c0 k t) c2) \to 
97 ((clear c2 (CHead c1 (Bind b) u)) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: 
98 C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead 
99 e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))))) 
100 (\lambda (n: nat).(\lambda (_: (drop i O (CHead c0 k t) (CSort n))).(\lambda 
101 (H6: (clear (CSort n) (CHead c1 (Bind b) u))).(clear_gen_sort (CHead c1 (Bind 
102 b) u) n H6 (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
103 (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda 
104 (_: T).(\lambda (e0: C).(drop h d c1 e0)))))))) (\lambda (x0: C).(\lambda 
105 (IHx: (((drop i O (CHead c0 k t) x0) \to ((clear x0 (CHead c1 (Bind b) u)) 
106 \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
107 (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda 
108 (_: T).(\lambda (e0: C).(drop h d c1 e0)))))))).(\lambda (k0: K).(\lambda 
109 (t0: T).(\lambda (H5: (drop i O (CHead c0 k t) (CHead x0 k0 t0))).(\lambda 
110 (H6: (clear (CHead x0 k0 t0) (CHead c1 (Bind b) u))).(K_ind (\lambda (k1: 
111 K).((drop i O (CHead c0 k t) (CHead x0 k1 t0)) \to ((clear (CHead x0 k1 t0) 
112 (CHead c1 (Bind b) u)) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u 
113 (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) 
114 v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))))) (\lambda (b0: 
115 B).(\lambda (H7: (drop i O (CHead c0 k t) (CHead x0 (Bind b0) t0))).(\lambda 
116 (H8: (clear (CHead x0 (Bind b0) t0) (CHead c1 (Bind b) u))).(let H9 \def 
117 (f_equal C C (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow c1 | 
118 (CHead c2 _ _) \Rightarrow c2])) (CHead c1 (Bind b) u) (CHead x0 (Bind b0) 
119 t0) (clear_gen_bind b0 x0 (CHead c1 (Bind b) u) t0 H8)) in ((let H10 \def 
120 (f_equal C B (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow b | 
121 (CHead _ k1 _) \Rightarrow (match k1 with [(Bind b1) \Rightarrow b1 | (Flat 
122 _) \Rightarrow b])])) (CHead c1 (Bind b) u) (CHead x0 (Bind b0) t0) 
123 (clear_gen_bind b0 x0 (CHead c1 (Bind b) u) t0 H8)) in ((let H11 \def 
124 (f_equal C T (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | 
125 (CHead _ _ t1) \Rightarrow t1])) (CHead c1 (Bind b) u) (CHead x0 (Bind b0) 
126 t0) (clear_gen_bind b0 x0 (CHead c1 (Bind b) u) t0 H8)) in (\lambda (H12: (eq 
127 B b b0)).(\lambda (H13: (eq C c1 x0)).(let H14 \def (eq_ind_r T t0 (\lambda 
128 (t1: T).(drop i O (CHead c0 k t) (CHead x0 (Bind b0) t1))) H7 u H11) in (let 
129 H15 \def (eq_ind_r B b0 (\lambda (b1: B).(drop i O (CHead c0 k t) (CHead x0 
130 (Bind b1) u))) H14 b H12) in (let H16 \def (eq_ind_r C x0 (\lambda (c2: 
131 C).((drop i O (CHead c0 k t) c2) \to ((clear c2 (CHead c1 (Bind b) u)) \to 
132 (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda 
133 (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: 
134 T).(\lambda (e0: C).(drop h d c1 e0))))))) IHx c1 H13) in (let H17 \def 
135 (eq_ind_r C x0 (\lambda (c2: C).(drop i O (CHead c0 k t) (CHead c2 (Bind b) 
136 u))) H15 c1 H13) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: C).(eq T u 
137 (lift h (r (Bind b) d) v)))) (\lambda (v: T).(\lambda (e0: C).(drop i O e 
138 (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h (r (Bind b) 
139 d) c1 e0))) (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d 
140 v)))) (\lambda (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) 
141 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0)))) (\lambda (x1: 
142 T).(\lambda (x2: C).(\lambda (H18: (eq T u (lift h (r (Bind b) d) 
143 x1))).(\lambda (H19: (drop i O e (CHead x2 (Bind b) x1))).(\lambda (H20: 
144 (drop h (r (Bind b) d) c1 x2)).(let H21 \def (eq_ind T u (\lambda (t1: 
145 T).((drop i O (CHead c0 k t) c1) \to ((clear c1 (CHead c1 (Bind b) t1)) \to 
146 (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T t1 (lift h d v)))) (\lambda 
147 (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: 
148 T).(\lambda (e0: C).(drop h d c1 e0))))))) H16 (lift h (r (Bind b) d) x1) 
149 H18) in (eq_ind_r T (lift h (r (Bind b) d) x1) (\lambda (t1: T).(ex3_2 T C 
150 (\lambda (v: T).(\lambda (_: C).(eq T t1 (lift h d v)))) (\lambda (v: 
151 T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: 
152 T).(\lambda (e0: C).(drop h d c1 e0))))) (ex3_2_intro T C (\lambda (v: 
153 T).(\lambda (_: C).(eq T (lift h (r (Bind b) d) x1) (lift h d v)))) (\lambda 
154 (v: T).(\lambda (e0: C).(getl i e (CHead e0 (Bind b) v)))) (\lambda (_: 
155 T).(\lambda (e0: C).(drop h d c1 e0))) x1 x2 (refl_equal T (lift h d x1)) 
156 (getl_intro i e (CHead x2 (Bind b) x1) (CHead x2 (Bind b) x1) H19 (clear_bind 
157 b x2 x1)) H20) u H18))))))) (drop_conf_lt (Bind b) i u c1 (CHead c0 k t) H17 
158 e h d H1))))))))) H10)) H9))))) (\lambda (f: F).(\lambda (H7: (drop i O 
159 (CHead c0 k t) (CHead x0 (Flat f) t0))).(\lambda (H8: (clear (CHead x0 (Flat 
160 f) t0) (CHead c1 (Bind b) u))).(nat_ind (\lambda (n: nat).((drop h (S (plus n 
161 d)) (CHead c0 k t) e) \to ((drop n O (CHead c0 k t) (CHead x0 (Flat f) t0)) 
162 \to ((((drop n O (CHead c0 k t) x0) \to ((clear x0 (CHead c1 (Bind b) u)) \to 
163 (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda 
164 (v: T).(\lambda (e0: C).(getl n e (CHead e0 (Bind b) v)))) (\lambda (_: 
165 T).(\lambda (e0: C).(drop h d c1 e0))))))) \to (ex3_2 T C (\lambda (v: 
166 T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
167 C).(getl n e (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop 
168 h d c1 e0)))))))) (\lambda (H9: (drop h (S (plus O d)) (CHead c0 k t) 
169 e)).(\lambda (H10: (drop O O (CHead c0 k t) (CHead x0 (Flat f) t0))).(\lambda 
170 (IHx0: (((drop O O (CHead c0 k t) x0) \to ((clear x0 (CHead c1 (Bind b) u)) 
171 \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
172 (\lambda (v: T).(\lambda (e0: C).(getl O e (CHead e0 (Bind b) v)))) (\lambda 
173 (_: T).(\lambda (e0: C).(drop h d c1 e0)))))))).(let H11 \def (f_equal C C 
174 (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow c0 | (CHead c2 _ _) 
175 \Rightarrow c2])) (CHead c0 k t) (CHead x0 (Flat f) t0) (drop_gen_refl (CHead 
176 c0 k t) (CHead x0 (Flat f) t0) H10)) in ((let H12 \def (f_equal C K (\lambda 
177 (e0: C).(match e0 with [(CSort _) \Rightarrow k | (CHead _ k1 _) \Rightarrow 
178 k1])) (CHead c0 k t) (CHead x0 (Flat f) t0) (drop_gen_refl (CHead c0 k t) 
179 (CHead x0 (Flat f) t0) H10)) in ((let H13 \def (f_equal C T (\lambda (e0: 
180 C).(match e0 with [(CSort _) \Rightarrow t | (CHead _ _ t1) \Rightarrow t1])) 
181 (CHead c0 k t) (CHead x0 (Flat f) t0) (drop_gen_refl (CHead c0 k t) (CHead x0 
182 (Flat f) t0) H10)) in (\lambda (H14: (eq K k (Flat f))).(\lambda (H15: (eq C 
183 c0 x0)).(let H16 \def (eq_ind_r C x0 (\lambda (c2: C).(clear c2 (CHead c1 
184 (Bind b) u))) (clear_gen_flat f x0 (CHead c1 (Bind b) u) t0 H8) c0 H15) in 
185 (let H17 \def (eq_ind_r C x0 (\lambda (c2: C).((drop O O (CHead c0 k t) c2) 
186 \to ((clear c2 (CHead c1 (Bind b) u)) \to (ex3_2 T C (\lambda (v: T).(\lambda 
187 (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl O e 
188 (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 
189 e0))))))) IHx0 c0 H15) in (let H18 \def (eq_ind K k (\lambda (k1: K).((drop O 
190 O (CHead c0 k1 t) c0) \to ((clear c0 (CHead c1 (Bind b) u)) \to (ex3_2 T C 
191 (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: 
192 T).(\lambda (e0: C).(getl O e (CHead e0 (Bind b) v)))) (\lambda (_: 
193 T).(\lambda (e0: C).(drop h d c1 e0))))))) H17 (Flat f) H14) in (let H19 \def 
194 (eq_ind K k (\lambda (k1: K).(drop h (S (plus O d)) (CHead c0 k1 t) e)) H9 
195 (Flat f) H14) in (ex3_2_ind C T (\lambda (e0: C).(\lambda (v: T).(eq C e 
196 (CHead e0 (Flat f) v)))) (\lambda (_: C).(\lambda (v: T).(eq T t (lift h (r 
197 (Flat f) (plus O d)) v)))) (\lambda (e0: C).(\lambda (_: T).(drop h (r (Flat 
198 f) (plus O d)) c0 e0))) (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u 
199 (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl O e (CHead e0 (Bind b) 
200 v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0)))) (\lambda (x1: 
201 C).(\lambda (x2: T).(\lambda (H20: (eq C e (CHead x1 (Flat f) x2))).(\lambda 
202 (H21: (eq T t (lift h (r (Flat f) (plus O d)) x2))).(\lambda (H22: (drop h (r 
203 (Flat f) (plus O d)) c0 x1)).(let H23 \def (f_equal T T (\lambda (e0: T).e0) 
204 t (lift h (r (Flat f) (plus O d)) x2) H21) in (let H24 \def (eq_ind C e 
205 (\lambda (c2: C).((drop O O (CHead c0 (Flat f) t) c0) \to ((clear c0 (CHead 
206 c1 (Bind b) u)) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift 
207 h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl O c2 (CHead e0 (Bind b) 
208 v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))))) H18 (CHead x1 
209 (Flat f) x2) H20) in (eq_ind_r C (CHead x1 (Flat f) x2) (\lambda (c2: 
210 C).(ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
211 (\lambda (v: T).(\lambda (e0: C).(getl O c2 (CHead e0 (Bind b) v)))) (\lambda 
212 (_: T).(\lambda (e0: C).(drop h d c1 e0))))) (let H25 \def (eq_ind T t 
213 (\lambda (t1: T).((drop O O (CHead c0 (Flat f) t1) c0) \to ((clear c0 (CHead 
214 c1 (Bind b) u)) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift 
215 h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl O (CHead x1 (Flat f) x2) 
216 (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 
217 e0))))))) H24 (lift h (S d) x2) H23) in (let H26 \def (H c1 u O (getl_intro O 
218 c0 (CHead c1 (Bind b) u) c0 (drop_refl c0) H16) x1 h d H22) in (ex3_2_ind T C 
219 (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: 
220 T).(\lambda (e0: C).(getl O x1 (CHead e0 (Bind b) v)))) (\lambda (_: 
221 T).(\lambda (e0: C).(drop h d c1 e0))) (ex3_2 T C (\lambda (v: T).(\lambda 
222 (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl O 
223 (CHead x1 (Flat f) x2) (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: 
224 C).(drop h d c1 e0)))) (\lambda (x3: T).(\lambda (x4: C).(\lambda (H27: (eq T 
225 u (lift h d x3))).(\lambda (H28: (getl O x1 (CHead x4 (Bind b) x3))).(\lambda 
226 (H29: (drop h d c1 x4)).(let H30 \def (eq_ind T u (\lambda (t1: T).((drop O O 
227 (CHead c0 (Flat f) (lift h (S d) x2)) c0) \to ((clear c0 (CHead c1 (Bind b) 
228 t1)) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T t1 (lift h d v)))) 
229 (\lambda (v: T).(\lambda (e0: C).(getl O (CHead x1 (Flat f) x2) (CHead e0 
230 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))))) H25 
231 (lift h d x3) H27) in (let H31 \def (eq_ind T u (\lambda (t1: T).(clear c0 
232 (CHead c1 (Bind b) t1))) H16 (lift h d x3) H27) in (eq_ind_r T (lift h d x3) 
233 (\lambda (t1: T).(ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T t1 (lift h 
234 d v)))) (\lambda (v: T).(\lambda (e0: C).(getl O (CHead x1 (Flat f) x2) 
235 (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 
236 e0))))) (ex3_2_intro T C (\lambda (v: T).(\lambda (_: C).(eq T (lift h d x3) 
237 (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl O (CHead x1 (Flat f) 
238 x2) (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 
239 e0))) x3 x4 (refl_equal T (lift h d x3)) (getl_flat x1 (CHead x4 (Bind b) x3) 
240 O H28 f x2) H29) u H27)))))))) H26))) e H20)))))))) (drop_gen_skip_l c0 e t h 
241 (plus O d) (Flat f) H19))))))))) H12)) H11))))) (\lambda (i0: nat).(\lambda 
242 (IHi: (((drop h (S (plus i0 d)) (CHead c0 k t) e) \to ((drop i0 O (CHead c0 k 
243 t) (CHead x0 (Flat f) t0)) \to ((((drop i0 O (CHead c0 k t) x0) \to ((clear 
244 x0 (CHead c1 (Bind b) u)) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq 
245 T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl i0 e (CHead e0 
246 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))))) \to 
247 (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda 
248 (v: T).(\lambda (e0: C).(getl i0 e (CHead e0 (Bind b) v)))) (\lambda (_: 
249 T).(\lambda (e0: C).(drop h d c1 e0))))))))).(\lambda (H9: (drop h (S (plus 
250 (S i0) d)) (CHead c0 k t) e)).(\lambda (H10: (drop (S i0) O (CHead c0 k t) 
251 (CHead x0 (Flat f) t0))).(\lambda (IHx0: (((drop (S i0) O (CHead c0 k t) x0) 
252 \to ((clear x0 (CHead c1 (Bind b) u)) \to (ex3_2 T C (\lambda (v: T).(\lambda 
253 (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl (S i0) 
254 e (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 
255 e0)))))))).(ex3_2_ind C T (\lambda (e0: C).(\lambda (v: T).(eq C e (CHead e0 
256 k v)))) (\lambda (_: C).(\lambda (v: T).(eq T t (lift h (r k (plus (S i0) d)) 
257 v)))) (\lambda (e0: C).(\lambda (_: T).(drop h (r k (plus (S i0) d)) c0 e0))) 
258 (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda 
259 (v: T).(\lambda (e0: C).(getl (S i0) e (CHead e0 (Bind b) v)))) (\lambda (_: 
260 T).(\lambda (e0: C).(drop h d c1 e0)))) (\lambda (x1: C).(\lambda (x2: 
261 T).(\lambda (H11: (eq C e (CHead x1 k x2))).(\lambda (H12: (eq T t (lift h (r 
262 k (plus (S i0) d)) x2))).(\lambda (H13: (drop h (r k (plus (S i0) d)) c0 
263 x1)).(let H14 \def (f_equal T T (\lambda (e0: T).e0) t (lift h (r k (plus (S 
264 i0) d)) x2) H12) in (let H15 \def (eq_ind C e (\lambda (c2: C).((drop h (S 
265 (plus i0 d)) (CHead c0 k t) c2) \to ((drop i0 O (CHead c0 k t) (CHead x0 
266 (Flat f) t0)) \to ((((drop i0 O (CHead c0 k t) x0) \to ((clear x0 (CHead c1 
267 (Bind b) u)) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d 
268 v)))) (\lambda (v: T).(\lambda (e0: C).(getl i0 c2 (CHead e0 (Bind b) v)))) 
269 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))))) \to (ex3_2 T C 
270 (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: 
271 T).(\lambda (e0: C).(getl i0 c2 (CHead e0 (Bind b) v)))) (\lambda (_: 
272 T).(\lambda (e0: C).(drop h d c1 e0)))))))) IHi (CHead x1 k x2) H11) in (let 
273 H16 \def (eq_ind C e (\lambda (c2: C).((drop (S i0) O (CHead c0 k t) x0) \to 
274 ((clear x0 (CHead c1 (Bind b) u)) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: 
275 C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl (S i0) c2 
276 (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 
277 e0))))))) IHx0 (CHead x1 k x2) H11) in (eq_ind_r C (CHead x1 k x2) (\lambda 
278 (c2: C).(ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) 
279 (\lambda (v: T).(\lambda (e0: C).(getl (S i0) c2 (CHead e0 (Bind b) v)))) 
280 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))) (let H17 \def (eq_ind T 
281 t (\lambda (t1: T).((drop (S i0) O (CHead c0 k t1) x0) \to ((clear x0 (CHead 
282 c1 (Bind b) u)) \to (ex3_2 T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift 
283 h d v)))) (\lambda (v: T).(\lambda (e0: C).(getl (S i0) (CHead x1 k x2) 
284 (CHead e0 (Bind b) v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 
285 e0))))))) H16 (lift h (r k (S (plus i0 d))) x2) H14) in (let H18 \def (eq_ind 
286 T t (\lambda (t1: T).((drop h (S (plus i0 d)) (CHead c0 k t1) (CHead x1 k 
287 x2)) \to ((drop i0 O (CHead c0 k t1) (CHead x0 (Flat f) t0)) \to ((((drop i0 
288 O (CHead c0 k t1) x0) \to ((clear x0 (CHead c1 (Bind b) u)) \to (ex3_2 T C 
289 (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: 
290 T).(\lambda (e0: C).(getl i0 (CHead x1 k x2) (CHead e0 (Bind b) v)))) 
291 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))))) \to (ex3_2 T C 
292 (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: 
293 T).(\lambda (e0: C).(getl i0 (CHead x1 k x2) (CHead e0 (Bind b) v)))) 
294 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0)))))))) H15 (lift h (r k (S 
295 (plus i0 d))) x2) H14) in (let H19 \def (eq_ind nat (r k (plus (S i0) d)) 
296 (\lambda (n: nat).(drop h n c0 x1)) H13 (plus (r k (S i0)) d) (r_plus k (S 
297 i0) d)) in (let H20 \def (eq_ind nat (r k (S i0)) (\lambda (n: nat).(drop h 
298 (plus n d) c0 x1)) H19 (S (r k i0)) (r_S k i0)) in (let H21 \def (H c1 u (r k 
299 i0) (getl_intro (r k i0) c0 (CHead c1 (Bind b) u) (CHead x0 (Flat f) t0) 
300 (drop_gen_drop k c0 (CHead x0 (Flat f) t0) t i0 H10) (clear_flat x0 (CHead c1 
301 (Bind b) u) (clear_gen_flat f x0 (CHead c1 (Bind b) u) t0 H8) f t0)) x1 h d 
302 H20) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift h d 
303 v)))) (\lambda (v: T).(\lambda (e0: C).(getl (r k i0) x1 (CHead e0 (Bind b) 
304 v)))) (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))) (ex3_2 T C (\lambda 
305 (v: T).(\lambda (_: C).(eq T u (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
306 C).(getl (S i0) (CHead x1 k x2) (CHead e0 (Bind b) v)))) (\lambda (_: 
307 T).(\lambda (e0: C).(drop h d c1 e0)))) (\lambda (x3: T).(\lambda (x4: 
308 C).(\lambda (H22: (eq T u (lift h d x3))).(\lambda (H23: (getl (r k i0) x1 
309 (CHead x4 (Bind b) x3))).(\lambda (H24: (drop h d c1 x4)).(let H25 \def 
310 (eq_ind T u (\lambda (t1: T).((drop (S i0) O (CHead c0 k (lift h (r k (S 
311 (plus i0 d))) x2)) x0) \to ((clear x0 (CHead c1 (Bind b) t1)) \to (ex3_2 T C 
312 (\lambda (v: T).(\lambda (_: C).(eq T t1 (lift h d v)))) (\lambda (v: 
313 T).(\lambda (e0: C).(getl (S i0) (CHead x1 k x2) (CHead e0 (Bind b) v)))) 
314 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))))))) H17 (lift h d x3) 
315 H22) in (let H26 \def (eq_ind T u (\lambda (t1: T).(clear x0 (CHead c1 (Bind 
316 b) t1))) (clear_gen_flat f x0 (CHead c1 (Bind b) u) t0 H8) (lift h d x3) H22) 
317 in (eq_ind_r T (lift h d x3) (\lambda (t1: T).(ex3_2 T C (\lambda (v: 
318 T).(\lambda (_: C).(eq T t1 (lift h d v)))) (\lambda (v: T).(\lambda (e0: 
319 C).(getl (S i0) (CHead x1 k x2) (CHead e0 (Bind b) v)))) (\lambda (_: 
320 T).(\lambda (e0: C).(drop h d c1 e0))))) (ex3_2_intro T C (\lambda (v: 
321 T).(\lambda (_: C).(eq T (lift h d x3) (lift h d v)))) (\lambda (v: 
322 T).(\lambda (e0: C).(getl (S i0) (CHead x1 k x2) (CHead e0 (Bind b) v)))) 
323 (\lambda (_: T).(\lambda (e0: C).(drop h d c1 e0))) x3 x4 (refl_equal T (lift 
324 h d x3)) (getl_head k i0 x1 (CHead x4 (Bind b) x3) H23 x2) H24) u H22)))))))) 
325 H21)))))) e H11))))))))) (drop_gen_skip_l c0 e t h (plus (S i0) d) k 
326 H9))))))) i H1 H7 IHx)))) k0 H5 H6))))))) x H3 H4)))) H2)))))))))))))) c)).
327
328 lemma getl_drop_conf_ge:
329  \forall (i: nat).(\forall (a: C).(\forall (c: C).((getl i c a) \to (\forall 
330 (e: C).(\forall (h: nat).(\forall (d: nat).((drop h d c e) \to ((le (plus d 
331 h) i) \to (getl (minus i h) e a)))))))))
332 \def
333  \lambda (i: nat).(\lambda (a: C).(\lambda (c: C).(\lambda (H: (getl i c 
334 a)).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H0: (drop h 
335 d c e)).(\lambda (H1: (le (plus d h) i)).(let H2 \def (getl_gen_all c a i H) 
336 in (ex2_ind C (\lambda (e0: C).(drop i O c e0)) (\lambda (e0: C).(clear e0 
337 a)) (getl (minus i h) e a) (\lambda (x: C).(\lambda (H3: (drop i O c 
338 x)).(\lambda (H4: (clear x a)).(getl_intro (minus i h) e a x (drop_conf_ge i 
339 x c H3 e h d H0 H1) H4)))) H2)))))))))).
340
341 lemma getl_conf_ge_drop:
342  \forall (b: B).(\forall (c1: C).(\forall (e: C).(\forall (u: T).(\forall (i: 
343 nat).((getl i c1 (CHead e (Bind b) u)) \to (\forall (c2: C).((drop (S O) i c1 
344 c2) \to (drop i O c2 e))))))))
345 \def
346  \lambda (b: B).(\lambda (c1: C).(\lambda (e: C).(\lambda (u: T).(\lambda (i: 
347 nat).(\lambda (H: (getl i c1 (CHead e (Bind b) u))).(\lambda (c2: C).(\lambda 
348 (H0: (drop (S O) i c1 c2)).(let H3 \def (eq_ind nat (minus (S i) (S O)) 
349 (\lambda (n: nat).(drop n O c2 e)) (drop_conf_ge (S i) e c1 (getl_drop b c1 e 
350 u i H) c2 (S O) i H0 (eq_ind_r nat (plus (S O) i) (\lambda (n: nat).(le n (S 
351 i))) (le_n (S i)) (plus i (S O)) (plus_sym i (S O)))) i (minus_Sx_SO i)) in 
352 H3)))))))).
353
354 lemma getl_drop_conf_rev:
355  \forall (j: nat).(\forall (e1: C).(\forall (e2: C).((drop j O e1 e2) \to 
356 (\forall (b: B).(\forall (c2: C).(\forall (v2: T).(\forall (i: nat).((getl i 
357 c2 (CHead e2 (Bind b) v2)) \to (ex2 C (\lambda (c1: C).(drop j O c1 c2)) 
358 (\lambda (c1: C).(drop (S i) j c1 e1)))))))))))
359 \def
360  \lambda (j: nat).(\lambda (e1: C).(\lambda (e2: C).(\lambda (H: (drop j O e1 
361 e2)).(\lambda (b: B).(\lambda (c2: C).(\lambda (v2: T).(\lambda (i: 
362 nat).(\lambda (H0: (getl i c2 (CHead e2 (Bind b) v2))).(drop_conf_rev j e1 e2 
363 H c2 (S i) (getl_drop b c2 e2 v2 i H0)))))))))).
364
365 lemma drop_getl_trans_lt:
366  \forall (i: nat).(\forall (d: nat).((lt i d) \to (\forall (c1: C).(\forall 
367 (c2: C).(\forall (h: nat).((drop h d c1 c2) \to (\forall (b: B).(\forall (e2: 
368 C).(\forall (v: T).((getl i c2 (CHead e2 (Bind b) v)) \to (ex2 C (\lambda 
369 (e1: C).(getl i c1 (CHead e1 (Bind b) (lift h (minus d (S i)) v)))) (\lambda 
370 (e1: C).(drop h (minus d (S i)) e1 e2)))))))))))))
371 \def
372  \lambda (i: nat).(\lambda (d: nat).(\lambda (H: (lt i d)).(\lambda (c1: 
373 C).(\lambda (c2: C).(\lambda (h: nat).(\lambda (H0: (drop h d c1 
374 c2)).(\lambda (b: B).(\lambda (e2: C).(\lambda (v: T).(\lambda (H1: (getl i 
375 c2 (CHead e2 (Bind b) v))).(let H2 \def (getl_gen_all c2 (CHead e2 (Bind b) 
376 v) i H1) in (ex2_ind C (\lambda (e: C).(drop i O c2 e)) (\lambda (e: 
377 C).(clear e (CHead e2 (Bind b) v))) (ex2 C (\lambda (e1: C).(getl i c1 (CHead 
378 e1 (Bind b) (lift h (minus d (S i)) v)))) (\lambda (e1: C).(drop h (minus d 
379 (S i)) e1 e2))) (\lambda (x: C).(\lambda (H3: (drop i O c2 x)).(\lambda (H4: 
380 (clear x (CHead e2 (Bind b) v))).(ex2_ind C (\lambda (e1: C).(drop i O c1 
381 e1)) (\lambda (e1: C).(drop h (minus d i) e1 x)) (ex2 C (\lambda (e1: 
382 C).(getl i c1 (CHead e1 (Bind b) (lift h (minus d (S i)) v)))) (\lambda (e1: 
383 C).(drop h (minus d (S i)) e1 e2))) (\lambda (x0: C).(\lambda (H5: (drop i O 
384 c1 x0)).(\lambda (H6: (drop h (minus d i) x0 x)).(let H7 \def (eq_ind nat 
385 (minus d i) (\lambda (n: nat).(drop h n x0 x)) H6 (S (minus d (S i))) 
386 (minus_x_Sy d i H)) in (let H8 \def (drop_clear_S x x0 h (minus d (S i)) H7 b 
387 e2 v H4) in (ex2_ind C (\lambda (c3: C).(clear x0 (CHead c3 (Bind b) (lift h 
388 (minus d (S i)) v)))) (\lambda (c3: C).(drop h (minus d (S i)) c3 e2)) (ex2 C 
389 (\lambda (e1: C).(getl i c1 (CHead e1 (Bind b) (lift h (minus d (S i)) v)))) 
390 (\lambda (e1: C).(drop h (minus d (S i)) e1 e2))) (\lambda (x1: C).(\lambda 
391 (H9: (clear x0 (CHead x1 (Bind b) (lift h (minus d (S i)) v)))).(\lambda 
392 (H10: (drop h (minus d (S i)) x1 e2)).(ex_intro2 C (\lambda (e1: C).(getl i 
393 c1 (CHead e1 (Bind b) (lift h (minus d (S i)) v)))) (\lambda (e1: C).(drop h 
394 (minus d (S i)) e1 e2)) x1 (getl_intro i c1 (CHead x1 (Bind b) (lift h (minus 
395 d (S i)) v)) x0 H5 H9) H10)))) H8)))))) (drop_trans_le i d (le_S_n i d 
396 (le_S_n (S i) (S d) (le_S (S (S i)) (S d) (le_n_S (S i) d H)))) c1 c2 h H0 x 
397 H3))))) H2)))))))))))).
398
399 lemma drop_getl_trans_le:
400  \forall (i: nat).(\forall (d: nat).((le i d) \to (\forall (c1: C).(\forall 
401 (c2: C).(\forall (h: nat).((drop h d c1 c2) \to (\forall (e2: C).((getl i c2 
402 e2) \to (ex3_2 C C (\lambda (e0: C).(\lambda (_: C).(drop i O c1 e0))) 
403 (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d i) e0 e1))) (\lambda (_: 
404 C).(\lambda (e1: C).(clear e1 e2))))))))))))
405 \def
406  \lambda (i: nat).(\lambda (d: nat).(\lambda (H: (le i d)).(\lambda (c1: 
407 C).(\lambda (c2: C).(\lambda (h: nat).(\lambda (H0: (drop h d c1 
408 c2)).(\lambda (e2: C).(\lambda (H1: (getl i c2 e2)).(let H2 \def 
409 (getl_gen_all c2 e2 i H1) in (ex2_ind C (\lambda (e: C).(drop i O c2 e)) 
410 (\lambda (e: C).(clear e e2)) (ex3_2 C C (\lambda (e0: C).(\lambda (_: 
411 C).(drop i O c1 e0))) (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d i) 
412 e0 e1))) (\lambda (_: C).(\lambda (e1: C).(clear e1 e2)))) (\lambda (x: 
413 C).(\lambda (H3: (drop i O c2 x)).(\lambda (H4: (clear x e2)).(let H5 \def 
414 (drop_trans_le i d H c1 c2 h H0 x H3) in (ex2_ind C (\lambda (e1: C).(drop i 
415 O c1 e1)) (\lambda (e1: C).(drop h (minus d i) e1 x)) (ex3_2 C C (\lambda 
416 (e0: C).(\lambda (_: C).(drop i O c1 e0))) (\lambda (e0: C).(\lambda (e1: 
417 C).(drop h (minus d i) e0 e1))) (\lambda (_: C).(\lambda (e1: C).(clear e1 
418 e2)))) (\lambda (x0: C).(\lambda (H6: (drop i O c1 x0)).(\lambda (H7: (drop h 
419 (minus d i) x0 x)).(ex3_2_intro C C (\lambda (e0: C).(\lambda (_: C).(drop i 
420 O c1 e0))) (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d i) e0 e1))) 
421 (\lambda (_: C).(\lambda (e1: C).(clear e1 e2))) x0 x H6 H7 H4)))) H5))))) 
422 H2)))))))))).
423
424 lemma drop_getl_trans_ge:
425  \forall (i: nat).(\forall (c1: C).(\forall (c2: C).(\forall (d: 
426 nat).(\forall (h: nat).((drop h d c1 c2) \to (\forall (e2: C).((getl i c2 e2) 
427 \to ((le d i) \to (getl (plus i h) c1 e2)))))))))
428 \def
429  \lambda (i: nat).(\lambda (c1: C).(\lambda (c2: C).(\lambda (d: 
430 nat).(\lambda (h: nat).(\lambda (H: (drop h d c1 c2)).(\lambda (e2: 
431 C).(\lambda (H0: (getl i c2 e2)).(\lambda (H1: (le d i)).(let H2 \def 
432 (getl_gen_all c2 e2 i H0) in (ex2_ind C (\lambda (e: C).(drop i O c2 e)) 
433 (\lambda (e: C).(clear e e2)) (getl (plus i h) c1 e2) (\lambda (x: 
434 C).(\lambda (H3: (drop i O c2 x)).(\lambda (H4: (clear x e2)).(getl_intro 
435 (plus i h) c1 e2 x (drop_trans_ge i c1 c2 d h H x H3 H1) H4)))) H2)))))))))).
436
437 lemma getl_drop_trans:
438  \forall (c1: C).(\forall (c2: C).(\forall (h: nat).((getl h c1 c2) \to 
439 (\forall (e2: C).(\forall (i: nat).((drop (S i) O c2 e2) \to (drop (S (plus i 
440 h)) O c1 e2)))))))
441 \def
442  \lambda (c1: C).(C_ind (\lambda (c: C).(\forall (c2: C).(\forall (h: 
443 nat).((getl h c c2) \to (\forall (e2: C).(\forall (i: nat).((drop (S i) O c2 
444 e2) \to (drop (S (plus i h)) O c e2)))))))) (\lambda (n: nat).(\lambda (c2: 
445 C).(\lambda (h: nat).(\lambda (H: (getl h (CSort n) c2)).(\lambda (e2: 
446 C).(\lambda (i: nat).(\lambda (_: (drop (S i) O c2 e2)).(getl_gen_sort n h c2 
447 H (drop (S (plus i h)) O (CSort n) e2))))))))) (\lambda (c2: C).(\lambda 
448 (IHc: ((\forall (c3: C).(\forall (h: nat).((getl h c2 c3) \to (\forall (e2: 
449 C).(\forall (i: nat).((drop (S i) O c3 e2) \to (drop (S (plus i h)) O c2 
450 e2))))))))).(\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (t: T).(\forall 
451 (c3: C).(\forall (h: nat).((getl h (CHead c2 k0 t) c3) \to (\forall (e2: 
452 C).(\forall (i: nat).((drop (S i) O c3 e2) \to (drop (S (plus i h)) O (CHead 
453 c2 k0 t) e2))))))))) (\lambda (b: B).(\lambda (t: T).(\lambda (c3: 
454 C).(\lambda (h: nat).(nat_ind (\lambda (n: nat).((getl n (CHead c2 (Bind b) 
455 t) c3) \to (\forall (e2: C).(\forall (i: nat).((drop (S i) O c3 e2) \to (drop 
456 (S (plus i n)) O (CHead c2 (Bind b) t) e2)))))) (\lambda (H: (getl O (CHead 
457 c2 (Bind b) t) c3)).(\lambda (e2: C).(\lambda (i: nat).(\lambda (H0: (drop (S 
458 i) O c3 e2)).(let H1 \def (eq_ind C c3 (\lambda (c: C).(drop (S i) O c e2)) 
459 H0 (CHead c2 (Bind b) t) (clear_gen_bind b c2 c3 t (getl_gen_O (CHead c2 
460 (Bind b) t) c3 H))) in (eq_ind nat i (\lambda (n: nat).(drop (S n) O (CHead 
461 c2 (Bind b) t) e2)) (drop_drop (Bind b) i c2 e2 (drop_gen_drop (Bind b) c2 e2 
462 t i H1) t) (plus i O) (plus_n_O i))))))) (\lambda (n: nat).(\lambda (_: 
463 (((getl n (CHead c2 (Bind b) t) c3) \to (\forall (e2: C).(\forall (i: 
464 nat).((drop (S i) O c3 e2) \to (drop (S (plus i n)) O (CHead c2 (Bind b) t) 
465 e2))))))).(\lambda (H0: (getl (S n) (CHead c2 (Bind b) t) c3)).(\lambda (e2: 
466 C).(\lambda (i: nat).(\lambda (H1: (drop (S i) O c3 e2)).(eq_ind nat (plus (S 
467 i) n) (\lambda (n0: nat).(drop (S n0) O (CHead c2 (Bind b) t) e2)) (drop_drop 
468 (Bind b) (plus (S i) n) c2 e2 (IHc c3 n (getl_gen_S (Bind b) c2 c3 t n H0) e2 
469 i H1) t) (plus i (S n)) (plus_Snm_nSm i n)))))))) h))))) (\lambda (f: 
470 F).(\lambda (t: T).(\lambda (c3: C).(\lambda (h: nat).(nat_ind (\lambda (n: 
471 nat).((getl n (CHead c2 (Flat f) t) c3) \to (\forall (e2: C).(\forall (i: 
472 nat).((drop (S i) O c3 e2) \to (drop (S (plus i n)) O (CHead c2 (Flat f) t) 
473 e2)))))) (\lambda (H: (getl O (CHead c2 (Flat f) t) c3)).(\lambda (e2: 
474 C).(\lambda (i: nat).(\lambda (H0: (drop (S i) O c3 e2)).(drop_drop (Flat f) 
475 (plus i O) c2 e2 (IHc c3 O (getl_intro O c2 c3 c2 (drop_refl c2) 
476 (clear_gen_flat f c2 c3 t (getl_gen_O (CHead c2 (Flat f) t) c3 H))) e2 i H0) 
477 t))))) (\lambda (n: nat).(\lambda (_: (((getl n (CHead c2 (Flat f) t) c3) \to 
478 (\forall (e2: C).(\forall (i: nat).((drop (S i) O c3 e2) \to (drop (S (plus i 
479 n)) O (CHead c2 (Flat f) t) e2))))))).(\lambda (H0: (getl (S n) (CHead c2 
480 (Flat f) t) c3)).(\lambda (e2: C).(\lambda (i: nat).(\lambda (H1: (drop (S i) 
481 O c3 e2)).(drop_drop (Flat f) (plus i (S n)) c2 e2 (IHc c3 (S n) (getl_gen_S 
482 (Flat f) c2 c3 t n H0) e2 i H1) t))))))) h))))) k)))) c1).
483