X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Fcontribs%2FLAMBDA-TYPES%2FLambdaDelta-1%2Fcsubc%2Fdrop.ma;h=42983d318915075fca98d10e689f6c774c7fe417;hb=f73bd1c1cdd504c2a991071505b2e4f541791a7f;hp=3a1a9b10c5c5d1d6f332f6303d263b5ecb0b360d;hpb=eccaad18aa815bb3334e205b97c220f675e6d5a5;p=helm.git diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/csubc/drop.ma b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/csubc/drop.ma index 3a1a9b10c..42983d318 100644 --- a/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/csubc/drop.ma +++ b/helm/software/matita/contribs/LAMBDA-TYPES/LambdaDelta-1/csubc/drop.ma @@ -52,56 +52,86 @@ c2 e2)) (\lambda (e2: C).(csubc g (CHead c k t) e2)) c2 (drop_refl c2) H1) e1 c2) \to (ex2 C (\lambda (e2: C).(drop n O c2 e2)) (\lambda (e2: C).(csubc g e1 e2)))))))).(\lambda (H1: (drop (S n) O (CHead c k t) e1)).(\lambda (c2: C).(\lambda (H2: (csubc g (CHead c k t) c2)).(let H_x \def (csubc_gen_head_l -g c c2 t k H2) in (let H3 \def H_x in (or_ind (ex2 C (\lambda (c3: C).(eq C +g c c2 t k H2) in (let H3 \def H_x in (or3_ind (ex2 C (\lambda (c3: C).(eq C c2 (CHead c3 k t))) (\lambda (c3: C).(csubc g c c3))) (ex5_3 C T A (\lambda (_: C).(\lambda (_: T).(\lambda (_: A).(eq K k (Bind Abst))))) (\lambda (c3: C).(\lambda (w: T).(\lambda (_: A).(eq C c2 (CHead c3 (Bind Abbr) w))))) (\lambda (c3: C).(\lambda (_: T).(\lambda (_: A).(csubc g c c3)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(sc3 g (asucc g a) c t)))) (\lambda -(c3: C).(\lambda (w: T).(\lambda (a: A).(sc3 g a c3 w))))) (ex2 C (\lambda -(e2: C).(drop (S n) O c2 e2)) (\lambda (e2: C).(csubc g e1 e2))) (\lambda -(H4: (ex2 C (\lambda (c3: C).(eq C c2 (CHead c3 k t))) (\lambda (c3: -C).(csubc g c c3)))).(ex2_ind C (\lambda (c3: C).(eq C c2 (CHead c3 k t))) -(\lambda (c3: C).(csubc g c c3)) (ex2 C (\lambda (e2: C).(drop (S n) O c2 -e2)) (\lambda (e2: C).(csubc g e1 e2))) (\lambda (x: C).(\lambda (H5: (eq C -c2 (CHead x k t))).(\lambda (H6: (csubc g c x)).(eq_ind_r C (CHead x k t) -(\lambda (c0: C).(ex2 C (\lambda (e2: C).(drop (S n) O c0 e2)) (\lambda (e2: -C).(csubc g e1 e2)))) (let H_x0 \def (H e1 (r k n) (drop_gen_drop k c e1 t n -H1) x H6) in (let H7 \def H_x0 in (ex2_ind C (\lambda (e2: C).(drop (r k n) O -x e2)) (\lambda (e2: C).(csubc g e1 e2)) (ex2 C (\lambda (e2: C).(drop (S n) -O (CHead x k t) e2)) (\lambda (e2: C).(csubc g e1 e2))) (\lambda (x0: -C).(\lambda (H8: (drop (r k n) O x x0)).(\lambda (H9: (csubc g e1 -x0)).(ex_intro2 C (\lambda (e2: C).(drop (S n) O (CHead x k t) e2)) (\lambda -(e2: C).(csubc g e1 e2)) x0 (drop_drop k n x x0 H8 t) H9)))) H7))) c2 H5)))) -H4)) (\lambda (H4: (ex5_3 C T A (\lambda (_: C).(\lambda (_: T).(\lambda (_: -A).(eq K k (Bind Abst))))) (\lambda (c3: C).(\lambda (w: T).(\lambda (_: -A).(eq C c2 (CHead c3 (Bind Abbr) w))))) (\lambda (c3: C).(\lambda (_: -T).(\lambda (_: A).(csubc g c c3)))) (\lambda (_: C).(\lambda (_: T).(\lambda -(a: A).(sc3 g (asucc g a) c t)))) (\lambda (c3: C).(\lambda (w: T).(\lambda -(a: A).(sc3 g a c3 w)))))).(ex5_3_ind C T A (\lambda (_: C).(\lambda (_: -T).(\lambda (_: A).(eq K k (Bind Abst))))) (\lambda (c3: C).(\lambda (w: -T).(\lambda (_: A).(eq C c2 (CHead c3 (Bind Abbr) w))))) (\lambda (c3: -C).(\lambda (_: T).(\lambda (_: A).(csubc g c c3)))) (\lambda (_: C).(\lambda -(_: T).(\lambda (a: A).(sc3 g (asucc g a) c t)))) (\lambda (c3: C).(\lambda -(w: T).(\lambda (a: A).(sc3 g a c3 w)))) (ex2 C (\lambda (e2: C).(drop (S n) -O c2 e2)) (\lambda (e2: C).(csubc g e1 e2))) (\lambda (x0: C).(\lambda (x1: -T).(\lambda (x2: A).(\lambda (H5: (eq K k (Bind Abst))).(\lambda (H6: (eq C -c2 (CHead x0 (Bind Abbr) x1))).(\lambda (H7: (csubc g c x0)).(\lambda (_: -(sc3 g (asucc g x2) c t)).(\lambda (_: (sc3 g x2 x0 x1)).(eq_ind_r C (CHead -x0 (Bind Abbr) x1) (\lambda (c0: C).(ex2 C (\lambda (e2: C).(drop (S n) O c0 -e2)) (\lambda (e2: C).(csubc g e1 e2)))) (let H10 \def (eq_ind K k (\lambda -(k0: K).(drop (r k0 n) O c e1)) (drop_gen_drop k c e1 t n H1) (Bind Abst) H5) -in (let H11 \def (eq_ind K k (\lambda (k0: K).((drop n O (CHead c k0 t) e1) -\to (\forall (c3: C).((csubc g (CHead c k0 t) c3) \to (ex2 C (\lambda (e2: -C).(drop n O c3 e2)) (\lambda (e2: C).(csubc g e1 e2))))))) H0 (Bind Abst) -H5) in (let H_x0 \def (H e1 (r (Bind Abst) n) H10 x0 H7) in (let H12 \def -H_x0 in (ex2_ind C (\lambda (e2: C).(drop n O x0 e2)) (\lambda (e2: C).(csubc -g e1 e2)) (ex2 C (\lambda (e2: C).(drop (S n) O (CHead x0 (Bind Abbr) x1) -e2)) (\lambda (e2: C).(csubc g e1 e2))) (\lambda (x: C).(\lambda (H13: (drop -n O x0 x)).(\lambda (H14: (csubc g e1 x)).(ex_intro2 C (\lambda (e2: C).(drop -(S n) O (CHead x0 (Bind Abbr) x1) e2)) (\lambda (e2: C).(csubc g e1 e2)) x -(drop_drop (Bind Abbr) n x0 x H13 x1) H14)))) H12))))) c2 H6))))))))) H4)) -H3)))))))) h))))))) c1)). +(c3: C).(\lambda (w: T).(\lambda (a: A).(sc3 g a c3 w))))) (ex4_3 B C T +(\lambda (b: B).(\lambda (c3: C).(\lambda (v2: T).(eq C c2 (CHead c3 (Bind b) +v2))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: T).(eq K k (Bind +Void))))) (\lambda (b: B).(\lambda (_: C).(\lambda (_: T).(not (eq B b +Void))))) (\lambda (_: B).(\lambda (c3: C).(\lambda (_: T).(csubc g c c3))))) +(ex2 C (\lambda (e2: C).(drop (S n) O c2 e2)) (\lambda (e2: C).(csubc g e1 +e2))) (\lambda (H4: (ex2 C (\lambda (c3: C).(eq C c2 (CHead c3 k t))) +(\lambda (c3: C).(csubc g c c3)))).(ex2_ind C (\lambda (c3: C).(eq C c2 +(CHead c3 k t))) (\lambda (c3: C).(csubc g c c3)) (ex2 C (\lambda (e2: +C).(drop (S n) O c2 e2)) (\lambda (e2: C).(csubc g e1 e2))) (\lambda (x: +C).(\lambda (H5: (eq C c2 (CHead x k t))).(\lambda (H6: (csubc g c +x)).(eq_ind_r C (CHead x k t) (\lambda (c0: C).(ex2 C (\lambda (e2: C).(drop +(S n) O c0 e2)) (\lambda (e2: C).(csubc g e1 e2)))) (let H_x0 \def (H e1 (r k +n) (drop_gen_drop k c e1 t n H1) x H6) in (let H7 \def H_x0 in (ex2_ind C +(\lambda (e2: C).(drop (r k n) O x e2)) (\lambda (e2: C).(csubc g e1 e2)) +(ex2 C (\lambda (e2: C).(drop (S n) O (CHead x k t) e2)) (\lambda (e2: +C).(csubc g e1 e2))) (\lambda (x0: C).(\lambda (H8: (drop (r k n) O x +x0)).(\lambda (H9: (csubc g e1 x0)).(ex_intro2 C (\lambda (e2: C).(drop (S n) +O (CHead x k t) e2)) (\lambda (e2: C).(csubc g e1 e2)) x0 (drop_drop k n x x0 +H8 t) H9)))) H7))) c2 H5)))) H4)) (\lambda (H4: (ex5_3 C T A (\lambda (_: +C).(\lambda (_: T).(\lambda (_: A).(eq K k (Bind Abst))))) (\lambda (c3: +C).(\lambda (w: T).(\lambda (_: A).(eq C c2 (CHead c3 (Bind Abbr) w))))) +(\lambda (c3: C).(\lambda (_: T).(\lambda (_: A).(csubc g c c3)))) (\lambda +(_: C).(\lambda (_: T).(\lambda (a: A).(sc3 g (asucc g a) c t)))) (\lambda +(c3: C).(\lambda (w: T).(\lambda (a: A).(sc3 g a c3 w)))))).(ex5_3_ind C T A +(\lambda (_: C).(\lambda (_: T).(\lambda (_: A).(eq K k (Bind Abst))))) +(\lambda (c3: C).(\lambda (w: T).(\lambda (_: A).(eq C c2 (CHead c3 (Bind +Abbr) w))))) (\lambda (c3: C).(\lambda (_: T).(\lambda (_: A).(csubc g c +c3)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(sc3 g (asucc g a) c +t)))) (\lambda (c3: C).(\lambda (w: T).(\lambda (a: A).(sc3 g a c3 w)))) (ex2 +C (\lambda (e2: C).(drop (S n) O c2 e2)) (\lambda (e2: C).(csubc g e1 e2))) +(\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: A).(\lambda (H5: (eq K k +(Bind Abst))).(\lambda (H6: (eq C c2 (CHead x0 (Bind Abbr) x1))).(\lambda +(H7: (csubc g c x0)).(\lambda (_: (sc3 g (asucc g x2) c t)).(\lambda (_: (sc3 +g x2 x0 x1)).(eq_ind_r C (CHead x0 (Bind Abbr) x1) (\lambda (c0: C).(ex2 C +(\lambda (e2: C).(drop (S n) O c0 e2)) (\lambda (e2: C).(csubc g e1 e2)))) +(let H10 \def (eq_ind K k (\lambda (k0: K).(drop (r k0 n) O c e1)) +(drop_gen_drop k c e1 t n H1) (Bind Abst) H5) in (let H11 \def (eq_ind K k +(\lambda (k0: K).((drop n O (CHead c k0 t) e1) \to (\forall (c3: C).((csubc g +(CHead c k0 t) c3) \to (ex2 C (\lambda (e2: C).(drop n O c3 e2)) (\lambda +(e2: C).(csubc g e1 e2))))))) H0 (Bind Abst) H5) in (let H_x0 \def (H e1 (r +(Bind Abst) n) H10 x0 H7) in (let H12 \def H_x0 in (ex2_ind C (\lambda (e2: +C).(drop n O x0 e2)) (\lambda (e2: C).(csubc g e1 e2)) (ex2 C (\lambda (e2: +C).(drop (S n) O (CHead x0 (Bind Abbr) x1) e2)) (\lambda (e2: C).(csubc g e1 +e2))) (\lambda (x: C).(\lambda (H13: (drop n O x0 x)).(\lambda (H14: (csubc g +e1 x)).(ex_intro2 C (\lambda (e2: C).(drop (S n) O (CHead x0 (Bind Abbr) x1) +e2)) (\lambda (e2: C).(csubc g e1 e2)) x (drop_drop (Bind Abbr) n x0 x H13 +x1) H14)))) H12))))) c2 H6))))))))) H4)) (\lambda (H4: (ex4_3 B C T (\lambda +(b: B).(\lambda (c3: C).(\lambda (v2: T).(eq C c2 (CHead c3 (Bind b) v2))))) +(\lambda (_: B).(\lambda (_: C).(\lambda (_: T).(eq K k (Bind Void))))) +(\lambda (b: B).(\lambda (_: C).(\lambda (_: T).(not (eq B b Void))))) +(\lambda (_: B).(\lambda (c3: C).(\lambda (_: T).(csubc g c +c3)))))).(ex4_3_ind B C T (\lambda (b: B).(\lambda (c3: C).(\lambda (v2: +T).(eq C c2 (CHead c3 (Bind b) v2))))) (\lambda (_: B).(\lambda (_: +C).(\lambda (_: T).(eq K k (Bind Void))))) (\lambda (b: B).(\lambda (_: +C).(\lambda (_: T).(not (eq B b Void))))) (\lambda (_: B).(\lambda (c3: +C).(\lambda (_: T).(csubc g c c3)))) (ex2 C (\lambda (e2: C).(drop (S n) O c2 +e2)) (\lambda (e2: C).(csubc g e1 e2))) (\lambda (x0: B).(\lambda (x1: +C).(\lambda (x2: T).(\lambda (H5: (eq C c2 (CHead x1 (Bind x0) x2))).(\lambda +(H6: (eq K k (Bind Void))).(\lambda (_: (not (eq B x0 Void))).(\lambda (H8: +(csubc g c x1)).(eq_ind_r C (CHead x1 (Bind x0) x2) (\lambda (c0: C).(ex2 C +(\lambda (e2: C).(drop (S n) O c0 e2)) (\lambda (e2: C).(csubc g e1 e2)))) +(let H9 \def (eq_ind K k (\lambda (k0: K).(drop (r k0 n) O c e1)) +(drop_gen_drop k c e1 t n H1) (Bind Void) H6) in (let H10 \def (eq_ind K k +(\lambda (k0: K).((drop n O (CHead c k0 t) e1) \to (\forall (c3: C).((csubc g +(CHead c k0 t) c3) \to (ex2 C (\lambda (e2: C).(drop n O c3 e2)) (\lambda +(e2: C).(csubc g e1 e2))))))) H0 (Bind Void) H6) in (let H_x0 \def (H e1 (r +(Bind Void) n) H9 x1 H8) in (let H11 \def H_x0 in (ex2_ind C (\lambda (e2: +C).(drop n O x1 e2)) (\lambda (e2: C).(csubc g e1 e2)) (ex2 C (\lambda (e2: +C).(drop (S n) O (CHead x1 (Bind x0) x2) e2)) (\lambda (e2: C).(csubc g e1 +e2))) (\lambda (x: C).(\lambda (H12: (drop n O x1 x)).(\lambda (H13: (csubc g +e1 x)).(ex_intro2 C (\lambda (e2: C).(drop (S n) O (CHead x1 (Bind x0) x2) +e2)) (\lambda (e2: C).(csubc g e1 e2)) x (drop_drop (Bind x0) n x1 x H12 x2) +H13)))) H11))))) c2 H5)))))))) H4)) H3)))))))) h))))))) c1)). theorem drop_csubc_trans: \forall (g: G).(\forall (c2: C).(\forall (e2: C).(\forall (d: nat).(\forall @@ -169,26 +199,30 @@ x1) e3) \to (ex2 C (\lambda (c1: C).(drop h0 n c1 e3)) (\lambda (c1: C).(csubc g (CHead c k t0) c1)))))))) H7 (lift h (r k n) x1) H4) in (eq_ind_r T (lift h (r k n) x1) (\lambda (t0: T).(ex2 C (\lambda (c1: C).(drop h (S n) c1 e1)) (\lambda (c1: C).(csubc g (CHead c k t0) c1)))) (let H_x \def -(csubc_gen_head_l g x0 e1 x1 k H6) in (let H9 \def H_x in (or_ind (ex2 C +(csubc_gen_head_l g x0 e1 x1 k H6) in (let H9 \def H_x in (or3_ind (ex2 C (\lambda (c3: C).(eq C e1 (CHead c3 k x1))) (\lambda (c3: C).(csubc g x0 c3))) (ex5_3 C T A (\lambda (_: C).(\lambda (_: T).(\lambda (_: A).(eq K k (Bind Abst))))) (\lambda (c3: C).(\lambda (w: T).(\lambda (_: A).(eq C e1 (CHead c3 (Bind Abbr) w))))) (\lambda (c3: C).(\lambda (_: T).(\lambda (_: A).(csubc g x0 c3)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(sc3 g (asucc g a) x0 x1)))) (\lambda (c3: C).(\lambda (w: T).(\lambda (a: A).(sc3 g -a c3 w))))) (ex2 C (\lambda (c1: C).(drop h (S n) c1 e1)) (\lambda (c1: -C).(csubc g (CHead c k (lift h (r k n) x1)) c1))) (\lambda (H10: (ex2 C -(\lambda (c3: C).(eq C e1 (CHead c3 k x1))) (\lambda (c3: C).(csubc g x0 -c3)))).(ex2_ind C (\lambda (c3: C).(eq C e1 (CHead c3 k x1))) (\lambda (c3: -C).(csubc g x0 c3)) (ex2 C (\lambda (c1: C).(drop h (S n) c1 e1)) (\lambda -(c1: C).(csubc g (CHead c k (lift h (r k n) x1)) c1))) (\lambda (x: -C).(\lambda (H11: (eq C e1 (CHead x k x1))).(\lambda (H12: (csubc g x0 -x)).(eq_ind_r C (CHead x k x1) (\lambda (c0: C).(ex2 C (\lambda (c1: C).(drop -h (S n) c1 c0)) (\lambda (c1: C).(csubc g (CHead c k (lift h (r k n) x1)) -c1)))) (let H_x0 \def (H x0 (r k n) h H5 x H12) in (let H13 \def H_x0 in -(ex2_ind C (\lambda (c1: C).(drop h (r k n) c1 x)) (\lambda (c1: C).(csubc g -c c1)) (ex2 C (\lambda (c1: C).(drop h (S n) c1 (CHead x k x1))) (\lambda -(c1: C).(csubc g (CHead c k (lift h (r k n) x1)) c1))) (\lambda (x2: +a c3 w))))) (ex4_3 B C T (\lambda (b: B).(\lambda (c3: C).(\lambda (v2: +T).(eq C e1 (CHead c3 (Bind b) v2))))) (\lambda (_: B).(\lambda (_: +C).(\lambda (_: T).(eq K k (Bind Void))))) (\lambda (b: B).(\lambda (_: +C).(\lambda (_: T).(not (eq B b Void))))) (\lambda (_: B).(\lambda (c3: +C).(\lambda (_: T).(csubc g x0 c3))))) (ex2 C (\lambda (c1: C).(drop h (S n) +c1 e1)) (\lambda (c1: C).(csubc g (CHead c k (lift h (r k n) x1)) c1))) +(\lambda (H10: (ex2 C (\lambda (c3: C).(eq C e1 (CHead c3 k x1))) (\lambda +(c3: C).(csubc g x0 c3)))).(ex2_ind C (\lambda (c3: C).(eq C e1 (CHead c3 k +x1))) (\lambda (c3: C).(csubc g x0 c3)) (ex2 C (\lambda (c1: C).(drop h (S n) +c1 e1)) (\lambda (c1: C).(csubc g (CHead c k (lift h (r k n) x1)) c1))) +(\lambda (x: C).(\lambda (H11: (eq C e1 (CHead x k x1))).(\lambda (H12: +(csubc g x0 x)).(eq_ind_r C (CHead x k x1) (\lambda (c0: C).(ex2 C (\lambda +(c1: C).(drop h (S n) c1 c0)) (\lambda (c1: C).(csubc g (CHead c k (lift h (r +k n) x1)) c1)))) (let H_x0 \def (H x0 (r k n) h H5 x H12) in (let H13 \def +H_x0 in (ex2_ind C (\lambda (c1: C).(drop h (r k n) c1 x)) (\lambda (c1: +C).(csubc g c c1)) (ex2 C (\lambda (c1: C).(drop h (S n) c1 (CHead x k x1))) +(\lambda (c1: C).(csubc g (CHead c k (lift h (r k n) x1)) c1))) (\lambda (x2: C).(\lambda (H14: (drop h (r k n) x2 x)).(\lambda (H15: (csubc g c x2)).(ex_intro2 C (\lambda (c1: C).(drop h (S n) c1 (CHead x k x1))) (\lambda (c1: C).(csubc g (CHead c k (lift h (r k n) x1)) c1)) (CHead x2 k (lift h (r @@ -229,8 +263,41 @@ x3))) (\lambda (c1: C).(csubc g (CHead c (Bind Abst) (lift h (r (Bind Abst) n) x1)) c1)) (CHead x (Bind Abbr) (lift h n x3)) (drop_skip_bind h n x x2 H19 Abbr x3) (csubc_abst g c x H20 (lift h (r (Bind Abst) n) x1) x4 (sc3_lift g (asucc g x4) x0 x1 H14 c h (r (Bind Abst) n) H17) (lift h n x3) (sc3_lift g -x4 x2 x3 H15 x h n H19)))))) H18))) k H11))) e1 H12))))))))) H10)) H9))) t -H4))))))))) (drop_gen_skip_l c e2 t h n k H1)))))))) d))))))) c2)). +x4 x2 x3 H15 x h n H19)))))) H18))) k H11))) e1 H12))))))))) H10)) (\lambda +(H10: (ex4_3 B C T (\lambda (b: B).(\lambda (c3: C).(\lambda (v2: T).(eq C e1 +(CHead c3 (Bind b) v2))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: +T).(eq K k (Bind Void))))) (\lambda (b: B).(\lambda (_: C).(\lambda (_: +T).(not (eq B b Void))))) (\lambda (_: B).(\lambda (c3: C).(\lambda (_: +T).(csubc g x0 c3)))))).(ex4_3_ind B C T (\lambda (b: B).(\lambda (c3: +C).(\lambda (v2: T).(eq C e1 (CHead c3 (Bind b) v2))))) (\lambda (_: +B).(\lambda (_: C).(\lambda (_: T).(eq K k (Bind Void))))) (\lambda (b: +B).(\lambda (_: C).(\lambda (_: T).(not (eq B b Void))))) (\lambda (_: +B).(\lambda (c3: C).(\lambda (_: T).(csubc g x0 c3)))) (ex2 C (\lambda (c1: +C).(drop h (S n) c1 e1)) (\lambda (c1: C).(csubc g (CHead c k (lift h (r k n) +x1)) c1))) (\lambda (x2: B).(\lambda (x3: C).(\lambda (x4: T).(\lambda (H11: +(eq C e1 (CHead x3 (Bind x2) x4))).(\lambda (H12: (eq K k (Bind +Void))).(\lambda (H13: (not (eq B x2 Void))).(\lambda (H14: (csubc g x0 +x3)).(eq_ind_r C (CHead x3 (Bind x2) x4) (\lambda (c0: C).(ex2 C (\lambda +(c1: C).(drop h (S n) c1 c0)) (\lambda (c1: C).(csubc g (CHead c k (lift h (r +k n) x1)) c1)))) (let H15 \def (eq_ind K k (\lambda (k0: K).(\forall (h0: +nat).((drop h0 n (CHead c k0 (lift h (r k0 n) x1)) (CHead x0 k0 x1)) \to +(\forall (e3: C).((csubc g (CHead x0 k0 x1) e3) \to (ex2 C (\lambda (c1: +C).(drop h0 n c1 e3)) (\lambda (c1: C).(csubc g (CHead c k0 (lift h (r k0 n) +x1)) c1)))))))) H8 (Bind Void) H12) in (let H16 \def (eq_ind K k (\lambda +(k0: K).(drop h (r k0 n) c x0)) H5 (Bind Void) H12) in (eq_ind_r K (Bind +Void) (\lambda (k0: K).(ex2 C (\lambda (c1: C).(drop h (S n) c1 (CHead x3 +(Bind x2) x4))) (\lambda (c1: C).(csubc g (CHead c k0 (lift h (r k0 n) x1)) +c1)))) (let H_x0 \def (H x0 (r (Bind Void) n) h H16 x3 H14) in (let H17 \def +H_x0 in (ex2_ind C (\lambda (c1: C).(drop h n c1 x3)) (\lambda (c1: C).(csubc +g c c1)) (ex2 C (\lambda (c1: C).(drop h (S n) c1 (CHead x3 (Bind x2) x4))) +(\lambda (c1: C).(csubc g (CHead c (Bind Void) (lift h (r (Bind Void) n) x1)) +c1))) (\lambda (x: C).(\lambda (H18: (drop h n x x3)).(\lambda (H19: (csubc g +c x)).(ex_intro2 C (\lambda (c1: C).(drop h (S n) c1 (CHead x3 (Bind x2) +x4))) (\lambda (c1: C).(csubc g (CHead c (Bind Void) (lift h (r (Bind Void) +n) x1)) c1)) (CHead x (Bind x2) (lift h n x4)) (drop_skip_bind h n x x3 H18 +x2 x4) (csubc_void g c x H19 x2 H13 (lift h (r (Bind Void) n) x1) (lift h n +x4)))))) H17))) k H12))) e1 H11)))))))) H10)) H9))) t H4))))))))) +(drop_gen_skip_l c e2 t h n k H1)))))))) d))))))) c2)). theorem csubc_drop_conf_rev: \forall (g: G).(\forall (c2: C).(\forall (e2: C).(\forall (d: nat).(\forall @@ -298,15 +365,19 @@ k x1)) \to (ex2 C (\lambda (c1: C).(drop h0 n c1 e3)) (\lambda (c1: C).(csubc g c1 (CHead c k t0))))))))) H7 (lift h (r k n) x1) H4) in (eq_ind_r T (lift h (r k n) x1) (\lambda (t0: T).(ex2 C (\lambda (c1: C).(drop h (S n) c1 e1)) (\lambda (c1: C).(csubc g c1 (CHead c k t0))))) (let H_x \def -(csubc_gen_head_r g x0 e1 x1 k H6) in (let H9 \def H_x in (or_ind (ex2 C +(csubc_gen_head_r g x0 e1 x1 k H6) in (let H9 \def H_x in (or3_ind (ex2 C (\lambda (c1: C).(eq C e1 (CHead c1 k x1))) (\lambda (c1: C).(csubc g c1 x0))) (ex5_3 C T A (\lambda (_: C).(\lambda (_: T).(\lambda (_: A).(eq K k (Bind Abbr))))) (\lambda (c1: C).(\lambda (v: T).(\lambda (_: A).(eq C e1 (CHead c1 (Bind Abst) v))))) (\lambda (c1: C).(\lambda (_: T).(\lambda (_: A).(csubc g c1 x0)))) (\lambda (c1: C).(\lambda (v: T).(\lambda (a: A).(sc3 g (asucc g a) c1 v)))) (\lambda (_: C).(\lambda (_: T).(\lambda (a: A).(sc3 g a -x0 x1))))) (ex2 C (\lambda (c1: C).(drop h (S n) c1 e1)) (\lambda (c1: -C).(csubc g c1 (CHead c k (lift h (r k n) x1))))) (\lambda (H10: (ex2 C +x0 x1))))) (ex4_3 B C T (\lambda (_: B).(\lambda (c1: C).(\lambda (v1: T).(eq +C e1 (CHead c1 (Bind Void) v1))))) (\lambda (b: B).(\lambda (_: C).(\lambda +(_: T).(eq K k (Bind b))))) (\lambda (b: B).(\lambda (_: C).(\lambda (_: +T).(not (eq B b Void))))) (\lambda (_: B).(\lambda (c1: C).(\lambda (_: +T).(csubc g c1 x0))))) (ex2 C (\lambda (c1: C).(drop h (S n) c1 e1)) (\lambda +(c1: C).(csubc g c1 (CHead c k (lift h (r k n) x1))))) (\lambda (H10: (ex2 C (\lambda (c1: C).(eq C e1 (CHead c1 k x1))) (\lambda (c1: C).(csubc g c1 x0)))).(ex2_ind C (\lambda (c1: C).(eq C e1 (CHead c1 k x1))) (\lambda (c1: C).(csubc g c1 x0)) (ex2 C (\lambda (c1: C).(drop h (S n) c1 e1)) (\lambda @@ -358,6 +429,38 @@ C).(csubc g c1 (CHead c (Bind Abbr) (lift h (r (Bind Abbr) n) x1)))) (CHead x (Bind Abst) (lift h n x3)) (drop_skip_bind h n x x2 H19 Abst x3) (csubc_abst g x c H20 (lift h n x3) x4 (sc3_lift g (asucc g x4) x2 x3 H14 x h n H19) (lift h (r (Bind Abbr) n) x1) (sc3_lift g x4 x0 x1 H15 c h (r (Bind Abbr) n) -H17)))))) H18))) k H11))) e1 H12))))))))) H10)) H9))) t H4))))))))) -(drop_gen_skip_l c e2 t h n k H1)))))))) d))))))) c2)). +H17)))))) H18))) k H11))) e1 H12))))))))) H10)) (\lambda (H10: (ex4_3 B C T +(\lambda (_: B).(\lambda (c1: C).(\lambda (v1: T).(eq C e1 (CHead c1 (Bind +Void) v1))))) (\lambda (b: B).(\lambda (_: C).(\lambda (_: T).(eq K k (Bind +b))))) (\lambda (b: B).(\lambda (_: C).(\lambda (_: T).(not (eq B b Void))))) +(\lambda (_: B).(\lambda (c1: C).(\lambda (_: T).(csubc g c1 +x0)))))).(ex4_3_ind B C T (\lambda (_: B).(\lambda (c1: C).(\lambda (v1: +T).(eq C e1 (CHead c1 (Bind Void) v1))))) (\lambda (b: B).(\lambda (_: +C).(\lambda (_: T).(eq K k (Bind b))))) (\lambda (b: B).(\lambda (_: +C).(\lambda (_: T).(not (eq B b Void))))) (\lambda (_: B).(\lambda (c1: +C).(\lambda (_: T).(csubc g c1 x0)))) (ex2 C (\lambda (c1: C).(drop h (S n) +c1 e1)) (\lambda (c1: C).(csubc g c1 (CHead c k (lift h (r k n) x1))))) +(\lambda (x2: B).(\lambda (x3: C).(\lambda (x4: T).(\lambda (H11: (eq C e1 +(CHead x3 (Bind Void) x4))).(\lambda (H12: (eq K k (Bind x2))).(\lambda (H13: +(not (eq B x2 Void))).(\lambda (H14: (csubc g x3 x0)).(eq_ind_r C (CHead x3 +(Bind Void) x4) (\lambda (c0: C).(ex2 C (\lambda (c1: C).(drop h (S n) c1 +c0)) (\lambda (c1: C).(csubc g c1 (CHead c k (lift h (r k n) x1)))))) (let +H15 \def (eq_ind K k (\lambda (k0: K).(\forall (h0: nat).((drop h0 n (CHead c +k0 (lift h (r k0 n) x1)) (CHead x0 k0 x1)) \to (\forall (e3: C).((csubc g e3 +(CHead x0 k0 x1)) \to (ex2 C (\lambda (c1: C).(drop h0 n c1 e3)) (\lambda +(c1: C).(csubc g c1 (CHead c k0 (lift h (r k0 n) x1)))))))))) H8 (Bind x2) +H12) in (let H16 \def (eq_ind K k (\lambda (k0: K).(drop h (r k0 n) c x0)) H5 +(Bind x2) H12) in (eq_ind_r K (Bind x2) (\lambda (k0: K).(ex2 C (\lambda (c1: +C).(drop h (S n) c1 (CHead x3 (Bind Void) x4))) (\lambda (c1: C).(csubc g c1 +(CHead c k0 (lift h (r k0 n) x1)))))) (let H_x0 \def (H x0 (r (Bind x2) n) h +H16 x3 H14) in (let H17 \def H_x0 in (ex2_ind C (\lambda (c1: C).(drop h n c1 +x3)) (\lambda (c1: C).(csubc g c1 c)) (ex2 C (\lambda (c1: C).(drop h (S n) +c1 (CHead x3 (Bind Void) x4))) (\lambda (c1: C).(csubc g c1 (CHead c (Bind +x2) (lift h (r (Bind x2) n) x1))))) (\lambda (x: C).(\lambda (H18: (drop h n +x x3)).(\lambda (H19: (csubc g x c)).(ex_intro2 C (\lambda (c1: C).(drop h (S +n) c1 (CHead x3 (Bind Void) x4))) (\lambda (c1: C).(csubc g c1 (CHead c (Bind +x2) (lift h (r (Bind x2) n) x1)))) (CHead x (Bind Void) (lift h n x4)) +(drop_skip_bind h n x x3 H18 Void x4) (csubc_void g x c H19 x2 H13 (lift h n +x4) (lift h (r (Bind x2) n) x1)))))) H17))) k H12))) e1 H11)))))))) H10)) +H9))) t H4))))))))) (drop_gen_skip_l c e2 t h n k H1)))))))) d))))))) c2)).