nat).(\forall (y3: nat).(\forall (y4: nat).((le O z0) \to ((le O z0) \to ((eq
nat (plus n y3) (plus n y4)) \to (eq nat y4 y3))))))) H_y z0 (minus_n_O z0))
in (H2 y1 y2 (le_O_n z0) (le_O_n z0) (H2 (plus z0 y2) (plus z0 y1) (le_O_n
-z0) (le_O_n z0) (f_equal nat nat (plus z0) (plus z0 y2) (plus z0 y1)
-(sym_equal nat (plus z0 y1) (plus z0 y2) (eq_add_S (plus z0 y1) (plus z0 y2)
+z0) (le_O_n z0) (f_equal nat nat (plus z0) (plus z0 y2) (plus z0 y1) (sym_eq
+nat (plus z0 y1) (plus z0 y2) (eq_add_S (plus z0 y1) (plus z0 y2)
H1)))))))))))) (\lambda (x3: nat).(\lambda (_: ((\forall (y1: nat).(\forall
(y2: nat).((le O (S z0)) \to ((le x3 (S z0)) \to ((eq nat (S (plus z0 y1))
(plus (match x3 with [O \Rightarrow (S z0) | (S l) \Rightarrow (minus z0 l)])
intros. apply plus_le_reg_l; auto.
qed.
-definition sym_equal \def sym_eq.
-
default "equality"
cic:/Coq/Init/Logic/eq.ind
cic:/matita/LAMBDA-TYPES/Level-1/Base/ext/preamble/sym_eq.con
(h2: nat).(\lambda (H: (eq A (aplus g a1 h1) (aplus g a2 h2))).(\lambda (h:
nat).(nat_ind (\lambda (n: nat).(eq A (aplus g a1 (plus n h1)) (aplus g a2
(plus n h2)))) H (\lambda (n: nat).(\lambda (H0: (eq A (aplus g a1 (plus n
-h1)) (aplus g a2 (plus n h2)))).(sym_equal A (asucc g (aplus g a2 (plus n
-h2))) (asucc g (aplus g a1 (plus n h1))) (sym_equal A (asucc g (aplus g a1
-(plus n h1))) (asucc g (aplus g a2 (plus n h2))) (sym_equal A (asucc g (aplus
-g a2 (plus n h2))) (asucc g (aplus g a1 (plus n h1))) (f_equal2 G A A asucc g
-g (aplus g a2 (plus n h2)) (aplus g a1 (plus n h1)) (refl_equal G g) (sym_eq
-A (aplus g a1 (plus n h1)) (aplus g a2 (plus n h2)) H0))))))) h))))))).
+h1)) (aplus g a2 (plus n h2)))).(sym_eq A (asucc g (aplus g a2 (plus n h2)))
+(asucc g (aplus g a1 (plus n h1))) (sym_eq A (asucc g (aplus g a1 (plus n
+h1))) (asucc g (aplus g a2 (plus n h2))) (sym_eq A (asucc g (aplus g a2 (plus
+n h2))) (asucc g (aplus g a1 (plus n h1))) (f_equal2 G A A asucc g g (aplus g
+a2 (plus n h2)) (aplus g a1 (plus n h1)) (refl_equal G g) (sym_eq A (aplus g
+a1 (plus n h1)) (aplus g a2 (plus n h2)) H0))))))) h))))))).
theorem aplus_assoc:
\forall (g: G).(\forall (a: A).(\forall (h1: nat).(\forall (h2: nat).(eq A
n)) (\lambda (n0: nat).(\lambda (H0: (eq A (aplus g (asucc g (aplus g a n))
n0) (asucc g (aplus g a (plus n n0))))).(eq_ind nat (S (plus n n0)) (\lambda
(n1: nat).(eq A (asucc g (aplus g (asucc g (aplus g a n)) n0)) (asucc g
-(aplus g a n1)))) (sym_equal A (asucc g (asucc g (aplus g a (plus n n0))))
-(asucc g (aplus g (asucc g (aplus g a n)) n0)) (sym_equal A (asucc g (aplus g
+(aplus g a n1)))) (sym_eq A (asucc g (asucc g (aplus g a (plus n n0))))
+(asucc g (aplus g (asucc g (aplus g a n)) n0)) (sym_eq A (asucc g (aplus g
(asucc g (aplus g a n)) n0)) (asucc g (asucc g (aplus g a (plus n n0))))
-(sym_equal A (asucc g (asucc g (aplus g a (plus n n0)))) (asucc g (aplus g
+(sym_eq A (asucc g (asucc g (aplus g a (plus n n0)))) (asucc g (aplus g
(asucc g (aplus g a n)) n0)) (f_equal2 G A A asucc g g (asucc g (aplus g a
(plus n n0))) (aplus g (asucc g (aplus g a n)) n0) (refl_equal G g) (sym_eq A
(aplus g (asucc g (aplus g a n)) n0) (asucc g (aplus g a (plus n n0)))
\lambda (g: G).(\lambda (a: A).(A_ind (\lambda (a0: A).(\forall (h:
nat).((eq A (aplus g (asucc g a0) h) a0) \to (\forall (P: Prop).P))))
(\lambda (n: nat).(\lambda (n0: nat).(\lambda (h: nat).(\lambda (H: (eq A
-(aplus g (match n with [O \Rightarrow (ASort O (next g n0)) | (S h)
-\Rightarrow (ASort h n0)]) h) (ASort n n0))).(\lambda (P: Prop).((match n in
+(aplus g (match n with [O \Rightarrow (ASort O (next g n0)) | (S h0)
+\Rightarrow (ASort h0 n0)]) h) (ASort n n0))).(\lambda (P: Prop).((match n in
nat return (\lambda (n1: nat).((eq A (aplus g (match n1 with [O \Rightarrow
-(ASort O (next g n0)) | (S h) \Rightarrow (ASort h n0)]) h) (ASort n1 n0))
+(ASort O (next g n0)) | (S h0) \Rightarrow (ASort h0 n0)]) h) (ASort n1 n0))
\to P)) with [O \Rightarrow (\lambda (H0: (eq A (aplus g (ASort O (next g
n0)) h) (ASort O n0))).(let H1 \def (eq_ind A (aplus g (ASort O (next g n0))
-h) (\lambda (a: A).(eq A a (ASort O n0))) H0 (ASort (minus O h) (next_plus g
-(next g n0) (minus h O))) (aplus_asort_simpl g h O (next g n0))) in (let H2
+h) (\lambda (a0: A).(eq A a0 (ASort O n0))) H0 (ASort (minus O h) (next_plus
+g (next g n0) (minus h O))) (aplus_asort_simpl g h O (next g n0))) in (let H2
\def (f_equal A nat (\lambda (e: A).(match e in A return (\lambda (_: A).nat)
-with [(ASort _ n) \Rightarrow n | (AHead _ _) \Rightarrow ((let rec next_plus
-(g: G) (n: nat) (i: nat) on i: nat \def (match i with [O \Rightarrow n | (S
-i0) \Rightarrow (next g (next_plus g n i0))]) in next_plus) g (next g n0)
-(minus h O))])) (ASort (minus O h) (next_plus g (next g n0) (minus h O)))
-(ASort O n0) H1) in (let H3 \def (eq_ind_r nat (minus h O) (\lambda (n:
-nat).(eq nat (next_plus g (next g n0) n) n0)) H2 h (minus_n_O h)) in
-(le_lt_false (next_plus g (next g n0) h) n0 (eq_ind nat (next_plus g (next g
-n0) h) (\lambda (n1: nat).(le (next_plus g (next g n0) h) n1)) (le_n
-(next_plus g (next g n0) h)) n0 H3) (next_plus_lt g h n0) P))))) | (S n1)
-\Rightarrow (\lambda (H0: (eq A (aplus g (ASort n1 n0) h) (ASort (S n1)
-n0))).(let H1 \def (eq_ind A (aplus g (ASort n1 n0) h) (\lambda (a: A).(eq A
-a (ASort (S n1) n0))) H0 (ASort (minus n1 h) (next_plus g n0 (minus h n1)))
-(aplus_asort_simpl g h n1 n0)) in (let H2 \def (f_equal A nat (\lambda (e:
-A).(match e in A return (\lambda (_: A).nat) with [(ASort n _) \Rightarrow n
-| (AHead _ _) \Rightarrow ((let rec minus (n: nat) on n: (nat \to nat) \def
-(\lambda (m: nat).(match n with [O \Rightarrow O | (S k) \Rightarrow (match m
-with [O \Rightarrow (S k) | (S l) \Rightarrow (minus k l)])])) in minus) n1
-h)])) (ASort (minus n1 h) (next_plus g n0 (minus h n1))) (ASort (S n1) n0)
-H1) in ((let H3 \def (f_equal A nat (\lambda (e: A).(match e in A return
-(\lambda (_: A).nat) with [(ASort _ n) \Rightarrow n | (AHead _ _)
-\Rightarrow ((let rec next_plus (g: G) (n: nat) (i: nat) on i: nat \def
-(match i with [O \Rightarrow n | (S i0) \Rightarrow (next g (next_plus g n
-i0))]) in next_plus) g n0 (minus h n1))])) (ASort (minus n1 h) (next_plus g
-n0 (minus h n1))) (ASort (S n1) n0) H1) in (\lambda (H4: (eq nat (minus n1 h)
-(S n1))).(le_Sx_x n1 (eq_ind nat (minus n1 h) (\lambda (n2: nat).(le n2 n1))
-(minus_le n1 h) (S n1) H4) P))) H2))))]) H)))))) (\lambda (a0: A).(\lambda
-(_: ((\forall (h: nat).((eq A (aplus g (asucc g a0) h) a0) \to (\forall (P:
-Prop).P))))).(\lambda (a1: A).(\lambda (H0: ((\forall (h: nat).((eq A (aplus
-g (asucc g a1) h) a1) \to (\forall (P: Prop).P))))).(\lambda (h:
-nat).(\lambda (H1: (eq A (aplus g (AHead a0 (asucc g a1)) h) (AHead a0
-a1))).(\lambda (P: Prop).(let H2 \def (eq_ind A (aplus g (AHead a0 (asucc g
-a1)) h) (\lambda (a: A).(eq A a (AHead a0 a1))) H1 (AHead a0 (aplus g (asucc
-g a1) h)) (aplus_ahead_simpl g h a0 (asucc g a1))) in (let H3 \def (f_equal A
-A (\lambda (e: A).(match e in A return (\lambda (_: A).A) with [(ASort _ _)
-\Rightarrow ((let rec aplus (g: G) (a: A) (n: nat) on n: A \def (match n with
-[O \Rightarrow a | (S n0) \Rightarrow (asucc g (aplus g a n0))]) in aplus) g
-(asucc g a1) h) | (AHead _ a) \Rightarrow a])) (AHead a0 (aplus g (asucc g
-a1) h)) (AHead a0 a1) H2) in (H0 h H3 P)))))))))) a)).
+with [(ASort _ n1) \Rightarrow n1 | (AHead _ _) \Rightarrow ((let rec
+next_plus (g0: G) (n1: nat) (i: nat) on i: nat \def (match i with [O
+\Rightarrow n1 | (S i0) \Rightarrow (next g0 (next_plus g0 n1 i0))]) in
+next_plus) g (next g n0) (minus h O))])) (ASort (minus O h) (next_plus g
+(next g n0) (minus h O))) (ASort O n0) H1) in (let H3 \def (eq_ind_r nat
+(minus h O) (\lambda (n1: nat).(eq nat (next_plus g (next g n0) n1) n0)) H2 h
+(minus_n_O h)) in (le_lt_false (next_plus g (next g n0) h) n0 (eq_ind nat
+(next_plus g (next g n0) h) (\lambda (n1: nat).(le (next_plus g (next g n0)
+h) n1)) (le_n (next_plus g (next g n0) h)) n0 H3) (next_plus_lt g h n0)
+P))))) | (S n1) \Rightarrow (\lambda (H0: (eq A (aplus g (ASort n1 n0) h)
+(ASort (S n1) n0))).(let H1 \def (eq_ind A (aplus g (ASort n1 n0) h) (\lambda
+(a0: A).(eq A a0 (ASort (S n1) n0))) H0 (ASort (minus n1 h) (next_plus g n0
+(minus h n1))) (aplus_asort_simpl g h n1 n0)) in (let H2 \def (f_equal A nat
+(\lambda (e: A).(match e in A return (\lambda (_: A).nat) with [(ASort n2 _)
+\Rightarrow n2 | (AHead _ _) \Rightarrow ((let rec minus (n2: nat) on n2:
+(nat \to nat) \def (\lambda (m: nat).(match n2 with [O \Rightarrow O | (S k)
+\Rightarrow (match m with [O \Rightarrow (S k) | (S l) \Rightarrow (minus k
+l)])])) in minus) n1 h)])) (ASort (minus n1 h) (next_plus g n0 (minus h n1)))
+(ASort (S n1) n0) H1) in ((let H3 \def (f_equal A nat (\lambda (e: A).(match
+e in A return (\lambda (_: A).nat) with [(ASort _ n2) \Rightarrow n2 | (AHead
+_ _) \Rightarrow ((let rec next_plus (g0: G) (n2: nat) (i: nat) on i: nat
+\def (match i with [O \Rightarrow n2 | (S i0) \Rightarrow (next g0 (next_plus
+g0 n2 i0))]) in next_plus) g n0 (minus h n1))])) (ASort (minus n1 h)
+(next_plus g n0 (minus h n1))) (ASort (S n1) n0) H1) in (\lambda (H4: (eq nat
+(minus n1 h) (S n1))).(le_Sx_x n1 (eq_ind nat (minus n1 h) (\lambda (n2:
+nat).(le n2 n1)) (minus_le n1 h) (S n1) H4) P))) H2))))]) H)))))) (\lambda
+(a0: A).(\lambda (_: ((\forall (h: nat).((eq A (aplus g (asucc g a0) h) a0)
+\to (\forall (P: Prop).P))))).(\lambda (a1: A).(\lambda (H0: ((\forall (h:
+nat).((eq A (aplus g (asucc g a1) h) a1) \to (\forall (P:
+Prop).P))))).(\lambda (h: nat).(\lambda (H1: (eq A (aplus g (AHead a0 (asucc
+g a1)) h) (AHead a0 a1))).(\lambda (P: Prop).(let H2 \def (eq_ind A (aplus g
+(AHead a0 (asucc g a1)) h) (\lambda (a2: A).(eq A a2 (AHead a0 a1))) H1
+(AHead a0 (aplus g (asucc g a1) h)) (aplus_ahead_simpl g h a0 (asucc g a1)))
+in (let H3 \def (f_equal A A (\lambda (e: A).(match e in A return (\lambda
+(_: A).A) with [(ASort _ _) \Rightarrow ((let rec aplus (g0: G) (a2: A) (n:
+nat) on n: A \def (match n with [O \Rightarrow a2 | (S n0) \Rightarrow (asucc
+g0 (aplus g0 a2 n0))]) in aplus) g (asucc g a1) h) | (AHead _ a2) \Rightarrow
+a2])) (AHead a0 (aplus g (asucc g a1) h)) (AHead a0 a1) H2) in (H0 h H3
+P)))))))))) a)).
theorem aplus_inj:
\forall (g: G).(\forall (h1: nat).(\forall (h2: nat).(\forall (a: A).((eq A
nat).((drop n O (CHead c0 k t) (CHead e (Bind b) u)) \to (drop (S n) O (CHead
c0 k t) e))) (\lambda (H0: (drop O O (CHead c0 k t) (CHead e (Bind b)
u))).(let H1 \def (f_equal C C (\lambda (e0: C).(match e0 in C return
-(\lambda (_: C).C) with [(CSort _) \Rightarrow c0 | (CHead c _ _) \Rightarrow
-c])) (CHead c0 k t) (CHead e (Bind b) u) (drop_gen_refl (CHead c0 k t) (CHead
-e (Bind b) u) H0)) in ((let H2 \def (f_equal C K (\lambda (e0: C).(match e0
-in C return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | (CHead _ k _)
-\Rightarrow k])) (CHead c0 k t) (CHead e (Bind b) u) (drop_gen_refl (CHead c0
-k t) (CHead e (Bind b) u) H0)) in ((let H3 \def (f_equal C T (\lambda (e0:
-C).(match e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow t |
-(CHead _ _ t) \Rightarrow t])) (CHead c0 k t) (CHead e (Bind b) u)
-(drop_gen_refl (CHead c0 k t) (CHead e (Bind b) u) H0)) in (\lambda (H4: (eq
-K k (Bind b))).(\lambda (H5: (eq C c0 e)).(eq_ind C c0 (\lambda (c1: C).(drop
-(S O) O (CHead c0 k t) c1)) (eq_ind_r K (Bind b) (\lambda (k0: K).(drop (S O)
-O (CHead c0 k0 t) c0)) (drop_drop (Bind b) O c0 c0 (drop_refl c0) t) k H4) e
-H5)))) H2)) H1))) (\lambda (n: nat).(\lambda (_: (((drop n O (CHead c0 k t)
-(CHead e (Bind b) u)) \to (drop (S n) O (CHead c0 k t) e)))).(\lambda (H1:
-(drop (S n) O (CHead c0 k t) (CHead e (Bind b) u))).(drop_drop k (S n) c0 e
-(eq_ind_r nat (S (r k n)) (\lambda (n0: nat).(drop n0 O c0 e)) (H e u (r k n)
-(drop_gen_drop k c0 (CHead e (Bind b) u) t n H1)) (r k (S n)) (r_S k n))
-t)))) h)))))))) c)).
+(\lambda (_: C).C) with [(CSort _) \Rightarrow c0 | (CHead c1 _ _)
+\Rightarrow c1])) (CHead c0 k t) (CHead e (Bind b) u) (drop_gen_refl (CHead
+c0 k t) (CHead e (Bind b) u) H0)) in ((let H2 \def (f_equal C K (\lambda (e0:
+C).(match e0 in C return (\lambda (_: C).K) with [(CSort _) \Rightarrow k |
+(CHead _ k0 _) \Rightarrow k0])) (CHead c0 k t) (CHead e (Bind b) u)
+(drop_gen_refl (CHead c0 k t) (CHead e (Bind b) u) H0)) in ((let H3 \def
+(f_equal C T (\lambda (e0: C).(match e0 in C return (\lambda (_: C).T) with
+[(CSort _) \Rightarrow t | (CHead _ _ t0) \Rightarrow t0])) (CHead c0 k t)
+(CHead e (Bind b) u) (drop_gen_refl (CHead c0 k t) (CHead e (Bind b) u) H0))
+in (\lambda (H4: (eq K k (Bind b))).(\lambda (H5: (eq C c0 e)).(eq_ind C c0
+(\lambda (c1: C).(drop (S O) O (CHead c0 k t) c1)) (eq_ind_r K (Bind b)
+(\lambda (k0: K).(drop (S O) O (CHead c0 k0 t) c0)) (drop_drop (Bind b) O c0
+c0 (drop_refl c0) t) k H4) e H5)))) H2)) H1))) (\lambda (n: nat).(\lambda (_:
+(((drop n O (CHead c0 k t) (CHead e (Bind b) u)) \to (drop (S n) O (CHead c0
+k t) e)))).(\lambda (H1: (drop (S n) O (CHead c0 k t) (CHead e (Bind b)
+u))).(drop_drop k (S n) c0 e (eq_ind_r nat (S (r k n)) (\lambda (n0:
+nat).(drop n0 O c0 e)) (H e u (r k n) (drop_gen_drop k c0 (CHead e (Bind b)
+u) t n H1)) (r k (S n)) (r_S k n)) t)))) h)))))))) c)).
theorem drop_ctail:
\forall (c1: C).(\forall (c2: C).(\forall (d: nat).(\forall (h: nat).((drop
(drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u c3)) (\lambda (x0:
C).(\lambda (x1: T).(\lambda (H1: (eq C c3 (CHead x0 k x1))).(\lambda (H2:
(eq T t (lift h (r k n) x1))).(\lambda (H3: (drop h (r k n) c2 x0)).(let H4
-\def (eq_ind C c3 (\lambda (c: C).(\forall (h: nat).((drop h n (CHead c2 k t)
-c) \to (\forall (k0: K).(\forall (u: T).(drop h n (CTail k0 u (CHead c2 k t))
-(CTail k0 u c))))))) H (CHead x0 k x1) H1) in (eq_ind_r C (CHead x0 k x1)
-(\lambda (c: C).(drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u c)))
-(let H5 \def (eq_ind T t (\lambda (t: T).(\forall (h: nat).((drop h n (CHead
-c2 k t) (CHead x0 k x1)) \to (\forall (k0: K).(\forall (u: T).(drop h n
-(CTail k0 u (CHead c2 k t)) (CTail k0 u (CHead x0 k x1)))))))) H4 (lift h (r
-k n) x1) H2) in (eq_ind_r T (lift h (r k n) x1) (\lambda (t0: T).(drop h (S
-n) (CTail k0 u (CHead c2 k t0)) (CTail k0 u (CHead x0 k x1)))) (drop_skip k h
-n (CTail k0 u c2) (CTail k0 u x0) (IHc x0 (r k n) h H3 k0 u) x1) t H2)) c3
-H1))))))) (drop_gen_skip_l c2 c3 t h n k H0)))))))) d))))))) c1).
+\def (eq_ind C c3 (\lambda (c: C).(\forall (h0: nat).((drop h0 n (CHead c2 k
+t) c) \to (\forall (k1: K).(\forall (u0: T).(drop h0 n (CTail k1 u0 (CHead c2
+k t)) (CTail k1 u0 c))))))) H (CHead x0 k x1) H1) in (eq_ind_r C (CHead x0 k
+x1) (\lambda (c: C).(drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u
+c))) (let H5 \def (eq_ind T t (\lambda (t0: T).(\forall (h0: nat).((drop h0 n
+(CHead c2 k t0) (CHead x0 k x1)) \to (\forall (k1: K).(\forall (u0: T).(drop
+h0 n (CTail k1 u0 (CHead c2 k t0)) (CTail k1 u0 (CHead x0 k x1)))))))) H4
+(lift h (r k n) x1) H2) in (eq_ind_r T (lift h (r k n) x1) (\lambda (t0:
+T).(drop h (S n) (CTail k0 u (CHead c2 k t0)) (CTail k0 u (CHead x0 k x1))))
+(drop_skip k h n (CTail k0 u c2) (CTail k0 u x0) (IHc x0 (r k n) h H3 k0 u)
+x1) t H2)) c3 H1))))))) (drop_gen_skip_l c2 c3 t h n k H0)))))))) d)))))))
+c1).
theorem drop_mono:
\forall (c: C).(\forall (x1: C).(\forall (d: nat).(\forall (h: nat).((drop h
x1 (CSort n)) (eq nat h O) (eq nat d O) (eq C x1 x2) (\lambda (H4: (eq C x1
(CSort n))).(\lambda (H5: (eq nat h O)).(\lambda (H6: (eq nat d O)).(eq_ind_r
C (CSort n) (\lambda (c0: C).(eq C x1 c0)) (let H7 \def (eq_ind nat h
-(\lambda (n: nat).(eq nat n O)) H2 O H5) in (let H8 \def (eq_ind nat d
-(\lambda (n: nat).(eq nat n O)) H3 O H6) in (eq_ind_r C (CSort n) (\lambda
+(\lambda (n0: nat).(eq nat n0 O)) H2 O H5) in (let H8 \def (eq_ind nat d
+(\lambda (n0: nat).(eq nat n0 O)) H3 O H6) in (eq_ind_r C (CSort n) (\lambda
(c0: C).(eq C c0 (CSort n))) (refl_equal C (CSort n)) x1 H4))) x2 H1))))
(drop_gen_sort n h d x1 H))))) (drop_gen_sort n h d x2 H0))))))))) (\lambda
(c0: C).(\lambda (H: ((\forall (x1: C).(\forall (d: nat).(\forall (h:
C).(\lambda (x5: T).(\lambda (H6: (eq C x1 (CHead x4 k x5))).(\lambda (H7:
(eq T t (lift h (r k n) x5))).(\lambda (H8: (drop h (r k n) c0 x4)).(eq_ind_r
C (CHead x0 k x3) (\lambda (c1: C).(eq C x1 c1)) (let H9 \def (eq_ind C x1
-(\lambda (c: C).(\forall (h: nat).((drop h n (CHead c0 k t) c) \to (\forall
-(x2: C).((drop h n (CHead c0 k t) x2) \to (eq C c x2)))))) H0 (CHead x4 k x5)
-H6) in (eq_ind_r C (CHead x4 k x5) (\lambda (c1: C).(eq C c1 (CHead x0 k
-x3))) (let H10 \def (eq_ind T t (\lambda (t: T).(\forall (h: nat).((drop h n
-(CHead c0 k t) (CHead x4 k x5)) \to (\forall (x2: C).((drop h n (CHead c0 k
-t) x2) \to (eq C (CHead x4 k x5) x2)))))) H9 (lift h (r k n) x5) H7) in (let
-H11 \def (eq_ind T t (\lambda (t: T).(eq T t (lift h (r k n) x3))) H4 (lift h
-(r k n) x5) H7) in (let H12 \def (eq_ind T x5 (\lambda (t: T).(\forall (h0:
-nat).((drop h0 n (CHead c0 k (lift h (r k n) t)) (CHead x4 k t)) \to (\forall
-(x2: C).((drop h0 n (CHead c0 k (lift h (r k n) t)) x2) \to (eq C (CHead x4 k
-t) x2)))))) H10 x3 (lift_inj x5 x3 h (r k n) H11)) in (eq_ind_r T x3 (\lambda
-(t0: T).(eq C (CHead x4 k t0) (CHead x0 k x3))) (sym_equal C (CHead x0 k x3)
-(CHead x4 k x3) (sym_equal C (CHead x4 k x3) (CHead x0 k x3) (sym_equal C
-(CHead x0 k x3) (CHead x4 k x3) (f_equal3 C K T C CHead x0 x4 k k x3 x3 (H x0
-(r k n) h H5 x4 H8) (refl_equal K k) (refl_equal T x3))))) x5 (lift_inj x5 x3
-h (r k n) H11))))) x1 H6)) x2 H3)))))) (drop_gen_skip_l c0 x1 t h n k
-H1))))))) (drop_gen_skip_l c0 x2 t h n k H2)))))))) d))))))) c).
+(\lambda (c1: C).(\forall (h0: nat).((drop h0 n (CHead c0 k t) c1) \to
+(\forall (x6: C).((drop h0 n (CHead c0 k t) x6) \to (eq C c1 x6)))))) H0
+(CHead x4 k x5) H6) in (eq_ind_r C (CHead x4 k x5) (\lambda (c1: C).(eq C c1
+(CHead x0 k x3))) (let H10 \def (eq_ind T t (\lambda (t0: T).(\forall (h0:
+nat).((drop h0 n (CHead c0 k t0) (CHead x4 k x5)) \to (\forall (x6: C).((drop
+h0 n (CHead c0 k t0) x6) \to (eq C (CHead x4 k x5) x6)))))) H9 (lift h (r k
+n) x5) H7) in (let H11 \def (eq_ind T t (\lambda (t0: T).(eq T t0 (lift h (r
+k n) x3))) H4 (lift h (r k n) x5) H7) in (let H12 \def (eq_ind T x5 (\lambda
+(t0: T).(\forall (h0: nat).((drop h0 n (CHead c0 k (lift h (r k n) t0))
+(CHead x4 k t0)) \to (\forall (x6: C).((drop h0 n (CHead c0 k (lift h (r k n)
+t0)) x6) \to (eq C (CHead x4 k t0) x6)))))) H10 x3 (lift_inj x5 x3 h (r k n)
+H11)) in (eq_ind_r T x3 (\lambda (t0: T).(eq C (CHead x4 k t0) (CHead x0 k
+x3))) (sym_eq C (CHead x0 k x3) (CHead x4 k x3) (sym_eq C (CHead x4 k x3)
+(CHead x0 k x3) (sym_eq C (CHead x0 k x3) (CHead x4 k x3) (f_equal3 C K T C
+CHead x0 x4 k k x3 x3 (H x0 (r k n) h H5 x4 H8) (refl_equal K k) (refl_equal
+T x3))))) x5 (lift_inj x5 x3 h (r k n) H11))))) x1 H6)) x2 H3))))))
+(drop_gen_skip_l c0 x1 t h n k H1))))))) (drop_gen_skip_l c0 x2 t h n k
+H2)))))))) d))))))) c).
theorem drop_conf_lt:
\forall (k: K).(\forall (i: nat).(\forall (u: T).(\forall (c0: C).(\forall
T).(\lambda (e0: C).(drop h (r k d) c0 e0))))))))))))) (\lambda (u:
T).(\lambda (c0: C).(\lambda (c: C).(\lambda (H: (drop O O c (CHead c0 k
u))).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H0: (drop
-h (S (plus O d)) c e)).(let H1 \def (eq_ind C c (\lambda (c: C).(drop h (S
-(plus O d)) c e)) H0 (CHead c0 k u) (drop_gen_refl c (CHead c0 k u) H)) in
+h (S (plus O d)) c e)).(let H1 \def (eq_ind C c (\lambda (c1: C).(drop h (S
+(plus O d)) c1 e)) H0 (CHead c0 k u) (drop_gen_refl c (CHead c0 k u) H)) in
(ex3_2_ind C T (\lambda (e0: C).(\lambda (v: T).(eq C e (CHead e0 k v))))
(\lambda (_: C).(\lambda (v: T).(eq T u (lift h (r k (plus O d)) v))))
(\lambda (e0: C).(\lambda (_: T).(drop h (r k (plus O d)) c0 e0))) (ex3_2 T C
a)))))))))) (\lambda (a: C).(\lambda (c: C).(\lambda (H: (drop O O c
a)).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H0: (drop h
d c e)).(\lambda (H1: (le (plus d h) O)).(let H2 \def (eq_ind C c (\lambda
-(c: C).(drop h d c e)) H0 a (drop_gen_refl c a H)) in (let H3 \def (match H1
-in le return (\lambda (n: nat).(\lambda (_: (le ? n)).((eq nat n O) \to (drop
-(minus O h) O e a)))) with [le_n \Rightarrow (\lambda (H: (eq nat (plus d h)
-O)).(let H3 \def (f_equal nat nat (\lambda (e0: nat).e0) (plus d h) O H) in
-(eq_ind nat (plus d h) (\lambda (n: nat).(drop (minus n h) n e a)) (eq_ind_r
-nat O (\lambda (n: nat).(drop (minus n h) n e a)) (and_ind (eq nat d O) (eq
-nat h O) (drop O O e a) (\lambda (H0: (eq nat d O)).(\lambda (H1: (eq nat h
-O)).(let H2 \def (eq_ind nat d (\lambda (n: nat).(drop h n a e)) H2 O H0) in
-(let H4 \def (eq_ind nat h (\lambda (n: nat).(drop n O a e)) H2 O H1) in
-(eq_ind C a (\lambda (c: C).(drop O O c a)) (drop_refl a) e (drop_gen_refl a
-e H4)))))) (plus_O d h H3)) (plus d h) H3) O H3))) | (le_S m H) \Rightarrow
-(\lambda (H2: (eq nat (S m) O)).((let H0 \def (eq_ind nat (S m) (\lambda (e0:
-nat).(match e0 in nat return (\lambda (_: nat).Prop) with [O \Rightarrow
-False | (S _) \Rightarrow True])) I O H2) in (False_ind ((le (plus d h) m)
-\to (drop (minus O h) O e a)) H0)) H))]) in (H3 (refl_equal nat O))))))))))))
-(\lambda (i0: nat).(\lambda (H: ((\forall (a: C).(\forall (c: C).((drop i0 O
-c a) \to (\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h d c e)
-\to ((le (plus d h) i0) \to (drop (minus i0 h) O e a))))))))))).(\lambda (a:
-C).(\lambda (c: C).(C_ind (\lambda (c0: C).((drop (S i0) O c0 a) \to (\forall
-(e: C).(\forall (h: nat).(\forall (d: nat).((drop h d c0 e) \to ((le (plus d
-h) (S i0)) \to (drop (minus (S i0) h) O e a)))))))) (\lambda (n:
-nat).(\lambda (H0: (drop (S i0) O (CSort n) a)).(\lambda (e: C).(\lambda (h:
-nat).(\lambda (d: nat).(\lambda (H1: (drop h d (CSort n) e)).(\lambda (H2:
-(le (plus d h) (S i0))).(and3_ind (eq C e (CSort n)) (eq nat h O) (eq nat d
-O) (drop (minus (S i0) h) O e a) (\lambda (H3: (eq C e (CSort n))).(\lambda
-(H4: (eq nat h O)).(\lambda (H5: (eq nat d O)).(and3_ind (eq C a (CSort n))
-(eq nat (S i0) O) (eq nat O O) (drop (minus (S i0) h) O e a) (\lambda (H6:
-(eq C a (CSort n))).(\lambda (H7: (eq nat (S i0) O)).(\lambda (_: (eq nat O
-O)).(let H9 \def (eq_ind nat d (\lambda (n: nat).(le (plus n h) (S i0))) H2 O
-H5) in (let H10 \def (eq_ind nat h (\lambda (n: nat).(le (plus O n) (S i0)))
-H9 O H4) in (eq_ind_r nat O (\lambda (n0: nat).(drop (minus (S i0) n0) O e
-a)) (eq_ind_r C (CSort n) (\lambda (c0: C).(drop (minus (S i0) O) O c0 a))
-(eq_ind_r C (CSort n) (\lambda (c0: C).(drop (minus (S i0) O) O (CSort n)
-c0)) (let H11 \def (eq_ind nat (S i0) (\lambda (ee: nat).(match ee in nat
-return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow
-True])) I O H7) in (False_ind (drop (minus (S i0) O) O (CSort n) (CSort n))
-H11)) a H6) e H3) h H4)))))) (drop_gen_sort n (S i0) O a H0)))))
-(drop_gen_sort n h d e H1))))))))) (\lambda (c0: C).(\lambda (H0: (((drop (S
-i0) O c0 a) \to (\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h
-d c0 e) \to ((le (plus d h) (S i0)) \to (drop (minus (S i0) h) O e
-a))))))))).(\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (t: T).((drop (S
-i0) O (CHead c0 k0 t) a) \to (\forall (e: C).(\forall (h: nat).(\forall (d:
-nat).((drop h d (CHead c0 k0 t) e) \to ((le (plus d h) (S i0)) \to (drop
-(minus (S i0) h) O e a))))))))) (\lambda (b: B).(\lambda (t: T).(\lambda (H1:
-(drop (S i0) O (CHead c0 (Bind b) t) a)).(\lambda (e: C).(\lambda (h:
-nat).(\lambda (d: nat).(\lambda (H2: (drop h d (CHead c0 (Bind b) t)
+(c0: C).(drop h d c0 e)) H0 a (drop_gen_refl c a H)) in (let H3 \def (match
+H1 in le return (\lambda (n: nat).(\lambda (_: (le ? n)).((eq nat n O) \to
+(drop (minus O h) O e a)))) with [le_n \Rightarrow (\lambda (H3: (eq nat
+(plus d h) O)).(let H4 \def (f_equal nat nat (\lambda (e0: nat).e0) (plus d
+h) O H3) in (eq_ind nat (plus d h) (\lambda (n: nat).(drop (minus n h) n e
+a)) (eq_ind_r nat O (\lambda (n: nat).(drop (minus n h) n e a)) (and_ind (eq
+nat d O) (eq nat h O) (drop O O e a) (\lambda (H5: (eq nat d O)).(\lambda
+(H6: (eq nat h O)).(let H7 \def (eq_ind nat d (\lambda (n: nat).(drop h n a
+e)) H2 O H5) in (let H8 \def (eq_ind nat h (\lambda (n: nat).(drop n O a e))
+H7 O H6) in (eq_ind C a (\lambda (c0: C).(drop O O c0 a)) (drop_refl a) e
+(drop_gen_refl a e H8)))))) (plus_O d h H4)) (plus d h) H4) O H4))) | (le_S m
+H3) \Rightarrow (\lambda (H4: (eq nat (S m) O)).((let H5 \def (eq_ind nat (S
+m) (\lambda (e0: nat).(match e0 in nat return (\lambda (_: nat).Prop) with [O
+\Rightarrow False | (S _) \Rightarrow True])) I O H4) in (False_ind ((le
+(plus d h) m) \to (drop (minus O h) O e a)) H5)) H3))]) in (H3 (refl_equal
+nat O)))))))))))) (\lambda (i0: nat).(\lambda (H: ((\forall (a: C).(\forall
+(c: C).((drop i0 O c a) \to (\forall (e: C).(\forall (h: nat).(\forall (d:
+nat).((drop h d c e) \to ((le (plus d h) i0) \to (drop (minus i0 h) O e
+a))))))))))).(\lambda (a: C).(\lambda (c: C).(C_ind (\lambda (c0: C).((drop
+(S i0) O c0 a) \to (\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop
+h d c0 e) \to ((le (plus d h) (S i0)) \to (drop (minus (S i0) h) O e
+a)))))))) (\lambda (n: nat).(\lambda (H0: (drop (S i0) O (CSort n)
+a)).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: (drop h
+d (CSort n) e)).(\lambda (H2: (le (plus d h) (S i0))).(and3_ind (eq C e
+(CSort n)) (eq nat h O) (eq nat d O) (drop (minus (S i0) h) O e a) (\lambda
+(H3: (eq C e (CSort n))).(\lambda (H4: (eq nat h O)).(\lambda (H5: (eq nat d
+O)).(and3_ind (eq C a (CSort n)) (eq nat (S i0) O) (eq nat O O) (drop (minus
+(S i0) h) O e a) (\lambda (H6: (eq C a (CSort n))).(\lambda (H7: (eq nat (S
+i0) O)).(\lambda (_: (eq nat O O)).(let H9 \def (eq_ind nat d (\lambda (n0:
+nat).(le (plus n0 h) (S i0))) H2 O H5) in (let H10 \def (eq_ind nat h
+(\lambda (n0: nat).(le (plus O n0) (S i0))) H9 O H4) in (eq_ind_r nat O
+(\lambda (n0: nat).(drop (minus (S i0) n0) O e a)) (eq_ind_r C (CSort n)
+(\lambda (c0: C).(drop (minus (S i0) O) O c0 a)) (eq_ind_r C (CSort n)
+(\lambda (c0: C).(drop (minus (S i0) O) O (CSort n) c0)) (let H11 \def
+(eq_ind nat (S i0) (\lambda (ee: nat).(match ee in nat return (\lambda (_:
+nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) I O H7) in
+(False_ind (drop (minus (S i0) O) O (CSort n) (CSort n)) H11)) a H6) e H3) h
+H4)))))) (drop_gen_sort n (S i0) O a H0))))) (drop_gen_sort n h d e
+H1))))))))) (\lambda (c0: C).(\lambda (H0: (((drop (S i0) O c0 a) \to
+(\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h d c0 e) \to ((le
+(plus d h) (S i0)) \to (drop (minus (S i0) h) O e a))))))))).(\lambda (k:
+K).(K_ind (\lambda (k0: K).(\forall (t: T).((drop (S i0) O (CHead c0 k0 t) a)
+\to (\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h d (CHead c0
+k0 t) e) \to ((le (plus d h) (S i0)) \to (drop (minus (S i0) h) O e
+a))))))))) (\lambda (b: B).(\lambda (t: T).(\lambda (H1: (drop (S i0) O
+(CHead c0 (Bind b) t) a)).(\lambda (e: C).(\lambda (h: nat).(\lambda (d:
+nat).(\lambda (H2: (drop h d (CHead c0 (Bind b) t) e)).(\lambda (H3: (le
+(plus d h) (S i0))).(nat_ind (\lambda (n: nat).((drop h n (CHead c0 (Bind b)
+t) e) \to ((le (plus n h) (S i0)) \to (drop (minus (S i0) h) O e a))))
+(\lambda (H4: (drop h O (CHead c0 (Bind b) t) e)).(\lambda (H5: (le (plus O
+h) (S i0))).(nat_ind (\lambda (n: nat).((drop n O (CHead c0 (Bind b) t) e)
+\to ((le (plus O n) (S i0)) \to (drop (minus (S i0) n) O e a)))) (\lambda
+(H6: (drop O O (CHead c0 (Bind b) t) e)).(\lambda (_: (le (plus O O) (S
+i0))).(eq_ind C (CHead c0 (Bind b) t) (\lambda (c1: C).(drop (minus (S i0) O)
+O c1 a)) (drop_drop (Bind b) i0 c0 a (drop_gen_drop (Bind b) c0 a t i0 H1) t)
+e (drop_gen_refl (CHead c0 (Bind b) t) e H6)))) (\lambda (h0: nat).(\lambda
+(_: (((drop h0 O (CHead c0 (Bind b) t) e) \to ((le (plus O h0) (S i0)) \to
+(drop (minus (S i0) h0) O e a))))).(\lambda (H6: (drop (S h0) O (CHead c0
+(Bind b) t) e)).(\lambda (H7: (le (plus O (S h0)) (S i0))).(H a c0
+(drop_gen_drop (Bind b) c0 a t i0 H1) e h0 O (drop_gen_drop (Bind b) c0 e t
+h0 H6) (le_S_n (plus O h0) i0 H7)))))) h H4 H5))) (\lambda (d0: nat).(\lambda
+(_: (((drop h d0 (CHead c0 (Bind b) t) e) \to ((le (plus d0 h) (S i0)) \to
+(drop (minus (S i0) h) O e a))))).(\lambda (H4: (drop h (S d0) (CHead c0
+(Bind b) t) e)).(\lambda (H5: (le (plus (S d0) h) (S i0))).(ex3_2_ind C T
+(\lambda (e0: C).(\lambda (v: T).(eq C e (CHead e0 (Bind b) v)))) (\lambda
+(_: C).(\lambda (v: T).(eq T t (lift h (r (Bind b) d0) v)))) (\lambda (e0:
+C).(\lambda (_: T).(drop h (r (Bind b) d0) c0 e0))) (drop (minus (S i0) h) O
+e a) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (eq C e (CHead x0 (Bind
+b) x1))).(\lambda (_: (eq T t (lift h (r (Bind b) d0) x1))).(\lambda (H8:
+(drop h (r (Bind b) d0) c0 x0)).(eq_ind_r C (CHead x0 (Bind b) x1) (\lambda
+(c1: C).(drop (minus (S i0) h) O c1 a)) (eq_ind nat (S (minus i0 h)) (\lambda
+(n: nat).(drop n O (CHead x0 (Bind b) x1) a)) (drop_drop (Bind b) (minus i0
+h) x0 a (H a c0 (drop_gen_drop (Bind b) c0 a t i0 H1) x0 h d0 H8 (le_S_n
+(plus d0 h) i0 H5)) x1) (minus (S i0) h) (minus_Sn_m i0 h (le_trans_plus_r d0
+h i0 (le_S_n (plus d0 h) i0 H5)))) e H6)))))) (drop_gen_skip_l c0 e t h d0
+(Bind b) H4)))))) d H2 H3))))))))) (\lambda (f: F).(\lambda (t: T).(\lambda
+(H1: (drop (S i0) O (CHead c0 (Flat f) t) a)).(\lambda (e: C).(\lambda (h:
+nat).(\lambda (d: nat).(\lambda (H2: (drop h d (CHead c0 (Flat f) t)
e)).(\lambda (H3: (le (plus d h) (S i0))).(nat_ind (\lambda (n: nat).((drop h
-n (CHead c0 (Bind b) t) e) \to ((le (plus n h) (S i0)) \to (drop (minus (S
-i0) h) O e a)))) (\lambda (H4: (drop h O (CHead c0 (Bind b) t) e)).(\lambda
+n (CHead c0 (Flat f) t) e) \to ((le (plus n h) (S i0)) \to (drop (minus (S
+i0) h) O e a)))) (\lambda (H4: (drop h O (CHead c0 (Flat f) t) e)).(\lambda
(H5: (le (plus O h) (S i0))).(nat_ind (\lambda (n: nat).((drop n O (CHead c0
-(Bind b) t) e) \to ((le (plus O n) (S i0)) \to (drop (minus (S i0) n) O e
-a)))) (\lambda (H6: (drop O O (CHead c0 (Bind b) t) e)).(\lambda (_: (le
-(plus O O) (S i0))).(eq_ind C (CHead c0 (Bind b) t) (\lambda (c1: C).(drop
-(minus (S i0) O) O c1 a)) (drop_drop (Bind b) i0 c0 a (drop_gen_drop (Bind b)
-c0 a t i0 H1) t) e (drop_gen_refl (CHead c0 (Bind b) t) e H6)))) (\lambda
-(h0: nat).(\lambda (_: (((drop h0 O (CHead c0 (Bind b) t) e) \to ((le (plus O
+(Flat f) t) e) \to ((le (plus O n) (S i0)) \to (drop (minus (S i0) n) O e
+a)))) (\lambda (H6: (drop O O (CHead c0 (Flat f) t) e)).(\lambda (_: (le
+(plus O O) (S i0))).(eq_ind C (CHead c0 (Flat f) t) (\lambda (c1: C).(drop
+(minus (S i0) O) O c1 a)) (drop_drop (Flat f) i0 c0 a (drop_gen_drop (Flat f)
+c0 a t i0 H1) t) e (drop_gen_refl (CHead c0 (Flat f) t) e H6)))) (\lambda
+(h0: nat).(\lambda (_: (((drop h0 O (CHead c0 (Flat f) t) e) \to ((le (plus O
h0) (S i0)) \to (drop (minus (S i0) h0) O e a))))).(\lambda (H6: (drop (S h0)
-O (CHead c0 (Bind b) t) e)).(\lambda (H7: (le (plus O (S h0)) (S i0))).(H a
-c0 (drop_gen_drop (Bind b) c0 a t i0 H1) e h0 O (drop_gen_drop (Bind b) c0 e
-t h0 H6) (le_S_n (plus O h0) i0 H7)))))) h H4 H5))) (\lambda (d0:
-nat).(\lambda (_: (((drop h d0 (CHead c0 (Bind b) t) e) \to ((le (plus d0 h)
-(S i0)) \to (drop (minus (S i0) h) O e a))))).(\lambda (H4: (drop h (S d0)
-(CHead c0 (Bind b) t) e)).(\lambda (H5: (le (plus (S d0) h) (S
-i0))).(ex3_2_ind C T (\lambda (e0: C).(\lambda (v: T).(eq C e (CHead e0 (Bind
-b) v)))) (\lambda (_: C).(\lambda (v: T).(eq T t (lift h (r (Bind b) d0)
-v)))) (\lambda (e0: C).(\lambda (_: T).(drop h (r (Bind b) d0) c0 e0))) (drop
-(minus (S i0) h) O e a) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (eq C
-e (CHead x0 (Bind b) x1))).(\lambda (_: (eq T t (lift h (r (Bind b) d0)
-x1))).(\lambda (H8: (drop h (r (Bind b) d0) c0 x0)).(eq_ind_r C (CHead x0
-(Bind b) x1) (\lambda (c1: C).(drop (minus (S i0) h) O c1 a)) (eq_ind nat (S
-(minus i0 h)) (\lambda (n: nat).(drop n O (CHead x0 (Bind b) x1) a))
-(drop_drop (Bind b) (minus i0 h) x0 a (H a c0 (drop_gen_drop (Bind b) c0 a t
-i0 H1) x0 h d0 H8 (le_S_n (plus d0 h) i0 H5)) x1) (minus (S i0) h)
-(minus_Sn_m i0 h (le_trans_plus_r d0 h i0 (le_S_n (plus d0 h) i0 H5)))) e
-H6)))))) (drop_gen_skip_l c0 e t h d0 (Bind b) H4)))))) d H2 H3)))))))))
-(\lambda (f: F).(\lambda (t: T).(\lambda (H1: (drop (S i0) O (CHead c0 (Flat
-f) t) a)).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H2:
-(drop h d (CHead c0 (Flat f) t) e)).(\lambda (H3: (le (plus d h) (S
-i0))).(nat_ind (\lambda (n: nat).((drop h n (CHead c0 (Flat f) t) e) \to ((le
-(plus n h) (S i0)) \to (drop (minus (S i0) h) O e a)))) (\lambda (H4: (drop h
-O (CHead c0 (Flat f) t) e)).(\lambda (H5: (le (plus O h) (S i0))).(nat_ind
-(\lambda (n: nat).((drop n O (CHead c0 (Flat f) t) e) \to ((le (plus O n) (S
-i0)) \to (drop (minus (S i0) n) O e a)))) (\lambda (H6: (drop O O (CHead c0
-(Flat f) t) e)).(\lambda (_: (le (plus O O) (S i0))).(eq_ind C (CHead c0
-(Flat f) t) (\lambda (c1: C).(drop (minus (S i0) O) O c1 a)) (drop_drop (Flat
-f) i0 c0 a (drop_gen_drop (Flat f) c0 a t i0 H1) t) e (drop_gen_refl (CHead
-c0 (Flat f) t) e H6)))) (\lambda (h0: nat).(\lambda (_: (((drop h0 O (CHead
-c0 (Flat f) t) e) \to ((le (plus O h0) (S i0)) \to (drop (minus (S i0) h0) O
-e a))))).(\lambda (H6: (drop (S h0) O (CHead c0 (Flat f) t) e)).(\lambda (H7:
-(le (plus O (S h0)) (S i0))).(H0 (drop_gen_drop (Flat f) c0 a t i0 H1) e (S
-h0) O (drop_gen_drop (Flat f) c0 e t h0 H6) H7))))) h H4 H5))) (\lambda (d0:
-nat).(\lambda (_: (((drop h d0 (CHead c0 (Flat f) t) e) \to ((le (plus d0 h)
-(S i0)) \to (drop (minus (S i0) h) O e a))))).(\lambda (H4: (drop h (S d0)
-(CHead c0 (Flat f) t) e)).(\lambda (H5: (le (plus (S d0) h) (S
-i0))).(ex3_2_ind C T (\lambda (e0: C).(\lambda (v: T).(eq C e (CHead e0 (Flat
-f) v)))) (\lambda (_: C).(\lambda (v: T).(eq T t (lift h (r (Flat f) d0)
-v)))) (\lambda (e0: C).(\lambda (_: T).(drop h (r (Flat f) d0) c0 e0))) (drop
-(minus (S i0) h) O e a) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (eq C
-e (CHead x0 (Flat f) x1))).(\lambda (_: (eq T t (lift h (r (Flat f) d0)
-x1))).(\lambda (H8: (drop h (r (Flat f) d0) c0 x0)).(eq_ind_r C (CHead x0
-(Flat f) x1) (\lambda (c1: C).(drop (minus (S i0) h) O c1 a)) (let H9 \def
-(eq_ind_r nat (minus (S i0) h) (\lambda (n: nat).(drop n O x0 a)) (H0
-(drop_gen_drop (Flat f) c0 a t i0 H1) x0 h (S d0) H8 H5) (S (minus i0 h))
-(minus_Sn_m i0 h (le_trans_plus_r d0 h i0 (le_S_n (plus d0 h) i0 H5)))) in
-(eq_ind nat (S (minus i0 h)) (\lambda (n: nat).(drop n O (CHead x0 (Flat f)
-x1) a)) (drop_drop (Flat f) (minus i0 h) x0 a H9 x1) (minus (S i0) h)
-(minus_Sn_m i0 h (le_trans_plus_r d0 h i0 (le_S_n (plus d0 h) i0 H5))))) e
-H6)))))) (drop_gen_skip_l c0 e t h d0 (Flat f) H4)))))) d H2 H3)))))))))
-k)))) c))))) i).
+O (CHead c0 (Flat f) t) e)).(\lambda (H7: (le (plus O (S h0)) (S i0))).(H0
+(drop_gen_drop (Flat f) c0 a t i0 H1) e (S h0) O (drop_gen_drop (Flat f) c0 e
+t h0 H6) H7))))) h H4 H5))) (\lambda (d0: nat).(\lambda (_: (((drop h d0
+(CHead c0 (Flat f) t) e) \to ((le (plus d0 h) (S i0)) \to (drop (minus (S i0)
+h) O e a))))).(\lambda (H4: (drop h (S d0) (CHead c0 (Flat f) t) e)).(\lambda
+(H5: (le (plus (S d0) h) (S i0))).(ex3_2_ind C T (\lambda (e0: C).(\lambda
+(v: T).(eq C e (CHead e0 (Flat f) v)))) (\lambda (_: C).(\lambda (v: T).(eq T
+t (lift h (r (Flat f) d0) v)))) (\lambda (e0: C).(\lambda (_: T).(drop h (r
+(Flat f) d0) c0 e0))) (drop (minus (S i0) h) O e a) (\lambda (x0: C).(\lambda
+(x1: T).(\lambda (H6: (eq C e (CHead x0 (Flat f) x1))).(\lambda (_: (eq T t
+(lift h (r (Flat f) d0) x1))).(\lambda (H8: (drop h (r (Flat f) d0) c0
+x0)).(eq_ind_r C (CHead x0 (Flat f) x1) (\lambda (c1: C).(drop (minus (S i0)
+h) O c1 a)) (let H9 \def (eq_ind_r nat (minus (S i0) h) (\lambda (n:
+nat).(drop n O x0 a)) (H0 (drop_gen_drop (Flat f) c0 a t i0 H1) x0 h (S d0)
+H8 H5) (S (minus i0 h)) (minus_Sn_m i0 h (le_trans_plus_r d0 h i0 (le_S_n
+(plus d0 h) i0 H5)))) in (eq_ind nat (S (minus i0 h)) (\lambda (n: nat).(drop
+n O (CHead x0 (Flat f) x1) a)) (drop_drop (Flat f) (minus i0 h) x0 a H9 x1)
+(minus (S i0) h) (minus_Sn_m i0 h (le_trans_plus_r d0 h i0 (le_S_n (plus d0
+h) i0 H5))))) e H6)))))) (drop_gen_skip_l c0 e t h d0 (Flat f) H4)))))) d H2
+H3))))))))) k)))) c))))) i).
theorem drop_conf_rev:
\forall (j: nat).(\forall (e1: C).(\forall (e2: C).((drop j O e1 e2) \to
c2 e2)).(\lambda (H1: (le d O)).(eq_ind C c2 (\lambda (c: C).(drop (plus O h)
O c1 c)) (let H2 \def (match H1 in le return (\lambda (n: nat).(\lambda (_:
(le ? n)).((eq nat n O) \to (drop (plus O h) O c1 c2)))) with [le_n
-\Rightarrow (\lambda (H0: (eq nat d O)).(eq_ind nat O (\lambda (_: nat).(drop
-(plus O h) O c1 c2)) (let H2 \def (eq_ind nat d (\lambda (n: nat).(le n O))
-H1 O H0) in (let H3 \def (eq_ind nat d (\lambda (n: nat).(drop h n c1 c2)) H
-O H0) in H3)) d (sym_eq nat d O H0))) | (le_S m H0) \Rightarrow (\lambda (H2:
-(eq nat (S m) O)).((let H1 \def (eq_ind nat (S m) (\lambda (e: nat).(match e
+\Rightarrow (\lambda (H2: (eq nat d O)).(eq_ind nat O (\lambda (_: nat).(drop
+(plus O h) O c1 c2)) (let H3 \def (eq_ind nat d (\lambda (n: nat).(le n O))
+H1 O H2) in (let H4 \def (eq_ind nat d (\lambda (n: nat).(drop h n c1 c2)) H
+O H2) in H4)) d (sym_eq nat d O H2))) | (le_S m H2) \Rightarrow (\lambda (H3:
+(eq nat (S m) O)).((let H4 \def (eq_ind nat (S m) (\lambda (e: nat).(match e
in nat return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S _)
-\Rightarrow True])) I O H2) in (False_ind ((le d m) \to (drop (plus O h) O c1
-c2)) H1)) H0))]) in (H2 (refl_equal nat O))) e2 (drop_gen_refl c2 e2
+\Rightarrow True])) I O H3) in (False_ind ((le d m) \to (drop (plus O h) O c1
+c2)) H4)) H2))]) in (H2 (refl_equal nat O))) e2 (drop_gen_refl c2 e2
H0)))))))))) (\lambda (i0: nat).(\lambda (IHi: ((\forall (c1: C).(\forall
(c2: C).(\forall (d: nat).(\forall (h: nat).((drop h d c1 c2) \to (\forall
(e2: C).((drop i0 O c2 e2) \to ((le d i0) \to (drop (plus i0 h) O c1
n)) (eq nat h O) (eq nat d O) (drop (S (plus i0 h)) O (CSort n) e2) (\lambda
(H2: (eq C c2 (CSort n))).(\lambda (H3: (eq nat h O)).(\lambda (H4: (eq nat d
O)).(eq_ind_r nat O (\lambda (n0: nat).(drop (S (plus i0 n0)) O (CSort n)
-e2)) (let H5 \def (eq_ind nat d (\lambda (n: nat).(le n (S i0))) H1 O H4) in
-(let H6 \def (eq_ind C c2 (\lambda (c: C).(drop (S i0) O c e2)) H0 (CSort n)
-H2) in (and3_ind (eq C e2 (CSort n)) (eq nat (S i0) O) (eq nat O O) (drop (S
-(plus i0 O)) O (CSort n) e2) (\lambda (H7: (eq C e2 (CSort n))).(\lambda (H8:
-(eq nat (S i0) O)).(\lambda (_: (eq nat O O)).(eq_ind_r C (CSort n) (\lambda
-(c: C).(drop (S (plus i0 O)) O (CSort n) c)) (let H10 \def (eq_ind nat (S i0)
-(\lambda (ee: nat).(match ee in nat return (\lambda (_: nat).Prop) with [O
-\Rightarrow False | (S _) \Rightarrow True])) I O H8) in (False_ind (drop (S
-(plus i0 O)) O (CSort n) (CSort n)) H10)) e2 H7)))) (drop_gen_sort n (S i0) O
-e2 H6)))) h H3)))) (drop_gen_sort n h d c2 H)))))))))) (\lambda (c2:
+e2)) (let H5 \def (eq_ind nat d (\lambda (n0: nat).(le n0 (S i0))) H1 O H4)
+in (let H6 \def (eq_ind C c2 (\lambda (c: C).(drop (S i0) O c e2)) H0 (CSort
+n) H2) in (and3_ind (eq C e2 (CSort n)) (eq nat (S i0) O) (eq nat O O) (drop
+(S (plus i0 O)) O (CSort n) e2) (\lambda (H7: (eq C e2 (CSort n))).(\lambda
+(H8: (eq nat (S i0) O)).(\lambda (_: (eq nat O O)).(eq_ind_r C (CSort n)
+(\lambda (c: C).(drop (S (plus i0 O)) O (CSort n) c)) (let H10 \def (eq_ind
+nat (S i0) (\lambda (ee: nat).(match ee in nat return (\lambda (_: nat).Prop)
+with [O \Rightarrow False | (S _) \Rightarrow True])) I O H8) in (False_ind
+(drop (S (plus i0 O)) O (CSort n) (CSort n)) H10)) e2 H7)))) (drop_gen_sort n
+(S i0) O e2 H6)))) h H3)))) (drop_gen_sort n h d c2 H)))))))))) (\lambda (c2:
C).(\lambda (IHc: ((\forall (c3: C).(\forall (d: nat).(\forall (h:
nat).((drop h d c2 c3) \to (\forall (e2: C).((drop (S i0) O c3 e2) \to ((le d
(S i0)) \to (drop (S (plus i0 h)) O c2 e2)))))))))).(\lambda (k: K).(\lambda
(CHead c2 k t) e2) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H2: (eq C c3
(CHead x0 k x1))).(\lambda (H3: (eq T t (lift h (r k d0) x1))).(\lambda (H4:
(drop h (r k d0) c2 x0)).(let H5 \def (eq_ind C c3 (\lambda (c: C).(\forall
-(h: nat).((drop h d0 (CHead c2 k t) c) \to (\forall (e2: C).((drop (S i0) O c
-e2) \to ((le d0 (S i0)) \to (drop (S (plus i0 h)) O (CHead c2 k t) e2)))))))
-IHd (CHead x0 k x1) H2) in (let H6 \def (eq_ind C c3 (\lambda (c: C).(drop (S
-i0) O c e2)) H0 (CHead x0 k x1) H2) in (let H7 \def (eq_ind T t (\lambda (t:
-T).(\forall (h: nat).((drop h d0 (CHead c2 k t) (CHead x0 k x1)) \to (\forall
-(e2: C).((drop (S i0) O (CHead x0 k x1) e2) \to ((le d0 (S i0)) \to (drop (S
-(plus i0 h)) O (CHead c2 k t) e2))))))) H5 (lift h (r k d0) x1) H3) in
-(eq_ind_r T (lift h (r k d0) x1) (\lambda (t0: T).(drop (S (plus i0 h)) O
-(CHead c2 k t0) e2)) (drop_drop k (plus i0 h) c2 e2 (K_ind (\lambda (k0:
-K).((drop h (r k0 d0) c2 x0) \to ((drop (r k0 i0) O x0 e2) \to (drop (r k0
-(plus i0 h)) O c2 e2)))) (\lambda (b: B).(\lambda (H8: (drop h (r (Bind b)
-d0) c2 x0)).(\lambda (H9: (drop (r (Bind b) i0) O x0 e2)).(IHi c2 x0 (r (Bind
-b) d0) h H8 e2 H9 (le_S_n (r (Bind b) d0) i0 H1))))) (\lambda (f: F).(\lambda
-(H8: (drop h (r (Flat f) d0) c2 x0)).(\lambda (H9: (drop (r (Flat f) i0) O x0
-e2)).(IHc x0 (r (Flat f) d0) h H8 e2 H9 H1)))) k H4 (drop_gen_drop k x0 e2 x1
-i0 H6)) (lift h (r k d0) x1)) t H3))))))))) (drop_gen_skip_l c2 c3 t h d0 k
-H))))))))) d))))))) c1)))) i).
+(h0: nat).((drop h0 d0 (CHead c2 k t) c) \to (\forall (e3: C).((drop (S i0) O
+c e3) \to ((le d0 (S i0)) \to (drop (S (plus i0 h0)) O (CHead c2 k t)
+e3))))))) IHd (CHead x0 k x1) H2) in (let H6 \def (eq_ind C c3 (\lambda (c:
+C).(drop (S i0) O c e2)) H0 (CHead x0 k x1) H2) in (let H7 \def (eq_ind T t
+(\lambda (t0: T).(\forall (h0: nat).((drop h0 d0 (CHead c2 k t0) (CHead x0 k
+x1)) \to (\forall (e3: C).((drop (S i0) O (CHead x0 k x1) e3) \to ((le d0 (S
+i0)) \to (drop (S (plus i0 h0)) O (CHead c2 k t0) e3))))))) H5 (lift h (r k
+d0) x1) H3) in (eq_ind_r T (lift h (r k d0) x1) (\lambda (t0: T).(drop (S
+(plus i0 h)) O (CHead c2 k t0) e2)) (drop_drop k (plus i0 h) c2 e2 (K_ind
+(\lambda (k0: K).((drop h (r k0 d0) c2 x0) \to ((drop (r k0 i0) O x0 e2) \to
+(drop (r k0 (plus i0 h)) O c2 e2)))) (\lambda (b: B).(\lambda (H8: (drop h (r
+(Bind b) d0) c2 x0)).(\lambda (H9: (drop (r (Bind b) i0) O x0 e2)).(IHi c2 x0
+(r (Bind b) d0) h H8 e2 H9 (le_S_n (r (Bind b) d0) i0 H1))))) (\lambda (f:
+F).(\lambda (H8: (drop h (r (Flat f) d0) c2 x0)).(\lambda (H9: (drop (r (Flat
+f) i0) O x0 e2)).(IHc x0 (r (Flat f) d0) h H8 e2 H9 H1)))) k H4
+(drop_gen_drop k x0 e2 x1 i0 H6)) (lift h (r k d0) x1)) t H3)))))))))
+(drop_gen_skip_l c2 c3 t h d0 k H))))))))) d))))))) c1)))) i).
(aplus_gz_le k h1 n1 H1)) in (let H4 \def (eq_ind A (aplus gz (ASort h2 n2)
k) (\lambda (a: A).(eq A (ASort O (plus (minus k h1) n1)) a)) H3 (ASort
(minus h2 k) n2) (aplus_gz_ge n2 k h2 (le_S_n k h2 (le_S (S k) h2 H2)))) in
-(let H5 \def (sym_equal A (ASort O (plus (minus k h1) n1)) (ASort (minus h2
-k) n2) H4) in (let H6 \def (eq_ind nat (minus h2 k) (\lambda (n: nat).(eq A
+(let H5 \def (sym_eq A (ASort O (plus (minus k h1) n1)) (ASort (minus h2 k)
+n2) H4) in (let H6 \def (eq_ind nat (minus h2 k) (\lambda (n: nat).(eq A
(ASort n n2) (ASort O (plus (minus k h1) n1)))) H5 (S (minus h2 (S k)))
(minus_x_Sy h2 k H2)) in (let H7 \def (eq_ind A (ASort (S (minus h2 (S k)))
n2) (\lambda (ee: A).(match ee in A return (\lambda (_: A).Prop) with [(ASort
\lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (lt n
d)).(eq_ind bool true (\lambda (b: bool).(eq T (TLRef (match b with [true
\Rightarrow n | false \Rightarrow (plus n h)])) (TLRef n))) (refl_equal T
-(TLRef n)) (blt n d) (sym_equal bool (blt n d) true (lt_blt d n H)))))).
+(TLRef n)) (blt n d) (sym_eq bool (blt n d) true (lt_blt d n H)))))).
theorem lift_lref_ge:
\forall (n: nat).(\forall (h: nat).(\forall (d: nat).((le d n) \to (eq T
\lambda (n: nat).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (le d
n)).(eq_ind bool false (\lambda (b: bool).(eq T (TLRef (match b with [true
\Rightarrow n | false \Rightarrow (plus n h)])) (TLRef (plus n h))))
-(refl_equal T (TLRef (plus n h))) (blt n d) (sym_equal bool (blt n d) false
+(refl_equal T (TLRef (plus n h))) (blt n d) (sym_eq bool (blt n d) false
(le_bge d n H)))))).
theorem lift_head:
n0)))).(sym_eq T (TSort n) (TSort n0) H))) (\lambda (n0: nat).(\lambda (H:
(eq T (TSort n) (lift h d (TLRef n0)))).(lt_le_e n0 d (eq T (TLRef n0) (TSort
n)) (\lambda (H0: (lt n0 d)).(let H1 \def (eq_ind T (lift h d (TLRef n0))
-(\lambda (t: T).(eq T (TSort n) t)) H (TLRef n0) (lift_lref_lt n0 h d H0)) in
-(let H2 \def (match H1 in eq return (\lambda (t: T).(\lambda (_: (eq ? ?
-t)).((eq T t (TLRef n0)) \to (eq T (TLRef n0) (TSort n))))) with [refl_equal
-\Rightarrow (\lambda (H1: (eq T (TSort n) (TLRef n0))).(let H2 \def (eq_ind T
-(TSort n) (\lambda (e: T).(match e in T return (\lambda (_: T).Prop) with
-[(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _)
-\Rightarrow False])) I (TLRef n0) H1) in (False_ind (eq T (TLRef n0) (TSort
-n)) H2)))]) in (H2 (refl_equal T (TLRef n0)))))) (\lambda (H0: (le d
-n0)).(let H1 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t: T).(eq T
-(TSort n) t)) H (TLRef (plus n0 h)) (lift_lref_ge n0 h d H0)) in (let H2 \def
-(match H1 in eq return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t
-(TLRef (plus n0 h))) \to (eq T (TLRef n0) (TSort n))))) with [refl_equal
-\Rightarrow (\lambda (H1: (eq T (TSort n) (TLRef (plus n0 h)))).(let H2 \def
-(eq_ind T (TSort n) (\lambda (e: T).(match e in T return (\lambda (_:
+(\lambda (t0: T).(eq T (TSort n) t0)) H (TLRef n0) (lift_lref_lt n0 h d H0))
+in (let H2 \def (match H1 in eq return (\lambda (t0: T).(\lambda (_: (eq ? ?
+t0)).((eq T t0 (TLRef n0)) \to (eq T (TLRef n0) (TSort n))))) with
+[refl_equal \Rightarrow (\lambda (H2: (eq T (TSort n) (TLRef n0))).(let H3
+\def (eq_ind T (TSort n) (\lambda (e: T).(match e in T return (\lambda (_:
T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False |
-(THead _ _ _) \Rightarrow False])) I (TLRef (plus n0 h)) H1) in (False_ind
-(eq T (TLRef n0) (TSort n)) H2)))]) in (H2 (refl_equal T (TLRef (plus n0
-h)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda (_: (((eq T (TSort n)
-(lift h d t0)) \to (eq T t0 (TSort n))))).(\lambda (t1: T).(\lambda (_: (((eq
-T (TSort n) (lift h d t1)) \to (eq T t1 (TSort n))))).(\lambda (H1: (eq T
-(TSort n) (lift h d (THead k t0 t1)))).(let H2 \def (eq_ind T (lift h d
-(THead k t0 t1)) (\lambda (t: T).(eq T (TSort n) t)) H1 (THead k (lift h d
-t0) (lift h (s k d) t1)) (lift_head k t0 t1 h d)) in (let H3 \def (match H2
-in eq return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead k (lift
-h d t0) (lift h (s k d) t1))) \to (eq T (THead k t0 t1) (TSort n))))) with
-[refl_equal \Rightarrow (\lambda (H2: (eq T (TSort n) (THead k (lift h d t0)
-(lift h (s k d) t1)))).(let H3 \def (eq_ind T (TSort n) (\lambda (e:
-T).(match e in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow
-True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I
-(THead k (lift h d t0) (lift h (s k d) t1)) H2) in (False_ind (eq T (THead k
-t0 t1) (TSort n)) H3)))]) in (H3 (refl_equal T (THead k (lift h d t0) (lift h
-(s k d) t1)))))))))))) t)))).
+(THead _ _ _) \Rightarrow False])) I (TLRef n0) H2) in (False_ind (eq T
+(TLRef n0) (TSort n)) H3)))]) in (H2 (refl_equal T (TLRef n0)))))) (\lambda
+(H0: (le d n0)).(let H1 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t0:
+T).(eq T (TSort n) t0)) H (TLRef (plus n0 h)) (lift_lref_ge n0 h d H0)) in
+(let H2 \def (match H1 in eq return (\lambda (t0: T).(\lambda (_: (eq ? ?
+t0)).((eq T t0 (TLRef (plus n0 h))) \to (eq T (TLRef n0) (TSort n))))) with
+[refl_equal \Rightarrow (\lambda (H2: (eq T (TSort n) (TLRef (plus n0
+h)))).(let H3 \def (eq_ind T (TSort n) (\lambda (e: T).(match e in T return
+(\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | (TLRef _)
+\Rightarrow False | (THead _ _ _) \Rightarrow False])) I (TLRef (plus n0 h))
+H2) in (False_ind (eq T (TLRef n0) (TSort n)) H3)))]) in (H2 (refl_equal T
+(TLRef (plus n0 h)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda (_:
+(((eq T (TSort n) (lift h d t0)) \to (eq T t0 (TSort n))))).(\lambda (t1:
+T).(\lambda (_: (((eq T (TSort n) (lift h d t1)) \to (eq T t1 (TSort
+n))))).(\lambda (H1: (eq T (TSort n) (lift h d (THead k t0 t1)))).(let H2
+\def (eq_ind T (lift h d (THead k t0 t1)) (\lambda (t2: T).(eq T (TSort n)
+t2)) H1 (THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k t0 t1 h d))
+in (let H3 \def (match H2 in eq return (\lambda (t2: T).(\lambda (_: (eq ? ?
+t2)).((eq T t2 (THead k (lift h d t0) (lift h (s k d) t1))) \to (eq T (THead
+k t0 t1) (TSort n))))) with [refl_equal \Rightarrow (\lambda (H3: (eq T
+(TSort n) (THead k (lift h d t0) (lift h (s k d) t1)))).(let H4 \def (eq_ind
+T (TSort n) (\lambda (e: T).(match e in T return (\lambda (_: T).Prop) with
+[(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _)
+\Rightarrow False])) I (THead k (lift h d t0) (lift h (s k d) t1)) H3) in
+(False_ind (eq T (THead k t0 t1) (TSort n)) H4)))]) in (H3 (refl_equal T
+(THead k (lift h d t0) (lift h (s k d) t1)))))))))))) t)))).
theorem lift_gen_lref:
\forall (t: T).(\forall (d: nat).(\forall (h: nat).(\forall (i: nat).((eq T
(eq T t0 (TLRef i))) (land (le (plus d h) i) (eq T t0 (TLRef (minus i
h)))))))))) (\lambda (n: nat).(\lambda (d: nat).(\lambda (h: nat).(\lambda
(i: nat).(\lambda (H: (eq T (TLRef i) (lift h d (TSort n)))).(let H0 \def
-(eq_ind T (lift h d (TSort n)) (\lambda (t: T).(eq T (TLRef i) t)) H (TSort
+(eq_ind T (lift h d (TSort n)) (\lambda (t0: T).(eq T (TLRef i) t0)) H (TSort
n) (lift_sort n h d)) in (let H1 \def (eq_ind T (TLRef i) (\lambda (ee:
T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow
False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I
nat).(\lambda (H: (eq T (TLRef i) (lift h d (TLRef n)))).(lt_le_e n d (or
(land (lt i d) (eq T (TLRef n) (TLRef i))) (land (le (plus d h) i) (eq T
(TLRef n) (TLRef (minus i h))))) (\lambda (H0: (lt n d)).(let H1 \def (eq_ind
-T (lift h d (TLRef n)) (\lambda (t: T).(eq T (TLRef i) t)) H (TLRef n)
+T (lift h d (TLRef n)) (\lambda (t0: T).(eq T (TLRef i) t0)) H (TLRef n)
(lift_lref_lt n h d H0)) in (let H2 \def (f_equal T nat (\lambda (e:
T).(match e in T return (\lambda (_: T).nat) with [(TSort _) \Rightarrow i |
-(TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow i])) (TLRef i) (TLRef n)
-H1) in (eq_ind_r nat n (\lambda (n0: nat).(or (land (lt n0 d) (eq T (TLRef n)
-(TLRef n0))) (land (le (plus d h) n0) (eq T (TLRef n) (TLRef (minus n0
+(TLRef n0) \Rightarrow n0 | (THead _ _ _) \Rightarrow i])) (TLRef i) (TLRef
+n) H1) in (eq_ind_r nat n (\lambda (n0: nat).(or (land (lt n0 d) (eq T (TLRef
+n) (TLRef n0))) (land (le (plus d h) n0) (eq T (TLRef n) (TLRef (minus n0
h)))))) (or_introl (land (lt n d) (eq T (TLRef n) (TLRef n))) (land (le (plus
d h) n) (eq T (TLRef n) (TLRef (minus n h)))) (conj (lt n d) (eq T (TLRef n)
(TLRef n)) H0 (refl_equal T (TLRef n)))) i H2)))) (\lambda (H0: (le d
-n)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda (t: T).(eq T (TLRef
-i) t)) H (TLRef (plus n h)) (lift_lref_ge n h d H0)) in (let H2 \def (f_equal
-T nat (\lambda (e: T).(match e in T return (\lambda (_: T).nat) with [(TSort
-_) \Rightarrow i | (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow i]))
-(TLRef i) (TLRef (plus n h)) H1) in (eq_ind_r nat (plus n h) (\lambda (n0:
-nat).(or (land (lt n0 d) (eq T (TLRef n) (TLRef n0))) (land (le (plus d h)
-n0) (eq T (TLRef n) (TLRef (minus n0 h)))))) (eq_ind_r nat n (\lambda (n0:
-nat).(or (land (lt (plus n h) d) (eq T (TLRef n) (TLRef (plus n h)))) (land
-(le (plus d h) (plus n h)) (eq T (TLRef n) (TLRef n0))))) (or_intror (land
-(lt (plus n h) d) (eq T (TLRef n) (TLRef (plus n h)))) (land (le (plus d h)
-(plus n h)) (eq T (TLRef n) (TLRef n))) (conj (le (plus d h) (plus n h)) (eq
-T (TLRef n) (TLRef n)) (plus_le_compat d n h h H0 (le_n h)) (refl_equal T
-(TLRef n)))) (minus (plus n h) h) (minus_plus_r n h)) i H2)))))))))) (\lambda
-(k: K).(\lambda (t0: T).(\lambda (_: ((\forall (d: nat).(\forall (h:
-nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t0)) \to (or (land (lt i d)
-(eq T t0 (TLRef i))) (land (le (plus d h) i) (eq T t0 (TLRef (minus i
-h))))))))))).(\lambda (t1: T).(\lambda (_: ((\forall (d: nat).(\forall (h:
-nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t1)) \to (or (land (lt i d)
-(eq T t1 (TLRef i))) (land (le (plus d h) i) (eq T t1 (TLRef (minus i
-h))))))))))).(\lambda (d: nat).(\lambda (h: nat).(\lambda (i: nat).(\lambda
-(H1: (eq T (TLRef i) (lift h d (THead k t0 t1)))).(let H2 \def (eq_ind T
-(lift h d (THead k t0 t1)) (\lambda (t: T).(eq T (TLRef i) t)) H1 (THead k
-(lift h d t0) (lift h (s k d) t1)) (lift_head k t0 t1 h d)) in (let H3 \def
-(eq_ind T (TLRef i) (\lambda (ee: T).(match ee in T return (\lambda (_:
-T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True |
+n)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda (t0: T).(eq T (TLRef
+i) t0)) H (TLRef (plus n h)) (lift_lref_ge n h d H0)) in (let H2 \def
+(f_equal T nat (\lambda (e: T).(match e in T return (\lambda (_: T).nat) with
+[(TSort _) \Rightarrow i | (TLRef n0) \Rightarrow n0 | (THead _ _ _)
+\Rightarrow i])) (TLRef i) (TLRef (plus n h)) H1) in (eq_ind_r nat (plus n h)
+(\lambda (n0: nat).(or (land (lt n0 d) (eq T (TLRef n) (TLRef n0))) (land (le
+(plus d h) n0) (eq T (TLRef n) (TLRef (minus n0 h)))))) (eq_ind_r nat n
+(\lambda (n0: nat).(or (land (lt (plus n h) d) (eq T (TLRef n) (TLRef (plus n
+h)))) (land (le (plus d h) (plus n h)) (eq T (TLRef n) (TLRef n0)))))
+(or_intror (land (lt (plus n h) d) (eq T (TLRef n) (TLRef (plus n h)))) (land
+(le (plus d h) (plus n h)) (eq T (TLRef n) (TLRef n))) (conj (le (plus d h)
+(plus n h)) (eq T (TLRef n) (TLRef n)) (plus_le_compat d n h h H0 (le_n h))
+(refl_equal T (TLRef n)))) (minus (plus n h) h) (minus_plus_r n h)) i
+H2)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda (_: ((\forall (d:
+nat).(\forall (h: nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t0)) \to
+(or (land (lt i d) (eq T t0 (TLRef i))) (land (le (plus d h) i) (eq T t0
+(TLRef (minus i h))))))))))).(\lambda (t1: T).(\lambda (_: ((\forall (d:
+nat).(\forall (h: nat).(\forall (i: nat).((eq T (TLRef i) (lift h d t1)) \to
+(or (land (lt i d) (eq T t1 (TLRef i))) (land (le (plus d h) i) (eq T t1
+(TLRef (minus i h))))))))))).(\lambda (d: nat).(\lambda (h: nat).(\lambda (i:
+nat).(\lambda (H1: (eq T (TLRef i) (lift h d (THead k t0 t1)))).(let H2 \def
+(eq_ind T (lift h d (THead k t0 t1)) (\lambda (t2: T).(eq T (TLRef i) t2)) H1
+(THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k t0 t1 h d)) in (let
+H3 \def (eq_ind T (TLRef i) (\lambda (ee: T).(match ee in T return (\lambda
+(_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True |
(THead _ _ _) \Rightarrow False])) I (THead k (lift h d t0) (lift h (s k d)
t1)) H2) in (False_ind (or (land (lt i d) (eq T (THead k t0 t1) (TLRef i)))
(land (le (plus d h) i) (eq T (THead k t0 t1) (TLRef (minus i h)))))
(lift h d (TSort n0)))).(sym_eq T (TLRef n) (TSort n0) H0))) (\lambda (n0:
nat).(\lambda (H0: (eq T (TLRef n) (lift h d (TLRef n0)))).(lt_le_e n0 d (eq
T (TLRef n0) (TLRef n)) (\lambda (H1: (lt n0 d)).(let H2 \def (eq_ind T (lift
-h d (TLRef n0)) (\lambda (t: T).(eq T (TLRef n) t)) H0 (TLRef n0)
+h d (TLRef n0)) (\lambda (t0: T).(eq T (TLRef n) t0)) H0 (TLRef n0)
(lift_lref_lt n0 h d H1)) in (sym_eq T (TLRef n) (TLRef n0) H2))) (\lambda
-(H1: (le d n0)).(let H2 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t:
-T).(eq T (TLRef n) t)) H0 (TLRef (plus n0 h)) (lift_lref_ge n0 h d H1)) in
-(let H3 \def (match H2 in eq return (\lambda (t: T).(\lambda (_: (eq ? ?
-t)).((eq T t (TLRef (plus n0 h))) \to (eq T (TLRef n0) (TLRef n))))) with
-[refl_equal \Rightarrow (\lambda (H2: (eq T (TLRef n) (TLRef (plus n0
-h)))).(let H3 \def (f_equal T nat (\lambda (e: T).(match e in T return
-(\lambda (_: T).nat) with [(TSort _) \Rightarrow n | (TLRef n) \Rightarrow n
-| (THead _ _ _) \Rightarrow n])) (TLRef n) (TLRef (plus n0 h)) H2) in (eq_ind
-nat (plus n0 h) (\lambda (n: nat).(eq T (TLRef n0) (TLRef n))) (let H0 \def
-(eq_ind nat n (\lambda (n: nat).(lt n d)) H (plus n0 h) H3) in (le_false d n0
-(eq T (TLRef n0) (TLRef (plus n0 h))) H1 (lt_le_S n0 d (le_lt_trans n0 (plus
-n0 h) d (le_plus_l n0 h) H0)))) n (sym_eq nat n (plus n0 h) H3))))]) in (H3
-(refl_equal T (TLRef (plus n0 h)))))))))) (\lambda (k: K).(\lambda (t0:
-T).(\lambda (_: (((eq T (TLRef n) (lift h d t0)) \to (eq T t0 (TLRef
-n))))).(\lambda (t1: T).(\lambda (_: (((eq T (TLRef n) (lift h d t1)) \to (eq
-T t1 (TLRef n))))).(\lambda (H2: (eq T (TLRef n) (lift h d (THead k t0
-t1)))).(let H3 \def (eq_ind T (lift h d (THead k t0 t1)) (\lambda (t: T).(eq
-T (TLRef n) t)) H2 (THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k
-t0 t1 h d)) in (let H4 \def (match H3 in eq return (\lambda (t: T).(\lambda
-(_: (eq ? ? t)).((eq T t (THead k (lift h d t0) (lift h (s k d) t1))) \to (eq
-T (THead k t0 t1) (TLRef n))))) with [refl_equal \Rightarrow (\lambda (H3:
-(eq T (TLRef n) (THead k (lift h d t0) (lift h (s k d) t1)))).(let H4 \def
-(eq_ind T (TLRef n) (\lambda (e: T).(match e in T return (\lambda (_:
-T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True |
-(THead _ _ _) \Rightarrow False])) I (THead k (lift h d t0) (lift h (s k d)
-t1)) H3) in (False_ind (eq T (THead k t0 t1) (TLRef n)) H4)))]) in (H4
-(refl_equal T (THead k (lift h d t0) (lift h (s k d) t1)))))))))))) t))))).
+(H1: (le d n0)).(let H2 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t0:
+T).(eq T (TLRef n) t0)) H0 (TLRef (plus n0 h)) (lift_lref_ge n0 h d H1)) in
+(let H3 \def (match H2 in eq return (\lambda (t0: T).(\lambda (_: (eq ? ?
+t0)).((eq T t0 (TLRef (plus n0 h))) \to (eq T (TLRef n0) (TLRef n))))) with
+[refl_equal \Rightarrow (\lambda (H3: (eq T (TLRef n) (TLRef (plus n0
+h)))).(let H4 \def (f_equal T nat (\lambda (e: T).(match e in T return
+(\lambda (_: T).nat) with [(TSort _) \Rightarrow n | (TLRef n1) \Rightarrow
+n1 | (THead _ _ _) \Rightarrow n])) (TLRef n) (TLRef (plus n0 h)) H3) in
+(eq_ind nat (plus n0 h) (\lambda (n1: nat).(eq T (TLRef n0) (TLRef n1))) (let
+H5 \def (eq_ind nat n (\lambda (n1: nat).(lt n1 d)) H (plus n0 h) H4) in
+(le_false d n0 (eq T (TLRef n0) (TLRef (plus n0 h))) H1 (lt_le_S n0 d
+(le_lt_trans n0 (plus n0 h) d (le_plus_l n0 h) H5)))) n (sym_eq nat n (plus
+n0 h) H4))))]) in (H3 (refl_equal T (TLRef (plus n0 h)))))))))) (\lambda (k:
+K).(\lambda (t0: T).(\lambda (_: (((eq T (TLRef n) (lift h d t0)) \to (eq T
+t0 (TLRef n))))).(\lambda (t1: T).(\lambda (_: (((eq T (TLRef n) (lift h d
+t1)) \to (eq T t1 (TLRef n))))).(\lambda (H2: (eq T (TLRef n) (lift h d
+(THead k t0 t1)))).(let H3 \def (eq_ind T (lift h d (THead k t0 t1)) (\lambda
+(t2: T).(eq T (TLRef n) t2)) H2 (THead k (lift h d t0) (lift h (s k d) t1))
+(lift_head k t0 t1 h d)) in (let H4 \def (match H3 in eq return (\lambda (t2:
+T).(\lambda (_: (eq ? ? t2)).((eq T t2 (THead k (lift h d t0) (lift h (s k d)
+t1))) \to (eq T (THead k t0 t1) (TLRef n))))) with [refl_equal \Rightarrow
+(\lambda (H4: (eq T (TLRef n) (THead k (lift h d t0) (lift h (s k d)
+t1)))).(let H5 \def (eq_ind T (TLRef n) (\lambda (e: T).(match e in T return
+(\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _)
+\Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead k (lift h d
+t0) (lift h (s k d) t1)) H4) in (False_ind (eq T (THead k t0 t1) (TLRef n))
+H5)))]) in (H4 (refl_equal T (THead k (lift h d t0) (lift h (s k d)
+t1)))))))))))) t))))).
theorem lift_gen_lref_false:
\forall (h: nat).(\forall (d: nat).(\forall (n: nat).((le d n) \to ((lt n
n)).(\lambda (H0: (lt n (plus d h))).(\lambda (t: T).(T_ind (\lambda (t0:
T).((eq T (TLRef n) (lift h d t0)) \to (\forall (P: Prop).P))) (\lambda (n0:
nat).(\lambda (H1: (eq T (TLRef n) (lift h d (TSort n0)))).(\lambda (P:
-Prop).(let H2 \def (match H1 in eq return (\lambda (t: T).(\lambda (_: (eq ?
-? t)).((eq T t (lift h d (TSort n0))) \to P))) with [refl_equal \Rightarrow
+Prop).(let H2 \def (match H1 in eq return (\lambda (t0: T).(\lambda (_: (eq ?
+? t0)).((eq T t0 (lift h d (TSort n0))) \to P))) with [refl_equal \Rightarrow
(\lambda (H2: (eq T (TLRef n) (lift h d (TSort n0)))).(let H3 \def (eq_ind T
(TLRef n) (\lambda (e: T).(match e in T return (\lambda (_: T).Prop) with
[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _)
(H2 (refl_equal T (lift h d (TSort n0)))))))) (\lambda (n0: nat).(\lambda
(H1: (eq T (TLRef n) (lift h d (TLRef n0)))).(\lambda (P: Prop).(lt_le_e n0 d
P (\lambda (H2: (lt n0 d)).(let H3 \def (eq_ind T (lift h d (TLRef n0))
-(\lambda (t: T).(eq T (TLRef n) t)) H1 (TLRef n0) (lift_lref_lt n0 h d H2))
-in (let H4 \def (match H3 in eq return (\lambda (t: T).(\lambda (_: (eq ? ?
-t)).((eq T t (TLRef n0)) \to P))) with [refl_equal \Rightarrow (\lambda (H3:
-(eq T (TLRef n) (TLRef n0))).(let H4 \def (f_equal T nat (\lambda (e:
+(\lambda (t0: T).(eq T (TLRef n) t0)) H1 (TLRef n0) (lift_lref_lt n0 h d H2))
+in (let H4 \def (match H3 in eq return (\lambda (t0: T).(\lambda (_: (eq ? ?
+t0)).((eq T t0 (TLRef n0)) \to P))) with [refl_equal \Rightarrow (\lambda
+(H4: (eq T (TLRef n) (TLRef n0))).(let H5 \def (f_equal T nat (\lambda (e:
T).(match e in T return (\lambda (_: T).nat) with [(TSort _) \Rightarrow n |
-(TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow n])) (TLRef n) (TLRef n0)
-H3) in (eq_ind nat n0 (\lambda (_: nat).P) (let H1 \def (eq_ind_r nat n0
-(\lambda (n: nat).(lt n d)) H2 n H4) in (le_false d n P H H1)) n (sym_eq nat
-n n0 H4))))]) in (H4 (refl_equal T (TLRef n0)))))) (\lambda (H2: (le d
-n0)).(let H3 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t: T).(eq T
-(TLRef n) t)) H1 (TLRef (plus n0 h)) (lift_lref_ge n0 h d H2)) in (let H4
-\def (match H3 in eq return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t
-(TLRef (plus n0 h))) \to P))) with [refl_equal \Rightarrow (\lambda (H3: (eq
-T (TLRef n) (TLRef (plus n0 h)))).(let H4 \def (f_equal T nat (\lambda (e:
-T).(match e in T return (\lambda (_: T).nat) with [(TSort _) \Rightarrow n |
-(TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow n])) (TLRef n) (TLRef
-(plus n0 h)) H3) in (eq_ind nat (plus n0 h) (\lambda (_: nat).P) (let H1 \def
-(eq_ind nat n (\lambda (n: nat).(lt n (plus d h))) H0 (plus n0 h) H4) in
-(le_false d n0 P H2 (lt_le_S n0 d (simpl_lt_plus_r h n0 d H1)))) n (sym_eq
-nat n (plus n0 h) H4))))]) in (H4 (refl_equal T (TLRef (plus n0 h)))))))))))
-(\lambda (k: K).(\lambda (t0: T).(\lambda (_: (((eq T (TLRef n) (lift h d
-t0)) \to (\forall (P: Prop).P)))).(\lambda (t1: T).(\lambda (_: (((eq T
-(TLRef n) (lift h d t1)) \to (\forall (P: Prop).P)))).(\lambda (H3: (eq T
-(TLRef n) (lift h d (THead k t0 t1)))).(\lambda (P: Prop).(let H4 \def
-(eq_ind T (lift h d (THead k t0 t1)) (\lambda (t: T).(eq T (TLRef n) t)) H3
+(TLRef n1) \Rightarrow n1 | (THead _ _ _) \Rightarrow n])) (TLRef n) (TLRef
+n0) H4) in (eq_ind nat n0 (\lambda (_: nat).P) (let H6 \def (eq_ind_r nat n0
+(\lambda (n1: nat).(lt n1 d)) H2 n H5) in (le_false d n P H H6)) n (sym_eq
+nat n n0 H5))))]) in (H4 (refl_equal T (TLRef n0)))))) (\lambda (H2: (le d
+n0)).(let H3 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t0: T).(eq T
+(TLRef n) t0)) H1 (TLRef (plus n0 h)) (lift_lref_ge n0 h d H2)) in (let H4
+\def (match H3 in eq return (\lambda (t0: T).(\lambda (_: (eq ? ? t0)).((eq T
+t0 (TLRef (plus n0 h))) \to P))) with [refl_equal \Rightarrow (\lambda (H4:
+(eq T (TLRef n) (TLRef (plus n0 h)))).(let H5 \def (f_equal T nat (\lambda
+(e: T).(match e in T return (\lambda (_: T).nat) with [(TSort _) \Rightarrow
+n | (TLRef n1) \Rightarrow n1 | (THead _ _ _) \Rightarrow n])) (TLRef n)
+(TLRef (plus n0 h)) H4) in (eq_ind nat (plus n0 h) (\lambda (_: nat).P) (let
+H6 \def (eq_ind nat n (\lambda (n1: nat).(lt n1 (plus d h))) H0 (plus n0 h)
+H5) in (le_false d n0 P H2 (lt_le_S n0 d (simpl_lt_plus_r h n0 d H6)))) n
+(sym_eq nat n (plus n0 h) H5))))]) in (H4 (refl_equal T (TLRef (plus n0
+h))))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda (_: (((eq T (TLRef n)
+(lift h d t0)) \to (\forall (P: Prop).P)))).(\lambda (t1: T).(\lambda (_:
+(((eq T (TLRef n) (lift h d t1)) \to (\forall (P: Prop).P)))).(\lambda (H3:
+(eq T (TLRef n) (lift h d (THead k t0 t1)))).(\lambda (P: Prop).(let H4 \def
+(eq_ind T (lift h d (THead k t0 t1)) (\lambda (t2: T).(eq T (TLRef n) t2)) H3
(THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k t0 t1 h d)) in (let
-H5 \def (match H4 in eq return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq
-T t (THead k (lift h d t0) (lift h (s k d) t1))) \to P))) with [refl_equal
-\Rightarrow (\lambda (H4: (eq T (TLRef n) (THead k (lift h d t0) (lift h (s k
-d) t1)))).(let H5 \def (eq_ind T (TLRef n) (\lambda (e: T).(match e in T
-return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _)
-\Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead k (lift h d
-t0) (lift h (s k d) t1)) H4) in (False_ind P H5)))]) in (H5 (refl_equal T
-(THead k (lift h d t0) (lift h (s k d) t1))))))))))))) t)))))).
+H5 \def (match H4 in eq return (\lambda (t2: T).(\lambda (_: (eq ? ?
+t2)).((eq T t2 (THead k (lift h d t0) (lift h (s k d) t1))) \to P))) with
+[refl_equal \Rightarrow (\lambda (H5: (eq T (TLRef n) (THead k (lift h d t0)
+(lift h (s k d) t1)))).(let H6 \def (eq_ind T (TLRef n) (\lambda (e:
+T).(match e in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow
+False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I
+(THead k (lift h d t0) (lift h (s k d) t1)) H5) in (False_ind P H6)))]) in
+(H5 (refl_equal T (THead k (lift h d t0) (lift h (s k d) t1)))))))))))))
+t)))))).
theorem lift_gen_lref_ge:
\forall (h: nat).(\forall (d: nat).(\forall (n: nat).((le d n) \to (\forall
n)).(\lambda (t: T).(T_ind (\lambda (t0: T).((eq T (TLRef (plus n h)) (lift h
d t0)) \to (eq T t0 (TLRef n)))) (\lambda (n0: nat).(\lambda (H0: (eq T
(TLRef (plus n h)) (lift h d (TSort n0)))).(let H1 \def (match H0 in eq
-return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (lift h d (TSort
+return (\lambda (t0: T).(\lambda (_: (eq ? ? t0)).((eq T t0 (lift h d (TSort
n0))) \to (eq T (TSort n0) (TLRef n))))) with [refl_equal \Rightarrow
(\lambda (H1: (eq T (TLRef (plus n h)) (lift h d (TSort n0)))).(let H2 \def
(eq_ind T (TLRef (plus n h)) (\lambda (e: T).(match e in T return (\lambda
(eq T (TSort n0) (TLRef n)) H2)))]) in (H1 (refl_equal T (lift h d (TSort
n0))))))) (\lambda (n0: nat).(\lambda (H0: (eq T (TLRef (plus n h)) (lift h d
(TLRef n0)))).(lt_le_e n0 d (eq T (TLRef n0) (TLRef n)) (\lambda (H1: (lt n0
-d)).(let H2 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t: T).(eq T (TLRef
-(plus n h)) t)) H0 (TLRef n0) (lift_lref_lt n0 h d H1)) in (let H3 \def
-(match H2 in eq return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t
-(TLRef n0)) \to (eq T (TLRef n0) (TLRef n))))) with [refl_equal \Rightarrow
-(\lambda (H2: (eq T (TLRef (plus n h)) (TLRef n0))).(let H3 \def (f_equal T
-nat (\lambda (e: T).(match e in T return (\lambda (_: T).nat) with [(TSort _)
-\Rightarrow ((let rec plus (n: nat) on n: (nat \to nat) \def (\lambda (m:
-nat).(match n with [O \Rightarrow m | (S p) \Rightarrow (S (plus p m))])) in
-plus) n h) | (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow ((let rec
-plus (n: nat) on n: (nat \to nat) \def (\lambda (m: nat).(match n with [O
-\Rightarrow m | (S p) \Rightarrow (S (plus p m))])) in plus) n h)])) (TLRef
-(plus n h)) (TLRef n0) H2) in (eq_ind nat (plus n h) (\lambda (n0: nat).(eq T
-(TLRef n0) (TLRef n))) (let H0 \def (eq_ind_r nat n0 (\lambda (n: nat).(lt n
-d)) H1 (plus n h) H3) in (le_false d n (eq T (TLRef (plus n h)) (TLRef n)) H
-(lt_le_S n d (le_lt_trans n (plus n h) d (le_plus_l n h) H0)))) n0 H3)))]) in
-(H3 (refl_equal T (TLRef n0)))))) (\lambda (H1: (le d n0)).(let H2 \def
-(eq_ind T (lift h d (TLRef n0)) (\lambda (t: T).(eq T (TLRef (plus n h)) t))
-H0 (TLRef (plus n0 h)) (lift_lref_ge n0 h d H1)) in (let H3 \def (match H2 in
-eq return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (TLRef (plus n0
-h))) \to (eq T (TLRef n0) (TLRef n))))) with [refl_equal \Rightarrow (\lambda
-(H2: (eq T (TLRef (plus n h)) (TLRef (plus n0 h)))).(let H3 \def (f_equal T
-nat (\lambda (e: T).(match e in T return (\lambda (_: T).nat) with [(TSort _)
-\Rightarrow ((let rec plus (n: nat) on n: (nat \to nat) \def (\lambda (m:
-nat).(match n with [O \Rightarrow m | (S p) \Rightarrow (S (plus p m))])) in
-plus) n h) | (TLRef n) \Rightarrow n | (THead _ _ _) \Rightarrow ((let rec
-plus (n: nat) on n: (nat \to nat) \def (\lambda (m: nat).(match n with [O
-\Rightarrow m | (S p) \Rightarrow (S (plus p m))])) in plus) n h)])) (TLRef
-(plus n h)) (TLRef (plus n0 h)) H2) in (eq_ind nat (plus n h) (\lambda (_:
-nat).(eq T (TLRef n0) (TLRef n))) (f_equal nat T TLRef n0 n (simpl_plus_r h
-n0 n (sym_eq nat (plus n h) (plus n0 h) H3))) (plus n0 h) H3)))]) in (H3
-(refl_equal T (TLRef (plus n0 h)))))))))) (\lambda (k: K).(\lambda (t0:
-T).(\lambda (_: (((eq T (TLRef (plus n h)) (lift h d t0)) \to (eq T t0 (TLRef
-n))))).(\lambda (t1: T).(\lambda (_: (((eq T (TLRef (plus n h)) (lift h d
-t1)) \to (eq T t1 (TLRef n))))).(\lambda (H2: (eq T (TLRef (plus n h)) (lift
-h d (THead k t0 t1)))).(let H3 \def (eq_ind T (lift h d (THead k t0 t1))
-(\lambda (t: T).(eq T (TLRef (plus n h)) t)) H2 (THead k (lift h d t0) (lift
-h (s k d) t1)) (lift_head k t0 t1 h d)) in (let H4 \def (match H3 in eq
-return (\lambda (t: T).(\lambda (_: (eq ? ? t)).((eq T t (THead k (lift h d
-t0) (lift h (s k d) t1))) \to (eq T (THead k t0 t1) (TLRef n))))) with
-[refl_equal \Rightarrow (\lambda (H3: (eq T (TLRef (plus n h)) (THead k (lift
-h d t0) (lift h (s k d) t1)))).(let H4 \def (eq_ind T (TLRef (plus n h))
-(\lambda (e: T).(match e in T return (\lambda (_: T).Prop) with [(TSort _)
-\Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow
-False])) I (THead k (lift h d t0) (lift h (s k d) t1)) H3) in (False_ind (eq
-T (THead k t0 t1) (TLRef n)) H4)))]) in (H4 (refl_equal T (THead k (lift h d
-t0) (lift h (s k d) t1)))))))))))) t))))).
+d)).(let H2 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t0: T).(eq T
+(TLRef (plus n h)) t0)) H0 (TLRef n0) (lift_lref_lt n0 h d H1)) in (let H3
+\def (match H2 in eq return (\lambda (t0: T).(\lambda (_: (eq ? ? t0)).((eq T
+t0 (TLRef n0)) \to (eq T (TLRef n0) (TLRef n))))) with [refl_equal
+\Rightarrow (\lambda (H3: (eq T (TLRef (plus n h)) (TLRef n0))).(let H4 \def
+(f_equal T nat (\lambda (e: T).(match e in T return (\lambda (_: T).nat) with
+[(TSort _) \Rightarrow ((let rec plus (n1: nat) on n1: (nat \to nat) \def
+(\lambda (m: nat).(match n1 with [O \Rightarrow m | (S p) \Rightarrow (S
+(plus p m))])) in plus) n h) | (TLRef n1) \Rightarrow n1 | (THead _ _ _)
+\Rightarrow ((let rec plus (n1: nat) on n1: (nat \to nat) \def (\lambda (m:
+nat).(match n1 with [O \Rightarrow m | (S p) \Rightarrow (S (plus p m))])) in
+plus) n h)])) (TLRef (plus n h)) (TLRef n0) H3) in (eq_ind nat (plus n h)
+(\lambda (n1: nat).(eq T (TLRef n1) (TLRef n))) (let H5 \def (eq_ind_r nat n0
+(\lambda (n1: nat).(lt n1 d)) H1 (plus n h) H4) in (le_false d n (eq T (TLRef
+(plus n h)) (TLRef n)) H (lt_le_S n d (le_lt_trans n (plus n h) d (le_plus_l
+n h) H5)))) n0 H4)))]) in (H3 (refl_equal T (TLRef n0)))))) (\lambda (H1: (le
+d n0)).(let H2 \def (eq_ind T (lift h d (TLRef n0)) (\lambda (t0: T).(eq T
+(TLRef (plus n h)) t0)) H0 (TLRef (plus n0 h)) (lift_lref_ge n0 h d H1)) in
+(let H3 \def (match H2 in eq return (\lambda (t0: T).(\lambda (_: (eq ? ?
+t0)).((eq T t0 (TLRef (plus n0 h))) \to (eq T (TLRef n0) (TLRef n))))) with
+[refl_equal \Rightarrow (\lambda (H3: (eq T (TLRef (plus n h)) (TLRef (plus
+n0 h)))).(let H4 \def (f_equal T nat (\lambda (e: T).(match e in T return
+(\lambda (_: T).nat) with [(TSort _) \Rightarrow ((let rec plus (n1: nat) on
+n1: (nat \to nat) \def (\lambda (m: nat).(match n1 with [O \Rightarrow m | (S
+p) \Rightarrow (S (plus p m))])) in plus) n h) | (TLRef n1) \Rightarrow n1 |
+(THead _ _ _) \Rightarrow ((let rec plus (n1: nat) on n1: (nat \to nat) \def
+(\lambda (m: nat).(match n1 with [O \Rightarrow m | (S p) \Rightarrow (S
+(plus p m))])) in plus) n h)])) (TLRef (plus n h)) (TLRef (plus n0 h)) H3) in
+(eq_ind nat (plus n h) (\lambda (_: nat).(eq T (TLRef n0) (TLRef n)))
+(f_equal nat T TLRef n0 n (simpl_plus_r h n0 n (sym_eq nat (plus n h) (plus
+n0 h) H4))) (plus n0 h) H4)))]) in (H3 (refl_equal T (TLRef (plus n0
+h)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda (_: (((eq T (TLRef
+(plus n h)) (lift h d t0)) \to (eq T t0 (TLRef n))))).(\lambda (t1:
+T).(\lambda (_: (((eq T (TLRef (plus n h)) (lift h d t1)) \to (eq T t1 (TLRef
+n))))).(\lambda (H2: (eq T (TLRef (plus n h)) (lift h d (THead k t0
+t1)))).(let H3 \def (eq_ind T (lift h d (THead k t0 t1)) (\lambda (t2: T).(eq
+T (TLRef (plus n h)) t2)) H2 (THead k (lift h d t0) (lift h (s k d) t1))
+(lift_head k t0 t1 h d)) in (let H4 \def (match H3 in eq return (\lambda (t2:
+T).(\lambda (_: (eq ? ? t2)).((eq T t2 (THead k (lift h d t0) (lift h (s k d)
+t1))) \to (eq T (THead k t0 t1) (TLRef n))))) with [refl_equal \Rightarrow
+(\lambda (H4: (eq T (TLRef (plus n h)) (THead k (lift h d t0) (lift h (s k d)
+t1)))).(let H5 \def (eq_ind T (TLRef (plus n h)) (\lambda (e: T).(match e in
+T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _)
+\Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead k (lift h d
+t0) (lift h (s k d) t1)) H4) in (False_ind (eq T (THead k t0 t1) (TLRef n))
+H5)))]) in (H4 (refl_equal T (THead k (lift h d t0) (lift h (s k d)
+t1)))))))))))) t))))).
theorem lift_gen_head:
\forall (k: K).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h:
(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead k y z))))
(\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_:
T).(\lambda (z: T).(eq T t (lift h (s k d) z)))))))) with [refl_equal
-\Rightarrow (\lambda (H1: (eq T (THead k u t) (TLRef n))).(let H2 \def
+\Rightarrow (\lambda (H2: (eq T (THead k u t) (TLRef n))).(let H3 \def
(eq_ind T (THead k u t) (\lambda (e: T).(match e in T return (\lambda (_:
T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False |
-(THead _ _ _) \Rightarrow True])) I (TLRef n) H1) in (False_ind (ex3_2 T T
+(THead _ _ _) \Rightarrow True])) I (TLRef n) H2) in (False_ind (ex3_2 T T
(\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead k y z)))) (\lambda (y:
T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z:
-T).(eq T t (lift h (s k d) z))))) H2)))]) in (H2 (refl_equal T (TLRef n))))))
+T).(eq T t (lift h (s k d) z))))) H3)))]) in (H2 (refl_equal T (TLRef n))))))
(\lambda (H0: (le d n)).(let H1 \def (eq_ind T (lift h d (TLRef n)) (\lambda
(t0: T).(eq T (THead k u t) t0)) H (TLRef (plus n h)) (lift_lref_ge n h d
H0)) in (let H2 \def (match H1 in eq return (\lambda (t0: T).(\lambda (_: (eq
? ? t0)).((eq T t0 (TLRef (plus n h))) \to (ex3_2 T T (\lambda (y:
T).(\lambda (z: T).(eq T (TLRef n) (THead k y z)))) (\lambda (y: T).(\lambda
(_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift
-h (s k d) z)))))))) with [refl_equal \Rightarrow (\lambda (H1: (eq T (THead k
-u t) (TLRef (plus n h)))).(let H2 \def (eq_ind T (THead k u t) (\lambda (e:
+h (s k d) z)))))))) with [refl_equal \Rightarrow (\lambda (H2: (eq T (THead k
+u t) (TLRef (plus n h)))).(let H3 \def (eq_ind T (THead k u t) (\lambda (e:
T).(match e in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow
False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I
-(TLRef (plus n h)) H1) in (False_ind (ex3_2 T T (\lambda (y: T).(\lambda (z:
+(TLRef (plus n h)) H2) in (False_ind (ex3_2 T T (\lambda (y: T).(\lambda (z:
T).(eq T (TLRef n) (THead k y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u
(lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k d)
-z))))) H2)))]) in (H2 (refl_equal T (TLRef (plus n h)))))))))))) (\lambda
+z))))) H3)))]) in (H2 (refl_equal T (TLRef (plus n h)))))))))))) (\lambda
(k0: K).(\lambda (t0: T).(\lambda (_: ((\forall (h: nat).(\forall (d:
nat).((eq T (THead k u t) (lift h d t0)) \to (ex3_2 T T (\lambda (y:
T).(\lambda (z: T).(eq T t0 (THead k y z)))) (\lambda (y: T).(\lambda (_:
T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s
k d) z)))))))))).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: (eq T
(THead k u t) (lift h d (THead k0 t0 t1)))).(let H2 \def (eq_ind T (lift h d
-(THead k0 t0 t1)) (\lambda (t0: T).(eq T (THead k u t) t0)) H1 (THead k0
+(THead k0 t0 t1)) (\lambda (t2: T).(eq T (THead k u t) t2)) H1 (THead k0
(lift h d t0) (lift h (s k0 d) t1)) (lift_head k0 t0 t1 h d)) in (let H3 \def
(match H2 in eq return (\lambda (t2: T).(\lambda (_: (eq ? ? t2)).((eq T t2
(THead k0 (lift h d t0) (lift h (s k0 d) t1))) \to (ex3_2 T T (\lambda (y:
T).(\lambda (z: T).(eq T (THead k0 t0 t1) (THead k y z)))) (\lambda (y:
T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z:
T).(eq T t (lift h (s k d) z)))))))) with [refl_equal \Rightarrow (\lambda
-(H2: (eq T (THead k u t) (THead k0 (lift h d t0) (lift h (s k0 d) t1)))).(let
-H3 \def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T)
-with [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ _ t)
-\Rightarrow t])) (THead k u t) (THead k0 (lift h d t0) (lift h (s k0 d) t1))
-H2) in ((let H4 \def (f_equal T T (\lambda (e: T).(match e in T return
+(H3: (eq T (THead k u t) (THead k0 (lift h d t0) (lift h (s k0 d) t1)))).(let
+H4 \def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T)
+with [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ _ t2)
+\Rightarrow t2])) (THead k u t) (THead k0 (lift h d t0) (lift h (s k0 d) t1))
+H3) in ((let H5 \def (f_equal T T (\lambda (e: T).(match e in T return
(\lambda (_: T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u |
-(THead _ t _) \Rightarrow t])) (THead k u t) (THead k0 (lift h d t0) (lift h
-(s k0 d) t1)) H2) in ((let H5 \def (f_equal T K (\lambda (e: T).(match e in T
-return (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _)
-\Rightarrow k | (THead k _ _) \Rightarrow k])) (THead k u t) (THead k0 (lift
-h d t0) (lift h (s k0 d) t1)) H2) in (eq_ind K k0 (\lambda (k: K).((eq T u
-(lift h d t0)) \to ((eq T t (lift h (s k0 d) t1)) \to (ex3_2 T T (\lambda (y:
-T).(\lambda (z: T).(eq T (THead k0 t0 t1) (THead k y z)))) (\lambda (y:
+(THead _ t2 _) \Rightarrow t2])) (THead k u t) (THead k0 (lift h d t0) (lift
+h (s k0 d) t1)) H3) in ((let H6 \def (f_equal T K (\lambda (e: T).(match e in
+T return (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _)
+\Rightarrow k | (THead k1 _ _) \Rightarrow k1])) (THead k u t) (THead k0
+(lift h d t0) (lift h (s k0 d) t1)) H3) in (eq_ind K k0 (\lambda (k1: K).((eq
+T u (lift h d t0)) \to ((eq T t (lift h (s k0 d) t1)) \to (ex3_2 T T (\lambda
+(y: T).(\lambda (z: T).(eq T (THead k0 t0 t1) (THead k1 y z)))) (\lambda (y:
T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z:
-T).(eq T t (lift h (s k d) z)))))))) (\lambda (H6: (eq T u (lift h d
+T).(eq T t (lift h (s k1 d) z)))))))) (\lambda (H7: (eq T u (lift h d
t0))).(eq_ind T (lift h d t0) (\lambda (t2: T).((eq T t (lift h (s k0 d) t1))
\to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k0 t0 t1) (THead
k0 y z)))) (\lambda (y: T).(\lambda (_: T).(eq T t2 (lift h d y)))) (\lambda
-(_: T).(\lambda (z: T).(eq T t (lift h (s k0 d) z))))))) (\lambda (H7: (eq T
-t (lift h (s k0 d) t1))).(eq_ind T (lift h (s k0 d) t1) (\lambda (t:
+(_: T).(\lambda (z: T).(eq T t (lift h (s k0 d) z))))))) (\lambda (H8: (eq T
+t (lift h (s k0 d) t1))).(eq_ind T (lift h (s k0 d) t1) (\lambda (t2:
T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k0 t0 t1) (THead
k0 y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t0) (lift h d
-y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (s k0 d) z))))))
+y)))) (\lambda (_: T).(\lambda (z: T).(eq T t2 (lift h (s k0 d) z))))))
(ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq T (THead k0 t0 t1)
(THead k0 y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t0) (lift h
d y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h (s k0 d) t1) (lift h (s
k0 d) z)))) t0 t1 (refl_equal T (THead k0 t0 t1)) (refl_equal T (lift h d
t0)) (refl_equal T (lift h (s k0 d) t1))) t (sym_eq T t (lift h (s k0 d) t1)
-H7))) u (sym_eq T u (lift h d t0) H6))) k (sym_eq K k k0 H5))) H4)) H3)))])
+H8))) u (sym_eq T u (lift h d t0) H7))) k (sym_eq K k k0 H6))) H5)) H4)))])
in (H3 (refl_equal T (THead k0 (lift h d t0) (lift h (s k0 d)
t1)))))))))))))) x)))).
T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead (Bind b) y z))))
(\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_:
T).(\lambda (z: T).(eq T t (lift h (S d) z)))))))) with [refl_equal
-\Rightarrow (\lambda (H1: (eq T (THead (Bind b) u t) (TLRef n))).(let H2 \def
+\Rightarrow (\lambda (H2: (eq T (THead (Bind b) u t) (TLRef n))).(let H3 \def
(eq_ind T (THead (Bind b) u t) (\lambda (e: T).(match e in T return (\lambda
(_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False
-| (THead _ _ _) \Rightarrow True])) I (TLRef n) H1) in (False_ind (ex3_2 T T
+| (THead _ _ _) \Rightarrow True])) I (TLRef n) H2) in (False_ind (ex3_2 T T
(\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead (Bind b) y z))))
(\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_:
-T).(\lambda (z: T).(eq T t (lift h (S d) z))))) H2)))]) in (H2 (refl_equal T
+T).(\lambda (z: T).(eq T t (lift h (S d) z))))) H3)))]) in (H2 (refl_equal T
(TLRef n)))))) (\lambda (H0: (le d n)).(let H1 \def (eq_ind T (lift h d
(TLRef n)) (\lambda (t0: T).(eq T (THead (Bind b) u t) t0)) H (TLRef (plus n
h)) (lift_lref_ge n h d H0)) in (let H2 \def (match H1 in eq return (\lambda
T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead (Bind b) y z))))
(\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_:
T).(\lambda (z: T).(eq T t (lift h (S d) z)))))))) with [refl_equal
-\Rightarrow (\lambda (H1: (eq T (THead (Bind b) u t) (TLRef (plus n
-h)))).(let H2 \def (eq_ind T (THead (Bind b) u t) (\lambda (e: T).(match e in
+\Rightarrow (\lambda (H2: (eq T (THead (Bind b) u t) (TLRef (plus n
+h)))).(let H3 \def (eq_ind T (THead (Bind b) u t) (\lambda (e: T).(match e in
T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _)
\Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef (plus n h))
-H1) in (False_ind (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n)
+H2) in (False_ind (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n)
(THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d
-y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) z))))) H2)))]) in
+y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) z))))) H3)))]) in
(H2 (refl_equal T (TLRef (plus n h)))))))))))) (\lambda (k: K).(\lambda (t0:
T).(\lambda (_: ((\forall (h: nat).(\forall (d: nat).((eq T (THead (Bind b) u
t) (lift h d t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0
(_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift
h (S d) z)))))))))).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1: (eq T
(THead (Bind b) u t) (lift h d (THead k t0 t1)))).(let H2 \def (eq_ind T
-(lift h d (THead k t0 t1)) (\lambda (t0: T).(eq T (THead (Bind b) u t) t0))
+(lift h d (THead k t0 t1)) (\lambda (t2: T).(eq T (THead (Bind b) u t) t2))
H1 (THead k (lift h d t0) (lift h (s k d) t1)) (lift_head k t0 t1 h d)) in
(let H3 \def (match H2 in eq return (\lambda (t2: T).(\lambda (_: (eq ? ?
t2)).((eq T t2 (THead k (lift h d t0) (lift h (s k d) t1))) \to (ex3_2 T T
(\lambda (y: T).(\lambda (z: T).(eq T (THead k t0 t1) (THead (Bind b) y z))))
(\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_:
T).(\lambda (z: T).(eq T t (lift h (S d) z)))))))) with [refl_equal
-\Rightarrow (\lambda (H2: (eq T (THead (Bind b) u t) (THead k (lift h d t0)
-(lift h (s k d) t1)))).(let H3 \def (f_equal T T (\lambda (e: T).(match e in
+\Rightarrow (\lambda (H3: (eq T (THead (Bind b) u t) (THead k (lift h d t0)
+(lift h (s k d) t1)))).(let H4 \def (f_equal T T (\lambda (e: T).(match e in
T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t | (TLRef _)
-\Rightarrow t | (THead _ _ t) \Rightarrow t])) (THead (Bind b) u t) (THead k
-(lift h d t0) (lift h (s k d) t1)) H2) in ((let H4 \def (f_equal T T (\lambda
-(e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow u
-| (TLRef _) \Rightarrow u | (THead _ t _) \Rightarrow t])) (THead (Bind b) u
-t) (THead k (lift h d t0) (lift h (s k d) t1)) H2) in ((let H5 \def (f_equal
-T K (\lambda (e: T).(match e in T return (\lambda (_: T).K) with [(TSort _)
-\Rightarrow (Bind b) | (TLRef _) \Rightarrow (Bind b) | (THead k _ _)
-\Rightarrow k])) (THead (Bind b) u t) (THead k (lift h d t0) (lift h (s k d)
-t1)) H2) in (eq_ind K (Bind b) (\lambda (k: K).((eq T u (lift h d t0)) \to
-((eq T t (lift h (s k d) t1)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z:
-T).(eq T (THead k t0 t1) (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_:
-T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S
-d) z)))))))) (\lambda (H6: (eq T u (lift h d t0))).(eq_ind T (lift h d t0)
-(\lambda (t2: T).((eq T t (lift h (s (Bind b) d) t1)) \to (ex3_2 T T (\lambda
-(y: T).(\lambda (z: T).(eq T (THead (Bind b) t0 t1) (THead (Bind b) y z))))
-(\lambda (y: T).(\lambda (_: T).(eq T t2 (lift h d y)))) (\lambda (_:
-T).(\lambda (z: T).(eq T t (lift h (S d) z))))))) (\lambda (H7: (eq T t (lift
-h (s (Bind b) d) t1))).(eq_ind T (lift h (s (Bind b) d) t1) (\lambda (t:
-T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead (Bind b) t0 t1)
-(THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t0)
-(lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) z))))))
-(ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq T (THead (Bind b) t0 t1)
-(THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t0)
-(lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h (s (Bind b) d)
-t1) (lift h (S d) z)))) t0 t1 (refl_equal T (THead (Bind b) t0 t1))
-(refl_equal T (lift h d t0)) (refl_equal T (lift h (S d) t1))) t (sym_eq T t
-(lift h (s (Bind b) d) t1) H7))) u (sym_eq T u (lift h d t0) H6))) k H5))
-H4)) H3)))]) in (H3 (refl_equal T (THead k (lift h d t0) (lift h (s k d)
-t1)))))))))))))) x)))).
+\Rightarrow t | (THead _ _ t2) \Rightarrow t2])) (THead (Bind b) u t) (THead
+k (lift h d t0) (lift h (s k d) t1)) H3) in ((let H5 \def (f_equal T T
+(\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _)
+\Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t2 _) \Rightarrow t2]))
+(THead (Bind b) u t) (THead k (lift h d t0) (lift h (s k d) t1)) H3) in ((let
+H6 \def (f_equal T K (\lambda (e: T).(match e in T return (\lambda (_: T).K)
+with [(TSort _) \Rightarrow (Bind b) | (TLRef _) \Rightarrow (Bind b) |
+(THead k0 _ _) \Rightarrow k0])) (THead (Bind b) u t) (THead k (lift h d t0)
+(lift h (s k d) t1)) H3) in (eq_ind K (Bind b) (\lambda (k0: K).((eq T u
+(lift h d t0)) \to ((eq T t (lift h (s k0 d) t1)) \to (ex3_2 T T (\lambda (y:
+T).(\lambda (z: T).(eq T (THead k0 t0 t1) (THead (Bind b) y z)))) (\lambda
+(y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z:
+T).(eq T t (lift h (S d) z)))))))) (\lambda (H7: (eq T u (lift h d
+t0))).(eq_ind T (lift h d t0) (\lambda (t2: T).((eq T t (lift h (s (Bind b)
+d) t1)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead (Bind b)
+t0 t1) (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T t2 (lift
+h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h (S d) z)))))))
+(\lambda (H8: (eq T t (lift h (s (Bind b) d) t1))).(eq_ind T (lift h (s (Bind
+b) d) t1) (\lambda (t2: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T
+(THead (Bind b) t0 t1) (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_:
+T).(eq T (lift h d t0) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T
+t2 (lift h (S d) z)))))) (ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq
+T (THead (Bind b) t0 t1) (THead (Bind b) y z)))) (\lambda (y: T).(\lambda (_:
+T).(eq T (lift h d t0) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T
+(lift h (s (Bind b) d) t1) (lift h (S d) z)))) t0 t1 (refl_equal T (THead
+(Bind b) t0 t1)) (refl_equal T (lift h d t0)) (refl_equal T (lift h (S d)
+t1))) t (sym_eq T t (lift h (s (Bind b) d) t1) H8))) u (sym_eq T u (lift h d
+t0) H7))) k H6)) H5)) H4)))]) in (H3 (refl_equal T (THead k (lift h d t0)
+(lift h (s k d) t1)))))))))))))) x)))).
theorem lift_gen_flat:
\forall (f: F).(\forall (u: T).(\forall (t: T).(\forall (x: T).(\forall (h:
(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead (Flat f) y
z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_:
T).(\lambda (z: T).(eq T t (lift h d z)))))))) with [refl_equal \Rightarrow
-(\lambda (H1: (eq T (THead (Flat f) u t) (TLRef n))).(let H2 \def (eq_ind T
+(\lambda (H2: (eq T (THead (Flat f) u t) (TLRef n))).(let H3 \def (eq_ind T
(THead (Flat f) u t) (\lambda (e: T).(match e in T return (\lambda (_:
T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False |
-(THead _ _ _) \Rightarrow True])) I (TLRef n) H1) in (False_ind (ex3_2 T T
+(THead _ _ _) \Rightarrow True])) I (TLRef n) H2) in (False_ind (ex3_2 T T
(\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead (Flat f) y z))))
(\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_:
-T).(\lambda (z: T).(eq T t (lift h d z))))) H2)))]) in (H2 (refl_equal T
+T).(\lambda (z: T).(eq T t (lift h d z))))) H3)))]) in (H2 (refl_equal T
(TLRef n)))))) (\lambda (H0: (le d n)).(let H1 \def (eq_ind T (lift h d
(TLRef n)) (\lambda (t0: T).(eq T (THead (Flat f) u t) t0)) H (TLRef (plus n
h)) (lift_lref_ge n h d H0)) in (let H2 \def (match H1 in eq return (\lambda
T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead (Flat f) y z))))
(\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_:
T).(\lambda (z: T).(eq T t (lift h d z)))))))) with [refl_equal \Rightarrow
-(\lambda (H1: (eq T (THead (Flat f) u t) (TLRef (plus n h)))).(let H2 \def
+(\lambda (H2: (eq T (THead (Flat f) u t) (TLRef (plus n h)))).(let H3 \def
(eq_ind T (THead (Flat f) u t) (\lambda (e: T).(match e in T return (\lambda
(_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False
-| (THead _ _ _) \Rightarrow True])) I (TLRef (plus n h)) H1) in (False_ind
+| (THead _ _ _) \Rightarrow True])) I (TLRef (plus n h)) H2) in (False_ind
(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (TLRef n) (THead (Flat f) y
z)))) (\lambda (y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_:
-T).(\lambda (z: T).(eq T t (lift h d z))))) H2)))]) in (H2 (refl_equal T
+T).(\lambda (z: T).(eq T t (lift h d z))))) H3)))]) in (H2 (refl_equal T
(TLRef (plus n h)))))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda (_:
((\forall (h: nat).(\forall (d: nat).((eq T (THead (Flat f) u t) (lift h d
t0)) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T t0 (THead (Flat f)
(_: T).(\lambda (z: T).(eq T t (lift h d z)))))))))).(\lambda (h:
nat).(\lambda (d: nat).(\lambda (H1: (eq T (THead (Flat f) u t) (lift h d
(THead k t0 t1)))).(let H2 \def (eq_ind T (lift h d (THead k t0 t1)) (\lambda
-(t0: T).(eq T (THead (Flat f) u t) t0)) H1 (THead k (lift h d t0) (lift h (s
+(t2: T).(eq T (THead (Flat f) u t) t2)) H1 (THead k (lift h d t0) (lift h (s
k d) t1)) (lift_head k t0 t1 h d)) in (let H3 \def (match H2 in eq return
(\lambda (t2: T).(\lambda (_: (eq ? ? t2)).((eq T t2 (THead k (lift h d t0)
(lift h (s k d) t1))) \to (ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T
(THead k t0 t1) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T
u (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h d z))))))))
-with [refl_equal \Rightarrow (\lambda (H2: (eq T (THead (Flat f) u t) (THead
-k (lift h d t0) (lift h (s k d) t1)))).(let H3 \def (f_equal T T (\lambda (e:
+with [refl_equal \Rightarrow (\lambda (H3: (eq T (THead (Flat f) u t) (THead
+k (lift h d t0) (lift h (s k d) t1)))).(let H4 \def (f_equal T T (\lambda (e:
T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t |
-(TLRef _) \Rightarrow t | (THead _ _ t) \Rightarrow t])) (THead (Flat f) u t)
-(THead k (lift h d t0) (lift h (s k d) t1)) H2) in ((let H4 \def (f_equal T T
-(\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _)
-\Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t _) \Rightarrow t]))
-(THead (Flat f) u t) (THead k (lift h d t0) (lift h (s k d) t1)) H2) in ((let
-H5 \def (f_equal T K (\lambda (e: T).(match e in T return (\lambda (_: T).K)
+(TLRef _) \Rightarrow t | (THead _ _ t2) \Rightarrow t2])) (THead (Flat f) u
+t) (THead k (lift h d t0) (lift h (s k d) t1)) H3) in ((let H5 \def (f_equal
+T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with [(TSort _)
+\Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t2 _) \Rightarrow t2]))
+(THead (Flat f) u t) (THead k (lift h d t0) (lift h (s k d) t1)) H3) in ((let
+H6 \def (f_equal T K (\lambda (e: T).(match e in T return (\lambda (_: T).K)
with [(TSort _) \Rightarrow (Flat f) | (TLRef _) \Rightarrow (Flat f) |
-(THead k _ _) \Rightarrow k])) (THead (Flat f) u t) (THead k (lift h d t0)
-(lift h (s k d) t1)) H2) in (eq_ind K (Flat f) (\lambda (k: K).((eq T u (lift
-h d t0)) \to ((eq T t (lift h (s k d) t1)) \to (ex3_2 T T (\lambda (y:
-T).(\lambda (z: T).(eq T (THead k t0 t1) (THead (Flat f) y z)))) (\lambda (y:
-T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z:
-T).(eq T t (lift h d z)))))))) (\lambda (H6: (eq T u (lift h d t0))).(eq_ind
+(THead k0 _ _) \Rightarrow k0])) (THead (Flat f) u t) (THead k (lift h d t0)
+(lift h (s k d) t1)) H3) in (eq_ind K (Flat f) (\lambda (k0: K).((eq T u
+(lift h d t0)) \to ((eq T t (lift h (s k0 d) t1)) \to (ex3_2 T T (\lambda (y:
+T).(\lambda (z: T).(eq T (THead k0 t0 t1) (THead (Flat f) y z)))) (\lambda
+(y: T).(\lambda (_: T).(eq T u (lift h d y)))) (\lambda (_: T).(\lambda (z:
+T).(eq T t (lift h d z)))))))) (\lambda (H7: (eq T u (lift h d t0))).(eq_ind
T (lift h d t0) (\lambda (t2: T).((eq T t (lift h (s (Flat f) d) t1)) \to
(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead (Flat f) t0 t1)
(THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T t2 (lift h d
y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h d z))))))) (\lambda
-(H7: (eq T t (lift h (s (Flat f) d) t1))).(eq_ind T (lift h (s (Flat f) d)
-t1) (\lambda (t: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead
+(H8: (eq T t (lift h (s (Flat f) d) t1))).(eq_ind T (lift h (s (Flat f) d)
+t1) (\lambda (t2: T).(ex3_2 T T (\lambda (y: T).(\lambda (z: T).(eq T (THead
+(Flat f) t0 t1) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T
+(lift h d t0) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t2 (lift
+h d z)))))) (ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq T (THead
(Flat f) t0 t1) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T
-(lift h d t0) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T t (lift h
-d z)))))) (ex3_2_intro T T (\lambda (y: T).(\lambda (z: T).(eq T (THead (Flat
-f) t0 t1) (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift
-h d t0) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h (s
-(Flat f) d) t1) (lift h d z)))) t0 t1 (refl_equal T (THead (Flat f) t0 t1))
-(refl_equal T (lift h d t0)) (refl_equal T (lift h d t1))) t (sym_eq T t
-(lift h (s (Flat f) d) t1) H7))) u (sym_eq T u (lift h d t0) H6))) k H5))
-H4)) H3)))]) in (H3 (refl_equal T (THead k (lift h d t0) (lift h (s k d)
+(lift h d t0) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h
+(s (Flat f) d) t1) (lift h d z)))) t0 t1 (refl_equal T (THead (Flat f) t0
+t1)) (refl_equal T (lift h d t0)) (refl_equal T (lift h d t1))) t (sym_eq T t
+(lift h (s (Flat f) d) t1) H8))) u (sym_eq T u (lift h d t0) H7))) k H6))
+H5)) H4)))]) in (H3 (refl_equal T (THead k (lift h d t0) (lift h (s k d)
t1)))))))))))))) x)))).
nat).(\lambda (d: nat).(\lambda (H1: (eq T (THead k v (lift h d (THead k0 t0
t1))) (THead k0 t0 t1))).(\lambda (P: Prop).(let H2 \def (f_equal T K
(\lambda (e: T).(match e in T return (\lambda (_: T).K) with [(TSort _)
-\Rightarrow k | (TLRef _) \Rightarrow k | (THead k _ _) \Rightarrow k]))
+\Rightarrow k | (TLRef _) \Rightarrow k | (THead k1 _ _) \Rightarrow k1]))
(THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1) H1) in ((let H3 \def
(f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with
-[(TSort _) \Rightarrow v | (TLRef _) \Rightarrow v | (THead _ t _)
-\Rightarrow t])) (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1) H1)
-in ((let H4 \def (f_equal T T (\lambda (e: T).(match e in T return (\lambda
-(_: T).T) with [(TSort _) \Rightarrow (THead k0 ((let rec lref_map (f: ((nat
-\to nat))) (d: nat) (t: T) on t: T \def (match t with [(TSort n) \Rightarrow
-(TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d) with [true
-\Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow
-(THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda
-(x: nat).(plus x h)) d t0) ((let rec lref_map (f: ((nat \to nat))) (d: nat)
-(t: T) on t: T \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef
-i) \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | false
-\Rightarrow (f i)])) | (THead k u t0) \Rightarrow (THead k (lref_map f d u)
-(lref_map f (s k d) t0))]) in lref_map) (\lambda (x: nat).(plus x h)) (s k0
-d) t1)) | (TLRef _) \Rightarrow (THead k0 ((let rec lref_map (f: ((nat \to
-nat))) (d: nat) (t: T) on t: T \def (match t with [(TSort n) \Rightarrow
-(TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d) with [true
-\Rightarrow i | false \Rightarrow (f i)])) | (THead k u t0) \Rightarrow
-(THead k (lref_map f d u) (lref_map f (s k d) t0))]) in lref_map) (\lambda
-(x: nat).(plus x h)) d t0) ((let rec lref_map (f: ((nat \to nat))) (d: nat)
-(t: T) on t: T \def (match t with [(TSort n) \Rightarrow (TSort n) | (TLRef
-i) \Rightarrow (TLRef (match (blt i d) with [true \Rightarrow i | false
-\Rightarrow (f i)])) | (THead k u t0) \Rightarrow (THead k (lref_map f d u)
-(lref_map f (s k d) t0))]) in lref_map) (\lambda (x: nat).(plus x h)) (s k0
-d) t1)) | (THead _ _ t) \Rightarrow t])) (THead k v (lift h d (THead k0 t0
-t1))) (THead k0 t0 t1) H1) in (\lambda (_: (eq T v t0)).(\lambda (H6: (eq K k
-k0)).(let H7 \def (eq_ind K k (\lambda (k: K).(\forall (v: T).(\forall (h:
-nat).(\forall (d: nat).((eq T (THead k v (lift h d t1)) t1) \to (\forall (P:
-Prop).P)))))) H0 k0 H6) in (let H8 \def (eq_ind T (lift h d (THead k0 t0 t1))
-(\lambda (t: T).(eq T t t1)) H4 (THead k0 (lift h d t0) (lift h (s k0 d) t1))
-(lift_head k0 t0 t1 h d)) in (H7 (lift h d t0) h (s k0 d) H8 P)))))) H3))
-H2)))))))))))) t)).
+[(TSort _) \Rightarrow v | (TLRef _) \Rightarrow v | (THead _ t2 _)
+\Rightarrow t2])) (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1)
+H1) in ((let H4 \def (f_equal T T (\lambda (e: T).(match e in T return
+(\lambda (_: T).T) with [(TSort _) \Rightarrow (THead k0 ((let rec lref_map
+(f: ((nat \to nat))) (d0: nat) (t2: T) on t2: T \def (match t2 with [(TSort
+n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d0)
+with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k1 u t3)
+\Rightarrow (THead k1 (lref_map f d0 u) (lref_map f (s k1 d0) t3))]) in
+lref_map) (\lambda (x: nat).(plus x h)) d t0) ((let rec lref_map (f: ((nat
+\to nat))) (d0: nat) (t2: T) on t2: T \def (match t2 with [(TSort n)
+\Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d0) with
+[true \Rightarrow i | false \Rightarrow (f i)])) | (THead k1 u t3)
+\Rightarrow (THead k1 (lref_map f d0 u) (lref_map f (s k1 d0) t3))]) in
+lref_map) (\lambda (x: nat).(plus x h)) (s k0 d) t1)) | (TLRef _) \Rightarrow
+(THead k0 ((let rec lref_map (f: ((nat \to nat))) (d0: nat) (t2: T) on t2: T
+\def (match t2 with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow
+(TLRef (match (blt i d0) with [true \Rightarrow i | false \Rightarrow (f
+i)])) | (THead k1 u t3) \Rightarrow (THead k1 (lref_map f d0 u) (lref_map f
+(s k1 d0) t3))]) in lref_map) (\lambda (x: nat).(plus x h)) d t0) ((let rec
+lref_map (f: ((nat \to nat))) (d0: nat) (t2: T) on t2: T \def (match t2 with
+[(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i
+d0) with [true \Rightarrow i | false \Rightarrow (f i)])) | (THead k1 u t3)
+\Rightarrow (THead k1 (lref_map f d0 u) (lref_map f (s k1 d0) t3))]) in
+lref_map) (\lambda (x: nat).(plus x h)) (s k0 d) t1)) | (THead _ _ t2)
+\Rightarrow t2])) (THead k v (lift h d (THead k0 t0 t1))) (THead k0 t0 t1)
+H1) in (\lambda (_: (eq T v t0)).(\lambda (H6: (eq K k k0)).(let H7 \def
+(eq_ind K k (\lambda (k1: K).(\forall (v0: T).(\forall (h0: nat).(\forall
+(d0: nat).((eq T (THead k1 v0 (lift h0 d0 t1)) t1) \to (\forall (P0:
+Prop).P0)))))) H0 k0 H6) in (let H8 \def (eq_ind T (lift h d (THead k0 t0
+t1)) (\lambda (t2: T).(eq T t2 t1)) H4 (THead k0 (lift h d t0) (lift h (s k0
+d) t1)) (lift_head k0 t0 t1 h d)) in (H7 (lift h d t0) h (s k0 d) H8 P))))))
+H3)) H2)))))))))))) t)).
theorem lift_r:
\forall (t: T).(\forall (d: nat).(eq T (lift O d t) t))
K).(\lambda (t0: T).(\lambda (H: ((\forall (d: nat).(eq T (lift O d t0)
t0)))).(\lambda (t1: T).(\lambda (H0: ((\forall (d: nat).(eq T (lift O d t1)
t1)))).(\lambda (d: nat).(eq_ind_r T (THead k (lift O d t0) (lift O (s k d)
-t1)) (\lambda (t2: T).(eq T t2 (THead k t0 t1))) (sym_equal T (THead k t0 t1)
-(THead k (lift O d t0) (lift O (s k d) t1)) (sym_equal T (THead k (lift O d
-t0) (lift O (s k d) t1)) (THead k t0 t1) (sym_equal T (THead k t0 t1) (THead
-k (lift O d t0) (lift O (s k d) t1)) (f_equal3 K T T T THead k k t0 (lift O d
-t0) t1 (lift O (s k d) t1) (refl_equal K k) (sym_eq T (lift O d t0) t0 (H d))
+t1)) (\lambda (t2: T).(eq T t2 (THead k t0 t1))) (sym_eq T (THead k t0 t1)
+(THead k (lift O d t0) (lift O (s k d) t1)) (sym_eq T (THead k (lift O d t0)
+(lift O (s k d) t1)) (THead k t0 t1) (sym_eq T (THead k t0 t1) (THead k (lift
+O d t0) (lift O (s k d) t1)) (f_equal3 K T T T THead k k t0 (lift O d t0) t1
+(lift O (s k d) t1) (refl_equal K k) (sym_eq T (lift O d t0) t0 (H d))
(sym_eq T (lift O (s k d) t1) t1 (H0 (s k d))))))) (lift O d (THead k t0 t1))
(lift_head k t0 t1 O d)))))))) t).
(lift_lref_ge n h d H0)) in (sym_eq T t (TLRef n) (lift_gen_lref_ge h d n H0
t H1)))))))))) (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (t:
T).(((\forall (t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t)
-(lift h d t0)) \to (eq T t t0)))))) \to (\forall (t0: T).(((\forall (t:
-T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t)) \to
-(eq T t0 t)))))) \to (\forall (t1: T).(\forall (h: nat).(\forall (d:
+(lift h d t0)) \to (eq T t t0)))))) \to (\forall (t0: T).(((\forall (t1:
+T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t1))
+\to (eq T t0 t1)))))) \to (\forall (t1: T).(\forall (h: nat).(\forall (d:
nat).((eq T (lift h d (THead k0 t t0)) (lift h d t1)) \to (eq T (THead k0 t
t0) t1)))))))))) (\lambda (b: B).(\lambda (t: T).(\lambda (H: ((\forall (t0:
T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to
-(eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (t: T).(\forall
-(h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t)) \to (eq T t0
-t))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1:
+(eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (t1: T).(\forall
+(h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t1)) \to (eq T t0
+t1))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1:
(eq T (lift h d (THead (Bind b) t t0)) (lift h d t1))).(let H2 \def (eq_ind T
-(lift h d (THead (Bind b) t t0)) (\lambda (t: T).(eq T t (lift h d t1))) H1
+(lift h d (THead (Bind b) t t0)) (\lambda (t2: T).(eq T t2 (lift h d t1))) H1
(THead (Bind b) (lift h d t) (lift h (S d) t0)) (lift_bind b t t0 h d)) in
(ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T t1 (THead (Bind b) y
z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t) (lift h d y))))
(H3: (eq T t1 (THead (Bind b) x0 x1))).(\lambda (H4: (eq T (lift h d t) (lift
h d x0))).(\lambda (H5: (eq T (lift h (S d) t0) (lift h (S d) x1))).(eq_ind_r
T (THead (Bind b) x0 x1) (\lambda (t2: T).(eq T (THead (Bind b) t t0) t2))
-(sym_equal T (THead (Bind b) x0 x1) (THead (Bind b) t t0) (sym_equal T (THead
-(Bind b) t t0) (THead (Bind b) x0 x1) (sym_equal T (THead (Bind b) x0 x1)
-(THead (Bind b) t t0) (f_equal3 K T T T THead (Bind b) (Bind b) x0 t x1 t0
-(refl_equal K (Bind b)) (sym_eq T t x0 (H x0 h d H4)) (sym_eq T t0 x1 (H0 x1
-h (S d) H5)))))) t1 H3)))))) (lift_gen_bind b (lift h d t) (lift h (S d) t0)
-t1 h d H2)))))))))))) (\lambda (f: F).(\lambda (t: T).(\lambda (H: ((\forall
-(t0: T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) (lift h d
-t0)) \to (eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (t:
-T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t)) \to
-(eq T t0 t))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d:
-nat).(\lambda (H1: (eq T (lift h d (THead (Flat f) t t0)) (lift h d
-t1))).(let H2 \def (eq_ind T (lift h d (THead (Flat f) t t0)) (\lambda (t:
-T).(eq T t (lift h d t1))) H1 (THead (Flat f) (lift h d t) (lift h d t0))
-(lift_flat f t t0 h d)) in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq
-T t1 (THead (Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d
-t) (lift h d y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h d t0) (lift
-h d z)))) (eq T (THead (Flat f) t t0) t1) (\lambda (x0: T).(\lambda (x1:
-T).(\lambda (H3: (eq T t1 (THead (Flat f) x0 x1))).(\lambda (H4: (eq T (lift
-h d t) (lift h d x0))).(\lambda (H5: (eq T (lift h d t0) (lift h d
-x1))).(eq_ind_r T (THead (Flat f) x0 x1) (\lambda (t2: T).(eq T (THead (Flat
-f) t t0) t2)) (sym_equal T (THead (Flat f) x0 x1) (THead (Flat f) t t0)
-(sym_equal T (THead (Flat f) t t0) (THead (Flat f) x0 x1) (sym_equal T (THead
-(Flat f) x0 x1) (THead (Flat f) t t0) (f_equal3 K T T T THead (Flat f) (Flat
-f) x0 t x1 t0 (refl_equal K (Flat f)) (sym_eq T t x0 (H x0 h d H4)) (sym_eq T
-t0 x1 (H0 x1 h d H5)))))) t1 H3)))))) (lift_gen_flat f (lift h d t) (lift h d
-t0) t1 h d H2)))))))))))) k)) x).
+(sym_eq T (THead (Bind b) x0 x1) (THead (Bind b) t t0) (sym_eq T (THead (Bind
+b) t t0) (THead (Bind b) x0 x1) (sym_eq T (THead (Bind b) x0 x1) (THead (Bind
+b) t t0) (f_equal3 K T T T THead (Bind b) (Bind b) x0 t x1 t0 (refl_equal K
+(Bind b)) (sym_eq T t x0 (H x0 h d H4)) (sym_eq T t0 x1 (H0 x1 h (S d)
+H5)))))) t1 H3)))))) (lift_gen_bind b (lift h d t) (lift h (S d) t0) t1 h d
+H2)))))))))))) (\lambda (f: F).(\lambda (t: T).(\lambda (H: ((\forall (t0:
+T).(\forall (h: nat).(\forall (d: nat).((eq T (lift h d t) (lift h d t0)) \to
+(eq T t t0))))))).(\lambda (t0: T).(\lambda (H0: ((\forall (t1: T).(\forall
+(h: nat).(\forall (d: nat).((eq T (lift h d t0) (lift h d t1)) \to (eq T t0
+t1))))))).(\lambda (t1: T).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H1:
+(eq T (lift h d (THead (Flat f) t t0)) (lift h d t1))).(let H2 \def (eq_ind T
+(lift h d (THead (Flat f) t t0)) (\lambda (t2: T).(eq T t2 (lift h d t1))) H1
+(THead (Flat f) (lift h d t) (lift h d t0)) (lift_flat f t t0 h d)) in
+(ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T t1 (THead (Flat f) y
+z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h d t) (lift h d y))))
+(\lambda (_: T).(\lambda (z: T).(eq T (lift h d t0) (lift h d z)))) (eq T
+(THead (Flat f) t t0) t1) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H3: (eq
+T t1 (THead (Flat f) x0 x1))).(\lambda (H4: (eq T (lift h d t) (lift h d
+x0))).(\lambda (H5: (eq T (lift h d t0) (lift h d x1))).(eq_ind_r T (THead
+(Flat f) x0 x1) (\lambda (t2: T).(eq T (THead (Flat f) t t0) t2)) (sym_eq T
+(THead (Flat f) x0 x1) (THead (Flat f) t t0) (sym_eq T (THead (Flat f) t t0)
+(THead (Flat f) x0 x1) (sym_eq T (THead (Flat f) x0 x1) (THead (Flat f) t t0)
+(f_equal3 K T T T THead (Flat f) (Flat f) x0 t x1 t0 (refl_equal K (Flat f))
+(sym_eq T t x0 (H x0 h d H4)) (sym_eq T t0 x1 (H0 x1 h d H5)))))) t1 H3))))))
+(lift_gen_flat f (lift h d t) (lift h d t0) t1 h d H2)))))))))))) k)) x).
theorem lift_gen_lift:
\forall (t1: T).(\forall (x: T).(\forall (h1: nat).(\forall (h2:
(plus_lt_compat_r n (plus d2 h2) h1 H4)) (plus (plus d2 h1) h2)
(plus_permute_2_in_3 d2 h1 h2)) x H2 (ex2 T (\lambda (t2: T).(eq T x (lift h1
d1 t2))) (\lambda (t2: T).(eq T (TLRef n) (lift h2 d2 t2)))))) (\lambda (H4:
-(le (plus d2 h2) n)).(let H5 \def (eq_ind nat (plus n h1) (\lambda (n:
-nat).(eq T (TLRef n) (lift h2 (plus d2 h1) x))) H2 (plus (minus (plus n h1)
+(le (plus d2 h2) n)).(let H5 \def (eq_ind nat (plus n h1) (\lambda (n0:
+nat).(eq T (TLRef n0) (lift h2 (plus d2 h1) x))) H2 (plus (minus (plus n h1)
h2) h2) (le_plus_minus_sym h2 (plus n h1) (le_plus_trans h2 n h1
(le_trans_plus_r d2 h2 n H4)))) in (eq_ind_r T (TLRef (minus (plus n h1) h2))
(\lambda (t: T).(ex2 T (\lambda (t2: T).(eq T t (lift h1 d1 t2))) (\lambda
x (lift h1 d1 t2))) (\lambda (t2: T).(eq T (THead k0 t t0) (lift h2 d2
t2)))))) (\lambda (b: B).(\lambda (H3: (eq T (lift h1 d1 (THead (Bind b) t
t0)) (lift h2 (plus d2 h1) x))).(let H4 \def (eq_ind T (lift h1 d1 (THead
-(Bind b) t t0)) (\lambda (t: T).(eq T t (lift h2 (plus d2 h1) x))) H3 (THead
-(Bind b) (lift h1 d1 t) (lift h1 (S d1) t0)) (lift_bind b t t0 h1 d1)) in
-(ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Bind b) y
+(Bind b) t t0)) (\lambda (t2: T).(eq T t2 (lift h2 (plus d2 h1) x))) H3
+(THead (Bind b) (lift h1 d1 t) (lift h1 (S d1) t0)) (lift_bind b t t0 h1 d1))
+in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead (Bind b) y
z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h1 d1 t) (lift h2 (plus d2
h1) y)))) (\lambda (_: T).(\lambda (z: T).(eq T (lift h1 (S d1) t0) (lift h2
(S (plus d2 h1)) z)))) (ex2 T (\lambda (t2: T).(eq T x (lift h1 d1 t2)))
x0 h1 h2 d1 d2 H1 H6)) x H5)))))) (lift_gen_bind b (lift h1 d1 t) (lift h1 (S
d1) t0) x h2 (plus d2 h1) H4))))) (\lambda (f: F).(\lambda (H3: (eq T (lift
h1 d1 (THead (Flat f) t t0)) (lift h2 (plus d2 h1) x))).(let H4 \def (eq_ind
-T (lift h1 d1 (THead (Flat f) t t0)) (\lambda (t: T).(eq T t (lift h2 (plus
+T (lift h1 d1 (THead (Flat f) t t0)) (\lambda (t2: T).(eq T t2 (lift h2 (plus
d2 h1) x))) H3 (THead (Flat f) (lift h1 d1 t) (lift h1 d1 t0)) (lift_flat f t
t0 h1 d1)) in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x (THead
(Flat f) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T (lift h1 d1 t) (lift
(lift_lref_ge n (plus k h) d H1)) (lift k e (TLRef (plus n h))) (lift_lref_ge
(plus n h) k e (le_trans e (plus d h) (plus n h) H (plus_le_compat d n h h H1
(le_n h))))) (lift h d (TLRef n)) (lift_lref_ge n h d H1))))))))))) (\lambda
-(k: K).(\lambda (t0: T).(\lambda (H: ((\forall (h: nat).(\forall (k:
+(k: K).(\lambda (t0: T).(\lambda (H: ((\forall (h: nat).(\forall (k0:
nat).(\forall (d: nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to
-(eq T (lift k e (lift h d t0)) (lift (plus k h) d t0)))))))))).(\lambda (t1:
-T).(\lambda (H0: ((\forall (h: nat).(\forall (k: nat).(\forall (d:
-nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to (eq T (lift k e
-(lift h d t1)) (lift (plus k h) d t1)))))))))).(\lambda (h: nat).(\lambda
+(eq T (lift k0 e (lift h d t0)) (lift (plus k0 h) d t0)))))))))).(\lambda
+(t1: T).(\lambda (H0: ((\forall (h: nat).(\forall (k0: nat).(\forall (d:
+nat).(\forall (e: nat).((le e (plus d h)) \to ((le d e) \to (eq T (lift k0 e
+(lift h d t1)) (lift (plus k0 h) d t1)))))))))).(\lambda (h: nat).(\lambda
(k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le e (plus d
h))).(\lambda (H2: (le d e)).(eq_ind_r T (THead k (lift h d t0) (lift h (s k
d) t1)) (\lambda (t2: T).(eq T (lift k0 e t2) (lift (plus k0 h) d (THead k t0
(plus n k)) (le_lt_n_Sm (plus d k) (plus n k) (plus_le_compat d n k k H1
(le_n k))))))))) (plus k d) (plus_comm k d)) (lift k e (TLRef n))
(lift_lref_ge n k e H0)))))))))) (\lambda (k: K).(\lambda (t0: T).(\lambda
-(H: ((\forall (h: nat).(\forall (k: nat).(\forall (d: nat).(\forall (e:
-nat).((le e d) \to (eq T (lift h (plus k d) (lift k e t0)) (lift k e (lift h
-d t0)))))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (h: nat).(\forall (k:
-nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq T (lift h (plus k
-d) (lift k e t1)) (lift k e (lift h d t1)))))))))).(\lambda (h: nat).(\lambda
-(k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le e
-d)).(eq_ind_r T (THead k (lift k0 e t0) (lift k0 (s k e) t1)) (\lambda (t2:
+(H: ((\forall (h: nat).(\forall (k0: nat).(\forall (d: nat).(\forall (e:
+nat).((le e d) \to (eq T (lift h (plus k0 d) (lift k0 e t0)) (lift k0 e (lift
+h d t0)))))))))).(\lambda (t1: T).(\lambda (H0: ((\forall (h: nat).(\forall
+(k0: nat).(\forall (d: nat).(\forall (e: nat).((le e d) \to (eq T (lift h
+(plus k0 d) (lift k0 e t1)) (lift k0 e (lift h d t1)))))))))).(\lambda (h:
+nat).(\lambda (k0: nat).(\lambda (d: nat).(\lambda (e: nat).(\lambda (H1: (le
+e d)).(eq_ind_r T (THead k (lift k0 e t0) (lift k0 (s k e) t1)) (\lambda (t2:
T).(eq T (lift h (plus k0 d) t2) (lift k0 e (lift h d (THead k t0 t1)))))
(eq_ind_r T (THead k (lift h (plus k0 d) (lift k0 e t0)) (lift h (s k (plus
k0 d)) (lift k0 (s k e) t1))) (\lambda (t2: T).(eq T t2 (lift k0 e (lift h d
(TLRef n)))) (\lambda (H2: (lt n d)).(eq_ind_r T (TLRef n) (\lambda (t0:
T).(eq nat (weight_map f t0) (weight_map g (lift (S h) d (TLRef n)))))
(eq_ind_r T (TLRef n) (\lambda (t0: T).(eq nat (weight_map f (TLRef n))
-(weight_map g t0))) (sym_equal nat (g n) (f n) (H n H2)) (lift (S h) d (TLRef
+(weight_map g t0))) (sym_eq nat (g n) (f n) (H n H2)) (lift (S h) d (TLRef
n)) (lift_lref_lt n (S h) d H2)) (lift h d (TLRef n)) (lift_lref_lt n h d
H2))) (\lambda (H2: (le d n)).(eq_ind_r T (TLRef (plus n h)) (\lambda (t0:
T).(eq nat (weight_map f t0) (weight_map g (lift (S h) d (TLRef n)))))
(eq_ind_r T (TLRef (plus n (S h))) (\lambda (t0: T).(eq nat (weight_map f
(TLRef (plus n h))) (weight_map g t0))) (eq_ind nat (S (plus n h)) (\lambda
-(n0: nat).(eq nat (f (plus n h)) (g n0))) (sym_equal nat (g (S (plus n h)))
-(f (plus n h)) (H1 (plus n h) (le_plus_trans d n h H2))) (plus n (S h))
+(n0: nat).(eq nat (f (plus n h)) (g n0))) (sym_eq nat (g (S (plus n h))) (f
+(plus n h)) (H1 (plus n h) (le_plus_trans d n h H2))) (plus n (S h))
(plus_n_Sm n h)) (lift (S h) d (TLRef n)) (lift_lref_ge n (S h) d H2)) (lift
h d (TLRef n)) (lift_lref_ge n h d H2)))))))))))) (\lambda (k: K).(\lambda
(t0: T).(\lambda (H: ((\forall (h: nat).(\forall (d: nat).(\forall (f: ((nat
t0))) m) (wadd f (S (weight_map f (lift h d t0))) m)) (\lambda (H5: (eq nat m
O)).(eq_ind_r nat O (\lambda (n: nat).(eq nat (wadd g (S (weight_map g (lift
(S h) d t0))) n) (wadd f (S (weight_map f (lift h d t0))) n))) (f_equal nat
-nat S (weight_map g (lift (S h) d t0)) (weight_map f (lift h d t0))
-(sym_equal nat (weight_map f (lift h d t0)) (weight_map g (lift (S h) d t0))
-(H h d f g H1 H2 H3))) m H5)) (\lambda (H5: (ex2 nat (\lambda (m0: nat).(eq
-nat m (S m0))) (\lambda (m: nat).(lt m d)))).(ex2_ind nat (\lambda (m0:
-nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d)) (eq nat (wadd g (S
-(weight_map g (lift (S h) d t0))) m) (wadd f (S (weight_map f (lift h d t0)))
-m)) (\lambda (x: nat).(\lambda (H6: (eq nat m (S x))).(\lambda (H7: (lt x
-d)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (wadd g (S (weight_map g
-(lift (S h) d t0))) n) (wadd f (S (weight_map f (lift h d t0))) n))) (H1 x
-H7) m H6)))) H5)) (lt_gen_xS m d H4)))) H2 (\lambda (m: nat).(\lambda (H4:
-(le (S d) m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S n))) (\lambda (n:
-nat).(le d n)) (eq nat (g m) (wadd f (S (weight_map f (lift h d t0))) m))
-(\lambda (x: nat).(\lambda (H5: (eq nat m (S x))).(\lambda (H6: (le d
-x)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (g n) (wadd f (S
-(weight_map f (lift h d t0))) n))) (H3 x H6) m H5)))) (le_gen_S d m H4)))))))
-(f_equal nat nat S (plus (weight_map f (lift h d t0)) (weight_map (wadd f O)
-(lift h (S d) t1))) (plus (weight_map g (lift (S h) d t0)) (weight_map (wadd
-g O) (lift (S h) (S d) t1))) (f_equal2 nat nat nat plus (weight_map f (lift h
-d t0)) (weight_map g (lift (S h) d t0)) (weight_map (wadd f O) (lift h (S d)
-t1)) (weight_map (wadd g O) (lift (S h) (S d) t1)) (H h d f g H1 H2 H3) (H0 h
-(S d) (wadd f O) (wadd g O) (\lambda (m: nat).(\lambda (H4: (lt m (S
+nat S (weight_map g (lift (S h) d t0)) (weight_map f (lift h d t0)) (sym_eq
+nat (weight_map f (lift h d t0)) (weight_map g (lift (S h) d t0)) (H h d f g
+H1 H2 H3))) m H5)) (\lambda (H5: (ex2 nat (\lambda (m0: nat).(eq nat m (S
+m0))) (\lambda (m0: nat).(lt m0 d)))).(ex2_ind nat (\lambda (m0: nat).(eq nat
+m (S m0))) (\lambda (m0: nat).(lt m0 d)) (eq nat (wadd g (S (weight_map g
+(lift (S h) d t0))) m) (wadd f (S (weight_map f (lift h d t0))) m)) (\lambda
+(x: nat).(\lambda (H6: (eq nat m (S x))).(\lambda (H7: (lt x d)).(eq_ind_r
+nat (S x) (\lambda (n: nat).(eq nat (wadd g (S (weight_map g (lift (S h) d
+t0))) n) (wadd f (S (weight_map f (lift h d t0))) n))) (H1 x H7) m H6))))
+H5)) (lt_gen_xS m d H4)))) H2 (\lambda (m: nat).(\lambda (H4: (le (S d)
+m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S n))) (\lambda (n: nat).(le d
+n)) (eq nat (g m) (wadd f (S (weight_map f (lift h d t0))) m)) (\lambda (x:
+nat).(\lambda (H5: (eq nat m (S x))).(\lambda (H6: (le d x)).(eq_ind_r nat (S
+x) (\lambda (n: nat).(eq nat (g n) (wadd f (S (weight_map f (lift h d t0)))
+n))) (H3 x H6) m H5)))) (le_gen_S d m H4))))))) (f_equal nat nat S (plus
+(weight_map f (lift h d t0)) (weight_map (wadd f O) (lift h (S d) t1))) (plus
+(weight_map g (lift (S h) d t0)) (weight_map (wadd g O) (lift (S h) (S d)
+t1))) (f_equal2 nat nat nat plus (weight_map f (lift h d t0)) (weight_map g
+(lift (S h) d t0)) (weight_map (wadd f O) (lift h (S d) t1)) (weight_map
+(wadd g O) (lift (S h) (S d) t1)) (H h d f g H1 H2 H3) (H0 h (S d) (wadd f O)
+(wadd g O) (\lambda (m: nat).(\lambda (H4: (lt m (S d))).(or_ind (eq nat m O)
+(ex2 nat (\lambda (m0: nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d)))
+(eq nat (wadd g O m) (wadd f O m)) (\lambda (H5: (eq nat m O)).(eq_ind_r nat
+O (\lambda (n: nat).(eq nat (wadd g O n) (wadd f O n))) (refl_equal nat O) m
+H5)) (\lambda (H5: (ex2 nat (\lambda (m0: nat).(eq nat m (S m0))) (\lambda
+(m0: nat).(lt m0 d)))).(ex2_ind nat (\lambda (m0: nat).(eq nat m (S m0)))
+(\lambda (m0: nat).(lt m0 d)) (eq nat (wadd g O m) (wadd f O m)) (\lambda (x:
+nat).(\lambda (H6: (eq nat m (S x))).(\lambda (H7: (lt x d)).(eq_ind_r nat (S
+x) (\lambda (n: nat).(eq nat (wadd g O n) (wadd f O n))) (H1 x H7) m H6))))
+H5)) (lt_gen_xS m d H4)))) H2 (\lambda (m: nat).(\lambda (H4: (le (S d)
+m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S n))) (\lambda (n: nat).(le d
+n)) (eq nat (g m) (wadd f O m)) (\lambda (x: nat).(\lambda (H5: (eq nat m (S
+x))).(\lambda (H6: (le d x)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (g
+n) (wadd f O n))) (H3 x H6) m H5)))) (le_gen_S d m H4))))))) (f_equal nat nat
+S (plus (weight_map f (lift h d t0)) (weight_map (wadd f O) (lift h (S d)
+t1))) (plus (weight_map g (lift (S h) d t0)) (weight_map (wadd g O) (lift (S
+h) (S d) t1))) (f_equal2 nat nat nat plus (weight_map f (lift h d t0))
+(weight_map g (lift (S h) d t0)) (weight_map (wadd f O) (lift h (S d) t1))
+(weight_map (wadd g O) (lift (S h) (S d) t1)) (H h d f g H1 H2 H3) (H0 h (S
+d) (wadd f O) (wadd g O) (\lambda (m: nat).(\lambda (H4: (lt m (S
d))).(or_ind (eq nat m O) (ex2 nat (\lambda (m0: nat).(eq nat m (S m0)))
(\lambda (m0: nat).(lt m0 d))) (eq nat (wadd g O m) (wadd f O m)) (\lambda
(H5: (eq nat m O)).(eq_ind_r nat O (\lambda (n: nat).(eq nat (wadd g O n)
(wadd f O n))) (refl_equal nat O) m H5)) (\lambda (H5: (ex2 nat (\lambda (m0:
-nat).(eq nat m (S m0))) (\lambda (m: nat).(lt m d)))).(ex2_ind nat (\lambda
+nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d)))).(ex2_ind nat (\lambda
(m0: nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d)) (eq nat (wadd g O
m) (wadd f O m)) (\lambda (x: nat).(\lambda (H6: (eq nat m (S x))).(\lambda
(H7: (lt x d)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (wadd g O n)
n))) (\lambda (n: nat).(le d n)) (eq nat (g m) (wadd f O m)) (\lambda (x:
nat).(\lambda (H5: (eq nat m (S x))).(\lambda (H6: (le d x)).(eq_ind_r nat (S
x) (\lambda (n: nat).(eq nat (g n) (wadd f O n))) (H3 x H6) m H5))))
-(le_gen_S d m H4))))))) (f_equal nat nat S (plus (weight_map f (lift h d t0))
-(weight_map (wadd f O) (lift h (S d) t1))) (plus (weight_map g (lift (S h) d
-t0)) (weight_map (wadd g O) (lift (S h) (S d) t1))) (f_equal2 nat nat nat
-plus (weight_map f (lift h d t0)) (weight_map g (lift (S h) d t0))
-(weight_map (wadd f O) (lift h (S d) t1)) (weight_map (wadd g O) (lift (S h)
-(S d) t1)) (H h d f g H1 H2 H3) (H0 h (S d) (wadd f O) (wadd g O) (\lambda
-(m: nat).(\lambda (H4: (lt m (S d))).(or_ind (eq nat m O) (ex2 nat (\lambda
-(m0: nat).(eq nat m (S m0))) (\lambda (m0: nat).(lt m0 d))) (eq nat (wadd g O
-m) (wadd f O m)) (\lambda (H5: (eq nat m O)).(eq_ind_r nat O (\lambda (n:
-nat).(eq nat (wadd g O n) (wadd f O n))) (refl_equal nat O) m H5)) (\lambda
-(H5: (ex2 nat (\lambda (m0: nat).(eq nat m (S m0))) (\lambda (m: nat).(lt m
-d)))).(ex2_ind nat (\lambda (m0: nat).(eq nat m (S m0))) (\lambda (m0:
-nat).(lt m0 d)) (eq nat (wadd g O m) (wadd f O m)) (\lambda (x: nat).(\lambda
-(H6: (eq nat m (S x))).(\lambda (H7: (lt x d)).(eq_ind_r nat (S x) (\lambda
-(n: nat).(eq nat (wadd g O n) (wadd f O n))) (H1 x H7) m H6)))) H5))
-(lt_gen_xS m d H4)))) H2 (\lambda (m: nat).(\lambda (H4: (le (S d)
-m)).(ex2_ind nat (\lambda (n: nat).(eq nat m (S n))) (\lambda (n: nat).(le d
-n)) (eq nat (g m) (wadd f O m)) (\lambda (x: nat).(\lambda (H5: (eq nat m (S
-x))).(\lambda (H6: (le d x)).(eq_ind_r nat (S x) (\lambda (n: nat).(eq nat (g
-n) (wadd f O n))) (H3 x H6) m H5)))) (le_gen_S d m H4))))))) b) (lift (S h) d
-(THead (Bind b) t0 t1)) (lift_head (Bind b) t0 t1 (S h) d)) (lift h d (THead
-(Bind b) t0 t1)) (lift_head (Bind b) t0 t1 h d))) (\lambda (f0: F).(eq_ind_r
-T (THead (Flat f0) (lift h d t0) (lift h (s (Flat f0) d) t1)) (\lambda (t2:
-T).(eq nat (weight_map f t2) (weight_map g (lift (S h) d (THead (Flat f0) t0
-t1))))) (eq_ind_r T (THead (Flat f0) (lift (S h) d t0) (lift (S h) (s (Flat
-f0) d) t1)) (\lambda (t2: T).(eq nat (weight_map f (THead (Flat f0) (lift h d
-t0) (lift h (s (Flat f0) d) t1))) (weight_map g t2))) (f_equal nat nat S
-(plus (weight_map f (lift h d t0)) (weight_map f (lift h d t1))) (plus
-(weight_map g (lift (S h) d t0)) (weight_map g (lift (S h) d t1))) (f_equal2
-nat nat nat plus (weight_map f (lift h d t0)) (weight_map g (lift (S h) d
-t0)) (weight_map f (lift h d t1)) (weight_map g (lift (S h) d t1)) (H h d f g
-H1 H2 H3) (H0 h d f g H1 H2 H3))) (lift (S h) d (THead (Flat f0) t0 t1))
-(lift_head (Flat f0) t0 t1 (S h) d)) (lift h d (THead (Flat f0) t0 t1))
-(lift_head (Flat f0) t0 t1 h d))) k))))))))))))) t)).
+(le_gen_S d m H4))))))) b) (lift (S h) d (THead (Bind b) t0 t1)) (lift_head
+(Bind b) t0 t1 (S h) d)) (lift h d (THead (Bind b) t0 t1)) (lift_head (Bind
+b) t0 t1 h d))) (\lambda (f0: F).(eq_ind_r T (THead (Flat f0) (lift h d t0)
+(lift h (s (Flat f0) d) t1)) (\lambda (t2: T).(eq nat (weight_map f t2)
+(weight_map g (lift (S h) d (THead (Flat f0) t0 t1))))) (eq_ind_r T (THead
+(Flat f0) (lift (S h) d t0) (lift (S h) (s (Flat f0) d) t1)) (\lambda (t2:
+T).(eq nat (weight_map f (THead (Flat f0) (lift h d t0) (lift h (s (Flat f0)
+d) t1))) (weight_map g t2))) (f_equal nat nat S (plus (weight_map f (lift h d
+t0)) (weight_map f (lift h d t1))) (plus (weight_map g (lift (S h) d t0))
+(weight_map g (lift (S h) d t1))) (f_equal2 nat nat nat plus (weight_map f
+(lift h d t0)) (weight_map g (lift (S h) d t0)) (weight_map f (lift h d t1))
+(weight_map g (lift (S h) d t1)) (H h d f g H1 H2 H3) (H0 h d f g H1 H2 H3)))
+(lift (S h) d (THead (Flat f0) t0 t1)) (lift_head (Flat f0) t0 t1 (S h) d))
+(lift h d (THead (Flat f0) t0 t1)) (lift_head (Flat f0) t0 t1 h d)))
+k))))))))))))) t)).
theorem lift_weight_add_O:
\forall (w: nat).(\forall (t: T).(\forall (h: nat).(\forall (f: ((nat \to
x6) H24) in (let H29 \def (nf2_gen_abst c x5 x6 H28) in (and_ind (nf2 c x5)
(nf2 (CHead c (Bind Abst) x5) x6) P (\lambda (H30: (nf2 c x5)).(\lambda (_:
(nf2 (CHead c (Bind Abst) x5) x6)).(let H32 \def (nf2_pr3_confluence c x0 H8
-x5 H30 u2 H7) in (H27 x6 (sym_equal T (THead (Bind Abst) x0 x6) (THead (Bind
+x5 H30 u2 H7) in (H27 x6 (sym_eq T (THead (Bind Abst) x0 x6) (THead (Bind
Abst) x5 x6) (f_equal3 K T T T THead (Bind Abst) (Bind Abst) x0 x5 x6 x6
(refl_equal K (Bind Abst)) (H32 (pr3_t x3 u2 c H20 x5 H25)) (refl_equal T
x6))) P)))) H29))))))))) H23)))))))) H18))))))) (pr3_confluence c u1 x1 H13 x
include "pr0/subst1.ma".
-include "csubst1/defs.ma".
+include "pr0/fwd.ma".
+
+include "csubst1/getl.ma".
+
+include "csubst1/fwd.ma".
include "subst1/subst1.ma".
-include "getl/props.ma".
+include "getl/drop.ma".
theorem pr2_delta1:
\forall (c: C).(\forall (d: C).(\forall (u: T).(\forall (i: nat).((getl i c
t1 H7))) c0 (sym_eq C c0 c H4) H5 H6 H1 H2 H3))))]) in (H1 (refl_equal C c)
(refl_equal T t1) (refl_equal T t2)))))))))).
-axiom pr2_gen_cabbr:
+theorem pr2_gen_cabbr:
\forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall
(e: C).(\forall (u: T).(\forall (d: nat).((getl d c (CHead e (Bind Abbr) u))
\to (\forall (a0: C).((csubst1 d u c a0) \to (\forall (a: C).((drop (S O) d
a0 a) \to (\forall (x1: T).((subst1 d u t1 (lift (S O) d x1)) \to (ex2 T
(\lambda (x2: T).(subst1 d u t2 (lift (S O) d x2))) (\lambda (x2: T).(pr2 a
x1 x2))))))))))))))))
-.
+\def
+ \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t1
+t2)).(pr2_ind (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\forall (e:
+C).(\forall (u: T).(\forall (d: nat).((getl d c0 (CHead e (Bind Abbr) u)) \to
+(\forall (a0: C).((csubst1 d u c0 a0) \to (\forall (a: C).((drop (S O) d a0
+a) \to (\forall (x1: T).((subst1 d u t (lift (S O) d x1)) \to (ex2 T (\lambda
+(x2: T).(subst1 d u t0 (lift (S O) d x2))) (\lambda (x2: T).(pr2 a x1
+x2)))))))))))))))) (\lambda (c0: C).(\lambda (t3: T).(\lambda (t4:
+T).(\lambda (H0: (pr0 t3 t4)).(\lambda (e: C).(\lambda (u: T).(\lambda (d:
+nat).(\lambda (_: (getl d c0 (CHead e (Bind Abbr) u))).(\lambda (a0:
+C).(\lambda (_: (csubst1 d u c0 a0)).(\lambda (a: C).(\lambda (_: (drop (S O)
+d a0 a)).(\lambda (x1: T).(\lambda (H4: (subst1 d u t3 (lift (S O) d
+x1))).(ex2_ind T (\lambda (w2: T).(pr0 (lift (S O) d x1) w2)) (\lambda (w2:
+T).(subst1 d u t4 w2)) (ex2 T (\lambda (x2: T).(subst1 d u t4 (lift (S O) d
+x2))) (\lambda (x2: T).(pr2 a x1 x2))) (\lambda (x: T).(\lambda (H5: (pr0
+(lift (S O) d x1) x)).(\lambda (H6: (subst1 d u t4 x)).(ex2_ind T (\lambda
+(t5: T).(eq T x (lift (S O) d t5))) (\lambda (t5: T).(pr0 x1 t5)) (ex2 T
+(\lambda (x2: T).(subst1 d u t4 (lift (S O) d x2))) (\lambda (x2: T).(pr2 a
+x1 x2))) (\lambda (x0: T).(\lambda (H7: (eq T x (lift (S O) d x0))).(\lambda
+(H8: (pr0 x1 x0)).(let H9 \def (eq_ind T x (\lambda (t: T).(subst1 d u t4 t))
+H6 (lift (S O) d x0) H7) in (ex_intro2 T (\lambda (x2: T).(subst1 d u t4
+(lift (S O) d x2))) (\lambda (x2: T).(pr2 a x1 x2)) x0 H9 (pr2_free a x1 x0
+H8)))))) (pr0_gen_lift x1 x (S O) d H5))))) (pr0_subst1 t3 t4 H0 u (lift (S
+O) d x1) d H4 u (pr0_refl u))))))))))))))))) (\lambda (c0: C).(\lambda (d:
+C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind
+Abbr) u))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H1: (pr0 t3
+t4)).(\lambda (t: T).(\lambda (H2: (subst0 i u t4 t)).(\lambda (e:
+C).(\lambda (u0: T).(\lambda (d0: nat).(\lambda (H3: (getl d0 c0 (CHead e
+(Bind Abbr) u0))).(\lambda (a0: C).(\lambda (H4: (csubst1 d0 u0 c0
+a0)).(\lambda (a: C).(\lambda (H5: (drop (S O) d0 a0 a)).(\lambda (x1:
+T).(\lambda (H6: (subst1 d0 u0 t3 (lift (S O) d0 x1))).(ex2_ind T (\lambda
+(w2: T).(pr0 (lift (S O) d0 x1) w2)) (\lambda (w2: T).(subst1 d0 u0 t4 w2))
+(ex2 T (\lambda (x2: T).(subst1 d0 u0 t (lift (S O) d0 x2))) (\lambda (x2:
+T).(pr2 a x1 x2))) (\lambda (x: T).(\lambda (H7: (pr0 (lift (S O) d0 x1)
+x)).(\lambda (H8: (subst1 d0 u0 t4 x)).(ex2_ind T (\lambda (t5: T).(eq T x
+(lift (S O) d0 t5))) (\lambda (t5: T).(pr0 x1 t5)) (ex2 T (\lambda (x2:
+T).(subst1 d0 u0 t (lift (S O) d0 x2))) (\lambda (x2: T).(pr2 a x1 x2)))
+(\lambda (x0: T).(\lambda (H9: (eq T x (lift (S O) d0 x0))).(\lambda (H10:
+(pr0 x1 x0)).(let H11 \def (eq_ind T x (\lambda (t0: T).(subst1 d0 u0 t4 t0))
+H8 (lift (S O) d0 x0) H9) in (lt_eq_gt_e i d0 (ex2 T (\lambda (x2: T).(subst1
+d0 u0 t (lift (S O) d0 x2))) (\lambda (x2: T).(pr2 a x1 x2))) (\lambda (H12:
+(lt i d0)).(ex2_ind T (\lambda (t0: T).(subst1 d0 u0 t t0)) (\lambda (t0:
+T).(subst1 i u (lift (S O) d0 x0) t0)) (ex2 T (\lambda (x2: T).(subst1 d0 u0
+t (lift (S O) d0 x2))) (\lambda (x2: T).(pr2 a x1 x2))) (\lambda (x2:
+T).(\lambda (H13: (subst1 d0 u0 t x2)).(\lambda (H14: (subst1 i u (lift (S O)
+d0 x0) x2)).(ex2_ind C (\lambda (e2: C).(csubst1 (minus d0 i) u0 (CHead d
+(Bind Abbr) u) e2)) (\lambda (e2: C).(getl i a0 e2)) (ex2 T (\lambda (x3:
+T).(subst1 d0 u0 t (lift (S O) d0 x3))) (\lambda (x3: T).(pr2 a x1 x3)))
+(\lambda (x3: C).(\lambda (H15: (csubst1 (minus d0 i) u0 (CHead d (Bind Abbr)
+u) x3)).(\lambda (H16: (getl i a0 x3)).(let H17 \def (eq_ind nat (minus d0 i)
+(\lambda (n: nat).(csubst1 n u0 (CHead d (Bind Abbr) u) x3)) H15 (S (minus d0
+(S i))) (minus_x_Sy d0 i H12)) in (let H18 \def (csubst1_gen_head (Bind Abbr)
+d x3 u u0 (minus d0 (S i)) H17) in (ex3_2_ind T C (\lambda (u2: T).(\lambda
+(c2: C).(eq C x3 (CHead c2 (Bind Abbr) u2)))) (\lambda (u2: T).(\lambda (_:
+C).(subst1 (minus d0 (S i)) u0 u u2))) (\lambda (_: T).(\lambda (c2:
+C).(csubst1 (minus d0 (S i)) u0 d c2))) (ex2 T (\lambda (x4: T).(subst1 d0 u0
+t (lift (S O) d0 x4))) (\lambda (x4: T).(pr2 a x1 x4))) (\lambda (x4:
+T).(\lambda (x5: C).(\lambda (H19: (eq C x3 (CHead x5 (Bind Abbr)
+x4))).(\lambda (H20: (subst1 (minus d0 (S i)) u0 u x4)).(\lambda (_: (csubst1
+(minus d0 (S i)) u0 d x5)).(let H22 \def (eq_ind C x3 (\lambda (c1: C).(getl
+i a0 c1)) H16 (CHead x5 (Bind Abbr) x4) H19) in (let H23 \def (eq_ind nat d0
+(\lambda (n: nat).(drop (S O) n a0 a)) H5 (S (plus i (minus d0 (S i))))
+(lt_plus_minus i d0 H12)) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_:
+C).(eq T x4 (lift (S O) (minus d0 (S i)) v)))) (\lambda (v: T).(\lambda (e0:
+C).(getl i a (CHead e0 (Bind Abbr) v)))) (\lambda (_: T).(\lambda (e0:
+C).(drop (S O) (minus d0 (S i)) x5 e0))) (ex2 T (\lambda (x6: T).(subst1 d0
+u0 t (lift (S O) d0 x6))) (\lambda (x6: T).(pr2 a x1 x6))) (\lambda (x6:
+T).(\lambda (x7: C).(\lambda (H24: (eq T x4 (lift (S O) (minus d0 (S i))
+x6))).(\lambda (H25: (getl i a (CHead x7 (Bind Abbr) x6))).(\lambda (_: (drop
+(S O) (minus d0 (S i)) x5 x7)).(let H27 \def (eq_ind T x4 (\lambda (t0:
+T).(subst1 (minus d0 (S i)) u0 u t0)) H20 (lift (S O) (minus d0 (S i)) x6)
+H24) in (ex2_ind T (\lambda (t0: T).(subst1 i (lift (S O) (minus d0 (S i))
+x6) (lift (S O) d0 x0) t0)) (\lambda (t0: T).(subst1 (S (plus (minus d0 (S
+i)) i)) u0 x2 t0)) (ex2 T (\lambda (x8: T).(subst1 d0 u0 t (lift (S O) d0
+x8))) (\lambda (x8: T).(pr2 a x1 x8))) (\lambda (x8: T).(\lambda (H28:
+(subst1 i (lift (S O) (minus d0 (S i)) x6) (lift (S O) d0 x0) x8)).(\lambda
+(H29: (subst1 (S (plus (minus d0 (S i)) i)) u0 x2 x8)).(let H30 \def (eq_ind
+nat d0 (\lambda (n: nat).(subst1 i (lift (S O) (minus d0 (S i)) x6) (lift (S
+O) n x0) x8)) H28 (S (plus i (minus d0 (S i)))) (lt_plus_minus i d0 H12)) in
+(ex2_ind T (\lambda (t5: T).(eq T x8 (lift (S O) (S (plus i (minus d0 (S
+i)))) t5))) (\lambda (t5: T).(subst1 i x6 x0 t5)) (ex2 T (\lambda (x9:
+T).(subst1 d0 u0 t (lift (S O) d0 x9))) (\lambda (x9: T).(pr2 a x1 x9)))
+(\lambda (x9: T).(\lambda (H31: (eq T x8 (lift (S O) (S (plus i (minus d0 (S
+i)))) x9))).(\lambda (H32: (subst1 i x6 x0 x9)).(let H33 \def (eq_ind T x8
+(\lambda (t0: T).(subst1 (S (plus (minus d0 (S i)) i)) u0 x2 t0)) H29 (lift
+(S O) (S (plus i (minus d0 (S i)))) x9) H31) in (let H34 \def (eq_ind_r nat
+(S (plus i (minus d0 (S i)))) (\lambda (n: nat).(subst1 (S (plus (minus d0 (S
+i)) i)) u0 x2 (lift (S O) n x9))) H33 d0 (lt_plus_minus i d0 H12)) in (let
+H35 \def (eq_ind_r nat (S (plus (minus d0 (S i)) i)) (\lambda (n:
+nat).(subst1 n u0 x2 (lift (S O) d0 x9))) H34 d0 (lt_plus_minus_r i d0 H12))
+in (ex_intro2 T (\lambda (x10: T).(subst1 d0 u0 t (lift (S O) d0 x10)))
+(\lambda (x10: T).(pr2 a x1 x10)) x9 (subst1_trans x2 t u0 d0 H13 (lift (S O)
+d0 x9) H35) (pr2_delta1 a x7 x6 i H25 x1 x0 H10 x9 H32))))))))
+(subst1_gen_lift_lt x6 x0 x8 i (S O) (minus d0 (S i)) H30))))))
+(subst1_subst1_back (lift (S O) d0 x0) x2 u i H14 (lift (S O) (minus d0 (S
+i)) x6) u0 (minus d0 (S i)) H27)))))))) (getl_drop_conf_lt Abbr a0 x5 x4 i
+H22 a (S O) (minus d0 (S i)) H23))))))))) H18)))))) (csubst1_getl_lt d0 i H12
+c0 a0 u0 H4 (CHead d (Bind Abbr) u) H0))))) (subst1_confluence_neq t4 t u i
+(subst1_single i u t4 t H2) (lift (S O) d0 x0) u0 d0 H11 (lt_neq i d0 H12))))
+(\lambda (H12: (eq nat i d0)).(let H13 \def (eq_ind_r nat d0 (\lambda (n:
+nat).(subst1 n u0 t4 (lift (S O) n x0))) H11 i H12) in (let H14 \def
+(eq_ind_r nat d0 (\lambda (n: nat).(drop (S O) n a0 a)) H5 i H12) in (let H15
+\def (eq_ind_r nat d0 (\lambda (n: nat).(csubst1 n u0 c0 a0)) H4 i H12) in
+(let H16 \def (eq_ind_r nat d0 (\lambda (n: nat).(getl n c0 (CHead e (Bind
+Abbr) u0))) H3 i H12) in (eq_ind nat i (\lambda (n: nat).(ex2 T (\lambda (x2:
+T).(subst1 n u0 t (lift (S O) n x2))) (\lambda (x2: T).(pr2 a x1 x2)))) (let
+H17 \def (eq_ind C (CHead d (Bind Abbr) u) (\lambda (c1: C).(getl i c0 c1))
+H0 (CHead e (Bind Abbr) u0) (getl_mono c0 (CHead d (Bind Abbr) u) i H0 (CHead
+e (Bind Abbr) u0) H16)) in (let H18 \def (f_equal C C (\lambda (e0: C).(match
+e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c1 _
+_) \Rightarrow c1])) (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0)
+(getl_mono c0 (CHead d (Bind Abbr) u) i H0 (CHead e (Bind Abbr) u0) H16)) in
+((let H19 \def (f_equal C T (\lambda (e0: C).(match e0 in C return (\lambda
+(_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t0) \Rightarrow t0]))
+(CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono c0 (CHead d (Bind
+Abbr) u) i H0 (CHead e (Bind Abbr) u0) H16)) in (\lambda (H20: (eq C d
+e)).(let H21 \def (eq_ind_r T u0 (\lambda (t0: T).(getl i c0 (CHead e (Bind
+Abbr) t0))) H17 u H19) in (let H22 \def (eq_ind_r T u0 (\lambda (t0:
+T).(subst1 i t0 t4 (lift (S O) i x0))) H13 u H19) in (let H23 \def (eq_ind_r
+T u0 (\lambda (t0: T).(csubst1 i t0 c0 a0)) H15 u H19) in (eq_ind T u
+(\lambda (t0: T).(ex2 T (\lambda (x2: T).(subst1 i t0 t (lift (S O) i x2)))
+(\lambda (x2: T).(pr2 a x1 x2)))) (let H24 \def (eq_ind_r C e (\lambda (c1:
+C).(getl i c0 (CHead c1 (Bind Abbr) u))) H21 d H20) in (ex2_ind T (\lambda
+(t0: T).(subst1 i u t t0)) (\lambda (t0: T).(subst1 i u (lift (S O) i x0)
+t0)) (ex2 T (\lambda (x2: T).(subst1 i u t (lift (S O) i x2))) (\lambda (x2:
+T).(pr2 a x1 x2))) (\lambda (x2: T).(\lambda (H25: (subst1 i u t
+x2)).(\lambda (H26: (subst1 i u (lift (S O) i x0) x2)).(let H27 \def (eq_ind
+T x2 (\lambda (t0: T).(subst1 i u t t0)) H25 (lift (S O) i x0)
+(subst1_gen_lift_eq x0 u x2 (S O) i i (le_n i) (eq_ind_r nat (plus (S O) i)
+(\lambda (n: nat).(lt i n)) (le_n (plus (S O) i)) (plus i (S O)) (plus_comm i
+(S O))) H26)) in (ex_intro2 T (\lambda (x3: T).(subst1 i u t (lift (S O) i
+x3))) (\lambda (x3: T).(pr2 a x1 x3)) x0 H27 (pr2_free a x1 x0 H10))))))
+(subst1_confluence_eq t4 t u i (subst1_single i u t4 t H2) (lift (S O) i x0)
+H22))) u0 H19)))))) H18))) d0 H12)))))) (\lambda (H12: (lt d0 i)).(ex2_ind T
+(\lambda (t0: T).(subst1 d0 u0 t t0)) (\lambda (t0: T).(subst1 i u (lift (S
+O) d0 x0) t0)) (ex2 T (\lambda (x2: T).(subst1 d0 u0 t (lift (S O) d0 x2)))
+(\lambda (x2: T).(pr2 a x1 x2))) (\lambda (x2: T).(\lambda (H13: (subst1 d0
+u0 t x2)).(\lambda (H14: (subst1 i u (lift (S O) d0 x0) x2)).(ex2_ind T
+(\lambda (t5: T).(eq T x2 (lift (S O) d0 t5))) (\lambda (t5: T).(subst1
+(minus i (S O)) u x0 t5)) (ex2 T (\lambda (x3: T).(subst1 d0 u0 t (lift (S O)
+d0 x3))) (\lambda (x3: T).(pr2 a x1 x3))) (\lambda (x3: T).(\lambda (H15: (eq
+T x2 (lift (S O) d0 x3))).(\lambda (H16: (subst1 (minus i (S O)) u x0
+x3)).(let H17 \def (eq_ind T x2 (\lambda (t0: T).(subst1 d0 u0 t t0)) H13
+(lift (S O) d0 x3) H15) in (ex_intro2 T (\lambda (x4: T).(subst1 d0 u0 t
+(lift (S O) d0 x4))) (\lambda (x4: T).(pr2 a x1 x4)) x3 H17 (pr2_delta1 a d u
+(minus i (S O)) (getl_drop_conf_ge i (CHead d (Bind Abbr) u) a0
+(csubst1_getl_ge d0 i (le_S_n d0 i (le_S (S d0) i H12)) c0 a0 u0 H4 (CHead d
+(Bind Abbr) u) H0) a (S O) d0 H5 (eq_ind_r nat (plus (S O) d0) (\lambda (n:
+nat).(le n i)) H12 (plus d0 (S O)) (plus_comm d0 (S O)))) x1 x0 H10 x3
+H16)))))) (subst1_gen_lift_ge u x0 x2 i (S O) d0 H14 (eq_ind_r nat (plus (S
+O) d0) (\lambda (n: nat).(le n i)) H12 (plus d0 (S O)) (plus_comm d0 (S
+O)))))))) (subst1_confluence_neq t4 t u i (subst1_single i u t4 t H2) (lift
+(S O) d0 x0) u0 d0 H11 (sym_not_eq nat d0 i (lt_neq d0 i H12))))))))))
+(pr0_gen_lift x1 x (S O) d0 H7))))) (pr0_subst1 t3 t4 H1 u0 (lift (S O) d0
+x1) d0 H6 u0 (pr0_refl u0))))))))))))))))))))))) c t1 t2 H)))).
u i0 (S i) H0 O (le_O_n i0))) (S (plus i0 i)) (sym_eq nat (S (plus i0 i))
(plus i0 (S i)) (plus_n_Sm i0 i))))))))) (\lambda (v: T).(\lambda (u0:
T).(\lambda (u1: T).(\lambda (i: nat).(\lambda (_: (subst0 i v u1
-u0)).(\lambda (H1: ((\forall (u2: T).(\forall (u: T).(\forall (i0:
-nat).((subst0 i0 u u2 v) \to (ex2 T (\lambda (t: T).(subst0 i u2 u1 t))
+u0)).(\lambda (H1: ((\forall (u3: T).(\forall (u: T).(\forall (i0:
+nat).((subst0 i0 u u3 v) \to (ex2 T (\lambda (t: T).(subst0 i u3 u1 t))
(\lambda (t: T).(subst0 (S (plus i0 i)) u t u0))))))))).(\lambda (t:
T).(\lambda (k: K).(\lambda (u3: T).(\lambda (u: T).(\lambda (i0:
nat).(\lambda (H2: (subst0 i0 u u3 v)).(ex2_ind T (\lambda (t0: T).(subst0 i
(plus i0 i)) u0 t (THead k u t0))) (THead k u x) (subst0_snd k u1 x t3 i H3
u) (subst0_snd k u0 t0 x (S (plus i0 i)) H6 u))))))) (H1 u1 u0 i0
H2)))))))))))))) (\lambda (v: T).(\lambda (u1: T).(\lambda (u0: T).(\lambda
-(i: nat).(\lambda (_: (subst0 i v u1 u0)).(\lambda (H1: ((\forall (u2:
-T).(\forall (u: T).(\forall (i0: nat).((subst0 i0 u u2 v) \to (ex2 T (\lambda
-(t: T).(subst0 i u2 u1 t)) (\lambda (t: T).(subst0 (S (plus i0 i)) u t
+(i: nat).(\lambda (_: (subst0 i v u1 u0)).(\lambda (H1: ((\forall (u3:
+T).(\forall (u: T).(\forall (i0: nat).((subst0 i0 u u3 v) \to (ex2 T (\lambda
+(t: T).(subst0 i u3 u1 t)) (\lambda (t: T).(subst0 (S (plus i0 i)) u t
u0))))))))).(\lambda (k: K).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_:
-(subst0 (s k i) v t0 t3)).(\lambda (H3: ((\forall (u1: T).(\forall (u:
-T).(\forall (i0: nat).((subst0 i0 u u1 v) \to (ex2 T (\lambda (t: T).(subst0
-(s k i) u1 t0 t)) (\lambda (t: T).(subst0 (S (plus i0 (s k i))) u t
+(subst0 (s k i) v t0 t3)).(\lambda (H3: ((\forall (u3: T).(\forall (u:
+T).(\forall (i0: nat).((subst0 i0 u u3 v) \to (ex2 T (\lambda (t: T).(subst0
+(s k i) u3 t0 t)) (\lambda (t: T).(subst0 (S (plus i0 (s k i))) u t
t3))))))))).(\lambda (u3: T).(\lambda (u: T).(\lambda (i0: nat).(\lambda (H4:
(subst0 i0 u u3 v)).(ex2_ind T (\lambda (t: T).(subst0 (s k i) u3 t0 t))
(\lambda (t: T).(subst0 (S (plus i0 (s k i))) u t t3)) (ex2 T (\lambda (t:
(S i) H0 O (le_O_n i0))) (S (plus i0 i)) (sym_eq nat (S (plus i0 i)) (plus i0
(S i)) (plus_n_Sm i0 i))))))))) (\lambda (v: T).(\lambda (u0: T).(\lambda
(u1: T).(\lambda (i: nat).(\lambda (_: (subst0 i v u1 u0)).(\lambda (H1:
-((\forall (u2: T).(\forall (u: T).(\forall (i0: nat).((subst0 i0 u v u2) \to
-(ex2 T (\lambda (t: T).(subst0 i u2 u1 t)) (\lambda (t: T).(subst0 (S (plus
+((\forall (u3: T).(\forall (u: T).(\forall (i0: nat).((subst0 i0 u v u3) \to
+(ex2 T (\lambda (t: T).(subst0 i u3 u1 t)) (\lambda (t: T).(subst0 (S (plus
i0 i)) u u0 t))))))))).(\lambda (t: T).(\lambda (k: K).(\lambda (u3:
T).(\lambda (u: T).(\lambda (i0: nat).(\lambda (H2: (subst0 i0 u v
u3)).(ex2_ind T (\lambda (t0: T).(subst0 i u3 u1 t0)) (\lambda (t0:
k u x) (subst0_snd k u1 x t3 i H3 u) (subst0_snd k u0 x t0 (S (plus i0 i)) H6
u))))))) (H1 u1 u0 i0 H2)))))))))))))) (\lambda (v: T).(\lambda (u1:
T).(\lambda (u0: T).(\lambda (i: nat).(\lambda (_: (subst0 i v u1
-u0)).(\lambda (H1: ((\forall (u2: T).(\forall (u: T).(\forall (i0:
-nat).((subst0 i0 u v u2) \to (ex2 T (\lambda (t: T).(subst0 i u2 u1 t))
+u0)).(\lambda (H1: ((\forall (u3: T).(\forall (u: T).(\forall (i0:
+nat).((subst0 i0 u v u3) \to (ex2 T (\lambda (t: T).(subst0 i u3 u1 t))
(\lambda (t: T).(subst0 (S (plus i0 i)) u u0 t))))))))).(\lambda (k:
K).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (subst0 (s k i) v t0
-t3)).(\lambda (H3: ((\forall (u1: T).(\forall (u: T).(\forall (i0:
-nat).((subst0 i0 u v u1) \to (ex2 T (\lambda (t: T).(subst0 (s k i) u1 t0 t))
+t3)).(\lambda (H3: ((\forall (u3: T).(\forall (u: T).(\forall (i0:
+nat).((subst0 i0 u v u3) \to (ex2 T (\lambda (t: T).(subst0 (s k i) u3 t0 t))
(\lambda (t: T).(subst0 (S (plus i0 (s k i))) u t3 t))))))))).(\lambda (u3:
T).(\lambda (u: T).(\lambda (i0: nat).(\lambda (H4: (subst0 i0 u v
u3)).(ex2_ind T (\lambda (t: T).(subst0 (s k i) u3 t0 t)) (\lambda (t:
(\lambda (u3: T).(\lambda (t4: T).(eq T t3 (THead k u3 t4)))) (\lambda (u3:
T).(\lambda (_: T).(subst0 i0 v0 u2 u3))) (\lambda (_: T).(\lambda (t4:
T).(subst0 (s k i0) v0 t t4)))) (subst0 i0 v0 (THead k u1 t) t3) (\lambda
-(H3: (ex2 T (\lambda (u2: T).(eq T t3 (THead k u2 t))) (\lambda (u3:
+(H3: (ex2 T (\lambda (u3: T).(eq T t3 (THead k u3 t))) (\lambda (u3:
T).(subst0 i0 v0 u2 u3)))).(ex2_ind T (\lambda (u3: T).(eq T t3 (THead k u3
t))) (\lambda (u3: T).(subst0 i0 v0 u2 u3)) (subst0 i0 v0 (THead k u1 t) t3)
(\lambda (x: T).(\lambda (H4: (eq T t3 (THead k x t))).(\lambda (H5: (subst0
i0 v0 u2 x)).(eq_ind_r T (THead k x t) (\lambda (t0: T).(subst0 i0 v0 (THead
k u1 t) t0)) (subst0_fst v0 x u1 i0 (H1 x H5) t k) t3 H4)))) H3)) (\lambda
-(H3: (ex2 T (\lambda (t2: T).(eq T t3 (THead k u2 t2))) (\lambda (t2:
-T).(subst0 (s k i0) v0 t t2)))).(ex2_ind T (\lambda (t4: T).(eq T t3 (THead k
+(H3: (ex2 T (\lambda (t4: T).(eq T t3 (THead k u2 t4))) (\lambda (t4:
+T).(subst0 (s k i0) v0 t t4)))).(ex2_ind T (\lambda (t4: T).(eq T t3 (THead k
u2 t4))) (\lambda (t4: T).(subst0 (s k i0) v0 t t4)) (subst0 i0 v0 (THead k
u1 t) t3) (\lambda (x: T).(\lambda (H4: (eq T t3 (THead k u2 x))).(\lambda
(H5: (subst0 (s k i0) v0 t x)).(eq_ind_r T (THead k u2 x) (\lambda (t0:
T).(subst0 i0 v0 (THead k u1 t) t0)) (subst0_both v0 u1 u2 i0 H0 k t x H5) t3
-H4)))) H3)) (\lambda (H3: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T
-t3 (THead k u2 t2)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v0 u2 u3)))
-(\lambda (_: T).(\lambda (t2: T).(subst0 (s k i0) v0 t t2))))).(ex3_2_ind T T
+H4)))) H3)) (\lambda (H3: (ex3_2 T T (\lambda (u3: T).(\lambda (t4: T).(eq T
+t3 (THead k u3 t4)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v0 u2 u3)))
+(\lambda (_: T).(\lambda (t4: T).(subst0 (s k i0) v0 t t4))))).(ex3_2_ind T T
(\lambda (u3: T).(\lambda (t4: T).(eq T t3 (THead k u3 t4)))) (\lambda (u3:
T).(\lambda (_: T).(subst0 i0 v0 u2 u3))) (\lambda (_: T).(\lambda (t4:
T).(subst0 (s k i0) v0 t t4))) (subst0 i0 v0 (THead k u1 t) t3) (\lambda (x0:
(THead k u t3) t4) (\lambda (x: T).(\lambda (H4: (eq T t4 (THead k x
t0))).(\lambda (H5: (subst0 i0 v0 u x)).(eq_ind_r T (THead k x t0) (\lambda
(t: T).(subst0 i0 v0 (THead k u t3) t)) (subst0_both v0 u x i0 H5 k t3 t0 H0)
-t4 H4)))) H3)) (\lambda (H3: (ex2 T (\lambda (t2: T).(eq T t4 (THead k u
-t2))) (\lambda (t2: T).(subst0 (s k i0) v0 t0 t2)))).(ex2_ind T (\lambda (t5:
+t4 H4)))) H3)) (\lambda (H3: (ex2 T (\lambda (t5: T).(eq T t4 (THead k u
+t5))) (\lambda (t5: T).(subst0 (s k i0) v0 t0 t5)))).(ex2_ind T (\lambda (t5:
T).(eq T t4 (THead k u t5))) (\lambda (t5: T).(subst0 (s k i0) v0 t0 t5))
(subst0 i0 v0 (THead k u t3) t4) (\lambda (x: T).(\lambda (H4: (eq T t4
(THead k u x))).(\lambda (H5: (subst0 (s k i0) v0 t0 x)).(eq_ind_r T (THead k
u x) (\lambda (t: T).(subst0 i0 v0 (THead k u t3) t)) (subst0_snd k v0 x t3
i0 (H1 x H5) u) t4 H4)))) H3)) (\lambda (H3: (ex3_2 T T (\lambda (u2:
-T).(\lambda (t2: T).(eq T t4 (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_:
-T).(subst0 i0 v0 u u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i0) v0
-t0 t2))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead k
+T).(\lambda (t5: T).(eq T t4 (THead k u2 t5)))) (\lambda (u2: T).(\lambda (_:
+T).(subst0 i0 v0 u u2))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s k i0) v0
+t0 t5))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead k
u2 t5)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i0 v0 u u2))) (\lambda (_:
T).(\lambda (t5: T).(subst0 (s k i0) v0 t0 t5))) (subst0 i0 v0 (THead k u t3)
t4) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H4: (eq T t4 (THead k x0
t5))) (ex3_2 T T (\lambda (u3: T).(\lambda (t5: T).(eq T t4 (THead k u3
t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v0 u2 u3))) (\lambda (_:
T).(\lambda (t5: T).(subst0 (s k i0) v0 t3 t5)))) (subst0 i0 v0 (THead k u1
-t0) t4) (\lambda (H5: (ex2 T (\lambda (u2: T).(eq T t4 (THead k u2 t3)))
+t0) t4) (\lambda (H5: (ex2 T (\lambda (u3: T).(eq T t4 (THead k u3 t3)))
(\lambda (u3: T).(subst0 i0 v0 u2 u3)))).(ex2_ind T (\lambda (u3: T).(eq T t4
(THead k u3 t3))) (\lambda (u3: T).(subst0 i0 v0 u2 u3)) (subst0 i0 v0 (THead
k u1 t0) t4) (\lambda (x: T).(\lambda (H6: (eq T t4 (THead k x t3))).(\lambda
(H7: (subst0 i0 v0 u2 x)).(eq_ind_r T (THead k x t3) (\lambda (t: T).(subst0
i0 v0 (THead k u1 t0) t)) (subst0_both v0 u1 x i0 (H1 x H7) k t0 t3 H2) t4
-H6)))) H5)) (\lambda (H5: (ex2 T (\lambda (t2: T).(eq T t4 (THead k u2 t2)))
-(\lambda (t2: T).(subst0 (s k i0) v0 t3 t2)))).(ex2_ind T (\lambda (t5:
+H6)))) H5)) (\lambda (H5: (ex2 T (\lambda (t5: T).(eq T t4 (THead k u2 t5)))
+(\lambda (t5: T).(subst0 (s k i0) v0 t3 t5)))).(ex2_ind T (\lambda (t5:
T).(eq T t4 (THead k u2 t5))) (\lambda (t5: T).(subst0 (s k i0) v0 t3 t5))
(subst0 i0 v0 (THead k u1 t0) t4) (\lambda (x: T).(\lambda (H6: (eq T t4
(THead k u2 x))).(\lambda (H7: (subst0 (s k i0) v0 t3 x)).(eq_ind_r T (THead
k u2 x) (\lambda (t: T).(subst0 i0 v0 (THead k u1 t0) t)) (subst0_both v0 u1
u2 i0 H0 k t0 x (H3 x H7)) t4 H6)))) H5)) (\lambda (H5: (ex3_2 T T (\lambda
-(u2: T).(\lambda (t2: T).(eq T t4 (THead k u2 t2)))) (\lambda (u3:
-T).(\lambda (_: T).(subst0 i0 v0 u2 u3))) (\lambda (_: T).(\lambda (t2:
-T).(subst0 (s k i0) v0 t3 t2))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda
+(u3: T).(\lambda (t5: T).(eq T t4 (THead k u3 t5)))) (\lambda (u3:
+T).(\lambda (_: T).(subst0 i0 v0 u2 u3))) (\lambda (_: T).(\lambda (t5:
+T).(subst0 (s k i0) v0 t3 t5))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda
(t5: T).(eq T t4 (THead k u3 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0
i0 v0 u2 u3))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s k i0) v0 t3 t5)))
(subst0 i0 v0 (THead k u1 t0) t4) (\lambda (x0: T).(\lambda (x1: T).(\lambda
T).(\lambda (_: T).(subst0 i2 u3 u0 u4))) (\lambda (_: T).(\lambda (t3:
T).(subst0 (s k i2) u3 t t3)))) (ex2 T (\lambda (t3: T).(subst0 i2 u3 (THead
k u2 t) t3)) (\lambda (t3: T).(subst0 i v t2 t3))) (\lambda (H4: (ex2 T
-(\lambda (u2: T).(eq T t2 (THead k u2 t))) (\lambda (u2: T).(subst0 i2 u3 u0
-u2)))).(ex2_ind T (\lambda (u4: T).(eq T t2 (THead k u4 t))) (\lambda (u4:
+(\lambda (u4: T).(eq T t2 (THead k u4 t))) (\lambda (u4: T).(subst0 i2 u3 u0
+u4)))).(ex2_ind T (\lambda (u4: T).(eq T t2 (THead k u4 t))) (\lambda (u4:
T).(subst0 i2 u3 u0 u4)) (ex2 T (\lambda (t3: T).(subst0 i2 u3 (THead k u2 t)
t3)) (\lambda (t3: T).(subst0 i v t2 t3))) (\lambda (x: T).(\lambda (H5: (eq
T t2 (THead k x t))).(\lambda (H6: (subst0 i2 u3 u0 x)).(eq_ind_r T (THead k
u2 t) t3)) (\lambda (t3: T).(subst0 i v (THead k x t) t3)) (THead k x0 t)
(subst0_fst u3 x0 u2 i2 H7 t k) (subst0_fst v x0 x i H8 t k))))) (H1 x u3 i2
H6 H3)) t2 H5)))) H4)) (\lambda (H4: (ex2 T (\lambda (t3: T).(eq T t2 (THead
-k u0 t3))) (\lambda (t2: T).(subst0 (s k i2) u3 t t2)))).(ex2_ind T (\lambda
+k u0 t3))) (\lambda (t3: T).(subst0 (s k i2) u3 t t3)))).(ex2_ind T (\lambda
(t3: T).(eq T t2 (THead k u0 t3))) (\lambda (t3: T).(subst0 (s k i2) u3 t
t3)) (ex2 T (\lambda (t3: T).(subst0 i2 u3 (THead k u2 t) t3)) (\lambda (t3:
T).(subst0 i v t2 t3))) (\lambda (x: T).(\lambda (H5: (eq T t2 (THead k u0
(\lambda (t4: T).(subst0 i v t3 t4)))) (ex_intro2 T (\lambda (t3: T).(subst0
i2 u3 (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i v (THead k u0 x) t3))
(THead k u2 x) (subst0_snd k u3 x t i2 H6 u2) (subst0_fst v u2 u0 i H0 x k))
-t2 H5)))) H4)) (\lambda (H4: (ex3_2 T T (\lambda (u2: T).(\lambda (t3: T).(eq
-T t2 (THead k u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i2 u3 u0
-u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i2) u3 t
-t2))))).(ex3_2_ind T T (\lambda (u4: T).(\lambda (t3: T).(eq T t2 (THead k u4
+t2 H5)))) H4)) (\lambda (H4: (ex3_2 T T (\lambda (u4: T).(\lambda (t3: T).(eq
+T t2 (THead k u4 t3)))) (\lambda (u4: T).(\lambda (_: T).(subst0 i2 u3 u0
+u4))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i2) u3 t
+t3))))).(ex3_2_ind T T (\lambda (u4: T).(\lambda (t3: T).(eq T t2 (THead k u4
t3)))) (\lambda (u4: T).(\lambda (_: T).(subst0 i2 u3 u0 u4))) (\lambda (_:
T).(\lambda (t3: T).(subst0 (s k i2) u3 t t3))) (ex2 T (\lambda (t3:
T).(subst0 i2 u3 (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i v t2 t3)))
t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i2 u2 u u3))) (\lambda (_:
T).(\lambda (t5: T).(subst0 (s k i2) u2 t3 t5)))) (ex2 T (\lambda (t:
T).(subst0 i2 u2 (THead k u t2) t)) (\lambda (t: T).(subst0 i v t4 t)))
-(\lambda (H4: (ex2 T (\lambda (u2: T).(eq T t4 (THead k u2 t3))) (\lambda
+(\lambda (H4: (ex2 T (\lambda (u3: T).(eq T t4 (THead k u3 t3))) (\lambda
(u3: T).(subst0 i2 u2 u u3)))).(ex2_ind T (\lambda (u3: T).(eq T t4 (THead k
u3 t3))) (\lambda (u3: T).(subst0 i2 u2 u u3)) (ex2 T (\lambda (t: T).(subst0
i2 u2 (THead k u t2) t)) (\lambda (t: T).(subst0 i v t4 t))) (\lambda (x:
(ex_intro2 T (\lambda (t: T).(subst0 i2 u2 (THead k u t2) t)) (\lambda (t:
T).(subst0 i v (THead k x t3) t)) (THead k x t2) (subst0_fst u2 x u i2 H6 t2
k) (subst0_snd k v t2 t3 i H0 x)) t4 H5)))) H4)) (\lambda (H4: (ex2 T
-(\lambda (t2: T).(eq T t4 (THead k u t2))) (\lambda (t2: T).(subst0 (s k i2)
-u2 t3 t2)))).(ex2_ind T (\lambda (t5: T).(eq T t4 (THead k u t5))) (\lambda
+(\lambda (t5: T).(eq T t4 (THead k u t5))) (\lambda (t5: T).(subst0 (s k i2)
+u2 t3 t5)))).(ex2_ind T (\lambda (t5: T).(eq T t4 (THead k u t5))) (\lambda
(t5: T).(subst0 (s k i2) u2 t3 t5)) (ex2 T (\lambda (t: T).(subst0 i2 u2
(THead k u t2) t)) (\lambda (t: T).(subst0 i v t4 t))) (\lambda (x:
T).(\lambda (H5: (eq T t4 (THead k u x))).(\lambda (H6: (subst0 (s k i2) u2
v (THead k u x) t)) (THead k u x0) (subst0_snd k u2 x0 t2 i2 H7 u)
(subst0_snd k v x0 x i H8 u))))) (H1 x u2 (s k i2) H6 (\lambda (H7: (eq nat
(s k i) (s k i2))).(H3 (s_inj k i i2 H7))))) t4 H5)))) H4)) (\lambda (H4:
-(ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead k u2 t2))))
+(ex3_2 T T (\lambda (u3: T).(\lambda (t5: T).(eq T t4 (THead k u3 t5))))
(\lambda (u3: T).(\lambda (_: T).(subst0 i2 u2 u u3))) (\lambda (_:
-T).(\lambda (t2: T).(subst0 (s k i2) u2 t3 t2))))).(ex3_2_ind T T (\lambda
+T).(\lambda (t5: T).(subst0 (s k i2) u2 t3 t5))))).(ex3_2_ind T T (\lambda
(u3: T).(\lambda (t5: T).(eq T t4 (THead k u3 t5)))) (\lambda (u3:
T).(\lambda (_: T).(subst0 i2 u2 u u3))) (\lambda (_: T).(\lambda (t5:
T).(subst0 (s k i2) u2 t3 t5))) (ex2 T (\lambda (t: T).(subst0 i2 u2 (THead k
nat i i2)) \to (ex2 T (\lambda (t: T).(subst0 i2 u3 u2 t)) (\lambda (t:
T).(subst0 i v t2 t)))))))))).(\lambda (k: K).(\lambda (t2: T).(\lambda (t3:
T).(\lambda (H2: (subst0 (s k i) v t2 t3)).(\lambda (H3: ((\forall (t4:
-T).(\forall (u2: T).(\forall (i2: nat).((subst0 i2 u2 t2 t4) \to ((not (eq
-nat (s k i) i2)) \to (ex2 T (\lambda (t: T).(subst0 i2 u2 t3 t)) (\lambda (t:
+T).(\forall (u3: T).(\forall (i2: nat).((subst0 i2 u3 t2 t4) \to ((not (eq
+nat (s k i) i2)) \to (ex2 T (\lambda (t: T).(subst0 i2 u3 t3 t)) (\lambda (t:
T).(subst0 (s k i) v t4 t)))))))))).(\lambda (t4: T).(\lambda (u3:
T).(\lambda (i2: nat).(\lambda (H4: (subst0 i2 u3 (THead k u0 t2)
t4)).(\lambda (H5: (not (eq nat i i2))).(or3_ind (ex2 T (\lambda (u4: T).(eq
t5)))) (\lambda (u4: T).(\lambda (_: T).(subst0 i2 u3 u0 u4))) (\lambda (_:
T).(\lambda (t5: T).(subst0 (s k i2) u3 t2 t5)))) (ex2 T (\lambda (t:
T).(subst0 i2 u3 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i v t4 t)))
-(\lambda (H6: (ex2 T (\lambda (u2: T).(eq T t4 (THead k u2 t2))) (\lambda
-(u2: T).(subst0 i2 u3 u0 u2)))).(ex2_ind T (\lambda (u4: T).(eq T t4 (THead k
+(\lambda (H6: (ex2 T (\lambda (u4: T).(eq T t4 (THead k u4 t2))) (\lambda
+(u4: T).(subst0 i2 u3 u0 u4)))).(ex2_ind T (\lambda (u4: T).(eq T t4 (THead k
u4 t2))) (\lambda (u4: T).(subst0 i2 u3 u0 u4)) (ex2 T (\lambda (t:
T).(subst0 i2 u3 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i v t4 t)))
(\lambda (x: T).(\lambda (H7: (eq T t4 (THead k x t2))).(\lambda (H8: (subst0
T).(subst0 i2 u3 (THead k u2 t3) t)) (\lambda (t: T).(subst0 i v (THead k x
t2) t)) (THead k x0 t3) (subst0_fst u3 x0 u2 i2 H9 t3 k) (subst0_both v x x0
i H10 k t2 t3 H2))))) (H1 x u3 i2 H8 H5)) t4 H7)))) H6)) (\lambda (H6: (ex2 T
-(\lambda (t2: T).(eq T t4 (THead k u0 t2))) (\lambda (t3: T).(subst0 (s k i2)
-u3 t2 t3)))).(ex2_ind T (\lambda (t5: T).(eq T t4 (THead k u0 t5))) (\lambda
+(\lambda (t5: T).(eq T t4 (THead k u0 t5))) (\lambda (t5: T).(subst0 (s k i2)
+u3 t2 t5)))).(ex2_ind T (\lambda (t5: T).(eq T t4 (THead k u0 t5))) (\lambda
(t5: T).(subst0 (s k i2) u3 t2 t5)) (ex2 T (\lambda (t: T).(subst0 i2 u3
(THead k u2 t3) t)) (\lambda (t: T).(subst0 i v t4 t))) (\lambda (x:
T).(\lambda (H7: (eq T t4 (THead k u0 x))).(\lambda (H8: (subst0 (s k i2) u3
(t: T).(subst0 i v (THead k u0 x) t)) (THead k u2 x0) (subst0_snd k u3 x0 t3
i2 H9 u2) (subst0_both v u0 u2 i H0 k x x0 H10))))) (H3 x u3 (s k i2) H8
(\lambda (H9: (eq nat (s k i) (s k i2))).(H5 (s_inj k i i2 H9))))) t4 H7))))
-H6)) (\lambda (H6: (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4
-(THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i2 u3 u0 u2)))
-(\lambda (_: T).(\lambda (t3: T).(subst0 (s k i2) u3 t2 t3))))).(ex3_2_ind T
+H6)) (\lambda (H6: (ex3_2 T T (\lambda (u4: T).(\lambda (t5: T).(eq T t4
+(THead k u4 t5)))) (\lambda (u4: T).(\lambda (_: T).(subst0 i2 u3 u0 u4)))
+(\lambda (_: T).(\lambda (t5: T).(subst0 (s k i2) u3 t2 t5))))).(ex3_2_ind T
T (\lambda (u4: T).(\lambda (t5: T).(eq T t4 (THead k u4 t5)))) (\lambda (u4:
T).(\lambda (_: T).(subst0 i2 u3 u0 u4))) (\lambda (_: T).(\lambda (t5:
T).(subst0 (s k i2) u3 t2 t5))) (ex2 T (\lambda (t: T).(subst0 i2 u3 (THead k
T).(\lambda (t3: T).(subst0 (s k i0) v t t3)))) (or4 (eq T (THead k u2 t) t2)
(ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3:
T).(subst0 i0 v t2 t3))) (subst0 i0 v (THead k u2 t) t2) (subst0 i0 v t2
-(THead k u2 t))) (\lambda (H3: (ex2 T (\lambda (u2: T).(eq T t2 (THead k u2
-t))) (\lambda (u2: T).(subst0 i0 v u1 u2)))).(ex2_ind T (\lambda (u3: T).(eq
+(THead k u2 t))) (\lambda (H3: (ex2 T (\lambda (u3: T).(eq T t2 (THead k u3
+t))) (\lambda (u3: T).(subst0 i0 v u1 u3)))).(ex2_ind T (\lambda (u3: T).(eq
T t2 (THead k u3 t))) (\lambda (u3: T).(subst0 i0 v u1 u3)) (or4 (eq T (THead
k u2 t) t2) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda
(t3: T).(subst0 i0 v t2 t3))) (subst0 i0 v (THead k u2 t) t2) (subst0 i0 v t2
t) (THead k x t)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k x t) t3))
(\lambda (t3: T).(subst0 i0 v (THead k x t) t3))) (subst0 i0 v (THead k x t)
(THead k x t)) (subst0 i0 v (THead k x t) (THead k x t)) (refl_equal T (THead
-k x t))) u2 H6)) (\lambda (H6: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t))
-(\lambda (t: T).(subst0 i0 v x t)))).(ex2_ind T (\lambda (t3: T).(subst0 i0 v
-u2 t3)) (\lambda (t3: T).(subst0 i0 v x t3)) (or4 (eq T (THead k u2 t) (THead
-k x t)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda
-(t3: T).(subst0 i0 v (THead k x t) t3))) (subst0 i0 v (THead k u2 t) (THead k
-x t)) (subst0 i0 v (THead k x t) (THead k u2 t))) (\lambda (x0: T).(\lambda
-(H7: (subst0 i0 v u2 x0)).(\lambda (H8: (subst0 i0 v x x0)).(or4_intro1 (eq T
-(THead k u2 t) (THead k x t)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k
-u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k x t) t3))) (subst0 i0 v
-(THead k u2 t) (THead k x t)) (subst0 i0 v (THead k x t) (THead k u2 t))
-(ex_intro2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3:
-T).(subst0 i0 v (THead k x t) t3)) (THead k x0 t) (subst0_fst v x0 u2 i0 H7 t
-k) (subst0_fst v x0 x i0 H8 t k)))))) H6)) (\lambda (H6: (subst0 i0 v u2
-x)).(or4_intro2 (eq T (THead k u2 t) (THead k x t)) (ex2 T (\lambda (t3:
+k x t))) u2 H6)) (\lambda (H6: (ex2 T (\lambda (t3: T).(subst0 i0 v u2 t3))
+(\lambda (t3: T).(subst0 i0 v x t3)))).(ex2_ind T (\lambda (t3: T).(subst0 i0
+v u2 t3)) (\lambda (t3: T).(subst0 i0 v x t3)) (or4 (eq T (THead k u2 t)
+(THead k x t)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3))
+(\lambda (t3: T).(subst0 i0 v (THead k x t) t3))) (subst0 i0 v (THead k u2 t)
+(THead k x t)) (subst0 i0 v (THead k x t) (THead k u2 t))) (\lambda (x0:
+T).(\lambda (H7: (subst0 i0 v u2 x0)).(\lambda (H8: (subst0 i0 v x
+x0)).(or4_intro1 (eq T (THead k u2 t) (THead k x t)) (ex2 T (\lambda (t3:
T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k x
t) t3))) (subst0 i0 v (THead k u2 t) (THead k x t)) (subst0 i0 v (THead k x
-t) (THead k u2 t)) (subst0_fst v x u2 i0 H6 t k))) (\lambda (H6: (subst0 i0 v
-x u2)).(or4_intro3 (eq T (THead k u2 t) (THead k x t)) (ex2 T (\lambda (t3:
-T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k x
-t) t3))) (subst0 i0 v (THead k u2 t) (THead k x t)) (subst0 i0 v (THead k x
-t) (THead k u2 t)) (subst0_fst v u2 x i0 H6 t k))) (H1 x H5)) t2 H4)))) H3))
-(\lambda (H3: (ex2 T (\lambda (t3: T).(eq T t2 (THead k u1 t3))) (\lambda
-(t2: T).(subst0 (s k i0) v t t2)))).(ex2_ind T (\lambda (t3: T).(eq T t2
-(THead k u1 t3))) (\lambda (t3: T).(subst0 (s k i0) v t t3)) (or4 (eq T
-(THead k u2 t) t2) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3))
-(\lambda (t3: T).(subst0 i0 v t2 t3))) (subst0 i0 v (THead k u2 t) t2)
-(subst0 i0 v t2 (THead k u2 t))) (\lambda (x: T).(\lambda (H4: (eq T t2
-(THead k u1 x))).(\lambda (H5: (subst0 (s k i0) v t x)).(eq_ind_r T (THead k
-u1 x) (\lambda (t3: T).(or4 (eq T (THead k u2 t) t3) (ex2 T (\lambda (t4:
-T).(subst0 i0 v (THead k u2 t) t4)) (\lambda (t4: T).(subst0 i0 v t3 t4)))
-(subst0 i0 v (THead k u2 t) t3) (subst0 i0 v t3 (THead k u2 t)))) (or4_ind
-(eq T u2 u2) (ex2 T (\lambda (t3: T).(subst0 i0 v u2 t3)) (\lambda (t3:
-T).(subst0 i0 v u2 t3))) (subst0 i0 v u2 u2) (subst0 i0 v u2 u2) (or4 (eq T
-(THead k u2 t) (THead k u1 x)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k
-u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 x) t3))) (subst0 i0 v
-(THead k u2 t) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t)))
-(\lambda (_: (eq T u2 u2)).(or4_intro1 (eq T (THead k u2 t) (THead k u1 x))
+t) (THead k u2 t)) (ex_intro2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t)
+t3)) (\lambda (t3: T).(subst0 i0 v (THead k x t) t3)) (THead k x0 t)
+(subst0_fst v x0 u2 i0 H7 t k) (subst0_fst v x0 x i0 H8 t k)))))) H6))
+(\lambda (H6: (subst0 i0 v u2 x)).(or4_intro2 (eq T (THead k u2 t) (THead k x
+t)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3:
+T).(subst0 i0 v (THead k x t) t3))) (subst0 i0 v (THead k u2 t) (THead k x
+t)) (subst0 i0 v (THead k x t) (THead k u2 t)) (subst0_fst v x u2 i0 H6 t
+k))) (\lambda (H6: (subst0 i0 v x u2)).(or4_intro3 (eq T (THead k u2 t)
+(THead k x t)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3))
+(\lambda (t3: T).(subst0 i0 v (THead k x t) t3))) (subst0 i0 v (THead k u2 t)
+(THead k x t)) (subst0 i0 v (THead k x t) (THead k u2 t)) (subst0_fst v u2 x
+i0 H6 t k))) (H1 x H5)) t2 H4)))) H3)) (\lambda (H3: (ex2 T (\lambda (t3:
+T).(eq T t2 (THead k u1 t3))) (\lambda (t3: T).(subst0 (s k i0) v t
+t3)))).(ex2_ind T (\lambda (t3: T).(eq T t2 (THead k u1 t3))) (\lambda (t3:
+T).(subst0 (s k i0) v t t3)) (or4 (eq T (THead k u2 t) t2) (ex2 T (\lambda
+(t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v t2
+t3))) (subst0 i0 v (THead k u2 t) t2) (subst0 i0 v t2 (THead k u2 t)))
+(\lambda (x: T).(\lambda (H4: (eq T t2 (THead k u1 x))).(\lambda (H5: (subst0
+(s k i0) v t x)).(eq_ind_r T (THead k u1 x) (\lambda (t3: T).(or4 (eq T
+(THead k u2 t) t3) (ex2 T (\lambda (t4: T).(subst0 i0 v (THead k u2 t) t4))
+(\lambda (t4: T).(subst0 i0 v t3 t4))) (subst0 i0 v (THead k u2 t) t3)
+(subst0 i0 v t3 (THead k u2 t)))) (or4_ind (eq T u2 u2) (ex2 T (\lambda (t3:
+T).(subst0 i0 v u2 t3)) (\lambda (t3: T).(subst0 i0 v u2 t3))) (subst0 i0 v
+u2 u2) (subst0 i0 v u2 u2) (or4 (eq T (THead k u2 t) (THead k u1 x)) (ex2 T
+(\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0
+v (THead k u1 x) t3))) (subst0 i0 v (THead k u2 t) (THead k u1 x)) (subst0 i0
+v (THead k u1 x) (THead k u2 t))) (\lambda (_: (eq T u2 u2)).(or4_intro1 (eq
+T (THead k u2 t) (THead k u1 x)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead
+k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 x) t3))) (subst0 i0 v
+(THead k u2 t) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t))
+(ex_intro2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3:
+T).(subst0 i0 v (THead k u1 x) t3)) (THead k u2 x) (subst0_snd k v x t i0 H5
+u2) (subst0_fst v u2 u1 i0 H0 x k)))) (\lambda (H6: (ex2 T (\lambda (t3:
+T).(subst0 i0 v u2 t3)) (\lambda (t3: T).(subst0 i0 v u2 t3)))).(ex2_ind T
+(\lambda (t3: T).(subst0 i0 v u2 t3)) (\lambda (t3: T).(subst0 i0 v u2 t3))
+(or4 (eq T (THead k u2 t) (THead k u1 x)) (ex2 T (\lambda (t3: T).(subst0 i0
+v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 x) t3)))
+(subst0 i0 v (THead k u2 t) (THead k u1 x)) (subst0 i0 v (THead k u1 x)
+(THead k u2 t))) (\lambda (x0: T).(\lambda (_: (subst0 i0 v u2 x0)).(\lambda
+(_: (subst0 i0 v u2 x0)).(or4_intro1 (eq T (THead k u2 t) (THead k u1 x))
(ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3:
T).(subst0 i0 v (THead k u1 x) t3))) (subst0 i0 v (THead k u2 t) (THead k u1
x)) (subst0 i0 v (THead k u1 x) (THead k u2 t)) (ex_intro2 T (\lambda (t3:
T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1
x) t3)) (THead k u2 x) (subst0_snd k v x t i0 H5 u2) (subst0_fst v u2 u1 i0
-H0 x k)))) (\lambda (H6: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t)) (\lambda
-(t: T).(subst0 i0 v u2 t)))).(ex2_ind T (\lambda (t3: T).(subst0 i0 v u2 t3))
-(\lambda (t3: T).(subst0 i0 v u2 t3)) (or4 (eq T (THead k u2 t) (THead k u1
-x)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3:
-T).(subst0 i0 v (THead k u1 x) t3))) (subst0 i0 v (THead k u2 t) (THead k u1
-x)) (subst0 i0 v (THead k u1 x) (THead k u2 t))) (\lambda (x0: T).(\lambda
-(_: (subst0 i0 v u2 x0)).(\lambda (_: (subst0 i0 v u2 x0)).(or4_intro1 (eq T
-(THead k u2 t) (THead k u1 x)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k
-u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 x) t3))) (subst0 i0 v
-(THead k u2 t) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t))
-(ex_intro2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3:
-T).(subst0 i0 v (THead k u1 x) t3)) (THead k u2 x) (subst0_snd k v x t i0 H5
-u2) (subst0_fst v u2 u1 i0 H0 x k)))))) H6)) (\lambda (_: (subst0 i0 v u2
+H0 x k)))))) H6)) (\lambda (_: (subst0 i0 v u2 u2)).(or4_intro1 (eq T (THead
+k u2 t) (THead k u1 x)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t)
+t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 x) t3))) (subst0 i0 v (THead k
+u2 t) (THead k u1 x)) (subst0 i0 v (THead k u1 x) (THead k u2 t)) (ex_intro2
+T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0
+i0 v (THead k u1 x) t3)) (THead k u2 x) (subst0_snd k v x t i0 H5 u2)
+(subst0_fst v u2 u1 i0 H0 x k)))) (\lambda (_: (subst0 i0 v u2
u2)).(or4_intro1 (eq T (THead k u2 t) (THead k u1 x)) (ex2 T (\lambda (t3:
T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1
x) t3))) (subst0 i0 v (THead k u2 t) (THead k u1 x)) (subst0 i0 v (THead k u1
x) (THead k u2 t)) (ex_intro2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t)
t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 x) t3)) (THead k u2 x)
-(subst0_snd k v x t i0 H5 u2) (subst0_fst v u2 u1 i0 H0 x k)))) (\lambda (_:
-(subst0 i0 v u2 u2)).(or4_intro1 (eq T (THead k u2 t) (THead k u1 x)) (ex2 T
-(\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0
-v (THead k u1 x) t3))) (subst0 i0 v (THead k u2 t) (THead k u1 x)) (subst0 i0
-v (THead k u1 x) (THead k u2 t)) (ex_intro2 T (\lambda (t3: T).(subst0 i0 v
-(THead k u2 t) t3)) (\lambda (t3: T).(subst0 i0 v (THead k u1 x) t3)) (THead
-k u2 x) (subst0_snd k v x t i0 H5 u2) (subst0_fst v u2 u1 i0 H0 x k)))) (H1
-u2 H0)) t2 H4)))) H3)) (\lambda (H3: (ex3_2 T T (\lambda (u2: T).(\lambda
-(t3: T).(eq T t2 (THead k u2 t3)))) (\lambda (u2: T).(\lambda (_: T).(subst0
-i0 v u1 u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s k i0) v t
-t2))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t3: T).(eq T t2 (THead k u3
+(subst0_snd k v x t i0 H5 u2) (subst0_fst v u2 u1 i0 H0 x k)))) (H1 u2 H0))
+t2 H4)))) H3)) (\lambda (H3: (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq
+T t2 (THead k u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v u1
+u3))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i0) v t
+t3))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t3: T).(eq T t2 (THead k u3
t3)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v u1 u3))) (\lambda (_:
T).(\lambda (t3: T).(subst0 (s k i0) v t t3))) (or4 (eq T (THead k u2 t) t2)
(ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3)) (\lambda (t3:
(ex2 T (\lambda (t3: T).(subst0 i0 v (THead k x0 t) t3)) (\lambda (t3:
T).(subst0 i0 v (THead k x0 x1) t3))) (subst0 i0 v (THead k x0 t) (THead k x0
x1)) (subst0 i0 v (THead k x0 x1) (THead k x0 t)) (subst0_snd k v x1 t i0 H6
-x0)) u2 H7)) (\lambda (H7: (ex2 T (\lambda (t: T).(subst0 i0 v u2 t))
-(\lambda (t: T).(subst0 i0 v x0 t)))).(ex2_ind T (\lambda (t3: T).(subst0 i0
-v u2 t3)) (\lambda (t3: T).(subst0 i0 v x0 t3)) (or4 (eq T (THead k u2 t)
+x0)) u2 H7)) (\lambda (H7: (ex2 T (\lambda (t3: T).(subst0 i0 v u2 t3))
+(\lambda (t3: T).(subst0 i0 v x0 t3)))).(ex2_ind T (\lambda (t3: T).(subst0
+i0 v u2 t3)) (\lambda (t3: T).(subst0 i0 v x0 t3)) (or4 (eq T (THead k u2 t)
(THead k x0 x1)) (ex2 T (\lambda (t3: T).(subst0 i0 v (THead k u2 t) t3))
(\lambda (t3: T).(subst0 i0 v (THead k x0 x1) t3))) (subst0 i0 v (THead k u2
t) (THead k x0 x1)) (subst0 i0 v (THead k x0 x1) (THead k u2 t))) (\lambda
t3) (THead k u0 t2)) (ex_intro2 T (\lambda (t: T).(subst0 i0 v (THead k u0
t2) t)) (\lambda (t: T).(subst0 i0 v (THead k x t3) t)) (THead k x t2)
(subst0_fst v x u0 i0 H5 t2 k) (subst0_snd k v t2 t3 i0 H0 x)))) (H1 t2 H0))
-t4 H4)))) H3)) (\lambda (H3: (ex2 T (\lambda (t2: T).(eq T t4 (THead k u0
-t2))) (\lambda (t2: T).(subst0 (s k i0) v t3 t2)))).(ex2_ind T (\lambda (t5:
+t4 H4)))) H3)) (\lambda (H3: (ex2 T (\lambda (t5: T).(eq T t4 (THead k u0
+t5))) (\lambda (t5: T).(subst0 (s k i0) v t3 t5)))).(ex2_ind T (\lambda (t5:
T).(eq T t4 (THead k u0 t5))) (\lambda (t5: T).(subst0 (s k i0) v t3 t5))
(or4 (eq T (THead k u0 t2) t4) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k
u0 t2) t)) (\lambda (t: T).(subst0 i0 v t4 t))) (subst0 i0 v (THead k u0 t2)
u0 t2) t)) (\lambda (t: T).(subst0 i0 v (THead k u0 x) t))) (subst0 i0 v
(THead k u0 t2) (THead k u0 x)) (subst0 i0 v (THead k u0 x) (THead k u0 t2))
(subst0_snd k v t2 x i0 H6 u0))) (H1 x H5)) t4 H4)))) H3)) (\lambda (H3:
-(ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq T t4 (THead k u2 t2))))
+(ex3_2 T T (\lambda (u2: T).(\lambda (t5: T).(eq T t4 (THead k u2 t5))))
(\lambda (u2: T).(\lambda (_: T).(subst0 i0 v u0 u2))) (\lambda (_:
-T).(\lambda (t2: T).(subst0 (s k i0) v t3 t2))))).(ex3_2_ind T T (\lambda
+T).(\lambda (t5: T).(subst0 (s k i0) v t3 t5))))).(ex3_2_ind T T (\lambda
(u2: T).(\lambda (t5: T).(eq T t4 (THead k u2 t5)))) (\lambda (u2:
T).(\lambda (_: T).(subst0 i0 v u0 u2))) (\lambda (_: T).(\lambda (t5:
T).(subst0 (s k i0) v t3 t5))) (or4 (eq T (THead k u0 t2) t4) (ex2 T (\lambda
T).(subst0 (s k i0) v t2 t5)))) (or4 (eq T (THead k u2 t3) t4) (ex2 T
(\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v
t4 t))) (subst0 i0 v (THead k u2 t3) t4) (subst0 i0 v t4 (THead k u2 t3)))
-(\lambda (H5: (ex2 T (\lambda (u2: T).(eq T t4 (THead k u2 t2))) (\lambda
-(u2: T).(subst0 i0 v u1 u2)))).(ex2_ind T (\lambda (u3: T).(eq T t4 (THead k
+(\lambda (H5: (ex2 T (\lambda (u3: T).(eq T t4 (THead k u3 t2))) (\lambda
+(u3: T).(subst0 i0 v u1 u3)))).(ex2_ind T (\lambda (u3: T).(eq T t4 (THead k
u3 t2))) (\lambda (u3: T).(subst0 i0 v u1 u3)) (or4 (eq T (THead k u2 t3) t4)
(ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t:
T).(subst0 i0 v t4 t))) (subst0 i0 v (THead k u2 t3) t4) (subst0 i0 v t4
u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k x t2) t))) (subst0 i0 v
(THead k u2 t3) (THead k x t2)) (subst0 i0 v (THead k x t2) (THead k u2 t3))
(subst0_both v x u2 i0 H9 k t2 t3 H2))) (H1 x H7))) (H3 t3 H2)) t4 H6))))
-H5)) (\lambda (H5: (ex2 T (\lambda (t2: T).(eq T t4 (THead k u1 t2)))
-(\lambda (t3: T).(subst0 (s k i0) v t2 t3)))).(ex2_ind T (\lambda (t5: T).(eq
+H5)) (\lambda (H5: (ex2 T (\lambda (t5: T).(eq T t4 (THead k u1 t5)))
+(\lambda (t5: T).(subst0 (s k i0) v t2 t5)))).(ex2_ind T (\lambda (t5: T).(eq
T t4 (THead k u1 t5))) (\lambda (t5: T).(subst0 (s k i0) v t2 t5)) (or4 (eq T
(THead k u2 t3) t4) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t))
(\lambda (t: T).(subst0 i0 v t4 t))) (subst0 i0 v (THead k u2 t3) t4) (subst0
T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t: T).(subst0 i0 v (THead k u1
x) t))) (subst0 i0 v (THead k u2 t3) (THead k u1 x)) (subst0 i0 v (THead k u1
x) (THead k u2 t3)) (subst0_both v u1 u2 i0 H0 k x t3 H8))) (H1 u2 H0))) (H3
-x H7)) t4 H6)))) H5)) (\lambda (H5: (ex3_2 T T (\lambda (u2: T).(\lambda (t2:
-T).(eq T t4 (THead k u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i0 v
-u1 u2))) (\lambda (_: T).(\lambda (t3: T).(subst0 (s k i0) v t2
-t3))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t5: T).(eq T t4 (THead k u3
+x H7)) t4 H6)))) H5)) (\lambda (H5: (ex3_2 T T (\lambda (u3: T).(\lambda (t5:
+T).(eq T t4 (THead k u3 t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v
+u1 u3))) (\lambda (_: T).(\lambda (t5: T).(subst0 (s k i0) v t2
+t5))))).(ex3_2_ind T T (\lambda (u3: T).(\lambda (t5: T).(eq T t4 (THead k u3
t5)))) (\lambda (u3: T).(\lambda (_: T).(subst0 i0 v u1 u3))) (\lambda (_:
T).(\lambda (t5: T).(subst0 (s k i0) v t2 t5))) (or4 (eq T (THead k u2 t3)
t4) (ex2 T (\lambda (t: T).(subst0 i0 v (THead k u2 t3) t)) (\lambda (t:
T).(subst0 i u (lift (S O) i t1) t))) (subst0 i u (lift (S O) i t2) (lift (S
O) i t1)) (subst0 i u (lift (S O) i t1) (lift (S O) i t2)) (eq T t1 t2)
(\lambda (H1: (eq T (lift (S O) i t2) (lift (S O) i t1))).(let H2 \def
-(sym_equal T (lift (S O) i t2) (lift (S O) i t1) H1) in (lift_inj t1 t2 (S O)
-i H2))) (\lambda (H1: (ex2 T (\lambda (t: T).(subst0 i u (lift (S O) i t2)
-t)) (\lambda (t: T).(subst0 i u (lift (S O) i t1) t)))).(ex2_ind T (\lambda
-(t: T).(subst0 i u (lift (S O) i t2) t)) (\lambda (t: T).(subst0 i u (lift (S
-O) i t1) t)) (eq T t1 t2) (\lambda (x: T).(\lambda (_: (subst0 i u (lift (S
-O) i t2) x)).(\lambda (H3: (subst0 i u (lift (S O) i t1)
+(sym_eq T (lift (S O) i t2) (lift (S O) i t1) H1) in (lift_inj t1 t2 (S O) i
+H2))) (\lambda (H1: (ex2 T (\lambda (t: T).(subst0 i u (lift (S O) i t2) t))
+(\lambda (t: T).(subst0 i u (lift (S O) i t1) t)))).(ex2_ind T (\lambda (t:
+T).(subst0 i u (lift (S O) i t2) t)) (\lambda (t: T).(subst0 i u (lift (S O)
+i t1) t)) (eq T t1 t2) (\lambda (x: T).(\lambda (_: (subst0 i u (lift (S O) i
+t2) x)).(\lambda (H3: (subst0 i u (lift (S O) i t1)
x)).(subst0_gen_lift_false t1 u x (S O) i i (le_n i) (eq_ind_r nat (plus (S
O) i) (\lambda (n: nat).(lt i n)) (le_n (plus (S O) i)) (plus i (S O))
(plus_comm i (S O))) H3 (eq T t1 t2))))) H1)) (\lambda (H1: (subst0 i u (lift
(\lambda (H1: (eq T t0 (lift (S O) i t1))).(\lambda (t2: T).(\lambda (H2:
(subst1 i u t0 (lift (S O) i t2))).(let H3 \def (eq_ind T t0 (\lambda (t:
T).(subst1 i u t (lift (S O) i t2))) H2 (lift (S O) i t1) H1) in (let H4 \def
-(sym_equal T (lift (S O) i t2) (lift (S O) i t1) (subst1_gen_lift_eq t1 u
-(lift (S O) i t2) (S O) i i (le_n i) (eq_ind_r nat (plus (S O) i) (\lambda
-(n: nat).(lt i n)) (le_n (plus (S O) i)) (plus i (S O)) (plus_comm i (S O)))
-H3)) in (lift_inj t1 t2 (S O) i H4)))))) (\lambda (t2: T).(\lambda (H1:
-(subst0 i u t0 t2)).(\lambda (H2: (eq T t2 (lift (S O) i t1))).(\lambda (t3:
+(sym_eq T (lift (S O) i t2) (lift (S O) i t1) (subst1_gen_lift_eq t1 u (lift
+(S O) i t2) (S O) i i (le_n i) (eq_ind_r nat (plus (S O) i) (\lambda (n:
+nat).(lt i n)) (le_n (plus (S O) i)) (plus i (S O)) (plus_comm i (S O))) H3))
+in (lift_inj t1 t2 (S O) i H4)))))) (\lambda (t2: T).(\lambda (H1: (subst0 i
+u t0 t2)).(\lambda (H2: (eq T t2 (lift (S O) i t1))).(\lambda (t3:
T).(\lambda (H3: (subst1 i u t0 (lift (S O) i t3))).(let H4 \def (eq_ind T t2
(\lambda (t: T).(subst0 i u t0 t)) H1 (lift (S O) i t1) H2) in (insert_eq T
(lift (S O) i t3) (\lambda (t: T).(subst1 i u t0 t)) (eq T t1 t3) (\lambda
(THead (Flat Appl) w (THead (Bind Abst) u t)) (asucc g a1)))) (\lambda (x1:
A).(\lambda (x2: A).(\lambda (H11: (eq A (asucc g x0) (AHead x1
x2))).(\lambda (H12: (arity g c0 u (asucc g x1))).(\lambda (H13: (arity g
-(CHead c0 (Bind Abst) u) t x2)).(let H14 \def (sym_equal A (asucc g x0)
-(AHead x1 x2) H11) in (let H15 \def (asucc_gen_head g x1 x2 x0 H14) in
-(ex2_ind A (\lambda (a0: A).(eq A x0 (AHead x1 a0))) (\lambda (a0: A).(eq A
-x2 (asucc g a0))) (ex2 A (\lambda (a1: A).(arity g c0 (THead (Flat Appl) w v)
-a1)) (\lambda (a1: A).(arity g c0 (THead (Flat Appl) w (THead (Bind Abst) u
-t)) (asucc g a1)))) (\lambda (x3: A).(\lambda (H16: (eq A x0 (AHead x1
+(CHead c0 (Bind Abst) u) t x2)).(let H14 \def (sym_eq A (asucc g x0) (AHead
+x1 x2) H11) in (let H15 \def (asucc_gen_head g x1 x2 x0 H14) in (ex2_ind A
+(\lambda (a0: A).(eq A x0 (AHead x1 a0))) (\lambda (a0: A).(eq A x2 (asucc g
+a0))) (ex2 A (\lambda (a1: A).(arity g c0 (THead (Flat Appl) w v) a1))
+(\lambda (a1: A).(arity g c0 (THead (Flat Appl) w (THead (Bind Abst) u t))
+(asucc g a1)))) (\lambda (x3: A).(\lambda (H16: (eq A x0 (AHead x1
x3))).(\lambda (H17: (eq A x2 (asucc g x3))).(let H18 \def (eq_ind A x2
(\lambda (a: A).(arity g (CHead c0 (Bind Abst) u) t a)) H13 (asucc g x3) H17)
in (let H19 \def (eq_ind A x0 (\lambda (a: A).(arity g c0 v a)) H8 (AHead x1
(y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x4: T).(\lambda (x5:
T).(\lambda (H15: (eq T (lift (S O) d x1) (THead (Bind Abst) x4
x5))).(\lambda (H16: (subst1 d u0 u x4)).(\lambda (H17: (subst1 (s (Bind
-Abst) d) u0 t x5)).(let H18 \def (sym_equal T (lift (S O) d x1) (THead (Bind
+Abst) d) u0 t x5)).(let H18 \def (sym_eq T (lift (S O) d x1) (THead (Bind
Abst) x4 x5) H15) in (ex3_2_ind T T (\lambda (y: T).(\lambda (z: T).(eq T x1
(THead (Bind Abst) y z)))) (\lambda (y: T).(\lambda (_: T).(eq T x4 (lift (S
O) d y)))) (\lambda (_: T).(\lambda (z: T).(eq T x5 (lift (S O) (S d) z))))
+++ /dev/null
-(**************************************************************************)
-(* ___ *)
-(* ||M|| *)
-(* ||A|| A project by Andrea Asperti *)
-(* ||T|| *)
-(* ||I|| Developers: *)
-(* ||T|| The HELM team. *)
-(* ||A|| http://helm.cs.unibo.it *)
-(* \ / *)
-(* \ / This file is distributed under the terms of the *)
-(* v GNU General Public License Version 2 *)
-(* *)
-(**************************************************************************)
-
-(* Problematic objects for disambiguation/typechecking ********************)
-
-set "baseuri" "cic:/matita/LAMBDA-TYPES/Level-1/problems".
-
-include "LambdaDelta/theory.ma".
-
-theorem pr2_gen_cabbr:
- \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall
-(e: C).(\forall (u: T).(\forall (d: nat).((getl d c (CHead e (Bind Abbr) u))
-\to (\forall (a0: C).((csubst1 d u c a0) \to (\forall (a: C).((drop (S O) d
-a0 a) \to (\forall (x1: T).((subst1 d u t1 (lift (S O) d x1)) \to (ex2 T
-(\lambda (x2: T).(subst1 d u t2 (lift (S O) d x2))) (\lambda (x2: T).(pr2 a
-x1 x2))))))))))))))))
-\def
- \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t1
-t2)).(pr2_ind (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\forall (e:
-C).(\forall (u: T).(\forall (d: nat).((getl d c0 (CHead e (Bind Abbr) u)) \to
-(\forall (a0: C).((csubst1 d u c0 a0) \to (\forall (a: C).((drop (S O) d a0
-a) \to (\forall (x1: T).((subst1 d u t (lift (S O) d x1)) \to (ex2 T (\lambda
-(x2: T).(subst1 d u t0 (lift (S O) d x2))) (\lambda (x2: T).(pr2 a x1
-x2)))))))))))))))) (\lambda (c0: C).(\lambda (t3: T).(\lambda (t4:
-T).(\lambda (H0: (pr0 t3 t4)).(\lambda (e: C).(\lambda (u: T).(\lambda (d:
-nat).(\lambda (_: (getl d c0 (CHead e (Bind Abbr) u))).(\lambda (a0:
-C).(\lambda (_: (csubst1 d u c0 a0)).(\lambda (a: C).(\lambda (_: (drop (S O)
-d a0 a)).(\lambda (x1: T).(\lambda (H4: (subst1 d u t3 (lift (S O) d
-x1))).(ex2_ind T (\lambda (w2: T).(pr0 (lift (S O) d x1) w2)) (\lambda (w2:
-T).(subst1 d u t4 w2)) (ex2 T (\lambda (x2: T).(subst1 d u t4 (lift (S O) d
-x2))) (\lambda (x2: T).(pr2 a x1 x2))) (\lambda (x: T).(\lambda (H5: (pr0
-(lift (S O) d x1) x)).(\lambda (H6: (subst1 d u t4 x)).(ex2_ind T (\lambda
-(t5: T).(eq T x (lift (S O) d t5))) (\lambda (t5: T).(pr0 x1 t5)) (ex2 T
-(\lambda (x2: T).(subst1 d u t4 (lift (S O) d x2))) (\lambda (x2: T).(pr2 a
-x1 x2))) (\lambda (x0: T).(\lambda (H7: (eq T x (lift (S O) d x0))).(\lambda
-(H8: (pr0 x1 x0)).(let H9 \def (eq_ind T x (\lambda (t: T).(subst1 d u t4 t))
-H6 (lift (S O) d x0) H7) in (ex_intro2 T (\lambda (x2: T).(subst1 d u t4
-(lift (S O) d x2))) (\lambda (x2: T).(pr2 a x1 x2)) x0 H9 (pr2_free a x1 x0
-H8)))))) (pr0_gen_lift x1 x (S O) d H5))))) (pr0_subst1 t3 t4 H0 u (lift (S
-O) d x1) d H4 u (pr0_refl u))))))))))))))))) (\lambda (c0: C).(\lambda (d:
-C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind
-Abbr) u))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H1: (pr0 t3
-t4)).(\lambda (t: T).(\lambda (H2: (subst0 i u t4 t)).(\lambda (e:
-C).(\lambda (u0: T).(\lambda (d0: nat).(\lambda (H3: (getl d0 c0 (CHead e
-(Bind Abbr) u0))).(\lambda (a0: C).(\lambda (H4: (csubst1 d0 u0 c0
-a0)).(\lambda (a: C).(\lambda (H5: (drop (S O) d0 a0 a)).(\lambda (x1:
-T).(\lambda (H6: (subst1 d0 u0 t3 (lift (S O) d0 x1))).(ex2_ind T (\lambda
-(w2: T).(pr0 (lift (S O) d0 x1) w2)) (\lambda (w2: T).(subst1 d0 u0 t4 w2))
-(ex2 T (\lambda (x2: T).(subst1 d0 u0 t (lift (S O) d0 x2))) (\lambda (x2:
-T).(pr2 a x1 x2))) (\lambda (x: T).(\lambda (H7: (pr0 (lift (S O) d0 x1)
-x)).(\lambda (H8: (subst1 d0 u0 t4 x)).(ex2_ind T (\lambda (t5: T).(eq T x
-(lift (S O) d0 t5))) (\lambda (t5: T).(pr0 x1 t5)) (ex2 T (\lambda (x2:
-T).(subst1 d0 u0 t (lift (S O) d0 x2))) (\lambda (x2: T).(pr2 a x1 x2)))
-(\lambda (x0: T).(\lambda (H9: (eq T x (lift (S O) d0 x0))).(\lambda (H10:
-(pr0 x1 x0)).(let H11 \def (eq_ind T x (\lambda (t0: T).(subst1 d0 u0 t4 t0))
-H8 (lift (S O) d0 x0) H9) in (lt_eq_gt_e i d0 (ex2 T (\lambda (x2: T).(subst1
-d0 u0 t (lift (S O) d0 x2))) (\lambda (x2: T).(pr2 a x1 x2))) (\lambda (H12:
-(lt i d0)).(ex2_ind T (\lambda (t0: T).(subst1 d0 u0 t t0)) (\lambda (t0:
-T).(subst1 i u (lift (S O) d0 x0) t0)) (ex2 T (\lambda (x2: T).(subst1 d0 u0
-t (lift (S O) d0 x2))) (\lambda (x2: T).(pr2 a x1 x2))) (\lambda (x2:
-T).(\lambda (H13: (subst1 d0 u0 t x2)).(\lambda (H14: (subst1 i u (lift (S O)
-d0 x0) x2)).(ex2_ind C (\lambda (e2: C).(csubst1 (minus d0 i) u0 (CHead d
-(Bind Abbr) u) e2)) (\lambda (e2: C).(getl i a0 e2)) (ex2 T (\lambda (x3:
-T).(subst1 d0 u0 t (lift (S O) d0 x3))) (\lambda (x3: T).(pr2 a x1 x3)))
-(\lambda (x3: C).(\lambda (H15: (csubst1 (minus d0 i) u0 (CHead d (Bind Abbr)
-u) x3)).(\lambda (H16: (getl i a0 x3)).(let H17 \def (eq_ind nat (minus d0 i)
-(\lambda (n: nat).(csubst1 n u0 (CHead d (Bind Abbr) u) x3)) H15 (S (minus d0
-(S i))) (minus_x_Sy d0 i H12)) in (let H18 \def (csubst1_gen_head (Bind Abbr)
-d x3 u u0 (minus d0 (S i)) H17) in (ex3_2_ind T C (\lambda (u2: T).(\lambda
-(c2: C).(eq C x3 (CHead c2 (Bind Abbr) u2)))) (\lambda (u2: T).(\lambda (_:
-C).(subst1 (minus d0 (S i)) u0 u u2))) (\lambda (_: T).(\lambda (c2:
-C).(csubst1 (minus d0 (S i)) u0 d c2))) (ex2 T (\lambda (x4: T).(subst1 d0 u0
-t (lift (S O) d0 x4))) (\lambda (x4: T).(pr2 a x1 x4))) (\lambda (x4:
-T).(\lambda (x5: C).(\lambda (H19: (eq C x3 (CHead x5 (Bind Abbr)
-x4))).(\lambda (H20: (subst1 (minus d0 (S i)) u0 u x4)).(\lambda (_: (csubst1
-(minus d0 (S i)) u0 d x5)).(let H22 \def (eq_ind C x3 (\lambda (c1: C).(getl
-i a0 c1)) H16 (CHead x5 (Bind Abbr) x4) H19) in (let H23 \def (eq_ind nat d0
-(\lambda (n: nat).(drop (S O) n a0 a)) H5 (S (plus i (minus d0 (S i))))
-(lt_plus_minus i d0 H12)) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_:
-C).(eq T x4 (lift (S O) (minus d0 (S i)) v)))) (\lambda (v: T).(\lambda (e0:
-C).(getl i a (CHead e0 (Bind Abbr) v)))) (\lambda (_: T).(\lambda (e0:
-C).(drop (S O) (minus d0 (S i)) x5 e0))) (ex2 T (\lambda (x6: T).(subst1 d0
-u0 t (lift (S O) d0 x6))) (\lambda (x6: T).(pr2 a x1 x6))) (\lambda (x6:
-T).(\lambda (x7: C).(\lambda (H24: (eq T x4 (lift (S O) (minus d0 (S i))
-x6))).(\lambda (H25: (getl i a (CHead x7 (Bind Abbr) x6))).(\lambda (_: (drop
-(S O) (minus d0 (S i)) x5 x7)).(let H27 \def (eq_ind T x4 (\lambda (t0:
-T).(subst1 (minus d0 (S i)) u0 u t0)) H20 (lift (S O) (minus d0 (S i)) x6)
-H24) in (ex2_ind T (\lambda (t0: T).(subst1 i (lift (S O) (minus d0 (S i))
-x6) (lift (S O) d0 x0) t0)) (\lambda (t0: T).(subst1 (S (plus (minus d0 (S
-i)) i)) u0 x2 t0)) (ex2 T (\lambda (x8: T).(subst1 d0 u0 t (lift (S O) d0
-x8))) (\lambda (x8: T).(pr2 a x1 x8))) (\lambda (x8: T).(\lambda (H28:
-(subst1 i (lift (S O) (minus d0 (S i)) x6) (lift (S O) d0 x0) x8)).(\lambda
-(H29: (subst1 (S (plus (minus d0 (S i)) i)) u0 x2 x8)).(let H30 \def (eq_ind
-nat d0 (\lambda (n: nat).(subst1 i (lift (S O) (minus d0 (S i)) x6) (lift (S
-O) n x0) x8)) H28 (S (plus i (minus d0 (S i)))) (lt_plus_minus i d0 H12)) in
-(ex2_ind T (\lambda (t5: T).(eq T x8 (lift (S O) (S (plus i (minus d0 (S
-i)))) t5))) (\lambda (t5: T).(subst1 i x6 x0 t5)) (ex2 T (\lambda (x9:
-T).(subst1 d0 u0 t (lift (S O) d0 x9))) (\lambda (x9: T).(pr2 a x1 x9)))
-(\lambda (x9: T).(\lambda (H31: (eq T x8 (lift (S O) (S (plus i (minus d0 (S
-i)))) x9))).(\lambda (H32: (subst1 i x6 x0 x9)).(let H33 \def (eq_ind T x8
-(\lambda (t0: T).(subst1 (S (plus (minus d0 (S i)) i)) u0 x2 t0)) H29 (lift
-(S O) (S (plus i (minus d0 (S i)))) x9) H31) in (let H34 \def (eq_ind_r nat
-(S (plus i (minus d0 (S i)))) (\lambda (n: nat).(subst1 (S (plus (minus d0 (S
-i)) i)) u0 x2 (lift (S O) n x9))) H33 d0 (lt_plus_minus i d0 H12)) in (let
-H35 \def (eq_ind_r nat (S (plus (minus d0 (S i)) i)) (\lambda (n:
-nat).(subst1 n u0 x2 (lift (S O) d0 x9))) H34 d0 (lt_plus_minus_r i d0 H12))
-in (ex_intro2 T (\lambda (x10: T).(subst1 d0 u0 t (lift (S O) d0 x10)))
-(\lambda (x10: T).(pr2 a x1 x10)) x9 (subst1_trans x2 t u0 d0 H13 (lift (S O)
-d0 x9) H35) (pr2_delta1 a x7 x6 i H25 x1 x0 H10 x9 H32))))))))
-(subst1_gen_lift_lt x6 x0 x8 i (S O) (minus d0 (S i)) H30))))))
-(subst1_subst1_back (lift (S O) d0 x0) x2 u i H14 (lift (S O) (minus d0 (S
-i)) x6) u0 (minus d0 (S i)) H27)))))))) (getl_drop_conf_lt Abbr a0 x5 x4 i
-H22 a (S O) (minus d0 (S i)) H23))))))))) H18)))))) (csubst1_getl_lt d0 i H12
-c0 a0 u0 H4 (CHead d (Bind Abbr) u) H0))))) (subst1_confluence_neq t4 t u i
-(subst1_single i u t4 t H2) (lift (S O) d0 x0) u0 d0 H11 (lt_neq i d0 H12))))
-(\lambda (H12: (eq nat i d0)).(let H13 \def (eq_ind_r nat d0 (\lambda (n:
-nat).(subst1 n u0 t4 (lift (S O) n x0))) H11 i H12) in (let H14 \def
-(eq_ind_r nat d0 (\lambda (n: nat).(drop (S O) n a0 a)) H5 i H12) in (let H15
-\def (eq_ind_r nat d0 (\lambda (n: nat).(csubst1 n u0 c0 a0)) H4 i H12) in
-(let H16 \def (eq_ind_r nat d0 (\lambda (n: nat).(getl n c0 (CHead e (Bind
-Abbr) u0))) H3 i H12) in (eq_ind nat i (\lambda (n: nat).(ex2 T (\lambda (x2:
-T).(subst1 n u0 t (lift (S O) n x2))) (\lambda (x2: T).(pr2 a x1 x2)))) (let
-H17 \def (eq_ind C (CHead d (Bind Abbr) u) (\lambda (c1: C).(getl i c0 c1))
-H0 (CHead e (Bind Abbr) u0) (getl_mono c0 (CHead d (Bind Abbr) u) i H0 (CHead
-e (Bind Abbr) u0) H16)) in (let H18 \def (f_equal C C (\lambda (e0: C).(match
-e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c1 _
-_) \Rightarrow c1])) (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0)
-(getl_mono c0 (CHead d (Bind Abbr) u) i H0 (CHead e (Bind Abbr) u0) H16)) in
-((let H19 \def (f_equal C T (\lambda (e0: C).(match e0 in C return (\lambda
-(_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t0) \Rightarrow t0]))
-(CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono c0 (CHead d (Bind
-Abbr) u) i H0 (CHead e (Bind Abbr) u0) H16)) in (\lambda (H20: (eq C d
-e)).(let H21 \def (eq_ind_r T u0 (\lambda (t0: T).(getl i c0 (CHead e (Bind
-Abbr) t0))) H17 u H19) in (let H22 \def (eq_ind_r T u0 (\lambda (t0:
-T).(subst1 i t0 t4 (lift (S O) i x0))) H13 u H19) in (let H23 \def (eq_ind_r
-T u0 (\lambda (t0: T).(csubst1 i t0 c0 a0)) H15 u H19) in (eq_ind T u
-(\lambda (t0: T).(ex2 T (\lambda (x2: T).(subst1 i t0 t (lift (S O) i x2)))
-(\lambda (x2: T).(pr2 a x1 x2)))) (let H24 \def (eq_ind_r C e (\lambda (c1:
-C).(getl i c0 (CHead c1 (Bind Abbr) u))) H21 d H20) in (ex2_ind T (\lambda
-(t0: T).(subst1 i u t t0)) (\lambda (t0: T).(subst1 i u (lift (S O) i x0)
-t0)) (ex2 T (\lambda (x2: T).(subst1 i u t (lift (S O) i x2))) (\lambda (x2:
-T).(pr2 a x1 x2))) (\lambda (x2: T).(\lambda (H25: (subst1 i u t
-x2)).(\lambda (H26: (subst1 i u (lift (S O) i x0) x2)).(let H27 \def (eq_ind
-T x2 (\lambda (t0: T).(subst1 i u t t0)) H25 (lift (S O) i x0)
-(subst1_gen_lift_eq x0 u x2 (S O) i i (le_n i) (eq_ind_r nat (plus (S O) i)
-(\lambda (n: nat).(lt i n)) (le_n (plus (S O) i)) (plus i (S O)) (plus_comm i
-(S O))) H26)) in (ex_intro2 T (\lambda (x3: T).(subst1 i u t (lift (S O) i
-x3))) (\lambda (x3: T).(pr2 a x1 x3)) x0 H27 (pr2_free a x1 x0 H10))))))
-(subst1_confluence_eq t4 t u i (subst1_single i u t4 t H2) (lift (S O) i x0)
-H22))) u0 H19)))))) H18))) d0 H12)))))) (\lambda (H12: (lt d0 i)).(ex2_ind T
-(\lambda (t0: T).(subst1 d0 u0 t t0)) (\lambda (t0: T).(subst1 i u (lift (S
-O) d0 x0) t0)) (ex2 T (\lambda (x2: T).(subst1 d0 u0 t (lift (S O) d0 x2)))
-(\lambda (x2: T).(pr2 a x1 x2))) (\lambda (x2: T).(\lambda (H13: (subst1 d0
-u0 t x2)).(\lambda (H14: (subst1 i u (lift (S O) d0 x0) x2)).(ex2_ind T
-(\lambda (t5: T).(eq T x2 (lift (S O) d0 t5))) (\lambda (t5: T).(subst1
-(minus i (S O)) u x0 t5)) (ex2 T (\lambda (x3: T).(subst1 d0 u0 t (lift (S O)
-d0 x3))) (\lambda (x3: T).(pr2 a x1 x3))) (\lambda (x3: T).(\lambda (H15: (eq
-T x2 (lift (S O) d0 x3))).(\lambda (H16: (subst1 (minus i (S O)) u x0
-x3)).(let H17 \def (eq_ind T x2 (\lambda (t0: T).(subst1 d0 u0 t t0)) H13
-(lift (S O) d0 x3) H15) in (ex_intro2 T (\lambda (x4: T).(subst1 d0 u0 t
-(lift (S O) d0 x4))) (\lambda (x4: T).(pr2 a x1 x4)) x3 H17 (pr2_delta1 a d u
-(minus i (S O)) (getl_drop_conf_ge i (CHead d (Bind Abbr) u) a0
-(csubst1_getl_ge d0 i (le_S_n d0 i (le_S (S d0) i H12)) c0 a0 u0 H4 (CHead d
-(Bind Abbr) u) H0) a (S O) d0 H5 (eq_ind_r nat (plus (S O) d0) (\lambda (n:
-nat).(le n i)) H12 (plus d0 (S O)) (plus_comm d0 (S O)))) x1 x0 H10 x3
-H16)))))) (subst1_gen_lift_ge u x0 x2 i (S O) d0 H14 (eq_ind_r nat (plus (S
-O) d0) (\lambda (n: nat).(le n i)) H12 (plus d0 (S O)) (plus_comm d0 (S
-O)))))))) (subst1_confluence_neq t4 t u i (subst1_single i u t4 t H2) (lift
-(S O) d0 x0) u0 d0 H11 (sym_not_equal nat d0 i (lt_neq d0 i H12))))))))))
-(pr0_gen_lift x1 x (S O) d0 H7))))) (pr0_subst1 t3 t4 H1 u0 (lift (S O) d0
-x1) d0 H6 u0 (pr0_refl u0))))))))))))))))))))))) c t1 t2 H)))).
-