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