]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_1/lift/fwd.ma
refactoring of \lambda\delta version 1 in matita
[helm.git] / matita / matita / contribs / lambdadelta / basic_1 / lift / fwd.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* This file was automatically generated: do not edit *********************)
16
17 include "Basic-1/lift/defs.ma".
18
19 theorem lift_sort:
20  \forall (n: nat).(\forall (h: nat).(\forall (d: nat).(eq T (lift h d (TSort 
21 n)) (TSort n))))
22 \def
23  \lambda (n: nat).(\lambda (_: nat).(\lambda (_: nat).(refl_equal T (TSort 
24 n)))).
25 (* COMMENTS
26 Initial nodes: 13
27 END *)
28
29 theorem lift_lref_lt:
30  \forall (n: nat).(\forall (h: nat).(\forall (d: nat).((lt n d) \to (eq T 
31 (lift h d (TLRef n)) (TLRef n)))))
32 \def
33  \lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (lt n 
34 d)).(eq_ind bool true (\lambda (b: bool).(eq T (TLRef (match b with [true 
35 \Rightarrow n | false \Rightarrow (plus n h)])) (TLRef n))) (refl_equal T 
36 (TLRef n)) (blt n d) (sym_eq bool (blt n d) true (lt_blt d n H)))))).
37 (* COMMENTS
38 Initial nodes: 72
39 END *)
40
41 theorem lift_lref_ge:
42  \forall (n: nat).(\forall (h: nat).(\forall (d: nat).((le d n) \to (eq T 
43 (lift h d (TLRef n)) (TLRef (plus n h))))))
44 \def
45  \lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (le d 
46 n)).(eq_ind bool false (\lambda (b: bool).(eq T (TLRef (match b with [true 
47 \Rightarrow n | false \Rightarrow (plus n h)])) (TLRef (plus n h)))) 
48 (refl_equal T (TLRef (plus n h))) (blt n d) (sym_eq bool (blt n d) false 
49 (le_bge d n H)))))).
50 (* COMMENTS
51 Initial nodes: 80
52 END *)
53
54 theorem lift_head:
55  \forall (k: K).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall 
56 (d: nat).(eq T (lift h d (THead k u t)) (THead k (lift h d u) (lift h (s k d) 
57 t)))))))
58 \def
59  \lambda (k: K).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda 
60 (d: nat).(refl_equal T (THead k (lift h d u) (lift h (s k d) t))))))).
61 (* COMMENTS
62 Initial nodes: 37
63 END *)
64
65 theorem lift_bind:
66  \forall (b: B).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall 
67 (d: nat).(eq T (lift h d (THead (Bind b) u t)) (THead (Bind b) (lift h d u) 
68 (lift h (S d) t)))))))
69 \def
70  \lambda (b: B).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda 
71 (d: nat).(refl_equal T (THead (Bind b) (lift h d u) (lift h (S d) t))))))).
72 (* COMMENTS
73 Initial nodes: 37
74 END *)
75
76 theorem lift_flat:
77  \forall (f: F).(\forall (u: T).(\forall (t: T).(\forall (h: nat).(\forall 
78 (d: nat).(eq T (lift h d (THead (Flat f) u t)) (THead (Flat f) (lift h d u) 
79 (lift h d t)))))))
80 \def
81  \lambda (f: F).(\lambda (u: T).(\lambda (t: T).(\lambda (h: nat).(\lambda 
82 (d: nat).(refl_equal T (THead (Flat f) (lift h d u) (lift h d t))))))).
83 (* COMMENTS
84 Initial nodes: 35
85 END *)
86
87 theorem lift_gen_sort:
88  \forall (h: nat).(\forall (d: nat).(\forall (n: nat).(\forall (t: T).((eq T 
89 (TSort n) (lift h d t)) \to (eq T t (TSort n))))))
90 \def
91  \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (t: T).(T_ind 
92 (\lambda (t0: T).((eq T (TSort n) (lift h d t0)) \to (eq T t0 (TSort n)))) 
93 (\lambda (n0: nat).(\lambda (H: (eq T (TSort n) (lift h d (TSort 
94 n0)))).(sym_eq T (TSort n) (TSort n0) H))) (\lambda (n0: nat).(\lambda (H: 
95 (eq T (TSort n) (lift h d (TLRef n0)))).(lt_le_e n0 d (eq T (TLRef n0) (TSort 
96 n)) (\lambda (_: (lt n0 d)).(let H1 \def (eq_ind T (lift h d (TLRef n0)) 
97 (\lambda (t0: T).(eq T (TSort n) t0)) H (TLRef n0) (lift_lref_lt n0 h d (let 
98 H1 \def (eq_ind T (TSort n) (\lambda (ee: T).(match ee in T return (\lambda 
99 (_: T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | 
100 (THead _ _ _) \Rightarrow False])) I (lift h d (TLRef n0)) H) in (False_ind 
101 (lt n0 d) H1)))) in (let H2 \def (eq_ind T (TSort n) (\lambda (ee: T).(match 
102 ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | 
103 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (TLRef n0) 
104 H1) in (False_ind (eq T (TLRef n0) (TSort n)) H2)))) (\lambda (_: (le d 
105 n0)).(let H1 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t0: T).(eq T 
106 (TSort n) t0)) H (TLRef (plus n0 h)) (lift_lref_ge n0 h d (let H1 \def 
107 (eq_ind T (TSort n) (\lambda (ee: T).(match ee in T return (\lambda (_: 
108 T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | 
109 (THead _ _ _) \Rightarrow False])) I (lift h d (TLRef n0)) H) in (False_ind 
110 (le d n0) H1)))) in (let H2 \def (eq_ind T (TSort n) (\lambda (ee: T).(match 
111 ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | 
112 (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (TLRef 
113 (plus n0 h)) H1) in (False_ind (eq T (TLRef n0) (TSort n)) H2))))))) (\lambda 
114 (k: K).(\lambda (t0: T).(\lambda (_: (((eq T (TSort n) (lift h d t0)) \to (eq 
115 T t0 (TSort n))))).(\lambda (t1: T).(\lambda (_: (((eq T (TSort n) (lift h d 
116 t1)) \to (eq T t1 (TSort n))))).(\lambda (H1: (eq T (TSort n) (lift h d 
117 (THead k t0 t1)))).(let H2 \def (eq_ind T (lift h d (THead k t0 t1)) (\lambda 
118 (t2: T).(eq T (TSort n) t2)) H1 (THead k (lift h d t0) (lift h (s k d) t1)) 
119 (lift_head k t0 t1 h d)) in (let H3 \def (eq_ind T (TSort n) (\lambda (ee: 
120 T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
121 True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I 
122 (THead k (lift h d t0) (lift h (s k d) t1)) H2) in (False_ind (eq T (THead k 
123 t0 t1) (TSort n)) H3))))))))) t)))).
124 (* COMMENTS
125 Initial nodes: 613
126 END *)
127
128 theorem lift_gen_lref:
129  \forall (t: T).(\forall (d: nat).(\forall (h: nat).(\forall (i: nat).((eq T 
130 (TLRef i) (lift h d t)) \to (or (land (lt i d) (eq T t (TLRef i))) (land (le 
131 (plus d h) i) (eq T t (TLRef (minus i h)))))))))
132 \def
133  \lambda (t: T).(T_ind (\lambda (t0: T).(\forall (d: nat).(\forall (h: 
134 nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t0)) \to (or (land (lt i d) 
135 (eq T t0 (TLRef i))) (land (le (plus d h) i) (eq T t0 (TLRef (minus i 
136 h)))))))))) (\lambda (n: nat).(\lambda (d: nat).(\lambda (h: nat).(\lambda 
137 (i: nat).(\lambda (H: (eq T (TLRef i) (lift h d (TSort n)))).(let H0 \def 
138 (eq_ind T (lift h d (TSort n)) (\lambda (t0: T).(eq T (TLRef i) t0)) H (TSort 
139 n) (lift_sort n h d)) in (let H1 \def (eq_ind T (TLRef i) (\lambda (ee: 
140 T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow 
141 False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I 
142 (TSort n) H0) in (False_ind (or (land (lt i d) (eq T (TSort n) (TLRef i))) 
143 (land (le (plus d h) i) (eq T (TSort n) (TLRef (minus i h))))) H1)))))))) 
144 (\lambda (n: nat).(\lambda (d: nat).(\lambda (h: nat).(\lambda (i: 
145 nat).(\lambda (H: (eq T (TLRef i) (lift h d (TLRef n)))).(lt_le_e n d (or 
146 (land (lt i d) (eq T (TLRef n) (TLRef i))) (land (le (plus d h) i) (eq T 
147 (TLRef n) (TLRef (minus i h))))) (\lambda (H0: (lt n d)).(let H1 \def (eq_ind 
148 T (lift h d (TLRef n)) (\lambda (t0: T).(eq T (TLRef i) t0)) H (TLRef n) 
149 (lift_lref_lt n h d H0)) in (let H2 \def (f_equal T nat (\lambda (e: 
150 T).(match e in T return (\lambda (_: T).nat) with [(TSort _) \Rightarrow i | 
151 (TLRef n0) \Rightarrow n0 | (THead _ _ _) \Rightarrow i])) (TLRef i) (TLRef 
152 n) H1) in (eq_ind_r nat n (\lambda (n0: nat).(or (land (lt n0 d) (eq T (TLRef 
153 n) (TLRef n0))) (land (le (plus d h) n0) (eq T (TLRef n) (TLRef (minus n0 
154 h)))))) (or_introl (land (lt n d) (eq T (TLRef n) (TLRef n))) (land (le (plus 
155 d h) n) (eq T (TLRef n) (TLRef (minus n h)))) (conj (lt n d) (eq T (TLRef n) 
156 (TLRef n)) H0 (refl_equal T (TLRef n)))) i H2)))) (\lambda (H0: (le d 
157 n)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda (t0: T).(eq T (TLRef 
158 i) t0)) H (TLRef (plus n h)) (lift_lref_ge n h d H0)) in (let H2 \def 
159 (f_equal T nat (\lambda (e: T).(match e in T return (\lambda (_: T).nat) with 
160 [(TSort _) \Rightarrow i | (TLRef n0) \Rightarrow n0 | (THead _ _ _) 
161 \Rightarrow i])) (TLRef i) (TLRef (plus n h)) H1) in (eq_ind_r nat (plus n h) 
162 (\lambda (n0: nat).(or (land (lt n0 d) (eq T (TLRef n) (TLRef n0))) (land (le 
163 (plus d h) n0) (eq T (TLRef n) (TLRef (minus n0 h)))))) (eq_ind_r nat n 
164 (\lambda (n0: nat).(or (land (lt (plus n h) d) (eq T (TLRef n) (TLRef (plus n 
165 h)))) (land (le (plus d h) (plus n h)) (eq T (TLRef n) (TLRef n0))))) 
166 (or_intror (land (lt (plus n h) d) (eq T (TLRef n) (TLRef (plus n h)))) (land 
167 (le (plus d h) (plus n h)) (eq T (TLRef n) (TLRef n))) (conj (le (plus d h) 
168 (plus n h)) (eq T (TLRef n) (TLRef n)) (le_plus_plus d n h h H0 (le_n h)) 
169 (refl_equal T (TLRef n)))) (minus (plus n h) h) (minus_plus_r n h)) i 
170 H2)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda (_: ((\forall (d: 
171 nat).(\forall (h: nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t0)) \to 
172 (or (land (lt i d) (eq T t0 (TLRef i))) (land (le (plus d h) i) (eq T t0 
173 (TLRef (minus i h))))))))))).(\lambda (t1: T).(\lambda (_: ((\forall (d: 
174 nat).(\forall (h: nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t1)) \to 
175 (or (land (lt i d) (eq T t1 (TLRef i))) (land (le (plus d h) i) (eq T t1 
176 (TLRef (minus i h))))))))))).(\lambda (d: nat).(\lambda (h: nat).(\lambda (i: 
177 nat).(\lambda (H1: (eq T (TLRef i) (lift h d (THead k t0 t1)))).(let H2 \def 
178 (eq_ind T (lift h d (THead k t0 t1)) (\lambda (t2: T).(eq T (TLRef i) t2)) H1 
179 (THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k t0 t1 h d)) in (let 
180 H3 \def (eq_ind T (TLRef i) (\lambda (ee: T).(match ee in T return (\lambda 
181 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | 
182 (THead _ _ _) \Rightarrow False])) I (THead k (lift h d t0) (lift h (s k d) 
183 t1)) H2) in (False_ind (or (land (lt i d) (eq T (THead k t0 t1) (TLRef i))) 
184 (land (le (plus d h) i) (eq T (THead k t0 t1) (TLRef (minus i h))))) 
185 H3)))))))))))) t).
186 (* COMMENTS
187 Initial nodes: 1221
188 END *)
189
190 theorem lift_gen_lref_lt:
191  \forall (h: nat).(\forall (d: nat).(\forall (n: nat).((lt n d) \to (\forall 
192 (t: T).((eq T (TLRef n) (lift h d t)) \to (eq T t (TLRef n)))))))
193 \def
194  \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (H: (lt n 
195 d)).(\lambda (t: T).(\lambda (H0: (eq T (TLRef n) (lift h d t))).(let H_x 
196 \def (lift_gen_lref t d h n H0) in (let H1 \def H_x in (or_ind (land (lt n d) 
197 (eq T t (TLRef n))) (land (le (plus d h) n) (eq T t (TLRef (minus n h)))) (eq 
198 T t (TLRef n)) (\lambda (H2: (land (lt n d) (eq T t (TLRef n)))).(land_ind 
199 (lt n d) (eq T t (TLRef n)) (eq T t (TLRef n)) (\lambda (_: (lt n 
200 d)).(\lambda (H4: (eq T t (TLRef n))).(eq_ind_r T (TLRef n) (\lambda (t0: 
201 T).(eq T t0 (TLRef n))) (refl_equal T (TLRef n)) t H4))) H2)) (\lambda (H2: 
202 (land (le (plus d h) n) (eq T t (TLRef (minus n h))))).(land_ind (le (plus d 
203 h) n) (eq T t (TLRef (minus n h))) (eq T t (TLRef n)) (\lambda (H3: (le (plus 
204 d h) n)).(\lambda (H4: (eq T t (TLRef (minus n h)))).(eq_ind_r T (TLRef 
205 (minus n h)) (\lambda (t0: T).(eq T t0 (TLRef n))) (le_false (plus d h) n (eq 
206 T (TLRef (minus n h)) (TLRef n)) H3 (lt_le_S n (plus d h) (le_plus_trans (S 
207 n) d h H))) t H4))) H2)) H1)))))))).
208 (* COMMENTS
209 Initial nodes: 363
210 END *)
211
212 theorem lift_gen_lref_false:
213  \forall (h: nat).(\forall (d: nat).(\forall (n: nat).((le d n) \to ((lt n 
214 (plus d h)) \to (\forall (t: T).((eq T (TLRef n) (lift h d t)) \to (\forall 
215 (P: Prop).P)))))))
216 \def
217  \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (H: (le d 
218 n)).(\lambda (H0: (lt n (plus d h))).(\lambda (t: T).(\lambda (H1: (eq T 
219 (TLRef n) (lift h d t))).(\lambda (P: Prop).(let H_x \def (lift_gen_lref t d 
220 h n H1) in (let H2 \def H_x in (or_ind (land (lt n d) (eq T t (TLRef n))) 
221 (land (le (plus d h) n) (eq T t (TLRef (minus n h)))) P (\lambda (H3: (land 
222 (lt n d) (eq T t (TLRef n)))).(land_ind (lt n d) (eq T t (TLRef n)) P 
223 (\lambda (H4: (lt n d)).(\lambda (_: (eq T t (TLRef n))).(le_false d n P H 
224 H4))) H3)) (\lambda (H3: (land (le (plus d h) n) (eq T t (TLRef (minus n 
225 h))))).(land_ind (le (plus d h) n) (eq T t (TLRef (minus n h))) P (\lambda 
226 (H4: (le (plus d h) n)).(\lambda (_: (eq T t (TLRef (minus n h)))).(le_false 
227 (plus d h) n P H4 H0))) H3)) H2)))))))))).
228 (* COMMENTS
229 Initial nodes: 269
230 END *)
231
232 theorem lift_gen_lref_ge:
233  \forall (h: nat).(\forall (d: nat).(\forall (n: nat).((le d n) \to (\forall 
234 (t: T).((eq T (TLRef (plus n h)) (lift h d t)) \to (eq T t (TLRef n)))))))
235 \def
236  \lambda (h: nat).(\lambda (d: nat).(\lambda (n: nat).(\lambda (H: (le d 
237 n)).(\lambda (t: T).(\lambda (H0: (eq T (TLRef (plus n h)) (lift h d 
238 t))).(let H_x \def (lift_gen_lref t d h (plus n h) H0) in (let H1 \def H_x in 
239 (or_ind (land (lt (plus n h) d) (eq T t (TLRef (plus n h)))) (land (le (plus 
240 d h) (plus n h)) (eq T t (TLRef (minus (plus n h) h)))) (eq T t (TLRef n)) 
241 (\lambda (H2: (land (lt (plus n h) d) (eq T t (TLRef (plus n h))))).(land_ind 
242 (lt (plus n h) d) (eq T t (TLRef (plus n h))) (eq T t (TLRef n)) (\lambda 
243 (H3: (lt (plus n h) d)).(\lambda (H4: (eq T t (TLRef (plus n h)))).(eq_ind_r 
244 T (TLRef (plus n h)) (\lambda (t0: T).(eq T t0 (TLRef n))) (le_false d n (eq 
245 T (TLRef (plus n h)) (TLRef n)) H (lt_le_S n d (simpl_lt_plus_r h n d 
246 (lt_le_trans (plus n h) d (plus d h) H3 (le_plus_l d h))))) t H4))) H2)) 
247 (\lambda (H2: (land (le (plus d h) (plus n h)) (eq T t (TLRef (minus (plus n 
248 h) h))))).(land_ind (le (plus d h) (plus n h)) (eq T t (TLRef (minus (plus n 
249 h) h))) (eq T t (TLRef n)) (\lambda (_: (le (plus d h) (plus n h))).(\lambda 
250 (H4: (eq T t (TLRef (minus (plus n h) h)))).(eq_ind_r T (TLRef (minus (plus n 
251 h) h)) (\lambda (t0: T).(eq T t0 (TLRef n))) (f_equal nat T TLRef (minus 
252 (plus n h) h) n (minus_plus_r n h)) t H4))) H2)) H1)))))))).
253 (* COMMENTS
254 Initial nodes: 473
255 END *)
256
257 theorem lift_gen_head:
258  \forall (k: K).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h: 
259 nat).(\forall (d: nat).((eq T (THead k u t) (lift h d x)) \to (ex3_2 T T 
260 (\lambda (y: T).(\lambda (z: T).(eq T x (THead k y z)))) (\lambda (y: 
261 T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
262 T).(eq T t (lift h (s k d) z)))))))))))
263 \def
264  \lambda (k: K).(\lambda (u: T).(\lambda (t: T).(\lambda (x: T).(T_ind 
265 (\lambda (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (THead k u t) 
266 (lift h d t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead 
267 k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda 
268 (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z))))))))) (\lambda (n: 
269 nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k u t) 
270 (lift h d (TSort n)))).(let H0 \def (eq_ind T (lift h d (TSort n)) (\lambda 
271 (t0: T).(eq T (THead k u t) t0)) H (TSort n) (lift_sort n h d)) in (let H1 
272 \def (eq_ind T (THead k u t) (\lambda (ee: T).(match ee in T return (\lambda 
273 (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False 
274 | (THead _ _ _) \Rightarrow True])) I (TSort n) H0) in (False_ind (ex3_2 T T 
275 (\lambda (y: T).(\lambda (z: T).(eq T (TSort n) (THead k y z)))) (\lambda (y: 
276 T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
277 T).(eq T t (lift h (s k d) z))))) H1))))))) (\lambda (n: nat).(\lambda (h: 
278 nat).(\lambda (d: nat).(\lambda (H: (eq T (THead k u t) (lift h d (TLRef 
279 n)))).(lt_le_e n d (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) 
280 (THead k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) 
281 (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z))))) (\lambda (H0: 
282 (lt n d)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda (t0: T).(eq T 
283 (THead k u t) t0)) H (TLRef n) (lift_lref_lt n h d H0)) in (let H2 \def 
284 (eq_ind T (THead k u t) (\lambda (ee: T).(match ee in T return (\lambda (_: 
285 T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | 
286 (THead _ _ _) \Rightarrow True])) I (TLRef n) H1) in (False_ind (ex3_2 T T 
287 (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead k y z)))) (\lambda (y: 
288 T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
289 T).(eq T t (lift h (s k d) z))))) H2)))) (\lambda (H0: (le d n)).(let H1 \def 
290 (eq_ind T (lift h d (TLRef n)) (\lambda (t0: T).(eq T (THead k u t) t0)) H 
291 (TLRef (plus n h)) (lift_lref_ge n h d H0)) in (let H2 \def (eq_ind T (THead 
292 k u t) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with 
293 [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) 
294 \Rightarrow True])) I (TLRef (plus n h)) H1) in (False_ind (ex3_2 T T 
295 (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead k y z)))) (\lambda (y: 
296 T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
297 T).(eq T t (lift h (s k d) z))))) H2))))))))) (\lambda (k0: K).(\lambda (t0: 
298 T).(\lambda (H: ((\forall (h: nat).(\forall (d: nat).((eq T (THead k u t) 
299 (lift h d t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead 
300 k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda 
301 (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z)))))))))).(\lambda (t1: 
302 T).(\lambda (H0: ((\forall (h: nat).(\forall (d: nat).((eq T (THead k u t) 
303 (lift h d t1)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t1 (THead 
304 k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda 
305 (_: T).(\lambda (z: T).(eq T t (lift h (s k d) z)))))))))).(\lambda (h: 
306 nat).(\lambda (d: nat).(\lambda (H1: (eq T (THead k u t) (lift h d (THead k0 
307 t0 t1)))).(let H2 \def (eq_ind T (lift h d (THead k0 t0 t1)) (\lambda (t2: 
308 T).(eq T (THead k u t) t2)) H1 (THead k0 (lift h d t0) (lift h (s k0 d) t1)) 
309 (lift_head k0 t0 t1 h d)) in (let H3 \def (f_equal T K (\lambda (e: T).(match 
310 e in T return (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _) 
311 \Rightarrow k | (THead k1 _ _) \Rightarrow k1])) (THead k u t) (THead k0 
312 (lift h d t0) (lift h (s k0 d) t1)) H2) in ((let H4 \def (f_equal T T 
313 (\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) 
314 \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t2 _) \Rightarrow t2])) 
315 (THead k u t) (THead k0 (lift h d t0) (lift h (s k0 d) t1)) H2) in ((let H5 
316 \def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) 
317 with [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ _ t2) 
318 \Rightarrow t2])) (THead k u t) (THead k0 (lift h d t0) (lift h (s k0 d) t1)) 
319 H2) in (\lambda (H6: (eq T u (lift h d t0))).(\lambda (H7: (eq K k k0)).(let 
320 H8 \def (eq_ind_r K k0 (\lambda (k1: K).(eq T t (lift h (s k1 d) t1))) H5 k 
321 H7) in (eq_ind K k (\lambda (k1: K).(ex3_2 T T (\lambda (y: T).(\lambda (z: 
322 T).(eq T (THead k1 t0 t1) (THead k y z)))) (\lambda (y: T).(\lambda (_: 
323 T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s 
324 k d) z)))))) (let H9 \def (eq_ind T t (\lambda (t2: T).(\forall (h0: 
325 nat).(\forall (d0: nat).((eq T (THead k u t2) (lift h0 d0 t1)) \to (ex3_2 T T 
326 (\lambda (y: T).(\lambda (z: T).(eq T t1 (THead k y z)))) (\lambda (y: 
327 T).(\lambda (_: T).(eq T u (lift h0 d0 y)))) (\lambda (_: T).(\lambda (z: 
328 T).(eq T t2 (lift h0 (s k d0) z))))))))) H0 (lift h (s k d) t1) H8) in (let 
329 H10 \def (eq_ind T t (\lambda (t2: T).(\forall (h0: nat).(\forall (d0: 
330 nat).((eq T (THead k u t2) (lift h0 d0 t0)) \to (ex3_2 T T (\lambda (y: 
331 T).(\lambda (z: T).(eq T t0 (THead k y z)))) (\lambda (y: T).(\lambda (_: 
332 T).(eq T u (lift h0 d0 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t2 (lift 
333 h0 (s k d0) z))))))))) H (lift h (s k d) t1) H8) in (eq_ind_r T (lift h (s k 
334 d) t1) (\lambda (t2: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T 
335 (THead k t0 t1) (THead k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u 
336 (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t2 (lift h (s k d) 
337 z)))))) (let H11 \def (eq_ind T u (\lambda (t2: T).(\forall (h0: 
338 nat).(\forall (d0: nat).((eq T (THead k t2 (lift h (s k d) t1)) (lift h0 d0 
339 t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead k y z)))) 
340 (\lambda (y: T).(\lambda (_: T).(eq T t2 (lift h0 d0 y)))) (\lambda (_: 
341 T).(\lambda (z: T).(eq T (lift h (s k d) t1) (lift h0 (s k d0) z))))))))) H10 
342 (lift h d t0) H6) in (let H12 \def (eq_ind T u (\lambda (t2: T).(\forall (h0: 
343 nat).(\forall (d0: nat).((eq T (THead k t2 (lift h (s k d) t1)) (lift h0 d0 
344 t1)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t1 (THead k y z)))) 
345 (\lambda (y: T).(\lambda (_: T).(eq T t2 (lift h0 d0 y)))) (\lambda (_: 
346 T).(\lambda (z: T).(eq T (lift h (s k d) t1) (lift h0 (s k d0) z))))))))) H9 
347 (lift h d t0) H6) in (eq_ind_r T (lift h d t0) (\lambda (t2: T).(ex3_2 T T 
348 (\lambda (y: T).(\lambda (z: T).(eq T (THead k t0 t1) (THead k y z)))) 
349 (\lambda (y: T).(\lambda (_: T).(eq T t2 (lift h d y)))) (\lambda (_: 
350 T).(\lambda (z: T).(eq T (lift h (s k d) t1) (lift h (s k d) z)))))) 
351 (ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k t0 t1) (THead 
352 k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t0) (lift h d y)))) 
353 (\lambda (_: T).(\lambda (z: T).(eq T (lift h (s k d) t1) (lift h (s k d) 
354 z)))) t0 t1 (refl_equal T (THead k t0 t1)) (refl_equal T (lift h d t0)) 
355 (refl_equal T (lift h (s k d) t1))) u H6))) t H8))) k0 H7))))) H4)) 
356 H3))))))))))) x)))).
357 (* COMMENTS
358 Initial nodes: 2083
359 END *)
360
361 theorem lift_gen_bind:
362  \forall (b: B).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h: 
363 nat).(\forall (d: nat).((eq T (THead (Bind b) u t) (lift h d x)) \to (ex3_2 T 
364 T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Bind b) y z)))) (\lambda 
365 (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
366 T).(eq T t (lift h (S d) z)))))))))))
367 \def
368  \lambda (b: B).(\lambda (u: T).(\lambda (t: T).(\lambda (x: T).(\lambda (h: 
369 nat).(\lambda (d: nat).(\lambda (H: (eq T (THead (Bind b) u t) (lift h d 
370 x))).(let H_x \def (lift_gen_head (Bind b) u t x h d H) in (let H0 \def H_x 
371 in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Bind b) y 
372 z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: 
373 T).(\lambda (z: T).(eq T t (lift h (S d) z)))) (ex3_2 T T (\lambda (y: 
374 T).(\lambda (z: T).(eq T x (THead (Bind b) y z)))) (\lambda (y: T).(\lambda 
375 (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift 
376 h (S d) z))))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H1: (eq T x (THead 
377 (Bind b) x0 x1))).(\lambda (H2: (eq T u (lift h d x0))).(\lambda (H3: (eq T t 
378 (lift h (S d) x1))).(eq_ind_r T (THead (Bind b) x0 x1) (\lambda (t0: 
379 T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead (Bind b) y 
380 z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: 
381 T).(\lambda (z: T).(eq T t (lift h (S d) z)))))) (eq_ind_r T (lift h (S d) 
382 x1) (\lambda (t0: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead 
383 (Bind b) x0 x1) (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T 
384 u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t0 (lift h (S d) 
385 z)))))) (eq_ind_r T (lift h d x0) (\lambda (t0: T).(ex3_2 T T (\lambda (y: 
386 T).(\lambda (z: T).(eq T (THead (Bind b) x0 x1) (THead (Bind b) y z)))) 
387 (\lambda (y: T).(\lambda (_: T).(eq T t0 (lift h d y)))) (\lambda (_: 
388 T).(\lambda (z: T).(eq T (lift h (S d) x1) (lift h (S d) z)))))) (ex3_2_intro 
389 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead (Bind b) x0 x1) (THead (Bind 
390 b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d x0) (lift h d 
391 y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h (S d) x1) (lift h (S d) 
392 z)))) x0 x1 (refl_equal T (THead (Bind b) x0 x1)) (refl_equal T (lift h d 
393 x0)) (refl_equal T (lift h (S d) x1))) u H2) t H3) x H1)))))) H0))))))))).
394 (* COMMENTS
395 Initial nodes: 637
396 END *)
397
398 theorem lift_gen_flat:
399  \forall (f: F).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h: 
400 nat).(\forall (d: nat).((eq T (THead (Flat f) u t) (lift h d x)) \to (ex3_2 T 
401 T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Flat f) y z)))) (\lambda 
402 (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
403 T).(eq T t (lift h d z)))))))))))
404 \def
405  \lambda (f: F).(\lambda (u: T).(\lambda (t: T).(\lambda (x: T).(\lambda (h: 
406 nat).(\lambda (d: nat).(\lambda (H: (eq T (THead (Flat f) u t) (lift h d 
407 x))).(let H_x \def (lift_gen_head (Flat f) u t x h d H) in (let H0 \def H_x 
408 in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Flat f) y 
409 z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: 
410 T).(\lambda (z: T).(eq T t (lift h d z)))) (ex3_2 T T (\lambda (y: 
411 T).(\lambda (z: T).(eq T x (THead (Flat f) y z)))) (\lambda (y: T).(\lambda 
412 (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift 
413 h d z))))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H1: (eq T x (THead 
414 (Flat f) x0 x1))).(\lambda (H2: (eq T u (lift h d x0))).(\lambda (H3: (eq T t 
415 (lift h d x1))).(eq_ind_r T (THead (Flat f) x0 x1) (\lambda (t0: T).(ex3_2 T 
416 T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead (Flat f) y z)))) (\lambda 
417 (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: 
418 T).(eq T t (lift h d z)))))) (eq_ind_r T (lift h d x1) (\lambda (t0: 
419 T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead (Flat f) x0 x1) 
420 (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d 
421 y)))) (\lambda (_: T).(\lambda (z: T).(eq T t0 (lift h d z)))))) (eq_ind_r T 
422 (lift h d x0) (\lambda (t0: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq 
423 T (THead (Flat f) x0 x1) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: 
424 T).(eq T t0 (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h d 
425 x1) (lift h d z)))))) (ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq T 
426 (THead (Flat f) x0 x1) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: 
427 T).(eq T (lift h d x0) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T 
428 (lift h d x1) (lift h d z)))) x0 x1 (refl_equal T (THead (Flat f) x0 x1)) 
429 (refl_equal T (lift h d x0)) (refl_equal T (lift h d x1))) u H2) t H3) x 
430 H1)))))) H0))))))))).
431 (* COMMENTS
432 Initial nodes: 615
433 END *)
434