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 include "Basic-1/lift/fwd.ma".
19 include "Basic-1/s/props.ma".
21 theorem thead_x_lift_y_y:
22 \forall (k: K).(\forall (t: T).(\forall (v: T).(\forall (h: nat).(\forall
23 (d: nat).((eq T (THead k v (lift h d t)) t) \to (\forall (P: Prop).P))))))
25 \lambda (k: K).(\lambda (t: T).(T_ind (\lambda (t0: T).(\forall (v:
26 T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k v (lift h d t0)) t0)
27 \to (\forall (P: Prop).P)))))) (\lambda (n: nat).(\lambda (v: T).(\lambda (h:
28 nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k v (lift h d (TSort n)))
29 (TSort n))).(\lambda (P: Prop).(let H0 \def (eq_ind T (THead k v (lift h d
30 (TSort n))) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with
31 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _)
32 \Rightarrow True])) I (TSort n) H) in (False_ind P H0)))))))) (\lambda (n:
33 nat).(\lambda (v: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T
34 (THead k v (lift h d (TLRef n))) (TLRef n))).(\lambda (P: Prop).(let H0 \def
35 (eq_ind T (THead k v (lift h d (TLRef n))) (\lambda (ee: T).(match ee in T
36 return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _)
37 \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) H) in
38 (False_ind P H0)))))))) (\lambda (k0: K).(\lambda (t0: T).(\lambda (_:
39 ((\forall (v: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k v (lift
40 h d t0)) t0) \to (\forall (P: Prop).P))))))).(\lambda (t1: T).(\lambda (H0:
41 ((\forall (v: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k v (lift
42 h d t1)) t1) \to (\forall (P: Prop).P))))))).(\lambda (v: T).(\lambda (h:
43 nat).(\lambda (d: nat).(\lambda (H1: (eq T (THead k v (lift h d (THead k0 t0
44 t1))) (THead k0 t0 t1))).(\lambda (P: Prop).(let H2 \def (f_equal T K
45 (\lambda (e: T).(match e in T return (\lambda (_: T).K) with [(TSort _)
46 \Rightarrow k | (TLRef _) \Rightarrow k | (THead k1 _ _) \Rightarrow k1]))
47 (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1) H1) in ((let H3 \def
48 (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with
49 [(TSort _) \Rightarrow v | (TLRef _) \Rightarrow v | (THead _ t2 _)
50 \Rightarrow t2])) (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1)
51 H1) in ((let H4 \def (f_equal T T (\lambda (e: T).(match e in T return
52 (\lambda (_: T).T) with [(TSort _) \Rightarrow (THead k0 ((let rec lref_map
53 (f: ((nat \to nat))) (d0: nat) (t2: T) on t2: T \def (match t2 with [(TSort
54 n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d0)
55 with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k1 u t3)
56 \Rightarrow (THead k1 (lref_map f d0 u) (lref_map f (s k1 d0) t3))]) in
57 lref_map) (\lambda (x: nat).(plus x h)) d t0) ((let rec lref_map (f: ((nat
58 \to nat))) (d0: nat) (t2: T) on t2: T \def (match t2 with [(TSort n)
59 \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d0) with
60 [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k1 u t3)
61 \Rightarrow (THead k1 (lref_map f d0 u) (lref_map f (s k1 d0) t3))]) in
62 lref_map) (\lambda (x: nat).(plus x h)) (s k0 d) t1)) | (TLRef _) \Rightarrow
63 (THead k0 ((let rec lref_map (f: ((nat \to nat))) (d0: nat) (t2: T) on t2: T
64 \def (match t2 with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow
65 (TLRef (match (blt i d0) with [true \Rightarrow i | false \Rightarrow (f
66 i)])) | (THead k1 u t3) \Rightarrow (THead k1 (lref_map f d0 u) (lref_map f
67 (s k1 d0) t3))]) in lref_map) (\lambda (x: nat).(plus x h)) d t0) ((let rec
68 lref_map (f: ((nat \to nat))) (d0: nat) (t2: T) on t2: T \def (match t2 with
69 [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i
70 d0) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k1 u t3)
71 \Rightarrow (THead k1 (lref_map f d0 u) (lref_map f (s k1 d0) t3))]) in
72 lref_map) (\lambda (x: nat).(plus x h)) (s k0 d) t1)) | (THead _ _ t2)
73 \Rightarrow t2])) (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1)
74 H1) in (\lambda (_: (eq T v t0)).(\lambda (H6: (eq K k k0)).(let H7 \def
75 (eq_ind K k (\lambda (k1: K).(\forall (v0: T).(\forall (h0: nat).(\forall
76 (d0: nat).((eq T (THead k1 v0 (lift h0 d0 t1)) t1) \to (\forall (P0:
77 Prop).P0)))))) H0 k0 H6) in (let H8 \def (eq_ind T (lift h d (THead k0 t0
78 t1)) (\lambda (t2: T).(eq T t2 t1)) H4 (THead k0 (lift h d t0) (lift h (s k0
79 d) t1)) (lift_head k0 t0 t1 h d)) in (H7 (lift h d t0) h (s k0 d) H8 P))))))
80 H3)) H2)))))))))))) t)).
86 \forall (t: T).(\forall (d: nat).(eq T (lift O d t) t))
88 \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (d: nat).(eq T (lift O d t0)
89 t0))) (\lambda (n: nat).(\lambda (_: nat).(refl_equal T (TSort n)))) (\lambda
90 (n: nat).(\lambda (d: nat).(lt_le_e n d (eq T (lift O d (TLRef n)) (TLRef n))
91 (\lambda (H: (lt n d)).(eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (TLRef
92 n))) (refl_equal T (TLRef n)) (lift O d (TLRef n)) (lift_lref_lt n O d H)))
93 (\lambda (H: (le d n)).(eq_ind_r T (TLRef (plus n O)) (\lambda (t0: T).(eq T
94 t0 (TLRef n))) (f_equal nat T TLRef (plus n O) n (sym_eq nat n (plus n O)
95 (plus_n_O n))) (lift O d (TLRef n)) (lift_lref_ge n O d H)))))) (\lambda (k:
96 K).(\lambda (t0: T).(\lambda (H: ((\forall (d: nat).(eq T (lift O d t0)
97 t0)))).(\lambda (t1: T).(\lambda (H0: ((\forall (d: nat).(eq T (lift O d t1)
98 t1)))).(\lambda (d: nat).(eq_ind_r T (THead k (lift O d t0) (lift O (s k d)
99 t1)) (\lambda (t2: T).(eq T t2 (THead k t0 t1))) (f_equal3 K T T T THead k k
100 (lift O d t0) t0 (lift O (s k d) t1) t1 (refl_equal K k) (H d) (H0 (s k d)))
101 (lift O d (THead k t0 t1)) (lift_head k t0 t1 O d)))))))) t).
106 theorem lift_lref_gt:
107 \forall (d: nat).(\forall (n: nat).((lt d n) \to (eq T (lift (S O) d (TLRef
108 (pred n))) (TLRef n))))
110 \lambda (d: nat).(\lambda (n: nat).(\lambda (H: (lt d n)).(eq_ind_r T (TLRef
111 (plus (pred n) (S O))) (\lambda (t: T).(eq T t (TLRef n))) (eq_ind nat (plus
112 (S O) (pred n)) (\lambda (n0: nat).(eq T (TLRef n0) (TLRef n))) (eq_ind nat n
113 (\lambda (n0: nat).(eq T (TLRef n0) (TLRef n))) (refl_equal T (TLRef n)) (S
114 (pred n)) (S_pred n d H)) (plus (pred n) (S O)) (plus_sym (S O) (pred n)))
115 (lift (S O) d (TLRef (pred n))) (lift_lref_ge (pred n) (S O) d (le_S_n d
116 (pred n) (eq_ind nat n (\lambda (n0: nat).(le (S d) n0)) H (S (pred n))
117 (S_pred n d H))))))).
123 \forall (h: nat).(\forall (d: nat).(\forall (v: T).(\forall (vs: TList).(eq
124 TList (lifts h d (TApp vs v)) (TApp (lifts h d vs) (lift h d v))))))
126 \lambda (h: nat).(\lambda (d: nat).(\lambda (v: T).(\lambda (vs:
127 TList).(TList_ind (\lambda (t: TList).(eq TList (lifts h d (TApp t v)) (TApp
128 (lifts h d t) (lift h d v)))) (refl_equal TList (TCons (lift h d v) TNil))
129 (\lambda (t: T).(\lambda (t0: TList).(\lambda (H: (eq TList (lifts h d (TApp
130 t0 v)) (TApp (lifts h d t0) (lift h d v)))).(eq_ind_r TList (TApp (lifts h d
131 t0) (lift h d v)) (\lambda (t1: TList).(eq TList (TCons (lift h d t) t1)
132 (TCons (lift h d t) (TApp (lifts h d t0) (lift h d v))))) (refl_equal TList
133 (TCons (lift h d t) (TApp (lifts h d t0) (lift h d v)))) (lifts h d (TApp t0
140 \forall (x: T).(\forall (t: T).(\forall (h: nat).(\forall (d: nat).((eq T
141 (lift h d x) (lift h d t)) \to (eq T x t)))))
143 \lambda (x: T).(T_ind (\lambda (t: T).(\forall (t0: T).(\forall (h:
144 nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to (eq T t
145 t0)))))) (\lambda (n: nat).(\lambda (t: T).(\lambda (h: nat).(\lambda (d:
146 nat).(\lambda (H: (eq T (lift h d (TSort n)) (lift h d t))).(let H0 \def
147 (eq_ind T (lift h d (TSort n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H
148 (TSort n) (lift_sort n h d)) in (sym_eq T t (TSort n) (lift_gen_sort h d n t
149 H0)))))))) (\lambda (n: nat).(\lambda (t: T).(\lambda (h: nat).(\lambda (d:
150 nat).(\lambda (H: (eq T (lift h d (TLRef n)) (lift h d t))).(lt_le_e n d (eq
151 T (TLRef n) t) (\lambda (H0: (lt n d)).(let H1 \def (eq_ind T (lift h d
152 (TLRef n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H (TLRef n) (lift_lref_lt
153 n h d H0)) in (sym_eq T t (TLRef n) (lift_gen_lref_lt h d n (lt_le_trans n d
154 d H0 (le_n d)) t H1)))) (\lambda (H0: (le d n)).(let H1 \def (eq_ind T (lift
155 h d (TLRef n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H (TLRef (plus n h))
156 (lift_lref_ge n h d H0)) in (sym_eq T t (TLRef n) (lift_gen_lref_ge h d n H0
157 t H1)))))))))) (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (t:
158 T).(((\forall (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t)
159 (lift h d t0)) \to (eq T t t0)))))) \to (\forall (t0: T).(((\forall (t1:
160 T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t1))
161 \to (eq T t0 t1)))))) \to (\forall (t1: T).(\forall (h: nat).(\forall (d:
162 nat).((eq T (lift h d (THead k0 t t0)) (lift h d t1)) \to (eq T (THead k0 t
163 t0) t1)))))))))) (\lambda (b: B).(\lambda (t: T).(\lambda (H: ((\forall (t0:
164 T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to
165 (eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (t1: T).(\forall
166 (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t1)) \to (eq T t0
167 t1))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1:
168 (eq T (lift h d (THead (Bind b) t t0)) (lift h d t1))).(let H2 \def (eq_ind T
169 (lift h d (THead (Bind b) t t0)) (\lambda (t2: T).(eq T t2 (lift h d t1))) H1
170 (THead (Bind b) (lift h d t) (lift h (S d) t0)) (lift_bind b t t0 h d)) in
171 (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T t1 (THead (Bind b) y
172 z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t) (lift h d y))))
173 (\lambda (_: T).(\lambda (z: T).(eq T (lift h (S d) t0) (lift h (S d) z))))
174 (eq T (THead (Bind b) t t0) t1) (\lambda (x0: T).(\lambda (x1: T).(\lambda
175 (H3: (eq T t1 (THead (Bind b) x0 x1))).(\lambda (H4: (eq T (lift h d t) (lift
176 h d x0))).(\lambda (H5: (eq T (lift h (S d) t0) (lift h (S d) x1))).(eq_ind_r
177 T (THead (Bind b) x0 x1) (\lambda (t2: T).(eq T (THead (Bind b) t t0) t2))
178 (f_equal3 K T T T THead (Bind b) (Bind b) t x0 t0 x1 (refl_equal K (Bind b))
179 (H x0 h d H4) (H0 x1 h (S d) H5)) t1 H3)))))) (lift_gen_bind b (lift h d t)
180 (lift h (S d) t0) t1 h d H2)))))))))))) (\lambda (f: F).(\lambda (t:
181 T).(\lambda (H: ((\forall (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T
182 (lift h d t) (lift h d t0)) \to (eq T t t0))))))).(\lambda (t0: T).(\lambda
183 (H0: ((\forall (t1: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d
184 t0) (lift h d t1)) \to (eq T t0 t1))))))).(\lambda (t1: T).(\lambda (h:
185 nat).(\lambda (d: nat).(\lambda (H1: (eq T (lift h d (THead (Flat f) t t0))
186 (lift h d t1))).(let H2 \def (eq_ind T (lift h d (THead (Flat f) t t0))
187 (\lambda (t2: T).(eq T t2 (lift h d t1))) H1 (THead (Flat f) (lift h d t)
188 (lift h d t0)) (lift_flat f t t0 h d)) in (ex3_2_ind T T (\lambda (y:
189 T).(\lambda (z: T).(eq T t1 (THead (Flat f) y z)))) (\lambda (y: T).(\lambda
190 (_: T).(eq T (lift h d t) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq
191 T (lift h d t0) (lift h d z)))) (eq T (THead (Flat f) t t0) t1) (\lambda (x0:
192 T).(\lambda (x1: T).(\lambda (H3: (eq T t1 (THead (Flat f) x0 x1))).(\lambda
193 (H4: (eq T (lift h d t) (lift h d x0))).(\lambda (H5: (eq T (lift h d t0)
194 (lift h d x1))).(eq_ind_r T (THead (Flat f) x0 x1) (\lambda (t2: T).(eq T
195 (THead (Flat f) t t0) t2)) (f_equal3 K T T T THead (Flat f) (Flat f) t x0 t0
196 x1 (refl_equal K (Flat f)) (H x0 h d H4) (H0 x1 h d H5)) t1 H3))))))
197 (lift_gen_flat f (lift h d t) (lift h d t0) t1 h d H2)))))))))))) k)) x).
202 theorem lift_gen_lift:
203 \forall (t1: T).(\forall (x: T).(\forall (h1: nat).(\forall (h2:
204 nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift h1 d1
205 t1) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1
206 t2))) (\lambda (t2: T).(eq T t1 (lift h2 d2 t2)))))))))))
208 \lambda (t1: T).(T_ind (\lambda (t: T).(\forall (x: T).(\forall (h1:
209 nat).(\forall (h2: nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to
210 ((eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2:
211 T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 d2
212 t2)))))))))))) (\lambda (n: nat).(\lambda (x: T).(\lambda (h1: nat).(\lambda
213 (h2: nat).(\lambda (d1: nat).(\lambda (d2: nat).(\lambda (_: (le d1
214 d2)).(\lambda (H0: (eq T (lift h1 d1 (TSort n)) (lift h2 (plus d2 h1)
215 x))).(let H1 \def (eq_ind T (lift h1 d1 (TSort n)) (\lambda (t: T).(eq T t
216 (lift h2 (plus d2 h1) x))) H0 (TSort n) (lift_sort n h1 d1)) in (eq_ind_r T
217 (TSort n) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift h1 d1 t2)))
218 (\lambda (t2: T).(eq T (TSort n) (lift h2 d2 t2))))) (ex_intro2 T (\lambda
219 (t2: T).(eq T (TSort n) (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TSort n)
220 (lift h2 d2 t2))) (TSort n) (eq_ind_r T (TSort n) (\lambda (t: T).(eq T
221 (TSort n) t)) (refl_equal T (TSort n)) (lift h1 d1 (TSort n)) (lift_sort n h1
222 d1)) (eq_ind_r T (TSort n) (\lambda (t: T).(eq T (TSort n) t)) (refl_equal T
223 (TSort n)) (lift h2 d2 (TSort n)) (lift_sort n h2 d2))) x (lift_gen_sort h2
224 (plus d2 h1) n x H1))))))))))) (\lambda (n: nat).(\lambda (x: T).(\lambda
225 (h1: nat).(\lambda (h2: nat).(\lambda (d1: nat).(\lambda (d2: nat).(\lambda
226 (H: (le d1 d2)).(\lambda (H0: (eq T (lift h1 d1 (TLRef n)) (lift h2 (plus d2
227 h1) x))).(lt_le_e n d1 (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 t2)))
228 (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2)))) (\lambda (H1: (lt n
229 d1)).(let H2 \def (eq_ind T (lift h1 d1 (TLRef n)) (\lambda (t: T).(eq T t
230 (lift h2 (plus d2 h1) x))) H0 (TLRef n) (lift_lref_lt n h1 d1 H1)) in
231 (eq_ind_r T (TLRef n) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift
232 h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))))) (ex_intro2 T
233 (\lambda (t2: T).(eq T (TLRef n) (lift h1 d1 t2))) (\lambda (t2: T).(eq T
234 (TLRef n) (lift h2 d2 t2))) (TLRef n) (eq_ind_r T (TLRef n) (\lambda (t:
235 T).(eq T (TLRef n) t)) (refl_equal T (TLRef n)) (lift h1 d1 (TLRef n))
236 (lift_lref_lt n h1 d1 H1)) (eq_ind_r T (TLRef n) (\lambda (t: T).(eq T (TLRef
237 n) t)) (refl_equal T (TLRef n)) (lift h2 d2 (TLRef n)) (lift_lref_lt n h2 d2
238 (lt_le_trans n d1 d2 H1 H)))) x (lift_gen_lref_lt h2 (plus d2 h1) n
239 (lt_le_trans n d1 (plus d2 h1) H1 (le_plus_trans d1 d2 h1 H)) x H2))))
240 (\lambda (H1: (le d1 n)).(let H2 \def (eq_ind T (lift h1 d1 (TLRef n))
241 (\lambda (t: T).(eq T t (lift h2 (plus d2 h1) x))) H0 (TLRef (plus n h1))
242 (lift_lref_ge n h1 d1 H1)) in (lt_le_e n d2 (ex2 T (\lambda (t2: T).(eq T x
243 (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))))
244 (\lambda (H3: (lt n d2)).(eq_ind_r T (TLRef (plus n h1)) (\lambda (t: T).(ex2
245 T (\lambda (t2: T).(eq T t (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n)
246 (lift h2 d2 t2))))) (ex_intro2 T (\lambda (t2: T).(eq T (TLRef (plus n h1))
247 (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))) (TLRef
248 n) (eq_ind_r T (TLRef (plus n h1)) (\lambda (t: T).(eq T (TLRef (plus n h1))
249 t)) (refl_equal T (TLRef (plus n h1))) (lift h1 d1 (TLRef n)) (lift_lref_ge n
250 h1 d1 H1)) (eq_ind_r T (TLRef n) (\lambda (t: T).(eq T (TLRef n) t))
251 (refl_equal T (TLRef n)) (lift h2 d2 (TLRef n)) (lift_lref_lt n h2 d2 H3))) x
252 (lift_gen_lref_lt h2 (plus d2 h1) (plus n h1) (lt_reg_r n d2 h1 H3) x H2)))
253 (\lambda (H3: (le d2 n)).(lt_le_e n (plus d2 h2) (ex2 T (\lambda (t2: T).(eq
254 T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))))
255 (\lambda (H4: (lt n (plus d2 h2))).(lift_gen_lref_false h2 (plus d2 h1) (plus
256 n h1) (le_plus_plus d2 n h1 h1 H3 (le_n h1)) (eq_ind_r nat (plus (plus d2 h2)
257 h1) (\lambda (n0: nat).(lt (plus n h1) n0)) (lt_reg_r n (plus d2 h2) h1 H4)
258 (plus (plus d2 h1) h2) (plus_permute_2_in_3 d2 h1 h2)) x H2 (ex2 T (\lambda
259 (t2: T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2
260 d2 t2)))))) (\lambda (H4: (le (plus d2 h2) n)).(let H5 \def (eq_ind nat (plus
261 n h1) (\lambda (n0: nat).(eq T (TLRef n0) (lift h2 (plus d2 h1) x))) H2 (plus
262 (minus (plus n h1) h2) h2) (le_plus_minus_sym h2 (plus n h1) (le_plus_trans
263 h2 n h1 (le_trans h2 (plus d2 h2) n (le_plus_r d2 h2) H4)))) in (eq_ind_r T
264 (TLRef (minus (plus n h1) h2)) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T
265 t (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2)))))
266 (ex_intro2 T (\lambda (t2: T).(eq T (TLRef (minus (plus n h1) h2)) (lift h1
267 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))) (TLRef (minus n
268 h2)) (eq_ind_r nat (plus (minus n h2) h1) (\lambda (n0: nat).(eq T (TLRef n0)
269 (lift h1 d1 (TLRef (minus n h2))))) (eq_ind_r T (TLRef (plus (minus n h2)
270 h1)) (\lambda (t: T).(eq T (TLRef (plus (minus n h2) h1)) t)) (refl_equal T
271 (TLRef (plus (minus n h2) h1))) (lift h1 d1 (TLRef (minus n h2)))
272 (lift_lref_ge (minus n h2) h1 d1 (le_trans d1 d2 (minus n h2) H (le_minus d2
273 n h2 H4)))) (minus (plus n h1) h2) (le_minus_plus h2 n (le_trans h2 (plus d2
274 h2) n (le_plus_r d2 h2) H4) h1)) (eq_ind_r nat (plus (minus n h2) h2)
275 (\lambda (n0: nat).(eq T (TLRef n0) (lift h2 d2 (TLRef (minus n0 h2)))))
276 (eq_ind_r T (TLRef (plus (minus (plus (minus n h2) h2) h2) h2)) (\lambda (t:
277 T).(eq T (TLRef (plus (minus n h2) h2)) t)) (f_equal nat T TLRef (plus (minus
278 n h2) h2) (plus (minus (plus (minus n h2) h2) h2) h2) (f_equal2 nat nat nat
279 plus (minus n h2) (minus (plus (minus n h2) h2) h2) h2 h2 (sym_eq nat (minus
280 (plus (minus n h2) h2) h2) (minus n h2) (minus_plus_r (minus n h2) h2))
281 (refl_equal nat h2))) (lift h2 d2 (TLRef (minus (plus (minus n h2) h2) h2)))
282 (lift_lref_ge (minus (plus (minus n h2) h2) h2) h2 d2 (le_minus d2 (plus
283 (minus n h2) h2) h2 (le_plus_plus d2 (minus n h2) h2 h2 (le_minus d2 n h2 H4)
284 (le_n h2))))) n (le_plus_minus_sym h2 n (le_trans h2 (plus d2 h2) n
285 (le_plus_r d2 h2) H4)))) x (lift_gen_lref_ge h2 (plus d2 h1) (minus (plus n
286 h1) h2) (arith0 h2 d2 n H4 h1) x H5)))))))))))))))))) (\lambda (k:
287 K).(\lambda (t: T).(\lambda (H: ((\forall (x: T).(\forall (h1: nat).(\forall
288 (h2: nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift
289 h1 d1 t) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift
290 h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 d2 t2))))))))))))).(\lambda
291 (t0: T).(\lambda (H0: ((\forall (x: T).(\forall (h1: nat).(\forall (h2:
292 nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift h1 d1
293 t0) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1
294 t2))) (\lambda (t2: T).(eq T t0 (lift h2 d2 t2))))))))))))).(\lambda (x:
295 T).(\lambda (h1: nat).(\lambda (h2: nat).(\lambda (d1: nat).(\lambda (d2:
296 nat).(\lambda (H1: (le d1 d2)).(\lambda (H2: (eq T (lift h1 d1 (THead k t
297 t0)) (lift h2 (plus d2 h1) x))).(K_ind (\lambda (k0: K).((eq T (lift h1 d1
298 (THead k0 t t0)) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T
299 x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (THead k0 t t0) (lift h2 d2
300 t2)))))) (\lambda (b: B).(\lambda (H3: (eq T (lift h1 d1 (THead (Bind b) t
301 t0)) (lift h2 (plus d2 h1) x))).(let H4 \def (eq_ind T (lift h1 d1 (THead
302 (Bind b) t t0)) (\lambda (t2: T).(eq T t2 (lift h2 (plus d2 h1) x))) H3
303 (THead (Bind b) (lift h1 d1 t) (lift h1 (S d1) t0)) (lift_bind b t t0 h1 d1))
304 in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Bind b) y
305 z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h1 d1 t) (lift h2 (plus d2
306 h1) y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h1 (S d1) t0) (lift h2
307 (S (plus d2 h1)) z)))) (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 t2)))
308 (\lambda (t2: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t2)))) (\lambda (x0:
309 T).(\lambda (x1: T).(\lambda (H5: (eq T x (THead (Bind b) x0 x1))).(\lambda
310 (H6: (eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x0))).(\lambda (H7: (eq T
311 (lift h1 (S d1) t0) (lift h2 (S (plus d2 h1)) x1))).(eq_ind_r T (THead (Bind
312 b) x0 x1) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h1 d1 t3)))
313 (\lambda (t3: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t3))))) (ex2_ind T
314 (\lambda (t2: T).(eq T x0 (lift h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2
315 d2 t2))) (ex2 T (\lambda (t2: T).(eq T (THead (Bind b) x0 x1) (lift h1 d1
316 t2))) (\lambda (t2: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t2))))
317 (\lambda (x2: T).(\lambda (H8: (eq T x0 (lift h1 d1 x2))).(\lambda (H9: (eq T
318 t (lift h2 d2 x2))).(eq_ind_r T (lift h1 d1 x2) (\lambda (t2: T).(ex2 T
319 (\lambda (t3: T).(eq T (THead (Bind b) t2 x1) (lift h1 d1 t3))) (\lambda (t3:
320 T).(eq T (THead (Bind b) t t0) (lift h2 d2 t3))))) (eq_ind_r T (lift h2 d2
321 x2) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift h1
322 d1 x2) x1) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) t2 t0)
323 (lift h2 d2 t3))))) (let H10 \def (refl_equal nat (plus (S d2) h1)) in (let
324 H11 \def (eq_ind nat (S (plus d2 h1)) (\lambda (n: nat).(eq T (lift h1 (S d1)
325 t0) (lift h2 n x1))) H7 (plus (S d2) h1) H10) in (ex2_ind T (\lambda (t2:
326 T).(eq T x1 (lift h1 (S d1) t2))) (\lambda (t2: T).(eq T t0 (lift h2 (S d2)
327 t2))) (ex2 T (\lambda (t2: T).(eq T (THead (Bind b) (lift h1 d1 x2) x1) (lift
328 h1 d1 t2))) (\lambda (t2: T).(eq T (THead (Bind b) (lift h2 d2 x2) t0) (lift
329 h2 d2 t2)))) (\lambda (x3: T).(\lambda (H12: (eq T x1 (lift h1 (S d1)
330 x3))).(\lambda (H13: (eq T t0 (lift h2 (S d2) x3))).(eq_ind_r T (lift h1 (S
331 d1) x3) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift
332 h1 d1 x2) t2) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) (lift
333 h2 d2 x2) t0) (lift h2 d2 t3))))) (eq_ind_r T (lift h2 (S d2) x3) (\lambda
334 (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift h1 d1 x2) (lift
335 h1 (S d1) x3)) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) (lift
336 h2 d2 x2) t2) (lift h2 d2 t3))))) (ex_intro2 T (\lambda (t2: T).(eq T (THead
337 (Bind b) (lift h1 d1 x2) (lift h1 (S d1) x3)) (lift h1 d1 t2))) (\lambda (t2:
338 T).(eq T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3)) (lift h2 d2
339 t2))) (THead (Bind b) x2 x3) (eq_ind_r T (THead (Bind b) (lift h1 d1 x2)
340 (lift h1 (S d1) x3)) (\lambda (t2: T).(eq T (THead (Bind b) (lift h1 d1 x2)
341 (lift h1 (S d1) x3)) t2)) (refl_equal T (THead (Bind b) (lift h1 d1 x2) (lift
342 h1 (S d1) x3))) (lift h1 d1 (THead (Bind b) x2 x3)) (lift_bind b x2 x3 h1
343 d1)) (eq_ind_r T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3))
344 (\lambda (t2: T).(eq T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3))
345 t2)) (refl_equal T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3)))
346 (lift h2 d2 (THead (Bind b) x2 x3)) (lift_bind b x2 x3 h2 d2))) t0 H13) x1
347 H12)))) (H0 x1 h1 h2 (S d1) (S d2) (le_n_S d1 d2 H1) H11)))) t H9) x0 H8))))
348 (H x0 h1 h2 d1 d2 H1 H6)) x H5)))))) (lift_gen_bind b (lift h1 d1 t) (lift h1
349 (S d1) t0) x h2 (plus d2 h1) H4))))) (\lambda (f: F).(\lambda (H3: (eq T
350 (lift h1 d1 (THead (Flat f) t t0)) (lift h2 (plus d2 h1) x))).(let H4 \def
351 (eq_ind T (lift h1 d1 (THead (Flat f) t t0)) (\lambda (t2: T).(eq T t2 (lift
352 h2 (plus d2 h1) x))) H3 (THead (Flat f) (lift h1 d1 t) (lift h1 d1 t0))
353 (lift_flat f t t0 h1 d1)) in (ex3_2_ind T T (\lambda (y: T).(\lambda (z:
354 T).(eq T x (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T
355 (lift h1 d1 t) (lift h2 (plus d2 h1) y)))) (\lambda (_: T).(\lambda (z:
356 T).(eq T (lift h1 d1 t0) (lift h2 (plus d2 h1) z)))) (ex2 T (\lambda (t2:
357 T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (THead (Flat f) t t0)
358 (lift h2 d2 t2)))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H5: (eq T x
359 (THead (Flat f) x0 x1))).(\lambda (H6: (eq T (lift h1 d1 t) (lift h2 (plus d2
360 h1) x0))).(\lambda (H7: (eq T (lift h1 d1 t0) (lift h2 (plus d2 h1)
361 x1))).(eq_ind_r T (THead (Flat f) x0 x1) (\lambda (t2: T).(ex2 T (\lambda
362 (t3: T).(eq T t2 (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Flat f) t
363 t0) (lift h2 d2 t3))))) (ex2_ind T (\lambda (t2: T).(eq T x0 (lift h1 d1
364 t2))) (\lambda (t2: T).(eq T t (lift h2 d2 t2))) (ex2 T (\lambda (t2: T).(eq
365 T (THead (Flat f) x0 x1) (lift h1 d1 t2))) (\lambda (t2: T).(eq T (THead
366 (Flat f) t t0) (lift h2 d2 t2)))) (\lambda (x2: T).(\lambda (H8: (eq T x0
367 (lift h1 d1 x2))).(\lambda (H9: (eq T t (lift h2 d2 x2))).(eq_ind_r T (lift
368 h1 d1 x2) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Flat f) t2
369 x1) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Flat f) t t0) (lift h2
370 d2 t3))))) (eq_ind_r T (lift h2 d2 x2) (\lambda (t2: T).(ex2 T (\lambda (t3:
371 T).(eq T (THead (Flat f) (lift h1 d1 x2) x1) (lift h1 d1 t3))) (\lambda (t3:
372 T).(eq T (THead (Flat f) t2 t0) (lift h2 d2 t3))))) (ex2_ind T (\lambda (t2:
373 T).(eq T x1 (lift h1 d1 t2))) (\lambda (t2: T).(eq T t0 (lift h2 d2 t2)))
374 (ex2 T (\lambda (t2: T).(eq T (THead (Flat f) (lift h1 d1 x2) x1) (lift h1 d1
375 t2))) (\lambda (t2: T).(eq T (THead (Flat f) (lift h2 d2 x2) t0) (lift h2 d2
376 t2)))) (\lambda (x3: T).(\lambda (H10: (eq T x1 (lift h1 d1 x3))).(\lambda
377 (H11: (eq T t0 (lift h2 d2 x3))).(eq_ind_r T (lift h1 d1 x3) (\lambda (t2:
378 T).(ex2 T (\lambda (t3: T).(eq T (THead (Flat f) (lift h1 d1 x2) t2) (lift h1
379 d1 t3))) (\lambda (t3: T).(eq T (THead (Flat f) (lift h2 d2 x2) t0) (lift h2
380 d2 t3))))) (eq_ind_r T (lift h2 d2 x3) (\lambda (t2: T).(ex2 T (\lambda (t3:
381 T).(eq T (THead (Flat f) (lift h1 d1 x2) (lift h1 d1 x3)) (lift h1 d1 t3)))
382 (\lambda (t3: T).(eq T (THead (Flat f) (lift h2 d2 x2) t2) (lift h2 d2
383 t3))))) (ex_intro2 T (\lambda (t2: T).(eq T (THead (Flat f) (lift h1 d1 x2)
384 (lift h1 d1 x3)) (lift h1 d1 t2))) (\lambda (t2: T).(eq T (THead (Flat f)
385 (lift h2 d2 x2) (lift h2 d2 x3)) (lift h2 d2 t2))) (THead (Flat f) x2 x3)
386 (eq_ind_r T (THead (Flat f) (lift h1 d1 x2) (lift h1 d1 x3)) (\lambda (t2:
387 T).(eq T (THead (Flat f) (lift h1 d1 x2) (lift h1 d1 x3)) t2)) (refl_equal T
388 (THead (Flat f) (lift h1 d1 x2) (lift h1 d1 x3))) (lift h1 d1 (THead (Flat f)
389 x2 x3)) (lift_flat f x2 x3 h1 d1)) (eq_ind_r T (THead (Flat f) (lift h2 d2
390 x2) (lift h2 d2 x3)) (\lambda (t2: T).(eq T (THead (Flat f) (lift h2 d2 x2)
391 (lift h2 d2 x3)) t2)) (refl_equal T (THead (Flat f) (lift h2 d2 x2) (lift h2
392 d2 x3))) (lift h2 d2 (THead (Flat f) x2 x3)) (lift_flat f x2 x3 h2 d2))) t0
393 H11) x1 H10)))) (H0 x1 h1 h2 d1 d2 H1 H7)) t H9) x0 H8)))) (H x0 h1 h2 d1 d2
394 H1 H6)) x H5)))))) (lift_gen_flat f (lift h1 d1 t) (lift h1 d1 t0) x h2 (plus
395 d2 h1) H4))))) k H2))))))))))))) t1).
401 \forall (xs: TList).(\forall (ts: TList).(\forall (h: nat).(\forall (d:
402 nat).((eq TList (lifts h d xs) (lifts h d ts)) \to (eq TList xs ts)))))
404 \lambda (xs: TList).(TList_ind (\lambda (t: TList).(\forall (ts:
405 TList).(\forall (h: nat).(\forall (d: nat).((eq TList (lifts h d t) (lifts h
406 d ts)) \to (eq TList t ts)))))) (\lambda (ts: TList).(TList_ind (\lambda (t:
407 TList).(\forall (h: nat).(\forall (d: nat).((eq TList (lifts h d TNil) (lifts
408 h d t)) \to (eq TList TNil t))))) (\lambda (_: nat).(\lambda (_:
409 nat).(\lambda (_: (eq TList TNil TNil)).(refl_equal TList TNil)))) (\lambda
410 (t: T).(\lambda (t0: TList).(\lambda (_: ((\forall (h: nat).(\forall (d:
411 nat).((eq TList TNil (lifts h d t0)) \to (eq TList TNil t0)))))).(\lambda (h:
412 nat).(\lambda (d: nat).(\lambda (H0: (eq TList TNil (TCons (lift h d t)
413 (lifts h d t0)))).(let H1 \def (eq_ind TList TNil (\lambda (ee: TList).(match
414 ee in TList return (\lambda (_: TList).Prop) with [TNil \Rightarrow True |
415 (TCons _ _) \Rightarrow False])) I (TCons (lift h d t) (lifts h d t0)) H0) in
416 (False_ind (eq TList TNil (TCons t t0)) H1)))))))) ts)) (\lambda (t:
417 T).(\lambda (t0: TList).(\lambda (H: ((\forall (ts: TList).(\forall (h:
418 nat).(\forall (d: nat).((eq TList (lifts h d t0) (lifts h d ts)) \to (eq
419 TList t0 ts))))))).(\lambda (ts: TList).(TList_ind (\lambda (t1:
420 TList).(\forall (h: nat).(\forall (d: nat).((eq TList (lifts h d (TCons t
421 t0)) (lifts h d t1)) \to (eq TList (TCons t t0) t1))))) (\lambda (h:
422 nat).(\lambda (d: nat).(\lambda (H0: (eq TList (TCons (lift h d t) (lifts h d
423 t0)) TNil)).(let H1 \def (eq_ind TList (TCons (lift h d t) (lifts h d t0))
424 (\lambda (ee: TList).(match ee in TList return (\lambda (_: TList).Prop) with
425 [TNil \Rightarrow False | (TCons _ _) \Rightarrow True])) I TNil H0) in
426 (False_ind (eq TList (TCons t t0) TNil) H1))))) (\lambda (t1: T).(\lambda
427 (t2: TList).(\lambda (_: ((\forall (h: nat).(\forall (d: nat).((eq TList
428 (TCons (lift h d t) (lifts h d t0)) (lifts h d t2)) \to (eq TList (TCons t
429 t0) t2)))))).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: (eq TList
430 (TCons (lift h d t) (lifts h d t0)) (TCons (lift h d t1) (lifts h d
431 t2)))).(let H2 \def (f_equal TList T (\lambda (e: TList).(match e in TList
432 return (\lambda (_: TList).T) with [TNil \Rightarrow ((let rec lref_map (f:
433 ((nat \to nat))) (d0: nat) (t3: T) on t3: T \def (match t3 with [(TSort n)
434 \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d0) with
435 [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t4) \Rightarrow
436 (THead k (lref_map f d0 u) (lref_map f (s k d0) t4))]) in lref_map) (\lambda
437 (x: nat).(plus x h)) d t) | (TCons t3 _) \Rightarrow t3])) (TCons (lift h d
438 t) (lifts h d t0)) (TCons (lift h d t1) (lifts h d t2)) H1) in ((let H3 \def
439 (f_equal TList TList (\lambda (e: TList).(match e in TList return (\lambda
440 (_: TList).TList) with [TNil \Rightarrow ((let rec lifts (h0: nat) (d0: nat)
441 (ts0: TList) on ts0: TList \def (match ts0 with [TNil \Rightarrow TNil |
442 (TCons t3 ts1) \Rightarrow (TCons (lift h0 d0 t3) (lifts h0 d0 ts1))]) in
443 lifts) h d t0) | (TCons _ t3) \Rightarrow t3])) (TCons (lift h d t) (lifts h
444 d t0)) (TCons (lift h d t1) (lifts h d t2)) H1) in (\lambda (H4: (eq T (lift
445 h d t) (lift h d t1))).(eq_ind T t (\lambda (t3: T).(eq TList (TCons t t0)
446 (TCons t3 t2))) (f_equal2 T TList TList TCons t t t0 t2 (refl_equal T t) (H
447 t2 h d H3)) t1 (lift_inj t t1 h d H4)))) H2)))))))) ts))))) xs).
453 \forall (t: T).(\forall (h: nat).(\forall (k: nat).(\forall (d:
454 nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to (eq T (lift k e
455 (lift h d t)) (lift (plus k h) d t))))))))
457 \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: nat).(\forall (k:
458 nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to
459 (eq T (lift k e (lift h d t0)) (lift (plus k h) d t0))))))))) (\lambda (n:
460 nat).(\lambda (h: nat).(\lambda (k: nat).(\lambda (d: nat).(\lambda (e:
461 nat).(\lambda (_: (le e (plus d h))).(\lambda (_: (le d e)).(eq_ind_r T
462 (TSort n) (\lambda (t0: T).(eq T (lift k e t0) (lift (plus k h) d (TSort
463 n)))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq T t0 (lift (plus k h) d
464 (TSort n)))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq T (TSort n) t0))
465 (refl_equal T (TSort n)) (lift (plus k h) d (TSort n)) (lift_sort n (plus k
466 h) d)) (lift k e (TSort n)) (lift_sort n k e)) (lift h d (TSort n))
467 (lift_sort n h d))))))))) (\lambda (n: nat).(\lambda (h: nat).(\lambda (k:
468 nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H: (le e (plus d
469 h))).(\lambda (H0: (le d e)).(lt_le_e n d (eq T (lift k e (lift h d (TLRef
470 n))) (lift (plus k h) d (TLRef n))) (\lambda (H1: (lt n d)).(eq_ind_r T
471 (TLRef n) (\lambda (t0: T).(eq T (lift k e t0) (lift (plus k h) d (TLRef
472 n)))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (lift (plus k h) d
473 (TLRef n)))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) t0))
474 (refl_equal T (TLRef n)) (lift (plus k h) d (TLRef n)) (lift_lref_lt n (plus
475 k h) d H1)) (lift k e (TLRef n)) (lift_lref_lt n k e (lt_le_trans n d e H1
476 H0))) (lift h d (TLRef n)) (lift_lref_lt n h d H1))) (\lambda (H1: (le d
477 n)).(eq_ind_r T (TLRef (plus n h)) (\lambda (t0: T).(eq T (lift k e t0) (lift
478 (plus k h) d (TLRef n)))) (eq_ind_r T (TLRef (plus (plus n h) k)) (\lambda
479 (t0: T).(eq T t0 (lift (plus k h) d (TLRef n)))) (eq_ind_r T (TLRef (plus n
480 (plus k h))) (\lambda (t0: T).(eq T (TLRef (plus (plus n h) k)) t0)) (f_equal
481 nat T TLRef (plus (plus n h) k) (plus n (plus k h))
482 (plus_permute_2_in_3_assoc n h k)) (lift (plus k h) d (TLRef n))
483 (lift_lref_ge n (plus k h) d H1)) (lift k e (TLRef (plus n h))) (lift_lref_ge
484 (plus n h) k e (le_trans e (plus d h) (plus n h) H (le_plus_plus d n h h H1
485 (le_n h))))) (lift h d (TLRef n)) (lift_lref_ge n h d H1))))))))))) (\lambda
486 (k: K).(\lambda (t0: T).(\lambda (H: ((\forall (h: nat).(\forall (k0:
487 nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to
488 (eq T (lift k0 e (lift h d t0)) (lift (plus k0 h) d t0)))))))))).(\lambda
489 (t1: T).(\lambda (H0: ((\forall (h: nat).(\forall (k0: nat).(\forall (d:
490 nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to (eq T (lift k0 e
491 (lift h d t1)) (lift (plus k0 h) d t1)))))))))).(\lambda (h: nat).(\lambda
492 (k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le e (plus d
493 h))).(\lambda (H2: (le d e)).(eq_ind_r T (THead k (lift h d t0) (lift h (s k
494 d) t1)) (\lambda (t2: T).(eq T (lift k0 e t2) (lift (plus k0 h) d (THead k t0
495 t1)))) (eq_ind_r T (THead k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift
496 h (s k d) t1))) (\lambda (t2: T).(eq T t2 (lift (plus k0 h) d (THead k t0
497 t1)))) (eq_ind_r T (THead k (lift (plus k0 h) d t0) (lift (plus k0 h) (s k d)
498 t1)) (\lambda (t2: T).(eq T (THead k (lift k0 e (lift h d t0)) (lift k0 (s k
499 e) (lift h (s k d) t1))) t2)) (f_equal3 K T T T THead k k (lift k0 e (lift h
500 d t0)) (lift (plus k0 h) d t0) (lift k0 (s k e) (lift h (s k d) t1)) (lift
501 (plus k0 h) (s k d) t1) (refl_equal K k) (H h k0 d e H1 H2) (H0 h k0 (s k d)
502 (s k e) (eq_ind nat (s k (plus d h)) (\lambda (n: nat).(le (s k e) n)) (s_le
503 k e (plus d h) H1) (plus (s k d) h) (s_plus k d h)) (s_le k d e H2))) (lift
504 (plus k0 h) d (THead k t0 t1)) (lift_head k t0 t1 (plus k0 h) d)) (lift k0 e
505 (THead k (lift h d t0) (lift h (s k d) t1))) (lift_head k (lift h d t0) (lift
506 h (s k d) t1) k0 e)) (lift h d (THead k t0 t1)) (lift_head k t0 t1 h
513 \forall (t: T).(\forall (h: nat).(\forall (k: nat).(\forall (d:
514 nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k d) (lift k e t))
515 (lift k e (lift h d t))))))))
517 \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: nat).(\forall (k:
518 nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k
519 d) (lift k e t0)) (lift k e (lift h d t0))))))))) (\lambda (n: nat).(\lambda
520 (h: nat).(\lambda (k: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (_:
521 (le e d)).(eq_ind_r T (TSort n) (\lambda (t0: T).(eq T (lift h (plus k d) t0)
522 (lift k e (lift h d (TSort n))))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq
523 T t0 (lift k e (lift h d (TSort n))))) (eq_ind_r T (TSort n) (\lambda (t0:
524 T).(eq T (TSort n) (lift k e t0))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq
525 T (TSort n) t0)) (refl_equal T (TSort n)) (lift k e (TSort n)) (lift_sort n k
526 e)) (lift h d (TSort n)) (lift_sort n h d)) (lift h (plus k d) (TSort n))
527 (lift_sort n h (plus k d))) (lift k e (TSort n)) (lift_sort n k e))))))))
528 (\lambda (n: nat).(\lambda (h: nat).(\lambda (k: nat).(\lambda (d:
529 nat).(\lambda (e: nat).(\lambda (H: (le e d)).(lt_le_e n e (eq T (lift h
530 (plus k d) (lift k e (TLRef n))) (lift k e (lift h d (TLRef n)))) (\lambda
531 (H0: (lt n e)).(let H1 \def (lt_le_trans n e d H0 H) in (eq_ind_r T (TLRef n)
532 (\lambda (t0: T).(eq T (lift h (plus k d) t0) (lift k e (lift h d (TLRef
533 n))))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (lift k e (lift h d
534 (TLRef n))))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) (lift k
535 e t0))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) t0))
536 (refl_equal T (TLRef n)) (lift k e (TLRef n)) (lift_lref_lt n k e H0)) (lift
537 h d (TLRef n)) (lift_lref_lt n h d H1)) (lift h (plus k d) (TLRef n))
538 (lift_lref_lt n h (plus k d) (lt_le_trans n d (plus k d) H1 (le_plus_r k
539 d)))) (lift k e (TLRef n)) (lift_lref_lt n k e H0)))) (\lambda (H0: (le e
540 n)).(eq_ind_r T (TLRef (plus n k)) (\lambda (t0: T).(eq T (lift h (plus k d)
541 t0) (lift k e (lift h d (TLRef n))))) (eq_ind_r nat (plus d k) (\lambda (n0:
542 nat).(eq T (lift h n0 (TLRef (plus n k))) (lift k e (lift h d (TLRef n)))))
543 (lt_le_e n d (eq T (lift h (plus d k) (TLRef (plus n k))) (lift k e (lift h d
544 (TLRef n)))) (\lambda (H1: (lt n d)).(eq_ind_r T (TLRef (plus n k)) (\lambda
545 (t0: T).(eq T t0 (lift k e (lift h d (TLRef n))))) (eq_ind_r T (TLRef n)
546 (\lambda (t0: T).(eq T (TLRef (plus n k)) (lift k e t0))) (eq_ind_r T (TLRef
547 (plus n k)) (\lambda (t0: T).(eq T (TLRef (plus n k)) t0)) (refl_equal T
548 (TLRef (plus n k))) (lift k e (TLRef n)) (lift_lref_ge n k e H0)) (lift h d
549 (TLRef n)) (lift_lref_lt n h d H1)) (lift h (plus d k) (TLRef (plus n k)))
550 (lift_lref_lt (plus n k) h (plus d k) (lt_reg_r n d k H1)))) (\lambda (H1:
551 (le d n)).(eq_ind_r T (TLRef (plus (plus n k) h)) (\lambda (t0: T).(eq T t0
552 (lift k e (lift h d (TLRef n))))) (eq_ind_r T (TLRef (plus n h)) (\lambda
553 (t0: T).(eq T (TLRef (plus (plus n k) h)) (lift k e t0))) (eq_ind_r T (TLRef
554 (plus (plus n h) k)) (\lambda (t0: T).(eq T (TLRef (plus (plus n k) h)) t0))
555 (f_equal nat T TLRef (plus (plus n k) h) (plus (plus n h) k) (sym_eq nat
556 (plus (plus n h) k) (plus (plus n k) h) (plus_permute_2_in_3 n h k))) (lift k
557 e (TLRef (plus n h))) (lift_lref_ge (plus n h) k e (le_plus_trans e n h H0)))
558 (lift h d (TLRef n)) (lift_lref_ge n h d H1)) (lift h (plus d k) (TLRef (plus
559 n k))) (lift_lref_ge (plus n k) h (plus d k) (le_plus_plus d n k k H1 (le_n
560 k)))))) (plus k d) (plus_sym k d)) (lift k e (TLRef n)) (lift_lref_ge n k e
561 H0)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda (H: ((\forall (h:
562 nat).(\forall (k0: nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq
563 T (lift h (plus k0 d) (lift k0 e t0)) (lift k0 e (lift h d
564 t0)))))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (h: nat).(\forall (k0:
565 nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k0
566 d) (lift k0 e t1)) (lift k0 e (lift h d t1)))))))))).(\lambda (h:
567 nat).(\lambda (k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le
568 e d)).(eq_ind_r T (THead k (lift k0 e t0) (lift k0 (s k e) t1)) (\lambda (t2:
569 T).(eq T (lift h (plus k0 d) t2) (lift k0 e (lift h d (THead k t0 t1)))))
570 (eq_ind_r T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h (s k (plus
571 k0 d)) (lift k0 (s k e) t1))) (\lambda (t2: T).(eq T t2 (lift k0 e (lift h d
572 (THead k t0 t1))))) (eq_ind_r T (THead k (lift h d t0) (lift h (s k d) t1))
573 (\lambda (t2: T).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h
574 (s k (plus k0 d)) (lift k0 (s k e) t1))) (lift k0 e t2))) (eq_ind_r T (THead
575 k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift h (s k d) t1))) (\lambda
576 (t2: T).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h (s k (plus
577 k0 d)) (lift k0 (s k e) t1))) t2)) (eq_ind_r nat (plus k0 (s k d)) (\lambda
578 (n: nat).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h n (lift
579 k0 (s k e) t1))) (THead k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift h
580 (s k d) t1))))) (f_equal3 K T T T THead k k (lift h (plus k0 d) (lift k0 e
581 t0)) (lift k0 e (lift h d t0)) (lift h (plus k0 (s k d)) (lift k0 (s k e)
582 t1)) (lift k0 (s k e) (lift h (s k d) t1)) (refl_equal K k) (H h k0 d e H1)
583 (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
584 d)) (lift k0 e (THead k (lift h d t0) (lift h (s k d) t1))) (lift_head k
585 (lift h d t0) (lift h (s k d) t1) k0 e)) (lift h d (THead k t0 t1))
586 (lift_head k t0 t1 h d)) (lift h (plus k0 d) (THead k (lift k0 e t0) (lift k0
587 (s k e) t1))) (lift_head k (lift k0 e t0) (lift k0 (s k e) t1) h (plus k0
588 d))) (lift k0 e (THead k t0 t1)) (lift_head k t0 t1 k0 e)))))))))))) t).