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/lift/props".
19 include "lift/fwd.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 k _ _) \Rightarrow k]))
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 _ t _)
50 \Rightarrow t])) (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1) H1)
51 in ((let H4 \def (f_equal T T (\lambda (e: T).(match e in T return (\lambda
52 (_: T).T) with [(TSort _) \Rightarrow (THead k0 ((let rec lref_map (f: ((nat
53 \to nat))) (d: nat) (t: T) on t: T \def (match t with [(TSort n) \Rightarrow
54 (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d) with [true
55 \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow
56 (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda
57 (x: nat).(plus x h)) d t0) ((let rec lref_map (f: ((nat \to nat))) (d: nat)
58 (t: T) on t: T \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef
59 i) \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | false
60 \Rightarrow (f i)])) | (THead k u t0) \Rightarrow (THead k (lref_map f d u)
61 (lref_map f (s k d) t0))]) in lref_map) (\lambda (x: nat).(plus x h)) (s k0
62 d) t1)) | (TLRef _) \Rightarrow (THead k0 ((let rec lref_map (f: ((nat \to
63 nat))) (d: nat) (t: T) on t: T \def (match t with [(TSort n) \Rightarrow
64 (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d) with [true
65 \Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow
66 (THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda
67 (x: nat).(plus x h)) d t0) ((let rec lref_map (f: ((nat \to nat))) (d: nat)
68 (t: T) on t: T \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef
69 i) \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | false
70 \Rightarrow (f i)])) | (THead k u t0) \Rightarrow (THead k (lref_map f d u)
71 (lref_map f (s k d) t0))]) in lref_map) (\lambda (x: nat).(plus x h)) (s k0
72 d) t1)) | (THead _ _ t) \Rightarrow t])) (THead k v (lift h d (THead k0 t0
73 t1))) (THead k0 t0 t1) H1) in (\lambda (_: (eq T v t0)).(\lambda (H6: (eq K k
74 k0)).(let H7 \def (eq_ind K k (\lambda (k: K).(\forall (v: T).(\forall (h:
75 nat).(\forall (d: nat).((eq T (THead k v (lift h d t1)) t1) \to (\forall (P:
76 Prop).P)))))) H0 k0 H6) in (let H8 \def (eq_ind T (lift h d (THead k0 t0 t1))
77 (\lambda (t: T).(eq T t t1)) H4 (THead k0 (lift h d t0) (lift h (s k0 d) t1))
78 (lift_head k0 t0 t1 h d)) in (H7 (lift h d t0) h (s k0 d) H8 P)))))) H3))
82 \forall (t: T).(\forall (d: nat).(eq T (lift O d t) t))
84 \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (d: nat).(eq T (lift O d t0)
85 t0))) (\lambda (n: nat).(\lambda (_: nat).(refl_equal T (TSort n)))) (\lambda
86 (n: nat).(\lambda (d: nat).(lt_le_e n d (eq T (lift O d (TLRef n)) (TLRef n))
87 (\lambda (H: (lt n d)).(eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (TLRef
88 n))) (refl_equal T (TLRef n)) (lift O d (TLRef n)) (lift_lref_lt n O d H)))
89 (\lambda (H: (le d n)).(eq_ind_r T (TLRef (plus n O)) (\lambda (t0: T).(eq T
90 t0 (TLRef n))) (f_equal nat T TLRef (plus n O) n (sym_eq nat n (plus n O)
91 (plus_n_O n))) (lift O d (TLRef n)) (lift_lref_ge n O d H)))))) (\lambda (k:
92 K).(\lambda (t0: T).(\lambda (H: ((\forall (d: nat).(eq T (lift O d t0)
93 t0)))).(\lambda (t1: T).(\lambda (H0: ((\forall (d: nat).(eq T (lift O d t1)
94 t1)))).(\lambda (d: nat).(eq_ind_r T (THead k (lift O d t0) (lift O (s k d)
95 t1)) (\lambda (t2: T).(eq T t2 (THead k t0 t1))) (sym_equal T (THead k t0 t1)
96 (THead k (lift O d t0) (lift O (s k d) t1)) (sym_equal T (THead k (lift O d
97 t0) (lift O (s k d) t1)) (THead k t0 t1) (sym_equal T (THead k t0 t1) (THead
98 k (lift O d t0) (lift O (s k d) t1)) (f_equal3 K T T T THead k k t0 (lift O d
99 t0) t1 (lift O (s k d) t1) (refl_equal K k) (sym_eq T (lift O d t0) t0 (H d))
100 (sym_eq T (lift O (s k d) t1) t1 (H0 (s k d))))))) (lift O d (THead k t0 t1))
101 (lift_head k t0 t1 O d)))))))) t).
103 theorem lift_lref_gt:
104 \forall (d: nat).(\forall (n: nat).((lt d n) \to (eq T (lift (S O) d (TLRef
105 (pred n))) (TLRef n))))
107 \lambda (d: nat).(\lambda (n: nat).(\lambda (H: (lt d n)).(eq_ind_r T (TLRef
108 (plus (pred n) (S O))) (\lambda (t: T).(eq T t (TLRef n))) (eq_ind nat (plus
109 (S O) (pred n)) (\lambda (n0: nat).(eq T (TLRef n0) (TLRef n))) (eq_ind nat n
110 (\lambda (n0: nat).(eq T (TLRef n0) (TLRef n))) (refl_equal T (TLRef n)) (S
111 (pred n)) (S_pred n d H)) (plus (pred n) (S O)) (plus_comm (S O) (pred n)))
112 (lift (S O) d (TLRef (pred n))) (lift_lref_ge (pred n) (S O) d (le_S_n d
113 (pred n) (eq_ind nat n (\lambda (n0: nat).(le (S d) n0)) H (S (pred n))
114 (S_pred n d H))))))).
117 \forall (x: T).(\forall (t: T).(\forall (h: nat).(\forall (d: nat).((eq T
118 (lift h d x) (lift h d t)) \to (eq T x t)))))
120 \lambda (x: T).(T_ind (\lambda (t: T).(\forall (t0: T).(\forall (h:
121 nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to (eq T t
122 t0)))))) (\lambda (n: nat).(\lambda (t: T).(\lambda (h: nat).(\lambda (d:
123 nat).(\lambda (H: (eq T (lift h d (TSort n)) (lift h d t))).(let H0 \def
124 (eq_ind T (lift h d (TSort n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H
125 (TSort n) (lift_sort n h d)) in (sym_eq T t (TSort n) (lift_gen_sort h d n t
126 H0)))))))) (\lambda (n: nat).(\lambda (t: T).(\lambda (h: nat).(\lambda (d:
127 nat).(\lambda (H: (eq T (lift h d (TLRef n)) (lift h d t))).(lt_le_e n d (eq
128 T (TLRef n) t) (\lambda (H0: (lt n d)).(let H1 \def (eq_ind T (lift h d
129 (TLRef n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H (TLRef n) (lift_lref_lt
130 n h d H0)) in (sym_eq T t (TLRef n) (lift_gen_lref_lt h d n (lt_le_trans n d
131 d H0 (le_n d)) t H1)))) (\lambda (H0: (le d n)).(let H1 \def (eq_ind T (lift
132 h d (TLRef n)) (\lambda (t0: T).(eq T t0 (lift h d t))) H (TLRef (plus n h))
133 (lift_lref_ge n h d H0)) in (sym_eq T t (TLRef n) (lift_gen_lref_ge h d n H0
134 t H1)))))))))) (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (t:
135 T).(((\forall (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t)
136 (lift h d t0)) \to (eq T t t0)))))) \to (\forall (t0: T).(((\forall (t:
137 T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t)) \to
138 (eq T t0 t)))))) \to (\forall (t1: T).(\forall (h: nat).(\forall (d:
139 nat).((eq T (lift h d (THead k0 t t0)) (lift h d t1)) \to (eq T (THead k0 t
140 t0) t1)))))))))) (\lambda (b: B).(\lambda (t: T).(\lambda (H: ((\forall (t0:
141 T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to
142 (eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (t: T).(\forall
143 (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t)) \to (eq T t0
144 t))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1:
145 (eq T (lift h d (THead (Bind b) t t0)) (lift h d t1))).(let H2 \def (eq_ind T
146 (lift h d (THead (Bind b) t t0)) (\lambda (t: T).(eq T t (lift h d t1))) H1
147 (THead (Bind b) (lift h d t) (lift h (S d) t0)) (lift_bind b t t0 h d)) in
148 (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T t1 (THead (Bind b) y
149 z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t) (lift h d y))))
150 (\lambda (_: T).(\lambda (z: T).(eq T (lift h (S d) t0) (lift h (S d) z))))
151 (eq T (THead (Bind b) t t0) t1) (\lambda (x0: T).(\lambda (x1: T).(\lambda
152 (H3: (eq T t1 (THead (Bind b) x0 x1))).(\lambda (H4: (eq T (lift h d t) (lift
153 h d x0))).(\lambda (H5: (eq T (lift h (S d) t0) (lift h (S d) x1))).(eq_ind_r
154 T (THead (Bind b) x0 x1) (\lambda (t2: T).(eq T (THead (Bind b) t t0) t2))
155 (sym_equal T (THead (Bind b) x0 x1) (THead (Bind b) t t0) (sym_equal T (THead
156 (Bind b) t t0) (THead (Bind b) x0 x1) (sym_equal T (THead (Bind b) x0 x1)
157 (THead (Bind b) t t0) (f_equal3 K T T T THead (Bind b) (Bind b) x0 t x1 t0
158 (refl_equal K (Bind b)) (sym_eq T t x0 (H x0 h d H4)) (sym_eq T t0 x1 (H0 x1
159 h (S d) H5)))))) t1 H3)))))) (lift_gen_bind b (lift h d t) (lift h (S d) t0)
160 t1 h d H2)))))))))))) (\lambda (f: F).(\lambda (t: T).(\lambda (H: ((\forall
161 (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) (lift h d
162 t0)) \to (eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (t:
163 T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t)) \to
164 (eq T t0 t))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d:
165 nat).(\lambda (H1: (eq T (lift h d (THead (Flat f) t t0)) (lift h d
166 t1))).(let H2 \def (eq_ind T (lift h d (THead (Flat f) t t0)) (\lambda (t:
167 T).(eq T t (lift h d t1))) H1 (THead (Flat f) (lift h d t) (lift h d t0))
168 (lift_flat f t t0 h d)) in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq
169 T t1 (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d
170 t) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h d t0) (lift
171 h d z)))) (eq T (THead (Flat f) t t0) t1) (\lambda (x0: T).(\lambda (x1:
172 T).(\lambda (H3: (eq T t1 (THead (Flat f) x0 x1))).(\lambda (H4: (eq T (lift
173 h d t) (lift h d x0))).(\lambda (H5: (eq T (lift h d t0) (lift h d
174 x1))).(eq_ind_r T (THead (Flat f) x0 x1) (\lambda (t2: T).(eq T (THead (Flat
175 f) t t0) t2)) (sym_equal T (THead (Flat f) x0 x1) (THead (Flat f) t t0)
176 (sym_equal T (THead (Flat f) t t0) (THead (Flat f) x0 x1) (sym_equal T (THead
177 (Flat f) x0 x1) (THead (Flat f) t t0) (f_equal3 K T T T THead (Flat f) (Flat
178 f) x0 t x1 t0 (refl_equal K (Flat f)) (sym_eq T t x0 (H x0 h d H4)) (sym_eq T
179 t0 x1 (H0 x1 h d H5)))))) t1 H3)))))) (lift_gen_flat f (lift h d t) (lift h d
180 t0) t1 h d H2)))))))))))) k)) x).
182 theorem lift_gen_lift:
183 \forall (t1: T).(\forall (x: T).(\forall (h1: nat).(\forall (h2:
184 nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift h1 d1
185 t1) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1
186 t2))) (\lambda (t2: T).(eq T t1 (lift h2 d2 t2)))))))))))
188 \lambda (t1: T).(T_ind (\lambda (t: T).(\forall (x: T).(\forall (h1:
189 nat).(\forall (h2: nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to
190 ((eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2:
191 T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 d2
192 t2)))))))))))) (\lambda (n: nat).(\lambda (x: T).(\lambda (h1: nat).(\lambda
193 (h2: nat).(\lambda (d1: nat).(\lambda (d2: nat).(\lambda (_: (le d1
194 d2)).(\lambda (H0: (eq T (lift h1 d1 (TSort n)) (lift h2 (plus d2 h1)
195 x))).(let H1 \def (eq_ind T (lift h1 d1 (TSort n)) (\lambda (t: T).(eq T t
196 (lift h2 (plus d2 h1) x))) H0 (TSort n) (lift_sort n h1 d1)) in (eq_ind_r T
197 (TSort n) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift h1 d1 t2)))
198 (\lambda (t2: T).(eq T (TSort n) (lift h2 d2 t2))))) (ex_intro2 T (\lambda
199 (t2: T).(eq T (TSort n) (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TSort n)
200 (lift h2 d2 t2))) (TSort n) (eq_ind_r T (TSort n) (\lambda (t: T).(eq T
201 (TSort n) t)) (refl_equal T (TSort n)) (lift h1 d1 (TSort n)) (lift_sort n h1
202 d1)) (eq_ind_r T (TSort n) (\lambda (t: T).(eq T (TSort n) t)) (refl_equal T
203 (TSort n)) (lift h2 d2 (TSort n)) (lift_sort n h2 d2))) x (lift_gen_sort h2
204 (plus d2 h1) n x H1))))))))))) (\lambda (n: nat).(\lambda (x: T).(\lambda
205 (h1: nat).(\lambda (h2: nat).(\lambda (d1: nat).(\lambda (d2: nat).(\lambda
206 (H: (le d1 d2)).(\lambda (H0: (eq T (lift h1 d1 (TLRef n)) (lift h2 (plus d2
207 h1) x))).(lt_le_e n d1 (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 t2)))
208 (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2)))) (\lambda (H1: (lt n
209 d1)).(let H2 \def (eq_ind T (lift h1 d1 (TLRef n)) (\lambda (t: T).(eq T t
210 (lift h2 (plus d2 h1) x))) H0 (TLRef n) (lift_lref_lt n h1 d1 H1)) in
211 (eq_ind_r T (TLRef n) (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift
212 h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))))) (ex_intro2 T
213 (\lambda (t2: T).(eq T (TLRef n) (lift h1 d1 t2))) (\lambda (t2: T).(eq T
214 (TLRef n) (lift h2 d2 t2))) (TLRef n) (eq_ind_r T (TLRef n) (\lambda (t:
215 T).(eq T (TLRef n) t)) (refl_equal T (TLRef n)) (lift h1 d1 (TLRef n))
216 (lift_lref_lt n h1 d1 H1)) (eq_ind_r T (TLRef n) (\lambda (t: T).(eq T (TLRef
217 n) t)) (refl_equal T (TLRef n)) (lift h2 d2 (TLRef n)) (lift_lref_lt n h2 d2
218 (lt_le_trans n d1 d2 H1 H)))) x (lift_gen_lref_lt h2 (plus d2 h1) n
219 (lt_le_trans n d1 (plus d2 h1) H1 (le_plus_trans d1 d2 h1 H)) x H2))))
220 (\lambda (H1: (le d1 n)).(let H2 \def (eq_ind T (lift h1 d1 (TLRef n))
221 (\lambda (t: T).(eq T t (lift h2 (plus d2 h1) x))) H0 (TLRef (plus n h1))
222 (lift_lref_ge n h1 d1 H1)) in (lt_le_e n d2 (ex2 T (\lambda (t2: T).(eq T x
223 (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))))
224 (\lambda (H3: (lt n d2)).(eq_ind_r T (TLRef (plus n h1)) (\lambda (t: T).(ex2
225 T (\lambda (t2: T).(eq T t (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n)
226 (lift h2 d2 t2))))) (ex_intro2 T (\lambda (t2: T).(eq T (TLRef (plus n h1))
227 (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2))) (TLRef
228 n) (eq_ind_r T (TLRef (plus n h1)) (\lambda (t: T).(eq T (TLRef (plus n h1))
229 t)) (refl_equal T (TLRef (plus n h1))) (lift h1 d1 (TLRef n)) (lift_lref_ge n
230 h1 d1 H1)) (eq_ind_r T (TLRef n) (\lambda (t: T).(eq T (TLRef n) t))
231 (refl_equal T (TLRef n)) (lift h2 d2 (TLRef n)) (lift_lref_lt n h2 d2 H3))) x
232 (lift_gen_lref_lt h2 (plus d2 h1) (plus n h1) (plus_lt_compat_r n d2 h1 H3) x
233 H2))) (\lambda (H3: (le d2 n)).(lt_le_e n (plus d2 h2) (ex2 T (\lambda (t2:
234 T).(eq T x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2
235 t2)))) (\lambda (H4: (lt n (plus d2 h2))).(lift_gen_lref_false h2 (plus d2
236 h1) (plus n h1) (le_S_n (plus d2 h1) (plus n h1) (lt_le_S (plus d2 h1) (S
237 (plus n h1)) (le_lt_n_Sm (plus d2 h1) (plus n h1) (plus_le_compat d2 n h1 h1
238 H3 (le_n h1))))) (eq_ind_r nat (plus (plus d2 h2) h1) (\lambda (n0: nat).(lt
239 (plus n h1) n0)) (lt_le_S (plus n h1) (plus (plus d2 h2) h1)
240 (plus_lt_compat_r n (plus d2 h2) h1 H4)) (plus (plus d2 h1) h2)
241 (plus_permute_2_in_3 d2 h1 h2)) x H2 (ex2 T (\lambda (t2: T).(eq T x (lift h1
242 d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2)))))) (\lambda (H4:
243 (le (plus d2 h2) n)).(let H5 \def (eq_ind nat (plus n h1) (\lambda (n:
244 nat).(eq T (TLRef n) (lift h2 (plus d2 h1) x))) H2 (plus (minus (plus n h1)
245 h2) h2) (le_plus_minus_sym h2 (plus n h1) (le_plus_trans h2 n h1
246 (le_trans_plus_r d2 h2 n H4)))) in (eq_ind_r T (TLRef (minus (plus n h1) h2))
247 (\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift h1 d1 t2))) (\lambda
248 (t2: T).(eq T (TLRef n) (lift h2 d2 t2))))) (ex_intro2 T (\lambda (t2: T).(eq
249 T (TLRef (minus (plus n h1) h2)) (lift h1 d1 t2))) (\lambda (t2: T).(eq T
250 (TLRef n) (lift h2 d2 t2))) (TLRef (minus n h2)) (eq_ind_r nat (plus (minus n
251 h2) h1) (\lambda (n0: nat).(eq T (TLRef n0) (lift h1 d1 (TLRef (minus n
252 h2))))) (eq_ind_r T (TLRef (plus (minus n h2) h1)) (\lambda (t: T).(eq T
253 (TLRef (plus (minus n h2) h1)) t)) (refl_equal T (TLRef (plus (minus n h2)
254 h1))) (lift h1 d1 (TLRef (minus n h2))) (lift_lref_ge (minus n h2) h1 d1
255 (le_trans d1 d2 (minus n h2) H (le_minus d2 n h2 H4)))) (minus (plus n h1)
256 h2) (le_minus_plus h2 n (le_trans_plus_r d2 h2 n H4) h1)) (eq_ind_r nat (plus
257 (minus n h2) h2) (\lambda (n0: nat).(eq T (TLRef n0) (lift h2 d2 (TLRef
258 (minus n0 h2))))) (eq_ind_r T (TLRef (plus (minus (plus (minus n h2) h2) h2)
259 h2)) (\lambda (t: T).(eq T (TLRef (plus (minus n h2) h2)) t)) (f_equal nat T
260 TLRef (plus (minus n h2) h2) (plus (minus (plus (minus n h2) h2) h2) h2)
261 (f_equal2 nat nat nat plus (minus n h2) (minus (plus (minus n h2) h2) h2) h2
262 h2 (sym_eq nat (minus (plus (minus n h2) h2) h2) (minus n h2) (minus_plus_r
263 (minus n h2) h2)) (refl_equal nat h2))) (lift h2 d2 (TLRef (minus (plus
264 (minus n h2) h2) h2))) (lift_lref_ge (minus (plus (minus n h2) h2) h2) h2 d2
265 (le_minus d2 (plus (minus n h2) h2) h2 (plus_le_compat d2 (minus n h2) h2 h2
266 (le_minus d2 n h2 H4) (le_n h2))))) n (le_plus_minus_sym h2 n
267 (le_trans_plus_r d2 h2 n H4)))) x (lift_gen_lref_ge h2 (plus d2 h1) (minus
268 (plus n h1) h2) (arith0 h2 d2 n H4 h1) x H5)))))))))))))))))) (\lambda (k:
269 K).(\lambda (t: T).(\lambda (H: ((\forall (x: T).(\forall (h1: nat).(\forall
270 (h2: nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift
271 h1 d1 t) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift
272 h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2 d2 t2))))))))))))).(\lambda
273 (t0: T).(\lambda (H0: ((\forall (x: T).(\forall (h1: nat).(\forall (h2:
274 nat).(\forall (d1: nat).(\forall (d2: nat).((le d1 d2) \to ((eq T (lift h1 d1
275 t0) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1
276 t2))) (\lambda (t2: T).(eq T t0 (lift h2 d2 t2))))))))))))).(\lambda (x:
277 T).(\lambda (h1: nat).(\lambda (h2: nat).(\lambda (d1: nat).(\lambda (d2:
278 nat).(\lambda (H1: (le d1 d2)).(\lambda (H2: (eq T (lift h1 d1 (THead k t
279 t0)) (lift h2 (plus d2 h1) x))).(K_ind (\lambda (k0: K).((eq T (lift h1 d1
280 (THead k0 t t0)) (lift h2 (plus d2 h1) x)) \to (ex2 T (\lambda (t2: T).(eq T
281 x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (THead k0 t t0) (lift h2 d2
282 t2)))))) (\lambda (b: B).(\lambda (H3: (eq T (lift h1 d1 (THead (Bind b) t
283 t0)) (lift h2 (plus d2 h1) x))).(let H4 \def (eq_ind T (lift h1 d1 (THead
284 (Bind b) t t0)) (\lambda (t: T).(eq T t (lift h2 (plus d2 h1) x))) H3 (THead
285 (Bind b) (lift h1 d1 t) (lift h1 (S d1) t0)) (lift_bind b t t0 h1 d1)) in
286 (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Bind b) y
287 z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h1 d1 t) (lift h2 (plus d2
288 h1) y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h1 (S d1) t0) (lift h2
289 (S (plus d2 h1)) z)))) (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 t2)))
290 (\lambda (t2: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t2)))) (\lambda (x0:
291 T).(\lambda (x1: T).(\lambda (H5: (eq T x (THead (Bind b) x0 x1))).(\lambda
292 (H6: (eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x0))).(\lambda (H7: (eq T
293 (lift h1 (S d1) t0) (lift h2 (S (plus d2 h1)) x1))).(eq_ind_r T (THead (Bind
294 b) x0 x1) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h1 d1 t3)))
295 (\lambda (t3: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t3))))) (ex2_ind T
296 (\lambda (t2: T).(eq T x0 (lift h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2
297 d2 t2))) (ex2 T (\lambda (t2: T).(eq T (THead (Bind b) x0 x1) (lift h1 d1
298 t2))) (\lambda (t2: T).(eq T (THead (Bind b) t t0) (lift h2 d2 t2))))
299 (\lambda (x2: T).(\lambda (H8: (eq T x0 (lift h1 d1 x2))).(\lambda (H9: (eq T
300 t (lift h2 d2 x2))).(eq_ind_r T (lift h1 d1 x2) (\lambda (t2: T).(ex2 T
301 (\lambda (t3: T).(eq T (THead (Bind b) t2 x1) (lift h1 d1 t3))) (\lambda (t3:
302 T).(eq T (THead (Bind b) t t0) (lift h2 d2 t3))))) (eq_ind_r T (lift h2 d2
303 x2) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift h1
304 d1 x2) x1) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) t2 t0)
305 (lift h2 d2 t3))))) (let H10 \def (refl_equal nat (plus (S d2) h1)) in (let
306 H11 \def (eq_ind nat (S (plus d2 h1)) (\lambda (n: nat).(eq T (lift h1 (S d1)
307 t0) (lift h2 n x1))) H7 (plus (S d2) h1) H10) in (ex2_ind T (\lambda (t2:
308 T).(eq T x1 (lift h1 (S d1) t2))) (\lambda (t2: T).(eq T t0 (lift h2 (S d2)
309 t2))) (ex2 T (\lambda (t2: T).(eq T (THead (Bind b) (lift h1 d1 x2) x1) (lift
310 h1 d1 t2))) (\lambda (t2: T).(eq T (THead (Bind b) (lift h2 d2 x2) t0) (lift
311 h2 d2 t2)))) (\lambda (x3: T).(\lambda (H12: (eq T x1 (lift h1 (S d1)
312 x3))).(\lambda (H13: (eq T t0 (lift h2 (S d2) x3))).(eq_ind_r T (lift h1 (S
313 d1) x3) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift
314 h1 d1 x2) t2) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) (lift
315 h2 d2 x2) t0) (lift h2 d2 t3))))) (eq_ind_r T (lift h2 (S d2) x3) (\lambda
316 (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Bind b) (lift h1 d1 x2) (lift
317 h1 (S d1) x3)) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Bind b) (lift
318 h2 d2 x2) t2) (lift h2 d2 t3))))) (ex_intro2 T (\lambda (t2: T).(eq T (THead
319 (Bind b) (lift h1 d1 x2) (lift h1 (S d1) x3)) (lift h1 d1 t2))) (\lambda (t2:
320 T).(eq T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3)) (lift h2 d2
321 t2))) (THead (Bind b) x2 x3) (eq_ind_r T (THead (Bind b) (lift h1 d1 x2)
322 (lift h1 (S d1) x3)) (\lambda (t2: T).(eq T (THead (Bind b) (lift h1 d1 x2)
323 (lift h1 (S d1) x3)) t2)) (refl_equal T (THead (Bind b) (lift h1 d1 x2) (lift
324 h1 (S d1) x3))) (lift h1 d1 (THead (Bind b) x2 x3)) (lift_bind b x2 x3 h1
325 d1)) (eq_ind_r T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3))
326 (\lambda (t2: T).(eq T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3))
327 t2)) (refl_equal T (THead (Bind b) (lift h2 d2 x2) (lift h2 (S d2) x3)))
328 (lift h2 d2 (THead (Bind b) x2 x3)) (lift_bind b x2 x3 h2 d2))) t0 H13) x1
329 H12)))) (H0 x1 h1 h2 (S d1) (S d2) (le_S_n (S d1) (S d2) (lt_le_S (S d1) (S
330 (S d2)) (lt_n_S d1 (S d2) (le_lt_n_Sm d1 d2 H1)))) H11)))) t H9) x0 H8)))) (H
331 x0 h1 h2 d1 d2 H1 H6)) x H5)))))) (lift_gen_bind b (lift h1 d1 t) (lift h1 (S
332 d1) t0) x h2 (plus d2 h1) H4))))) (\lambda (f: F).(\lambda (H3: (eq T (lift
333 h1 d1 (THead (Flat f) t t0)) (lift h2 (plus d2 h1) x))).(let H4 \def (eq_ind
334 T (lift h1 d1 (THead (Flat f) t t0)) (\lambda (t: T).(eq T t (lift h2 (plus
335 d2 h1) x))) H3 (THead (Flat f) (lift h1 d1 t) (lift h1 d1 t0)) (lift_flat f t
336 t0 h1 d1)) in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead
337 (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h1 d1 t) (lift
338 h2 (plus d2 h1) y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h1 d1 t0)
339 (lift h2 (plus d2 h1) z)))) (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 t2)))
340 (\lambda (t2: T).(eq T (THead (Flat f) t t0) (lift h2 d2 t2)))) (\lambda (x0:
341 T).(\lambda (x1: T).(\lambda (H5: (eq T x (THead (Flat f) x0 x1))).(\lambda
342 (H6: (eq T (lift h1 d1 t) (lift h2 (plus d2 h1) x0))).(\lambda (H7: (eq T
343 (lift h1 d1 t0) (lift h2 (plus d2 h1) x1))).(eq_ind_r T (THead (Flat f) x0
344 x1) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T t2 (lift h1 d1 t3)))
345 (\lambda (t3: T).(eq T (THead (Flat f) t t0) (lift h2 d2 t3))))) (ex2_ind T
346 (\lambda (t2: T).(eq T x0 (lift h1 d1 t2))) (\lambda (t2: T).(eq T t (lift h2
347 d2 t2))) (ex2 T (\lambda (t2: T).(eq T (THead (Flat f) x0 x1) (lift h1 d1
348 t2))) (\lambda (t2: T).(eq T (THead (Flat f) t t0) (lift h2 d2 t2))))
349 (\lambda (x2: T).(\lambda (H8: (eq T x0 (lift h1 d1 x2))).(\lambda (H9: (eq T
350 t (lift h2 d2 x2))).(eq_ind_r T (lift h1 d1 x2) (\lambda (t2: T).(ex2 T
351 (\lambda (t3: T).(eq T (THead (Flat f) t2 x1) (lift h1 d1 t3))) (\lambda (t3:
352 T).(eq T (THead (Flat f) t t0) (lift h2 d2 t3))))) (eq_ind_r T (lift h2 d2
353 x2) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Flat f) (lift h1
354 d1 x2) x1) (lift h1 d1 t3))) (\lambda (t3: T).(eq T (THead (Flat f) t2 t0)
355 (lift h2 d2 t3))))) (ex2_ind T (\lambda (t2: T).(eq T x1 (lift h1 d1 t2)))
356 (\lambda (t2: T).(eq T t0 (lift h2 d2 t2))) (ex2 T (\lambda (t2: T).(eq T
357 (THead (Flat f) (lift h1 d1 x2) x1) (lift h1 d1 t2))) (\lambda (t2: T).(eq T
358 (THead (Flat f) (lift h2 d2 x2) t0) (lift h2 d2 t2)))) (\lambda (x3:
359 T).(\lambda (H10: (eq T x1 (lift h1 d1 x3))).(\lambda (H11: (eq T t0 (lift h2
360 d2 x3))).(eq_ind_r T (lift h1 d1 x3) (\lambda (t2: T).(ex2 T (\lambda (t3:
361 T).(eq T (THead (Flat f) (lift h1 d1 x2) t2) (lift h1 d1 t3))) (\lambda (t3:
362 T).(eq T (THead (Flat f) (lift h2 d2 x2) t0) (lift h2 d2 t3))))) (eq_ind_r T
363 (lift h2 d2 x3) (\lambda (t2: T).(ex2 T (\lambda (t3: T).(eq T (THead (Flat
364 f) (lift h1 d1 x2) (lift h1 d1 x3)) (lift h1 d1 t3))) (\lambda (t3: T).(eq T
365 (THead (Flat f) (lift h2 d2 x2) t2) (lift h2 d2 t3))))) (ex_intro2 T (\lambda
366 (t2: T).(eq T (THead (Flat f) (lift h1 d1 x2) (lift h1 d1 x3)) (lift h1 d1
367 t2))) (\lambda (t2: T).(eq T (THead (Flat f) (lift h2 d2 x2) (lift h2 d2 x3))
368 (lift h2 d2 t2))) (THead (Flat f) x2 x3) (eq_ind_r T (THead (Flat f) (lift h1
369 d1 x2) (lift h1 d1 x3)) (\lambda (t2: T).(eq T (THead (Flat f) (lift h1 d1
370 x2) (lift h1 d1 x3)) t2)) (refl_equal T (THead (Flat f) (lift h1 d1 x2) (lift
371 h1 d1 x3))) (lift h1 d1 (THead (Flat f) x2 x3)) (lift_flat f x2 x3 h1 d1))
372 (eq_ind_r T (THead (Flat f) (lift h2 d2 x2) (lift h2 d2 x3)) (\lambda (t2:
373 T).(eq T (THead (Flat f) (lift h2 d2 x2) (lift h2 d2 x3)) t2)) (refl_equal T
374 (THead (Flat f) (lift h2 d2 x2) (lift h2 d2 x3))) (lift h2 d2 (THead (Flat f)
375 x2 x3)) (lift_flat f x2 x3 h2 d2))) t0 H11) x1 H10)))) (H0 x1 h1 h2 d1 d2 H1
376 H7)) t H9) x0 H8)))) (H x0 h1 h2 d1 d2 H1 H6)) x H5)))))) (lift_gen_flat f
377 (lift h1 d1 t) (lift h1 d1 t0) x h2 (plus d2 h1) H4))))) k H2)))))))))))))
381 \forall (t: T).(\forall (h: nat).(\forall (k: nat).(\forall (d:
382 nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to (eq T (lift k e
383 (lift h d t)) (lift (plus k h) d t))))))))
385 \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: nat).(\forall (k:
386 nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to
387 (eq T (lift k e (lift h d t0)) (lift (plus k h) d t0))))))))) (\lambda (n:
388 nat).(\lambda (h: nat).(\lambda (k: nat).(\lambda (d: nat).(\lambda (e:
389 nat).(\lambda (_: (le e (plus d h))).(\lambda (_: (le d e)).(eq_ind_r T
390 (TSort n) (\lambda (t0: T).(eq T (lift k e t0) (lift (plus k h) d (TSort
391 n)))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq T t0 (lift (plus k h) d
392 (TSort n)))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq T (TSort n) t0))
393 (refl_equal T (TSort n)) (lift (plus k h) d (TSort n)) (lift_sort n (plus k
394 h) d)) (lift k e (TSort n)) (lift_sort n k e)) (lift h d (TSort n))
395 (lift_sort n h d))))))))) (\lambda (n: nat).(\lambda (h: nat).(\lambda (k:
396 nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H: (le e (plus d
397 h))).(\lambda (H0: (le d e)).(lt_le_e n d (eq T (lift k e (lift h d (TLRef
398 n))) (lift (plus k h) d (TLRef n))) (\lambda (H1: (lt n d)).(eq_ind_r T
399 (TLRef n) (\lambda (t0: T).(eq T (lift k e t0) (lift (plus k h) d (TLRef
400 n)))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (lift (plus k h) d
401 (TLRef n)))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) t0))
402 (refl_equal T (TLRef n)) (lift (plus k h) d (TLRef n)) (lift_lref_lt n (plus
403 k h) d H1)) (lift k e (TLRef n)) (lift_lref_lt n k e (lt_le_trans n d e H1
404 H0))) (lift h d (TLRef n)) (lift_lref_lt n h d H1))) (\lambda (H1: (le d
405 n)).(eq_ind_r T (TLRef (plus n h)) (\lambda (t0: T).(eq T (lift k e t0) (lift
406 (plus k h) d (TLRef n)))) (eq_ind_r T (TLRef (plus (plus n h) k)) (\lambda
407 (t0: T).(eq T t0 (lift (plus k h) d (TLRef n)))) (eq_ind_r T (TLRef (plus n
408 (plus k h))) (\lambda (t0: T).(eq T (TLRef (plus (plus n h) k)) t0)) (f_equal
409 nat T TLRef (plus (plus n h) k) (plus n (plus k h))
410 (plus_permute_2_in_3_assoc n h k)) (lift (plus k h) d (TLRef n))
411 (lift_lref_ge n (plus k h) d H1)) (lift k e (TLRef (plus n h))) (lift_lref_ge
412 (plus n h) k e (le_trans e (plus d h) (plus n h) H (plus_le_compat d n h h H1
413 (le_n h))))) (lift h d (TLRef n)) (lift_lref_ge n h d H1))))))))))) (\lambda
414 (k: K).(\lambda (t0: T).(\lambda (H: ((\forall (h: nat).(\forall (k:
415 nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to
416 (eq T (lift k e (lift h d t0)) (lift (plus k h) d t0)))))))))).(\lambda (t1:
417 T).(\lambda (H0: ((\forall (h: nat).(\forall (k: nat).(\forall (d:
418 nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to (eq T (lift k e
419 (lift h d t1)) (lift (plus k h) d t1)))))))))).(\lambda (h: nat).(\lambda
420 (k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le e (plus d
421 h))).(\lambda (H2: (le d e)).(eq_ind_r T (THead k (lift h d t0) (lift h (s k
422 d) t1)) (\lambda (t2: T).(eq T (lift k0 e t2) (lift (plus k0 h) d (THead k t0
423 t1)))) (eq_ind_r T (THead k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift
424 h (s k d) t1))) (\lambda (t2: T).(eq T t2 (lift (plus k0 h) d (THead k t0
425 t1)))) (eq_ind_r T (THead k (lift (plus k0 h) d t0) (lift (plus k0 h) (s k d)
426 t1)) (\lambda (t2: T).(eq T (THead k (lift k0 e (lift h d t0)) (lift k0 (s k
427 e) (lift h (s k d) t1))) t2)) (f_equal3 K T T T THead k k (lift k0 e (lift h
428 d t0)) (lift (plus k0 h) d t0) (lift k0 (s k e) (lift h (s k d) t1)) (lift
429 (plus k0 h) (s k d) t1) (refl_equal K k) (H h k0 d e H1 H2) (H0 h k0 (s k d)
430 (s k e) (eq_ind nat (s k (plus d h)) (\lambda (n: nat).(le (s k e) n)) (s_le
431 k e (plus d h) H1) (plus (s k d) h) (s_plus k d h)) (s_le k d e H2))) (lift
432 (plus k0 h) d (THead k t0 t1)) (lift_head k t0 t1 (plus k0 h) d)) (lift k0 e
433 (THead k (lift h d t0) (lift h (s k d) t1))) (lift_head k (lift h d t0) (lift
434 h (s k d) t1) k0 e)) (lift h d (THead k t0 t1)) (lift_head k t0 t1 h
438 \forall (t: T).(\forall (h: nat).(\forall (k: nat).(\forall (d:
439 nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k d) (lift k e t))
440 (lift k e (lift h d t))))))))
442 \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (h: nat).(\forall (k:
443 nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k
444 d) (lift k e t0)) (lift k e (lift h d t0))))))))) (\lambda (n: nat).(\lambda
445 (h: nat).(\lambda (k: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (_:
446 (le e d)).(eq_ind_r T (TSort n) (\lambda (t0: T).(eq T (lift h (plus k d) t0)
447 (lift k e (lift h d (TSort n))))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq
448 T t0 (lift k e (lift h d (TSort n))))) (eq_ind_r T (TSort n) (\lambda (t0:
449 T).(eq T (TSort n) (lift k e t0))) (eq_ind_r T (TSort n) (\lambda (t0: T).(eq
450 T (TSort n) t0)) (refl_equal T (TSort n)) (lift k e (TSort n)) (lift_sort n k
451 e)) (lift h d (TSort n)) (lift_sort n h d)) (lift h (plus k d) (TSort n))
452 (lift_sort n h (plus k d))) (lift k e (TSort n)) (lift_sort n k e))))))))
453 (\lambda (n: nat).(\lambda (h: nat).(\lambda (k: nat).(\lambda (d:
454 nat).(\lambda (e: nat).(\lambda (H: (le e d)).(lt_le_e n e (eq T (lift h
455 (plus k d) (lift k e (TLRef n))) (lift k e (lift h d (TLRef n)))) (\lambda
456 (H0: (lt n e)).(let H1 \def (lt_le_trans n e d H0 H) in (eq_ind_r T (TLRef n)
457 (\lambda (t0: T).(eq T (lift h (plus k d) t0) (lift k e (lift h d (TLRef
458 n))))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T t0 (lift k e (lift h d
459 (TLRef n))))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) (lift k
460 e t0))) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) t0))
461 (refl_equal T (TLRef n)) (lift k e (TLRef n)) (lift_lref_lt n k e H0)) (lift
462 h d (TLRef n)) (lift_lref_lt n h d H1)) (lift h (plus k d) (TLRef n))
463 (lift_lref_lt n h (plus k d) (lt_le_trans n d (plus k d) H1 (le_plus_r k
464 d)))) (lift k e (TLRef n)) (lift_lref_lt n k e H0)))) (\lambda (H0: (le e
465 n)).(eq_ind_r T (TLRef (plus n k)) (\lambda (t0: T).(eq T (lift h (plus k d)
466 t0) (lift k e (lift h d (TLRef n))))) (eq_ind_r nat (plus d k) (\lambda (n0:
467 nat).(eq T (lift h n0 (TLRef (plus n k))) (lift k e (lift h d (TLRef n)))))
468 (lt_le_e n d (eq T (lift h (plus d k) (TLRef (plus n k))) (lift k e (lift h d
469 (TLRef n)))) (\lambda (H1: (lt n d)).(eq_ind_r T (TLRef (plus n k)) (\lambda
470 (t0: T).(eq T t0 (lift k e (lift h d (TLRef n))))) (eq_ind_r T (TLRef n)
471 (\lambda (t0: T).(eq T (TLRef (plus n k)) (lift k e t0))) (eq_ind_r T (TLRef
472 (plus n k)) (\lambda (t0: T).(eq T (TLRef (plus n k)) t0)) (refl_equal T
473 (TLRef (plus n k))) (lift k e (TLRef n)) (lift_lref_ge n k e H0)) (lift h d
474 (TLRef n)) (lift_lref_lt n h d H1)) (lift h (plus d k) (TLRef (plus n k)))
475 (lift_lref_lt (plus n k) h (plus d k) (lt_le_S (plus n k) (plus d k)
476 (plus_lt_compat_r n d k H1))))) (\lambda (H1: (le d n)).(eq_ind_r T (TLRef
477 (plus (plus n k) h)) (\lambda (t0: T).(eq T t0 (lift k e (lift h d (TLRef
478 n))))) (eq_ind_r T (TLRef (plus n h)) (\lambda (t0: T).(eq T (TLRef (plus
479 (plus n k) h)) (lift k e t0))) (eq_ind_r T (TLRef (plus (plus n h) k))
480 (\lambda (t0: T).(eq T (TLRef (plus (plus n k) h)) t0)) (f_equal nat T TLRef
481 (plus (plus n k) h) (plus (plus n h) k) (sym_eq nat (plus (plus n h) k) (plus
482 (plus n k) h) (plus_permute_2_in_3 n h k))) (lift k e (TLRef (plus n h)))
483 (lift_lref_ge (plus n h) k e (le_S_n e (plus n h) (lt_le_S e (S (plus n h))
484 (le_lt_n_Sm e (plus n h) (le_plus_trans e n h H0)))))) (lift h d (TLRef n))
485 (lift_lref_ge n h d H1)) (lift h (plus d k) (TLRef (plus n k))) (lift_lref_ge
486 (plus n k) h (plus d k) (le_S_n (plus d k) (plus n k) (lt_le_S (plus d k) (S
487 (plus n k)) (le_lt_n_Sm (plus d k) (plus n k) (plus_le_compat d n k k H1
488 (le_n k))))))))) (plus k d) (plus_comm k d)) (lift k e (TLRef n))
489 (lift_lref_ge n k e H0)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda
490 (H: ((\forall (h: nat).(\forall (k: nat).(\forall (d: nat).(\forall (e:
491 nat).((le e d) \to (eq T (lift h (plus k d) (lift k e t0)) (lift k e (lift h
492 d t0)))))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (h: nat).(\forall (k:
493 nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k
494 d) (lift k e t1)) (lift k e (lift h d t1)))))))))).(\lambda (h: nat).(\lambda
495 (k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le e
496 d)).(eq_ind_r T (THead k (lift k0 e t0) (lift k0 (s k e) t1)) (\lambda (t2:
497 T).(eq T (lift h (plus k0 d) t2) (lift k0 e (lift h d (THead k t0 t1)))))
498 (eq_ind_r T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h (s k (plus
499 k0 d)) (lift k0 (s k e) t1))) (\lambda (t2: T).(eq T t2 (lift k0 e (lift h d
500 (THead k t0 t1))))) (eq_ind_r T (THead k (lift h d t0) (lift h (s k d) t1))
501 (\lambda (t2: T).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h
502 (s k (plus k0 d)) (lift k0 (s k e) t1))) (lift k0 e t2))) (eq_ind_r T (THead
503 k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift h (s k d) t1))) (\lambda
504 (t2: T).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h (s k (plus
505 k0 d)) (lift k0 (s k e) t1))) t2)) (eq_ind_r nat (plus k0 (s k d)) (\lambda
506 (n: nat).(eq T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h n (lift
507 k0 (s k e) t1))) (THead k (lift k0 e (lift h d t0)) (lift k0 (s k e) (lift h
508 (s k d) t1))))) (f_equal3 K T T T THead k k (lift h (plus k0 d) (lift k0 e
509 t0)) (lift k0 e (lift h d t0)) (lift h (plus k0 (s k d)) (lift k0 (s k e)
510 t1)) (lift k0 (s k e) (lift h (s k d) t1)) (refl_equal K k) (H h k0 d e H1)
511 (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
512 d)) (lift k0 e (THead k (lift h d t0) (lift h (s k d) t1))) (lift_head k
513 (lift h d t0) (lift h (s k d) t1) k0 e)) (lift h d (THead k t0 t1))
514 (lift_head k t0 t1 h d)) (lift h (plus k0 d) (THead k (lift k0 e t0) (lift k0
515 (s k e) t1))) (lift_head k (lift k0 e t0) (lift k0 (s k e) t1) h (plus k0
516 d))) (lift k0 e (THead k t0 t1)) (lift_head k t0 t1 k0 e)))))))))))) t).