From 10c836687dfdf9d23357d7423cfc535e817d843f Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Thu, 5 Mar 2015 14:58:51 +0000 Subject: [PATCH] components: pc1, pc3, ty3, csubt, ex1 --- .../lambdadelta/basic_1/csubt/clear.ma | 122 +- .../lambdadelta/basic_1/csubt/csuba.ma | 41 +- .../lambdadelta/basic_1/csubt/defs.ma | 2 +- .../lambdadelta/basic_1/csubt/drop.ma | 1534 ++++++++++----- .../contribs/lambdadelta/basic_1/csubt/fwd.ma | 868 ++++---- .../lambdadelta/basic_1/csubt/getl.ma | 1062 ++++++---- .../contribs/lambdadelta/basic_1/csubt/pc3.ma | 64 +- .../lambdadelta/basic_1/csubt/props.ma | 14 +- .../contribs/lambdadelta/basic_1/csubt/ty3.ma | 140 +- .../contribs/lambdadelta/basic_1/ex1/defs.ma | 14 +- .../contribs/lambdadelta/basic_1/ex1/props.ma | 436 ++--- .../contribs/lambdadelta/basic_1/pc1/defs.ma | 6 +- .../contribs/lambdadelta/basic_1/pc1/props.ma | 142 +- .../contribs/lambdadelta/basic_1/pc3/dec.ma | 289 +-- .../contribs/lambdadelta/basic_1/pc3/defs.ma | 7 +- .../lambdadelta/basic_1/pc3/fsubst0.ma | 1742 ++++++++++------- .../contribs/lambdadelta/basic_1/pc3/fwd.ma | 171 +- .../contribs/lambdadelta/basic_1/pc3/left.ma | 129 +- .../contribs/lambdadelta/basic_1/pc3/nf2.ma | 41 +- .../contribs/lambdadelta/basic_1/pc3/pc1.ma | 21 +- .../contribs/lambdadelta/basic_1/pc3/props.ma | 736 ++++--- .../lambdadelta/basic_1/pc3/subst1.ma | 39 +- .../contribs/lambdadelta/basic_1/pc3/wcpr0.ma | 134 +- .../contribs/lambdadelta/basic_1/ty3/arity.ma | 447 +++-- .../lambdadelta/basic_1/ty3/arity_props.ma | 158 +- .../contribs/lambdadelta/basic_1/ty3/dec.ma | 209 +- .../contribs/lambdadelta/basic_1/ty3/defs.ma | 4 +- .../lambdadelta/basic_1/ty3/fsubst0.ma | 584 +++--- .../contribs/lambdadelta/basic_1/ty3/fwd.ma | 987 +++++----- .../lambdadelta/basic_1/ty3/fwd_nf2.ma | 616 +++--- .../contribs/lambdadelta/basic_1/ty3/nf2.ma | 1082 ++++++---- .../contribs/lambdadelta/basic_1/ty3/pr3.ma | 792 ++++---- .../lambdadelta/basic_1/ty3/pr3_props.ma | 31 +- .../contribs/lambdadelta/basic_1/ty3/props.ma | 1726 ++++++++++------ .../contribs/lambdadelta/basic_1/ty3/sty0.ma | 552 ++++-- .../lambdadelta/basic_1/ty3/subst1.ma | 667 ++++--- 36 files changed, 9236 insertions(+), 6373 deletions(-) diff --git a/matita/matita/contribs/lambdadelta/basic_1/csubt/clear.ma b/matita/matita/contribs/lambdadelta/basic_1/csubt/clear.ma index c60700147..28ecc869c 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/csubt/clear.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/csubt/clear.ma @@ -14,9 +14,9 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/csubt/defs.ma". +include "basic_1/csubt/fwd.ma". -include "Basic-1/clear/fwd.ma". +include "basic_1/clear/fwd.ma". theorem csubt_clear_conf: \forall (g: G).(\forall (c1: C).(\forall (c2: C).((csubt g c1 c2) \to @@ -24,51 +24,81 @@ theorem csubt_clear_conf: (\lambda (e2: C).(clear c2 e2)))))))) \def \lambda (g: G).(\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (csubt g c1 -c2)).(csubt_ind g (\lambda (c: C).(\lambda (c0: C).(\forall (e1: C).((clear c -e1) \to (ex2 C (\lambda (e2: C).(csubt g e1 e2)) (\lambda (e2: C).(clear c0 -e2))))))) (\lambda (n: nat).(\lambda (e1: C).(\lambda (H0: (clear (CSort n) -e1)).(clear_gen_sort e1 n H0 (ex2 C (\lambda (e2: C).(csubt g e1 e2)) -(\lambda (e2: C).(clear (CSort n) e2))))))) (\lambda (c3: C).(\lambda (c4: -C).(\lambda (H0: (csubt g c3 c4)).(\lambda (H1: ((\forall (e1: C).((clear c3 -e1) \to (ex2 C (\lambda (e2: C).(csubt g e1 e2)) (\lambda (e2: C).(clear c4 +c2)).(let TMP_3 \def (\lambda (c: C).(\lambda (c0: C).(\forall (e1: +C).((clear c e1) \to (let TMP_1 \def (\lambda (e2: C).(csubt g e1 e2)) in +(let TMP_2 \def (\lambda (e2: C).(clear c0 e2)) in (ex2 C TMP_1 TMP_2))))))) +in (let TMP_8 \def (\lambda (n: nat).(\lambda (e1: C).(\lambda (H0: (clear +(CSort n) e1)).(let TMP_4 \def (\lambda (e2: C).(csubt g e1 e2)) in (let +TMP_6 \def (\lambda (e2: C).(let TMP_5 \def (CSort n) in (clear TMP_5 e2))) +in (let TMP_7 \def (ex2 C TMP_4 TMP_6) in (clear_gen_sort e1 n H0 +TMP_7))))))) in (let TMP_49 \def (\lambda (c3: C).(\lambda (c4: C).(\lambda +(H0: (csubt g c3 c4)).(\lambda (H1: ((\forall (e1: C).((clear c3 e1) \to (ex2 +C (\lambda (e2: C).(csubt g e1 e2)) (\lambda (e2: C).(clear c4 e2))))))).(\lambda (k: K).(\lambda (u: T).(\lambda (e1: C).(\lambda (H2: -(clear (CHead c3 k u) e1)).(K_ind (\lambda (k0: K).((clear (CHead c3 k0 u) -e1) \to (ex2 C (\lambda (e2: C).(csubt g e1 e2)) (\lambda (e2: C).(clear -(CHead c4 k0 u) e2))))) (\lambda (b: B).(\lambda (H3: (clear (CHead c3 (Bind -b) u) e1)).(eq_ind_r C (CHead c3 (Bind b) u) (\lambda (c: C).(ex2 C (\lambda -(e2: C).(csubt g c e2)) (\lambda (e2: C).(clear (CHead c4 (Bind b) u) e2)))) -(ex_intro2 C (\lambda (e2: C).(csubt g (CHead c3 (Bind b) u) e2)) (\lambda -(e2: C).(clear (CHead c4 (Bind b) u) e2)) (CHead c4 (Bind b) u) (csubt_head g -c3 c4 H0 (Bind b) u) (clear_bind b c4 u)) e1 (clear_gen_bind b c3 e1 u H3)))) -(\lambda (f: F).(\lambda (H3: (clear (CHead c3 (Flat f) u) e1)).(let H4 \def -(H1 e1 (clear_gen_flat f c3 e1 u H3)) in (ex2_ind C (\lambda (e2: C).(csubt g -e1 e2)) (\lambda (e2: C).(clear c4 e2)) (ex2 C (\lambda (e2: C).(csubt g e1 -e2)) (\lambda (e2: C).(clear (CHead c4 (Flat f) u) e2))) (\lambda (x: -C).(\lambda (H5: (csubt g e1 x)).(\lambda (H6: (clear c4 x)).(ex_intro2 C -(\lambda (e2: C).(csubt g e1 e2)) (\lambda (e2: C).(clear (CHead c4 (Flat f) -u) e2)) x H5 (clear_flat c4 x H6 f u))))) H4)))) k H2))))))))) (\lambda (c3: +(clear (CHead c3 k u) e1)).(let TMP_12 \def (\lambda (k0: K).((clear (CHead +c3 k0 u) e1) \to (let TMP_9 \def (\lambda (e2: C).(csubt g e1 e2)) in (let +TMP_11 \def (\lambda (e2: C).(let TMP_10 \def (CHead c4 k0 u) in (clear +TMP_10 e2))) in (ex2 C TMP_9 TMP_11))))) in (let TMP_33 \def (\lambda (b: +B).(\lambda (H3: (clear (CHead c3 (Bind b) u) e1)).(let TMP_13 \def (Bind b) +in (let TMP_14 \def (CHead c3 TMP_13 u) in (let TMP_19 \def (\lambda (c: +C).(let TMP_15 \def (\lambda (e2: C).(csubt g c e2)) in (let TMP_18 \def +(\lambda (e2: C).(let TMP_16 \def (Bind b) in (let TMP_17 \def (CHead c4 +TMP_16 u) in (clear TMP_17 e2)))) in (ex2 C TMP_15 TMP_18)))) in (let TMP_22 +\def (\lambda (e2: C).(let TMP_20 \def (Bind b) in (let TMP_21 \def (CHead c3 +TMP_20 u) in (csubt g TMP_21 e2)))) in (let TMP_25 \def (\lambda (e2: C).(let +TMP_23 \def (Bind b) in (let TMP_24 \def (CHead c4 TMP_23 u) in (clear TMP_24 +e2)))) in (let TMP_26 \def (Bind b) in (let TMP_27 \def (CHead c4 TMP_26 u) +in (let TMP_28 \def (Bind b) in (let TMP_29 \def (csubt_head g c3 c4 H0 +TMP_28 u) in (let TMP_30 \def (clear_bind b c4 u) in (let TMP_31 \def +(ex_intro2 C TMP_22 TMP_25 TMP_27 TMP_29 TMP_30) in (let TMP_32 \def +(clear_gen_bind b c3 e1 u H3) in (eq_ind_r C TMP_14 TMP_19 TMP_31 e1 +TMP_32))))))))))))))) in (let TMP_48 \def (\lambda (f: F).(\lambda (H3: +(clear (CHead c3 (Flat f) u) e1)).(let TMP_34 \def (clear_gen_flat f c3 e1 u +H3) in (let H4 \def (H1 e1 TMP_34) in (let TMP_35 \def (\lambda (e2: +C).(csubt g e1 e2)) in (let TMP_36 \def (\lambda (e2: C).(clear c4 e2)) in +(let TMP_37 \def (\lambda (e2: C).(csubt g e1 e2)) in (let TMP_40 \def +(\lambda (e2: C).(let TMP_38 \def (Flat f) in (let TMP_39 \def (CHead c4 +TMP_38 u) in (clear TMP_39 e2)))) in (let TMP_41 \def (ex2 C TMP_37 TMP_40) +in (let TMP_47 \def (\lambda (x: C).(\lambda (H5: (csubt g e1 x)).(\lambda +(H6: (clear c4 x)).(let TMP_42 \def (\lambda (e2: C).(csubt g e1 e2)) in (let +TMP_45 \def (\lambda (e2: C).(let TMP_43 \def (Flat f) in (let TMP_44 \def +(CHead c4 TMP_43 u) in (clear TMP_44 e2)))) in (let TMP_46 \def (clear_flat +c4 x H6 f u) in (ex_intro2 C TMP_42 TMP_45 x H5 TMP_46))))))) in (ex2_ind C +TMP_35 TMP_36 TMP_41 TMP_47 H4))))))))))) in (K_ind TMP_12 TMP_33 TMP_48 k +H2)))))))))))) in (let TMP_69 \def (\lambda (c3: C).(\lambda (c4: C).(\lambda +(H0: (csubt g c3 c4)).(\lambda (_: ((\forall (e1: C).((clear c3 e1) \to (ex2 +C (\lambda (e2: C).(csubt g e1 e2)) (\lambda (e2: C).(clear c4 +e2))))))).(\lambda (b: B).(\lambda (H2: (not (eq B b Void))).(\lambda (u1: +T).(\lambda (u2: T).(\lambda (e1: C).(\lambda (H3: (clear (CHead c3 (Bind +Void) u1) e1)).(let TMP_50 \def (Bind Void) in (let TMP_51 \def (CHead c3 +TMP_50 u1) in (let TMP_56 \def (\lambda (c: C).(let TMP_52 \def (\lambda (e2: +C).(csubt g c e2)) in (let TMP_55 \def (\lambda (e2: C).(let TMP_53 \def +(Bind b) in (let TMP_54 \def (CHead c4 TMP_53 u2) in (clear TMP_54 e2)))) in +(ex2 C TMP_52 TMP_55)))) in (let TMP_59 \def (\lambda (e2: C).(let TMP_57 +\def (Bind Void) in (let TMP_58 \def (CHead c3 TMP_57 u1) in (csubt g TMP_58 +e2)))) in (let TMP_62 \def (\lambda (e2: C).(let TMP_60 \def (Bind b) in (let +TMP_61 \def (CHead c4 TMP_60 u2) in (clear TMP_61 e2)))) in (let TMP_63 \def +(Bind b) in (let TMP_64 \def (CHead c4 TMP_63 u2) in (let TMP_65 \def +(csubt_void g c3 c4 H0 b H2 u1 u2) in (let TMP_66 \def (clear_bind b c4 u2) +in (let TMP_67 \def (ex_intro2 C TMP_59 TMP_62 TMP_64 TMP_65 TMP_66) in (let +TMP_68 \def (clear_gen_bind Void c3 e1 u1 H3) in (eq_ind_r C TMP_51 TMP_56 +TMP_67 e1 TMP_68)))))))))))))))))))))) in (let TMP_89 \def (\lambda (c3: C).(\lambda (c4: C).(\lambda (H0: (csubt g c3 c4)).(\lambda (_: ((\forall (e1: C).((clear c3 e1) \to (ex2 C (\lambda (e2: C).(csubt g e1 e2)) (\lambda -(e2: C).(clear c4 e2))))))).(\lambda (b: B).(\lambda (H2: (not (eq B b -Void))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (e1: C).(\lambda (H3: -(clear (CHead c3 (Bind Void) u1) e1)).(eq_ind_r C (CHead c3 (Bind Void) u1) -(\lambda (c: C).(ex2 C (\lambda (e2: C).(csubt g c e2)) (\lambda (e2: -C).(clear (CHead c4 (Bind b) u2) e2)))) (ex_intro2 C (\lambda (e2: C).(csubt -g (CHead c3 (Bind Void) u1) e2)) (\lambda (e2: C).(clear (CHead c4 (Bind b) -u2) e2)) (CHead c4 (Bind b) u2) (csubt_void g c3 c4 H0 b H2 u1 u2) -(clear_bind b c4 u2)) e1 (clear_gen_bind Void c3 e1 u1 H3)))))))))))) -(\lambda (c3: C).(\lambda (c4: C).(\lambda (H0: (csubt g c3 c4)).(\lambda (_: -((\forall (e1: C).((clear c3 e1) \to (ex2 C (\lambda (e2: C).(csubt g e1 e2)) -(\lambda (e2: C).(clear c4 e2))))))).(\lambda (u: T).(\lambda (t: T).(\lambda -(H2: (ty3 g c3 u t)).(\lambda (H3: (ty3 g c4 u t)).(\lambda (e1: C).(\lambda -(H4: (clear (CHead c3 (Bind Abst) t) e1)).(eq_ind_r C (CHead c3 (Bind Abst) -t) (\lambda (c: C).(ex2 C (\lambda (e2: C).(csubt g c e2)) (\lambda (e2: -C).(clear (CHead c4 (Bind Abbr) u) e2)))) (ex_intro2 C (\lambda (e2: -C).(csubt g (CHead c3 (Bind Abst) t) e2)) (\lambda (e2: C).(clear (CHead c4 -(Bind Abbr) u) e2)) (CHead c4 (Bind Abbr) u) (csubt_abst g c3 c4 H0 u t H2 -H3) (clear_bind Abbr c4 u)) e1 (clear_gen_bind Abst c3 e1 t H4)))))))))))) c1 -c2 H)))). -(* COMMENTS -Initial nodes: 929 -END *) +(e2: C).(clear c4 e2))))))).(\lambda (u: T).(\lambda (t: T).(\lambda (H2: +(ty3 g c3 u t)).(\lambda (H3: (ty3 g c4 u t)).(\lambda (e1: C).(\lambda (H4: +(clear (CHead c3 (Bind Abst) t) e1)).(let TMP_70 \def (Bind Abst) in (let +TMP_71 \def (CHead c3 TMP_70 t) in (let TMP_76 \def (\lambda (c: C).(let +TMP_72 \def (\lambda (e2: C).(csubt g c e2)) in (let TMP_75 \def (\lambda +(e2: C).(let TMP_73 \def (Bind Abbr) in (let TMP_74 \def (CHead c4 TMP_73 u) +in (clear TMP_74 e2)))) in (ex2 C TMP_72 TMP_75)))) in (let TMP_79 \def +(\lambda (e2: C).(let TMP_77 \def (Bind Abst) in (let TMP_78 \def (CHead c3 +TMP_77 t) in (csubt g TMP_78 e2)))) in (let TMP_82 \def (\lambda (e2: C).(let +TMP_80 \def (Bind Abbr) in (let TMP_81 \def (CHead c4 TMP_80 u) in (clear +TMP_81 e2)))) in (let TMP_83 \def (Bind Abbr) in (let TMP_84 \def (CHead c4 +TMP_83 u) in (let TMP_85 \def (csubt_abst g c3 c4 H0 u t H2 H3) in (let +TMP_86 \def (clear_bind Abbr c4 u) in (let TMP_87 \def (ex_intro2 C TMP_79 +TMP_82 TMP_84 TMP_85 TMP_86) in (let TMP_88 \def (clear_gen_bind Abst c3 e1 t +H4) in (eq_ind_r C TMP_71 TMP_76 TMP_87 e1 TMP_88)))))))))))))))))))))) in +(csubt_ind g TMP_3 TMP_8 TMP_49 TMP_69 TMP_89 c1 c2 H))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/csubt/csuba.ma b/matita/matita/contribs/lambdadelta/basic_1/csubt/csuba.ma index b2cf1183f..f465141cc 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/csubt/csuba.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/csubt/csuba.ma @@ -14,29 +14,32 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/arity.ma". +include "basic_1/ty3/arity.ma". theorem csubt_csuba: \forall (g: G).(\forall (c1: C).(\forall (c2: C).((csubt g c1 c2) \to (csuba g c1 c2)))) \def \lambda (g: G).(\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (csubt g c1 -c2)).(csubt_ind g (\lambda (c: C).(\lambda (c0: C).(csuba g c c0))) (\lambda -(n: nat).(csuba_refl g (CSort n))) (\lambda (c3: C).(\lambda (c4: C).(\lambda -(_: (csubt g c3 c4)).(\lambda (H1: (csuba g c3 c4)).(\lambda (k: K).(\lambda -(u: T).(csuba_head g c3 c4 H1 k u))))))) (\lambda (c3: C).(\lambda (c4: -C).(\lambda (_: (csubt g c3 c4)).(\lambda (H1: (csuba g c3 c4)).(\lambda (b: -B).(\lambda (H2: (not (eq B b Void))).(\lambda (u1: T).(\lambda (u2: -T).(csuba_void g c3 c4 H1 b H2 u1 u2))))))))) (\lambda (c3: C).(\lambda (c4: -C).(\lambda (_: (csubt g c3 c4)).(\lambda (H1: (csuba g c3 c4)).(\lambda (u: -T).(\lambda (t: T).(\lambda (H2: (ty3 g c3 u t)).(\lambda (_: (ty3 g c4 u -t)).(let H_x \def (ty3_arity g c3 u t H2) in (let H4 \def H_x in (ex2_ind A -(\lambda (a1: A).(arity g c3 u a1)) (\lambda (a1: A).(arity g c3 t (asucc g -a1))) (csuba g (CHead c3 (Bind Abst) t) (CHead c4 (Bind Abbr) u)) (\lambda -(x: A).(\lambda (H5: (arity g c3 u x)).(\lambda (H6: (arity g c3 t (asucc g -x))).(csuba_abst g c3 c4 H1 t x H6 u (csuba_arity g c3 u x H5 c4 H1))))) -H4))))))))))) c1 c2 H)))). -(* COMMENTS -Initial nodes: 313 -END *) +c2)).(let TMP_1 \def (\lambda (c: C).(\lambda (c0: C).(csuba g c c0))) in +(let TMP_3 \def (\lambda (n: nat).(let TMP_2 \def (CSort n) in (csuba_refl g +TMP_2))) in (let TMP_4 \def (\lambda (c3: C).(\lambda (c4: C).(\lambda (_: +(csubt g c3 c4)).(\lambda (H1: (csuba g c3 c4)).(\lambda (k: K).(\lambda (u: +T).(csuba_head g c3 c4 H1 k u))))))) in (let TMP_5 \def (\lambda (c3: +C).(\lambda (c4: C).(\lambda (_: (csubt g c3 c4)).(\lambda (H1: (csuba g c3 +c4)).(\lambda (b: B).(\lambda (H2: (not (eq B b Void))).(\lambda (u1: +T).(\lambda (u2: T).(csuba_void g c3 c4 H1 b H2 u1 u2))))))))) in (let TMP_16 +\def (\lambda (c3: C).(\lambda (c4: C).(\lambda (_: (csubt g c3 c4)).(\lambda +(H1: (csuba g c3 c4)).(\lambda (u: T).(\lambda (t: T).(\lambda (H2: (ty3 g c3 +u t)).(\lambda (_: (ty3 g c4 u t)).(let H_x \def (ty3_arity g c3 u t H2) in +(let H4 \def H_x in (let TMP_6 \def (\lambda (a1: A).(arity g c3 u a1)) in +(let TMP_8 \def (\lambda (a1: A).(let TMP_7 \def (asucc g a1) in (arity g c3 +t TMP_7))) in (let TMP_9 \def (Bind Abst) in (let TMP_10 \def (CHead c3 TMP_9 +t) in (let TMP_11 \def (Bind Abbr) in (let TMP_12 \def (CHead c4 TMP_11 u) in +(let TMP_13 \def (csuba g TMP_10 TMP_12) in (let TMP_15 \def (\lambda (x: +A).(\lambda (H5: (arity g c3 u x)).(\lambda (H6: (arity g c3 t (asucc g +x))).(let TMP_14 \def (csuba_arity g c3 u x H5 c4 H1) in (csuba_abst g c3 c4 +H1 t x H6 u TMP_14))))) in (ex2_ind A TMP_6 TMP_8 TMP_13 TMP_15 +H4))))))))))))))))))) in (csubt_ind g TMP_1 TMP_3 TMP_4 TMP_5 TMP_16 c1 c2 +H))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/csubt/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/csubt/defs.ma index a12c9f829..35ef17fb0 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/csubt/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/csubt/defs.ma @@ -14,7 +14,7 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/defs.ma". +include "basic_1/ty3/defs.ma". inductive csubt (g: G): C \to (C \to Prop) \def | csubt_sort: \forall (n: nat).(csubt g (CSort n) (CSort n)) diff --git a/matita/matita/contribs/lambdadelta/basic_1/csubt/drop.ma b/matita/matita/contribs/lambdadelta/basic_1/csubt/drop.ma index adaedcc9a..6e2ca743b 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/csubt/drop.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/csubt/drop.ma @@ -14,9 +14,9 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/csubt/fwd.ma". +include "basic_1/csubt/fwd.ma". -include "Basic-1/drop/fwd.ma". +include "basic_1/drop/fwd.ma". theorem csubt_drop_flat: \forall (g: G).(\forall (f: F).(\forall (n: nat).(\forall (c1: C).(\forall @@ -24,100 +24,176 @@ theorem csubt_drop_flat: (CHead d1 (Flat f) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n O c2 (CHead d2 (Flat f) u)))))))))))) \def - \lambda (g: G).(\lambda (f: F).(\lambda (n: nat).(nat_ind (\lambda (n0: -nat).(\forall (c1: C).(\forall (c2: C).((csubt g c1 c2) \to (\forall (d1: + \lambda (g: G).(\lambda (f: F).(\lambda (n: nat).(let TMP_5 \def (\lambda +(n0: nat).(\forall (c1: C).(\forall (c2: C).((csubt g c1 c2) \to (\forall +(d1: C).(\forall (u: T).((drop n0 O c1 (CHead d1 (Flat f) u)) \to (let TMP_1 +\def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_4 \def (\lambda (d2: +C).(let TMP_2 \def (Flat f) in (let TMP_3 \def (CHead d2 TMP_2 u) in (drop n0 +O c2 TMP_3)))) in (ex2 C TMP_1 TMP_4)))))))))) in (let TMP_39 \def (\lambda +(c1: C).(\lambda (c2: C).(\lambda (H: (csubt g c1 c2)).(\lambda (d1: +C).(\lambda (u: T).(\lambda (H0: (drop O O c1 (CHead d1 (Flat f) u))).(let +TMP_6 \def (\lambda (c: C).(csubt g c c2)) in (let TMP_7 \def (Flat f) in +(let TMP_8 \def (CHead d1 TMP_7 u) in (let TMP_9 \def (Flat f) in (let TMP_10 +\def (CHead d1 TMP_9 u) in (let TMP_11 \def (drop_gen_refl c1 TMP_10 H0) in +(let H1 \def (eq_ind C c1 TMP_6 H TMP_8 TMP_11) in (let H_x \def +(csubt_gen_flat g d1 c2 u f H1) in (let H2 \def H_x in (let TMP_14 \def +(\lambda (e2: C).(let TMP_12 \def (Flat f) in (let TMP_13 \def (CHead e2 +TMP_12 u) in (eq C c2 TMP_13)))) in (let TMP_15 \def (\lambda (e2: C).(csubt +g d1 e2)) in (let TMP_16 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_19 \def (\lambda (d2: C).(let TMP_17 \def (Flat f) in (let TMP_18 \def +(CHead d2 TMP_17 u) in (drop O O c2 TMP_18)))) in (let TMP_20 \def (ex2 C +TMP_16 TMP_19) in (let TMP_38 \def (\lambda (x: C).(\lambda (H3: (eq C c2 +(CHead x (Flat f) u))).(\lambda (H4: (csubt g d1 x)).(let TMP_21 \def (Flat +f) in (let TMP_22 \def (CHead x TMP_21 u) in (let TMP_27 \def (\lambda (c: +C).(let TMP_23 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_26 \def +(\lambda (d2: C).(let TMP_24 \def (Flat f) in (let TMP_25 \def (CHead d2 +TMP_24 u) in (drop O O c TMP_25)))) in (ex2 C TMP_23 TMP_26)))) in (let +TMP_28 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_33 \def (\lambda +(d2: C).(let TMP_29 \def (Flat f) in (let TMP_30 \def (CHead x TMP_29 u) in +(let TMP_31 \def (Flat f) in (let TMP_32 \def (CHead d2 TMP_31 u) in (drop O +O TMP_30 TMP_32)))))) in (let TMP_34 \def (Flat f) in (let TMP_35 \def (CHead +x TMP_34 u) in (let TMP_36 \def (drop_refl TMP_35) in (let TMP_37 \def +(ex_intro2 C TMP_28 TMP_33 x H4 TMP_36) in (eq_ind_r C TMP_22 TMP_27 TMP_37 +c2 H3))))))))))))) in (ex2_ind C TMP_14 TMP_15 TMP_20 TMP_38 +H2)))))))))))))))))))))) in (let TMP_204 \def (\lambda (n0: nat).(\lambda (H: +((\forall (c1: C).(\forall (c2: C).((csubt g c1 c2) \to (\forall (d1: C).(\forall (u: T).((drop n0 O c1 (CHead d1 (Flat f) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c2 (CHead d2 (Flat f) -u))))))))))) (\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (csubt g c1 -c2)).(\lambda (d1: C).(\lambda (u: T).(\lambda (H0: (drop O O c1 (CHead d1 -(Flat f) u))).(let H1 \def (eq_ind C c1 (\lambda (c: C).(csubt g c c2)) H -(CHead d1 (Flat f) u) (drop_gen_refl c1 (CHead d1 (Flat f) u) H0)) in (let -H_x \def (csubt_gen_flat g d1 c2 u f H1) in (let H2 \def H_x in (ex2_ind C -(\lambda (e2: C).(eq C c2 (CHead e2 (Flat f) u))) (\lambda (e2: C).(csubt g -d1 e2)) (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop O O -c2 (CHead d2 (Flat f) u)))) (\lambda (x: C).(\lambda (H3: (eq C c2 (CHead x -(Flat f) u))).(\lambda (H4: (csubt g d1 x)).(eq_ind_r C (CHead x (Flat f) u) -(\lambda (c: C).(ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop O O c (CHead d2 (Flat f) u))))) (ex_intro2 C (\lambda (d2: C).(csubt -g d1 d2)) (\lambda (d2: C).(drop O O (CHead x (Flat f) u) (CHead d2 (Flat f) -u))) x H4 (drop_refl (CHead x (Flat f) u))) c2 H3)))) H2)))))))))) (\lambda -(n0: nat).(\lambda (H: ((\forall (c1: C).(\forall (c2: C).((csubt g c1 c2) -\to (\forall (d1: C).(\forall (u: T).((drop n0 O c1 (CHead d1 (Flat f) u)) -\to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c2 -(CHead d2 (Flat f) u)))))))))))).(\lambda (c1: C).(\lambda (c2: C).(\lambda -(H0: (csubt g c1 c2)).(csubt_ind g (\lambda (c: C).(\lambda (c0: C).(\forall -(d1: C).(\forall (u: T).((drop (S n0) O c (CHead d1 (Flat f) u)) \to (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O c0 (CHead -d2 (Flat f) u))))))))) (\lambda (n1: nat).(\lambda (d1: C).(\lambda (u: -T).(\lambda (H1: (drop (S n0) O (CSort n1) (CHead d1 (Flat f) u))).(and3_ind -(eq C (CHead d1 (Flat f) u) (CSort n1)) (eq nat (S n0) O) (eq nat O O) (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CSort n1) -(CHead d2 (Flat f) u)))) (\lambda (_: (eq C (CHead d1 (Flat f) u) (CSort -n1))).(\lambda (H3: (eq nat (S n0) O)).(\lambda (_: (eq nat O O)).(let H5 -\def (eq_ind nat (S n0) (\lambda (ee: nat).(match ee in nat return (\lambda -(_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) I O H3) -in (False_ind (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop -(S n0) O (CSort n1) (CHead d2 (Flat f) u)))) H5))))) (drop_gen_sort n1 (S n0) -O (CHead d1 (Flat f) u) H1)))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda -(H1: (csubt g c0 c3)).(\lambda (H2: ((\forall (d1: C).(\forall (u: T).((drop -(S n0) O c0 (CHead d1 (Flat f) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Flat f) -u))))))))).(\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (u: T).(\forall -(d1: C).(\forall (u0: T).((drop (S n0) O (CHead c0 k0 u) (CHead d1 (Flat f) -u0)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S -n0) O (CHead c3 k0 u) (CHead d2 (Flat f) u0))))))))) (\lambda (b: B).(\lambda +u)))))))))))).(\lambda (c1: C).(\lambda (c2: C).(\lambda (H0: (csubt g c1 +c2)).(let TMP_45 \def (\lambda (c: C).(\lambda (c0: C).(\forall (d1: +C).(\forall (u: T).((drop (S n0) O c (CHead d1 (Flat f) u)) \to (let TMP_40 +\def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_44 \def (\lambda (d2: +C).(let TMP_41 \def (S n0) in (let TMP_42 \def (Flat f) in (let TMP_43 \def +(CHead d2 TMP_42 u) in (drop TMP_41 O c0 TMP_43))))) in (ex2 C TMP_40 +TMP_44)))))))) in (let TMP_74 \def (\lambda (n1: nat).(\lambda (d1: +C).(\lambda (u: T).(\lambda (H1: (drop (S n0) O (CSort n1) (CHead d1 (Flat f) +u))).(let TMP_46 \def (Flat f) in (let TMP_47 \def (CHead d1 TMP_46 u) in +(let TMP_48 \def (CSort n1) in (let TMP_49 \def (eq C TMP_47 TMP_48) in (let +TMP_50 \def (S n0) in (let TMP_51 \def (eq nat TMP_50 O) in (let TMP_52 \def +(eq nat O O) in (let TMP_53 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_58 \def (\lambda (d2: C).(let TMP_54 \def (S n0) in (let TMP_55 \def +(CSort n1) in (let TMP_56 \def (Flat f) in (let TMP_57 \def (CHead d2 TMP_56 +u) in (drop TMP_54 O TMP_55 TMP_57)))))) in (let TMP_59 \def (ex2 C TMP_53 +TMP_58) in (let TMP_69 \def (\lambda (_: (eq C (CHead d1 (Flat f) u) (CSort +n1))).(\lambda (H3: (eq nat (S n0) O)).(\lambda (_: (eq nat O O)).(let TMP_60 +\def (S n0) in (let TMP_61 \def (\lambda (ee: nat).(match ee with [O +\Rightarrow False | (S _) \Rightarrow True])) in (let H5 \def (eq_ind nat +TMP_60 TMP_61 I O H3) in (let TMP_62 \def (\lambda (d2: C).(csubt g d1 d2)) +in (let TMP_67 \def (\lambda (d2: C).(let TMP_63 \def (S n0) in (let TMP_64 +\def (CSort n1) in (let TMP_65 \def (Flat f) in (let TMP_66 \def (CHead d2 +TMP_65 u) in (drop TMP_63 O TMP_64 TMP_66)))))) in (let TMP_68 \def (ex2 C +TMP_62 TMP_67) in (False_ind TMP_68 H5)))))))))) in (let TMP_70 \def (S n0) +in (let TMP_71 \def (Flat f) in (let TMP_72 \def (CHead d1 TMP_71 u) in (let +TMP_73 \def (drop_gen_sort n1 TMP_70 O TMP_72 H1) in (and3_ind TMP_49 TMP_51 +TMP_52 TMP_59 TMP_69 TMP_73)))))))))))))))))))) in (let TMP_143 \def (\lambda +(c0: C).(\lambda (c3: C).(\lambda (H1: (csubt g c0 c3)).(\lambda (H2: +((\forall (d1: C).(\forall (u: T).((drop (S n0) O c0 (CHead d1 (Flat f) u)) +\to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O +c3 (CHead d2 (Flat f) u))))))))).(\lambda (k: K).(let TMP_81 \def (\lambda +(k0: K).(\forall (u: T).(\forall (d1: C).(\forall (u0: T).((drop (S n0) O +(CHead c0 k0 u) (CHead d1 (Flat f) u0)) \to (let TMP_75 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_80 \def (\lambda (d2: C).(let TMP_76 \def (S +n0) in (let TMP_77 \def (CHead c3 k0 u) in (let TMP_78 \def (Flat f) in (let +TMP_79 \def (CHead d2 TMP_78 u0) in (drop TMP_76 O TMP_77 TMP_79)))))) in +(ex2 C TMP_75 TMP_80)))))))) in (let TMP_111 \def (\lambda (b: B).(\lambda (u: T).(\lambda (d1: C).(\lambda (u0: T).(\lambda (H3: (drop (S n0) O (CHead -c0 (Bind b) u) (CHead d1 (Flat f) u0))).(ex2_ind C (\lambda (d2: C).(csubt g -d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Flat f) u0))) (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 -(Bind b) u) (CHead d2 (Flat f) u0)))) (\lambda (x: C).(\lambda (H4: (csubt g -d1 x)).(\lambda (H5: (drop n0 O c3 (CHead x (Flat f) u0))).(ex_intro2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 -(Bind b) u) (CHead d2 (Flat f) u0))) x H4 (drop_drop (Bind b) n0 c3 (CHead x -(Flat f) u0) H5 u))))) (H c0 c3 H1 d1 u0 (drop_gen_drop (Bind b) c0 (CHead d1 -(Flat f) u0) u n0 H3)))))))) (\lambda (f0: F).(\lambda (u: T).(\lambda (d1: -C).(\lambda (u0: T).(\lambda (H3: (drop (S n0) O (CHead c0 (Flat f0) u) -(CHead d1 (Flat f) u0))).(ex2_ind C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Flat f) u0))) (ex2 C (\lambda -(d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Flat f0) -u) (CHead d2 (Flat f) u0)))) (\lambda (x: C).(\lambda (H4: (csubt g d1 -x)).(\lambda (H5: (drop (S n0) O c3 (CHead x (Flat f) u0))).(ex_intro2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 -(Flat f0) u) (CHead d2 (Flat f) u0))) x H4 (drop_drop (Flat f0) n0 c3 (CHead -x (Flat f) u0) H5 u))))) (H2 d1 u0 (drop_gen_drop (Flat f0) c0 (CHead d1 -(Flat f) u0) u n0 H3)))))))) k)))))) (\lambda (c0: C).(\lambda (c3: -C).(\lambda (H1: (csubt g c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (u: -T).((drop (S n0) O c0 (CHead d1 (Flat f) u)) \to (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Flat f) -u))))))))).(\lambda (b: B).(\lambda (_: (not (eq B b Void))).(\lambda (u1: -T).(\lambda (u2: T).(\lambda (d1: C).(\lambda (u: T).(\lambda (H4: (drop (S -n0) O (CHead c0 (Bind Void) u1) (CHead d1 (Flat f) u))).(ex2_ind C (\lambda -(d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Flat f) -u))) (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O -(CHead c3 (Bind b) u2) (CHead d2 (Flat f) u)))) (\lambda (x: C).(\lambda (H5: -(csubt g d1 x)).(\lambda (H6: (drop n0 O c3 (CHead x (Flat f) u))).(ex_intro2 -C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 -(Bind b) u2) (CHead d2 (Flat f) u))) x H5 (drop_drop (Bind b) n0 c3 (CHead x -(Flat f) u) H6 u2))))) (H c0 c3 H1 d1 u (drop_gen_drop (Bind Void) c0 (CHead -d1 (Flat f) u) u1 n0 H4)))))))))))))) (\lambda (c0: C).(\lambda (c3: -C).(\lambda (H1: (csubt g c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (u: -T).((drop (S n0) O c0 (CHead d1 (Flat f) u)) \to (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Flat f) -u))))))))).(\lambda (u: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u -t)).(\lambda (_: (ty3 g c3 u t)).(\lambda (d1: C).(\lambda (u0: T).(\lambda -(H5: (drop (S n0) O (CHead c0 (Bind Abst) t) (CHead d1 (Flat f) -u0))).(ex2_ind C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 -O c3 (CHead d2 (Flat f) u0))) (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Flat f) -u0)))) (\lambda (x: C).(\lambda (H6: (csubt g d1 x)).(\lambda (H7: (drop n0 O -c3 (CHead x (Flat f) u0))).(ex_intro2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Flat f) -u0))) x H6 (drop_drop (Bind Abbr) n0 c3 (CHead x (Flat f) u0) H7 u))))) (H c0 -c3 H1 d1 u0 (drop_gen_drop (Bind Abst) c0 (CHead d1 (Flat f) u0) t n0 -H5)))))))))))))) c1 c2 H0)))))) n))). -(* COMMENTS -Initial nodes: 2090 -END *) +c0 (Bind b) u) (CHead d1 (Flat f) u0))).(let TMP_82 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_85 \def (\lambda (d2: C).(let TMP_83 \def +(Flat f) in (let TMP_84 \def (CHead d2 TMP_83 u0) in (drop n0 O c3 TMP_84)))) +in (let TMP_86 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_92 \def +(\lambda (d2: C).(let TMP_87 \def (S n0) in (let TMP_88 \def (Bind b) in (let +TMP_89 \def (CHead c3 TMP_88 u) in (let TMP_90 \def (Flat f) in (let TMP_91 +\def (CHead d2 TMP_90 u0) in (drop TMP_87 O TMP_89 TMP_91))))))) in (let +TMP_93 \def (ex2 C TMP_86 TMP_92) in (let TMP_105 \def (\lambda (x: +C).(\lambda (H4: (csubt g d1 x)).(\lambda (H5: (drop n0 O c3 (CHead x (Flat +f) u0))).(let TMP_94 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_100 +\def (\lambda (d2: C).(let TMP_95 \def (S n0) in (let TMP_96 \def (Bind b) in +(let TMP_97 \def (CHead c3 TMP_96 u) in (let TMP_98 \def (Flat f) in (let +TMP_99 \def (CHead d2 TMP_98 u0) in (drop TMP_95 O TMP_97 TMP_99))))))) in +(let TMP_101 \def (Bind b) in (let TMP_102 \def (Flat f) in (let TMP_103 \def +(CHead x TMP_102 u0) in (let TMP_104 \def (drop_drop TMP_101 n0 c3 TMP_103 H5 +u) in (ex_intro2 C TMP_94 TMP_100 x H4 TMP_104)))))))))) in (let TMP_106 \def +(Bind b) in (let TMP_107 \def (Flat f) in (let TMP_108 \def (CHead d1 TMP_107 +u0) in (let TMP_109 \def (drop_gen_drop TMP_106 c0 TMP_108 u n0 H3) in (let +TMP_110 \def (H c0 c3 H1 d1 u0 TMP_109) in (ex2_ind C TMP_82 TMP_85 TMP_93 +TMP_105 TMP_110))))))))))))))))) in (let TMP_142 \def (\lambda (f0: +F).(\lambda (u: T).(\lambda (d1: C).(\lambda (u0: T).(\lambda (H3: (drop (S +n0) O (CHead c0 (Flat f0) u) (CHead d1 (Flat f) u0))).(let TMP_112 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_116 \def (\lambda (d2: C).(let +TMP_113 \def (S n0) in (let TMP_114 \def (Flat f) in (let TMP_115 \def (CHead +d2 TMP_114 u0) in (drop TMP_113 O c3 TMP_115))))) in (let TMP_117 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_123 \def (\lambda (d2: C).(let +TMP_118 \def (S n0) in (let TMP_119 \def (Flat f0) in (let TMP_120 \def +(CHead c3 TMP_119 u) in (let TMP_121 \def (Flat f) in (let TMP_122 \def +(CHead d2 TMP_121 u0) in (drop TMP_118 O TMP_120 TMP_122))))))) in (let +TMP_124 \def (ex2 C TMP_117 TMP_123) in (let TMP_136 \def (\lambda (x: +C).(\lambda (H4: (csubt g d1 x)).(\lambda (H5: (drop (S n0) O c3 (CHead x +(Flat f) u0))).(let TMP_125 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_131 \def (\lambda (d2: C).(let TMP_126 \def (S n0) in (let TMP_127 \def +(Flat f0) in (let TMP_128 \def (CHead c3 TMP_127 u) in (let TMP_129 \def +(Flat f) in (let TMP_130 \def (CHead d2 TMP_129 u0) in (drop TMP_126 O +TMP_128 TMP_130))))))) in (let TMP_132 \def (Flat f0) in (let TMP_133 \def +(Flat f) in (let TMP_134 \def (CHead x TMP_133 u0) in (let TMP_135 \def +(drop_drop TMP_132 n0 c3 TMP_134 H5 u) in (ex_intro2 C TMP_125 TMP_131 x H4 +TMP_135)))))))))) in (let TMP_137 \def (Flat f0) in (let TMP_138 \def (Flat +f) in (let TMP_139 \def (CHead d1 TMP_138 u0) in (let TMP_140 \def +(drop_gen_drop TMP_137 c0 TMP_139 u n0 H3) in (let TMP_141 \def (H2 d1 u0 +TMP_140) in (ex2_ind C TMP_112 TMP_116 TMP_124 TMP_136 +TMP_141))))))))))))))))) in (K_ind TMP_81 TMP_111 TMP_142 k))))))))) in (let +TMP_173 \def (\lambda (c0: C).(\lambda (c3: C).(\lambda (H1: (csubt g c0 +c3)).(\lambda (_: ((\forall (d1: C).(\forall (u: T).((drop (S n0) O c0 (CHead +d1 (Flat f) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: +C).(drop (S n0) O c3 (CHead d2 (Flat f) u))))))))).(\lambda (b: B).(\lambda +(_: (not (eq B b Void))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (d1: +C).(\lambda (u: T).(\lambda (H4: (drop (S n0) O (CHead c0 (Bind Void) u1) +(CHead d1 (Flat f) u))).(let TMP_144 \def (\lambda (d2: C).(csubt g d1 d2)) +in (let TMP_147 \def (\lambda (d2: C).(let TMP_145 \def (Flat f) in (let +TMP_146 \def (CHead d2 TMP_145 u) in (drop n0 O c3 TMP_146)))) in (let +TMP_148 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_154 \def (\lambda +(d2: C).(let TMP_149 \def (S n0) in (let TMP_150 \def (Bind b) in (let +TMP_151 \def (CHead c3 TMP_150 u2) in (let TMP_152 \def (Flat f) in (let +TMP_153 \def (CHead d2 TMP_152 u) in (drop TMP_149 O TMP_151 TMP_153))))))) +in (let TMP_155 \def (ex2 C TMP_148 TMP_154) in (let TMP_167 \def (\lambda +(x: C).(\lambda (H5: (csubt g d1 x)).(\lambda (H6: (drop n0 O c3 (CHead x +(Flat f) u))).(let TMP_156 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_162 \def (\lambda (d2: C).(let TMP_157 \def (S n0) in (let TMP_158 \def +(Bind b) in (let TMP_159 \def (CHead c3 TMP_158 u2) in (let TMP_160 \def +(Flat f) in (let TMP_161 \def (CHead d2 TMP_160 u) in (drop TMP_157 O TMP_159 +TMP_161))))))) in (let TMP_163 \def (Bind b) in (let TMP_164 \def (Flat f) in +(let TMP_165 \def (CHead x TMP_164 u) in (let TMP_166 \def (drop_drop TMP_163 +n0 c3 TMP_165 H6 u2) in (ex_intro2 C TMP_156 TMP_162 x H5 TMP_166)))))))))) +in (let TMP_168 \def (Bind Void) in (let TMP_169 \def (Flat f) in (let +TMP_170 \def (CHead d1 TMP_169 u) in (let TMP_171 \def (drop_gen_drop TMP_168 +c0 TMP_170 u1 n0 H4) in (let TMP_172 \def (H c0 c3 H1 d1 u TMP_171) in +(ex2_ind C TMP_144 TMP_147 TMP_155 TMP_167 TMP_172))))))))))))))))))))))) in +(let TMP_203 \def (\lambda (c0: C).(\lambda (c3: C).(\lambda (H1: (csubt g c0 +c3)).(\lambda (_: ((\forall (d1: C).(\forall (u: T).((drop (S n0) O c0 (CHead +d1 (Flat f) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: +C).(drop (S n0) O c3 (CHead d2 (Flat f) u))))))))).(\lambda (u: T).(\lambda +(t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (_: (ty3 g c3 u t)).(\lambda +(d1: C).(\lambda (u0: T).(\lambda (H5: (drop (S n0) O (CHead c0 (Bind Abst) +t) (CHead d1 (Flat f) u0))).(let TMP_174 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_177 \def (\lambda (d2: C).(let TMP_175 \def (Flat f) in (let +TMP_176 \def (CHead d2 TMP_175 u0) in (drop n0 O c3 TMP_176)))) in (let +TMP_178 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_184 \def (\lambda +(d2: C).(let TMP_179 \def (S n0) in (let TMP_180 \def (Bind Abbr) in (let +TMP_181 \def (CHead c3 TMP_180 u) in (let TMP_182 \def (Flat f) in (let +TMP_183 \def (CHead d2 TMP_182 u0) in (drop TMP_179 O TMP_181 TMP_183))))))) +in (let TMP_185 \def (ex2 C TMP_178 TMP_184) in (let TMP_197 \def (\lambda +(x: C).(\lambda (H6: (csubt g d1 x)).(\lambda (H7: (drop n0 O c3 (CHead x +(Flat f) u0))).(let TMP_186 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_192 \def (\lambda (d2: C).(let TMP_187 \def (S n0) in (let TMP_188 \def +(Bind Abbr) in (let TMP_189 \def (CHead c3 TMP_188 u) in (let TMP_190 \def +(Flat f) in (let TMP_191 \def (CHead d2 TMP_190 u0) in (drop TMP_187 O +TMP_189 TMP_191))))))) in (let TMP_193 \def (Bind Abbr) in (let TMP_194 \def +(Flat f) in (let TMP_195 \def (CHead x TMP_194 u0) in (let TMP_196 \def +(drop_drop TMP_193 n0 c3 TMP_195 H7 u) in (ex_intro2 C TMP_186 TMP_192 x H6 +TMP_196)))))))))) in (let TMP_198 \def (Bind Abst) in (let TMP_199 \def (Flat +f) in (let TMP_200 \def (CHead d1 TMP_199 u0) in (let TMP_201 \def +(drop_gen_drop TMP_198 c0 TMP_200 t n0 H5) in (let TMP_202 \def (H c0 c3 H1 +d1 u0 TMP_201) in (ex2_ind C TMP_174 TMP_177 TMP_185 TMP_197 +TMP_202))))))))))))))))))))))) in (csubt_ind g TMP_45 TMP_74 TMP_143 TMP_173 +TMP_203 c1 c2 H0))))))))))) in (nat_ind TMP_5 TMP_39 TMP_204 n)))))). theorem csubt_drop_abbr: \forall (g: G).(\forall (n: nat).(\forall (c1: C).(\forall (c2: C).((csubt g @@ -125,102 +201,178 @@ c1 c2) \to (\forall (d1: C).(\forall (u: T).((drop n O c1 (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n O c2 (CHead d2 (Bind Abbr) u))))))))))) \def - \lambda (g: G).(\lambda (n: nat).(nat_ind (\lambda (n0: nat).(\forall (c1: -C).(\forall (c2: C).((csubt g c1 c2) \to (\forall (d1: C).(\forall (u: -T).((drop n0 O c1 (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c2 (CHead d2 (Bind Abbr) -u))))))))))) (\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (csubt g c1 -c2)).(\lambda (d1: C).(\lambda (u: T).(\lambda (H0: (drop O O c1 (CHead d1 -(Bind Abbr) u))).(let H1 \def (eq_ind C c1 (\lambda (c: C).(csubt g c c2)) H -(CHead d1 (Bind Abbr) u) (drop_gen_refl c1 (CHead d1 (Bind Abbr) u) H0)) in -(let H2 \def (csubt_gen_abbr g d1 c2 u H1) in (ex2_ind C (\lambda (e2: C).(eq -C c2 (CHead e2 (Bind Abbr) u))) (\lambda (e2: C).(csubt g d1 e2)) (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead d2 -(Bind Abbr) u)))) (\lambda (x: C).(\lambda (H3: (eq C c2 (CHead x (Bind Abbr) -u))).(\lambda (H4: (csubt g d1 x)).(eq_ind_r C (CHead x (Bind Abbr) u) -(\lambda (c: C).(ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop O O c (CHead d2 (Bind Abbr) u))))) (ex_intro2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop O O (CHead x (Bind Abbr) u) (CHead -d2 (Bind Abbr) u))) x H4 (drop_refl (CHead x (Bind Abbr) u))) c2 H3)))) -H2))))))))) (\lambda (n0: nat).(\lambda (H: ((\forall (c1: C).(\forall (c2: -C).((csubt g c1 c2) \to (\forall (d1: C).(\forall (u: T).((drop n0 O c1 -(CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(drop n0 O c2 (CHead d2 (Bind Abbr) u)))))))))))).(\lambda -(c1: C).(\lambda (c2: C).(\lambda (H0: (csubt g c1 c2)).(csubt_ind g (\lambda -(c: C).(\lambda (c0: C).(\forall (d1: C).(\forall (u: T).((drop (S n0) O c -(CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(drop (S n0) O c0 (CHead d2 (Bind Abbr) u))))))))) (\lambda -(n1: nat).(\lambda (d1: C).(\lambda (u: T).(\lambda (H1: (drop (S n0) O -(CSort n1) (CHead d1 (Bind Abbr) u))).(and3_ind (eq C (CHead d1 (Bind Abbr) -u) (CSort n1)) (eq nat (S n0) O) (eq nat O O) (ex2 C (\lambda (d2: C).(csubt -g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abbr) -u)))) (\lambda (_: (eq C (CHead d1 (Bind Abbr) u) (CSort n1))).(\lambda (H3: -(eq nat (S n0) O)).(\lambda (_: (eq nat O O)).(let H5 \def (eq_ind nat (S n0) -(\lambda (ee: nat).(match ee in nat return (\lambda (_: nat).Prop) with [O -\Rightarrow False | (S _) \Rightarrow True])) I O H3) in (False_ind (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CSort n1) -(CHead d2 (Bind Abbr) u)))) H5))))) (drop_gen_sort n1 (S n0) O (CHead d1 -(Bind Abbr) u) H1)))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda (H1: -(csubt g c0 c3)).(\lambda (H2: ((\forall (d1: C).(\forall (u: T).((drop (S -n0) O c0 (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abbr) -u))))))))).(\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (u: T).(\forall -(d1: C).(\forall (u0: T).((drop (S n0) O (CHead c0 k0 u) (CHead d1 (Bind -Abbr) u0)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop (S n0) O (CHead c3 k0 u) (CHead d2 (Bind Abbr) u0))))))))) (\lambda -(b: B).(\lambda (u: T).(\lambda (d1: C).(\lambda (u0: T).(\lambda (H3: (drop -(S n0) O (CHead c0 (Bind b) u) (CHead d1 (Bind Abbr) u0))).(ex2_ind C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 -(Bind Abbr) u0))) (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind Abbr) u0)))) (\lambda -(x: C).(\lambda (H4: (csubt g d1 x)).(\lambda (H5: (drop n0 O c3 (CHead x -(Bind Abbr) u0))).(ex_intro2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda -(d2: C).(drop (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind Abbr) u0))) x H4 -(drop_drop (Bind b) n0 c3 (CHead x (Bind Abbr) u0) H5 u))))) (H c0 c3 H1 d1 -u0 (drop_gen_drop (Bind b) c0 (CHead d1 (Bind Abbr) u0) u n0 H3)))))))) -(\lambda (f: F).(\lambda (u: T).(\lambda (d1: C).(\lambda (u0: T).(\lambda -(H3: (drop (S n0) O (CHead c0 (Flat f) u) (CHead d1 (Bind Abbr) -u0))).(ex2_ind C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S -n0) O c3 (CHead d2 (Bind Abbr) u0))) (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind Abbr) -u0)))) (\lambda (x: C).(\lambda (H4: (csubt g d1 x)).(\lambda (H5: (drop (S -n0) O c3 (CHead x (Bind Abbr) u0))).(ex_intro2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind -Abbr) u0))) x H4 (drop_drop (Flat f) n0 c3 (CHead x (Bind Abbr) u0) H5 u))))) -(H2 d1 u0 (drop_gen_drop (Flat f) c0 (CHead d1 (Bind Abbr) u0) u n0 -H3)))))))) k)))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda (H1: (csubt g -c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (u: T).((drop (S n0) O c0 + \lambda (g: G).(\lambda (n: nat).(let TMP_5 \def (\lambda (n0: nat).(\forall +(c1: C).(\forall (c2: C).((csubt g c1 c2) \to (\forall (d1: C).(\forall (u: +T).((drop n0 O c1 (CHead d1 (Bind Abbr) u)) \to (let TMP_1 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_4 \def (\lambda (d2: C).(let TMP_2 \def (Bind +Abbr) in (let TMP_3 \def (CHead d2 TMP_2 u) in (drop n0 O c2 TMP_3)))) in +(ex2 C TMP_1 TMP_4)))))))))) in (let TMP_39 \def (\lambda (c1: C).(\lambda +(c2: C).(\lambda (H: (csubt g c1 c2)).(\lambda (d1: C).(\lambda (u: +T).(\lambda (H0: (drop O O c1 (CHead d1 (Bind Abbr) u))).(let TMP_6 \def +(\lambda (c: C).(csubt g c c2)) in (let TMP_7 \def (Bind Abbr) in (let TMP_8 +\def (CHead d1 TMP_7 u) in (let TMP_9 \def (Bind Abbr) in (let TMP_10 \def +(CHead d1 TMP_9 u) in (let TMP_11 \def (drop_gen_refl c1 TMP_10 H0) in (let +H1 \def (eq_ind C c1 TMP_6 H TMP_8 TMP_11) in (let H2 \def (csubt_gen_abbr g +d1 c2 u H1) in (let TMP_14 \def (\lambda (e2: C).(let TMP_12 \def (Bind Abbr) +in (let TMP_13 \def (CHead e2 TMP_12 u) in (eq C c2 TMP_13)))) in (let TMP_15 +\def (\lambda (e2: C).(csubt g d1 e2)) in (let TMP_16 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_19 \def (\lambda (d2: C).(let TMP_17 \def +(Bind Abbr) in (let TMP_18 \def (CHead d2 TMP_17 u) in (drop O O c2 +TMP_18)))) in (let TMP_20 \def (ex2 C TMP_16 TMP_19) in (let TMP_38 \def +(\lambda (x: C).(\lambda (H3: (eq C c2 (CHead x (Bind Abbr) u))).(\lambda +(H4: (csubt g d1 x)).(let TMP_21 \def (Bind Abbr) in (let TMP_22 \def (CHead +x TMP_21 u) in (let TMP_27 \def (\lambda (c: C).(let TMP_23 \def (\lambda +(d2: C).(csubt g d1 d2)) in (let TMP_26 \def (\lambda (d2: C).(let TMP_24 +\def (Bind Abbr) in (let TMP_25 \def (CHead d2 TMP_24 u) in (drop O O c +TMP_25)))) in (ex2 C TMP_23 TMP_26)))) in (let TMP_28 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_33 \def (\lambda (d2: C).(let TMP_29 \def +(Bind Abbr) in (let TMP_30 \def (CHead x TMP_29 u) in (let TMP_31 \def (Bind +Abbr) in (let TMP_32 \def (CHead d2 TMP_31 u) in (drop O O TMP_30 +TMP_32)))))) in (let TMP_34 \def (Bind Abbr) in (let TMP_35 \def (CHead x +TMP_34 u) in (let TMP_36 \def (drop_refl TMP_35) in (let TMP_37 \def +(ex_intro2 C TMP_28 TMP_33 x H4 TMP_36) in (eq_ind_r C TMP_22 TMP_27 TMP_37 +c2 H3))))))))))))) in (ex2_ind C TMP_14 TMP_15 TMP_20 TMP_38 +H2))))))))))))))))))))) in (let TMP_204 \def (\lambda (n0: nat).(\lambda (H: +((\forall (c1: C).(\forall (c2: C).((csubt g c1 c2) \to (\forall (d1: +C).(\forall (u: T).((drop n0 O c1 (CHead d1 (Bind Abbr) u)) \to (ex2 C +(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c2 (CHead d2 +(Bind Abbr) u)))))))))))).(\lambda (c1: C).(\lambda (c2: C).(\lambda (H0: +(csubt g c1 c2)).(let TMP_45 \def (\lambda (c: C).(\lambda (c0: C).(\forall +(d1: C).(\forall (u: T).((drop (S n0) O c (CHead d1 (Bind Abbr) u)) \to (let +TMP_40 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_44 \def (\lambda +(d2: C).(let TMP_41 \def (S n0) in (let TMP_42 \def (Bind Abbr) in (let +TMP_43 \def (CHead d2 TMP_42 u) in (drop TMP_41 O c0 TMP_43))))) in (ex2 C +TMP_40 TMP_44)))))))) in (let TMP_74 \def (\lambda (n1: nat).(\lambda (d1: +C).(\lambda (u: T).(\lambda (H1: (drop (S n0) O (CSort n1) (CHead d1 (Bind +Abbr) u))).(let TMP_46 \def (Bind Abbr) in (let TMP_47 \def (CHead d1 TMP_46 +u) in (let TMP_48 \def (CSort n1) in (let TMP_49 \def (eq C TMP_47 TMP_48) in +(let TMP_50 \def (S n0) in (let TMP_51 \def (eq nat TMP_50 O) in (let TMP_52 +\def (eq nat O O) in (let TMP_53 \def (\lambda (d2: C).(csubt g d1 d2)) in +(let TMP_58 \def (\lambda (d2: C).(let TMP_54 \def (S n0) in (let TMP_55 \def +(CSort n1) in (let TMP_56 \def (Bind Abbr) in (let TMP_57 \def (CHead d2 +TMP_56 u) in (drop TMP_54 O TMP_55 TMP_57)))))) in (let TMP_59 \def (ex2 C +TMP_53 TMP_58) in (let TMP_69 \def (\lambda (_: (eq C (CHead d1 (Bind Abbr) +u) (CSort n1))).(\lambda (H3: (eq nat (S n0) O)).(\lambda (_: (eq nat O +O)).(let TMP_60 \def (S n0) in (let TMP_61 \def (\lambda (ee: nat).(match ee +with [O \Rightarrow False | (S _) \Rightarrow True])) in (let H5 \def (eq_ind +nat TMP_60 TMP_61 I O H3) in (let TMP_62 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_67 \def (\lambda (d2: C).(let TMP_63 \def (S n0) in (let +TMP_64 \def (CSort n1) in (let TMP_65 \def (Bind Abbr) in (let TMP_66 \def +(CHead d2 TMP_65 u) in (drop TMP_63 O TMP_64 TMP_66)))))) in (let TMP_68 \def +(ex2 C TMP_62 TMP_67) in (False_ind TMP_68 H5)))))))))) in (let TMP_70 \def +(S n0) in (let TMP_71 \def (Bind Abbr) in (let TMP_72 \def (CHead d1 TMP_71 +u) in (let TMP_73 \def (drop_gen_sort n1 TMP_70 O TMP_72 H1) in (and3_ind +TMP_49 TMP_51 TMP_52 TMP_59 TMP_69 TMP_73)))))))))))))))))))) in (let TMP_143 +\def (\lambda (c0: C).(\lambda (c3: C).(\lambda (H1: (csubt g c0 +c3)).(\lambda (H2: ((\forall (d1: C).(\forall (u: T).((drop (S n0) O c0 (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u))))))))).(\lambda -(b: B).(\lambda (_: (not (eq B b Void))).(\lambda (u1: T).(\lambda (u2: +(k: K).(let TMP_81 \def (\lambda (k0: K).(\forall (u: T).(\forall (d1: +C).(\forall (u0: T).((drop (S n0) O (CHead c0 k0 u) (CHead d1 (Bind Abbr) +u0)) \to (let TMP_75 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_80 +\def (\lambda (d2: C).(let TMP_76 \def (S n0) in (let TMP_77 \def (CHead c3 +k0 u) in (let TMP_78 \def (Bind Abbr) in (let TMP_79 \def (CHead d2 TMP_78 +u0) in (drop TMP_76 O TMP_77 TMP_79)))))) in (ex2 C TMP_75 TMP_80)))))))) in +(let TMP_111 \def (\lambda (b: B).(\lambda (u: T).(\lambda (d1: C).(\lambda +(u0: T).(\lambda (H3: (drop (S n0) O (CHead c0 (Bind b) u) (CHead d1 (Bind +Abbr) u0))).(let TMP_82 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_85 +\def (\lambda (d2: C).(let TMP_83 \def (Bind Abbr) in (let TMP_84 \def (CHead +d2 TMP_83 u0) in (drop n0 O c3 TMP_84)))) in (let TMP_86 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_92 \def (\lambda (d2: C).(let TMP_87 \def (S +n0) in (let TMP_88 \def (Bind b) in (let TMP_89 \def (CHead c3 TMP_88 u) in +(let TMP_90 \def (Bind Abbr) in (let TMP_91 \def (CHead d2 TMP_90 u0) in +(drop TMP_87 O TMP_89 TMP_91))))))) in (let TMP_93 \def (ex2 C TMP_86 TMP_92) +in (let TMP_105 \def (\lambda (x: C).(\lambda (H4: (csubt g d1 x)).(\lambda +(H5: (drop n0 O c3 (CHead x (Bind Abbr) u0))).(let TMP_94 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_100 \def (\lambda (d2: C).(let TMP_95 \def (S +n0) in (let TMP_96 \def (Bind b) in (let TMP_97 \def (CHead c3 TMP_96 u) in +(let TMP_98 \def (Bind Abbr) in (let TMP_99 \def (CHead d2 TMP_98 u0) in +(drop TMP_95 O TMP_97 TMP_99))))))) in (let TMP_101 \def (Bind b) in (let +TMP_102 \def (Bind Abbr) in (let TMP_103 \def (CHead x TMP_102 u0) in (let +TMP_104 \def (drop_drop TMP_101 n0 c3 TMP_103 H5 u) in (ex_intro2 C TMP_94 +TMP_100 x H4 TMP_104)))))))))) in (let TMP_106 \def (Bind b) in (let TMP_107 +\def (Bind Abbr) in (let TMP_108 \def (CHead d1 TMP_107 u0) in (let TMP_109 +\def (drop_gen_drop TMP_106 c0 TMP_108 u n0 H3) in (let TMP_110 \def (H c0 c3 +H1 d1 u0 TMP_109) in (ex2_ind C TMP_82 TMP_85 TMP_93 TMP_105 +TMP_110))))))))))))))))) in (let TMP_142 \def (\lambda (f: F).(\lambda (u: +T).(\lambda (d1: C).(\lambda (u0: T).(\lambda (H3: (drop (S n0) O (CHead c0 +(Flat f) u) (CHead d1 (Bind Abbr) u0))).(let TMP_112 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_116 \def (\lambda (d2: C).(let TMP_113 \def +(S n0) in (let TMP_114 \def (Bind Abbr) in (let TMP_115 \def (CHead d2 +TMP_114 u0) in (drop TMP_113 O c3 TMP_115))))) in (let TMP_117 \def (\lambda +(d2: C).(csubt g d1 d2)) in (let TMP_123 \def (\lambda (d2: C).(let TMP_118 +\def (S n0) in (let TMP_119 \def (Flat f) in (let TMP_120 \def (CHead c3 +TMP_119 u) in (let TMP_121 \def (Bind Abbr) in (let TMP_122 \def (CHead d2 +TMP_121 u0) in (drop TMP_118 O TMP_120 TMP_122))))))) in (let TMP_124 \def +(ex2 C TMP_117 TMP_123) in (let TMP_136 \def (\lambda (x: C).(\lambda (H4: +(csubt g d1 x)).(\lambda (H5: (drop (S n0) O c3 (CHead x (Bind Abbr) +u0))).(let TMP_125 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_131 +\def (\lambda (d2: C).(let TMP_126 \def (S n0) in (let TMP_127 \def (Flat f) +in (let TMP_128 \def (CHead c3 TMP_127 u) in (let TMP_129 \def (Bind Abbr) in +(let TMP_130 \def (CHead d2 TMP_129 u0) in (drop TMP_126 O TMP_128 +TMP_130))))))) in (let TMP_132 \def (Flat f) in (let TMP_133 \def (Bind Abbr) +in (let TMP_134 \def (CHead x TMP_133 u0) in (let TMP_135 \def (drop_drop +TMP_132 n0 c3 TMP_134 H5 u) in (ex_intro2 C TMP_125 TMP_131 x H4 +TMP_135)))))))))) in (let TMP_137 \def (Flat f) in (let TMP_138 \def (Bind +Abbr) in (let TMP_139 \def (CHead d1 TMP_138 u0) in (let TMP_140 \def +(drop_gen_drop TMP_137 c0 TMP_139 u n0 H3) in (let TMP_141 \def (H2 d1 u0 +TMP_140) in (ex2_ind C TMP_112 TMP_116 TMP_124 TMP_136 +TMP_141))))))))))))))))) in (K_ind TMP_81 TMP_111 TMP_142 k))))))))) in (let +TMP_173 \def (\lambda (c0: C).(\lambda (c3: C).(\lambda (H1: (csubt g c0 +c3)).(\lambda (_: ((\forall (d1: C).(\forall (u: T).((drop (S n0) O c0 (CHead +d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: +C).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u))))))))).(\lambda (b: +B).(\lambda (_: (not (eq B b Void))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (d1: C).(\lambda (u: T).(\lambda (H4: (drop (S n0) O (CHead c0 -(Bind Void) u1) (CHead d1 (Bind Abbr) u))).(ex2_ind C (\lambda (d2: C).(csubt -g d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Bind Abbr) u))) (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 -(Bind b) u2) (CHead d2 (Bind Abbr) u)))) (\lambda (x: C).(\lambda (H5: (csubt -g d1 x)).(\lambda (H6: (drop n0 O c3 (CHead x (Bind Abbr) u))).(ex_intro2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 -(Bind b) u2) (CHead d2 (Bind Abbr) u))) x H5 (drop_drop (Bind b) n0 c3 (CHead -x (Bind Abbr) u) H6 u2))))) (H c0 c3 H1 d1 u (drop_gen_drop (Bind Void) c0 -(CHead d1 (Bind Abbr) u) u1 n0 H4)))))))))))))) (\lambda (c0: C).(\lambda +(Bind Void) u1) (CHead d1 (Bind Abbr) u))).(let TMP_144 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_147 \def (\lambda (d2: C).(let TMP_145 \def +(Bind Abbr) in (let TMP_146 \def (CHead d2 TMP_145 u) in (drop n0 O c3 +TMP_146)))) in (let TMP_148 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_154 \def (\lambda (d2: C).(let TMP_149 \def (S n0) in (let TMP_150 \def +(Bind b) in (let TMP_151 \def (CHead c3 TMP_150 u2) in (let TMP_152 \def +(Bind Abbr) in (let TMP_153 \def (CHead d2 TMP_152 u) in (drop TMP_149 O +TMP_151 TMP_153))))))) in (let TMP_155 \def (ex2 C TMP_148 TMP_154) in (let +TMP_167 \def (\lambda (x: C).(\lambda (H5: (csubt g d1 x)).(\lambda (H6: +(drop n0 O c3 (CHead x (Bind Abbr) u))).(let TMP_156 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_162 \def (\lambda (d2: C).(let TMP_157 \def +(S n0) in (let TMP_158 \def (Bind b) in (let TMP_159 \def (CHead c3 TMP_158 +u2) in (let TMP_160 \def (Bind Abbr) in (let TMP_161 \def (CHead d2 TMP_160 +u) in (drop TMP_157 O TMP_159 TMP_161))))))) in (let TMP_163 \def (Bind b) in +(let TMP_164 \def (Bind Abbr) in (let TMP_165 \def (CHead x TMP_164 u) in +(let TMP_166 \def (drop_drop TMP_163 n0 c3 TMP_165 H6 u2) in (ex_intro2 C +TMP_156 TMP_162 x H5 TMP_166)))))))))) in (let TMP_168 \def (Bind Void) in +(let TMP_169 \def (Bind Abbr) in (let TMP_170 \def (CHead d1 TMP_169 u) in +(let TMP_171 \def (drop_gen_drop TMP_168 c0 TMP_170 u1 n0 H4) in (let TMP_172 +\def (H c0 c3 H1 d1 u TMP_171) in (ex2_ind C TMP_144 TMP_147 TMP_155 TMP_167 +TMP_172))))))))))))))))))))))) in (let TMP_203 \def (\lambda (c0: C).(\lambda (c3: C).(\lambda (H1: (csubt g c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (u: T).((drop (S n0) O c0 (CHead d1 (Bind Abbr) u)) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u))))))))).(\lambda (u: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (_: (ty3 g c3 u t)).(\lambda (d1: C).(\lambda (u0: T).(\lambda (H5: (drop (S n0) O (CHead c0 (Bind Abst) t) (CHead d1 (Bind -Abbr) u0))).(ex2_ind C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop n0 O c3 (CHead d2 (Bind Abbr) u0))) (ex2 C (\lambda (d2: C).(csubt g -d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 -(Bind Abbr) u0)))) (\lambda (x: C).(\lambda (H6: (csubt g d1 x)).(\lambda -(H7: (drop n0 O c3 (CHead x (Bind Abbr) u0))).(ex_intro2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind Abbr) u) -(CHead d2 (Bind Abbr) u0))) x H6 (drop_drop (Bind Abbr) n0 c3 (CHead x (Bind -Abbr) u0) H7 u))))) (H c0 c3 H1 d1 u0 (drop_gen_drop (Bind Abst) c0 (CHead d1 -(Bind Abbr) u0) t n0 H5)))))))))))))) c1 c2 H0)))))) n)). -(* COMMENTS -Initial nodes: 2084 -END *) +Abbr) u0))).(let TMP_174 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_177 \def (\lambda (d2: C).(let TMP_175 \def (Bind Abbr) in (let TMP_176 +\def (CHead d2 TMP_175 u0) in (drop n0 O c3 TMP_176)))) in (let TMP_178 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_184 \def (\lambda (d2: C).(let +TMP_179 \def (S n0) in (let TMP_180 \def (Bind Abbr) in (let TMP_181 \def +(CHead c3 TMP_180 u) in (let TMP_182 \def (Bind Abbr) in (let TMP_183 \def +(CHead d2 TMP_182 u0) in (drop TMP_179 O TMP_181 TMP_183))))))) in (let +TMP_185 \def (ex2 C TMP_178 TMP_184) in (let TMP_197 \def (\lambda (x: +C).(\lambda (H6: (csubt g d1 x)).(\lambda (H7: (drop n0 O c3 (CHead x (Bind +Abbr) u0))).(let TMP_186 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_192 \def (\lambda (d2: C).(let TMP_187 \def (S n0) in (let TMP_188 \def +(Bind Abbr) in (let TMP_189 \def (CHead c3 TMP_188 u) in (let TMP_190 \def +(Bind Abbr) in (let TMP_191 \def (CHead d2 TMP_190 u0) in (drop TMP_187 O +TMP_189 TMP_191))))))) in (let TMP_193 \def (Bind Abbr) in (let TMP_194 \def +(Bind Abbr) in (let TMP_195 \def (CHead x TMP_194 u0) in (let TMP_196 \def +(drop_drop TMP_193 n0 c3 TMP_195 H7 u) in (ex_intro2 C TMP_186 TMP_192 x H6 +TMP_196)))))))))) in (let TMP_198 \def (Bind Abst) in (let TMP_199 \def (Bind +Abbr) in (let TMP_200 \def (CHead d1 TMP_199 u0) in (let TMP_201 \def +(drop_gen_drop TMP_198 c0 TMP_200 t n0 H5) in (let TMP_202 \def (H c0 c3 H1 +d1 u0 TMP_201) in (ex2_ind C TMP_174 TMP_177 TMP_185 TMP_197 +TMP_202))))))))))))))))))))))) in (csubt_ind g TMP_45 TMP_74 TMP_143 TMP_173 +TMP_203 c1 c2 H0))))))))))) in (nat_ind TMP_5 TMP_39 TMP_204 n))))). theorem csubt_drop_abst: \forall (g: G).(\forall (n: nat).(\forall (c1: C).(\forall (c2: C).((csubt g @@ -231,360 +383,700 @@ C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop n O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))))))))))) \def - \lambda (g: G).(\lambda (n: nat).(nat_ind (\lambda (n0: nat).(\forall (c1: -C).(\forall (c2: C).((csubt g c1 c2) \to (\forall (d1: C).(\forall (t: -T).((drop n0 O c1 (CHead d1 (Bind Abst) t)) \to (or (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c2 (CHead d2 (Bind Abst) -t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda -(d2: C).(\lambda (u: T).(drop n0 O c2 (CHead d2 (Bind Abbr) u)))) (\lambda -(_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 -g d2 u t)))))))))))) (\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (csubt g -c1 c2)).(\lambda (d1: C).(\lambda (t: T).(\lambda (H0: (drop O O c1 (CHead d1 -(Bind Abst) t))).(let H1 \def (eq_ind C c1 (\lambda (c: C).(csubt g c c2)) H -(CHead d1 (Bind Abst) t) (drop_gen_refl c1 (CHead d1 (Bind Abst) t) H0)) in -(let H2 \def (csubt_gen_abst g d1 c2 t H1) in (or_ind (ex2 C (\lambda (e2: -C).(eq C c2 (CHead e2 (Bind Abst) t))) (\lambda (e2: C).(csubt g d1 e2))) -(ex4_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind Abbr) -v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g d1 e2))) (\lambda (_: -C).(\lambda (v2: T).(ty3 g d1 v2 t))) (\lambda (e2: C).(\lambda (v2: T).(ty3 -g e2 v2 t)))) (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop O O c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop O -O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u -t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) (\lambda (H3: (ex2 C + \lambda (g: G).(\lambda (n: nat).(let TMP_13 \def (\lambda (n0: +nat).(\forall (c1: C).(\forall (c2: C).((csubt g c1 c2) \to (\forall (d1: +C).(\forall (t: T).((drop n0 O c1 (CHead d1 (Bind Abst) t)) \to (let TMP_1 +\def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_4 \def (\lambda (d2: +C).(let TMP_2 \def (Bind Abst) in (let TMP_3 \def (CHead d2 TMP_2 t) in (drop +n0 O c2 TMP_3)))) in (let TMP_5 \def (ex2 C TMP_1 TMP_4) in (let TMP_6 \def +(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_9 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_7 \def (Bind Abbr) in (let TMP_8 +\def (CHead d2 TMP_7 u) in (drop n0 O c2 TMP_8))))) in (let TMP_10 \def +(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_11 \def (\lambda +(d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_12 \def (ex4_2 C T TMP_6 +TMP_9 TMP_10 TMP_11) in (or TMP_5 TMP_12)))))))))))))))) in (let TMP_171 \def +(\lambda (c1: C).(\lambda (c2: C).(\lambda (H: (csubt g c1 c2)).(\lambda (d1: +C).(\lambda (t: T).(\lambda (H0: (drop O O c1 (CHead d1 (Bind Abst) t))).(let +TMP_14 \def (\lambda (c: C).(csubt g c c2)) in (let TMP_15 \def (Bind Abst) +in (let TMP_16 \def (CHead d1 TMP_15 t) in (let TMP_17 \def (Bind Abst) in +(let TMP_18 \def (CHead d1 TMP_17 t) in (let TMP_19 \def (drop_gen_refl c1 +TMP_18 H0) in (let H1 \def (eq_ind C c1 TMP_14 H TMP_16 TMP_19) in (let H2 +\def (csubt_gen_abst g d1 c2 t H1) in (let TMP_22 \def (\lambda (e2: C).(let +TMP_20 \def (Bind Abst) in (let TMP_21 \def (CHead e2 TMP_20 t) in (eq C c2 +TMP_21)))) in (let TMP_23 \def (\lambda (e2: C).(csubt g d1 e2)) in (let +TMP_24 \def (ex2 C TMP_22 TMP_23) in (let TMP_27 \def (\lambda (e2: +C).(\lambda (v2: T).(let TMP_25 \def (Bind Abbr) in (let TMP_26 \def (CHead +e2 TMP_25 v2) in (eq C c2 TMP_26))))) in (let TMP_28 \def (\lambda (e2: +C).(\lambda (_: T).(csubt g d1 e2))) in (let TMP_29 \def (\lambda (_: +C).(\lambda (v2: T).(ty3 g d1 v2 t))) in (let TMP_30 \def (\lambda (e2: +C).(\lambda (v2: T).(ty3 g e2 v2 t))) in (let TMP_31 \def (ex4_2 C T TMP_27 +TMP_28 TMP_29 TMP_30) in (let TMP_32 \def (\lambda (d2: C).(csubt g d1 d2)) +in (let TMP_35 \def (\lambda (d2: C).(let TMP_33 \def (Bind Abst) in (let +TMP_34 \def (CHead d2 TMP_33 t) in (drop O O c2 TMP_34)))) in (let TMP_36 +\def (ex2 C TMP_32 TMP_35) in (let TMP_37 \def (\lambda (d2: C).(\lambda (_: +T).(csubt g d1 d2))) in (let TMP_40 \def (\lambda (d2: C).(\lambda (u: +T).(let TMP_38 \def (Bind Abbr) in (let TMP_39 \def (CHead d2 TMP_38 u) in +(drop O O c2 TMP_39))))) in (let TMP_41 \def (\lambda (_: C).(\lambda (u: +T).(ty3 g d1 u t))) in (let TMP_42 \def (\lambda (d2: C).(\lambda (u: T).(ty3 +g d2 u t))) in (let TMP_43 \def (ex4_2 C T TMP_37 TMP_40 TMP_41 TMP_42) in +(let TMP_44 \def (or TMP_36 TMP_43) in (let TMP_105 \def (\lambda (H3: (ex2 C (\lambda (e2: C).(eq C c2 (CHead e2 (Bind Abst) t))) (\lambda (e2: C).(csubt -g d1 e2)))).(ex2_ind C (\lambda (e2: C).(eq C c2 (CHead e2 (Bind Abst) t))) -(\lambda (e2: C).(csubt g d1 e2)) (or (ex2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(drop O O c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u: T).(drop O O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) -(\lambda (x: C).(\lambda (H4: (eq C c2 (CHead x (Bind Abst) t))).(\lambda -(H5: (csubt g d1 x)).(eq_ind_r C (CHead x (Bind Abst) t) (\lambda (c: C).(or -(ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop O O c (CHead -d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 -d2))) (\lambda (d2: C).(\lambda (u: T).(drop O O c (CHead d2 (Bind Abbr) -u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: -C).(\lambda (u: T).(ty3 g d2 u t)))))) (or_introl (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop O O (CHead x (Bind Abst) t) (CHead -d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 -d2))) (\lambda (d2: C).(\lambda (u: T).(drop O O (CHead x (Bind Abst) t) -(CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) -(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))) (ex_intro2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop O O (CHead x (Bind Abst) t) (CHead -d2 (Bind Abst) t))) x H5 (drop_refl (CHead x (Bind Abst) t)))) c2 H4)))) H3)) -(\lambda (H3: (ex4_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 -(Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g d1 e2))) -(\lambda (_: C).(\lambda (v2: T).(ty3 g d1 v2 t))) (\lambda (e2: C).(\lambda -(v2: T).(ty3 g e2 v2 t))))).(ex4_2_ind C T (\lambda (e2: C).(\lambda (v2: -T).(eq C c2 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: -T).(csubt g d1 e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g d1 v2 t))) -(\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 t))) (or (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop O O c2 (CHead d2 (Bind Abst) t)))) -(ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: -C).(\lambda (u: T).(drop O O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: -C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g -d2 u t))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H4: (eq C c2 (CHead -x0 (Bind Abbr) x1))).(\lambda (H5: (csubt g d1 x0)).(\lambda (H6: (ty3 g d1 -x1 t)).(\lambda (H7: (ty3 g x0 x1 t)).(eq_ind_r C (CHead x0 (Bind Abbr) x1) -(\lambda (c: C).(or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop O O c (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop O -O c (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u -t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))))) (or_intror (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop O O (CHead x0 (Bind -Abbr) x1) (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda -(_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop O O (CHead x0 -(Bind Abbr) x1) (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))) -(ex4_2_intro C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda -(d2: C).(\lambda (u: T).(drop O O (CHead x0 (Bind Abbr) x1) (CHead d2 (Bind -Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: -C).(\lambda (u: T).(ty3 g d2 u t))) x0 x1 H5 (drop_refl (CHead x0 (Bind Abbr) -x1)) H6 H7)) c2 H4))))))) H3)) H2))))))))) (\lambda (n0: nat).(\lambda (H: -((\forall (c1: C).(\forall (c2: C).((csubt g c1 c2) \to (\forall (d1: -C).(\forall (t: T).((drop n0 O c1 (CHead d1 (Bind Abst) t)) \to (or (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c2 (CHead d2 -(Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 -d2))) (\lambda (d2: C).(\lambda (u: T).(drop n0 O c2 (CHead d2 (Bind Abbr) -u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: -C).(\lambda (u: T).(ty3 g d2 u t))))))))))))).(\lambda (c1: C).(\lambda (c2: -C).(\lambda (H0: (csubt g c1 c2)).(csubt_ind g (\lambda (c: C).(\lambda (c0: -C).(\forall (d1: C).(\forall (t: T).((drop (S n0) O c (CHead d1 (Bind Abst) -t)) \to (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop -(S n0) O c0 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda -(_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O c0 -(CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) -(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))))))))) (\lambda (n1: -nat).(\lambda (d1: C).(\lambda (t: T).(\lambda (H1: (drop (S n0) O (CSort n1) -(CHead d1 (Bind Abst) t))).(and3_ind (eq C (CHead d1 (Bind Abst) t) (CSort -n1)) (eq nat (S n0) O) (eq nat O O) (or (ex2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abst) t)))) -(ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: -C).(\lambda (u: T).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abbr) u)))) -(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda -(u: T).(ty3 g d2 u t))))) (\lambda (_: (eq C (CHead d1 (Bind Abst) t) (CSort -n1))).(\lambda (H3: (eq nat (S n0) O)).(\lambda (_: (eq nat O O)).(let H5 -\def (eq_ind nat (S n0) (\lambda (ee: nat).(match ee in nat return (\lambda -(_: nat).Prop) with [O \Rightarrow False | (S _) \Rightarrow True])) I O H3) -in (False_ind (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda -(d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: -T).(drop (S n0) O (CSort n1) (CHead d2 (Bind Abbr) u)))) (\lambda (_: -C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g -d2 u t))))) H5))))) (drop_gen_sort n1 (S n0) O (CHead d1 (Bind Abst) t) -H1)))))) (\lambda (c0: C).(\lambda (c3: C).(\lambda (H1: (csubt g c0 +g d1 e2)))).(let TMP_47 \def (\lambda (e2: C).(let TMP_45 \def (Bind Abst) in +(let TMP_46 \def (CHead e2 TMP_45 t) in (eq C c2 TMP_46)))) in (let TMP_48 +\def (\lambda (e2: C).(csubt g d1 e2)) in (let TMP_49 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_52 \def (\lambda (d2: C).(let TMP_50 \def +(Bind Abst) in (let TMP_51 \def (CHead d2 TMP_50 t) in (drop O O c2 +TMP_51)))) in (let TMP_53 \def (ex2 C TMP_49 TMP_52) in (let TMP_54 \def +(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_57 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_55 \def (Bind Abbr) in (let TMP_56 +\def (CHead d2 TMP_55 u) in (drop O O c2 TMP_56))))) in (let TMP_58 \def +(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_59 \def (\lambda +(d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_60 \def (ex4_2 C T +TMP_54 TMP_57 TMP_58 TMP_59) in (let TMP_61 \def (or TMP_53 TMP_60) in (let +TMP_104 \def (\lambda (x: C).(\lambda (H4: (eq C c2 (CHead x (Bind Abst) +t))).(\lambda (H5: (csubt g d1 x)).(let TMP_62 \def (Bind Abst) in (let +TMP_63 \def (CHead x TMP_62 t) in (let TMP_76 \def (\lambda (c: C).(let +TMP_64 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_67 \def (\lambda +(d2: C).(let TMP_65 \def (Bind Abst) in (let TMP_66 \def (CHead d2 TMP_65 t) +in (drop O O c TMP_66)))) in (let TMP_68 \def (ex2 C TMP_64 TMP_67) in (let +TMP_69 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_72 +\def (\lambda (d2: C).(\lambda (u: T).(let TMP_70 \def (Bind Abbr) in (let +TMP_71 \def (CHead d2 TMP_70 u) in (drop O O c TMP_71))))) in (let TMP_73 +\def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_74 \def +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_75 \def (ex4_2 +C T TMP_69 TMP_72 TMP_73 TMP_74) in (or TMP_68 TMP_75)))))))))) in (let +TMP_77 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_82 \def (\lambda +(d2: C).(let TMP_78 \def (Bind Abst) in (let TMP_79 \def (CHead x TMP_78 t) +in (let TMP_80 \def (Bind Abst) in (let TMP_81 \def (CHead d2 TMP_80 t) in +(drop O O TMP_79 TMP_81)))))) in (let TMP_83 \def (ex2 C TMP_77 TMP_82) in +(let TMP_84 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_89 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_85 \def (Bind Abst) in +(let TMP_86 \def (CHead x TMP_85 t) in (let TMP_87 \def (Bind Abbr) in (let +TMP_88 \def (CHead d2 TMP_87 u) in (drop O O TMP_86 TMP_88))))))) in (let +TMP_90 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_91 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_92 \def +(ex4_2 C T TMP_84 TMP_89 TMP_90 TMP_91) in (let TMP_93 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_98 \def (\lambda (d2: C).(let TMP_94 \def +(Bind Abst) in (let TMP_95 \def (CHead x TMP_94 t) in (let TMP_96 \def (Bind +Abst) in (let TMP_97 \def (CHead d2 TMP_96 t) in (drop O O TMP_95 +TMP_97)))))) in (let TMP_99 \def (Bind Abst) in (let TMP_100 \def (CHead x +TMP_99 t) in (let TMP_101 \def (drop_refl TMP_100) in (let TMP_102 \def +(ex_intro2 C TMP_93 TMP_98 x H5 TMP_101) in (let TMP_103 \def (or_introl +TMP_83 TMP_92 TMP_102) in (eq_ind_r C TMP_63 TMP_76 TMP_103 c2 +H4)))))))))))))))))))))) in (ex2_ind C TMP_47 TMP_48 TMP_61 TMP_104 +H3)))))))))))))) in (let TMP_170 \def (\lambda (H3: (ex4_2 C T (\lambda (e2: +C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: +C).(\lambda (_: T).(csubt g d1 e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g +d1 v2 t))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 t))))).(let TMP_108 +\def (\lambda (e2: C).(\lambda (v2: T).(let TMP_106 \def (Bind Abbr) in (let +TMP_107 \def (CHead e2 TMP_106 v2) in (eq C c2 TMP_107))))) in (let TMP_109 +\def (\lambda (e2: C).(\lambda (_: T).(csubt g d1 e2))) in (let TMP_110 \def +(\lambda (_: C).(\lambda (v2: T).(ty3 g d1 v2 t))) in (let TMP_111 \def +(\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 t))) in (let TMP_112 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_115 \def (\lambda (d2: C).(let +TMP_113 \def (Bind Abst) in (let TMP_114 \def (CHead d2 TMP_113 t) in (drop O +O c2 TMP_114)))) in (let TMP_116 \def (ex2 C TMP_112 TMP_115) in (let TMP_117 +\def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_120 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_118 \def (Bind Abbr) in (let +TMP_119 \def (CHead d2 TMP_118 u) in (drop O O c2 TMP_119))))) in (let +TMP_121 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_122 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_123 \def +(ex4_2 C T TMP_117 TMP_120 TMP_121 TMP_122) in (let TMP_124 \def (or TMP_116 +TMP_123) in (let TMP_169 \def (\lambda (x0: C).(\lambda (x1: T).(\lambda (H4: +(eq C c2 (CHead x0 (Bind Abbr) x1))).(\lambda (H5: (csubt g d1 x0)).(\lambda +(H6: (ty3 g d1 x1 t)).(\lambda (H7: (ty3 g x0 x1 t)).(let TMP_125 \def (Bind +Abbr) in (let TMP_126 \def (CHead x0 TMP_125 x1) in (let TMP_139 \def +(\lambda (c: C).(let TMP_127 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_130 \def (\lambda (d2: C).(let TMP_128 \def (Bind Abst) in (let TMP_129 +\def (CHead d2 TMP_128 t) in (drop O O c TMP_129)))) in (let TMP_131 \def +(ex2 C TMP_127 TMP_130) in (let TMP_132 \def (\lambda (d2: C).(\lambda (_: +T).(csubt g d1 d2))) in (let TMP_135 \def (\lambda (d2: C).(\lambda (u: +T).(let TMP_133 \def (Bind Abbr) in (let TMP_134 \def (CHead d2 TMP_133 u) in +(drop O O c TMP_134))))) in (let TMP_136 \def (\lambda (_: C).(\lambda (u: +T).(ty3 g d1 u t))) in (let TMP_137 \def (\lambda (d2: C).(\lambda (u: +T).(ty3 g d2 u t))) in (let TMP_138 \def (ex4_2 C T TMP_132 TMP_135 TMP_136 +TMP_137) in (or TMP_131 TMP_138)))))))))) in (let TMP_140 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_145 \def (\lambda (d2: C).(let TMP_141 \def +(Bind Abbr) in (let TMP_142 \def (CHead x0 TMP_141 x1) in (let TMP_143 \def +(Bind Abst) in (let TMP_144 \def (CHead d2 TMP_143 t) in (drop O O TMP_142 +TMP_144)))))) in (let TMP_146 \def (ex2 C TMP_140 TMP_145) in (let TMP_147 +\def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_152 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_148 \def (Bind Abbr) in (let +TMP_149 \def (CHead x0 TMP_148 x1) in (let TMP_150 \def (Bind Abbr) in (let +TMP_151 \def (CHead d2 TMP_150 u) in (drop O O TMP_149 TMP_151))))))) in (let +TMP_153 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_154 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_155 \def +(ex4_2 C T TMP_147 TMP_152 TMP_153 TMP_154) in (let TMP_156 \def (\lambda +(d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_161 \def (\lambda (d2: +C).(\lambda (u: T).(let TMP_157 \def (Bind Abbr) in (let TMP_158 \def (CHead +x0 TMP_157 x1) in (let TMP_159 \def (Bind Abbr) in (let TMP_160 \def (CHead +d2 TMP_159 u) in (drop O O TMP_158 TMP_160))))))) in (let TMP_162 \def +(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_163 \def +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_164 \def (Bind +Abbr) in (let TMP_165 \def (CHead x0 TMP_164 x1) in (let TMP_166 \def +(drop_refl TMP_165) in (let TMP_167 \def (ex4_2_intro C T TMP_156 TMP_161 +TMP_162 TMP_163 x0 x1 H5 TMP_166 H6 H7) in (let TMP_168 \def (or_intror +TMP_146 TMP_155 TMP_167) in (eq_ind_r C TMP_126 TMP_139 TMP_168 c2 +H4))))))))))))))))))))))))))) in (ex4_2_ind C T TMP_108 TMP_109 TMP_110 +TMP_111 TMP_124 TMP_169 H3)))))))))))))))) in (or_ind TMP_24 TMP_31 TMP_44 +TMP_105 TMP_170 H2)))))))))))))))))))))))))))))))))) in (let TMP_862 \def +(\lambda (n0: nat).(\lambda (H: ((\forall (c1: C).(\forall (c2: C).((csubt g +c1 c2) \to (\forall (d1: C).(\forall (t: T).((drop n0 O c1 (CHead d1 (Bind +Abst) t)) \to (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: +C).(drop n0 O c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop +n0 O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 +u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))))))))))).(\lambda +(c1: C).(\lambda (c2: C).(\lambda (H0: (csubt g c1 c2)).(let TMP_186 \def +(\lambda (c: C).(\lambda (c0: C).(\forall (d1: C).(\forall (t: T).((drop (S +n0) O c (CHead d1 (Bind Abst) t)) \to (let TMP_172 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_176 \def (\lambda (d2: C).(let TMP_173 \def +(S n0) in (let TMP_174 \def (Bind Abst) in (let TMP_175 \def (CHead d2 +TMP_174 t) in (drop TMP_173 O c0 TMP_175))))) in (let TMP_177 \def (ex2 C +TMP_172 TMP_176) in (let TMP_178 \def (\lambda (d2: C).(\lambda (_: T).(csubt +g d1 d2))) in (let TMP_182 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_179 +\def (S n0) in (let TMP_180 \def (Bind Abbr) in (let TMP_181 \def (CHead d2 +TMP_180 u) in (drop TMP_179 O c0 TMP_181)))))) in (let TMP_183 \def (\lambda +(_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_184 \def (\lambda (d2: +C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_185 \def (ex4_2 C T TMP_178 +TMP_182 TMP_183 TMP_184) in (or TMP_177 TMP_185)))))))))))))) in (let TMP_235 +\def (\lambda (n1: nat).(\lambda (d1: C).(\lambda (t: T).(\lambda (H1: (drop +(S n0) O (CSort n1) (CHead d1 (Bind Abst) t))).(let TMP_187 \def (Bind Abst) +in (let TMP_188 \def (CHead d1 TMP_187 t) in (let TMP_189 \def (CSort n1) in +(let TMP_190 \def (eq C TMP_188 TMP_189) in (let TMP_191 \def (S n0) in (let +TMP_192 \def (eq nat TMP_191 O) in (let TMP_193 \def (eq nat O O) in (let +TMP_194 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_199 \def (\lambda +(d2: C).(let TMP_195 \def (S n0) in (let TMP_196 \def (CSort n1) in (let +TMP_197 \def (Bind Abst) in (let TMP_198 \def (CHead d2 TMP_197 t) in (drop +TMP_195 O TMP_196 TMP_198)))))) in (let TMP_200 \def (ex2 C TMP_194 TMP_199) +in (let TMP_201 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in +(let TMP_206 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_202 \def (S n0) +in (let TMP_203 \def (CSort n1) in (let TMP_204 \def (Bind Abbr) in (let +TMP_205 \def (CHead d2 TMP_204 u) in (drop TMP_202 O TMP_203 TMP_205))))))) +in (let TMP_207 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let +TMP_208 \def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let +TMP_209 \def (ex4_2 C T TMP_201 TMP_206 TMP_207 TMP_208) in (let TMP_210 \def +(or TMP_200 TMP_209) in (let TMP_230 \def (\lambda (_: (eq C (CHead d1 (Bind +Abst) t) (CSort n1))).(\lambda (H3: (eq nat (S n0) O)).(\lambda (_: (eq nat O +O)).(let TMP_211 \def (S n0) in (let TMP_212 \def (\lambda (ee: nat).(match +ee with [O \Rightarrow False | (S _) \Rightarrow True])) in (let H5 \def +(eq_ind nat TMP_211 TMP_212 I O H3) in (let TMP_213 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_218 \def (\lambda (d2: C).(let TMP_214 \def +(S n0) in (let TMP_215 \def (CSort n1) in (let TMP_216 \def (Bind Abst) in +(let TMP_217 \def (CHead d2 TMP_216 t) in (drop TMP_214 O TMP_215 +TMP_217)))))) in (let TMP_219 \def (ex2 C TMP_213 TMP_218) in (let TMP_220 +\def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_225 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_221 \def (S n0) in (let TMP_222 +\def (CSort n1) in (let TMP_223 \def (Bind Abbr) in (let TMP_224 \def (CHead +d2 TMP_223 u) in (drop TMP_221 O TMP_222 TMP_224))))))) in (let TMP_226 \def +(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_227 \def +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_228 \def (ex4_2 +C T TMP_220 TMP_225 TMP_226 TMP_227) in (let TMP_229 \def (or TMP_219 +TMP_228) in (False_ind TMP_229 H5)))))))))))))))) in (let TMP_231 \def (S n0) +in (let TMP_232 \def (Bind Abst) in (let TMP_233 \def (CHead d1 TMP_232 t) in +(let TMP_234 \def (drop_gen_sort n1 TMP_231 O TMP_233 H1) in (and3_ind +TMP_190 TMP_192 TMP_193 TMP_210 TMP_230 TMP_234)))))))))))))))))))))))))) in +(let TMP_559 \def (\lambda (c0: C).(\lambda (c3: C).(\lambda (H1: (csubt g c0 c3)).(\lambda (H2: ((\forall (d1: C).(\forall (t: T).((drop (S n0) O c0 (CHead d1 (Bind Abst) t)) \to (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u -t)))))))))).(\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (u: T).(\forall -(d1: C).(\forall (t: T).((drop (S n0) O (CHead c0 k0 u) (CHead d1 (Bind Abst) -t)) \to (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop -(S n0) O (CHead c3 k0 u) (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop -(S n0) O (CHead c3 k0 u) (CHead d2 (Bind Abbr) u0)))) (\lambda (_: -C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 -g d2 u0 t)))))))))) (\lambda (b: B).(\lambda (u: T).(\lambda (d1: C).(\lambda -(t: T).(\lambda (H3: (drop (S n0) O (CHead c0 (Bind b) u) (CHead d1 (Bind -Abst) t))).(or_ind (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop n0 O c3 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop -n0 O c3 (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g -d1 u0 t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t)))) (or (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 -(Bind b) u) (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda -(_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O -(CHead c3 (Bind b) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda -(u0: T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 -t))))) (\lambda (H4: (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop n0 O c3 (CHead d2 (Bind Abst) t))))).(ex2_ind C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Bind Abst) t))) -(or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O -(CHead c3 (Bind b) u) (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop -(S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (_: -C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 -g d2 u0 t))))) (\lambda (x: C).(\lambda (H5: (csubt g d1 x)).(\lambda (H6: -(drop n0 O c3 (CHead x (Bind Abst) t))).(or_introl (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) u) -(CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: -T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CHead -c3 (Bind b) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: -T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t)))) -(ex_intro2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) -O (CHead c3 (Bind b) u) (CHead d2 (Bind Abst) t))) x H5 (drop_drop (Bind b) -n0 c3 (CHead x (Bind Abst) t) H6 u)))))) H4)) (\lambda (H4: (ex4_2 C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u0: T).(drop n0 O c3 (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda -(u0: T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 -t))))).(ex4_2_ind C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) -(\lambda (d2: C).(\lambda (u0: T).(drop n0 O c3 (CHead d2 (Bind Abbr) u0)))) -(\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda -(u0: T).(ty3 g d2 u0 t))) (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind Abst) -t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda -(d2: C).(\lambda (u0: T).(drop (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind -Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: -C).(\lambda (u0: T).(ty3 g d2 u0 t))))) (\lambda (x0: C).(\lambda (x1: -T).(\lambda (H5: (csubt g d1 x0)).(\lambda (H6: (drop n0 O c3 (CHead x0 (Bind -Abbr) x1))).(\lambda (H7: (ty3 g d1 x1 t)).(\lambda (H8: (ty3 g x0 x1 -t)).(or_intror (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind Abst) t)))) (ex4_2 C +t)))))))))).(\lambda (k: K).(let TMP_252 \def (\lambda (k0: K).(\forall (u: +T).(\forall (d1: C).(\forall (t: T).((drop (S n0) O (CHead c0 k0 u) (CHead d1 +(Bind Abst) t)) \to (let TMP_236 \def (\lambda (d2: C).(csubt g d1 d2)) in +(let TMP_241 \def (\lambda (d2: C).(let TMP_237 \def (S n0) in (let TMP_238 +\def (CHead c3 k0 u) in (let TMP_239 \def (Bind Abst) in (let TMP_240 \def +(CHead d2 TMP_239 t) in (drop TMP_237 O TMP_238 TMP_240)))))) in (let TMP_242 +\def (ex2 C TMP_236 TMP_241) in (let TMP_243 \def (\lambda (d2: C).(\lambda +(_: T).(csubt g d1 d2))) in (let TMP_248 \def (\lambda (d2: C).(\lambda (u0: +T).(let TMP_244 \def (S n0) in (let TMP_245 \def (CHead c3 k0 u) in (let +TMP_246 \def (Bind Abbr) in (let TMP_247 \def (CHead d2 TMP_246 u0) in (drop +TMP_244 O TMP_245 TMP_247))))))) in (let TMP_249 \def (\lambda (_: +C).(\lambda (u0: T).(ty3 g d1 u0 t))) in (let TMP_250 \def (\lambda (d2: +C).(\lambda (u0: T).(ty3 g d2 u0 t))) in (let TMP_251 \def (ex4_2 C T TMP_243 +TMP_248 TMP_249 TMP_250) in (or TMP_242 TMP_251)))))))))))))) in (let TMP_403 +\def (\lambda (b: B).(\lambda (u: T).(\lambda (d1: C).(\lambda (t: +T).(\lambda (H3: (drop (S n0) O (CHead c0 (Bind b) u) (CHead d1 (Bind Abst) +t))).(let TMP_253 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_256 \def +(\lambda (d2: C).(let TMP_254 \def (Bind Abst) in (let TMP_255 \def (CHead d2 +TMP_254 t) in (drop n0 O c3 TMP_255)))) in (let TMP_257 \def (ex2 C TMP_253 +TMP_256) in (let TMP_258 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 +d2))) in (let TMP_261 \def (\lambda (d2: C).(\lambda (u0: T).(let TMP_259 +\def (Bind Abbr) in (let TMP_260 \def (CHead d2 TMP_259 u0) in (drop n0 O c3 +TMP_260))))) in (let TMP_262 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 +u0 t))) in (let TMP_263 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 +t))) in (let TMP_264 \def (ex4_2 C T TMP_258 TMP_261 TMP_262 TMP_263) in (let +TMP_265 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_271 \def (\lambda +(d2: C).(let TMP_266 \def (S n0) in (let TMP_267 \def (Bind b) in (let +TMP_268 \def (CHead c3 TMP_267 u) in (let TMP_269 \def (Bind Abst) in (let +TMP_270 \def (CHead d2 TMP_269 t) in (drop TMP_266 O TMP_268 TMP_270))))))) +in (let TMP_272 \def (ex2 C TMP_265 TMP_271) in (let TMP_273 \def (\lambda +(d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_279 \def (\lambda (d2: +C).(\lambda (u0: T).(let TMP_274 \def (S n0) in (let TMP_275 \def (Bind b) in +(let TMP_276 \def (CHead c3 TMP_275 u) in (let TMP_277 \def (Bind Abbr) in +(let TMP_278 \def (CHead d2 TMP_277 u0) in (drop TMP_274 O TMP_276 +TMP_278)))))))) in (let TMP_280 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g +d1 u0 t))) in (let TMP_281 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 +u0 t))) in (let TMP_282 \def (ex4_2 C T TMP_273 TMP_279 TMP_280 TMP_281) in +(let TMP_283 \def (or TMP_272 TMP_282) in (let TMP_338 \def (\lambda (H4: +(ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c3 +(CHead d2 (Bind Abst) t))))).(let TMP_284 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_287 \def (\lambda (d2: C).(let TMP_285 \def (Bind Abst) in +(let TMP_286 \def (CHead d2 TMP_285 t) in (drop n0 O c3 TMP_286)))) in (let +TMP_288 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_294 \def (\lambda +(d2: C).(let TMP_289 \def (S n0) in (let TMP_290 \def (Bind b) in (let +TMP_291 \def (CHead c3 TMP_290 u) in (let TMP_292 \def (Bind Abst) in (let +TMP_293 \def (CHead d2 TMP_292 t) in (drop TMP_289 O TMP_291 TMP_293))))))) +in (let TMP_295 \def (ex2 C TMP_288 TMP_294) in (let TMP_296 \def (\lambda +(d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_302 \def (\lambda (d2: +C).(\lambda (u0: T).(let TMP_297 \def (S n0) in (let TMP_298 \def (Bind b) in +(let TMP_299 \def (CHead c3 TMP_298 u) in (let TMP_300 \def (Bind Abbr) in +(let TMP_301 \def (CHead d2 TMP_300 u0) in (drop TMP_297 O TMP_299 +TMP_301)))))))) in (let TMP_303 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g +d1 u0 t))) in (let TMP_304 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 +u0 t))) in (let TMP_305 \def (ex4_2 C T TMP_296 TMP_302 TMP_303 TMP_304) in +(let TMP_306 \def (or TMP_295 TMP_305) in (let TMP_337 \def (\lambda (x: +C).(\lambda (H5: (csubt g d1 x)).(\lambda (H6: (drop n0 O c3 (CHead x (Bind +Abst) t))).(let TMP_307 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_313 \def (\lambda (d2: C).(let TMP_308 \def (S n0) in (let TMP_309 \def +(Bind b) in (let TMP_310 \def (CHead c3 TMP_309 u) in (let TMP_311 \def (Bind +Abst) in (let TMP_312 \def (CHead d2 TMP_311 t) in (drop TMP_308 O TMP_310 +TMP_312))))))) in (let TMP_314 \def (ex2 C TMP_307 TMP_313) in (let TMP_315 +\def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_321 \def +(\lambda (d2: C).(\lambda (u0: T).(let TMP_316 \def (S n0) in (let TMP_317 +\def (Bind b) in (let TMP_318 \def (CHead c3 TMP_317 u) in (let TMP_319 \def +(Bind Abbr) in (let TMP_320 \def (CHead d2 TMP_319 u0) in (drop TMP_316 O +TMP_318 TMP_320)))))))) in (let TMP_322 \def (\lambda (_: C).(\lambda (u0: +T).(ty3 g d1 u0 t))) in (let TMP_323 \def (\lambda (d2: C).(\lambda (u0: +T).(ty3 g d2 u0 t))) in (let TMP_324 \def (ex4_2 C T TMP_315 TMP_321 TMP_322 +TMP_323) in (let TMP_325 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_331 \def (\lambda (d2: C).(let TMP_326 \def (S n0) in (let TMP_327 \def +(Bind b) in (let TMP_328 \def (CHead c3 TMP_327 u) in (let TMP_329 \def (Bind +Abst) in (let TMP_330 \def (CHead d2 TMP_329 t) in (drop TMP_326 O TMP_328 +TMP_330))))))) in (let TMP_332 \def (Bind b) in (let TMP_333 \def (Bind Abst) +in (let TMP_334 \def (CHead x TMP_333 t) in (let TMP_335 \def (drop_drop +TMP_332 n0 c3 TMP_334 H6 u) in (let TMP_336 \def (ex_intro2 C TMP_325 TMP_331 +x H5 TMP_335) in (or_introl TMP_314 TMP_324 TMP_336))))))))))))))))))) in +(ex2_ind C TMP_284 TMP_287 TMP_306 TMP_337 H4)))))))))))))) in (let TMP_397 +\def (\lambda (H4: (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 +d2))) (\lambda (d2: C).(\lambda (u0: T).(drop n0 O c3 (CHead d2 (Bind Abbr) +u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: +C).(\lambda (u0: T).(ty3 g d2 u0 t))))).(let TMP_339 \def (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_342 \def (\lambda (d2: +C).(\lambda (u0: T).(let TMP_340 \def (Bind Abbr) in (let TMP_341 \def (CHead +d2 TMP_340 u0) in (drop n0 O c3 TMP_341))))) in (let TMP_343 \def (\lambda +(_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) in (let TMP_344 \def (\lambda (d2: +C).(\lambda (u0: T).(ty3 g d2 u0 t))) in (let TMP_345 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_351 \def (\lambda (d2: C).(let TMP_346 \def +(S n0) in (let TMP_347 \def (Bind b) in (let TMP_348 \def (CHead c3 TMP_347 +u) in (let TMP_349 \def (Bind Abst) in (let TMP_350 \def (CHead d2 TMP_349 t) +in (drop TMP_346 O TMP_348 TMP_350))))))) in (let TMP_352 \def (ex2 C TMP_345 +TMP_351) in (let TMP_353 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 +d2))) in (let TMP_359 \def (\lambda (d2: C).(\lambda (u0: T).(let TMP_354 +\def (S n0) in (let TMP_355 \def (Bind b) in (let TMP_356 \def (CHead c3 +TMP_355 u) in (let TMP_357 \def (Bind Abbr) in (let TMP_358 \def (CHead d2 +TMP_357 u0) in (drop TMP_354 O TMP_356 TMP_358)))))))) in (let TMP_360 \def +(\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) in (let TMP_361 \def +(\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))) in (let TMP_362 \def +(ex4_2 C T TMP_353 TMP_359 TMP_360 TMP_361) in (let TMP_363 \def (or TMP_352 +TMP_362) in (let TMP_396 \def (\lambda (x0: C).(\lambda (x1: T).(\lambda (H5: +(csubt g d1 x0)).(\lambda (H6: (drop n0 O c3 (CHead x0 (Bind Abbr) +x1))).(\lambda (H7: (ty3 g d1 x1 t)).(\lambda (H8: (ty3 g x0 x1 t)).(let +TMP_364 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_370 \def (\lambda +(d2: C).(let TMP_365 \def (S n0) in (let TMP_366 \def (Bind b) in (let +TMP_367 \def (CHead c3 TMP_366 u) in (let TMP_368 \def (Bind Abst) in (let +TMP_369 \def (CHead d2 TMP_368 t) in (drop TMP_365 O TMP_367 TMP_369))))))) +in (let TMP_371 \def (ex2 C TMP_364 TMP_370) in (let TMP_372 \def (\lambda +(d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_378 \def (\lambda (d2: +C).(\lambda (u0: T).(let TMP_373 \def (S n0) in (let TMP_374 \def (Bind b) in +(let TMP_375 \def (CHead c3 TMP_374 u) in (let TMP_376 \def (Bind Abbr) in +(let TMP_377 \def (CHead d2 TMP_376 u0) in (drop TMP_373 O TMP_375 +TMP_377)))))))) in (let TMP_379 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g +d1 u0 t))) in (let TMP_380 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 +u0 t))) in (let TMP_381 \def (ex4_2 C T TMP_372 TMP_378 TMP_379 TMP_380) in +(let TMP_382 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_388 \def (\lambda (d2: C).(\lambda (u0: T).(let TMP_383 \def (S n0) in +(let TMP_384 \def (Bind b) in (let TMP_385 \def (CHead c3 TMP_384 u) in (let +TMP_386 \def (Bind Abbr) in (let TMP_387 \def (CHead d2 TMP_386 u0) in (drop +TMP_383 O TMP_385 TMP_387)))))))) in (let TMP_389 \def (\lambda (_: +C).(\lambda (u0: T).(ty3 g d1 u0 t))) in (let TMP_390 \def (\lambda (d2: +C).(\lambda (u0: T).(ty3 g d2 u0 t))) in (let TMP_391 \def (Bind b) in (let +TMP_392 \def (Bind Abbr) in (let TMP_393 \def (CHead x0 TMP_392 x1) in (let +TMP_394 \def (drop_drop TMP_391 n0 c3 TMP_393 H6 u) in (let TMP_395 \def +(ex4_2_intro C T TMP_382 TMP_388 TMP_389 TMP_390 x0 x1 H5 TMP_394 H7 H8) in +(or_intror TMP_371 TMP_381 TMP_395)))))))))))))))))))))))) in (ex4_2_ind C T +TMP_339 TMP_342 TMP_343 TMP_344 TMP_363 TMP_396 H4)))))))))))))))) in (let +TMP_398 \def (Bind b) in (let TMP_399 \def (Bind Abst) in (let TMP_400 \def +(CHead d1 TMP_399 t) in (let TMP_401 \def (drop_gen_drop TMP_398 c0 TMP_400 u +n0 H3) in (let TMP_402 \def (H c0 c3 H1 d1 t TMP_401) in (or_ind TMP_257 +TMP_264 TMP_283 TMP_338 TMP_397 TMP_402)))))))))))))))))))))))))))))) in (let +TMP_558 \def (\lambda (f: F).(\lambda (u: T).(\lambda (d1: C).(\lambda (t: +T).(\lambda (H3: (drop (S n0) O (CHead c0 (Flat f) u) (CHead d1 (Bind Abst) +t))).(let TMP_404 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_408 \def +(\lambda (d2: C).(let TMP_405 \def (S n0) in (let TMP_406 \def (Bind Abst) in +(let TMP_407 \def (CHead d2 TMP_406 t) in (drop TMP_405 O c3 TMP_407))))) in +(let TMP_409 \def (ex2 C TMP_404 TMP_408) in (let TMP_410 \def (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_414 \def (\lambda (d2: +C).(\lambda (u0: T).(let TMP_411 \def (S n0) in (let TMP_412 \def (Bind Abbr) +in (let TMP_413 \def (CHead d2 TMP_412 u0) in (drop TMP_411 O c3 +TMP_413)))))) in (let TMP_415 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 +u0 t))) in (let TMP_416 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 +t))) in (let TMP_417 \def (ex4_2 C T TMP_410 TMP_414 TMP_415 TMP_416) in (let +TMP_418 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_424 \def (\lambda +(d2: C).(let TMP_419 \def (S n0) in (let TMP_420 \def (Flat f) in (let +TMP_421 \def (CHead c3 TMP_420 u) in (let TMP_422 \def (Bind Abst) in (let +TMP_423 \def (CHead d2 TMP_422 t) in (drop TMP_419 O TMP_421 TMP_423))))))) +in (let TMP_425 \def (ex2 C TMP_418 TMP_424) in (let TMP_426 \def (\lambda +(d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_432 \def (\lambda (d2: +C).(\lambda (u0: T).(let TMP_427 \def (S n0) in (let TMP_428 \def (Flat f) in +(let TMP_429 \def (CHead c3 TMP_428 u) in (let TMP_430 \def (Bind Abbr) in +(let TMP_431 \def (CHead d2 TMP_430 u0) in (drop TMP_427 O TMP_429 +TMP_431)))))))) in (let TMP_433 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g +d1 u0 t))) in (let TMP_434 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 +u0 t))) in (let TMP_435 \def (ex4_2 C T TMP_426 TMP_432 TMP_433 TMP_434) in +(let TMP_436 \def (or TMP_425 TMP_435) in (let TMP_492 \def (\lambda (H4: +(ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 +(CHead d2 (Bind Abst) t))))).(let TMP_437 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_441 \def (\lambda (d2: C).(let TMP_438 \def (S n0) in (let +TMP_439 \def (Bind Abst) in (let TMP_440 \def (CHead d2 TMP_439 t) in (drop +TMP_438 O c3 TMP_440))))) in (let TMP_442 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_448 \def (\lambda (d2: C).(let TMP_443 \def (S n0) in (let +TMP_444 \def (Flat f) in (let TMP_445 \def (CHead c3 TMP_444 u) in (let +TMP_446 \def (Bind Abst) in (let TMP_447 \def (CHead d2 TMP_446 t) in (drop +TMP_443 O TMP_445 TMP_447))))))) in (let TMP_449 \def (ex2 C TMP_442 TMP_448) +in (let TMP_450 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in +(let TMP_456 \def (\lambda (d2: C).(\lambda (u0: T).(let TMP_451 \def (S n0) +in (let TMP_452 \def (Flat f) in (let TMP_453 \def (CHead c3 TMP_452 u) in +(let TMP_454 \def (Bind Abbr) in (let TMP_455 \def (CHead d2 TMP_454 u0) in +(drop TMP_451 O TMP_453 TMP_455)))))))) in (let TMP_457 \def (\lambda (_: +C).(\lambda (u0: T).(ty3 g d1 u0 t))) in (let TMP_458 \def (\lambda (d2: +C).(\lambda (u0: T).(ty3 g d2 u0 t))) in (let TMP_459 \def (ex4_2 C T TMP_450 +TMP_456 TMP_457 TMP_458) in (let TMP_460 \def (or TMP_449 TMP_459) in (let +TMP_491 \def (\lambda (x: C).(\lambda (H5: (csubt g d1 x)).(\lambda (H6: +(drop (S n0) O c3 (CHead x (Bind Abst) t))).(let TMP_461 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_467 \def (\lambda (d2: C).(let TMP_462 \def +(S n0) in (let TMP_463 \def (Flat f) in (let TMP_464 \def (CHead c3 TMP_463 +u) in (let TMP_465 \def (Bind Abst) in (let TMP_466 \def (CHead d2 TMP_465 t) +in (drop TMP_462 O TMP_464 TMP_466))))))) in (let TMP_468 \def (ex2 C TMP_461 +TMP_467) in (let TMP_469 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 +d2))) in (let TMP_475 \def (\lambda (d2: C).(\lambda (u0: T).(let TMP_470 +\def (S n0) in (let TMP_471 \def (Flat f) in (let TMP_472 \def (CHead c3 +TMP_471 u) in (let TMP_473 \def (Bind Abbr) in (let TMP_474 \def (CHead d2 +TMP_473 u0) in (drop TMP_470 O TMP_472 TMP_474)))))))) in (let TMP_476 \def +(\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) in (let TMP_477 \def +(\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))) in (let TMP_478 \def +(ex4_2 C T TMP_469 TMP_475 TMP_476 TMP_477) in (let TMP_479 \def (\lambda +(d2: C).(csubt g d1 d2)) in (let TMP_485 \def (\lambda (d2: C).(let TMP_480 +\def (S n0) in (let TMP_481 \def (Flat f) in (let TMP_482 \def (CHead c3 +TMP_481 u) in (let TMP_483 \def (Bind Abst) in (let TMP_484 \def (CHead d2 +TMP_483 t) in (drop TMP_480 O TMP_482 TMP_484))))))) in (let TMP_486 \def +(Flat f) in (let TMP_487 \def (Bind Abst) in (let TMP_488 \def (CHead x +TMP_487 t) in (let TMP_489 \def (drop_drop TMP_486 n0 c3 TMP_488 H6 u) in +(let TMP_490 \def (ex_intro2 C TMP_479 TMP_485 x H5 TMP_489) in (or_introl +TMP_468 TMP_478 TMP_490))))))))))))))))))) in (ex2_ind C TMP_437 TMP_441 +TMP_460 TMP_491 H4)))))))))))))) in (let TMP_552 \def (\lambda (H4: (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: -C).(\lambda (u0: T).(drop (S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind -Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: -C).(\lambda (u0: T).(ty3 g d2 u0 t)))) (ex4_2_intro C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop -(S n0) O (CHead c3 (Bind b) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (_: -C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 -g d2 u0 t))) x0 x1 H5 (drop_drop (Bind b) n0 c3 (CHead x0 (Bind Abbr) x1) H6 -u) H7 H8)))))))) H4)) (H c0 c3 H1 d1 t (drop_gen_drop (Bind b) c0 (CHead d1 -(Bind Abst) t) u n0 H3)))))))) (\lambda (f: F).(\lambda (u: T).(\lambda (d1: -C).(\lambda (t: T).(\lambda (H3: (drop (S n0) O (CHead c0 (Flat f) u) (CHead -d1 (Bind Abst) t))).(or_ind (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda -(d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda -(d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: -T).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda -(u0: T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 -t)))) (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S -n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda -(d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: -T).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind Abbr) u0)))) (\lambda +C).(\lambda (u0: T).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda (u0: -T).(ty3 g d2 u0 t))))) (\lambda (H4: (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abst) t))))).(ex2_ind C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead -d2 (Bind Abst) t))) (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda -(d2: C).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind Abst) t)))) +T).(ty3 g d2 u0 t))))).(let TMP_493 \def (\lambda (d2: C).(\lambda (_: +T).(csubt g d1 d2))) in (let TMP_497 \def (\lambda (d2: C).(\lambda (u0: +T).(let TMP_494 \def (S n0) in (let TMP_495 \def (Bind Abbr) in (let TMP_496 +\def (CHead d2 TMP_495 u0) in (drop TMP_494 O c3 TMP_496)))))) in (let +TMP_498 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) in (let +TMP_499 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))) in (let +TMP_500 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_506 \def (\lambda +(d2: C).(let TMP_501 \def (S n0) in (let TMP_502 \def (Flat f) in (let +TMP_503 \def (CHead c3 TMP_502 u) in (let TMP_504 \def (Bind Abst) in (let +TMP_505 \def (CHead d2 TMP_504 t) in (drop TMP_501 O TMP_503 TMP_505))))))) +in (let TMP_507 \def (ex2 C TMP_500 TMP_506) in (let TMP_508 \def (\lambda +(d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_514 \def (\lambda (d2: +C).(\lambda (u0: T).(let TMP_509 \def (S n0) in (let TMP_510 \def (Flat f) in +(let TMP_511 \def (CHead c3 TMP_510 u) in (let TMP_512 \def (Bind Abbr) in +(let TMP_513 \def (CHead d2 TMP_512 u0) in (drop TMP_509 O TMP_511 +TMP_513)))))))) in (let TMP_515 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g +d1 u0 t))) in (let TMP_516 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 +u0 t))) in (let TMP_517 \def (ex4_2 C T TMP_508 TMP_514 TMP_515 TMP_516) in +(let TMP_518 \def (or TMP_507 TMP_517) in (let TMP_551 \def (\lambda (x0: +C).(\lambda (x1: T).(\lambda (H5: (csubt g d1 x0)).(\lambda (H6: (drop (S n0) +O c3 (CHead x0 (Bind Abbr) x1))).(\lambda (H7: (ty3 g d1 x1 t)).(\lambda (H8: +(ty3 g x0 x1 t)).(let TMP_519 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_525 \def (\lambda (d2: C).(let TMP_520 \def (S n0) in (let TMP_521 \def +(Flat f) in (let TMP_522 \def (CHead c3 TMP_521 u) in (let TMP_523 \def (Bind +Abst) in (let TMP_524 \def (CHead d2 TMP_523 t) in (drop TMP_520 O TMP_522 +TMP_524))))))) in (let TMP_526 \def (ex2 C TMP_519 TMP_525) in (let TMP_527 +\def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_533 \def +(\lambda (d2: C).(\lambda (u0: T).(let TMP_528 \def (S n0) in (let TMP_529 +\def (Flat f) in (let TMP_530 \def (CHead c3 TMP_529 u) in (let TMP_531 \def +(Bind Abbr) in (let TMP_532 \def (CHead d2 TMP_531 u0) in (drop TMP_528 O +TMP_530 TMP_532)))))))) in (let TMP_534 \def (\lambda (_: C).(\lambda (u0: +T).(ty3 g d1 u0 t))) in (let TMP_535 \def (\lambda (d2: C).(\lambda (u0: +T).(ty3 g d2 u0 t))) in (let TMP_536 \def (ex4_2 C T TMP_527 TMP_533 TMP_534 +TMP_535) in (let TMP_537 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 +d2))) in (let TMP_543 \def (\lambda (d2: C).(\lambda (u0: T).(let TMP_538 +\def (S n0) in (let TMP_539 \def (Flat f) in (let TMP_540 \def (CHead c3 +TMP_539 u) in (let TMP_541 \def (Bind Abbr) in (let TMP_542 \def (CHead d2 +TMP_541 u0) in (drop TMP_538 O TMP_540 TMP_542)))))))) in (let TMP_544 \def +(\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) in (let TMP_545 \def +(\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))) in (let TMP_546 \def +(Flat f) in (let TMP_547 \def (Bind Abbr) in (let TMP_548 \def (CHead x0 +TMP_547 x1) in (let TMP_549 \def (drop_drop TMP_546 n0 c3 TMP_548 H6 u) in +(let TMP_550 \def (ex4_2_intro C T TMP_537 TMP_543 TMP_544 TMP_545 x0 x1 H5 +TMP_549 H7 H8) in (or_intror TMP_526 TMP_536 TMP_550)))))))))))))))))))))))) +in (ex4_2_ind C T TMP_493 TMP_497 TMP_498 TMP_499 TMP_518 TMP_551 +H4)))))))))))))))) in (let TMP_553 \def (Flat f) in (let TMP_554 \def (Bind +Abst) in (let TMP_555 \def (CHead d1 TMP_554 t) in (let TMP_556 \def +(drop_gen_drop TMP_553 c0 TMP_555 u n0 H3) in (let TMP_557 \def (H2 d1 t +TMP_556) in (or_ind TMP_409 TMP_417 TMP_436 TMP_492 TMP_552 +TMP_557)))))))))))))))))))))))))))))) in (K_ind TMP_252 TMP_403 TMP_558 +k))))))))) in (let TMP_710 \def (\lambda (c0: C).(\lambda (c3: C).(\lambda +(H1: (csubt g c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (t: T).((drop +(S n0) O c0 (CHead d1 (Bind Abst) t)) \to (or (ex2 C (\lambda (d2: C).(csubt +g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: -C).(\lambda (u0: T).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind -Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: -C).(\lambda (u0: T).(ty3 g d2 u0 t))))) (\lambda (x: C).(\lambda (H5: (csubt -g d1 x)).(\lambda (H6: (drop (S n0) O c3 (CHead x (Bind Abst) t))).(or_introl -(ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O -(CHead c3 (Flat f) u) (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop -(S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (_: -C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 -g d2 u0 t)))) (ex_intro2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind Abst) t))) x H5 -(drop_drop (Flat f) n0 c3 (CHead x (Bind Abst) t) H6 u)))))) H4)) (\lambda -(H4: (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda -(d2: C).(\lambda (u0: T).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u0)))) -(\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda -(u0: T).(ty3 g d2 u0 t))))).(ex4_2_ind C T (\lambda (d2: C).(\lambda (_: -T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O c3 -(CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 -t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))) (or (ex2 C (\lambda -(d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Flat f) -u) (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: -T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CHead -c3 (Flat f) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: -T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t))))) -(\lambda (x0: C).(\lambda (x1: T).(\lambda (H5: (csubt g d1 x0)).(\lambda -(H6: (drop (S n0) O c3 (CHead x0 (Bind Abbr) x1))).(\lambda (H7: (ty3 g d1 x1 -t)).(\lambda (H8: (ty3 g x0 x1 t)).(or_intror (ex2 C (\lambda (d2: C).(csubt -g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 -(Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 -d2))) (\lambda (d2: C).(\lambda (u0: T).(drop (S n0) O (CHead c3 (Flat f) u) -(CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 -t))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t)))) (ex4_2_intro C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u0: T).(drop (S n0) O (CHead c3 (Flat f) u) (CHead d2 (Bind Abbr) u0)))) -(\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t))) (\lambda (d2: C).(\lambda -(u0: T).(ty3 g d2 u0 t))) x0 x1 H5 (drop_drop (Flat f) n0 c3 (CHead x0 (Bind -Abbr) x1) H6 u) H7 H8)))))))) H4)) (H2 d1 t (drop_gen_drop (Flat f) c0 (CHead -d1 (Bind Abst) t) u n0 H3)))))))) k)))))) (\lambda (c0: C).(\lambda (c3: -C).(\lambda (H1: (csubt g c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (t: -T).((drop (S n0) O c0 (CHead d1 (Bind Abst) t)) \to (or (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abst) -t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda -(d2: C).(\lambda (u: T).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u)))) -(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda -(u: T).(ty3 g d2 u t)))))))))).(\lambda (b: B).(\lambda (_: (not (eq B b -Void))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (d1: C).(\lambda (t: -T).(\lambda (H4: (drop (S n0) O (CHead c0 (Bind Void) u1) (CHead d1 (Bind -Abst) t))).(or_ind (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop n0 O c3 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop -n0 O c3 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 -u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))) (or (ex2 C (\lambda -(d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) -u2) (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: -T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O (CHead -c3 (Bind b) u2) (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) -(\lambda (H5: (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop -n0 O c3 (CHead d2 (Bind Abst) t))))).(ex2_ind C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Bind Abst) t))) (or (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 -(Bind b) u2) (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda -(_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O -(CHead c3 (Bind b) u2) (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda -(u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) -(\lambda (x: C).(\lambda (H6: (csubt g d1 x)).(\lambda (H7: (drop n0 O c3 -(CHead x (Bind Abst) t))).(or_introl (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) u2) (CHead d2 (Bind Abst) -t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda -(d2: C).(\lambda (u: T).(drop (S n0) O (CHead c3 (Bind b) u2) (CHead d2 (Bind -Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: -C).(\lambda (u: T).(ty3 g d2 u t)))) (ex_intro2 C (\lambda (d2: C).(csubt g -d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) u2) (CHead d2 -(Bind Abst) t))) x H6 (drop_drop (Bind b) n0 c3 (CHead x (Bind Abst) t) H7 -u2)))))) H5)) (\lambda (H5: (ex4_2 C T (\lambda (d2: C).(\lambda (_: -T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop n0 O c3 (CHead d2 -(Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda -(d2: C).(\lambda (u: T).(ty3 g d2 u t))))).(ex4_2_ind C T (\lambda (d2: +C).(\lambda (u: T).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u)))) (\lambda (_: +C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g +d2 u t)))))))))).(\lambda (b: B).(\lambda (_: (not (eq B b Void))).(\lambda +(u1: T).(\lambda (u2: T).(\lambda (d1: C).(\lambda (t: T).(\lambda (H4: (drop +(S n0) O (CHead c0 (Bind Void) u1) (CHead d1 (Bind Abst) t))).(let TMP_560 +\def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_563 \def (\lambda (d2: +C).(let TMP_561 \def (Bind Abst) in (let TMP_562 \def (CHead d2 TMP_561 t) in +(drop n0 O c3 TMP_562)))) in (let TMP_564 \def (ex2 C TMP_560 TMP_563) in +(let TMP_565 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_568 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_566 \def (Bind Abbr) +in (let TMP_567 \def (CHead d2 TMP_566 u) in (drop n0 O c3 TMP_567))))) in +(let TMP_569 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let +TMP_570 \def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let +TMP_571 \def (ex4_2 C T TMP_565 TMP_568 TMP_569 TMP_570) in (let TMP_572 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_578 \def (\lambda (d2: C).(let +TMP_573 \def (S n0) in (let TMP_574 \def (Bind b) in (let TMP_575 \def (CHead +c3 TMP_574 u2) in (let TMP_576 \def (Bind Abst) in (let TMP_577 \def (CHead +d2 TMP_576 t) in (drop TMP_573 O TMP_575 TMP_577))))))) in (let TMP_579 \def +(ex2 C TMP_572 TMP_578) in (let TMP_580 \def (\lambda (d2: C).(\lambda (_: +T).(csubt g d1 d2))) in (let TMP_586 \def (\lambda (d2: C).(\lambda (u: +T).(let TMP_581 \def (S n0) in (let TMP_582 \def (Bind b) in (let TMP_583 +\def (CHead c3 TMP_582 u2) in (let TMP_584 \def (Bind Abbr) in (let TMP_585 +\def (CHead d2 TMP_584 u) in (drop TMP_581 O TMP_583 TMP_585)))))))) in (let +TMP_587 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_588 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_589 \def +(ex4_2 C T TMP_580 TMP_586 TMP_587 TMP_588) in (let TMP_590 \def (or TMP_579 +TMP_589) in (let TMP_645 \def (\lambda (H5: (ex2 C (\lambda (d2: C).(csubt g +d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 (Bind Abst) t))))).(let +TMP_591 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_594 \def (\lambda +(d2: C).(let TMP_592 \def (Bind Abst) in (let TMP_593 \def (CHead d2 TMP_592 +t) in (drop n0 O c3 TMP_593)))) in (let TMP_595 \def (\lambda (d2: C).(csubt +g d1 d2)) in (let TMP_601 \def (\lambda (d2: C).(let TMP_596 \def (S n0) in +(let TMP_597 \def (Bind b) in (let TMP_598 \def (CHead c3 TMP_597 u2) in (let +TMP_599 \def (Bind Abst) in (let TMP_600 \def (CHead d2 TMP_599 t) in (drop +TMP_596 O TMP_598 TMP_600))))))) in (let TMP_602 \def (ex2 C TMP_595 TMP_601) +in (let TMP_603 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in +(let TMP_609 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_604 \def (S n0) +in (let TMP_605 \def (Bind b) in (let TMP_606 \def (CHead c3 TMP_605 u2) in +(let TMP_607 \def (Bind Abbr) in (let TMP_608 \def (CHead d2 TMP_607 u) in +(drop TMP_604 O TMP_606 TMP_608)))))))) in (let TMP_610 \def (\lambda (_: +C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_611 \def (\lambda (d2: +C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_612 \def (ex4_2 C T TMP_603 +TMP_609 TMP_610 TMP_611) in (let TMP_613 \def (or TMP_602 TMP_612) in (let +TMP_644 \def (\lambda (x: C).(\lambda (H6: (csubt g d1 x)).(\lambda (H7: +(drop n0 O c3 (CHead x (Bind Abst) t))).(let TMP_614 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_620 \def (\lambda (d2: C).(let TMP_615 \def +(S n0) in (let TMP_616 \def (Bind b) in (let TMP_617 \def (CHead c3 TMP_616 +u2) in (let TMP_618 \def (Bind Abst) in (let TMP_619 \def (CHead d2 TMP_618 +t) in (drop TMP_615 O TMP_617 TMP_619))))))) in (let TMP_621 \def (ex2 C +TMP_614 TMP_620) in (let TMP_622 \def (\lambda (d2: C).(\lambda (_: T).(csubt +g d1 d2))) in (let TMP_628 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_623 +\def (S n0) in (let TMP_624 \def (Bind b) in (let TMP_625 \def (CHead c3 +TMP_624 u2) in (let TMP_626 \def (Bind Abbr) in (let TMP_627 \def (CHead d2 +TMP_626 u) in (drop TMP_623 O TMP_625 TMP_627)))))))) in (let TMP_629 \def +(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_630 \def +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_631 \def (ex4_2 +C T TMP_622 TMP_628 TMP_629 TMP_630) in (let TMP_632 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_638 \def (\lambda (d2: C).(let TMP_633 \def +(S n0) in (let TMP_634 \def (Bind b) in (let TMP_635 \def (CHead c3 TMP_634 +u2) in (let TMP_636 \def (Bind Abst) in (let TMP_637 \def (CHead d2 TMP_636 +t) in (drop TMP_633 O TMP_635 TMP_637))))))) in (let TMP_639 \def (Bind b) in +(let TMP_640 \def (Bind Abst) in (let TMP_641 \def (CHead x TMP_640 t) in +(let TMP_642 \def (drop_drop TMP_639 n0 c3 TMP_641 H7 u2) in (let TMP_643 +\def (ex_intro2 C TMP_632 TMP_638 x H6 TMP_642) in (or_introl TMP_621 TMP_631 +TMP_643))))))))))))))))))) in (ex2_ind C TMP_591 TMP_594 TMP_613 TMP_644 +H5)))))))))))))) in (let TMP_704 \def (\lambda (H5: (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop n0 O c3 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 -u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) (or (ex2 C (\lambda -(d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) -u2) (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: -T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O (CHead -c3 (Bind b) u2) (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) -(\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: (csubt g d1 x0)).(\lambda -(H7: (drop n0 O c3 (CHead x0 (Bind Abbr) x1))).(\lambda (H8: (ty3 g d1 x1 -t)).(\lambda (H9: (ty3 g x0 x1 t)).(or_intror (ex2 C (\lambda (d2: C).(csubt -g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind b) u2) (CHead d2 -(Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 -d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O (CHead c3 (Bind b) u2) +u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))).(let TMP_646 \def +(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_649 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_647 \def (Bind Abbr) in (let +TMP_648 \def (CHead d2 TMP_647 u) in (drop n0 O c3 TMP_648))))) in (let +TMP_650 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_651 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_652 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_658 \def (\lambda (d2: C).(let +TMP_653 \def (S n0) in (let TMP_654 \def (Bind b) in (let TMP_655 \def (CHead +c3 TMP_654 u2) in (let TMP_656 \def (Bind Abst) in (let TMP_657 \def (CHead +d2 TMP_656 t) in (drop TMP_653 O TMP_655 TMP_657))))))) in (let TMP_659 \def +(ex2 C TMP_652 TMP_658) in (let TMP_660 \def (\lambda (d2: C).(\lambda (_: +T).(csubt g d1 d2))) in (let TMP_666 \def (\lambda (d2: C).(\lambda (u: +T).(let TMP_661 \def (S n0) in (let TMP_662 \def (Bind b) in (let TMP_663 +\def (CHead c3 TMP_662 u2) in (let TMP_664 \def (Bind Abbr) in (let TMP_665 +\def (CHead d2 TMP_664 u) in (drop TMP_661 O TMP_663 TMP_665)))))))) in (let +TMP_667 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_668 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_669 \def +(ex4_2 C T TMP_660 TMP_666 TMP_667 TMP_668) in (let TMP_670 \def (or TMP_659 +TMP_669) in (let TMP_703 \def (\lambda (x0: C).(\lambda (x1: T).(\lambda (H6: +(csubt g d1 x0)).(\lambda (H7: (drop n0 O c3 (CHead x0 (Bind Abbr) +x1))).(\lambda (H8: (ty3 g d1 x1 t)).(\lambda (H9: (ty3 g x0 x1 t)).(let +TMP_671 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_677 \def (\lambda +(d2: C).(let TMP_672 \def (S n0) in (let TMP_673 \def (Bind b) in (let +TMP_674 \def (CHead c3 TMP_673 u2) in (let TMP_675 \def (Bind Abst) in (let +TMP_676 \def (CHead d2 TMP_675 t) in (drop TMP_672 O TMP_674 TMP_676))))))) +in (let TMP_678 \def (ex2 C TMP_671 TMP_677) in (let TMP_679 \def (\lambda +(d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_685 \def (\lambda (d2: +C).(\lambda (u: T).(let TMP_680 \def (S n0) in (let TMP_681 \def (Bind b) in +(let TMP_682 \def (CHead c3 TMP_681 u2) in (let TMP_683 \def (Bind Abbr) in +(let TMP_684 \def (CHead d2 TMP_683 u) in (drop TMP_680 O TMP_682 +TMP_684)))))))) in (let TMP_686 \def (\lambda (_: C).(\lambda (u: T).(ty3 g +d1 u t))) in (let TMP_687 \def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u +t))) in (let TMP_688 \def (ex4_2 C T TMP_679 TMP_685 TMP_686 TMP_687) in (let +TMP_689 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_695 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_690 \def (S n0) in +(let TMP_691 \def (Bind b) in (let TMP_692 \def (CHead c3 TMP_691 u2) in (let +TMP_693 \def (Bind Abbr) in (let TMP_694 \def (CHead d2 TMP_693 u) in (drop +TMP_690 O TMP_692 TMP_694)))))))) in (let TMP_696 \def (\lambda (_: +C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_697 \def (\lambda (d2: +C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_698 \def (Bind b) in (let +TMP_699 \def (Bind Abbr) in (let TMP_700 \def (CHead x0 TMP_699 x1) in (let +TMP_701 \def (drop_drop TMP_698 n0 c3 TMP_700 H7 u2) in (let TMP_702 \def +(ex4_2_intro C T TMP_689 TMP_695 TMP_696 TMP_697 x0 x1 H6 TMP_701 H8 H9) in +(or_intror TMP_678 TMP_688 TMP_702)))))))))))))))))))))))) in (ex4_2_ind C T +TMP_646 TMP_649 TMP_650 TMP_651 TMP_670 TMP_703 H5)))))))))))))))) in (let +TMP_705 \def (Bind Void) in (let TMP_706 \def (Bind Abst) in (let TMP_707 +\def (CHead d1 TMP_706 t) in (let TMP_708 \def (drop_gen_drop TMP_705 c0 +TMP_707 u1 n0 H4) in (let TMP_709 \def (H c0 c3 H1 d1 t TMP_708) in (or_ind +TMP_564 TMP_571 TMP_590 TMP_645 TMP_704 +TMP_709)))))))))))))))))))))))))))))))))))) in (let TMP_861 \def (\lambda +(c0: C).(\lambda (c3: C).(\lambda (H1: (csubt g c0 c3)).(\lambda (_: +((\forall (d1: C).(\forall (t: T).((drop (S n0) O c0 (CHead d1 (Bind Abst) +t)) \to (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop +(S n0) O c3 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda +(_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) -(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))) (ex4_2_intro C T (\lambda -(d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: -T).(drop (S n0) O (CHead c3 (Bind b) u2) (CHead d2 (Bind Abbr) u)))) (\lambda -(_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 -g d2 u t))) x0 x1 H6 (drop_drop (Bind b) n0 c3 (CHead x0 (Bind Abbr) x1) H7 -u2) H8 H9)))))))) H5)) (H c0 c3 H1 d1 t (drop_gen_drop (Bind Void) c0 (CHead -d1 (Bind Abst) t) u1 n0 H4)))))))))))))) (\lambda (c0: C).(\lambda (c3: -C).(\lambda (H1: (csubt g c0 c3)).(\lambda (_: ((\forall (d1: C).(\forall (t: -T).((drop (S n0) O c0 (CHead d1 (Bind Abst) t)) \to (or (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O c3 (CHead d2 (Bind Abst) -t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda -(d2: C).(\lambda (u: T).(drop (S n0) O c3 (CHead d2 (Bind Abbr) u)))) -(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda -(u: T).(ty3 g d2 u t)))))))))).(\lambda (u: T).(\lambda (t: T).(\lambda (_: -(ty3 g c0 u t)).(\lambda (_: (ty3 g c3 u t)).(\lambda (d1: C).(\lambda (t0: -T).(\lambda (H5: (drop (S n0) O (CHead c0 (Bind Abst) t) (CHead d1 (Bind -Abst) t0))).(or_ind (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop n0 O c3 (CHead d2 (Bind Abst) t0)))) (ex4_2 C T (\lambda (d2: +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))))))))).(\lambda (u: +T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (_: (ty3 g c3 u +t)).(\lambda (d1: C).(\lambda (t0: T).(\lambda (H5: (drop (S n0) O (CHead c0 +(Bind Abst) t) (CHead d1 (Bind Abst) t0))).(let TMP_711 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_714 \def (\lambda (d2: C).(let TMP_712 \def +(Bind Abst) in (let TMP_713 \def (CHead d2 TMP_712 t0) in (drop n0 O c3 +TMP_713)))) in (let TMP_715 \def (ex2 C TMP_711 TMP_714) in (let TMP_716 \def +(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_719 \def +(\lambda (d2: C).(\lambda (u0: T).(let TMP_717 \def (Bind Abbr) in (let +TMP_718 \def (CHead d2 TMP_717 u0) in (drop n0 O c3 TMP_718))))) in (let +TMP_720 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t0))) in (let +TMP_721 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t0))) in (let +TMP_722 \def (ex4_2 C T TMP_716 TMP_719 TMP_720 TMP_721) in (let TMP_723 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_729 \def (\lambda (d2: C).(let +TMP_724 \def (S n0) in (let TMP_725 \def (Bind Abbr) in (let TMP_726 \def +(CHead c3 TMP_725 u) in (let TMP_727 \def (Bind Abst) in (let TMP_728 \def +(CHead d2 TMP_727 t0) in (drop TMP_724 O TMP_726 TMP_728))))))) in (let +TMP_730 \def (ex2 C TMP_723 TMP_729) in (let TMP_731 \def (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_737 \def (\lambda (d2: +C).(\lambda (u0: T).(let TMP_732 \def (S n0) in (let TMP_733 \def (Bind Abbr) +in (let TMP_734 \def (CHead c3 TMP_733 u) in (let TMP_735 \def (Bind Abbr) in +(let TMP_736 \def (CHead d2 TMP_735 u0) in (drop TMP_732 O TMP_734 +TMP_736)))))))) in (let TMP_738 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g +d1 u0 t0))) in (let TMP_739 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 +u0 t0))) in (let TMP_740 \def (ex4_2 C T TMP_731 TMP_737 TMP_738 TMP_739) in +(let TMP_741 \def (or TMP_730 TMP_740) in (let TMP_796 \def (\lambda (H6: +(ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c3 +(CHead d2 (Bind Abst) t0))))).(let TMP_742 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_745 \def (\lambda (d2: C).(let TMP_743 \def (Bind Abst) in +(let TMP_744 \def (CHead d2 TMP_743 t0) in (drop n0 O c3 TMP_744)))) in (let +TMP_746 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_752 \def (\lambda +(d2: C).(let TMP_747 \def (S n0) in (let TMP_748 \def (Bind Abbr) in (let +TMP_749 \def (CHead c3 TMP_748 u) in (let TMP_750 \def (Bind Abst) in (let +TMP_751 \def (CHead d2 TMP_750 t0) in (drop TMP_747 O TMP_749 TMP_751))))))) +in (let TMP_753 \def (ex2 C TMP_746 TMP_752) in (let TMP_754 \def (\lambda +(d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_760 \def (\lambda (d2: +C).(\lambda (u0: T).(let TMP_755 \def (S n0) in (let TMP_756 \def (Bind Abbr) +in (let TMP_757 \def (CHead c3 TMP_756 u) in (let TMP_758 \def (Bind Abbr) in +(let TMP_759 \def (CHead d2 TMP_758 u0) in (drop TMP_755 O TMP_757 +TMP_759)))))))) in (let TMP_761 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g +d1 u0 t0))) in (let TMP_762 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 +u0 t0))) in (let TMP_763 \def (ex4_2 C T TMP_754 TMP_760 TMP_761 TMP_762) in +(let TMP_764 \def (or TMP_753 TMP_763) in (let TMP_795 \def (\lambda (x: +C).(\lambda (H7: (csubt g d1 x)).(\lambda (H8: (drop n0 O c3 (CHead x (Bind +Abst) t0))).(let TMP_765 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_771 \def (\lambda (d2: C).(let TMP_766 \def (S n0) in (let TMP_767 \def +(Bind Abbr) in (let TMP_768 \def (CHead c3 TMP_767 u) in (let TMP_769 \def +(Bind Abst) in (let TMP_770 \def (CHead d2 TMP_769 t0) in (drop TMP_766 O +TMP_768 TMP_770))))))) in (let TMP_772 \def (ex2 C TMP_765 TMP_771) in (let +TMP_773 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_779 \def (\lambda (d2: C).(\lambda (u0: T).(let TMP_774 \def (S n0) in +(let TMP_775 \def (Bind Abbr) in (let TMP_776 \def (CHead c3 TMP_775 u) in +(let TMP_777 \def (Bind Abbr) in (let TMP_778 \def (CHead d2 TMP_777 u0) in +(drop TMP_774 O TMP_776 TMP_778)))))))) in (let TMP_780 \def (\lambda (_: +C).(\lambda (u0: T).(ty3 g d1 u0 t0))) in (let TMP_781 \def (\lambda (d2: +C).(\lambda (u0: T).(ty3 g d2 u0 t0))) in (let TMP_782 \def (ex4_2 C T +TMP_773 TMP_779 TMP_780 TMP_781) in (let TMP_783 \def (\lambda (d2: C).(csubt +g d1 d2)) in (let TMP_789 \def (\lambda (d2: C).(let TMP_784 \def (S n0) in +(let TMP_785 \def (Bind Abbr) in (let TMP_786 \def (CHead c3 TMP_785 u) in +(let TMP_787 \def (Bind Abst) in (let TMP_788 \def (CHead d2 TMP_787 t0) in +(drop TMP_784 O TMP_786 TMP_788))))))) in (let TMP_790 \def (Bind Abbr) in +(let TMP_791 \def (Bind Abst) in (let TMP_792 \def (CHead x TMP_791 t0) in +(let TMP_793 \def (drop_drop TMP_790 n0 c3 TMP_792 H8 u) in (let TMP_794 \def +(ex_intro2 C TMP_783 TMP_789 x H7 TMP_793) in (or_introl TMP_772 TMP_782 +TMP_794))))))))))))))))))) in (ex2_ind C TMP_742 TMP_745 TMP_764 TMP_795 +H6)))))))))))))) in (let TMP_855 \def (\lambda (H6: (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop n0 O c3 (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g -d1 u0 t0))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t0)))) (or (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 -(Bind Abbr) u) (CHead d2 (Bind Abst) t0)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop -(S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (_: -C).(\lambda (u0: T).(ty3 g d1 u0 t0))) (\lambda (d2: C).(\lambda (u0: T).(ty3 -g d2 u0 t0))))) (\lambda (H6: (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(drop n0 O c3 (CHead d2 (Bind Abst) t0))))).(ex2_ind C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n0 O c3 (CHead d2 -(Bind Abst) t0))) (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind Abst) t0)))) -(ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: -C).(\lambda (u0: T).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind -Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t0))) (\lambda -(d2: C).(\lambda (u0: T).(ty3 g d2 u0 t0))))) (\lambda (x: C).(\lambda (H7: -(csubt g d1 x)).(\lambda (H8: (drop n0 O c3 (CHead x (Bind Abst) -t0))).(or_introl (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind Abst) t0)))) -(ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: -C).(\lambda (u0: T).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind -Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t0))) (\lambda -(d2: C).(\lambda (u0: T).(ty3 g d2 u0 t0)))) (ex_intro2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S n0) O (CHead c3 (Bind Abbr) u) -(CHead d2 (Bind Abst) t0))) x H7 (drop_drop (Bind Abbr) n0 c3 (CHead x (Bind -Abst) t0) H8 u)))))) H6)) (\lambda (H6: (ex4_2 C T (\lambda (d2: C).(\lambda -(_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop n0 O c3 -(CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 -t0))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t0))))).(ex4_2_ind C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u0: T).(drop n0 O c3 (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda -(u0: T).(ty3 g d1 u0 t0))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 -t0))) (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop (S -n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind Abst) t0)))) (ex4_2 C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u0: T).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind Abbr) u0)))) -(\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t0))) (\lambda (d2: C).(\lambda -(u0: T).(ty3 g d2 u0 t0))))) (\lambda (x0: C).(\lambda (x1: T).(\lambda (H7: -(csubt g d1 x0)).(\lambda (H8: (drop n0 O c3 (CHead x0 (Bind Abbr) -x1))).(\lambda (H9: (ty3 g d1 x1 t0)).(\lambda (H10: (ty3 g x0 x1 -t0)).(or_intror (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind Abst) t0)))) -(ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: -C).(\lambda (u0: T).(drop (S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind -Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t0))) (\lambda -(d2: C).(\lambda (u0: T).(ty3 g d2 u0 t0)))) (ex4_2_intro C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u0: T).(drop -(S n0) O (CHead c3 (Bind Abbr) u) (CHead d2 (Bind Abbr) u0)))) (\lambda (_: -C).(\lambda (u0: T).(ty3 g d1 u0 t0))) (\lambda (d2: C).(\lambda (u0: T).(ty3 -g d2 u0 t0))) x0 x1 H7 (drop_drop (Bind Abbr) n0 c3 (CHead x0 (Bind Abbr) x1) -H8 u) H9 H10)))))))) H6)) (H c0 c3 H1 d1 t0 (drop_gen_drop (Bind Abst) c0 -(CHead d1 (Bind Abst) t0) t n0 H5)))))))))))))) c1 c2 H0)))))) n)). -(* COMMENTS -Initial nodes: 7940 -END *) +d1 u0 t0))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t0))))).(let +TMP_797 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_800 \def (\lambda (d2: C).(\lambda (u0: T).(let TMP_798 \def (Bind Abbr) +in (let TMP_799 \def (CHead d2 TMP_798 u0) in (drop n0 O c3 TMP_799))))) in +(let TMP_801 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g d1 u0 t0))) in (let +TMP_802 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 t0))) in (let +TMP_803 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_809 \def (\lambda +(d2: C).(let TMP_804 \def (S n0) in (let TMP_805 \def (Bind Abbr) in (let +TMP_806 \def (CHead c3 TMP_805 u) in (let TMP_807 \def (Bind Abst) in (let +TMP_808 \def (CHead d2 TMP_807 t0) in (drop TMP_804 O TMP_806 TMP_808))))))) +in (let TMP_810 \def (ex2 C TMP_803 TMP_809) in (let TMP_811 \def (\lambda +(d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_817 \def (\lambda (d2: +C).(\lambda (u0: T).(let TMP_812 \def (S n0) in (let TMP_813 \def (Bind Abbr) +in (let TMP_814 \def (CHead c3 TMP_813 u) in (let TMP_815 \def (Bind Abbr) in +(let TMP_816 \def (CHead d2 TMP_815 u0) in (drop TMP_812 O TMP_814 +TMP_816)))))))) in (let TMP_818 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g +d1 u0 t0))) in (let TMP_819 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 +u0 t0))) in (let TMP_820 \def (ex4_2 C T TMP_811 TMP_817 TMP_818 TMP_819) in +(let TMP_821 \def (or TMP_810 TMP_820) in (let TMP_854 \def (\lambda (x0: +C).(\lambda (x1: T).(\lambda (H7: (csubt g d1 x0)).(\lambda (H8: (drop n0 O +c3 (CHead x0 (Bind Abbr) x1))).(\lambda (H9: (ty3 g d1 x1 t0)).(\lambda (H10: +(ty3 g x0 x1 t0)).(let TMP_822 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_828 \def (\lambda (d2: C).(let TMP_823 \def (S n0) in (let TMP_824 \def +(Bind Abbr) in (let TMP_825 \def (CHead c3 TMP_824 u) in (let TMP_826 \def +(Bind Abst) in (let TMP_827 \def (CHead d2 TMP_826 t0) in (drop TMP_823 O +TMP_825 TMP_827))))))) in (let TMP_829 \def (ex2 C TMP_822 TMP_828) in (let +TMP_830 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_836 \def (\lambda (d2: C).(\lambda (u0: T).(let TMP_831 \def (S n0) in +(let TMP_832 \def (Bind Abbr) in (let TMP_833 \def (CHead c3 TMP_832 u) in +(let TMP_834 \def (Bind Abbr) in (let TMP_835 \def (CHead d2 TMP_834 u0) in +(drop TMP_831 O TMP_833 TMP_835)))))))) in (let TMP_837 \def (\lambda (_: +C).(\lambda (u0: T).(ty3 g d1 u0 t0))) in (let TMP_838 \def (\lambda (d2: +C).(\lambda (u0: T).(ty3 g d2 u0 t0))) in (let TMP_839 \def (ex4_2 C T +TMP_830 TMP_836 TMP_837 TMP_838) in (let TMP_840 \def (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_846 \def (\lambda (d2: +C).(\lambda (u0: T).(let TMP_841 \def (S n0) in (let TMP_842 \def (Bind Abbr) +in (let TMP_843 \def (CHead c3 TMP_842 u) in (let TMP_844 \def (Bind Abbr) in +(let TMP_845 \def (CHead d2 TMP_844 u0) in (drop TMP_841 O TMP_843 +TMP_845)))))))) in (let TMP_847 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g +d1 u0 t0))) in (let TMP_848 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 +u0 t0))) in (let TMP_849 \def (Bind Abbr) in (let TMP_850 \def (Bind Abbr) in +(let TMP_851 \def (CHead x0 TMP_850 x1) in (let TMP_852 \def (drop_drop +TMP_849 n0 c3 TMP_851 H8 u) in (let TMP_853 \def (ex4_2_intro C T TMP_840 +TMP_846 TMP_847 TMP_848 x0 x1 H7 TMP_852 H9 H10) in (or_intror TMP_829 +TMP_839 TMP_853)))))))))))))))))))))))) in (ex4_2_ind C T TMP_797 TMP_800 +TMP_801 TMP_802 TMP_821 TMP_854 H6)))))))))))))))) in (let TMP_856 \def (Bind +Abst) in (let TMP_857 \def (Bind Abst) in (let TMP_858 \def (CHead d1 TMP_857 +t0) in (let TMP_859 \def (drop_gen_drop TMP_856 c0 TMP_858 t n0 H5) in (let +TMP_860 \def (H c0 c3 H1 d1 t0 TMP_859) in (or_ind TMP_715 TMP_722 TMP_741 +TMP_796 TMP_855 TMP_860)))))))))))))))))))))))))))))))))))) in (csubt_ind g +TMP_186 TMP_235 TMP_559 TMP_710 TMP_861 c1 c2 H0))))))))))) in (nat_ind +TMP_13 TMP_171 TMP_862 n))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/csubt/fwd.ma b/matita/matita/contribs/lambdadelta/basic_1/csubt/fwd.ma index 63a3eca47..8025b79bc 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/csubt/fwd.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/csubt/fwd.ma @@ -14,7 +14,24 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/csubt/defs.ma". +include "basic_1/csubt/defs.ma". + +let rec csubt_ind (g: G) (P: (C \to (C \to Prop))) (f: (\forall (n: nat).(P +(CSort n) (CSort n)))) (f0: (\forall (c1: C).(\forall (c2: C).((csubt g c1 +c2) \to ((P c1 c2) \to (\forall (k: K).(\forall (u: T).(P (CHead c1 k u) +(CHead c2 k u))))))))) (f1: (\forall (c1: C).(\forall (c2: C).((csubt g c1 +c2) \to ((P c1 c2) \to (\forall (b: B).((not (eq B b Void)) \to (\forall (u1: +T).(\forall (u2: T).(P (CHead c1 (Bind Void) u1) (CHead c2 (Bind b) +u2))))))))))) (f2: (\forall (c1: C).(\forall (c2: C).((csubt g c1 c2) \to ((P +c1 c2) \to (\forall (u: T).(\forall (t: T).((ty3 g c1 u t) \to ((ty3 g c2 u +t) \to (P (CHead c1 (Bind Abst) t) (CHead c2 (Bind Abbr) u))))))))))) (c: C) +(c0: C) (c1: csubt g c c0) on c1: P c c0 \def match c1 with [(csubt_sort n) +\Rightarrow (f n) | (csubt_head c2 c3 c4 k u) \Rightarrow (let TMP_3 \def +((csubt_ind g P f f0 f1 f2) c2 c3 c4) in (f0 c2 c3 c4 TMP_3 k u)) | +(csubt_void c2 c3 c4 b n u1 u2) \Rightarrow (let TMP_2 \def ((csubt_ind g P f +f0 f1 f2) c2 c3 c4) in (f1 c2 c3 c4 TMP_2 b n u1 u2)) | (csubt_abst c2 c3 c4 +u t t0 t1) \Rightarrow (let TMP_1 \def ((csubt_ind g P f f0 f1 f2) c2 c3 c4) +in (f2 c2 c3 c4 TMP_1 u t t0 t1))]. theorem csubt_gen_abbr: \forall (g: G).(\forall (e1: C).(\forall (c2: C).(\forall (v: T).((csubt g @@ -22,69 +39,98 @@ theorem csubt_gen_abbr: (Bind Abbr) v))) (\lambda (e2: C).(csubt g e1 e2))))))) \def \lambda (g: G).(\lambda (e1: C).(\lambda (c2: C).(\lambda (v: T).(\lambda -(H: (csubt g (CHead e1 (Bind Abbr) v) c2)).(insert_eq C (CHead e1 (Bind Abbr) -v) (\lambda (c: C).(csubt g c c2)) (\lambda (_: C).(ex2 C (\lambda (e2: -C).(eq C c2 (CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csubt g e1 e2)))) -(\lambda (y: C).(\lambda (H0: (csubt g y c2)).(csubt_ind g (\lambda (c: -C).(\lambda (c0: C).((eq C c (CHead e1 (Bind Abbr) v)) \to (ex2 C (\lambda -(e2: C).(eq C c0 (CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csubt g e1 -e2)))))) (\lambda (n: nat).(\lambda (H1: (eq C (CSort n) (CHead e1 (Bind -Abbr) v))).(let H2 \def (eq_ind C (CSort n) (\lambda (ee: C).(match ee in C -return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow True | (CHead _ _ _) -\Rightarrow False])) I (CHead e1 (Bind Abbr) v) H1) in (False_ind (ex2 C -(\lambda (e2: C).(eq C (CSort n) (CHead e2 (Bind Abbr) v))) (\lambda (e2: -C).(csubt g e1 e2))) H2)))) (\lambda (c1: C).(\lambda (c3: C).(\lambda (H1: -(csubt g c1 c3)).(\lambda (H2: (((eq C c1 (CHead e1 (Bind Abbr) v)) \to (ex2 -C (\lambda (e2: C).(eq C c3 (CHead e2 (Bind Abbr) v))) (\lambda (e2: -C).(csubt g e1 e2)))))).(\lambda (k: K).(\lambda (u: T).(\lambda (H3: (eq C -(CHead c1 k u) (CHead e1 (Bind Abbr) v))).(let H4 \def (f_equal C C (\lambda -(e: C).(match e in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow c1 -| (CHead c _ _) \Rightarrow c])) (CHead c1 k u) (CHead e1 (Bind Abbr) v) H3) -in ((let H5 \def (f_equal C K (\lambda (e: C).(match e in C return (\lambda -(_: C).K) with [(CSort _) \Rightarrow k | (CHead _ k0 _) \Rightarrow k0])) -(CHead c1 k u) (CHead e1 (Bind Abbr) v) H3) in ((let H6 \def (f_equal C T -(\lambda (e: C).(match e in C return (\lambda (_: C).T) with [(CSort _) -\Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead c1 k u) (CHead e1 (Bind -Abbr) v) H3) in (\lambda (H7: (eq K k (Bind Abbr))).(\lambda (H8: (eq C c1 -e1)).(eq_ind_r T v (\lambda (t: T).(ex2 C (\lambda (e2: C).(eq C (CHead c3 k -t) (CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csubt g e1 e2)))) (eq_ind_r K -(Bind Abbr) (\lambda (k0: K).(ex2 C (\lambda (e2: C).(eq C (CHead c3 k0 v) -(CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csubt g e1 e2)))) (let H9 \def -(eq_ind C c1 (\lambda (c: C).((eq C c (CHead e1 (Bind Abbr) v)) \to (ex2 C -(\lambda (e2: C).(eq C c3 (CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csubt -g e1 e2))))) H2 e1 H8) in (let H10 \def (eq_ind C c1 (\lambda (c: C).(csubt g -c c3)) H1 e1 H8) in (ex_intro2 C (\lambda (e2: C).(eq C (CHead c3 (Bind Abbr) -v) (CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csubt g e1 e2)) c3 -(refl_equal C (CHead c3 (Bind Abbr) v)) H10))) k H7) u H6)))) H5)) -H4))))))))) (\lambda (c1: C).(\lambda (c3: C).(\lambda (_: (csubt g c1 -c3)).(\lambda (_: (((eq C c1 (CHead e1 (Bind Abbr) v)) \to (ex2 C (\lambda -(e2: C).(eq C c3 (CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csubt g e1 -e2)))))).(\lambda (b: B).(\lambda (_: (not (eq B b Void))).(\lambda (u1: -T).(\lambda (u2: T).(\lambda (H4: (eq C (CHead c1 (Bind Void) u1) (CHead e1 -(Bind Abbr) v))).(let H5 \def (eq_ind C (CHead c1 (Bind Void) u1) (\lambda -(ee: C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) -\Rightarrow False | (CHead _ k _) \Rightarrow (match k in K return (\lambda -(_: K).Prop) with [(Bind b0) \Rightarrow (match b0 in B return (\lambda (_: -B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow False | Void -\Rightarrow True]) | (Flat _) \Rightarrow False])])) I (CHead e1 (Bind Abbr) -v) H4) in (False_ind (ex2 C (\lambda (e2: C).(eq C (CHead c3 (Bind b) u2) -(CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csubt g e1 e2))) H5))))))))))) -(\lambda (c1: C).(\lambda (c3: C).(\lambda (_: (csubt g c1 c3)).(\lambda (_: -(((eq C c1 (CHead e1 (Bind Abbr) v)) \to (ex2 C (\lambda (e2: C).(eq C c3 -(CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csubt g e1 e2)))))).(\lambda (u: -T).(\lambda (t: T).(\lambda (_: (ty3 g c1 u t)).(\lambda (_: (ty3 g c3 u -t)).(\lambda (H5: (eq C (CHead c1 (Bind Abst) t) (CHead e1 (Bind Abbr) -v))).(let H6 \def (eq_ind C (CHead c1 (Bind Abst) t) (\lambda (ee: C).(match -ee in C return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | -(CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with -[(Bind b) \Rightarrow (match b in B return (\lambda (_: B).Prop) with [Abbr +(H: (csubt g (CHead e1 (Bind Abbr) v) c2)).(let TMP_1 \def (Bind Abbr) in +(let TMP_2 \def (CHead e1 TMP_1 v) in (let TMP_3 \def (\lambda (c: C).(csubt +g c c2)) in (let TMP_8 \def (\lambda (_: C).(let TMP_6 \def (\lambda (e2: +C).(let TMP_4 \def (Bind Abbr) in (let TMP_5 \def (CHead e2 TMP_4 v) in (eq C +c2 TMP_5)))) in (let TMP_7 \def (\lambda (e2: C).(csubt g e1 e2)) in (ex2 C +TMP_6 TMP_7)))) in (let TMP_96 \def (\lambda (y: C).(\lambda (H0: (csubt g y +c2)).(let TMP_13 \def (\lambda (c: C).(\lambda (c0: C).((eq C c (CHead e1 +(Bind Abbr) v)) \to (let TMP_11 \def (\lambda (e2: C).(let TMP_9 \def (Bind +Abbr) in (let TMP_10 \def (CHead e2 TMP_9 v) in (eq C c0 TMP_10)))) in (let +TMP_12 \def (\lambda (e2: C).(csubt g e1 e2)) in (ex2 C TMP_11 TMP_12)))))) +in (let TMP_24 \def (\lambda (n: nat).(\lambda (H1: (eq C (CSort n) (CHead e1 +(Bind Abbr) v))).(let TMP_14 \def (CSort n) in (let TMP_15 \def (\lambda (ee: +C).(match ee with [(CSort _) \Rightarrow True | (CHead _ _ _) \Rightarrow +False])) in (let TMP_16 \def (Bind Abbr) in (let TMP_17 \def (CHead e1 TMP_16 +v) in (let H2 \def (eq_ind C TMP_14 TMP_15 I TMP_17 H1) in (let TMP_21 \def +(\lambda (e2: C).(let TMP_18 \def (CSort n) in (let TMP_19 \def (Bind Abbr) +in (let TMP_20 \def (CHead e2 TMP_19 v) in (eq C TMP_18 TMP_20))))) in (let +TMP_22 \def (\lambda (e2: C).(csubt g e1 e2)) in (let TMP_23 \def (ex2 C +TMP_21 TMP_22) in (False_ind TMP_23 H2))))))))))) in (let TMP_69 \def +(\lambda (c1: C).(\lambda (c3: C).(\lambda (H1: (csubt g c1 c3)).(\lambda +(H2: (((eq C c1 (CHead e1 (Bind Abbr) v)) \to (ex2 C (\lambda (e2: C).(eq C +c3 (CHead e2 (Bind Abbr) v))) (\lambda (e2: C).(csubt g e1 e2)))))).(\lambda +(k: K).(\lambda (u: T).(\lambda (H3: (eq C (CHead c1 k u) (CHead e1 (Bind +Abbr) v))).(let TMP_25 \def (\lambda (e: C).(match e with [(CSort _) +\Rightarrow c1 | (CHead c _ _) \Rightarrow c])) in (let TMP_26 \def (CHead c1 +k u) in (let TMP_27 \def (Bind Abbr) in (let TMP_28 \def (CHead e1 TMP_27 v) +in (let H4 \def (f_equal C C TMP_25 TMP_26 TMP_28 H3) in (let TMP_29 \def +(\lambda (e: C).(match e with [(CSort _) \Rightarrow k | (CHead _ k0 _) +\Rightarrow k0])) in (let TMP_30 \def (CHead c1 k u) in (let TMP_31 \def +(Bind Abbr) in (let TMP_32 \def (CHead e1 TMP_31 v) in (let H5 \def (f_equal +C K TMP_29 TMP_30 TMP_32 H3) in (let TMP_33 \def (\lambda (e: C).(match e +with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) in (let TMP_34 +\def (CHead c1 k u) in (let TMP_35 \def (Bind Abbr) in (let TMP_36 \def +(CHead e1 TMP_35 v) in (let H6 \def (f_equal C T TMP_33 TMP_34 TMP_36 H3) in +(let TMP_67 \def (\lambda (H7: (eq K k (Bind Abbr))).(\lambda (H8: (eq C c1 +e1)).(let TMP_42 \def (\lambda (t: T).(let TMP_40 \def (\lambda (e2: C).(let +TMP_37 \def (CHead c3 k t) in (let TMP_38 \def (Bind Abbr) in (let TMP_39 +\def (CHead e2 TMP_38 v) in (eq C TMP_37 TMP_39))))) in (let TMP_41 \def +(\lambda (e2: C).(csubt g e1 e2)) in (ex2 C TMP_40 TMP_41)))) in (let TMP_43 +\def (Bind Abbr) in (let TMP_49 \def (\lambda (k0: K).(let TMP_47 \def +(\lambda (e2: C).(let TMP_44 \def (CHead c3 k0 v) in (let TMP_45 \def (Bind +Abbr) in (let TMP_46 \def (CHead e2 TMP_45 v) in (eq C TMP_44 TMP_46))))) in +(let TMP_48 \def (\lambda (e2: C).(csubt g e1 e2)) in (ex2 C TMP_47 +TMP_48)))) in (let TMP_54 \def (\lambda (c: C).((eq C c (CHead e1 (Bind Abbr) +v)) \to (let TMP_52 \def (\lambda (e2: C).(let TMP_50 \def (Bind Abbr) in +(let TMP_51 \def (CHead e2 TMP_50 v) in (eq C c3 TMP_51)))) in (let TMP_53 +\def (\lambda (e2: C).(csubt g e1 e2)) in (ex2 C TMP_52 TMP_53))))) in (let +H9 \def (eq_ind C c1 TMP_54 H2 e1 H8) in (let TMP_55 \def (\lambda (c: +C).(csubt g c c3)) in (let H10 \def (eq_ind C c1 TMP_55 H1 e1 H8) in (let +TMP_60 \def (\lambda (e2: C).(let TMP_56 \def (Bind Abbr) in (let TMP_57 \def +(CHead c3 TMP_56 v) in (let TMP_58 \def (Bind Abbr) in (let TMP_59 \def +(CHead e2 TMP_58 v) in (eq C TMP_57 TMP_59)))))) in (let TMP_61 \def (\lambda +(e2: C).(csubt g e1 e2)) in (let TMP_62 \def (Bind Abbr) in (let TMP_63 \def +(CHead c3 TMP_62 v) in (let TMP_64 \def (refl_equal C TMP_63) in (let TMP_65 +\def (ex_intro2 C TMP_60 TMP_61 c3 TMP_64 H10) in (let TMP_66 \def (eq_ind_r +K TMP_43 TMP_49 TMP_65 k H7) in (eq_ind_r T v TMP_42 TMP_66 u +H6))))))))))))))))) in (let TMP_68 \def (TMP_67 H5) in (TMP_68 +H4))))))))))))))))))))))))) in (let TMP_82 \def (\lambda (c1: C).(\lambda +(c3: C).(\lambda (_: (csubt g c1 c3)).(\lambda (_: (((eq C c1 (CHead e1 (Bind +Abbr) v)) \to (ex2 C (\lambda (e2: C).(eq C c3 (CHead e2 (Bind Abbr) v))) +(\lambda (e2: C).(csubt g e1 e2)))))).(\lambda (b: B).(\lambda (_: (not (eq B +b Void))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H4: (eq C (CHead c1 +(Bind Void) u1) (CHead e1 (Bind Abbr) v))).(let TMP_70 \def (Bind Void) in +(let TMP_71 \def (CHead c1 TMP_70 u1) in (let TMP_72 \def (\lambda (ee: +C).(match ee with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow +(match k with [(Bind b0) \Rightarrow (match b0 with [Abbr \Rightarrow False | +Abst \Rightarrow False | Void \Rightarrow True]) | (Flat _) \Rightarrow +False])])) in (let TMP_73 \def (Bind Abbr) in (let TMP_74 \def (CHead e1 +TMP_73 v) in (let H5 \def (eq_ind C TMP_71 TMP_72 I TMP_74 H4) in (let TMP_79 +\def (\lambda (e2: C).(let TMP_75 \def (Bind b) in (let TMP_76 \def (CHead c3 +TMP_75 u2) in (let TMP_77 \def (Bind Abbr) in (let TMP_78 \def (CHead e2 +TMP_77 v) in (eq C TMP_76 TMP_78)))))) in (let TMP_80 \def (\lambda (e2: +C).(csubt g e1 e2)) in (let TMP_81 \def (ex2 C TMP_79 TMP_80) in (False_ind +TMP_81 H5))))))))))))))))))) in (let TMP_95 \def (\lambda (c1: C).(\lambda +(c3: C).(\lambda (_: (csubt g c1 c3)).(\lambda (_: (((eq C c1 (CHead e1 (Bind +Abbr) v)) \to (ex2 C (\lambda (e2: C).(eq C c3 (CHead e2 (Bind Abbr) v))) +(\lambda (e2: C).(csubt g e1 e2)))))).(\lambda (u: T).(\lambda (t: +T).(\lambda (_: (ty3 g c1 u t)).(\lambda (_: (ty3 g c3 u t)).(\lambda (H5: +(eq C (CHead c1 (Bind Abst) t) (CHead e1 (Bind Abbr) v))).(let TMP_83 \def +(Bind Abst) in (let TMP_84 \def (CHead c1 TMP_83 t) in (let TMP_85 \def +(\lambda (ee: C).(match ee with [(CSort _) \Rightarrow False | (CHead _ k _) +\Rightarrow (match k with [(Bind b) \Rightarrow (match b with [Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat -_) \Rightarrow False])])) I (CHead e1 (Bind Abbr) v) H5) in (False_ind (ex2 C -(\lambda (e2: C).(eq C (CHead c3 (Bind Abbr) u) (CHead e2 (Bind Abbr) v))) -(\lambda (e2: C).(csubt g e1 e2))) H6))))))))))) y c2 H0))) H))))). -(* COMMENTS -Initial nodes: 1111 -END *) +_) \Rightarrow False])])) in (let TMP_86 \def (Bind Abbr) in (let TMP_87 \def +(CHead e1 TMP_86 v) in (let H6 \def (eq_ind C TMP_84 TMP_85 I TMP_87 H5) in +(let TMP_92 \def (\lambda (e2: C).(let TMP_88 \def (Bind Abbr) in (let TMP_89 +\def (CHead c3 TMP_88 u) in (let TMP_90 \def (Bind Abbr) in (let TMP_91 \def +(CHead e2 TMP_90 v) in (eq C TMP_89 TMP_91)))))) in (let TMP_93 \def (\lambda +(e2: C).(csubt g e1 e2)) in (let TMP_94 \def (ex2 C TMP_92 TMP_93) in +(False_ind TMP_94 H6))))))))))))))))))) in (csubt_ind g TMP_13 TMP_24 TMP_69 +TMP_82 TMP_95 y c2 H0)))))))) in (insert_eq C TMP_2 TMP_3 TMP_8 TMP_96 +H)))))))))). theorem csubt_gen_abst: \forall (g: G).(\forall (e1: C).(\forall (c2: C).(\forall (v1: T).((csubt g @@ -95,126 +141,205 @@ C).(\lambda (_: T).(csubt g e1 e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1))))))))) \def \lambda (g: G).(\lambda (e1: C).(\lambda (c2: C).(\lambda (v1: T).(\lambda -(H: (csubt g (CHead e1 (Bind Abst) v1) c2)).(insert_eq C (CHead e1 (Bind -Abst) v1) (\lambda (c: C).(csubt g c c2)) (\lambda (_: C).(or (ex2 C (\lambda -(e2: C).(eq C c2 (CHead e2 (Bind Abst) v1))) (\lambda (e2: C).(csubt g e1 -e2))) (ex4_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind -Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2))) (\lambda (_: -C).(\lambda (v2: T).(ty3 g e1 v2 v1))) (\lambda (e2: C).(\lambda (v2: T).(ty3 -g e2 v2 v1)))))) (\lambda (y: C).(\lambda (H0: (csubt g y c2)).(csubt_ind g -(\lambda (c: C).(\lambda (c0: C).((eq C c (CHead e1 (Bind Abst) v1)) \to (or -(ex2 C (\lambda (e2: C).(eq C c0 (CHead e2 (Bind Abst) v1))) (\lambda (e2: -C).(csubt g e1 e2))) (ex4_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C c0 -(CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g e1 -e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) (\lambda (e2: -C).(\lambda (v2: T).(ty3 g e2 v2 v1)))))))) (\lambda (n: nat).(\lambda (H1: -(eq C (CSort n) (CHead e1 (Bind Abst) v1))).(let H2 \def (eq_ind C (CSort n) -(\lambda (ee: C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) -\Rightarrow True | (CHead _ _ _) \Rightarrow False])) I (CHead e1 (Bind Abst) -v1) H1) in (False_ind (or (ex2 C (\lambda (e2: C).(eq C (CSort n) (CHead e2 -(Bind Abst) v1))) (\lambda (e2: C).(csubt g e1 e2))) (ex4_2 C T (\lambda (e2: -C).(\lambda (v2: T).(eq C (CSort n) (CHead e2 (Bind Abbr) v2)))) (\lambda -(e2: C).(\lambda (_: T).(csubt g e1 e2))) (\lambda (_: C).(\lambda (v2: -T).(ty3 g e1 v2 v1))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1))))) -H2)))) (\lambda (c1: C).(\lambda (c3: C).(\lambda (H1: (csubt g c1 -c3)).(\lambda (H2: (((eq C c1 (CHead e1 (Bind Abst) v1)) \to (or (ex2 C +(H: (csubt g (CHead e1 (Bind Abst) v1) c2)).(let TMP_1 \def (Bind Abst) in +(let TMP_2 \def (CHead e1 TMP_1 v1) in (let TMP_3 \def (\lambda (c: C).(csubt +g c c2)) in (let TMP_16 \def (\lambda (_: C).(let TMP_6 \def (\lambda (e2: +C).(let TMP_4 \def (Bind Abst) in (let TMP_5 \def (CHead e2 TMP_4 v1) in (eq +C c2 TMP_5)))) in (let TMP_7 \def (\lambda (e2: C).(csubt g e1 e2)) in (let +TMP_8 \def (ex2 C TMP_6 TMP_7) in (let TMP_11 \def (\lambda (e2: C).(\lambda +(v2: T).(let TMP_9 \def (Bind Abbr) in (let TMP_10 \def (CHead e2 TMP_9 v2) +in (eq C c2 TMP_10))))) in (let TMP_12 \def (\lambda (e2: C).(\lambda (_: +T).(csubt g e1 e2))) in (let TMP_13 \def (\lambda (_: C).(\lambda (v2: +T).(ty3 g e1 v2 v1))) in (let TMP_14 \def (\lambda (e2: C).(\lambda (v2: +T).(ty3 g e2 v2 v1))) in (let TMP_15 \def (ex4_2 C T TMP_11 TMP_12 TMP_13 +TMP_14) in (or TMP_8 TMP_15)))))))))) in (let TMP_218 \def (\lambda (y: +C).(\lambda (H0: (csubt g y c2)).(let TMP_29 \def (\lambda (c: C).(\lambda +(c0: C).((eq C c (CHead e1 (Bind Abst) v1)) \to (let TMP_19 \def (\lambda +(e2: C).(let TMP_17 \def (Bind Abst) in (let TMP_18 \def (CHead e2 TMP_17 v1) +in (eq C c0 TMP_18)))) in (let TMP_20 \def (\lambda (e2: C).(csubt g e1 e2)) +in (let TMP_21 \def (ex2 C TMP_19 TMP_20) in (let TMP_24 \def (\lambda (e2: +C).(\lambda (v2: T).(let TMP_22 \def (Bind Abbr) in (let TMP_23 \def (CHead +e2 TMP_22 v2) in (eq C c0 TMP_23))))) in (let TMP_25 \def (\lambda (e2: +C).(\lambda (_: T).(csubt g e1 e2))) in (let TMP_26 \def (\lambda (_: +C).(\lambda (v2: T).(ty3 g e1 v2 v1))) in (let TMP_27 \def (\lambda (e2: +C).(\lambda (v2: T).(ty3 g e2 v2 v1))) in (let TMP_28 \def (ex4_2 C T TMP_24 +TMP_25 TMP_26 TMP_27) in (or TMP_21 TMP_28)))))))))))) in (let TMP_49 \def +(\lambda (n: nat).(\lambda (H1: (eq C (CSort n) (CHead e1 (Bind Abst) +v1))).(let TMP_30 \def (CSort n) in (let TMP_31 \def (\lambda (ee: C).(match +ee with [(CSort _) \Rightarrow True | (CHead _ _ _) \Rightarrow False])) in +(let TMP_32 \def (Bind Abst) in (let TMP_33 \def (CHead e1 TMP_32 v1) in (let +H2 \def (eq_ind C TMP_30 TMP_31 I TMP_33 H1) in (let TMP_37 \def (\lambda +(e2: C).(let TMP_34 \def (CSort n) in (let TMP_35 \def (Bind Abst) in (let +TMP_36 \def (CHead e2 TMP_35 v1) in (eq C TMP_34 TMP_36))))) in (let TMP_38 +\def (\lambda (e2: C).(csubt g e1 e2)) in (let TMP_39 \def (ex2 C TMP_37 +TMP_38) in (let TMP_43 \def (\lambda (e2: C).(\lambda (v2: T).(let TMP_40 +\def (CSort n) in (let TMP_41 \def (Bind Abbr) in (let TMP_42 \def (CHead e2 +TMP_41 v2) in (eq C TMP_40 TMP_42)))))) in (let TMP_44 \def (\lambda (e2: +C).(\lambda (_: T).(csubt g e1 e2))) in (let TMP_45 \def (\lambda (_: +C).(\lambda (v2: T).(ty3 g e1 v2 v1))) in (let TMP_46 \def (\lambda (e2: +C).(\lambda (v2: T).(ty3 g e2 v2 v1))) in (let TMP_47 \def (ex4_2 C T TMP_43 +TMP_44 TMP_45 TMP_46) in (let TMP_48 \def (or TMP_39 TMP_47) in (False_ind +TMP_48 H2))))))))))))))))) in (let TMP_137 \def (\lambda (c1: C).(\lambda +(c3: C).(\lambda (H1: (csubt g c1 c3)).(\lambda (H2: (((eq C c1 (CHead e1 +(Bind Abst) v1)) \to (or (ex2 C (\lambda (e2: C).(eq C c3 (CHead e2 (Bind +Abst) v1))) (\lambda (e2: C).(csubt g e1 e2))) (ex4_2 C T (\lambda (e2: +C).(\lambda (v2: T).(eq C c3 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: +C).(\lambda (_: T).(csubt g e1 e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g +e1 v2 v1))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 +v1)))))))).(\lambda (k: K).(\lambda (u: T).(\lambda (H3: (eq C (CHead c1 k u) +(CHead e1 (Bind Abst) v1))).(let TMP_50 \def (\lambda (e: C).(match e with +[(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) in (let TMP_51 +\def (CHead c1 k u) in (let TMP_52 \def (Bind Abst) in (let TMP_53 \def +(CHead e1 TMP_52 v1) in (let H4 \def (f_equal C C TMP_50 TMP_51 TMP_53 H3) in +(let TMP_54 \def (\lambda (e: C).(match e with [(CSort _) \Rightarrow k | +(CHead _ k0 _) \Rightarrow k0])) in (let TMP_55 \def (CHead c1 k u) in (let +TMP_56 \def (Bind Abst) in (let TMP_57 \def (CHead e1 TMP_56 v1) in (let H5 +\def (f_equal C K TMP_54 TMP_55 TMP_57 H3) in (let TMP_58 \def (\lambda (e: +C).(match e with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) in +(let TMP_59 \def (CHead c1 k u) in (let TMP_60 \def (Bind Abst) in (let +TMP_61 \def (CHead e1 TMP_60 v1) in (let H6 \def (f_equal C T TMP_58 TMP_59 +TMP_61 H3) in (let TMP_135 \def (\lambda (H7: (eq K k (Bind Abst))).(\lambda +(H8: (eq C c1 e1)).(let TMP_76 \def (\lambda (t: T).(let TMP_65 \def (\lambda +(e2: C).(let TMP_62 \def (CHead c3 k t) in (let TMP_63 \def (Bind Abst) in +(let TMP_64 \def (CHead e2 TMP_63 v1) in (eq C TMP_62 TMP_64))))) in (let +TMP_66 \def (\lambda (e2: C).(csubt g e1 e2)) in (let TMP_67 \def (ex2 C +TMP_65 TMP_66) in (let TMP_71 \def (\lambda (e2: C).(\lambda (v2: T).(let +TMP_68 \def (CHead c3 k t) in (let TMP_69 \def (Bind Abbr) in (let TMP_70 +\def (CHead e2 TMP_69 v2) in (eq C TMP_68 TMP_70)))))) in (let TMP_72 \def +(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2))) in (let TMP_73 \def +(\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) in (let TMP_74 \def +(\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1))) in (let TMP_75 \def +(ex4_2 C T TMP_71 TMP_72 TMP_73 TMP_74) in (or TMP_67 TMP_75)))))))))) in +(let TMP_77 \def (Bind Abst) in (let TMP_92 \def (\lambda (k0: K).(let TMP_81 +\def (\lambda (e2: C).(let TMP_78 \def (CHead c3 k0 v1) in (let TMP_79 \def +(Bind Abst) in (let TMP_80 \def (CHead e2 TMP_79 v1) in (eq C TMP_78 +TMP_80))))) in (let TMP_82 \def (\lambda (e2: C).(csubt g e1 e2)) in (let +TMP_83 \def (ex2 C TMP_81 TMP_82) in (let TMP_87 \def (\lambda (e2: +C).(\lambda (v2: T).(let TMP_84 \def (CHead c3 k0 v1) in (let TMP_85 \def +(Bind Abbr) in (let TMP_86 \def (CHead e2 TMP_85 v2) in (eq C TMP_84 +TMP_86)))))) in (let TMP_88 \def (\lambda (e2: C).(\lambda (_: T).(csubt g e1 +e2))) in (let TMP_89 \def (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) +in (let TMP_90 \def (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1))) in +(let TMP_91 \def (ex4_2 C T TMP_87 TMP_88 TMP_89 TMP_90) in (or TMP_83 +TMP_91)))))))))) in (let TMP_105 \def (\lambda (c: C).((eq C c (CHead e1 +(Bind Abst) v1)) \to (let TMP_95 \def (\lambda (e2: C).(let TMP_93 \def (Bind +Abst) in (let TMP_94 \def (CHead e2 TMP_93 v1) in (eq C c3 TMP_94)))) in (let +TMP_96 \def (\lambda (e2: C).(csubt g e1 e2)) in (let TMP_97 \def (ex2 C +TMP_95 TMP_96) in (let TMP_100 \def (\lambda (e2: C).(\lambda (v2: T).(let +TMP_98 \def (Bind Abbr) in (let TMP_99 \def (CHead e2 TMP_98 v2) in (eq C c3 +TMP_99))))) in (let TMP_101 \def (\lambda (e2: C).(\lambda (_: T).(csubt g e1 +e2))) in (let TMP_102 \def (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 +v1))) in (let TMP_103 \def (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 +v1))) in (let TMP_104 \def (ex4_2 C T TMP_100 TMP_101 TMP_102 TMP_103) in (or +TMP_97 TMP_104))))))))))) in (let H9 \def (eq_ind C c1 TMP_105 H2 e1 H8) in +(let TMP_106 \def (\lambda (c: C).(csubt g c c3)) in (let H10 \def (eq_ind C +c1 TMP_106 H1 e1 H8) in (let TMP_111 \def (\lambda (e2: C).(let TMP_107 \def +(Bind Abst) in (let TMP_108 \def (CHead c3 TMP_107 v1) in (let TMP_109 \def +(Bind Abst) in (let TMP_110 \def (CHead e2 TMP_109 v1) in (eq C TMP_108 +TMP_110)))))) in (let TMP_112 \def (\lambda (e2: C).(csubt g e1 e2)) in (let +TMP_113 \def (ex2 C TMP_111 TMP_112) in (let TMP_118 \def (\lambda (e2: +C).(\lambda (v2: T).(let TMP_114 \def (Bind Abst) in (let TMP_115 \def (CHead +c3 TMP_114 v1) in (let TMP_116 \def (Bind Abbr) in (let TMP_117 \def (CHead +e2 TMP_116 v2) in (eq C TMP_115 TMP_117))))))) in (let TMP_119 \def (\lambda +(e2: C).(\lambda (_: T).(csubt g e1 e2))) in (let TMP_120 \def (\lambda (_: +C).(\lambda (v2: T).(ty3 g e1 v2 v1))) in (let TMP_121 \def (\lambda (e2: +C).(\lambda (v2: T).(ty3 g e2 v2 v1))) in (let TMP_122 \def (ex4_2 C T +TMP_118 TMP_119 TMP_120 TMP_121) in (let TMP_127 \def (\lambda (e2: C).(let +TMP_123 \def (Bind Abst) in (let TMP_124 \def (CHead c3 TMP_123 v1) in (let +TMP_125 \def (Bind Abst) in (let TMP_126 \def (CHead e2 TMP_125 v1) in (eq C +TMP_124 TMP_126)))))) in (let TMP_128 \def (\lambda (e2: C).(csubt g e1 e2)) +in (let TMP_129 \def (Bind Abst) in (let TMP_130 \def (CHead c3 TMP_129 v1) +in (let TMP_131 \def (refl_equal C TMP_130) in (let TMP_132 \def (ex_intro2 C +TMP_127 TMP_128 c3 TMP_131 H10) in (let TMP_133 \def (or_introl TMP_113 +TMP_122 TMP_132) in (let TMP_134 \def (eq_ind_r K TMP_77 TMP_92 TMP_133 k H7) +in (eq_ind_r T v1 TMP_76 TMP_134 u H6)))))))))))))))))))))))))) in (let +TMP_136 \def (TMP_135 H5) in (TMP_136 H4))))))))))))))))))))))))) in (let +TMP_160 \def (\lambda (c1: C).(\lambda (c3: C).(\lambda (_: (csubt g c1 +c3)).(\lambda (_: (((eq C c1 (CHead e1 (Bind Abst) v1)) \to (or (ex2 C (\lambda (e2: C).(eq C c3 (CHead e2 (Bind Abst) v1))) (\lambda (e2: C).(csubt g e1 e2))) (ex4_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C c3 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) (\lambda (e2: C).(\lambda -(v2: T).(ty3 g e2 v2 v1)))))))).(\lambda (k: K).(\lambda (u: T).(\lambda (H3: -(eq C (CHead c1 k u) (CHead e1 (Bind Abst) v1))).(let H4 \def (f_equal C C -(\lambda (e: C).(match e in C return (\lambda (_: C).C) with [(CSort _) -\Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k u) (CHead e1 -(Bind Abst) v1) H3) in ((let H5 \def (f_equal C K (\lambda (e: C).(match e in -C return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | (CHead _ k0 _) -\Rightarrow k0])) (CHead c1 k u) (CHead e1 (Bind Abst) v1) H3) in ((let H6 -\def (f_equal C T (\lambda (e: C).(match e in C return (\lambda (_: C).T) -with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) (CHead c1 k u) -(CHead e1 (Bind Abst) v1) H3) in (\lambda (H7: (eq K k (Bind Abst))).(\lambda -(H8: (eq C c1 e1)).(eq_ind_r T v1 (\lambda (t: T).(or (ex2 C (\lambda (e2: -C).(eq C (CHead c3 k t) (CHead e2 (Bind Abst) v1))) (\lambda (e2: C).(csubt g -e1 e2))) (ex4_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C (CHead c3 k t) -(CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g e1 -e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) (\lambda (e2: -C).(\lambda (v2: T).(ty3 g e2 v2 v1)))))) (eq_ind_r K (Bind Abst) (\lambda -(k0: K).(or (ex2 C (\lambda (e2: C).(eq C (CHead c3 k0 v1) (CHead e2 (Bind +(v2: T).(ty3 g e2 v2 v1)))))))).(\lambda (b: B).(\lambda (_: (not (eq B b +Void))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H4: (eq C (CHead c1 (Bind +Void) u1) (CHead e1 (Bind Abst) v1))).(let TMP_138 \def (Bind Void) in (let +TMP_139 \def (CHead c1 TMP_138 u1) in (let TMP_140 \def (\lambda (ee: +C).(match ee with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow +(match k with [(Bind b0) \Rightarrow (match b0 with [Abbr \Rightarrow False | +Abst \Rightarrow False | Void \Rightarrow True]) | (Flat _) \Rightarrow +False])])) in (let TMP_141 \def (Bind Abst) in (let TMP_142 \def (CHead e1 +TMP_141 v1) in (let H5 \def (eq_ind C TMP_139 TMP_140 I TMP_142 H4) in (let +TMP_147 \def (\lambda (e2: C).(let TMP_143 \def (Bind b) in (let TMP_144 \def +(CHead c3 TMP_143 u2) in (let TMP_145 \def (Bind Abst) in (let TMP_146 \def +(CHead e2 TMP_145 v1) in (eq C TMP_144 TMP_146)))))) in (let TMP_148 \def +(\lambda (e2: C).(csubt g e1 e2)) in (let TMP_149 \def (ex2 C TMP_147 +TMP_148) in (let TMP_154 \def (\lambda (e2: C).(\lambda (v2: T).(let TMP_150 +\def (Bind b) in (let TMP_151 \def (CHead c3 TMP_150 u2) in (let TMP_152 \def +(Bind Abbr) in (let TMP_153 \def (CHead e2 TMP_152 v2) in (eq C TMP_151 +TMP_153))))))) in (let TMP_155 \def (\lambda (e2: C).(\lambda (_: T).(csubt g +e1 e2))) in (let TMP_156 \def (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 +v1))) in (let TMP_157 \def (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 +v1))) in (let TMP_158 \def (ex4_2 C T TMP_154 TMP_155 TMP_156 TMP_157) in +(let TMP_159 \def (or TMP_149 TMP_158) in (False_ind TMP_159 +H5))))))))))))))))))))))))) in (let TMP_217 \def (\lambda (c1: C).(\lambda +(c3: C).(\lambda (H1: (csubt g c1 c3)).(\lambda (H2: (((eq C c1 (CHead e1 +(Bind Abst) v1)) \to (or (ex2 C (\lambda (e2: C).(eq C c3 (CHead e2 (Bind Abst) v1))) (\lambda (e2: C).(csubt g e1 e2))) (ex4_2 C T (\lambda (e2: -C).(\lambda (v2: T).(eq C (CHead c3 k0 v1) (CHead e2 (Bind Abbr) v2)))) -(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2))) (\lambda (_: C).(\lambda -(v2: T).(ty3 g e1 v2 v1))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 -v1)))))) (let H9 \def (eq_ind C c1 (\lambda (c: C).((eq C c (CHead e1 (Bind -Abst) v1)) \to (or (ex2 C (\lambda (e2: C).(eq C c3 (CHead e2 (Bind Abst) -v1))) (\lambda (e2: C).(csubt g e1 e2))) (ex4_2 C T (\lambda (e2: C).(\lambda -(v2: T).(eq C c3 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: -T).(csubt g e1 e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) -(\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1))))))) H2 e1 H8) in (let -H10 \def (eq_ind C c1 (\lambda (c: C).(csubt g c c3)) H1 e1 H8) in (or_introl -(ex2 C (\lambda (e2: C).(eq C (CHead c3 (Bind Abst) v1) (CHead e2 (Bind Abst) -v1))) (\lambda (e2: C).(csubt g e1 e2))) (ex4_2 C T (\lambda (e2: C).(\lambda -(v2: T).(eq C (CHead c3 (Bind Abst) v1) (CHead e2 (Bind Abbr) v2)))) (\lambda -(e2: C).(\lambda (_: T).(csubt g e1 e2))) (\lambda (_: C).(\lambda (v2: -T).(ty3 g e1 v2 v1))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1)))) -(ex_intro2 C (\lambda (e2: C).(eq C (CHead c3 (Bind Abst) v1) (CHead e2 (Bind -Abst) v1))) (\lambda (e2: C).(csubt g e1 e2)) c3 (refl_equal C (CHead c3 -(Bind Abst) v1)) H10)))) k H7) u H6)))) H5)) H4))))))))) (\lambda (c1: -C).(\lambda (c3: C).(\lambda (_: (csubt g c1 c3)).(\lambda (_: (((eq C c1 -(CHead e1 (Bind Abst) v1)) \to (or (ex2 C (\lambda (e2: C).(eq C c3 (CHead e2 -(Bind Abst) v1))) (\lambda (e2: C).(csubt g e1 e2))) (ex4_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C c3 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 -v1)))))))).(\lambda (b: B).(\lambda (_: (not (eq B b Void))).(\lambda (u1: -T).(\lambda (u2: T).(\lambda (H4: (eq C (CHead c1 (Bind Void) u1) (CHead e1 -(Bind Abst) v1))).(let H5 \def (eq_ind C (CHead c1 (Bind Void) u1) (\lambda -(ee: C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) -\Rightarrow False | (CHead _ k _) \Rightarrow (match k in K return (\lambda -(_: K).Prop) with [(Bind b0) \Rightarrow (match b0 in B return (\lambda (_: -B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow False | Void -\Rightarrow True]) | (Flat _) \Rightarrow False])])) I (CHead e1 (Bind Abst) -v1) H4) in (False_ind (or (ex2 C (\lambda (e2: C).(eq C (CHead c3 (Bind b) -u2) (CHead e2 (Bind Abst) v1))) (\lambda (e2: C).(csubt g e1 e2))) (ex4_2 C T -(\lambda (e2: C).(\lambda (v2: T).(eq C (CHead c3 (Bind b) u2) (CHead e2 -(Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2))) -(\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) (\lambda (e2: C).(\lambda -(v2: T).(ty3 g e2 v2 v1))))) H5))))))))))) (\lambda (c1: C).(\lambda (c3: -C).(\lambda (H1: (csubt g c1 c3)).(\lambda (H2: (((eq C c1 (CHead e1 (Bind -Abst) v1)) \to (or (ex2 C (\lambda (e2: C).(eq C c3 (CHead e2 (Bind Abst) -v1))) (\lambda (e2: C).(csubt g e1 e2))) (ex4_2 C T (\lambda (e2: C).(\lambda -(v2: T).(eq C c3 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: -T).(csubt g e1 e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) -(\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1)))))))).(\lambda (u: -T).(\lambda (t: T).(\lambda (H3: (ty3 g c1 u t)).(\lambda (H4: (ty3 g c3 u -t)).(\lambda (H5: (eq C (CHead c1 (Bind Abst) t) (CHead e1 (Bind Abst) -v1))).(let H6 \def (f_equal C C (\lambda (e: C).(match e in C return (\lambda -(_: C).C) with [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) -(CHead c1 (Bind Abst) t) (CHead e1 (Bind Abst) v1) H5) in ((let H7 \def -(f_equal C T (\lambda (e: C).(match e in C return (\lambda (_: C).T) with -[(CSort _) \Rightarrow t | (CHead _ _ t0) \Rightarrow t0])) (CHead c1 (Bind -Abst) t) (CHead e1 (Bind Abst) v1) H5) in (\lambda (H8: (eq C c1 e1)).(let H9 -\def (eq_ind T t (\lambda (t0: T).(ty3 g c3 u t0)) H4 v1 H7) in (let H10 \def -(eq_ind T t (\lambda (t0: T).(ty3 g c1 u t0)) H3 v1 H7) in (let H11 \def -(eq_ind C c1 (\lambda (c: C).(ty3 g c u v1)) H10 e1 H8) in (let H12 \def -(eq_ind C c1 (\lambda (c: C).((eq C c (CHead e1 (Bind Abst) v1)) \to (or (ex2 -C (\lambda (e2: C).(eq C c3 (CHead e2 (Bind Abst) v1))) (\lambda (e2: -C).(csubt g e1 e2))) (ex4_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C c3 -(CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g e1 -e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) (\lambda (e2: -C).(\lambda (v2: T).(ty3 g e2 v2 v1))))))) H2 e1 H8) in (let H13 \def (eq_ind -C c1 (\lambda (c: C).(csubt g c c3)) H1 e1 H8) in (or_intror (ex2 C (\lambda -(e2: C).(eq C (CHead c3 (Bind Abbr) u) (CHead e2 (Bind Abst) v1))) (\lambda -(e2: C).(csubt g e1 e2))) (ex4_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C -(CHead c3 (Bind Abbr) u) (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: -C).(\lambda (_: T).(csubt g e1 e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g -e1 v2 v1))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1)))) -(ex4_2_intro C T (\lambda (e2: C).(\lambda (v2: T).(eq C (CHead c3 (Bind -Abbr) u) (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt -g e1 e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) (\lambda (e2: -C).(\lambda (v2: T).(ty3 g e2 v2 v1))) c3 u (refl_equal C (CHead c3 (Bind -Abbr) u)) H13 H11 H9))))))))) H6))))))))))) y c2 H0))) H))))). -(* COMMENTS -Initial nodes: 2362 -END *) +v1)))))))).(\lambda (u: T).(\lambda (t: T).(\lambda (H3: (ty3 g c1 u +t)).(\lambda (H4: (ty3 g c3 u t)).(\lambda (H5: (eq C (CHead c1 (Bind Abst) +t) (CHead e1 (Bind Abst) v1))).(let TMP_161 \def (\lambda (e: C).(match e +with [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) in (let +TMP_162 \def (Bind Abst) in (let TMP_163 \def (CHead c1 TMP_162 t) in (let +TMP_164 \def (Bind Abst) in (let TMP_165 \def (CHead e1 TMP_164 v1) in (let +H6 \def (f_equal C C TMP_161 TMP_163 TMP_165 H5) in (let TMP_166 \def +(\lambda (e: C).(match e with [(CSort _) \Rightarrow t | (CHead _ _ t0) +\Rightarrow t0])) in (let TMP_167 \def (Bind Abst) in (let TMP_168 \def +(CHead c1 TMP_167 t) in (let TMP_169 \def (Bind Abst) in (let TMP_170 \def +(CHead e1 TMP_169 v1) in (let H7 \def (f_equal C T TMP_166 TMP_168 TMP_170 +H5) in (let TMP_216 \def (\lambda (H8: (eq C c1 e1)).(let TMP_171 \def +(\lambda (t0: T).(ty3 g c3 u t0)) in (let H9 \def (eq_ind T t TMP_171 H4 v1 +H7) in (let TMP_172 \def (\lambda (t0: T).(ty3 g c1 u t0)) in (let H10 \def +(eq_ind T t TMP_172 H3 v1 H7) in (let TMP_173 \def (\lambda (c: C).(ty3 g c u +v1)) in (let H11 \def (eq_ind C c1 TMP_173 H10 e1 H8) in (let TMP_186 \def +(\lambda (c: C).((eq C c (CHead e1 (Bind Abst) v1)) \to (let TMP_176 \def +(\lambda (e2: C).(let TMP_174 \def (Bind Abst) in (let TMP_175 \def (CHead e2 +TMP_174 v1) in (eq C c3 TMP_175)))) in (let TMP_177 \def (\lambda (e2: +C).(csubt g e1 e2)) in (let TMP_178 \def (ex2 C TMP_176 TMP_177) in (let +TMP_181 \def (\lambda (e2: C).(\lambda (v2: T).(let TMP_179 \def (Bind Abbr) +in (let TMP_180 \def (CHead e2 TMP_179 v2) in (eq C c3 TMP_180))))) in (let +TMP_182 \def (\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2))) in (let +TMP_183 \def (\lambda (_: C).(\lambda (v2: T).(ty3 g e1 v2 v1))) in (let +TMP_184 \def (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 v1))) in (let +TMP_185 \def (ex4_2 C T TMP_181 TMP_182 TMP_183 TMP_184) in (or TMP_178 +TMP_185))))))))))) in (let H12 \def (eq_ind C c1 TMP_186 H2 e1 H8) in (let +TMP_187 \def (\lambda (c: C).(csubt g c c3)) in (let H13 \def (eq_ind C c1 +TMP_187 H1 e1 H8) in (let TMP_192 \def (\lambda (e2: C).(let TMP_188 \def +(Bind Abbr) in (let TMP_189 \def (CHead c3 TMP_188 u) in (let TMP_190 \def +(Bind Abst) in (let TMP_191 \def (CHead e2 TMP_190 v1) in (eq C TMP_189 +TMP_191)))))) in (let TMP_193 \def (\lambda (e2: C).(csubt g e1 e2)) in (let +TMP_194 \def (ex2 C TMP_192 TMP_193) in (let TMP_199 \def (\lambda (e2: +C).(\lambda (v2: T).(let TMP_195 \def (Bind Abbr) in (let TMP_196 \def (CHead +c3 TMP_195 u) in (let TMP_197 \def (Bind Abbr) in (let TMP_198 \def (CHead e2 +TMP_197 v2) in (eq C TMP_196 TMP_198))))))) in (let TMP_200 \def (\lambda +(e2: C).(\lambda (_: T).(csubt g e1 e2))) in (let TMP_201 \def (\lambda (_: +C).(\lambda (v2: T).(ty3 g e1 v2 v1))) in (let TMP_202 \def (\lambda (e2: +C).(\lambda (v2: T).(ty3 g e2 v2 v1))) in (let TMP_203 \def (ex4_2 C T +TMP_199 TMP_200 TMP_201 TMP_202) in (let TMP_208 \def (\lambda (e2: +C).(\lambda (v2: T).(let TMP_204 \def (Bind Abbr) in (let TMP_205 \def (CHead +c3 TMP_204 u) in (let TMP_206 \def (Bind Abbr) in (let TMP_207 \def (CHead e2 +TMP_206 v2) in (eq C TMP_205 TMP_207))))))) in (let TMP_209 \def (\lambda +(e2: C).(\lambda (_: T).(csubt g e1 e2))) in (let TMP_210 \def (\lambda (_: +C).(\lambda (v2: T).(ty3 g e1 v2 v1))) in (let TMP_211 \def (\lambda (e2: +C).(\lambda (v2: T).(ty3 g e2 v2 v1))) in (let TMP_212 \def (Bind Abbr) in +(let TMP_213 \def (CHead c3 TMP_212 u) in (let TMP_214 \def (refl_equal C +TMP_213) in (let TMP_215 \def (ex4_2_intro C T TMP_208 TMP_209 TMP_210 +TMP_211 c3 u TMP_214 H13 H11 H9) in (or_intror TMP_194 TMP_203 +TMP_215)))))))))))))))))))))))))))) in (TMP_216 H6))))))))))))))))))))))) in +(csubt_ind g TMP_29 TMP_49 TMP_137 TMP_160 TMP_217 y c2 H0)))))))) in +(insert_eq C TMP_2 TMP_3 TMP_16 TMP_218 H)))))))))). theorem csubt_gen_flat: \forall (g: G).(\forall (e1: C).(\forall (c2: C).(\forall (v: T).(\forall @@ -222,65 +347,94 @@ theorem csubt_gen_flat: c2 (CHead e2 (Flat f) v))) (\lambda (e2: C).(csubt g e1 e2)))))))) \def \lambda (g: G).(\lambda (e1: C).(\lambda (c2: C).(\lambda (v: T).(\lambda -(f: F).(\lambda (H: (csubt g (CHead e1 (Flat f) v) c2)).(insert_eq C (CHead -e1 (Flat f) v) (\lambda (c: C).(csubt g c c2)) (\lambda (_: C).(ex2 C -(\lambda (e2: C).(eq C c2 (CHead e2 (Flat f) v))) (\lambda (e2: C).(csubt g -e1 e2)))) (\lambda (y: C).(\lambda (H0: (csubt g y c2)).(csubt_ind g (\lambda -(c: C).(\lambda (c0: C).((eq C c (CHead e1 (Flat f) v)) \to (ex2 C (\lambda -(e2: C).(eq C c0 (CHead e2 (Flat f) v))) (\lambda (e2: C).(csubt g e1 -e2)))))) (\lambda (n: nat).(\lambda (H1: (eq C (CSort n) (CHead e1 (Flat f) -v))).(let H2 \def (eq_ind C (CSort n) (\lambda (ee: C).(match ee in C return -(\lambda (_: C).Prop) with [(CSort _) \Rightarrow True | (CHead _ _ _) -\Rightarrow False])) I (CHead e1 (Flat f) v) H1) in (False_ind (ex2 C -(\lambda (e2: C).(eq C (CSort n) (CHead e2 (Flat f) v))) (\lambda (e2: -C).(csubt g e1 e2))) H2)))) (\lambda (c1: C).(\lambda (c3: C).(\lambda (H1: -(csubt g c1 c3)).(\lambda (H2: (((eq C c1 (CHead e1 (Flat f) v)) \to (ex2 C -(\lambda (e2: C).(eq C c3 (CHead e2 (Flat f) v))) (\lambda (e2: C).(csubt g -e1 e2)))))).(\lambda (k: K).(\lambda (u: T).(\lambda (H3: (eq C (CHead c1 k -u) (CHead e1 (Flat f) v))).(let H4 \def (f_equal C C (\lambda (e: C).(match e -in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow c1 | (CHead c _ _) -\Rightarrow c])) (CHead c1 k u) (CHead e1 (Flat f) v) H3) in ((let H5 \def -(f_equal C K (\lambda (e: C).(match e in C return (\lambda (_: C).K) with -[(CSort _) \Rightarrow k | (CHead _ k0 _) \Rightarrow k0])) (CHead c1 k u) -(CHead e1 (Flat f) v) H3) in ((let H6 \def (f_equal C T (\lambda (e: -C).(match e in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | -(CHead _ _ t) \Rightarrow t])) (CHead c1 k u) (CHead e1 (Flat f) v) H3) in -(\lambda (H7: (eq K k (Flat f))).(\lambda (H8: (eq C c1 e1)).(eq_ind_r T v -(\lambda (t: T).(ex2 C (\lambda (e2: C).(eq C (CHead c3 k t) (CHead e2 (Flat -f) v))) (\lambda (e2: C).(csubt g e1 e2)))) (eq_ind_r K (Flat f) (\lambda -(k0: K).(ex2 C (\lambda (e2: C).(eq C (CHead c3 k0 v) (CHead e2 (Flat f) v))) -(\lambda (e2: C).(csubt g e1 e2)))) (let H9 \def (eq_ind C c1 (\lambda (c: -C).((eq C c (CHead e1 (Flat f) v)) \to (ex2 C (\lambda (e2: C).(eq C c3 -(CHead e2 (Flat f) v))) (\lambda (e2: C).(csubt g e1 e2))))) H2 e1 H8) in -(let H10 \def (eq_ind C c1 (\lambda (c: C).(csubt g c c3)) H1 e1 H8) in -(ex_intro2 C (\lambda (e2: C).(eq C (CHead c3 (Flat f) v) (CHead e2 (Flat f) -v))) (\lambda (e2: C).(csubt g e1 e2)) c3 (refl_equal C (CHead c3 (Flat f) -v)) H10))) k H7) u H6)))) H5)) H4))))))))) (\lambda (c1: C).(\lambda (c3: -C).(\lambda (_: (csubt g c1 c3)).(\lambda (_: (((eq C c1 (CHead e1 (Flat f) -v)) \to (ex2 C (\lambda (e2: C).(eq C c3 (CHead e2 (Flat f) v))) (\lambda +(f: F).(\lambda (H: (csubt g (CHead e1 (Flat f) v) c2)).(let TMP_1 \def (Flat +f) in (let TMP_2 \def (CHead e1 TMP_1 v) in (let TMP_3 \def (\lambda (c: +C).(csubt g c c2)) in (let TMP_8 \def (\lambda (_: C).(let TMP_6 \def +(\lambda (e2: C).(let TMP_4 \def (Flat f) in (let TMP_5 \def (CHead e2 TMP_4 +v) in (eq C c2 TMP_5)))) in (let TMP_7 \def (\lambda (e2: C).(csubt g e1 e2)) +in (ex2 C TMP_6 TMP_7)))) in (let TMP_96 \def (\lambda (y: C).(\lambda (H0: +(csubt g y c2)).(let TMP_13 \def (\lambda (c: C).(\lambda (c0: C).((eq C c +(CHead e1 (Flat f) v)) \to (let TMP_11 \def (\lambda (e2: C).(let TMP_9 \def +(Flat f) in (let TMP_10 \def (CHead e2 TMP_9 v) in (eq C c0 TMP_10)))) in +(let TMP_12 \def (\lambda (e2: C).(csubt g e1 e2)) in (ex2 C TMP_11 +TMP_12)))))) in (let TMP_24 \def (\lambda (n: nat).(\lambda (H1: (eq C (CSort +n) (CHead e1 (Flat f) v))).(let TMP_14 \def (CSort n) in (let TMP_15 \def +(\lambda (ee: C).(match ee with [(CSort _) \Rightarrow True | (CHead _ _ _) +\Rightarrow False])) in (let TMP_16 \def (Flat f) in (let TMP_17 \def (CHead +e1 TMP_16 v) in (let H2 \def (eq_ind C TMP_14 TMP_15 I TMP_17 H1) in (let +TMP_21 \def (\lambda (e2: C).(let TMP_18 \def (CSort n) in (let TMP_19 \def +(Flat f) in (let TMP_20 \def (CHead e2 TMP_19 v) in (eq C TMP_18 TMP_20))))) +in (let TMP_22 \def (\lambda (e2: C).(csubt g e1 e2)) in (let TMP_23 \def +(ex2 C TMP_21 TMP_22) in (False_ind TMP_23 H2))))))))))) in (let TMP_69 \def +(\lambda (c1: C).(\lambda (c3: C).(\lambda (H1: (csubt g c1 c3)).(\lambda +(H2: (((eq C c1 (CHead e1 (Flat f) v)) \to (ex2 C (\lambda (e2: C).(eq C c3 +(CHead e2 (Flat f) v))) (\lambda (e2: C).(csubt g e1 e2)))))).(\lambda (k: +K).(\lambda (u: T).(\lambda (H3: (eq C (CHead c1 k u) (CHead e1 (Flat f) +v))).(let TMP_25 \def (\lambda (e: C).(match e with [(CSort _) \Rightarrow c1 +| (CHead c _ _) \Rightarrow c])) in (let TMP_26 \def (CHead c1 k u) in (let +TMP_27 \def (Flat f) in (let TMP_28 \def (CHead e1 TMP_27 v) in (let H4 \def +(f_equal C C TMP_25 TMP_26 TMP_28 H3) in (let TMP_29 \def (\lambda (e: +C).(match e with [(CSort _) \Rightarrow k | (CHead _ k0 _) \Rightarrow k0])) +in (let TMP_30 \def (CHead c1 k u) in (let TMP_31 \def (Flat f) in (let +TMP_32 \def (CHead e1 TMP_31 v) in (let H5 \def (f_equal C K TMP_29 TMP_30 +TMP_32 H3) in (let TMP_33 \def (\lambda (e: C).(match e with [(CSort _) +\Rightarrow u | (CHead _ _ t) \Rightarrow t])) in (let TMP_34 \def (CHead c1 +k u) in (let TMP_35 \def (Flat f) in (let TMP_36 \def (CHead e1 TMP_35 v) in +(let H6 \def (f_equal C T TMP_33 TMP_34 TMP_36 H3) in (let TMP_67 \def +(\lambda (H7: (eq K k (Flat f))).(\lambda (H8: (eq C c1 e1)).(let TMP_42 \def +(\lambda (t: T).(let TMP_40 \def (\lambda (e2: C).(let TMP_37 \def (CHead c3 +k t) in (let TMP_38 \def (Flat f) in (let TMP_39 \def (CHead e2 TMP_38 v) in +(eq C TMP_37 TMP_39))))) in (let TMP_41 \def (\lambda (e2: C).(csubt g e1 +e2)) in (ex2 C TMP_40 TMP_41)))) in (let TMP_43 \def (Flat f) in (let TMP_49 +\def (\lambda (k0: K).(let TMP_47 \def (\lambda (e2: C).(let TMP_44 \def +(CHead c3 k0 v) in (let TMP_45 \def (Flat f) in (let TMP_46 \def (CHead e2 +TMP_45 v) in (eq C TMP_44 TMP_46))))) in (let TMP_48 \def (\lambda (e2: +C).(csubt g e1 e2)) in (ex2 C TMP_47 TMP_48)))) in (let TMP_54 \def (\lambda +(c: C).((eq C c (CHead e1 (Flat f) v)) \to (let TMP_52 \def (\lambda (e2: +C).(let TMP_50 \def (Flat f) in (let TMP_51 \def (CHead e2 TMP_50 v) in (eq C +c3 TMP_51)))) in (let TMP_53 \def (\lambda (e2: C).(csubt g e1 e2)) in (ex2 C +TMP_52 TMP_53))))) in (let H9 \def (eq_ind C c1 TMP_54 H2 e1 H8) in (let +TMP_55 \def (\lambda (c: C).(csubt g c c3)) in (let H10 \def (eq_ind C c1 +TMP_55 H1 e1 H8) in (let TMP_60 \def (\lambda (e2: C).(let TMP_56 \def (Flat +f) in (let TMP_57 \def (CHead c3 TMP_56 v) in (let TMP_58 \def (Flat f) in +(let TMP_59 \def (CHead e2 TMP_58 v) in (eq C TMP_57 TMP_59)))))) in (let +TMP_61 \def (\lambda (e2: C).(csubt g e1 e2)) in (let TMP_62 \def (Flat f) in +(let TMP_63 \def (CHead c3 TMP_62 v) in (let TMP_64 \def (refl_equal C +TMP_63) in (let TMP_65 \def (ex_intro2 C TMP_60 TMP_61 c3 TMP_64 H10) in (let +TMP_66 \def (eq_ind_r K TMP_43 TMP_49 TMP_65 k H7) in (eq_ind_r T v TMP_42 +TMP_66 u H6))))))))))))))))) in (let TMP_68 \def (TMP_67 H5) in (TMP_68 +H4))))))))))))))))))))))))) in (let TMP_82 \def (\lambda (c1: C).(\lambda +(c3: C).(\lambda (_: (csubt g c1 c3)).(\lambda (_: (((eq C c1 (CHead e1 (Flat +f) v)) \to (ex2 C (\lambda (e2: C).(eq C c3 (CHead e2 (Flat f) v))) (\lambda (e2: C).(csubt g e1 e2)))))).(\lambda (b: B).(\lambda (_: (not (eq B b Void))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H4: (eq C (CHead c1 (Bind -Void) u1) (CHead e1 (Flat f) v))).(let H5 \def (eq_ind C (CHead c1 (Bind -Void) u1) (\lambda (ee: C).(match ee in C return (\lambda (_: C).Prop) with -[(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match k in K return -(\lambda (_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow -False])])) I (CHead e1 (Flat f) v) H4) in (False_ind (ex2 C (\lambda (e2: -C).(eq C (CHead c3 (Bind b) u2) (CHead e2 (Flat f) v))) (\lambda (e2: -C).(csubt g e1 e2))) H5))))))))))) (\lambda (c1: C).(\lambda (c3: C).(\lambda -(_: (csubt g c1 c3)).(\lambda (_: (((eq C c1 (CHead e1 (Flat f) v)) \to (ex2 -C (\lambda (e2: C).(eq C c3 (CHead e2 (Flat f) v))) (\lambda (e2: C).(csubt g -e1 e2)))))).(\lambda (u: T).(\lambda (t: T).(\lambda (_: (ty3 g c1 u +Void) u1) (CHead e1 (Flat f) v))).(let TMP_70 \def (Bind Void) in (let TMP_71 +\def (CHead c1 TMP_70 u1) in (let TMP_72 \def (\lambda (ee: C).(match ee with +[(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match k with [(Bind +_) \Rightarrow True | (Flat _) \Rightarrow False])])) in (let TMP_73 \def +(Flat f) in (let TMP_74 \def (CHead e1 TMP_73 v) in (let H5 \def (eq_ind C +TMP_71 TMP_72 I TMP_74 H4) in (let TMP_79 \def (\lambda (e2: C).(let TMP_75 +\def (Bind b) in (let TMP_76 \def (CHead c3 TMP_75 u2) in (let TMP_77 \def +(Flat f) in (let TMP_78 \def (CHead e2 TMP_77 v) in (eq C TMP_76 TMP_78)))))) +in (let TMP_80 \def (\lambda (e2: C).(csubt g e1 e2)) in (let TMP_81 \def +(ex2 C TMP_79 TMP_80) in (False_ind TMP_81 H5))))))))))))))))))) in (let +TMP_95 \def (\lambda (c1: C).(\lambda (c3: C).(\lambda (_: (csubt g c1 +c3)).(\lambda (_: (((eq C c1 (CHead e1 (Flat f) v)) \to (ex2 C (\lambda (e2: +C).(eq C c3 (CHead e2 (Flat f) v))) (\lambda (e2: C).(csubt g e1 +e2)))))).(\lambda (u: T).(\lambda (t: T).(\lambda (_: (ty3 g c1 u t)).(\lambda (_: (ty3 g c3 u t)).(\lambda (H5: (eq C (CHead c1 (Bind Abst) t) -(CHead e1 (Flat f) v))).(let H6 \def (eq_ind C (CHead c1 (Bind Abst) t) -(\lambda (ee: C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) -\Rightarrow False | (CHead _ k _) \Rightarrow (match k in K return (\lambda -(_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow -False])])) I (CHead e1 (Flat f) v) H5) in (False_ind (ex2 C (\lambda (e2: -C).(eq C (CHead c3 (Bind Abbr) u) (CHead e2 (Flat f) v))) (\lambda (e2: -C).(csubt g e1 e2))) H6))))))))))) y c2 H0))) H)))))). -(* COMMENTS -Initial nodes: 1103 -END *) +(CHead e1 (Flat f) v))).(let TMP_83 \def (Bind Abst) in (let TMP_84 \def +(CHead c1 TMP_83 t) in (let TMP_85 \def (\lambda (ee: C).(match ee with +[(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match k with [(Bind +_) \Rightarrow True | (Flat _) \Rightarrow False])])) in (let TMP_86 \def +(Flat f) in (let TMP_87 \def (CHead e1 TMP_86 v) in (let H6 \def (eq_ind C +TMP_84 TMP_85 I TMP_87 H5) in (let TMP_92 \def (\lambda (e2: C).(let TMP_88 +\def (Bind Abbr) in (let TMP_89 \def (CHead c3 TMP_88 u) in (let TMP_90 \def +(Flat f) in (let TMP_91 \def (CHead e2 TMP_90 v) in (eq C TMP_89 TMP_91)))))) +in (let TMP_93 \def (\lambda (e2: C).(csubt g e1 e2)) in (let TMP_94 \def +(ex2 C TMP_92 TMP_93) in (False_ind TMP_94 H6))))))))))))))))))) in +(csubt_ind g TMP_13 TMP_24 TMP_69 TMP_82 TMP_95 y c2 H0)))))))) in (insert_eq +C TMP_2 TMP_3 TMP_8 TMP_96 H))))))))))). theorem csubt_gen_bind: \forall (g: G).(\forall (b1: B).(\forall (e1: C).(\forall (c2: C).(\forall @@ -289,110 +443,158 @@ B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2)))))))))) \def \lambda (g: G).(\lambda (b1: B).(\lambda (e1: C).(\lambda (c2: C).(\lambda -(v1: T).(\lambda (H: (csubt g (CHead e1 (Bind b1) v1) c2)).(insert_eq C -(CHead e1 (Bind b1) v1) (\lambda (c: C).(csubt g c c2)) (\lambda (_: -C).(ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c2 -(CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: -T).(csubt g e1 e2)))))) (\lambda (y: C).(\lambda (H0: (csubt g y -c2)).(csubt_ind g (\lambda (c: C).(\lambda (c0: C).((eq C c (CHead e1 (Bind -b1) v1)) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: -T).(eq C c0 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: -C).(\lambda (_: T).(csubt g e1 e2)))))))) (\lambda (n: nat).(\lambda (H1: (eq -C (CSort n) (CHead e1 (Bind b1) v1))).(let H2 \def (eq_ind C (CSort n) -(\lambda (ee: C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) -\Rightarrow True | (CHead _ _ _) \Rightarrow False])) I (CHead e1 (Bind b1) -v1) H1) in (False_ind (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda -(v2: T).(eq C (CSort n) (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda -(e2: C).(\lambda (_: T).(csubt g e1 e2))))) H2)))) (\lambda (c1: C).(\lambda +(v1: T).(\lambda (H: (csubt g (CHead e1 (Bind b1) v1) c2)).(let TMP_1 \def +(Bind b1) in (let TMP_2 \def (CHead e1 TMP_1 v1) in (let TMP_3 \def (\lambda +(c: C).(csubt g c c2)) in (let TMP_8 \def (\lambda (_: C).(let TMP_6 \def +(\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(let TMP_4 \def (Bind b2) +in (let TMP_5 \def (CHead e2 TMP_4 v2) in (eq C c2 TMP_5)))))) in (let TMP_7 +\def (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2)))) in +(ex2_3 B C T TMP_6 TMP_7)))) in (let TMP_149 \def (\lambda (y: C).(\lambda +(H0: (csubt g y c2)).(let TMP_13 \def (\lambda (c: C).(\lambda (c0: C).((eq C +c (CHead e1 (Bind b1) v1)) \to (let TMP_11 \def (\lambda (b2: B).(\lambda +(e2: C).(\lambda (v2: T).(let TMP_9 \def (Bind b2) in (let TMP_10 \def (CHead +e2 TMP_9 v2) in (eq C c0 TMP_10)))))) in (let TMP_12 \def (\lambda (_: +B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2)))) in (ex2_3 B C T TMP_11 +TMP_12)))))) in (let TMP_24 \def (\lambda (n: nat).(\lambda (H1: (eq C (CSort +n) (CHead e1 (Bind b1) v1))).(let TMP_14 \def (CSort n) in (let TMP_15 \def +(\lambda (ee: C).(match ee with [(CSort _) \Rightarrow True | (CHead _ _ _) +\Rightarrow False])) in (let TMP_16 \def (Bind b1) in (let TMP_17 \def (CHead +e1 TMP_16 v1) in (let H2 \def (eq_ind C TMP_14 TMP_15 I TMP_17 H1) in (let +TMP_21 \def (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(let TMP_18 +\def (CSort n) in (let TMP_19 \def (Bind b2) in (let TMP_20 \def (CHead e2 +TMP_19 v2) in (eq C TMP_18 TMP_20))))))) in (let TMP_22 \def (\lambda (_: +B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2)))) in (let TMP_23 \def +(ex2_3 B C T TMP_21 TMP_22) in (False_ind TMP_23 H2))))))))))) in (let TMP_69 +\def (\lambda (c1: C).(\lambda (c3: C).(\lambda (H1: (csubt g c1 +c3)).(\lambda (H2: (((eq C c1 (CHead e1 (Bind b1) v1)) \to (ex2_3 B C T +(\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c3 (CHead e2 (Bind +b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 +e2)))))))).(\lambda (k: K).(\lambda (u: T).(\lambda (H3: (eq C (CHead c1 k u) +(CHead e1 (Bind b1) v1))).(let TMP_25 \def (\lambda (e: C).(match e with +[(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) in (let TMP_26 +\def (CHead c1 k u) in (let TMP_27 \def (Bind b1) in (let TMP_28 \def (CHead +e1 TMP_27 v1) in (let H4 \def (f_equal C C TMP_25 TMP_26 TMP_28 H3) in (let +TMP_29 \def (\lambda (e: C).(match e with [(CSort _) \Rightarrow k | (CHead _ +k0 _) \Rightarrow k0])) in (let TMP_30 \def (CHead c1 k u) in (let TMP_31 +\def (Bind b1) in (let TMP_32 \def (CHead e1 TMP_31 v1) in (let H5 \def +(f_equal C K TMP_29 TMP_30 TMP_32 H3) in (let TMP_33 \def (\lambda (e: +C).(match e with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) in +(let TMP_34 \def (CHead c1 k u) in (let TMP_35 \def (Bind b1) in (let TMP_36 +\def (CHead e1 TMP_35 v1) in (let H6 \def (f_equal C T TMP_33 TMP_34 TMP_36 +H3) in (let TMP_67 \def (\lambda (H7: (eq K k (Bind b1))).(\lambda (H8: (eq C +c1 e1)).(let TMP_42 \def (\lambda (t: T).(let TMP_40 \def (\lambda (b2: +B).(\lambda (e2: C).(\lambda (v2: T).(let TMP_37 \def (CHead c3 k t) in (let +TMP_38 \def (Bind b2) in (let TMP_39 \def (CHead e2 TMP_38 v2) in (eq C +TMP_37 TMP_39))))))) in (let TMP_41 \def (\lambda (_: B).(\lambda (e2: +C).(\lambda (_: T).(csubt g e1 e2)))) in (ex2_3 B C T TMP_40 TMP_41)))) in +(let TMP_43 \def (Bind b1) in (let TMP_49 \def (\lambda (k0: K).(let TMP_47 +\def (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(let TMP_44 \def +(CHead c3 k0 v1) in (let TMP_45 \def (Bind b2) in (let TMP_46 \def (CHead e2 +TMP_45 v2) in (eq C TMP_44 TMP_46))))))) in (let TMP_48 \def (\lambda (_: +B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2)))) in (ex2_3 B C T TMP_47 +TMP_48)))) in (let TMP_54 \def (\lambda (c: C).((eq C c (CHead e1 (Bind b1) +v1)) \to (let TMP_52 \def (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: +T).(let TMP_50 \def (Bind b2) in (let TMP_51 \def (CHead e2 TMP_50 v2) in (eq +C c3 TMP_51)))))) in (let TMP_53 \def (\lambda (_: B).(\lambda (e2: +C).(\lambda (_: T).(csubt g e1 e2)))) in (ex2_3 B C T TMP_52 TMP_53))))) in +(let H9 \def (eq_ind C c1 TMP_54 H2 e1 H8) in (let TMP_55 \def (\lambda (c: +C).(csubt g c c3)) in (let H10 \def (eq_ind C c1 TMP_55 H1 e1 H8) in (let +TMP_60 \def (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(let TMP_56 +\def (Bind b1) in (let TMP_57 \def (CHead c3 TMP_56 v1) in (let TMP_58 \def +(Bind b2) in (let TMP_59 \def (CHead e2 TMP_58 v2) in (eq C TMP_57 +TMP_59)))))))) in (let TMP_61 \def (\lambda (_: B).(\lambda (e2: C).(\lambda +(_: T).(csubt g e1 e2)))) in (let TMP_62 \def (Bind b1) in (let TMP_63 \def +(CHead c3 TMP_62 v1) in (let TMP_64 \def (refl_equal C TMP_63) in (let TMP_65 +\def (ex2_3_intro B C T TMP_60 TMP_61 b1 c3 v1 TMP_64 H10) in (let TMP_66 +\def (eq_ind_r K TMP_43 TMP_49 TMP_65 k H7) in (eq_ind_r T v1 TMP_42 TMP_66 u +H6))))))))))))))))) in (let TMP_68 \def (TMP_67 H5) in (TMP_68 +H4))))))))))))))))))))))))) in (let TMP_107 \def (\lambda (c1: C).(\lambda (c3: C).(\lambda (H1: (csubt g c1 c3)).(\lambda (H2: (((eq C c1 (CHead e1 (Bind b1) v1)) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c3 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: -C).(\lambda (_: T).(csubt g e1 e2)))))))).(\lambda (k: K).(\lambda (u: -T).(\lambda (H3: (eq C (CHead c1 k u) (CHead e1 (Bind b1) v1))).(let H4 \def -(f_equal C C (\lambda (e: C).(match e in C return (\lambda (_: C).C) with -[(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) (CHead c1 k u) -(CHead e1 (Bind b1) v1) H3) in ((let H5 \def (f_equal C K (\lambda (e: -C).(match e in C return (\lambda (_: C).K) with [(CSort _) \Rightarrow k | -(CHead _ k0 _) \Rightarrow k0])) (CHead c1 k u) (CHead e1 (Bind b1) v1) H3) -in ((let H6 \def (f_equal C T (\lambda (e: C).(match e in C return (\lambda -(_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t) \Rightarrow t])) -(CHead c1 k u) (CHead e1 (Bind b1) v1) H3) in (\lambda (H7: (eq K k (Bind -b1))).(\lambda (H8: (eq C c1 e1)).(eq_ind_r T v1 (\lambda (t: T).(ex2_3 B C T -(\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C (CHead c3 k t) -(CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: -T).(csubt g e1 e2)))))) (eq_ind_r K (Bind b1) (\lambda (k0: K).(ex2_3 B C T -(\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C (CHead c3 k0 v1) -(CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: -T).(csubt g e1 e2)))))) (let H9 \def (eq_ind C c1 (\lambda (c: C).((eq C c -(CHead e1 (Bind b1) v1)) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: -C).(\lambda (v2: T).(eq C c3 (CHead e2 (Bind b2) v2))))) (\lambda (_: -B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2))))))) H2 e1 H8) in (let -H10 \def (eq_ind C c1 (\lambda (c: C).(csubt g c c3)) H1 e1 H8) in -(ex2_3_intro B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C -(CHead c3 (Bind b1) v1) (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda -(e2: C).(\lambda (_: T).(csubt g e1 e2)))) b1 c3 v1 (refl_equal C (CHead c3 -(Bind b1) v1)) H10))) k H7) u H6)))) H5)) H4))))))))) (\lambda (c1: -C).(\lambda (c3: C).(\lambda (H1: (csubt g c1 c3)).(\lambda (H2: (((eq C c1 -(CHead e1 (Bind b1) v1)) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: -C).(\lambda (v2: T).(eq C c3 (CHead e2 (Bind b2) v2))))) (\lambda (_: -B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2)))))))).(\lambda (b: -B).(\lambda (_: (not (eq B b Void))).(\lambda (u1: T).(\lambda (u2: -T).(\lambda (H4: (eq C (CHead c1 (Bind Void) u1) (CHead e1 (Bind b1) -v1))).(let H5 \def (f_equal C C (\lambda (e: C).(match e in C return (\lambda -(_: C).C) with [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) -(CHead c1 (Bind Void) u1) (CHead e1 (Bind b1) v1) H4) in ((let H6 \def -(f_equal C B (\lambda (e: C).(match e in C return (\lambda (_: C).B) with -[(CSort _) \Rightarrow Void | (CHead _ k _) \Rightarrow (match k in K return -(\lambda (_: K).B) with [(Bind b0) \Rightarrow b0 | (Flat _) \Rightarrow -Void])])) (CHead c1 (Bind Void) u1) (CHead e1 (Bind b1) v1) H4) in ((let H7 -\def (f_equal C T (\lambda (e: C).(match e in C return (\lambda (_: C).T) -with [(CSort _) \Rightarrow u1 | (CHead _ _ t) \Rightarrow t])) (CHead c1 -(Bind Void) u1) (CHead e1 (Bind b1) v1) H4) in (\lambda (H8: (eq B Void -b1)).(\lambda (H9: (eq C c1 e1)).(let H10 \def (eq_ind C c1 (\lambda (c: -C).((eq C c (CHead e1 (Bind b1) v1)) \to (ex2_3 B C T (\lambda (b2: -B).(\lambda (e2: C).(\lambda (v2: T).(eq C c3 (CHead e2 (Bind b2) v2))))) -(\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2))))))) H2 e1 -H9) in (let H11 \def (eq_ind C c1 (\lambda (c: C).(csubt g c c3)) H1 e1 H9) -in (let H12 \def (eq_ind_r B b1 (\lambda (b0: B).((eq C e1 (CHead e1 (Bind -b0) v1)) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: -T).(eq C c3 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: -C).(\lambda (_: T).(csubt g e1 e2))))))) H10 Void H8) in (ex2_3_intro B C T -(\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C (CHead c3 (Bind b) -u2) (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: -T).(csubt g e1 e2)))) b c3 u2 (refl_equal C (CHead c3 (Bind b) u2)) -H11))))))) H6)) H5))))))))))) (\lambda (c1: C).(\lambda (c3: C).(\lambda (H1: -(csubt g c1 c3)).(\lambda (H2: (((eq C c1 (CHead e1 (Bind b1) v1)) \to (ex2_3 -B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c3 (CHead e2 -(Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g -e1 e2)))))))).(\lambda (u: T).(\lambda (t: T).(\lambda (H3: (ty3 g c1 u +C).(\lambda (_: T).(csubt g e1 e2)))))))).(\lambda (b: B).(\lambda (_: (not +(eq B b Void))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H4: (eq C (CHead +c1 (Bind Void) u1) (CHead e1 (Bind b1) v1))).(let TMP_70 \def (\lambda (e: +C).(match e with [(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) +in (let TMP_71 \def (Bind Void) in (let TMP_72 \def (CHead c1 TMP_71 u1) in +(let TMP_73 \def (Bind b1) in (let TMP_74 \def (CHead e1 TMP_73 v1) in (let +H5 \def (f_equal C C TMP_70 TMP_72 TMP_74 H4) in (let TMP_75 \def (\lambda +(e: C).(match e with [(CSort _) \Rightarrow Void | (CHead _ k _) \Rightarrow +(match k with [(Bind b0) \Rightarrow b0 | (Flat _) \Rightarrow Void])])) in +(let TMP_76 \def (Bind Void) in (let TMP_77 \def (CHead c1 TMP_76 u1) in (let +TMP_78 \def (Bind b1) in (let TMP_79 \def (CHead e1 TMP_78 v1) in (let H6 +\def (f_equal C B TMP_75 TMP_77 TMP_79 H4) in (let TMP_80 \def (\lambda (e: +C).(match e with [(CSort _) \Rightarrow u1 | (CHead _ _ t) \Rightarrow t])) +in (let TMP_81 \def (Bind Void) in (let TMP_82 \def (CHead c1 TMP_81 u1) in +(let TMP_83 \def (Bind b1) in (let TMP_84 \def (CHead e1 TMP_83 v1) in (let +H7 \def (f_equal C T TMP_80 TMP_82 TMP_84 H4) in (let TMP_105 \def (\lambda +(H8: (eq B Void b1)).(\lambda (H9: (eq C c1 e1)).(let TMP_89 \def (\lambda +(c: C).((eq C c (CHead e1 (Bind b1) v1)) \to (let TMP_87 \def (\lambda (b2: +B).(\lambda (e2: C).(\lambda (v2: T).(let TMP_85 \def (Bind b2) in (let +TMP_86 \def (CHead e2 TMP_85 v2) in (eq C c3 TMP_86)))))) in (let TMP_88 \def +(\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2)))) in (ex2_3 +B C T TMP_87 TMP_88))))) in (let H10 \def (eq_ind C c1 TMP_89 H2 e1 H9) in +(let TMP_90 \def (\lambda (c: C).(csubt g c c3)) in (let H11 \def (eq_ind C +c1 TMP_90 H1 e1 H9) in (let TMP_95 \def (\lambda (b0: B).((eq C e1 (CHead e1 +(Bind b0) v1)) \to (let TMP_93 \def (\lambda (b2: B).(\lambda (e2: +C).(\lambda (v2: T).(let TMP_91 \def (Bind b2) in (let TMP_92 \def (CHead e2 +TMP_91 v2) in (eq C c3 TMP_92)))))) in (let TMP_94 \def (\lambda (_: +B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2)))) in (ex2_3 B C T TMP_93 +TMP_94))))) in (let H12 \def (eq_ind_r B b1 TMP_95 H10 Void H8) in (let +TMP_100 \def (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(let TMP_96 +\def (Bind b) in (let TMP_97 \def (CHead c3 TMP_96 u2) in (let TMP_98 \def +(Bind b2) in (let TMP_99 \def (CHead e2 TMP_98 v2) in (eq C TMP_97 +TMP_99)))))))) in (let TMP_101 \def (\lambda (_: B).(\lambda (e2: C).(\lambda +(_: T).(csubt g e1 e2)))) in (let TMP_102 \def (Bind b) in (let TMP_103 \def +(CHead c3 TMP_102 u2) in (let TMP_104 \def (refl_equal C TMP_103) in +(ex2_3_intro B C T TMP_100 TMP_101 b c3 u2 TMP_104 H11)))))))))))))) in (let +TMP_106 \def (TMP_105 H6) in (TMP_106 H5)))))))))))))))))))))))))))))) in +(let TMP_148 \def (\lambda (c1: C).(\lambda (c3: C).(\lambda (H1: (csubt g c1 +c3)).(\lambda (H2: (((eq C c1 (CHead e1 (Bind b1) v1)) \to (ex2_3 B C T +(\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq C c3 (CHead e2 (Bind +b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 +e2)))))))).(\lambda (u: T).(\lambda (t: T).(\lambda (H3: (ty3 g c1 u t)).(\lambda (H4: (ty3 g c3 u t)).(\lambda (H5: (eq C (CHead c1 (Bind Abst) -t) (CHead e1 (Bind b1) v1))).(let H6 \def (f_equal C C (\lambda (e: C).(match -e in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow c1 | (CHead c _ -_) \Rightarrow c])) (CHead c1 (Bind Abst) t) (CHead e1 (Bind b1) v1) H5) in -((let H7 \def (f_equal C B (\lambda (e: C).(match e in C return (\lambda (_: -C).B) with [(CSort _) \Rightarrow Abst | (CHead _ k _) \Rightarrow (match k -in K return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) -\Rightarrow Abst])])) (CHead c1 (Bind Abst) t) (CHead e1 (Bind b1) v1) H5) in -((let H8 \def (f_equal C T (\lambda (e: C).(match e in C return (\lambda (_: -C).T) with [(CSort _) \Rightarrow t | (CHead _ _ t0) \Rightarrow t0])) (CHead -c1 (Bind Abst) t) (CHead e1 (Bind b1) v1) H5) in (\lambda (H9: (eq B Abst -b1)).(\lambda (H10: (eq C c1 e1)).(let H11 \def (eq_ind T t (\lambda (t0: -T).(ty3 g c3 u t0)) H4 v1 H8) in (let H12 \def (eq_ind T t (\lambda (t0: -T).(ty3 g c1 u t0)) H3 v1 H8) in (let H13 \def (eq_ind C c1 (\lambda (c: -C).(ty3 g c u v1)) H12 e1 H10) in (let H14 \def (eq_ind C c1 (\lambda (c: -C).((eq C c (CHead e1 (Bind b1) v1)) \to (ex2_3 B C T (\lambda (b2: -B).(\lambda (e2: C).(\lambda (v2: T).(eq C c3 (CHead e2 (Bind b2) v2))))) -(\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 e2))))))) H2 e1 -H10) in (let H15 \def (eq_ind C c1 (\lambda (c: C).(csubt g c c3)) H1 e1 H10) -in (let H16 \def (eq_ind_r B b1 (\lambda (b: B).((eq C e1 (CHead e1 (Bind b) -v1)) \to (ex2_3 B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(eq -C c3 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda -(_: T).(csubt g e1 e2))))))) H14 Abst H9) in (ex2_3_intro B C T (\lambda (b2: -B).(\lambda (e2: C).(\lambda (v2: T).(eq C (CHead c3 (Bind Abbr) u) (CHead e2 -(Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g -e1 e2)))) Abbr c3 u (refl_equal C (CHead c3 (Bind Abbr) u)) H15)))))))))) -H7)) H6))))))))))) y c2 H0))) H)))))). -(* COMMENTS -Initial nodes: 1899 -END *) +t) (CHead e1 (Bind b1) v1))).(let TMP_108 \def (\lambda (e: C).(match e with +[(CSort _) \Rightarrow c1 | (CHead c _ _) \Rightarrow c])) in (let TMP_109 +\def (Bind Abst) in (let TMP_110 \def (CHead c1 TMP_109 t) in (let TMP_111 +\def (Bind b1) in (let TMP_112 \def (CHead e1 TMP_111 v1) in (let H6 \def +(f_equal C C TMP_108 TMP_110 TMP_112 H5) in (let TMP_113 \def (\lambda (e: +C).(match e with [(CSort _) \Rightarrow Abst | (CHead _ k _) \Rightarrow +(match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abst])])) in +(let TMP_114 \def (Bind Abst) in (let TMP_115 \def (CHead c1 TMP_114 t) in +(let TMP_116 \def (Bind b1) in (let TMP_117 \def (CHead e1 TMP_116 v1) in +(let H7 \def (f_equal C B TMP_113 TMP_115 TMP_117 H5) in (let TMP_118 \def +(\lambda (e: C).(match e with [(CSort _) \Rightarrow t | (CHead _ _ t0) +\Rightarrow t0])) in (let TMP_119 \def (Bind Abst) in (let TMP_120 \def +(CHead c1 TMP_119 t) in (let TMP_121 \def (Bind b1) in (let TMP_122 \def +(CHead e1 TMP_121 v1) in (let H8 \def (f_equal C T TMP_118 TMP_120 TMP_122 +H5) in (let TMP_146 \def (\lambda (H9: (eq B Abst b1)).(\lambda (H10: (eq C +c1 e1)).(let TMP_123 \def (\lambda (t0: T).(ty3 g c3 u t0)) in (let H11 \def +(eq_ind T t TMP_123 H4 v1 H8) in (let TMP_124 \def (\lambda (t0: T).(ty3 g c1 +u t0)) in (let H12 \def (eq_ind T t TMP_124 H3 v1 H8) in (let TMP_125 \def +(\lambda (c: C).(ty3 g c u v1)) in (let H13 \def (eq_ind C c1 TMP_125 H12 e1 +H10) in (let TMP_130 \def (\lambda (c: C).((eq C c (CHead e1 (Bind b1) v1)) +\to (let TMP_128 \def (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(let +TMP_126 \def (Bind b2) in (let TMP_127 \def (CHead e2 TMP_126 v2) in (eq C c3 +TMP_127)))))) in (let TMP_129 \def (\lambda (_: B).(\lambda (e2: C).(\lambda +(_: T).(csubt g e1 e2)))) in (ex2_3 B C T TMP_128 TMP_129))))) in (let H14 +\def (eq_ind C c1 TMP_130 H2 e1 H10) in (let TMP_131 \def (\lambda (c: +C).(csubt g c c3)) in (let H15 \def (eq_ind C c1 TMP_131 H1 e1 H10) in (let +TMP_136 \def (\lambda (b: B).((eq C e1 (CHead e1 (Bind b) v1)) \to (let +TMP_134 \def (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: T).(let TMP_132 +\def (Bind b2) in (let TMP_133 \def (CHead e2 TMP_132 v2) in (eq C c3 +TMP_133)))))) in (let TMP_135 \def (\lambda (_: B).(\lambda (e2: C).(\lambda +(_: T).(csubt g e1 e2)))) in (ex2_3 B C T TMP_134 TMP_135))))) in (let H16 +\def (eq_ind_r B b1 TMP_136 H14 Abst H9) in (let TMP_141 \def (\lambda (b2: +B).(\lambda (e2: C).(\lambda (v2: T).(let TMP_137 \def (Bind Abbr) in (let +TMP_138 \def (CHead c3 TMP_137 u) in (let TMP_139 \def (Bind b2) in (let +TMP_140 \def (CHead e2 TMP_139 v2) in (eq C TMP_138 TMP_140)))))))) in (let +TMP_142 \def (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g e1 +e2)))) in (let TMP_143 \def (Bind Abbr) in (let TMP_144 \def (CHead c3 +TMP_143 u) in (let TMP_145 \def (refl_equal C TMP_144) in (ex2_3_intro B C T +TMP_141 TMP_142 Abbr c3 u TMP_145 H15)))))))))))))))))))) in (let TMP_147 +\def (TMP_146 H7) in (TMP_147 H6)))))))))))))))))))))))))))))) in (csubt_ind +g TMP_13 TMP_24 TMP_69 TMP_107 TMP_148 y c2 H0)))))))) in (insert_eq C TMP_2 +TMP_3 TMP_8 TMP_149 H))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/csubt/getl.ma b/matita/matita/contribs/lambdadelta/basic_1/csubt/getl.ma index df14528ed..a13f7a6dc 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/csubt/getl.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/csubt/getl.ma @@ -14,11 +14,11 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/csubt/clear.ma". +include "basic_1/csubt/clear.ma". -include "Basic-1/csubt/drop.ma". +include "basic_1/csubt/drop.ma". -include "Basic-1/getl/clear.ma". +include "basic_1/getl/clear.ma". theorem csubt_getl_abbr: \forall (g: G).(\forall (c1: C).(\forall (d1: C).(\forall (u: T).(\forall @@ -27,117 +27,192 @@ c1 c2) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) u))))))))))) \def \lambda (g: G).(\lambda (c1: C).(\lambda (d1: C).(\lambda (u: T).(\lambda -(n: nat).(\lambda (H: (getl n c1 (CHead d1 (Bind Abbr) u))).(let H0 \def -(getl_gen_all c1 (CHead d1 (Bind Abbr) u) n H) in (ex2_ind C (\lambda (e: -C).(drop n O c1 e)) (\lambda (e: C).(clear e (CHead d1 (Bind Abbr) u))) -(\forall (c2: C).((csubt g c1 c2) \to (ex2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) u)))))) (\lambda (x: -C).(\lambda (H1: (drop n O c1 x)).(\lambda (H2: (clear x (CHead d1 (Bind -Abbr) u))).(C_ind (\lambda (c: C).((drop n O c1 c) \to ((clear c (CHead d1 -(Bind Abbr) u)) \to (\forall (c2: C).((csubt g c1 c2) \to (ex2 C (\lambda -(d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) -u))))))))) (\lambda (n0: nat).(\lambda (_: (drop n O c1 (CSort n0))).(\lambda -(H4: (clear (CSort n0) (CHead d1 (Bind Abbr) u))).(clear_gen_sort (CHead d1 -(Bind Abbr) u) n0 H4 (\forall (c2: C).((csubt g c1 c2) \to (ex2 C (\lambda -(d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) -u)))))))))) (\lambda (x0: C).(\lambda (_: (((drop n O c1 x0) \to ((clear x0 -(CHead d1 (Bind Abbr) u)) \to (\forall (c2: C).((csubt g c1 c2) \to (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind -Abbr) u)))))))))).(\lambda (k: K).(\lambda (t: T).(\lambda (H3: (drop n O c1 -(CHead x0 k t))).(\lambda (H4: (clear (CHead x0 k t) (CHead d1 (Bind Abbr) -u))).(K_ind (\lambda (k0: K).((drop n O c1 (CHead x0 k0 t)) \to ((clear -(CHead x0 k0 t) (CHead d1 (Bind Abbr) u)) \to (\forall (c2: C).((csubt g c1 -c2) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n c2 -(CHead d2 (Bind Abbr) u))))))))) (\lambda (b: B).(\lambda (H5: (drop n O c1 -(CHead x0 (Bind b) t))).(\lambda (H6: (clear (CHead x0 (Bind b) t) (CHead d1 -(Bind Abbr) u))).(let H7 \def (f_equal C C (\lambda (e: C).(match e in C -return (\lambda (_: C).C) with [(CSort _) \Rightarrow d1 | (CHead c _ _) -\Rightarrow c])) (CHead d1 (Bind Abbr) u) (CHead x0 (Bind b) t) -(clear_gen_bind b x0 (CHead d1 (Bind Abbr) u) t H6)) in ((let H8 \def -(f_equal C B (\lambda (e: C).(match e in C return (\lambda (_: C).B) with -[(CSort _) \Rightarrow Abbr | (CHead _ k0 _) \Rightarrow (match k0 in K -return (\lambda (_: K).B) with [(Bind b0) \Rightarrow b0 | (Flat _) -\Rightarrow Abbr])])) (CHead d1 (Bind Abbr) u) (CHead x0 (Bind b) t) -(clear_gen_bind b x0 (CHead d1 (Bind Abbr) u) t H6)) in ((let H9 \def -(f_equal C T (\lambda (e: C).(match e in C return (\lambda (_: C).T) with -[(CSort _) \Rightarrow u | (CHead _ _ t0) \Rightarrow t0])) (CHead d1 (Bind -Abbr) u) (CHead x0 (Bind b) t) (clear_gen_bind b x0 (CHead d1 (Bind Abbr) u) -t H6)) in (\lambda (H10: (eq B Abbr b)).(\lambda (H11: (eq C d1 x0)).(\lambda -(c2: C).(\lambda (H12: (csubt g c1 c2)).(let H13 \def (eq_ind_r T t (\lambda -(t0: T).(drop n O c1 (CHead x0 (Bind b) t0))) H5 u H9) in (let H14 \def -(eq_ind_r B b (\lambda (b0: B).(drop n O c1 (CHead x0 (Bind b0) u))) H13 Abbr -H10) in (let H15 \def (eq_ind_r C x0 (\lambda (c: C).(drop n O c1 (CHead c -(Bind Abbr) u))) H14 d1 H11) in (ex2_ind C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(drop n O c2 (CHead d2 (Bind Abbr) u))) (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) u)))) -(\lambda (x1: C).(\lambda (H16: (csubt g d1 x1)).(\lambda (H17: (drop n O c2 -(CHead x1 (Bind Abbr) u))).(ex_intro2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) u))) x1 H16 (getl_intro n -c2 (CHead x1 (Bind Abbr) u) (CHead x1 (Bind Abbr) u) H17 (clear_bind Abbr x1 -u)))))) (csubt_drop_abbr g n c1 c2 H12 d1 u H15)))))))))) H8)) H7))))) -(\lambda (f: F).(\lambda (H5: (drop n O c1 (CHead x0 (Flat f) t))).(\lambda -(H6: (clear (CHead x0 (Flat f) t) (CHead d1 (Bind Abbr) u))).(let H7 \def H5 -in (unintro C c1 (\lambda (c: C).((drop n O c (CHead x0 (Flat f) t)) \to -(\forall (c2: C).((csubt g c c2) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) u)))))))) (nat_ind (\lambda -(n0: nat).(\forall (x1: C).((drop n0 O x1 (CHead x0 (Flat f) t)) \to (\forall -(c2: C).((csubt g x1 c2) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(getl n0 c2 (CHead d2 (Bind Abbr) u))))))))) (\lambda (x1: -C).(\lambda (H8: (drop O O x1 (CHead x0 (Flat f) t))).(\lambda (c2: -C).(\lambda (H9: (csubt g x1 c2)).(let H10 \def (eq_ind C x1 (\lambda (c: -C).(csubt g c c2)) H9 (CHead x0 (Flat f) t) (drop_gen_refl x1 (CHead x0 (Flat -f) t) H8)) in (let H_y \def (clear_flat x0 (CHead d1 (Bind Abbr) u) -(clear_gen_flat f x0 (CHead d1 (Bind Abbr) u) t H6) f t) in (let H11 \def -(csubt_clear_conf g (CHead x0 (Flat f) t) c2 H10 (CHead d1 (Bind Abbr) u) -H_y) in (ex2_ind C (\lambda (e2: C).(csubt g (CHead d1 (Bind Abbr) u) e2)) -(\lambda (e2: C).(clear c2 e2)) (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (x2: -C).(\lambda (H12: (csubt g (CHead d1 (Bind Abbr) u) x2)).(\lambda (H13: -(clear c2 x2)).(let H14 \def (csubt_gen_abbr g d1 x2 u H12) in (ex2_ind C -(\lambda (e2: C).(eq C x2 (CHead e2 (Bind Abbr) u))) (\lambda (e2: C).(csubt -g d1 e2)) (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl O -c2 (CHead d2 (Bind Abbr) u)))) (\lambda (x3: C).(\lambda (H15: (eq C x2 -(CHead x3 (Bind Abbr) u))).(\lambda (H16: (csubt g d1 x3)).(let H17 \def -(eq_ind C x2 (\lambda (c: C).(clear c2 c)) H13 (CHead x3 (Bind Abbr) u) H15) -in (ex_intro2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl O c2 -(CHead d2 (Bind Abbr) u))) x3 H16 (getl_intro O c2 (CHead x3 (Bind Abbr) u) -c2 (drop_refl c2) H17)))))) H14))))) H11)))))))) (\lambda (n0: nat).(\lambda -(H8: ((\forall (x1: C).((drop n0 O x1 (CHead x0 (Flat f) t)) \to (\forall -(c2: C).((csubt g x1 c2) \to (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(getl n0 c2 (CHead d2 (Bind Abbr) u)))))))))).(\lambda (x1: -C).(\lambda (H9: (drop (S n0) O x1 (CHead x0 (Flat f) t))).(\lambda (c2: -C).(\lambda (H10: (csubt g x1 c2)).(let H11 \def (drop_clear x1 (CHead x0 -(Flat f) t) n0 H9) in (ex2_3_ind B C T (\lambda (b: B).(\lambda (e: -C).(\lambda (v: T).(clear x1 (CHead e (Bind b) v))))) (\lambda (_: -B).(\lambda (e: C).(\lambda (_: T).(drop n0 O e (CHead x0 (Flat f) t))))) -(ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl (S n0) c2 -(CHead d2 (Bind Abbr) u)))) (\lambda (x2: B).(\lambda (x3: C).(\lambda (x4: -T).(\lambda (H12: (clear x1 (CHead x3 (Bind x2) x4))).(\lambda (H13: (drop n0 -O x3 (CHead x0 (Flat f) t))).(let H14 \def (csubt_clear_conf g x1 c2 H10 -(CHead x3 (Bind x2) x4) H12) in (ex2_ind C (\lambda (e2: C).(csubt g (CHead -x3 (Bind x2) x4) e2)) (\lambda (e2: C).(clear c2 e2)) (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abbr) -u)))) (\lambda (x5: C).(\lambda (H15: (csubt g (CHead x3 (Bind x2) x4) -x5)).(\lambda (H16: (clear c2 x5)).(let H17 \def (csubt_gen_bind g x2 x3 x5 -x4 H15) in (ex2_3_ind B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: -T).(eq C x5 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: -C).(\lambda (_: T).(csubt g x3 e2)))) (ex2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda -(x6: B).(\lambda (x7: C).(\lambda (x8: T).(\lambda (H18: (eq C x5 (CHead x7 -(Bind x6) x8))).(\lambda (H19: (csubt g x3 x7)).(let H20 \def (eq_ind C x5 -(\lambda (c: C).(clear c2 c)) H16 (CHead x7 (Bind x6) x8) H18) in (let H21 -\def (H8 x3 H13 x7 H19) in (ex2_ind C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(getl n0 x7 (CHead d2 (Bind Abbr) u))) (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abbr) -u)))) (\lambda (x9: C).(\lambda (H22: (csubt g d1 x9)).(\lambda (H23: (getl -n0 x7 (CHead x9 (Bind Abbr) u))).(ex_intro2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abbr) u))) x9 H22 -(getl_clear_bind x6 c2 x7 x8 H20 (CHead x9 (Bind Abbr) u) n0 H23))))) -H21)))))))) H17))))) H14))))))) H11)))))))) n) H7))))) k H3 H4))))))) x H1 -H2)))) H0))))))). -(* COMMENTS -Initial nodes: 2313 -END *) +(n: nat).(\lambda (H: (getl n c1 (CHead d1 (Bind Abbr) u))).(let TMP_1 \def +(Bind Abbr) in (let TMP_2 \def (CHead d1 TMP_1 u) in (let H0 \def +(getl_gen_all c1 TMP_2 n H) in (let TMP_3 \def (\lambda (e: C).(drop n O c1 +e)) in (let TMP_6 \def (\lambda (e: C).(let TMP_4 \def (Bind Abbr) in (let +TMP_5 \def (CHead d1 TMP_4 u) in (clear e TMP_5)))) in (let TMP_11 \def +(\forall (c2: C).((csubt g c1 c2) \to (let TMP_7 \def (\lambda (d2: C).(csubt +g d1 d2)) in (let TMP_10 \def (\lambda (d2: C).(let TMP_8 \def (Bind Abbr) in +(let TMP_9 \def (CHead d2 TMP_8 u) in (getl n c2 TMP_9)))) in (ex2 C TMP_7 +TMP_10))))) in (let TMP_209 \def (\lambda (x: C).(\lambda (H1: (drop n O c1 +x)).(\lambda (H2: (clear x (CHead d1 (Bind Abbr) u))).(let TMP_16 \def +(\lambda (c: C).((drop n O c1 c) \to ((clear c (CHead d1 (Bind Abbr) u)) \to +(\forall (c2: C).((csubt g c1 c2) \to (let TMP_12 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_15 \def (\lambda (d2: C).(let TMP_13 \def +(Bind Abbr) in (let TMP_14 \def (CHead d2 TMP_13 u) in (getl n c2 TMP_14)))) +in (ex2 C TMP_12 TMP_15)))))))) in (let TMP_24 \def (\lambda (n0: +nat).(\lambda (_: (drop n O c1 (CSort n0))).(\lambda (H4: (clear (CSort n0) +(CHead d1 (Bind Abbr) u))).(let TMP_17 \def (Bind Abbr) in (let TMP_18 \def +(CHead d1 TMP_17 u) in (let TMP_23 \def (\forall (c2: C).((csubt g c1 c2) \to +(let TMP_19 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_22 \def +(\lambda (d2: C).(let TMP_20 \def (Bind Abbr) in (let TMP_21 \def (CHead d2 +TMP_20 u) in (getl n c2 TMP_21)))) in (ex2 C TMP_19 TMP_22))))) in +(clear_gen_sort TMP_18 n0 H4 TMP_23))))))) in (let TMP_208 \def (\lambda (x0: +C).(\lambda (_: (((drop n O c1 x0) \to ((clear x0 (CHead d1 (Bind Abbr) u)) +\to (\forall (c2: C).((csubt g c1 c2) \to (ex2 C (\lambda (d2: C).(csubt g d1 +d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) u)))))))))).(\lambda +(k: K).(\lambda (t: T).(\lambda (H3: (drop n O c1 (CHead x0 k t))).(\lambda +(H4: (clear (CHead x0 k t) (CHead d1 (Bind Abbr) u))).(let TMP_29 \def +(\lambda (k0: K).((drop n O c1 (CHead x0 k0 t)) \to ((clear (CHead x0 k0 t) +(CHead d1 (Bind Abbr) u)) \to (\forall (c2: C).((csubt g c1 c2) \to (let +TMP_25 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_28 \def (\lambda +(d2: C).(let TMP_26 \def (Bind Abbr) in (let TMP_27 \def (CHead d2 TMP_26 u) +in (getl n c2 TMP_27)))) in (ex2 C TMP_25 TMP_28)))))))) in (let TMP_86 \def +(\lambda (b: B).(\lambda (H5: (drop n O c1 (CHead x0 (Bind b) t))).(\lambda +(H6: (clear (CHead x0 (Bind b) t) (CHead d1 (Bind Abbr) u))).(let TMP_30 \def +(\lambda (e: C).(match e with [(CSort _) \Rightarrow d1 | (CHead c _ _) +\Rightarrow c])) in (let TMP_31 \def (Bind Abbr) in (let TMP_32 \def (CHead +d1 TMP_31 u) in (let TMP_33 \def (Bind b) in (let TMP_34 \def (CHead x0 +TMP_33 t) in (let TMP_35 \def (Bind Abbr) in (let TMP_36 \def (CHead d1 +TMP_35 u) in (let TMP_37 \def (clear_gen_bind b x0 TMP_36 t H6) in (let H7 +\def (f_equal C C TMP_30 TMP_32 TMP_34 TMP_37) in (let TMP_38 \def (\lambda +(e: C).(match e with [(CSort _) \Rightarrow Abbr | (CHead _ k0 _) \Rightarrow +(match k0 with [(Bind b0) \Rightarrow b0 | (Flat _) \Rightarrow Abbr])])) in +(let TMP_39 \def (Bind Abbr) in (let TMP_40 \def (CHead d1 TMP_39 u) in (let +TMP_41 \def (Bind b) in (let TMP_42 \def (CHead x0 TMP_41 t) in (let TMP_43 +\def (Bind Abbr) in (let TMP_44 \def (CHead d1 TMP_43 u) in (let TMP_45 \def +(clear_gen_bind b x0 TMP_44 t H6) in (let H8 \def (f_equal C B TMP_38 TMP_40 +TMP_42 TMP_45) in (let TMP_46 \def (\lambda (e: C).(match e with [(CSort _) +\Rightarrow u | (CHead _ _ t0) \Rightarrow t0])) in (let TMP_47 \def (Bind +Abbr) in (let TMP_48 \def (CHead d1 TMP_47 u) in (let TMP_49 \def (Bind b) in +(let TMP_50 \def (CHead x0 TMP_49 t) in (let TMP_51 \def (Bind Abbr) in (let +TMP_52 \def (CHead d1 TMP_51 u) in (let TMP_53 \def (clear_gen_bind b x0 +TMP_52 t H6) in (let H9 \def (f_equal C T TMP_46 TMP_48 TMP_50 TMP_53) in +(let TMP_84 \def (\lambda (H10: (eq B Abbr b)).(\lambda (H11: (eq C d1 +x0)).(\lambda (c2: C).(\lambda (H12: (csubt g c1 c2)).(let TMP_56 \def +(\lambda (t0: T).(let TMP_54 \def (Bind b) in (let TMP_55 \def (CHead x0 +TMP_54 t0) in (drop n O c1 TMP_55)))) in (let H13 \def (eq_ind_r T t TMP_56 +H5 u H9) in (let TMP_59 \def (\lambda (b0: B).(let TMP_57 \def (Bind b0) in +(let TMP_58 \def (CHead x0 TMP_57 u) in (drop n O c1 TMP_58)))) in (let H14 +\def (eq_ind_r B b TMP_59 H13 Abbr H10) in (let TMP_62 \def (\lambda (c: +C).(let TMP_60 \def (Bind Abbr) in (let TMP_61 \def (CHead c TMP_60 u) in +(drop n O c1 TMP_61)))) in (let H15 \def (eq_ind_r C x0 TMP_62 H14 d1 H11) in +(let TMP_63 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_66 \def +(\lambda (d2: C).(let TMP_64 \def (Bind Abbr) in (let TMP_65 \def (CHead d2 +TMP_64 u) in (drop n O c2 TMP_65)))) in (let TMP_67 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_70 \def (\lambda (d2: C).(let TMP_68 \def +(Bind Abbr) in (let TMP_69 \def (CHead d2 TMP_68 u) in (getl n c2 TMP_69)))) +in (let TMP_71 \def (ex2 C TMP_67 TMP_70) in (let TMP_82 \def (\lambda (x1: +C).(\lambda (H16: (csubt g d1 x1)).(\lambda (H17: (drop n O c2 (CHead x1 +(Bind Abbr) u))).(let TMP_72 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_75 \def (\lambda (d2: C).(let TMP_73 \def (Bind Abbr) in (let TMP_74 \def +(CHead d2 TMP_73 u) in (getl n c2 TMP_74)))) in (let TMP_76 \def (Bind Abbr) +in (let TMP_77 \def (CHead x1 TMP_76 u) in (let TMP_78 \def (Bind Abbr) in +(let TMP_79 \def (CHead x1 TMP_78 u) in (let TMP_80 \def (clear_bind Abbr x1 +u) in (let TMP_81 \def (getl_intro n c2 TMP_77 TMP_79 H17 TMP_80) in +(ex_intro2 C TMP_72 TMP_75 x1 H16 TMP_81)))))))))))) in (let TMP_83 \def +(csubt_drop_abbr g n c1 c2 H12 d1 u H15) in (ex2_ind C TMP_63 TMP_66 TMP_71 +TMP_82 TMP_83)))))))))))))))))) in (let TMP_85 \def (TMP_84 H8) in (TMP_85 +H7))))))))))))))))))))))))))))))))) in (let TMP_207 \def (\lambda (f: +F).(\lambda (H5: (drop n O c1 (CHead x0 (Flat f) t))).(\lambda (H6: (clear +(CHead x0 (Flat f) t) (CHead d1 (Bind Abbr) u))).(let H7 \def H5 in (let +TMP_91 \def (\lambda (c: C).((drop n O c (CHead x0 (Flat f) t)) \to (\forall +(c2: C).((csubt g c c2) \to (let TMP_87 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_90 \def (\lambda (d2: C).(let TMP_88 \def (Bind Abbr) in +(let TMP_89 \def (CHead d2 TMP_88 u) in (getl n c2 TMP_89)))) in (ex2 C +TMP_87 TMP_90))))))) in (let TMP_96 \def (\lambda (n0: nat).(\forall (x1: +C).((drop n0 O x1 (CHead x0 (Flat f) t)) \to (\forall (c2: C).((csubt g x1 +c2) \to (let TMP_92 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_95 +\def (\lambda (d2: C).(let TMP_93 \def (Bind Abbr) in (let TMP_94 \def (CHead +d2 TMP_93 u) in (getl n0 c2 TMP_94)))) in (ex2 C TMP_92 TMP_95)))))))) in +(let TMP_143 \def (\lambda (x1: C).(\lambda (H8: (drop O O x1 (CHead x0 (Flat +f) t))).(\lambda (c2: C).(\lambda (H9: (csubt g x1 c2)).(let TMP_97 \def +(\lambda (c: C).(csubt g c c2)) in (let TMP_98 \def (Flat f) in (let TMP_99 +\def (CHead x0 TMP_98 t) in (let TMP_100 \def (Flat f) in (let TMP_101 \def +(CHead x0 TMP_100 t) in (let TMP_102 \def (drop_gen_refl x1 TMP_101 H8) in +(let H10 \def (eq_ind C x1 TMP_97 H9 TMP_99 TMP_102) in (let TMP_103 \def +(Bind Abbr) in (let TMP_104 \def (CHead d1 TMP_103 u) in (let TMP_105 \def +(Bind Abbr) in (let TMP_106 \def (CHead d1 TMP_105 u) in (let TMP_107 \def +(clear_gen_flat f x0 TMP_106 t H6) in (let H_y \def (clear_flat x0 TMP_104 +TMP_107 f t) in (let TMP_108 \def (Flat f) in (let TMP_109 \def (CHead x0 +TMP_108 t) in (let TMP_110 \def (Bind Abbr) in (let TMP_111 \def (CHead d1 +TMP_110 u) in (let H11 \def (csubt_clear_conf g TMP_109 c2 H10 TMP_111 H_y) +in (let TMP_114 \def (\lambda (e2: C).(let TMP_112 \def (Bind Abbr) in (let +TMP_113 \def (CHead d1 TMP_112 u) in (csubt g TMP_113 e2)))) in (let TMP_115 +\def (\lambda (e2: C).(clear c2 e2)) in (let TMP_116 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_119 \def (\lambda (d2: C).(let TMP_117 \def +(Bind Abbr) in (let TMP_118 \def (CHead d2 TMP_117 u) in (getl O c2 +TMP_118)))) in (let TMP_120 \def (ex2 C TMP_116 TMP_119) in (let TMP_142 \def +(\lambda (x2: C).(\lambda (H12: (csubt g (CHead d1 (Bind Abbr) u) +x2)).(\lambda (H13: (clear c2 x2)).(let H14 \def (csubt_gen_abbr g d1 x2 u +H12) in (let TMP_123 \def (\lambda (e2: C).(let TMP_121 \def (Bind Abbr) in +(let TMP_122 \def (CHead e2 TMP_121 u) in (eq C x2 TMP_122)))) in (let +TMP_124 \def (\lambda (e2: C).(csubt g d1 e2)) in (let TMP_125 \def (\lambda +(d2: C).(csubt g d1 d2)) in (let TMP_128 \def (\lambda (d2: C).(let TMP_126 +\def (Bind Abbr) in (let TMP_127 \def (CHead d2 TMP_126 u) in (getl O c2 +TMP_127)))) in (let TMP_129 \def (ex2 C TMP_125 TMP_128) in (let TMP_141 \def +(\lambda (x3: C).(\lambda (H15: (eq C x2 (CHead x3 (Bind Abbr) u))).(\lambda +(H16: (csubt g d1 x3)).(let TMP_130 \def (\lambda (c: C).(clear c2 c)) in +(let TMP_131 \def (Bind Abbr) in (let TMP_132 \def (CHead x3 TMP_131 u) in +(let H17 \def (eq_ind C x2 TMP_130 H13 TMP_132 H15) in (let TMP_133 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_136 \def (\lambda (d2: C).(let +TMP_134 \def (Bind Abbr) in (let TMP_135 \def (CHead d2 TMP_134 u) in (getl O +c2 TMP_135)))) in (let TMP_137 \def (Bind Abbr) in (let TMP_138 \def (CHead +x3 TMP_137 u) in (let TMP_139 \def (drop_refl c2) in (let TMP_140 \def +(getl_intro O c2 TMP_138 c2 TMP_139 H17) in (ex_intro2 C TMP_133 TMP_136 x3 +H16 TMP_140)))))))))))))) in (ex2_ind C TMP_123 TMP_124 TMP_129 TMP_141 +H14))))))))))) in (ex2_ind C TMP_114 TMP_115 TMP_120 TMP_142 +H11))))))))))))))))))))))))))))) in (let TMP_205 \def (\lambda (n0: +nat).(\lambda (H8: ((\forall (x1: C).((drop n0 O x1 (CHead x0 (Flat f) t)) +\to (\forall (c2: C).((csubt g x1 c2) \to (ex2 C (\lambda (d2: C).(csubt g d1 +d2)) (\lambda (d2: C).(getl n0 c2 (CHead d2 (Bind Abbr) u)))))))))).(\lambda +(x1: C).(\lambda (H9: (drop (S n0) O x1 (CHead x0 (Flat f) t))).(\lambda (c2: +C).(\lambda (H10: (csubt g x1 c2)).(let TMP_144 \def (Flat f) in (let TMP_145 +\def (CHead x0 TMP_144 t) in (let H11 \def (drop_clear x1 TMP_145 n0 H9) in +(let TMP_148 \def (\lambda (b: B).(\lambda (e: C).(\lambda (v: T).(let +TMP_146 \def (Bind b) in (let TMP_147 \def (CHead e TMP_146 v) in (clear x1 +TMP_147)))))) in (let TMP_151 \def (\lambda (_: B).(\lambda (e: C).(\lambda +(_: T).(let TMP_149 \def (Flat f) in (let TMP_150 \def (CHead x0 TMP_149 t) +in (drop n0 O e TMP_150)))))) in (let TMP_152 \def (\lambda (d2: C).(csubt g +d1 d2)) in (let TMP_156 \def (\lambda (d2: C).(let TMP_153 \def (S n0) in +(let TMP_154 \def (Bind Abbr) in (let TMP_155 \def (CHead d2 TMP_154 u) in +(getl TMP_153 c2 TMP_155))))) in (let TMP_157 \def (ex2 C TMP_152 TMP_156) in +(let TMP_204 \def (\lambda (x2: B).(\lambda (x3: C).(\lambda (x4: T).(\lambda +(H12: (clear x1 (CHead x3 (Bind x2) x4))).(\lambda (H13: (drop n0 O x3 (CHead +x0 (Flat f) t))).(let TMP_158 \def (Bind x2) in (let TMP_159 \def (CHead x3 +TMP_158 x4) in (let H14 \def (csubt_clear_conf g x1 c2 H10 TMP_159 H12) in +(let TMP_162 \def (\lambda (e2: C).(let TMP_160 \def (Bind x2) in (let +TMP_161 \def (CHead x3 TMP_160 x4) in (csubt g TMP_161 e2)))) in (let TMP_163 +\def (\lambda (e2: C).(clear c2 e2)) in (let TMP_164 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_168 \def (\lambda (d2: C).(let TMP_165 \def +(S n0) in (let TMP_166 \def (Bind Abbr) in (let TMP_167 \def (CHead d2 +TMP_166 u) in (getl TMP_165 c2 TMP_167))))) in (let TMP_169 \def (ex2 C +TMP_164 TMP_168) in (let TMP_203 \def (\lambda (x5: C).(\lambda (H15: (csubt +g (CHead x3 (Bind x2) x4) x5)).(\lambda (H16: (clear c2 x5)).(let H17 \def +(csubt_gen_bind g x2 x3 x5 x4 H15) in (let TMP_172 \def (\lambda (b2: +B).(\lambda (e2: C).(\lambda (v2: T).(let TMP_170 \def (Bind b2) in (let +TMP_171 \def (CHead e2 TMP_170 v2) in (eq C x5 TMP_171)))))) in (let TMP_173 +\def (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g x3 e2)))) in +(let TMP_174 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_178 \def +(\lambda (d2: C).(let TMP_175 \def (S n0) in (let TMP_176 \def (Bind Abbr) in +(let TMP_177 \def (CHead d2 TMP_176 u) in (getl TMP_175 c2 TMP_177))))) in +(let TMP_179 \def (ex2 C TMP_174 TMP_178) in (let TMP_202 \def (\lambda (x6: +B).(\lambda (x7: C).(\lambda (x8: T).(\lambda (H18: (eq C x5 (CHead x7 (Bind +x6) x8))).(\lambda (H19: (csubt g x3 x7)).(let TMP_180 \def (\lambda (c: +C).(clear c2 c)) in (let TMP_181 \def (Bind x6) in (let TMP_182 \def (CHead +x7 TMP_181 x8) in (let H20 \def (eq_ind C x5 TMP_180 H16 TMP_182 H18) in (let +H21 \def (H8 x3 H13 x7 H19) in (let TMP_183 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_186 \def (\lambda (d2: C).(let TMP_184 \def (Bind Abbr) in +(let TMP_185 \def (CHead d2 TMP_184 u) in (getl n0 x7 TMP_185)))) in (let +TMP_187 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_191 \def (\lambda +(d2: C).(let TMP_188 \def (S n0) in (let TMP_189 \def (Bind Abbr) in (let +TMP_190 \def (CHead d2 TMP_189 u) in (getl TMP_188 c2 TMP_190))))) in (let +TMP_192 \def (ex2 C TMP_187 TMP_191) in (let TMP_201 \def (\lambda (x9: +C).(\lambda (H22: (csubt g d1 x9)).(\lambda (H23: (getl n0 x7 (CHead x9 (Bind +Abbr) u))).(let TMP_193 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_197 \def (\lambda (d2: C).(let TMP_194 \def (S n0) in (let TMP_195 \def +(Bind Abbr) in (let TMP_196 \def (CHead d2 TMP_195 u) in (getl TMP_194 c2 +TMP_196))))) in (let TMP_198 \def (Bind Abbr) in (let TMP_199 \def (CHead x9 +TMP_198 u) in (let TMP_200 \def (getl_clear_bind x6 c2 x7 x8 H20 TMP_199 n0 +H23) in (ex_intro2 C TMP_193 TMP_197 x9 H22 TMP_200))))))))) in (ex2_ind C +TMP_183 TMP_186 TMP_192 TMP_201 H21))))))))))))))))) in (ex2_3_ind B C T +TMP_172 TMP_173 TMP_179 TMP_202 H17))))))))))) in (ex2_ind C TMP_162 TMP_163 +TMP_169 TMP_203 H14))))))))))))))) in (ex2_3_ind B C T TMP_148 TMP_151 +TMP_157 TMP_204 H11)))))))))))))))) in (let TMP_206 \def (nat_ind TMP_96 +TMP_143 TMP_205 n) in (unintro C c1 TMP_91 TMP_206 H7)))))))))) in (K_ind +TMP_29 TMP_86 TMP_207 k H3 H4)))))))))) in (C_ind TMP_16 TMP_24 TMP_208 x H1 +H2))))))) in (ex2_ind C TMP_3 TMP_6 TMP_11 TMP_209 H0))))))))))))). theorem csubt_getl_abst: \forall (g: G).(\forall (c1: C).(\forall (d1: C).(\forall (t: T).(\forall @@ -149,278 +224,503 @@ c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))))))))))) \def \lambda (g: G).(\lambda (c1: C).(\lambda (d1: C).(\lambda (t: T).(\lambda -(n: nat).(\lambda (H: (getl n c1 (CHead d1 (Bind Abst) t))).(let H0 \def -(getl_gen_all c1 (CHead d1 (Bind Abst) t) n H) in (ex2_ind C (\lambda (e: -C).(drop n O c1 e)) (\lambda (e: C).(clear e (CHead d1 (Bind Abst) t))) -(\forall (c2: C).((csubt g c1 c2) \to (or (ex2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))))) -(\lambda (x: C).(\lambda (H1: (drop n O c1 x)).(\lambda (H2: (clear x (CHead -d1 (Bind Abst) t))).(C_ind (\lambda (c: C).((drop n O c1 c) \to ((clear c -(CHead d1 (Bind Abst) t)) \to (\forall (c2: C).((csubt g c1 c2) \to (or (ex2 -C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 -(Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 -d2))) (\lambda (d2: C).(\lambda (u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) -(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda -(u: T).(ty3 g d2 u t)))))))))) (\lambda (n0: nat).(\lambda (_: (drop n O c1 -(CSort n0))).(\lambda (H4: (clear (CSort n0) (CHead d1 (Bind Abst) -t))).(clear_gen_sort (CHead d1 (Bind Abst) t) n0 H4 (\forall (c2: C).((csubt -g c1 c2) \to (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n -c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u -t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))))))))) (\lambda (x0: -C).(\lambda (_: (((drop n O c1 x0) \to ((clear x0 (CHead d1 (Bind Abst) t)) -\to (\forall (c2: C).((csubt g c1 c2) \to (or (ex2 C (\lambda (d2: C).(csubt -g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u -t))))))))))).(\lambda (k: K).(\lambda (t0: T).(\lambda (H3: (drop n O c1 -(CHead x0 k t0))).(\lambda (H4: (clear (CHead x0 k t0) (CHead d1 (Bind Abst) -t))).(K_ind (\lambda (k0: K).((drop n O c1 (CHead x0 k0 t0)) \to ((clear -(CHead x0 k0 t0) (CHead d1 (Bind Abst) t)) \to (\forall (c2: C).((csubt g c1 -c2) \to (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n -c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: -T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n c2 (CHead d2 -(Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda -(d2: C).(\lambda (u: T).(ty3 g d2 u t)))))))))) (\lambda (b: B).(\lambda (H5: -(drop n O c1 (CHead x0 (Bind b) t0))).(\lambda (H6: (clear (CHead x0 (Bind b) -t0) (CHead d1 (Bind Abst) t))).(let H7 \def (f_equal C C (\lambda (e: -C).(match e in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d1 | -(CHead c _ _) \Rightarrow c])) (CHead d1 (Bind Abst) t) (CHead x0 (Bind b) -t0) (clear_gen_bind b x0 (CHead d1 (Bind Abst) t) t0 H6)) in ((let H8 \def -(f_equal C B (\lambda (e: C).(match e in C return (\lambda (_: C).B) with -[(CSort _) \Rightarrow Abst | (CHead _ k0 _) \Rightarrow (match k0 in K -return (\lambda (_: K).B) with [(Bind b0) \Rightarrow b0 | (Flat _) -\Rightarrow Abst])])) (CHead d1 (Bind Abst) t) (CHead x0 (Bind b) t0) -(clear_gen_bind b x0 (CHead d1 (Bind Abst) t) t0 H6)) in ((let H9 \def -(f_equal C T (\lambda (e: C).(match e in C return (\lambda (_: C).T) with -[(CSort _) \Rightarrow t | (CHead _ _ t1) \Rightarrow t1])) (CHead d1 (Bind -Abst) t) (CHead x0 (Bind b) t0) (clear_gen_bind b x0 (CHead d1 (Bind Abst) t) -t0 H6)) in (\lambda (H10: (eq B Abst b)).(\lambda (H11: (eq C d1 -x0)).(\lambda (c2: C).(\lambda (H12: (csubt g c1 c2)).(let H13 \def (eq_ind_r -T t0 (\lambda (t1: T).(drop n O c1 (CHead x0 (Bind b) t1))) H5 t H9) in (let -H14 \def (eq_ind_r B b (\lambda (b0: B).(drop n O c1 (CHead x0 (Bind b0) t))) -H13 Abst H10) in (let H15 \def (eq_ind_r C x0 (\lambda (c: C).(drop n O c1 -(CHead c (Bind Abst) t))) H14 d1 H11) in (or_ind (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(drop n O c2 (CHead d2 (Bind Abst) t)))) -(ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: -C).(\lambda (u: T).(drop n O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: -C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g -d2 u t)))) (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n -c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u -t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) (\lambda (H16: (ex2 -C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(drop n O c2 (CHead d2 -(Bind Abst) t))))).(ex2_ind C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(drop n O c2 (CHead d2 (Bind Abst) t))) (or (ex2 C (\lambda (d2: C).(csubt -g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) -(\lambda (x1: C).(\lambda (H17: (csubt g d1 x1)).(\lambda (H18: (drop n O c2 -(CHead x1 (Bind Abst) t))).(or_introl (ex2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))) -(ex_intro2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n c2 -(CHead d2 (Bind Abst) t))) x1 H17 (getl_intro n c2 (CHead x1 (Bind Abst) t) -(CHead x1 (Bind Abst) t) H18 (clear_bind Abst x1 t))))))) H16)) (\lambda -(H16: (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda -(d2: C).(\lambda (u: T).(drop n O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: -C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g -d2 u t))))).(ex4_2_ind C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) -(\lambda (d2: C).(\lambda (u: T).(drop n O c2 (CHead d2 (Bind Abbr) u)))) -(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda -(u: T).(ty3 g d2 u t))) (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda -(d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n -c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u -t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) (\lambda (x1: -C).(\lambda (x2: T).(\lambda (H17: (csubt g d1 x1)).(\lambda (H18: (drop n O -c2 (CHead x1 (Bind Abbr) x2))).(\lambda (H19: (ty3 g d1 x2 t)).(\lambda (H20: -(ty3 g x1 x2 t)).(or_intror (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda +(n: nat).(\lambda (H: (getl n c1 (CHead d1 (Bind Abst) t))).(let TMP_1 \def +(Bind Abst) in (let TMP_2 \def (CHead d1 TMP_1 t) in (let H0 \def +(getl_gen_all c1 TMP_2 n H) in (let TMP_3 \def (\lambda (e: C).(drop n O c1 +e)) in (let TMP_6 \def (\lambda (e: C).(let TMP_4 \def (Bind Abst) in (let +TMP_5 \def (CHead d1 TMP_4 t) in (clear e TMP_5)))) in (let TMP_19 \def +(\forall (c2: C).((csubt g c1 c2) \to (let TMP_7 \def (\lambda (d2: C).(csubt +g d1 d2)) in (let TMP_10 \def (\lambda (d2: C).(let TMP_8 \def (Bind Abst) in +(let TMP_9 \def (CHead d2 TMP_8 t) in (getl n c2 TMP_9)))) in (let TMP_11 +\def (ex2 C TMP_7 TMP_10) in (let TMP_12 \def (\lambda (d2: C).(\lambda (_: +T).(csubt g d1 d2))) in (let TMP_15 \def (\lambda (d2: C).(\lambda (u: +T).(let TMP_13 \def (Bind Abbr) in (let TMP_14 \def (CHead d2 TMP_13 u) in +(getl n c2 TMP_14))))) in (let TMP_16 \def (\lambda (_: C).(\lambda (u: +T).(ty3 g d1 u t))) in (let TMP_17 \def (\lambda (d2: C).(\lambda (u: T).(ty3 +g d2 u t))) in (let TMP_18 \def (ex4_2 C T TMP_12 TMP_15 TMP_16 TMP_17) in +(or TMP_11 TMP_18))))))))))) in (let TMP_579 \def (\lambda (x: C).(\lambda +(H1: (drop n O c1 x)).(\lambda (H2: (clear x (CHead d1 (Bind Abst) t))).(let +TMP_32 \def (\lambda (c: C).((drop n O c1 c) \to ((clear c (CHead d1 (Bind +Abst) t)) \to (\forall (c2: C).((csubt g c1 c2) \to (let TMP_20 \def (\lambda +(d2: C).(csubt g d1 d2)) in (let TMP_23 \def (\lambda (d2: C).(let TMP_21 +\def (Bind Abst) in (let TMP_22 \def (CHead d2 TMP_21 t) in (getl n c2 +TMP_22)))) in (let TMP_24 \def (ex2 C TMP_20 TMP_23) in (let TMP_25 \def +(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_28 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_26 \def (Bind Abbr) in (let TMP_27 +\def (CHead d2 TMP_26 u) in (getl n c2 TMP_27))))) in (let TMP_29 \def +(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_30 \def (\lambda +(d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_31 \def (ex4_2 C T +TMP_25 TMP_28 TMP_29 TMP_30) in (or TMP_24 TMP_31)))))))))))))) in (let +TMP_48 \def (\lambda (n0: nat).(\lambda (_: (drop n O c1 (CSort +n0))).(\lambda (H4: (clear (CSort n0) (CHead d1 (Bind Abst) t))).(let TMP_33 +\def (Bind Abst) in (let TMP_34 \def (CHead d1 TMP_33 t) in (let TMP_47 \def +(\forall (c2: C).((csubt g c1 c2) \to (let TMP_35 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_38 \def (\lambda (d2: C).(let TMP_36 \def +(Bind Abst) in (let TMP_37 \def (CHead d2 TMP_36 t) in (getl n c2 TMP_37)))) +in (let TMP_39 \def (ex2 C TMP_35 TMP_38) in (let TMP_40 \def (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_43 \def (\lambda (d2: +C).(\lambda (u: T).(let TMP_41 \def (Bind Abbr) in (let TMP_42 \def (CHead d2 +TMP_41 u) in (getl n c2 TMP_42))))) in (let TMP_44 \def (\lambda (_: +C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_45 \def (\lambda (d2: +C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_46 \def (ex4_2 C T TMP_40 +TMP_43 TMP_44 TMP_45) in (or TMP_39 TMP_46))))))))))) in (clear_gen_sort +TMP_34 n0 H4 TMP_47))))))) in (let TMP_578 \def (\lambda (x0: C).(\lambda (_: +(((drop n O c1 x0) \to ((clear x0 (CHead d1 (Bind Abst) t)) \to (\forall (c2: +C).((csubt g c1 c2) \to (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u -t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))) (ex4_2_intro C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) x1 x2 -H17 (getl_intro n c2 (CHead x1 (Bind Abbr) x2) (CHead x1 (Bind Abbr) x2) H18 -(clear_bind Abbr x1 x2)) H19 H20)))))))) H16)) (csubt_drop_abst g n c1 c2 H12 -d1 t H15)))))))))) H8)) H7))))) (\lambda (f: F).(\lambda (H5: (drop n O c1 -(CHead x0 (Flat f) t0))).(\lambda (H6: (clear (CHead x0 (Flat f) t0) (CHead -d1 (Bind Abst) t))).(let H7 \def H5 in (unintro C c1 (\lambda (c: C).((drop n -O c (CHead x0 (Flat f) t0)) \to (\forall (c2: C).((csubt g c c2) \to (or (ex2 -C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n c2 (CHead d2 -(Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 -d2))) (\lambda (d2: C).(\lambda (u: T).(getl n c2 (CHead d2 (Bind Abbr) u)))) -(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda -(u: T).(ty3 g d2 u t))))))))) (nat_ind (\lambda (n0: nat).(\forall (x1: -C).((drop n0 O x1 (CHead x0 (Flat f) t0)) \to (\forall (c2: C).((csubt g x1 -c2) \to (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl -n0 c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: -T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n0 c2 (CHead d2 -(Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda -(d2: C).(\lambda (u: T).(ty3 g d2 u t)))))))))) (\lambda (x1: C).(\lambda -(H8: (drop O O x1 (CHead x0 (Flat f) t0))).(\lambda (c2: C).(\lambda (H9: -(csubt g x1 c2)).(let H10 \def (eq_ind C x1 (\lambda (c: C).(csubt g c c2)) -H9 (CHead x0 (Flat f) t0) (drop_gen_refl x1 (CHead x0 (Flat f) t0) H8)) in -(let H_y \def (clear_flat x0 (CHead d1 (Bind Abst) t) (clear_gen_flat f x0 -(CHead d1 (Bind Abst) t) t0 H6) f t0) in (let H11 \def (csubt_clear_conf g -(CHead x0 (Flat f) t0) c2 H10 (CHead d1 (Bind Abst) t) H_y) in (ex2_ind C -(\lambda (e2: C).(csubt g (CHead d1 (Bind Abst) t) e2)) (\lambda (e2: -C).(clear c2 e2)) (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(getl O c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl O -c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u -t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) (\lambda (x2: -C).(\lambda (H12: (csubt g (CHead d1 (Bind Abst) t) x2)).(\lambda (H13: -(clear c2 x2)).(let H14 \def (csubt_gen_abst g d1 x2 t H12) in (or_ind (ex2 C -(\lambda (e2: C).(eq C x2 (CHead e2 (Bind Abst) t))) (\lambda (e2: C).(csubt -g d1 e2))) (ex4_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C x2 (CHead e2 -(Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g d1 e2))) -(\lambda (_: C).(\lambda (v2: T).(ty3 g d1 v2 t))) (\lambda (e2: C).(\lambda -(v2: T).(ty3 g e2 v2 t)))) (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda +t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))))))))).(\lambda (k: +K).(\lambda (t0: T).(\lambda (H3: (drop n O c1 (CHead x0 k t0))).(\lambda +(H4: (clear (CHead x0 k t0) (CHead d1 (Bind Abst) t))).(let TMP_61 \def +(\lambda (k0: K).((drop n O c1 (CHead x0 k0 t0)) \to ((clear (CHead x0 k0 t0) +(CHead d1 (Bind Abst) t)) \to (\forall (c2: C).((csubt g c1 c2) \to (let +TMP_49 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_52 \def (\lambda +(d2: C).(let TMP_50 \def (Bind Abst) in (let TMP_51 \def (CHead d2 TMP_50 t) +in (getl n c2 TMP_51)))) in (let TMP_53 \def (ex2 C TMP_49 TMP_52) in (let +TMP_54 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_57 +\def (\lambda (d2: C).(\lambda (u: T).(let TMP_55 \def (Bind Abbr) in (let +TMP_56 \def (CHead d2 TMP_55 u) in (getl n c2 TMP_56))))) in (let TMP_58 \def +(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_59 \def (\lambda +(d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_60 \def (ex4_2 C T +TMP_54 TMP_57 TMP_58 TMP_59) in (or TMP_53 TMP_60)))))))))))))) in (let +TMP_211 \def (\lambda (b: B).(\lambda (H5: (drop n O c1 (CHead x0 (Bind b) +t0))).(\lambda (H6: (clear (CHead x0 (Bind b) t0) (CHead d1 (Bind Abst) +t))).(let TMP_62 \def (\lambda (e: C).(match e with [(CSort _) \Rightarrow d1 +| (CHead c _ _) \Rightarrow c])) in (let TMP_63 \def (Bind Abst) in (let +TMP_64 \def (CHead d1 TMP_63 t) in (let TMP_65 \def (Bind b) in (let TMP_66 +\def (CHead x0 TMP_65 t0) in (let TMP_67 \def (Bind Abst) in (let TMP_68 \def +(CHead d1 TMP_67 t) in (let TMP_69 \def (clear_gen_bind b x0 TMP_68 t0 H6) in +(let H7 \def (f_equal C C TMP_62 TMP_64 TMP_66 TMP_69) in (let TMP_70 \def +(\lambda (e: C).(match e with [(CSort _) \Rightarrow Abst | (CHead _ k0 _) +\Rightarrow (match k0 with [(Bind b0) \Rightarrow b0 | (Flat _) \Rightarrow +Abst])])) in (let TMP_71 \def (Bind Abst) in (let TMP_72 \def (CHead d1 +TMP_71 t) in (let TMP_73 \def (Bind b) in (let TMP_74 \def (CHead x0 TMP_73 +t0) in (let TMP_75 \def (Bind Abst) in (let TMP_76 \def (CHead d1 TMP_75 t) +in (let TMP_77 \def (clear_gen_bind b x0 TMP_76 t0 H6) in (let H8 \def +(f_equal C B TMP_70 TMP_72 TMP_74 TMP_77) in (let TMP_78 \def (\lambda (e: +C).(match e with [(CSort _) \Rightarrow t | (CHead _ _ t1) \Rightarrow t1])) +in (let TMP_79 \def (Bind Abst) in (let TMP_80 \def (CHead d1 TMP_79 t) in +(let TMP_81 \def (Bind b) in (let TMP_82 \def (CHead x0 TMP_81 t0) in (let +TMP_83 \def (Bind Abst) in (let TMP_84 \def (CHead d1 TMP_83 t) in (let +TMP_85 \def (clear_gen_bind b x0 TMP_84 t0 H6) in (let H9 \def (f_equal C T +TMP_78 TMP_80 TMP_82 TMP_85) in (let TMP_209 \def (\lambda (H10: (eq B Abst +b)).(\lambda (H11: (eq C d1 x0)).(\lambda (c2: C).(\lambda (H12: (csubt g c1 +c2)).(let TMP_88 \def (\lambda (t1: T).(let TMP_86 \def (Bind b) in (let +TMP_87 \def (CHead x0 TMP_86 t1) in (drop n O c1 TMP_87)))) in (let H13 \def +(eq_ind_r T t0 TMP_88 H5 t H9) in (let TMP_91 \def (\lambda (b0: B).(let +TMP_89 \def (Bind b0) in (let TMP_90 \def (CHead x0 TMP_89 t) in (drop n O c1 +TMP_90)))) in (let H14 \def (eq_ind_r B b TMP_91 H13 Abst H10) in (let TMP_94 +\def (\lambda (c: C).(let TMP_92 \def (Bind Abst) in (let TMP_93 \def (CHead +c TMP_92 t) in (drop n O c1 TMP_93)))) in (let H15 \def (eq_ind_r C x0 TMP_94 +H14 d1 H11) in (let TMP_95 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_98 \def (\lambda (d2: C).(let TMP_96 \def (Bind Abst) in (let TMP_97 \def +(CHead d2 TMP_96 t) in (drop n O c2 TMP_97)))) in (let TMP_99 \def (ex2 C +TMP_95 TMP_98) in (let TMP_100 \def (\lambda (d2: C).(\lambda (_: T).(csubt g +d1 d2))) in (let TMP_103 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_101 +\def (Bind Abbr) in (let TMP_102 \def (CHead d2 TMP_101 u) in (drop n O c2 +TMP_102))))) in (let TMP_104 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u +t))) in (let TMP_105 \def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) +in (let TMP_106 \def (ex4_2 C T TMP_100 TMP_103 TMP_104 TMP_105) in (let +TMP_107 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_110 \def (\lambda +(d2: C).(let TMP_108 \def (Bind Abst) in (let TMP_109 \def (CHead d2 TMP_108 +t) in (getl n c2 TMP_109)))) in (let TMP_111 \def (ex2 C TMP_107 TMP_110) in +(let TMP_112 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_115 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_113 \def (Bind Abbr) +in (let TMP_114 \def (CHead d2 TMP_113 u) in (getl n c2 TMP_114))))) in (let +TMP_116 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_117 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_118 \def +(ex4_2 C T TMP_112 TMP_115 TMP_116 TMP_117) in (let TMP_119 \def (or TMP_111 +TMP_118) in (let TMP_161 \def (\lambda (H16: (ex2 C (\lambda (d2: C).(csubt g +d1 d2)) (\lambda (d2: C).(drop n O c2 (CHead d2 (Bind Abst) t))))).(let +TMP_120 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_123 \def (\lambda +(d2: C).(let TMP_121 \def (Bind Abst) in (let TMP_122 \def (CHead d2 TMP_121 +t) in (drop n O c2 TMP_122)))) in (let TMP_124 \def (\lambda (d2: C).(csubt g +d1 d2)) in (let TMP_127 \def (\lambda (d2: C).(let TMP_125 \def (Bind Abst) +in (let TMP_126 \def (CHead d2 TMP_125 t) in (getl n c2 TMP_126)))) in (let +TMP_128 \def (ex2 C TMP_124 TMP_127) in (let TMP_129 \def (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_132 \def (\lambda (d2: +C).(\lambda (u: T).(let TMP_130 \def (Bind Abbr) in (let TMP_131 \def (CHead +d2 TMP_130 u) in (getl n c2 TMP_131))))) in (let TMP_133 \def (\lambda (_: +C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_134 \def (\lambda (d2: +C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_135 \def (ex4_2 C T TMP_129 +TMP_132 TMP_133 TMP_134) in (let TMP_136 \def (or TMP_128 TMP_135) in (let +TMP_160 \def (\lambda (x1: C).(\lambda (H17: (csubt g d1 x1)).(\lambda (H18: +(drop n O c2 (CHead x1 (Bind Abst) t))).(let TMP_137 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_140 \def (\lambda (d2: C).(let TMP_138 \def +(Bind Abst) in (let TMP_139 \def (CHead d2 TMP_138 t) in (getl n c2 +TMP_139)))) in (let TMP_141 \def (ex2 C TMP_137 TMP_140) in (let TMP_142 \def +(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_145 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_143 \def (Bind Abbr) in (let +TMP_144 \def (CHead d2 TMP_143 u) in (getl n c2 TMP_144))))) in (let TMP_146 +\def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_147 \def +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_148 \def (ex4_2 +C T TMP_142 TMP_145 TMP_146 TMP_147) in (let TMP_149 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_152 \def (\lambda (d2: C).(let TMP_150 \def +(Bind Abst) in (let TMP_151 \def (CHead d2 TMP_150 t) in (getl n c2 +TMP_151)))) in (let TMP_153 \def (Bind Abst) in (let TMP_154 \def (CHead x1 +TMP_153 t) in (let TMP_155 \def (Bind Abst) in (let TMP_156 \def (CHead x1 +TMP_155 t) in (let TMP_157 \def (clear_bind Abst x1 t) in (let TMP_158 \def +(getl_intro n c2 TMP_154 TMP_156 H18 TMP_157) in (let TMP_159 \def (ex_intro2 +C TMP_149 TMP_152 x1 H17 TMP_158) in (or_introl TMP_141 TMP_148 +TMP_159))))))))))))))))))))) in (ex2_ind C TMP_120 TMP_123 TMP_136 TMP_160 +H16)))))))))))))) in (let TMP_207 \def (\lambda (H16: (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: -T).(getl O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) -(\lambda (H15: (ex2 C (\lambda (e2: C).(eq C x2 (CHead e2 (Bind Abst) t))) -(\lambda (e2: C).(csubt g d1 e2)))).(ex2_ind C (\lambda (e2: C).(eq C x2 -(CHead e2 (Bind Abst) t))) (\lambda (e2: C).(csubt g d1 e2)) (or (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl O c2 (CHead d2 (Bind -Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) -(\lambda (d2: C).(\lambda (u: T).(getl O c2 (CHead d2 (Bind Abbr) u)))) -(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda -(u: T).(ty3 g d2 u t))))) (\lambda (x3: C).(\lambda (H16: (eq C x2 (CHead x3 -(Bind Abst) t))).(\lambda (H17: (csubt g d1 x3)).(let H18 \def (eq_ind C x2 -(\lambda (c: C).(clear c2 c)) H13 (CHead x3 (Bind Abst) t) H16) in (or_introl -(ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl O c2 (CHead -d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 -d2))) (\lambda (d2: C).(\lambda (u: T).(getl O c2 (CHead d2 (Bind Abbr) u)))) -(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda -(u: T).(ty3 g d2 u t)))) (ex_intro2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) t))) x3 H17 (getl_intro O -c2 (CHead x3 (Bind Abst) t) c2 (drop_refl c2) H18))))))) H15)) (\lambda (H15: -(ex4_2 C T (\lambda (e2: C).(\lambda (v2: T).(eq C x2 (CHead e2 (Bind Abbr) -v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g d1 e2))) (\lambda (_: -C).(\lambda (v2: T).(ty3 g d1 v2 t))) (\lambda (e2: C).(\lambda (v2: T).(ty3 -g e2 v2 t))))).(ex4_2_ind C T (\lambda (e2: C).(\lambda (v2: T).(eq C x2 -(CHead e2 (Bind Abbr) v2)))) (\lambda (e2: C).(\lambda (_: T).(csubt g d1 -e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g d1 v2 t))) (\lambda (e2: -C).(\lambda (v2: T).(ty3 g e2 v2 t))) (or (ex2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(getl O c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T +T).(drop n O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: +T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))).(let +TMP_162 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_165 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_163 \def (Bind Abbr) +in (let TMP_164 \def (CHead d2 TMP_163 u) in (drop n O c2 TMP_164))))) in +(let TMP_166 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let +TMP_167 \def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let +TMP_168 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_171 \def (\lambda +(d2: C).(let TMP_169 \def (Bind Abst) in (let TMP_170 \def (CHead d2 TMP_169 +t) in (getl n c2 TMP_170)))) in (let TMP_172 \def (ex2 C TMP_168 TMP_171) in +(let TMP_173 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_176 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_174 \def (Bind Abbr) +in (let TMP_175 \def (CHead d2 TMP_174 u) in (getl n c2 TMP_175))))) in (let +TMP_177 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_178 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_179 \def +(ex4_2 C T TMP_173 TMP_176 TMP_177 TMP_178) in (let TMP_180 \def (or TMP_172 +TMP_179) in (let TMP_206 \def (\lambda (x1: C).(\lambda (x2: T).(\lambda +(H17: (csubt g d1 x1)).(\lambda (H18: (drop n O c2 (CHead x1 (Bind Abbr) +x2))).(\lambda (H19: (ty3 g d1 x2 t)).(\lambda (H20: (ty3 g x1 x2 t)).(let +TMP_181 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_184 \def (\lambda +(d2: C).(let TMP_182 \def (Bind Abst) in (let TMP_183 \def (CHead d2 TMP_182 +t) in (getl n c2 TMP_183)))) in (let TMP_185 \def (ex2 C TMP_181 TMP_184) in +(let TMP_186 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_189 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_187 \def (Bind Abbr) +in (let TMP_188 \def (CHead d2 TMP_187 u) in (getl n c2 TMP_188))))) in (let +TMP_190 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_191 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_192 \def +(ex4_2 C T TMP_186 TMP_189 TMP_190 TMP_191) in (let TMP_193 \def (\lambda +(d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_196 \def (\lambda (d2: +C).(\lambda (u: T).(let TMP_194 \def (Bind Abbr) in (let TMP_195 \def (CHead +d2 TMP_194 u) in (getl n c2 TMP_195))))) in (let TMP_197 \def (\lambda (_: +C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_198 \def (\lambda (d2: +C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_199 \def (Bind Abbr) in (let +TMP_200 \def (CHead x1 TMP_199 x2) in (let TMP_201 \def (Bind Abbr) in (let +TMP_202 \def (CHead x1 TMP_201 x2) in (let TMP_203 \def (clear_bind Abbr x1 +x2) in (let TMP_204 \def (getl_intro n c2 TMP_200 TMP_202 H18 TMP_203) in +(let TMP_205 \def (ex4_2_intro C T TMP_193 TMP_196 TMP_197 TMP_198 x1 x2 H17 +TMP_204 H19 H20) in (or_intror TMP_185 TMP_192 +TMP_205)))))))))))))))))))))))))) in (ex4_2_ind C T TMP_162 TMP_165 TMP_166 +TMP_167 TMP_180 TMP_206 H16)))))))))))))))) in (let TMP_208 \def +(csubt_drop_abst g n c1 c2 H12 d1 t H15) in (or_ind TMP_99 TMP_106 TMP_119 +TMP_161 TMP_207 TMP_208))))))))))))))))))))))))))))))) in (let TMP_210 \def +(TMP_209 H8) in (TMP_210 H7))))))))))))))))))))))))))))))))) in (let TMP_577 +\def (\lambda (f: F).(\lambda (H5: (drop n O c1 (CHead x0 (Flat f) +t0))).(\lambda (H6: (clear (CHead x0 (Flat f) t0) (CHead d1 (Bind Abst) +t))).(let H7 \def H5 in (let TMP_224 \def (\lambda (c: C).((drop n O c (CHead +x0 (Flat f) t0)) \to (\forall (c2: C).((csubt g c c2) \to (let TMP_212 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_215 \def (\lambda (d2: C).(let +TMP_213 \def (Bind Abst) in (let TMP_214 \def (CHead d2 TMP_213 t) in (getl n +c2 TMP_214)))) in (let TMP_216 \def (ex2 C TMP_212 TMP_215) in (let TMP_217 +\def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_220 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_218 \def (Bind Abbr) in (let +TMP_219 \def (CHead d2 TMP_218 u) in (getl n c2 TMP_219))))) in (let TMP_221 +\def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_222 \def +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_223 \def (ex4_2 +C T TMP_217 TMP_220 TMP_221 TMP_222) in (or TMP_216 TMP_223))))))))))))) in +(let TMP_237 \def (\lambda (n0: nat).(\forall (x1: C).((drop n0 O x1 (CHead +x0 (Flat f) t0)) \to (\forall (c2: C).((csubt g x1 c2) \to (let TMP_225 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_228 \def (\lambda (d2: C).(let +TMP_226 \def (Bind Abst) in (let TMP_227 \def (CHead d2 TMP_226 t) in (getl +n0 c2 TMP_227)))) in (let TMP_229 \def (ex2 C TMP_225 TMP_228) in (let +TMP_230 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_233 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_231 \def (Bind Abbr) +in (let TMP_232 \def (CHead d2 TMP_231 u) in (getl n0 c2 TMP_232))))) in (let +TMP_234 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_235 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_236 \def +(ex4_2 C T TMP_230 TMP_233 TMP_234 TMP_235) in (or TMP_229 +TMP_236)))))))))))))) in (let TMP_386 \def (\lambda (x1: C).(\lambda (H8: +(drop O O x1 (CHead x0 (Flat f) t0))).(\lambda (c2: C).(\lambda (H9: (csubt g +x1 c2)).(let TMP_238 \def (\lambda (c: C).(csubt g c c2)) in (let TMP_239 +\def (Flat f) in (let TMP_240 \def (CHead x0 TMP_239 t0) in (let TMP_241 \def +(Flat f) in (let TMP_242 \def (CHead x0 TMP_241 t0) in (let TMP_243 \def +(drop_gen_refl x1 TMP_242 H8) in (let H10 \def (eq_ind C x1 TMP_238 H9 +TMP_240 TMP_243) in (let TMP_244 \def (Bind Abst) in (let TMP_245 \def (CHead +d1 TMP_244 t) in (let TMP_246 \def (Bind Abst) in (let TMP_247 \def (CHead d1 +TMP_246 t) in (let TMP_248 \def (clear_gen_flat f x0 TMP_247 t0 H6) in (let +H_y \def (clear_flat x0 TMP_245 TMP_248 f t0) in (let TMP_249 \def (Flat f) +in (let TMP_250 \def (CHead x0 TMP_249 t0) in (let TMP_251 \def (Bind Abst) +in (let TMP_252 \def (CHead d1 TMP_251 t) in (let H11 \def (csubt_clear_conf +g TMP_250 c2 H10 TMP_252 H_y) in (let TMP_255 \def (\lambda (e2: C).(let +TMP_253 \def (Bind Abst) in (let TMP_254 \def (CHead d1 TMP_253 t) in (csubt +g TMP_254 e2)))) in (let TMP_256 \def (\lambda (e2: C).(clear c2 e2)) in (let +TMP_257 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_260 \def (\lambda +(d2: C).(let TMP_258 \def (Bind Abst) in (let TMP_259 \def (CHead d2 TMP_258 +t) in (getl O c2 TMP_259)))) in (let TMP_261 \def (ex2 C TMP_257 TMP_260) in +(let TMP_262 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_265 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_263 \def (Bind Abbr) +in (let TMP_264 \def (CHead d2 TMP_263 u) in (getl O c2 TMP_264))))) in (let +TMP_266 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_267 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_268 \def +(ex4_2 C T TMP_262 TMP_265 TMP_266 TMP_267) in (let TMP_269 \def (or TMP_261 +TMP_268) in (let TMP_385 \def (\lambda (x2: C).(\lambda (H12: (csubt g (CHead +d1 (Bind Abst) t) x2)).(\lambda (H13: (clear c2 x2)).(let H14 \def +(csubt_gen_abst g d1 x2 t H12) in (let TMP_272 \def (\lambda (e2: C).(let +TMP_270 \def (Bind Abst) in (let TMP_271 \def (CHead e2 TMP_270 t) in (eq C +x2 TMP_271)))) in (let TMP_273 \def (\lambda (e2: C).(csubt g d1 e2)) in (let +TMP_274 \def (ex2 C TMP_272 TMP_273) in (let TMP_277 \def (\lambda (e2: +C).(\lambda (v2: T).(let TMP_275 \def (Bind Abbr) in (let TMP_276 \def (CHead +e2 TMP_275 v2) in (eq C x2 TMP_276))))) in (let TMP_278 \def (\lambda (e2: +C).(\lambda (_: T).(csubt g d1 e2))) in (let TMP_279 \def (\lambda (_: +C).(\lambda (v2: T).(ty3 g d1 v2 t))) in (let TMP_280 \def (\lambda (e2: +C).(\lambda (v2: T).(ty3 g e2 v2 t))) in (let TMP_281 \def (ex4_2 C T TMP_277 +TMP_278 TMP_279 TMP_280) in (let TMP_282 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_285 \def (\lambda (d2: C).(let TMP_283 \def (Bind Abst) in +(let TMP_284 \def (CHead d2 TMP_283 t) in (getl O c2 TMP_284)))) in (let +TMP_286 \def (ex2 C TMP_282 TMP_285) in (let TMP_287 \def (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_290 \def (\lambda (d2: +C).(\lambda (u: T).(let TMP_288 \def (Bind Abbr) in (let TMP_289 \def (CHead +d2 TMP_288 u) in (getl O c2 TMP_289))))) in (let TMP_291 \def (\lambda (_: +C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_292 \def (\lambda (d2: +C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_293 \def (ex4_2 C T TMP_287 +TMP_290 TMP_291 TMP_292) in (let TMP_294 \def (or TMP_286 TMP_293) in (let +TMP_337 \def (\lambda (H15: (ex2 C (\lambda (e2: C).(eq C x2 (CHead e2 (Bind +Abst) t))) (\lambda (e2: C).(csubt g d1 e2)))).(let TMP_297 \def (\lambda +(e2: C).(let TMP_295 \def (Bind Abst) in (let TMP_296 \def (CHead e2 TMP_295 +t) in (eq C x2 TMP_296)))) in (let TMP_298 \def (\lambda (e2: C).(csubt g d1 +e2)) in (let TMP_299 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_302 +\def (\lambda (d2: C).(let TMP_300 \def (Bind Abst) in (let TMP_301 \def +(CHead d2 TMP_300 t) in (getl O c2 TMP_301)))) in (let TMP_303 \def (ex2 C +TMP_299 TMP_302) in (let TMP_304 \def (\lambda (d2: C).(\lambda (_: T).(csubt +g d1 d2))) in (let TMP_307 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_305 +\def (Bind Abbr) in (let TMP_306 \def (CHead d2 TMP_305 u) in (getl O c2 +TMP_306))))) in (let TMP_308 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u +t))) in (let TMP_309 \def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) +in (let TMP_310 \def (ex4_2 C T TMP_304 TMP_307 TMP_308 TMP_309) in (let +TMP_311 \def (or TMP_303 TMP_310) in (let TMP_336 \def (\lambda (x3: +C).(\lambda (H16: (eq C x2 (CHead x3 (Bind Abst) t))).(\lambda (H17: (csubt g +d1 x3)).(let TMP_312 \def (\lambda (c: C).(clear c2 c)) in (let TMP_313 \def +(Bind Abst) in (let TMP_314 \def (CHead x3 TMP_313 t) in (let H18 \def +(eq_ind C x2 TMP_312 H13 TMP_314 H16) in (let TMP_315 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_318 \def (\lambda (d2: C).(let TMP_316 \def +(Bind Abst) in (let TMP_317 \def (CHead d2 TMP_316 t) in (getl O c2 +TMP_317)))) in (let TMP_319 \def (ex2 C TMP_315 TMP_318) in (let TMP_320 \def +(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_323 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_321 \def (Bind Abbr) in (let +TMP_322 \def (CHead d2 TMP_321 u) in (getl O c2 TMP_322))))) in (let TMP_324 +\def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_325 \def +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_326 \def (ex4_2 +C T TMP_320 TMP_323 TMP_324 TMP_325) in (let TMP_327 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_330 \def (\lambda (d2: C).(let TMP_328 \def +(Bind Abst) in (let TMP_329 \def (CHead d2 TMP_328 t) in (getl O c2 +TMP_329)))) in (let TMP_331 \def (Bind Abst) in (let TMP_332 \def (CHead x3 +TMP_331 t) in (let TMP_333 \def (drop_refl c2) in (let TMP_334 \def +(getl_intro O c2 TMP_332 c2 TMP_333 H18) in (let TMP_335 \def (ex_intro2 C +TMP_327 TMP_330 x3 H17 TMP_334) in (or_introl TMP_319 TMP_326 +TMP_335))))))))))))))))))))))) in (ex2_ind C TMP_297 TMP_298 TMP_311 TMP_336 +H15)))))))))))))) in (let TMP_384 \def (\lambda (H15: (ex4_2 C T (\lambda +(e2: C).(\lambda (v2: T).(eq C x2 (CHead e2 (Bind Abbr) v2)))) (\lambda (e2: +C).(\lambda (_: T).(csubt g d1 e2))) (\lambda (_: C).(\lambda (v2: T).(ty3 g +d1 v2 t))) (\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 t))))).(let TMP_340 +\def (\lambda (e2: C).(\lambda (v2: T).(let TMP_338 \def (Bind Abbr) in (let +TMP_339 \def (CHead e2 TMP_338 v2) in (eq C x2 TMP_339))))) in (let TMP_341 +\def (\lambda (e2: C).(\lambda (_: T).(csubt g d1 e2))) in (let TMP_342 \def +(\lambda (_: C).(\lambda (v2: T).(ty3 g d1 v2 t))) in (let TMP_343 \def +(\lambda (e2: C).(\lambda (v2: T).(ty3 g e2 v2 t))) in (let TMP_344 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_347 \def (\lambda (d2: C).(let +TMP_345 \def (Bind Abst) in (let TMP_346 \def (CHead d2 TMP_345 t) in (getl O +c2 TMP_346)))) in (let TMP_348 \def (ex2 C TMP_344 TMP_347) in (let TMP_349 +\def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_352 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_350 \def (Bind Abbr) in (let +TMP_351 \def (CHead d2 TMP_350 u) in (getl O c2 TMP_351))))) in (let TMP_353 +\def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_354 \def +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_355 \def (ex4_2 +C T TMP_349 TMP_352 TMP_353 TMP_354) in (let TMP_356 \def (or TMP_348 +TMP_355) in (let TMP_383 \def (\lambda (x3: C).(\lambda (x4: T).(\lambda +(H16: (eq C x2 (CHead x3 (Bind Abbr) x4))).(\lambda (H17: (csubt g d1 +x3)).(\lambda (H18: (ty3 g d1 x4 t)).(\lambda (H19: (ty3 g x3 x4 t)).(let +TMP_357 \def (\lambda (c: C).(clear c2 c)) in (let TMP_358 \def (Bind Abbr) +in (let TMP_359 \def (CHead x3 TMP_358 x4) in (let H20 \def (eq_ind C x2 +TMP_357 H13 TMP_359 H16) in (let TMP_360 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_363 \def (\lambda (d2: C).(let TMP_361 \def (Bind Abst) in +(let TMP_362 \def (CHead d2 TMP_361 t) in (getl O c2 TMP_362)))) in (let +TMP_364 \def (ex2 C TMP_360 TMP_363) in (let TMP_365 \def (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_368 \def (\lambda (d2: +C).(\lambda (u: T).(let TMP_366 \def (Bind Abbr) in (let TMP_367 \def (CHead +d2 TMP_366 u) in (getl O c2 TMP_367))))) in (let TMP_369 \def (\lambda (_: +C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_370 \def (\lambda (d2: +C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_371 \def (ex4_2 C T TMP_365 +TMP_368 TMP_369 TMP_370) in (let TMP_372 \def (\lambda (d2: C).(\lambda (_: +T).(csubt g d1 d2))) in (let TMP_375 \def (\lambda (d2: C).(\lambda (u: +T).(let TMP_373 \def (Bind Abbr) in (let TMP_374 \def (CHead d2 TMP_373 u) in +(getl O c2 TMP_374))))) in (let TMP_376 \def (\lambda (_: C).(\lambda (u: +T).(ty3 g d1 u t))) in (let TMP_377 \def (\lambda (d2: C).(\lambda (u: +T).(ty3 g d2 u t))) in (let TMP_378 \def (Bind Abbr) in (let TMP_379 \def +(CHead x3 TMP_378 x4) in (let TMP_380 \def (drop_refl c2) in (let TMP_381 +\def (getl_intro O c2 TMP_379 c2 TMP_380 H20) in (let TMP_382 \def +(ex4_2_intro C T TMP_372 TMP_375 TMP_376 TMP_377 x3 x4 H17 TMP_381 H18 H19) +in (or_intror TMP_364 TMP_371 TMP_382)))))))))))))))))))))))))))) in +(ex4_2_ind C T TMP_340 TMP_341 TMP_342 TMP_343 TMP_356 TMP_383 +H15)))))))))))))))) in (or_ind TMP_274 TMP_281 TMP_294 TMP_337 TMP_384 +H14)))))))))))))))))))))))) in (ex2_ind C TMP_255 TMP_256 TMP_269 TMP_385 +H11))))))))))))))))))))))))))))))))))) in (let TMP_575 \def (\lambda (n0: +nat).(\lambda (H8: ((\forall (x1: C).((drop n0 O x1 (CHead x0 (Flat f) t0)) +\to (\forall (c2: C).((csubt g x1 c2) \to (or (ex2 C (\lambda (d2: C).(csubt +g d1 d2)) (\lambda (d2: C).(getl n0 c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u: T).(getl O c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) -(\lambda (x3: C).(\lambda (x4: T).(\lambda (H16: (eq C x2 (CHead x3 (Bind -Abbr) x4))).(\lambda (H17: (csubt g d1 x3)).(\lambda (H18: (ty3 g d1 x4 -t)).(\lambda (H19: (ty3 g x3 x4 t)).(let H20 \def (eq_ind C x2 (\lambda (c: -C).(clear c2 c)) H13 (CHead x3 (Bind Abbr) x4) H16) in (or_intror (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl O c2 (CHead d2 (Bind -Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) -(\lambda (d2: C).(\lambda (u: T).(getl O c2 (CHead d2 (Bind Abbr) u)))) -(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda -(u: T).(ty3 g d2 u t)))) (ex4_2_intro C T (\lambda (d2: C).(\lambda (_: -T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl O c2 (CHead d2 -(Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda -(d2: C).(\lambda (u: T).(ty3 g d2 u t))) x3 x4 H17 (getl_intro O c2 (CHead x3 -(Bind Abbr) x4) c2 (drop_refl c2) H20) H18 H19))))))))) H15)) H14))))) -H11)))))))) (\lambda (n0: nat).(\lambda (H8: ((\forall (x1: C).((drop n0 O x1 -(CHead x0 (Flat f) t0)) \to (\forall (c2: C).((csubt g x1 c2) \to (or (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n0 c2 (CHead d2 -(Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 -d2))) (\lambda (d2: C).(\lambda (u: T).(getl n0 c2 (CHead d2 (Bind Abbr) -u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: -C).(\lambda (u: T).(ty3 g d2 u t))))))))))).(\lambda (x1: C).(\lambda (H9: -(drop (S n0) O x1 (CHead x0 (Flat f) t0))).(\lambda (c2: C).(\lambda (H10: -(csubt g x1 c2)).(let H11 \def (drop_clear x1 (CHead x0 (Flat f) t0) n0 H9) -in (ex2_3_ind B C T (\lambda (b: B).(\lambda (e: C).(\lambda (v: T).(clear x1 -(CHead e (Bind b) v))))) (\lambda (_: B).(\lambda (e: C).(\lambda (_: -T).(drop n0 O e (CHead x0 (Flat f) t0))))) (or (ex2 C (\lambda (d2: C).(csubt -g d1 d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) t)))) (ex4_2 -C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: -C).(\lambda (u: T).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: -C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g -d2 u t))))) (\lambda (x2: B).(\lambda (x3: C).(\lambda (x4: T).(\lambda (H12: -(clear x1 (CHead x3 (Bind x2) x4))).(\lambda (H13: (drop n0 O x3 (CHead x0 -(Flat f) t0))).(let H14 \def (csubt_clear_conf g x1 c2 H10 (CHead x3 (Bind -x2) x4) H12) in (ex2_ind C (\lambda (e2: C).(csubt g (CHead x3 (Bind x2) x4) -e2)) (\lambda (e2: C).(clear c2 e2)) (or (ex2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u: T).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda -(u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) -(\lambda (x5: C).(\lambda (H15: (csubt g (CHead x3 (Bind x2) x4) -x5)).(\lambda (H16: (clear c2 x5)).(let H17 \def (csubt_gen_bind g x2 x3 x5 -x4 H15) in (ex2_3_ind B C T (\lambda (b2: B).(\lambda (e2: C).(\lambda (v2: -T).(eq C x5 (CHead e2 (Bind b2) v2))))) (\lambda (_: B).(\lambda (e2: -C).(\lambda (_: T).(csubt g x3 e2)))) (or (ex2 C (\lambda (d2: C).(csubt g d1 -d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u: T).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda -(u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) -(\lambda (x6: B).(\lambda (x7: C).(\lambda (x8: T).(\lambda (H18: (eq C x5 -(CHead x7 (Bind x6) x8))).(\lambda (H19: (csubt g x3 x7)).(let H20 \def -(eq_ind C x5 (\lambda (c: C).(clear c2 c)) H16 (CHead x7 (Bind x6) x8) H18) -in (let H21 \def (H8 x3 H13 x7 H19) in (or_ind (ex2 C (\lambda (d2: C).(csubt -g d1 d2)) (\lambda (d2: C).(getl n0 x7 (CHead d2 (Bind Abst) t)))) (ex4_2 C T +(u: T).(getl n0 c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: +T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u +t))))))))))).(\lambda (x1: C).(\lambda (H9: (drop (S n0) O x1 (CHead x0 (Flat +f) t0))).(\lambda (c2: C).(\lambda (H10: (csubt g x1 c2)).(let TMP_387 \def +(Flat f) in (let TMP_388 \def (CHead x0 TMP_387 t0) in (let H11 \def +(drop_clear x1 TMP_388 n0 H9) in (let TMP_391 \def (\lambda (b: B).(\lambda +(e: C).(\lambda (v: T).(let TMP_389 \def (Bind b) in (let TMP_390 \def (CHead +e TMP_389 v) in (clear x1 TMP_390)))))) in (let TMP_394 \def (\lambda (_: +B).(\lambda (e: C).(\lambda (_: T).(let TMP_392 \def (Flat f) in (let TMP_393 +\def (CHead x0 TMP_392 t0) in (drop n0 O e TMP_393)))))) in (let TMP_395 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_399 \def (\lambda (d2: C).(let +TMP_396 \def (S n0) in (let TMP_397 \def (Bind Abst) in (let TMP_398 \def +(CHead d2 TMP_397 t) in (getl TMP_396 c2 TMP_398))))) in (let TMP_400 \def +(ex2 C TMP_395 TMP_399) in (let TMP_401 \def (\lambda (d2: C).(\lambda (_: +T).(csubt g d1 d2))) in (let TMP_405 \def (\lambda (d2: C).(\lambda (u: +T).(let TMP_402 \def (S n0) in (let TMP_403 \def (Bind Abbr) in (let TMP_404 +\def (CHead d2 TMP_403 u) in (getl TMP_402 c2 TMP_404)))))) in (let TMP_406 +\def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_407 \def +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_408 \def (ex4_2 +C T TMP_401 TMP_405 TMP_406 TMP_407) in (let TMP_409 \def (or TMP_400 +TMP_408) in (let TMP_574 \def (\lambda (x2: B).(\lambda (x3: C).(\lambda (x4: +T).(\lambda (H12: (clear x1 (CHead x3 (Bind x2) x4))).(\lambda (H13: (drop n0 +O x3 (CHead x0 (Flat f) t0))).(let TMP_410 \def (Bind x2) in (let TMP_411 +\def (CHead x3 TMP_410 x4) in (let H14 \def (csubt_clear_conf g x1 c2 H10 +TMP_411 H12) in (let TMP_414 \def (\lambda (e2: C).(let TMP_412 \def (Bind +x2) in (let TMP_413 \def (CHead x3 TMP_412 x4) in (csubt g TMP_413 e2)))) in +(let TMP_415 \def (\lambda (e2: C).(clear c2 e2)) in (let TMP_416 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_420 \def (\lambda (d2: C).(let +TMP_417 \def (S n0) in (let TMP_418 \def (Bind Abst) in (let TMP_419 \def +(CHead d2 TMP_418 t) in (getl TMP_417 c2 TMP_419))))) in (let TMP_421 \def +(ex2 C TMP_416 TMP_420) in (let TMP_422 \def (\lambda (d2: C).(\lambda (_: +T).(csubt g d1 d2))) in (let TMP_426 \def (\lambda (d2: C).(\lambda (u: +T).(let TMP_423 \def (S n0) in (let TMP_424 \def (Bind Abbr) in (let TMP_425 +\def (CHead d2 TMP_424 u) in (getl TMP_423 c2 TMP_425)))))) in (let TMP_427 +\def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_428 \def +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_429 \def (ex4_2 +C T TMP_422 TMP_426 TMP_427 TMP_428) in (let TMP_430 \def (or TMP_421 +TMP_429) in (let TMP_573 \def (\lambda (x5: C).(\lambda (H15: (csubt g (CHead +x3 (Bind x2) x4) x5)).(\lambda (H16: (clear c2 x5)).(let H17 \def +(csubt_gen_bind g x2 x3 x5 x4 H15) in (let TMP_433 \def (\lambda (b2: +B).(\lambda (e2: C).(\lambda (v2: T).(let TMP_431 \def (Bind b2) in (let +TMP_432 \def (CHead e2 TMP_431 v2) in (eq C x5 TMP_432)))))) in (let TMP_434 +\def (\lambda (_: B).(\lambda (e2: C).(\lambda (_: T).(csubt g x3 e2)))) in +(let TMP_435 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_439 \def +(\lambda (d2: C).(let TMP_436 \def (S n0) in (let TMP_437 \def (Bind Abst) in +(let TMP_438 \def (CHead d2 TMP_437 t) in (getl TMP_436 c2 TMP_438))))) in +(let TMP_440 \def (ex2 C TMP_435 TMP_439) in (let TMP_441 \def (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_445 \def (\lambda (d2: +C).(\lambda (u: T).(let TMP_442 \def (S n0) in (let TMP_443 \def (Bind Abbr) +in (let TMP_444 \def (CHead d2 TMP_443 u) in (getl TMP_442 c2 TMP_444)))))) +in (let TMP_446 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let +TMP_447 \def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let +TMP_448 \def (ex4_2 C T TMP_441 TMP_445 TMP_446 TMP_447) in (let TMP_449 \def +(or TMP_440 TMP_448) in (let TMP_572 \def (\lambda (x6: B).(\lambda (x7: +C).(\lambda (x8: T).(\lambda (H18: (eq C x5 (CHead x7 (Bind x6) +x8))).(\lambda (H19: (csubt g x3 x7)).(let TMP_450 \def (\lambda (c: +C).(clear c2 c)) in (let TMP_451 \def (Bind x6) in (let TMP_452 \def (CHead +x7 TMP_451 x8) in (let H20 \def (eq_ind C x5 TMP_450 H16 TMP_452 H18) in (let +H21 \def (H8 x3 H13 x7 H19) in (let TMP_453 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_456 \def (\lambda (d2: C).(let TMP_454 \def (Bind Abst) in +(let TMP_455 \def (CHead d2 TMP_454 t) in (getl n0 x7 TMP_455)))) in (let +TMP_457 \def (ex2 C TMP_453 TMP_456) in (let TMP_458 \def (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_461 \def (\lambda (d2: +C).(\lambda (u: T).(let TMP_459 \def (Bind Abbr) in (let TMP_460 \def (CHead +d2 TMP_459 u) in (getl n0 x7 TMP_460))))) in (let TMP_462 \def (\lambda (_: +C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_463 \def (\lambda (d2: +C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_464 \def (ex4_2 C T TMP_458 +TMP_461 TMP_462 TMP_463) in (let TMP_465 \def (\lambda (d2: C).(csubt g d1 +d2)) in (let TMP_469 \def (\lambda (d2: C).(let TMP_466 \def (S n0) in (let +TMP_467 \def (Bind Abst) in (let TMP_468 \def (CHead d2 TMP_467 t) in (getl +TMP_466 c2 TMP_468))))) in (let TMP_470 \def (ex2 C TMP_465 TMP_469) in (let +TMP_471 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_475 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_472 \def (S n0) in +(let TMP_473 \def (Bind Abbr) in (let TMP_474 \def (CHead d2 TMP_473 u) in +(getl TMP_472 c2 TMP_474)))))) in (let TMP_476 \def (\lambda (_: C).(\lambda +(u: T).(ty3 g d1 u t))) in (let TMP_477 \def (\lambda (d2: C).(\lambda (u: +T).(ty3 g d2 u t))) in (let TMP_478 \def (ex4_2 C T TMP_471 TMP_475 TMP_476 +TMP_477) in (let TMP_479 \def (or TMP_470 TMP_478) in (let TMP_523 \def +(\lambda (H22: (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: +C).(getl n0 x7 (CHead d2 (Bind Abst) t))))).(let TMP_480 \def (\lambda (d2: +C).(csubt g d1 d2)) in (let TMP_483 \def (\lambda (d2: C).(let TMP_481 \def +(Bind Abst) in (let TMP_482 \def (CHead d2 TMP_481 t) in (getl n0 x7 +TMP_482)))) in (let TMP_484 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_488 \def (\lambda (d2: C).(let TMP_485 \def (S n0) in (let TMP_486 \def +(Bind Abst) in (let TMP_487 \def (CHead d2 TMP_486 t) in (getl TMP_485 c2 +TMP_487))))) in (let TMP_489 \def (ex2 C TMP_484 TMP_488) in (let TMP_490 +\def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_494 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_491 \def (S n0) in (let TMP_492 +\def (Bind Abbr) in (let TMP_493 \def (CHead d2 TMP_492 u) in (getl TMP_491 +c2 TMP_493)))))) in (let TMP_495 \def (\lambda (_: C).(\lambda (u: T).(ty3 g +d1 u t))) in (let TMP_496 \def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u +t))) in (let TMP_497 \def (ex4_2 C T TMP_490 TMP_494 TMP_495 TMP_496) in (let +TMP_498 \def (or TMP_489 TMP_497) in (let TMP_522 \def (\lambda (x9: +C).(\lambda (H23: (csubt g d1 x9)).(\lambda (H24: (getl n0 x7 (CHead x9 (Bind +Abst) t))).(let TMP_499 \def (\lambda (d2: C).(csubt g d1 d2)) in (let +TMP_503 \def (\lambda (d2: C).(let TMP_500 \def (S n0) in (let TMP_501 \def +(Bind Abst) in (let TMP_502 \def (CHead d2 TMP_501 t) in (getl TMP_500 c2 +TMP_502))))) in (let TMP_504 \def (ex2 C TMP_499 TMP_503) in (let TMP_505 +\def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_509 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_506 \def (S n0) in (let TMP_507 +\def (Bind Abbr) in (let TMP_508 \def (CHead d2 TMP_507 u) in (getl TMP_506 +c2 TMP_508)))))) in (let TMP_510 \def (\lambda (_: C).(\lambda (u: T).(ty3 g +d1 u t))) in (let TMP_511 \def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u +t))) in (let TMP_512 \def (ex4_2 C T TMP_505 TMP_509 TMP_510 TMP_511) in (let +TMP_513 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_517 \def (\lambda +(d2: C).(let TMP_514 \def (S n0) in (let TMP_515 \def (Bind Abst) in (let +TMP_516 \def (CHead d2 TMP_515 t) in (getl TMP_514 c2 TMP_516))))) in (let +TMP_518 \def (Bind Abst) in (let TMP_519 \def (CHead x9 TMP_518 t) in (let +TMP_520 \def (getl_clear_bind x6 c2 x7 x8 H20 TMP_519 n0 H24) in (let TMP_521 +\def (ex_intro2 C TMP_513 TMP_517 x9 H23 TMP_520) in (or_introl TMP_504 +TMP_512 TMP_521)))))))))))))))))) in (ex2_ind C TMP_480 TMP_483 TMP_498 +TMP_522 H22)))))))))))))) in (let TMP_571 \def (\lambda (H22: (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl n0 x7 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: -T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))) (or -(ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl (S n0) c2 -(CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: -T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl (S n0) c2 (CHead -d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) -(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) (\lambda (H22: (ex2 C -(\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: C).(getl n0 x7 (CHead d2 -(Bind Abst) t))))).(ex2_ind C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(getl n0 x7 (CHead d2 (Bind Abst) t))) (or (ex2 C (\lambda (d2: C).(csubt -g d1 d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) t)))) (ex4_2 -C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: -C).(\lambda (u: T).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: -C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g -d2 u t))))) (\lambda (x9: C).(\lambda (H23: (csubt g d1 x9)).(\lambda (H24: -(getl n0 x7 (CHead x9 (Bind Abst) t))).(or_introl (ex2 C (\lambda (d2: -C).(csubt g d1 d2)) (\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) -t)))) (ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda -(d2: C).(\lambda (u: T).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda -(_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 -g d2 u t)))) (ex_intro2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda (d2: -C).(getl (S n0) c2 (CHead d2 (Bind Abst) t))) x9 H23 (getl_clear_bind x6 c2 -x7 x8 H20 (CHead x9 (Bind Abst) t) n0 H24)))))) H22)) (\lambda (H22: (ex4_2 C -T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: -C).(\lambda (u: T).(getl n0 x7 (CHead d2 (Bind Abbr) u)))) (\lambda (_: -C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g -d2 u t))))).(ex4_2_ind C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) -(\lambda (d2: C).(\lambda (u: T).(getl n0 x7 (CHead d2 (Bind Abbr) u)))) -(\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda -(u: T).(ty3 g d2 u t))) (or (ex2 C (\lambda (d2: C).(csubt g d1 d2)) (\lambda -(d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda (u: T).(getl -(S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda (u: T).(ty3 g -d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))) (\lambda (x9: -C).(\lambda (x10: T).(\lambda (H23: (csubt g d1 x9)).(\lambda (H24: (getl n0 -x7 (CHead x9 (Bind Abbr) x10))).(\lambda (H25: (ty3 g d1 x10 t)).(\lambda -(H26: (ty3 g x9 x10 t)).(or_intror (ex2 C (\lambda (d2: C).(csubt g d1 d2)) -(\lambda (d2: C).(getl (S n0) c2 (CHead d2 (Bind Abst) t)))) (ex4_2 C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda (d2: C).(\lambda -(u: T).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda (_: C).(\lambda -(u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t)))) -(ex4_2_intro C T (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) (\lambda -(d2: C).(\lambda (u: T).(getl (S n0) c2 (CHead d2 (Bind Abbr) u)))) (\lambda -(_: C).(\lambda (u: T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 -g d2 u t))) x9 x10 H23 (getl_clear_bind x6 c2 x7 x8 H20 (CHead x9 (Bind Abbr) -x10) n0 H24) H25 H26)))))))) H22)) H21)))))))) H17))))) H14))))))) -H11)))))))) n) H7))))) k H3 H4))))))) x H1 H2)))) H0))))))). -(* COMMENTS -Initial nodes: 5861 -END *) +T).(ty3 g d1 u t))) (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))))).(let +TMP_524 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let +TMP_527 \def (\lambda (d2: C).(\lambda (u: T).(let TMP_525 \def (Bind Abbr) +in (let TMP_526 \def (CHead d2 TMP_525 u) in (getl n0 x7 TMP_526))))) in (let +TMP_528 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_529 +\def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_530 \def +(\lambda (d2: C).(csubt g d1 d2)) in (let TMP_534 \def (\lambda (d2: C).(let +TMP_531 \def (S n0) in (let TMP_532 \def (Bind Abst) in (let TMP_533 \def +(CHead d2 TMP_532 t) in (getl TMP_531 c2 TMP_533))))) in (let TMP_535 \def +(ex2 C TMP_530 TMP_534) in (let TMP_536 \def (\lambda (d2: C).(\lambda (_: +T).(csubt g d1 d2))) in (let TMP_540 \def (\lambda (d2: C).(\lambda (u: +T).(let TMP_537 \def (S n0) in (let TMP_538 \def (Bind Abbr) in (let TMP_539 +\def (CHead d2 TMP_538 u) in (getl TMP_537 c2 TMP_539)))))) in (let TMP_541 +\def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let TMP_542 \def +(\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let TMP_543 \def (ex4_2 +C T TMP_536 TMP_540 TMP_541 TMP_542) in (let TMP_544 \def (or TMP_535 +TMP_543) in (let TMP_570 \def (\lambda (x9: C).(\lambda (x10: T).(\lambda +(H23: (csubt g d1 x9)).(\lambda (H24: (getl n0 x7 (CHead x9 (Bind Abbr) +x10))).(\lambda (H25: (ty3 g d1 x10 t)).(\lambda (H26: (ty3 g x9 x10 t)).(let +TMP_545 \def (\lambda (d2: C).(csubt g d1 d2)) in (let TMP_549 \def (\lambda +(d2: C).(let TMP_546 \def (S n0) in (let TMP_547 \def (Bind Abst) in (let +TMP_548 \def (CHead d2 TMP_547 t) in (getl TMP_546 c2 TMP_548))))) in (let +TMP_550 \def (ex2 C TMP_545 TMP_549) in (let TMP_551 \def (\lambda (d2: +C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_555 \def (\lambda (d2: +C).(\lambda (u: T).(let TMP_552 \def (S n0) in (let TMP_553 \def (Bind Abbr) +in (let TMP_554 \def (CHead d2 TMP_553 u) in (getl TMP_552 c2 TMP_554)))))) +in (let TMP_556 \def (\lambda (_: C).(\lambda (u: T).(ty3 g d1 u t))) in (let +TMP_557 \def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u t))) in (let +TMP_558 \def (ex4_2 C T TMP_551 TMP_555 TMP_556 TMP_557) in (let TMP_559 \def +(\lambda (d2: C).(\lambda (_: T).(csubt g d1 d2))) in (let TMP_563 \def +(\lambda (d2: C).(\lambda (u: T).(let TMP_560 \def (S n0) in (let TMP_561 +\def (Bind Abbr) in (let TMP_562 \def (CHead d2 TMP_561 u) in (getl TMP_560 +c2 TMP_562)))))) in (let TMP_564 \def (\lambda (_: C).(\lambda (u: T).(ty3 g +d1 u t))) in (let TMP_565 \def (\lambda (d2: C).(\lambda (u: T).(ty3 g d2 u +t))) in (let TMP_566 \def (Bind Abbr) in (let TMP_567 \def (CHead x9 TMP_566 +x10) in (let TMP_568 \def (getl_clear_bind x6 c2 x7 x8 H20 TMP_567 n0 H24) in +(let TMP_569 \def (ex4_2_intro C T TMP_559 TMP_563 TMP_564 TMP_565 x9 x10 H23 +TMP_568 H25 H26) in (or_intror TMP_550 TMP_558 TMP_569))))))))))))))))))))))) +in (ex4_2_ind C T TMP_524 TMP_527 TMP_528 TMP_529 TMP_544 TMP_570 +H22)))))))))))))))) in (or_ind TMP_457 TMP_464 TMP_479 TMP_523 TMP_571 +H21)))))))))))))))))))))))))))))) in (ex2_3_ind B C T TMP_433 TMP_434 TMP_449 +TMP_572 H17))))))))))))))))) in (ex2_ind C TMP_414 TMP_415 TMP_430 TMP_573 +H14))))))))))))))))))))) in (ex2_3_ind B C T TMP_391 TMP_394 TMP_409 TMP_574 +H11)))))))))))))))))))))) in (let TMP_576 \def (nat_ind TMP_237 TMP_386 +TMP_575 n) in (unintro C c1 TMP_224 TMP_576 H7)))))))))) in (K_ind TMP_61 +TMP_211 TMP_577 k H3 H4)))))))))) in (C_ind TMP_32 TMP_48 TMP_578 x H1 +H2))))))) in (ex2_ind C TMP_3 TMP_6 TMP_19 TMP_579 H0))))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/csubt/pc3.ma b/matita/matita/contribs/lambdadelta/basic_1/csubt/pc3.ma index 900ba49e9..c27906d3a 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/csubt/pc3.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/csubt/pc3.ma @@ -14,49 +14,49 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/csubt/getl.ma". +include "basic_1/csubt/getl.ma". -include "Basic-1/pc3/left.ma". +include "basic_1/pc3/left.ma". theorem csubt_pr2: \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t2: T).((pr2 c1 t1 t2) \to (\forall (c2: C).((csubt g c1 c2) \to (pr2 c2 t1 t2))))))) \def \lambda (g: G).(\lambda (c1: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda -(H: (pr2 c1 t1 t2)).(pr2_ind (\lambda (c: C).(\lambda (t: T).(\lambda (t0: -T).(\forall (c2: C).((csubt g c c2) \to (pr2 c2 t t0)))))) (\lambda (c: -C).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H0: (pr0 t3 t4)).(\lambda (c2: -C).(\lambda (_: (csubt g c c2)).(pr2_free c2 t3 t4 H0))))))) (\lambda (c: -C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c -(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 (c2: -C).(\lambda (H3: (csubt g c c2)).(let H4 \def (csubt_getl_abbr g c d u i H0 -c2 H3) in (ex2_ind C (\lambda (d2: C).(csubt g d d2)) (\lambda (d2: C).(getl -i c2 (CHead d2 (Bind Abbr) u))) (pr2 c2 t3 t) (\lambda (x: C).(\lambda (_: -(csubt g d x)).(\lambda (H6: (getl i c2 (CHead x (Bind Abbr) u))).(pr2_delta -c2 x u i H6 t3 t4 H1 t H2)))) H4)))))))))))))) c1 t1 t2 H))))). -(* COMMENTS -Initial nodes: 245 -END *) +(H: (pr2 c1 t1 t2)).(let TMP_1 \def (\lambda (c: C).(\lambda (t: T).(\lambda +(t0: T).(\forall (c2: C).((csubt g c c2) \to (pr2 c2 t t0)))))) in (let TMP_2 +\def (\lambda (c: C).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H0: (pr0 t3 +t4)).(\lambda (c2: C).(\lambda (_: (csubt g c c2)).(pr2_free c2 t3 t4 +H0))))))) in (let TMP_9 \def (\lambda (c: C).(\lambda (d: C).(\lambda (u: +T).(\lambda (i: nat).(\lambda (H0: (getl i c (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 (c2: C).(\lambda (H3: (csubt +g c c2)).(let H4 \def (csubt_getl_abbr g c d u i H0 c2 H3) in (let TMP_3 \def +(\lambda (d2: C).(csubt g d d2)) in (let TMP_6 \def (\lambda (d2: C).(let +TMP_4 \def (Bind Abbr) in (let TMP_5 \def (CHead d2 TMP_4 u) in (getl i c2 +TMP_5)))) in (let TMP_7 \def (pr2 c2 t3 t) in (let TMP_8 \def (\lambda (x: +C).(\lambda (_: (csubt g d x)).(\lambda (H6: (getl i c2 (CHead x (Bind Abbr) +u))).(pr2_delta c2 x u i H6 t3 t4 H1 t H2)))) in (ex2_ind C TMP_3 TMP_6 TMP_7 +TMP_8 H4)))))))))))))))))) in (pr2_ind TMP_1 TMP_2 TMP_9 c1 t1 t2 H)))))))). theorem csubt_pc3: \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t2: T).((pc3 c1 t1 t2) \to (\forall (c2: C).((csubt g c1 c2) \to (pc3 c2 t1 t2))))))) \def \lambda (g: G).(\lambda (c1: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda -(H: (pc3 c1 t1 t2)).(pc3_ind_left c1 (\lambda (t: T).(\lambda (t0: -T).(\forall (c2: C).((csubt g c1 c2) \to (pc3 c2 t t0))))) (\lambda (t: -T).(\lambda (c2: C).(\lambda (_: (csubt g c1 c2)).(pc3_refl c2 t)))) (\lambda -(t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c1 t0 t3)).(\lambda (t4: -T).(\lambda (_: (pc3 c1 t3 t4)).(\lambda (H2: ((\forall (c2: C).((csubt g c1 -c2) \to (pc3 c2 t3 t4))))).(\lambda (c2: C).(\lambda (H3: (csubt g c1 -c2)).(pc3_t t3 c2 t0 (pc3_pr2_r c2 t0 t3 (csubt_pr2 g c1 t0 t3 H0 c2 H3)) t4 -(H2 c2 H3)))))))))) (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c1 -t0 t3)).(\lambda (t4: T).(\lambda (_: (pc3 c1 t0 t4)).(\lambda (H2: ((\forall -(c2: C).((csubt g c1 c2) \to (pc3 c2 t0 t4))))).(\lambda (c2: C).(\lambda -(H3: (csubt g c1 c2)).(pc3_t t0 c2 t3 (pc3_pr2_x c2 t3 t0 (csubt_pr2 g c1 t0 -t3 H0 c2 H3)) t4 (H2 c2 H3)))))))))) t1 t2 H))))). -(* COMMENTS -Initial nodes: 245 -END *) +(H: (pc3 c1 t1 t2)).(let TMP_1 \def (\lambda (t: T).(\lambda (t0: T).(\forall +(c2: C).((csubt g c1 c2) \to (pc3 c2 t t0))))) in (let TMP_2 \def (\lambda +(t: T).(\lambda (c2: C).(\lambda (_: (csubt g c1 c2)).(pc3_refl c2 t)))) in +(let TMP_6 \def (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c1 t0 +t3)).(\lambda (t4: T).(\lambda (_: (pc3 c1 t3 t4)).(\lambda (H2: ((\forall +(c2: C).((csubt g c1 c2) \to (pc3 c2 t3 t4))))).(\lambda (c2: C).(\lambda +(H3: (csubt g c1 c2)).(let TMP_3 \def (csubt_pr2 g c1 t0 t3 H0 c2 H3) in (let +TMP_4 \def (pc3_pr2_r c2 t0 t3 TMP_3) in (let TMP_5 \def (H2 c2 H3) in (pc3_t +t3 c2 t0 TMP_4 t4 TMP_5)))))))))))) in (let TMP_10 \def (\lambda (t0: +T).(\lambda (t3: T).(\lambda (H0: (pr2 c1 t0 t3)).(\lambda (t4: T).(\lambda +(_: (pc3 c1 t0 t4)).(\lambda (H2: ((\forall (c2: C).((csubt g c1 c2) \to (pc3 +c2 t0 t4))))).(\lambda (c2: C).(\lambda (H3: (csubt g c1 c2)).(let TMP_7 \def +(csubt_pr2 g c1 t0 t3 H0 c2 H3) in (let TMP_8 \def (pc3_pr2_x c2 t3 t0 TMP_7) +in (let TMP_9 \def (H2 c2 H3) in (pc3_t t0 c2 t3 TMP_8 t4 TMP_9)))))))))))) +in (pc3_ind_left c1 TMP_1 TMP_2 TMP_6 TMP_10 t1 t2 H))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/csubt/props.ma b/matita/matita/contribs/lambdadelta/basic_1/csubt/props.ma index 2efc87ccb..24c27142d 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/csubt/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/csubt/props.ma @@ -14,15 +14,15 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/csubt/defs.ma". +include "basic_1/csubt/defs.ma". + +include "basic_1/C/fwd.ma". theorem csubt_refl: \forall (g: G).(\forall (c: C).(csubt g c c)) \def - \lambda (g: G).(\lambda (c: C).(C_ind (\lambda (c0: C).(csubt g c0 c0)) -(\lambda (n: nat).(csubt_sort g n)) (\lambda (c0: C).(\lambda (H: (csubt g c0 -c0)).(\lambda (k: K).(\lambda (t: T).(csubt_head g c0 c0 H k t))))) c)). -(* COMMENTS -Initial nodes: 53 -END *) + \lambda (g: G).(\lambda (c: C).(let TMP_1 \def (\lambda (c0: C).(csubt g c0 +c0)) in (let TMP_2 \def (\lambda (n: nat).(csubt_sort g n)) in (let TMP_3 +\def (\lambda (c0: C).(\lambda (H: (csubt g c0 c0)).(\lambda (k: K).(\lambda +(t: T).(csubt_head g c0 c0 H k t))))) in (C_ind TMP_1 TMP_2 TMP_3 c))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/csubt/ty3.ma b/matita/matita/contribs/lambdadelta/basic_1/csubt/ty3.ma index e6199ac15..31ac52dff 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/csubt/ty3.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/csubt/ty3.ma @@ -14,78 +14,103 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/csubt/pc3.ma". +include "basic_1/csubt/pc3.ma". -include "Basic-1/csubt/props.ma". +include "basic_1/csubt/props.ma". + +include "basic_1/ty3/fwd.ma". theorem csubt_ty3: \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c1 t1 t2) \to (\forall (c2: C).((csubt g c1 c2) \to (ty3 g c2 t1 t2))))))) \def \lambda (g: G).(\lambda (c1: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda -(H: (ty3 g c1 t1 t2)).(ty3_ind g (\lambda (c: C).(\lambda (t: T).(\lambda -(t0: T).(\forall (c2: C).((csubt g c c2) \to (ty3 g c2 t t0)))))) (\lambda -(c: C).(\lambda (t0: T).(\lambda (t: T).(\lambda (_: (ty3 g c t0 t)).(\lambda -(H1: ((\forall (c2: C).((csubt g c c2) \to (ty3 g c2 t0 t))))).(\lambda (u: -T).(\lambda (t3: T).(\lambda (_: (ty3 g c u t3)).(\lambda (H3: ((\forall (c2: -C).((csubt g c c2) \to (ty3 g c2 u t3))))).(\lambda (H4: (pc3 c t3 -t0)).(\lambda (c2: C).(\lambda (H5: (csubt g c c2)).(ty3_conv g c2 t0 t (H1 -c2 H5) u t3 (H3 c2 H5) (csubt_pc3 g c t3 t0 H4 c2 H5)))))))))))))) (\lambda -(c: C).(\lambda (m: nat).(\lambda (c2: C).(\lambda (_: (csubt g c -c2)).(ty3_sort g c2 m))))) (\lambda (n: nat).(\lambda (c: C).(\lambda (d: -C).(\lambda (u: T).(\lambda (H0: (getl n c (CHead d (Bind Abbr) u))).(\lambda -(t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: ((\forall (c2: C).((csubt g -d c2) \to (ty3 g c2 u t))))).(\lambda (c2: C).(\lambda (H3: (csubt g c -c2)).(let H4 \def (csubt_getl_abbr g c d u n H0 c2 H3) in (ex2_ind C (\lambda -(d2: C).(csubt g d d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abbr) -u))) (ty3 g c2 (TLRef n) (lift (S n) O t)) (\lambda (x: C).(\lambda (H5: -(csubt g d x)).(\lambda (H6: (getl n c2 (CHead x (Bind Abbr) u))).(ty3_abbr g -n c2 x u H6 t (H2 x H5))))) H4)))))))))))) (\lambda (n: nat).(\lambda (c: +(H: (ty3 g c1 t1 t2)).(let TMP_1 \def (\lambda (c: C).(\lambda (t: +T).(\lambda (t0: T).(\forall (c2: C).((csubt g c c2) \to (ty3 g c2 t t0)))))) +in (let TMP_5 \def (\lambda (c: C).(\lambda (t0: T).(\lambda (t: T).(\lambda +(_: (ty3 g c t0 t)).(\lambda (H1: ((\forall (c2: C).((csubt g c c2) \to (ty3 +g c2 t0 t))))).(\lambda (u: T).(\lambda (t3: T).(\lambda (_: (ty3 g c u +t3)).(\lambda (H3: ((\forall (c2: C).((csubt g c c2) \to (ty3 g c2 u +t3))))).(\lambda (H4: (pc3 c t3 t0)).(\lambda (c2: C).(\lambda (H5: (csubt g +c c2)).(let TMP_2 \def (H1 c2 H5) in (let TMP_3 \def (H3 c2 H5) in (let TMP_4 +\def (csubt_pc3 g c t3 t0 H4 c2 H5) in (ty3_conv g c2 t0 t TMP_2 u t3 TMP_3 +TMP_4)))))))))))))))) in (let TMP_6 \def (\lambda (c: C).(\lambda (m: +nat).(\lambda (c2: C).(\lambda (_: (csubt g c c2)).(ty3_sort g c2 m))))) in +(let TMP_17 \def (\lambda (n: nat).(\lambda (c: C).(\lambda (d: C).(\lambda +(u: T).(\lambda (H0: (getl n c (CHead d (Bind Abbr) u))).(\lambda (t: +T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: ((\forall (c2: C).((csubt g d +c2) \to (ty3 g c2 u t))))).(\lambda (c2: C).(\lambda (H3: (csubt g c +c2)).(let H4 \def (csubt_getl_abbr g c d u n H0 c2 H3) in (let TMP_7 \def +(\lambda (d2: C).(csubt g d d2)) in (let TMP_10 \def (\lambda (d2: C).(let +TMP_8 \def (Bind Abbr) in (let TMP_9 \def (CHead d2 TMP_8 u) in (getl n c2 +TMP_9)))) in (let TMP_11 \def (TLRef n) in (let TMP_12 \def (S n) in (let +TMP_13 \def (lift TMP_12 O t) in (let TMP_14 \def (ty3 g c2 TMP_11 TMP_13) in +(let TMP_16 \def (\lambda (x: C).(\lambda (H5: (csubt g d x)).(\lambda (H6: +(getl n c2 (CHead x (Bind Abbr) u))).(let TMP_15 \def (H2 x H5) in (ty3_abbr +g n c2 x u H6 t TMP_15))))) in (ex2_ind C TMP_7 TMP_10 TMP_14 TMP_16 +H4))))))))))))))))))) in (let TMP_57 \def (\lambda (n: nat).(\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n c (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: ((\forall (c2: C).((csubt g d c2) \to (ty3 g c2 u t))))).(\lambda (c2: C).(\lambda (H3: (csubt g c c2)).(let H4 \def (csubt_getl_abst g c d u n H0 -c2 H3) in (or_ind (ex2 C (\lambda (d2: C).(csubt g d d2)) (\lambda (d2: -C).(getl n c2 (CHead d2 (Bind Abst) u)))) (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d d2))) (\lambda (d2: C).(\lambda (u0: T).(getl n -c2 (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d u0 -u))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 u)))) (ty3 g c2 (TLRef n) -(lift (S n) O u)) (\lambda (H5: (ex2 C (\lambda (d2: C).(csubt g d d2)) -(\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) u))))).(ex2_ind C (\lambda -(d2: C).(csubt g d d2)) (\lambda (d2: C).(getl n c2 (CHead d2 (Bind Abst) -u))) (ty3 g c2 (TLRef n) (lift (S n) O u)) (\lambda (x: C).(\lambda (H6: -(csubt g d x)).(\lambda (H7: (getl n c2 (CHead x (Bind Abst) u))).(ty3_abst g -n c2 x u H7 t (H2 x H6))))) H5)) (\lambda (H5: (ex4_2 C T (\lambda (d2: -C).(\lambda (_: T).(csubt g d d2))) (\lambda (d2: C).(\lambda (u0: T).(getl n -c2 (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: T).(ty3 g d u0 -u))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 u))))).(ex4_2_ind C T -(\lambda (d2: C).(\lambda (_: T).(csubt g d d2))) (\lambda (d2: C).(\lambda -(u0: T).(getl n c2 (CHead d2 (Bind Abbr) u0)))) (\lambda (_: C).(\lambda (u0: -T).(ty3 g d u0 u))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 u))) (ty3 -g c2 (TLRef n) (lift (S n) O u)) (\lambda (x0: C).(\lambda (x1: T).(\lambda -(_: (csubt g d x0)).(\lambda (H7: (getl n c2 (CHead x0 (Bind Abbr) -x1))).(\lambda (_: (ty3 g d x1 u)).(\lambda (H9: (ty3 g x0 x1 u)).(ty3_abbr g -n c2 x0 x1 H7 u H9))))))) H5)) H4)))))))))))) (\lambda (c: C).(\lambda (u: -T).(\lambda (t: T).(\lambda (_: (ty3 g c u t)).(\lambda (H1: ((\forall (c2: -C).((csubt g c c2) \to (ty3 g c2 u t))))).(\lambda (b: B).(\lambda (t0: -T).(\lambda (t3: T).(\lambda (_: (ty3 g (CHead c (Bind b) u) t0 t3)).(\lambda -(H3: ((\forall (c2: C).((csubt g (CHead c (Bind b) u) c2) \to (ty3 g c2 t0 -t3))))).(\lambda (c2: C).(\lambda (H4: (csubt g c c2)).(ty3_bind g c2 u t (H1 -c2 H4) b t0 t3 (H3 (CHead c2 (Bind b) u) (csubt_head g c c2 H4 (Bind b) -u))))))))))))))) (\lambda (c: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: +c2 H3) in (let TMP_18 \def (\lambda (d2: C).(csubt g d d2)) in (let TMP_21 +\def (\lambda (d2: C).(let TMP_19 \def (Bind Abst) in (let TMP_20 \def (CHead +d2 TMP_19 u) in (getl n c2 TMP_20)))) in (let TMP_22 \def (ex2 C TMP_18 +TMP_21) in (let TMP_23 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d d2))) +in (let TMP_26 \def (\lambda (d2: C).(\lambda (u0: T).(let TMP_24 \def (Bind +Abbr) in (let TMP_25 \def (CHead d2 TMP_24 u0) in (getl n c2 TMP_25))))) in +(let TMP_27 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g d u0 u))) in (let +TMP_28 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 u))) in (let +TMP_29 \def (ex4_2 C T TMP_23 TMP_26 TMP_27 TMP_28) in (let TMP_30 \def +(TLRef n) in (let TMP_31 \def (S n) in (let TMP_32 \def (lift TMP_31 O u) in +(let TMP_33 \def (ty3 g c2 TMP_30 TMP_32) in (let TMP_44 \def (\lambda (H5: +(ex2 C (\lambda (d2: C).(csubt g d d2)) (\lambda (d2: C).(getl n c2 (CHead d2 +(Bind Abst) u))))).(let TMP_34 \def (\lambda (d2: C).(csubt g d d2)) in (let +TMP_37 \def (\lambda (d2: C).(let TMP_35 \def (Bind Abst) in (let TMP_36 \def +(CHead d2 TMP_35 u) in (getl n c2 TMP_36)))) in (let TMP_38 \def (TLRef n) in +(let TMP_39 \def (S n) in (let TMP_40 \def (lift TMP_39 O u) in (let TMP_41 +\def (ty3 g c2 TMP_38 TMP_40) in (let TMP_43 \def (\lambda (x: C).(\lambda +(H6: (csubt g d x)).(\lambda (H7: (getl n c2 (CHead x (Bind Abst) u))).(let +TMP_42 \def (H2 x H6) in (ty3_abst g n c2 x u H7 t TMP_42))))) in (ex2_ind C +TMP_34 TMP_37 TMP_41 TMP_43 H5))))))))) in (let TMP_56 \def (\lambda (H5: +(ex4_2 C T (\lambda (d2: C).(\lambda (_: T).(csubt g d d2))) (\lambda (d2: +C).(\lambda (u0: T).(getl n c2 (CHead d2 (Bind Abbr) u0)))) (\lambda (_: +C).(\lambda (u0: T).(ty3 g d u0 u))) (\lambda (d2: C).(\lambda (u0: T).(ty3 g +d2 u0 u))))).(let TMP_45 \def (\lambda (d2: C).(\lambda (_: T).(csubt g d +d2))) in (let TMP_48 \def (\lambda (d2: C).(\lambda (u0: T).(let TMP_46 \def +(Bind Abbr) in (let TMP_47 \def (CHead d2 TMP_46 u0) in (getl n c2 +TMP_47))))) in (let TMP_49 \def (\lambda (_: C).(\lambda (u0: T).(ty3 g d u0 +u))) in (let TMP_50 \def (\lambda (d2: C).(\lambda (u0: T).(ty3 g d2 u0 u))) +in (let TMP_51 \def (TLRef n) in (let TMP_52 \def (S n) in (let TMP_53 \def +(lift TMP_52 O u) in (let TMP_54 \def (ty3 g c2 TMP_51 TMP_53) in (let TMP_55 +\def (\lambda (x0: C).(\lambda (x1: T).(\lambda (_: (csubt g d x0)).(\lambda +(H7: (getl n c2 (CHead x0 (Bind Abbr) x1))).(\lambda (_: (ty3 g d x1 +u)).(\lambda (H9: (ty3 g x0 x1 u)).(ty3_abbr g n c2 x0 x1 H7 u H9))))))) in +(ex4_2_ind C T TMP_45 TMP_48 TMP_49 TMP_50 TMP_54 TMP_55 H5))))))))))) in +(or_ind TMP_22 TMP_29 TMP_33 TMP_44 TMP_56 H4)))))))))))))))))))))))))) in +(let TMP_64 \def (\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (_: +(ty3 g c u t)).(\lambda (H1: ((\forall (c2: C).((csubt g c c2) \to (ty3 g c2 +u t))))).(\lambda (b: B).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (ty3 +g (CHead c (Bind b) u) t0 t3)).(\lambda (H3: ((\forall (c2: C).((csubt g +(CHead c (Bind b) u) c2) \to (ty3 g c2 t0 t3))))).(\lambda (c2: C).(\lambda +(H4: (csubt g c c2)).(let TMP_58 \def (H1 c2 H4) in (let TMP_59 \def (Bind b) +in (let TMP_60 \def (CHead c2 TMP_59 u) in (let TMP_61 \def (Bind b) in (let +TMP_62 \def (csubt_head g c c2 H4 TMP_61 u) in (let TMP_63 \def (H3 TMP_60 +TMP_62) in (ty3_bind g c2 u t TMP_58 b t0 t3 TMP_63))))))))))))))))))) in +(let TMP_67 \def (\lambda (c: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: (ty3 g c w u)).(\lambda (H1: ((\forall (c2: C).((csubt g c c2) \to (ty3 g c2 w u))))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c v (THead (Bind Abst) u t))).(\lambda (H3: ((\forall (c2: C).((csubt g c c2) \to (ty3 g c2 v (THead (Bind Abst) u t)))))).(\lambda (c2: C).(\lambda (H4: (csubt g c -c2)).(ty3_appl g c2 w u (H1 c2 H4) v t (H3 c2 H4))))))))))))) (\lambda (c: +c2)).(let TMP_65 \def (H1 c2 H4) in (let TMP_66 \def (H3 c2 H4) in (ty3_appl +g c2 w u TMP_65 v t TMP_66)))))))))))))) in (let TMP_70 \def (\lambda (c: C).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (ty3 g c t0 t3)).(\lambda (H1: ((\forall (c2: C).((csubt g c c2) \to (ty3 g c2 t0 t3))))).(\lambda (t4: T).(\lambda (_: (ty3 g c t3 t4)).(\lambda (H3: ((\forall (c2: C).((csubt g c c2) \to (ty3 g c2 t3 t4))))).(\lambda (c2: C).(\lambda (H4: (csubt g c -c2)).(ty3_cast g c2 t0 t3 (H1 c2 H4) t4 (H3 c2 H4)))))))))))) c1 t1 t2 H))))). -(* COMMENTS -Initial nodes: 1325 -END *) +c2)).(let TMP_68 \def (H1 c2 H4) in (let TMP_69 \def (H3 c2 H4) in (ty3_cast +g c2 t0 t3 TMP_68 t4 TMP_69))))))))))))) in (ty3_ind g TMP_1 TMP_5 TMP_6 +TMP_17 TMP_57 TMP_64 TMP_67 TMP_70 c1 t1 t2 H))))))))))))). theorem csubt_ty3_ld: \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (v: T).((ty3 g c u @@ -94,9 +119,8 @@ t2) \to (ty3 g (CHead c (Bind Abbr) u) t1 t2)))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (v: T).(\lambda (H: (ty3 g c u v)).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (ty3 g (CHead -c (Bind Abst) v) t1 t2)).(csubt_ty3 g (CHead c (Bind Abst) v) t1 t2 H0 (CHead -c (Bind Abbr) u) (csubt_abst g c c (csubt_refl g c) u v H H))))))))). -(* COMMENTS -Initial nodes: 91 -END *) +c (Bind Abst) v) t1 t2)).(let TMP_1 \def (Bind Abst) in (let TMP_2 \def +(CHead c TMP_1 v) in (let TMP_3 \def (Bind Abbr) in (let TMP_4 \def (CHead c +TMP_3 u) in (let TMP_5 \def (csubt_refl g c) in (let TMP_6 \def (csubt_abst g +c c TMP_5 u v H H) in (csubt_ty3 g TMP_2 t1 t2 H0 TMP_4 TMP_6)))))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/ex1/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/ex1/defs.ma index dc18f6fc2..5b625b5dc 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ex1/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ex1/defs.ma @@ -14,16 +14,22 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/C/defs.ma". +include "basic_1/C/defs.ma". definition ex1_c: C \def - CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) -(Bind Abst) (TLRef O). + let TMP_1 \def (CSort O) in (let TMP_2 \def (Bind Abst) in (let TMP_3 \def +(TSort O) in (let TMP_4 \def (CHead TMP_1 TMP_2 TMP_3) in (let TMP_5 \def +(Bind Abst) in (let TMP_6 \def (TSort O) in (let TMP_7 \def (CHead TMP_4 +TMP_5 TMP_6) in (let TMP_8 \def (Bind Abst) in (let TMP_9 \def (TLRef O) in +(CHead TMP_7 TMP_8 TMP_9))))))))). definition ex1_t: T \def - THead (Flat Appl) (TLRef O) (THead (Bind Abst) (TLRef (S (S O))) (TSort O)). + let TMP_1 \def (Flat Appl) in (let TMP_2 \def (TLRef O) in (let TMP_3 \def +(Bind Abst) in (let TMP_4 \def (S O) in (let TMP_5 \def (S TMP_4) in (let +TMP_6 \def (TLRef TMP_5) in (let TMP_7 \def (TSort O) in (let TMP_8 \def +(THead TMP_3 TMP_6 TMP_7) in (THead TMP_1 TMP_2 TMP_8)))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/ex1/props.ma b/matita/matita/contribs/lambdadelta/basic_1/ex1/props.ma index 5c442f5bb..95b5201a9 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ex1/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ex1/props.ma @@ -14,19 +14,19 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ex1/defs.ma". +include "basic_1/ex1/defs.ma". -include "Basic-1/ty3/fwd.ma". +include "basic_1/ty3/fwd.ma". -include "Basic-1/pc3/fwd.ma". +include "basic_1/pc3/fwd.ma". -include "Basic-1/nf2/pr3.ma". +include "basic_1/nf2/pr3.ma". -include "Basic-1/nf2/props.ma". +include "basic_1/nf2/props.ma". -include "Basic-1/arity/defs.ma". +include "basic_1/arity/defs.ma". -include "Basic-1/leq/props.ma". +include "basic_1/leq/props.ma". theorem ex1__leq_sort_SS: \forall (g: G).(\forall (k: nat).(\forall (n: nat).(leq g (ASort k n) (asucc @@ -34,9 +34,6 @@ g (asucc g (ASort (S (S k)) n)))))) \def \lambda (g: G).(\lambda (k: nat).(\lambda (n: nat).(leq_refl g (asucc g (asucc g (ASort (S (S k)) n)))))). -(* COMMENTS -Initial nodes: 27 -END *) theorem ex1_arity: \forall (g: G).(arity g ex1_c ex1_t (ASort O O)) @@ -69,9 +66,6 @@ O) (ASort O O) (arity_sort g (CSort O) O) (asucc g (asucc g (ASort (S (S O)) O))) (ex1__leq_sort_SS g O O))) (TSort O) (ASort O O) (arity_sort g (CHead (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (Bind Abst) (TLRef (S (S O)))) O))). -(* COMMENTS -Initial nodes: 753 -END *) theorem ex1_ty3: \forall (g: G).(\forall (u: T).((ty3 g ex1_c ex1_t u) \to (\forall (P: @@ -179,137 +173,133 @@ e)) (\lambda (e: C).(clear e (CHead x7 (Bind Abbr) x8))) P (\lambda (x: C).(\lambda (_: (drop (S O) O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) x)).(\lambda (_: (clear x (CHead x7 (Bind Abbr) x8))).(let H17 \def (eq_ind C (CHead x2 (Bind Abbr) x3) (\lambda (ee: -C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow -False | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).Prop) -with [(Bind b) \Rightarrow (match b in B return (\lambda (_: B).Prop) with -[Abbr \Rightarrow True | Abst \Rightarrow False | Void \Rightarrow False]) | -(Flat _) \Rightarrow False])])) I (CHead (CHead (CHead (CSort O) (Bind Abst) -(TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (clear_gen_bind Abst +C).(match ee with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow +(match k with [(Bind b) \Rightarrow (match b with [Abbr \Rightarrow True | +Abst \Rightarrow False | Void \Rightarrow False]) | (Flat _) \Rightarrow +False])])) I (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind +Abst) (TSort O)) (Bind Abst) (TLRef O)) (clear_gen_bind Abst (CHead (CHead +(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead x2 (Bind Abbr) +x3) (TLRef O) (getl_gen_O (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort +O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead x2 (Bind Abbr) x3) +H5))) in (False_ind P H17))))) H14)))))))) H10)) (\lambda (H10: (ex3_3 C T T +(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 (CHead (CHead (CHead +(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef +O)) (lift (S (S (S O))) O u0) x6)))) (\lambda (e: C).(\lambda (u0: +T).(\lambda (_: T).(getl (S (S O)) (CHead (CHead (CHead (CSort O) (Bind Abst) +(TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead e (Bind Abst) +u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 +t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: +T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) +(TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) O u0) x6)))) (\lambda +(e: C).(\lambda (u0: T).(\lambda (_: T).(getl (S (S O)) (CHead (CHead (CHead +(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef +O)) (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda +(t: T).(ty3 g e u0 t)))) P (\lambda (x7: C).(\lambda (x8: T).(\lambda (x9: +T).(\lambda (_: (pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) +(Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) O x8) +x6)).(\lambda (H12: (getl (S (S O)) (CHead (CHead (CHead (CSort O) (Bind +Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead x7 +(Bind Abst) x8))).(\lambda (_: (ty3 g x7 x8 x9)).(let H14 \def (getl_gen_all (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead -x2 (Bind Abbr) x3) (TLRef O) (getl_gen_O (CHead (CHead (CHead (CSort O) (Bind -Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead x2 -(Bind Abbr) x3) H5))) in (False_ind P H17))))) H14)))))))) H10)) (\lambda -(H10: (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 +x7 (Bind Abst) x8) (r (Bind Abst) (S O)) (getl_gen_S (Bind Abst) (CHead +(CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead x7 +(Bind Abst) x8) (TLRef O) (S O) H12)) in (ex2_ind C (\lambda (e: C).(drop (S +O) O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) +e)) (\lambda (e: C).(clear e (CHead x7 (Bind Abst) x8))) P (\lambda (x: +C).(\lambda (_: (drop (S O) O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) +(Bind Abst) (TSort O)) x)).(\lambda (_: (clear x (CHead x7 (Bind Abst) +x8))).(let H17 \def (eq_ind C (CHead x2 (Bind Abbr) x3) (\lambda (ee: +C).(match ee with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow +(match k with [(Bind b) \Rightarrow (match b with [Abbr \Rightarrow True | +Abst \Rightarrow False | Void \Rightarrow False]) | (Flat _) \Rightarrow +False])])) I (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind +Abst) (TSort O)) (Bind Abst) (TLRef O)) (clear_gen_bind Abst (CHead (CHead +(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead x2 (Bind Abbr) +x3) (TLRef O) (getl_gen_O (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort +O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead x2 (Bind Abbr) x3) +H5))) in (False_ind P H17))))) H14)))))))) H10)) (ty3_gen_lref g (CHead +(CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind +Abst) (TLRef O)) x6 (S (S O)) H8))))))) (ty3_gen_bind g Abst (CHead (CHead +(CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) +(TLRef O)) (TLRef (S (S O))) (TSort O) (THead (Bind Abst) x0 x1) H1)))))))) +H3)) (\lambda (H3: (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: +T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) +(TSort O)) (Bind Abst) (TLRef O)) (lift (S O) O u0) x0)))) (\lambda (e: +C).(\lambda (u0: T).(\lambda (_: T).(getl O (CHead (CHead (CHead (CSort O) +(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead e +(Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e +u0 t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: +T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) +(TSort O)) (Bind Abst) (TLRef O)) (lift (S O) O u0) x0)))) (\lambda (e: +C).(\lambda (u0: T).(\lambda (_: T).(getl O (CHead (CHead (CHead (CSort O) +(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead e +(Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e +u0 t)))) P (\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: T).(\lambda (H4: +(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort +O)) (Bind Abst) (TLRef O)) (lift (S O) O x3) x0)).(\lambda (H5: (getl O +(CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) +(Bind Abst) (TLRef O)) (CHead x2 (Bind Abst) x3))).(\lambda (H6: (ty3 g x2 x3 +x4)).(ex3_2_ind T T (\lambda (t2: T).(\lambda (_: T).(pc3 (CHead (CHead +(CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) +(TLRef O)) (THead (Bind Abst) (TLRef (S (S O))) t2) (THead (Bind Abst) x0 +x1)))) (\lambda (_: T).(\lambda (t: T).(ty3 g (CHead (CHead (CHead (CSort O) +(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (TLRef +(S (S O))) t))) (\lambda (t2: T).(\lambda (_: T).(ty3 g (CHead (CHead (CHead +(CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) +(TLRef O)) (Bind Abst) (TLRef (S (S O)))) (TSort O) t2))) P (\lambda (x5: +T).(\lambda (x6: T).(\lambda (H7: (pc3 (CHead (CHead (CHead (CSort O) (Bind +Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (THead (Bind +Abst) (TLRef (S (S O))) x5) (THead (Bind Abst) x0 x1))).(\lambda (H8: (ty3 g +(CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) +(Bind Abst) (TLRef O)) (TLRef (S (S O))) x6)).(\lambda (_: (ty3 g (CHead +(CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) +(Bind Abst) (TLRef O)) (Bind Abst) (TLRef (S (S O)))) (TSort O) x5)).(or_ind +(ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 (CHead +(CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind +Abst) (TLRef O)) (lift (S (S (S O))) O t) x6)))) (\lambda (e: C).(\lambda +(u0: T).(\lambda (_: T).(getl (S (S O)) (CHead (CHead (CHead (CSort O) (Bind +Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead e (Bind +Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 +t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) O u0) x6)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl (S (S O)) (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda -(t: T).(ty3 g e u0 t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u0: -T).(\lambda (_: T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) -(Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) O u0) -x6)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl (S (S O)) -(CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) -(Bind Abst) (TLRef O)) (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda -(u0: T).(\lambda (t: T).(ty3 g e u0 t)))) P (\lambda (x7: C).(\lambda (x8: -T).(\lambda (x9: T).(\lambda (_: (pc3 (CHead (CHead (CHead (CSort O) (Bind +(t: T).(ty3 g e u0 t))))) P (\lambda (H10: (ex3_3 C T T (\lambda (_: +C).(\lambda (_: T).(\lambda (t: T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S -O))) O x8) x6)).(\lambda (H12: (getl (S (S O)) (CHead (CHead (CHead (CSort O) -(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead -x7 (Bind Abst) x8))).(\lambda (_: (ty3 g x7 x8 x9)).(let H14 \def -(getl_gen_all (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) -(TSort O)) (CHead x7 (Bind Abst) x8) (r (Bind Abst) (S O)) (getl_gen_S (Bind -Abst) (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) -(CHead x7 (Bind Abst) x8) (TLRef O) (S O) H12)) in (ex2_ind C (\lambda (e: -C).(drop (S O) O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) -(TSort O)) e)) (\lambda (e: C).(clear e (CHead x7 (Bind Abst) x8))) P -(\lambda (x: C).(\lambda (_: (drop (S O) O (CHead (CHead (CSort O) (Bind -Abst) (TSort O)) (Bind Abst) (TSort O)) x)).(\lambda (_: (clear x (CHead x7 -(Bind Abst) x8))).(let H17 \def (eq_ind C (CHead x2 (Bind Abbr) x3) (\lambda -(ee: C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) -\Rightarrow False | (CHead _ k _) \Rightarrow (match k in K return (\lambda -(_: K).Prop) with [(Bind b) \Rightarrow (match b in B return (\lambda (_: -B).Prop) with [Abbr \Rightarrow True | Abst \Rightarrow False | Void -\Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead (CHead (CHead -(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef -O)) (clear_gen_bind Abst (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind -Abst) (TSort O)) (CHead x2 (Bind Abbr) x3) (TLRef O) (getl_gen_O (CHead -(CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind -Abst) (TLRef O)) (CHead x2 (Bind Abbr) x3) H5))) in (False_ind P H17))))) -H14)))))))) H10)) (ty3_gen_lref g (CHead (CHead (CHead (CSort O) (Bind Abst) -(TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) x6 (S (S O)) -H8))))))) (ty3_gen_bind g Abst (CHead (CHead (CHead (CSort O) (Bind Abst) -(TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (TLRef (S (S O))) -(TSort O) (THead (Bind Abst) x0 x1) H1)))))))) H3)) (\lambda (H3: (ex3_3 C T -T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 (CHead (CHead (CHead -(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef -O)) (lift (S O) O u0) x0)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: -T).(getl O (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) -(TSort O)) (Bind Abst) (TLRef O)) (CHead e (Bind Abst) u0))))) (\lambda (e: +O))) O t) x6)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl (S (S +O)) (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort +O)) (Bind Abst) (TLRef O)) (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 t)))))).(ex3_3_ind C T T -(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 (CHead (CHead (CHead -(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef -O)) (lift (S O) O u0) x0)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: -T).(getl O (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) -(TSort O)) (Bind Abst) (TLRef O)) (CHead e (Bind Abst) u0))))) (\lambda (e: -C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 t)))) P (\lambda (x2: -C).(\lambda (x3: T).(\lambda (x4: T).(\lambda (H4: (pc3 (CHead (CHead (CHead -(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef -O)) (lift (S O) O x3) x0)).(\lambda (H5: (getl O (CHead (CHead (CHead (CSort -O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) -(CHead x2 (Bind Abst) x3))).(\lambda (H6: (ty3 g x2 x3 x4)).(ex3_2_ind T T -(\lambda (t2: T).(\lambda (_: T).(pc3 (CHead (CHead (CHead (CSort O) (Bind -Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (THead (Bind -Abst) (TLRef (S (S O))) t2) (THead (Bind Abst) x0 x1)))) (\lambda (_: -T).(\lambda (t: T).(ty3 g (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort -O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (TLRef (S (S O))) t))) -(\lambda (t2: T).(\lambda (_: T).(ty3 g (CHead (CHead (CHead (CHead (CSort O) -(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (Bind -Abst) (TLRef (S (S O)))) (TSort O) t2))) P (\lambda (x5: T).(\lambda (x6: -T).(\lambda (H7: (pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) -(Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (THead (Bind Abst) (TLRef (S (S -O))) x5) (THead (Bind Abst) x0 x1))).(\lambda (H8: (ty3 g (CHead (CHead -(CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) -(TLRef O)) (TLRef (S (S O))) x6)).(\lambda (_: (ty3 g (CHead (CHead (CHead -(CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) -(TLRef O)) (Bind Abst) (TLRef (S (S O)))) (TSort O) x5)).(or_ind (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) O t) x6)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl (S (S O)) (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead e (Bind Abbr) u0))))) -(\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 t))))) (ex3_3 C -T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 (CHead (CHead +(\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 t)))) P (\lambda +(x7: C).(\lambda (x8: T).(\lambda (x9: T).(\lambda (_: (pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) -(TLRef O)) (lift (S (S (S O))) O u0) x6)))) (\lambda (e: C).(\lambda (u0: -T).(\lambda (_: T).(getl (S (S O)) (CHead (CHead (CHead (CSort O) (Bind Abst) -(TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead e (Bind Abst) -u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 t))))) P -(\lambda (H10: (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: -T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) -(TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) O t) x6)))) (\lambda -(e: C).(\lambda (u0: T).(\lambda (_: T).(getl (S (S O)) (CHead (CHead (CHead -(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef -O)) (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda -(t: T).(ty3 g e u0 t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (_: -T).(\lambda (t: T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) -(Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) O t) x6)))) -(\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl (S (S O)) (CHead -(CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind -Abst) (TLRef O)) (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: -T).(\lambda (t: T).(ty3 g e u0 t)))) P (\lambda (x7: C).(\lambda (x8: -T).(\lambda (x9: T).(\lambda (_: (pc3 (CHead (CHead (CHead (CSort O) (Bind -Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S -O))) O x9) x6)).(\lambda (H12: (getl (S (S O)) (CHead (CHead (CHead (CSort O) -(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead -x7 (Bind Abbr) x8))).(\lambda (_: (ty3 g x7 x8 x9)).(let H14 \def -(getl_gen_all (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) -(TSort O)) (CHead x7 (Bind Abbr) x8) (r (Bind Abst) (S O)) (getl_gen_S (Bind -Abst) (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) -(CHead x7 (Bind Abbr) x8) (TLRef O) (S O) H12)) in (ex2_ind C (\lambda (e: -C).(drop (S O) O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) -(TSort O)) e)) (\lambda (e: C).(clear e (CHead x7 (Bind Abbr) x8))) P -(\lambda (x: C).(\lambda (H15: (drop (S O) O (CHead (CHead (CSort O) (Bind -Abst) (TSort O)) (Bind Abst) (TSort O)) x)).(\lambda (H16: (clear x (CHead x7 -(Bind Abbr) x8))).(let H17 \def (f_equal C C (\lambda (e: C).(match e in C -return (\lambda (_: C).C) with [(CSort _) \Rightarrow x2 | (CHead c _ _) -\Rightarrow c])) (CHead x2 (Bind Abst) x3) (CHead (CHead (CHead (CSort O) -(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) -(clear_gen_bind Abst (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind -Abst) (TSort O)) (CHead x2 (Bind Abst) x3) (TLRef O) (getl_gen_O (CHead -(CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind -Abst) (TLRef O)) (CHead x2 (Bind Abst) x3) H5))) in ((let H18 \def (f_equal C -T (\lambda (e: C).(match e in C return (\lambda (_: C).T) with [(CSort _) +(TLRef O)) (lift (S (S (S O))) O x9) x6)).(\lambda (H12: (getl (S (S O)) +(CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) +(Bind Abst) (TLRef O)) (CHead x7 (Bind Abbr) x8))).(\lambda (_: (ty3 g x7 x8 +x9)).(let H14 \def (getl_gen_all (CHead (CHead (CSort O) (Bind Abst) (TSort +O)) (Bind Abst) (TSort O)) (CHead x7 (Bind Abbr) x8) (r (Bind Abst) (S O)) +(getl_gen_S (Bind Abst) (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind +Abst) (TSort O)) (CHead x7 (Bind Abbr) x8) (TLRef O) (S O) H12)) in (ex2_ind +C (\lambda (e: C).(drop (S O) O (CHead (CHead (CSort O) (Bind Abst) (TSort +O)) (Bind Abst) (TSort O)) e)) (\lambda (e: C).(clear e (CHead x7 (Bind Abbr) +x8))) P (\lambda (x: C).(\lambda (H15: (drop (S O) O (CHead (CHead (CSort O) +(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) x)).(\lambda (H16: (clear x +(CHead x7 (Bind Abbr) x8))).(let H17 \def (f_equal C C (\lambda (e: C).(match +e with [(CSort _) \Rightarrow x2 | (CHead c _ _) \Rightarrow c])) (CHead x2 +(Bind Abst) x3) (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind +Abst) (TSort O)) (Bind Abst) (TLRef O)) (clear_gen_bind Abst (CHead (CHead +(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead x2 (Bind Abst) +x3) (TLRef O) (getl_gen_O (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort +O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead x2 (Bind Abst) x3) +H5))) in ((let H18 \def (f_equal C T (\lambda (e: C).(match e with [(CSort _) \Rightarrow x3 | (CHead _ _ t) \Rightarrow t])) (CHead x2 (Bind Abst) x3) (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (clear_gen_bind Abst (CHead (CHead (CSort O) (Bind @@ -327,31 +317,30 @@ O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) H19) in (let H23 \def (CSort O) (Bind Abst) (TSort O)) (drop_gen_refl (CHead (CSort O) (Bind Abst) (TSort O)) x (drop_gen_drop (Bind Abst) (CHead (CSort O) (Bind Abst) (TSort O)) x (TSort O) O H15))) in (let H24 \def (eq_ind C (CHead x7 (Bind Abbr) x8) -(\lambda (ee: C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) -\Rightarrow False | (CHead _ k _) \Rightarrow (match k in K return (\lambda -(_: K).Prop) with [(Bind b) \Rightarrow (match b in B return (\lambda (_: -B).Prop) with [Abbr \Rightarrow True | Abst \Rightarrow False | Void -\Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead (CSort O) -(Bind Abst) (TSort O)) (clear_gen_bind Abst (CSort O) (CHead x7 (Bind Abbr) -x8) (TSort O) H23)) in (False_ind P H24)))))))) H17))))) H14)))))))) H10)) -(\lambda (H10: (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: +(\lambda (ee: C).(match ee with [(CSort _) \Rightarrow False | (CHead _ k _) +\Rightarrow (match k with [(Bind b) \Rightarrow (match b with [Abbr +\Rightarrow True | Abst \Rightarrow False | Void \Rightarrow False]) | (Flat +_) \Rightarrow False])])) I (CHead (CSort O) (Bind Abst) (TSort O)) +(clear_gen_bind Abst (CSort O) (CHead x7 (Bind Abbr) x8) (TSort O) H23)) in +(False_ind P H24)))))))) H17))))) H14)))))))) H10)) (\lambda (H10: (ex3_3 C T +T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 (CHead (CHead (CHead +(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef +O)) (lift (S (S (S O))) O u0) x6)))) (\lambda (e: C).(\lambda (u0: +T).(\lambda (_: T).(getl (S (S O)) (CHead (CHead (CHead (CSort O) (Bind Abst) +(TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead e (Bind Abst) +u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 +t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) O u0) x6)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl (S (S O)) (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda -(t: T).(ty3 g e u0 t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u0: -T).(\lambda (_: T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) -(Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) O u0) -x6)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl (S (S O)) -(CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) -(Bind Abst) (TLRef O)) (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda -(u0: T).(\lambda (t: T).(ty3 g e u0 t)))) P (\lambda (x7: C).(\lambda (x8: -T).(\lambda (x9: T).(\lambda (H11: (pc3 (CHead (CHead (CHead (CSort O) (Bind -Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S -O))) O x8) x6)).(\lambda (H12: (getl (S (S O)) (CHead (CHead (CHead (CSort O) -(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead -x7 (Bind Abst) x8))).(\lambda (H13: (ty3 g x7 x8 x9)).(let H14 \def +(t: T).(ty3 g e u0 t)))) P (\lambda (x7: C).(\lambda (x8: T).(\lambda (x9: +T).(\lambda (H11: (pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) +(Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) O x8) +x6)).(\lambda (H12: (getl (S (S O)) (CHead (CHead (CHead (CSort O) (Bind +Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead x7 +(Bind Abst) x8))).(\lambda (H13: (ty3 g x7 x8 x9)).(let H14 \def (getl_gen_all (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead x7 (Bind Abst) x8) (r (Bind Abst) (S O)) (getl_gen_S (Bind Abst) (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) @@ -360,15 +349,14 @@ C).(drop (S O) O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) e)) (\lambda (e: C).(clear e (CHead x7 (Bind Abst) x8))) P (\lambda (x: C).(\lambda (H15: (drop (S O) O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) x)).(\lambda (H16: (clear x (CHead x7 -(Bind Abst) x8))).(let H17 \def (f_equal C C (\lambda (e: C).(match e in C -return (\lambda (_: C).C) with [(CSort _) \Rightarrow x2 | (CHead c _ _) -\Rightarrow c])) (CHead x2 (Bind Abst) x3) (CHead (CHead (CHead (CSort O) -(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) -(clear_gen_bind Abst (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind -Abst) (TSort O)) (CHead x2 (Bind Abst) x3) (TLRef O) (getl_gen_O (CHead -(CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind -Abst) (TLRef O)) (CHead x2 (Bind Abst) x3) H5))) in ((let H18 \def (f_equal C -T (\lambda (e: C).(match e in C return (\lambda (_: C).T) with [(CSort _) +(Bind Abst) x8))).(let H17 \def (f_equal C C (\lambda (e: C).(match e with +[(CSort _) \Rightarrow x2 | (CHead c _ _) \Rightarrow c])) (CHead x2 (Bind +Abst) x3) (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) +(TSort O)) (Bind Abst) (TLRef O)) (clear_gen_bind Abst (CHead (CHead (CSort +O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead x2 (Bind Abst) x3) +(TLRef O) (getl_gen_O (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) +(Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (CHead x2 (Bind Abst) x3) H5))) +in ((let H18 \def (f_equal C T (\lambda (e: C).(match e with [(CSort _) \Rightarrow x3 | (CHead _ _ t) \Rightarrow t])) (CHead x2 (Bind Abst) x3) (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (clear_gen_bind Abst (CHead (CHead (CSort O) (Bind @@ -386,48 +374,46 @@ O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) H19) in (let H23 \def (CSort O) (Bind Abst) (TSort O)) (drop_gen_refl (CHead (CSort O) (Bind Abst) (TSort O)) x (drop_gen_drop (Bind Abst) (CHead (CSort O) (Bind Abst) (TSort O)) x (TSort O) O H15))) in (let H24 \def (f_equal C C (\lambda (e: C).(match -e in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow x7 | (CHead c _ -_) \Rightarrow c])) (CHead x7 (Bind Abst) x8) (CHead (CSort O) (Bind Abst) -(TSort O)) (clear_gen_bind Abst (CSort O) (CHead x7 (Bind Abst) x8) (TSort O) -H23)) in ((let H25 \def (f_equal C T (\lambda (e: C).(match e in C return -(\lambda (_: C).T) with [(CSort _) \Rightarrow x8 | (CHead _ _ t) \Rightarrow -t])) (CHead x7 (Bind Abst) x8) (CHead (CSort O) (Bind Abst) (TSort O)) -(clear_gen_bind Abst (CSort O) (CHead x7 (Bind Abst) x8) (TSort O) H23)) in -(\lambda (H26: (eq C x7 (CSort O))).(let H27 \def (eq_ind T x8 (\lambda (t: -T).(ty3 g x7 t x9)) H13 (TSort O) H25) in (let H28 \def (eq_ind T x8 (\lambda -(t: T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) -(TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) O t) x6)) H11 (TSort O) -H25) in (let H29 \def (eq_ind C x7 (\lambda (c: C).(ty3 g c (TSort O) x9)) -H27 (CSort O) H26) in (or_ind (ex3_3 C T T (\lambda (_: C).(\lambda (_: +e with [(CSort _) \Rightarrow x7 | (CHead c _ _) \Rightarrow c])) (CHead x7 +(Bind Abst) x8) (CHead (CSort O) (Bind Abst) (TSort O)) (clear_gen_bind Abst +(CSort O) (CHead x7 (Bind Abst) x8) (TSort O) H23)) in ((let H25 \def +(f_equal C T (\lambda (e: C).(match e with [(CSort _) \Rightarrow x8 | (CHead +_ _ t) \Rightarrow t])) (CHead x7 (Bind Abst) x8) (CHead (CSort O) (Bind +Abst) (TSort O)) (clear_gen_bind Abst (CSort O) (CHead x7 (Bind Abst) x8) +(TSort O) H23)) in (\lambda (H26: (eq C x7 (CSort O))).(let H27 \def (eq_ind +T x8 (\lambda (t: T).(ty3 g x7 t x9)) H13 (TSort O) H25) in (let H28 \def +(eq_ind T x8 (\lambda (t: T).(pc3 (CHead (CHead (CHead (CSort O) (Bind Abst) +(TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S (S (S O))) +O t) x6)) H11 (TSort O) H25) in (let H29 \def (eq_ind C x7 (\lambda (c: +C).(ty3 g c (TSort O) x9)) H27 (CSort O) H26) in (or_ind (ex3_3 C T T +(\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 (CHead (CHead (CSort O) +(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (lift (S O) O t) x4)))) +(\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl O (CHead (CHead (CSort +O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead e (Bind Abbr) u0))))) +(\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 t))))) (ex3_3 C +T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 (CHead (CHead +(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (lift (S O) O u0) +x4)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl O (CHead (CHead +(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead e (Bind Abst) +u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 t))))) P +(\lambda (H30: (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: +T).(pc3 (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) +(lift (S O) O t) x4)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: +T).(getl O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort +O)) (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda +(t: T).(ty3 g e u0 t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (lift (S O) O t) x4)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda -(u0: T).(\lambda (t: T).(ty3 g e u0 t))))) (ex3_3 C T T (\lambda (_: -C).(\lambda (u0: T).(\lambda (_: T).(pc3 (CHead (CHead (CSort O) (Bind Abst) -(TSort O)) (Bind Abst) (TSort O)) (lift (S O) O u0) x4)))) (\lambda (e: -C).(\lambda (u0: T).(\lambda (_: T).(getl O (CHead (CHead (CSort O) (Bind -Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead e (Bind Abst) u0))))) (\lambda -(e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 t))))) P (\lambda (H30: -(ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 (CHead -(CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (lift (S O) O -t) x4)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl O (CHead -(CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead e (Bind -Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g e u0 -t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 -(CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (lift -(S O) O t) x4)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl O -(CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead -e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t: T).(ty3 g -e u0 t)))) P (\lambda (x10: C).(\lambda (x11: T).(\lambda (x12: T).(\lambda -(_: (pc3 (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort -O)) (lift (S O) O x12) x4)).(\lambda (H32: (getl O (CHead (CHead (CSort O) -(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead x10 (Bind Abbr) -x11))).(\lambda (_: (ty3 g x10 x11 x12)).(let H34 \def (eq_ind C (CHead x10 -(Bind Abbr) x11) (\lambda (ee: C).(match ee in C return (\lambda (_: C).Prop) -with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match k in K -return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b in B return -(\lambda (_: B).Prop) with [Abbr \Rightarrow True | Abst \Rightarrow False | +(u0: T).(\lambda (t: T).(ty3 g e u0 t)))) P (\lambda (x10: C).(\lambda (x11: +T).(\lambda (x12: T).(\lambda (_: (pc3 (CHead (CHead (CSort O) (Bind Abst) +(TSort O)) (Bind Abst) (TSort O)) (lift (S O) O x12) x4)).(\lambda (H32: +(getl O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) +(CHead x10 (Bind Abbr) x11))).(\lambda (_: (ty3 g x10 x11 x12)).(let H34 \def +(eq_ind C (CHead x10 (Bind Abbr) x11) (\lambda (ee: C).(match ee with [(CSort +_) \Rightarrow False | (CHead _ k _) \Rightarrow (match k with [(Bind b) +\Rightarrow (match b with [Abbr \Rightarrow True | Abst \Rightarrow False | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (clear_gen_bind Abst (CHead (CSort O) (Bind Abst) (TSort O)) (CHead x10 (Bind Abbr) x11) (TSort O) @@ -448,14 +434,13 @@ T).(\lambda (x12: T).(\lambda (H31: (pc3 (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (lift (S O) O x11) x4)).(\lambda (H32: (getl O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead x10 (Bind Abst) x11))).(\lambda (H33: (ty3 g x10 x11 x12)).(let H34 -\def (f_equal C C (\lambda (e: C).(match e in C return (\lambda (_: C).C) -with [(CSort _) \Rightarrow x10 | (CHead c _ _) \Rightarrow c])) (CHead x10 -(Bind Abst) x11) (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) -(TSort O)) (clear_gen_bind Abst (CHead (CSort O) (Bind Abst) (TSort O)) -(CHead x10 (Bind Abst) x11) (TSort O) (getl_gen_O (CHead (CHead (CSort O) -(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead x10 (Bind Abst) x11) -H32))) in ((let H35 \def (f_equal C T (\lambda (e: C).(match e in C return -(\lambda (_: C).T) with [(CSort _) \Rightarrow x11 | (CHead _ _ t) +\def (f_equal C C (\lambda (e: C).(match e with [(CSort _) \Rightarrow x10 | +(CHead c _ _) \Rightarrow c])) (CHead x10 (Bind Abst) x11) (CHead (CHead +(CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (clear_gen_bind Abst +(CHead (CSort O) (Bind Abst) (TSort O)) (CHead x10 (Bind Abst) x11) (TSort O) +(getl_gen_O (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort +O)) (CHead x10 (Bind Abst) x11) H32))) in ((let H35 \def (f_equal C T +(\lambda (e: C).(match e with [(CSort _) \Rightarrow x11 | (CHead _ _ t) \Rightarrow t])) (CHead x10 (Bind Abst) x11) (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (clear_gen_bind Abst (CHead (CSort O) (Bind Abst) (TSort O)) (CHead x10 (Bind Abst) x11) (TSort O) (getl_gen_O @@ -483,7 +468,7 @@ Abst) (TSort O)) (Bind Abst) (TLRef O)) (TLRef (S (S O))) H40 (lift (S O) O O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (lift (S O) O (TLRef O))) (pr3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) x0) H21)) (TLRef (plus O (S O))) (lift_lref_ge O -(S O) O (le_n O))) in (let H43 \def H42 in (ex2_ind T (\lambda (t: T).(pr3 +(S O) O (le_O_n O))) in (let H43 \def H42 in (ex2_ind T (\lambda (t: T).(pr3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (TLRef (S (S O))) t)) (\lambda (t: T).(pr3 (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind @@ -511,26 +496,21 @@ x13 H45 (nf2_lref_abst (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (getl_refl Abst (CHead (CSort O) (Bind Abst) (TSort O)) (TSort O)) (TLRef O))))) in (let H47 \def (eq_ind T -(TLRef (S (S O))) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef n) \Rightarrow (match n -in nat return (\lambda (_: nat).Prop) with [O \Rightarrow False | (S n0) -\Rightarrow (match n0 in nat return (\lambda (_: nat).Prop) with [O -\Rightarrow False | (S _) \Rightarrow True])]) | (THead _ _ _) \Rightarrow -False])) I (TLRef (S O)) H46) in (False_ind P H47)))))) H43))))) -(pc3_gen_abst (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind -Abst) (TSort O)) (Bind Abst) (TLRef O)) (TLRef (S (S O))) x0 x5 x1 H7))))))) -H34)))))))) H30)) (ty3_gen_lref g (CHead (CHead (CSort O) (Bind Abst) (TSort -O)) (Bind Abst) (TSort O)) x4 O H22))))))) H24)))))))) H17))))) H14)))))))) -H10)) (ty3_gen_lref g (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) -(Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) x6 (S (S O)) H8))))))) -(ty3_gen_bind g Abst (CHead (CHead (CHead (CSort O) (Bind Abst) (TSort O)) -(Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (TLRef (S (S O))) (TSort O) -(THead (Bind Abst) x0 x1) H1)))))))) H3)) (ty3_gen_lref g (CHead (CHead -(CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) -(TLRef O)) x0 O H2))))))) (ty3_gen_appl g (CHead (CHead (CHead (CSort O) -(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (TLRef -O) (THead (Bind Abst) (TLRef (S (S O))) (TSort O)) u H))))). -(* COMMENTS -Initial nodes: 9973 -END *) +(TLRef (S (S O))) (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow +False | (TLRef n) \Rightarrow (match n with [O \Rightarrow False | (S n0) +\Rightarrow (match n0 with [O \Rightarrow False | (S _) \Rightarrow True])]) +| (THead _ _ _) \Rightarrow False])) I (TLRef (S O)) H46) in (False_ind P +H47)))))) H43))))) (pc3_gen_abst (CHead (CHead (CHead (CSort O) (Bind Abst) +(TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (TLRef (S (S O))) x0 +x5 x1 H7))))))) H34)))))))) H30)) (ty3_gen_lref g (CHead (CHead (CSort O) +(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) x4 O H22))))))) H24)))))))) +H17))))) H14)))))))) H10)) (ty3_gen_lref g (CHead (CHead (CHead (CSort O) +(Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) x6 (S (S +O)) H8))))))) (ty3_gen_bind g Abst (CHead (CHead (CHead (CSort O) (Bind Abst) +(TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) (TLRef (S (S O))) +(TSort O) (THead (Bind Abst) x0 x1) H1)))))))) H3)) (ty3_gen_lref g (CHead +(CHead (CHead (CSort O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind +Abst) (TLRef O)) x0 O H2))))))) (ty3_gen_appl g (CHead (CHead (CHead (CSort +O) (Bind Abst) (TSort O)) (Bind Abst) (TSort O)) (Bind Abst) (TLRef O)) +(TLRef O) (THead (Bind Abst) (TLRef (S (S O))) (TSort O)) u H))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc1/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/pc1/defs.ma index 80726a188..659d11b41 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc1/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc1/defs.ma @@ -14,11 +14,11 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pr1/defs.ma". +include "basic_1/pr1/defs.ma". definition pc1: T \to (T \to Prop) \def - \lambda (t1: T).(\lambda (t2: T).(ex2 T (\lambda (t: T).(pr1 t1 t)) (\lambda -(t: T).(pr1 t2 t)))). + \lambda (t1: T).(\lambda (t2: T).(let TMP_1 \def (\lambda (t: T).(pr1 t1 t)) +in (let TMP_2 \def (\lambda (t: T).(pr1 t2 t)) in (ex2 T TMP_1 TMP_2)))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc1/props.ma b/matita/matita/contribs/lambdadelta/basic_1/pc1/props.ma index 0da1a5aca..c6f910089 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc1/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc1/props.ma @@ -14,122 +14,117 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pc1/defs.ma". +include "basic_1/pc1/defs.ma". -include "Basic-1/pr1/pr1.ma". +include "basic_1/pr1/pr1.ma". theorem pc1_pr0_r: \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (pc1 t1 t2))) \def - \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t1 t2)).(ex_intro2 T -(\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t2 t)) t2 (pr1_pr0 t1 t2 H) -(pr1_refl t2)))). -(* COMMENTS -Initial nodes: 43 -END *) + \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t1 t2)).(let TMP_1 \def +(\lambda (t: T).(pr1 t1 t)) in (let TMP_2 \def (\lambda (t: T).(pr1 t2 t)) in +(let TMP_3 \def (pr1_pr0 t1 t2 H) in (let TMP_4 \def (pr1_refl t2) in +(ex_intro2 T TMP_1 TMP_2 t2 TMP_3 TMP_4))))))). theorem pc1_pr0_x: \forall (t1: T).(\forall (t2: T).((pr0 t2 t1) \to (pc1 t1 t2))) \def - \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t2 t1)).(ex_intro2 T -(\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t2 t)) t1 (pr1_refl t1) -(pr1_pr0 t2 t1 H)))). -(* COMMENTS -Initial nodes: 43 -END *) + \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t2 t1)).(let TMP_1 \def +(\lambda (t: T).(pr1 t1 t)) in (let TMP_2 \def (\lambda (t: T).(pr1 t2 t)) in +(let TMP_3 \def (pr1_refl t1) in (let TMP_4 \def (pr1_pr0 t2 t1 H) in +(ex_intro2 T TMP_1 TMP_2 t1 TMP_3 TMP_4))))))). theorem pc1_refl: \forall (t: T).(pc1 t t) \def - \lambda (t: T).(ex_intro2 T (\lambda (t0: T).(pr1 t t0)) (\lambda (t0: -T).(pr1 t t0)) t (pr1_refl t) (pr1_refl t)). -(* COMMENTS -Initial nodes: 31 -END *) + \lambda (t: T).(let TMP_1 \def (\lambda (t0: T).(pr1 t t0)) in (let TMP_2 +\def (\lambda (t0: T).(pr1 t t0)) in (let TMP_3 \def (pr1_refl t) in (let +TMP_4 \def (pr1_refl t) in (ex_intro2 T TMP_1 TMP_2 t TMP_3 TMP_4))))). theorem pc1_pr0_u: \forall (t2: T).(\forall (t1: T).((pr0 t1 t2) \to (\forall (t3: T).((pc1 t2 t3) \to (pc1 t1 t3))))) \def \lambda (t2: T).(\lambda (t1: T).(\lambda (H: (pr0 t1 t2)).(\lambda (t3: -T).(\lambda (H0: (pc1 t2 t3)).(let H1 \def H0 in (ex2_ind T (\lambda (t: -T).(pr1 t2 t)) (\lambda (t: T).(pr1 t3 t)) (pc1 t1 t3) (\lambda (x: -T).(\lambda (H2: (pr1 t2 x)).(\lambda (H3: (pr1 t3 x)).(ex_intro2 T (\lambda -(t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t3 t)) x (pr1_sing t2 t1 H x H2) -H3)))) H1)))))). -(* COMMENTS -Initial nodes: 97 -END *) +T).(\lambda (H0: (pc1 t2 t3)).(let H1 \def H0 in (let TMP_1 \def (\lambda (t: +T).(pr1 t2 t)) in (let TMP_2 \def (\lambda (t: T).(pr1 t3 t)) in (let TMP_3 +\def (pc1 t1 t3) in (let TMP_7 \def (\lambda (x: T).(\lambda (H2: (pr1 t2 +x)).(\lambda (H3: (pr1 t3 x)).(let TMP_4 \def (\lambda (t: T).(pr1 t1 t)) in +(let TMP_5 \def (\lambda (t: T).(pr1 t3 t)) in (let TMP_6 \def (pr1_sing t2 +t1 H x H2) in (ex_intro2 T TMP_4 TMP_5 x TMP_6 H3))))))) in (ex2_ind T TMP_1 +TMP_2 TMP_3 TMP_7 H1)))))))))). theorem pc1_s: \forall (t2: T).(\forall (t1: T).((pc1 t1 t2) \to (pc1 t2 t1))) \def \lambda (t2: T).(\lambda (t1: T).(\lambda (H: (pc1 t1 t2)).(let H0 \def H in -(ex2_ind T (\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t2 t)) (pc1 t2 -t1) (\lambda (x: T).(\lambda (H1: (pr1 t1 x)).(\lambda (H2: (pr1 t2 -x)).(ex_intro2 T (\lambda (t: T).(pr1 t2 t)) (\lambda (t: T).(pr1 t1 t)) x H2 -H1)))) H0)))). -(* COMMENTS -Initial nodes: 79 -END *) +(let TMP_1 \def (\lambda (t: T).(pr1 t1 t)) in (let TMP_2 \def (\lambda (t: +T).(pr1 t2 t)) in (let TMP_3 \def (pc1 t2 t1) in (let TMP_6 \def (\lambda (x: +T).(\lambda (H1: (pr1 t1 x)).(\lambda (H2: (pr1 t2 x)).(let TMP_4 \def +(\lambda (t: T).(pr1 t2 t)) in (let TMP_5 \def (\lambda (t: T).(pr1 t1 t)) in +(ex_intro2 T TMP_4 TMP_5 x H2 H1)))))) in (ex2_ind T TMP_1 TMP_2 TMP_3 TMP_6 +H0)))))))). theorem pc1_head_1: \forall (u1: T).(\forall (u2: T).((pc1 u1 u2) \to (\forall (t: T).(\forall (k: K).(pc1 (THead k u1 t) (THead k u2 t)))))) \def \lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pc1 u1 u2)).(\lambda (t: -T).(\lambda (k: K).(let H0 \def H in (ex2_ind T (\lambda (t0: T).(pr1 u1 t0)) -(\lambda (t0: T).(pr1 u2 t0)) (pc1 (THead k u1 t) (THead k u2 t)) (\lambda -(x: T).(\lambda (H1: (pr1 u1 x)).(\lambda (H2: (pr1 u2 x)).(ex_intro2 T -(\lambda (t0: T).(pr1 (THead k u1 t) t0)) (\lambda (t0: T).(pr1 (THead k u2 -t) t0)) (THead k x t) (pr1_head_1 u1 x H1 t k) (pr1_head_1 u2 x H2 t k))))) -H0)))))). -(* COMMENTS -Initial nodes: 133 -END *) +T).(\lambda (k: K).(let H0 \def H in (let TMP_1 \def (\lambda (t0: T).(pr1 u1 +t0)) in (let TMP_2 \def (\lambda (t0: T).(pr1 u2 t0)) in (let TMP_3 \def +(THead k u1 t) in (let TMP_4 \def (THead k u2 t) in (let TMP_5 \def (pc1 +TMP_3 TMP_4) in (let TMP_13 \def (\lambda (x: T).(\lambda (H1: (pr1 u1 +x)).(\lambda (H2: (pr1 u2 x)).(let TMP_7 \def (\lambda (t0: T).(let TMP_6 +\def (THead k u1 t) in (pr1 TMP_6 t0))) in (let TMP_9 \def (\lambda (t0: +T).(let TMP_8 \def (THead k u2 t) in (pr1 TMP_8 t0))) in (let TMP_10 \def +(THead k x t) in (let TMP_11 \def (pr1_head_1 u1 x H1 t k) in (let TMP_12 +\def (pr1_head_1 u2 x H2 t k) in (ex_intro2 T TMP_7 TMP_9 TMP_10 TMP_11 +TMP_12))))))))) in (ex2_ind T TMP_1 TMP_2 TMP_5 TMP_13 H0)))))))))))). theorem pc1_head_2: \forall (t1: T).(\forall (t2: T).((pc1 t1 t2) \to (\forall (u: T).(\forall (k: K).(pc1 (THead k u t1) (THead k u t2)))))) \def \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc1 t1 t2)).(\lambda (u: -T).(\lambda (k: K).(let H0 \def H in (ex2_ind T (\lambda (t: T).(pr1 t1 t)) -(\lambda (t: T).(pr1 t2 t)) (pc1 (THead k u t1) (THead k u t2)) (\lambda (x: -T).(\lambda (H1: (pr1 t1 x)).(\lambda (H2: (pr1 t2 x)).(ex_intro2 T (\lambda -(t: T).(pr1 (THead k u t1) t)) (\lambda (t: T).(pr1 (THead k u t2) t)) (THead -k u x) (pr1_head_2 t1 x H1 u k) (pr1_head_2 t2 x H2 u k))))) H0)))))). -(* COMMENTS -Initial nodes: 133 -END *) +T).(\lambda (k: K).(let H0 \def H in (let TMP_1 \def (\lambda (t: T).(pr1 t1 +t)) in (let TMP_2 \def (\lambda (t: T).(pr1 t2 t)) in (let TMP_3 \def (THead +k u t1) in (let TMP_4 \def (THead k u t2) in (let TMP_5 \def (pc1 TMP_3 +TMP_4) in (let TMP_13 \def (\lambda (x: T).(\lambda (H1: (pr1 t1 x)).(\lambda +(H2: (pr1 t2 x)).(let TMP_7 \def (\lambda (t: T).(let TMP_6 \def (THead k u +t1) in (pr1 TMP_6 t))) in (let TMP_9 \def (\lambda (t: T).(let TMP_8 \def +(THead k u t2) in (pr1 TMP_8 t))) in (let TMP_10 \def (THead k u x) in (let +TMP_11 \def (pr1_head_2 t1 x H1 u k) in (let TMP_12 \def (pr1_head_2 t2 x H2 +u k) in (ex_intro2 T TMP_7 TMP_9 TMP_10 TMP_11 TMP_12))))))))) in (ex2_ind T +TMP_1 TMP_2 TMP_5 TMP_13 H0)))))))))))). theorem pc1_t: \forall (t2: T).(\forall (t1: T).((pc1 t1 t2) \to (\forall (t3: T).((pc1 t2 t3) \to (pc1 t1 t3))))) \def \lambda (t2: T).(\lambda (t1: T).(\lambda (H: (pc1 t1 t2)).(\lambda (t3: -T).(\lambda (H0: (pc1 t2 t3)).(let H1 \def H0 in (ex2_ind T (\lambda (t: -T).(pr1 t2 t)) (\lambda (t: T).(pr1 t3 t)) (pc1 t1 t3) (\lambda (x: -T).(\lambda (H2: (pr1 t2 x)).(\lambda (H3: (pr1 t3 x)).(let H4 \def H in -(ex2_ind T (\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t2 t)) (pc1 t1 -t3) (\lambda (x0: T).(\lambda (H5: (pr1 t1 x0)).(\lambda (H6: (pr1 t2 -x0)).(ex2_ind T (\lambda (t: T).(pr1 x0 t)) (\lambda (t: T).(pr1 x t)) (pc1 -t1 t3) (\lambda (x1: T).(\lambda (H7: (pr1 x0 x1)).(\lambda (H8: (pr1 x -x1)).(ex_intro2 T (\lambda (t: T).(pr1 t1 t)) (\lambda (t: T).(pr1 t3 t)) x1 -(pr1_t x0 t1 H5 x1 H7) (pr1_t x t3 H3 x1 H8))))) (pr1_confluence t2 x0 H6 x -H2))))) H4))))) H1)))))). -(* COMMENTS -Initial nodes: 203 -END *) +T).(\lambda (H0: (pc1 t2 t3)).(let H1 \def H0 in (let TMP_1 \def (\lambda (t: +T).(pr1 t2 t)) in (let TMP_2 \def (\lambda (t: T).(pr1 t3 t)) in (let TMP_3 +\def (pc1 t1 t3) in (let TMP_17 \def (\lambda (x: T).(\lambda (H2: (pr1 t2 +x)).(\lambda (H3: (pr1 t3 x)).(let H4 \def H in (let TMP_4 \def (\lambda (t: +T).(pr1 t1 t)) in (let TMP_5 \def (\lambda (t: T).(pr1 t2 t)) in (let TMP_6 +\def (pc1 t1 t3) in (let TMP_16 \def (\lambda (x0: T).(\lambda (H5: (pr1 t1 +x0)).(\lambda (H6: (pr1 t2 x0)).(let TMP_7 \def (\lambda (t: T).(pr1 x0 t)) +in (let TMP_8 \def (\lambda (t: T).(pr1 x t)) in (let TMP_9 \def (pc1 t1 t3) +in (let TMP_14 \def (\lambda (x1: T).(\lambda (H7: (pr1 x0 x1)).(\lambda (H8: +(pr1 x x1)).(let TMP_10 \def (\lambda (t: T).(pr1 t1 t)) in (let TMP_11 \def +(\lambda (t: T).(pr1 t3 t)) in (let TMP_12 \def (pr1_t x0 t1 H5 x1 H7) in +(let TMP_13 \def (pr1_t x t3 H3 x1 H8) in (ex_intro2 T TMP_10 TMP_11 x1 +TMP_12 TMP_13)))))))) in (let TMP_15 \def (pr1_confluence t2 x0 H6 x H2) in +(ex2_ind T TMP_7 TMP_8 TMP_9 TMP_14 TMP_15))))))))) in (ex2_ind T TMP_4 TMP_5 +TMP_6 TMP_16 H4))))))))) in (ex2_ind T TMP_1 TMP_2 TMP_3 TMP_17 H1)))))))))). theorem pc1_pr0_u2: \forall (t0: T).(\forall (t1: T).((pr0 t0 t1) \to (\forall (t2: T).((pc1 t0 t2) \to (pc1 t1 t2))))) \def \lambda (t0: T).(\lambda (t1: T).(\lambda (H: (pr0 t0 t1)).(\lambda (t2: -T).(\lambda (H0: (pc1 t0 t2)).(pc1_t t0 t1 (pc1_pr0_x t1 t0 H) t2 H0))))). -(* COMMENTS -Initial nodes: 35 -END *) +T).(\lambda (H0: (pc1 t0 t2)).(let TMP_1 \def (pc1_pr0_x t1 t0 H) in (pc1_t +t0 t1 TMP_1 t2 H0)))))). theorem pc1_head: \forall (u1: T).(\forall (u2: T).((pc1 u1 u2) \to (\forall (t1: T).(\forall @@ -137,10 +132,9 @@ theorem pc1_head: t2)))))))) \def \lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pc1 u1 u2)).(\lambda (t1: -T).(\lambda (t2: T).(\lambda (H0: (pc1 t1 t2)).(\lambda (k: K).(pc1_t (THead -k u2 t1) (THead k u1 t1) (pc1_head_1 u1 u2 H t1 k) (THead k u2 t2) -(pc1_head_2 t1 t2 H0 u2 k)))))))). -(* COMMENTS -Initial nodes: 71 -END *) +T).(\lambda (t2: T).(\lambda (H0: (pc1 t1 t2)).(\lambda (k: K).(let TMP_1 +\def (THead k u2 t1) in (let TMP_2 \def (THead k u1 t1) in (let TMP_3 \def +(pc1_head_1 u1 u2 H t1 k) in (let TMP_4 \def (THead k u2 t2) in (let TMP_5 +\def (pc1_head_2 t1 t2 H0 u2 k) in (pc1_t TMP_1 TMP_2 TMP_3 TMP_4 +TMP_5)))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc3/dec.ma b/matita/matita/contribs/lambdadelta/basic_1/pc3/dec.ma index aa7a4d89e..db0fcb95f 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc3/dec.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc3/dec.ma @@ -14,9 +14,9 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/arity_props.ma". +include "basic_1/ty3/arity_props.ma". -include "Basic-1/nf2/fwd.ma". +include "basic_1/nf2/fwd.ma". theorem pc3_dec: \forall (g: G).(\forall (c: C).(\forall (u1: T).(\forall (t1: T).((ty3 g c @@ -26,32 +26,42 @@ u1 u2) ((pc3 c u1 u2) \to False))))))))) \lambda (g: G).(\lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (H: (ty3 g c u1 t1)).(\lambda (u2: T).(\lambda (t2: T).(\lambda (H0: (ty3 g c u2 t2)).(let H_y \def (ty3_sn3 g c u1 t1 H) in (let H_y0 \def (ty3_sn3 g c u2 -t2 H0) in (let H_x \def (nf2_sn3 c u1 H_y) in (let H1 \def H_x in (ex2_ind T -(\lambda (u: T).(pr3 c u1 u)) (\lambda (u: T).(nf2 c u)) (or (pc3 c u1 u2) -((pc3 c u1 u2) \to False)) (\lambda (x: T).(\lambda (H2: (pr3 c u1 -x)).(\lambda (H3: (nf2 c x)).(let H_x0 \def (nf2_sn3 c u2 H_y0) in (let H4 -\def H_x0 in (ex2_ind T (\lambda (u: T).(pr3 c u2 u)) (\lambda (u: T).(nf2 c -u)) (or (pc3 c u1 u2) ((pc3 c u1 u2) \to False)) (\lambda (x0: T).(\lambda +t2 H0) in (let H_x \def (nf2_sn3 c u1 H_y) in (let H1 \def H_x in (let TMP_1 +\def (\lambda (u: T).(pr3 c u1 u)) in (let TMP_2 \def (\lambda (u: T).(nf2 c +u)) in (let TMP_3 \def (pc3 c u1 u2) in (let TMP_4 \def ((pc3 c u1 u2) \to +False) in (let TMP_5 \def (or TMP_3 TMP_4) in (let TMP_36 \def (\lambda (x: +T).(\lambda (H2: (pr3 c u1 x)).(\lambda (H3: (nf2 c x)).(let H_x0 \def +(nf2_sn3 c u2 H_y0) in (let H4 \def H_x0 in (let TMP_6 \def (\lambda (u: +T).(pr3 c u2 u)) in (let TMP_7 \def (\lambda (u: T).(nf2 c u)) in (let TMP_8 +\def (pc3 c u1 u2) in (let TMP_9 \def ((pc3 c u1 u2) \to False) in (let +TMP_10 \def (or TMP_8 TMP_9) in (let TMP_35 \def (\lambda (x0: T).(\lambda (H5: (pr3 c u2 x0)).(\lambda (H6: (nf2 c x0)).(let H_x1 \def (term_dec x x0) -in (let H7 \def H_x1 in (or_ind (eq T x x0) ((eq T x x0) \to (\forall (P: -Prop).P)) (or (pc3 c u1 u2) ((pc3 c u1 u2) \to False)) (\lambda (H8: (eq T x -x0)).(let H9 \def (eq_ind_r T x0 (\lambda (t: T).(nf2 c t)) H6 x H8) in (let -H10 \def (eq_ind_r T x0 (\lambda (t: T).(pr3 c u2 t)) H5 x H8) in (or_introl -(pc3 c u1 u2) ((pc3 c u1 u2) \to False) (pc3_pr3_t c u1 x H2 u2 H10))))) -(\lambda (H8: (((eq T x x0) \to (\forall (P: Prop).P)))).(or_intror (pc3 c u1 -u2) ((pc3 c u1 u2) \to False) (\lambda (H9: (pc3 c u1 u2)).(let H10 \def H9 -in (ex2_ind T (\lambda (t: T).(pr3 c u1 t)) (\lambda (t: T).(pr3 c u2 t)) -False (\lambda (x1: T).(\lambda (H11: (pr3 c u1 x1)).(\lambda (H12: (pr3 c u2 -x1)).(let H_x2 \def (pr3_confluence c u2 x0 H5 x1 H12) in (let H13 \def H_x2 -in (ex2_ind T (\lambda (t: T).(pr3 c x0 t)) (\lambda (t: T).(pr3 c x1 t)) -False (\lambda (x2: T).(\lambda (H14: (pr3 c x0 x2)).(\lambda (H15: (pr3 c x1 -x2)).(let H_y1 \def (nf2_pr3_unfold c x0 x2 H14 H6) in (let H16 \def -(eq_ind_r T x2 (\lambda (t: T).(pr3 c x1 t)) H15 x0 H_y1) in (let H17 \def -(nf2_pr3_confluence c x H3 x0 H6 u1 H2) in (H8 (H17 (pr3_t x1 u1 c H11 x0 -H16)) False))))))) H13)))))) H10))))) H7)))))) H4)))))) H1)))))))))))). -(* COMMENTS -Initial nodes: 551 -END *) +in (let H7 \def H_x1 in (let TMP_11 \def (eq T x x0) in (let TMP_12 \def ((eq +T x x0) \to (\forall (P: Prop).P)) in (let TMP_13 \def (pc3 c u1 u2) in (let +TMP_14 \def ((pc3 c u1 u2) \to False) in (let TMP_15 \def (or TMP_13 TMP_14) +in (let TMP_21 \def (\lambda (H8: (eq T x x0)).(let TMP_16 \def (\lambda (t: +T).(nf2 c t)) in (let H9 \def (eq_ind_r T x0 TMP_16 H6 x H8) in (let TMP_17 +\def (\lambda (t: T).(pr3 c u2 t)) in (let H10 \def (eq_ind_r T x0 TMP_17 H5 +x H8) in (let TMP_18 \def (pc3 c u1 u2) in (let TMP_19 \def ((pc3 c u1 u2) +\to False) in (let TMP_20 \def (pc3_pr3_t c u1 x H2 u2 H10) in (or_introl +TMP_18 TMP_19 TMP_20))))))))) in (let TMP_34 \def (\lambda (H8: (((eq T x x0) +\to (\forall (P: Prop).P)))).(let TMP_22 \def (pc3 c u1 u2) in (let TMP_23 +\def ((pc3 c u1 u2) \to False) in (let TMP_33 \def (\lambda (H9: (pc3 c u1 +u2)).(let H10 \def H9 in (let TMP_24 \def (\lambda (t: T).(pr3 c u1 t)) in +(let TMP_25 \def (\lambda (t: T).(pr3 c u2 t)) in (let TMP_32 \def (\lambda +(x1: T).(\lambda (H11: (pr3 c u1 x1)).(\lambda (H12: (pr3 c u2 x1)).(let H_x2 +\def (pr3_confluence c u2 x0 H5 x1 H12) in (let H13 \def H_x2 in (let TMP_26 +\def (\lambda (t: T).(pr3 c x0 t)) in (let TMP_27 \def (\lambda (t: T).(pr3 c +x1 t)) in (let TMP_31 \def (\lambda (x2: T).(\lambda (H14: (pr3 c x0 +x2)).(\lambda (H15: (pr3 c x1 x2)).(let H_y1 \def (nf2_pr3_unfold c x0 x2 H14 +H6) in (let TMP_28 \def (\lambda (t: T).(pr3 c x1 t)) in (let H16 \def +(eq_ind_r T x2 TMP_28 H15 x0 H_y1) in (let H17 \def (nf2_pr3_confluence c x +H3 x0 H6 u1 H2) in (let TMP_29 \def (pr3_t x1 u1 c H11 x0 H16) in (let TMP_30 +\def (H17 TMP_29) in (H8 TMP_30 False)))))))))) in (ex2_ind T TMP_26 TMP_27 +False TMP_31 H13))))))))) in (ex2_ind T TMP_24 TMP_25 False TMP_32 H10)))))) +in (or_intror TMP_22 TMP_23 TMP_33))))) in (or_ind TMP_11 TMP_12 TMP_15 +TMP_21 TMP_34 H7))))))))))))) in (ex2_ind T TMP_6 TMP_7 TMP_10 TMP_35 +H4)))))))))))) in (ex2_ind T TMP_1 TMP_2 TMP_5 TMP_36 H1)))))))))))))))))). theorem pc3_abst_dec: \forall (g: G).(\forall (c: C).(\forall (u1: T).(\forall (t1: T).((ty3 g c @@ -65,88 +75,147 @@ T T (\lambda (u: T).(\lambda (_: T).(pc3 c u1 (THead (Bind Abst) u2 u)))) \lambda (g: G).(\lambda (c: C).(\lambda (u1: T).(\lambda (t1: T).(\lambda (H: (ty3 g c u1 t1)).(\lambda (u2: T).(\lambda (t2: T).(\lambda (H0: (ty3 g c u2 t2)).(let H1 \def (ty3_sn3 g c u1 t1 H) in (let H2 \def (ty3_sn3 g c u2 t2 -H0) in (let H_x \def (nf2_sn3 c u1 H1) in (let H3 \def H_x in (ex2_ind T -(\lambda (u: T).(pr3 c u1 u)) (\lambda (u: T).(nf2 c u)) (or (ex4_2 T T -(\lambda (u: T).(\lambda (_: T).(pc3 c u1 (THead (Bind Abst) u2 u)))) -(\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead (Bind Abst) v2 u) t1))) -(\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) (\lambda (_: T).(\lambda -(v2: T).(nf2 c v2)))) (\forall (u: T).((pc3 c u1 (THead (Bind Abst) u2 u)) -\to False))) (\lambda (x: T).(\lambda (H4: (pr3 c u1 x)).(\lambda (H5: (nf2 c -x)).(let H_x0 \def (nf2_sn3 c u2 H2) in (let H6 \def H_x0 in (ex2_ind T -(\lambda (u: T).(pr3 c u2 u)) (\lambda (u: T).(nf2 c u)) (or (ex4_2 T T -(\lambda (u: T).(\lambda (_: T).(pc3 c u1 (THead (Bind Abst) u2 u)))) -(\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead (Bind Abst) v2 u) t1))) -(\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) (\lambda (_: T).(\lambda -(v2: T).(nf2 c v2)))) (\forall (u: T).((pc3 c u1 (THead (Bind Abst) u2 u)) -\to False))) (\lambda (x0: T).(\lambda (H7: (pr3 c u2 x0)).(\lambda (H8: (nf2 -c x0)).(let H_x1 \def (abst_dec x x0) in (let H9 \def H_x1 in (or_ind (ex T -(\lambda (t: T).(eq T x (THead (Bind Abst) x0 t)))) (\forall (t: T).((eq T x -(THead (Bind Abst) x0 t)) \to (\forall (P: Prop).P))) (or (ex4_2 T T (\lambda -(u: T).(\lambda (_: T).(pc3 c u1 (THead (Bind Abst) u2 u)))) (\lambda (u: -T).(\lambda (v2: T).(ty3 g c (THead (Bind Abst) v2 u) t1))) (\lambda (_: -T).(\lambda (v2: T).(pr3 c u2 v2))) (\lambda (_: T).(\lambda (v2: T).(nf2 c -v2)))) (\forall (u: T).((pc3 c u1 (THead (Bind Abst) u2 u)) \to False))) -(\lambda (H10: (ex T (\lambda (t: T).(eq T x (THead (Bind Abst) x0 -t))))).(ex_ind T (\lambda (t: T).(eq T x (THead (Bind Abst) x0 t))) (or -(ex4_2 T T (\lambda (u: T).(\lambda (_: T).(pc3 c u1 (THead (Bind Abst) u2 -u)))) (\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead (Bind Abst) v2 u) -t1))) (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) (\lambda (_: -T).(\lambda (v2: T).(nf2 c v2)))) (\forall (u: T).((pc3 c u1 (THead (Bind -Abst) u2 u)) \to False))) (\lambda (x1: T).(\lambda (H11: (eq T x (THead -(Bind Abst) x0 x1))).(let H12 \def (eq_ind T x (\lambda (t: T).(nf2 c t)) H5 -(THead (Bind Abst) x0 x1) H11) in (let H13 \def (eq_ind T x (\lambda (t: -T).(pr3 c u1 t)) H4 (THead (Bind Abst) x0 x1) H11) in (let H_y \def -(ty3_sred_pr3 c u1 (THead (Bind Abst) x0 x1) H13 g t1 H) in (or_introl (ex4_2 -T T (\lambda (u: T).(\lambda (_: T).(pc3 c u1 (THead (Bind Abst) u2 u)))) -(\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead (Bind Abst) v2 u) t1))) -(\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) (\lambda (_: T).(\lambda -(v2: T).(nf2 c v2)))) (\forall (u: T).((pc3 c u1 (THead (Bind Abst) u2 u)) -\to False)) (ex4_2_intro T T (\lambda (u: T).(\lambda (_: T).(pc3 c u1 (THead -(Bind Abst) u2 u)))) (\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead (Bind -Abst) v2 u) t1))) (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) (\lambda -(_: T).(\lambda (v2: T).(nf2 c v2))) x1 x0 (pc3_pr3_t c u1 (THead (Bind Abst) -x0 x1) H13 (THead (Bind Abst) u2 x1) (pr3_head_12 c u2 x0 H7 (Bind Abst) x1 -x1 (pr3_refl (CHead c (Bind Abst) x0) x1))) H_y H7 H8))))))) H10)) (\lambda -(H10: ((\forall (t: T).((eq T x (THead (Bind Abst) x0 t)) \to (\forall (P: -Prop).P))))).(or_intror (ex4_2 T T (\lambda (u: T).(\lambda (_: T).(pc3 c u1 -(THead (Bind Abst) u2 u)))) (\lambda (u: T).(\lambda (v2: T).(ty3 g c (THead -(Bind Abst) v2 u) t1))) (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) -(\lambda (_: T).(\lambda (v2: T).(nf2 c v2)))) (\forall (u: T).((pc3 c u1 -(THead (Bind Abst) u2 u)) \to False)) (\lambda (u: T).(\lambda (H11: (pc3 c -u1 (THead (Bind Abst) u2 u))).(let H12 \def H11 in (ex2_ind T (\lambda (t: -T).(pr3 c u1 t)) (\lambda (t: T).(pr3 c (THead (Bind Abst) u2 u) t)) False -(\lambda (x1: T).(\lambda (H13: (pr3 c u1 x1)).(\lambda (H14: (pr3 c (THead -(Bind Abst) u2 u) x1)).(ex2_ind T (\lambda (t: T).(pr3 c x1 t)) (\lambda (t: -T).(pr3 c x t)) False (\lambda (x2: T).(\lambda (H15: (pr3 c x1 x2)).(\lambda -(H16: (pr3 c x x2)).(let H_y \def (nf2_pr3_unfold c x x2 H16 H5) in (let H17 -\def (eq_ind_r T x2 (\lambda (t: T).(pr3 c x1 t)) H15 x H_y) in (let H18 \def -(pr3_gen_abst c u2 u x1 H14) in (ex3_2_ind T T (\lambda (u3: T).(\lambda (t3: -T).(eq T x1 (THead (Bind Abst) u3 t3)))) (\lambda (u3: T).(\lambda (_: -T).(pr3 c u2 u3))) (\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall -(u0: T).(pr3 (CHead c (Bind b) u0) u t3))))) False (\lambda (x3: T).(\lambda -(x4: T).(\lambda (H19: (eq T x1 (THead (Bind Abst) x3 x4))).(\lambda (H20: -(pr3 c u2 x3)).(\lambda (_: ((\forall (b: B).(\forall (u0: T).(pr3 (CHead c -(Bind b) u0) u x4))))).(let H22 \def (eq_ind T x1 (\lambda (t: T).(pr3 c t -x)) H17 (THead (Bind Abst) x3 x4) H19) in (let H23 \def (pr3_gen_abst c x3 x4 -x H22) in (ex3_2_ind T T (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead -(Bind Abst) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr3 c x3 u3))) -(\lambda (_: T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(pr3 (CHead -c (Bind b) u0) x4 t3))))) False (\lambda (x5: T).(\lambda (x6: T).(\lambda -(H24: (eq T x (THead (Bind Abst) x5 x6))).(\lambda (H25: (pr3 c x3 -x5)).(\lambda (_: ((\forall (b: B).(\forall (u0: T).(pr3 (CHead c (Bind b) -u0) x4 x6))))).(let H27 \def (eq_ind T x (\lambda (t: T).(\forall (t0: -T).((eq T t (THead (Bind Abst) x0 t0)) \to (\forall (P: Prop).P)))) H10 -(THead (Bind Abst) x5 x6) H24) in (let H28 \def (eq_ind T x (\lambda (t: -T).(nf2 c t)) H5 (THead (Bind Abst) x5 x6) H24) in (let H29 \def -(nf2_gen_abst c x5 x6 H28) in (land_ind (nf2 c x5) (nf2 (CHead c (Bind Abst) -x5) x6) False (\lambda (H30: (nf2 c x5)).(\lambda (_: (nf2 (CHead c (Bind +H0) in (let H_x \def (nf2_sn3 c u1 H1) in (let H3 \def H_x in (let TMP_1 \def +(\lambda (u: T).(pr3 c u1 u)) in (let TMP_2 \def (\lambda (u: T).(nf2 c u)) +in (let TMP_5 \def (\lambda (u: T).(\lambda (_: T).(let TMP_3 \def (Bind +Abst) in (let TMP_4 \def (THead TMP_3 u2 u) in (pc3 c u1 TMP_4))))) in (let +TMP_8 \def (\lambda (u: T).(\lambda (v2: T).(let TMP_6 \def (Bind Abst) in +(let TMP_7 \def (THead TMP_6 v2 u) in (ty3 g c TMP_7 t1))))) in (let TMP_9 +\def (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) in (let TMP_10 \def +(\lambda (_: T).(\lambda (v2: T).(nf2 c v2))) in (let TMP_11 \def (ex4_2 T T +TMP_5 TMP_8 TMP_9 TMP_10) in (let TMP_12 \def (\forall (u: T).((pc3 c u1 +(THead (Bind Abst) u2 u)) \to False)) in (let TMP_13 \def (or TMP_11 TMP_12) +in (let TMP_162 \def (\lambda (x: T).(\lambda (H4: (pr3 c u1 x)).(\lambda +(H5: (nf2 c x)).(let H_x0 \def (nf2_sn3 c u2 H2) in (let H6 \def H_x0 in (let +TMP_14 \def (\lambda (u: T).(pr3 c u2 u)) in (let TMP_15 \def (\lambda (u: +T).(nf2 c u)) in (let TMP_18 \def (\lambda (u: T).(\lambda (_: T).(let TMP_16 +\def (Bind Abst) in (let TMP_17 \def (THead TMP_16 u2 u) in (pc3 c u1 +TMP_17))))) in (let TMP_21 \def (\lambda (u: T).(\lambda (v2: T).(let TMP_19 +\def (Bind Abst) in (let TMP_20 \def (THead TMP_19 v2 u) in (ty3 g c TMP_20 +t1))))) in (let TMP_22 \def (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) +in (let TMP_23 \def (\lambda (_: T).(\lambda (v2: T).(nf2 c v2))) in (let +TMP_24 \def (ex4_2 T T TMP_18 TMP_21 TMP_22 TMP_23) in (let TMP_25 \def +(\forall (u: T).((pc3 c u1 (THead (Bind Abst) u2 u)) \to False)) in (let +TMP_26 \def (or TMP_24 TMP_25) in (let TMP_161 \def (\lambda (x0: T).(\lambda +(H7: (pr3 c u2 x0)).(\lambda (H8: (nf2 c x0)).(let H_x1 \def (abst_dec x x0) +in (let H9 \def H_x1 in (let TMP_29 \def (\lambda (t: T).(let TMP_27 \def +(Bind Abst) in (let TMP_28 \def (THead TMP_27 x0 t) in (eq T x TMP_28)))) in +(let TMP_30 \def (ex T TMP_29) in (let TMP_31 \def (\forall (t: T).((eq T x +(THead (Bind Abst) x0 t)) \to (\forall (P: Prop).P))) in (let TMP_34 \def +(\lambda (u: T).(\lambda (_: T).(let TMP_32 \def (Bind Abst) in (let TMP_33 +\def (THead TMP_32 u2 u) in (pc3 c u1 TMP_33))))) in (let TMP_37 \def +(\lambda (u: T).(\lambda (v2: T).(let TMP_35 \def (Bind Abst) in (let TMP_36 +\def (THead TMP_35 v2 u) in (ty3 g c TMP_36 t1))))) in (let TMP_38 \def +(\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) in (let TMP_39 \def (\lambda +(_: T).(\lambda (v2: T).(nf2 c v2))) in (let TMP_40 \def (ex4_2 T T TMP_34 +TMP_37 TMP_38 TMP_39) in (let TMP_41 \def (\forall (u: T).((pc3 c u1 (THead +(Bind Abst) u2 u)) \to False)) in (let TMP_42 \def (or TMP_40 TMP_41) in (let +TMP_95 \def (\lambda (H10: (ex T (\lambda (t: T).(eq T x (THead (Bind Abst) +x0 t))))).(let TMP_45 \def (\lambda (t: T).(let TMP_43 \def (Bind Abst) in +(let TMP_44 \def (THead TMP_43 x0 t) in (eq T x TMP_44)))) in (let TMP_48 +\def (\lambda (u: T).(\lambda (_: T).(let TMP_46 \def (Bind Abst) in (let +TMP_47 \def (THead TMP_46 u2 u) in (pc3 c u1 TMP_47))))) in (let TMP_51 \def +(\lambda (u: T).(\lambda (v2: T).(let TMP_49 \def (Bind Abst) in (let TMP_50 +\def (THead TMP_49 v2 u) in (ty3 g c TMP_50 t1))))) in (let TMP_52 \def +(\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) in (let TMP_53 \def (\lambda +(_: T).(\lambda (v2: T).(nf2 c v2))) in (let TMP_54 \def (ex4_2 T T TMP_48 +TMP_51 TMP_52 TMP_53) in (let TMP_55 \def (\forall (u: T).((pc3 c u1 (THead +(Bind Abst) u2 u)) \to False)) in (let TMP_56 \def (or TMP_54 TMP_55) in (let +TMP_94 \def (\lambda (x1: T).(\lambda (H11: (eq T x (THead (Bind Abst) x0 +x1))).(let TMP_57 \def (\lambda (t: T).(nf2 c t)) in (let TMP_58 \def (Bind +Abst) in (let TMP_59 \def (THead TMP_58 x0 x1) in (let H12 \def (eq_ind T x +TMP_57 H5 TMP_59 H11) in (let TMP_60 \def (\lambda (t: T).(pr3 c u1 t)) in +(let TMP_61 \def (Bind Abst) in (let TMP_62 \def (THead TMP_61 x0 x1) in (let +H13 \def (eq_ind T x TMP_60 H4 TMP_62 H11) in (let TMP_63 \def (Bind Abst) in +(let TMP_64 \def (THead TMP_63 x0 x1) in (let H_y \def (ty3_sred_pr3 c u1 +TMP_64 H13 g t1 H) in (let TMP_67 \def (\lambda (u: T).(\lambda (_: T).(let +TMP_65 \def (Bind Abst) in (let TMP_66 \def (THead TMP_65 u2 u) in (pc3 c u1 +TMP_66))))) in (let TMP_70 \def (\lambda (u: T).(\lambda (v2: T).(let TMP_68 +\def (Bind Abst) in (let TMP_69 \def (THead TMP_68 v2 u) in (ty3 g c TMP_69 +t1))))) in (let TMP_71 \def (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) +in (let TMP_72 \def (\lambda (_: T).(\lambda (v2: T).(nf2 c v2))) in (let +TMP_73 \def (ex4_2 T T TMP_67 TMP_70 TMP_71 TMP_72) in (let TMP_74 \def +(\forall (u: T).((pc3 c u1 (THead (Bind Abst) u2 u)) \to False)) in (let +TMP_77 \def (\lambda (u: T).(\lambda (_: T).(let TMP_75 \def (Bind Abst) in +(let TMP_76 \def (THead TMP_75 u2 u) in (pc3 c u1 TMP_76))))) in (let TMP_80 +\def (\lambda (u: T).(\lambda (v2: T).(let TMP_78 \def (Bind Abst) in (let +TMP_79 \def (THead TMP_78 v2 u) in (ty3 g c TMP_79 t1))))) in (let TMP_81 +\def (\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) in (let TMP_82 \def +(\lambda (_: T).(\lambda (v2: T).(nf2 c v2))) in (let TMP_83 \def (Bind Abst) +in (let TMP_84 \def (THead TMP_83 x0 x1) in (let TMP_85 \def (Bind Abst) in +(let TMP_86 \def (THead TMP_85 u2 x1) in (let TMP_87 \def (Bind Abst) in (let +TMP_88 \def (Bind Abst) in (let TMP_89 \def (CHead c TMP_88 x0) in (let +TMP_90 \def (pr3_refl TMP_89 x1) in (let TMP_91 \def (pr3_head_12 c u2 x0 H7 +TMP_87 x1 x1 TMP_90) in (let TMP_92 \def (pc3_pr3_t c u1 TMP_84 H13 TMP_86 +TMP_91) in (let TMP_93 \def (ex4_2_intro T T TMP_77 TMP_80 TMP_81 TMP_82 x1 +x0 TMP_92 H_y H7 H8) in (or_introl TMP_73 TMP_74 +TMP_93))))))))))))))))))))))))))))))))))) in (ex_ind T TMP_45 TMP_56 TMP_94 +H10))))))))))) in (let TMP_160 \def (\lambda (H10: ((\forall (t: T).((eq T x +(THead (Bind Abst) x0 t)) \to (\forall (P: Prop).P))))).(let TMP_98 \def +(\lambda (u: T).(\lambda (_: T).(let TMP_96 \def (Bind Abst) in (let TMP_97 +\def (THead TMP_96 u2 u) in (pc3 c u1 TMP_97))))) in (let TMP_101 \def +(\lambda (u: T).(\lambda (v2: T).(let TMP_99 \def (Bind Abst) in (let TMP_100 +\def (THead TMP_99 v2 u) in (ty3 g c TMP_100 t1))))) in (let TMP_102 \def +(\lambda (_: T).(\lambda (v2: T).(pr3 c u2 v2))) in (let TMP_103 \def +(\lambda (_: T).(\lambda (v2: T).(nf2 c v2))) in (let TMP_104 \def (ex4_2 T T +TMP_98 TMP_101 TMP_102 TMP_103) in (let TMP_105 \def (\forall (u: T).((pc3 c +u1 (THead (Bind Abst) u2 u)) \to False)) in (let TMP_159 \def (\lambda (u: +T).(\lambda (H11: (pc3 c u1 (THead (Bind Abst) u2 u))).(let H12 \def H11 in +(let TMP_106 \def (\lambda (t: T).(pr3 c u1 t)) in (let TMP_109 \def (\lambda +(t: T).(let TMP_107 \def (Bind Abst) in (let TMP_108 \def (THead TMP_107 u2 +u) in (pr3 c TMP_108 t)))) in (let TMP_158 \def (\lambda (x1: T).(\lambda +(H13: (pr3 c u1 x1)).(\lambda (H14: (pr3 c (THead (Bind Abst) u2 u) x1)).(let +TMP_110 \def (\lambda (t: T).(pr3 c x1 t)) in (let TMP_111 \def (\lambda (t: +T).(pr3 c x t)) in (let TMP_156 \def (\lambda (x2: T).(\lambda (H15: (pr3 c +x1 x2)).(\lambda (H16: (pr3 c x x2)).(let H_y \def (nf2_pr3_unfold c x x2 H16 +H5) in (let TMP_112 \def (\lambda (t: T).(pr3 c x1 t)) in (let H17 \def +(eq_ind_r T x2 TMP_112 H15 x H_y) in (let H18 \def (pr3_gen_abst c u2 u x1 +H14) in (let TMP_115 \def (\lambda (u3: T).(\lambda (t3: T).(let TMP_113 \def +(Bind Abst) in (let TMP_114 \def (THead TMP_113 u3 t3) in (eq T x1 +TMP_114))))) in (let TMP_116 \def (\lambda (u3: T).(\lambda (_: T).(pr3 c u2 +u3))) in (let TMP_119 \def (\lambda (_: T).(\lambda (t3: T).(\forall (b: +B).(\forall (u0: T).(let TMP_117 \def (Bind b) in (let TMP_118 \def (CHead c +TMP_117 u0) in (pr3 TMP_118 u t3))))))) in (let TMP_155 \def (\lambda (x3: +T).(\lambda (x4: T).(\lambda (H19: (eq T x1 (THead (Bind Abst) x3 +x4))).(\lambda (H20: (pr3 c u2 x3)).(\lambda (_: ((\forall (b: B).(\forall +(u0: T).(pr3 (CHead c (Bind b) u0) u x4))))).(let TMP_120 \def (\lambda (t: +T).(pr3 c t x)) in (let TMP_121 \def (Bind Abst) in (let TMP_122 \def (THead +TMP_121 x3 x4) in (let H22 \def (eq_ind T x1 TMP_120 H17 TMP_122 H19) in (let +H23 \def (pr3_gen_abst c x3 x4 x H22) in (let TMP_125 \def (\lambda (u3: +T).(\lambda (t3: T).(let TMP_123 \def (Bind Abst) in (let TMP_124 \def (THead +TMP_123 u3 t3) in (eq T x TMP_124))))) in (let TMP_126 \def (\lambda (u3: +T).(\lambda (_: T).(pr3 c x3 u3))) in (let TMP_129 \def (\lambda (_: +T).(\lambda (t3: T).(\forall (b: B).(\forall (u0: T).(let TMP_127 \def (Bind +b) in (let TMP_128 \def (CHead c TMP_127 u0) in (pr3 TMP_128 x4 t3))))))) in +(let TMP_154 \def (\lambda (x5: T).(\lambda (x6: T).(\lambda (H24: (eq T x +(THead (Bind Abst) x5 x6))).(\lambda (H25: (pr3 c x3 x5)).(\lambda (_: +((\forall (b: B).(\forall (u0: T).(pr3 (CHead c (Bind b) u0) x4 x6))))).(let +TMP_130 \def (\lambda (t: T).(\forall (t0: T).((eq T t (THead (Bind Abst) x0 +t0)) \to (\forall (P: Prop).P)))) in (let TMP_131 \def (Bind Abst) in (let +TMP_132 \def (THead TMP_131 x5 x6) in (let H27 \def (eq_ind T x TMP_130 H10 +TMP_132 H24) in (let TMP_133 \def (\lambda (t: T).(nf2 c t)) in (let TMP_134 +\def (Bind Abst) in (let TMP_135 \def (THead TMP_134 x5 x6) in (let H28 \def +(eq_ind T x TMP_133 H5 TMP_135 H24) in (let H29 \def (nf2_gen_abst c x5 x6 +H28) in (let TMP_136 \def (nf2 c x5) in (let TMP_137 \def (Bind Abst) in (let +TMP_138 \def (CHead c TMP_137 x5) in (let TMP_139 \def (nf2 TMP_138 x6) in +(let TMP_153 \def (\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_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))) False)))) -H29))))))))) H23)))))))) H18))))))) (pr3_confluence c u1 x1 H13 x H4))))) -H12)))))) H9)))))) H6)))))) H3)))))))))))). -(* COMMENTS -Initial nodes: 1759 -END *) +(let TMP_140 \def (Bind Abst) in (let TMP_141 \def (THead TMP_140 x0 x6) in +(let TMP_142 \def (Bind Abst) in (let TMP_143 \def (THead TMP_142 x5 x6) in +(let TMP_144 \def (Bind Abst) in (let TMP_145 \def (Bind Abst) in (let +TMP_146 \def (Bind Abst) in (let TMP_147 \def (refl_equal K TMP_146) in (let +TMP_148 \def (pr3_t x3 u2 c H20 x5 H25) in (let TMP_149 \def (H32 TMP_148) in +(let TMP_150 \def (refl_equal T x6) in (let TMP_151 \def (f_equal3 K T T T +THead TMP_144 TMP_145 x0 x5 x6 x6 TMP_147 TMP_149 TMP_150) in (let TMP_152 +\def (sym_eq T TMP_141 TMP_143 TMP_151) in (H27 x6 TMP_152 +False))))))))))))))))) in (land_ind TMP_136 TMP_139 False TMP_153 +H29)))))))))))))))))))) in (ex3_2_ind T T TMP_125 TMP_126 TMP_129 False +TMP_154 H23))))))))))))))) in (ex3_2_ind T T TMP_115 TMP_116 TMP_119 False +TMP_155 H18)))))))))))) in (let TMP_157 \def (pr3_confluence c u1 x1 H13 x +H4) in (ex2_ind T TMP_110 TMP_111 False TMP_156 TMP_157)))))))) in (ex2_ind T +TMP_106 TMP_109 False TMP_158 H12))))))) in (or_intror TMP_104 TMP_105 +TMP_159))))))))) in (or_ind TMP_30 TMP_31 TMP_42 TMP_95 TMP_160 +H9)))))))))))))))))) in (ex2_ind T TMP_14 TMP_15 TMP_26 TMP_161 +H6)))))))))))))))) in (ex2_ind T TMP_1 TMP_2 TMP_13 TMP_162 +H3)))))))))))))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc3/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/pc3/defs.ma index e7ea2b24f..bbc07ef1b 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc3/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc3/defs.ma @@ -14,13 +14,14 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pr3/defs.ma". +include "basic_1/pr3/defs.ma". definition pc3: C \to (T \to (T \to Prop)) \def - \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(ex2 T (\lambda (t: T).(pr3 -c t1 t)) (\lambda (t: T).(pr3 c t2 t))))). + \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(let TMP_1 \def (\lambda +(t: T).(pr3 c t1 t)) in (let TMP_2 \def (\lambda (t: T).(pr3 c t2 t)) in (ex2 +T TMP_1 TMP_2))))). inductive pc3_left (c: C): T \to (T \to Prop) \def | pc3_left_r: \forall (t: T).(pc3_left c t t) diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc3/fsubst0.ma b/matita/matita/contribs/lambdadelta/basic_1/pc3/fsubst0.ma index c563ca397..3de6c58b5 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc3/fsubst0.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc3/fsubst0.ma @@ -14,11 +14,11 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pc3/left.ma". +include "basic_1/pc3/left.ma". -include "Basic-1/fsubst0/defs.ma". +include "basic_1/fsubst0/fwd.ma". -include "Basic-1/csubst0/getl.ma". +include "basic_1/csubst0/getl.ma". theorem pc3_pr2_fsubst0: \forall (c1: C).(\forall (t1: T).(\forall (t: T).((pr2 c1 t1 t) \to (\forall @@ -27,323 +27,529 @@ t1 c2 t2) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c2 t2 t))))))))))) \def \lambda (c1: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: (pr2 c1 t1 -t)).(pr2_ind (\lambda (c: C).(\lambda (t0: T).(\lambda (t2: T).(\forall (i: -nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: T).((fsubst0 i u c t0 c2 -t3) \to (\forall (e: C).((getl i c (CHead e (Bind Abbr) u)) \to (pc3 c2 t3 -t2))))))))))) (\lambda (c: C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: -(pr0 t2 t3)).(\lambda (i: nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t0: -T).(\lambda (H1: (fsubst0 i u c t2 c2 t0)).(fsubst0_ind i u c t2 (\lambda -(c0: C).(\lambda (t4: T).(\forall (e: C).((getl i c (CHead e (Bind Abbr) u)) -\to (pc3 c0 t4 t3))))) (\lambda (t4: T).(\lambda (H2: (subst0 i u t2 -t4)).(\lambda (e: C).(\lambda (H3: (getl i c (CHead e (Bind Abbr) -u))).(or_ind (pr0 t4 t3) (ex2 T (\lambda (w2: T).(pr0 t4 w2)) (\lambda (w2: -T).(subst0 i u t3 w2))) (pc3 c t4 t3) (\lambda (H4: (pr0 t4 t3)).(pc3_pr2_r c -t4 t3 (pr2_free c t4 t3 H4))) (\lambda (H4: (ex2 T (\lambda (w2: T).(pr0 t4 -w2)) (\lambda (w2: T).(subst0 i u t3 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 -t4 w2)) (\lambda (w2: T).(subst0 i u t3 w2)) (pc3 c t4 t3) (\lambda (x: -T).(\lambda (H5: (pr0 t4 x)).(\lambda (H6: (subst0 i u t3 x)).(pc3_pr2_u c x -t4 (pr2_free c t4 x H5) t3 (pc3_pr2_x c x t3 (pr2_delta c e u i H3 t3 t3 -(pr0_refl t3) x H6)))))) H4)) (pr0_subst0 t2 t3 H0 u t4 i H2 u (pr0_refl -u))))))) (\lambda (c0: C).(\lambda (_: (csubst0 i u c c0)).(\lambda (e: -C).(\lambda (_: (getl i c (CHead e (Bind Abbr) u))).(pc3_pr2_r c0 t2 t3 -(pr2_free c0 t2 t3 H0)))))) (\lambda (t4: T).(\lambda (H2: (subst0 i u t2 -t4)).(\lambda (c0: C).(\lambda (H3: (csubst0 i u c c0)).(\lambda (e: -C).(\lambda (H4: (getl i c (CHead e (Bind Abbr) u))).(or_ind (pr0 t4 t3) (ex2 -T (\lambda (w2: T).(pr0 t4 w2)) (\lambda (w2: T).(subst0 i u t3 w2))) (pc3 c0 -t4 t3) (\lambda (H5: (pr0 t4 t3)).(pc3_pr2_r c0 t4 t3 (pr2_free c0 t4 t3 -H5))) (\lambda (H5: (ex2 T (\lambda (w2: T).(pr0 t4 w2)) (\lambda (w2: -T).(subst0 i u t3 w2)))).(ex2_ind T (\lambda (w2: T).(pr0 t4 w2)) (\lambda -(w2: T).(subst0 i u t3 w2)) (pc3 c0 t4 t3) (\lambda (x: T).(\lambda (H6: (pr0 -t4 x)).(\lambda (H7: (subst0 i u t3 x)).(pc3_pr2_u c0 x t4 (pr2_free c0 t4 x -H6) t3 (pc3_pr2_x c0 x t3 (pr2_delta c0 e u i (csubst0_getl_ge i i (le_n i) c -c0 u H3 (CHead e (Bind Abbr) u) H4) t3 t3 (pr0_refl t3) x H7)))))) H5)) -(pr0_subst0 t2 t3 H0 u t4 i H2 u (pr0_refl u))))))))) c2 t0 H1)))))))))) -(\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda -(H0: (getl i c (CHead d (Bind Abbr) u))).(\lambda (t2: T).(\lambda (t3: -T).(\lambda (H1: (pr0 t2 t3)).(\lambda (t0: T).(\lambda (H2: (subst0 i u t3 -t0)).(\lambda (i0: nat).(\lambda (u0: T).(\lambda (c2: C).(\lambda (t4: -T).(\lambda (H3: (fsubst0 i0 u0 c t2 c2 t4)).(fsubst0_ind i0 u0 c t2 (\lambda -(c0: C).(\lambda (t5: T).(\forall (e: C).((getl i0 c (CHead e (Bind Abbr) -u0)) \to (pc3 c0 t5 t0))))) (\lambda (t5: T).(\lambda (H4: (subst0 i0 u0 t2 -t5)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) -u0))).(pc3_t t2 c t5 (pc3_s c t5 t2 (pc3_pr2_r c t2 t5 (pr2_delta c e u0 i0 -H5 t2 t2 (pr0_refl t2) t5 H4))) t0 (pc3_pr2_r c t2 t0 (pr2_delta c d u i H0 -t2 t3 H1 t0 H2))))))) (\lambda (c0: C).(\lambda (H4: (csubst0 i0 u0 c -c0)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) -u0))).(lt_le_e i i0 (pc3 c0 t2 t0) (\lambda (H6: (lt i i0)).(let H7 \def -(csubst0_getl_lt i0 i H6 c c0 u0 H4 (CHead d (Bind Abbr) u) H0) in (or4_ind -(getl i c0 (CHead d (Bind Abbr) u)) (ex3_4 B C T T (\lambda (b: B).(\lambda -(e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead -e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: -T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) -u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: -C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) -(\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 -(CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) (ex4_5 B C C T T +t)).(let TMP_1 \def (\lambda (c: C).(\lambda (t0: T).(\lambda (t2: +T).(\forall (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: +T).((fsubst0 i u c t0 c2 t3) \to (\forall (e: C).((getl i c (CHead e (Bind +Abbr) u)) \to (pc3 c2 t3 t2))))))))))) in (let TMP_47 \def (\lambda (c: +C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: (pr0 t2 t3)).(\lambda (i: +nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t0: T).(\lambda (H1: (fsubst0 +i u c t2 c2 t0)).(let TMP_2 \def (\lambda (c0: C).(\lambda (t4: T).(\forall +(e: C).((getl i c (CHead e (Bind Abbr) u)) \to (pc3 c0 t4 t3))))) in (let +TMP_21 \def (\lambda (t4: T).(\lambda (H2: (subst0 i u t2 t4)).(\lambda (e: +C).(\lambda (H3: (getl i c (CHead e (Bind Abbr) u))).(let TMP_3 \def (pr0 t4 +t3) in (let TMP_4 \def (\lambda (w2: T).(pr0 t4 w2)) in (let TMP_5 \def +(\lambda (w2: T).(subst0 i u t3 w2)) in (let TMP_6 \def (ex2 T TMP_4 TMP_5) +in (let TMP_7 \def (pc3 c t4 t3) in (let TMP_9 \def (\lambda (H4: (pr0 t4 +t3)).(let TMP_8 \def (pr2_free c t4 t3 H4) in (pc3_pr2_r c t4 t3 TMP_8))) in +(let TMP_18 \def (\lambda (H4: (ex2 T (\lambda (w2: T).(pr0 t4 w2)) (\lambda +(w2: T).(subst0 i u t3 w2)))).(let TMP_10 \def (\lambda (w2: T).(pr0 t4 w2)) +in (let TMP_11 \def (\lambda (w2: T).(subst0 i u t3 w2)) in (let TMP_12 \def +(pc3 c t4 t3) in (let TMP_17 \def (\lambda (x: T).(\lambda (H5: (pr0 t4 +x)).(\lambda (H6: (subst0 i u t3 x)).(let TMP_13 \def (pr2_free c t4 x H5) in +(let TMP_14 \def (pr0_refl t3) in (let TMP_15 \def (pr2_delta c e u i H3 t3 +t3 TMP_14 x H6) in (let TMP_16 \def (pc3_pr2_x c x t3 TMP_15) in (pc3_pr2_u c +x t4 TMP_13 t3 TMP_16)))))))) in (ex2_ind T TMP_10 TMP_11 TMP_12 TMP_17 +H4)))))) in (let TMP_19 \def (pr0_refl u) in (let TMP_20 \def (pr0_subst0 t2 +t3 H0 u t4 i H2 u TMP_19) in (or_ind TMP_3 TMP_6 TMP_7 TMP_9 TMP_18 +TMP_20)))))))))))))) in (let TMP_23 \def (\lambda (c0: C).(\lambda (_: +(csubst0 i u c c0)).(\lambda (e: C).(\lambda (_: (getl i c (CHead e (Bind +Abbr) u))).(let TMP_22 \def (pr2_free c0 t2 t3 H0) in (pc3_pr2_r c0 t2 t3 +TMP_22)))))) in (let TMP_46 \def (\lambda (t4: T).(\lambda (H2: (subst0 i u +t2 t4)).(\lambda (c0: C).(\lambda (H3: (csubst0 i u c c0)).(\lambda (e: +C).(\lambda (H4: (getl i c (CHead e (Bind Abbr) u))).(let TMP_24 \def (pr0 t4 +t3) in (let TMP_25 \def (\lambda (w2: T).(pr0 t4 w2)) in (let TMP_26 \def +(\lambda (w2: T).(subst0 i u t3 w2)) in (let TMP_27 \def (ex2 T TMP_25 +TMP_26) in (let TMP_28 \def (pc3 c0 t4 t3) in (let TMP_30 \def (\lambda (H5: +(pr0 t4 t3)).(let TMP_29 \def (pr2_free c0 t4 t3 H5) in (pc3_pr2_r c0 t4 t3 +TMP_29))) in (let TMP_43 \def (\lambda (H5: (ex2 T (\lambda (w2: T).(pr0 t4 +w2)) (\lambda (w2: T).(subst0 i u t3 w2)))).(let TMP_31 \def (\lambda (w2: +T).(pr0 t4 w2)) in (let TMP_32 \def (\lambda (w2: T).(subst0 i u t3 w2)) in +(let TMP_33 \def (pc3 c0 t4 t3) in (let TMP_42 \def (\lambda (x: T).(\lambda +(H6: (pr0 t4 x)).(\lambda (H7: (subst0 i u t3 x)).(let TMP_34 \def (pr2_free +c0 t4 x H6) in (let TMP_35 \def (le_n i) in (let TMP_36 \def (Bind Abbr) in +(let TMP_37 \def (CHead e TMP_36 u) in (let TMP_38 \def (csubst0_getl_ge i i +TMP_35 c c0 u H3 TMP_37 H4) in (let TMP_39 \def (pr0_refl t3) in (let TMP_40 +\def (pr2_delta c0 e u i TMP_38 t3 t3 TMP_39 x H7) in (let TMP_41 \def +(pc3_pr2_x c0 x t3 TMP_40) in (pc3_pr2_u c0 x t4 TMP_34 t3 TMP_41)))))))))))) +in (ex2_ind T TMP_31 TMP_32 TMP_33 TMP_42 H5)))))) in (let TMP_44 \def +(pr0_refl u) in (let TMP_45 \def (pr0_subst0 t2 t3 H0 u t4 i H2 u TMP_44) in +(or_ind TMP_24 TMP_27 TMP_28 TMP_30 TMP_43 TMP_45)))))))))))))))) in +(fsubst0_ind i u c t2 TMP_2 TMP_21 TMP_23 TMP_46 c2 t0 H1)))))))))))))) in +(let TMP_549 \def (\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda +(i: nat).(\lambda (H0: (getl i c (CHead d (Bind Abbr) u))).(\lambda (t2: +T).(\lambda (t3: T).(\lambda (H1: (pr0 t2 t3)).(\lambda (t0: T).(\lambda (H2: +(subst0 i u t3 t0)).(\lambda (i0: nat).(\lambda (u0: T).(\lambda (c2: +C).(\lambda (t4: T).(\lambda (H3: (fsubst0 i0 u0 c t2 c2 t4)).(let TMP_48 +\def (\lambda (c0: C).(\lambda (t5: T).(\forall (e: C).((getl i0 c (CHead e +(Bind Abbr) u0)) \to (pc3 c0 t5 t0))))) in (let TMP_55 \def (\lambda (t5: +T).(\lambda (H4: (subst0 i0 u0 t2 t5)).(\lambda (e: C).(\lambda (H5: (getl i0 +c (CHead e (Bind Abbr) u0))).(let TMP_49 \def (pr0_refl t2) in (let TMP_50 +\def (pr2_delta c e u0 i0 H5 t2 t2 TMP_49 t5 H4) in (let TMP_51 \def +(pc3_pr2_r c t2 t5 TMP_50) in (let TMP_52 \def (pc3_s c t5 t2 TMP_51) in (let +TMP_53 \def (pr2_delta c d u i H0 t2 t3 H1 t0 H2) in (let TMP_54 \def +(pc3_pr2_r c t2 t0 TMP_53) in (pc3_t t2 c t5 TMP_52 t0 TMP_54))))))))))) in +(let TMP_284 \def (\lambda (c0: C).(\lambda (H4: (csubst0 i0 u0 c +c0)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) u0))).(let +TMP_56 \def (pc3 c0 t2 t0) in (let TMP_278 \def (\lambda (H6: (lt i i0)).(let +TMP_57 \def (Bind Abbr) in (let TMP_58 \def (CHead d TMP_57 u) in (let H7 +\def (csubst0_getl_lt i0 i H6 c c0 u0 H4 TMP_58 H0) in (let TMP_59 \def (Bind +Abbr) in (let TMP_60 \def (CHead d TMP_59 u) in (let TMP_61 \def (getl i c0 +TMP_60) in (let TMP_66 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: +T).(\lambda (_: T).(let TMP_62 \def (Bind Abbr) in (let TMP_63 \def (CHead d +TMP_62 u) in (let TMP_64 \def (Bind b) in (let TMP_65 \def (CHead e0 TMP_64 +u1) in (eq C TMP_63 TMP_65))))))))) in (let TMP_69 \def (\lambda (b: +B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(let TMP_67 \def (Bind b) +in (let TMP_68 \def (CHead e0 TMP_67 w) in (getl i c0 TMP_68))))))) in (let +TMP_72 \def (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: +T).(let TMP_70 \def (S i) in (let TMP_71 \def (minus i0 TMP_70) in (subst0 +TMP_71 u0 u1 w))))))) in (let TMP_73 \def (ex3_4 B C T T TMP_66 TMP_69 +TMP_72) in (let TMP_78 \def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: +C).(\lambda (u1: T).(let TMP_74 \def (Bind Abbr) in (let TMP_75 \def (CHead d +TMP_74 u) in (let TMP_76 \def (Bind b) in (let TMP_77 \def (CHead e1 TMP_76 +u1) in (eq C TMP_75 TMP_77))))))))) in (let TMP_81 \def (\lambda (b: +B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_79 \def (Bind +b) in (let TMP_80 \def (CHead e2 TMP_79 u1) in (getl i c0 TMP_80))))))) in +(let TMP_84 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda +(_: T).(let TMP_82 \def (S i) in (let TMP_83 \def (minus i0 TMP_82) in +(csubst0 TMP_83 u0 e1 e2))))))) in (let TMP_85 \def (ex3_4 B C C T TMP_78 +TMP_81 TMP_84) in (let TMP_90 \def (\lambda (b: B).(\lambda (e1: C).(\lambda +(_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_86 \def (Bind Abbr) in (let +TMP_87 \def (CHead d TMP_86 u) in (let TMP_88 \def (Bind b) in (let TMP_89 +\def (CHead e1 TMP_88 u1) in (eq C TMP_87 TMP_89)))))))))) in (let TMP_93 +\def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: +T).(\lambda (w: T).(let TMP_91 \def (Bind b) in (let TMP_92 \def (CHead e2 +TMP_91 w) in (getl i c0 TMP_92)))))))) in (let TMP_96 \def (\lambda (_: +B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(let +TMP_94 \def (S i) in (let TMP_95 \def (minus i0 TMP_94) in (subst0 TMP_95 u0 +u1 w)))))))) in (let TMP_99 \def (\lambda (_: B).(\lambda (e1: C).(\lambda +(e2: C).(\lambda (_: T).(\lambda (_: T).(let TMP_97 \def (S i) in (let TMP_98 +\def (minus i0 TMP_97) in (csubst0 TMP_98 u0 e1 e2)))))))) in (let TMP_100 +\def (ex4_5 B C C T T TMP_90 TMP_93 TMP_96 TMP_99) in (let TMP_101 \def (pc3 +c0 t2 t0) in (let TMP_103 \def (\lambda (H8: (getl i c0 (CHead d (Bind Abbr) +u))).(let TMP_102 \def (pr2_delta c0 d u i H8 t2 t3 H1 t0 H2) in (pc3_pr2_r +c0 t2 t0 TMP_102))) in (let TMP_168 \def (\lambda (H8: (ex3_4 B C T T +(\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C +(CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda +(e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) +(\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 +(minus i0 (S i)) u0 u1 w))))))).(let TMP_108 \def (\lambda (b: B).(\lambda +(e0: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_104 \def (Bind Abbr) in +(let TMP_105 \def (CHead d TMP_104 u) in (let TMP_106 \def (Bind b) in (let +TMP_107 \def (CHead e0 TMP_106 u1) in (eq C TMP_105 TMP_107))))))))) in (let +TMP_111 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: +T).(let TMP_109 \def (Bind b) in (let TMP_110 \def (CHead e0 TMP_109 w) in +(getl i c0 TMP_110))))))) in (let TMP_114 \def (\lambda (_: B).(\lambda (_: +C).(\lambda (u1: T).(\lambda (w: T).(let TMP_112 \def (S i) in (let TMP_113 +\def (minus i0 TMP_112) in (subst0 TMP_113 u0 u1 w))))))) in (let TMP_115 +\def (pc3 c0 t2 t0) in (let TMP_167 \def (\lambda (x0: B).(\lambda (x1: +C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) +u) (CHead x1 (Bind x0) x2))).(\lambda (H10: (getl i c0 (CHead x1 (Bind x0) +x3))).(\lambda (H11: (subst0 (minus i0 (S i)) u0 x2 x3)).(let TMP_116 \def +(\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ _) +\Rightarrow c3])) in (let TMP_117 \def (Bind Abbr) in (let TMP_118 \def +(CHead d TMP_117 u) in (let TMP_119 \def (Bind x0) in (let TMP_120 \def +(CHead x1 TMP_119 x2) in (let H12 \def (f_equal C C TMP_116 TMP_118 TMP_120 +H9) in (let TMP_121 \def (\lambda (e0: C).(match e0 with [(CSort _) +\Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k with [(Bind b) +\Rightarrow b | (Flat _) \Rightarrow Abbr])])) in (let TMP_122 \def (Bind +Abbr) in (let TMP_123 \def (CHead d TMP_122 u) in (let TMP_124 \def (Bind x0) +in (let TMP_125 \def (CHead x1 TMP_124 x2) in (let H13 \def (f_equal C B +TMP_121 TMP_123 TMP_125 H9) in (let TMP_126 \def (\lambda (e0: C).(match e0 +with [(CSort _) \Rightarrow u | (CHead _ _ t5) \Rightarrow t5])) in (let +TMP_127 \def (Bind Abbr) in (let TMP_128 \def (CHead d TMP_127 u) in (let +TMP_129 \def (Bind x0) in (let TMP_130 \def (CHead x1 TMP_129 x2) in (let H14 +\def (f_equal C T TMP_126 TMP_128 TMP_130 H9) in (let TMP_165 \def (\lambda +(H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let TMP_133 \def (\lambda +(t5: T).(let TMP_131 \def (S i) in (let TMP_132 \def (minus i0 TMP_131) in +(subst0 TMP_132 u0 t5 x3)))) in (let H17 \def (eq_ind_r T x2 TMP_133 H11 u +H14) in (let TMP_136 \def (\lambda (c3: C).(let TMP_134 \def (Bind x0) in +(let TMP_135 \def (CHead c3 TMP_134 x3) in (getl i c0 TMP_135)))) in (let H18 +\def (eq_ind_r C x1 TMP_136 H10 d H16) in (let TMP_139 \def (\lambda (b: +B).(let TMP_137 \def (Bind b) in (let TMP_138 \def (CHead d TMP_137 x3) in +(getl i c0 TMP_138)))) in (let H19 \def (eq_ind_r B x0 TMP_139 H18 Abbr H15) +in (let TMP_140 \def (\lambda (t5: T).(subst0 i x3 t3 t5)) in (let TMP_145 +\def (\lambda (t5: T).(let TMP_141 \def (S i) in (let TMP_142 \def (minus i0 +TMP_141) in (let TMP_143 \def (plus TMP_142 i) in (let TMP_144 \def (S +TMP_143) in (subst0 TMP_144 u0 t0 t5)))))) in (let TMP_146 \def (pc3 c0 t2 +t0) in (let TMP_161 \def (\lambda (x: T).(\lambda (H20: (subst0 i x3 t3 +x)).(\lambda (H21: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let +TMP_147 \def (S i) in (let TMP_148 \def (minus i0 TMP_147) in (let TMP_149 +\def (plus TMP_148 i) in (let TMP_150 \def (S TMP_149) in (let TMP_151 \def +(\lambda (n: nat).(subst0 n u0 t0 x)) in (let TMP_152 \def (lt_plus_minus_r i +i0 H6) in (let H22 \def (eq_ind_r nat TMP_150 TMP_151 H21 i0 TMP_152) in (let +TMP_153 \def (pr2_delta c0 d x3 i H19 t2 t3 H1 x H20) in (let TMP_154 \def +(le_n i0) in (let TMP_155 \def (Bind Abbr) in (let TMP_156 \def (CHead e +TMP_155 u0) in (let TMP_157 \def (csubst0_getl_ge i0 i0 TMP_154 c c0 u0 H4 +TMP_156 H5) in (let TMP_158 \def (pr0_refl t0) in (let TMP_159 \def +(pr2_delta c0 e u0 i0 TMP_157 t0 t0 TMP_158 x H22) in (let TMP_160 \def +(pc3_pr2_x c0 x t0 TMP_159) in (pc3_pr2_u c0 x t2 TMP_153 t0 +TMP_160))))))))))))))))))) in (let TMP_162 \def (S i) in (let TMP_163 \def +(minus i0 TMP_162) in (let TMP_164 \def (subst0_subst0_back t3 t0 u i H2 x3 +u0 TMP_163 H17) in (ex2_ind T TMP_140 TMP_145 TMP_146 TMP_161 +TMP_164)))))))))))))))) in (let TMP_166 \def (TMP_165 H13) in (TMP_166 +H12)))))))))))))))))))))))))))) in (ex3_4_ind B C T T TMP_108 TMP_111 TMP_114 +TMP_115 TMP_167 H8))))))) in (let TMP_209 \def (\lambda (H8: (ex3_4 B C C T +(\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C +(CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda +(_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) +u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: +T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(let TMP_173 \def (\lambda (b: +B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(let TMP_169 \def (Bind +Abbr) in (let TMP_170 \def (CHead d TMP_169 u) in (let TMP_171 \def (Bind b) +in (let TMP_172 \def (CHead e1 TMP_171 u1) in (eq C TMP_170 TMP_172))))))))) +in (let TMP_176 \def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: +C).(\lambda (u1: T).(let TMP_174 \def (Bind b) in (let TMP_175 \def (CHead e2 +TMP_174 u1) in (getl i c0 TMP_175))))))) in (let TMP_179 \def (\lambda (_: +B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(let TMP_177 \def (S i) +in (let TMP_178 \def (minus i0 TMP_177) in (csubst0 TMP_178 u0 e1 e2))))))) +in (let TMP_180 \def (pc3 c0 t2 t0) in (let TMP_208 \def (\lambda (x0: +B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H9: (eq C +(CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3))).(\lambda (H10: (getl i c0 +(CHead x2 (Bind x0) x3))).(\lambda (H11: (csubst0 (minus i0 (S i)) u0 x1 +x2)).(let TMP_181 \def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow +d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_182 \def (Bind Abbr) in (let +TMP_183 \def (CHead d TMP_182 u) in (let TMP_184 \def (Bind x0) in (let +TMP_185 \def (CHead x1 TMP_184 x3) in (let H12 \def (f_equal C C TMP_181 +TMP_183 TMP_185 H9) in (let TMP_186 \def (\lambda (e0: C).(match e0 with +[(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k with [(Bind +b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in (let TMP_187 \def (Bind +Abbr) in (let TMP_188 \def (CHead d TMP_187 u) in (let TMP_189 \def (Bind x0) +in (let TMP_190 \def (CHead x1 TMP_189 x3) in (let H13 \def (f_equal C B +TMP_186 TMP_188 TMP_190 H9) in (let TMP_191 \def (\lambda (e0: C).(match e0 +with [(CSort _) \Rightarrow u | (CHead _ _ t5) \Rightarrow t5])) in (let +TMP_192 \def (Bind Abbr) in (let TMP_193 \def (CHead d TMP_192 u) in (let +TMP_194 \def (Bind x0) in (let TMP_195 \def (CHead x1 TMP_194 x3) in (let H14 +\def (f_equal C T TMP_191 TMP_193 TMP_195 H9) in (let TMP_206 \def (\lambda +(H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let TMP_198 \def (\lambda +(t5: T).(let TMP_196 \def (Bind x0) in (let TMP_197 \def (CHead x2 TMP_196 +t5) in (getl i c0 TMP_197)))) in (let H17 \def (eq_ind_r T x3 TMP_198 H10 u +H14) in (let TMP_201 \def (\lambda (c3: C).(let TMP_199 \def (S i) in (let +TMP_200 \def (minus i0 TMP_199) in (csubst0 TMP_200 u0 c3 x2)))) in (let H18 +\def (eq_ind_r C x1 TMP_201 H11 d H16) in (let TMP_204 \def (\lambda (b: +B).(let TMP_202 \def (Bind b) in (let TMP_203 \def (CHead x2 TMP_202 u) in +(getl i c0 TMP_203)))) in (let H19 \def (eq_ind_r B x0 TMP_204 H17 Abbr H15) +in (let TMP_205 \def (pr2_delta c0 x2 u i H19 t2 t3 H1 t0 H2) in (pc3_pr2_r +c0 t2 t0 TMP_205)))))))))) in (let TMP_207 \def (TMP_206 H13) in (TMP_207 +H12)))))))))))))))))))))))))))) in (ex3_4_ind B C C T TMP_173 TMP_176 TMP_179 +TMP_180 TMP_208 H8))))))) in (let TMP_277 \def (\lambda (H8: (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda -(_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))) (pc3 c0 t2 t0) (\lambda (H8: -(getl i c0 (CHead d (Bind Abbr) u))).(pc3_pr2_r c0 t2 t0 (pr2_delta c0 d u i -H8 t2 t3 H1 t0 H2))) (\lambda (H8: (ex3_4 B C T T (\lambda (b: B).(\lambda -(e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead -e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: -T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) -u0 u1 w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda -(u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) -u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: -T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: -C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w))))) -(pc3 c0 t2 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: T).(\lambda -(x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x2))).(\lambda (H10: (getl i c0 (CHead x1 (Bind x0) x3))).(\lambda (H11: -(subst0 (minus i0 (S i)) u0 x2 x3)).(let H12 \def (f_equal C C (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | -(CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x2) H9) in ((let H13 \def (f_equal C B (\lambda (e0: C).(match e0 in C return -(\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b) -\Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x2) H9) in ((let H14 \def (f_equal C T (\lambda (e0: C).(match -e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ -t5) \Rightarrow t5])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H9) in -(\lambda (H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let H17 \def -(eq_ind_r T x2 (\lambda (t5: T).(subst0 (minus i0 (S i)) u0 t5 x3)) H11 u -H14) in (let H18 \def (eq_ind_r C x1 (\lambda (c3: C).(getl i c0 (CHead c3 -(Bind x0) x3))) H10 d H16) in (let H19 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead d (Bind b) x3))) H18 Abbr H15) in (ex2_ind T (\lambda -(t5: T).(subst0 i x3 t3 t5)) (\lambda (t5: T).(subst0 (S (plus (minus i0 (S -i)) i)) u0 t0 t5)) (pc3 c0 t2 t0) (\lambda (x: T).(\lambda (H20: (subst0 i x3 -t3 x)).(\lambda (H21: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let -H22 \def (eq_ind_r nat (S (plus (minus i0 (S i)) i)) (\lambda (n: -nat).(subst0 n u0 t0 x)) H21 i0 (lt_plus_minus_r i i0 H6)) in (pc3_pr2_u c0 x -t2 (pr2_delta c0 d x3 i H19 t2 t3 H1 x H20) t0 (pc3_pr2_x c0 x t0 (pr2_delta -c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H4 (CHead e (Bind Abbr) -u0) H5) t0 t0 (pr0_refl t0) x H22))))))) (subst0_subst0_back t3 t0 u i H2 x3 -u0 (minus i0 (S i)) H17)))))))) H13)) H12))))))))) H8)) (\lambda (H8: (ex3_4 -B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq -C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: -B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 -(Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda -(_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(ex3_4_ind B C C T (\lambda -(b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind -Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda -(e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) u1)))))) (\lambda (_: -B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S -i)) u0 e1 e2))))) (pc3 c0 t2 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda -(x2: C).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3))).(\lambda (H10: (getl i c0 (CHead x2 (Bind x0) -x3))).(\lambda (H11: (csubst0 (minus i0 (S i)) u0 x1 x2)).(let H12 \def -(f_equal C C (\lambda (e0: C).(match e0 in C return (\lambda (_: C).C) with -[(CSort _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind -Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H13 \def (f_equal C B (\lambda -(e0: C).(match e0 in C return (\lambda (_: C).B) with [(CSort _) \Rightarrow -Abbr | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).B) with -[(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) -u) (CHead x1 (Bind x0) x3) H9) in ((let H14 \def (f_equal C T (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | -(CHead _ _ t5) \Rightarrow t5])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x3) H9) in (\lambda (H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let -H17 \def (eq_ind_r T x3 (\lambda (t5: T).(getl i c0 (CHead x2 (Bind x0) t5))) -H10 u H14) in (let H18 \def (eq_ind_r C x1 (\lambda (c3: C).(csubst0 (minus -i0 (S i)) u0 c3 x2)) H11 d H16) in (let H19 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead x2 (Bind b) u))) H17 Abbr H15) in (pc3_pr2_r c0 t2 t0 -(pr2_delta c0 x2 u i H19 t2 t3 H1 t0 H2)))))))) H13)) H12))))))))) H8)) -(\lambda (H8: (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: -C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 -(Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda -(_: T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 -e2)))))))).(ex4_5_ind B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: -C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 -(Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda -(_: T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) -(pc3 c0 t2 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda -(x3: T).(\lambda (x4: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3))).(\lambda (H10: (getl i c0 (CHead x2 (Bind x0) -x4))).(\lambda (H11: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H12: -(csubst0 (minus i0 (S i)) u0 x1 x2)).(let H13 \def (f_equal C C (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | -(CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x3) H9) in ((let H14 \def (f_equal C B (\lambda (e0: C).(match e0 in C return -(\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b) -\Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3) H9) in ((let H15 \def (f_equal C T (\lambda (e0: C).(match -e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ -t5) \Rightarrow t5])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in -(\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let H18 \def -(eq_ind_r T x3 (\lambda (t5: T).(subst0 (minus i0 (S i)) u0 t5 x4)) H11 u -H15) in (let H19 \def (eq_ind_r C x1 (\lambda (c3: C).(csubst0 (minus i0 (S -i)) u0 c3 x2)) H12 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead x2 (Bind b) x4))) H10 Abbr H16) in (ex2_ind T (\lambda -(t5: T).(subst0 i x4 t3 t5)) (\lambda (t5: T).(subst0 (S (plus (minus i0 (S -i)) i)) u0 t0 t5)) (pc3 c0 t2 t0) (\lambda (x: T).(\lambda (H21: (subst0 i x4 -t3 x)).(\lambda (H22: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let -H23 \def (eq_ind_r nat (S (plus (minus i0 (S i)) i)) (\lambda (n: -nat).(subst0 n u0 t0 x)) H22 i0 (lt_plus_minus_r i i0 H6)) in (pc3_pr2_u c0 x -t2 (pr2_delta c0 x2 x4 i H20 t2 t3 H1 x H21) t0 (pc3_pr2_x c0 x t0 (pr2_delta -c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H4 (CHead e (Bind Abbr) -u0) H5) t0 t0 (pr0_refl t0) x H23))))))) (subst0_subst0_back t3 t0 u i H2 x4 -u0 (minus i0 (S i)) H18)))))))) H14)) H13))))))))))) H8)) H7))) (\lambda (H6: -(le i0 i)).(pc3_pr2_r c0 t2 t0 (pr2_delta c0 d u i (csubst0_getl_ge i0 i H6 c -c0 u0 H4 (CHead d (Bind Abbr) u) H0) t2 t3 H1 t0 H2)))))))) (\lambda (t5: -T).(\lambda (H4: (subst0 i0 u0 t2 t5)).(\lambda (c0: C).(\lambda (H5: -(csubst0 i0 u0 c c0)).(\lambda (e: C).(\lambda (H6: (getl i0 c (CHead e (Bind -Abbr) u0))).(lt_le_e i i0 (pc3 c0 t5 t0) (\lambda (H7: (lt i i0)).(let H8 -\def (csubst0_getl_lt i0 i H7 c c0 u0 H5 (CHead d (Bind Abbr) u) H0) in -(or4_ind (getl i c0 (CHead d (Bind Abbr) u)) (ex3_4 B C T T (\lambda (b: -B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind -Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: -C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) -(\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: -C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 -(Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda -(u1: T).(getl i c0 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: -C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) -(ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda -(u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) -u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: -T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))) -(pc3 c0 t5 t0) (\lambda (H9: (getl i c0 (CHead d (Bind Abbr) u))).(pc3_pr2_u2 -c0 t2 t5 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 -(CHead e (Bind Abbr) u0) H6) t2 t2 (pr0_refl t2) t5 H4) t0 (pc3_pr2_r c0 t2 -t0 (pr2_delta c0 d u i H9 t2 t3 H1 t0 H2)))) (\lambda (H9: (ex3_4 B C T T -(\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C +(_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))))).(let TMP_214 \def (\lambda +(b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let +TMP_210 \def (Bind Abbr) in (let TMP_211 \def (CHead d TMP_210 u) in (let +TMP_212 \def (Bind b) in (let TMP_213 \def (CHead e1 TMP_212 u1) in (eq C +TMP_211 TMP_213)))))))))) in (let TMP_217 \def (\lambda (b: B).(\lambda (_: +C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(let TMP_215 \def (Bind +b) in (let TMP_216 \def (CHead e2 TMP_215 w) in (getl i c0 TMP_216)))))))) in +(let TMP_220 \def (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda +(u1: T).(\lambda (w: T).(let TMP_218 \def (S i) in (let TMP_219 \def (minus +i0 TMP_218) in (subst0 TMP_219 u0 u1 w)))))))) in (let TMP_223 \def (\lambda +(_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let +TMP_221 \def (S i) in (let TMP_222 \def (minus i0 TMP_221) in (csubst0 +TMP_222 u0 e1 e2)))))))) in (let TMP_224 \def (pc3 c0 t2 t0) in (let TMP_276 +\def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: +T).(\lambda (x4: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 +(Bind x0) x3))).(\lambda (H10: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda +(H11: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H12: (csubst0 (minus i0 +(S i)) u0 x1 x2)).(let TMP_225 \def (\lambda (e0: C).(match e0 with [(CSort +_) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_226 \def +(Bind Abbr) in (let TMP_227 \def (CHead d TMP_226 u) in (let TMP_228 \def +(Bind x0) in (let TMP_229 \def (CHead x1 TMP_228 x3) in (let H13 \def +(f_equal C C TMP_225 TMP_227 TMP_229 H9) in (let TMP_230 \def (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow +(match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in +(let TMP_231 \def (Bind Abbr) in (let TMP_232 \def (CHead d TMP_231 u) in +(let TMP_233 \def (Bind x0) in (let TMP_234 \def (CHead x1 TMP_233 x3) in +(let H14 \def (f_equal C B TMP_230 TMP_232 TMP_234 H9) in (let TMP_235 \def +(\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t5) +\Rightarrow t5])) in (let TMP_236 \def (Bind Abbr) in (let TMP_237 \def +(CHead d TMP_236 u) in (let TMP_238 \def (Bind x0) in (let TMP_239 \def +(CHead x1 TMP_238 x3) in (let H15 \def (f_equal C T TMP_235 TMP_237 TMP_239 +H9) in (let TMP_274 \def (\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C +d x1)).(let TMP_242 \def (\lambda (t5: T).(let TMP_240 \def (S i) in (let +TMP_241 \def (minus i0 TMP_240) in (subst0 TMP_241 u0 t5 x4)))) in (let H18 +\def (eq_ind_r T x3 TMP_242 H11 u H15) in (let TMP_245 \def (\lambda (c3: +C).(let TMP_243 \def (S i) in (let TMP_244 \def (minus i0 TMP_243) in +(csubst0 TMP_244 u0 c3 x2)))) in (let H19 \def (eq_ind_r C x1 TMP_245 H12 d +H17) in (let TMP_248 \def (\lambda (b: B).(let TMP_246 \def (Bind b) in (let +TMP_247 \def (CHead x2 TMP_246 x4) in (getl i c0 TMP_247)))) in (let H20 \def +(eq_ind_r B x0 TMP_248 H10 Abbr H16) in (let TMP_249 \def (\lambda (t5: +T).(subst0 i x4 t3 t5)) in (let TMP_254 \def (\lambda (t5: T).(let TMP_250 +\def (S i) in (let TMP_251 \def (minus i0 TMP_250) in (let TMP_252 \def (plus +TMP_251 i) in (let TMP_253 \def (S TMP_252) in (subst0 TMP_253 u0 t0 t5)))))) +in (let TMP_255 \def (pc3 c0 t2 t0) in (let TMP_270 \def (\lambda (x: +T).(\lambda (H21: (subst0 i x4 t3 x)).(\lambda (H22: (subst0 (S (plus (minus +i0 (S i)) i)) u0 t0 x)).(let TMP_256 \def (S i) in (let TMP_257 \def (minus +i0 TMP_256) in (let TMP_258 \def (plus TMP_257 i) in (let TMP_259 \def (S +TMP_258) in (let TMP_260 \def (\lambda (n: nat).(subst0 n u0 t0 x)) in (let +TMP_261 \def (lt_plus_minus_r i i0 H6) in (let H23 \def (eq_ind_r nat TMP_259 +TMP_260 H22 i0 TMP_261) in (let TMP_262 \def (pr2_delta c0 x2 x4 i H20 t2 t3 +H1 x H21) in (let TMP_263 \def (le_n i0) in (let TMP_264 \def (Bind Abbr) in +(let TMP_265 \def (CHead e TMP_264 u0) in (let TMP_266 \def (csubst0_getl_ge +i0 i0 TMP_263 c c0 u0 H4 TMP_265 H5) in (let TMP_267 \def (pr0_refl t0) in +(let TMP_268 \def (pr2_delta c0 e u0 i0 TMP_266 t0 t0 TMP_267 x H23) in (let +TMP_269 \def (pc3_pr2_x c0 x t0 TMP_268) in (pc3_pr2_u c0 x t2 TMP_262 t0 +TMP_269))))))))))))))))))) in (let TMP_271 \def (S i) in (let TMP_272 \def +(minus i0 TMP_271) in (let TMP_273 \def (subst0_subst0_back t3 t0 u i H2 x4 +u0 TMP_272 H18) in (ex2_ind T TMP_249 TMP_254 TMP_255 TMP_270 +TMP_273)))))))))))))))) in (let TMP_275 \def (TMP_274 H14) in (TMP_275 +H13)))))))))))))))))))))))))))))) in (ex4_5_ind B C C T T TMP_214 TMP_217 +TMP_220 TMP_223 TMP_224 TMP_276 H8)))))))) in (or4_ind TMP_61 TMP_73 TMP_85 +TMP_100 TMP_101 TMP_103 TMP_168 TMP_209 TMP_277 H7)))))))))))))))))))))))))) +in (let TMP_283 \def (\lambda (H6: (le i0 i)).(let TMP_279 \def (Bind Abbr) +in (let TMP_280 \def (CHead d TMP_279 u) in (let TMP_281 \def +(csubst0_getl_ge i0 i H6 c c0 u0 H4 TMP_280 H0) in (let TMP_282 \def +(pr2_delta c0 d u i TMP_281 t2 t3 H1 t0 H2) in (pc3_pr2_r c0 t2 t0 +TMP_282)))))) in (lt_le_e i i0 TMP_56 TMP_278 TMP_283)))))))) in (let TMP_548 +\def (\lambda (t5: T).(\lambda (H4: (subst0 i0 u0 t2 t5)).(\lambda (c0: +C).(\lambda (H5: (csubst0 i0 u0 c c0)).(\lambda (e: C).(\lambda (H6: (getl i0 +c (CHead e (Bind Abbr) u0))).(let TMP_285 \def (pc3 c0 t5 t0) in (let TMP_535 +\def (\lambda (H7: (lt i i0)).(let TMP_286 \def (Bind Abbr) in (let TMP_287 +\def (CHead d TMP_286 u) in (let H8 \def (csubst0_getl_lt i0 i H7 c c0 u0 H5 +TMP_287 H0) in (let TMP_288 \def (Bind Abbr) in (let TMP_289 \def (CHead d +TMP_288 u) in (let TMP_290 \def (getl i c0 TMP_289) in (let TMP_295 \def +(\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(let +TMP_291 \def (Bind Abbr) in (let TMP_292 \def (CHead d TMP_291 u) in (let +TMP_293 \def (Bind b) in (let TMP_294 \def (CHead e0 TMP_293 u1) in (eq C +TMP_292 TMP_294))))))))) in (let TMP_298 \def (\lambda (b: B).(\lambda (e0: +C).(\lambda (_: T).(\lambda (w: T).(let TMP_296 \def (Bind b) in (let TMP_297 +\def (CHead e0 TMP_296 w) in (getl i c0 TMP_297))))))) in (let TMP_301 \def +(\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(let TMP_299 +\def (S i) in (let TMP_300 \def (minus i0 TMP_299) in (subst0 TMP_300 u0 u1 +w))))))) in (let TMP_302 \def (ex3_4 B C T T TMP_295 TMP_298 TMP_301) in (let +TMP_307 \def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: +T).(let TMP_303 \def (Bind Abbr) in (let TMP_304 \def (CHead d TMP_303 u) in +(let TMP_305 \def (Bind b) in (let TMP_306 \def (CHead e1 TMP_305 u1) in (eq +C TMP_304 TMP_306))))))))) in (let TMP_310 \def (\lambda (b: B).(\lambda (_: +C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_308 \def (Bind b) in (let +TMP_309 \def (CHead e2 TMP_308 u1) in (getl i c0 TMP_309))))))) in (let +TMP_313 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: +T).(let TMP_311 \def (S i) in (let TMP_312 \def (minus i0 TMP_311) in +(csubst0 TMP_312 u0 e1 e2))))))) in (let TMP_314 \def (ex3_4 B C C T TMP_307 +TMP_310 TMP_313) in (let TMP_319 \def (\lambda (b: B).(\lambda (e1: +C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_315 \def (Bind +Abbr) in (let TMP_316 \def (CHead d TMP_315 u) in (let TMP_317 \def (Bind b) +in (let TMP_318 \def (CHead e1 TMP_317 u1) in (eq C TMP_316 TMP_318)))))))))) +in (let TMP_322 \def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: +C).(\lambda (_: T).(\lambda (w: T).(let TMP_320 \def (Bind b) in (let TMP_321 +\def (CHead e2 TMP_320 w) in (getl i c0 TMP_321)))))))) in (let TMP_325 \def +(\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: +T).(let TMP_323 \def (S i) in (let TMP_324 \def (minus i0 TMP_323) in (subst0 +TMP_324 u0 u1 w)))))))) in (let TMP_328 \def (\lambda (_: B).(\lambda (e1: +C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let TMP_326 \def (S i) +in (let TMP_327 \def (minus i0 TMP_326) in (csubst0 TMP_327 u0 e1 e2)))))))) +in (let TMP_329 \def (ex4_5 B C C T T TMP_319 TMP_322 TMP_325 TMP_328) in +(let TMP_330 \def (pc3 c0 t5 t0) in (let TMP_339 \def (\lambda (H9: (getl i +c0 (CHead d (Bind Abbr) u))).(let TMP_331 \def (le_n i0) in (let TMP_332 \def +(Bind Abbr) in (let TMP_333 \def (CHead e TMP_332 u0) in (let TMP_334 \def +(csubst0_getl_ge i0 i0 TMP_331 c c0 u0 H5 TMP_333 H6) in (let TMP_335 \def +(pr0_refl t2) in (let TMP_336 \def (pr2_delta c0 e u0 i0 TMP_334 t2 t2 +TMP_335 t5 H4) in (let TMP_337 \def (pr2_delta c0 d u i H9 t2 t3 H1 t0 H2) in +(let TMP_338 \def (pc3_pr2_r c0 t2 t0 TMP_337) in (pc3_pr2_u2 c0 t2 t5 +TMP_336 t0 TMP_338)))))))))) in (let TMP_411 \def (\lambda (H9: (ex3_4 B C T +T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda -(e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead -e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: -T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) -u0 u1 w))))) (pc3 c0 t5 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: -T).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 -(Bind x0) x2))).(\lambda (H11: (getl i c0 (CHead x1 (Bind x0) x3))).(\lambda -(H12: (subst0 (minus i0 (S i)) u0 x2 x3)).(let H13 \def (f_equal C C (\lambda -(e0: C).(match e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow -d | (CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind Abbr) u) (CHead x1 (Bind -x0) x2) H10) in ((let H14 \def (f_equal C B (\lambda (e0: C).(match e0 in C -return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b) -\Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x2) H10) in ((let H15 \def (f_equal C T (\lambda (e0: C).(match -e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ -t6) \Rightarrow t6])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H10) in -(\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let H18 \def -(eq_ind_r T x2 (\lambda (t6: T).(subst0 (minus i0 (S i)) u0 t6 x3)) H12 u -H15) in (let H19 \def (eq_ind_r C x1 (\lambda (c3: C).(getl i c0 (CHead c3 -(Bind x0) x3))) H11 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead d (Bind b) x3))) H19 Abbr H16) in (ex2_ind T (\lambda -(t6: T).(subst0 i x3 t3 t6)) (\lambda (t6: T).(subst0 (S (plus (minus i0 (S -i)) i)) u0 t0 t6)) (pc3 c0 t5 t0) (\lambda (x: T).(\lambda (H21: (subst0 i x3 -t3 x)).(\lambda (H22: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let -H23 \def (eq_ind_r nat (S (plus (minus i0 (S i)) i)) (\lambda (n: -nat).(subst0 n u0 t0 x)) H22 i0 (lt_plus_minus_r i i0 H7)) in (pc3_pr2_u2 c0 -t2 t5 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 -(CHead e (Bind Abbr) u0) H6) t2 t2 (pr0_refl t2) t5 H4) t0 (pc3_pr2_u c0 x t2 -(pr2_delta c0 d x3 i H20 t2 t3 H1 x H21) t0 (pc3_pr2_x c0 x t0 (pr2_delta c0 -e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) -H6) t0 t0 (pr0_refl t0) x H23)))))))) (subst0_subst0_back t3 t0 u i H2 x3 u0 -(minus i0 (S i)) H18)))))))) H14)) H13))))))))) H9)) (\lambda (H9: (ex3_4 B C -C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C -(CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda -(_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) -u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: -T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(ex3_4_ind B C C T (\lambda (b: -B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind -Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda -(e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) u1)))))) (\lambda (_: -B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S -i)) u0 e1 e2))))) (pc3 c0 t5 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda -(x2: C).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) -x3))).(\lambda (H12: (csubst0 (minus i0 (S i)) u0 x1 x2)).(let H13 \def -(f_equal C C (\lambda (e0: C).(match e0 in C return (\lambda (_: C).C) with -[(CSort _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind -Abbr) u) (CHead x1 (Bind x0) x3) H10) in ((let H14 \def (f_equal C B (\lambda -(e0: C).(match e0 in C return (\lambda (_: C).B) with [(CSort _) \Rightarrow -Abbr | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).B) with -[(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) -u) (CHead x1 (Bind x0) x3) H10) in ((let H15 \def (f_equal C T (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | -(CHead _ _ t6) \Rightarrow t6])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x3) H10) in (\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let -H18 \def (eq_ind_r T x3 (\lambda (t6: T).(getl i c0 (CHead x2 (Bind x0) t6))) -H11 u H15) in (let H19 \def (eq_ind_r C x1 (\lambda (c3: C).(csubst0 (minus -i0 (S i)) u0 c3 x2)) H12 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead x2 (Bind b) u))) H18 Abbr H16) in (pc3_pr2_u2 c0 t2 t5 -(pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e -(Bind Abbr) u0) H6) t2 t2 (pr0_refl t2) t5 H4) t0 (pc3_pr2_r c0 t2 t0 -(pr2_delta c0 x2 u i H20 t2 t3 H1 t0 H2))))))))) H14)) H13))))))))) H9)) -(\lambda (H9: (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: -C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 -(Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda -(_: T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 -e2)))))))).(ex4_5_ind B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: -C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 -(Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda -(_: T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) -(pc3 c0 t5 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda -(x3: T).(\lambda (x4: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) -x4))).(\lambda (H12: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H13: -(csubst0 (minus i0 (S i)) u0 x1 x2)).(let H14 \def (f_equal C C (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | -(CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x3) H10) in ((let H15 \def (f_equal C B (\lambda (e0: C).(match e0 in C -return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b) -\Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3) H10) in ((let H16 \def (f_equal C T (\lambda (e0: C).(match -e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ -t6) \Rightarrow t6])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H10) in -(\lambda (H17: (eq B Abbr x0)).(\lambda (H18: (eq C d x1)).(let H19 \def -(eq_ind_r T x3 (\lambda (t6: T).(subst0 (minus i0 (S i)) u0 t6 x4)) H12 u -H16) in (let H20 \def (eq_ind_r C x1 (\lambda (c3: C).(csubst0 (minus i0 (S -i)) u0 c3 x2)) H13 d H18) in (let H21 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead x2 (Bind b) x4))) H11 Abbr H17) in (ex2_ind T (\lambda -(t6: T).(subst0 i x4 t3 t6)) (\lambda (t6: T).(subst0 (S (plus (minus i0 (S -i)) i)) u0 t0 t6)) (pc3 c0 t5 t0) (\lambda (x: T).(\lambda (H22: (subst0 i x4 -t3 x)).(\lambda (H23: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let -H24 \def (eq_ind_r nat (S (plus (minus i0 (S i)) i)) (\lambda (n: -nat).(subst0 n u0 t0 x)) H23 i0 (lt_plus_minus_r i i0 H7)) in (pc3_pr2_u2 c0 -t2 t5 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 -(CHead e (Bind Abbr) u0) H6) t2 t2 (pr0_refl t2) t5 H4) t0 (pc3_pr2_u c0 x t2 -(pr2_delta c0 x2 x4 i H21 t2 t3 H1 x H22) t0 (pc3_pr2_x c0 x t0 (pr2_delta c0 -e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) -H6) t0 t0 (pr0_refl t0) x H24)))))))) (subst0_subst0_back t3 t0 u i H2 x4 u0 -(minus i0 (S i)) H19)))))))) H15)) H14))))))))))) H9)) H8))) (\lambda (H7: -(le i0 i)).(pc3_pr2_u2 c0 t2 t5 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 -(le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) H6) t2 t2 (pr0_refl t2) t5 H4) -t0 (pc3_pr2_r c0 t2 t0 (pr2_delta c0 d u i (csubst0_getl_ge i0 i H7 c c0 u0 -H5 (CHead d (Bind Abbr) u) H0) t2 t3 H1 t0 H2))))))))))) c2 t4 -H3)))))))))))))))) c1 t1 t H)))). -(* COMMENTS -Initial nodes: 6455 -END *) +(minus i0 (S i)) u0 u1 w))))))).(let TMP_344 \def (\lambda (b: B).(\lambda +(e0: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_340 \def (Bind Abbr) in +(let TMP_341 \def (CHead d TMP_340 u) in (let TMP_342 \def (Bind b) in (let +TMP_343 \def (CHead e0 TMP_342 u1) in (eq C TMP_341 TMP_343))))))))) in (let +TMP_347 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: +T).(let TMP_345 \def (Bind b) in (let TMP_346 \def (CHead e0 TMP_345 w) in +(getl i c0 TMP_346))))))) in (let TMP_350 \def (\lambda (_: B).(\lambda (_: +C).(\lambda (u1: T).(\lambda (w: T).(let TMP_348 \def (S i) in (let TMP_349 +\def (minus i0 TMP_348) in (subst0 TMP_349 u0 u1 w))))))) in (let TMP_351 +\def (pc3 c0 t5 t0) in (let TMP_410 \def (\lambda (x0: B).(\lambda (x1: +C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind +Abbr) u) (CHead x1 (Bind x0) x2))).(\lambda (H11: (getl i c0 (CHead x1 (Bind +x0) x3))).(\lambda (H12: (subst0 (minus i0 (S i)) u0 x2 x3)).(let TMP_352 +\def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ +_) \Rightarrow c3])) in (let TMP_353 \def (Bind Abbr) in (let TMP_354 \def +(CHead d TMP_353 u) in (let TMP_355 \def (Bind x0) in (let TMP_356 \def +(CHead x1 TMP_355 x2) in (let H13 \def (f_equal C C TMP_352 TMP_354 TMP_356 +H10) in (let TMP_357 \def (\lambda (e0: C).(match e0 with [(CSort _) +\Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k with [(Bind b) +\Rightarrow b | (Flat _) \Rightarrow Abbr])])) in (let TMP_358 \def (Bind +Abbr) in (let TMP_359 \def (CHead d TMP_358 u) in (let TMP_360 \def (Bind x0) +in (let TMP_361 \def (CHead x1 TMP_360 x2) in (let H14 \def (f_equal C B +TMP_357 TMP_359 TMP_361 H10) in (let TMP_362 \def (\lambda (e0: C).(match e0 +with [(CSort _) \Rightarrow u | (CHead _ _ t6) \Rightarrow t6])) in (let +TMP_363 \def (Bind Abbr) in (let TMP_364 \def (CHead d TMP_363 u) in (let +TMP_365 \def (Bind x0) in (let TMP_366 \def (CHead x1 TMP_365 x2) in (let H15 +\def (f_equal C T TMP_362 TMP_364 TMP_366 H10) in (let TMP_408 \def (\lambda +(H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let TMP_369 \def (\lambda +(t6: T).(let TMP_367 \def (S i) in (let TMP_368 \def (minus i0 TMP_367) in +(subst0 TMP_368 u0 t6 x3)))) in (let H18 \def (eq_ind_r T x2 TMP_369 H12 u +H15) in (let TMP_372 \def (\lambda (c3: C).(let TMP_370 \def (Bind x0) in +(let TMP_371 \def (CHead c3 TMP_370 x3) in (getl i c0 TMP_371)))) in (let H19 +\def (eq_ind_r C x1 TMP_372 H11 d H17) in (let TMP_375 \def (\lambda (b: +B).(let TMP_373 \def (Bind b) in (let TMP_374 \def (CHead d TMP_373 x3) in +(getl i c0 TMP_374)))) in (let H20 \def (eq_ind_r B x0 TMP_375 H19 Abbr H16) +in (let TMP_376 \def (\lambda (t6: T).(subst0 i x3 t3 t6)) in (let TMP_381 +\def (\lambda (t6: T).(let TMP_377 \def (S i) in (let TMP_378 \def (minus i0 +TMP_377) in (let TMP_379 \def (plus TMP_378 i) in (let TMP_380 \def (S +TMP_379) in (subst0 TMP_380 u0 t0 t6)))))) in (let TMP_382 \def (pc3 c0 t5 +t0) in (let TMP_404 \def (\lambda (x: T).(\lambda (H21: (subst0 i x3 t3 +x)).(\lambda (H22: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let +TMP_383 \def (S i) in (let TMP_384 \def (minus i0 TMP_383) in (let TMP_385 +\def (plus TMP_384 i) in (let TMP_386 \def (S TMP_385) in (let TMP_387 \def +(\lambda (n: nat).(subst0 n u0 t0 x)) in (let TMP_388 \def (lt_plus_minus_r i +i0 H7) in (let H23 \def (eq_ind_r nat TMP_386 TMP_387 H22 i0 TMP_388) in (let +TMP_389 \def (le_n i0) in (let TMP_390 \def (Bind Abbr) in (let TMP_391 \def +(CHead e TMP_390 u0) in (let TMP_392 \def (csubst0_getl_ge i0 i0 TMP_389 c c0 +u0 H5 TMP_391 H6) in (let TMP_393 \def (pr0_refl t2) in (let TMP_394 \def +(pr2_delta c0 e u0 i0 TMP_392 t2 t2 TMP_393 t5 H4) in (let TMP_395 \def +(pr2_delta c0 d x3 i H20 t2 t3 H1 x H21) in (let TMP_396 \def (le_n i0) in +(let TMP_397 \def (Bind Abbr) in (let TMP_398 \def (CHead e TMP_397 u0) in +(let TMP_399 \def (csubst0_getl_ge i0 i0 TMP_396 c c0 u0 H5 TMP_398 H6) in +(let TMP_400 \def (pr0_refl t0) in (let TMP_401 \def (pr2_delta c0 e u0 i0 +TMP_399 t0 t0 TMP_400 x H23) in (let TMP_402 \def (pc3_pr2_x c0 x t0 TMP_401) +in (let TMP_403 \def (pc3_pr2_u c0 x t2 TMP_395 t0 TMP_402) in (pc3_pr2_u2 c0 +t2 t5 TMP_394 t0 TMP_403)))))))))))))))))))))))))) in (let TMP_405 \def (S i) +in (let TMP_406 \def (minus i0 TMP_405) in (let TMP_407 \def +(subst0_subst0_back t3 t0 u i H2 x3 u0 TMP_406 H18) in (ex2_ind T TMP_376 +TMP_381 TMP_382 TMP_404 TMP_407)))))))))))))))) in (let TMP_409 \def (TMP_408 +H14) in (TMP_409 H13)))))))))))))))))))))))))))) in (ex3_4_ind B C T T +TMP_344 TMP_347 TMP_350 TMP_351 TMP_410 H9))))))) in (let TMP_459 \def +(\lambda (H9: (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: +C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) +(\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 +(CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: +C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(let TMP_416 +\def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(let +TMP_412 \def (Bind Abbr) in (let TMP_413 \def (CHead d TMP_412 u) in (let +TMP_414 \def (Bind b) in (let TMP_415 \def (CHead e1 TMP_414 u1) in (eq C +TMP_413 TMP_415))))))))) in (let TMP_419 \def (\lambda (b: B).(\lambda (_: +C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_417 \def (Bind b) in (let +TMP_418 \def (CHead e2 TMP_417 u1) in (getl i c0 TMP_418))))))) in (let +TMP_422 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: +T).(let TMP_420 \def (S i) in (let TMP_421 \def (minus i0 TMP_420) in +(csubst0 TMP_421 u0 e1 e2))))))) in (let TMP_423 \def (pc3 c0 t5 t0) in (let +TMP_458 \def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: +T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) +x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) x3))).(\lambda (H12: +(csubst0 (minus i0 (S i)) u0 x1 x2)).(let TMP_424 \def (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) +in (let TMP_425 \def (Bind Abbr) in (let TMP_426 \def (CHead d TMP_425 u) in +(let TMP_427 \def (Bind x0) in (let TMP_428 \def (CHead x1 TMP_427 x3) in +(let H13 \def (f_equal C C TMP_424 TMP_426 TMP_428 H10) in (let TMP_429 \def +(\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) +\Rightarrow (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow +Abbr])])) in (let TMP_430 \def (Bind Abbr) in (let TMP_431 \def (CHead d +TMP_430 u) in (let TMP_432 \def (Bind x0) in (let TMP_433 \def (CHead x1 +TMP_432 x3) in (let H14 \def (f_equal C B TMP_429 TMP_431 TMP_433 H10) in +(let TMP_434 \def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | +(CHead _ _ t6) \Rightarrow t6])) in (let TMP_435 \def (Bind Abbr) in (let +TMP_436 \def (CHead d TMP_435 u) in (let TMP_437 \def (Bind x0) in (let +TMP_438 \def (CHead x1 TMP_437 x3) in (let H15 \def (f_equal C T TMP_434 +TMP_436 TMP_438 H10) in (let TMP_456 \def (\lambda (H16: (eq B Abbr +x0)).(\lambda (H17: (eq C d x1)).(let TMP_441 \def (\lambda (t6: T).(let +TMP_439 \def (Bind x0) in (let TMP_440 \def (CHead x2 TMP_439 t6) in (getl i +c0 TMP_440)))) in (let H18 \def (eq_ind_r T x3 TMP_441 H11 u H15) in (let +TMP_444 \def (\lambda (c3: C).(let TMP_442 \def (S i) in (let TMP_443 \def +(minus i0 TMP_442) in (csubst0 TMP_443 u0 c3 x2)))) in (let H19 \def +(eq_ind_r C x1 TMP_444 H12 d H17) in (let TMP_447 \def (\lambda (b: B).(let +TMP_445 \def (Bind b) in (let TMP_446 \def (CHead x2 TMP_445 u) in (getl i c0 +TMP_446)))) in (let H20 \def (eq_ind_r B x0 TMP_447 H18 Abbr H16) in (let +TMP_448 \def (le_n i0) in (let TMP_449 \def (Bind Abbr) in (let TMP_450 \def +(CHead e TMP_449 u0) in (let TMP_451 \def (csubst0_getl_ge i0 i0 TMP_448 c c0 +u0 H5 TMP_450 H6) in (let TMP_452 \def (pr0_refl t2) in (let TMP_453 \def +(pr2_delta c0 e u0 i0 TMP_451 t2 t2 TMP_452 t5 H4) in (let TMP_454 \def +(pr2_delta c0 x2 u i H20 t2 t3 H1 t0 H2) in (let TMP_455 \def (pc3_pr2_r c0 +t2 t0 TMP_454) in (pc3_pr2_u2 c0 t2 t5 TMP_453 t0 TMP_455))))))))))))))))) in +(let TMP_457 \def (TMP_456 H14) in (TMP_457 H13)))))))))))))))))))))))))))) +in (ex3_4_ind B C C T TMP_416 TMP_419 TMP_422 TMP_423 TMP_458 H9))))))) in +(let TMP_534 \def (\lambda (H9: (ex4_5 B C C T T (\lambda (b: B).(\lambda +(e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind +Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: +C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e2 +(Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda +(u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) (\lambda (_: +B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 +(minus i0 (S i)) u0 e1 e2)))))))).(let TMP_464 \def (\lambda (b: B).(\lambda +(e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_460 \def +(Bind Abbr) in (let TMP_461 \def (CHead d TMP_460 u) in (let TMP_462 \def +(Bind b) in (let TMP_463 \def (CHead e1 TMP_462 u1) in (eq C TMP_461 +TMP_463)))))))))) in (let TMP_467 \def (\lambda (b: B).(\lambda (_: +C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(let TMP_465 \def (Bind +b) in (let TMP_466 \def (CHead e2 TMP_465 w) in (getl i c0 TMP_466)))))))) in +(let TMP_470 \def (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda +(u1: T).(\lambda (w: T).(let TMP_468 \def (S i) in (let TMP_469 \def (minus +i0 TMP_468) in (subst0 TMP_469 u0 u1 w)))))))) in (let TMP_473 \def (\lambda +(_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let +TMP_471 \def (S i) in (let TMP_472 \def (minus i0 TMP_471) in (csubst0 +TMP_472 u0 e1 e2)))))))) in (let TMP_474 \def (pc3 c0 t5 t0) in (let TMP_533 +\def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: +T).(\lambda (x4: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 +(Bind x0) x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda +(H12: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H13: (csubst0 (minus i0 +(S i)) u0 x1 x2)).(let TMP_475 \def (\lambda (e0: C).(match e0 with [(CSort +_) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_476 \def +(Bind Abbr) in (let TMP_477 \def (CHead d TMP_476 u) in (let TMP_478 \def +(Bind x0) in (let TMP_479 \def (CHead x1 TMP_478 x3) in (let H14 \def +(f_equal C C TMP_475 TMP_477 TMP_479 H10) in (let TMP_480 \def (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow +(match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in +(let TMP_481 \def (Bind Abbr) in (let TMP_482 \def (CHead d TMP_481 u) in +(let TMP_483 \def (Bind x0) in (let TMP_484 \def (CHead x1 TMP_483 x3) in +(let H15 \def (f_equal C B TMP_480 TMP_482 TMP_484 H10) in (let TMP_485 \def +(\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t6) +\Rightarrow t6])) in (let TMP_486 \def (Bind Abbr) in (let TMP_487 \def +(CHead d TMP_486 u) in (let TMP_488 \def (Bind x0) in (let TMP_489 \def +(CHead x1 TMP_488 x3) in (let H16 \def (f_equal C T TMP_485 TMP_487 TMP_489 +H10) in (let TMP_531 \def (\lambda (H17: (eq B Abbr x0)).(\lambda (H18: (eq C +d x1)).(let TMP_492 \def (\lambda (t6: T).(let TMP_490 \def (S i) in (let +TMP_491 \def (minus i0 TMP_490) in (subst0 TMP_491 u0 t6 x4)))) in (let H19 +\def (eq_ind_r T x3 TMP_492 H12 u H16) in (let TMP_495 \def (\lambda (c3: +C).(let TMP_493 \def (S i) in (let TMP_494 \def (minus i0 TMP_493) in +(csubst0 TMP_494 u0 c3 x2)))) in (let H20 \def (eq_ind_r C x1 TMP_495 H13 d +H18) in (let TMP_498 \def (\lambda (b: B).(let TMP_496 \def (Bind b) in (let +TMP_497 \def (CHead x2 TMP_496 x4) in (getl i c0 TMP_497)))) in (let H21 \def +(eq_ind_r B x0 TMP_498 H11 Abbr H17) in (let TMP_499 \def (\lambda (t6: +T).(subst0 i x4 t3 t6)) in (let TMP_504 \def (\lambda (t6: T).(let TMP_500 +\def (S i) in (let TMP_501 \def (minus i0 TMP_500) in (let TMP_502 \def (plus +TMP_501 i) in (let TMP_503 \def (S TMP_502) in (subst0 TMP_503 u0 t0 t6)))))) +in (let TMP_505 \def (pc3 c0 t5 t0) in (let TMP_527 \def (\lambda (x: +T).(\lambda (H22: (subst0 i x4 t3 x)).(\lambda (H23: (subst0 (S (plus (minus +i0 (S i)) i)) u0 t0 x)).(let TMP_506 \def (S i) in (let TMP_507 \def (minus +i0 TMP_506) in (let TMP_508 \def (plus TMP_507 i) in (let TMP_509 \def (S +TMP_508) in (let TMP_510 \def (\lambda (n: nat).(subst0 n u0 t0 x)) in (let +TMP_511 \def (lt_plus_minus_r i i0 H7) in (let H24 \def (eq_ind_r nat TMP_509 +TMP_510 H23 i0 TMP_511) in (let TMP_512 \def (le_n i0) in (let TMP_513 \def +(Bind Abbr) in (let TMP_514 \def (CHead e TMP_513 u0) in (let TMP_515 \def +(csubst0_getl_ge i0 i0 TMP_512 c c0 u0 H5 TMP_514 H6) in (let TMP_516 \def +(pr0_refl t2) in (let TMP_517 \def (pr2_delta c0 e u0 i0 TMP_515 t2 t2 +TMP_516 t5 H4) in (let TMP_518 \def (pr2_delta c0 x2 x4 i H21 t2 t3 H1 x H22) +in (let TMP_519 \def (le_n i0) in (let TMP_520 \def (Bind Abbr) in (let +TMP_521 \def (CHead e TMP_520 u0) in (let TMP_522 \def (csubst0_getl_ge i0 i0 +TMP_519 c c0 u0 H5 TMP_521 H6) in (let TMP_523 \def (pr0_refl t0) in (let +TMP_524 \def (pr2_delta c0 e u0 i0 TMP_522 t0 t0 TMP_523 x H24) in (let +TMP_525 \def (pc3_pr2_x c0 x t0 TMP_524) in (let TMP_526 \def (pc3_pr2_u c0 x +t2 TMP_518 t0 TMP_525) in (pc3_pr2_u2 c0 t2 t5 TMP_517 t0 +TMP_526)))))))))))))))))))))))))) in (let TMP_528 \def (S i) in (let TMP_529 +\def (minus i0 TMP_528) in (let TMP_530 \def (subst0_subst0_back t3 t0 u i H2 +x4 u0 TMP_529 H19) in (ex2_ind T TMP_499 TMP_504 TMP_505 TMP_527 +TMP_530)))))))))))))))) in (let TMP_532 \def (TMP_531 H15) in (TMP_532 +H14)))))))))))))))))))))))))))))) in (ex4_5_ind B C C T T TMP_464 TMP_467 +TMP_470 TMP_473 TMP_474 TMP_533 H9)))))))) in (or4_ind TMP_290 TMP_302 +TMP_314 TMP_329 TMP_330 TMP_339 TMP_411 TMP_459 TMP_534 +H8)))))))))))))))))))))))))) in (let TMP_547 \def (\lambda (H7: (le i0 +i)).(let TMP_536 \def (le_n i0) in (let TMP_537 \def (Bind Abbr) in (let +TMP_538 \def (CHead e TMP_537 u0) in (let TMP_539 \def (csubst0_getl_ge i0 i0 +TMP_536 c c0 u0 H5 TMP_538 H6) in (let TMP_540 \def (pr0_refl t2) in (let +TMP_541 \def (pr2_delta c0 e u0 i0 TMP_539 t2 t2 TMP_540 t5 H4) in (let +TMP_542 \def (Bind Abbr) in (let TMP_543 \def (CHead d TMP_542 u) in (let +TMP_544 \def (csubst0_getl_ge i0 i H7 c c0 u0 H5 TMP_543 H0) in (let TMP_545 +\def (pr2_delta c0 d u i TMP_544 t2 t3 H1 t0 H2) in (let TMP_546 \def +(pc3_pr2_r c0 t2 t0 TMP_545) in (pc3_pr2_u2 c0 t2 t5 TMP_541 t0 +TMP_546))))))))))))) in (lt_le_e i i0 TMP_285 TMP_535 TMP_547)))))))))) in +(fsubst0_ind i0 u0 c t2 TMP_48 TMP_55 TMP_284 TMP_548 c2 t4 +H3)))))))))))))))))))) in (pr2_ind TMP_1 TMP_47 TMP_549 c1 t1 t H))))))). theorem pc3_pr2_fsubst0_back: \forall (c1: C).(\forall (t: T).(\forall (t1: T).((pr2 c1 t t1) \to (\forall @@ -352,312 +558,510 @@ t1 c2 t2) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c2 t t2))))))))))) \def \lambda (c1: C).(\lambda (t: T).(\lambda (t1: T).(\lambda (H: (pr2 c1 t -t1)).(pr2_ind (\lambda (c: C).(\lambda (t0: T).(\lambda (t2: T).(\forall (i: -nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: T).((fsubst0 i u c t2 c2 -t3) \to (\forall (e: C).((getl i c (CHead e (Bind Abbr) u)) \to (pc3 c2 t0 -t3))))))))))) (\lambda (c: C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: -(pr0 t2 t3)).(\lambda (i: nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t0: -T).(\lambda (H1: (fsubst0 i u c t3 c2 t0)).(fsubst0_ind i u c t3 (\lambda -(c0: C).(\lambda (t4: T).(\forall (e: C).((getl i c (CHead e (Bind Abbr) u)) -\to (pc3 c0 t2 t4))))) (\lambda (t4: T).(\lambda (H2: (subst0 i u t3 -t4)).(\lambda (e: C).(\lambda (H3: (getl i c (CHead e (Bind Abbr) -u))).(pc3_pr2_u c t3 t2 (pr2_free c t2 t3 H0) t4 (pc3_pr2_r c t3 t4 -(pr2_delta c e u i H3 t3 t3 (pr0_refl t3) t4 H2))))))) (\lambda (c0: -C).(\lambda (_: (csubst0 i u c c0)).(\lambda (e: C).(\lambda (_: (getl i c -(CHead e (Bind Abbr) u))).(pc3_pr2_r c0 t2 t3 (pr2_free c0 t2 t3 H0)))))) -(\lambda (t4: T).(\lambda (H2: (subst0 i u t3 t4)).(\lambda (c0: C).(\lambda -(H3: (csubst0 i u c c0)).(\lambda (e: C).(\lambda (H4: (getl i c (CHead e -(Bind Abbr) u))).(pc3_pr2_u c0 t3 t2 (pr2_free c0 t2 t3 H0) t4 (pc3_pr2_r c0 -t3 t4 (pr2_delta c0 e u i (csubst0_getl_ge i i (le_n i) c c0 u H3 (CHead e -(Bind Abbr) u) H4) t3 t3 (pr0_refl t3) t4 H2))))))))) c2 t0 H1)))))))))) -(\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda -(H0: (getl i c (CHead d (Bind Abbr) u))).(\lambda (t2: T).(\lambda (t3: -T).(\lambda (H1: (pr0 t2 t3)).(\lambda (t0: T).(\lambda (H2: (subst0 i u t3 -t0)).(\lambda (i0: nat).(\lambda (u0: T).(\lambda (c2: C).(\lambda (t4: -T).(\lambda (H3: (fsubst0 i0 u0 c t0 c2 t4)).(fsubst0_ind i0 u0 c t0 (\lambda -(c0: C).(\lambda (t5: T).(\forall (e: C).((getl i0 c (CHead e (Bind Abbr) -u0)) \to (pc3 c0 t2 t5))))) (\lambda (t5: T).(\lambda (H4: (subst0 i0 u0 t0 -t5)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) -u0))).(pc3_t t3 c t2 (pc3_pr3_r c t2 t3 (pr3_pr2 c t2 t3 (pr2_free c t2 t3 -H1))) t5 (pc3_pr3_r c t3 t5 (pr3_sing c t0 t3 (pr2_delta c d u i H0 t3 t3 -(pr0_refl t3) t0 H2) t5 (pr3_pr2 c t0 t5 (pr2_delta c e u0 i0 H5 t0 t0 -(pr0_refl t0) t5 H4))))))))) (\lambda (c0: C).(\lambda (H4: (csubst0 i0 u0 c -c0)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) -u0))).(lt_le_e i i0 (pc3 c0 t2 t0) (\lambda (H6: (lt i i0)).(let H7 \def -(csubst0_getl_lt i0 i H6 c c0 u0 H4 (CHead d (Bind Abbr) u) H0) in (or4_ind -(getl i c0 (CHead d (Bind Abbr) u)) (ex3_4 B C T T (\lambda (b: B).(\lambda -(e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead -e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: -T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) -u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: -C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) -(\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 -(CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) (ex4_5 B C C T T +t1)).(let TMP_1 \def (\lambda (c: C).(\lambda (t0: T).(\lambda (t2: +T).(\forall (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: +T).((fsubst0 i u c t2 c2 t3) \to (\forall (e: C).((getl i c (CHead e (Bind +Abbr) u)) \to (pc3 c2 t0 t3))))))))))) in (let TMP_19 \def (\lambda (c: +C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: (pr0 t2 t3)).(\lambda (i: +nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t0: T).(\lambda (H1: (fsubst0 +i u c t3 c2 t0)).(let TMP_2 \def (\lambda (c0: C).(\lambda (t4: T).(\forall +(e: C).((getl i c (CHead e (Bind Abbr) u)) \to (pc3 c0 t2 t4))))) in (let +TMP_7 \def (\lambda (t4: T).(\lambda (H2: (subst0 i u t3 t4)).(\lambda (e: +C).(\lambda (H3: (getl i c (CHead e (Bind Abbr) u))).(let TMP_3 \def +(pr2_free c t2 t3 H0) in (let TMP_4 \def (pr0_refl t3) in (let TMP_5 \def +(pr2_delta c e u i H3 t3 t3 TMP_4 t4 H2) in (let TMP_6 \def (pc3_pr2_r c t3 +t4 TMP_5) in (pc3_pr2_u c t3 t2 TMP_3 t4 TMP_6))))))))) in (let TMP_9 \def +(\lambda (c0: C).(\lambda (_: (csubst0 i u c c0)).(\lambda (e: C).(\lambda +(_: (getl i c (CHead e (Bind Abbr) u))).(let TMP_8 \def (pr2_free c0 t2 t3 +H0) in (pc3_pr2_r c0 t2 t3 TMP_8)))))) in (let TMP_18 \def (\lambda (t4: +T).(\lambda (H2: (subst0 i u t3 t4)).(\lambda (c0: C).(\lambda (H3: (csubst0 +i u c c0)).(\lambda (e: C).(\lambda (H4: (getl i c (CHead e (Bind Abbr) +u))).(let TMP_10 \def (pr2_free c0 t2 t3 H0) in (let TMP_11 \def (le_n i) in +(let TMP_12 \def (Bind Abbr) in (let TMP_13 \def (CHead e TMP_12 u) in (let +TMP_14 \def (csubst0_getl_ge i i TMP_11 c c0 u H3 TMP_13 H4) in (let TMP_15 +\def (pr0_refl t3) in (let TMP_16 \def (pr2_delta c0 e u i TMP_14 t3 t3 +TMP_15 t4 H2) in (let TMP_17 \def (pc3_pr2_r c0 t3 t4 TMP_16) in (pc3_pr2_u +c0 t3 t2 TMP_10 t4 TMP_17))))))))))))))) in (fsubst0_ind i u c t3 TMP_2 TMP_7 +TMP_9 TMP_18 c2 t0 H1)))))))))))))) in (let TMP_529 \def (\lambda (c: +C).(\lambda (d: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H0: (getl i c +(CHead d (Bind Abbr) u))).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H1: +(pr0 t2 t3)).(\lambda (t0: T).(\lambda (H2: (subst0 i u t3 t0)).(\lambda (i0: +nat).(\lambda (u0: T).(\lambda (c2: C).(\lambda (t4: T).(\lambda (H3: +(fsubst0 i0 u0 c t0 c2 t4)).(let TMP_20 \def (\lambda (c0: C).(\lambda (t5: +T).(\forall (e: C).((getl i0 c (CHead e (Bind Abbr) u0)) \to (pc3 c0 t2 +t5))))) in (let TMP_31 \def (\lambda (t5: T).(\lambda (H4: (subst0 i0 u0 t0 +t5)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) u0))).(let +TMP_21 \def (pr2_free c t2 t3 H1) in (let TMP_22 \def (pr3_pr2 c t2 t3 +TMP_21) in (let TMP_23 \def (pc3_pr3_r c t2 t3 TMP_22) in (let TMP_24 \def +(pr0_refl t3) in (let TMP_25 \def (pr2_delta c d u i H0 t3 t3 TMP_24 t0 H2) +in (let TMP_26 \def (pr0_refl t0) in (let TMP_27 \def (pr2_delta c e u0 i0 H5 +t0 t0 TMP_26 t5 H4) in (let TMP_28 \def (pr3_pr2 c t0 t5 TMP_27) in (let +TMP_29 \def (pr3_sing c t0 t3 TMP_25 t5 TMP_28) in (let TMP_30 \def +(pc3_pr3_r c t3 t5 TMP_29) in (pc3_t t3 c t2 TMP_23 t5 TMP_30))))))))))))))) +in (let TMP_260 \def (\lambda (c0: C).(\lambda (H4: (csubst0 i0 u0 c +c0)).(\lambda (e: C).(\lambda (H5: (getl i0 c (CHead e (Bind Abbr) u0))).(let +TMP_32 \def (pc3 c0 t2 t0) in (let TMP_254 \def (\lambda (H6: (lt i i0)).(let +TMP_33 \def (Bind Abbr) in (let TMP_34 \def (CHead d TMP_33 u) in (let H7 +\def (csubst0_getl_lt i0 i H6 c c0 u0 H4 TMP_34 H0) in (let TMP_35 \def (Bind +Abbr) in (let TMP_36 \def (CHead d TMP_35 u) in (let TMP_37 \def (getl i c0 +TMP_36) in (let TMP_42 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: +T).(\lambda (_: T).(let TMP_38 \def (Bind Abbr) in (let TMP_39 \def (CHead d +TMP_38 u) in (let TMP_40 \def (Bind b) in (let TMP_41 \def (CHead e0 TMP_40 +u1) in (eq C TMP_39 TMP_41))))))))) in (let TMP_45 \def (\lambda (b: +B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(let TMP_43 \def (Bind b) +in (let TMP_44 \def (CHead e0 TMP_43 w) in (getl i c0 TMP_44))))))) in (let +TMP_48 \def (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: +T).(let TMP_46 \def (S i) in (let TMP_47 \def (minus i0 TMP_46) in (subst0 +TMP_47 u0 u1 w))))))) in (let TMP_49 \def (ex3_4 B C T T TMP_42 TMP_45 +TMP_48) in (let TMP_54 \def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: +C).(\lambda (u1: T).(let TMP_50 \def (Bind Abbr) in (let TMP_51 \def (CHead d +TMP_50 u) in (let TMP_52 \def (Bind b) in (let TMP_53 \def (CHead e1 TMP_52 +u1) in (eq C TMP_51 TMP_53))))))))) in (let TMP_57 \def (\lambda (b: +B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_55 \def (Bind +b) in (let TMP_56 \def (CHead e2 TMP_55 u1) in (getl i c0 TMP_56))))))) in +(let TMP_60 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda +(_: T).(let TMP_58 \def (S i) in (let TMP_59 \def (minus i0 TMP_58) in +(csubst0 TMP_59 u0 e1 e2))))))) in (let TMP_61 \def (ex3_4 B C C T TMP_54 +TMP_57 TMP_60) in (let TMP_66 \def (\lambda (b: B).(\lambda (e1: C).(\lambda +(_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_62 \def (Bind Abbr) in (let +TMP_63 \def (CHead d TMP_62 u) in (let TMP_64 \def (Bind b) in (let TMP_65 +\def (CHead e1 TMP_64 u1) in (eq C TMP_63 TMP_65)))))))))) in (let TMP_69 +\def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: +T).(\lambda (w: T).(let TMP_67 \def (Bind b) in (let TMP_68 \def (CHead e2 +TMP_67 w) in (getl i c0 TMP_68)))))))) in (let TMP_72 \def (\lambda (_: +B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(let +TMP_70 \def (S i) in (let TMP_71 \def (minus i0 TMP_70) in (subst0 TMP_71 u0 +u1 w)))))))) in (let TMP_75 \def (\lambda (_: B).(\lambda (e1: C).(\lambda +(e2: C).(\lambda (_: T).(\lambda (_: T).(let TMP_73 \def (S i) in (let TMP_74 +\def (minus i0 TMP_73) in (csubst0 TMP_74 u0 e1 e2)))))))) in (let TMP_76 +\def (ex4_5 B C C T T TMP_66 TMP_69 TMP_72 TMP_75) in (let TMP_77 \def (pc3 +c0 t2 t0) in (let TMP_79 \def (\lambda (H8: (getl i c0 (CHead d (Bind Abbr) +u))).(let TMP_78 \def (pr2_delta c0 d u i H8 t2 t3 H1 t0 H2) in (pc3_pr2_r c0 +t2 t0 TMP_78))) in (let TMP_144 \def (\lambda (H8: (ex3_4 B C T T (\lambda +(b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind +Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: +C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) +(\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 +(minus i0 (S i)) u0 u1 w))))))).(let TMP_84 \def (\lambda (b: B).(\lambda +(e0: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_80 \def (Bind Abbr) in (let +TMP_81 \def (CHead d TMP_80 u) in (let TMP_82 \def (Bind b) in (let TMP_83 +\def (CHead e0 TMP_82 u1) in (eq C TMP_81 TMP_83))))))))) in (let TMP_87 \def +(\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(let TMP_85 +\def (Bind b) in (let TMP_86 \def (CHead e0 TMP_85 w) in (getl i c0 +TMP_86))))))) in (let TMP_90 \def (\lambda (_: B).(\lambda (_: C).(\lambda +(u1: T).(\lambda (w: T).(let TMP_88 \def (S i) in (let TMP_89 \def (minus i0 +TMP_88) in (subst0 TMP_89 u0 u1 w))))))) in (let TMP_91 \def (pc3 c0 t2 t0) +in (let TMP_143 \def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: +T).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 +(Bind x0) x2))).(\lambda (H10: (getl i c0 (CHead x1 (Bind x0) x3))).(\lambda +(H11: (subst0 (minus i0 (S i)) u0 x2 x3)).(let TMP_92 \def (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) +in (let TMP_93 \def (Bind Abbr) in (let TMP_94 \def (CHead d TMP_93 u) in +(let TMP_95 \def (Bind x0) in (let TMP_96 \def (CHead x1 TMP_95 x2) in (let +H12 \def (f_equal C C TMP_92 TMP_94 TMP_96 H9) in (let TMP_97 \def (\lambda +(e0: C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) +\Rightarrow (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow +Abbr])])) in (let TMP_98 \def (Bind Abbr) in (let TMP_99 \def (CHead d TMP_98 +u) in (let TMP_100 \def (Bind x0) in (let TMP_101 \def (CHead x1 TMP_100 x2) +in (let H13 \def (f_equal C B TMP_97 TMP_99 TMP_101 H9) in (let TMP_102 \def +(\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t5) +\Rightarrow t5])) in (let TMP_103 \def (Bind Abbr) in (let TMP_104 \def +(CHead d TMP_103 u) in (let TMP_105 \def (Bind x0) in (let TMP_106 \def +(CHead x1 TMP_105 x2) in (let H14 \def (f_equal C T TMP_102 TMP_104 TMP_106 +H9) in (let TMP_141 \def (\lambda (H15: (eq B Abbr x0)).(\lambda (H16: (eq C +d x1)).(let TMP_109 \def (\lambda (t5: T).(let TMP_107 \def (S i) in (let +TMP_108 \def (minus i0 TMP_107) in (subst0 TMP_108 u0 t5 x3)))) in (let H17 +\def (eq_ind_r T x2 TMP_109 H11 u H14) in (let TMP_112 \def (\lambda (c3: +C).(let TMP_110 \def (Bind x0) in (let TMP_111 \def (CHead c3 TMP_110 x3) in +(getl i c0 TMP_111)))) in (let H18 \def (eq_ind_r C x1 TMP_112 H10 d H16) in +(let TMP_115 \def (\lambda (b: B).(let TMP_113 \def (Bind b) in (let TMP_114 +\def (CHead d TMP_113 x3) in (getl i c0 TMP_114)))) in (let H19 \def +(eq_ind_r B x0 TMP_115 H18 Abbr H15) in (let TMP_116 \def (\lambda (t5: +T).(subst0 i x3 t3 t5)) in (let TMP_121 \def (\lambda (t5: T).(let TMP_117 +\def (S i) in (let TMP_118 \def (minus i0 TMP_117) in (let TMP_119 \def (plus +TMP_118 i) in (let TMP_120 \def (S TMP_119) in (subst0 TMP_120 u0 t0 t5)))))) +in (let TMP_122 \def (pc3 c0 t2 t0) in (let TMP_137 \def (\lambda (x: +T).(\lambda (H20: (subst0 i x3 t3 x)).(\lambda (H21: (subst0 (S (plus (minus +i0 (S i)) i)) u0 t0 x)).(let TMP_123 \def (S i) in (let TMP_124 \def (minus +i0 TMP_123) in (let TMP_125 \def (plus TMP_124 i) in (let TMP_126 \def (S +TMP_125) in (let TMP_127 \def (\lambda (n: nat).(subst0 n u0 t0 x)) in (let +TMP_128 \def (lt_plus_minus_r i i0 H6) in (let H22 \def (eq_ind_r nat TMP_126 +TMP_127 H21 i0 TMP_128) in (let TMP_129 \def (pr2_delta c0 d x3 i H19 t2 t3 +H1 x H20) in (let TMP_130 \def (le_n i0) in (let TMP_131 \def (Bind Abbr) in +(let TMP_132 \def (CHead e TMP_131 u0) in (let TMP_133 \def (csubst0_getl_ge +i0 i0 TMP_130 c c0 u0 H4 TMP_132 H5) in (let TMP_134 \def (pr0_refl t0) in +(let TMP_135 \def (pr2_delta c0 e u0 i0 TMP_133 t0 t0 TMP_134 x H22) in (let +TMP_136 \def (pc3_pr2_x c0 x t0 TMP_135) in (pc3_pr2_u c0 x t2 TMP_129 t0 +TMP_136))))))))))))))))))) in (let TMP_138 \def (S i) in (let TMP_139 \def +(minus i0 TMP_138) in (let TMP_140 \def (subst0_subst0_back t3 t0 u i H2 x3 +u0 TMP_139 H17) in (ex2_ind T TMP_116 TMP_121 TMP_122 TMP_137 +TMP_140)))))))))))))))) in (let TMP_142 \def (TMP_141 H13) in (TMP_142 +H12)))))))))))))))))))))))))))) in (ex3_4_ind B C T T TMP_84 TMP_87 TMP_90 +TMP_91 TMP_143 H8))))))) in (let TMP_185 \def (\lambda (H8: (ex3_4 B C C T +(\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C +(CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda +(_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) +u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: +T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(let TMP_149 \def (\lambda (b: +B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(let TMP_145 \def (Bind +Abbr) in (let TMP_146 \def (CHead d TMP_145 u) in (let TMP_147 \def (Bind b) +in (let TMP_148 \def (CHead e1 TMP_147 u1) in (eq C TMP_146 TMP_148))))))))) +in (let TMP_152 \def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: +C).(\lambda (u1: T).(let TMP_150 \def (Bind b) in (let TMP_151 \def (CHead e2 +TMP_150 u1) in (getl i c0 TMP_151))))))) in (let TMP_155 \def (\lambda (_: +B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(let TMP_153 \def (S i) +in (let TMP_154 \def (minus i0 TMP_153) in (csubst0 TMP_154 u0 e1 e2))))))) +in (let TMP_156 \def (pc3 c0 t2 t0) in (let TMP_184 \def (\lambda (x0: +B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H9: (eq C +(CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3))).(\lambda (H10: (getl i c0 +(CHead x2 (Bind x0) x3))).(\lambda (H11: (csubst0 (minus i0 (S i)) u0 x1 +x2)).(let TMP_157 \def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow +d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_158 \def (Bind Abbr) in (let +TMP_159 \def (CHead d TMP_158 u) in (let TMP_160 \def (Bind x0) in (let +TMP_161 \def (CHead x1 TMP_160 x3) in (let H12 \def (f_equal C C TMP_157 +TMP_159 TMP_161 H9) in (let TMP_162 \def (\lambda (e0: C).(match e0 with +[(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k with [(Bind +b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in (let TMP_163 \def (Bind +Abbr) in (let TMP_164 \def (CHead d TMP_163 u) in (let TMP_165 \def (Bind x0) +in (let TMP_166 \def (CHead x1 TMP_165 x3) in (let H13 \def (f_equal C B +TMP_162 TMP_164 TMP_166 H9) in (let TMP_167 \def (\lambda (e0: C).(match e0 +with [(CSort _) \Rightarrow u | (CHead _ _ t5) \Rightarrow t5])) in (let +TMP_168 \def (Bind Abbr) in (let TMP_169 \def (CHead d TMP_168 u) in (let +TMP_170 \def (Bind x0) in (let TMP_171 \def (CHead x1 TMP_170 x3) in (let H14 +\def (f_equal C T TMP_167 TMP_169 TMP_171 H9) in (let TMP_182 \def (\lambda +(H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let TMP_174 \def (\lambda +(t5: T).(let TMP_172 \def (Bind x0) in (let TMP_173 \def (CHead x2 TMP_172 +t5) in (getl i c0 TMP_173)))) in (let H17 \def (eq_ind_r T x3 TMP_174 H10 u +H14) in (let TMP_177 \def (\lambda (c3: C).(let TMP_175 \def (S i) in (let +TMP_176 \def (minus i0 TMP_175) in (csubst0 TMP_176 u0 c3 x2)))) in (let H18 +\def (eq_ind_r C x1 TMP_177 H11 d H16) in (let TMP_180 \def (\lambda (b: +B).(let TMP_178 \def (Bind b) in (let TMP_179 \def (CHead x2 TMP_178 u) in +(getl i c0 TMP_179)))) in (let H19 \def (eq_ind_r B x0 TMP_180 H17 Abbr H15) +in (let TMP_181 \def (pr2_delta c0 x2 u i H19 t2 t3 H1 t0 H2) in (pc3_pr2_r +c0 t2 t0 TMP_181)))))))))) in (let TMP_183 \def (TMP_182 H13) in (TMP_183 +H12)))))))))))))))))))))))))))) in (ex3_4_ind B C C T TMP_149 TMP_152 TMP_155 +TMP_156 TMP_184 H8))))))) in (let TMP_253 \def (\lambda (H8: (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda -(_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))) (pc3 c0 t2 t0) (\lambda (H8: -(getl i c0 (CHead d (Bind Abbr) u))).(pc3_pr2_r c0 t2 t0 (pr2_delta c0 d u i -H8 t2 t3 H1 t0 H2))) (\lambda (H8: (ex3_4 B C T T (\lambda (b: B).(\lambda -(e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead -e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: -T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) -u0 u1 w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda -(u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) -u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: -T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: -C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w))))) -(pc3 c0 t2 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: T).(\lambda -(x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x2))).(\lambda (H10: (getl i c0 (CHead x1 (Bind x0) x3))).(\lambda (H11: -(subst0 (minus i0 (S i)) u0 x2 x3)).(let H12 \def (f_equal C C (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | -(CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x2) H9) in ((let H13 \def (f_equal C B (\lambda (e0: C).(match e0 in C return -(\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b) -\Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x2) H9) in ((let H14 \def (f_equal C T (\lambda (e0: C).(match -e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ -t5) \Rightarrow t5])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H9) in -(\lambda (H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let H17 \def -(eq_ind_r T x2 (\lambda (t5: T).(subst0 (minus i0 (S i)) u0 t5 x3)) H11 u -H14) in (let H18 \def (eq_ind_r C x1 (\lambda (c3: C).(getl i c0 (CHead c3 -(Bind x0) x3))) H10 d H16) in (let H19 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead d (Bind b) x3))) H18 Abbr H15) in (ex2_ind T (\lambda -(t5: T).(subst0 i x3 t3 t5)) (\lambda (t5: T).(subst0 (S (plus (minus i0 (S -i)) i)) u0 t0 t5)) (pc3 c0 t2 t0) (\lambda (x: T).(\lambda (H20: (subst0 i x3 -t3 x)).(\lambda (H21: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let -H22 \def (eq_ind_r nat (S (plus (minus i0 (S i)) i)) (\lambda (n: -nat).(subst0 n u0 t0 x)) H21 i0 (lt_plus_minus_r i i0 H6)) in (pc3_pr2_u c0 x -t2 (pr2_delta c0 d x3 i H19 t2 t3 H1 x H20) t0 (pc3_pr2_x c0 x t0 (pr2_delta -c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H4 (CHead e (Bind Abbr) -u0) H5) t0 t0 (pr0_refl t0) x H22))))))) (subst0_subst0_back t3 t0 u i H2 x3 -u0 (minus i0 (S i)) H17)))))))) H13)) H12))))))))) H8)) (\lambda (H8: (ex3_4 -B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq -C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: -B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 -(Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda -(_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(ex3_4_ind B C C T (\lambda -(b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind -Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda -(e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) u1)))))) (\lambda (_: -B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S -i)) u0 e1 e2))))) (pc3 c0 t2 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda -(x2: C).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3))).(\lambda (H10: (getl i c0 (CHead x2 (Bind x0) -x3))).(\lambda (H11: (csubst0 (minus i0 (S i)) u0 x1 x2)).(let H12 \def -(f_equal C C (\lambda (e0: C).(match e0 in C return (\lambda (_: C).C) with -[(CSort _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind -Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H13 \def (f_equal C B (\lambda -(e0: C).(match e0 in C return (\lambda (_: C).B) with [(CSort _) \Rightarrow -Abbr | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).B) with -[(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) -u) (CHead x1 (Bind x0) x3) H9) in ((let H14 \def (f_equal C T (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | -(CHead _ _ t5) \Rightarrow t5])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x3) H9) in (\lambda (H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let -H17 \def (eq_ind_r T x3 (\lambda (t5: T).(getl i c0 (CHead x2 (Bind x0) t5))) -H10 u H14) in (let H18 \def (eq_ind_r C x1 (\lambda (c3: C).(csubst0 (minus -i0 (S i)) u0 c3 x2)) H11 d H16) in (let H19 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead x2 (Bind b) u))) H17 Abbr H15) in (pc3_pr2_r c0 t2 t0 -(pr2_delta c0 x2 u i H19 t2 t3 H1 t0 H2)))))))) H13)) H12))))))))) H8)) -(\lambda (H8: (ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: -C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 -(Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda -(_: T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 -e2)))))))).(ex4_5_ind B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: -C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 -(Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda -(_: T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) -(pc3 c0 t2 t0) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda -(x3: T).(\lambda (x4: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3))).(\lambda (H10: (getl i c0 (CHead x2 (Bind x0) -x4))).(\lambda (H11: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H12: -(csubst0 (minus i0 (S i)) u0 x1 x2)).(let H13 \def (f_equal C C (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | -(CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x3) H9) in ((let H14 \def (f_equal C B (\lambda (e0: C).(match e0 in C return -(\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b) -\Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3) H9) in ((let H15 \def (f_equal C T (\lambda (e0: C).(match -e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ -t5) \Rightarrow t5])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in -(\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let H18 \def -(eq_ind_r T x3 (\lambda (t5: T).(subst0 (minus i0 (S i)) u0 t5 x4)) H11 u -H15) in (let H19 \def (eq_ind_r C x1 (\lambda (c3: C).(csubst0 (minus i0 (S -i)) u0 c3 x2)) H12 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead x2 (Bind b) x4))) H10 Abbr H16) in (ex2_ind T (\lambda -(t5: T).(subst0 i x4 t3 t5)) (\lambda (t5: T).(subst0 (S (plus (minus i0 (S -i)) i)) u0 t0 t5)) (pc3 c0 t2 t0) (\lambda (x: T).(\lambda (H21: (subst0 i x4 -t3 x)).(\lambda (H22: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let -H23 \def (eq_ind_r nat (S (plus (minus i0 (S i)) i)) (\lambda (n: -nat).(subst0 n u0 t0 x)) H22 i0 (lt_plus_minus_r i i0 H6)) in (pc3_pr2_u c0 x -t2 (pr2_delta c0 x2 x4 i H20 t2 t3 H1 x H21) t0 (pc3_pr2_x c0 x t0 (pr2_delta -c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H4 (CHead e (Bind Abbr) -u0) H5) t0 t0 (pr0_refl t0) x H23))))))) (subst0_subst0_back t3 t0 u i H2 x4 -u0 (minus i0 (S i)) H18)))))))) H14)) H13))))))))))) H8)) H7))) (\lambda (H6: -(le i0 i)).(pc3_pr2_r c0 t2 t0 (pr2_delta c0 d u i (csubst0_getl_ge i0 i H6 c -c0 u0 H4 (CHead d (Bind Abbr) u) H0) t2 t3 H1 t0 H2)))))))) (\lambda (t5: -T).(\lambda (H4: (subst0 i0 u0 t0 t5)).(\lambda (c0: C).(\lambda (H5: -(csubst0 i0 u0 c c0)).(\lambda (e: C).(\lambda (H6: (getl i0 c (CHead e (Bind -Abbr) u0))).(lt_le_e i i0 (pc3 c0 t2 t5) (\lambda (H7: (lt i i0)).(let H8 -\def (csubst0_getl_lt i0 i H7 c c0 u0 H5 (CHead d (Bind Abbr) u) H0) in -(or4_ind (getl i c0 (CHead d (Bind Abbr) u)) (ex3_4 B C T T (\lambda (b: -B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind -Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: -C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) -(\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: -C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 -(Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda -(u1: T).(getl i c0 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: -C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) -(ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda -(u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) -u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: -T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))) -(pc3 c0 t2 t5) (\lambda (H9: (getl i c0 (CHead d (Bind Abbr) u))).(pc3_pr2_u -c0 t3 t2 (pr2_free c0 t2 t3 H1) t5 (pc3_pr3_r c0 t3 t5 (pr3_sing c0 t0 t3 -(pr2_delta c0 d u i H9 t3 t3 (pr0_refl t3) t0 H2) t5 (pr3_pr2 c0 t0 t5 -(pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e -(Bind Abbr) u0) H6) t0 t0 (pr0_refl t0) t5 H4)))))) (\lambda (H9: (ex3_4 B C -T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C +(_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))))).(let TMP_190 \def (\lambda +(b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let +TMP_186 \def (Bind Abbr) in (let TMP_187 \def (CHead d TMP_186 u) in (let +TMP_188 \def (Bind b) in (let TMP_189 \def (CHead e1 TMP_188 u1) in (eq C +TMP_187 TMP_189)))))))))) in (let TMP_193 \def (\lambda (b: B).(\lambda (_: +C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(let TMP_191 \def (Bind +b) in (let TMP_192 \def (CHead e2 TMP_191 w) in (getl i c0 TMP_192)))))))) in +(let TMP_196 \def (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda +(u1: T).(\lambda (w: T).(let TMP_194 \def (S i) in (let TMP_195 \def (minus +i0 TMP_194) in (subst0 TMP_195 u0 u1 w)))))))) in (let TMP_199 \def (\lambda +(_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let +TMP_197 \def (S i) in (let TMP_198 \def (minus i0 TMP_197) in (csubst0 +TMP_198 u0 e1 e2)))))))) in (let TMP_200 \def (pc3 c0 t2 t0) in (let TMP_252 +\def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: +T).(\lambda (x4: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 +(Bind x0) x3))).(\lambda (H10: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda +(H11: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H12: (csubst0 (minus i0 +(S i)) u0 x1 x2)).(let TMP_201 \def (\lambda (e0: C).(match e0 with [(CSort +_) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_202 \def +(Bind Abbr) in (let TMP_203 \def (CHead d TMP_202 u) in (let TMP_204 \def +(Bind x0) in (let TMP_205 \def (CHead x1 TMP_204 x3) in (let H13 \def +(f_equal C C TMP_201 TMP_203 TMP_205 H9) in (let TMP_206 \def (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow +(match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in +(let TMP_207 \def (Bind Abbr) in (let TMP_208 \def (CHead d TMP_207 u) in +(let TMP_209 \def (Bind x0) in (let TMP_210 \def (CHead x1 TMP_209 x3) in +(let H14 \def (f_equal C B TMP_206 TMP_208 TMP_210 H9) in (let TMP_211 \def +(\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t5) +\Rightarrow t5])) in (let TMP_212 \def (Bind Abbr) in (let TMP_213 \def +(CHead d TMP_212 u) in (let TMP_214 \def (Bind x0) in (let TMP_215 \def +(CHead x1 TMP_214 x3) in (let H15 \def (f_equal C T TMP_211 TMP_213 TMP_215 +H9) in (let TMP_250 \def (\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C +d x1)).(let TMP_218 \def (\lambda (t5: T).(let TMP_216 \def (S i) in (let +TMP_217 \def (minus i0 TMP_216) in (subst0 TMP_217 u0 t5 x4)))) in (let H18 +\def (eq_ind_r T x3 TMP_218 H11 u H15) in (let TMP_221 \def (\lambda (c3: +C).(let TMP_219 \def (S i) in (let TMP_220 \def (minus i0 TMP_219) in +(csubst0 TMP_220 u0 c3 x2)))) in (let H19 \def (eq_ind_r C x1 TMP_221 H12 d +H17) in (let TMP_224 \def (\lambda (b: B).(let TMP_222 \def (Bind b) in (let +TMP_223 \def (CHead x2 TMP_222 x4) in (getl i c0 TMP_223)))) in (let H20 \def +(eq_ind_r B x0 TMP_224 H10 Abbr H16) in (let TMP_225 \def (\lambda (t5: +T).(subst0 i x4 t3 t5)) in (let TMP_230 \def (\lambda (t5: T).(let TMP_226 +\def (S i) in (let TMP_227 \def (minus i0 TMP_226) in (let TMP_228 \def (plus +TMP_227 i) in (let TMP_229 \def (S TMP_228) in (subst0 TMP_229 u0 t0 t5)))))) +in (let TMP_231 \def (pc3 c0 t2 t0) in (let TMP_246 \def (\lambda (x: +T).(\lambda (H21: (subst0 i x4 t3 x)).(\lambda (H22: (subst0 (S (plus (minus +i0 (S i)) i)) u0 t0 x)).(let TMP_232 \def (S i) in (let TMP_233 \def (minus +i0 TMP_232) in (let TMP_234 \def (plus TMP_233 i) in (let TMP_235 \def (S +TMP_234) in (let TMP_236 \def (\lambda (n: nat).(subst0 n u0 t0 x)) in (let +TMP_237 \def (lt_plus_minus_r i i0 H6) in (let H23 \def (eq_ind_r nat TMP_235 +TMP_236 H22 i0 TMP_237) in (let TMP_238 \def (pr2_delta c0 x2 x4 i H20 t2 t3 +H1 x H21) in (let TMP_239 \def (le_n i0) in (let TMP_240 \def (Bind Abbr) in +(let TMP_241 \def (CHead e TMP_240 u0) in (let TMP_242 \def (csubst0_getl_ge +i0 i0 TMP_239 c c0 u0 H4 TMP_241 H5) in (let TMP_243 \def (pr0_refl t0) in +(let TMP_244 \def (pr2_delta c0 e u0 i0 TMP_242 t0 t0 TMP_243 x H23) in (let +TMP_245 \def (pc3_pr2_x c0 x t0 TMP_244) in (pc3_pr2_u c0 x t2 TMP_238 t0 +TMP_245))))))))))))))))))) in (let TMP_247 \def (S i) in (let TMP_248 \def +(minus i0 TMP_247) in (let TMP_249 \def (subst0_subst0_back t3 t0 u i H2 x4 +u0 TMP_248 H18) in (ex2_ind T TMP_225 TMP_230 TMP_231 TMP_246 +TMP_249)))))))))))))))) in (let TMP_251 \def (TMP_250 H14) in (TMP_251 +H13)))))))))))))))))))))))))))))) in (ex4_5_ind B C C T T TMP_190 TMP_193 +TMP_196 TMP_199 TMP_200 TMP_252 H8)))))))) in (or4_ind TMP_37 TMP_49 TMP_61 +TMP_76 TMP_77 TMP_79 TMP_144 TMP_185 TMP_253 H7)))))))))))))))))))))))))) in +(let TMP_259 \def (\lambda (H6: (le i0 i)).(let TMP_255 \def (Bind Abbr) in +(let TMP_256 \def (CHead d TMP_255 u) in (let TMP_257 \def (csubst0_getl_ge +i0 i H6 c c0 u0 H4 TMP_256 H0) in (let TMP_258 \def (pr2_delta c0 d u i +TMP_257 t2 t3 H1 t0 H2) in (pc3_pr2_r c0 t2 t0 TMP_258)))))) in (lt_le_e i i0 +TMP_32 TMP_254 TMP_259)))))))) in (let TMP_528 \def (\lambda (t5: T).(\lambda +(H4: (subst0 i0 u0 t0 t5)).(\lambda (c0: C).(\lambda (H5: (csubst0 i0 u0 c +c0)).(\lambda (e: C).(\lambda (H6: (getl i0 c (CHead e (Bind Abbr) u0))).(let +TMP_261 \def (pc3 c0 t2 t5) in (let TMP_515 \def (\lambda (H7: (lt i +i0)).(let TMP_262 \def (Bind Abbr) in (let TMP_263 \def (CHead d TMP_262 u) +in (let H8 \def (csubst0_getl_lt i0 i H7 c c0 u0 H5 TMP_263 H0) in (let +TMP_264 \def (Bind Abbr) in (let TMP_265 \def (CHead d TMP_264 u) in (let +TMP_266 \def (getl i c0 TMP_265) in (let TMP_271 \def (\lambda (b: +B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_267 \def (Bind +Abbr) in (let TMP_268 \def (CHead d TMP_267 u) in (let TMP_269 \def (Bind b) +in (let TMP_270 \def (CHead e0 TMP_269 u1) in (eq C TMP_268 TMP_270))))))))) +in (let TMP_274 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (_: +T).(\lambda (w: T).(let TMP_272 \def (Bind b) in (let TMP_273 \def (CHead e0 +TMP_272 w) in (getl i c0 TMP_273))))))) in (let TMP_277 \def (\lambda (_: +B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(let TMP_275 \def (S i) +in (let TMP_276 \def (minus i0 TMP_275) in (subst0 TMP_276 u0 u1 w))))))) in +(let TMP_278 \def (ex3_4 B C T T TMP_271 TMP_274 TMP_277) in (let TMP_283 +\def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(let +TMP_279 \def (Bind Abbr) in (let TMP_280 \def (CHead d TMP_279 u) in (let +TMP_281 \def (Bind b) in (let TMP_282 \def (CHead e1 TMP_281 u1) in (eq C +TMP_280 TMP_282))))))))) in (let TMP_286 \def (\lambda (b: B).(\lambda (_: +C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_284 \def (Bind b) in (let +TMP_285 \def (CHead e2 TMP_284 u1) in (getl i c0 TMP_285))))))) in (let +TMP_289 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: +T).(let TMP_287 \def (S i) in (let TMP_288 \def (minus i0 TMP_287) in +(csubst0 TMP_288 u0 e1 e2))))))) in (let TMP_290 \def (ex3_4 B C C T TMP_283 +TMP_286 TMP_289) in (let TMP_295 \def (\lambda (b: B).(\lambda (e1: +C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_291 \def (Bind +Abbr) in (let TMP_292 \def (CHead d TMP_291 u) in (let TMP_293 \def (Bind b) +in (let TMP_294 \def (CHead e1 TMP_293 u1) in (eq C TMP_292 TMP_294)))))))))) +in (let TMP_298 \def (\lambda (b: B).(\lambda (_: C).(\lambda (e2: +C).(\lambda (_: T).(\lambda (w: T).(let TMP_296 \def (Bind b) in (let TMP_297 +\def (CHead e2 TMP_296 w) in (getl i c0 TMP_297)))))))) in (let TMP_301 \def +(\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: +T).(let TMP_299 \def (S i) in (let TMP_300 \def (minus i0 TMP_299) in (subst0 +TMP_300 u0 u1 w)))))))) in (let TMP_304 \def (\lambda (_: B).(\lambda (e1: +C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let TMP_302 \def (S i) +in (let TMP_303 \def (minus i0 TMP_302) in (csubst0 TMP_303 u0 e1 e2)))))))) +in (let TMP_305 \def (ex4_5 B C C T T TMP_295 TMP_298 TMP_301 TMP_304) in +(let TMP_306 \def (pc3 c0 t2 t5) in (let TMP_319 \def (\lambda (H9: (getl i +c0 (CHead d (Bind Abbr) u))).(let TMP_307 \def (pr2_free c0 t2 t3 H1) in (let +TMP_308 \def (pr0_refl t3) in (let TMP_309 \def (pr2_delta c0 d u i H9 t3 t3 +TMP_308 t0 H2) in (let TMP_310 \def (le_n i0) in (let TMP_311 \def (Bind +Abbr) in (let TMP_312 \def (CHead e TMP_311 u0) in (let TMP_313 \def +(csubst0_getl_ge i0 i0 TMP_310 c c0 u0 H5 TMP_312 H6) in (let TMP_314 \def +(pr0_refl t0) in (let TMP_315 \def (pr2_delta c0 e u0 i0 TMP_313 t0 t0 +TMP_314 t5 H4) in (let TMP_316 \def (pr3_pr2 c0 t0 t5 TMP_315) in (let +TMP_317 \def (pr3_sing c0 t0 t3 TMP_309 t5 TMP_316) in (let TMP_318 \def +(pc3_pr3_r c0 t3 t5 TMP_317) in (pc3_pr2_u c0 t3 t2 TMP_307 t5 +TMP_318)))))))))))))) in (let TMP_391 \def (\lambda (H9: (ex3_4 B C T T +(\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda -(e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead -e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: -T).(\lambda (w: T).(getl i c0 (CHead e0 (Bind b) w)))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) -u0 u1 w))))) (pc3 c0 t2 t5) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: -T).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 -(Bind x0) x2))).(\lambda (H11: (getl i c0 (CHead x1 (Bind x0) x3))).(\lambda -(H12: (subst0 (minus i0 (S i)) u0 x2 x3)).(let H13 \def (f_equal C C (\lambda -(e0: C).(match e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow -d | (CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind Abbr) u) (CHead x1 (Bind -x0) x2) H10) in ((let H14 \def (f_equal C B (\lambda (e0: C).(match e0 in C -return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b) -\Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x2) H10) in ((let H15 \def (f_equal C T (\lambda (e0: C).(match -e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ -t6) \Rightarrow t6])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H10) in -(\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let H18 \def -(eq_ind_r T x2 (\lambda (t6: T).(subst0 (minus i0 (S i)) u0 t6 x3)) H12 u -H15) in (let H19 \def (eq_ind_r C x1 (\lambda (c3: C).(getl i c0 (CHead c3 -(Bind x0) x3))) H11 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead d (Bind b) x3))) H19 Abbr H16) in (ex2_ind T (\lambda -(t6: T).(subst0 i x3 t3 t6)) (\lambda (t6: T).(subst0 (S (plus (minus i0 (S -i)) i)) u0 t0 t6)) (pc3 c0 t2 t5) (\lambda (x: T).(\lambda (H21: (subst0 i x3 -t3 x)).(\lambda (H22: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let -H23 \def (eq_ind_r nat (S (plus (minus i0 (S i)) i)) (\lambda (n: -nat).(subst0 n u0 t0 x)) H22 i0 (lt_plus_minus_r i i0 H7)) in (pc3_pr2_u c0 x -t2 (pr2_delta c0 d x3 i H20 t2 t3 H1 x H21) t5 (pc3_pr2_u2 c0 t0 x (pr2_delta -c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) -u0) H6) t0 t0 (pr0_refl t0) x H23) t5 (pc3_pr2_r c0 t0 t5 (pr2_delta c0 e u0 -i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) H6) -t0 t0 (pr0_refl t0) t5 H4)))))))) (subst0_subst0_back t3 t0 u i H2 x3 u0 -(minus i0 (S i)) H18)))))))) H14)) H13))))))))) H9)) (\lambda (H9: (ex3_4 B C -C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C -(CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda -(_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) -u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: -T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(ex3_4_ind B C C T (\lambda (b: -B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind -Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda -(e2: C).(\lambda (u1: T).(getl i c0 (CHead e2 (Bind b) u1)))))) (\lambda (_: -B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i0 (S -i)) u0 e1 e2))))) (pc3 c0 t2 t5) (\lambda (x0: B).(\lambda (x1: C).(\lambda -(x2: C).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) -x3))).(\lambda (H12: (csubst0 (minus i0 (S i)) u0 x1 x2)).(let H13 \def -(f_equal C C (\lambda (e0: C).(match e0 in C return (\lambda (_: C).C) with -[(CSort _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind -Abbr) u) (CHead x1 (Bind x0) x3) H10) in ((let H14 \def (f_equal C B (\lambda -(e0: C).(match e0 in C return (\lambda (_: C).B) with [(CSort _) \Rightarrow -Abbr | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).B) with -[(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) -u) (CHead x1 (Bind x0) x3) H10) in ((let H15 \def (f_equal C T (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | -(CHead _ _ t6) \Rightarrow t6])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x3) H10) in (\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let -H18 \def (eq_ind_r T x3 (\lambda (t6: T).(getl i c0 (CHead x2 (Bind x0) t6))) -H11 u H15) in (let H19 \def (eq_ind_r C x1 (\lambda (c3: C).(csubst0 (minus -i0 (S i)) u0 c3 x2)) H12 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead x2 (Bind b) u))) H18 Abbr H16) in (pc3_pr2_u c0 t0 t2 -(pr2_delta c0 x2 u i H20 t2 t3 H1 t0 H2) t5 (pc3_pr2_r c0 t0 t5 (pr2_delta c0 -e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) -H6) t0 t0 (pr0_refl t0) t5 H4))))))))) H14)) H13))))))))) H9)) (\lambda (H9: -(ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda -(u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) -u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: -T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 -e2)))))))).(ex4_5_ind B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: -C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 -(Bind b) u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda -(_: T).(\lambda (w: T).(getl i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: -B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 -(minus i0 (S i)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))) -(pc3 c0 t2 t5) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda -(x3: T).(\lambda (x4: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) -x4))).(\lambda (H12: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H13: -(csubst0 (minus i0 (S i)) u0 x1 x2)).(let H14 \def (f_equal C C (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | -(CHead c3 _ _) \Rightarrow c3])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) -x3) H10) in ((let H15 \def (f_equal C B (\lambda (e0: C).(match e0 in C -return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b) -\Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x3) H10) in ((let H16 \def (f_equal C T (\lambda (e0: C).(match -e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ -t6) \Rightarrow t6])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H10) in -(\lambda (H17: (eq B Abbr x0)).(\lambda (H18: (eq C d x1)).(let H19 \def -(eq_ind_r T x3 (\lambda (t6: T).(subst0 (minus i0 (S i)) u0 t6 x4)) H12 u -H16) in (let H20 \def (eq_ind_r C x1 (\lambda (c3: C).(csubst0 (minus i0 (S -i)) u0 c3 x2)) H13 d H18) in (let H21 \def (eq_ind_r B x0 (\lambda (b: -B).(getl i c0 (CHead x2 (Bind b) x4))) H11 Abbr H17) in (ex2_ind T (\lambda -(t6: T).(subst0 i x4 t3 t6)) (\lambda (t6: T).(subst0 (S (plus (minus i0 (S -i)) i)) u0 t0 t6)) (pc3 c0 t2 t5) (\lambda (x: T).(\lambda (H22: (subst0 i x4 -t3 x)).(\lambda (H23: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let -H24 \def (eq_ind_r nat (S (plus (minus i0 (S i)) i)) (\lambda (n: -nat).(subst0 n u0 t0 x)) H23 i0 (lt_plus_minus_r i i0 H7)) in (pc3_pr2_u c0 x -t2 (pr2_delta c0 x2 x4 i H21 t2 t3 H1 x H22) t5 (pc3_pr2_u2 c0 t0 x -(pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e -(Bind Abbr) u0) H6) t0 t0 (pr0_refl t0) x H24) t5 (pc3_pr2_r c0 t0 t5 -(pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n i0) c c0 u0 H5 (CHead e -(Bind Abbr) u0) H6) t0 t0 (pr0_refl t0) t5 H4)))))))) (subst0_subst0_back t3 -t0 u i H2 x4 u0 (minus i0 (S i)) H19)))))))) H15)) H14))))))))))) H9)) H8))) -(\lambda (H7: (le i0 i)).(pc3_pr2_u c0 t0 t2 (pr2_delta c0 d u i -(csubst0_getl_ge i0 i H7 c c0 u0 H5 (CHead d (Bind Abbr) u) H0) t2 t3 H1 t0 -H2) t5 (pc3_pr2_r c0 t0 t5 (pr2_delta c0 e u0 i0 (csubst0_getl_ge i0 i0 (le_n -i0) c c0 u0 H5 (CHead e (Bind Abbr) u0) H6) t0 t0 (pr0_refl t0) t5 -H4))))))))))) c2 t4 H3)))))))))))))))) c1 t t1 H)))). -(* COMMENTS -Initial nodes: 6191 -END *) +(minus i0 (S i)) u0 u1 w))))))).(let TMP_324 \def (\lambda (b: B).(\lambda +(e0: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_320 \def (Bind Abbr) in +(let TMP_321 \def (CHead d TMP_320 u) in (let TMP_322 \def (Bind b) in (let +TMP_323 \def (CHead e0 TMP_322 u1) in (eq C TMP_321 TMP_323))))))))) in (let +TMP_327 \def (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: +T).(let TMP_325 \def (Bind b) in (let TMP_326 \def (CHead e0 TMP_325 w) in +(getl i c0 TMP_326))))))) in (let TMP_330 \def (\lambda (_: B).(\lambda (_: +C).(\lambda (u1: T).(\lambda (w: T).(let TMP_328 \def (S i) in (let TMP_329 +\def (minus i0 TMP_328) in (subst0 TMP_329 u0 u1 w))))))) in (let TMP_331 +\def (pc3 c0 t2 t5) in (let TMP_390 \def (\lambda (x0: B).(\lambda (x1: +C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H10: (eq C (CHead d (Bind +Abbr) u) (CHead x1 (Bind x0) x2))).(\lambda (H11: (getl i c0 (CHead x1 (Bind +x0) x3))).(\lambda (H12: (subst0 (minus i0 (S i)) u0 x2 x3)).(let TMP_332 +\def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ +_) \Rightarrow c3])) in (let TMP_333 \def (Bind Abbr) in (let TMP_334 \def +(CHead d TMP_333 u) in (let TMP_335 \def (Bind x0) in (let TMP_336 \def +(CHead x1 TMP_335 x2) in (let H13 \def (f_equal C C TMP_332 TMP_334 TMP_336 +H10) in (let TMP_337 \def (\lambda (e0: C).(match e0 with [(CSort _) +\Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k with [(Bind b) +\Rightarrow b | (Flat _) \Rightarrow Abbr])])) in (let TMP_338 \def (Bind +Abbr) in (let TMP_339 \def (CHead d TMP_338 u) in (let TMP_340 \def (Bind x0) +in (let TMP_341 \def (CHead x1 TMP_340 x2) in (let H14 \def (f_equal C B +TMP_337 TMP_339 TMP_341 H10) in (let TMP_342 \def (\lambda (e0: C).(match e0 +with [(CSort _) \Rightarrow u | (CHead _ _ t6) \Rightarrow t6])) in (let +TMP_343 \def (Bind Abbr) in (let TMP_344 \def (CHead d TMP_343 u) in (let +TMP_345 \def (Bind x0) in (let TMP_346 \def (CHead x1 TMP_345 x2) in (let H15 +\def (f_equal C T TMP_342 TMP_344 TMP_346 H10) in (let TMP_388 \def (\lambda +(H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let TMP_349 \def (\lambda +(t6: T).(let TMP_347 \def (S i) in (let TMP_348 \def (minus i0 TMP_347) in +(subst0 TMP_348 u0 t6 x3)))) in (let H18 \def (eq_ind_r T x2 TMP_349 H12 u +H15) in (let TMP_352 \def (\lambda (c3: C).(let TMP_350 \def (Bind x0) in +(let TMP_351 \def (CHead c3 TMP_350 x3) in (getl i c0 TMP_351)))) in (let H19 +\def (eq_ind_r C x1 TMP_352 H11 d H17) in (let TMP_355 \def (\lambda (b: +B).(let TMP_353 \def (Bind b) in (let TMP_354 \def (CHead d TMP_353 x3) in +(getl i c0 TMP_354)))) in (let H20 \def (eq_ind_r B x0 TMP_355 H19 Abbr H16) +in (let TMP_356 \def (\lambda (t6: T).(subst0 i x3 t3 t6)) in (let TMP_361 +\def (\lambda (t6: T).(let TMP_357 \def (S i) in (let TMP_358 \def (minus i0 +TMP_357) in (let TMP_359 \def (plus TMP_358 i) in (let TMP_360 \def (S +TMP_359) in (subst0 TMP_360 u0 t0 t6)))))) in (let TMP_362 \def (pc3 c0 t2 +t5) in (let TMP_384 \def (\lambda (x: T).(\lambda (H21: (subst0 i x3 t3 +x)).(\lambda (H22: (subst0 (S (plus (minus i0 (S i)) i)) u0 t0 x)).(let +TMP_363 \def (S i) in (let TMP_364 \def (minus i0 TMP_363) in (let TMP_365 +\def (plus TMP_364 i) in (let TMP_366 \def (S TMP_365) in (let TMP_367 \def +(\lambda (n: nat).(subst0 n u0 t0 x)) in (let TMP_368 \def (lt_plus_minus_r i +i0 H7) in (let H23 \def (eq_ind_r nat TMP_366 TMP_367 H22 i0 TMP_368) in (let +TMP_369 \def (pr2_delta c0 d x3 i H20 t2 t3 H1 x H21) in (let TMP_370 \def +(le_n i0) in (let TMP_371 \def (Bind Abbr) in (let TMP_372 \def (CHead e +TMP_371 u0) in (let TMP_373 \def (csubst0_getl_ge i0 i0 TMP_370 c c0 u0 H5 +TMP_372 H6) in (let TMP_374 \def (pr0_refl t0) in (let TMP_375 \def +(pr2_delta c0 e u0 i0 TMP_373 t0 t0 TMP_374 x H23) in (let TMP_376 \def (le_n +i0) in (let TMP_377 \def (Bind Abbr) in (let TMP_378 \def (CHead e TMP_377 +u0) in (let TMP_379 \def (csubst0_getl_ge i0 i0 TMP_376 c c0 u0 H5 TMP_378 +H6) in (let TMP_380 \def (pr0_refl t0) in (let TMP_381 \def (pr2_delta c0 e +u0 i0 TMP_379 t0 t0 TMP_380 t5 H4) in (let TMP_382 \def (pc3_pr2_r c0 t0 t5 +TMP_381) in (let TMP_383 \def (pc3_pr2_u2 c0 t0 x TMP_375 t5 TMP_382) in +(pc3_pr2_u c0 x t2 TMP_369 t5 TMP_383)))))))))))))))))))))))))) in (let +TMP_385 \def (S i) in (let TMP_386 \def (minus i0 TMP_385) in (let TMP_387 +\def (subst0_subst0_back t3 t0 u i H2 x3 u0 TMP_386 H18) in (ex2_ind T +TMP_356 TMP_361 TMP_362 TMP_384 TMP_387)))))))))))))))) in (let TMP_389 \def +(TMP_388 H14) in (TMP_389 H13)))))))))))))))))))))))))))) in (ex3_4_ind B C T +T TMP_324 TMP_327 TMP_330 TMP_331 TMP_390 H9))))))) in (let TMP_439 \def +(\lambda (H9: (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: +C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) +(\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl i c0 +(CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: +C).(\lambda (_: T).(csubst0 (minus i0 (S i)) u0 e1 e2))))))).(let TMP_396 +\def (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(let +TMP_392 \def (Bind Abbr) in (let TMP_393 \def (CHead d TMP_392 u) in (let +TMP_394 \def (Bind b) in (let TMP_395 \def (CHead e1 TMP_394 u1) in (eq C +TMP_393 TMP_395))))))))) in (let TMP_399 \def (\lambda (b: B).(\lambda (_: +C).(\lambda (e2: C).(\lambda (u1: T).(let TMP_397 \def (Bind b) in (let +TMP_398 \def (CHead e2 TMP_397 u1) in (getl i c0 TMP_398))))))) in (let +TMP_402 \def (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: +T).(let TMP_400 \def (S i) in (let TMP_401 \def (minus i0 TMP_400) in +(csubst0 TMP_401 u0 e1 e2))))))) in (let TMP_403 \def (pc3 c0 t2 t5) in (let +TMP_438 \def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: +T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) +x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) x3))).(\lambda (H12: +(csubst0 (minus i0 (S i)) u0 x1 x2)).(let TMP_404 \def (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) +in (let TMP_405 \def (Bind Abbr) in (let TMP_406 \def (CHead d TMP_405 u) in +(let TMP_407 \def (Bind x0) in (let TMP_408 \def (CHead x1 TMP_407 x3) in +(let H13 \def (f_equal C C TMP_404 TMP_406 TMP_408 H10) in (let TMP_409 \def +(\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) +\Rightarrow (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow +Abbr])])) in (let TMP_410 \def (Bind Abbr) in (let TMP_411 \def (CHead d +TMP_410 u) in (let TMP_412 \def (Bind x0) in (let TMP_413 \def (CHead x1 +TMP_412 x3) in (let H14 \def (f_equal C B TMP_409 TMP_411 TMP_413 H10) in +(let TMP_414 \def (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | +(CHead _ _ t6) \Rightarrow t6])) in (let TMP_415 \def (Bind Abbr) in (let +TMP_416 \def (CHead d TMP_415 u) in (let TMP_417 \def (Bind x0) in (let +TMP_418 \def (CHead x1 TMP_417 x3) in (let H15 \def (f_equal C T TMP_414 +TMP_416 TMP_418 H10) in (let TMP_436 \def (\lambda (H16: (eq B Abbr +x0)).(\lambda (H17: (eq C d x1)).(let TMP_421 \def (\lambda (t6: T).(let +TMP_419 \def (Bind x0) in (let TMP_420 \def (CHead x2 TMP_419 t6) in (getl i +c0 TMP_420)))) in (let H18 \def (eq_ind_r T x3 TMP_421 H11 u H15) in (let +TMP_424 \def (\lambda (c3: C).(let TMP_422 \def (S i) in (let TMP_423 \def +(minus i0 TMP_422) in (csubst0 TMP_423 u0 c3 x2)))) in (let H19 \def +(eq_ind_r C x1 TMP_424 H12 d H17) in (let TMP_427 \def (\lambda (b: B).(let +TMP_425 \def (Bind b) in (let TMP_426 \def (CHead x2 TMP_425 u) in (getl i c0 +TMP_426)))) in (let H20 \def (eq_ind_r B x0 TMP_427 H18 Abbr H16) in (let +TMP_428 \def (pr2_delta c0 x2 u i H20 t2 t3 H1 t0 H2) in (let TMP_429 \def +(le_n i0) in (let TMP_430 \def (Bind Abbr) in (let TMP_431 \def (CHead e +TMP_430 u0) in (let TMP_432 \def (csubst0_getl_ge i0 i0 TMP_429 c c0 u0 H5 +TMP_431 H6) in (let TMP_433 \def (pr0_refl t0) in (let TMP_434 \def +(pr2_delta c0 e u0 i0 TMP_432 t0 t0 TMP_433 t5 H4) in (let TMP_435 \def +(pc3_pr2_r c0 t0 t5 TMP_434) in (pc3_pr2_u c0 t0 t2 TMP_428 t5 +TMP_435))))))))))))))))) in (let TMP_437 \def (TMP_436 H14) in (TMP_437 +H13)))))))))))))))))))))))))))) in (ex3_4_ind B C C T TMP_396 TMP_399 TMP_402 +TMP_403 TMP_438 H9))))))) in (let TMP_514 \def (\lambda (H9: (ex4_5 B C C T T +(\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda +(_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda +(b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl +i c0 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: +C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i0 (S i)) u0 u1 w)))))) +(\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda +(_: T).(csubst0 (minus i0 (S i)) u0 e1 e2)))))))).(let TMP_444 \def (\lambda +(b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let +TMP_440 \def (Bind Abbr) in (let TMP_441 \def (CHead d TMP_440 u) in (let +TMP_442 \def (Bind b) in (let TMP_443 \def (CHead e1 TMP_442 u1) in (eq C +TMP_441 TMP_443)))))))))) in (let TMP_447 \def (\lambda (b: B).(\lambda (_: +C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(let TMP_445 \def (Bind +b) in (let TMP_446 \def (CHead e2 TMP_445 w) in (getl i c0 TMP_446)))))))) in +(let TMP_450 \def (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda +(u1: T).(\lambda (w: T).(let TMP_448 \def (S i) in (let TMP_449 \def (minus +i0 TMP_448) in (subst0 TMP_449 u0 u1 w)))))))) in (let TMP_453 \def (\lambda +(_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(let +TMP_451 \def (S i) in (let TMP_452 \def (minus i0 TMP_451) in (csubst0 +TMP_452 u0 e1 e2)))))))) in (let TMP_454 \def (pc3 c0 t2 t5) in (let TMP_513 +\def (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: +T).(\lambda (x4: T).(\lambda (H10: (eq C (CHead d (Bind Abbr) u) (CHead x1 +(Bind x0) x3))).(\lambda (H11: (getl i c0 (CHead x2 (Bind x0) x4))).(\lambda +(H12: (subst0 (minus i0 (S i)) u0 x3 x4)).(\lambda (H13: (csubst0 (minus i0 +(S i)) u0 x1 x2)).(let TMP_455 \def (\lambda (e0: C).(match e0 with [(CSort +_) \Rightarrow d | (CHead c3 _ _) \Rightarrow c3])) in (let TMP_456 \def +(Bind Abbr) in (let TMP_457 \def (CHead d TMP_456 u) in (let TMP_458 \def +(Bind x0) in (let TMP_459 \def (CHead x1 TMP_458 x3) in (let H14 \def +(f_equal C C TMP_455 TMP_457 TMP_459 H10) in (let TMP_460 \def (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow +(match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) in +(let TMP_461 \def (Bind Abbr) in (let TMP_462 \def (CHead d TMP_461 u) in +(let TMP_463 \def (Bind x0) in (let TMP_464 \def (CHead x1 TMP_463 x3) in +(let H15 \def (f_equal C B TMP_460 TMP_462 TMP_464 H10) in (let TMP_465 \def +(\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t6) +\Rightarrow t6])) in (let TMP_466 \def (Bind Abbr) in (let TMP_467 \def +(CHead d TMP_466 u) in (let TMP_468 \def (Bind x0) in (let TMP_469 \def +(CHead x1 TMP_468 x3) in (let H16 \def (f_equal C T TMP_465 TMP_467 TMP_469 +H10) in (let TMP_511 \def (\lambda (H17: (eq B Abbr x0)).(\lambda (H18: (eq C +d x1)).(let TMP_472 \def (\lambda (t6: T).(let TMP_470 \def (S i) in (let +TMP_471 \def (minus i0 TMP_470) in (subst0 TMP_471 u0 t6 x4)))) in (let H19 +\def (eq_ind_r T x3 TMP_472 H12 u H16) in (let TMP_475 \def (\lambda (c3: +C).(let TMP_473 \def (S i) in (let TMP_474 \def (minus i0 TMP_473) in +(csubst0 TMP_474 u0 c3 x2)))) in (let H20 \def (eq_ind_r C x1 TMP_475 H13 d +H18) in (let TMP_478 \def (\lambda (b: B).(let TMP_476 \def (Bind b) in (let +TMP_477 \def (CHead x2 TMP_476 x4) in (getl i c0 TMP_477)))) in (let H21 \def +(eq_ind_r B x0 TMP_478 H11 Abbr H17) in (let TMP_479 \def (\lambda (t6: +T).(subst0 i x4 t3 t6)) in (let TMP_484 \def (\lambda (t6: T).(let TMP_480 +\def (S i) in (let TMP_481 \def (minus i0 TMP_480) in (let TMP_482 \def (plus +TMP_481 i) in (let TMP_483 \def (S TMP_482) in (subst0 TMP_483 u0 t0 t6)))))) +in (let TMP_485 \def (pc3 c0 t2 t5) in (let TMP_507 \def (\lambda (x: +T).(\lambda (H22: (subst0 i x4 t3 x)).(\lambda (H23: (subst0 (S (plus (minus +i0 (S i)) i)) u0 t0 x)).(let TMP_486 \def (S i) in (let TMP_487 \def (minus +i0 TMP_486) in (let TMP_488 \def (plus TMP_487 i) in (let TMP_489 \def (S +TMP_488) in (let TMP_490 \def (\lambda (n: nat).(subst0 n u0 t0 x)) in (let +TMP_491 \def (lt_plus_minus_r i i0 H7) in (let H24 \def (eq_ind_r nat TMP_489 +TMP_490 H23 i0 TMP_491) in (let TMP_492 \def (pr2_delta c0 x2 x4 i H21 t2 t3 +H1 x H22) in (let TMP_493 \def (le_n i0) in (let TMP_494 \def (Bind Abbr) in +(let TMP_495 \def (CHead e TMP_494 u0) in (let TMP_496 \def (csubst0_getl_ge +i0 i0 TMP_493 c c0 u0 H5 TMP_495 H6) in (let TMP_497 \def (pr0_refl t0) in +(let TMP_498 \def (pr2_delta c0 e u0 i0 TMP_496 t0 t0 TMP_497 x H24) in (let +TMP_499 \def (le_n i0) in (let TMP_500 \def (Bind Abbr) in (let TMP_501 \def +(CHead e TMP_500 u0) in (let TMP_502 \def (csubst0_getl_ge i0 i0 TMP_499 c c0 +u0 H5 TMP_501 H6) in (let TMP_503 \def (pr0_refl t0) in (let TMP_504 \def +(pr2_delta c0 e u0 i0 TMP_502 t0 t0 TMP_503 t5 H4) in (let TMP_505 \def +(pc3_pr2_r c0 t0 t5 TMP_504) in (let TMP_506 \def (pc3_pr2_u2 c0 t0 x TMP_498 +t5 TMP_505) in (pc3_pr2_u c0 x t2 TMP_492 t5 +TMP_506)))))))))))))))))))))))))) in (let TMP_508 \def (S i) in (let TMP_509 +\def (minus i0 TMP_508) in (let TMP_510 \def (subst0_subst0_back t3 t0 u i H2 +x4 u0 TMP_509 H19) in (ex2_ind T TMP_479 TMP_484 TMP_485 TMP_507 +TMP_510)))))))))))))))) in (let TMP_512 \def (TMP_511 H15) in (TMP_512 +H14)))))))))))))))))))))))))))))) in (ex4_5_ind B C C T T TMP_444 TMP_447 +TMP_450 TMP_453 TMP_454 TMP_513 H9)))))))) in (or4_ind TMP_266 TMP_278 +TMP_290 TMP_305 TMP_306 TMP_319 TMP_391 TMP_439 TMP_514 +H8)))))))))))))))))))))))))) in (let TMP_527 \def (\lambda (H7: (le i0 +i)).(let TMP_516 \def (Bind Abbr) in (let TMP_517 \def (CHead d TMP_516 u) in +(let TMP_518 \def (csubst0_getl_ge i0 i H7 c c0 u0 H5 TMP_517 H0) in (let +TMP_519 \def (pr2_delta c0 d u i TMP_518 t2 t3 H1 t0 H2) in (let TMP_520 \def +(le_n i0) in (let TMP_521 \def (Bind Abbr) in (let TMP_522 \def (CHead e +TMP_521 u0) in (let TMP_523 \def (csubst0_getl_ge i0 i0 TMP_520 c c0 u0 H5 +TMP_522 H6) in (let TMP_524 \def (pr0_refl t0) in (let TMP_525 \def +(pr2_delta c0 e u0 i0 TMP_523 t0 t0 TMP_524 t5 H4) in (let TMP_526 \def +(pc3_pr2_r c0 t0 t5 TMP_525) in (pc3_pr2_u c0 t0 t2 TMP_519 t5 +TMP_526))))))))))))) in (lt_le_e i i0 TMP_261 TMP_515 TMP_527)))))))))) in +(fsubst0_ind i0 u0 c t0 TMP_20 TMP_31 TMP_260 TMP_528 c2 t4 +H3)))))))))))))))))))) in (pr2_ind TMP_1 TMP_19 TMP_529 c1 t t1 H))))))). theorem pc3_fsubst0: \forall (c1: C).(\forall (t1: T).(\forall (t: T).((pc3 c1 t1 t) \to (\forall @@ -666,61 +1070,75 @@ t1 c2 t2) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c2 t2 t))))))))))) \def \lambda (c1: C).(\lambda (t1: T).(\lambda (t: T).(\lambda (H: (pc3 c1 t1 -t)).(pc3_ind_left c1 (\lambda (t0: T).(\lambda (t2: T).(\forall (i: +t)).(let TMP_1 \def (\lambda (t0: T).(\lambda (t2: T).(\forall (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t3: T).((fsubst0 i u c1 t0 c2 t3) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c2 t3 -t2)))))))))) (\lambda (t0: T).(\lambda (i: nat).(\lambda (u: T).(\lambda (c2: -C).(\lambda (t2: T).(\lambda (H0: (fsubst0 i u c1 t0 c2 t2)).(fsubst0_ind i u -c1 t0 (\lambda (c: C).(\lambda (t3: T).(\forall (e: C).((getl i c1 (CHead e -(Bind Abbr) u)) \to (pc3 c t3 t0))))) (\lambda (t3: T).(\lambda (H1: (subst0 -i u t0 t3)).(\lambda (e: C).(\lambda (H2: (getl i c1 (CHead e (Bind Abbr) -u))).(pc3_pr2_x c1 t3 t0 (pr2_delta c1 e u i H2 t0 t0 (pr0_refl t0) t3 -H1)))))) (\lambda (c0: C).(\lambda (_: (csubst0 i u c1 c0)).(\lambda (e: -C).(\lambda (_: (getl i c1 (CHead e (Bind Abbr) u))).(pc3_refl c0 t0))))) -(\lambda (t3: T).(\lambda (H1: (subst0 i u t0 t3)).(\lambda (c0: C).(\lambda -(H2: (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H3: (getl i c1 (CHead e -(Bind Abbr) u))).(pc3_pr2_x c0 t3 t0 (pr2_delta c0 e u i (csubst0_getl_ge i i -(le_n i) c1 c0 u H2 (CHead e (Bind Abbr) u) H3) t0 t0 (pr0_refl t0) t3 -H1)))))))) c2 t2 H0))))))) (\lambda (t0: T).(\lambda (t2: T).(\lambda (H0: -(pr2 c1 t0 t2)).(\lambda (t3: T).(\lambda (H1: (pc3 c1 t2 t3)).(\lambda (H2: -((\forall (i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t4: -T).((fsubst0 i u c1 t2 c2 t4) \to (\forall (e: C).((getl i c1 (CHead e (Bind -Abbr) u)) \to (pc3 c2 t4 t3)))))))))).(\lambda (i: nat).(\lambda (u: -T).(\lambda (c2: C).(\lambda (t4: T).(\lambda (H3: (fsubst0 i u c1 t0 c2 -t4)).(fsubst0_ind i u c1 t0 (\lambda (c: C).(\lambda (t5: T).(\forall (e: -C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c t5 t3))))) (\lambda (t5: -T).(\lambda (H4: (subst0 i u t0 t5)).(\lambda (e: C).(\lambda (H5: (getl i c1 -(CHead e (Bind Abbr) u))).(pc3_t t2 c1 t5 (pc3_pr2_fsubst0 c1 t0 t2 H0 i u c1 -t5 (fsubst0_snd i u c1 t0 t5 H4) e H5) t3 H1))))) (\lambda (c0: C).(\lambda -(H4: (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e -(Bind Abbr) u))).(pc3_t t2 c0 t0 (pc3_pr2_fsubst0 c1 t0 t2 H0 i u c0 t0 -(fsubst0_fst i u c1 t0 c0 H4) e H5) t3 (H2 i u c0 t2 (fsubst0_fst i u c1 t2 -c0 H4) e H5)))))) (\lambda (t5: T).(\lambda (H4: (subst0 i u t0 t5)).(\lambda -(c0: C).(\lambda (H5: (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H6: -(getl i c1 (CHead e (Bind Abbr) u))).(pc3_t t2 c0 t5 (pc3_pr2_fsubst0 c1 t0 -t2 H0 i u c0 t5 (fsubst0_both i u c1 t0 t5 H4 c0 H5) e H6) t3 (H2 i u c0 t2 -(fsubst0_fst i u c1 t2 c0 H5) e H6)))))))) c2 t4 H3)))))))))))) (\lambda (t0: -T).(\lambda (t2: T).(\lambda (H0: (pr2 c1 t0 t2)).(\lambda (t3: T).(\lambda -(H1: (pc3 c1 t0 t3)).(\lambda (H2: ((\forall (i: nat).(\forall (u: -T).(\forall (c2: C).(\forall (t4: T).((fsubst0 i u c1 t0 c2 t4) \to (\forall -(e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c2 t4 +t2)))))))))) in (let TMP_14 \def (\lambda (t0: T).(\lambda (i: nat).(\lambda +(u: T).(\lambda (c2: C).(\lambda (t2: T).(\lambda (H0: (fsubst0 i u c1 t0 c2 +t2)).(let TMP_2 \def (\lambda (c: C).(\lambda (t3: T).(\forall (e: C).((getl +i c1 (CHead e (Bind Abbr) u)) \to (pc3 c t3 t0))))) in (let TMP_5 \def +(\lambda (t3: T).(\lambda (H1: (subst0 i u t0 t3)).(\lambda (e: C).(\lambda +(H2: (getl i c1 (CHead e (Bind Abbr) u))).(let TMP_3 \def (pr0_refl t0) in +(let TMP_4 \def (pr2_delta c1 e u i H2 t0 t0 TMP_3 t3 H1) in (pc3_pr2_x c1 t3 +t0 TMP_4))))))) in (let TMP_6 \def (\lambda (c0: C).(\lambda (_: (csubst0 i u +c1 c0)).(\lambda (e: C).(\lambda (_: (getl i c1 (CHead e (Bind Abbr) +u))).(pc3_refl c0 t0))))) in (let TMP_13 \def (\lambda (t3: T).(\lambda (H1: +(subst0 i u t0 t3)).(\lambda (c0: C).(\lambda (H2: (csubst0 i u c1 +c0)).(\lambda (e: C).(\lambda (H3: (getl i c1 (CHead e (Bind Abbr) u))).(let +TMP_7 \def (le_n i) in (let TMP_8 \def (Bind Abbr) in (let TMP_9 \def (CHead +e TMP_8 u) in (let TMP_10 \def (csubst0_getl_ge i i TMP_7 c1 c0 u H2 TMP_9 +H3) in (let TMP_11 \def (pr0_refl t0) in (let TMP_12 \def (pr2_delta c0 e u i +TMP_10 t0 t0 TMP_11 t3 H1) in (pc3_pr2_x c0 t3 t0 TMP_12))))))))))))) in +(fsubst0_ind i u c1 t0 TMP_2 TMP_5 TMP_6 TMP_13 c2 t2 H0))))))))))) in (let +TMP_29 \def (\lambda (t0: T).(\lambda (t2: T).(\lambda (H0: (pr2 c1 t0 +t2)).(\lambda (t3: T).(\lambda (H1: (pc3 c1 t2 t3)).(\lambda (H2: ((\forall +(i: nat).(\forall (u: T).(\forall (c2: C).(\forall (t4: T).((fsubst0 i u c1 +t2 c2 t4) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 +c2 t4 t3)))))))))).(\lambda (i: nat).(\lambda (u: T).(\lambda (c2: +C).(\lambda (t4: T).(\lambda (H3: (fsubst0 i u c1 t0 c2 t4)).(let TMP_15 \def +(\lambda (c: C).(\lambda (t5: T).(\forall (e: C).((getl i c1 (CHead e (Bind +Abbr) u)) \to (pc3 c t5 t3))))) in (let TMP_18 \def (\lambda (t5: T).(\lambda +(H4: (subst0 i u t0 t5)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e +(Bind Abbr) u))).(let TMP_16 \def (fsubst0_snd i u c1 t0 t5 H4) in (let +TMP_17 \def (pc3_pr2_fsubst0 c1 t0 t2 H0 i u c1 t5 TMP_16 e H5) in (pc3_t t2 +c1 t5 TMP_17 t3 H1))))))) in (let TMP_23 \def (\lambda (c0: C).(\lambda (H4: +(csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e (Bind +Abbr) u))).(let TMP_19 \def (fsubst0_fst i u c1 t0 c0 H4) in (let TMP_20 \def +(pc3_pr2_fsubst0 c1 t0 t2 H0 i u c0 t0 TMP_19 e H5) in (let TMP_21 \def +(fsubst0_fst i u c1 t2 c0 H4) in (let TMP_22 \def (H2 i u c0 t2 TMP_21 e H5) +in (pc3_t t2 c0 t0 TMP_20 t3 TMP_22))))))))) in (let TMP_28 \def (\lambda +(t5: T).(\lambda (H4: (subst0 i u t0 t5)).(\lambda (c0: C).(\lambda (H5: +(csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H6: (getl i c1 (CHead e (Bind +Abbr) u))).(let TMP_24 \def (fsubst0_both i u c1 t0 t5 H4 c0 H5) in (let +TMP_25 \def (pc3_pr2_fsubst0 c1 t0 t2 H0 i u c0 t5 TMP_24 e H6) in (let +TMP_26 \def (fsubst0_fst i u c1 t2 c0 H5) in (let TMP_27 \def (H2 i u c0 t2 +TMP_26 e H6) in (pc3_t t2 c0 t5 TMP_25 t3 TMP_27))))))))))) in (fsubst0_ind i +u c1 t0 TMP_15 TMP_18 TMP_23 TMP_28 c2 t4 H3)))))))))))))))) in (let TMP_47 +\def (\lambda (t0: T).(\lambda (t2: T).(\lambda (H0: (pr2 c1 t0 t2)).(\lambda +(t3: T).(\lambda (H1: (pc3 c1 t0 t3)).(\lambda (H2: ((\forall (i: +nat).(\forall (u: T).(\forall (c2: C).(\forall (t4: T).((fsubst0 i u c1 t0 c2 +t4) \to (\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to (pc3 c2 t4 t3)))))))))).(\lambda (i: nat).(\lambda (u: T).(\lambda (c2: C).(\lambda (t4: -T).(\lambda (H3: (fsubst0 i u c1 t2 c2 t4)).(fsubst0_ind i u c1 t2 (\lambda -(c: C).(\lambda (t5: T).(\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) -\to (pc3 c t5 t3))))) (\lambda (t5: T).(\lambda (H4: (subst0 i u t2 -t5)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e (Bind Abbr) -u))).(pc3_t t0 c1 t5 (pc3_s c1 t5 t0 (pc3_pr2_fsubst0_back c1 t0 t2 H0 i u c1 -t5 (fsubst0_snd i u c1 t2 t5 H4) e H5)) t3 H1))))) (\lambda (c0: C).(\lambda -(H4: (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e -(Bind Abbr) u))).(pc3_t t0 c0 t2 (pc3_s c0 t2 t0 (pc3_pr2_fsubst0_back c1 t0 -t2 H0 i u c0 t2 (fsubst0_fst i u c1 t2 c0 H4) e H5)) t3 (H2 i u c0 t0 -(fsubst0_fst i u c1 t0 c0 H4) e H5)))))) (\lambda (t5: T).(\lambda (H4: -(subst0 i u t2 t5)).(\lambda (c0: C).(\lambda (H5: (csubst0 i u c1 -c0)).(\lambda (e: C).(\lambda (H6: (getl i c1 (CHead e (Bind Abbr) -u))).(pc3_t t0 c0 t5 (pc3_s c0 t5 t0 (pc3_pr2_fsubst0_back c1 t0 t2 H0 i u c0 -t5 (fsubst0_both i u c1 t2 t5 H4 c0 H5) e H6)) t3 (H2 i u c0 t0 (fsubst0_fst -i u c1 t0 c0 H5) e H6)))))))) c2 t4 H3)))))))))))) t1 t H)))). -(* COMMENTS -Initial nodes: 1249 -END *) +T).(\lambda (H3: (fsubst0 i u c1 t2 c2 t4)).(let TMP_30 \def (\lambda (c: +C).(\lambda (t5: T).(\forall (e: C).((getl i c1 (CHead e (Bind Abbr) u)) \to +(pc3 c t5 t3))))) in (let TMP_34 \def (\lambda (t5: T).(\lambda (H4: (subst0 +i u t2 t5)).(\lambda (e: C).(\lambda (H5: (getl i c1 (CHead e (Bind Abbr) +u))).(let TMP_31 \def (fsubst0_snd i u c1 t2 t5 H4) in (let TMP_32 \def +(pc3_pr2_fsubst0_back c1 t0 t2 H0 i u c1 t5 TMP_31 e H5) in (let TMP_33 \def +(pc3_s c1 t5 t0 TMP_32) in (pc3_t t0 c1 t5 TMP_33 t3 H1)))))))) in (let +TMP_40 \def (\lambda (c0: C).(\lambda (H4: (csubst0 i u c1 c0)).(\lambda (e: +C).(\lambda (H5: (getl i c1 (CHead e (Bind Abbr) u))).(let TMP_35 \def +(fsubst0_fst i u c1 t2 c0 H4) in (let TMP_36 \def (pc3_pr2_fsubst0_back c1 t0 +t2 H0 i u c0 t2 TMP_35 e H5) in (let TMP_37 \def (pc3_s c0 t2 t0 TMP_36) in +(let TMP_38 \def (fsubst0_fst i u c1 t0 c0 H4) in (let TMP_39 \def (H2 i u c0 +t0 TMP_38 e H5) in (pc3_t t0 c0 t2 TMP_37 t3 TMP_39)))))))))) in (let TMP_46 +\def (\lambda (t5: T).(\lambda (H4: (subst0 i u t2 t5)).(\lambda (c0: +C).(\lambda (H5: (csubst0 i u c1 c0)).(\lambda (e: C).(\lambda (H6: (getl i +c1 (CHead e (Bind Abbr) u))).(let TMP_41 \def (fsubst0_both i u c1 t2 t5 H4 +c0 H5) in (let TMP_42 \def (pc3_pr2_fsubst0_back c1 t0 t2 H0 i u c0 t5 TMP_41 +e H6) in (let TMP_43 \def (pc3_s c0 t5 t0 TMP_42) in (let TMP_44 \def +(fsubst0_fst i u c1 t0 c0 H5) in (let TMP_45 \def (H2 i u c0 t0 TMP_44 e H6) +in (pc3_t t0 c0 t5 TMP_43 t3 TMP_45)))))))))))) in (fsubst0_ind i u c1 t2 +TMP_30 TMP_34 TMP_40 TMP_46 c2 t4 H3)))))))))))))))) in (pc3_ind_left c1 +TMP_1 TMP_14 TMP_29 TMP_47 t1 t H)))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc3/fwd.ma b/matita/matita/contribs/lambdadelta/basic_1/pc3/fwd.ma index c89e4563c..db39fa1fd 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc3/fwd.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc3/fwd.ma @@ -14,9 +14,7 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pc3/props.ma". - -include "Basic-1/pr3/fwd.ma". +include "basic_1/pc3/props.ma". theorem pc3_gen_sort: \forall (c: C).(\forall (m: nat).(\forall (n: nat).((pc3 c (TSort m) (TSort @@ -28,12 +26,9 @@ n)) \to (eq nat m n)))) T).(\lambda (H1: (pr3 c (TSort m) x)).(\lambda (H2: (pr3 c (TSort n) x)).(let H3 \def (eq_ind T x (\lambda (t: T).(eq T t (TSort n))) (pr3_gen_sort c x n H2) (TSort m) (pr3_gen_sort c x m H1)) in (let H4 \def (f_equal T nat -(\lambda (e: T).(match e in T return (\lambda (_: T).nat) with [(TSort n0) -\Rightarrow n0 | (TLRef _) \Rightarrow m | (THead _ _ _) \Rightarrow m])) -(TSort m) (TSort n) H3) in H4))))) H0))))). -(* COMMENTS -Initial nodes: 153 -END *) +(\lambda (e: T).(match e with [(TSort n0) \Rightarrow n0 | (TLRef _) +\Rightarrow m | (THead _ _ _) \Rightarrow m])) (TSort m) (TSort n) H3) in +H4))))) H0))))). theorem pc3_gen_abst: \forall (c: C).(\forall (u1: T).(\forall (u2: T).(\forall (t1: T).(\forall @@ -65,21 +60,18 @@ t1 t2)))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H8: (eq T x (THead (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t1 x3))))).(let H11 \def (eq_ind T x (\lambda (t: T).(eq T t (THead (Bind Abst) x0 x1))) H4 (THead (Bind Abst) x2 x3) H8) in (let H12 \def (f_equal T T (\lambda (e: T).(match e -in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow x2 | (TLRef _) -\Rightarrow x2 | (THead _ t _) \Rightarrow t])) (THead (Bind Abst) x2 x3) -(THead (Bind Abst) x0 x1) H11) in ((let H13 \def (f_equal T T (\lambda (e: -T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow x3 | -(TLRef _) \Rightarrow x3 | (THead _ _ t) \Rightarrow t])) (THead (Bind Abst) -x2 x3) (THead (Bind Abst) x0 x1) H11) in (\lambda (H14: (eq T x2 x0)).(let -H15 \def (eq_ind T x3 (\lambda (t: T).(\forall (b: B).(\forall (u: T).(pr3 -(CHead c (Bind b) u) t1 t)))) H10 x1 H13) in (let H16 \def (eq_ind T x2 -(\lambda (t: T).(pr3 c u1 t)) H9 x0 H14) in (conj (pc3 c u1 u2) (\forall (b: -B).(\forall (u: T).(pc3 (CHead c (Bind b) u) t1 t2))) (pc3_pr3_t c u1 x0 H16 -u2 H5) (\lambda (b: B).(\lambda (u: T).(pc3_pr3_t (CHead c (Bind b) u) t1 x1 -(H15 b u) t2 (H6 b u))))))))) H12)))))))) H7))))))) H3))))) H0))))))). -(* COMMENTS -Initial nodes: 715 -END *) +with [(TSort _) \Rightarrow x2 | (TLRef _) \Rightarrow x2 | (THead _ t _) +\Rightarrow t])) (THead (Bind Abst) x2 x3) (THead (Bind Abst) x0 x1) H11) in +((let H13 \def (f_equal T T (\lambda (e: T).(match e with [(TSort _) +\Rightarrow x3 | (TLRef _) \Rightarrow x3 | (THead _ _ t) \Rightarrow t])) +(THead (Bind Abst) x2 x3) (THead (Bind Abst) x0 x1) H11) in (\lambda (H14: +(eq T x2 x0)).(let H15 \def (eq_ind T x3 (\lambda (t: T).(\forall (b: +B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t1 t)))) H10 x1 H13) in (let H16 +\def (eq_ind T x2 (\lambda (t: T).(pr3 c u1 t)) H9 x0 H14) in (conj (pc3 c u1 +u2) (\forall (b: B).(\forall (u: T).(pc3 (CHead c (Bind b) u) t1 t2))) +(pc3_pr3_t c u1 x0 H16 u2 H5) (\lambda (b: B).(\lambda (u: T).(pc3_pr3_t +(CHead c (Bind b) u) t1 x1 (H15 b u) t2 (H6 b u))))))))) H12)))))))) +H7))))))) H3))))) H0))))))). theorem pc3_gen_abst_shift: \forall (c: C).(\forall (u: T).(\forall (t1: T).(\forall (t2: T).((pc3 c @@ -93,9 +85,6 @@ Abst) u) t1 t2))))) (CHead c (Bind Abst) u) t1 t2) (\lambda (_: (pc3 c u u)).(\lambda (H2: ((\forall (b: B).(\forall (u0: T).(pc3 (CHead c (Bind b) u0) t1 t2))))).(H2 Abst u))) H0))))))). -(* COMMENTS -Initial nodes: 129 -END *) theorem pc3_gen_lift: \forall (c: C).(\forall (t1: T).(\forall (t2: T).(\forall (h: nat).(\forall @@ -117,9 +106,6 @@ h d x1))).(\lambda (H9: (pr3 e t1 x1)).(let H10 \def (eq_ind T x (\lambda (t: T).(eq T t (lift h d x0))) H5 (lift h d x1) H8) in (let H11 \def (eq_ind T x1 (\lambda (t: T).(pr3 e t1 t)) H9 x0 (lift_inj x1 x0 h d H10)) in (pc3_pr3_t e t1 x0 H11 t2 H6)))))) H7))))) H4))))) H1))))))))). -(* COMMENTS -Initial nodes: 363 -END *) theorem pc3_gen_not_abst: \forall (b: B).((not (eq B b Abst)) \to (\forall (c: C).(\forall (t1: @@ -161,40 +147,37 @@ T).(\lambda (H10: (eq T x (THead (Bind Abst) x2 x3))).(\lambda (_: (pr3 c u2 x2)).(\lambda (_: ((\forall (b0: B).(\forall (u: T).(pr3 (CHead c (Bind b0) u) t2 x3))))).(let H13 \def (eq_ind T x (\lambda (t: T).(eq T t (THead (Bind Abbr) x0 x1))) H6 (THead (Bind Abst) x2 x3) H10) in (let H14 \def (eq_ind T -(THead (Bind Abst) x2 x3) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | -(THead k _ _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with -[(Bind b0) \Rightarrow (match b0 in B return (\lambda (_: B).Prop) with [Abbr -\Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat -_) \Rightarrow False])])) I (THead (Bind Abbr) x0 x1) H13) in (False_ind (pc3 -(CHead c (Bind Abbr) u1) t1 (lift (S O) O (THead (Bind Abst) u2 t2))) -H14)))))))) H9))))))) H5)) (\lambda (H5: (pr3 (CHead c (Bind Abbr) u1) t1 -(lift (S O) O x))).(let H6 \def (pr3_gen_abst c u2 t2 x H3) in (ex3_2_ind T T -(\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u3 t3)))) -(\lambda (u3: T).(\lambda (_: T).(pr3 c u2 u3))) (\lambda (_: T).(\lambda -(t3: T).(\forall (b0: B).(\forall (u: T).(pr3 (CHead c (Bind b0) u) t2 -t3))))) (pc3 (CHead c (Bind Abbr) u1) t1 (lift (S O) O (THead (Bind Abst) u2 -t2))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H7: (eq T x (THead (Bind -Abst) x0 x1))).(\lambda (H8: (pr3 c u2 x0)).(\lambda (H9: ((\forall (b0: -B).(\forall (u: T).(pr3 (CHead c (Bind b0) u) t2 x1))))).(let H10 \def -(eq_ind T x (\lambda (t: T).(pr3 (CHead c (Bind Abbr) u1) t1 (lift (S O) O -t))) H5 (THead (Bind Abst) x0 x1) H7) in (pc3_pr3_t (CHead c (Bind Abbr) u1) -t1 (lift (S O) O (THead (Bind Abst) x0 x1)) H10 (lift (S O) O (THead (Bind -Abst) u2 t2)) (pr3_lift (CHead c (Bind Abbr) u1) c (S O) O (drop_drop (Bind -Abbr) O c c (drop_refl c) u1) (THead (Bind Abst) u2 t2) (THead (Bind Abst) x0 -x1) (pr3_head_12 c u2 x0 H8 (Bind Abst) t2 x1 (H9 Abst x0)))))))))) H6))) -H4))))) H1))))))))) (\lambda (H: (not (eq B Abst Abst))).(\lambda (c: -C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (u1: T).(\lambda (u2: -T).(\lambda (_: (pc3 c (THead (Bind Abst) u1 t1) (THead (Bind Abst) u2 -t2))).(let H1 \def (match (H (refl_equal B Abst)) in False return (\lambda -(_: False).(pc3 (CHead c (Bind Abst) u1) t1 (lift (S O) O (THead (Bind Abst) -u2 t2)))) with []) in H1)))))))) (\lambda (_: (not (eq B Void -Abst))).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (u1: -T).(\lambda (u2: T).(\lambda (H0: (pc3 c (THead (Bind Void) u1 t1) (THead -(Bind Abst) u2 t2))).(let H1 \def H0 in (ex2_ind T (\lambda (t: T).(pr3 c -(THead (Bind Void) u1 t1) t)) (\lambda (t: T).(pr3 c (THead (Bind Abst) u2 -t2) t)) (pc3 (CHead c (Bind Void) u1) t1 (lift (S O) O (THead (Bind Abst) u2 -t2))) (\lambda (x: T).(\lambda (H2: (pr3 c (THead (Bind Void) u1 t1) +(THead (Bind Abst) x2 x3) (\lambda (ee: T).(match ee with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow +(match k with [(Bind b0) \Rightarrow (match b0 with [Abbr \Rightarrow False | +Abst \Rightarrow True | Void \Rightarrow False]) | (Flat _) \Rightarrow +False])])) I (THead (Bind Abbr) x0 x1) H13) in (False_ind (pc3 (CHead c (Bind +Abbr) u1) t1 (lift (S O) O (THead (Bind Abst) u2 t2))) H14)))))))) H9))))))) +H5)) (\lambda (H5: (pr3 (CHead c (Bind Abbr) u1) t1 (lift (S O) O x))).(let +H6 \def (pr3_gen_abst c u2 t2 x H3) in (ex3_2_ind T T (\lambda (u3: +T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u3 t3)))) (\lambda (u3: +T).(\lambda (_: T).(pr3 c u2 u3))) (\lambda (_: T).(\lambda (t3: T).(\forall +(b0: B).(\forall (u: T).(pr3 (CHead c (Bind b0) u) t2 t3))))) (pc3 (CHead c +(Bind Abbr) u1) t1 (lift (S O) O (THead (Bind Abst) u2 t2))) (\lambda (x0: +T).(\lambda (x1: T).(\lambda (H7: (eq T x (THead (Bind Abst) x0 +x1))).(\lambda (H8: (pr3 c u2 x0)).(\lambda (H9: ((\forall (b0: B).(\forall +(u: T).(pr3 (CHead c (Bind b0) u) t2 x1))))).(let H10 \def (eq_ind T x +(\lambda (t: T).(pr3 (CHead c (Bind Abbr) u1) t1 (lift (S O) O t))) H5 (THead +(Bind Abst) x0 x1) H7) in (pc3_pr3_t (CHead c (Bind Abbr) u1) t1 (lift (S O) +O (THead (Bind Abst) x0 x1)) H10 (lift (S O) O (THead (Bind Abst) u2 t2)) +(pr3_lift (CHead c (Bind Abbr) u1) c (S O) O (drop_drop (Bind Abbr) O c c +(drop_refl c) u1) (THead (Bind Abst) u2 t2) (THead (Bind Abst) x0 x1) +(pr3_head_12 c u2 x0 H8 (Bind Abst) t2 x1 (H9 Abst x0)))))))))) H6))) H4))))) +H1))))))))) (\lambda (H: (not (eq B Abst Abst))).(\lambda (c: C).(\lambda +(t1: T).(\lambda (t2: T).(\lambda (u1: T).(\lambda (u2: T).(\lambda (_: (pc3 +c (THead (Bind Abst) u1 t1) (THead (Bind Abst) u2 t2))).(let H1 \def (match +(H (refl_equal B Abst)) in False with []) in H1)))))))) (\lambda (_: (not (eq +B Void Abst))).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda +(u1: T).(\lambda (u2: T).(\lambda (H0: (pc3 c (THead (Bind Void) u1 t1) +(THead (Bind Abst) u2 t2))).(let H1 \def H0 in (ex2_ind T (\lambda (t: +T).(pr3 c (THead (Bind Void) u1 t1) t)) (\lambda (t: T).(pr3 c (THead (Bind +Abst) u2 t2) t)) (pc3 (CHead c (Bind Void) u1) t1 (lift (S O) O (THead (Bind +Abst) u2 t2))) (\lambda (x: T).(\lambda (H2: (pr3 c (THead (Bind Void) u1 t1) x)).(\lambda (H3: (pr3 c (THead (Bind Abst) u2 t2) x)).(let H4 \def (pr3_gen_void c u1 t1 x H2) in (or_ind (ex3_2 T T (\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Void) u3 t3)))) (\lambda (u3: T).(\lambda (_: @@ -221,32 +204,27 @@ Abst) u2 t2))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H10: (eq T x ((\forall (b0: B).(\forall (u: T).(pr3 (CHead c (Bind b0) u) t2 x3))))).(let H13 \def (eq_ind T x (\lambda (t: T).(eq T t (THead (Bind Void) x0 x1))) H6 (THead (Bind Abst) x2 x3) H10) in (let H14 \def (eq_ind T (THead (Bind Abst) -x2 x3) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with -[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) -\Rightarrow (match k in K return (\lambda (_: K).Prop) with [(Bind b0) -\Rightarrow (match b0 in B return (\lambda (_: B).Prop) with [Abbr -\Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat -_) \Rightarrow False])])) I (THead (Bind Void) x0 x1) H13) in (False_ind (pc3 -(CHead c (Bind Void) u1) t1 (lift (S O) O (THead (Bind Abst) u2 t2))) -H14)))))))) H9))))))) H5)) (\lambda (H5: (pr3 (CHead c (Bind Void) u1) t1 -(lift (S O) O x))).(let H6 \def (pr3_gen_abst c u2 t2 x H3) in (ex3_2_ind T T -(\lambda (u3: T).(\lambda (t3: T).(eq T x (THead (Bind Abst) u3 t3)))) -(\lambda (u3: T).(\lambda (_: T).(pr3 c u2 u3))) (\lambda (_: T).(\lambda -(t3: T).(\forall (b0: B).(\forall (u: T).(pr3 (CHead c (Bind b0) u) t2 -t3))))) (pc3 (CHead c (Bind Void) u1) t1 (lift (S O) O (THead (Bind Abst) u2 -t2))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H7: (eq T x (THead (Bind -Abst) x0 x1))).(\lambda (H8: (pr3 c u2 x0)).(\lambda (H9: ((\forall (b0: -B).(\forall (u: T).(pr3 (CHead c (Bind b0) u) t2 x1))))).(let H10 \def -(eq_ind T x (\lambda (t: T).(pr3 (CHead c (Bind Void) u1) t1 (lift (S O) O -t))) H5 (THead (Bind Abst) x0 x1) H7) in (pc3_pr3_t (CHead c (Bind Void) u1) -t1 (lift (S O) O (THead (Bind Abst) x0 x1)) H10 (lift (S O) O (THead (Bind -Abst) u2 t2)) (pr3_lift (CHead c (Bind Void) u1) c (S O) O (drop_drop (Bind -Void) O c c (drop_refl c) u1) (THead (Bind Abst) u2 t2) (THead (Bind Abst) x0 -x1) (pr3_head_12 c u2 x0 H8 (Bind Abst) t2 x1 (H9 Abst x0)))))))))) H6))) -H4))))) H1))))))))) b). -(* COMMENTS -Initial nodes: 2427 -END *) +x2 x3) (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef +_) \Rightarrow False | (THead k _ _) \Rightarrow (match k with [(Bind b0) +\Rightarrow (match b0 with [Abbr \Rightarrow False | Abst \Rightarrow True | +Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (THead (Bind +Void) x0 x1) H13) in (False_ind (pc3 (CHead c (Bind Void) u1) t1 (lift (S O) +O (THead (Bind Abst) u2 t2))) H14)))))))) H9))))))) H5)) (\lambda (H5: (pr3 +(CHead c (Bind Void) u1) t1 (lift (S O) O x))).(let H6 \def (pr3_gen_abst c +u2 t2 x H3) in (ex3_2_ind T T (\lambda (u3: T).(\lambda (t3: T).(eq T x +(THead (Bind Abst) u3 t3)))) (\lambda (u3: T).(\lambda (_: T).(pr3 c u2 u3))) +(\lambda (_: T).(\lambda (t3: T).(\forall (b0: B).(\forall (u: T).(pr3 (CHead +c (Bind b0) u) t2 t3))))) (pc3 (CHead c (Bind Void) u1) t1 (lift (S O) O +(THead (Bind Abst) u2 t2))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H7: +(eq T x (THead (Bind Abst) x0 x1))).(\lambda (H8: (pr3 c u2 x0)).(\lambda +(H9: ((\forall (b0: B).(\forall (u: T).(pr3 (CHead c (Bind b0) u) t2 +x1))))).(let H10 \def (eq_ind T x (\lambda (t: T).(pr3 (CHead c (Bind Void) +u1) t1 (lift (S O) O t))) H5 (THead (Bind Abst) x0 x1) H7) in (pc3_pr3_t +(CHead c (Bind Void) u1) t1 (lift (S O) O (THead (Bind Abst) x0 x1)) H10 +(lift (S O) O (THead (Bind Abst) u2 t2)) (pr3_lift (CHead c (Bind Void) u1) c +(S O) O (drop_drop (Bind Void) O c c (drop_refl c) u1) (THead (Bind Abst) u2 +t2) (THead (Bind Abst) x0 x1) (pr3_head_12 c u2 x0 H8 (Bind Abst) t2 x1 (H9 +Abst x0)))))))))) H6))) H4))))) H1))))))))) b). theorem pc3_gen_lift_abst: \forall (c: C).(\forall (t: T).(\forall (t2: T).(\forall (u2: T).(\forall @@ -302,9 +280,6 @@ T).(pr3 e t t0)) H6 (THead (Bind Abst) x3 x4) H12) in (ex3_2_intro T T T).(\lambda (t1: T).(\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind b) u) t2 (lift h (S d) t1)))))) x3 x4 H17 H16 H15))))))))) (lift_gen_bind Abst x1 x2 x0 h d H11)))))))) H7))))) H4))))) H1)))))))))). -(* COMMENTS -Initial nodes: 973 -END *) theorem pc3_gen_sort_abst: \forall (c: C).(\forall (u: T).(\forall (t: T).(\forall (n: nat).((pc3 c @@ -323,11 +298,7 @@ T).(\lambda (H4: (eq T x (THead (Bind Abst) x0 x1))).(\lambda (_: (pr3 c u x0)).(\lambda (_: ((\forall (b: B).(\forall (u0: T).(pr3 (CHead c (Bind b) u0) t x1))))).(let H7 \def (eq_ind T x (\lambda (t0: T).(eq T t0 (TSort n))) (pr3_gen_sort c x n H1) (THead (Bind Abst) x0 x1) H4) in (let H8 \def (eq_ind -T (THead (Bind Abst) x0 x1) (\lambda (ee: T).(match ee in T return (\lambda -(_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False -| (THead _ _ _) \Rightarrow True])) I (TSort n) H7) in (False_ind P -H8)))))))) H3))))) H0))))))). -(* COMMENTS -Initial nodes: 303 -END *) +T (THead (Bind Abst) x0 x1) (\lambda (ee: T).(match ee with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow +True])) I (TSort n) H7) in (False_ind P H8)))))))) H3))))) H0))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc3/left.ma b/matita/matita/contribs/lambdadelta/basic_1/pc3/left.ma index 12d22d10c..9b1bbcfc2 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc3/left.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc3/left.ma @@ -14,88 +14,93 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pc3/props.ma". +include "basic_1/pc3/props.ma". + +let rec pc3_left_ind (c: C) (P: (T \to (T \to Prop))) (f: (\forall (t: T).(P +t t))) (f0: (\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall +(t3: T).((pc3_left c t2 t3) \to ((P t2 t3) \to (P t1 t3)))))))) (f1: (\forall +(t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall (t3: T).((pc3_left c t1 +t3) \to ((P t1 t3) \to (P t2 t3)))))))) (t: T) (t0: T) (p: pc3_left c t t0) +on p: P t t0 \def match p with [(pc3_left_r t1) \Rightarrow (f t1) | +(pc3_left_ur t1 t2 p0 t3 p1) \Rightarrow (let TMP_2 \def ((pc3_left_ind c P f +f0 f1) t2 t3 p1) in (f0 t1 t2 p0 t3 p1 TMP_2)) | (pc3_left_ux t1 t2 p0 t3 p1) +\Rightarrow (let TMP_1 \def ((pc3_left_ind c P f f0 f1) t1 t3 p1) in (f1 t1 +t2 p0 t3 p1 TMP_1))]. theorem pc3_ind_left__pc3_left_pr3: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to (pc3_left c t1 t2)))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t1 -t2)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(pc3_left c t t0))) (\lambda -(t: T).(pc3_left_r c t)) (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 -c t3 t0)).(\lambda (t4: T).(\lambda (_: (pr3 c t0 t4)).(\lambda (H2: -(pc3_left c t0 t4)).(pc3_left_ur c t3 t0 H0 t4 H2))))))) t1 t2 H)))). -(* COMMENTS -Initial nodes: 87 -END *) +t2)).(let TMP_1 \def (\lambda (t: T).(\lambda (t0: T).(pc3_left c t t0))) in +(let TMP_2 \def (\lambda (t: T).(pc3_left_r c t)) in (let TMP_3 \def (\lambda +(t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c t3 t0)).(\lambda (t4: +T).(\lambda (_: (pr3 c t0 t4)).(\lambda (H2: (pc3_left c t0 t4)).(pc3_left_ur +c t3 t0 H0 t4 H2))))))) in (pr3_ind c TMP_1 TMP_2 TMP_3 t1 t2 H))))))). theorem pc3_ind_left__pc3_left_trans: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3_left c t1 t2) \to (\forall (t3: T).((pc3_left c t2 t3) \to (pc3_left c t1 t3)))))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3_left c t1 -t2)).(pc3_left_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (t3: -T).((pc3_left c t0 t3) \to (pc3_left c t t3))))) (\lambda (t: T).(\lambda -(t3: T).(\lambda (H0: (pc3_left c t t3)).H0))) (\lambda (t0: T).(\lambda (t3: -T).(\lambda (H0: (pr2 c t0 t3)).(\lambda (t4: T).(\lambda (_: (pc3_left c t3 -t4)).(\lambda (H2: ((\forall (t5: T).((pc3_left c t4 t5) \to (pc3_left c t3 -t5))))).(\lambda (t5: T).(\lambda (H3: (pc3_left c t4 t5)).(pc3_left_ur c t0 -t3 H0 t5 (H2 t5 H3)))))))))) (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: -(pr2 c t0 t3)).(\lambda (t4: T).(\lambda (_: (pc3_left c t0 t4)).(\lambda -(H2: ((\forall (t5: T).((pc3_left c t4 t5) \to (pc3_left c t0 -t5))))).(\lambda (t5: T).(\lambda (H3: (pc3_left c t4 t5)).(pc3_left_ux c t0 -t3 H0 t5 (H2 t5 H3)))))))))) t1 t2 H)))). -(* COMMENTS -Initial nodes: 195 -END *) +t2)).(let TMP_1 \def (\lambda (t: T).(\lambda (t0: T).(\forall (t3: +T).((pc3_left c t0 t3) \to (pc3_left c t t3))))) in (let TMP_2 \def (\lambda +(t: T).(\lambda (t3: T).(\lambda (H0: (pc3_left c t t3)).H0))) in (let TMP_4 +\def (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c t0 t3)).(\lambda +(t4: T).(\lambda (_: (pc3_left c t3 t4)).(\lambda (H2: ((\forall (t5: +T).((pc3_left c t4 t5) \to (pc3_left c t3 t5))))).(\lambda (t5: T).(\lambda +(H3: (pc3_left c t4 t5)).(let TMP_3 \def (H2 t5 H3) in (pc3_left_ur c t0 t3 +H0 t5 TMP_3)))))))))) in (let TMP_6 \def (\lambda (t0: T).(\lambda (t3: +T).(\lambda (H0: (pr2 c t0 t3)).(\lambda (t4: T).(\lambda (_: (pc3_left c t0 +t4)).(\lambda (H2: ((\forall (t5: T).((pc3_left c t4 t5) \to (pc3_left c t0 +t5))))).(\lambda (t5: T).(\lambda (H3: (pc3_left c t4 t5)).(let TMP_5 \def +(H2 t5 H3) in (pc3_left_ux c t0 t3 H0 t5 TMP_5)))))))))) in (pc3_left_ind c +TMP_1 TMP_2 TMP_4 TMP_6 t1 t2 H)))))))). theorem pc3_ind_left__pc3_left_sym: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3_left c t1 t2) \to (pc3_left c t2 t1)))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3_left c t1 -t2)).(pc3_left_ind c (\lambda (t: T).(\lambda (t0: T).(pc3_left c t0 t))) -(\lambda (t: T).(pc3_left_r c t)) (\lambda (t0: T).(\lambda (t3: T).(\lambda -(H0: (pr2 c t0 t3)).(\lambda (t4: T).(\lambda (_: (pc3_left c t3 -t4)).(\lambda (H2: (pc3_left c t4 t3)).(pc3_ind_left__pc3_left_trans c t4 t3 -H2 t0 (pc3_left_ux c t0 t3 H0 t0 (pc3_left_r c t0))))))))) (\lambda (t0: -T).(\lambda (t3: T).(\lambda (H0: (pr2 c t0 t3)).(\lambda (t4: T).(\lambda -(_: (pc3_left c t0 t4)).(\lambda (H2: (pc3_left c t4 -t0)).(pc3_ind_left__pc3_left_trans c t4 t0 H2 t3 (pc3_left_ur c t0 t3 H0 t3 -(pc3_left_r c t3))))))))) t1 t2 H)))). -(* COMMENTS -Initial nodes: 163 -END *) +t2)).(let TMP_1 \def (\lambda (t: T).(\lambda (t0: T).(pc3_left c t0 t))) in +(let TMP_2 \def (\lambda (t: T).(pc3_left_r c t)) in (let TMP_5 \def (\lambda +(t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c t0 t3)).(\lambda (t4: +T).(\lambda (_: (pc3_left c t3 t4)).(\lambda (H2: (pc3_left c t4 t3)).(let +TMP_3 \def (pc3_left_r c t0) in (let TMP_4 \def (pc3_left_ux c t0 t3 H0 t0 +TMP_3) in (pc3_ind_left__pc3_left_trans c t4 t3 H2 t0 TMP_4))))))))) in (let +TMP_8 \def (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c t0 +t3)).(\lambda (t4: T).(\lambda (_: (pc3_left c t0 t4)).(\lambda (H2: +(pc3_left c t4 t0)).(let TMP_6 \def (pc3_left_r c t3) in (let TMP_7 \def +(pc3_left_ur c t0 t3 H0 t3 TMP_6) in (pc3_ind_left__pc3_left_trans c t4 t0 H2 +t3 TMP_7))))))))) in (pc3_left_ind c TMP_1 TMP_2 TMP_5 TMP_8 t1 t2 H)))))))). theorem pc3_ind_left__pc3_left_pc3: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3 c t1 t2) \to (pc3_left c t1 t2)))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3 c t1 -t2)).(let H0 \def H in (ex2_ind T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: -T).(pr3 c t2 t)) (pc3_left c t1 t2) (\lambda (x: T).(\lambda (H1: (pr3 c t1 -x)).(\lambda (H2: (pr3 c t2 x)).(pc3_ind_left__pc3_left_trans c t1 x -(pc3_ind_left__pc3_left_pr3 c t1 x H1) t2 (pc3_ind_left__pc3_left_sym c t2 x -(pc3_ind_left__pc3_left_pr3 c t2 x H2)))))) H0))))). -(* COMMENTS -Initial nodes: 105 -END *) +t2)).(let H0 \def H in (let TMP_1 \def (\lambda (t: T).(pr3 c t1 t)) in (let +TMP_2 \def (\lambda (t: T).(pr3 c t2 t)) in (let TMP_3 \def (pc3_left c t1 +t2) in (let TMP_7 \def (\lambda (x: T).(\lambda (H1: (pr3 c t1 x)).(\lambda +(H2: (pr3 c t2 x)).(let TMP_4 \def (pc3_ind_left__pc3_left_pr3 c t1 x H1) in +(let TMP_5 \def (pc3_ind_left__pc3_left_pr3 c t2 x H2) in (let TMP_6 \def +(pc3_ind_left__pc3_left_sym c t2 x TMP_5) in (pc3_ind_left__pc3_left_trans c +t1 x TMP_4 t2 TMP_6))))))) in (ex2_ind T TMP_1 TMP_2 TMP_3 TMP_7 H0))))))))). theorem pc3_ind_left__pc3_pc3_left: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3_left c t1 t2) \to (pc3 c t1 t2)))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3_left c t1 -t2)).(pc3_left_ind c (\lambda (t: T).(\lambda (t0: T).(pc3 c t t0))) (\lambda -(t: T).(pc3_refl c t)) (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c -t0 t3)).(\lambda (t4: T).(\lambda (_: (pc3_left c t3 t4)).(\lambda (H2: (pc3 -c t3 t4)).(pc3_t t3 c t0 (pc3_pr2_r c t0 t3 H0) t4 H2))))))) (\lambda (t0: +t2)).(let TMP_1 \def (\lambda (t: T).(\lambda (t0: T).(pc3 c t t0))) in (let +TMP_2 \def (\lambda (t: T).(pc3_refl c t)) in (let TMP_4 \def (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c t0 t3)).(\lambda (t4: T).(\lambda -(_: (pc3_left c t0 t4)).(\lambda (H2: (pc3 c t0 t4)).(pc3_t t0 c t3 -(pc3_pr2_x c t3 t0 H0) t4 H2))))))) t1 t2 H)))). -(* COMMENTS -Initial nodes: 147 -END *) +(_: (pc3_left c t3 t4)).(\lambda (H2: (pc3 c t3 t4)).(let TMP_3 \def +(pc3_pr2_r c t0 t3 H0) in (pc3_t t3 c t0 TMP_3 t4 H2)))))))) in (let TMP_6 +\def (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 c t0 t3)).(\lambda +(t4: T).(\lambda (_: (pc3_left c t0 t4)).(\lambda (H2: (pc3 c t0 t4)).(let +TMP_5 \def (pc3_pr2_x c t3 t0 H0) in (pc3_t t0 c t3 TMP_5 t4 H2)))))))) in +(pc3_left_ind c TMP_1 TMP_2 TMP_4 TMP_6 t1 t2 H)))))))). theorem pc3_ind_left: \forall (c: C).(\forall (P: ((T \to (T \to Prop)))).(((\forall (t: T).(P t @@ -110,16 +115,14 @@ t t0) \to (P t t0)))))))) t2) \to (\forall (t3: T).((pc3 c t2 t3) \to ((P t2 t3) \to (P t1 t3))))))))).(\lambda (H1: ((\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall (t3: T).((pc3 c t1 t3) \to ((P t1 t3) \to (P t2 -t3))))))))).(\lambda (t: T).(\lambda (t0: T).(\lambda (H2: (pc3 c t -t0)).(pc3_left_ind c (\lambda (t1: T).(\lambda (t2: T).(P t1 t2))) H (\lambda -(t1: T).(\lambda (t2: T).(\lambda (H3: (pr2 c t1 t2)).(\lambda (t3: -T).(\lambda (H4: (pc3_left c t2 t3)).(\lambda (H5: (P t2 t3)).(H0 t1 t2 H3 t3 -(pc3_ind_left__pc3_pc3_left c t2 t3 H4) H5))))))) (\lambda (t1: T).(\lambda -(t2: T).(\lambda (H3: (pr2 c t1 t2)).(\lambda (t3: T).(\lambda (H4: (pc3_left -c t1 t3)).(\lambda (H5: (P t1 t3)).(H1 t1 t2 H3 t3 -(pc3_ind_left__pc3_pc3_left c t1 t3 H4) H5))))))) t t0 -(pc3_ind_left__pc3_left_pc3 c t t0 H2))))))))). -(* COMMENTS -Initial nodes: 225 -END *) +t3))))))))).(\lambda (t: T).(\lambda (t0: T).(\lambda (H2: (pc3 c t t0)).(let +TMP_1 \def (\lambda (t1: T).(\lambda (t2: T).(P t1 t2))) in (let TMP_3 \def +(\lambda (t1: T).(\lambda (t2: T).(\lambda (H3: (pr2 c t1 t2)).(\lambda (t3: +T).(\lambda (H4: (pc3_left c t2 t3)).(\lambda (H5: (P t2 t3)).(let TMP_2 \def +(pc3_ind_left__pc3_pc3_left c t2 t3 H4) in (H0 t1 t2 H3 t3 TMP_2 H5)))))))) +in (let TMP_5 \def (\lambda (t1: T).(\lambda (t2: T).(\lambda (H3: (pr2 c t1 +t2)).(\lambda (t3: T).(\lambda (H4: (pc3_left c t1 t3)).(\lambda (H5: (P t1 +t3)).(let TMP_4 \def (pc3_ind_left__pc3_pc3_left c t1 t3 H4) in (H1 t1 t2 H3 +t3 TMP_4 H5)))))))) in (let TMP_6 \def (pc3_ind_left__pc3_left_pc3 c t t0 H2) +in (pc3_left_ind c TMP_1 H TMP_3 TMP_5 t t0 TMP_6)))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc3/nf2.ma b/matita/matita/contribs/lambdadelta/basic_1/pc3/nf2.ma index ed930b85e..9146795eb 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc3/nf2.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc3/nf2.ma @@ -14,9 +14,9 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pc3/defs.ma". +include "basic_1/pc3/defs.ma". -include "Basic-1/nf2/pr3.ma". +include "basic_1/nf2/pr3.ma". theorem pc3_nf2: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3 c t1 t2) \to ((nf2 c @@ -24,29 +24,28 @@ t1) \to ((nf2 c t2) \to (eq T t1 t2)))))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3 c t1 t2)).(\lambda (H0: (nf2 c t1)).(\lambda (H1: (nf2 c t2)).(let H2 \def H in -(ex2_ind T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) (eq T -t1 t2) (\lambda (x: T).(\lambda (H3: (pr3 c t1 x)).(\lambda (H4: (pr3 c t2 -x)).(let H_y \def (nf2_pr3_unfold c t1 x H3 H0) in (let H5 \def (eq_ind_r T x -(\lambda (t: T).(pr3 c t2 t)) H4 t1 H_y) in (let H6 \def (eq_ind_r T x -(\lambda (t: T).(pr3 c t1 t)) H3 t1 H_y) in (let H_y0 \def (nf2_pr3_unfold c -t2 t1 H5 H1) in (let H7 \def (eq_ind T t2 (\lambda (t: T).(pr3 c t t1)) H5 t1 -H_y0) in (eq_ind_r T t1 (\lambda (t: T).(eq T t1 t)) (refl_equal T t1) t2 -H_y0))))))))) H2))))))). -(* COMMENTS -Initial nodes: 195 -END *) +(let TMP_1 \def (\lambda (t: T).(pr3 c t1 t)) in (let TMP_2 \def (\lambda (t: +T).(pr3 c t2 t)) in (let TMP_3 \def (eq T t1 t2) in (let TMP_9 \def (\lambda +(x: T).(\lambda (H3: (pr3 c t1 x)).(\lambda (H4: (pr3 c t2 x)).(let H_y \def +(nf2_pr3_unfold c t1 x H3 H0) in (let TMP_4 \def (\lambda (t: T).(pr3 c t2 +t)) in (let H5 \def (eq_ind_r T x TMP_4 H4 t1 H_y) in (let TMP_5 \def +(\lambda (t: T).(pr3 c t1 t)) in (let H6 \def (eq_ind_r T x TMP_5 H3 t1 H_y) +in (let H_y0 \def (nf2_pr3_unfold c t2 t1 H5 H1) in (let TMP_6 \def (\lambda +(t: T).(pr3 c t t1)) in (let H7 \def (eq_ind T t2 TMP_6 H5 t1 H_y0) in (let +TMP_7 \def (\lambda (t: T).(eq T t1 t)) in (let TMP_8 \def (refl_equal T t1) +in (eq_ind_r T t1 TMP_7 TMP_8 t2 H_y0)))))))))))))) in (ex2_ind T TMP_1 TMP_2 +TMP_3 TMP_9 H2))))))))))). theorem pc3_nf2_unfold: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3 c t1 t2) \to ((nf2 c t2) \to (pr3 c t1 t2))))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3 c t1 -t2)).(\lambda (H0: (nf2 c t2)).(let H1 \def H in (ex2_ind T (\lambda (t: -T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) (pr3 c t1 t2) (\lambda (x: -T).(\lambda (H2: (pr3 c t1 x)).(\lambda (H3: (pr3 c t2 x)).(let H_y \def -(nf2_pr3_unfold c t2 x H3 H0) in (let H4 \def (eq_ind_r T x (\lambda (t: -T).(pr3 c t1 t)) H2 t2 H_y) in H4))))) H1)))))). -(* COMMENTS -Initial nodes: 109 -END *) +t2)).(\lambda (H0: (nf2 c t2)).(let H1 \def H in (let TMP_1 \def (\lambda (t: +T).(pr3 c t1 t)) in (let TMP_2 \def (\lambda (t: T).(pr3 c t2 t)) in (let +TMP_3 \def (pr3 c t1 t2) in (let TMP_5 \def (\lambda (x: T).(\lambda (H2: +(pr3 c t1 x)).(\lambda (H3: (pr3 c t2 x)).(let H_y \def (nf2_pr3_unfold c t2 +x H3 H0) in (let TMP_4 \def (\lambda (t: T).(pr3 c t1 t)) in (let H4 \def +(eq_ind_r T x TMP_4 H2 t2 H_y) in H4)))))) in (ex2_ind T TMP_1 TMP_2 TMP_3 +TMP_5 H1)))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc3/pc1.ma b/matita/matita/contribs/lambdadelta/basic_1/pc3/pc1.ma index dd89f951d..7093a13a1 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc3/pc1.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc3/pc1.ma @@ -14,23 +14,22 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pc3/defs.ma". +include "basic_1/pc3/defs.ma". -include "Basic-1/pc1/defs.ma". +include "basic_1/pc1/defs.ma". -include "Basic-1/pr3/pr1.ma". +include "basic_1/pr3/pr1.ma". theorem pc3_pc1: \forall (t1: T).(\forall (t2: T).((pc1 t1 t2) \to (\forall (c: C).(pc3 c t1 t2)))) \def \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc1 t1 t2)).(\lambda (c: -C).(let H0 \def H in (ex2_ind T (\lambda (t: T).(pr1 t1 t)) (\lambda (t: -T).(pr1 t2 t)) (pc3 c t1 t2) (\lambda (x: T).(\lambda (H1: (pr1 t1 -x)).(\lambda (H2: (pr1 t2 x)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) -(\lambda (t: T).(pr3 c t2 t)) x (pr3_pr1 t1 x H1 c) (pr3_pr1 t2 x H2 c))))) -H0))))). -(* COMMENTS -Initial nodes: 103 -END *) +C).(let H0 \def H in (let TMP_1 \def (\lambda (t: T).(pr1 t1 t)) in (let +TMP_2 \def (\lambda (t: T).(pr1 t2 t)) in (let TMP_3 \def (pc3 c t1 t2) in +(let TMP_8 \def (\lambda (x: T).(\lambda (H1: (pr1 t1 x)).(\lambda (H2: (pr1 +t2 x)).(let TMP_4 \def (\lambda (t: T).(pr3 c t1 t)) in (let TMP_5 \def +(\lambda (t: T).(pr3 c t2 t)) in (let TMP_6 \def (pr3_pr1 t1 x H1 c) in (let +TMP_7 \def (pr3_pr1 t2 x H2 c) in (ex_intro2 T TMP_4 TMP_5 x TMP_6 +TMP_7)))))))) in (ex2_ind T TMP_1 TMP_2 TMP_3 TMP_8 H0))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc3/props.ma b/matita/matita/contribs/lambdadelta/basic_1/pc3/props.ma index b0a9a2f50..e73743a36 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc3/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc3/props.ma @@ -14,101 +14,90 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pc3/defs.ma". +include "basic_1/pc3/defs.ma". -include "Basic-1/pr3/pr3.ma". +include "basic_1/pr3/pr3.ma". theorem clear_pc3_trans: \forall (c2: C).(\forall (t1: T).(\forall (t2: T).((pc3 c2 t1 t2) \to (\forall (c1: C).((clear c1 c2) \to (pc3 c1 t1 t2)))))) \def \lambda (c2: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3 c2 t1 -t2)).(\lambda (c1: C).(\lambda (H0: (clear c1 c2)).(let H1 \def H in (ex2_ind -T (\lambda (t: T).(pr3 c2 t1 t)) (\lambda (t: T).(pr3 c2 t2 t)) (pc3 c1 t1 -t2) (\lambda (x: T).(\lambda (H2: (pr3 c2 t1 x)).(\lambda (H3: (pr3 c2 t2 -x)).(ex_intro2 T (\lambda (t: T).(pr3 c1 t1 t)) (\lambda (t: T).(pr3 c1 t2 -t)) x (clear_pr3_trans c2 t1 x H2 c1 H0) (clear_pr3_trans c2 t2 x H3 c1 -H0))))) H1))))))). -(* COMMENTS -Initial nodes: 129 -END *) +t2)).(\lambda (c1: C).(\lambda (H0: (clear c1 c2)).(let H1 \def H in (let +TMP_1 \def (\lambda (t: T).(pr3 c2 t1 t)) in (let TMP_2 \def (\lambda (t: +T).(pr3 c2 t2 t)) in (let TMP_3 \def (pc3 c1 t1 t2) in (let TMP_8 \def +(\lambda (x: T).(\lambda (H2: (pr3 c2 t1 x)).(\lambda (H3: (pr3 c2 t2 +x)).(let TMP_4 \def (\lambda (t: T).(pr3 c1 t1 t)) in (let TMP_5 \def +(\lambda (t: T).(pr3 c1 t2 t)) in (let TMP_6 \def (clear_pr3_trans c2 t1 x H2 +c1 H0) in (let TMP_7 \def (clear_pr3_trans c2 t2 x H3 c1 H0) in (ex_intro2 T +TMP_4 TMP_5 x TMP_6 TMP_7)))))))) in (ex2_ind T TMP_1 TMP_2 TMP_3 TMP_8 +H1))))))))))). theorem pc3_pr2_r: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (pc3 c t1 t2)))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t1 -t2)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) -t2 (pr3_pr2 c t1 t2 H) (pr3_refl c t2))))). -(* COMMENTS -Initial nodes: 55 -END *) +t2)).(let TMP_1 \def (\lambda (t: T).(pr3 c t1 t)) in (let TMP_2 \def +(\lambda (t: T).(pr3 c t2 t)) in (let TMP_3 \def (pr3_pr2 c t1 t2 H) in (let +TMP_4 \def (pr3_refl c t2) in (ex_intro2 T TMP_1 TMP_2 t2 TMP_3 TMP_4)))))))). theorem pc3_pr2_x: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t2 t1) \to (pc3 c t1 t2)))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr2 c t2 -t1)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) -t1 (pr3_refl c t1) (pr3_pr2 c t2 t1 H))))). -(* COMMENTS -Initial nodes: 55 -END *) +t1)).(let TMP_1 \def (\lambda (t: T).(pr3 c t1 t)) in (let TMP_2 \def +(\lambda (t: T).(pr3 c t2 t)) in (let TMP_3 \def (pr3_refl c t1) in (let +TMP_4 \def (pr3_pr2 c t2 t1 H) in (ex_intro2 T TMP_1 TMP_2 t1 TMP_3 +TMP_4)))))))). theorem pc3_pr3_r: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to (pc3 c t1 t2)))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t1 -t2)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) -t2 H (pr3_refl c t2))))). -(* COMMENTS -Initial nodes: 47 -END *) +t2)).(let TMP_1 \def (\lambda (t: T).(pr3 c t1 t)) in (let TMP_2 \def +(\lambda (t: T).(pr3 c t2 t)) in (let TMP_3 \def (pr3_refl c t2) in +(ex_intro2 T TMP_1 TMP_2 t2 H TMP_3))))))). theorem pc3_pr3_x: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t2 t1) \to (pc3 c t1 t2)))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr3 c t2 -t1)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) -t1 (pr3_refl c t1) H)))). -(* COMMENTS -Initial nodes: 47 -END *) +t1)).(let TMP_1 \def (\lambda (t: T).(pr3 c t1 t)) in (let TMP_2 \def +(\lambda (t: T).(pr3 c t2 t)) in (let TMP_3 \def (pr3_refl c t1) in +(ex_intro2 T TMP_1 TMP_2 t1 TMP_3 H))))))). theorem pc3_pr3_t: \forall (c: C).(\forall (t1: T).(\forall (t0: T).((pr3 c t1 t0) \to (\forall (t2: T).((pr3 c t2 t0) \to (pc3 c t1 t2)))))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t0: T).(\lambda (H: (pr3 c t1 -t0)).(\lambda (t2: T).(\lambda (H0: (pr3 c t2 t0)).(ex_intro2 T (\lambda (t: -T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) t0 H H0)))))). -(* COMMENTS -Initial nodes: 53 -END *) +t0)).(\lambda (t2: T).(\lambda (H0: (pr3 c t2 t0)).(let TMP_1 \def (\lambda +(t: T).(pr3 c t1 t)) in (let TMP_2 \def (\lambda (t: T).(pr3 c t2 t)) in +(ex_intro2 T TMP_1 TMP_2 t0 H H0)))))))). theorem pc3_refl: \forall (c: C).(\forall (t: T).(pc3 c t t)) \def - \lambda (c: C).(\lambda (t: T).(ex_intro2 T (\lambda (t0: T).(pr3 c t t0)) -(\lambda (t0: T).(pr3 c t t0)) t (pr3_refl c t) (pr3_refl c t))). -(* COMMENTS -Initial nodes: 41 -END *) + \lambda (c: C).(\lambda (t: T).(let TMP_1 \def (\lambda (t0: T).(pr3 c t +t0)) in (let TMP_2 \def (\lambda (t0: T).(pr3 c t t0)) in (let TMP_3 \def +(pr3_refl c t) in (let TMP_4 \def (pr3_refl c t) in (ex_intro2 T TMP_1 TMP_2 +t TMP_3 TMP_4)))))). theorem pc3_s: \forall (c: C).(\forall (t2: T).(\forall (t1: T).((pc3 c t1 t2) \to (pc3 c t2 t1)))) \def \lambda (c: C).(\lambda (t2: T).(\lambda (t1: T).(\lambda (H: (pc3 c t1 -t2)).(let H0 \def H in (ex2_ind T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: -T).(pr3 c t2 t)) (pc3 c t2 t1) (\lambda (x: T).(\lambda (H1: (pr3 c t1 -x)).(\lambda (H2: (pr3 c t2 x)).(ex_intro2 T (\lambda (t: T).(pr3 c t2 t)) -(\lambda (t: T).(pr3 c t1 t)) x H2 H1)))) H0))))). -(* COMMENTS -Initial nodes: 97 -END *) +t2)).(let H0 \def H in (let TMP_1 \def (\lambda (t: T).(pr3 c t1 t)) in (let +TMP_2 \def (\lambda (t: T).(pr3 c t2 t)) in (let TMP_3 \def (pc3 c t2 t1) in +(let TMP_6 \def (\lambda (x: T).(\lambda (H1: (pr3 c t1 x)).(\lambda (H2: +(pr3 c t2 x)).(let TMP_4 \def (\lambda (t: T).(pr3 c t2 t)) in (let TMP_5 +\def (\lambda (t: T).(pr3 c t1 t)) in (ex_intro2 T TMP_4 TMP_5 x H2 H1)))))) +in (ex2_ind T TMP_1 TMP_2 TMP_3 TMP_6 H0))))))))). theorem pc3_thin_dx: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3 c t1 t2) \to (\forall @@ -116,32 +105,38 @@ theorem pc3_thin_dx: t2))))))) \def \lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pc3 c t1 -t2)).(\lambda (u: T).(\lambda (f: F).(let H0 \def H in (ex2_ind T (\lambda -(t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) (pc3 c (THead (Flat f) u -t1) (THead (Flat f) u t2)) (\lambda (x: T).(\lambda (H1: (pr3 c t1 -x)).(\lambda (H2: (pr3 c t2 x)).(ex_intro2 T (\lambda (t: T).(pr3 c (THead -(Flat f) u t1) t)) (\lambda (t: T).(pr3 c (THead (Flat f) u t2) t)) (THead -(Flat f) u x) (pr3_thin_dx c t1 x H1 u f) (pr3_thin_dx c t2 x H2 u f))))) -H0))))))). -(* COMMENTS -Initial nodes: 165 -END *) +t2)).(\lambda (u: T).(\lambda (f: F).(let H0 \def H in (let TMP_1 \def +(\lambda (t: T).(pr3 c t1 t)) in (let TMP_2 \def (\lambda (t: T).(pr3 c t2 +t)) in (let TMP_3 \def (Flat f) in (let TMP_4 \def (THead TMP_3 u t1) in (let +TMP_5 \def (Flat f) in (let TMP_6 \def (THead TMP_5 u t2) in (let TMP_7 \def +(pc3 c TMP_4 TMP_6) in (let TMP_18 \def (\lambda (x: T).(\lambda (H1: (pr3 c +t1 x)).(\lambda (H2: (pr3 c t2 x)).(let TMP_10 \def (\lambda (t: T).(let +TMP_8 \def (Flat f) in (let TMP_9 \def (THead TMP_8 u t1) in (pr3 c TMP_9 +t)))) in (let TMP_13 \def (\lambda (t: T).(let TMP_11 \def (Flat f) in (let +TMP_12 \def (THead TMP_11 u t2) in (pr3 c TMP_12 t)))) in (let TMP_14 \def +(Flat f) in (let TMP_15 \def (THead TMP_14 u x) in (let TMP_16 \def +(pr3_thin_dx c t1 x H1 u f) in (let TMP_17 \def (pr3_thin_dx c t2 x H2 u f) +in (ex_intro2 T TMP_10 TMP_13 TMP_15 TMP_16 TMP_17)))))))))) in (ex2_ind T +TMP_1 TMP_2 TMP_7 TMP_18 H0))))))))))))))). theorem pc3_head_1: \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pc3 c u1 u2) \to (\forall (k: K).(\forall (t: T).(pc3 c (THead k u1 t) (THead k u2 t))))))) \def \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pc3 c u1 -u2)).(\lambda (k: K).(\lambda (t: T).(let H0 \def H in (ex2_ind T (\lambda -(t0: T).(pr3 c u1 t0)) (\lambda (t0: T).(pr3 c u2 t0)) (pc3 c (THead k u1 t) -(THead k u2 t)) (\lambda (x: T).(\lambda (H1: (pr3 c u1 x)).(\lambda (H2: -(pr3 c u2 x)).(ex_intro2 T (\lambda (t0: T).(pr3 c (THead k u1 t) t0)) -(\lambda (t0: T).(pr3 c (THead k u2 t) t0)) (THead k x t) (pr3_head_12 c u1 x -H1 k t t (pr3_refl (CHead c k x) t)) (pr3_head_12 c u2 x H2 k t t (pr3_refl -(CHead c k x) t)))))) H0))))))). -(* COMMENTS -Initial nodes: 183 -END *) +u2)).(\lambda (k: K).(\lambda (t: T).(let H0 \def H in (let TMP_1 \def +(\lambda (t0: T).(pr3 c u1 t0)) in (let TMP_2 \def (\lambda (t0: T).(pr3 c u2 +t0)) in (let TMP_3 \def (THead k u1 t) in (let TMP_4 \def (THead k u2 t) in +(let TMP_5 \def (pc3 c TMP_3 TMP_4) in (let TMP_17 \def (\lambda (x: +T).(\lambda (H1: (pr3 c u1 x)).(\lambda (H2: (pr3 c u2 x)).(let TMP_7 \def +(\lambda (t0: T).(let TMP_6 \def (THead k u1 t) in (pr3 c TMP_6 t0))) in (let +TMP_9 \def (\lambda (t0: T).(let TMP_8 \def (THead k u2 t) in (pr3 c TMP_8 +t0))) in (let TMP_10 \def (THead k x t) in (let TMP_11 \def (CHead c k x) in +(let TMP_12 \def (pr3_refl TMP_11 t) in (let TMP_13 \def (pr3_head_12 c u1 x +H1 k t t TMP_12) in (let TMP_14 \def (CHead c k x) in (let TMP_15 \def +(pr3_refl TMP_14 t) in (let TMP_16 \def (pr3_head_12 c u2 x H2 k t t TMP_15) +in (ex_intro2 T TMP_7 TMP_9 TMP_10 TMP_13 TMP_16))))))))))))) in (ex2_ind T +TMP_1 TMP_2 TMP_5 TMP_17 H0))))))))))))). theorem pc3_head_2: \forall (c: C).(\forall (u: T).(\forall (t1: T).(\forall (t2: T).(\forall @@ -149,71 +144,69 @@ theorem pc3_head_2: t2))))))) \def \lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda -(k: K).(\lambda (H: (pc3 (CHead c k u) t1 t2)).(let H0 \def H in (ex2_ind T -(\lambda (t: T).(pr3 (CHead c k u) t1 t)) (\lambda (t: T).(pr3 (CHead c k u) -t2 t)) (pc3 c (THead k u t1) (THead k u t2)) (\lambda (x: T).(\lambda (H1: -(pr3 (CHead c k u) t1 x)).(\lambda (H2: (pr3 (CHead c k u) t2 x)).(ex_intro2 -T (\lambda (t: T).(pr3 c (THead k u t1) t)) (\lambda (t: T).(pr3 c (THead k u -t2) t)) (THead k u x) (pr3_head_12 c u u (pr3_refl c u) k t1 x H1) -(pr3_head_12 c u u (pr3_refl c u) k t2 x H2))))) H0))))))). -(* COMMENTS -Initial nodes: 201 -END *) +(k: K).(\lambda (H: (pc3 (CHead c k u) t1 t2)).(let H0 \def H in (let TMP_2 +\def (\lambda (t: T).(let TMP_1 \def (CHead c k u) in (pr3 TMP_1 t1 t))) in +(let TMP_4 \def (\lambda (t: T).(let TMP_3 \def (CHead c k u) in (pr3 TMP_3 +t2 t))) in (let TMP_5 \def (THead k u t1) in (let TMP_6 \def (THead k u t2) +in (let TMP_7 \def (pc3 c TMP_5 TMP_6) in (let TMP_17 \def (\lambda (x: +T).(\lambda (H1: (pr3 (CHead c k u) t1 x)).(\lambda (H2: (pr3 (CHead c k u) +t2 x)).(let TMP_9 \def (\lambda (t: T).(let TMP_8 \def (THead k u t1) in (pr3 +c TMP_8 t))) in (let TMP_11 \def (\lambda (t: T).(let TMP_10 \def (THead k u +t2) in (pr3 c TMP_10 t))) in (let TMP_12 \def (THead k u x) in (let TMP_13 +\def (pr3_refl c u) in (let TMP_14 \def (pr3_head_12 c u u TMP_13 k t1 x H1) +in (let TMP_15 \def (pr3_refl c u) in (let TMP_16 \def (pr3_head_12 c u u +TMP_15 k t2 x H2) in (ex_intro2 T TMP_9 TMP_11 TMP_12 TMP_14 +TMP_16))))))))))) in (ex2_ind T TMP_2 TMP_4 TMP_7 TMP_17 H0))))))))))))). theorem pc3_pr2_u: \forall (c: C).(\forall (t2: T).(\forall (t1: T).((pr2 c t1 t2) \to (\forall (t3: T).((pc3 c t2 t3) \to (pc3 c t1 t3)))))) \def \lambda (c: C).(\lambda (t2: T).(\lambda (t1: T).(\lambda (H: (pr2 c t1 -t2)).(\lambda (t3: T).(\lambda (H0: (pc3 c t2 t3)).(let H1 \def H0 in -(ex2_ind T (\lambda (t: T).(pr3 c t2 t)) (\lambda (t: T).(pr3 c t3 t)) (pc3 c -t1 t3) (\lambda (x: T).(\lambda (H2: (pr3 c t2 x)).(\lambda (H3: (pr3 c t3 -x)).(ex_intro2 T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t3 t)) -x (pr3_sing c t2 t1 H x H2) H3)))) H1))))))). -(* COMMENTS -Initial nodes: 119 -END *) +t2)).(\lambda (t3: T).(\lambda (H0: (pc3 c t2 t3)).(let H1 \def H0 in (let +TMP_1 \def (\lambda (t: T).(pr3 c t2 t)) in (let TMP_2 \def (\lambda (t: +T).(pr3 c t3 t)) in (let TMP_3 \def (pc3 c t1 t3) in (let TMP_7 \def (\lambda +(x: T).(\lambda (H2: (pr3 c t2 x)).(\lambda (H3: (pr3 c t3 x)).(let TMP_4 +\def (\lambda (t: T).(pr3 c t1 t)) in (let TMP_5 \def (\lambda (t: T).(pr3 c +t3 t)) in (let TMP_6 \def (pr3_sing c t2 t1 H x H2) in (ex_intro2 T TMP_4 +TMP_5 x TMP_6 H3))))))) in (ex2_ind T TMP_1 TMP_2 TMP_3 TMP_7 H1))))))))))). theorem pc3_t: \forall (t2: T).(\forall (c: C).(\forall (t1: T).((pc3 c t1 t2) \to (\forall (t3: T).((pc3 c t2 t3) \to (pc3 c t1 t3)))))) \def \lambda (t2: T).(\lambda (c: C).(\lambda (t1: T).(\lambda (H: (pc3 c t1 -t2)).(\lambda (t3: T).(\lambda (H0: (pc3 c t2 t3)).(let H1 \def H0 in -(ex2_ind T (\lambda (t: T).(pr3 c t2 t)) (\lambda (t: T).(pr3 c t3 t)) (pc3 c -t1 t3) (\lambda (x: T).(\lambda (H2: (pr3 c t2 x)).(\lambda (H3: (pr3 c t3 -x)).(let H4 \def H in (ex2_ind T (\lambda (t: T).(pr3 c t1 t)) (\lambda (t: -T).(pr3 c t2 t)) (pc3 c t1 t3) (\lambda (x0: T).(\lambda (H5: (pr3 c t1 -x0)).(\lambda (H6: (pr3 c t2 x0)).(ex2_ind T (\lambda (t: T).(pr3 c x0 t)) -(\lambda (t: T).(pr3 c x t)) (pc3 c t1 t3) (\lambda (x1: T).(\lambda (H7: -(pr3 c x0 x1)).(\lambda (H8: (pr3 c x x1)).(pc3_pr3_t c t1 x1 (pr3_t x0 t1 c -H5 x1 H7) t3 (pr3_t x t3 c H3 x1 H8))))) (pr3_confluence c t2 x0 H6 x H2))))) -H4))))) H1))))))). -(* COMMENTS -Initial nodes: 233 -END *) +t2)).(\lambda (t3: T).(\lambda (H0: (pc3 c t2 t3)).(let H1 \def H0 in (let +TMP_1 \def (\lambda (t: T).(pr3 c t2 t)) in (let TMP_2 \def (\lambda (t: +T).(pr3 c t3 t)) in (let TMP_3 \def (pc3 c t1 t3) in (let TMP_15 \def +(\lambda (x: T).(\lambda (H2: (pr3 c t2 x)).(\lambda (H3: (pr3 c t3 x)).(let +H4 \def H in (let TMP_4 \def (\lambda (t: T).(pr3 c t1 t)) in (let TMP_5 \def +(\lambda (t: T).(pr3 c t2 t)) in (let TMP_6 \def (pc3 c t1 t3) in (let TMP_14 +\def (\lambda (x0: T).(\lambda (H5: (pr3 c t1 x0)).(\lambda (H6: (pr3 c t2 +x0)).(let TMP_7 \def (\lambda (t: T).(pr3 c x0 t)) in (let TMP_8 \def +(\lambda (t: T).(pr3 c x t)) in (let TMP_9 \def (pc3 c t1 t3) in (let TMP_12 +\def (\lambda (x1: T).(\lambda (H7: (pr3 c x0 x1)).(\lambda (H8: (pr3 c x +x1)).(let TMP_10 \def (pr3_t x0 t1 c H5 x1 H7) in (let TMP_11 \def (pr3_t x +t3 c H3 x1 H8) in (pc3_pr3_t c t1 x1 TMP_10 t3 TMP_11)))))) in (let TMP_13 +\def (pr3_confluence c t2 x0 H6 x H2) in (ex2_ind T TMP_7 TMP_8 TMP_9 TMP_12 +TMP_13))))))))) in (ex2_ind T TMP_4 TMP_5 TMP_6 TMP_14 H4))))))))) in +(ex2_ind T TMP_1 TMP_2 TMP_3 TMP_15 H1))))))))))). theorem pc3_pr2_u2: \forall (c: C).(\forall (t0: T).(\forall (t1: T).((pr2 c t0 t1) \to (\forall (t2: T).((pc3 c t0 t2) \to (pc3 c t1 t2)))))) \def \lambda (c: C).(\lambda (t0: T).(\lambda (t1: T).(\lambda (H: (pr2 c t0 -t1)).(\lambda (t2: T).(\lambda (H0: (pc3 c t0 t2)).(pc3_t t0 c t1 (pc3_pr2_x -c t1 t0 H) t2 H0)))))). -(* COMMENTS -Initial nodes: 45 -END *) +t1)).(\lambda (t2: T).(\lambda (H0: (pc3 c t0 t2)).(let TMP_1 \def (pc3_pr2_x +c t1 t0 H) in (pc3_t t0 c t1 TMP_1 t2 H0))))))). theorem pc3_pr3_conf: \forall (c: C).(\forall (t: T).(\forall (t1: T).((pc3 c t t1) \to (\forall (t2: T).((pr3 c t t2) \to (pc3 c t2 t1)))))) \def \lambda (c: C).(\lambda (t: T).(\lambda (t1: T).(\lambda (H: (pc3 c t -t1)).(\lambda (t2: T).(\lambda (H0: (pr3 c t t2)).(pc3_t t c t2 (pc3_pr3_x c -t2 t H0) t1 H)))))). -(* COMMENTS -Initial nodes: 45 -END *) +t1)).(\lambda (t2: T).(\lambda (H0: (pr3 c t t2)).(let TMP_1 \def (pc3_pr3_x +c t2 t H0) in (pc3_t t c t2 TMP_1 t1 H))))))). theorem pc3_head_12: \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pc3 c u1 u2) \to (\forall @@ -222,11 +215,10 @@ c (THead k u1 t1) (THead k u2 t2))))))))) \def \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pc3 c u1 u2)).(\lambda (k: K).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pc3 -(CHead c k u2) t1 t2)).(pc3_t (THead k u2 t1) c (THead k u1 t1) (pc3_head_1 c -u1 u2 H k t1) (THead k u2 t2) (pc3_head_2 c u2 t1 t2 k H0))))))))). -(* COMMENTS -Initial nodes: 89 -END *) +(CHead c k u2) t1 t2)).(let TMP_1 \def (THead k u2 t1) in (let TMP_2 \def +(THead k u1 t1) in (let TMP_3 \def (pc3_head_1 c u1 u2 H k t1) in (let TMP_4 +\def (THead k u2 t2) in (let TMP_5 \def (pc3_head_2 c u2 t1 t2 k H0) in +(pc3_t TMP_1 c TMP_2 TMP_3 TMP_4 TMP_5))))))))))))). theorem pc3_head_21: \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pc3 c u1 u2) \to (\forall @@ -235,11 +227,10 @@ c (THead k u1 t1) (THead k u2 t2))))))))) \def \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pc3 c u1 u2)).(\lambda (k: K).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pc3 -(CHead c k u1) t1 t2)).(pc3_t (THead k u1 t2) c (THead k u1 t1) (pc3_head_2 c -u1 t1 t2 k H0) (THead k u2 t2) (pc3_head_1 c u1 u2 H k t2))))))))). -(* COMMENTS -Initial nodes: 89 -END *) +(CHead c k u1) t1 t2)).(let TMP_1 \def (THead k u1 t2) in (let TMP_2 \def +(THead k u1 t1) in (let TMP_3 \def (pc3_head_2 c u1 t1 t2 k H0) in (let TMP_4 +\def (THead k u2 t2) in (let TMP_5 \def (pc3_head_1 c u1 u2 H k t2) in (pc3_t +TMP_1 c TMP_2 TMP_3 TMP_4 TMP_5))))))))))))). theorem pc3_pr0_pr2_t: \forall (u1: T).(\forall (u2: T).((pr0 u2 u1) \to (\forall (c: C).(\forall @@ -248,72 +239,115 @@ theorem pc3_pr0_pr2_t: \def \lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr0 u2 u1)).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (k: K).(\lambda (H0: (pr2 -(CHead c k u2) t1 t2)).(insert_eq C (CHead c k u2) (\lambda (c0: C).(pr2 c0 -t1 t2)) (\lambda (_: C).(pc3 (CHead c k u1) t1 t2)) (\lambda (y: C).(\lambda -(H1: (pr2 y t1 t2)).(pr2_ind (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: -T).((eq C c0 (CHead c k u2)) \to (pc3 (CHead c k u1) t t0))))) (\lambda (c0: -C).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H2: (pr0 t3 t4)).(\lambda (H3: -(eq C c0 (CHead c k u2))).(let H4 \def (f_equal C C (\lambda (e: C).e) c0 -(CHead c k u2) H3) in (pc3_pr2_r (CHead c k u1) t3 t4 (pr2_free (CHead c k -u1) t3 t4 H2)))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u: -T).(\lambda (i: nat).(\lambda (H2: (getl i c0 (CHead d (Bind Abbr) -u))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H3: (pr0 t3 t4)).(\lambda -(t: T).(\lambda (H4: (subst0 i u t4 t)).(\lambda (H5: (eq C c0 (CHead c k -u2))).(let H6 \def (f_equal C C (\lambda (e: C).e) c0 (CHead c k u2) H5) in -(let H7 \def (eq_ind C c0 (\lambda (c1: C).(getl i c1 (CHead d (Bind Abbr) -u))) H2 (CHead c k u2) H6) in (nat_ind (\lambda (n: nat).((getl n (CHead c k -u2) (CHead d (Bind Abbr) u)) \to ((subst0 n u t4 t) \to (pc3 (CHead c k u1) -t3 t)))) (\lambda (H8: (getl O (CHead c k u2) (CHead d (Bind Abbr) -u))).(\lambda (H9: (subst0 O u t4 t)).(K_ind (\lambda (k0: K).((clear (CHead -c k0 u2) (CHead d (Bind Abbr) u)) \to (pc3 (CHead c k0 u1) t3 t))) (\lambda -(b: B).(\lambda (H10: (clear (CHead c (Bind b) u2) (CHead d (Bind Abbr) -u))).(let H11 \def (f_equal C C (\lambda (e: C).(match e in C return (\lambda -(_: C).C) with [(CSort _) \Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) -(CHead d (Bind Abbr) u) (CHead c (Bind b) u2) (clear_gen_bind b c (CHead d -(Bind Abbr) u) u2 H10)) in ((let H12 \def (f_equal C B (\lambda (e: C).(match -e in C return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ -k0 _) \Rightarrow (match k0 in K return (\lambda (_: K).B) with [(Bind b0) -\Rightarrow b0 | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) -(CHead c (Bind b) u2) (clear_gen_bind b c (CHead d (Bind Abbr) u) u2 H10)) in -((let H13 \def (f_equal C T (\lambda (e: C).(match e in C return (\lambda (_: -C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t0) \Rightarrow t0])) (CHead -d (Bind Abbr) u) (CHead c (Bind b) u2) (clear_gen_bind b c (CHead d (Bind -Abbr) u) u2 H10)) in (\lambda (H14: (eq B Abbr b)).(\lambda (_: (eq C d -c)).(let H16 \def (eq_ind T u (\lambda (t0: T).(subst0 O t0 t4 t)) H9 u2 H13) -in (eq_ind B Abbr (\lambda (b0: B).(pc3 (CHead c (Bind b0) u1) t3 t)) -(ex2_ind T (\lambda (t0: T).(subst0 O u1 t4 t0)) (\lambda (t0: T).(pr0 t t0)) -(pc3 (CHead c (Bind Abbr) u1) t3 t) (\lambda (x: T).(\lambda (H17: (subst0 O -u1 t4 x)).(\lambda (H18: (pr0 t x)).(pc3_pr3_t (CHead c (Bind Abbr) u1) t3 x -(pr3_pr2 (CHead c (Bind Abbr) u1) t3 x (pr2_delta (CHead c (Bind Abbr) u1) c -u1 O (getl_refl Abbr c u1) t3 t4 H3 x H17)) t (pr3_pr2 (CHead c (Bind Abbr) -u1) t x (pr2_free (CHead c (Bind Abbr) u1) t x H18)))))) (pr0_subst0_fwd u2 -t4 t O H16 u1 H)) b H14))))) H12)) H11)))) (\lambda (f: F).(\lambda (H10: -(clear (CHead c (Flat f) u2) (CHead d (Bind Abbr) u))).(clear_pc3_trans -(CHead d (Bind Abbr) u) t3 t (pc3_pr2_r (CHead d (Bind Abbr) u) t3 t -(pr2_delta (CHead d (Bind Abbr) u) d u O (getl_refl Abbr d u) t3 t4 H3 t H9)) -(CHead c (Flat f) u1) (clear_flat c (CHead d (Bind Abbr) u) (clear_gen_flat f -c (CHead d (Bind Abbr) u) u2 H10) f u1)))) k (getl_gen_O (CHead c k u2) -(CHead d (Bind Abbr) u) H8)))) (\lambda (i0: nat).(\lambda (IHi: (((getl i0 -(CHead c k u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u t4 t) \to (pc3 -(CHead c k u1) t3 t))))).(\lambda (H8: (getl (S i0) (CHead c k u2) (CHead d -(Bind Abbr) u))).(\lambda (H9: (subst0 (S i0) u t4 t)).(K_ind (\lambda (k0: -K).((((getl i0 (CHead c k0 u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u t4 -t) \to (pc3 (CHead c k0 u1) t3 t)))) \to ((getl (r k0 i0) c (CHead d (Bind -Abbr) u)) \to (pc3 (CHead c k0 u1) t3 t)))) (\lambda (b: B).(\lambda (_: -(((getl i0 (CHead c (Bind b) u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u -t4 t) \to (pc3 (CHead c (Bind b) u1) t3 t))))).(\lambda (H10: (getl (r (Bind -b) i0) c (CHead d (Bind Abbr) u))).(pc3_pr2_r (CHead c (Bind b) u1) t3 t -(pr2_delta (CHead c (Bind b) u1) d u (S i0) (getl_head (Bind b) i0 c (CHead d -(Bind Abbr) u) H10 u1) t3 t4 H3 t H9))))) (\lambda (f: F).(\lambda (_: -(((getl i0 (CHead c (Flat f) u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u -t4 t) \to (pc3 (CHead c (Flat f) u1) t3 t))))).(\lambda (H10: (getl (r (Flat -f) i0) c (CHead d (Bind Abbr) u))).(pc3_pr2_r (CHead c (Flat f) u1) t3 t -(pr2_cflat c t3 t (pr2_delta c d u (r (Flat f) i0) H10 t3 t4 H3 t H9) f -u1))))) k IHi (getl_gen_S k c (CHead d (Bind Abbr) u) u2 i0 H8)))))) i H7 -H4)))))))))))))) y t1 t2 H1))) H0)))))))). -(* COMMENTS -Initial nodes: 1533 -END *) +(CHead c k u2) t1 t2)).(let TMP_1 \def (CHead c k u2) in (let TMP_2 \def +(\lambda (c0: C).(pr2 c0 t1 t2)) in (let TMP_4 \def (\lambda (_: C).(let +TMP_3 \def (CHead c k u1) in (pc3 TMP_3 t1 t2))) in (let TMP_125 \def +(\lambda (y: C).(\lambda (H1: (pr2 y t1 t2)).(let TMP_6 \def (\lambda (c0: +C).(\lambda (t: T).(\lambda (t0: T).((eq C c0 (CHead c k u2)) \to (let TMP_5 +\def (CHead c k u1) in (pc3 TMP_5 t t0)))))) in (let TMP_12 \def (\lambda +(c0: C).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H2: (pr0 t3 t4)).(\lambda +(H3: (eq C c0 (CHead c k u2))).(let TMP_7 \def (\lambda (e: C).e) in (let +TMP_8 \def (CHead c k u2) in (let H4 \def (f_equal C C TMP_7 c0 TMP_8 H3) in +(let TMP_9 \def (CHead c k u1) in (let TMP_10 \def (CHead c k u1) in (let +TMP_11 \def (pr2_free TMP_10 t3 t4 H2) in (pc3_pr2_r TMP_9 t3 t4 +TMP_11)))))))))))) in (let TMP_124 \def (\lambda (c0: C).(\lambda (d: +C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H2: (getl i c0 (CHead d (Bind +Abbr) u))).(\lambda (t3: T).(\lambda (t4: T).(\lambda (H3: (pr0 t3 +t4)).(\lambda (t: T).(\lambda (H4: (subst0 i u t4 t)).(\lambda (H5: (eq C c0 +(CHead c k u2))).(let TMP_13 \def (\lambda (e: C).e) in (let TMP_14 \def +(CHead c k u2) in (let H6 \def (f_equal C C TMP_13 c0 TMP_14 H5) in (let +TMP_17 \def (\lambda (c1: C).(let TMP_15 \def (Bind Abbr) in (let TMP_16 \def +(CHead d TMP_15 u) in (getl i c1 TMP_16)))) in (let TMP_18 \def (CHead c k +u2) in (let H7 \def (eq_ind C c0 TMP_17 H2 TMP_18 H6) in (let TMP_20 \def +(\lambda (n: nat).((getl n (CHead c k u2) (CHead d (Bind Abbr) u)) \to +((subst0 n u t4 t) \to (let TMP_19 \def (CHead c k u1) in (pc3 TMP_19 t3 +t))))) in (let TMP_99 \def (\lambda (H8: (getl O (CHead c k u2) (CHead d +(Bind Abbr) u))).(\lambda (H9: (subst0 O u t4 t)).(let TMP_22 \def (\lambda +(k0: K).((clear (CHead c k0 u2) (CHead d (Bind Abbr) u)) \to (let TMP_21 \def +(CHead c k0 u1) in (pc3 TMP_21 t3 t)))) in (let TMP_76 \def (\lambda (b: +B).(\lambda (H10: (clear (CHead c (Bind b) u2) (CHead d (Bind Abbr) u))).(let +TMP_23 \def (\lambda (e: C).(match e with [(CSort _) \Rightarrow d | (CHead +c1 _ _) \Rightarrow c1])) in (let TMP_24 \def (Bind Abbr) in (let TMP_25 \def +(CHead d TMP_24 u) in (let TMP_26 \def (Bind b) in (let TMP_27 \def (CHead c +TMP_26 u2) in (let TMP_28 \def (Bind Abbr) in (let TMP_29 \def (CHead d +TMP_28 u) in (let TMP_30 \def (clear_gen_bind b c TMP_29 u2 H10) in (let H11 +\def (f_equal C C TMP_23 TMP_25 TMP_27 TMP_30) in (let TMP_31 \def (\lambda +(e: C).(match e with [(CSort _) \Rightarrow Abbr | (CHead _ k0 _) \Rightarrow +(match k0 with [(Bind b0) \Rightarrow b0 | (Flat _) \Rightarrow Abbr])])) in +(let TMP_32 \def (Bind Abbr) in (let TMP_33 \def (CHead d TMP_32 u) in (let +TMP_34 \def (Bind b) in (let TMP_35 \def (CHead c TMP_34 u2) in (let TMP_36 +\def (Bind Abbr) in (let TMP_37 \def (CHead d TMP_36 u) in (let TMP_38 \def +(clear_gen_bind b c TMP_37 u2 H10) in (let H12 \def (f_equal C B TMP_31 +TMP_33 TMP_35 TMP_38) in (let TMP_39 \def (\lambda (e: C).(match e with +[(CSort _) \Rightarrow u | (CHead _ _ t0) \Rightarrow t0])) in (let TMP_40 +\def (Bind Abbr) in (let TMP_41 \def (CHead d TMP_40 u) in (let TMP_42 \def +(Bind b) in (let TMP_43 \def (CHead c TMP_42 u2) in (let TMP_44 \def (Bind +Abbr) in (let TMP_45 \def (CHead d TMP_44 u) in (let TMP_46 \def +(clear_gen_bind b c TMP_45 u2 H10) in (let H13 \def (f_equal C T TMP_39 +TMP_41 TMP_43 TMP_46) in (let TMP_74 \def (\lambda (H14: (eq B Abbr +b)).(\lambda (_: (eq C d c)).(let TMP_47 \def (\lambda (t0: T).(subst0 O t0 +t4 t)) in (let H16 \def (eq_ind T u TMP_47 H9 u2 H13) in (let TMP_50 \def +(\lambda (b0: B).(let TMP_48 \def (Bind b0) in (let TMP_49 \def (CHead c +TMP_48 u1) in (pc3 TMP_49 t3 t)))) in (let TMP_51 \def (\lambda (t0: +T).(subst0 O u1 t4 t0)) in (let TMP_52 \def (\lambda (t0: T).(pr0 t t0)) in +(let TMP_53 \def (Bind Abbr) in (let TMP_54 \def (CHead c TMP_53 u1) in (let +TMP_55 \def (pc3 TMP_54 t3 t) in (let TMP_71 \def (\lambda (x: T).(\lambda +(H17: (subst0 O u1 t4 x)).(\lambda (H18: (pr0 t x)).(let TMP_56 \def (Bind +Abbr) in (let TMP_57 \def (CHead c TMP_56 u1) in (let TMP_58 \def (Bind Abbr) +in (let TMP_59 \def (CHead c TMP_58 u1) in (let TMP_60 \def (Bind Abbr) in +(let TMP_61 \def (CHead c TMP_60 u1) in (let TMP_62 \def (getl_refl Abbr c +u1) in (let TMP_63 \def (pr2_delta TMP_61 c u1 O TMP_62 t3 t4 H3 x H17) in +(let TMP_64 \def (pr3_pr2 TMP_59 t3 x TMP_63) in (let TMP_65 \def (Bind Abbr) +in (let TMP_66 \def (CHead c TMP_65 u1) in (let TMP_67 \def (Bind Abbr) in +(let TMP_68 \def (CHead c TMP_67 u1) in (let TMP_69 \def (pr2_free TMP_68 t x +H18) in (let TMP_70 \def (pr3_pr2 TMP_66 t x TMP_69) in (pc3_pr3_t TMP_57 t3 +x TMP_64 t TMP_70))))))))))))))))))) in (let TMP_72 \def (pr0_subst0_fwd u2 +t4 t O H16 u1 H) in (let TMP_73 \def (ex2_ind T TMP_51 TMP_52 TMP_55 TMP_71 +TMP_72) in (eq_ind B Abbr TMP_50 TMP_73 b H14)))))))))))))) in (let TMP_75 +\def (TMP_74 H12) in (TMP_75 H11)))))))))))))))))))))))))))))))) in (let +TMP_94 \def (\lambda (f: F).(\lambda (H10: (clear (CHead c (Flat f) u2) +(CHead d (Bind Abbr) u))).(let TMP_77 \def (Bind Abbr) in (let TMP_78 \def +(CHead d TMP_77 u) in (let TMP_79 \def (Bind Abbr) in (let TMP_80 \def (CHead +d TMP_79 u) in (let TMP_81 \def (Bind Abbr) in (let TMP_82 \def (CHead d +TMP_81 u) in (let TMP_83 \def (getl_refl Abbr d u) in (let TMP_84 \def +(pr2_delta TMP_82 d u O TMP_83 t3 t4 H3 t H9) in (let TMP_85 \def (pc3_pr2_r +TMP_80 t3 t TMP_84) in (let TMP_86 \def (Flat f) in (let TMP_87 \def (CHead c +TMP_86 u1) in (let TMP_88 \def (Bind Abbr) in (let TMP_89 \def (CHead d +TMP_88 u) in (let TMP_90 \def (Bind Abbr) in (let TMP_91 \def (CHead d TMP_90 +u) in (let TMP_92 \def (clear_gen_flat f c TMP_91 u2 H10) in (let TMP_93 \def +(clear_flat c TMP_89 TMP_92 f u1) in (clear_pc3_trans TMP_78 t3 t TMP_85 +TMP_87 TMP_93)))))))))))))))))))) in (let TMP_95 \def (CHead c k u2) in (let +TMP_96 \def (Bind Abbr) in (let TMP_97 \def (CHead d TMP_96 u) in (let TMP_98 +\def (getl_gen_O TMP_95 TMP_97 H8) in (K_ind TMP_22 TMP_76 TMP_94 k +TMP_98)))))))))) in (let TMP_123 \def (\lambda (i0: nat).(\lambda (IHi: +(((getl i0 (CHead c k u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u t4 t) +\to (pc3 (CHead c k u1) t3 t))))).(\lambda (H8: (getl (S i0) (CHead c k u2) +(CHead d (Bind Abbr) u))).(\lambda (H9: (subst0 (S i0) u t4 t)).(let TMP_101 +\def (\lambda (k0: K).((((getl i0 (CHead c k0 u2) (CHead d (Bind Abbr) u)) +\to ((subst0 i0 u t4 t) \to (pc3 (CHead c k0 u1) t3 t)))) \to ((getl (r k0 +i0) c (CHead d (Bind Abbr) u)) \to (let TMP_100 \def (CHead c k0 u1) in (pc3 +TMP_100 t3 t))))) in (let TMP_112 \def (\lambda (b: B).(\lambda (_: (((getl +i0 (CHead c (Bind b) u2) (CHead d (Bind Abbr) u)) \to ((subst0 i0 u t4 t) \to +(pc3 (CHead c (Bind b) u1) t3 t))))).(\lambda (H10: (getl (r (Bind b) i0) c +(CHead d (Bind Abbr) u))).(let TMP_102 \def (Bind b) in (let TMP_103 \def +(CHead c TMP_102 u1) in (let TMP_104 \def (Bind b) in (let TMP_105 \def +(CHead c TMP_104 u1) in (let TMP_106 \def (S i0) in (let TMP_107 \def (Bind +b) in (let TMP_108 \def (Bind Abbr) in (let TMP_109 \def (CHead d TMP_108 u) +in (let TMP_110 \def (getl_head TMP_107 i0 c TMP_109 H10 u1) in (let TMP_111 +\def (pr2_delta TMP_105 d u TMP_106 TMP_110 t3 t4 H3 t H9) in (pc3_pr2_r +TMP_103 t3 t TMP_111)))))))))))))) in (let TMP_119 \def (\lambda (f: +F).(\lambda (_: (((getl i0 (CHead c (Flat f) u2) (CHead d (Bind Abbr) u)) \to +((subst0 i0 u t4 t) \to (pc3 (CHead c (Flat f) u1) t3 t))))).(\lambda (H10: +(getl (r (Flat f) i0) c (CHead d (Bind Abbr) u))).(let TMP_113 \def (Flat f) +in (let TMP_114 \def (CHead c TMP_113 u1) in (let TMP_115 \def (Flat f) in +(let TMP_116 \def (r TMP_115 i0) in (let TMP_117 \def (pr2_delta c d u +TMP_116 H10 t3 t4 H3 t H9) in (let TMP_118 \def (pr2_cflat c t3 t TMP_117 f +u1) in (pc3_pr2_r TMP_114 t3 t TMP_118)))))))))) in (let TMP_120 \def (Bind +Abbr) in (let TMP_121 \def (CHead d TMP_120 u) in (let TMP_122 \def +(getl_gen_S k c TMP_121 u2 i0 H8) in (K_ind TMP_101 TMP_112 TMP_119 k IHi +TMP_122))))))))))) in (nat_ind TMP_20 TMP_99 TMP_123 i H7 +H4))))))))))))))))))))) in (pr2_ind TMP_6 TMP_12 TMP_124 y t1 t2 H1)))))) in +(insert_eq C TMP_1 TMP_2 TMP_4 TMP_125 H0)))))))))))). theorem pc3_pr2_pr2_t: \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pr2 c u2 u1) \to (\forall @@ -321,83 +355,134 @@ theorem pc3_pr2_pr2_t: (CHead c k u1) t1 t2)))))))) \def \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr2 c u2 -u1)).(pr2_ind (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: T).(\forall (t1: -T).(\forall (t2: T).(\forall (k: K).((pr2 (CHead c0 k t) t1 t2) \to (pc3 -(CHead c0 k t0) t1 t2)))))))) (\lambda (c0: C).(\lambda (t1: T).(\lambda (t2: -T).(\lambda (H0: (pr0 t1 t2)).(\lambda (t0: T).(\lambda (t3: T).(\lambda (k: -K).(\lambda (H1: (pr2 (CHead c0 k t1) t0 t3)).(pc3_pr0_pr2_t t2 t1 H0 c0 t0 -t3 k H1))))))))) (\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda -(i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind Abbr) u))).(\lambda (t1: -T).(\lambda (t2: T).(\lambda (H1: (pr0 t1 t2)).(\lambda (t: T).(\lambda (H2: -(subst0 i u t2 t)).(\lambda (t0: T).(\lambda (t3: T).(\lambda (k: K).(\lambda -(H3: (pr2 (CHead c0 k t1) t0 t3)).(insert_eq C (CHead c0 k t1) (\lambda (c1: -C).(pr2 c1 t0 t3)) (\lambda (_: C).(pc3 (CHead c0 k t) t0 t3)) (\lambda (y: -C).(\lambda (H4: (pr2 y t0 t3)).(pr2_ind (\lambda (c1: C).(\lambda (t4: -T).(\lambda (t5: T).((eq C c1 (CHead c0 k t1)) \to (pc3 (CHead c0 k t) t4 -t5))))) (\lambda (c1: C).(\lambda (t4: T).(\lambda (t5: T).(\lambda (H5: (pr0 -t4 t5)).(\lambda (_: (eq C c1 (CHead c0 k t1))).(pc3_pr2_r (CHead c0 k t) t4 -t5 (pr2_free (CHead c0 k t) t4 t5 H5))))))) (\lambda (c1: C).(\lambda (d0: -C).(\lambda (u0: T).(\lambda (i0: nat).(\lambda (H5: (getl i0 c1 (CHead d0 -(Bind Abbr) u0))).(\lambda (t4: T).(\lambda (t5: T).(\lambda (H6: (pr0 t4 -t5)).(\lambda (t6: T).(\lambda (H7: (subst0 i0 u0 t5 t6)).(\lambda (H8: (eq C -c1 (CHead c0 k t1))).(let H9 \def (eq_ind C c1 (\lambda (c2: C).(getl i0 c2 -(CHead d0 (Bind Abbr) u0))) H5 (CHead c0 k t1) H8) in (nat_ind (\lambda (n: -nat).((getl n (CHead c0 k t1) (CHead d0 (Bind Abbr) u0)) \to ((subst0 n u0 t5 -t6) \to (pc3 (CHead c0 k t) t4 t6)))) (\lambda (H10: (getl O (CHead c0 k t1) -(CHead d0 (Bind Abbr) u0))).(\lambda (H11: (subst0 O u0 t5 t6)).(K_ind -(\lambda (k0: K).((clear (CHead c0 k0 t1) (CHead d0 (Bind Abbr) u0)) \to (pc3 -(CHead c0 k0 t) t4 t6))) (\lambda (b: B).(\lambda (H12: (clear (CHead c0 -(Bind b) t1) (CHead d0 (Bind Abbr) u0))).(let H13 \def (f_equal C C (\lambda -(e: C).(match e in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d0 -| (CHead c2 _ _) \Rightarrow c2])) (CHead d0 (Bind Abbr) u0) (CHead c0 (Bind -b) t1) (clear_gen_bind b c0 (CHead d0 (Bind Abbr) u0) t1 H12)) in ((let H14 -\def (f_equal C B (\lambda (e: C).(match e in C return (\lambda (_: C).B) -with [(CSort _) \Rightarrow Abbr | (CHead _ k0 _) \Rightarrow (match k0 in K -return (\lambda (_: K).B) with [(Bind b0) \Rightarrow b0 | (Flat _) -\Rightarrow Abbr])])) (CHead d0 (Bind Abbr) u0) (CHead c0 (Bind b) t1) -(clear_gen_bind b c0 (CHead d0 (Bind Abbr) u0) t1 H12)) in ((let H15 \def -(f_equal C T (\lambda (e: C).(match e in C return (\lambda (_: C).T) with -[(CSort _) \Rightarrow u0 | (CHead _ _ t7) \Rightarrow t7])) (CHead d0 (Bind -Abbr) u0) (CHead c0 (Bind b) t1) (clear_gen_bind b c0 (CHead d0 (Bind Abbr) -u0) t1 H12)) in (\lambda (H16: (eq B Abbr b)).(\lambda (_: (eq C d0 c0)).(let -H18 \def (eq_ind T u0 (\lambda (t7: T).(subst0 O t7 t5 t6)) H11 t1 H15) in -(eq_ind B Abbr (\lambda (b0: B).(pc3 (CHead c0 (Bind b0) t) t4 t6)) (ex2_ind -T (\lambda (t7: T).(subst0 O t2 t5 t7)) (\lambda (t7: T).(pr0 t6 t7)) (pc3 -(CHead c0 (Bind Abbr) t) t4 t6) (\lambda (x: T).(\lambda (H19: (subst0 O t2 -t5 x)).(\lambda (H20: (pr0 t6 x)).(ex2_ind T (\lambda (t7: T).(subst0 O t t5 -t7)) (\lambda (t7: T).(subst0 (S (plus i O)) u x t7)) (pc3 (CHead c0 (Bind -Abbr) t) t4 t6) (\lambda (x0: T).(\lambda (H21: (subst0 O t t5 x0)).(\lambda -(H22: (subst0 (S (plus i O)) u x x0)).(let H23 \def (f_equal nat nat S (plus -i O) i (sym_eq nat i (plus i O) (plus_n_O i))) in (let H24 \def (eq_ind nat -(S (plus i O)) (\lambda (n: nat).(subst0 n u x x0)) H22 (S i) H23) in -(pc3_pr2_u (CHead c0 (Bind Abbr) t) x0 t4 (pr2_delta (CHead c0 (Bind Abbr) t) -c0 t O (getl_refl Abbr c0 t) t4 t5 H6 x0 H21) t6 (pc3_pr2_x (CHead c0 (Bind -Abbr) t) x0 t6 (pr2_delta (CHead c0 (Bind Abbr) t) d u (S i) (getl_head (Bind -Abbr) i c0 (CHead d (Bind Abbr) u) H0 t) t6 x H20 x0 H24)))))))) -(subst0_subst0_back t5 x t2 O H19 t u i H2))))) (pr0_subst0_fwd t1 t5 t6 O -H18 t2 H1)) b H16))))) H14)) H13)))) (\lambda (f: F).(\lambda (H12: (clear -(CHead c0 (Flat f) t1) (CHead d0 (Bind Abbr) u0))).(clear_pc3_trans (CHead d0 -(Bind Abbr) u0) t4 t6 (pc3_pr2_r (CHead d0 (Bind Abbr) u0) t4 t6 (pr2_delta -(CHead d0 (Bind Abbr) u0) d0 u0 O (getl_refl Abbr d0 u0) t4 t5 H6 t6 H11)) -(CHead c0 (Flat f) t) (clear_flat c0 (CHead d0 (Bind Abbr) u0) -(clear_gen_flat f c0 (CHead d0 (Bind Abbr) u0) t1 H12) f t)))) k (getl_gen_O -(CHead c0 k t1) (CHead d0 (Bind Abbr) u0) H10)))) (\lambda (i1: nat).(\lambda -(_: (((getl i1 (CHead c0 k t1) (CHead d0 (Bind Abbr) u0)) \to ((subst0 i1 u0 -t5 t6) \to (pc3 (CHead c0 k t) t4 t6))))).(\lambda (H10: (getl (S i1) (CHead -c0 k t1) (CHead d0 (Bind Abbr) u0))).(\lambda (H11: (subst0 (S i1) u0 t5 -t6)).(K_ind (\lambda (k0: K).((getl (r k0 i1) c0 (CHead d0 (Bind Abbr) u0)) -\to (pc3 (CHead c0 k0 t) t4 t6))) (\lambda (b: B).(\lambda (H12: (getl (r -(Bind b) i1) c0 (CHead d0 (Bind Abbr) u0))).(pc3_pr2_r (CHead c0 (Bind b) t) -t4 t6 (pr2_delta (CHead c0 (Bind b) t) d0 u0 (S i1) (getl_head (Bind b) i1 c0 -(CHead d0 (Bind Abbr) u0) H12 t) t4 t5 H6 t6 H11)))) (\lambda (f: F).(\lambda -(H12: (getl (r (Flat f) i1) c0 (CHead d0 (Bind Abbr) u0))).(pc3_pr2_r (CHead -c0 (Flat f) t) t4 t6 (pr2_cflat c0 t4 t6 (pr2_delta c0 d0 u0 (r (Flat f) i1) -H12 t4 t5 H6 t6 H11) f t)))) k (getl_gen_S k c0 (CHead d0 (Bind Abbr) u0) t1 -i1 H10)))))) i0 H9 H7))))))))))))) y t0 t3 H4))) H3))))))))))))))) c u2 u1 -H)))). -(* COMMENTS -Initial nodes: 1671 -END *) +u1)).(let TMP_2 \def (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: +T).(\forall (t1: T).(\forall (t2: T).(\forall (k: K).((pr2 (CHead c0 k t) t1 +t2) \to (let TMP_1 \def (CHead c0 k t0) in (pc3 TMP_1 t1 t2))))))))) in (let +TMP_3 \def (\lambda (c0: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: +(pr0 t1 t2)).(\lambda (t0: T).(\lambda (t3: T).(\lambda (k: K).(\lambda (H1: +(pr2 (CHead c0 k t1) t0 t3)).(pc3_pr0_pr2_t t2 t1 H0 c0 t0 t3 k H1))))))))) +in (let TMP_144 \def (\lambda (c0: C).(\lambda (d: C).(\lambda (u: +T).(\lambda (i: nat).(\lambda (H0: (getl i c0 (CHead d (Bind Abbr) +u))).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H1: (pr0 t1 t2)).(\lambda +(t: T).(\lambda (H2: (subst0 i u t2 t)).(\lambda (t0: T).(\lambda (t3: +T).(\lambda (k: K).(\lambda (H3: (pr2 (CHead c0 k t1) t0 t3)).(let TMP_4 \def +(CHead c0 k t1) in (let TMP_5 \def (\lambda (c1: C).(pr2 c1 t0 t3)) in (let +TMP_7 \def (\lambda (_: C).(let TMP_6 \def (CHead c0 k t) in (pc3 TMP_6 t0 +t3))) in (let TMP_143 \def (\lambda (y: C).(\lambda (H4: (pr2 y t0 t3)).(let +TMP_9 \def (\lambda (c1: C).(\lambda (t4: T).(\lambda (t5: T).((eq C c1 +(CHead c0 k t1)) \to (let TMP_8 \def (CHead c0 k t) in (pc3 TMP_8 t4 t5)))))) +in (let TMP_13 \def (\lambda (c1: C).(\lambda (t4: T).(\lambda (t5: +T).(\lambda (H5: (pr0 t4 t5)).(\lambda (_: (eq C c1 (CHead c0 k t1))).(let +TMP_10 \def (CHead c0 k t) in (let TMP_11 \def (CHead c0 k t) in (let TMP_12 +\def (pr2_free TMP_11 t4 t5 H5) in (pc3_pr2_r TMP_10 t4 t5 TMP_12))))))))) in +(let TMP_142 \def (\lambda (c1: C).(\lambda (d0: C).(\lambda (u0: T).(\lambda +(i0: nat).(\lambda (H5: (getl i0 c1 (CHead d0 (Bind Abbr) u0))).(\lambda (t4: +T).(\lambda (t5: T).(\lambda (H6: (pr0 t4 t5)).(\lambda (t6: T).(\lambda (H7: +(subst0 i0 u0 t5 t6)).(\lambda (H8: (eq C c1 (CHead c0 k t1))).(let TMP_16 +\def (\lambda (c2: C).(let TMP_14 \def (Bind Abbr) in (let TMP_15 \def (CHead +d0 TMP_14 u0) in (getl i0 c2 TMP_15)))) in (let TMP_17 \def (CHead c0 k t1) +in (let H9 \def (eq_ind C c1 TMP_16 H5 TMP_17 H8) in (let TMP_19 \def +(\lambda (n: nat).((getl n (CHead c0 k t1) (CHead d0 (Bind Abbr) u0)) \to +((subst0 n u0 t5 t6) \to (let TMP_18 \def (CHead c0 k t) in (pc3 TMP_18 t4 +t6))))) in (let TMP_117 \def (\lambda (H10: (getl O (CHead c0 k t1) (CHead d0 +(Bind Abbr) u0))).(\lambda (H11: (subst0 O u0 t5 t6)).(let TMP_21 \def +(\lambda (k0: K).((clear (CHead c0 k0 t1) (CHead d0 (Bind Abbr) u0)) \to (let +TMP_20 \def (CHead c0 k0 t) in (pc3 TMP_20 t4 t6)))) in (let TMP_94 \def +(\lambda (b: B).(\lambda (H12: (clear (CHead c0 (Bind b) t1) (CHead d0 (Bind +Abbr) u0))).(let TMP_22 \def (\lambda (e: C).(match e with [(CSort _) +\Rightarrow d0 | (CHead c2 _ _) \Rightarrow c2])) in (let TMP_23 \def (Bind +Abbr) in (let TMP_24 \def (CHead d0 TMP_23 u0) in (let TMP_25 \def (Bind b) +in (let TMP_26 \def (CHead c0 TMP_25 t1) in (let TMP_27 \def (Bind Abbr) in +(let TMP_28 \def (CHead d0 TMP_27 u0) in (let TMP_29 \def (clear_gen_bind b +c0 TMP_28 t1 H12) in (let H13 \def (f_equal C C TMP_22 TMP_24 TMP_26 TMP_29) +in (let TMP_30 \def (\lambda (e: C).(match e with [(CSort _) \Rightarrow Abbr +| (CHead _ k0 _) \Rightarrow (match k0 with [(Bind b0) \Rightarrow b0 | (Flat +_) \Rightarrow Abbr])])) in (let TMP_31 \def (Bind Abbr) in (let TMP_32 \def +(CHead d0 TMP_31 u0) in (let TMP_33 \def (Bind b) in (let TMP_34 \def (CHead +c0 TMP_33 t1) in (let TMP_35 \def (Bind Abbr) in (let TMP_36 \def (CHead d0 +TMP_35 u0) in (let TMP_37 \def (clear_gen_bind b c0 TMP_36 t1 H12) in (let +H14 \def (f_equal C B TMP_30 TMP_32 TMP_34 TMP_37) in (let TMP_38 \def +(\lambda (e: C).(match e with [(CSort _) \Rightarrow u0 | (CHead _ _ t7) +\Rightarrow t7])) in (let TMP_39 \def (Bind Abbr) in (let TMP_40 \def (CHead +d0 TMP_39 u0) in (let TMP_41 \def (Bind b) in (let TMP_42 \def (CHead c0 +TMP_41 t1) in (let TMP_43 \def (Bind Abbr) in (let TMP_44 \def (CHead d0 +TMP_43 u0) in (let TMP_45 \def (clear_gen_bind b c0 TMP_44 t1 H12) in (let +H15 \def (f_equal C T TMP_38 TMP_40 TMP_42 TMP_45) in (let TMP_92 \def +(\lambda (H16: (eq B Abbr b)).(\lambda (_: (eq C d0 c0)).(let TMP_46 \def +(\lambda (t7: T).(subst0 O t7 t5 t6)) in (let H18 \def (eq_ind T u0 TMP_46 +H11 t1 H15) in (let TMP_49 \def (\lambda (b0: B).(let TMP_47 \def (Bind b0) +in (let TMP_48 \def (CHead c0 TMP_47 t) in (pc3 TMP_48 t4 t6)))) in (let +TMP_50 \def (\lambda (t7: T).(subst0 O t2 t5 t7)) in (let TMP_51 \def +(\lambda (t7: T).(pr0 t6 t7)) in (let TMP_52 \def (Bind Abbr) in (let TMP_53 +\def (CHead c0 TMP_52 t) in (let TMP_54 \def (pc3 TMP_53 t4 t6) in (let +TMP_89 \def (\lambda (x: T).(\lambda (H19: (subst0 O t2 t5 x)).(\lambda (H20: +(pr0 t6 x)).(let TMP_55 \def (\lambda (t7: T).(subst0 O t t5 t7)) in (let +TMP_58 \def (\lambda (t7: T).(let TMP_56 \def (plus i O) in (let TMP_57 \def +(S TMP_56) in (subst0 TMP_57 u x t7)))) in (let TMP_59 \def (Bind Abbr) in +(let TMP_60 \def (CHead c0 TMP_59 t) in (let TMP_61 \def (pc3 TMP_60 t4 t6) +in (let TMP_87 \def (\lambda (x0: T).(\lambda (H21: (subst0 O t t5 +x0)).(\lambda (H22: (subst0 (S (plus i O)) u x x0)).(let TMP_62 \def (plus i +O) in (let TMP_63 \def (plus i O) in (let TMP_64 \def (plus_n_O i) in (let +TMP_65 \def (sym_eq nat i TMP_63 TMP_64) in (let H23 \def (f_equal nat nat S +TMP_62 i TMP_65) in (let TMP_66 \def (plus i O) in (let TMP_67 \def (S +TMP_66) in (let TMP_68 \def (\lambda (n: nat).(subst0 n u x x0)) in (let +TMP_69 \def (S i) in (let H24 \def (eq_ind nat TMP_67 TMP_68 H22 TMP_69 H23) +in (let TMP_70 \def (Bind Abbr) in (let TMP_71 \def (CHead c0 TMP_70 t) in +(let TMP_72 \def (Bind Abbr) in (let TMP_73 \def (CHead c0 TMP_72 t) in (let +TMP_74 \def (getl_refl Abbr c0 t) in (let TMP_75 \def (pr2_delta TMP_73 c0 t +O TMP_74 t4 t5 H6 x0 H21) in (let TMP_76 \def (Bind Abbr) in (let TMP_77 \def +(CHead c0 TMP_76 t) in (let TMP_78 \def (Bind Abbr) in (let TMP_79 \def +(CHead c0 TMP_78 t) in (let TMP_80 \def (S i) in (let TMP_81 \def (Bind Abbr) +in (let TMP_82 \def (Bind Abbr) in (let TMP_83 \def (CHead d TMP_82 u) in +(let TMP_84 \def (getl_head TMP_81 i c0 TMP_83 H0 t) in (let TMP_85 \def +(pr2_delta TMP_79 d u TMP_80 TMP_84 t6 x H20 x0 H24) in (let TMP_86 \def +(pc3_pr2_x TMP_77 x0 t6 TMP_85) in (pc3_pr2_u TMP_71 x0 t4 TMP_75 t6 +TMP_86))))))))))))))))))))))))))))))) in (let TMP_88 \def (subst0_subst0_back +t5 x t2 O H19 t u i H2) in (ex2_ind T TMP_55 TMP_58 TMP_61 TMP_87 +TMP_88))))))))))) in (let TMP_90 \def (pr0_subst0_fwd t1 t5 t6 O H18 t2 H1) +in (let TMP_91 \def (ex2_ind T TMP_50 TMP_51 TMP_54 TMP_89 TMP_90) in (eq_ind +B Abbr TMP_49 TMP_91 b H16)))))))))))))) in (let TMP_93 \def (TMP_92 H14) in +(TMP_93 H13)))))))))))))))))))))))))))))))) in (let TMP_112 \def (\lambda (f: +F).(\lambda (H12: (clear (CHead c0 (Flat f) t1) (CHead d0 (Bind Abbr) +u0))).(let TMP_95 \def (Bind Abbr) in (let TMP_96 \def (CHead d0 TMP_95 u0) +in (let TMP_97 \def (Bind Abbr) in (let TMP_98 \def (CHead d0 TMP_97 u0) in +(let TMP_99 \def (Bind Abbr) in (let TMP_100 \def (CHead d0 TMP_99 u0) in +(let TMP_101 \def (getl_refl Abbr d0 u0) in (let TMP_102 \def (pr2_delta +TMP_100 d0 u0 O TMP_101 t4 t5 H6 t6 H11) in (let TMP_103 \def (pc3_pr2_r +TMP_98 t4 t6 TMP_102) in (let TMP_104 \def (Flat f) in (let TMP_105 \def +(CHead c0 TMP_104 t) in (let TMP_106 \def (Bind Abbr) in (let TMP_107 \def +(CHead d0 TMP_106 u0) in (let TMP_108 \def (Bind Abbr) in (let TMP_109 \def +(CHead d0 TMP_108 u0) in (let TMP_110 \def (clear_gen_flat f c0 TMP_109 t1 +H12) in (let TMP_111 \def (clear_flat c0 TMP_107 TMP_110 f t) in +(clear_pc3_trans TMP_96 t4 t6 TMP_103 TMP_105 TMP_111)))))))))))))))))))) in +(let TMP_113 \def (CHead c0 k t1) in (let TMP_114 \def (Bind Abbr) in (let +TMP_115 \def (CHead d0 TMP_114 u0) in (let TMP_116 \def (getl_gen_O TMP_113 +TMP_115 H10) in (K_ind TMP_21 TMP_94 TMP_112 k TMP_116)))))))))) in (let +TMP_141 \def (\lambda (i1: nat).(\lambda (_: (((getl i1 (CHead c0 k t1) +(CHead d0 (Bind Abbr) u0)) \to ((subst0 i1 u0 t5 t6) \to (pc3 (CHead c0 k t) +t4 t6))))).(\lambda (H10: (getl (S i1) (CHead c0 k t1) (CHead d0 (Bind Abbr) +u0))).(\lambda (H11: (subst0 (S i1) u0 t5 t6)).(let TMP_119 \def (\lambda +(k0: K).((getl (r k0 i1) c0 (CHead d0 (Bind Abbr) u0)) \to (let TMP_118 \def +(CHead c0 k0 t) in (pc3 TMP_118 t4 t6)))) in (let TMP_130 \def (\lambda (b: +B).(\lambda (H12: (getl (r (Bind b) i1) c0 (CHead d0 (Bind Abbr) u0))).(let +TMP_120 \def (Bind b) in (let TMP_121 \def (CHead c0 TMP_120 t) in (let +TMP_122 \def (Bind b) in (let TMP_123 \def (CHead c0 TMP_122 t) in (let +TMP_124 \def (S i1) in (let TMP_125 \def (Bind b) in (let TMP_126 \def (Bind +Abbr) in (let TMP_127 \def (CHead d0 TMP_126 u0) in (let TMP_128 \def +(getl_head TMP_125 i1 c0 TMP_127 H12 t) in (let TMP_129 \def (pr2_delta +TMP_123 d0 u0 TMP_124 TMP_128 t4 t5 H6 t6 H11) in (pc3_pr2_r TMP_121 t4 t6 +TMP_129))))))))))))) in (let TMP_137 \def (\lambda (f: F).(\lambda (H12: +(getl (r (Flat f) i1) c0 (CHead d0 (Bind Abbr) u0))).(let TMP_131 \def (Flat +f) in (let TMP_132 \def (CHead c0 TMP_131 t) in (let TMP_133 \def (Flat f) in +(let TMP_134 \def (r TMP_133 i1) in (let TMP_135 \def (pr2_delta c0 d0 u0 +TMP_134 H12 t4 t5 H6 t6 H11) in (let TMP_136 \def (pr2_cflat c0 t4 t6 TMP_135 +f t) in (pc3_pr2_r TMP_132 t4 t6 TMP_136))))))))) in (let TMP_138 \def (Bind +Abbr) in (let TMP_139 \def (CHead d0 TMP_138 u0) in (let TMP_140 \def +(getl_gen_S k c0 TMP_139 t1 i1 H10) in (K_ind TMP_119 TMP_130 TMP_137 k +TMP_140))))))))))) in (nat_ind TMP_19 TMP_117 TMP_141 i0 H9 +H7)))))))))))))))))) in (pr2_ind TMP_9 TMP_13 TMP_142 y t0 t3 H4)))))) in +(insert_eq C TMP_4 TMP_5 TMP_7 TMP_143 H3))))))))))))))))))) in (pr2_ind +TMP_2 TMP_3 TMP_144 c u2 u1 H))))))). theorem pc3_pr2_pr3_t: \forall (c: C).(\forall (u2: T).(\forall (t1: T).(\forall (t2: T).(\forall @@ -405,18 +490,18 @@ theorem pc3_pr2_pr3_t: (pc3 (CHead c k u1) t1 t2)))))))) \def \lambda (c: C).(\lambda (u2: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda -(k: K).(\lambda (H: (pr3 (CHead c k u2) t1 t2)).(pr3_ind (CHead c k u2) -(\lambda (t: T).(\lambda (t0: T).(\forall (u1: T).((pr2 c u2 u1) \to (pc3 -(CHead c k u1) t t0))))) (\lambda (t: T).(\lambda (u1: T).(\lambda (_: (pr2 c -u2 u1)).(pc3_refl (CHead c k u1) t)))) (\lambda (t0: T).(\lambda (t3: -T).(\lambda (H0: (pr2 (CHead c k u2) t3 t0)).(\lambda (t4: T).(\lambda (_: -(pr3 (CHead c k u2) t0 t4)).(\lambda (H2: ((\forall (u1: T).((pr2 c u2 u1) -\to (pc3 (CHead c k u1) t0 t4))))).(\lambda (u1: T).(\lambda (H3: (pr2 c u2 -u1)).(pc3_t t0 (CHead c k u1) t3 (pc3_pr2_pr2_t c u1 u2 H3 t3 t0 k H0) t4 (H2 -u1 H3)))))))))) t1 t2 H)))))). -(* COMMENTS -Initial nodes: 199 -END *) +(k: K).(\lambda (H: (pr3 (CHead c k u2) t1 t2)).(let TMP_1 \def (CHead c k +u2) in (let TMP_3 \def (\lambda (t: T).(\lambda (t0: T).(\forall (u1: +T).((pr2 c u2 u1) \to (let TMP_2 \def (CHead c k u1) in (pc3 TMP_2 t t0)))))) +in (let TMP_5 \def (\lambda (t: T).(\lambda (u1: T).(\lambda (_: (pr2 c u2 +u1)).(let TMP_4 \def (CHead c k u1) in (pc3_refl TMP_4 t))))) in (let TMP_9 +\def (\lambda (t0: T).(\lambda (t3: T).(\lambda (H0: (pr2 (CHead c k u2) t3 +t0)).(\lambda (t4: T).(\lambda (_: (pr3 (CHead c k u2) t0 t4)).(\lambda (H2: +((\forall (u1: T).((pr2 c u2 u1) \to (pc3 (CHead c k u1) t0 t4))))).(\lambda +(u1: T).(\lambda (H3: (pr2 c u2 u1)).(let TMP_6 \def (CHead c k u1) in (let +TMP_7 \def (pc3_pr2_pr2_t c u1 u2 H3 t3 t0 k H0) in (let TMP_8 \def (H2 u1 +H3) in (pc3_t t0 TMP_6 t3 TMP_7 t4 TMP_8)))))))))))) in (pr3_ind TMP_1 TMP_3 +TMP_5 TMP_9 t1 t2 H)))))))))). theorem pc3_pr3_pc3_t: \forall (c: C).(\forall (u1: T).(\forall (u2: T).((pr3 c u2 u1) \to (\forall @@ -424,23 +509,26 @@ theorem pc3_pr3_pc3_t: (CHead c k u1) t1 t2)))))))) \def \lambda (c: C).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H: (pr3 c u2 -u1)).(pr3_ind c (\lambda (t: T).(\lambda (t0: T).(\forall (t1: T).(\forall -(t2: T).(\forall (k: K).((pc3 (CHead c k t) t1 t2) \to (pc3 (CHead c k t0) t1 -t2))))))) (\lambda (t: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (k: -K).(\lambda (H0: (pc3 (CHead c k t) t1 t2)).H0))))) (\lambda (t2: T).(\lambda +u1)).(let TMP_2 \def (\lambda (t: T).(\lambda (t0: T).(\forall (t1: +T).(\forall (t2: T).(\forall (k: K).((pc3 (CHead c k t) t1 t2) \to (let TMP_1 +\def (CHead c k t0) in (pc3 TMP_1 t1 t2)))))))) in (let TMP_3 \def (\lambda +(t: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (k: K).(\lambda (H0: (pc3 +(CHead c k t) t1 t2)).H0))))) in (let TMP_17 \def (\lambda (t2: T).(\lambda (t1: T).(\lambda (H0: (pr2 c t1 t2)).(\lambda (t3: T).(\lambda (_: (pr3 c t2 t3)).(\lambda (H2: ((\forall (t4: T).(\forall (t5: T).(\forall (k: K).((pc3 (CHead c k t2) t4 t5) \to (pc3 (CHead c k t3) t4 t5))))))).(\lambda (t0: T).(\lambda (t4: T).(\lambda (k: K).(\lambda (H3: (pc3 (CHead c k t1) t0 -t4)).(H2 t0 t4 k (let H4 \def H3 in (ex2_ind T (\lambda (t: T).(pr3 (CHead c -k t1) t0 t)) (\lambda (t: T).(pr3 (CHead c k t1) t4 t)) (pc3 (CHead c k t2) -t0 t4) (\lambda (x: T).(\lambda (H5: (pr3 (CHead c k t1) t0 x)).(\lambda (H6: -(pr3 (CHead c k t1) t4 x)).(pc3_t x (CHead c k t2) t0 (pc3_pr2_pr3_t c t1 t0 -x k H5 t2 H0) t4 (pc3_s (CHead c k t2) x t4 (pc3_pr2_pr3_t c t1 t4 x k H6 t2 -H0)))))) H4))))))))))))) u2 u1 H)))). -(* COMMENTS -Initial nodes: 319 -END *) +t4)).(let H4 \def H3 in (let TMP_5 \def (\lambda (t: T).(let TMP_4 \def +(CHead c k t1) in (pr3 TMP_4 t0 t))) in (let TMP_7 \def (\lambda (t: T).(let +TMP_6 \def (CHead c k t1) in (pr3 TMP_6 t4 t))) in (let TMP_8 \def (CHead c k +t2) in (let TMP_9 \def (pc3 TMP_8 t0 t4) in (let TMP_15 \def (\lambda (x: +T).(\lambda (H5: (pr3 (CHead c k t1) t0 x)).(\lambda (H6: (pr3 (CHead c k t1) +t4 x)).(let TMP_10 \def (CHead c k t2) in (let TMP_11 \def (pc3_pr2_pr3_t c +t1 t0 x k H5 t2 H0) in (let TMP_12 \def (CHead c k t2) in (let TMP_13 \def +(pc3_pr2_pr3_t c t1 t4 x k H6 t2 H0) in (let TMP_14 \def (pc3_s TMP_12 x t4 +TMP_13) in (pc3_t x TMP_10 t0 TMP_11 t4 TMP_14))))))))) in (let TMP_16 \def +(ex2_ind T TMP_5 TMP_7 TMP_9 TMP_15 H4) in (H2 t0 t4 k +TMP_16)))))))))))))))))) in (pr3_ind c TMP_2 TMP_3 TMP_17 u2 u1 H))))))). theorem pc3_lift: \forall (c: C).(\forall (e: C).(\forall (h: nat).(\forall (d: nat).((drop h @@ -449,14 +537,15 @@ h d t1) (lift h d t2))))))))) \def \lambda (c: C).(\lambda (e: C).(\lambda (h: nat).(\lambda (d: nat).(\lambda (H: (drop h d c e)).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pc3 e t1 -t2)).(let H1 \def H0 in (ex2_ind T (\lambda (t: T).(pr3 e t1 t)) (\lambda (t: -T).(pr3 e t2 t)) (pc3 c (lift h d t1) (lift h d t2)) (\lambda (x: T).(\lambda -(H2: (pr3 e t1 x)).(\lambda (H3: (pr3 e t2 x)).(pc3_pr3_t c (lift h d t1) -(lift h d x) (pr3_lift c e h d H t1 x H2) (lift h d t2) (pr3_lift c e h d H -t2 x H3))))) H1))))))))). -(* COMMENTS -Initial nodes: 159 -END *) +t2)).(let H1 \def H0 in (let TMP_1 \def (\lambda (t: T).(pr3 e t1 t)) in (let +TMP_2 \def (\lambda (t: T).(pr3 e t2 t)) in (let TMP_3 \def (lift h d t1) in +(let TMP_4 \def (lift h d t2) in (let TMP_5 \def (pc3 c TMP_3 TMP_4) in (let +TMP_11 \def (\lambda (x: T).(\lambda (H2: (pr3 e t1 x)).(\lambda (H3: (pr3 e +t2 x)).(let TMP_6 \def (lift h d t1) in (let TMP_7 \def (lift h d x) in (let +TMP_8 \def (pr3_lift c e h d H t1 x H2) in (let TMP_9 \def (lift h d t2) in +(let TMP_10 \def (pr3_lift c e h d H t2 x H3) in (pc3_pr3_t c TMP_6 TMP_7 +TMP_8 TMP_9 TMP_10))))))))) in (ex2_ind T TMP_1 TMP_2 TMP_5 TMP_11 +H1))))))))))))))). theorem pc3_eta: \forall (c: C).(\forall (t: T).(\forall (w: T).(\forall (u: T).((pc3 c t @@ -465,19 +554,46 @@ theorem pc3_eta: \def \lambda (c: C).(\lambda (t: T).(\lambda (w: T).(\lambda (u: T).(\lambda (H: (pc3 c t (THead (Bind Abst) w u))).(\lambda (v: T).(\lambda (H0: (pc3 c v -w)).(pc3_t (THead (Bind Abst) w (THead (Flat Appl) (TLRef O) (lift (S O) O -(THead (Bind Abst) w u)))) c (THead (Bind Abst) v (THead (Flat Appl) (TLRef -O) (lift (S O) O t))) (pc3_head_21 c v w H0 (Bind Abst) (THead (Flat Appl) -(TLRef O) (lift (S O) O t)) (THead (Flat Appl) (TLRef O) (lift (S O) O (THead -(Bind Abst) w u))) (pc3_thin_dx (CHead c (Bind Abst) v) (lift (S O) O t) -(lift (S O) O (THead (Bind Abst) w u)) (pc3_lift (CHead c (Bind Abst) v) c (S -O) O (drop_drop (Bind Abst) O c c (drop_refl c) v) t (THead (Bind Abst) w u) -H) (TLRef O) Appl)) t (pc3_t (THead (Bind Abst) w u) c (THead (Bind Abst) w -(THead (Flat Appl) (TLRef O) (lift (S O) O (THead (Bind Abst) w u)))) -(pc3_pr3_r c (THead (Bind Abst) w (THead (Flat Appl) (TLRef O) (lift (S O) O -(THead (Bind Abst) w u)))) (THead (Bind Abst) w u) (pr3_eta c w u w (pr3_refl -c w))) t (pc3_s c (THead (Bind Abst) w u) t H))))))))). -(* COMMENTS -Initial nodes: 399 -END *) +w)).(let TMP_1 \def (Bind Abst) in (let TMP_2 \def (Flat Appl) in (let TMP_3 +\def (TLRef O) in (let TMP_4 \def (S O) in (let TMP_5 \def (Bind Abst) in +(let TMP_6 \def (THead TMP_5 w u) in (let TMP_7 \def (lift TMP_4 O TMP_6) in +(let TMP_8 \def (THead TMP_2 TMP_3 TMP_7) in (let TMP_9 \def (THead TMP_1 w +TMP_8) in (let TMP_10 \def (Bind Abst) in (let TMP_11 \def (Flat Appl) in +(let TMP_12 \def (TLRef O) in (let TMP_13 \def (S O) in (let TMP_14 \def +(lift TMP_13 O t) in (let TMP_15 \def (THead TMP_11 TMP_12 TMP_14) in (let +TMP_16 \def (THead TMP_10 v TMP_15) in (let TMP_17 \def (Bind Abst) in (let +TMP_18 \def (Flat Appl) in (let TMP_19 \def (TLRef O) in (let TMP_20 \def (S +O) in (let TMP_21 \def (lift TMP_20 O t) in (let TMP_22 \def (THead TMP_18 +TMP_19 TMP_21) in (let TMP_23 \def (Flat Appl) in (let TMP_24 \def (TLRef O) +in (let TMP_25 \def (S O) in (let TMP_26 \def (Bind Abst) in (let TMP_27 \def +(THead TMP_26 w u) in (let TMP_28 \def (lift TMP_25 O TMP_27) in (let TMP_29 +\def (THead TMP_23 TMP_24 TMP_28) in (let TMP_30 \def (Bind Abst) in (let +TMP_31 \def (CHead c TMP_30 v) in (let TMP_32 \def (S O) in (let TMP_33 \def +(lift TMP_32 O t) in (let TMP_34 \def (S O) in (let TMP_35 \def (Bind Abst) +in (let TMP_36 \def (THead TMP_35 w u) in (let TMP_37 \def (lift TMP_34 O +TMP_36) in (let TMP_38 \def (Bind Abst) in (let TMP_39 \def (CHead c TMP_38 +v) in (let TMP_40 \def (S O) in (let TMP_41 \def (Bind Abst) in (let TMP_42 +\def (drop_refl c) in (let TMP_43 \def (drop_drop TMP_41 O c c TMP_42 v) in +(let TMP_44 \def (Bind Abst) in (let TMP_45 \def (THead TMP_44 w u) in (let +TMP_46 \def (pc3_lift TMP_39 c TMP_40 O TMP_43 t TMP_45 H) in (let TMP_47 +\def (TLRef O) in (let TMP_48 \def (pc3_thin_dx TMP_31 TMP_33 TMP_37 TMP_46 +TMP_47 Appl) in (let TMP_49 \def (pc3_head_21 c v w H0 TMP_17 TMP_22 TMP_29 +TMP_48) in (let TMP_50 \def (Bind Abst) in (let TMP_51 \def (THead TMP_50 w +u) in (let TMP_52 \def (Bind Abst) in (let TMP_53 \def (Flat Appl) in (let +TMP_54 \def (TLRef O) in (let TMP_55 \def (S O) in (let TMP_56 \def (Bind +Abst) in (let TMP_57 \def (THead TMP_56 w u) in (let TMP_58 \def (lift TMP_55 +O TMP_57) in (let TMP_59 \def (THead TMP_53 TMP_54 TMP_58) in (let TMP_60 +\def (THead TMP_52 w TMP_59) in (let TMP_61 \def (Bind Abst) in (let TMP_62 +\def (Flat Appl) in (let TMP_63 \def (TLRef O) in (let TMP_64 \def (S O) in +(let TMP_65 \def (Bind Abst) in (let TMP_66 \def (THead TMP_65 w u) in (let +TMP_67 \def (lift TMP_64 O TMP_66) in (let TMP_68 \def (THead TMP_62 TMP_63 +TMP_67) in (let TMP_69 \def (THead TMP_61 w TMP_68) in (let TMP_70 \def (Bind +Abst) in (let TMP_71 \def (THead TMP_70 w u) in (let TMP_72 \def (pr3_refl c +w) in (let TMP_73 \def (pr3_eta c w u w TMP_72) in (let TMP_74 \def +(pc3_pr3_r c TMP_69 TMP_71 TMP_73) in (let TMP_75 \def (Bind Abst) in (let +TMP_76 \def (THead TMP_75 w u) in (let TMP_77 \def (pc3_s c TMP_76 t H) in +(let TMP_78 \def (pc3_t TMP_51 c TMP_60 TMP_74 t TMP_77) in (pc3_t TMP_9 c +TMP_16 TMP_49 t +TMP_78)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +))))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc3/subst1.ma b/matita/matita/contribs/lambdadelta/basic_1/pc3/subst1.ma index 3af245b3a..75a8794fd 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc3/subst1.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc3/subst1.ma @@ -14,9 +14,9 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pc3/props.ma". +include "basic_1/pc3/props.ma". -include "Basic-1/pr3/subst1.ma". +include "basic_1/pr3/subst1.ma". theorem pc3_gen_cabbr: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pc3 c t1 t2) \to (\forall @@ -30,19 +30,24 @@ t2)).(\lambda (e: C).(\lambda (u: T).(\lambda (d: nat).(\lambda (H0: (getl d c (CHead e (Bind Abbr) u))).(\lambda (a0: C).(\lambda (H1: (csubst1 d u c a0)).(\lambda (a: C).(\lambda (H2: (drop (S O) d a0 a)).(\lambda (x1: T).(\lambda (H3: (subst1 d u t1 (lift (S O) d x1))).(\lambda (x2: T).(\lambda -(H4: (subst1 d u t2 (lift (S O) d x2))).(let H5 \def H in (ex2_ind T (\lambda -(t: T).(pr3 c t1 t)) (\lambda (t: T).(pr3 c t2 t)) (pc3 a x1 x2) (\lambda (x: -T).(\lambda (H6: (pr3 c t1 x)).(\lambda (H7: (pr3 c t2 x)).(ex2_ind T -(\lambda (x3: T).(subst1 d u x (lift (S O) d x3))) (\lambda (x3: T).(pr3 a x2 -x3)) (pc3 a x1 x2) (\lambda (x0: T).(\lambda (H8: (subst1 d u x (lift (S O) d -x0))).(\lambda (H9: (pr3 a x2 x0)).(ex2_ind T (\lambda (x3: T).(subst1 d u x -(lift (S O) d x3))) (\lambda (x3: T).(pr3 a x1 x3)) (pc3 a x1 x2) (\lambda -(x3: T).(\lambda (H10: (subst1 d u x (lift (S O) d x3))).(\lambda (H11: (pr3 -a x1 x3)).(let H12 \def (eq_ind T x3 (\lambda (t: T).(pr3 a x1 t)) H11 x0 -(subst1_confluence_lift x x3 u d H10 x0 H8)) in (pc3_pr3_t a x1 x0 H12 x2 -H9))))) (pr3_gen_cabbr c t1 x H6 e u d H0 a0 H1 a H2 x1 H3))))) -(pr3_gen_cabbr c t2 x H7 e u d H0 a0 H1 a H2 x2 H4))))) H5))))))))))))))))). -(* COMMENTS -Initial nodes: 405 -END *) +(H4: (subst1 d u t2 (lift (S O) d x2))).(let H5 \def H in (let TMP_1 \def +(\lambda (t: T).(pr3 c t1 t)) in (let TMP_2 \def (\lambda (t: T).(pr3 c t2 +t)) in (let TMP_3 \def (pc3 a x1 x2) in (let TMP_20 \def (\lambda (x: +T).(\lambda (H6: (pr3 c t1 x)).(\lambda (H7: (pr3 c t2 x)).(let TMP_6 \def +(\lambda (x3: T).(let TMP_4 \def (S O) in (let TMP_5 \def (lift TMP_4 d x3) +in (subst1 d u x TMP_5)))) in (let TMP_7 \def (\lambda (x3: T).(pr3 a x2 x3)) +in (let TMP_8 \def (pc3 a x1 x2) in (let TMP_18 \def (\lambda (x0: +T).(\lambda (H8: (subst1 d u x (lift (S O) d x0))).(\lambda (H9: (pr3 a x2 +x0)).(let TMP_11 \def (\lambda (x3: T).(let TMP_9 \def (S O) in (let TMP_10 +\def (lift TMP_9 d x3) in (subst1 d u x TMP_10)))) in (let TMP_12 \def +(\lambda (x3: T).(pr3 a x1 x3)) in (let TMP_13 \def (pc3 a x1 x2) in (let +TMP_16 \def (\lambda (x3: T).(\lambda (H10: (subst1 d u x (lift (S O) d +x3))).(\lambda (H11: (pr3 a x1 x3)).(let TMP_14 \def (\lambda (t: T).(pr3 a +x1 t)) in (let TMP_15 \def (subst1_confluence_lift x x3 u d H10 x0 H8) in +(let H12 \def (eq_ind T x3 TMP_14 H11 x0 TMP_15) in (pc3_pr3_t a x1 x0 H12 x2 +H9))))))) in (let TMP_17 \def (pr3_gen_cabbr c t1 x H6 e u d H0 a0 H1 a H2 x1 +H3) in (ex2_ind T TMP_11 TMP_12 TMP_13 TMP_16 TMP_17))))))))) in (let TMP_19 +\def (pr3_gen_cabbr c t2 x H7 e u d H0 a0 H1 a H2 x2 H4) in (ex2_ind T TMP_6 +TMP_7 TMP_8 TMP_18 TMP_19))))))))) in (ex2_ind T TMP_1 TMP_2 TMP_3 TMP_20 +H5))))))))))))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/pc3/wcpr0.ma b/matita/matita/contribs/lambdadelta/basic_1/pc3/wcpr0.ma index 2b51edf62..a5d7b1c25 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/pc3/wcpr0.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/pc3/wcpr0.ma @@ -14,9 +14,9 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pc3/props.ma". +include "basic_1/pc3/props.ma". -include "Basic-1/wcpr0/getl.ma". +include "basic_1/wcpr0/getl.ma". theorem pc3_wcpr0__pc3_wcpr0_t_aux: \forall (c1: C).(\forall (c2: C).((wcpr0 c1 c2) \to (\forall (k: K).(\forall @@ -25,72 +25,92 @@ theorem pc3_wcpr0__pc3_wcpr0_t_aux: \def \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c1 c2)).(\lambda (k: K).(\lambda (u: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H0: (pr3 -(CHead c1 k u) t1 t2)).(pr3_ind (CHead c1 k u) (\lambda (t: T).(\lambda (t0: -T).(pc3 (CHead c2 k u) t t0))) (\lambda (t: T).(pc3_refl (CHead c2 k u) t)) -(\lambda (t3: T).(\lambda (t4: T).(\lambda (H1: (pr2 (CHead c1 k u) t4 -t3)).(\lambda (t5: T).(\lambda (_: (pr3 (CHead c1 k u) t3 t5)).(\lambda (H3: -(pc3 (CHead c2 k u) t3 t5)).(pc3_t t3 (CHead c2 k u) t4 (insert_eq C (CHead -c1 k u) (\lambda (c: C).(pr2 c t4 t3)) (\lambda (_: C).(pc3 (CHead c2 k u) t4 -t3)) (\lambda (y: C).(\lambda (H4: (pr2 y t4 t3)).(pr2_ind (\lambda (c: -C).(\lambda (t: T).(\lambda (t0: T).((eq C c (CHead c1 k u)) \to (pc3 (CHead -c2 k u) t t0))))) (\lambda (c: C).(\lambda (t6: T).(\lambda (t0: T).(\lambda -(H5: (pr0 t6 t0)).(\lambda (_: (eq C c (CHead c1 k u))).(pc3_pr2_r (CHead c2 -k u) t6 t0 (pr2_free (CHead c2 k u) t6 t0 H5))))))) (\lambda (c: C).(\lambda -(d: C).(\lambda (u0: T).(\lambda (i: nat).(\lambda (H5: (getl i c (CHead d -(Bind Abbr) u0))).(\lambda (t6: T).(\lambda (t0: T).(\lambda (H6: (pr0 t6 +(CHead c1 k u) t1 t2)).(let TMP_1 \def (CHead c1 k u) in (let TMP_3 \def +(\lambda (t: T).(\lambda (t0: T).(let TMP_2 \def (CHead c2 k u) in (pc3 TMP_2 +t t0)))) in (let TMP_5 \def (\lambda (t: T).(let TMP_4 \def (CHead c2 k u) in +(pc3_refl TMP_4 t))) in (let TMP_52 \def (\lambda (t3: T).(\lambda (t4: +T).(\lambda (H1: (pr2 (CHead c1 k u) t4 t3)).(\lambda (t5: T).(\lambda (_: +(pr3 (CHead c1 k u) t3 t5)).(\lambda (H3: (pc3 (CHead c2 k u) t3 t5)).(let +TMP_6 \def (CHead c2 k u) in (let TMP_7 \def (CHead c1 k u) in (let TMP_8 +\def (\lambda (c: C).(pr2 c t4 t3)) in (let TMP_10 \def (\lambda (_: C).(let +TMP_9 \def (CHead c2 k u) in (pc3 TMP_9 t4 t3))) in (let TMP_50 \def (\lambda +(y: C).(\lambda (H4: (pr2 y t4 t3)).(let TMP_12 \def (\lambda (c: C).(\lambda +(t: T).(\lambda (t0: T).((eq C c (CHead c1 k u)) \to (let TMP_11 \def (CHead +c2 k u) in (pc3 TMP_11 t t0)))))) in (let TMP_16 \def (\lambda (c: +C).(\lambda (t6: T).(\lambda (t0: T).(\lambda (H5: (pr0 t6 t0)).(\lambda (_: +(eq C c (CHead c1 k u))).(let TMP_13 \def (CHead c2 k u) in (let TMP_14 \def +(CHead c2 k u) in (let TMP_15 \def (pr2_free TMP_14 t6 t0 H5) in (pc3_pr2_r +TMP_13 t6 t0 TMP_15))))))))) in (let TMP_49 \def (\lambda (c: C).(\lambda (d: +C).(\lambda (u0: T).(\lambda (i: nat).(\lambda (H5: (getl i c (CHead d (Bind +Abbr) u0))).(\lambda (t6: T).(\lambda (t0: T).(\lambda (H6: (pr0 t6 t0)).(\lambda (t: T).(\lambda (H7: (subst0 i u0 t0 t)).(\lambda (H8: (eq C c -(CHead c1 k u))).(let H9 \def (eq_ind C c (\lambda (c0: C).(getl i c0 (CHead -d (Bind Abbr) u0))) H5 (CHead c1 k u) H8) in (ex3_2_ind C T (\lambda (e2: -C).(\lambda (u2: T).(getl i (CHead c2 k u) (CHead e2 (Bind Abbr) u2)))) -(\lambda (e2: C).(\lambda (_: T).(wcpr0 d e2))) (\lambda (_: C).(\lambda (u2: -T).(pr0 u0 u2))) (pc3 (CHead c2 k u) t6 t) (\lambda (x0: C).(\lambda (x1: -T).(\lambda (H10: (getl i (CHead c2 k u) (CHead x0 (Bind Abbr) x1))).(\lambda -(_: (wcpr0 d x0)).(\lambda (H12: (pr0 u0 x1)).(ex2_ind T (\lambda (t7: -T).(subst0 i x1 t0 t7)) (\lambda (t7: T).(pr0 t t7)) (pc3 (CHead c2 k u) t6 -t) (\lambda (x: T).(\lambda (H13: (subst0 i x1 t0 x)).(\lambda (H14: (pr0 t -x)).(pc3_pr2_u (CHead c2 k u) x t6 (pr2_delta (CHead c2 k u) x0 x1 i H10 t6 -t0 H6 x H13) t (pc3_pr2_x (CHead c2 k u) x t (pr2_free (CHead c2 k u) t x -H14)))))) (pr0_subst0_fwd u0 t0 t i H7 x1 H12))))))) (wcpr0_getl (CHead c1 k -u) (CHead c2 k u) (wcpr0_comp c1 c2 H u u (pr0_refl u) k) i d u0 (Bind Abbr) -H9)))))))))))))) y t4 t3 H4))) H1) t5 H3))))))) t1 t2 H0)))))))). -(* COMMENTS -Initial nodes: 689 -END *) +(CHead c1 k u))).(let TMP_19 \def (\lambda (c0: C).(let TMP_17 \def (Bind +Abbr) in (let TMP_18 \def (CHead d TMP_17 u0) in (getl i c0 TMP_18)))) in +(let TMP_20 \def (CHead c1 k u) in (let H9 \def (eq_ind C c TMP_19 H5 TMP_20 +H8) in (let TMP_24 \def (\lambda (e2: C).(\lambda (u2: T).(let TMP_21 \def +(CHead c2 k u) in (let TMP_22 \def (Bind Abbr) in (let TMP_23 \def (CHead e2 +TMP_22 u2) in (getl i TMP_21 TMP_23)))))) in (let TMP_25 \def (\lambda (e2: +C).(\lambda (_: T).(wcpr0 d e2))) in (let TMP_26 \def (\lambda (_: +C).(\lambda (u2: T).(pr0 u0 u2))) in (let TMP_27 \def (CHead c2 k u) in (let +TMP_28 \def (pc3 TMP_27 t6 t) in (let TMP_42 \def (\lambda (x0: C).(\lambda +(x1: T).(\lambda (H10: (getl i (CHead c2 k u) (CHead x0 (Bind Abbr) +x1))).(\lambda (_: (wcpr0 d x0)).(\lambda (H12: (pr0 u0 x1)).(let TMP_29 \def +(\lambda (t7: T).(subst0 i x1 t0 t7)) in (let TMP_30 \def (\lambda (t7: +T).(pr0 t t7)) in (let TMP_31 \def (CHead c2 k u) in (let TMP_32 \def (pc3 +TMP_31 t6 t) in (let TMP_40 \def (\lambda (x: T).(\lambda (H13: (subst0 i x1 +t0 x)).(\lambda (H14: (pr0 t x)).(let TMP_33 \def (CHead c2 k u) in (let +TMP_34 \def (CHead c2 k u) in (let TMP_35 \def (pr2_delta TMP_34 x0 x1 i H10 +t6 t0 H6 x H13) in (let TMP_36 \def (CHead c2 k u) in (let TMP_37 \def (CHead +c2 k u) in (let TMP_38 \def (pr2_free TMP_37 t x H14) in (let TMP_39 \def +(pc3_pr2_x TMP_36 x t TMP_38) in (pc3_pr2_u TMP_33 x t6 TMP_35 t +TMP_39))))))))))) in (let TMP_41 \def (pr0_subst0_fwd u0 t0 t i H7 x1 H12) in +(ex2_ind T TMP_29 TMP_30 TMP_32 TMP_40 TMP_41)))))))))))) in (let TMP_43 \def +(CHead c1 k u) in (let TMP_44 \def (CHead c2 k u) in (let TMP_45 \def +(pr0_refl u) in (let TMP_46 \def (wcpr0_comp c1 c2 H u u TMP_45 k) in (let +TMP_47 \def (Bind Abbr) in (let TMP_48 \def (wcpr0_getl TMP_43 TMP_44 TMP_46 +i d u0 TMP_47 H9) in (ex3_2_ind C T TMP_24 TMP_25 TMP_26 TMP_28 TMP_42 +TMP_48))))))))))))))))))))))))))) in (pr2_ind TMP_12 TMP_16 TMP_49 y t4 t3 +H4)))))) in (let TMP_51 \def (insert_eq C TMP_7 TMP_8 TMP_10 TMP_50 H1) in +(pc3_t t3 TMP_6 t4 TMP_51 t5 H3))))))))))))) in (pr3_ind TMP_1 TMP_3 TMP_5 +TMP_52 t1 t2 H0)))))))))))). theorem pc3_wcpr0_t: \forall (c1: C).(\forall (c2: C).((wcpr0 c1 c2) \to (\forall (t1: T).(\forall (t2: T).((pr3 c1 t1 t2) \to (pc3 c2 t1 t2)))))) \def - \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c1 c2)).(wcpr0_ind + \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c1 c2)).(let TMP_1 \def (\lambda (c: C).(\lambda (c0: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 -t2) \to (pc3 c0 t1 t2)))))) (\lambda (c: C).(\lambda (t1: T).(\lambda (t2: -T).(\lambda (H0: (pr3 c t1 t2)).(pc3_pr3_r c t1 t2 H0))))) (\lambda (c0: -C).(\lambda (c3: C).(\lambda (H0: (wcpr0 c0 c3)).(\lambda (_: ((\forall (t1: -T).(\forall (t2: T).((pr3 c0 t1 t2) \to (pc3 c3 t1 t2)))))).(\lambda (u1: -T).(\lambda (u2: T).(\lambda (H2: (pr0 u1 u2)).(\lambda (k: K).(\lambda (t1: -T).(\lambda (t2: T).(\lambda (H3: (pr3 (CHead c0 k u1) t1 t2)).(let H4 \def -(pc3_pr2_pr3_t c0 u1 t1 t2 k H3 u2 (pr2_free c0 u1 u2 H2)) in (ex2_ind T -(\lambda (t: T).(pr3 (CHead c0 k u2) t1 t)) (\lambda (t: T).(pr3 (CHead c0 k -u2) t2 t)) (pc3 (CHead c3 k u2) t1 t2) (\lambda (x: T).(\lambda (H5: (pr3 -(CHead c0 k u2) t1 x)).(\lambda (H6: (pr3 (CHead c0 k u2) t2 x)).(pc3_t x -(CHead c3 k u2) t1 (pc3_wcpr0__pc3_wcpr0_t_aux c0 c3 H0 k u2 t1 x H5) t2 -(pc3_s (CHead c3 k u2) x t2 (pc3_wcpr0__pc3_wcpr0_t_aux c0 c3 H0 k u2 t2 x -H6)))))) H4))))))))))))) c1 c2 H))). -(* COMMENTS -Initial nodes: 299 -END *) +t2) \to (pc3 c0 t1 t2)))))) in (let TMP_2 \def (\lambda (c: C).(\lambda (t1: +T).(\lambda (t2: T).(\lambda (H0: (pr3 c t1 t2)).(pc3_pr3_r c t1 t2 H0))))) +in (let TMP_16 \def (\lambda (c0: C).(\lambda (c3: C).(\lambda (H0: (wcpr0 c0 +c3)).(\lambda (_: ((\forall (t1: T).(\forall (t2: T).((pr3 c0 t1 t2) \to (pc3 +c3 t1 t2)))))).(\lambda (u1: T).(\lambda (u2: T).(\lambda (H2: (pr0 u1 +u2)).(\lambda (k: K).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H3: (pr3 +(CHead c0 k u1) t1 t2)).(let TMP_3 \def (pr2_free c0 u1 u2 H2) in (let H4 +\def (pc3_pr2_pr3_t c0 u1 t1 t2 k H3 u2 TMP_3) in (let TMP_5 \def (\lambda +(t: T).(let TMP_4 \def (CHead c0 k u2) in (pr3 TMP_4 t1 t))) in (let TMP_7 +\def (\lambda (t: T).(let TMP_6 \def (CHead c0 k u2) in (pr3 TMP_6 t2 t))) in +(let TMP_8 \def (CHead c3 k u2) in (let TMP_9 \def (pc3 TMP_8 t1 t2) in (let +TMP_15 \def (\lambda (x: T).(\lambda (H5: (pr3 (CHead c0 k u2) t1 +x)).(\lambda (H6: (pr3 (CHead c0 k u2) t2 x)).(let TMP_10 \def (CHead c3 k +u2) in (let TMP_11 \def (pc3_wcpr0__pc3_wcpr0_t_aux c0 c3 H0 k u2 t1 x H5) in +(let TMP_12 \def (CHead c3 k u2) in (let TMP_13 \def +(pc3_wcpr0__pc3_wcpr0_t_aux c0 c3 H0 k u2 t2 x H6) in (let TMP_14 \def (pc3_s +TMP_12 x t2 TMP_13) in (pc3_t x TMP_10 t1 TMP_11 t2 TMP_14))))))))) in +(ex2_ind T TMP_5 TMP_7 TMP_9 TMP_15 H4))))))))))))))))))) in (wcpr0_ind TMP_1 +TMP_2 TMP_16 c1 c2 H)))))). theorem pc3_wcpr0: \forall (c1: C).(\forall (c2: C).((wcpr0 c1 c2) \to (\forall (t1: T).(\forall (t2: T).((pc3 c1 t1 t2) \to (pc3 c2 t1 t2)))))) \def \lambda (c1: C).(\lambda (c2: C).(\lambda (H: (wcpr0 c1 c2)).(\lambda (t1: -T).(\lambda (t2: T).(\lambda (H0: (pc3 c1 t1 t2)).(let H1 \def H0 in (ex2_ind -T (\lambda (t: T).(pr3 c1 t1 t)) (\lambda (t: T).(pr3 c1 t2 t)) (pc3 c2 t1 -t2) (\lambda (x: T).(\lambda (H2: (pr3 c1 t1 x)).(\lambda (H3: (pr3 c1 t2 -x)).(pc3_t x c2 t1 (pc3_wcpr0_t c1 c2 H t1 x H2) t2 (pc3_s c2 x t2 -(pc3_wcpr0_t c1 c2 H t2 x H3)))))) H1))))))). -(* COMMENTS -Initial nodes: 121 -END *) +T).(\lambda (t2: T).(\lambda (H0: (pc3 c1 t1 t2)).(let H1 \def H0 in (let +TMP_1 \def (\lambda (t: T).(pr3 c1 t1 t)) in (let TMP_2 \def (\lambda (t: +T).(pr3 c1 t2 t)) in (let TMP_3 \def (pc3 c2 t1 t2) in (let TMP_7 \def +(\lambda (x: T).(\lambda (H2: (pr3 c1 t1 x)).(\lambda (H3: (pr3 c1 t2 +x)).(let TMP_4 \def (pc3_wcpr0_t c1 c2 H t1 x H2) in (let TMP_5 \def +(pc3_wcpr0_t c1 c2 H t2 x H3) in (let TMP_6 \def (pc3_s c2 x t2 TMP_5) in +(pc3_t x c2 t1 TMP_4 t2 TMP_6))))))) in (ex2_ind T TMP_1 TMP_2 TMP_3 TMP_7 +H1))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/arity.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/arity.ma index 4400e1540..374743cc3 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/arity.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/arity.ma @@ -14,11 +14,11 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/pr3_props.ma". +include "basic_1/ty3/pr3_props.ma". -include "Basic-1/arity/pr3.ma". +include "basic_1/arity/pr3.ma". -include "Basic-1/asucc/fwd.ma". +include "basic_1/asucc/fwd.ma". theorem ty3_arity: \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c @@ -26,161 +26,292 @@ t1 t2) \to (ex2 A (\lambda (a1: A).(arity g c t1 a1)) (\lambda (a1: A).(arity g c t2 (asucc g a1)))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda -(H: (ty3 g c t1 t2)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda -(t0: T).(ex2 A (\lambda (a1: A).(arity g c0 t a1)) (\lambda (a1: A).(arity g -c0 t0 (asucc g a1))))))) (\lambda (c0: C).(\lambda (t3: T).(\lambda (t: -T).(\lambda (_: (ty3 g c0 t3 t)).(\lambda (H1: (ex2 A (\lambda (a1: A).(arity -g c0 t3 a1)) (\lambda (a1: A).(arity g c0 t (asucc g a1))))).(\lambda (u: -T).(\lambda (t4: T).(\lambda (_: (ty3 g c0 u t4)).(\lambda (H3: (ex2 A -(\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t4 (asucc g -a1))))).(\lambda (H4: (pc3 c0 t4 t3)).(let H5 \def H1 in (ex2_ind A (\lambda -(a1: A).(arity g c0 t3 a1)) (\lambda (a1: A).(arity g c0 t (asucc g a1))) -(ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t3 -(asucc g a1)))) (\lambda (x: A).(\lambda (H6: (arity g c0 t3 x)).(\lambda (_: -(arity g c0 t (asucc g x))).(let H8 \def H3 in (ex2_ind A (\lambda (a1: -A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t4 (asucc g a1))) (ex2 A -(\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t3 (asucc g -a1)))) (\lambda (x0: A).(\lambda (H9: (arity g c0 u x0)).(\lambda (H10: -(arity g c0 t4 (asucc g x0))).(let H11 \def H4 in (ex2_ind T (\lambda (t0: -T).(pr3 c0 t4 t0)) (\lambda (t0: T).(pr3 c0 t3 t0)) (ex2 A (\lambda (a1: -A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t3 (asucc g a1)))) -(\lambda (x1: T).(\lambda (H12: (pr3 c0 t4 x1)).(\lambda (H13: (pr3 c0 t3 -x1)).(ex_intro2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity -g c0 t3 (asucc g a1))) x0 H9 (arity_repl g c0 t3 x H6 (asucc g x0) (leq_sym g -(asucc g x0) x (arity_mono g c0 x1 (asucc g x0) (arity_sred_pr3 c0 t4 x1 H12 -g (asucc g x0) H10) x (arity_sred_pr3 c0 t3 x1 H13 g x H6)))))))) H11))))) -H8))))) H5)))))))))))) (\lambda (c0: C).(\lambda (m: nat).(ex_intro2 A -(\lambda (a1: A).(arity g c0 (TSort m) a1)) (\lambda (a1: A).(arity g c0 -(TSort (next g m)) (asucc g a1))) (ASort O m) (arity_sort g c0 m) (arity_sort -g c0 (next g m))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: -C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abbr) -u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: (ex2 A +(H: (ty3 g c t1 t2)).(let TMP_4 \def (\lambda (c0: C).(\lambda (t: +T).(\lambda (t0: T).(let TMP_1 \def (\lambda (a1: A).(arity g c0 t a1)) in +(let TMP_3 \def (\lambda (a1: A).(let TMP_2 \def (asucc g a1) in (arity g c0 +t0 TMP_2))) in (ex2 A TMP_1 TMP_3)))))) in (let TMP_40 \def (\lambda (c0: +C).(\lambda (t3: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t3 t)).(\lambda +(H1: (ex2 A (\lambda (a1: A).(arity g c0 t3 a1)) (\lambda (a1: A).(arity g c0 +t (asucc g a1))))).(\lambda (u: T).(\lambda (t4: T).(\lambda (_: (ty3 g c0 u +t4)).(\lambda (H3: (ex2 A (\lambda (a1: A).(arity g c0 u a1)) (\lambda (a1: +A).(arity g c0 t4 (asucc g a1))))).(\lambda (H4: (pc3 c0 t4 t3)).(let H5 \def +H1 in (let TMP_5 \def (\lambda (a1: A).(arity g c0 t3 a1)) in (let TMP_7 \def +(\lambda (a1: A).(let TMP_6 \def (asucc g a1) in (arity g c0 t TMP_6))) in +(let TMP_8 \def (\lambda (a1: A).(arity g c0 u a1)) in (let TMP_10 \def +(\lambda (a1: A).(let TMP_9 \def (asucc g a1) in (arity g c0 t3 TMP_9))) in +(let TMP_11 \def (ex2 A TMP_8 TMP_10) in (let TMP_39 \def (\lambda (x: +A).(\lambda (H6: (arity g c0 t3 x)).(\lambda (_: (arity g c0 t (asucc g +x))).(let H8 \def H3 in (let TMP_12 \def (\lambda (a1: A).(arity g c0 u a1)) +in (let TMP_14 \def (\lambda (a1: A).(let TMP_13 \def (asucc g a1) in (arity +g c0 t4 TMP_13))) in (let TMP_15 \def (\lambda (a1: A).(arity g c0 u a1)) in +(let TMP_17 \def (\lambda (a1: A).(let TMP_16 \def (asucc g a1) in (arity g +c0 t3 TMP_16))) in (let TMP_18 \def (ex2 A TMP_15 TMP_17) in (let TMP_38 \def +(\lambda (x0: A).(\lambda (H9: (arity g c0 u x0)).(\lambda (H10: (arity g c0 +t4 (asucc g x0))).(let H11 \def H4 in (let TMP_19 \def (\lambda (t0: T).(pr3 +c0 t4 t0)) in (let TMP_20 \def (\lambda (t0: T).(pr3 c0 t3 t0)) in (let +TMP_21 \def (\lambda (a1: A).(arity g c0 u a1)) in (let TMP_23 \def (\lambda +(a1: A).(let TMP_22 \def (asucc g a1) in (arity g c0 t3 TMP_22))) in (let +TMP_24 \def (ex2 A TMP_21 TMP_23) in (let TMP_37 \def (\lambda (x1: +T).(\lambda (H12: (pr3 c0 t4 x1)).(\lambda (H13: (pr3 c0 t3 x1)).(let TMP_25 +\def (\lambda (a1: A).(arity g c0 u a1)) in (let TMP_27 \def (\lambda (a1: +A).(let TMP_26 \def (asucc g a1) in (arity g c0 t3 TMP_26))) in (let TMP_28 +\def (asucc g x0) in (let TMP_29 \def (asucc g x0) in (let TMP_30 \def (asucc +g x0) in (let TMP_31 \def (asucc g x0) in (let TMP_32 \def (arity_sred_pr3 c0 +t4 x1 H12 g TMP_31 H10) in (let TMP_33 \def (arity_sred_pr3 c0 t3 x1 H13 g x +H6) in (let TMP_34 \def (arity_mono g c0 x1 TMP_30 TMP_32 x TMP_33) in (let +TMP_35 \def (leq_sym g TMP_29 x TMP_34) in (let TMP_36 \def (arity_repl g c0 +t3 x H6 TMP_28 TMP_35) in (ex_intro2 A TMP_25 TMP_27 x0 H9 +TMP_36))))))))))))))) in (ex2_ind T TMP_19 TMP_20 TMP_24 TMP_37 +H11))))))))))) in (ex2_ind A TMP_12 TMP_14 TMP_18 TMP_38 H8))))))))))) in +(ex2_ind A TMP_5 TMP_7 TMP_11 TMP_39 H5)))))))))))))))))) in (let TMP_51 \def +(\lambda (c0: C).(\lambda (m: nat).(let TMP_42 \def (\lambda (a1: A).(let +TMP_41 \def (TSort m) in (arity g c0 TMP_41 a1))) in (let TMP_46 \def +(\lambda (a1: A).(let TMP_43 \def (next g m) in (let TMP_44 \def (TSort +TMP_43) in (let TMP_45 \def (asucc g a1) in (arity g c0 TMP_44 TMP_45))))) in +(let TMP_47 \def (ASort O m) in (let TMP_48 \def (arity_sort g c0 m) in (let +TMP_49 \def (next g m) in (let TMP_50 \def (arity_sort g c0 TMP_49) in +(ex_intro2 A TMP_42 TMP_46 TMP_47 TMP_48 TMP_50))))))))) in (let TMP_74 \def +(\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda +(H0: (getl n c0 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda (_: (ty3 g +d u t)).(\lambda (H2: (ex2 A (\lambda (a1: A).(arity g d u a1)) (\lambda (a1: +A).(arity g d t (asucc g a1))))).(let H3 \def H2 in (let TMP_52 \def (\lambda +(a1: A).(arity g d u a1)) in (let TMP_54 \def (\lambda (a1: A).(let TMP_53 +\def (asucc g a1) in (arity g d t TMP_53))) in (let TMP_56 \def (\lambda (a1: +A).(let TMP_55 \def (TLRef n) in (arity g c0 TMP_55 a1))) in (let TMP_60 \def +(\lambda (a1: A).(let TMP_57 \def (S n) in (let TMP_58 \def (lift TMP_57 O t) +in (let TMP_59 \def (asucc g a1) in (arity g c0 TMP_58 TMP_59))))) in (let +TMP_61 \def (ex2 A TMP_56 TMP_60) in (let TMP_73 \def (\lambda (x: +A).(\lambda (H4: (arity g d u x)).(\lambda (H5: (arity g d t (asucc g +x))).(let TMP_63 \def (\lambda (a1: A).(let TMP_62 \def (TLRef n) in (arity g +c0 TMP_62 a1))) in (let TMP_67 \def (\lambda (a1: A).(let TMP_64 \def (S n) +in (let TMP_65 \def (lift TMP_64 O t) in (let TMP_66 \def (asucc g a1) in +(arity g c0 TMP_65 TMP_66))))) in (let TMP_68 \def (arity_abbr g c0 d u n H0 +x H4) in (let TMP_69 \def (asucc g x) in (let TMP_70 \def (S n) in (let +TMP_71 \def (getl_drop Abbr c0 d u n H0) in (let TMP_72 \def (arity_lift g d +t TMP_69 H5 c0 TMP_70 O TMP_71) in (ex_intro2 A TMP_63 TMP_67 x TMP_68 +TMP_72))))))))))) in (ex2_ind A TMP_52 TMP_54 TMP_61 TMP_73 +H3)))))))))))))))) in (let TMP_112 \def (\lambda (n: nat).(\lambda (c0: +C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind +Abst) u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: (ex2 A (\lambda (a1: A).(arity g d u a1)) (\lambda (a1: A).(arity g d t (asucc g -a1))))).(let H3 \def H2 in (ex2_ind A (\lambda (a1: A).(arity g d u a1)) -(\lambda (a1: A).(arity g d t (asucc g a1))) (ex2 A (\lambda (a1: A).(arity g -c0 (TLRef n) a1)) (\lambda (a1: A).(arity g c0 (lift (S n) O t) (asucc g -a1)))) (\lambda (x: A).(\lambda (H4: (arity g d u x)).(\lambda (H5: (arity g -d t (asucc g x))).(ex_intro2 A (\lambda (a1: A).(arity g c0 (TLRef n) a1)) -(\lambda (a1: A).(arity g c0 (lift (S n) O t) (asucc g a1))) x (arity_abbr g -c0 d u n H0 x H4) (arity_lift g d t (asucc g x) H5 c0 (S n) O (getl_drop Abbr -c0 d u n H0)))))) H3)))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda -(d: C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abst) -u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: (ex2 A -(\lambda (a1: A).(arity g d u a1)) (\lambda (a1: A).(arity g d t (asucc g -a1))))).(let H3 \def H2 in (ex2_ind A (\lambda (a1: A).(arity g d u a1)) -(\lambda (a1: A).(arity g d t (asucc g a1))) (ex2 A (\lambda (a1: A).(arity g -c0 (TLRef n) a1)) (\lambda (a1: A).(arity g c0 (lift (S n) O u) (asucc g -a1)))) (\lambda (x: A).(\lambda (H4: (arity g d u x)).(\lambda (_: (arity g d -t (asucc g x))).(let H_x \def (leq_asucc g x) in (let H6 \def H_x in (ex_ind -A (\lambda (a0: A).(leq g x (asucc g a0))) (ex2 A (\lambda (a1: A).(arity g -c0 (TLRef n) a1)) (\lambda (a1: A).(arity g c0 (lift (S n) O u) (asucc g -a1)))) (\lambda (x0: A).(\lambda (H7: (leq g x (asucc g x0))).(ex_intro2 A -(\lambda (a1: A).(arity g c0 (TLRef n) a1)) (\lambda (a1: A).(arity g c0 -(lift (S n) O u) (asucc g a1))) x0 (arity_abst g c0 d u n H0 x0 (arity_repl g -d u x H4 (asucc g x0) H7)) (arity_repl g c0 (lift (S n) O u) x (arity_lift g -d u x H4 c0 (S n) O (getl_drop Abst c0 d u n H0)) (asucc g x0) H7)))) -H6)))))) H3)))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (t: -T).(\lambda (_: (ty3 g c0 u t)).(\lambda (H1: (ex2 A (\lambda (a1: A).(arity -g c0 u a1)) (\lambda (a1: A).(arity g c0 t (asucc g a1))))).(\lambda (b: -B).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) -u) t3 t4)).(\lambda (H3: (ex2 A (\lambda (a1: A).(arity g (CHead c0 (Bind b) -u) t3 a1)) (\lambda (a1: A).(arity g (CHead c0 (Bind b) u) t4 (asucc g -a1))))).(let H4 \def H1 in (ex2_ind A (\lambda (a1: A).(arity g c0 u a1)) -(\lambda (a1: A).(arity g c0 t (asucc g a1))) (ex2 A (\lambda (a1: A).(arity -g c0 (THead (Bind b) u t3) a1)) (\lambda (a1: A).(arity g c0 (THead (Bind b) -u t4) (asucc g a1)))) (\lambda (x: A).(\lambda (H5: (arity g c0 u -x)).(\lambda (_: (arity g c0 t (asucc g x))).(let H7 \def H3 in (ex2_ind A -(\lambda (a1: A).(arity g (CHead c0 (Bind b) u) t3 a1)) (\lambda (a1: -A).(arity g (CHead c0 (Bind b) u) t4 (asucc g a1))) (ex2 A (\lambda (a1: -A).(arity g c0 (THead (Bind b) u t3) a1)) (\lambda (a1: A).(arity g c0 (THead -(Bind b) u t4) (asucc g a1)))) (\lambda (x0: A).(\lambda (H8: (arity g (CHead -c0 (Bind b) u) t3 x0)).(\lambda (H9: (arity g (CHead c0 (Bind b) u) t4 (asucc -g x0))).(let H_x \def (leq_asucc g x) in (let H10 \def H_x in (ex_ind A -(\lambda (a0: A).(leq g x (asucc g a0))) (ex2 A (\lambda (a1: A).(arity g c0 -(THead (Bind b) u t3) a1)) (\lambda (a1: A).(arity g c0 (THead (Bind b) u t4) -(asucc g a1)))) (\lambda (x1: A).(\lambda (H11: (leq g x (asucc g -x1))).(B_ind (\lambda (b0: B).((arity g (CHead c0 (Bind b0) u) t3 x0) \to -((arity g (CHead c0 (Bind b0) u) t4 (asucc g x0)) \to (ex2 A (\lambda (a1: -A).(arity g c0 (THead (Bind b0) u t3) a1)) (\lambda (a1: A).(arity g c0 -(THead (Bind b0) u t4) (asucc g a1))))))) (\lambda (H12: (arity g (CHead c0 -(Bind Abbr) u) t3 x0)).(\lambda (H13: (arity g (CHead c0 (Bind Abbr) u) t4 -(asucc g x0))).(ex_intro2 A (\lambda (a1: A).(arity g c0 (THead (Bind Abbr) u -t3) a1)) (\lambda (a1: A).(arity g c0 (THead (Bind Abbr) u t4) (asucc g a1))) -x0 (arity_bind g Abbr not_abbr_abst c0 u x H5 t3 x0 H12) (arity_bind g Abbr -not_abbr_abst c0 u x H5 t4 (asucc g x0) H13)))) (\lambda (H12: (arity g -(CHead c0 (Bind Abst) u) t3 x0)).(\lambda (H13: (arity g (CHead c0 (Bind -Abst) u) t4 (asucc g x0))).(ex_intro2 A (\lambda (a1: A).(arity g c0 (THead -(Bind Abst) u t3) a1)) (\lambda (a1: A).(arity g c0 (THead (Bind Abst) u t4) -(asucc g a1))) (AHead x1 x0) (arity_head g c0 u x1 (arity_repl g c0 u x H5 -(asucc g x1) H11) t3 x0 H12) (arity_repl g c0 (THead (Bind Abst) u t4) (AHead -x1 (asucc g x0)) (arity_head g c0 u x1 (arity_repl g c0 u x H5 (asucc g x1) -H11) t4 (asucc g x0) H13) (asucc g (AHead x1 x0)) (leq_refl g (asucc g (AHead -x1 x0))))))) (\lambda (H12: (arity g (CHead c0 (Bind Void) u) t3 -x0)).(\lambda (H13: (arity g (CHead c0 (Bind Void) u) t4 (asucc g -x0))).(ex_intro2 A (\lambda (a1: A).(arity g c0 (THead (Bind Void) u t3) a1)) -(\lambda (a1: A).(arity g c0 (THead (Bind Void) u t4) (asucc g a1))) x0 -(arity_bind g Void (sym_not_eq B Abst Void not_abst_void) c0 u x H5 t3 x0 -H12) (arity_bind g Void (sym_not_eq B Abst Void not_abst_void) c0 u x H5 t4 -(asucc g x0) H13)))) b H8 H9))) H10)))))) H7))))) H4)))))))))))) (\lambda -(c0: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: (ty3 g c0 w u)).(\lambda -(H1: (ex2 A (\lambda (a1: A).(arity g c0 w a1)) (\lambda (a1: A).(arity g c0 -u (asucc g a1))))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v -(THead (Bind Abst) u t))).(\lambda (H3: (ex2 A (\lambda (a1: A).(arity g c0 v -a1)) (\lambda (a1: A).(arity g c0 (THead (Bind Abst) u t) (asucc g -a1))))).(let H4 \def H1 in (ex2_ind A (\lambda (a1: A).(arity g c0 w a1)) -(\lambda (a1: A).(arity g c0 u (asucc g a1))) (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 (x: A).(\lambda -(H5: (arity g c0 w x)).(\lambda (H6: (arity g c0 u (asucc g x))).(let H7 \def -H3 in (ex2_ind A (\lambda (a1: A).(arity g c0 v a1)) (\lambda (a1: A).(arity -g c0 (THead (Bind Abst) u t) (asucc g a1))) (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 (x0: A).(\lambda -(H8: (arity g c0 v x0)).(\lambda (H9: (arity g c0 (THead (Bind Abst) u t) -(asucc g x0))).(let H10 \def (arity_gen_abst g c0 u t (asucc g x0) H9) in -(ex3_2_ind A A (\lambda (a1: A).(\lambda (a2: A).(eq A (asucc g x0) (AHead a1 -a2)))) (\lambda (a1: A).(\lambda (_: A).(arity g c0 u (asucc g a1)))) -(\lambda (_: A).(\lambda (a2: A).(arity g (CHead c0 (Bind Abst) u) t a2))) -(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 (x1: A).(\lambda (x2: A).(\lambda (H11: (eq A (asucc g x0) +a1))))).(let H3 \def H2 in (let TMP_75 \def (\lambda (a1: A).(arity g d u +a1)) in (let TMP_77 \def (\lambda (a1: A).(let TMP_76 \def (asucc g a1) in +(arity g d t TMP_76))) in (let TMP_79 \def (\lambda (a1: A).(let TMP_78 \def +(TLRef n) in (arity g c0 TMP_78 a1))) in (let TMP_83 \def (\lambda (a1: +A).(let TMP_80 \def (S n) in (let TMP_81 \def (lift TMP_80 O u) in (let +TMP_82 \def (asucc g a1) in (arity g c0 TMP_81 TMP_82))))) in (let TMP_84 +\def (ex2 A TMP_79 TMP_83) in (let TMP_111 \def (\lambda (x: A).(\lambda (H4: +(arity g d u x)).(\lambda (_: (arity g d t (asucc g x))).(let H_x \def +(leq_asucc g x) in (let H6 \def H_x in (let TMP_86 \def (\lambda (a0: A).(let +TMP_85 \def (asucc g a0) in (leq g x TMP_85))) in (let TMP_88 \def (\lambda +(a1: A).(let TMP_87 \def (TLRef n) in (arity g c0 TMP_87 a1))) in (let TMP_92 +\def (\lambda (a1: A).(let TMP_89 \def (S n) in (let TMP_90 \def (lift TMP_89 +O u) in (let TMP_91 \def (asucc g a1) in (arity g c0 TMP_90 TMP_91))))) in +(let TMP_93 \def (ex2 A TMP_88 TMP_92) in (let TMP_110 \def (\lambda (x0: +A).(\lambda (H7: (leq g x (asucc g x0))).(let TMP_95 \def (\lambda (a1: +A).(let TMP_94 \def (TLRef n) in (arity g c0 TMP_94 a1))) in (let TMP_99 \def +(\lambda (a1: A).(let TMP_96 \def (S n) in (let TMP_97 \def (lift TMP_96 O u) +in (let TMP_98 \def (asucc g a1) in (arity g c0 TMP_97 TMP_98))))) in (let +TMP_100 \def (asucc g x0) in (let TMP_101 \def (arity_repl g d u x H4 TMP_100 +H7) in (let TMP_102 \def (arity_abst g c0 d u n H0 x0 TMP_101) in (let +TMP_103 \def (S n) in (let TMP_104 \def (lift TMP_103 O u) in (let TMP_105 +\def (S n) in (let TMP_106 \def (getl_drop Abst c0 d u n H0) in (let TMP_107 +\def (arity_lift g d u x H4 c0 TMP_105 O TMP_106) in (let TMP_108 \def (asucc +g x0) in (let TMP_109 \def (arity_repl g c0 TMP_104 x TMP_107 TMP_108 H7) in +(ex_intro2 A TMP_95 TMP_99 x0 TMP_102 TMP_109))))))))))))))) in (ex_ind A +TMP_86 TMP_93 TMP_110 H6))))))))))) in (ex2_ind A TMP_75 TMP_77 TMP_84 +TMP_111 H3)))))))))))))))) in (let TMP_208 \def (\lambda (c0: C).(\lambda (u: +T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (H1: (ex2 A (\lambda +(a1: A).(arity g c0 u a1)) (\lambda (a1: A).(arity g c0 t (asucc g +a1))))).(\lambda (b: B).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (ty3 g +(CHead c0 (Bind b) u) t3 t4)).(\lambda (H3: (ex2 A (\lambda (a1: A).(arity g +(CHead c0 (Bind b) u) t3 a1)) (\lambda (a1: A).(arity g (CHead c0 (Bind b) u) +t4 (asucc g a1))))).(let H4 \def H1 in (let TMP_113 \def (\lambda (a1: +A).(arity g c0 u a1)) in (let TMP_115 \def (\lambda (a1: A).(let TMP_114 \def +(asucc g a1) in (arity g c0 t TMP_114))) in (let TMP_118 \def (\lambda (a1: +A).(let TMP_116 \def (Bind b) in (let TMP_117 \def (THead TMP_116 u t3) in +(arity g c0 TMP_117 a1)))) in (let TMP_122 \def (\lambda (a1: A).(let TMP_119 +\def (Bind b) in (let TMP_120 \def (THead TMP_119 u t4) in (let TMP_121 \def +(asucc g a1) in (arity g c0 TMP_120 TMP_121))))) in (let TMP_123 \def (ex2 A +TMP_118 TMP_122) in (let TMP_207 \def (\lambda (x: A).(\lambda (H5: (arity g +c0 u x)).(\lambda (_: (arity g c0 t (asucc g x))).(let H7 \def H3 in (let +TMP_126 \def (\lambda (a1: A).(let TMP_124 \def (Bind b) in (let TMP_125 \def +(CHead c0 TMP_124 u) in (arity g TMP_125 t3 a1)))) in (let TMP_130 \def +(\lambda (a1: A).(let TMP_127 \def (Bind b) in (let TMP_128 \def (CHead c0 +TMP_127 u) in (let TMP_129 \def (asucc g a1) in (arity g TMP_128 t4 +TMP_129))))) in (let TMP_133 \def (\lambda (a1: A).(let TMP_131 \def (Bind b) +in (let TMP_132 \def (THead TMP_131 u t3) in (arity g c0 TMP_132 a1)))) in +(let TMP_137 \def (\lambda (a1: A).(let TMP_134 \def (Bind b) in (let TMP_135 +\def (THead TMP_134 u t4) in (let TMP_136 \def (asucc g a1) in (arity g c0 +TMP_135 TMP_136))))) in (let TMP_138 \def (ex2 A TMP_133 TMP_137) in (let +TMP_206 \def (\lambda (x0: A).(\lambda (H8: (arity g (CHead c0 (Bind b) u) t3 +x0)).(\lambda (H9: (arity g (CHead c0 (Bind b) u) t4 (asucc g x0))).(let H_x +\def (leq_asucc g x) in (let H10 \def H_x in (let TMP_140 \def (\lambda (a0: +A).(let TMP_139 \def (asucc g a0) in (leq g x TMP_139))) in (let TMP_143 \def +(\lambda (a1: A).(let TMP_141 \def (Bind b) in (let TMP_142 \def (THead +TMP_141 u t3) in (arity g c0 TMP_142 a1)))) in (let TMP_147 \def (\lambda +(a1: A).(let TMP_144 \def (Bind b) in (let TMP_145 \def (THead TMP_144 u t4) +in (let TMP_146 \def (asucc g a1) in (arity g c0 TMP_145 TMP_146))))) in (let +TMP_148 \def (ex2 A TMP_143 TMP_147) in (let TMP_205 \def (\lambda (x1: +A).(\lambda (H11: (leq g x (asucc g x1))).(let TMP_156 \def (\lambda (b0: +B).((arity g (CHead c0 (Bind b0) u) t3 x0) \to ((arity g (CHead c0 (Bind b0) +u) t4 (asucc g x0)) \to (let TMP_151 \def (\lambda (a1: A).(let TMP_149 \def +(Bind b0) in (let TMP_150 \def (THead TMP_149 u t3) in (arity g c0 TMP_150 +a1)))) in (let TMP_155 \def (\lambda (a1: A).(let TMP_152 \def (Bind b0) in +(let TMP_153 \def (THead TMP_152 u t4) in (let TMP_154 \def (asucc g a1) in +(arity g c0 TMP_153 TMP_154))))) in (ex2 A TMP_151 TMP_155)))))) in (let +TMP_167 \def (\lambda (H12: (arity g (CHead c0 (Bind Abbr) u) t3 +x0)).(\lambda (H13: (arity g (CHead c0 (Bind Abbr) u) t4 (asucc g x0))).(let +TMP_159 \def (\lambda (a1: A).(let TMP_157 \def (Bind Abbr) in (let TMP_158 +\def (THead TMP_157 u t3) in (arity g c0 TMP_158 a1)))) in (let TMP_163 \def +(\lambda (a1: A).(let TMP_160 \def (Bind Abbr) in (let TMP_161 \def (THead +TMP_160 u t4) in (let TMP_162 \def (asucc g a1) in (arity g c0 TMP_161 +TMP_162))))) in (let TMP_164 \def (arity_bind g Abbr not_abbr_abst c0 u x H5 +t3 x0 H12) in (let TMP_165 \def (asucc g x0) in (let TMP_166 \def (arity_bind +g Abbr not_abbr_abst c0 u x H5 t4 TMP_165 H13) in (ex_intro2 A TMP_159 +TMP_163 x0 TMP_164 TMP_166)))))))) in (let TMP_193 \def (\lambda (H12: (arity +g (CHead c0 (Bind Abst) u) t3 x0)).(\lambda (H13: (arity g (CHead c0 (Bind +Abst) u) t4 (asucc g x0))).(let TMP_170 \def (\lambda (a1: A).(let TMP_168 +\def (Bind Abst) in (let TMP_169 \def (THead TMP_168 u t3) in (arity g c0 +TMP_169 a1)))) in (let TMP_174 \def (\lambda (a1: A).(let TMP_171 \def (Bind +Abst) in (let TMP_172 \def (THead TMP_171 u t4) in (let TMP_173 \def (asucc g +a1) in (arity g c0 TMP_172 TMP_173))))) in (let TMP_175 \def (AHead x1 x0) in +(let TMP_176 \def (asucc g x1) in (let TMP_177 \def (arity_repl g c0 u x H5 +TMP_176 H11) in (let TMP_178 \def (arity_head g c0 u x1 TMP_177 t3 x0 H12) in +(let TMP_179 \def (Bind Abst) in (let TMP_180 \def (THead TMP_179 u t4) in +(let TMP_181 \def (asucc g x0) in (let TMP_182 \def (AHead x1 TMP_181) in +(let TMP_183 \def (asucc g x1) in (let TMP_184 \def (arity_repl g c0 u x H5 +TMP_183 H11) in (let TMP_185 \def (asucc g x0) in (let TMP_186 \def +(arity_head g c0 u x1 TMP_184 t4 TMP_185 H13) in (let TMP_187 \def (AHead x1 +x0) in (let TMP_188 \def (asucc g TMP_187) in (let TMP_189 \def (AHead x1 x0) +in (let TMP_190 \def (asucc g TMP_189) in (let TMP_191 \def (leq_refl g +TMP_190) in (let TMP_192 \def (arity_repl g c0 TMP_180 TMP_182 TMP_186 +TMP_188 TMP_191) in (ex_intro2 A TMP_170 TMP_174 TMP_175 TMP_178 +TMP_192))))))))))))))))))))))) in (let TMP_204 \def (\lambda (H12: (arity g +(CHead c0 (Bind Void) u) t3 x0)).(\lambda (H13: (arity g (CHead c0 (Bind +Void) u) t4 (asucc g x0))).(let TMP_196 \def (\lambda (a1: A).(let TMP_194 +\def (Bind Void) in (let TMP_195 \def (THead TMP_194 u t3) in (arity g c0 +TMP_195 a1)))) in (let TMP_200 \def (\lambda (a1: A).(let TMP_197 \def (Bind +Void) in (let TMP_198 \def (THead TMP_197 u t4) in (let TMP_199 \def (asucc g +a1) in (arity g c0 TMP_198 TMP_199))))) in (let TMP_201 \def (arity_bind g +Void not_void_abst c0 u x H5 t3 x0 H12) in (let TMP_202 \def (asucc g x0) in +(let TMP_203 \def (arity_bind g Void not_void_abst c0 u x H5 t4 TMP_202 H13) +in (ex_intro2 A TMP_196 TMP_200 x0 TMP_201 TMP_203)))))))) in (B_ind TMP_156 +TMP_167 TMP_193 TMP_204 b H8 H9))))))) in (ex_ind A TMP_140 TMP_148 TMP_205 +H10))))))))))) in (ex2_ind A TMP_126 TMP_130 TMP_138 TMP_206 H7))))))))))) in +(ex2_ind A TMP_113 TMP_115 TMP_123 TMP_207 H4)))))))))))))))))) in (let +TMP_304 \def (\lambda (c0: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: +(ty3 g c0 w u)).(\lambda (H1: (ex2 A (\lambda (a1: A).(arity g c0 w a1)) +(\lambda (a1: A).(arity g c0 u (asucc g a1))))).(\lambda (v: T).(\lambda (t: +T).(\lambda (_: (ty3 g c0 v (THead (Bind Abst) u t))).(\lambda (H3: (ex2 A +(\lambda (a1: A).(arity g c0 v a1)) (\lambda (a1: A).(arity g c0 (THead (Bind +Abst) u t) (asucc g a1))))).(let H4 \def H1 in (let TMP_209 \def (\lambda +(a1: A).(arity g c0 w a1)) in (let TMP_211 \def (\lambda (a1: A).(let TMP_210 +\def (asucc g a1) in (arity g c0 u TMP_210))) in (let TMP_214 \def (\lambda +(a1: A).(let TMP_212 \def (Flat Appl) in (let TMP_213 \def (THead TMP_212 w +v) in (arity g c0 TMP_213 a1)))) in (let TMP_220 \def (\lambda (a1: A).(let +TMP_215 \def (Flat Appl) in (let TMP_216 \def (Bind Abst) in (let TMP_217 +\def (THead TMP_216 u t) in (let TMP_218 \def (THead TMP_215 w TMP_217) in +(let TMP_219 \def (asucc g a1) in (arity g c0 TMP_218 TMP_219))))))) in (let +TMP_221 \def (ex2 A TMP_214 TMP_220) in (let TMP_303 \def (\lambda (x: +A).(\lambda (H5: (arity g c0 w x)).(\lambda (H6: (arity g c0 u (asucc g +x))).(let H7 \def H3 in (let TMP_222 \def (\lambda (a1: A).(arity g c0 v a1)) +in (let TMP_226 \def (\lambda (a1: A).(let TMP_223 \def (Bind Abst) in (let +TMP_224 \def (THead TMP_223 u t) in (let TMP_225 \def (asucc g a1) in (arity +g c0 TMP_224 TMP_225))))) in (let TMP_229 \def (\lambda (a1: A).(let TMP_227 +\def (Flat Appl) in (let TMP_228 \def (THead TMP_227 w v) in (arity g c0 +TMP_228 a1)))) in (let TMP_235 \def (\lambda (a1: A).(let TMP_230 \def (Flat +Appl) in (let TMP_231 \def (Bind Abst) in (let TMP_232 \def (THead TMP_231 u +t) in (let TMP_233 \def (THead TMP_230 w TMP_232) in (let TMP_234 \def (asucc +g a1) in (arity g c0 TMP_233 TMP_234))))))) in (let TMP_236 \def (ex2 A +TMP_229 TMP_235) in (let TMP_302 \def (\lambda (x0: A).(\lambda (H8: (arity g +c0 v x0)).(\lambda (H9: (arity g c0 (THead (Bind Abst) u t) (asucc g +x0))).(let TMP_237 \def (asucc g x0) in (let H10 \def (arity_gen_abst g c0 u +t TMP_237 H9) in (let TMP_240 \def (\lambda (a1: A).(\lambda (a2: A).(let +TMP_238 \def (asucc g x0) in (let TMP_239 \def (AHead a1 a2) in (eq A TMP_238 +TMP_239))))) in (let TMP_242 \def (\lambda (a1: A).(\lambda (_: A).(let +TMP_241 \def (asucc g a1) in (arity g c0 u TMP_241)))) in (let TMP_245 \def +(\lambda (_: A).(\lambda (a2: A).(let TMP_243 \def (Bind Abst) in (let +TMP_244 \def (CHead c0 TMP_243 u) in (arity g TMP_244 t a2))))) in (let +TMP_248 \def (\lambda (a1: A).(let TMP_246 \def (Flat Appl) in (let TMP_247 +\def (THead TMP_246 w v) in (arity g c0 TMP_247 a1)))) in (let TMP_254 \def +(\lambda (a1: A).(let TMP_249 \def (Flat Appl) in (let TMP_250 \def (Bind +Abst) in (let TMP_251 \def (THead TMP_250 u t) in (let TMP_252 \def (THead +TMP_249 w TMP_251) in (let TMP_253 \def (asucc g a1) in (arity g c0 TMP_252 +TMP_253))))))) in (let TMP_255 \def (ex2 A TMP_248 TMP_254) in (let TMP_301 +\def (\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_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 -x3) H16) in (ex_intro2 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))) x3 (arity_appl g c0 w x1 (arity_repl g c0 w x H5 x1 -(leq_sym g x1 x (asucc_inj g x1 x (arity_mono g c0 u (asucc g x1) H12 (asucc -g x) H6)))) v x3 H19) (arity_appl g c0 w x H5 (THead (Bind Abst) u t) (asucc -g x3) (arity_head g c0 u x H6 t (asucc g x3) H18)))))))) H15)))))))) H10))))) -H7))))) H4))))))))))) (\lambda (c0: C).(\lambda (t3: T).(\lambda (t4: -T).(\lambda (_: (ty3 g c0 t3 t4)).(\lambda (H1: (ex2 A (\lambda (a1: -A).(arity g c0 t3 a1)) (\lambda (a1: A).(arity g c0 t4 (asucc g -a1))))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t4 t0)).(\lambda (H3: (ex2 A -(\lambda (a1: A).(arity g c0 t4 a1)) (\lambda (a1: A).(arity g c0 t0 (asucc g -a1))))).(let H4 \def H1 in (ex2_ind A (\lambda (a1: A).(arity g c0 t3 a1)) -(\lambda (a1: A).(arity g c0 t4 (asucc g a1))) (ex2 A (\lambda (a1: A).(arity -g c0 (THead (Flat Cast) t4 t3) a1)) (\lambda (a1: A).(arity g c0 (THead (Flat -Cast) t0 t4) (asucc g a1)))) (\lambda (x: A).(\lambda (H5: (arity g c0 t3 -x)).(\lambda (H6: (arity g c0 t4 (asucc g x))).(let H7 \def H3 in (ex2_ind A -(\lambda (a1: A).(arity g c0 t4 a1)) (\lambda (a1: A).(arity g c0 t0 (asucc g -a1))) (ex2 A (\lambda (a1: A).(arity g c0 (THead (Flat Cast) t4 t3) a1)) -(\lambda (a1: A).(arity g c0 (THead (Flat Cast) t0 t4) (asucc g a1)))) -(\lambda (x0: A).(\lambda (H8: (arity g c0 t4 x0)).(\lambda (H9: (arity g c0 -t0 (asucc g x0))).(ex_intro2 A (\lambda (a1: A).(arity g c0 (THead (Flat -Cast) t4 t3) a1)) (\lambda (a1: A).(arity g c0 (THead (Flat Cast) t0 t4) -(asucc g a1))) x (arity_cast g c0 t4 x H6 t3 H5) (arity_cast g c0 t0 (asucc g -x) (arity_repl g c0 t0 (asucc g x0) H9 (asucc g (asucc g x)) (asucc_repl g x0 -(asucc g x) (arity_mono g c0 t4 x0 H8 (asucc g x) H6))) t4 H6))))) H7))))) -H4)))))))))) c t1 t2 H))))). -(* COMMENTS -Initial nodes: 3761 -END *) +(arity g (CHead c0 (Bind Abst) u) t x2)).(let TMP_256 \def (asucc g x0) in +(let TMP_257 \def (AHead x1 x2) in (let H14 \def (sym_eq A TMP_256 TMP_257 +H11) in (let H15 \def (asucc_gen_head g x1 x2 x0 H14) in (let TMP_259 \def +(\lambda (a0: A).(let TMP_258 \def (AHead x1 a0) in (eq A x0 TMP_258))) in +(let TMP_261 \def (\lambda (a0: A).(let TMP_260 \def (asucc g a0) in (eq A x2 +TMP_260))) in (let TMP_264 \def (\lambda (a1: A).(let TMP_262 \def (Flat +Appl) in (let TMP_263 \def (THead TMP_262 w v) in (arity g c0 TMP_263 a1)))) +in (let TMP_270 \def (\lambda (a1: A).(let TMP_265 \def (Flat Appl) in (let +TMP_266 \def (Bind Abst) in (let TMP_267 \def (THead TMP_266 u t) in (let +TMP_268 \def (THead TMP_265 w TMP_267) in (let TMP_269 \def (asucc g a1) in +(arity g c0 TMP_268 TMP_269))))))) in (let TMP_271 \def (ex2 A TMP_264 +TMP_270) in (let TMP_300 \def (\lambda (x3: A).(\lambda (H16: (eq A x0 (AHead +x1 x3))).(\lambda (H17: (eq A x2 (asucc g x3))).(let TMP_274 \def (\lambda +(a: A).(let TMP_272 \def (Bind Abst) in (let TMP_273 \def (CHead c0 TMP_272 +u) in (arity g TMP_273 t a)))) in (let TMP_275 \def (asucc g x3) in (let H18 +\def (eq_ind A x2 TMP_274 H13 TMP_275 H17) in (let TMP_276 \def (\lambda (a: +A).(arity g c0 v a)) in (let TMP_277 \def (AHead x1 x3) in (let H19 \def +(eq_ind A x0 TMP_276 H8 TMP_277 H16) in (let TMP_280 \def (\lambda (a1: +A).(let TMP_278 \def (Flat Appl) in (let TMP_279 \def (THead TMP_278 w v) in +(arity g c0 TMP_279 a1)))) in (let TMP_286 \def (\lambda (a1: A).(let TMP_281 +\def (Flat Appl) in (let TMP_282 \def (Bind Abst) in (let TMP_283 \def (THead +TMP_282 u t) in (let TMP_284 \def (THead TMP_281 w TMP_283) in (let TMP_285 +\def (asucc g a1) in (arity g c0 TMP_284 TMP_285))))))) in (let TMP_287 \def +(asucc g x1) in (let TMP_288 \def (asucc g x) in (let TMP_289 \def +(arity_mono g c0 u TMP_287 H12 TMP_288 H6) in (let TMP_290 \def (asucc_inj g +x1 x TMP_289) in (let TMP_291 \def (leq_sym g x1 x TMP_290) in (let TMP_292 +\def (arity_repl g c0 w x H5 x1 TMP_291) in (let TMP_293 \def (arity_appl g +c0 w x1 TMP_292 v x3 H19) in (let TMP_294 \def (Bind Abst) in (let TMP_295 +\def (THead TMP_294 u t) in (let TMP_296 \def (asucc g x3) in (let TMP_297 +\def (asucc g x3) in (let TMP_298 \def (arity_head g c0 u x H6 t TMP_297 H18) +in (let TMP_299 \def (arity_appl g c0 w x H5 TMP_295 TMP_296 TMP_298) in +(ex_intro2 A TMP_280 TMP_286 x3 TMP_293 TMP_299))))))))))))))))))))))))) in +(ex2_ind A TMP_259 TMP_261 TMP_271 TMP_300 H15)))))))))))))))) in (ex3_2_ind +A A TMP_240 TMP_242 TMP_245 TMP_255 TMP_301 H10))))))))))))) in (ex2_ind A +TMP_222 TMP_226 TMP_236 TMP_302 H7))))))))))) in (ex2_ind A TMP_209 TMP_211 +TMP_221 TMP_303 H4))))))))))))))))) in (let TMP_347 \def (\lambda (c0: +C).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (ty3 g c0 t3 t4)).(\lambda +(H1: (ex2 A (\lambda (a1: A).(arity g c0 t3 a1)) (\lambda (a1: A).(arity g c0 +t4 (asucc g a1))))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t4 t0)).(\lambda +(H3: (ex2 A (\lambda (a1: A).(arity g c0 t4 a1)) (\lambda (a1: A).(arity g c0 +t0 (asucc g a1))))).(let H4 \def H1 in (let TMP_305 \def (\lambda (a1: +A).(arity g c0 t3 a1)) in (let TMP_307 \def (\lambda (a1: A).(let TMP_306 +\def (asucc g a1) in (arity g c0 t4 TMP_306))) in (let TMP_310 \def (\lambda +(a1: A).(let TMP_308 \def (Flat Cast) in (let TMP_309 \def (THead TMP_308 t4 +t3) in (arity g c0 TMP_309 a1)))) in (let TMP_314 \def (\lambda (a1: A).(let +TMP_311 \def (Flat Cast) in (let TMP_312 \def (THead TMP_311 t0 t4) in (let +TMP_313 \def (asucc g a1) in (arity g c0 TMP_312 TMP_313))))) in (let TMP_315 +\def (ex2 A TMP_310 TMP_314) in (let TMP_346 \def (\lambda (x: A).(\lambda +(H5: (arity g c0 t3 x)).(\lambda (H6: (arity g c0 t4 (asucc g x))).(let H7 +\def H3 in (let TMP_316 \def (\lambda (a1: A).(arity g c0 t4 a1)) in (let +TMP_318 \def (\lambda (a1: A).(let TMP_317 \def (asucc g a1) in (arity g c0 +t0 TMP_317))) in (let TMP_321 \def (\lambda (a1: A).(let TMP_319 \def (Flat +Cast) in (let TMP_320 \def (THead TMP_319 t4 t3) in (arity g c0 TMP_320 +a1)))) in (let TMP_325 \def (\lambda (a1: A).(let TMP_322 \def (Flat Cast) in +(let TMP_323 \def (THead TMP_322 t0 t4) in (let TMP_324 \def (asucc g a1) in +(arity g c0 TMP_323 TMP_324))))) in (let TMP_326 \def (ex2 A TMP_321 TMP_325) +in (let TMP_345 \def (\lambda (x0: A).(\lambda (H8: (arity g c0 t4 +x0)).(\lambda (H9: (arity g c0 t0 (asucc g x0))).(let TMP_329 \def (\lambda +(a1: A).(let TMP_327 \def (Flat Cast) in (let TMP_328 \def (THead TMP_327 t4 +t3) in (arity g c0 TMP_328 a1)))) in (let TMP_333 \def (\lambda (a1: A).(let +TMP_330 \def (Flat Cast) in (let TMP_331 \def (THead TMP_330 t0 t4) in (let +TMP_332 \def (asucc g a1) in (arity g c0 TMP_331 TMP_332))))) in (let TMP_334 +\def (arity_cast g c0 t4 x H6 t3 H5) in (let TMP_335 \def (asucc g x) in (let +TMP_336 \def (asucc g x0) in (let TMP_337 \def (asucc g x) in (let TMP_338 +\def (asucc g TMP_337) in (let TMP_339 \def (asucc g x) in (let TMP_340 \def +(asucc g x) in (let TMP_341 \def (arity_mono g c0 t4 x0 H8 TMP_340 H6) in +(let TMP_342 \def (asucc_repl g x0 TMP_339 TMP_341) in (let TMP_343 \def +(arity_repl g c0 t0 TMP_336 H9 TMP_338 TMP_342) in (let TMP_344 \def +(arity_cast g c0 t0 TMP_335 TMP_343 t4 H6) in (ex_intro2 A TMP_329 TMP_333 x +TMP_334 TMP_344))))))))))))))))) in (ex2_ind A TMP_316 TMP_318 TMP_326 +TMP_345 H7))))))))))) in (ex2_ind A TMP_305 TMP_307 TMP_315 TMP_346 +H4)))))))))))))))) in (ty3_ind g TMP_4 TMP_40 TMP_51 TMP_74 TMP_112 TMP_208 +TMP_304 TMP_347 c t1 t2 H))))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/arity_props.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/arity_props.ma index 49d6c0572..e53197b3b 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/arity_props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/arity_props.ma @@ -14,9 +14,9 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/arity.ma". +include "basic_1/ty3/arity.ma". -include "Basic-1/sc3/arity.ma". +include "basic_1/sc3/arity.ma". theorem ty3_predicative: \forall (g: G).(\forall (c: C).(\forall (v: T).(\forall (t: T).(\forall (u: @@ -25,30 +25,39 @@ Prop).P))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (v: T).(\lambda (t: T).(\lambda (u: T).(\lambda (H: (ty3 g c (THead (Bind Abst) v t) u)).(\lambda (H0: (pc3 c u -v)).(\lambda (P: Prop).(let H1 \def H in (ex3_2_ind T T (\lambda (t2: -T).(\lambda (_: T).(pc3 c (THead (Bind Abst) v t2) u))) (\lambda (_: -T).(\lambda (t0: T).(ty3 g c v t0))) (\lambda (t2: T).(\lambda (_: T).(ty3 g -(CHead c (Bind Abst) v) t t2))) P (\lambda (x0: T).(\lambda (x1: T).(\lambda -(_: (pc3 c (THead (Bind Abst) v x0) u)).(\lambda (H3: (ty3 g c v -x1)).(\lambda (_: (ty3 g (CHead c (Bind Abst) v) t x0)).(let H_y \def -(ty3_conv g c v x1 H3 (THead (Bind Abst) v t) u H H0) in (let H_x \def -(ty3_arity g c (THead (Bind Abst) v t) v H_y) in (let H5 \def H_x in (ex2_ind -A (\lambda (a1: A).(arity g c (THead (Bind Abst) v t) a1)) (\lambda (a1: -A).(arity g c v (asucc g a1))) P (\lambda (x: A).(\lambda (H6: (arity g c -(THead (Bind Abst) v t) x)).(\lambda (H7: (arity g c v (asucc g x))).(let H8 -\def (arity_gen_abst g c v t x H6) in (ex3_2_ind A A (\lambda (a1: -A).(\lambda (a2: A).(eq A x (AHead a1 a2)))) (\lambda (a1: A).(\lambda (_: -A).(arity g c v (asucc g a1)))) (\lambda (_: A).(\lambda (a2: A).(arity g -(CHead c (Bind Abst) v) t a2))) P (\lambda (x2: A).(\lambda (x3: A).(\lambda -(H9: (eq A x (AHead x2 x3))).(\lambda (H10: (arity g c v (asucc g -x2))).(\lambda (_: (arity g (CHead c (Bind Abst) v) t x3)).(let H12 \def -(eq_ind A x (\lambda (a: A).(arity g c v (asucc g a))) H7 (AHead x2 x3) H9) -in (leq_ahead_asucc_false g x2 (asucc g x3) (arity_mono g c v (asucc g (AHead -x2 x3)) H12 (asucc g x2) H10) P))))))) H8))))) H5))))))))) (ty3_gen_bind g -Abst c v t u H1)))))))))). -(* COMMENTS -Initial nodes: 497 -END *) +v)).(\lambda (P: Prop).(let H1 \def H in (let TMP_3 \def (\lambda (t2: +T).(\lambda (_: T).(let TMP_1 \def (Bind Abst) in (let TMP_2 \def (THead +TMP_1 v t2) in (pc3 c TMP_2 u))))) in (let TMP_4 \def (\lambda (_: +T).(\lambda (t0: T).(ty3 g c v t0))) in (let TMP_7 \def (\lambda (t2: +T).(\lambda (_: T).(let TMP_5 \def (Bind Abst) in (let TMP_6 \def (CHead c +TMP_5 v) in (ty3 g TMP_6 t t2))))) in (let TMP_34 \def (\lambda (x0: +T).(\lambda (x1: T).(\lambda (_: (pc3 c (THead (Bind Abst) v x0) u)).(\lambda +(H3: (ty3 g c v x1)).(\lambda (_: (ty3 g (CHead c (Bind Abst) v) t x0)).(let +TMP_8 \def (Bind Abst) in (let TMP_9 \def (THead TMP_8 v t) in (let H_y \def +(ty3_conv g c v x1 H3 TMP_9 u H H0) in (let TMP_10 \def (Bind Abst) in (let +TMP_11 \def (THead TMP_10 v t) in (let H_x \def (ty3_arity g c TMP_11 v H_y) +in (let H5 \def H_x in (let TMP_14 \def (\lambda (a1: A).(let TMP_12 \def +(Bind Abst) in (let TMP_13 \def (THead TMP_12 v t) in (arity g c TMP_13 +a1)))) in (let TMP_16 \def (\lambda (a1: A).(let TMP_15 \def (asucc g a1) in +(arity g c v TMP_15))) in (let TMP_33 \def (\lambda (x: A).(\lambda (H6: +(arity g c (THead (Bind Abst) v t) x)).(\lambda (H7: (arity g c v (asucc g +x))).(let H8 \def (arity_gen_abst g c v t x H6) in (let TMP_18 \def (\lambda +(a1: A).(\lambda (a2: A).(let TMP_17 \def (AHead a1 a2) in (eq A x TMP_17)))) +in (let TMP_20 \def (\lambda (a1: A).(\lambda (_: A).(let TMP_19 \def (asucc +g a1) in (arity g c v TMP_19)))) in (let TMP_23 \def (\lambda (_: A).(\lambda +(a2: A).(let TMP_21 \def (Bind Abst) in (let TMP_22 \def (CHead c TMP_21 v) +in (arity g TMP_22 t a2))))) in (let TMP_32 \def (\lambda (x2: A).(\lambda +(x3: A).(\lambda (H9: (eq A x (AHead x2 x3))).(\lambda (H10: (arity g c v +(asucc g x2))).(\lambda (_: (arity g (CHead c (Bind Abst) v) t x3)).(let +TMP_25 \def (\lambda (a: A).(let TMP_24 \def (asucc g a) in (arity g c v +TMP_24))) in (let TMP_26 \def (AHead x2 x3) in (let H12 \def (eq_ind A x +TMP_25 H7 TMP_26 H9) in (let TMP_27 \def (asucc g x3) in (let TMP_28 \def +(AHead x2 x3) in (let TMP_29 \def (asucc g TMP_28) in (let TMP_30 \def (asucc +g x2) in (let TMP_31 \def (arity_mono g c v TMP_29 H12 TMP_30 H10) in +(leq_ahead_asucc_false g x2 TMP_27 TMP_31 P)))))))))))))) in (ex3_2_ind A A +TMP_18 TMP_20 TMP_23 P TMP_32 H8))))))))) in (ex2_ind A TMP_14 TMP_16 P +TMP_33 H5)))))))))))))))) in (let TMP_35 \def (ty3_gen_bind g Abst c v t u +H1) in (ex3_2_ind T T TMP_3 TMP_4 TMP_7 P TMP_34 TMP_35)))))))))))))). theorem ty3_repellent: \forall (g: G).(\forall (c: C).(\forall (w: T).(\forall (t: T).(\forall (u1: @@ -59,32 +68,51 @@ Prop).P))))))))) \lambda (g: G).(\lambda (c: C).(\lambda (w: T).(\lambda (t: T).(\lambda (u1: T).(\lambda (H: (ty3 g c (THead (Bind Abst) w t) u1)).(\lambda (u2: T).(\lambda (H0: (ty3 g (CHead c (Bind Abst) w) t (lift (S O) O -u2))).(\lambda (H1: (pc3 c u1 u2)).(\lambda (P: Prop).(ex_ind T (\lambda (t0: -T).(ty3 g (CHead c (Bind Abst) w) (lift (S O) O u2) t0)) P (\lambda (x: -T).(\lambda (H2: (ty3 g (CHead c (Bind Abst) w) (lift (S O) O u2) x)).(let H3 -\def (ty3_gen_lift g (CHead c (Bind Abst) w) u2 x (S O) O H2 c (drop_drop -(Bind Abst) O c c (drop_refl c) w)) in (ex2_ind T (\lambda (t2: T).(pc3 -(CHead c (Bind Abst) w) (lift (S O) O t2) x)) (\lambda (t2: T).(ty3 g c u2 -t2)) P (\lambda (x0: T).(\lambda (_: (pc3 (CHead c (Bind Abst) w) (lift (S O) -O x0) x)).(\lambda (H5: (ty3 g c u2 x0)).(let H_y \def (ty3_conv g c u2 x0 H5 -(THead (Bind Abst) w t) u1 H H1) in (let H_x \def (ty3_arity g (CHead c (Bind -Abst) w) t (lift (S O) O u2) H0) in (let H6 \def H_x in (ex2_ind A (\lambda -(a1: A).(arity g (CHead c (Bind Abst) w) t a1)) (\lambda (a1: A).(arity g -(CHead c (Bind Abst) w) (lift (S O) O u2) (asucc g a1))) P (\lambda (x1: -A).(\lambda (H7: (arity g (CHead c (Bind Abst) w) t x1)).(\lambda (H8: (arity -g (CHead c (Bind Abst) w) (lift (S O) O u2) (asucc g x1))).(let H_x0 \def -(ty3_arity g c (THead (Bind Abst) w t) u2 H_y) in (let H9 \def H_x0 in -(ex2_ind A (\lambda (a1: A).(arity g c (THead (Bind Abst) w t) a1)) (\lambda -(a1: A).(arity g c u2 (asucc g a1))) P (\lambda (x2: A).(\lambda (H10: (arity -g c (THead (Bind Abst) w t) x2)).(\lambda (H11: (arity g c u2 (asucc g -x2))).(arity_repellent g c w t x1 H7 x2 H10 (asucc_inj g x1 x2 (arity_mono g -c u2 (asucc g x1) (arity_gen_lift g (CHead c (Bind Abst) w) u2 (asucc g x1) -(S O) O H8 c (drop_drop (Bind Abst) O c c (drop_refl c) w)) (asucc g x2) -H11)) P)))) H9)))))) H6))))))) H3)))) (ty3_correct g (CHead c (Bind Abst) w) -t (lift (S O) O u2) H0))))))))))). -(* COMMENTS -Initial nodes: 651 -END *) +u2))).(\lambda (H1: (pc3 c u1 u2)).(\lambda (P: Prop).(let TMP_5 \def +(\lambda (t0: T).(let TMP_1 \def (Bind Abst) in (let TMP_2 \def (CHead c +TMP_1 w) in (let TMP_3 \def (S O) in (let TMP_4 \def (lift TMP_3 O u2) in +(ty3 g TMP_2 TMP_4 t0)))))) in (let TMP_55 \def (\lambda (x: T).(\lambda (H2: +(ty3 g (CHead c (Bind Abst) w) (lift (S O) O u2) x)).(let TMP_6 \def (Bind +Abst) in (let TMP_7 \def (CHead c TMP_6 w) in (let TMP_8 \def (S O) in (let +TMP_9 \def (Bind Abst) in (let TMP_10 \def (drop_refl c) in (let TMP_11 \def +(drop_drop TMP_9 O c c TMP_10 w) in (let H3 \def (ty3_gen_lift g TMP_7 u2 x +TMP_8 O H2 c TMP_11) in (let TMP_16 \def (\lambda (t2: T).(let TMP_12 \def +(Bind Abst) in (let TMP_13 \def (CHead c TMP_12 w) in (let TMP_14 \def (S O) +in (let TMP_15 \def (lift TMP_14 O t2) in (pc3 TMP_13 TMP_15 x)))))) in (let +TMP_17 \def (\lambda (t2: T).(ty3 g c u2 t2)) in (let TMP_54 \def (\lambda +(x0: T).(\lambda (_: (pc3 (CHead c (Bind Abst) w) (lift (S O) O x0) +x)).(\lambda (H5: (ty3 g c u2 x0)).(let TMP_18 \def (Bind Abst) in (let +TMP_19 \def (THead TMP_18 w t) in (let H_y \def (ty3_conv g c u2 x0 H5 TMP_19 +u1 H H1) in (let TMP_20 \def (Bind Abst) in (let TMP_21 \def (CHead c TMP_20 +w) in (let TMP_22 \def (S O) in (let TMP_23 \def (lift TMP_22 O u2) in (let +H_x \def (ty3_arity g TMP_21 t TMP_23 H0) in (let H6 \def H_x in (let TMP_26 +\def (\lambda (a1: A).(let TMP_24 \def (Bind Abst) in (let TMP_25 \def (CHead +c TMP_24 w) in (arity g TMP_25 t a1)))) in (let TMP_32 \def (\lambda (a1: +A).(let TMP_27 \def (Bind Abst) in (let TMP_28 \def (CHead c TMP_27 w) in +(let TMP_29 \def (S O) in (let TMP_30 \def (lift TMP_29 O u2) in (let TMP_31 +\def (asucc g a1) in (arity g TMP_28 TMP_30 TMP_31))))))) in (let TMP_53 \def +(\lambda (x1: A).(\lambda (H7: (arity g (CHead c (Bind Abst) w) t +x1)).(\lambda (H8: (arity g (CHead c (Bind Abst) w) (lift (S O) O u2) (asucc +g x1))).(let TMP_33 \def (Bind Abst) in (let TMP_34 \def (THead TMP_33 w t) +in (let H_x0 \def (ty3_arity g c TMP_34 u2 H_y) in (let H9 \def H_x0 in (let +TMP_37 \def (\lambda (a1: A).(let TMP_35 \def (Bind Abst) in (let TMP_36 \def +(THead TMP_35 w t) in (arity g c TMP_36 a1)))) in (let TMP_39 \def (\lambda +(a1: A).(let TMP_38 \def (asucc g a1) in (arity g c u2 TMP_38))) in (let +TMP_52 \def (\lambda (x2: A).(\lambda (H10: (arity g c (THead (Bind Abst) w +t) x2)).(\lambda (H11: (arity g c u2 (asucc g x2))).(let TMP_40 \def (asucc g +x1) in (let TMP_41 \def (Bind Abst) in (let TMP_42 \def (CHead c TMP_41 w) in +(let TMP_43 \def (asucc g x1) in (let TMP_44 \def (S O) in (let TMP_45 \def +(Bind Abst) in (let TMP_46 \def (drop_refl c) in (let TMP_47 \def (drop_drop +TMP_45 O c c TMP_46 w) in (let TMP_48 \def (arity_gen_lift g TMP_42 u2 TMP_43 +TMP_44 O H8 c TMP_47) in (let TMP_49 \def (asucc g x2) in (let TMP_50 \def +(arity_mono g c u2 TMP_40 TMP_48 TMP_49 H11) in (let TMP_51 \def (asucc_inj g +x1 x2 TMP_50) in (arity_repellent g c w t x1 H7 x2 H10 TMP_51 +P)))))))))))))))) in (ex2_ind A TMP_37 TMP_39 P TMP_52 H9))))))))))) in +(ex2_ind A TMP_26 TMP_32 P TMP_53 H6)))))))))))))))) in (ex2_ind T TMP_16 +TMP_17 P TMP_54 H3))))))))))))) in (let TMP_56 \def (Bind Abst) in (let +TMP_57 \def (CHead c TMP_56 w) in (let TMP_58 \def (S O) in (let TMP_59 \def +(lift TMP_58 O u2) in (let TMP_60 \def (ty3_correct g TMP_57 t TMP_59 H0) in +(ex_ind T TMP_5 P TMP_55 TMP_60))))))))))))))))). theorem ty3_acyclic: \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (u: T).((ty3 g c t @@ -93,13 +121,12 @@ u) \to ((pc3 c u t) \to (\forall (P: Prop).P)))))) \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (u: T).(\lambda (H: (ty3 g c t u)).(\lambda (H0: (pc3 c u t)).(\lambda (P: Prop).(let H_y \def (ty3_conv g c t u H t u H H0) in (let H_x \def (ty3_arity g c t t H_y) in -(let H1 \def H_x in (ex2_ind A (\lambda (a1: A).(arity g c t a1)) (\lambda -(a1: A).(arity g c t (asucc g a1))) P (\lambda (x: A).(\lambda (H2: (arity g -c t x)).(\lambda (H3: (arity g c t (asucc g x))).(leq_asucc_false g x -(arity_mono g c t (asucc g x) H3 x H2) P)))) H1)))))))))). -(* COMMENTS -Initial nodes: 151 -END *) +(let H1 \def H_x in (let TMP_1 \def (\lambda (a1: A).(arity g c t a1)) in +(let TMP_3 \def (\lambda (a1: A).(let TMP_2 \def (asucc g a1) in (arity g c t +TMP_2))) in (let TMP_6 \def (\lambda (x: A).(\lambda (H2: (arity g c t +x)).(\lambda (H3: (arity g c t (asucc g x))).(let TMP_4 \def (asucc g x) in +(let TMP_5 \def (arity_mono g c t TMP_4 H3 x H2) in (leq_asucc_false g x +TMP_5 P)))))) in (ex2_ind A TMP_1 TMP_3 P TMP_6 H1))))))))))))). theorem ty3_sn3: \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (u: T).((ty3 g c t @@ -107,11 +134,10 @@ u) \to (sn3 c t))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (u: T).(\lambda (H: (ty3 g c t u)).(let H_x \def (ty3_arity g c t u H) in (let H0 \def H_x in -(ex2_ind A (\lambda (a1: A).(arity g c t a1)) (\lambda (a1: A).(arity g c u -(asucc g a1))) (sn3 c t) (\lambda (x: A).(\lambda (H1: (arity g c t -x)).(\lambda (_: (arity g c u (asucc g x))).(sc3_sn3 g x c t (sc3_arity g c t -x H1))))) H0))))))). -(* COMMENTS -Initial nodes: 119 -END *) +(let TMP_1 \def (\lambda (a1: A).(arity g c t a1)) in (let TMP_3 \def +(\lambda (a1: A).(let TMP_2 \def (asucc g a1) in (arity g c u TMP_2))) in +(let TMP_4 \def (sn3 c t) in (let TMP_6 \def (\lambda (x: A).(\lambda (H1: +(arity g c t x)).(\lambda (_: (arity g c u (asucc g x))).(let TMP_5 \def +(sc3_arity g c t x H1) in (sc3_sn3 g x c t TMP_5))))) in (ex2_ind A TMP_1 +TMP_3 TMP_4 TMP_6 H0))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/dec.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/dec.ma index c176d635e..c0719c3f1 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/dec.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/dec.ma @@ -14,11 +14,13 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/pc3/dec.ma". +include "basic_1/pc3/dec.ma". -include "Basic-1/getl/flt.ma". +include "basic_1/getl/flt.ma". -include "Basic-1/getl/dec.ma". +include "basic_1/getl/dec.ma". + +include "basic_1/flt/fwd.ma". theorem ty3_inference: \forall (g: G).(\forall (c: C).(\forall (t1: T).(or (ex T (\lambda (t2: @@ -87,35 +89,101 @@ Abbr) x4))).(\lambda (_: (ty3 g x3 x4 x5)).(let H12 \def (eq_ind C (CHead x0 (Bind Void) x2) (\lambda (c0: C).(getl n c2 c0)) H6 (CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 (Bind Void) x2) n H6 (CHead x3 (Bind Abbr) x4) H10)) in (let H13 \def (eq_ind C (CHead x0 (Bind Void) x2) (\lambda (ee: C).(match -ee in C return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | -(CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with -[(Bind b) \Rightarrow (match b in B return (\lambda (_: B).Prop) with [Abbr -\Rightarrow False | Abst \Rightarrow False | Void \Rightarrow True]) | (Flat -_) \Rightarrow False])])) I (CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 -(Bind Void) x2) n H6 (CHead x3 (Bind Abbr) x4) H10)) in (False_ind False -H13))))))))) H8)) (\lambda (H8: (ex3_3 C T T (\lambda (_: C).(\lambda (u: -T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) t3)))) (\lambda (e: C).(\lambda -(u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abst) u))))) (\lambda (e: -C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))).(ex3_3_ind C T T -(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) -t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e -(Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u -t)))) False (\lambda (x3: C).(\lambda (x4: T).(\lambda (x5: T).(\lambda (_: -(pc3 c2 (lift (S n) O x4) t3)).(\lambda (H10: (getl n c2 (CHead x3 (Bind -Abst) x4))).(\lambda (_: (ty3 g x3 x4 x5)).(let H12 \def (eq_ind C (CHead x0 -(Bind Void) x2) (\lambda (c0: C).(getl n c2 c0)) H6 (CHead x3 (Bind Abst) x4) +ee with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match k +with [(Bind b) \Rightarrow (match b with [Abbr \Rightarrow False | Abst +\Rightarrow False | Void \Rightarrow True]) | (Flat _) \Rightarrow False])])) +I (CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 (Bind Void) x2) n H6 +(CHead x3 (Bind Abbr) x4) H10)) in (False_ind False H13))))))))) H8)) +(\lambda (H8: (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: +T).(pc3 c2 (lift (S n) O u) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda +(_: T).(getl n c2 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: +T).(\lambda (t: T).(ty3 g e u t)))))).(ex3_3_ind C T T (\lambda (_: +C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) t3)))) (\lambda +(e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abst) u))))) +(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))) False +(\lambda (x3: C).(\lambda (x4: T).(\lambda (x5: T).(\lambda (_: (pc3 c2 (lift +(S n) O x4) t3)).(\lambda (H10: (getl n c2 (CHead x3 (Bind Abst) +x4))).(\lambda (_: (ty3 g x3 x4 x5)).(let H12 \def (eq_ind C (CHead x0 (Bind +Void) x2) (\lambda (c0: C).(getl n c2 c0)) H6 (CHead x3 (Bind Abst) x4) (getl_mono c2 (CHead x0 (Bind Void) x2) n H6 (CHead x3 (Bind Abst) x4) H10)) in (let H13 \def (eq_ind C (CHead x0 (Bind Void) x2) (\lambda (ee: C).(match -ee in C return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | -(CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with -[(Bind b) \Rightarrow (match b in B return (\lambda (_: B).Prop) with [Abbr -\Rightarrow False | Abst \Rightarrow False | Void \Rightarrow True]) | (Flat -_) \Rightarrow False])])) I (CHead x3 (Bind Abst) x4) (getl_mono c2 (CHead x0 -(Bind Void) x2) n H6 (CHead x3 (Bind Abst) x4) H10)) in (False_ind False -H13))))))))) H8)) (ty3_gen_lref g c2 t3 n H7)))))) x1 H2))) H4)) (\lambda -(H4: ((\forall (t3: T).((ty3 g x0 x2 t3) \to False)))).(or_intror (ex T -(\lambda (t3: T).(ty3 g c2 (TLRef n) t3))) (\forall (t3: T).((ty3 g c2 (TLRef -n) t3) \to False)) (\lambda (t3: T).(\lambda (H5: (ty3 g c2 (TLRef n) +ee with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match k +with [(Bind b) \Rightarrow (match b with [Abbr \Rightarrow False | Abst +\Rightarrow False | Void \Rightarrow True]) | (Flat _) \Rightarrow False])])) +I (CHead x3 (Bind Abst) x4) (getl_mono c2 (CHead x0 (Bind Void) x2) n H6 +(CHead x3 (Bind Abst) x4) H10)) in (False_ind False H13))))))))) H8)) +(ty3_gen_lref g c2 t3 n H7)))))) x1 H2))) H4)) (\lambda (H4: ((\forall (t3: +T).((ty3 g x0 x2 t3) \to False)))).(or_intror (ex T (\lambda (t3: T).(ty3 g +c2 (TLRef n) t3))) (\forall (t3: T).((ty3 g c2 (TLRef n) t3) \to False)) +(\lambda (t3: T).(\lambda (H5: (ty3 g c2 (TLRef n) t3)).(or_ind (ex3_3 C T T +(\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) +t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e +(Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u +t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 +(lift (S n) O u) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl +n c2 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: +T).(ty3 g e u t))))) False (\lambda (H6: (ex3_3 C T T (\lambda (_: +C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda +(e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) +(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))).(ex3_3_ind +C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 (lift (S n) O +t) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e +(Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u +t)))) False (\lambda (x3: C).(\lambda (x4: T).(\lambda (x5: T).(\lambda (_: +(pc3 c2 (lift (S n) O x5) t3)).(\lambda (H8: (getl n c2 (CHead x3 (Bind Abbr) +x4))).(\lambda (H9: (ty3 g x3 x4 x5)).(let H10 \def (eq_ind C (CHead x0 (Bind +x1) x2) (\lambda (c0: C).(getl n c2 c0)) H2 (CHead x3 (Bind Abbr) x4) +(getl_mono c2 (CHead x0 (Bind x1) x2) n H2 (CHead x3 (Bind Abbr) x4) H8)) in +(let H11 \def (f_equal C C (\lambda (e: C).(match e with [(CSort _) +\Rightarrow x0 | (CHead c0 _ _) \Rightarrow c0])) (CHead x0 (Bind x1) x2) +(CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 (Bind x1) x2) n H2 (CHead +x3 (Bind Abbr) x4) H8)) in ((let H12 \def (f_equal C B (\lambda (e: C).(match +e with [(CSort _) \Rightarrow x1 | (CHead _ k _) \Rightarrow (match k with +[(Bind b) \Rightarrow b | (Flat _) \Rightarrow x1])])) (CHead x0 (Bind x1) +x2) (CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 (Bind x1) x2) n H2 +(CHead x3 (Bind Abbr) x4) H8)) in ((let H13 \def (f_equal C T (\lambda (e: +C).(match e with [(CSort _) \Rightarrow x2 | (CHead _ _ t) \Rightarrow t])) +(CHead x0 (Bind x1) x2) (CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 +(Bind x1) x2) n H2 (CHead x3 (Bind Abbr) x4) H8)) in (\lambda (_: (eq B x1 +Abbr)).(\lambda (H15: (eq C x0 x3)).(let H16 \def (eq_ind_r T x4 (\lambda (t: +T).(getl n c2 (CHead x3 (Bind Abbr) t))) H10 x2 H13) in (let H17 \def +(eq_ind_r T x4 (\lambda (t: T).(ty3 g x3 t x5)) H9 x2 H13) in (let H18 \def +(eq_ind_r C x3 (\lambda (c0: C).(getl n c2 (CHead c0 (Bind Abbr) x2))) H16 x0 +H15) in (let H19 \def (eq_ind_r C x3 (\lambda (c0: C).(ty3 g c0 x2 x5)) H17 +x0 H15) in (H4 x5 H19)))))))) H12)) H11))))))))) H6)) (\lambda (H6: (ex3_3 C +T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) +t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e +(Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u +t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 +c2 (lift (S n) O u) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: +T).(getl n c2 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: +T).(\lambda (t: T).(ty3 g e u t)))) False (\lambda (x3: C).(\lambda (x4: +T).(\lambda (x5: T).(\lambda (H7: (pc3 c2 (lift (S n) O x4) t3)).(\lambda +(H8: (getl n c2 (CHead x3 (Bind Abst) x4))).(\lambda (H9: (ty3 g x3 x4 +x5)).(let H10 \def (eq_ind C (CHead x0 (Bind x1) x2) (\lambda (c0: C).(getl n +c2 c0)) H2 (CHead x3 (Bind Abst) x4) (getl_mono c2 (CHead x0 (Bind x1) x2) n +H2 (CHead x3 (Bind Abst) x4) H8)) in (let H11 \def (f_equal C C (\lambda (e: +C).(match e with [(CSort _) \Rightarrow x0 | (CHead c0 _ _) \Rightarrow c0])) +(CHead x0 (Bind x1) x2) (CHead x3 (Bind Abst) x4) (getl_mono c2 (CHead x0 +(Bind x1) x2) n H2 (CHead x3 (Bind Abst) x4) H8)) in ((let H12 \def (f_equal +C B (\lambda (e: C).(match e with [(CSort _) \Rightarrow x1 | (CHead _ k _) +\Rightarrow (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow +x1])])) (CHead x0 (Bind x1) x2) (CHead x3 (Bind Abst) x4) (getl_mono c2 +(CHead x0 (Bind x1) x2) n H2 (CHead x3 (Bind Abst) x4) H8)) in ((let H13 \def +(f_equal C T (\lambda (e: C).(match e with [(CSort _) \Rightarrow x2 | (CHead +_ _ t) \Rightarrow t])) (CHead x0 (Bind x1) x2) (CHead x3 (Bind Abst) x4) +(getl_mono c2 (CHead x0 (Bind x1) x2) n H2 (CHead x3 (Bind Abst) x4) H8)) in +(\lambda (_: (eq B x1 Abst)).(\lambda (H15: (eq C x0 x3)).(let H16 \def +(eq_ind_r T x4 (\lambda (t: T).(getl n c2 (CHead x3 (Bind Abst) t))) H10 x2 +H13) in (let H17 \def (eq_ind_r T x4 (\lambda (t: T).(ty3 g x3 t x5)) H9 x2 +H13) in (let H18 \def (eq_ind_r T x4 (\lambda (t: T).(pc3 c2 (lift (S n) O t) +t3)) H7 x2 H13) in (let H19 \def (eq_ind_r C x3 (\lambda (c0: C).(getl n c2 +(CHead c0 (Bind Abst) x2))) H16 x0 H15) in (let H20 \def (eq_ind_r C x3 +(\lambda (c0: C).(ty3 g c0 x2 x5)) H17 x0 H15) in (H4 x5 H20))))))))) H12)) +H11))))))))) H6)) (ty3_gen_lref g c2 t3 n H5)))))) H3)))))) H1)) (\lambda +(H1: ((\forall (d: C).((getl n c2 d) \to (\forall (P: Prop).P))))).(or_intror +(ex T (\lambda (t3: T).(ty3 g c2 (TLRef n) t3))) (\forall (t3: T).((ty3 g c2 +(TLRef n) t3) \to False)) (\lambda (t3: T).(\lambda (H2: (ty3 g c2 (TLRef n) t3)).(or_ind (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: @@ -123,87 +191,15 @@ T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) False -(\lambda (H6: (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: +(\lambda (H3: (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))) False -(\lambda (x3: C).(\lambda (x4: T).(\lambda (x5: T).(\lambda (_: (pc3 c2 (lift -(S n) O x5) t3)).(\lambda (H8: (getl n c2 (CHead x3 (Bind Abbr) -x4))).(\lambda (H9: (ty3 g x3 x4 x5)).(let H10 \def (eq_ind C (CHead x0 (Bind -x1) x2) (\lambda (c0: C).(getl n c2 c0)) H2 (CHead x3 (Bind Abbr) x4) -(getl_mono c2 (CHead x0 (Bind x1) x2) n H2 (CHead x3 (Bind Abbr) x4) H8)) in -(let H11 \def (f_equal C C (\lambda (e: C).(match e in C return (\lambda (_: -C).C) with [(CSort _) \Rightarrow x0 | (CHead c0 _ _) \Rightarrow c0])) -(CHead x0 (Bind x1) x2) (CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 -(Bind x1) x2) n H2 (CHead x3 (Bind Abbr) x4) H8)) in ((let H12 \def (f_equal -C B (\lambda (e: C).(match e in C return (\lambda (_: C).B) with [(CSort _) -\Rightarrow x1 | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: -K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow x1])])) (CHead x0 -(Bind x1) x2) (CHead x3 (Bind Abbr) x4) (getl_mono c2 (CHead x0 (Bind x1) x2) -n H2 (CHead x3 (Bind Abbr) x4) H8)) in ((let H13 \def (f_equal C T (\lambda -(e: C).(match e in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow x2 -| (CHead _ _ t) \Rightarrow t])) (CHead x0 (Bind x1) x2) (CHead x3 (Bind -Abbr) x4) (getl_mono c2 (CHead x0 (Bind x1) x2) n H2 (CHead x3 (Bind Abbr) -x4) H8)) in (\lambda (_: (eq B x1 Abbr)).(\lambda (H15: (eq C x0 x3)).(let -H16 \def (eq_ind_r T x4 (\lambda (t: T).(getl n c2 (CHead x3 (Bind Abbr) t))) -H10 x2 H13) in (let H17 \def (eq_ind_r T x4 (\lambda (t: T).(ty3 g x3 t x5)) -H9 x2 H13) in (let H18 \def (eq_ind_r C x3 (\lambda (c0: C).(getl n c2 (CHead -c0 (Bind Abbr) x2))) H16 x0 H15) in (let H19 \def (eq_ind_r C x3 (\lambda -(c0: C).(ty3 g c0 x2 x5)) H17 x0 H15) in (H4 x5 H19)))))))) H12)) -H11))))))))) H6)) (\lambda (H6: (ex3_3 C T T (\lambda (_: C).(\lambda (u: -T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) t3)))) (\lambda (e: C).(\lambda -(u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abst) u))))) (\lambda (e: -C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))).(ex3_3_ind C T T -(\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) -t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e -(Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u -t)))) False (\lambda (x3: C).(\lambda (x4: T).(\lambda (x5: T).(\lambda (H7: -(pc3 c2 (lift (S n) O x4) t3)).(\lambda (H8: (getl n c2 (CHead x3 (Bind Abst) -x4))).(\lambda (H9: (ty3 g x3 x4 x5)).(let H10 \def (eq_ind C (CHead x0 (Bind -x1) x2) (\lambda (c0: C).(getl n c2 c0)) H2 (CHead x3 (Bind Abst) x4) -(getl_mono c2 (CHead x0 (Bind x1) x2) n H2 (CHead x3 (Bind Abst) x4) H8)) in -(let H11 \def (f_equal C C (\lambda (e: C).(match e in C return (\lambda (_: -C).C) with [(CSort _) \Rightarrow x0 | (CHead c0 _ _) \Rightarrow c0])) -(CHead x0 (Bind x1) x2) (CHead x3 (Bind Abst) x4) (getl_mono c2 (CHead x0 -(Bind x1) x2) n H2 (CHead x3 (Bind Abst) x4) H8)) in ((let H12 \def (f_equal -C B (\lambda (e: C).(match e in C return (\lambda (_: C).B) with [(CSort _) -\Rightarrow x1 | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: -K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow x1])])) (CHead x0 -(Bind x1) x2) (CHead x3 (Bind Abst) x4) (getl_mono c2 (CHead x0 (Bind x1) x2) -n H2 (CHead x3 (Bind Abst) x4) H8)) in ((let H13 \def (f_equal C T (\lambda -(e: C).(match e in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow x2 -| (CHead _ _ t) \Rightarrow t])) (CHead x0 (Bind x1) x2) (CHead x3 (Bind -Abst) x4) (getl_mono c2 (CHead x0 (Bind x1) x2) n H2 (CHead x3 (Bind Abst) -x4) H8)) in (\lambda (_: (eq B x1 Abst)).(\lambda (H15: (eq C x0 x3)).(let -H16 \def (eq_ind_r T x4 (\lambda (t: T).(getl n c2 (CHead x3 (Bind Abst) t))) -H10 x2 H13) in (let H17 \def (eq_ind_r T x4 (\lambda (t: T).(ty3 g x3 t x5)) -H9 x2 H13) in (let H18 \def (eq_ind_r T x4 (\lambda (t: T).(pc3 c2 (lift (S -n) O t) t3)) H7 x2 H13) in (let H19 \def (eq_ind_r C x3 (\lambda (c0: -C).(getl n c2 (CHead c0 (Bind Abst) x2))) H16 x0 H15) in (let H20 \def -(eq_ind_r C x3 (\lambda (c0: C).(ty3 g c0 x2 x5)) H17 x0 H15) in (H4 x5 -H20))))))))) H12)) H11))))))))) H6)) (ty3_gen_lref g c2 t3 n H5)))))) -H3)))))) H1)) (\lambda (H1: ((\forall (d: C).((getl n c2 d) \to (\forall (P: -Prop).P))))).(or_intror (ex T (\lambda (t3: T).(ty3 g c2 (TLRef n) t3))) -(\forall (t3: T).((ty3 g c2 (TLRef n) t3) \to False)) (\lambda (t3: -T).(\lambda (H2: (ty3 g c2 (TLRef n) t3)).(or_ind (ex3_3 C T T (\lambda (_: -C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda -(e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) -(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T -T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) -t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e -(Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u -t))))) False (\lambda (H3: (ex3_3 C T T (\lambda (_: C).(\lambda (_: -T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) t3)))) (\lambda (e: C).(\lambda -(u: T).(\lambda (_: T).(getl n c2 (CHead e (Bind Abbr) u))))) (\lambda (e: -C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))).(ex3_3_ind C T T -(\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c2 (lift (S n) O t) -t3)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c2 (CHead e -(Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u -t)))) False (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (_: -(pc3 c2 (lift (S n) O x2) t3)).(\lambda (H5: (getl n c2 (CHead x0 (Bind Abbr) +(\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 c2 (lift +(S n) O x2) t3)).(\lambda (H5: (getl n c2 (CHead x0 (Bind Abbr) x1))).(\lambda (_: (ty3 g x0 x1 x2)).(H1 (CHead x0 (Bind Abbr) x1) H5 False))))))) H3)) (\lambda (H3: (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c2 (lift (S n) O u) t3)))) (\lambda (e: C).(\lambda @@ -432,7 +428,4 @@ t3)).(ex3_ind T (\lambda (t4: T).(pc3 c2 (THead (Flat Cast) t4 t) t3)) T).(ty3 g c2 x0 t4)) False (\lambda (x: T).(\lambda (_: (ty3 g c2 x0 x)).(H5 x0 H9))) (ty3_correct g c2 t x0 H9)))))) (ty3_gen_cast g c2 t0 t t3 H6)))))) H4))) f H2))) k H1))))))) t2))) c t1))). -(* COMMENTS -Initial nodes: 9001 -END *) diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/defs.ma index d1f500cdf..25311087d 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/defs.ma @@ -14,9 +14,9 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/G/defs.ma". +include "basic_1/G/defs.ma". -include "Basic-1/pc3/defs.ma". +include "basic_1/pc3/defs.ma". inductive ty3 (g: G): C \to (T \to (T \to Prop)) \def | ty3_conv: \forall (c: C).(\forall (t2: T).(\forall (t: T).((ty3 g c t2 t) diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/fsubst0.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/fsubst0.ma index f92366a26..c2424f232 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/fsubst0.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/fsubst0.ma @@ -14,11 +14,11 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/props.ma". +include "basic_1/ty3/props.ma". -include "Basic-1/pc3/fsubst0.ma". +include "basic_1/pc3/fsubst0.ma". -include "Basic-1/getl/getl.ma". +include "basic_1/getl/getl.ma". theorem ty3_fsubst0: \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t: T).((ty3 g c1 @@ -83,45 +83,44 @@ T).(ty3 g c t4 (lift (S n) O t0))) (let H8 \def (eq_ind_r nat i (\lambda (n0: nat).(getl n0 c (CHead e (Bind Abbr) u0))) H5 n H6) in (let H9 \def (eq_ind C (CHead d (Bind Abbr) u) (\lambda (c0: C).(getl n c c0)) H0 (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Abbr) u0) -H8)) in (let H10 \def (f_equal C C (\lambda (e0: C).(match e0 in C return -(\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c0 _ _) \Rightarrow -c0])) (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono c (CHead d -(Bind Abbr) u) n H0 (CHead e (Bind Abbr) u0) H8)) in ((let H11 \def (f_equal -C T (\lambda (e0: C).(match e0 in C return (\lambda (_: C).T) with [(CSort _) -\Rightarrow u | (CHead _ _ t4) \Rightarrow t4])) (CHead d (Bind Abbr) u) +H8)) in (let H10 \def (f_equal C C (\lambda (e0: C).(match e0 with [(CSort _) +\Rightarrow d | (CHead c0 _ _) \Rightarrow c0])) (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) n H0 (CHead e -(Bind Abbr) u0) H8)) in (\lambda (H12: (eq C d e)).(let H13 \def (eq_ind_r C -e (\lambda (c0: C).(getl n c (CHead c0 (Bind Abbr) u0))) H9 d H12) in (let -H14 \def (eq_ind_r T u0 (\lambda (t4: T).(getl n c (CHead d (Bind Abbr) t4))) -H13 u H11) in (eq_ind T u (\lambda (t4: T).(ty3 g c (lift (S n) O t4) (lift -(S n) O t0))) (ty3_lift g d u t0 H1 c O (S n) (getl_drop Abbr c d u n H14)) -u0 H11))))) H10)))) t3 H7))) (subst0_gen_lref u0 t3 i n H4)))))) (\lambda -(c3: C).(\lambda (H4: (csubst0 i u0 c c3)).(\lambda (e: C).(\lambda (H5: -(getl i c (CHead e (Bind Abbr) u0))).(lt_le_e n i (ty3 g c3 (TLRef n) (lift -(S n) O t0)) (\lambda (H6: (lt n i)).(let H7 \def (csubst0_getl_lt i n H6 c -c3 u0 H4 (CHead d (Bind Abbr) u) H0) in (or4_ind (getl n c3 (CHead d (Bind -Abbr) u)) (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: -T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) -(\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 -(CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: -T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) (ex3_4 B C C T -(\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C -(CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda -(_: C).(\lambda (e2: C).(\lambda (u1: T).(getl n c3 (CHead e2 (Bind b) -u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: -T).(csubst0 (minus i (S n)) u0 e1 e2)))))) (ex4_5 B C C T T (\lambda (b: -B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C -(CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda -(_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e2 -(Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda -(u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) (\lambda (_: -B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 -(minus i (S n)) u0 e1 e2))))))) (ty3 g c3 (TLRef n) (lift (S n) O t0)) -(\lambda (H8: (getl n c3 (CHead d (Bind Abbr) u))).(ty3_abbr g n c3 d u H8 t0 -H1)) (\lambda (H8: (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda -(u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) -u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: -T).(getl n c3 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: +(Bind Abbr) u0) H8)) in ((let H11 \def (f_equal C T (\lambda (e0: C).(match +e0 with [(CSort _) \Rightarrow u | (CHead _ _ t4) \Rightarrow t4])) (CHead d +(Bind Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) +n H0 (CHead e (Bind Abbr) u0) H8)) in (\lambda (H12: (eq C d e)).(let H13 +\def (eq_ind_r C e (\lambda (c0: C).(getl n c (CHead c0 (Bind Abbr) u0))) H9 +d H12) in (let H14 \def (eq_ind_r T u0 (\lambda (t4: T).(getl n c (CHead d +(Bind Abbr) t4))) H13 u H11) in (eq_ind T u (\lambda (t4: T).(ty3 g c (lift +(S n) O t4) (lift (S n) O t0))) (ty3_lift g d u t0 H1 c O (S n) (getl_drop +Abbr c d u n H14)) u0 H11))))) H10)))) t3 H7))) (subst0_gen_lref u0 t3 i n +H4)))))) (\lambda (c3: C).(\lambda (H4: (csubst0 i u0 c c3)).(\lambda (e: +C).(\lambda (H5: (getl i c (CHead e (Bind Abbr) u0))).(lt_le_e n i (ty3 g c3 +(TLRef n) (lift (S n) O t0)) (\lambda (H6: (lt n i)).(let H7 \def +(csubst0_getl_lt i n H6 c c3 u0 H4 (CHead d (Bind Abbr) u) H0) in (or4_ind +(getl n c3 (CHead d (Bind Abbr) u)) (ex3_4 B C T T (\lambda (b: B).(\lambda +(e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead +e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: +T).(\lambda (w: T).(getl n c3 (CHead e0 (Bind b) w)))))) (\lambda (_: +B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) +u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: +C).(\lambda (u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) +(\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl n c3 +(CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: +C).(\lambda (_: T).(csubst0 (minus i (S n)) u0 e1 e2)))))) (ex4_5 B C C T T +(\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda +(_: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1))))))) (\lambda +(b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl +n c3 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: +C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) +(\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda +(_: T).(csubst0 (minus i (S n)) u0 e1 e2))))))) (ty3 g c3 (TLRef n) (lift (S +n) O t0)) (\lambda (H8: (getl n c3 (CHead d (Bind Abbr) u))).(ty3_abbr g n c3 +d u H8 t0 H1)) (\lambda (H8: (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: +C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 +(Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda +(w: T).(getl n c3 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abbr) u) (CHead e0 (Bind b) u1)))))) @@ -132,30 +131,29 @@ T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w))))) (ty3 g c3 (TLRef n) T).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2))).(\lambda (H10: (getl n c3 (CHead x1 (Bind x0) x3))).(\lambda (H11: (subst0 (minus i (S n)) u0 x2 x3)).(let H12 \def (f_equal C C (\lambda -(e0: C).(match e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow -d | (CHead c0 _ _) \Rightarrow c0])) (CHead d (Bind Abbr) u) (CHead x1 (Bind -x0) x2) H9) in ((let H13 \def (f_equal C B (\lambda (e0: C).(match e0 in C -return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b) -\Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead -x1 (Bind x0) x2) H9) in ((let H14 \def (f_equal C T (\lambda (e0: C).(match -e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ -t3) \Rightarrow t3])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H9) in -(\lambda (H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let H17 \def -(eq_ind_r T x2 (\lambda (t3: T).(subst0 (minus i (S n)) u0 t3 x3)) H11 u H14) -in (let H18 \def (eq_ind_r C x1 (\lambda (c0: C).(getl n c3 (CHead c0 (Bind -x0) x3))) H10 d H16) in (let H19 \def (eq_ind_r B x0 (\lambda (b: B).(getl n -c3 (CHead d (Bind b) x3))) H18 Abbr H15) in (let H20 \def (eq_ind nat (minus -i n) (\lambda (n0: nat).(getl n0 (CHead d (Bind Abbr) x3) (CHead e (Bind -Abbr) u0))) (getl_conf_le i (CHead e (Bind Abbr) u0) c3 (csubst0_getl_ge i i -(le_n i) c c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead d (Bind Abbr) x3) n -H19 (le_S_n n i (le_S (S n) i H6))) (S (minus i (S n))) (minus_x_Sy i n H6)) -in (ty3_abbr g n c3 d x3 H19 t0 (H2 (minus i (S n)) u0 d x3 (fsubst0_snd -(minus i (S n)) u0 d u x3 H17) e (getl_gen_S (Bind Abbr) d (CHead e (Bind -Abbr) u0) x3 (minus i (S n)) H20)))))))))) H13)) H12))))))))) H8)) (\lambda -(H8: (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda -(u1: T).(eq C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda -(b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl n c3 (CHead e2 +(e0: C).(match e0 with [(CSort _) \Rightarrow d | (CHead c0 _ _) \Rightarrow +c0])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H9) in ((let H13 \def +(f_equal C B (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow Abbr | +(CHead _ k _) \Rightarrow (match k with [(Bind b) \Rightarrow b | (Flat _) +\Rightarrow Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x2) H9) in +((let H14 \def (f_equal C T (\lambda (e0: C).(match e0 with [(CSort _) +\Rightarrow u | (CHead _ _ t3) \Rightarrow t3])) (CHead d (Bind Abbr) u) +(CHead x1 (Bind x0) x2) H9) in (\lambda (H15: (eq B Abbr x0)).(\lambda (H16: +(eq C d x1)).(let H17 \def (eq_ind_r T x2 (\lambda (t3: T).(subst0 (minus i +(S n)) u0 t3 x3)) H11 u H14) in (let H18 \def (eq_ind_r C x1 (\lambda (c0: +C).(getl n c3 (CHead c0 (Bind x0) x3))) H10 d H16) in (let H19 \def (eq_ind_r +B x0 (\lambda (b: B).(getl n c3 (CHead d (Bind b) x3))) H18 Abbr H15) in (let +H20 \def (eq_ind nat (minus i n) (\lambda (n0: nat).(getl n0 (CHead d (Bind +Abbr) x3) (CHead e (Bind Abbr) u0))) (getl_conf_le i (CHead e (Bind Abbr) u0) +c3 (csubst0_getl_ge i i (le_n i) c c3 u0 H4 (CHead e (Bind Abbr) u0) H5) +(CHead d (Bind Abbr) x3) n H19 (le_S_n n i (le_S_n (S n) (S i) (le_S (S (S +n)) (S i) (le_n_S (S n) i H6))))) (S (minus i (S n))) (minus_x_Sy i n H6)) in +(ty3_abbr g n c3 d x3 H19 t0 (H2 (minus i (S n)) u0 d x3 (fsubst0_snd (minus +i (S n)) u0 d u x3 H17) e (getl_gen_S (Bind Abbr) d (CHead e (Bind Abbr) u0) +x3 (minus i (S n)) H20)))))))))) H13)) H12))))))))) H8)) (\lambda (H8: (ex3_4 +B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq +C (CHead d (Bind Abbr) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: +B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl n c3 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) u0 e1 e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind @@ -166,25 +164,24 @@ u0 e1 e2))))) (ty3 g c3 (TLRef n) (lift (S n) O t0)) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3))).(\lambda (H10: (getl n c3 (CHead x2 (Bind x0) x3))).(\lambda (H11: (csubst0 (minus i (S n)) u0 x1 -x2)).(let H12 \def (f_equal C C (\lambda (e0: C).(match e0 in C return -(\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c0 _ _) \Rightarrow -c0])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H13 \def -(f_equal C B (\lambda (e0: C).(match e0 in C return (\lambda (_: C).B) with -[(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k in K return -(\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow -Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H14 -\def (f_equal C T (\lambda (e0: C).(match e0 in C return (\lambda (_: C).T) -with [(CSort _) \Rightarrow u | (CHead _ _ t3) \Rightarrow t3])) (CHead d -(Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in (\lambda (H15: (eq B Abbr -x0)).(\lambda (H16: (eq C d x1)).(let H17 \def (eq_ind_r T x3 (\lambda (t3: -T).(getl n c3 (CHead x2 (Bind x0) t3))) H10 u H14) in (let H18 \def (eq_ind_r -C x1 (\lambda (c0: C).(csubst0 (minus i (S n)) u0 c0 x2)) H11 d H16) in (let -H19 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 (CHead x2 (Bind b) u))) -H17 Abbr H15) in (let H20 \def (eq_ind nat (minus i n) (\lambda (n0: -nat).(getl n0 (CHead x2 (Bind Abbr) u) (CHead e (Bind Abbr) u0))) -(getl_conf_le i (CHead e (Bind Abbr) u0) c3 (csubst0_getl_ge i i (le_n i) c -c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead x2 (Bind Abbr) u) n H19 (le_S_n -n i (le_S (S n) i H6))) (S (minus i (S n))) (minus_x_Sy i n H6)) in (ty3_abbr +x2)).(let H12 \def (f_equal C C (\lambda (e0: C).(match e0 with [(CSort _) +\Rightarrow d | (CHead c0 _ _) \Rightarrow c0])) (CHead d (Bind Abbr) u) +(CHead x1 (Bind x0) x3) H9) in ((let H13 \def (f_equal C B (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow +(match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead +d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H14 \def (f_equal C T +(\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t3) +\Rightarrow t3])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in +(\lambda (H15: (eq B Abbr x0)).(\lambda (H16: (eq C d x1)).(let H17 \def +(eq_ind_r T x3 (\lambda (t3: T).(getl n c3 (CHead x2 (Bind x0) t3))) H10 u +H14) in (let H18 \def (eq_ind_r C x1 (\lambda (c0: C).(csubst0 (minus i (S +n)) u0 c0 x2)) H11 d H16) in (let H19 \def (eq_ind_r B x0 (\lambda (b: +B).(getl n c3 (CHead x2 (Bind b) u))) H17 Abbr H15) in (let H20 \def (eq_ind +nat (minus i n) (\lambda (n0: nat).(getl n0 (CHead x2 (Bind Abbr) u) (CHead e +(Bind Abbr) u0))) (getl_conf_le i (CHead e (Bind Abbr) u0) c3 +(csubst0_getl_ge i i (le_n i) c c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead +x2 (Bind Abbr) u) n H19 (le_S_n n i (le_S_n (S n) (S i) (le_S (S (S n)) (S i) +(le_n_S (S n) i H6))))) (S (minus i (S n))) (minus_x_Sy i n H6)) in (ty3_abbr g n c3 x2 u H19 t0 (H2 (minus i (S n)) u0 x2 u (fsubst0_fst (minus i (S n)) u0 d u x2 H18) e (csubst0_getl_ge_back (minus i (S n)) (minus i (S n)) (le_n (minus i (S n))) d x2 u0 H18 (CHead e (Bind Abbr) u0) (getl_gen_S (Bind Abbr) @@ -208,47 +205,45 @@ B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 (x4: T).(\lambda (H9: (eq C (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3))).(\lambda (H10: (getl n c3 (CHead x2 (Bind x0) x4))).(\lambda (H11: (subst0 (minus i (S n)) u0 x3 x4)).(\lambda (H12: (csubst0 (minus i (S n)) u0 -x1 x2)).(let H13 \def (f_equal C C (\lambda (e0: C).(match e0 in C return -(\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c0 _ _) \Rightarrow -c0])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H14 \def -(f_equal C B (\lambda (e0: C).(match e0 in C return (\lambda (_: C).B) with -[(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow (match k in K return -(\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow -Abbr])])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H15 -\def (f_equal C T (\lambda (e0: C).(match e0 in C return (\lambda (_: C).T) -with [(CSort _) \Rightarrow u | (CHead _ _ t3) \Rightarrow t3])) (CHead d -(Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in (\lambda (H16: (eq B Abbr -x0)).(\lambda (H17: (eq C d x1)).(let H18 \def (eq_ind_r T x3 (\lambda (t3: -T).(subst0 (minus i (S n)) u0 t3 x4)) H11 u H15) in (let H19 \def (eq_ind_r C -x1 (\lambda (c0: C).(csubst0 (minus i (S n)) u0 c0 x2)) H12 d H17) in (let -H20 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 (CHead x2 (Bind b) x4))) -H10 Abbr H16) in (let H21 \def (eq_ind nat (minus i n) (\lambda (n0: -nat).(getl n0 (CHead x2 (Bind Abbr) x4) (CHead e (Bind Abbr) u0))) -(getl_conf_le i (CHead e (Bind Abbr) u0) c3 (csubst0_getl_ge i i (le_n i) c -c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead x2 (Bind Abbr) x4) n H20 (le_S_n -n i (le_S (S n) i H6))) (S (minus i (S n))) (minus_x_Sy i n H6)) in (ty3_abbr -g n c3 x2 x4 H20 t0 (H2 (minus i (S n)) u0 x2 x4 (fsubst0_both (minus i (S -n)) u0 d u x4 H18 x2 H19) e (csubst0_getl_ge_back (minus i (S n)) (minus i (S -n)) (le_n (minus i (S n))) d x2 u0 H19 (CHead e (Bind Abbr) u0) (getl_gen_S -(Bind Abbr) x2 (CHead e (Bind Abbr) u0) x4 (minus i (S n)) H21))))))))))) -H14)) H13))))))))))) H8)) H7))) (\lambda (H6: (le i n)).(ty3_abbr g n c3 d u -(csubst0_getl_ge i n H6 c c3 u0 H4 (CHead d (Bind Abbr) u) H0) t0 H1))))))) -(\lambda (t3: T).(\lambda (H4: (subst0 i u0 (TLRef n) t3)).(\lambda (c3: -C).(\lambda (H5: (csubst0 i u0 c c3)).(\lambda (e: C).(\lambda (H6: (getl i c -(CHead e (Bind Abbr) u0))).(land_ind (eq nat n i) (eq T t3 (lift (S n) O u0)) -(ty3 g c3 t3 (lift (S n) O t0)) (\lambda (H7: (eq nat n i)).(\lambda (H8: (eq -T t3 (lift (S n) O u0))).(eq_ind_r T (lift (S n) O u0) (\lambda (t4: T).(ty3 -g c3 t4 (lift (S n) O t0))) (let H9 \def (eq_ind_r nat i (\lambda (n0: -nat).(getl n0 c (CHead e (Bind Abbr) u0))) H6 n H7) in (let H10 \def -(eq_ind_r nat i (\lambda (n0: nat).(csubst0 n0 u0 c c3)) H5 n H7) in (let H11 -\def (eq_ind C (CHead d (Bind Abbr) u) (\lambda (c0: C).(getl n c c0)) H0 +x1 x2)).(let H13 \def (f_equal C C (\lambda (e0: C).(match e0 with [(CSort _) +\Rightarrow d | (CHead c0 _ _) \Rightarrow c0])) (CHead d (Bind Abbr) u) +(CHead x1 (Bind x0) x3) H9) in ((let H14 \def (f_equal C B (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow +(match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abbr])])) (CHead +d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in ((let H15 \def (f_equal C T +(\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t3) +\Rightarrow t3])) (CHead d (Bind Abbr) u) (CHead x1 (Bind x0) x3) H9) in +(\lambda (H16: (eq B Abbr x0)).(\lambda (H17: (eq C d x1)).(let H18 \def +(eq_ind_r T x3 (\lambda (t3: T).(subst0 (minus i (S n)) u0 t3 x4)) H11 u H15) +in (let H19 \def (eq_ind_r C x1 (\lambda (c0: C).(csubst0 (minus i (S n)) u0 +c0 x2)) H12 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 +(CHead x2 (Bind b) x4))) H10 Abbr H16) in (let H21 \def (eq_ind nat (minus i +n) (\lambda (n0: nat).(getl n0 (CHead x2 (Bind Abbr) x4) (CHead e (Bind Abbr) +u0))) (getl_conf_le i (CHead e (Bind Abbr) u0) c3 (csubst0_getl_ge i i (le_n +i) c c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead x2 (Bind Abbr) x4) n H20 +(le_S_n n i (le_S_n (S n) (S i) (le_S (S (S n)) (S i) (le_n_S (S n) i H6))))) +(S (minus i (S n))) (minus_x_Sy i n H6)) in (ty3_abbr g n c3 x2 x4 H20 t0 (H2 +(minus i (S n)) u0 x2 x4 (fsubst0_both (minus i (S n)) u0 d u x4 H18 x2 H19) +e (csubst0_getl_ge_back (minus i (S n)) (minus i (S n)) (le_n (minus i (S +n))) d x2 u0 H19 (CHead e (Bind Abbr) u0) (getl_gen_S (Bind Abbr) x2 (CHead e +(Bind Abbr) u0) x4 (minus i (S n)) H21))))))))))) H14)) H13))))))))))) H8)) +H7))) (\lambda (H6: (le i n)).(ty3_abbr g n c3 d u (csubst0_getl_ge i n H6 c +c3 u0 H4 (CHead d (Bind Abbr) u) H0) t0 H1))))))) (\lambda (t3: T).(\lambda +(H4: (subst0 i u0 (TLRef n) t3)).(\lambda (c3: C).(\lambda (H5: (csubst0 i u0 +c c3)).(\lambda (e: C).(\lambda (H6: (getl i c (CHead e (Bind Abbr) +u0))).(land_ind (eq nat n i) (eq T t3 (lift (S n) O u0)) (ty3 g c3 t3 (lift +(S n) O t0)) (\lambda (H7: (eq nat n i)).(\lambda (H8: (eq T t3 (lift (S n) O +u0))).(eq_ind_r T (lift (S n) O u0) (\lambda (t4: T).(ty3 g c3 t4 (lift (S n) +O t0))) (let H9 \def (eq_ind_r nat i (\lambda (n0: nat).(getl n0 c (CHead e +(Bind Abbr) u0))) H6 n H7) in (let H10 \def (eq_ind_r nat i (\lambda (n0: +nat).(csubst0 n0 u0 c c3)) H5 n H7) in (let H11 \def (eq_ind C (CHead d (Bind +Abbr) u) (\lambda (c0: C).(getl n c c0)) H0 (CHead e (Bind Abbr) u0) +(getl_mono c (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Abbr) u0) H9)) in +(let H12 \def (f_equal C C (\lambda (e0: C).(match e0 with [(CSort _) +\Rightarrow d | (CHead c0 _ _) \Rightarrow c0])) (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) n H0 (CHead e -(Bind Abbr) u0) H9)) in (let H12 \def (f_equal C C (\lambda (e0: C).(match e0 -in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c0 _ _) -\Rightarrow c0])) (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono -c (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Abbr) u0) H9)) in ((let H13 -\def (f_equal C T (\lambda (e0: C).(match e0 in C return (\lambda (_: C).T) -with [(CSort _) \Rightarrow u | (CHead _ _ t4) \Rightarrow t4])) (CHead d +(Bind Abbr) u0) H9)) in ((let H13 \def (f_equal C T (\lambda (e0: C).(match +e0 with [(CSort _) \Rightarrow u | (CHead _ _ t4) \Rightarrow t4])) (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Abbr) u0) H9)) in (\lambda (H14: (eq C d e)).(let H15 \def (eq_ind_r C e (\lambda (c0: C).(getl n c (CHead c0 (Bind Abbr) u0))) H11 @@ -276,186 +271,180 @@ O u))) (let H8 \def (eq_ind_r nat i (\lambda (n0: nat).(getl n0 c (CHead e (Bind Abbr) u0))) H5 n H6) in (let H9 \def (eq_ind C (CHead d (Bind Abst) u) (\lambda (c0: C).(getl n c c0)) H0 (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abst) u) n H0 (CHead e (Bind Abbr) u0) H8)) in (let H10 \def -(eq_ind C (CHead d (Bind Abst) u) (\lambda (ee: C).(match ee in C return -(\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).Prop) with [(Bind b) -\Rightarrow (match b in B return (\lambda (_: B).Prop) with [Abbr \Rightarrow -False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat _) -\Rightarrow False])])) I (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind -Abst) u) n H0 (CHead e (Bind Abbr) u0) H8)) in (False_ind (ty3 g c (lift (S -n) O u0) (lift (S n) O u)) H10)))) t3 H7))) (subst0_gen_lref u0 t3 i n -H4)))))) (\lambda (c3: C).(\lambda (H4: (csubst0 i u0 c c3)).(\lambda (e: -C).(\lambda (H5: (getl i c (CHead e (Bind Abbr) u0))).(lt_le_e n i (ty3 g c3 -(TLRef n) (lift (S n) O u)) (\lambda (H6: (lt n i)).(let H7 \def -(csubst0_getl_lt i n H6 c c3 u0 H4 (CHead d (Bind Abst) u) H0) in (or4_ind -(getl n c3 (CHead d (Bind Abst) u)) (ex3_4 B C T T (\lambda (b: B).(\lambda +(eq_ind C (CHead d (Bind Abst) u) (\lambda (ee: C).(match ee with [(CSort _) +\Rightarrow False | (CHead _ k _) \Rightarrow (match k with [(Bind b) +\Rightarrow (match b with [Abbr \Rightarrow False | Abst \Rightarrow True | +Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead e (Bind +Abbr) u0) (getl_mono c (CHead d (Bind Abst) u) n H0 (CHead e (Bind Abbr) u0) +H8)) in (False_ind (ty3 g c (lift (S n) O u0) (lift (S n) O u)) H10)))) t3 +H7))) (subst0_gen_lref u0 t3 i n H4)))))) (\lambda (c3: C).(\lambda (H4: +(csubst0 i u0 c c3)).(\lambda (e: C).(\lambda (H5: (getl i c (CHead e (Bind +Abbr) u0))).(lt_le_e n i (ty3 g c3 (TLRef n) (lift (S n) O u)) (\lambda (H6: +(lt n i)).(let H7 \def (csubst0_getl_lt i n H6 c c3 u0 H4 (CHead d (Bind +Abst) u) H0) in (or4_ind (getl n c3 (CHead d (Bind Abst) u)) (ex3_4 B C T T +(\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C +(CHead d (Bind Abst) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda +(e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e0 (Bind b) w)))))) +(\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 +(minus i (S n)) u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: +C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind Abst) u) (CHead e1 +(Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda +(u1: T).(getl n c3 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: +C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) u0 e1 e2)))))) +(ex4_5 B C C T T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda +(u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abst) u) (CHead e1 (Bind b) +u1))))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: +T).(\lambda (w: T).(getl n c3 (CHead e2 (Bind b) w))))))) (\lambda (_: +B).(\lambda (_: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 +(minus i (S n)) u0 u1 w)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: +C).(\lambda (_: T).(\lambda (_: T).(csubst0 (minus i (S n)) u0 e1 e2))))))) +(ty3 g c3 (TLRef n) (lift (S n) O u)) (\lambda (H8: (getl n c3 (CHead d (Bind +Abst) u))).(ty3_abst g n c3 d u H8 t0 H1)) (\lambda (H8: (ex3_4 B C T T +(\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C +(CHead d (Bind Abst) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda +(e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e0 (Bind b) w)))))) +(\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 +(minus i (S n)) u0 u1 w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abst) u) (CHead e0 (Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) -u0 u1 w)))))) (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: +u0 u1 w))))) (ty3 g c3 (TLRef n) (lift (S n) O u)) (\lambda (x0: B).(\lambda +(x1: C).(\lambda (x2: T).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind +Abst) u) (CHead x1 (Bind x0) x2))).(\lambda (H10: (getl n c3 (CHead x1 (Bind +x0) x3))).(\lambda (H11: (subst0 (minus i (S n)) u0 x2 x3)).(let H12 \def +(f_equal C C (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow d | +(CHead c0 _ _) \Rightarrow c0])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) +x2) H9) in ((let H13 \def (f_equal C B (\lambda (e0: C).(match e0 with +[(CSort _) \Rightarrow Abst | (CHead _ k _) \Rightarrow (match k with [(Bind +b) \Rightarrow b | (Flat _) \Rightarrow Abst])])) (CHead d (Bind Abst) u) +(CHead x1 (Bind x0) x2) H9) in ((let H14 \def (f_equal C T (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t3) \Rightarrow t3])) +(CHead d (Bind Abst) u) (CHead x1 (Bind x0) x2) H9) in (\lambda (H15: (eq B +Abst x0)).(\lambda (H16: (eq C d x1)).(let H17 \def (eq_ind_r T x2 (\lambda +(t3: T).(subst0 (minus i (S n)) u0 t3 x3)) H11 u H14) in (let H18 \def +(eq_ind_r C x1 (\lambda (c0: C).(getl n c3 (CHead c0 (Bind x0) x3))) H10 d +H16) in (let H19 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 (CHead d +(Bind b) x3))) H18 Abst H15) in (let H20 \def (eq_ind nat (minus i n) +(\lambda (n0: nat).(getl n0 (CHead d (Bind Abst) x3) (CHead e (Bind Abbr) +u0))) (getl_conf_le i (CHead e (Bind Abbr) u0) c3 (csubst0_getl_ge i i (le_n +i) c c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead d (Bind Abst) x3) n H19 +(le_S_n n i (le_S_n (S n) (S i) (le_S (S (S n)) (S i) (le_n_S (S n) i H6))))) +(S (minus i (S n))) (minus_x_Sy i n H6)) in (ty3_conv g c3 (lift (S n) O u) +(lift (S n) O t0) (ty3_lift g d u t0 H1 c3 O (S n) (getl_drop Abst c3 d x3 n +H19)) (TLRef n) (lift (S n) O x3) (ty3_abst g n c3 d x3 H19 t0 (H2 (minus i +(S n)) u0 d x3 (fsubst0_snd (minus i (S n)) u0 d u x3 H17) e (getl_gen_S +(Bind Abst) d (CHead e (Bind Abbr) u0) x3 (minus i (S n)) H20))) (pc3_lift c3 +d (S n) O (getl_drop Abst c3 d x3 n H19) x3 u (pc3_pr2_x d x3 u (pr2_delta d +e u0 (r (Bind Abst) (minus i (S n))) (getl_gen_S (Bind Abst) d (CHead e (Bind +Abbr) u0) x3 (minus i (S n)) H20) u u (pr0_refl u) x3 H17))))))))))) H13)) +H12))))))))) H8)) (\lambda (H8: (ex3_4 B C C T (\lambda (b: B).(\lambda (e1: +C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind Abst) u) (CHead e1 +(Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda +(u1: T).(getl n c3 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: +C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) u0 e1 +e2))))))).(ex3_4_ind B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind Abst) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl n c3 (CHead e2 (Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: -C).(\lambda (_: T).(csubst0 (minus i (S n)) u0 e1 e2)))))) (ex4_5 B C C T T -(\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda -(_: T).(eq C (CHead d (Bind Abst) u) (CHead e1 (Bind b) u1))))))) (\lambda -(b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl -n c3 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: -C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) -(\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda -(_: T).(csubst0 (minus i (S n)) u0 e1 e2))))))) (ty3 g c3 (TLRef n) (lift (S -n) O u)) (\lambda (H8: (getl n c3 (CHead d (Bind Abst) u))).(ty3_abst g n c3 -d u H8 t0 H1)) (\lambda (H8: (ex3_4 B C T T (\lambda (b: B).(\lambda (e0: -C).(\lambda (u1: T).(\lambda (_: T).(eq C (CHead d (Bind Abst) u) (CHead e0 -(Bind b) u1)))))) (\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda -(w: T).(getl n c3 (CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: -C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 -w))))))).(ex3_4_ind B C T T (\lambda (b: B).(\lambda (e0: C).(\lambda (u1: -T).(\lambda (_: T).(eq C (CHead d (Bind Abst) u) (CHead e0 (Bind b) u1)))))) -(\lambda (b: B).(\lambda (e0: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 -(CHead e0 (Bind b) w)))))) (\lambda (_: B).(\lambda (_: C).(\lambda (u1: -T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w))))) (ty3 g c3 (TLRef n) -(lift (S n) O u)) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: T).(\lambda +C).(\lambda (_: T).(csubst0 (minus i (S n)) u0 e1 e2))))) (ty3 g c3 (TLRef n) +(lift (S n) O u)) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind Abst) u) (CHead x1 (Bind x0) -x2))).(\lambda (H10: (getl n c3 (CHead x1 (Bind x0) x3))).(\lambda (H11: -(subst0 (minus i (S n)) u0 x2 x3)).(let H12 \def (f_equal C C (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | -(CHead c0 _ _) \Rightarrow c0])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) -x2) H9) in ((let H13 \def (f_equal C B (\lambda (e0: C).(match e0 in C return -(\lambda (_: C).B) with [(CSort _) \Rightarrow Abst | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b) -\Rightarrow b | (Flat _) \Rightarrow Abst])])) (CHead d (Bind Abst) u) (CHead -x1 (Bind x0) x2) H9) in ((let H14 \def (f_equal C T (\lambda (e0: C).(match -e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ -t3) \Rightarrow t3])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x2) H9) in -(\lambda (H15: (eq B Abst x0)).(\lambda (H16: (eq C d x1)).(let H17 \def -(eq_ind_r T x2 (\lambda (t3: T).(subst0 (minus i (S n)) u0 t3 x3)) H11 u H14) -in (let H18 \def (eq_ind_r C x1 (\lambda (c0: C).(getl n c3 (CHead c0 (Bind -x0) x3))) H10 d H16) in (let H19 \def (eq_ind_r B x0 (\lambda (b: B).(getl n -c3 (CHead d (Bind b) x3))) H18 Abst H15) in (let H20 \def (eq_ind nat (minus -i n) (\lambda (n0: nat).(getl n0 (CHead d (Bind Abst) x3) (CHead e (Bind -Abbr) u0))) (getl_conf_le i (CHead e (Bind Abbr) u0) c3 (csubst0_getl_ge i i -(le_n i) c c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead d (Bind Abst) x3) n -H19 (le_S_n n i (le_S (S n) i H6))) (S (minus i (S n))) (minus_x_Sy i n H6)) -in (ty3_conv g c3 (lift (S n) O u) (lift (S n) O t0) (ty3_lift g d u t0 H1 c3 -O (S n) (getl_drop Abst c3 d x3 n H19)) (TLRef n) (lift (S n) O x3) (ty3_abst -g n c3 d x3 H19 t0 (H2 (minus i (S n)) u0 d x3 (fsubst0_snd (minus i (S n)) -u0 d u x3 H17) e (getl_gen_S (Bind Abst) d (CHead e (Bind Abbr) u0) x3 (minus -i (S n)) H20))) (pc3_lift c3 d (S n) O (getl_drop Abst c3 d x3 n H19) x3 u -(pc3_pr2_x d x3 u (pr2_delta d e u0 (r (Bind Abst) (minus i (S n))) -(getl_gen_S (Bind Abst) d (CHead e (Bind Abbr) u0) x3 (minus i (S n)) H20) u -u (pr0_refl u) x3 H17))))))))))) H13)) H12))))))))) H8)) (\lambda (H8: (ex3_4 -B C C T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq -C (CHead d (Bind Abst) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: -B).(\lambda (_: C).(\lambda (e2: C).(\lambda (u1: T).(getl n c3 (CHead e2 -(Bind b) u1)))))) (\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda -(_: T).(csubst0 (minus i (S n)) u0 e1 e2))))))).(ex3_4_ind B C C T (\lambda -(b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(eq C (CHead d (Bind -Abst) u) (CHead e1 (Bind b) u1)))))) (\lambda (b: B).(\lambda (_: C).(\lambda -(e2: C).(\lambda (u1: T).(getl n c3 (CHead e2 (Bind b) u1)))))) (\lambda (_: -B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(csubst0 (minus i (S n)) -u0 e1 e2))))) (ty3 g c3 (TLRef n) (lift (S n) O u)) (\lambda (x0: B).(\lambda -(x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (H9: (eq C (CHead d (Bind -Abst) u) (CHead x1 (Bind x0) x3))).(\lambda (H10: (getl n c3 (CHead x2 (Bind -x0) x3))).(\lambda (H11: (csubst0 (minus i (S n)) u0 x1 x2)).(let H12 \def -(f_equal C C (\lambda (e0: C).(match e0 in C return (\lambda (_: C).C) with -[(CSort _) \Rightarrow d | (CHead c0 _ _) \Rightarrow c0])) (CHead d (Bind -Abst) u) (CHead x1 (Bind x0) x3) H9) in ((let H13 \def (f_equal C B (\lambda -(e0: C).(match e0 in C return (\lambda (_: C).B) with [(CSort _) \Rightarrow -Abst | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).B) with -[(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abst])])) (CHead d (Bind Abst) -u) (CHead x1 (Bind x0) x3) H9) in ((let H14 \def (f_equal C T (\lambda (e0: -C).(match e0 in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u | -(CHead _ _ t3) \Rightarrow t3])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) -x3) H9) in (\lambda (H15: (eq B Abst x0)).(\lambda (H16: (eq C d x1)).(let -H17 \def (eq_ind_r T x3 (\lambda (t3: T).(getl n c3 (CHead x2 (Bind x0) t3))) -H10 u H14) in (let H18 \def (eq_ind_r C x1 (\lambda (c0: C).(csubst0 (minus i -(S n)) u0 c0 x2)) H11 d H16) in (let H19 \def (eq_ind_r B x0 (\lambda (b: -B).(getl n c3 (CHead x2 (Bind b) u))) H17 Abst H15) in (let H20 \def (eq_ind -nat (minus i n) (\lambda (n0: nat).(getl n0 (CHead x2 (Bind Abst) u) (CHead e -(Bind Abbr) u0))) (getl_conf_le i (CHead e (Bind Abbr) u0) c3 -(csubst0_getl_ge i i (le_n i) c c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead -x2 (Bind Abst) u) n H19 (le_S_n n i (le_S (S n) i H6))) (S (minus i (S n))) -(minus_x_Sy i n H6)) in (ty3_abst g n c3 x2 u H19 t0 (H2 (minus i (S n)) u0 -x2 u (fsubst0_fst (minus i (S n)) u0 d u x2 H18) e (csubst0_getl_ge_back -(minus i (S n)) (minus i (S n)) (le_n (minus i (S n))) d x2 u0 H18 (CHead e -(Bind Abbr) u0) (getl_gen_S (Bind Abst) x2 (CHead e (Bind Abbr) u0) u (minus -i (S n)) H20))))))))))) H13)) H12))))))))) H8)) (\lambda (H8: (ex4_5 B C C T -T (\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda -(_: T).(eq C (CHead d (Bind Abst) u) (CHead e1 (Bind b) u1))))))) (\lambda -(b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl -n c3 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: -C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) -(\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda -(_: T).(csubst0 (minus i (S n)) u0 e1 e2)))))))).(ex4_5_ind B C C T T -(\lambda (b: B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda -(_: T).(eq C (CHead d (Bind Abst) u) (CHead e1 (Bind b) u1))))))) (\lambda -(b: B).(\lambda (_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl -n c3 (CHead e2 (Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: -C).(\lambda (u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) -(\lambda (_: B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda -(_: T).(csubst0 (minus i (S n)) u0 e1 e2)))))) (ty3 g c3 (TLRef n) (lift (S -n) O u)) (\lambda (x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: -T).(\lambda (x4: T).(\lambda (H9: (eq C (CHead d (Bind Abst) u) (CHead x1 -(Bind x0) x3))).(\lambda (H10: (getl n c3 (CHead x2 (Bind x0) x4))).(\lambda -(H11: (subst0 (minus i (S n)) u0 x3 x4)).(\lambda (H12: (csubst0 (minus i (S -n)) u0 x1 x2)).(let H13 \def (f_equal C C (\lambda (e0: C).(match e0 in C -return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | (CHead c0 _ _) -\Rightarrow c0])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x3) H9) in -((let H14 \def (f_equal C B (\lambda (e0: C).(match e0 in C return (\lambda -(_: C).B) with [(CSort _) \Rightarrow Abst | (CHead _ k _) \Rightarrow (match -k in K return (\lambda (_: K).B) with [(Bind b) \Rightarrow b | (Flat _) +x3))).(\lambda (H10: (getl n c3 (CHead x2 (Bind x0) x3))).(\lambda (H11: +(csubst0 (minus i (S n)) u0 x1 x2)).(let H12 \def (f_equal C C (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow d | (CHead c0 _ _) \Rightarrow c0])) +(CHead d (Bind Abst) u) (CHead x1 (Bind x0) x3) H9) in ((let H13 \def +(f_equal C B (\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow Abst | +(CHead _ k _) \Rightarrow (match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abst])])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x3) H9) in -((let H15 \def (f_equal C T (\lambda (e0: C).(match e0 in C return (\lambda -(_: C).T) with [(CSort _) \Rightarrow u | (CHead _ _ t3) \Rightarrow t3])) -(CHead d (Bind Abst) u) (CHead x1 (Bind x0) x3) H9) in (\lambda (H16: (eq B -Abst x0)).(\lambda (H17: (eq C d x1)).(let H18 \def (eq_ind_r T x3 (\lambda -(t3: T).(subst0 (minus i (S n)) u0 t3 x4)) H11 u H15) in (let H19 \def -(eq_ind_r C x1 (\lambda (c0: C).(csubst0 (minus i (S n)) u0 c0 x2)) H12 d -H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 (CHead x2 -(Bind b) x4))) H10 Abst H16) in (let H21 \def (eq_ind nat (minus i n) -(\lambda (n0: nat).(getl n0 (CHead x2 (Bind Abst) x4) (CHead e (Bind Abbr) +((let H14 \def (f_equal C T (\lambda (e0: C).(match e0 with [(CSort _) +\Rightarrow u | (CHead _ _ t3) \Rightarrow t3])) (CHead d (Bind Abst) u) +(CHead x1 (Bind x0) x3) H9) in (\lambda (H15: (eq B Abst x0)).(\lambda (H16: +(eq C d x1)).(let H17 \def (eq_ind_r T x3 (\lambda (t3: T).(getl n c3 (CHead +x2 (Bind x0) t3))) H10 u H14) in (let H18 \def (eq_ind_r C x1 (\lambda (c0: +C).(csubst0 (minus i (S n)) u0 c0 x2)) H11 d H16) in (let H19 \def (eq_ind_r +B x0 (\lambda (b: B).(getl n c3 (CHead x2 (Bind b) u))) H17 Abst H15) in (let +H20 \def (eq_ind nat (minus i n) (\lambda (n0: nat).(getl n0 (CHead x2 (Bind +Abst) u) (CHead e (Bind Abbr) u0))) (getl_conf_le i (CHead e (Bind Abbr) u0) +c3 (csubst0_getl_ge i i (le_n i) c c3 u0 H4 (CHead e (Bind Abbr) u0) H5) +(CHead x2 (Bind Abst) u) n H19 (le_S_n n i (le_S_n (S n) (S i) (le_S (S (S +n)) (S i) (le_n_S (S n) i H6))))) (S (minus i (S n))) (minus_x_Sy i n H6)) in +(ty3_abst g n c3 x2 u H19 t0 (H2 (minus i (S n)) u0 x2 u (fsubst0_fst (minus +i (S n)) u0 d u x2 H18) e (csubst0_getl_ge_back (minus i (S n)) (minus i (S +n)) (le_n (minus i (S n))) d x2 u0 H18 (CHead e (Bind Abbr) u0) (getl_gen_S +(Bind Abst) x2 (CHead e (Bind Abbr) u0) u (minus i (S n)) H20))))))))))) +H13)) H12))))))))) H8)) (\lambda (H8: (ex4_5 B C C T T (\lambda (b: +B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C +(CHead d (Bind Abst) u) (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda +(_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e2 +(Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda +(u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) (\lambda (_: +B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 +(minus i (S n)) u0 e1 e2)))))))).(ex4_5_ind B C C T T (\lambda (b: +B).(\lambda (e1: C).(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq C +(CHead d (Bind Abst) u) (CHead e1 (Bind b) u1))))))) (\lambda (b: B).(\lambda +(_: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (w: T).(getl n c3 (CHead e2 +(Bind b) w))))))) (\lambda (_: B).(\lambda (_: C).(\lambda (_: C).(\lambda +(u1: T).(\lambda (w: T).(subst0 (minus i (S n)) u0 u1 w)))))) (\lambda (_: +B).(\lambda (e1: C).(\lambda (e2: C).(\lambda (_: T).(\lambda (_: T).(csubst0 +(minus i (S n)) u0 e1 e2)))))) (ty3 g c3 (TLRef n) (lift (S n) O u)) (\lambda +(x0: B).(\lambda (x1: C).(\lambda (x2: C).(\lambda (x3: T).(\lambda (x4: +T).(\lambda (H9: (eq C (CHead d (Bind Abst) u) (CHead x1 (Bind x0) +x3))).(\lambda (H10: (getl n c3 (CHead x2 (Bind x0) x4))).(\lambda (H11: +(subst0 (minus i (S n)) u0 x3 x4)).(\lambda (H12: (csubst0 (minus i (S n)) u0 +x1 x2)).(let H13 \def (f_equal C C (\lambda (e0: C).(match e0 with [(CSort _) +\Rightarrow d | (CHead c0 _ _) \Rightarrow c0])) (CHead d (Bind Abst) u) +(CHead x1 (Bind x0) x3) H9) in ((let H14 \def (f_equal C B (\lambda (e0: +C).(match e0 with [(CSort _) \Rightarrow Abst | (CHead _ k _) \Rightarrow +(match k with [(Bind b) \Rightarrow b | (Flat _) \Rightarrow Abst])])) (CHead +d (Bind Abst) u) (CHead x1 (Bind x0) x3) H9) in ((let H15 \def (f_equal C T +(\lambda (e0: C).(match e0 with [(CSort _) \Rightarrow u | (CHead _ _ t3) +\Rightarrow t3])) (CHead d (Bind Abst) u) (CHead x1 (Bind x0) x3) H9) in +(\lambda (H16: (eq B Abst x0)).(\lambda (H17: (eq C d x1)).(let H18 \def +(eq_ind_r T x3 (\lambda (t3: T).(subst0 (minus i (S n)) u0 t3 x4)) H11 u H15) +in (let H19 \def (eq_ind_r C x1 (\lambda (c0: C).(csubst0 (minus i (S n)) u0 +c0 x2)) H12 d H17) in (let H20 \def (eq_ind_r B x0 (\lambda (b: B).(getl n c3 +(CHead x2 (Bind b) x4))) H10 Abst H16) in (let H21 \def (eq_ind nat (minus i +n) (\lambda (n0: nat).(getl n0 (CHead x2 (Bind Abst) x4) (CHead e (Bind Abbr) u0))) (getl_conf_le i (CHead e (Bind Abbr) u0) c3 (csubst0_getl_ge i i (le_n i) c c3 u0 H4 (CHead e (Bind Abbr) u0) H5) (CHead x2 (Bind Abst) x4) n H20 -(le_S_n n i (le_S (S n) i H6))) (S (minus i (S n))) (minus_x_Sy i n H6)) in -(ty3_conv g c3 (lift (S n) O u) (lift (S n) O t0) (ty3_lift g x2 u t0 (H2 -(minus i (S n)) u0 x2 u (fsubst0_fst (minus i (S n)) u0 d u x2 H19) e -(csubst0_getl_ge_back (minus i (S n)) (minus i (S n)) (le_n (minus i (S n))) -d x2 u0 H19 (CHead e (Bind Abbr) u0) (getl_gen_S (Bind Abst) x2 (CHead e -(Bind Abbr) u0) x4 (minus i (S n)) H21))) c3 O (S n) (getl_drop Abst c3 x2 x4 -n H20)) (TLRef n) (lift (S n) O x4) (ty3_abst g n c3 x2 x4 H20 t0 (H2 (minus -i (S n)) u0 x2 x4 (fsubst0_both (minus i (S n)) u0 d u x4 H18 x2 H19) e -(csubst0_getl_ge_back (minus i (S n)) (minus i (S n)) (le_n (minus i (S n))) -d x2 u0 H19 (CHead e (Bind Abbr) u0) (getl_gen_S (Bind Abst) x2 (CHead e -(Bind Abbr) u0) x4 (minus i (S n)) H21)))) (pc3_lift c3 x2 (S n) O (getl_drop -Abst c3 x2 x4 n H20) x4 u (pc3_fsubst0 d u u (pc3_refl d u) (minus i (S n)) -u0 x2 x4 (fsubst0_both (minus i (S n)) u0 d u x4 H18 x2 H19) e -(csubst0_getl_ge_back (minus i (S n)) (minus i (S n)) (le_n (minus i (S n))) -d x2 u0 H19 (CHead e (Bind Abbr) u0) (getl_gen_S (Bind Abst) x2 (CHead e -(Bind Abbr) u0) x4 (minus i (S n)) H21)))))))))))) H14)) H13))))))))))) H8)) -H7))) (\lambda (H6: (le i n)).(ty3_abst g n c3 d u (csubst0_getl_ge i n H6 c -c3 u0 H4 (CHead d (Bind Abst) u) H0) t0 H1))))))) (\lambda (t3: T).(\lambda -(H4: (subst0 i u0 (TLRef n) t3)).(\lambda (c3: C).(\lambda (H5: (csubst0 i u0 -c c3)).(\lambda (e: C).(\lambda (H6: (getl i c (CHead e (Bind Abbr) -u0))).(land_ind (eq nat n i) (eq T t3 (lift (S n) O u0)) (ty3 g c3 t3 (lift -(S n) O u)) (\lambda (H7: (eq nat n i)).(\lambda (H8: (eq T t3 (lift (S n) O -u0))).(eq_ind_r T (lift (S n) O u0) (\lambda (t4: T).(ty3 g c3 t4 (lift (S n) -O u))) (let H9 \def (eq_ind_r nat i (\lambda (n0: nat).(getl n0 c (CHead e -(Bind Abbr) u0))) H6 n H7) in (let H10 \def (eq_ind_r nat i (\lambda (n0: -nat).(csubst0 n0 u0 c c3)) H5 n H7) in (let H11 \def (eq_ind C (CHead d (Bind -Abst) u) (\lambda (c0: C).(getl n c c0)) H0 (CHead e (Bind Abbr) u0) -(getl_mono c (CHead d (Bind Abst) u) n H0 (CHead e (Bind Abbr) u0) H9)) in -(let H12 \def (eq_ind C (CHead d (Bind Abst) u) (\lambda (ee: C).(match ee in -C return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k -_) \Rightarrow (match k in K return (\lambda (_: K).Prop) with [(Bind b) -\Rightarrow (match b in B return (\lambda (_: B).Prop) with [Abbr \Rightarrow -False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat _) -\Rightarrow False])])) I (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind -Abst) u) n H0 (CHead e (Bind Abbr) u0) H9)) in (False_ind (ty3 g c3 (lift (S -n) O u0) (lift (S n) O u)) H12))))) t3 H8))) (subst0_gen_lref u0 t3 i n -H4)))))))) c2 t2 H3)))))))))))))) (\lambda (c: C).(\lambda (u: T).(\lambda -(t0: T).(\lambda (H0: (ty3 g c u t0)).(\lambda (H1: ((\forall (i: +(le_S_n n i (le_S_n (S n) (S i) (le_S (S (S n)) (S i) (le_n_S (S n) i H6))))) +(S (minus i (S n))) (minus_x_Sy i n H6)) in (ty3_conv g c3 (lift (S n) O u) +(lift (S n) O t0) (ty3_lift g x2 u t0 (H2 (minus i (S n)) u0 x2 u +(fsubst0_fst (minus i (S n)) u0 d u x2 H19) e (csubst0_getl_ge_back (minus i +(S n)) (minus i (S n)) (le_n (minus i (S n))) d x2 u0 H19 (CHead e (Bind +Abbr) u0) (getl_gen_S (Bind Abst) x2 (CHead e (Bind Abbr) u0) x4 (minus i (S +n)) H21))) c3 O (S n) (getl_drop Abst c3 x2 x4 n H20)) (TLRef n) (lift (S n) +O x4) (ty3_abst g n c3 x2 x4 H20 t0 (H2 (minus i (S n)) u0 x2 x4 +(fsubst0_both (minus i (S n)) u0 d u x4 H18 x2 H19) e (csubst0_getl_ge_back +(minus i (S n)) (minus i (S n)) (le_n (minus i (S n))) d x2 u0 H19 (CHead e +(Bind Abbr) u0) (getl_gen_S (Bind Abst) x2 (CHead e (Bind Abbr) u0) x4 (minus +i (S n)) H21)))) (pc3_lift c3 x2 (S n) O (getl_drop Abst c3 x2 x4 n H20) x4 u +(pc3_fsubst0 d u u (pc3_refl d u) (minus i (S n)) u0 x2 x4 (fsubst0_both +(minus i (S n)) u0 d u x4 H18 x2 H19) e (csubst0_getl_ge_back (minus i (S n)) +(minus i (S n)) (le_n (minus i (S n))) d x2 u0 H19 (CHead e (Bind Abbr) u0) +(getl_gen_S (Bind Abst) x2 (CHead e (Bind Abbr) u0) x4 (minus i (S n)) +H21)))))))))))) H14)) H13))))))))))) H8)) H7))) (\lambda (H6: (le i +n)).(ty3_abst g n c3 d u (csubst0_getl_ge i n H6 c c3 u0 H4 (CHead d (Bind +Abst) u) H0) t0 H1))))))) (\lambda (t3: T).(\lambda (H4: (subst0 i u0 (TLRef +n) t3)).(\lambda (c3: C).(\lambda (H5: (csubst0 i u0 c c3)).(\lambda (e: +C).(\lambda (H6: (getl i c (CHead e (Bind Abbr) u0))).(land_ind (eq nat n i) +(eq T t3 (lift (S n) O u0)) (ty3 g c3 t3 (lift (S n) O u)) (\lambda (H7: (eq +nat n i)).(\lambda (H8: (eq T t3 (lift (S n) O u0))).(eq_ind_r T (lift (S n) +O u0) (\lambda (t4: T).(ty3 g c3 t4 (lift (S n) O u))) (let H9 \def (eq_ind_r +nat i (\lambda (n0: nat).(getl n0 c (CHead e (Bind Abbr) u0))) H6 n H7) in +(let H10 \def (eq_ind_r nat i (\lambda (n0: nat).(csubst0 n0 u0 c c3)) H5 n +H7) in (let H11 \def (eq_ind C (CHead d (Bind Abst) u) (\lambda (c0: C).(getl +n c c0)) H0 (CHead e (Bind Abbr) u0) (getl_mono c (CHead d (Bind Abst) u) n +H0 (CHead e (Bind Abbr) u0) H9)) in (let H12 \def (eq_ind C (CHead d (Bind +Abst) u) (\lambda (ee: C).(match ee with [(CSort _) \Rightarrow False | +(CHead _ k _) \Rightarrow (match k with [(Bind b) \Rightarrow (match b with +[Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | +(Flat _) \Rightarrow False])])) I (CHead e (Bind Abbr) u0) (getl_mono c +(CHead d (Bind Abst) u) n H0 (CHead e (Bind Abbr) u0) H9)) in (False_ind (ty3 +g c3 (lift (S n) O u0) (lift (S n) O u)) H12))))) t3 H8))) (subst0_gen_lref +u0 t3 i n H4)))))))) c2 t2 H3)))))))))))))) (\lambda (c: C).(\lambda (u: +T).(\lambda (t0: T).(\lambda (H0: (ty3 g c u t0)).(\lambda (H1: ((\forall (i: nat).(\forall (u0: T).(\forall (c2: C).(\forall (t2: T).((fsubst0 i u0 c u c2 t2) \to (\forall (e: C).((getl i c (CHead e (Bind Abbr) u0)) \to (ty3 g c2 t2 t0)))))))))).(\lambda (b: B).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H2: @@ -959,9 +948,6 @@ Cast) t0 t3)) i u c3 (THead (Flat Cast) t0 x0) (fsubst0_both i u c (THead i H10 t0) c3 H6) e H7)))) (ty3_correct g c3 t3 t0 (H3 i u c3 t3 (fsubst0_fst i u c t3 c3 H6) e H7))) t5 H9)))))) H8)) (subst0_gen_head (Flat Cast) u t3 t2 t5 i H5)))))))) c2 t4 H4)))))))))))))) c1 t1 t H))))). -(* COMMENTS -Initial nodes: 23439 -END *) theorem ty3_csubst0: \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c1 @@ -974,9 +960,6 @@ c2 t1 t2))))))))))) nat).(\lambda (H0: (getl i c1 (CHead e (Bind Abbr) u))).(\lambda (c2: C).(\lambda (H1: (csubst0 i u c1 c2)).(ty3_fsubst0 g c1 t1 t2 H i u c2 t1 (fsubst0_fst i u c1 t1 c2 H1) e H0))))))))))). -(* COMMENTS -Initial nodes: 89 -END *) theorem ty3_subst0: \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t: T).((ty3 g c t1 @@ -989,7 +972,4 @@ t))))))))))) (H0: (getl i c (CHead e (Bind Abbr) u))).(\lambda (t2: T).(\lambda (H1: (subst0 i u t1 t2)).(ty3_fsubst0 g c t1 t H i u c t2 (fsubst0_snd i u c t1 t2 H1) e H0))))))))))). -(* COMMENTS -Initial nodes: 89 -END *) diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/fwd.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/fwd.ma index bf6634e45..2bbe0e91f 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/fwd.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/fwd.ma @@ -14,9 +14,53 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/defs.ma". +include "basic_1/ty3/defs.ma". -include "Basic-1/pc3/props.ma". +include "basic_1/pc3/props.ma". + +let rec ty3_ind (g: G) (P: (C \to (T \to (T \to Prop)))) (f: (\forall (c: +C).(\forall (t2: T).(\forall (t: T).((ty3 g c t2 t) \to ((P c t2 t) \to +(\forall (u: T).(\forall (t1: T).((ty3 g c u t1) \to ((P c u t1) \to ((pc3 c +t1 t2) \to (P c u t2)))))))))))) (f0: (\forall (c: C).(\forall (m: nat).(P c +(TSort m) (TSort (next g m)))))) (f1: (\forall (n: nat).(\forall (c: +C).(\forall (d: C).(\forall (u: T).((getl n c (CHead d (Bind Abbr) u)) \to +(\forall (t: T).((ty3 g d u t) \to ((P d u t) \to (P c (TLRef n) (lift (S n) +O t))))))))))) (f2: (\forall (n: nat).(\forall (c: C).(\forall (d: +C).(\forall (u: T).((getl n c (CHead d (Bind Abst) u)) \to (\forall (t: +T).((ty3 g d u t) \to ((P d u t) \to (P c (TLRef n) (lift (S n) O +u))))))))))) (f3: (\forall (c: C).(\forall (u: T).(\forall (t: T).((ty3 g c u +t) \to ((P c u t) \to (\forall (b: B).(\forall (t1: T).(\forall (t2: T).((ty3 +g (CHead c (Bind b) u) t1 t2) \to ((P (CHead c (Bind b) u) t1 t2) \to (P c +(THead (Bind b) u t1) (THead (Bind b) u t2))))))))))))) (f4: (\forall (c: +C).(\forall (w: T).(\forall (u: T).((ty3 g c w u) \to ((P c w u) \to (\forall +(v: T).(\forall (t: T).((ty3 g c v (THead (Bind Abst) u t)) \to ((P c v +(THead (Bind Abst) u t)) \to (P c (THead (Flat Appl) w v) (THead (Flat Appl) +w (THead (Bind Abst) u t))))))))))))) (f5: (\forall (c: C).(\forall (t1: +T).(\forall (t2: T).((ty3 g c t1 t2) \to ((P c t1 t2) \to (\forall (t0: +T).((ty3 g c t2 t0) \to ((P c t2 t0) \to (P c (THead (Flat Cast) t2 t1) +(THead (Flat Cast) t0 t2))))))))))) (c: C) (t: T) (t0: T) (t1: ty3 g c t t0) +on t1: P c t t0 \def match t1 with [(ty3_conv c0 t2 t3 t4 u t5 t6 p) +\Rightarrow (f c0 t2 t3 t4 ((ty3_ind g P f f0 f1 f2 f3 f4 f5) c0 t2 t3 t4) u +t5 t6 ((ty3_ind g P f f0 f1 f2 f3 f4 f5) c0 u t5 t6) p) | (ty3_sort c0 m) +\Rightarrow (f0 c0 m) | (ty3_abbr n c0 d u g0 t2 t3) \Rightarrow (f1 n c0 d u +g0 t2 t3 ((ty3_ind g P f f0 f1 f2 f3 f4 f5) d u t2 t3)) | (ty3_abst n c0 d u +g0 t2 t3) \Rightarrow (f2 n c0 d u g0 t2 t3 ((ty3_ind g P f f0 f1 f2 f3 f4 +f5) d u t2 t3)) | (ty3_bind c0 u t2 t3 b t4 t5 t6) \Rightarrow (f3 c0 u t2 t3 +((ty3_ind g P f f0 f1 f2 f3 f4 f5) c0 u t2 t3) b t4 t5 t6 ((ty3_ind g P f f0 +f1 f2 f3 f4 f5) (CHead c0 (Bind b) u) t4 t5 t6)) | (ty3_appl c0 w u t2 v t3 +t4) \Rightarrow (f4 c0 w u t2 ((ty3_ind g P f f0 f1 f2 f3 f4 f5) c0 w u t2) v +t3 t4 ((ty3_ind g P f f0 f1 f2 f3 f4 f5) c0 v (THead (Bind Abst) u t3) t4)) | +(ty3_cast c0 t2 t3 t4 t5 t6) \Rightarrow (f5 c0 t2 t3 t4 ((ty3_ind g P f f0 +f1 f2 f3 f4 f5) c0 t2 t3 t4) t5 t6 ((ty3_ind g P f f0 f1 f2 f3 f4 f5) c0 t3 +t5 t6))]. + +let rec tys3_ind (g: G) (c: C) (P: (TList \to (T \to Prop))) (f: (\forall (u: +T).(\forall (u0: T).((ty3 g c u u0) \to (P TNil u))))) (f0: (\forall (t: +T).(\forall (u: T).((ty3 g c t u) \to (\forall (ts: TList).((tys3 g c ts u) +\to ((P ts u) \to (P (TCons t ts) u)))))))) (t: TList) (t0: T) (t1: tys3 g c +t t0) on t1: P t t0 \def match t1 with [(tys3_nil u u0 t2) \Rightarrow (f u +u0 t2) | (tys3_cons t2 u t3 ts t4) \Rightarrow (f0 t2 u t3 ts t4 ((tys3_ind g +c P f f0) ts u t4))]. theorem ty3_gen_sort: \forall (g: G).(\forall (c: C).(\forall (x: T).(\forall (n: nat).((ty3 g c @@ -37,57 +81,51 @@ T).e) u (TSort n) H6) in (let H8 \def (eq_ind T u (\lambda (t0: T).((eq T t0 \def (eq_ind T u (\lambda (t0: T).(ty3 g c0 t0 t1)) H3 (TSort n) H7) in (pc3_t t1 c0 (TSort (next g n)) (H8 (refl_equal T (TSort n))) t2 H5))))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda (H1: (eq T -(TSort m) (TSort n))).(let H2 \def (f_equal T nat (\lambda (e: T).(match e in -T return (\lambda (_: T).nat) with [(TSort n0) \Rightarrow n0 | (TLRef _) -\Rightarrow m | (THead _ _ _) \Rightarrow m])) (TSort m) (TSort n) H1) in -(eq_ind_r nat n (\lambda (n0: nat).(pc3 c0 (TSort (next g n)) (TSort (next g -n0)))) (pc3_refl c0 (TSort (next g n))) m H2))))) (\lambda (n0: nat).(\lambda -(c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (_: (getl n0 c0 (CHead d -(Bind Abbr) u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (_: -(((eq T u (TSort n)) \to (pc3 d (TSort (next g n)) t)))).(\lambda (H4: (eq T -(TLRef n0) (TSort n))).(let H5 \def (eq_ind T (TLRef n0) (\lambda (ee: -T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow -False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I -(TSort n) H4) in (False_ind (pc3 c0 (TSort (next g n)) (lift (S n0) O t)) -H5))))))))))) (\lambda (n0: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda -(u: T).(\lambda (_: (getl n0 c0 (CHead d (Bind Abst) u))).(\lambda (t: -T).(\lambda (_: (ty3 g d u t)).(\lambda (_: (((eq T u (TSort n)) \to (pc3 d -(TSort (next g n)) t)))).(\lambda (H4: (eq T (TLRef n0) (TSort n))).(let H5 -\def (eq_ind T (TLRef n0) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | -(THead _ _ _) \Rightarrow False])) I (TSort n) H4) in (False_ind (pc3 c0 -(TSort (next g n)) (lift (S n0) O u)) H5))))))))))) (\lambda (c0: C).(\lambda -(u: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (_: (((eq T u -(TSort n)) \to (pc3 c0 (TSort (next g n)) t)))).(\lambda (b: B).(\lambda (t1: -T).(\lambda (t2: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t1 -t2)).(\lambda (_: (((eq T t1 (TSort n)) \to (pc3 (CHead c0 (Bind b) u) (TSort -(next g n)) t2)))).(\lambda (H5: (eq T (THead (Bind b) u t1) (TSort n))).(let -H6 \def (eq_ind T (THead (Bind b) u t1) (\lambda (ee: T).(match ee in T -return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) +(TSort m) (TSort n))).(let H2 \def (f_equal T nat (\lambda (e: T).(match e +with [(TSort n0) \Rightarrow n0 | (TLRef _) \Rightarrow m | (THead _ _ _) +\Rightarrow m])) (TSort m) (TSort n) H1) in (eq_ind_r nat n (\lambda (n0: +nat).(pc3 c0 (TSort (next g n)) (TSort (next g n0)))) (pc3_refl c0 (TSort +(next g n))) m H2))))) (\lambda (n0: nat).(\lambda (c0: C).(\lambda (d: +C).(\lambda (u: T).(\lambda (_: (getl n0 c0 (CHead d (Bind Abbr) +u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (_: (((eq T u +(TSort n)) \to (pc3 d (TSort (next g n)) t)))).(\lambda (H4: (eq T (TLRef n0) +(TSort n))).(let H5 \def (eq_ind T (TLRef n0) (\lambda (ee: T).(match ee with +[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) +\Rightarrow False])) I (TSort n) H4) in (False_ind (pc3 c0 (TSort (next g n)) +(lift (S n0) O t)) H5))))))))))) (\lambda (n0: nat).(\lambda (c0: C).(\lambda +(d: C).(\lambda (u: T).(\lambda (_: (getl n0 c0 (CHead d (Bind Abst) +u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (_: (((eq T u +(TSort n)) \to (pc3 d (TSort (next g n)) t)))).(\lambda (H4: (eq T (TLRef n0) +(TSort n))).(let H5 \def (eq_ind T (TLRef n0) (\lambda (ee: T).(match ee with +[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) +\Rightarrow False])) I (TSort n) H4) in (False_ind (pc3 c0 (TSort (next g n)) +(lift (S n0) O u)) H5))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda +(t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (_: (((eq T u (TSort n)) \to +(pc3 c0 (TSort (next g n)) t)))).(\lambda (b: B).(\lambda (t1: T).(\lambda +(t2: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t1 t2)).(\lambda (_: (((eq +T t1 (TSort n)) \to (pc3 (CHead c0 (Bind b) u) (TSort (next g n)) +t2)))).(\lambda (H5: (eq T (THead (Bind b) u t1) (TSort n))).(let H6 \def +(eq_ind T (THead (Bind b) u t1) (\lambda (ee: T).(match ee with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow +True])) I (TSort n) H5) in (False_ind (pc3 c0 (TSort (next g n)) (THead (Bind +b) u t2)) H6))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda (u: +T).(\lambda (_: (ty3 g c0 w u)).(\lambda (_: (((eq T w (TSort n)) \to (pc3 c0 +(TSort (next g n)) u)))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g +c0 v (THead (Bind Abst) u t))).(\lambda (_: (((eq T v (TSort n)) \to (pc3 c0 +(TSort (next g n)) (THead (Bind Abst) u t))))).(\lambda (H5: (eq T (THead +(Flat Appl) w v) (TSort n))).(let H6 \def (eq_ind T (THead (Flat Appl) w v) +(\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) H5) in -(False_ind (pc3 c0 (TSort (next g n)) (THead (Bind b) u t2)) H6))))))))))))) -(\lambda (c0: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: (ty3 g c0 w -u)).(\lambda (_: (((eq T w (TSort n)) \to (pc3 c0 (TSort (next g n)) -u)))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead (Bind -Abst) u t))).(\lambda (_: (((eq T v (TSort n)) \to (pc3 c0 (TSort (next g n)) -(THead (Bind Abst) u t))))).(\lambda (H5: (eq T (THead (Flat Appl) w v) -(TSort n))).(let H6 \def (eq_ind T (THead (Flat Appl) w v) (\lambda (ee: -T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow -False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I -(TSort n) H5) in (False_ind (pc3 c0 (TSort (next g n)) (THead (Flat Appl) w -(THead (Bind Abst) u t))) H6)))))))))))) (\lambda (c0: C).(\lambda (t1: -T).(\lambda (t2: T).(\lambda (_: (ty3 g c0 t1 t2)).(\lambda (_: (((eq T t1 -(TSort n)) \to (pc3 c0 (TSort (next g n)) t2)))).(\lambda (t0: T).(\lambda -(_: (ty3 g c0 t2 t0)).(\lambda (_: (((eq T t2 (TSort n)) \to (pc3 c0 (TSort -(next g n)) t0)))).(\lambda (H5: (eq T (THead (Flat Cast) t2 t1) (TSort -n))).(let H6 \def (eq_ind T (THead (Flat Cast) t2 t1) (\lambda (ee: T).(match -ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | -(TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TSort n) -H5) in (False_ind (pc3 c0 (TSort (next g n)) (THead (Flat Cast) t0 t2)) -H6))))))))))) c y x H0))) H))))). -(* COMMENTS -Initial nodes: 1179 -END *) +(False_ind (pc3 c0 (TSort (next g n)) (THead (Flat Appl) w (THead (Bind Abst) +u t))) H6)))))))))))) (\lambda (c0: C).(\lambda (t1: T).(\lambda (t2: +T).(\lambda (_: (ty3 g c0 t1 t2)).(\lambda (_: (((eq T t1 (TSort n)) \to (pc3 +c0 (TSort (next g n)) t2)))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t2 +t0)).(\lambda (_: (((eq T t2 (TSort n)) \to (pc3 c0 (TSort (next g n)) +t0)))).(\lambda (H5: (eq T (THead (Flat Cast) t2 t1) (TSort n))).(let H6 \def +(eq_ind T (THead (Flat Cast) t2 t1) (\lambda (ee: T).(match ee with [(TSort +_) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) +\Rightarrow True])) I (TSort n) H5) in (False_ind (pc3 c0 (TSort (next g n)) +(THead (Flat Cast) t0 t2)) H6))))))))))) c y x H0))) H))))). theorem ty3_gen_lref: \forall (g: G).(\forall (c: C).(\forall (x: T).(\forall (n: nat).((ty3 g c @@ -215,28 +253,27 @@ T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) t2)))) (\lambda (e: C).(\lambda C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0)))) x0 x1 x2 (pc3_t t1 c0 (lift (S n) O x1) H12 t2 H5) H13 H14)))))))) H11)) H10)))))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda (H1: (eq T (TSort m) (TLRef -n))).(let H2 \def (eq_ind T (TSort m) (\lambda (ee: T).(match ee in T return -(\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) -\Rightarrow False | (THead _ _ _) \Rightarrow False])) I (TLRef n) H1) in -(False_ind (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: -T).(pc3 c0 (lift (S n) O t) (TSort (next g m)))))) (\lambda (e: C).(\lambda -(u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: -C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T T (\lambda -(_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u) (TSort (next -g m)))))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e -(Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u -t)))))) H2))))) (\lambda (n0: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda -(u: T).(\lambda (H1: (getl n0 c0 (CHead d (Bind Abbr) u))).(\lambda (t: -T).(\lambda (H2: (ty3 g d u t)).(\lambda (_: (((eq T u (TLRef n)) \to (or -(ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 d (lift (S -n) O t0) t)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n d -(CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: -T).(ty3 g e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda -(_: T).(pc3 d (lift (S n) O u0) t)))) (\lambda (e: C).(\lambda (u0: -T).(\lambda (_: T).(getl n d (CHead e (Bind Abst) u0))))) (\lambda (e: -C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))))))).(\lambda (H4: -(eq T (TLRef n0) (TLRef n))).(let H5 \def (f_equal T nat (\lambda (e: -T).(match e in T return (\lambda (_: T).nat) with [(TSort _) \Rightarrow n0 | +n))).(let H2 \def (eq_ind T (TSort m) (\lambda (ee: T).(match ee with [(TSort +_) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow +False])) I (TLRef n) H1) in (False_ind (or (ex3_3 C T T (\lambda (_: +C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S n) O t) (TSort (next g +m)))))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e +(Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u +t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c0 +(lift (S n) O u) (TSort (next g m)))))) (\lambda (e: C).(\lambda (u: +T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: +C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))) H2))))) (\lambda (n0: +nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (H1: (getl n0 +c0 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda (H2: (ty3 g d u +t)).(\lambda (_: (((eq T u (TLRef n)) \to (or (ex3_3 C T T (\lambda (_: +C).(\lambda (_: T).(\lambda (t0: T).(pc3 d (lift (S n) O t0) t)))) (\lambda +(e: C).(\lambda (u0: T).(\lambda (_: T).(getl n d (CHead e (Bind Abbr) +u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) +(ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 d (lift (S +n) O u0) t)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n d +(CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: +T).(ty3 g e u0 t0))))))))).(\lambda (H4: (eq T (TLRef n0) (TLRef n))).(let H5 +\def (f_equal T nat (\lambda (e: T).(match e with [(TSort _) \Rightarrow n0 | (TLRef n1) \Rightarrow n1 | (THead _ _ _) \Rightarrow n0])) (TLRef n0) (TLRef n) H4) in (let H6 \def (eq_ind nat n0 (\lambda (n1: nat).(getl n1 c0 (CHead d (Bind Abbr) u))) H1 n H5) in (eq_ind_r nat n (\lambda (n1: nat).(or (ex3_3 C @@ -269,50 +306,49 @@ u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) n) O u0) t)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n d (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))))))).(\lambda (H4: (eq T (TLRef n0) (TLRef n))).(let H5 -\def (f_equal T nat (\lambda (e: T).(match e in T return (\lambda (_: T).nat) -with [(TSort _) \Rightarrow n0 | (TLRef n1) \Rightarrow n1 | (THead _ _ _) -\Rightarrow n0])) (TLRef n0) (TLRef n) H4) in (let H6 \def (eq_ind nat n0 -(\lambda (n1: nat).(getl n1 c0 (CHead d (Bind Abst) u))) H1 n H5) in -(eq_ind_r nat n (\lambda (n1: nat).(or (ex3_3 C T T (\lambda (_: C).(\lambda -(_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) (lift (S n1) O u))))) -(\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind -Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 -t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c0 -(lift (S n) O u0) (lift (S n1) O u))))) (\lambda (e: C).(\lambda (u0: -T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: -C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))))) (or_intror (ex3_3 -C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O -t0) (lift (S n) O u))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: +\def (f_equal T nat (\lambda (e: T).(match e with [(TSort _) \Rightarrow n0 | +(TLRef n1) \Rightarrow n1 | (THead _ _ _) \Rightarrow n0])) (TLRef n0) (TLRef +n) H4) in (let H6 \def (eq_ind nat n0 (\lambda (n1: nat).(getl n1 c0 (CHead d +(Bind Abst) u))) H1 n H5) in (eq_ind_r nat n (\lambda (n1: nat).(or (ex3_3 C +T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O +t0) (lift (S n1) O u))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda -(u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) (lift (S n) O u))))) +(u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) (lift (S n1) O u))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 -t0))))) (ex3_3_intro C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: -T).(pc3 c0 (lift (S n) O u0) (lift (S n) O u))))) (\lambda (e: C).(\lambda -(u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: -C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0)))) d u t (pc3_refl c0 -(lift (S n) O u)) H6 H2)) n0 H5)))))))))))) (\lambda (c0: C).(\lambda (u: -T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (_: (((eq T u (TLRef -n)) \to (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: -T).(pc3 c0 (lift (S n) O t0) t)))) (\lambda (e: C).(\lambda (u0: T).(\lambda -(_: T).(getl n c0 (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: -T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda -(u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) t)))) (\lambda (e: -C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) -(\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 -t0))))))))).(\lambda (b: B).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: -(ty3 g (CHead c0 (Bind b) u) t1 t2)).(\lambda (_: (((eq T t1 (TLRef n)) \to -(or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 (CHead -c0 (Bind b) u) (lift (S n) O t0) t2)))) (\lambda (e: C).(\lambda (u0: -T).(\lambda (_: T).(getl n (CHead c0 (Bind b) u) (CHead e (Bind Abbr) u0))))) +t0))))))) (or_intror (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda +(t0: T).(pc3 c0 (lift (S n) O t0) (lift (S n) O u))))) (\lambda (e: +C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex3_3 -C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 (CHead c0 (Bind -b) u) (lift (S n) O u0) t2)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: -T).(getl n (CHead c0 (Bind b) u) (CHead e (Bind Abst) u0))))) (\lambda (e: -C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))))))).(\lambda (H5: -(eq T (THead (Bind b) u t1) (TLRef n))).(let H6 \def (eq_ind T (THead (Bind -b) u t1) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with +C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O +u0) (lift (S n) O u))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: +T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: +T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex3_3_intro C T T (\lambda (_: +C).(\lambda (u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) (lift (S n) O +u))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e +(Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g +e u0 t0)))) d u t (pc3_refl c0 (lift (S n) O u)) H6 H2)) n0 H5)))))))))))) +(\lambda (c0: C).(\lambda (u: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u +t)).(\lambda (_: (((eq T u (TLRef n)) \to (or (ex3_3 C T T (\lambda (_: +C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t)))) (\lambda +(e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) +u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) +(ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c0 (lift +(S n) O u0) t)))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 +(CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: +T).(ty3 g e u0 t0))))))))).(\lambda (b: B).(\lambda (t1: T).(\lambda (t2: +T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t1 t2)).(\lambda (_: (((eq T t1 +(TLRef n)) \to (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: +T).(pc3 (CHead c0 (Bind b) u) (lift (S n) O t0) t2)))) (\lambda (e: +C).(\lambda (u0: T).(\lambda (_: T).(getl n (CHead c0 (Bind b) u) (CHead e +(Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g +e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: +T).(pc3 (CHead c0 (Bind b) u) (lift (S n) O u0) t2)))) (\lambda (e: +C).(\lambda (u0: T).(\lambda (_: T).(getl n (CHead c0 (Bind b) u) (CHead e +(Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g +e u0 t0))))))))).(\lambda (H5: (eq T (THead (Bind b) u t1) (TLRef n))).(let +H6 \def (eq_ind T (THead (Bind b) u t1) (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) H5) in (False_ind (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) (THead @@ -341,49 +377,45 @@ T).(ty3 g e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))))))).(\lambda (H5: (eq T (THead (Flat Appl) w v) (TLRef n))).(let H6 -\def (eq_ind T (THead (Flat Appl) w v) (\lambda (ee: T).(match ee in T return -(\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) -\Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) H5) in -(False_ind (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: -T).(pc3 c0 (lift (S n) O t0) (THead (Flat Appl) w (THead (Bind Abst) u -t)))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e -(Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g -e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: -T).(pc3 c0 (lift (S n) O u0) (THead (Flat Appl) w (THead (Bind Abst) u -t)))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl n c0 (CHead e -(Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g -e u0 t0)))))) H6)))))))))))) (\lambda (c0: C).(\lambda (t1: T).(\lambda (t2: -T).(\lambda (_: (ty3 g c0 t1 t2)).(\lambda (_: (((eq T t1 (TLRef n)) \to (or -(ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S -n) O t) t2)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 -(CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: -T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda -(_: T).(pc3 c0 (lift (S n) O u) t2)))) (\lambda (e: C).(\lambda (u: -T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: -C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))))))).(\lambda (t0: -T).(\lambda (_: (ty3 g c0 t2 t0)).(\lambda (_: (((eq T t2 (TLRef n)) \to (or -(ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S -n) O t) t0)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 -(CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: -T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda -(_: T).(pc3 c0 (lift (S n) O u) t0)))) (\lambda (e: C).(\lambda (u: -T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: -C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))))))).(\lambda (H5: (eq T -(THead (Flat Cast) t2 t1) (TLRef n))).(let H6 \def (eq_ind T (THead (Flat -Cast) t2 t1) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) -with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ -_) \Rightarrow True])) I (TLRef n) H5) in (False_ind (or (ex3_3 C T T -(\lambda (_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S n) O t) -(THead (Flat Cast) t0 t2))))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: -T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: -T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda -(u: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u) (THead (Flat Cast) t0 t2))))) +\def (eq_ind T (THead (Flat Appl) w v) (\lambda (ee: T).(match ee with +[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) +\Rightarrow True])) I (TLRef n) H5) in (False_ind (or (ex3_3 C T T (\lambda +(_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) (THead +(Flat Appl) w (THead (Bind Abst) u t)))))) (\lambda (e: C).(\lambda (u0: +T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u0))))) (\lambda (e: +C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex3_3 C T T +(\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u0) +(THead (Flat Appl) w (THead (Bind Abst) u t)))))) (\lambda (e: C).(\lambda +(u0: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u0))))) (\lambda (e: +C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0)))))) H6)))))))))))) +(\lambda (c0: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (ty3 g c0 t1 +t2)).(\lambda (_: (((eq T t1 (TLRef n)) \to (or (ex3_3 C T T (\lambda (_: +C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S n) O t) t2)))) (\lambda +(e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) +(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T +T (\lambda (_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u) +t2)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e +(Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u +t))))))))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t2 t0)).(\lambda (_: (((eq +T t2 (TLRef n)) \to (or (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda +(t: T).(pc3 c0 (lift (S n) O t) t0)))) (\lambda (e: C).(\lambda (u: +T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u))))) (\lambda (e: +C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t))))) (ex3_3 C T T (\lambda +(_: C).(\lambda (u: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u) t0)))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u -t)))))) H6))))))))))) c y x H0))) H))))). -(* COMMENTS -Initial nodes: 5569 -END *) +t))))))))).(\lambda (H5: (eq T (THead (Flat Cast) t2 t1) (TLRef n))).(let H6 +\def (eq_ind T (THead (Flat Cast) t2 t1) (\lambda (ee: T).(match ee with +[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) +\Rightarrow True])) I (TLRef n) H5) in (False_ind (or (ex3_3 C T T (\lambda +(_: C).(\lambda (_: T).(\lambda (t: T).(pc3 c0 (lift (S n) O t) (THead (Flat +Cast) t0 t2))))) (\lambda (e: C).(\lambda (u: T).(\lambda (_: T).(getl n c0 +(CHead e (Bind Abbr) u))))) (\lambda (e: C).(\lambda (u: T).(\lambda (t: +T).(ty3 g e u t))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u: T).(\lambda +(_: T).(pc3 c0 (lift (S n) O u) (THead (Flat Cast) t0 t2))))) (\lambda (e: +C).(\lambda (u: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u))))) +(\lambda (e: C).(\lambda (u: T).(\lambda (t: T).(ty3 g e u t)))))) +H6))))))))))) c y x H0))) H))))). theorem ty3_gen_bind: \forall (g: G).(\forall (b: B).(\forall (c: C).(\forall (u: T).(\forall (t1: @@ -433,37 +465,35 @@ u) t1 x0)).(ex3_2_intro T T (\lambda (t3: T).(\lambda (_: T).(pc3 c0 (THead (pc3_t t0 c0 (THead (Bind b) u x0) H11 t2 H5) H12 H13)))))) H10)))))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda (H1: (eq T (TSort m) (THead (Bind b) u t1))).(let H2 \def (eq_ind T (TSort m) (\lambda -(ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) -\Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow -False])) I (THead (Bind b) u t1) H1) in (False_ind (ex3_2 T T (\lambda (t2: -T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t2) (TSort (next g m))))) -(\lambda (_: T).(\lambda (t: T).(ty3 g c0 u t))) (\lambda (t2: T).(\lambda -(_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)))) H2))))) (\lambda (n: -nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (_: (getl n -c0 (CHead d (Bind Abbr) u0))).(\lambda (t: T).(\lambda (_: (ty3 g d u0 -t)).(\lambda (_: (((eq T u0 (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda -(t2: T).(\lambda (_: T).(pc3 d (THead (Bind b) u t2) t))) (\lambda (_: -T).(\lambda (t0: T).(ty3 g d u t0))) (\lambda (t2: T).(\lambda (_: T).(ty3 g -(CHead d (Bind b) u) t1 t2))))))).(\lambda (H4: (eq T (TLRef n) (THead (Bind -b) u t1))).(let H5 \def (eq_ind T (TLRef n) (\lambda (ee: T).(match ee in T -return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) -\Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead (Bind b) u t1) -H4) in (False_ind (ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 c0 (THead -(Bind b) u t2) (lift (S n) O t)))) (\lambda (_: T).(\lambda (t0: T).(ty3 g c0 -u t0))) (\lambda (t2: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 -t2)))) H5))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: -C).(\lambda (u0: T).(\lambda (_: (getl n c0 (CHead d (Bind Abst) -u0))).(\lambda (t: T).(\lambda (_: (ty3 g d u0 t)).(\lambda (_: (((eq T u0 -(THead (Bind b) u t1)) \to (ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 d -(THead (Bind b) u t2) t))) (\lambda (_: T).(\lambda (t0: T).(ty3 g d u t0))) -(\lambda (t2: T).(\lambda (_: T).(ty3 g (CHead d (Bind b) u) t1 -t2))))))).(\lambda (H4: (eq T (TLRef n) (THead (Bind b) u t1))).(let H5 \def -(eq_ind T (TLRef n) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | -(THead _ _ _) \Rightarrow False])) I (THead (Bind b) u t1) H4) in (False_ind -(ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t2) -(lift (S n) O u0)))) (\lambda (_: T).(\lambda (t0: T).(ty3 g c0 u t0))) -(\lambda (t2: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)))) +(ee: T).(match ee with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow +False | (THead _ _ _) \Rightarrow False])) I (THead (Bind b) u t1) H1) in +(False_ind (ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 c0 (THead (Bind +b) u t2) (TSort (next g m))))) (\lambda (_: T).(\lambda (t: T).(ty3 g c0 u +t))) (\lambda (t2: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)))) +H2))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: +T).(\lambda (_: (getl n c0 (CHead d (Bind Abbr) u0))).(\lambda (t: +T).(\lambda (_: (ty3 g d u0 t)).(\lambda (_: (((eq T u0 (THead (Bind b) u +t1)) \to (ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 d (THead (Bind b) u +t2) t))) (\lambda (_: T).(\lambda (t0: T).(ty3 g d u t0))) (\lambda (t2: +T).(\lambda (_: T).(ty3 g (CHead d (Bind b) u) t1 t2))))))).(\lambda (H4: (eq +T (TLRef n) (THead (Bind b) u t1))).(let H5 \def (eq_ind T (TLRef n) (\lambda +(ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow +True | (THead _ _ _) \Rightarrow False])) I (THead (Bind b) u t1) H4) in +(False_ind (ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 c0 (THead (Bind +b) u t2) (lift (S n) O t)))) (\lambda (_: T).(\lambda (t0: T).(ty3 g c0 u +t0))) (\lambda (t2: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)))) +H5))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda +(u0: T).(\lambda (_: (getl n c0 (CHead d (Bind Abst) u0))).(\lambda (t: +T).(\lambda (_: (ty3 g d u0 t)).(\lambda (_: (((eq T u0 (THead (Bind b) u +t1)) \to (ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 d (THead (Bind b) u +t2) t))) (\lambda (_: T).(\lambda (t0: T).(ty3 g d u t0))) (\lambda (t2: +T).(\lambda (_: T).(ty3 g (CHead d (Bind b) u) t1 t2))))))).(\lambda (H4: (eq +T (TLRef n) (THead (Bind b) u t1))).(let H5 \def (eq_ind T (TLRef n) (\lambda +(ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow +True | (THead _ _ _) \Rightarrow False])) I (THead (Bind b) u t1) H4) in +(False_ind (ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 c0 (THead (Bind +b) u t2) (lift (S n) O u0)))) (\lambda (_: T).(\lambda (t0: T).(ty3 g c0 u +t0))) (\lambda (t2: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)))) H5))))))))))) (\lambda (c0: C).(\lambda (u0: T).(\lambda (t: T).(\lambda (H1: (ty3 g c0 u0 t)).(\lambda (H2: (((eq T u0 (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t2) t))) @@ -475,91 +505,84 @@ t2)).(\lambda (H4: (((eq T t0 (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda t2))) (\lambda (_: T).(\lambda (t4: T).(ty3 g (CHead c0 (Bind b0) u0) u t4))) (\lambda (t3: T).(\lambda (_: T).(ty3 g (CHead (CHead c0 (Bind b0) u0) (Bind b) u) t1 t3))))))).(\lambda (H5: (eq T (THead (Bind b0) u0 t0) (THead (Bind -b) u t1))).(let H6 \def (f_equal T B (\lambda (e: T).(match e in T return -(\lambda (_: T).B) with [(TSort _) \Rightarrow b0 | (TLRef _) \Rightarrow b0 -| (THead k _ _) \Rightarrow (match k in K return (\lambda (_: K).B) with -[(Bind b1) \Rightarrow b1 | (Flat _) \Rightarrow b0])])) (THead (Bind b0) u0 -t0) (THead (Bind b) u t1) H5) in ((let H7 \def (f_equal T T (\lambda (e: -T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow u0 | -(TLRef _) \Rightarrow u0 | (THead _ t3 _) \Rightarrow t3])) (THead (Bind b0) -u0 t0) (THead (Bind b) u t1) H5) in ((let H8 \def (f_equal T T (\lambda (e: -T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | -(TLRef _) \Rightarrow t0 | (THead _ _ t3) \Rightarrow t3])) (THead (Bind b0) -u0 t0) (THead (Bind b) u t1) H5) in (\lambda (H9: (eq T u0 u)).(\lambda (H10: -(eq B b0 b)).(let H11 \def (eq_ind T t0 (\lambda (t3: T).((eq T t3 (THead +b) u t1))).(let H6 \def (f_equal T B (\lambda (e: T).(match e with [(TSort _) +\Rightarrow b0 | (TLRef _) \Rightarrow b0 | (THead k _ _) \Rightarrow (match +k with [(Bind b1) \Rightarrow b1 | (Flat _) \Rightarrow b0])])) (THead (Bind +b0) u0 t0) (THead (Bind b) u t1) H5) in ((let H7 \def (f_equal T T (\lambda +(e: T).(match e with [(TSort _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 | +(THead _ t3 _) \Rightarrow t3])) (THead (Bind b0) u0 t0) (THead (Bind b) u +t1) H5) in ((let H8 \def (f_equal T T (\lambda (e: T).(match e with [(TSort +_) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t3) \Rightarrow +t3])) (THead (Bind b0) u0 t0) (THead (Bind b) u t1) H5) in (\lambda (H9: (eq +T u0 u)).(\lambda (H10: (eq B b0 b)).(let H11 \def (eq_ind T t0 (\lambda (t3: +T).((eq T t3 (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda (t4: T).(\lambda +(_: T).(pc3 (CHead c0 (Bind b0) u0) (THead (Bind b) u t4) t2))) (\lambda (_: +T).(\lambda (t5: T).(ty3 g (CHead c0 (Bind b0) u0) u t5))) (\lambda (t4: +T).(\lambda (_: T).(ty3 g (CHead (CHead c0 (Bind b0) u0) (Bind b) u) t1 +t4)))))) H4 t1 H8) in (let H12 \def (eq_ind T t0 (\lambda (t3: T).(ty3 g +(CHead c0 (Bind b0) u0) t3 t2)) H3 t1 H8) in (let H13 \def (eq_ind B b0 +(\lambda (b1: B).((eq T t1 (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda +(t3: T).(\lambda (_: T).(pc3 (CHead c0 (Bind b1) u0) (THead (Bind b) u t3) +t2))) (\lambda (_: T).(\lambda (t4: T).(ty3 g (CHead c0 (Bind b1) u0) u t4))) +(\lambda (t3: T).(\lambda (_: T).(ty3 g (CHead (CHead c0 (Bind b1) u0) (Bind +b) u) t1 t3)))))) H11 b H10) in (let H14 \def (eq_ind B b0 (\lambda (b1: +B).(ty3 g (CHead c0 (Bind b1) u0) t1 t2)) H12 b H10) in (eq_ind_r B b +(\lambda (b1: B).(ex3_2 T T (\lambda (t3: T).(\lambda (_: T).(pc3 c0 (THead +(Bind b) u t3) (THead (Bind b1) u0 t2)))) (\lambda (_: T).(\lambda (t4: +T).(ty3 g c0 u t4))) (\lambda (t3: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind +b) u) t1 t3))))) (let H15 \def (eq_ind T u0 (\lambda (t3: T).((eq T t1 (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda (t4: T).(\lambda (_: T).(pc3 (CHead -c0 (Bind b0) u0) (THead (Bind b) u t4) t2))) (\lambda (_: T).(\lambda (t5: -T).(ty3 g (CHead c0 (Bind b0) u0) u t5))) (\lambda (t4: T).(\lambda (_: -T).(ty3 g (CHead (CHead c0 (Bind b0) u0) (Bind b) u) t1 t4)))))) H4 t1 H8) in -(let H12 \def (eq_ind T t0 (\lambda (t3: T).(ty3 g (CHead c0 (Bind b0) u0) t3 -t2)) H3 t1 H8) in (let H13 \def (eq_ind B b0 (\lambda (b1: B).((eq T t1 -(THead (Bind b) u t1)) \to (ex3_2 T T (\lambda (t3: T).(\lambda (_: T).(pc3 -(CHead c0 (Bind b1) u0) (THead (Bind b) u t3) t2))) (\lambda (_: T).(\lambda -(t4: T).(ty3 g (CHead c0 (Bind b1) u0) u t4))) (\lambda (t3: T).(\lambda (_: -T).(ty3 g (CHead (CHead c0 (Bind b1) u0) (Bind b) u) t1 t3)))))) H11 b H10) -in (let H14 \def (eq_ind B b0 (\lambda (b1: B).(ty3 g (CHead c0 (Bind b1) u0) -t1 t2)) H12 b H10) in (eq_ind_r B b (\lambda (b1: B).(ex3_2 T T (\lambda (t3: -T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t3) (THead (Bind b1) u0 t2)))) +c0 (Bind b) t3) (THead (Bind b) u t4) t2))) (\lambda (_: T).(\lambda (t5: +T).(ty3 g (CHead c0 (Bind b) t3) u t5))) (\lambda (t4: T).(\lambda (_: +T).(ty3 g (CHead (CHead c0 (Bind b) t3) (Bind b) u) t1 t4)))))) H13 u H9) in +(let H16 \def (eq_ind T u0 (\lambda (t3: T).(ty3 g (CHead c0 (Bind b) t3) t1 +t2)) H14 u H9) in (let H17 \def (eq_ind T u0 (\lambda (t3: T).((eq T t3 +(THead (Bind b) u t1)) \to (ex3_2 T T (\lambda (t4: T).(\lambda (_: T).(pc3 +c0 (THead (Bind b) u t4) t))) (\lambda (_: T).(\lambda (t5: T).(ty3 g c0 u +t5))) (\lambda (t4: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 +t4)))))) H2 u H9) in (let H18 \def (eq_ind T u0 (\lambda (t3: T).(ty3 g c0 t3 +t)) H1 u H9) in (eq_ind_r T u (\lambda (t3: T).(ex3_2 T T (\lambda (t4: +T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t4) (THead (Bind b) t3 t2)))) +(\lambda (_: T).(\lambda (t5: T).(ty3 g c0 u t5))) (\lambda (t4: T).(\lambda +(_: T).(ty3 g (CHead c0 (Bind b) u) t1 t4))))) (ex3_2_intro T T (\lambda (t3: +T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t3) (THead (Bind b) u t2)))) (\lambda (_: T).(\lambda (t4: T).(ty3 g c0 u t4))) (\lambda (t3: T).(\lambda -(_: T).(ty3 g (CHead c0 (Bind b) u) t1 t3))))) (let H15 \def (eq_ind T u0 -(\lambda (t3: T).((eq T t1 (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda -(t4: T).(\lambda (_: T).(pc3 (CHead c0 (Bind b) t3) (THead (Bind b) u t4) -t2))) (\lambda (_: T).(\lambda (t5: T).(ty3 g (CHead c0 (Bind b) t3) u t5))) -(\lambda (t4: T).(\lambda (_: T).(ty3 g (CHead (CHead c0 (Bind b) t3) (Bind -b) u) t1 t4)))))) H13 u H9) in (let H16 \def (eq_ind T u0 (\lambda (t3: -T).(ty3 g (CHead c0 (Bind b) t3) t1 t2)) H14 u H9) in (let H17 \def (eq_ind T -u0 (\lambda (t3: T).((eq T t3 (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda -(t4: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t4) t))) (\lambda (_: -T).(\lambda (t5: T).(ty3 g c0 u t5))) (\lambda (t4: T).(\lambda (_: T).(ty3 g -(CHead c0 (Bind b) u) t1 t4)))))) H2 u H9) in (let H18 \def (eq_ind T u0 -(\lambda (t3: T).(ty3 g c0 t3 t)) H1 u H9) in (eq_ind_r T u (\lambda (t3: -T).(ex3_2 T T (\lambda (t4: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t4) -(THead (Bind b) t3 t2)))) (\lambda (_: T).(\lambda (t5: T).(ty3 g c0 u t5))) -(\lambda (t4: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t4))))) -(ex3_2_intro T T (\lambda (t3: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u -t3) (THead (Bind b) u t2)))) (\lambda (_: T).(\lambda (t4: T).(ty3 g c0 u -t4))) (\lambda (t3: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t3))) -t2 t (pc3_refl c0 (THead (Bind b) u t2)) H18 H16) u0 H9))))) b0 H10)))))))) -H7)) H6))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda (u0: -T).(\lambda (_: (ty3 g c0 w u0)).(\lambda (_: (((eq T w (THead (Bind b) u -t1)) \to (ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) -u t2) u0))) (\lambda (_: T).(\lambda (t: T).(ty3 g c0 u t))) (\lambda (t2: -T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2))))))).(\lambda (v: -T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead (Bind Abst) u0 -t))).(\lambda (_: (((eq T v (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda -(t2: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t2) (THead (Bind Abst) u0 -t)))) (\lambda (_: T).(\lambda (t0: T).(ty3 g c0 u t0))) (\lambda (t2: -T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2))))))).(\lambda (H5: -(eq T (THead (Flat Appl) w v) (THead (Bind b) u t1))).(let H6 \def (eq_ind T -(THead (Flat Appl) w v) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | -(THead k _ _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with -[(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind -b) u t1) H5) in (False_ind (ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 -c0 (THead (Bind b) u t2) (THead (Flat Appl) w (THead (Bind Abst) u0 t))))) -(\lambda (_: T).(\lambda (t0: T).(ty3 g c0 u t0))) (\lambda (t2: T).(\lambda -(_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)))) H6)))))))))))) (\lambda (c0: -C).(\lambda (t0: T).(\lambda (t2: T).(\lambda (_: (ty3 g c0 t0 t2)).(\lambda -(_: (((eq T t0 (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda (t3: -T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t3) t2))) (\lambda (_: -T).(\lambda (t: T).(ty3 g c0 u t))) (\lambda (t3: T).(\lambda (_: T).(ty3 g -(CHead c0 (Bind b) u) t1 t3))))))).(\lambda (t3: T).(\lambda (_: (ty3 g c0 t2 -t3)).(\lambda (_: (((eq T t2 (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda -(t4: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t4) t3))) (\lambda (_: -T).(\lambda (t: T).(ty3 g c0 u t))) (\lambda (t4: T).(\lambda (_: T).(ty3 g -(CHead c0 (Bind b) u) t1 t4))))))).(\lambda (H5: (eq T (THead (Flat Cast) t2 -t0) (THead (Bind b) u t1))).(let H6 \def (eq_ind T (THead (Flat Cast) t2 t0) -(\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) +(_: T).(ty3 g (CHead c0 (Bind b) u) t1 t3))) t2 t (pc3_refl c0 (THead (Bind +b) u t2)) H18 H16) u0 H9))))) b0 H10)))))))) H7)) H6))))))))))))) (\lambda +(c0: C).(\lambda (w: T).(\lambda (u0: T).(\lambda (_: (ty3 g c0 w +u0)).(\lambda (_: (((eq T w (THead (Bind b) u t1)) \to (ex3_2 T T (\lambda +(t2: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t2) u0))) (\lambda (_: +T).(\lambda (t: T).(ty3 g c0 u t))) (\lambda (t2: T).(\lambda (_: T).(ty3 g +(CHead c0 (Bind b) u) t1 t2))))))).(\lambda (v: T).(\lambda (t: T).(\lambda +(_: (ty3 g c0 v (THead (Bind Abst) u0 t))).(\lambda (_: (((eq T v (THead +(Bind b) u t1)) \to (ex3_2 T T (\lambda (t2: T).(\lambda (_: T).(pc3 c0 +(THead (Bind b) u t2) (THead (Bind Abst) u0 t)))) (\lambda (_: T).(\lambda +(t0: T).(ty3 g c0 u t0))) (\lambda (t2: T).(\lambda (_: T).(ty3 g (CHead c0 +(Bind b) u) t1 t2))))))).(\lambda (H5: (eq T (THead (Flat Appl) w v) (THead +(Bind b) u t1))).(let H6 \def (eq_ind T (THead (Flat Appl) w v) (\lambda (ee: +T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False +| (THead k _ _) \Rightarrow (match k with [(Bind _) \Rightarrow False | (Flat +_) \Rightarrow True])])) I (THead (Bind b) u t1) H5) in (False_ind (ex3_2 T T +(\lambda (t2: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t2) (THead (Flat +Appl) w (THead (Bind Abst) u0 t))))) (\lambda (_: T).(\lambda (t0: T).(ty3 g +c0 u t0))) (\lambda (t2: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 +t2)))) H6)))))))))))) (\lambda (c0: C).(\lambda (t0: T).(\lambda (t2: +T).(\lambda (_: (ty3 g c0 t0 t2)).(\lambda (_: (((eq T t0 (THead (Bind b) u +t1)) \to (ex3_2 T T (\lambda (t3: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) +u t3) t2))) (\lambda (_: T).(\lambda (t: T).(ty3 g c0 u t))) (\lambda (t3: +T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t3))))))).(\lambda (t3: +T).(\lambda (_: (ty3 g c0 t2 t3)).(\lambda (_: (((eq T t2 (THead (Bind b) u +t1)) \to (ex3_2 T T (\lambda (t4: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) +u t4) t3))) (\lambda (_: T).(\lambda (t: T).(ty3 g c0 u t))) (\lambda (t4: +T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t4))))))).(\lambda (H5: +(eq T (THead (Flat Cast) t2 t0) (THead (Bind b) u t1))).(let H6 \def (eq_ind +T (THead (Flat Cast) t2 t0) (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow -(match k in K return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | -(Flat _) \Rightarrow True])])) I (THead (Bind b) u t1) H5) in (False_ind -(ex3_2 T T (\lambda (t4: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) u t4) -(THead (Flat Cast) t3 t2)))) (\lambda (_: T).(\lambda (t: T).(ty3 g c0 u t))) -(\lambda (t4: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t4)))) -H6))))))))))) c y x H0))) H))))))). -(* COMMENTS -Initial nodes: 3389 -END *) +(match k with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I +(THead (Bind b) u t1) H5) in (False_ind (ex3_2 T T (\lambda (t4: T).(\lambda +(_: T).(pc3 c0 (THead (Bind b) u t4) (THead (Flat Cast) t3 t2)))) (\lambda +(_: T).(\lambda (t: T).(ty3 g c0 u t))) (\lambda (t4: T).(\lambda (_: T).(ty3 +g (CHead c0 (Bind b) u) t1 t4)))) H6))))))))))) c y x H0))) H))))))). theorem ty3_gen_appl: \forall (g: G).(\forall (c: C).(\forall (w: T).(\forall (v: T).(\forall (x: @@ -612,122 +635,114 @@ T).(\lambda (t0: T).(ty3 g c0 v (THead (Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0))) x0 x1 (pc3_t t1 c0 (THead (Flat Appl) w (THead (Bind Abst) x0 x1)) H11 t2 H5) H12 H13)))))) H10)))))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda (H1: (eq T (TSort m) (THead (Flat -Appl) w v))).(let H2 \def (eq_ind T (TSort m) (\lambda (ee: T).(match ee in T -return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) -\Rightarrow False | (THead _ _ _) \Rightarrow False])) I (THead (Flat Appl) w -v) H1) in (False_ind (ex3_2 T T (\lambda (u: T).(\lambda (t: T).(pc3 c0 -(THead (Flat Appl) w (THead (Bind Abst) u t)) (TSort (next g m))))) (\lambda -(u: T).(\lambda (t: T).(ty3 g c0 v (THead (Bind Abst) u t)))) (\lambda (u: -T).(\lambda (_: T).(ty3 g c0 w u)))) H2))))) (\lambda (n: nat).(\lambda (c0: -C).(\lambda (d: C).(\lambda (u: T).(\lambda (_: (getl n c0 (CHead d (Bind -Abbr) u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (_: (((eq T u -(THead (Flat Appl) w v)) \to (ex3_2 T T (\lambda (u0: T).(\lambda (t0: -T).(pc3 d (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) t))) (\lambda (u0: -T).(\lambda (t0: T).(ty3 g d v (THead (Bind Abst) u0 t0)))) (\lambda (u0: -T).(\lambda (_: T).(ty3 g d w u0))))))).(\lambda (H4: (eq T (TLRef n) (THead -(Flat Appl) w v))).(let H5 \def (eq_ind T (TLRef n) (\lambda (ee: T).(match -ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | -(TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead -(Flat Appl) w v) H4) in (False_ind (ex3_2 T T (\lambda (u0: T).(\lambda (t0: -T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) (lift (S n) O -t)))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g c0 v (THead (Bind Abst) u0 -t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0)))) H5))))))))))) -(\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda -(_: (getl n c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda (_: (ty3 g -d u t)).(\lambda (_: (((eq T u (THead (Flat Appl) w v)) \to (ex3_2 T T -(\lambda (u0: T).(\lambda (t0: T).(pc3 d (THead (Flat Appl) w (THead (Bind -Abst) u0 t0)) t))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g d v (THead (Bind -Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g d w +Appl) w v))).(let H2 \def (eq_ind T (TSort m) (\lambda (ee: T).(match ee with +[(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) +\Rightarrow False])) I (THead (Flat Appl) w v) H1) in (False_ind (ex3_2 T T +(\lambda (u: T).(\lambda (t: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind +Abst) u t)) (TSort (next g m))))) (\lambda (u: T).(\lambda (t: T).(ty3 g c0 v +(THead (Bind Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w u)))) +H2))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: +T).(\lambda (_: (getl n c0 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda +(_: (ty3 g d u t)).(\lambda (_: (((eq T u (THead (Flat Appl) w v)) \to (ex3_2 +T T (\lambda (u0: T).(\lambda (t0: T).(pc3 d (THead (Flat Appl) w (THead +(Bind Abst) u0 t0)) t))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g d v (THead +(Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g d w u0))))))).(\lambda (H4: (eq T (TLRef n) (THead (Flat Appl) w v))).(let H5 -\def (eq_ind T (TLRef n) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | -(THead _ _ _) \Rightarrow False])) I (THead (Flat Appl) w v) H4) in -(False_ind (ex3_2 T T (\lambda (u0: T).(\lambda (t0: T).(pc3 c0 (THead (Flat -Appl) w (THead (Bind Abst) u0 t0)) (lift (S n) O u)))) (\lambda (u0: -T).(\lambda (t0: T).(ty3 g c0 v (THead (Bind Abst) u0 t0)))) (\lambda (u0: -T).(\lambda (_: T).(ty3 g c0 w u0)))) H5))))))))))) (\lambda (c0: C).(\lambda -(u: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (_: (((eq T u -(THead (Flat Appl) w v)) \to (ex3_2 T T (\lambda (u0: T).(\lambda (t0: -T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) t))) (\lambda (u0: -T).(\lambda (t0: T).(ty3 g c0 v (THead (Bind Abst) u0 t0)))) (\lambda (u0: -T).(\lambda (_: T).(ty3 g c0 w u0))))))).(\lambda (b: B).(\lambda (t1: -T).(\lambda (t2: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t1 -t2)).(\lambda (_: (((eq T t1 (THead (Flat Appl) w v)) \to (ex3_2 T T (\lambda -(u0: T).(\lambda (t0: T).(pc3 (CHead c0 (Bind b) u) (THead (Flat Appl) w -(THead (Bind Abst) u0 t0)) t2))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g -(CHead c0 (Bind b) u) v (THead (Bind Abst) u0 t0)))) (\lambda (u0: -T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) w u0))))))).(\lambda (H5: (eq -T (THead (Bind b) u t1) (THead (Flat Appl) w v))).(let H6 \def (eq_ind T -(THead (Bind b) u t1) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | -(THead k _ _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with -[(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat -Appl) w v) H5) in (False_ind (ex3_2 T T (\lambda (u0: T).(\lambda (t0: -T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) (THead (Bind b) u -t2)))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g c0 v (THead (Bind Abst) u0 -t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0)))) H6))))))))))))) -(\lambda (c0: C).(\lambda (w0: T).(\lambda (u: T).(\lambda (H1: (ty3 g c0 w0 -u)).(\lambda (H2: (((eq T w0 (THead (Flat Appl) w v)) \to (ex3_2 T T (\lambda -(u0: T).(\lambda (t: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 -t)) u))) (\lambda (u0: T).(\lambda (t: T).(ty3 g c0 v (THead (Bind Abst) u0 -t)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0))))))).(\lambda (v0: -T).(\lambda (t: T).(\lambda (H3: (ty3 g c0 v0 (THead (Bind Abst) u -t))).(\lambda (H4: (((eq T v0 (THead (Flat Appl) w v)) \to (ex3_2 T T +\def (eq_ind T (TLRef n) (\lambda (ee: T).(match ee with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow +False])) I (THead (Flat Appl) w v) H4) in (False_ind (ex3_2 T T (\lambda (u0: +T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) +(lift (S n) O t)))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g c0 v (THead +(Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0)))) +H5))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: +T).(\lambda (_: (getl n c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda +(_: (ty3 g d u t)).(\lambda (_: (((eq T u (THead (Flat Appl) w v)) \to (ex3_2 +T T (\lambda (u0: T).(\lambda (t0: T).(pc3 d (THead (Flat Appl) w (THead +(Bind Abst) u0 t0)) t))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g d v (THead +(Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g d w +u0))))))).(\lambda (H4: (eq T (TLRef n) (THead (Flat Appl) w v))).(let H5 +\def (eq_ind T (TLRef n) (\lambda (ee: T).(match ee with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow +False])) I (THead (Flat Appl) w v) H4) in (False_ind (ex3_2 T T (\lambda (u0: +T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) +(lift (S n) O u)))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g c0 v (THead +(Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0)))) +H5))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (t: T).(\lambda (_: +(ty3 g c0 u t)).(\lambda (_: (((eq T u (THead (Flat Appl) w v)) \to (ex3_2 T +T (\lambda (u0: T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind +Abst) u0 t0)) t))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g c0 v (THead (Bind +Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w +u0))))))).(\lambda (b: B).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (ty3 +g (CHead c0 (Bind b) u) t1 t2)).(\lambda (_: (((eq T t1 (THead (Flat Appl) w +v)) \to (ex3_2 T T (\lambda (u0: T).(\lambda (t0: T).(pc3 (CHead c0 (Bind b) +u) (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) t2))) (\lambda (u0: +T).(\lambda (t0: T).(ty3 g (CHead c0 (Bind b) u) v (THead (Bind Abst) u0 +t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) w +u0))))))).(\lambda (H5: (eq T (THead (Bind b) u t1) (THead (Flat Appl) w +v))).(let H6 \def (eq_ind T (THead (Bind b) u t1) (\lambda (ee: T).(match ee +with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ +_) \Rightarrow (match k with [(Bind _) \Rightarrow True | (Flat _) +\Rightarrow False])])) I (THead (Flat Appl) w v) H5) in (False_ind (ex3_2 T T (\lambda (u0: T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind -Abst) u0 t0)) (THead (Bind Abst) u t)))) (\lambda (u0: T).(\lambda (t0: -T).(ty3 g c0 v (THead (Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: -T).(ty3 g c0 w u0))))))).(\lambda (H5: (eq T (THead (Flat Appl) w0 v0) (THead -(Flat Appl) w v))).(let H6 \def (f_equal T T (\lambda (e: T).(match e in T -return (\lambda (_: T).T) with [(TSort _) \Rightarrow w0 | (TLRef _) -\Rightarrow w0 | (THead _ t0 _) \Rightarrow t0])) (THead (Flat Appl) w0 v0) -(THead (Flat Appl) w v) H5) in ((let H7 \def (f_equal T T (\lambda (e: -T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow v0 | -(TLRef _) \Rightarrow v0 | (THead _ _ t0) \Rightarrow t0])) (THead (Flat -Appl) w0 v0) (THead (Flat Appl) w v) H5) in (\lambda (H8: (eq T w0 w)).(let -H9 \def (eq_ind T v0 (\lambda (t0: T).((eq T t0 (THead (Flat Appl) w v)) \to -(ex3_2 T T (\lambda (u0: T).(\lambda (t1: T).(pc3 c0 (THead (Flat Appl) w -(THead (Bind Abst) u0 t1)) (THead (Bind Abst) u t)))) (\lambda (u0: +Abst) u0 t0)) (THead (Bind b) u t2)))) (\lambda (u0: T).(\lambda (t0: T).(ty3 +g c0 v (THead (Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g +c0 w u0)))) H6))))))))))))) (\lambda (c0: C).(\lambda (w0: T).(\lambda (u: +T).(\lambda (H1: (ty3 g c0 w0 u)).(\lambda (H2: (((eq T w0 (THead (Flat Appl) +w v)) \to (ex3_2 T T (\lambda (u0: T).(\lambda (t: T).(pc3 c0 (THead (Flat +Appl) w (THead (Bind Abst) u0 t)) u))) (\lambda (u0: T).(\lambda (t: T).(ty3 +g c0 v (THead (Bind Abst) u0 t)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 +w u0))))))).(\lambda (v0: T).(\lambda (t: T).(\lambda (H3: (ty3 g c0 v0 +(THead (Bind Abst) u t))).(\lambda (H4: (((eq T v0 (THead (Flat Appl) w v)) +\to (ex3_2 T T (\lambda (u0: T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w +(THead (Bind Abst) u0 t0)) (THead (Bind Abst) u t)))) (\lambda (u0: +T).(\lambda (t0: T).(ty3 g c0 v (THead (Bind Abst) u0 t0)))) (\lambda (u0: +T).(\lambda (_: T).(ty3 g c0 w u0))))))).(\lambda (H5: (eq T (THead (Flat +Appl) w0 v0) (THead (Flat Appl) w v))).(let H6 \def (f_equal T T (\lambda (e: +T).(match e with [(TSort _) \Rightarrow w0 | (TLRef _) \Rightarrow w0 | +(THead _ t0 _) \Rightarrow t0])) (THead (Flat Appl) w0 v0) (THead (Flat Appl) +w v) H5) in ((let H7 \def (f_equal T T (\lambda (e: T).(match e with [(TSort +_) \Rightarrow v0 | (TLRef _) \Rightarrow v0 | (THead _ _ t0) \Rightarrow +t0])) (THead (Flat Appl) w0 v0) (THead (Flat Appl) w v) H5) in (\lambda (H8: +(eq T w0 w)).(let H9 \def (eq_ind T v0 (\lambda (t0: T).((eq T t0 (THead +(Flat Appl) w v)) \to (ex3_2 T T (\lambda (u0: T).(\lambda (t1: T).(pc3 c0 +(THead (Flat Appl) w (THead (Bind Abst) u0 t1)) (THead (Bind Abst) u t)))) +(\lambda (u0: T).(\lambda (t1: T).(ty3 g c0 v (THead (Bind Abst) u0 t1)))) +(\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w u0)))))) H4 v H7) in (let H10 +\def (eq_ind T v0 (\lambda (t0: T).(ty3 g c0 t0 (THead (Bind Abst) u t))) H3 +v H7) in (let H11 \def (eq_ind T w0 (\lambda (t0: T).((eq T t0 (THead (Flat +Appl) w v)) \to (ex3_2 T T (\lambda (u0: T).(\lambda (t1: T).(pc3 c0 (THead +(Flat Appl) w (THead (Bind Abst) u0 t1)) u))) (\lambda (u0: T).(\lambda (t1: +T).(ty3 g c0 v (THead (Bind Abst) u0 t1)))) (\lambda (u0: T).(\lambda (_: +T).(ty3 g c0 w u0)))))) H2 w H8) in (let H12 \def (eq_ind T w0 (\lambda (t0: +T).(ty3 g c0 t0 u)) H1 w H8) in (eq_ind_r T w (\lambda (t0: T).(ex3_2 T T +(\lambda (u0: T).(\lambda (t1: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind +Abst) u0 t1)) (THead (Flat Appl) t0 (THead (Bind Abst) u t))))) (\lambda (u0: T).(\lambda (t1: T).(ty3 g c0 v (THead (Bind Abst) u0 t1)))) (\lambda (u0: -T).(\lambda (_: T).(ty3 g c0 w u0)))))) H4 v H7) in (let H10 \def (eq_ind T -v0 (\lambda (t0: T).(ty3 g c0 t0 (THead (Bind Abst) u t))) H3 v H7) in (let -H11 \def (eq_ind T w0 (\lambda (t0: T).((eq T t0 (THead (Flat Appl) w v)) \to -(ex3_2 T T (\lambda (u0: T).(\lambda (t1: T).(pc3 c0 (THead (Flat Appl) w -(THead (Bind Abst) u0 t1)) u))) (\lambda (u0: T).(\lambda (t1: T).(ty3 g c0 v -(THead (Bind Abst) u0 t1)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w -u0)))))) H2 w H8) in (let H12 \def (eq_ind T w0 (\lambda (t0: T).(ty3 g c0 t0 -u)) H1 w H8) in (eq_ind_r T w (\lambda (t0: T).(ex3_2 T T (\lambda (u0: -T).(\lambda (t1: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t1)) -(THead (Flat Appl) t0 (THead (Bind Abst) u t))))) (\lambda (u0: T).(\lambda -(t1: T).(ty3 g c0 v (THead (Bind Abst) u0 t1)))) (\lambda (u0: T).(\lambda -(_: T).(ty3 g c0 w u0))))) (ex3_2_intro T T (\lambda (u0: T).(\lambda (t0: -T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) (THead (Flat Appl) -w (THead (Bind Abst) u t))))) (\lambda (u0: T).(\lambda (t0: T).(ty3 g c0 v -(THead (Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda (_: T).(ty3 g c0 w -u0))) u t (pc3_refl c0 (THead (Flat Appl) w (THead (Bind Abst) u t))) H10 -H12) w0 H8))))))) H6)))))))))))) (\lambda (c0: C).(\lambda (t1: T).(\lambda -(t2: T).(\lambda (_: (ty3 g c0 t1 t2)).(\lambda (_: (((eq T t1 (THead (Flat -Appl) w v)) \to (ex3_2 T T (\lambda (u: T).(\lambda (t: T).(pc3 c0 (THead -(Flat Appl) w (THead (Bind Abst) u t)) t2))) (\lambda (u: T).(\lambda (t: -T).(ty3 g c0 v (THead (Bind Abst) u t)))) (\lambda (u: T).(\lambda (_: -T).(ty3 g c0 w u))))))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t2 -t0)).(\lambda (_: (((eq T t2 (THead (Flat Appl) w v)) \to (ex3_2 T T (\lambda -(u: T).(\lambda (t: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u t)) -t0))) (\lambda (u: T).(\lambda (t: T).(ty3 g c0 v (THead (Bind Abst) u t)))) -(\lambda (u: T).(\lambda (_: T).(ty3 g c0 w u))))))).(\lambda (H5: (eq T -(THead (Flat Cast) t2 t1) (THead (Flat Appl) w v))).(let H6 \def (eq_ind T -(THead (Flat Cast) t2 t1) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | -(THead k _ _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with -[(Bind _) \Rightarrow False | (Flat f) \Rightarrow (match f in F return -(\lambda (_: F).Prop) with [Appl \Rightarrow False | Cast \Rightarrow -True])])])) I (THead (Flat Appl) w v) H5) in (False_ind (ex3_2 T T (\lambda -(u: T).(\lambda (t: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u t)) -(THead (Flat Cast) t0 t2)))) (\lambda (u: T).(\lambda (t: T).(ty3 g c0 v -(THead (Bind Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w u)))) -H6))))))))))) c y x H0))) H)))))). -(* COMMENTS -Initial nodes: 3171 -END *) +T).(\lambda (_: T).(ty3 g c0 w u0))))) (ex3_2_intro T T (\lambda (u0: +T).(\lambda (t0: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t0)) +(THead (Flat Appl) w (THead (Bind Abst) u t))))) (\lambda (u0: T).(\lambda +(t0: T).(ty3 g c0 v (THead (Bind Abst) u0 t0)))) (\lambda (u0: T).(\lambda +(_: T).(ty3 g c0 w u0))) u t (pc3_refl c0 (THead (Flat Appl) w (THead (Bind +Abst) u t))) H10 H12) w0 H8))))))) H6)))))))))))) (\lambda (c0: C).(\lambda +(t1: T).(\lambda (t2: T).(\lambda (_: (ty3 g c0 t1 t2)).(\lambda (_: (((eq T +t1 (THead (Flat Appl) w v)) \to (ex3_2 T T (\lambda (u: T).(\lambda (t: +T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u t)) t2))) (\lambda (u: +T).(\lambda (t: T).(ty3 g c0 v (THead (Bind Abst) u t)))) (\lambda (u: +T).(\lambda (_: T).(ty3 g c0 w u))))))).(\lambda (t0: T).(\lambda (_: (ty3 g +c0 t2 t0)).(\lambda (_: (((eq T t2 (THead (Flat Appl) w v)) \to (ex3_2 T T +(\lambda (u: T).(\lambda (t: T).(pc3 c0 (THead (Flat Appl) w (THead (Bind +Abst) u t)) t0))) (\lambda (u: T).(\lambda (t: T).(ty3 g c0 v (THead (Bind +Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w u))))))).(\lambda +(H5: (eq T (THead (Flat Cast) t2 t1) (THead (Flat Appl) w v))).(let H6 \def +(eq_ind T (THead (Flat Cast) t2 t1) (\lambda (ee: T).(match ee with [(TSort +_) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) +\Rightarrow (match k with [(Bind _) \Rightarrow False | (Flat f) \Rightarrow +(match f with [Appl \Rightarrow False | Cast \Rightarrow True])])])) I (THead +(Flat Appl) w v) H5) in (False_ind (ex3_2 T T (\lambda (u: T).(\lambda (t: +T).(pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u t)) (THead (Flat Cast) +t0 t2)))) (\lambda (u: T).(\lambda (t: T).(ty3 g c0 v (THead (Bind Abst) u +t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c0 w u)))) H6))))))))))) c y x +H0))) H)))))). theorem ty3_gen_cast: \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).(\forall @@ -768,101 +783,95 @@ T).(pc3 c0 (THead (Flat Cast) t4 t2) t0)) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t4: T).(ty3 g c0 t2 t4)) x0 (pc3_t t3 c0 (THead (Flat Cast) x0 t2) H11 t0 H5) H12 H13))))) H10)))))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda (H1: (eq T (TSort m) (THead (Flat Cast) t2 t1))).(let H2 \def -(eq_ind T (TSort m) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | -(THead _ _ _) \Rightarrow False])) I (THead (Flat Cast) t2 t1) H1) in -(False_ind (ex3 T (\lambda (t0: T).(pc3 c0 (THead (Flat Cast) t0 t2) (TSort -(next g m)))) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t0: T).(ty3 g c0 t2 -t0))) H2))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: -T).(\lambda (_: (getl n c0 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda +(eq_ind T (TSort m) (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow +True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I +(THead (Flat Cast) t2 t1) H1) in (False_ind (ex3 T (\lambda (t0: T).(pc3 c0 +(THead (Flat Cast) t0 t2) (TSort (next g m)))) (\lambda (_: T).(ty3 g c0 t1 +t2)) (\lambda (t0: T).(ty3 g c0 t2 t0))) H2))))) (\lambda (n: nat).(\lambda +(c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (_: (getl n c0 (CHead d +(Bind Abbr) u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (_: +(((eq T u (THead (Flat Cast) t2 t1)) \to (ex3 T (\lambda (t0: T).(pc3 d +(THead (Flat Cast) t0 t2) t)) (\lambda (_: T).(ty3 g d t1 t2)) (\lambda (t0: +T).(ty3 g d t2 t0)))))).(\lambda (H4: (eq T (TLRef n) (THead (Flat Cast) t2 +t1))).(let H5 \def (eq_ind T (TLRef n) (\lambda (ee: T).(match ee with +[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) +\Rightarrow False])) I (THead (Flat Cast) t2 t1) H4) in (False_ind (ex3 T +(\lambda (t0: T).(pc3 c0 (THead (Flat Cast) t0 t2) (lift (S n) O t))) +(\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t0: T).(ty3 g c0 t2 t0))) +H5))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: +T).(\lambda (_: (getl n c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (_: (((eq T u (THead (Flat Cast) t2 t1)) \to (ex3 T (\lambda (t0: T).(pc3 d (THead (Flat Cast) t0 t2) t)) (\lambda (_: T).(ty3 g d t1 t2)) (\lambda (t0: T).(ty3 g d t2 t0)))))).(\lambda (H4: (eq T (TLRef n) (THead (Flat Cast) t2 t1))).(let H5 \def (eq_ind T (TLRef n) (\lambda (ee: -T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow -False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I -(THead (Flat Cast) t2 t1) H4) in (False_ind (ex3 T (\lambda (t0: T).(pc3 c0 -(THead (Flat Cast) t0 t2) (lift (S n) O t))) (\lambda (_: T).(ty3 g c0 t1 -t2)) (\lambda (t0: T).(ty3 g c0 t2 t0))) H5))))))))))) (\lambda (n: -nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (_: (getl n c0 -(CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda (_: (ty3 g d u -t)).(\lambda (_: (((eq T u (THead (Flat Cast) t2 t1)) \to (ex3 T (\lambda -(t0: T).(pc3 d (THead (Flat Cast) t0 t2) t)) (\lambda (_: T).(ty3 g d t1 t2)) -(\lambda (t0: T).(ty3 g d t2 t0)))))).(\lambda (H4: (eq T (TLRef n) (THead -(Flat Cast) t2 t1))).(let H5 \def (eq_ind T (TLRef n) (\lambda (ee: T).(match -ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | -(TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (THead -(Flat Cast) t2 t1) H4) in (False_ind (ex3 T (\lambda (t0: T).(pc3 c0 (THead -(Flat Cast) t0 t2) (lift (S n) O u))) (\lambda (_: T).(ty3 g c0 t1 t2)) -(\lambda (t0: T).(ty3 g c0 t2 t0))) H5))))))))))) (\lambda (c0: C).(\lambda -(u: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (_: (((eq T u -(THead (Flat Cast) t2 t1)) \to (ex3 T (\lambda (t0: T).(pc3 c0 (THead (Flat -Cast) t0 t2) t)) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t0: T).(ty3 g c0 -t2 t0)))))).(\lambda (b: B).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: -(ty3 g (CHead c0 (Bind b) u) t0 t3)).(\lambda (_: (((eq T t0 (THead (Flat -Cast) t2 t1)) \to (ex3 T (\lambda (t4: T).(pc3 (CHead c0 (Bind b) u) (THead -(Flat Cast) t4 t2) t3)) (\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)) -(\lambda (t4: T).(ty3 g (CHead c0 (Bind b) u) t2 t4)))))).(\lambda (H5: (eq T -(THead (Bind b) u t0) (THead (Flat Cast) t2 t1))).(let H6 \def (eq_ind T -(THead (Bind b) u t0) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | -(THead k _ _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with -[(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat -Cast) t2 t1) H5) in (False_ind (ex3 T (\lambda (t4: T).(pc3 c0 (THead (Flat -Cast) t4 t2) (THead (Bind b) u t3))) (\lambda (_: T).(ty3 g c0 t1 t2)) -(\lambda (t4: T).(ty3 g c0 t2 t4))) H6))))))))))))) (\lambda (c0: C).(\lambda -(w: T).(\lambda (u: T).(\lambda (_: (ty3 g c0 w u)).(\lambda (_: (((eq T w -(THead (Flat Cast) t2 t1)) \to (ex3 T (\lambda (t0: T).(pc3 c0 (THead (Flat -Cast) t0 t2) u)) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t0: T).(ty3 g c0 -t2 t0)))))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead +T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | +(THead _ _ _) \Rightarrow False])) I (THead (Flat Cast) t2 t1) H4) in +(False_ind (ex3 T (\lambda (t0: T).(pc3 c0 (THead (Flat Cast) t0 t2) (lift (S +n) O u))) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t0: T).(ty3 g c0 t2 +t0))) H5))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (t: T).(\lambda +(_: (ty3 g c0 u t)).(\lambda (_: (((eq T u (THead (Flat Cast) t2 t1)) \to +(ex3 T (\lambda (t0: T).(pc3 c0 (THead (Flat Cast) t0 t2) t)) (\lambda (_: +T).(ty3 g c0 t1 t2)) (\lambda (t0: T).(ty3 g c0 t2 t0)))))).(\lambda (b: +B).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) +u) t0 t3)).(\lambda (_: (((eq T t0 (THead (Flat Cast) t2 t1)) \to (ex3 T +(\lambda (t4: T).(pc3 (CHead c0 (Bind b) u) (THead (Flat Cast) t4 t2) t3)) +(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u) t1 t2)) (\lambda (t4: T).(ty3 g +(CHead c0 (Bind b) u) t2 t4)))))).(\lambda (H5: (eq T (THead (Bind b) u t0) +(THead (Flat Cast) t2 t1))).(let H6 \def (eq_ind T (THead (Bind b) u t0) +(\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) +\Rightarrow False | (THead k _ _) \Rightarrow (match k with [(Bind _) +\Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Cast) t2 +t1) H5) in (False_ind (ex3 T (\lambda (t4: T).(pc3 c0 (THead (Flat Cast) t4 +t2) (THead (Bind b) u t3))) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t4: +T).(ty3 g c0 t2 t4))) H6))))))))))))) (\lambda (c0: C).(\lambda (w: +T).(\lambda (u: T).(\lambda (_: (ty3 g c0 w u)).(\lambda (_: (((eq T w (THead +(Flat Cast) t2 t1)) \to (ex3 T (\lambda (t0: T).(pc3 c0 (THead (Flat Cast) t0 +t2) u)) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t0: T).(ty3 g c0 t2 +t0)))))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead (Bind Abst) u t))).(\lambda (_: (((eq T v (THead (Flat Cast) t2 t1)) \to (ex3 T (\lambda (t0: T).(pc3 c0 (THead (Flat Cast) t0 t2) (THead (Bind Abst) u t))) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t0: T).(ty3 g c0 t2 t0)))))).(\lambda (H5: (eq T (THead (Flat Appl) w v) (THead (Flat Cast) t2 t1))).(let H6 \def (eq_ind T (THead (Flat Appl) w v) (\lambda (ee: T).(match -ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | -(TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k in K return -(\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat f) \Rightarrow -(match f in F return (\lambda (_: F).Prop) with [Appl \Rightarrow True | Cast -\Rightarrow False])])])) I (THead (Flat Cast) t2 t1) H5) in (False_ind (ex3 T -(\lambda (t0: T).(pc3 c0 (THead (Flat Cast) t0 t2) (THead (Flat Appl) w -(THead (Bind Abst) u t)))) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t0: -T).(ty3 g c0 t2 t0))) H6)))))))))))) (\lambda (c0: C).(\lambda (t0: -T).(\lambda (t3: T).(\lambda (H1: (ty3 g c0 t0 t3)).(\lambda (H2: (((eq T t0 -(THead (Flat Cast) t2 t1)) \to (ex3 T (\lambda (t4: T).(pc3 c0 (THead (Flat -Cast) t4 t2) t3)) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t4: T).(ty3 g -c0 t2 t4)))))).(\lambda (t4: T).(\lambda (H3: (ty3 g c0 t3 t4)).(\lambda (H4: -(((eq T t3 (THead (Flat Cast) t2 t1)) \to (ex3 T (\lambda (t5: T).(pc3 c0 -(THead (Flat Cast) t5 t2) t4)) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda -(t5: T).(ty3 g c0 t2 t5)))))).(\lambda (H5: (eq T (THead (Flat Cast) t3 t0) -(THead (Flat Cast) t2 t1))).(let H6 \def (f_equal T T (\lambda (e: T).(match -e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t3 | (TLRef _) -\Rightarrow t3 | (THead _ t _) \Rightarrow t])) (THead (Flat Cast) t3 t0) -(THead (Flat Cast) t2 t1) H5) in ((let H7 \def (f_equal T T (\lambda (e: -T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | -(TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) (THead (Flat Cast) -t3 t0) (THead (Flat Cast) t2 t1) H5) in (\lambda (H8: (eq T t3 t2)).(let H9 -\def (eq_ind T t3 (\lambda (t: T).((eq T t (THead (Flat Cast) t2 t1)) \to -(ex3 T (\lambda (t5: T).(pc3 c0 (THead (Flat Cast) t5 t2) t4)) (\lambda (_: -T).(ty3 g c0 t1 t2)) (\lambda (t5: T).(ty3 g c0 t2 t5))))) H4 t2 H8) in (let -H10 \def (eq_ind T t3 (\lambda (t: T).(ty3 g c0 t t4)) H3 t2 H8) in (let H11 -\def (eq_ind T t3 (\lambda (t: T).((eq T t0 (THead (Flat Cast) t2 t1)) \to -(ex3 T (\lambda (t5: T).(pc3 c0 (THead (Flat Cast) t5 t2) t)) (\lambda (_: -T).(ty3 g c0 t1 t2)) (\lambda (t5: T).(ty3 g c0 t2 t5))))) H2 t2 H8) in (let -H12 \def (eq_ind T t3 (\lambda (t: T).(ty3 g c0 t0 t)) H1 t2 H8) in (eq_ind_r -T t2 (\lambda (t: T).(ex3 T (\lambda (t5: T).(pc3 c0 (THead (Flat Cast) t5 -t2) (THead (Flat Cast) t4 t))) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda -(t5: T).(ty3 g c0 t2 t5)))) (let H13 \def (eq_ind T t0 (\lambda (t: T).((eq T -t (THead (Flat Cast) t2 t1)) \to (ex3 T (\lambda (t5: T).(pc3 c0 (THead (Flat -Cast) t5 t2) t2)) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t5: T).(ty3 g -c0 t2 t5))))) H11 t1 H7) in (let H14 \def (eq_ind T t0 (\lambda (t: T).(ty3 g -c0 t t2)) H12 t1 H7) in (ex3_intro T (\lambda (t5: T).(pc3 c0 (THead (Flat -Cast) t5 t2) (THead (Flat Cast) t4 t2))) (\lambda (_: T).(ty3 g c0 t1 t2)) -(\lambda (t5: T).(ty3 g c0 t2 t5)) t4 (pc3_refl c0 (THead (Flat Cast) t4 t2)) -H14 H10))) t3 H8))))))) H6))))))))))) c y x H0))) H)))))). -(* COMMENTS -Initial nodes: 2609 -END *) +ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k +_ _) \Rightarrow (match k with [(Bind _) \Rightarrow False | (Flat f) +\Rightarrow (match f with [Appl \Rightarrow True | Cast \Rightarrow +False])])])) I (THead (Flat Cast) t2 t1) H5) in (False_ind (ex3 T (\lambda +(t0: T).(pc3 c0 (THead (Flat Cast) t0 t2) (THead (Flat Appl) w (THead (Bind +Abst) u t)))) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t0: T).(ty3 g c0 t2 +t0))) H6)))))))))))) (\lambda (c0: C).(\lambda (t0: T).(\lambda (t3: +T).(\lambda (H1: (ty3 g c0 t0 t3)).(\lambda (H2: (((eq T t0 (THead (Flat +Cast) t2 t1)) \to (ex3 T (\lambda (t4: T).(pc3 c0 (THead (Flat Cast) t4 t2) +t3)) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t4: T).(ty3 g c0 t2 +t4)))))).(\lambda (t4: T).(\lambda (H3: (ty3 g c0 t3 t4)).(\lambda (H4: (((eq +T t3 (THead (Flat Cast) t2 t1)) \to (ex3 T (\lambda (t5: T).(pc3 c0 (THead +(Flat Cast) t5 t2) t4)) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t5: +T).(ty3 g c0 t2 t5)))))).(\lambda (H5: (eq T (THead (Flat Cast) t3 t0) (THead +(Flat Cast) t2 t1))).(let H6 \def (f_equal T T (\lambda (e: T).(match e with +[(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ t _) +\Rightarrow t])) (THead (Flat Cast) t3 t0) (THead (Flat Cast) t2 t1) H5) in +((let H7 \def (f_equal T T (\lambda (e: T).(match e with [(TSort _) +\Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t) \Rightarrow t])) +(THead (Flat Cast) t3 t0) (THead (Flat Cast) t2 t1) H5) in (\lambda (H8: (eq +T t3 t2)).(let H9 \def (eq_ind T t3 (\lambda (t: T).((eq T t (THead (Flat +Cast) t2 t1)) \to (ex3 T (\lambda (t5: T).(pc3 c0 (THead (Flat Cast) t5 t2) +t4)) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t5: T).(ty3 g c0 t2 t5))))) +H4 t2 H8) in (let H10 \def (eq_ind T t3 (\lambda (t: T).(ty3 g c0 t t4)) H3 +t2 H8) in (let H11 \def (eq_ind T t3 (\lambda (t: T).((eq T t0 (THead (Flat +Cast) t2 t1)) \to (ex3 T (\lambda (t5: T).(pc3 c0 (THead (Flat Cast) t5 t2) +t)) (\lambda (_: T).(ty3 g c0 t1 t2)) (\lambda (t5: T).(ty3 g c0 t2 t5))))) +H2 t2 H8) in (let H12 \def (eq_ind T t3 (\lambda (t: T).(ty3 g c0 t0 t)) H1 +t2 H8) in (eq_ind_r T t2 (\lambda (t: T).(ex3 T (\lambda (t5: T).(pc3 c0 +(THead (Flat Cast) t5 t2) (THead (Flat Cast) t4 t))) (\lambda (_: T).(ty3 g +c0 t1 t2)) (\lambda (t5: T).(ty3 g c0 t2 t5)))) (let H13 \def (eq_ind T t0 +(\lambda (t: T).((eq T t (THead (Flat Cast) t2 t1)) \to (ex3 T (\lambda (t5: +T).(pc3 c0 (THead (Flat Cast) t5 t2) t2)) (\lambda (_: T).(ty3 g c0 t1 t2)) +(\lambda (t5: T).(ty3 g c0 t2 t5))))) H11 t1 H7) in (let H14 \def (eq_ind T +t0 (\lambda (t: T).(ty3 g c0 t t2)) H12 t1 H7) in (ex3_intro T (\lambda (t5: +T).(pc3 c0 (THead (Flat Cast) t5 t2) (THead (Flat Cast) t4 t2))) (\lambda (_: +T).(ty3 g c0 t1 t2)) (\lambda (t5: T).(ty3 g c0 t2 t5)) t4 (pc3_refl c0 +(THead (Flat Cast) t4 t2)) H14 H10))) t3 H8))))))) H6))))))))))) c y x H0))) +H)))))). theorem tys3_gen_nil: \forall (g: G).(\forall (c: C).(\forall (u: T).((tys3 g c TNil u) \to (ex T @@ -879,12 +888,9 @@ TNil TNil)).(ex_intro T (\lambda (u2: T).(ty3 g c u0 u2)) u1 H1))))) (\lambda TList).(\lambda (_: (tys3 g c ts u0)).(\lambda (_: (((eq TList ts TNil) \to (ex T (\lambda (u1: T).(ty3 g c u0 u1)))))).(\lambda (H4: (eq TList (TCons t ts) TNil)).(let H5 \def (eq_ind TList (TCons t ts) (\lambda (ee: -TList).(match ee in TList return (\lambda (_: TList).Prop) with [TNil -\Rightarrow False | (TCons _ _) \Rightarrow True])) I TNil H4) in (False_ind -(ex T (\lambda (u1: T).(ty3 g c u0 u1))) H5))))))))) y u H0))) H)))). -(* COMMENTS -Initial nodes: 255 -END *) +TList).(match ee with [TNil \Rightarrow False | (TCons _ _) \Rightarrow +True])) I TNil H4) in (False_ind (ex T (\lambda (u1: T).(ty3 g c u0 u1))) +H5))))))))) y u H0))) H)))). theorem tys3_gen_cons: \forall (g: G).(\forall (c: C).(\forall (ts: TList).(\forall (t: T).(\forall @@ -898,25 +904,20 @@ u))))))) g c (\lambda (t0: TList).(\lambda (t1: T).((eq TList t0 (TCons t ts)) \to (land (ty3 g c t t1) (tys3 g c ts t1))))) (\lambda (u0: T).(\lambda (u1: T).(\lambda (_: (ty3 g c u0 u1)).(\lambda (H2: (eq TList TNil (TCons t -ts))).(let H3 \def (eq_ind TList TNil (\lambda (ee: TList).(match ee in TList -return (\lambda (_: TList).Prop) with [TNil \Rightarrow True | (TCons _ _) -\Rightarrow False])) I (TCons t ts) H2) in (False_ind (land (ty3 g c t u0) -(tys3 g c ts u0)) H3)))))) (\lambda (t0: T).(\lambda (u0: T).(\lambda (H1: -(ty3 g c t0 u0)).(\lambda (ts0: TList).(\lambda (H2: (tys3 g c ts0 -u0)).(\lambda (H3: (((eq TList ts0 (TCons t ts)) \to (land (ty3 g c t u0) -(tys3 g c ts u0))))).(\lambda (H4: (eq TList (TCons t0 ts0) (TCons t -ts))).(let H5 \def (f_equal TList T (\lambda (e: TList).(match e in TList -return (\lambda (_: TList).T) with [TNil \Rightarrow t0 | (TCons t1 _) -\Rightarrow t1])) (TCons t0 ts0) (TCons t ts) H4) in ((let H6 \def (f_equal -TList TList (\lambda (e: TList).(match e in TList return (\lambda (_: -TList).TList) with [TNil \Rightarrow ts0 | (TCons _ t1) \Rightarrow t1])) -(TCons t0 ts0) (TCons t ts) H4) in (\lambda (H7: (eq T t0 t)).(let H8 \def -(eq_ind TList ts0 (\lambda (t1: TList).((eq TList t1 (TCons t ts)) \to (land -(ty3 g c t u0) (tys3 g c ts u0)))) H3 ts H6) in (let H9 \def (eq_ind TList -ts0 (\lambda (t1: TList).(tys3 g c t1 u0)) H2 ts H6) in (let H10 \def (eq_ind -T t0 (\lambda (t1: T).(ty3 g c t1 u0)) H1 t H7) in (conj (ty3 g c t u0) (tys3 -g c ts u0) H10 H9)))))) H5))))))))) y u H0))) H)))))). -(* COMMENTS -Initial nodes: 479 -END *) +ts))).(let H3 \def (eq_ind TList TNil (\lambda (ee: TList).(match ee with +[TNil \Rightarrow True | (TCons _ _) \Rightarrow False])) I (TCons t ts) H2) +in (False_ind (land (ty3 g c t u0) (tys3 g c ts u0)) H3)))))) (\lambda (t0: +T).(\lambda (u0: T).(\lambda (H1: (ty3 g c t0 u0)).(\lambda (ts0: +TList).(\lambda (H2: (tys3 g c ts0 u0)).(\lambda (H3: (((eq TList ts0 (TCons +t ts)) \to (land (ty3 g c t u0) (tys3 g c ts u0))))).(\lambda (H4: (eq TList +(TCons t0 ts0) (TCons t ts))).(let H5 \def (f_equal TList T (\lambda (e: +TList).(match e with [TNil \Rightarrow t0 | (TCons t1 _) \Rightarrow t1])) +(TCons t0 ts0) (TCons t ts) H4) in ((let H6 \def (f_equal TList TList +(\lambda (e: TList).(match e with [TNil \Rightarrow ts0 | (TCons _ t1) +\Rightarrow t1])) (TCons t0 ts0) (TCons t ts) H4) in (\lambda (H7: (eq T t0 +t)).(let H8 \def (eq_ind TList ts0 (\lambda (t1: TList).((eq TList t1 (TCons +t ts)) \to (land (ty3 g c t u0) (tys3 g c ts u0)))) H3 ts H6) in (let H9 \def +(eq_ind TList ts0 (\lambda (t1: TList).(tys3 g c t1 u0)) H2 ts H6) in (let +H10 \def (eq_ind T t0 (\lambda (t1: T).(ty3 g c t1 u0)) H1 t H7) in (conj +(ty3 g c t u0) (tys3 g c ts u0) H10 H9)))))) H5))))))))) y u H0))) H)))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/fwd_nf2.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/fwd_nf2.ma index ca4e40c7b..d41982a2a 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/fwd_nf2.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/fwd_nf2.ma @@ -14,11 +14,11 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/arity_props.ma". +include "basic_1/ty3/arity_props.ma". -include "Basic-1/pc3/nf2.ma". +include "basic_1/pc3/nf2.ma". -include "Basic-1/nf2/fwd.ma". +include "basic_1/nf2/fwd.ma". theorem ty3_gen_appl_nf2: \forall (g: G).(\forall (c: C).(\forall (w: T).(\forall (v: T).(\forall (x: @@ -29,65 +29,118 @@ T).(\lambda (t: T).(pc3 c (THead (Flat Appl) w (THead (Bind Abst) u t)) x))) T).(nf2 c (THead (Bind Abst) u t)))))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (w: T).(\lambda (v: T).(\lambda (x: -T).(\lambda (H: (ty3 g c (THead (Flat Appl) w v) x)).(ex3_2_ind T T (\lambda -(u: T).(\lambda (t: T).(pc3 c (THead (Flat Appl) w (THead (Bind Abst) u t)) -x))) (\lambda (u: T).(\lambda (t: T).(ty3 g c v (THead (Bind Abst) u t)))) -(\lambda (u: T).(\lambda (_: T).(ty3 g c w u))) (ex4_2 T T (\lambda (u: -T).(\lambda (t: T).(pc3 c (THead (Flat Appl) w (THead (Bind Abst) u t)) x))) -(\lambda (u: T).(\lambda (t: T).(ty3 g c v (THead (Bind Abst) u t)))) -(\lambda (u: T).(\lambda (_: T).(ty3 g c w u))) (\lambda (u: T).(\lambda (t: -T).(nf2 c (THead (Bind Abst) u t))))) (\lambda (x0: T).(\lambda (x1: -T).(\lambda (H0: (pc3 c (THead (Flat Appl) w (THead (Bind Abst) x0 x1)) -x)).(\lambda (H1: (ty3 g c v (THead (Bind Abst) x0 x1))).(\lambda (H2: (ty3 g -c w x0)).(let H_x \def (ty3_correct g c v (THead (Bind Abst) x0 x1) H1) in -(let H3 \def H_x in (ex_ind T (\lambda (t: T).(ty3 g c (THead (Bind Abst) x0 -x1) t)) (ex4_2 T T (\lambda (u: T).(\lambda (t: T).(pc3 c (THead (Flat Appl) -w (THead (Bind Abst) u t)) x))) (\lambda (u: T).(\lambda (t: T).(ty3 g c v -(THead (Bind Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 g c w u))) -(\lambda (u: T).(\lambda (t: T).(nf2 c (THead (Bind Abst) u t))))) (\lambda -(x2: T).(\lambda (H4: (ty3 g c (THead (Bind Abst) x0 x1) x2)).(let H_x0 \def -(ty3_correct g c w x0 H2) in (let H5 \def H_x0 in (ex_ind T (\lambda (t: -T).(ty3 g c x0 t)) (ex4_2 T T (\lambda (u: T).(\lambda (t: T).(pc3 c (THead -(Flat Appl) w (THead (Bind Abst) u t)) x))) (\lambda (u: T).(\lambda (t: -T).(ty3 g c v (THead (Bind Abst) u t)))) (\lambda (u: T).(\lambda (_: T).(ty3 -g c w u))) (\lambda (u: T).(\lambda (t: T).(nf2 c (THead (Bind Abst) u t))))) -(\lambda (x3: T).(\lambda (H6: (ty3 g c x0 x3)).(let H7 \def (ty3_sn3 g c -(THead (Bind Abst) x0 x1) x2 H4) in (let H_x1 \def (nf2_sn3 c (THead (Bind -Abst) x0 x1) H7) in (let H8 \def H_x1 in (ex2_ind T (\lambda (u: T).(pr3 c -(THead (Bind Abst) x0 x1) u)) (\lambda (u: T).(nf2 c u)) (ex4_2 T T (\lambda -(u: T).(\lambda (t: T).(pc3 c (THead (Flat Appl) w (THead (Bind Abst) u t)) -x))) (\lambda (u: T).(\lambda (t: T).(ty3 g c v (THead (Bind Abst) u t)))) -(\lambda (u: T).(\lambda (_: T).(ty3 g c w u))) (\lambda (u: T).(\lambda (t: -T).(nf2 c (THead (Bind Abst) u t))))) (\lambda (x4: T).(\lambda (H9: (pr3 c -(THead (Bind Abst) x0 x1) x4)).(\lambda (H10: (nf2 c x4)).(let H11 \def -(pr3_gen_abst c x0 x1 x4 H9) in (ex3_2_ind T T (\lambda (u2: T).(\lambda (t2: -T).(eq T x4 (THead (Bind Abst) u2 t2)))) (\lambda (u2: T).(\lambda (_: -T).(pr3 c x0 u2))) (\lambda (_: T).(\lambda (t2: T).(\forall (b: B).(\forall -(u: T).(pr3 (CHead c (Bind b) u) x1 t2))))) (ex4_2 T T (\lambda (u: -T).(\lambda (t: T).(pc3 c (THead (Flat Appl) w (THead (Bind Abst) u t)) x))) -(\lambda (u: T).(\lambda (t: T).(ty3 g c v (THead (Bind Abst) u t)))) -(\lambda (u: T).(\lambda (_: T).(ty3 g c w u))) (\lambda (u: T).(\lambda (t: -T).(nf2 c (THead (Bind Abst) u t))))) (\lambda (x5: T).(\lambda (x6: -T).(\lambda (H12: (eq T x4 (THead (Bind Abst) x5 x6))).(\lambda (H13: (pr3 c -x0 x5)).(\lambda (H14: ((\forall (b: B).(\forall (u: T).(pr3 (CHead c (Bind -b) u) x1 x6))))).(let H15 \def (eq_ind T x4 (\lambda (t: T).(nf2 c t)) H10 -(THead (Bind Abst) x5 x6) H12) in (let H16 \def (pr3_head_12 c x0 x5 H13 -(Bind Abst) x1 x6 (H14 Abst x5)) in (ex4_2_intro T T (\lambda (u: T).(\lambda -(t: T).(pc3 c (THead (Flat Appl) w (THead (Bind Abst) u t)) x))) (\lambda (u: -T).(\lambda (t: T).(ty3 g c v (THead (Bind Abst) u t)))) (\lambda (u: -T).(\lambda (_: T).(ty3 g c w u))) (\lambda (u: T).(\lambda (t: T).(nf2 c -(THead (Bind Abst) u t)))) x5 x6 (pc3_pr3_conf c (THead (Flat Appl) w (THead -(Bind Abst) x0 x1)) x H0 (THead (Flat Appl) w (THead (Bind Abst) x5 x6)) -(pr3_thin_dx c (THead (Bind Abst) x0 x1) (THead (Bind Abst) x5 x6) H16 w -Appl)) (ty3_conv g c (THead (Bind Abst) x5 x6) x2 (ty3_sred_pr3 c (THead -(Bind Abst) x0 x1) (THead (Bind Abst) x5 x6) H16 g x2 H4) v (THead (Bind -Abst) x0 x1) H1 (pc3_pr3_r c (THead (Bind Abst) x0 x1) (THead (Bind Abst) x5 -x6) H16)) (ty3_conv g c x5 x3 (ty3_sred_pr3 c x0 x5 H13 g x3 H6) w x0 H2 -(pc3_pr3_r c x0 x5 H13)) H15)))))))) H11))))) H8)))))) H5))))) H3)))))))) -(ty3_gen_appl g c w v x H))))))). -(* COMMENTS -Initial nodes: 1289 -END *) +T).(\lambda (H: (ty3 g c (THead (Flat Appl) w v) x)).(let TMP_5 \def (\lambda +(u: T).(\lambda (t: T).(let TMP_1 \def (Flat Appl) in (let TMP_2 \def (Bind +Abst) in (let TMP_3 \def (THead TMP_2 u t) in (let TMP_4 \def (THead TMP_1 w +TMP_3) in (pc3 c TMP_4 x))))))) in (let TMP_8 \def (\lambda (u: T).(\lambda +(t: T).(let TMP_6 \def (Bind Abst) in (let TMP_7 \def (THead TMP_6 u t) in +(ty3 g c v TMP_7))))) in (let TMP_9 \def (\lambda (u: T).(\lambda (_: T).(ty3 +g c w u))) in (let TMP_14 \def (\lambda (u: T).(\lambda (t: T).(let TMP_10 +\def (Flat Appl) in (let TMP_11 \def (Bind Abst) in (let TMP_12 \def (THead +TMP_11 u t) in (let TMP_13 \def (THead TMP_10 w TMP_12) in (pc3 c TMP_13 +x))))))) in (let TMP_17 \def (\lambda (u: T).(\lambda (t: T).(let TMP_15 \def +(Bind Abst) in (let TMP_16 \def (THead TMP_15 u t) in (ty3 g c v TMP_16))))) +in (let TMP_18 \def (\lambda (u: T).(\lambda (_: T).(ty3 g c w u))) in (let +TMP_21 \def (\lambda (u: T).(\lambda (t: T).(let TMP_19 \def (Bind Abst) in +(let TMP_20 \def (THead TMP_19 u t) in (nf2 c TMP_20))))) in (let TMP_22 \def +(ex4_2 T T TMP_14 TMP_17 TMP_18 TMP_21) in (let TMP_149 \def (\lambda (x0: +T).(\lambda (x1: T).(\lambda (H0: (pc3 c (THead (Flat Appl) w (THead (Bind +Abst) x0 x1)) x)).(\lambda (H1: (ty3 g c v (THead (Bind Abst) x0 +x1))).(\lambda (H2: (ty3 g c w x0)).(let TMP_23 \def (Bind Abst) in (let +TMP_24 \def (THead TMP_23 x0 x1) in (let H_x \def (ty3_correct g c v TMP_24 +H1) in (let H3 \def H_x in (let TMP_27 \def (\lambda (t: T).(let TMP_25 \def +(Bind Abst) in (let TMP_26 \def (THead TMP_25 x0 x1) in (ty3 g c TMP_26 t)))) +in (let TMP_32 \def (\lambda (u: T).(\lambda (t: T).(let TMP_28 \def (Flat +Appl) in (let TMP_29 \def (Bind Abst) in (let TMP_30 \def (THead TMP_29 u t) +in (let TMP_31 \def (THead TMP_28 w TMP_30) in (pc3 c TMP_31 x))))))) in (let +TMP_35 \def (\lambda (u: T).(\lambda (t: T).(let TMP_33 \def (Bind Abst) in +(let TMP_34 \def (THead TMP_33 u t) in (ty3 g c v TMP_34))))) in (let TMP_36 +\def (\lambda (u: T).(\lambda (_: T).(ty3 g c w u))) in (let TMP_39 \def +(\lambda (u: T).(\lambda (t: T).(let TMP_37 \def (Bind Abst) in (let TMP_38 +\def (THead TMP_37 u t) in (nf2 c TMP_38))))) in (let TMP_40 \def (ex4_2 T T +TMP_32 TMP_35 TMP_36 TMP_39) in (let TMP_148 \def (\lambda (x2: T).(\lambda +(H4: (ty3 g c (THead (Bind Abst) x0 x1) x2)).(let H_x0 \def (ty3_correct g c +w x0 H2) in (let H5 \def H_x0 in (let TMP_41 \def (\lambda (t: T).(ty3 g c x0 +t)) in (let TMP_46 \def (\lambda (u: T).(\lambda (t: T).(let TMP_42 \def +(Flat Appl) in (let TMP_43 \def (Bind Abst) in (let TMP_44 \def (THead TMP_43 +u t) in (let TMP_45 \def (THead TMP_42 w TMP_44) in (pc3 c TMP_45 x))))))) in +(let TMP_49 \def (\lambda (u: T).(\lambda (t: T).(let TMP_47 \def (Bind Abst) +in (let TMP_48 \def (THead TMP_47 u t) in (ty3 g c v TMP_48))))) in (let +TMP_50 \def (\lambda (u: T).(\lambda (_: T).(ty3 g c w u))) in (let TMP_53 +\def (\lambda (u: T).(\lambda (t: T).(let TMP_51 \def (Bind Abst) in (let +TMP_52 \def (THead TMP_51 u t) in (nf2 c TMP_52))))) in (let TMP_54 \def +(ex4_2 T T TMP_46 TMP_49 TMP_50 TMP_53) in (let TMP_147 \def (\lambda (x3: +T).(\lambda (H6: (ty3 g c x0 x3)).(let TMP_55 \def (Bind Abst) in (let TMP_56 +\def (THead TMP_55 x0 x1) in (let H7 \def (ty3_sn3 g c TMP_56 x2 H4) in (let +TMP_57 \def (Bind Abst) in (let TMP_58 \def (THead TMP_57 x0 x1) in (let H_x1 +\def (nf2_sn3 c TMP_58 H7) in (let H8 \def H_x1 in (let TMP_61 \def (\lambda +(u: T).(let TMP_59 \def (Bind Abst) in (let TMP_60 \def (THead TMP_59 x0 x1) +in (pr3 c TMP_60 u)))) in (let TMP_62 \def (\lambda (u: T).(nf2 c u)) in (let +TMP_67 \def (\lambda (u: T).(\lambda (t: T).(let TMP_63 \def (Flat Appl) in +(let TMP_64 \def (Bind Abst) in (let TMP_65 \def (THead TMP_64 u t) in (let +TMP_66 \def (THead TMP_63 w TMP_65) in (pc3 c TMP_66 x))))))) in (let TMP_70 +\def (\lambda (u: T).(\lambda (t: T).(let TMP_68 \def (Bind Abst) in (let +TMP_69 \def (THead TMP_68 u t) in (ty3 g c v TMP_69))))) in (let TMP_71 \def +(\lambda (u: T).(\lambda (_: T).(ty3 g c w u))) in (let TMP_74 \def (\lambda +(u: T).(\lambda (t: T).(let TMP_72 \def (Bind Abst) in (let TMP_73 \def +(THead TMP_72 u t) in (nf2 c TMP_73))))) in (let TMP_75 \def (ex4_2 T T +TMP_67 TMP_70 TMP_71 TMP_74) in (let TMP_146 \def (\lambda (x4: T).(\lambda +(H9: (pr3 c (THead (Bind Abst) x0 x1) x4)).(\lambda (H10: (nf2 c x4)).(let +H11 \def (pr3_gen_abst c x0 x1 x4 H9) in (let TMP_78 \def (\lambda (u2: +T).(\lambda (t2: T).(let TMP_76 \def (Bind Abst) in (let TMP_77 \def (THead +TMP_76 u2 t2) in (eq T x4 TMP_77))))) in (let TMP_79 \def (\lambda (u2: +T).(\lambda (_: T).(pr3 c x0 u2))) in (let TMP_82 \def (\lambda (_: +T).(\lambda (t2: T).(\forall (b: B).(\forall (u: T).(let TMP_80 \def (Bind b) +in (let TMP_81 \def (CHead c TMP_80 u) in (pr3 TMP_81 x1 t2))))))) in (let +TMP_87 \def (\lambda (u: T).(\lambda (t: T).(let TMP_83 \def (Flat Appl) in +(let TMP_84 \def (Bind Abst) in (let TMP_85 \def (THead TMP_84 u t) in (let +TMP_86 \def (THead TMP_83 w TMP_85) in (pc3 c TMP_86 x))))))) in (let TMP_90 +\def (\lambda (u: T).(\lambda (t: T).(let TMP_88 \def (Bind Abst) in (let +TMP_89 \def (THead TMP_88 u t) in (ty3 g c v TMP_89))))) in (let TMP_91 \def +(\lambda (u: T).(\lambda (_: T).(ty3 g c w u))) in (let TMP_94 \def (\lambda +(u: T).(\lambda (t: T).(let TMP_92 \def (Bind Abst) in (let TMP_93 \def +(THead TMP_92 u t) in (nf2 c TMP_93))))) in (let TMP_95 \def (ex4_2 T T +TMP_87 TMP_90 TMP_91 TMP_94) in (let TMP_145 \def (\lambda (x5: T).(\lambda +(x6: T).(\lambda (H12: (eq T x4 (THead (Bind Abst) x5 x6))).(\lambda (H13: +(pr3 c x0 x5)).(\lambda (H14: ((\forall (b: B).(\forall (u: T).(pr3 (CHead c +(Bind b) u) x1 x6))))).(let TMP_96 \def (\lambda (t: T).(nf2 c t)) in (let +TMP_97 \def (Bind Abst) in (let TMP_98 \def (THead TMP_97 x5 x6) in (let H15 +\def (eq_ind T x4 TMP_96 H10 TMP_98 H12) in (let TMP_99 \def (Bind Abst) in +(let TMP_100 \def (H14 Abst x5) in (let H16 \def (pr3_head_12 c x0 x5 H13 +TMP_99 x1 x6 TMP_100) in (let TMP_105 \def (\lambda (u: T).(\lambda (t: +T).(let TMP_101 \def (Flat Appl) in (let TMP_102 \def (Bind Abst) in (let +TMP_103 \def (THead TMP_102 u t) in (let TMP_104 \def (THead TMP_101 w +TMP_103) in (pc3 c TMP_104 x))))))) in (let TMP_108 \def (\lambda (u: +T).(\lambda (t: T).(let TMP_106 \def (Bind Abst) in (let TMP_107 \def (THead +TMP_106 u t) in (ty3 g c v TMP_107))))) in (let TMP_109 \def (\lambda (u: +T).(\lambda (_: T).(ty3 g c w u))) in (let TMP_112 \def (\lambda (u: +T).(\lambda (t: T).(let TMP_110 \def (Bind Abst) in (let TMP_111 \def (THead +TMP_110 u t) in (nf2 c TMP_111))))) in (let TMP_113 \def (Flat Appl) in (let +TMP_114 \def (Bind Abst) in (let TMP_115 \def (THead TMP_114 x0 x1) in (let +TMP_116 \def (THead TMP_113 w TMP_115) in (let TMP_117 \def (Flat Appl) in +(let TMP_118 \def (Bind Abst) in (let TMP_119 \def (THead TMP_118 x5 x6) in +(let TMP_120 \def (THead TMP_117 w TMP_119) in (let TMP_121 \def (Bind Abst) +in (let TMP_122 \def (THead TMP_121 x0 x1) in (let TMP_123 \def (Bind Abst) +in (let TMP_124 \def (THead TMP_123 x5 x6) in (let TMP_125 \def (pr3_thin_dx +c TMP_122 TMP_124 H16 w Appl) in (let TMP_126 \def (pc3_pr3_conf c TMP_116 x +H0 TMP_120 TMP_125) in (let TMP_127 \def (Bind Abst) in (let TMP_128 \def +(THead TMP_127 x5 x6) in (let TMP_129 \def (Bind Abst) in (let TMP_130 \def +(THead TMP_129 x0 x1) in (let TMP_131 \def (Bind Abst) in (let TMP_132 \def +(THead TMP_131 x5 x6) in (let TMP_133 \def (ty3_sred_pr3 c TMP_130 TMP_132 +H16 g x2 H4) in (let TMP_134 \def (Bind Abst) in (let TMP_135 \def (THead +TMP_134 x0 x1) in (let TMP_136 \def (Bind Abst) in (let TMP_137 \def (THead +TMP_136 x0 x1) in (let TMP_138 \def (Bind Abst) in (let TMP_139 \def (THead +TMP_138 x5 x6) in (let TMP_140 \def (pc3_pr3_r c TMP_137 TMP_139 H16) in (let +TMP_141 \def (ty3_conv g c TMP_128 x2 TMP_133 v TMP_135 H1 TMP_140) in (let +TMP_142 \def (ty3_sred_pr3 c x0 x5 H13 g x3 H6) in (let TMP_143 \def +(pc3_pr3_r c x0 x5 H13) in (let TMP_144 \def (ty3_conv g c x5 x3 TMP_142 w x0 +H2 TMP_143) in (ex4_2_intro T T TMP_105 TMP_108 TMP_109 TMP_112 x5 x6 TMP_126 +TMP_141 TMP_144 H15))))))))))))))))))))))))))))))))))))))))))))))))) in +(ex3_2_ind T T TMP_78 TMP_79 TMP_82 TMP_95 TMP_145 H11)))))))))))))) in +(ex2_ind T TMP_61 TMP_62 TMP_75 TMP_146 H8)))))))))))))))))) in (ex_ind T +TMP_41 TMP_54 TMP_147 H5)))))))))))) in (ex_ind T TMP_27 TMP_40 TMP_148 +H3))))))))))))))))) in (let TMP_150 \def (ty3_gen_appl g c w v x H) in +(ex3_2_ind T T TMP_5 TMP_8 TMP_9 TMP_22 TMP_149 TMP_150)))))))))))))))). theorem ty3_inv_lref_nf2_pc3: \forall (g: G).(\forall (c: C).(\forall (u1: T).(\forall (i: nat).((ty3 g c @@ -95,113 +148,151 @@ theorem ty3_inv_lref_nf2_pc3: ((pc3 c u1 u2) \to (ex T (\lambda (u: T).(eq T u2 (lift (S i) O u)))))))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (u1: T).(\lambda (i: nat).(\lambda -(H: (ty3 g c (TLRef i) u1)).(insert_eq T (TLRef i) (\lambda (t: T).(ty3 g c t -u1)) (\lambda (t: T).((nf2 c t) \to (\forall (u2: T).((nf2 c u2) \to ((pc3 c -u1 u2) \to (ex T (\lambda (u: T).(eq T u2 (lift (S i) O u))))))))) (\lambda -(y: T).(\lambda (H0: (ty3 g c y u1)).(ty3_ind g (\lambda (c0: C).(\lambda (t: -T).(\lambda (t0: T).((eq T t (TLRef i)) \to ((nf2 c0 t) \to (\forall (u2: -T).((nf2 c0 u2) \to ((pc3 c0 t0 u2) \to (ex T (\lambda (u: T).(eq T u2 (lift -(S i) O u)))))))))))) (\lambda (c0: C).(\lambda (t2: T).(\lambda (t: -T).(\lambda (_: (ty3 g c0 t2 t)).(\lambda (_: (((eq T t2 (TLRef i)) \to ((nf2 -c0 t2) \to (\forall (u2: T).((nf2 c0 u2) \to ((pc3 c0 t u2) \to (ex T -(\lambda (u: T).(eq T u2 (lift (S i) O u))))))))))).(\lambda (u: T).(\lambda -(t1: T).(\lambda (H3: (ty3 g c0 u t1)).(\lambda (H4: (((eq T u (TLRef i)) \to -((nf2 c0 u) \to (\forall (u2: T).((nf2 c0 u2) \to ((pc3 c0 t1 u2) \to (ex T -(\lambda (u0: T).(eq T u2 (lift (S i) O u0))))))))))).(\lambda (H5: (pc3 c0 -t1 t2)).(\lambda (H6: (eq T u (TLRef i))).(\lambda (H7: (nf2 c0 u)).(\lambda -(u2: T).(\lambda (H8: (nf2 c0 u2)).(\lambda (H9: (pc3 c0 t2 u2)).(let H10 -\def (eq_ind T u (\lambda (t0: T).(nf2 c0 t0)) H7 (TLRef i) H6) in (let H11 -\def (eq_ind T u (\lambda (t0: T).((eq T t0 (TLRef i)) \to ((nf2 c0 t0) \to -(\forall (u3: T).((nf2 c0 u3) \to ((pc3 c0 t1 u3) \to (ex T (\lambda (u0: -T).(eq T u3 (lift (S i) O u0)))))))))) H4 (TLRef i) H6) in (let H12 \def -(eq_ind T u (\lambda (t0: T).(ty3 g c0 t0 t1)) H3 (TLRef i) H6) in (let H_y -\def (H11 (refl_equal T (TLRef i)) H10 u2 H8) in (H_y (pc3_t t2 c0 t1 H5 u2 -H9))))))))))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda (H1: (eq -T (TSort m) (TLRef i))).(\lambda (_: (nf2 c0 (TSort m))).(\lambda (u2: -T).(\lambda (_: (nf2 c0 u2)).(\lambda (_: (pc3 c0 (TSort (next g m)) -u2)).(let H5 \def (eq_ind T (TSort m) (\lambda (ee: T).(match ee in T return -(\lambda (_: T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) -\Rightarrow False | (THead _ _ _) \Rightarrow False])) I (TLRef i) H1) in -(False_ind (ex T (\lambda (u: T).(eq T u2 (lift (S i) O u)))) H5))))))))) -(\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda -(H1: (getl n c0 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda (_: (ty3 g -d u t)).(\lambda (_: (((eq T u (TLRef i)) \to ((nf2 d u) \to (\forall (u2: -T).((nf2 d u2) \to ((pc3 d t u2) \to (ex T (\lambda (u0: T).(eq T u2 (lift (S -i) O u0))))))))))).(\lambda (H4: (eq T (TLRef n) (TLRef i))).(\lambda (H5: -(nf2 c0 (TLRef n))).(\lambda (u2: T).(\lambda (_: (nf2 c0 u2)).(\lambda (H7: -(pc3 c0 (lift (S n) O t) u2)).(let H8 \def (f_equal T nat (\lambda (e: -T).(match e in T return (\lambda (_: T).nat) with [(TSort _) \Rightarrow n | -(TLRef n0) \Rightarrow n0 | (THead _ _ _) \Rightarrow n])) (TLRef n) (TLRef -i) H4) in (let H9 \def (eq_ind nat n (\lambda (n0: nat).(pc3 c0 (lift (S n0) -O t) u2)) H7 i H8) in (let H10 \def (eq_ind nat n (\lambda (n0: nat).(nf2 c0 -(TLRef n0))) H5 i H8) in (let H11 \def (eq_ind nat n (\lambda (n0: nat).(getl -n0 c0 (CHead d (Bind Abbr) u))) H1 i H8) in (nf2_gen_lref c0 d u i H11 H10 -(ex T (\lambda (u0: T).(eq T u2 (lift (S i) O u0)))))))))))))))))))))) +(H: (ty3 g c (TLRef i) u1)).(let TMP_1 \def (TLRef i) in (let TMP_2 \def +(\lambda (t: T).(ty3 g c t u1)) in (let TMP_6 \def (\lambda (t: T).((nf2 c t) +\to (\forall (u2: T).((nf2 c u2) \to ((pc3 c u1 u2) \to (let TMP_5 \def +(\lambda (u: T).(let TMP_3 \def (S i) in (let TMP_4 \def (lift TMP_3 O u) in +(eq T u2 TMP_4)))) in (ex T TMP_5))))))) in (let TMP_115 \def (\lambda (y: +T).(\lambda (H0: (ty3 g c y u1)).(let TMP_10 \def (\lambda (c0: C).(\lambda +(t: T).(\lambda (t0: T).((eq T t (TLRef i)) \to ((nf2 c0 t) \to (\forall (u2: +T).((nf2 c0 u2) \to ((pc3 c0 t0 u2) \to (let TMP_9 \def (\lambda (u: T).(let +TMP_7 \def (S i) in (let TMP_8 \def (lift TMP_7 O u) in (eq T u2 TMP_8)))) in +(ex T TMP_9)))))))))) in (let TMP_23 \def (\lambda (c0: C).(\lambda (t2: +T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t2 t)).(\lambda (_: (((eq T t2 +(TLRef i)) \to ((nf2 c0 t2) \to (\forall (u2: T).((nf2 c0 u2) \to ((pc3 c0 t +u2) \to (ex T (\lambda (u: T).(eq T u2 (lift (S i) O u))))))))))).(\lambda +(u: T).(\lambda (t1: T).(\lambda (H3: (ty3 g c0 u t1)).(\lambda (H4: (((eq T +u (TLRef i)) \to ((nf2 c0 u) \to (\forall (u2: T).((nf2 c0 u2) \to ((pc3 c0 +t1 u2) \to (ex T (\lambda (u0: T).(eq T u2 (lift (S i) O +u0))))))))))).(\lambda (H5: (pc3 c0 t1 t2)).(\lambda (H6: (eq T u (TLRef +i))).(\lambda (H7: (nf2 c0 u)).(\lambda (u2: T).(\lambda (H8: (nf2 c0 +u2)).(\lambda (H9: (pc3 c0 t2 u2)).(let TMP_11 \def (\lambda (t0: T).(nf2 c0 +t0)) in (let TMP_12 \def (TLRef i) in (let H10 \def (eq_ind T u TMP_11 H7 +TMP_12 H6) in (let TMP_16 \def (\lambda (t0: T).((eq T t0 (TLRef i)) \to +((nf2 c0 t0) \to (\forall (u3: T).((nf2 c0 u3) \to ((pc3 c0 t1 u3) \to (let +TMP_15 \def (\lambda (u0: T).(let TMP_13 \def (S i) in (let TMP_14 \def (lift +TMP_13 O u0) in (eq T u3 TMP_14)))) in (ex T TMP_15)))))))) in (let TMP_17 +\def (TLRef i) in (let H11 \def (eq_ind T u TMP_16 H4 TMP_17 H6) in (let +TMP_18 \def (\lambda (t0: T).(ty3 g c0 t0 t1)) in (let TMP_19 \def (TLRef i) +in (let H12 \def (eq_ind T u TMP_18 H3 TMP_19 H6) in (let TMP_20 \def (TLRef +i) in (let TMP_21 \def (refl_equal T TMP_20) in (let H_y \def (H11 TMP_21 H10 +u2 H8) in (let TMP_22 \def (pc3_t t2 c0 t1 H5 u2 H9) in (H_y +TMP_22))))))))))))))))))))))))))))) in (let TMP_31 \def (\lambda (c0: +C).(\lambda (m: nat).(\lambda (H1: (eq T (TSort m) (TLRef i))).(\lambda (_: +(nf2 c0 (TSort m))).(\lambda (u2: T).(\lambda (_: (nf2 c0 u2)).(\lambda (_: +(pc3 c0 (TSort (next g m)) u2)).(let TMP_24 \def (TSort m) in (let TMP_25 +\def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow True | (TLRef _) +\Rightarrow False | (THead _ _ _) \Rightarrow False])) in (let TMP_26 \def +(TLRef i) in (let H5 \def (eq_ind T TMP_24 TMP_25 I TMP_26 H1) in (let TMP_29 +\def (\lambda (u: T).(let TMP_27 \def (S i) in (let TMP_28 \def (lift TMP_27 +O u) in (eq T u2 TMP_28)))) in (let TMP_30 \def (ex T TMP_29) in (False_ind +TMP_30 H5)))))))))))))) in (let TMP_47 \def (\lambda (n: nat).(\lambda (c0: +C).(\lambda (d: C).(\lambda (u: T).(\lambda (H1: (getl n c0 (CHead d (Bind +Abbr) u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (_: (((eq T u +(TLRef i)) \to ((nf2 d u) \to (\forall (u2: T).((nf2 d u2) \to ((pc3 d t u2) +\to (ex T (\lambda (u0: T).(eq T u2 (lift (S i) O u0))))))))))).(\lambda (H4: +(eq T (TLRef n) (TLRef i))).(\lambda (H5: (nf2 c0 (TLRef n))).(\lambda (u2: +T).(\lambda (_: (nf2 c0 u2)).(\lambda (H7: (pc3 c0 (lift (S n) O t) u2)).(let +TMP_32 \def (\lambda (e: T).(match e with [(TSort _) \Rightarrow n | (TLRef +n0) \Rightarrow n0 | (THead _ _ _) \Rightarrow n])) in (let TMP_33 \def +(TLRef n) in (let TMP_34 \def (TLRef i) in (let H8 \def (f_equal T nat TMP_32 +TMP_33 TMP_34 H4) in (let TMP_37 \def (\lambda (n0: nat).(let TMP_35 \def (S +n0) in (let TMP_36 \def (lift TMP_35 O t) in (pc3 c0 TMP_36 u2)))) in (let H9 +\def (eq_ind nat n TMP_37 H7 i H8) in (let TMP_39 \def (\lambda (n0: +nat).(let TMP_38 \def (TLRef n0) in (nf2 c0 TMP_38))) in (let H10 \def +(eq_ind nat n TMP_39 H5 i H8) in (let TMP_42 \def (\lambda (n0: nat).(let +TMP_40 \def (Bind Abbr) in (let TMP_41 \def (CHead d TMP_40 u) in (getl n0 c0 +TMP_41)))) in (let H11 \def (eq_ind nat n TMP_42 H1 i H8) in (let TMP_45 \def +(\lambda (u0: T).(let TMP_43 \def (S i) in (let TMP_44 \def (lift TMP_43 O +u0) in (eq T u2 TMP_44)))) in (let TMP_46 \def (ex T TMP_45) in (nf2_gen_lref +c0 d u i H11 H10 TMP_46)))))))))))))))))))))))))) in (let TMP_87 \def (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (H1: (getl n c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (_: (((eq T u (TLRef i)) \to ((nf2 d u) \to (\forall (u2: T).((nf2 d u2) \to ((pc3 d t u2) \to (ex T (\lambda (u0: T).(eq T u2 (lift (S i) O u0))))))))))).(\lambda (H4: (eq T (TLRef n) (TLRef i))).(\lambda (H5: (nf2 c0 (TLRef n))).(\lambda (u2: T).(\lambda (H6: (nf2 c0 u2)).(\lambda (H7: -(pc3 c0 (lift (S n) O u) u2)).(let H8 \def (f_equal T nat (\lambda (e: -T).(match e in T return (\lambda (_: T).nat) with [(TSort _) \Rightarrow n | -(TLRef n0) \Rightarrow n0 | (THead _ _ _) \Rightarrow n])) (TLRef n) (TLRef -i) H4) in (let H9 \def (eq_ind nat n (\lambda (n0: nat).(pc3 c0 (lift (S n0) -O u) u2)) H7 i H8) in (let H10 \def (eq_ind nat n (\lambda (n0: nat).(nf2 c0 -(TLRef n0))) H5 i H8) in (let H11 \def (eq_ind nat n (\lambda (n0: nat).(getl -n0 c0 (CHead d (Bind Abst) u))) H1 i H8) in (let H_y \def (pc3_nf2_unfold c0 -(lift (S i) O u) u2 H9 H6) in (let H12 \def (pr3_gen_lift c0 u u2 (S i) O H_y -d (getl_drop Abst c0 d u i H11)) in (ex2_ind T (\lambda (t2: T).(eq T u2 -(lift (S i) O t2))) (\lambda (t2: T).(pr3 d u t2)) (ex T (\lambda (u0: T).(eq -T u2 (lift (S i) O u0)))) (\lambda (x: T).(\lambda (H13: (eq T u2 (lift (S i) -O x))).(\lambda (_: (pr3 d u x)).(eq_ind_r T (lift (S i) O x) (\lambda (t0: -T).(ex T (\lambda (u0: T).(eq T t0 (lift (S i) O u0))))) (ex_intro T (\lambda -(u0: T).(eq T (lift (S i) O x) (lift (S i) O u0))) x (refl_equal T (lift (S -i) O x))) u2 H13)))) H12)))))))))))))))))))) (\lambda (c0: C).(\lambda (u: -T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (_: (((eq T u (TLRef -i)) \to ((nf2 c0 u) \to (\forall (u2: T).((nf2 c0 u2) \to ((pc3 c0 t u2) \to -(ex T (\lambda (u0: T).(eq T u2 (lift (S i) O u0))))))))))).(\lambda (b: -B).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) -u) t1 t2)).(\lambda (_: (((eq T t1 (TLRef i)) \to ((nf2 (CHead c0 (Bind b) u) -t1) \to (\forall (u2: T).((nf2 (CHead c0 (Bind b) u) u2) \to ((pc3 (CHead c0 -(Bind b) u) t2 u2) \to (ex T (\lambda (u0: T).(eq T u2 (lift (S i) O -u0))))))))))).(\lambda (H5: (eq T (THead (Bind b) u t1) (TLRef i))).(\lambda -(_: (nf2 c0 (THead (Bind b) u t1))).(\lambda (u2: T).(\lambda (_: (nf2 c0 -u2)).(\lambda (_: (pc3 c0 (THead (Bind b) u t2) u2)).(let H9 \def (eq_ind T -(THead (Bind b) u t1) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | -(THead _ _ _) \Rightarrow True])) I (TLRef i) H5) in (False_ind (ex T -(\lambda (u0: T).(eq T u2 (lift (S i) O u0)))) H9))))))))))))))))) (\lambda -(c0: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: (ty3 g c0 w u)).(\lambda -(_: (((eq T w (TLRef i)) \to ((nf2 c0 w) \to (\forall (u2: T).((nf2 c0 u2) -\to ((pc3 c0 u u2) \to (ex T (\lambda (u0: T).(eq T u2 (lift (S i) O -u0))))))))))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead -(Bind Abst) u t))).(\lambda (_: (((eq T v (TLRef i)) \to ((nf2 c0 v) \to -(\forall (u2: T).((nf2 c0 u2) \to ((pc3 c0 (THead (Bind Abst) u t) u2) \to -(ex T (\lambda (u0: T).(eq T u2 (lift (S i) O u0))))))))))).(\lambda (H5: (eq -T (THead (Flat Appl) w v) (TLRef i))).(\lambda (_: (nf2 c0 (THead (Flat Appl) -w v))).(\lambda (u2: T).(\lambda (_: (nf2 c0 u2)).(\lambda (_: (pc3 c0 (THead -(Flat Appl) w (THead (Bind Abst) u t)) u2)).(let H9 \def (eq_ind T (THead -(Flat Appl) w v) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) -with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ -_) \Rightarrow True])) I (TLRef i) H5) in (False_ind (ex T (\lambda (u0: -T).(eq T u2 (lift (S i) O u0)))) H9)))))))))))))))) (\lambda (c0: C).(\lambda -(t1: T).(\lambda (t2: T).(\lambda (_: (ty3 g c0 t1 t2)).(\lambda (_: (((eq T -t1 (TLRef i)) \to ((nf2 c0 t1) \to (\forall (u2: T).((nf2 c0 u2) \to ((pc3 c0 -t2 u2) \to (ex T (\lambda (u: T).(eq T u2 (lift (S i) O u))))))))))).(\lambda -(t0: T).(\lambda (_: (ty3 g c0 t2 t0)).(\lambda (_: (((eq T t2 (TLRef i)) \to -((nf2 c0 t2) \to (\forall (u2: T).((nf2 c0 u2) \to ((pc3 c0 t0 u2) \to (ex T -(\lambda (u: T).(eq T u2 (lift (S i) O u))))))))))).(\lambda (H5: (eq T -(THead (Flat Cast) t2 t1) (TLRef i))).(\lambda (_: (nf2 c0 (THead (Flat Cast) -t2 t1))).(\lambda (u2: T).(\lambda (_: (nf2 c0 u2)).(\lambda (_: (pc3 c0 -(THead (Flat Cast) t0 t2) u2)).(let H9 \def (eq_ind T (THead (Flat Cast) t2 -t1) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort -_) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) -\Rightarrow True])) I (TLRef i) H5) in (False_ind (ex T (\lambda (u: T).(eq T -u2 (lift (S i) O u)))) H9))))))))))))))) c y u1 H0))) H))))). -(* COMMENTS -Initial nodes: 2175 -END *) +(pc3 c0 (lift (S n) O u) u2)).(let TMP_48 \def (\lambda (e: T).(match e with +[(TSort _) \Rightarrow n | (TLRef n0) \Rightarrow n0 | (THead _ _ _) +\Rightarrow n])) in (let TMP_49 \def (TLRef n) in (let TMP_50 \def (TLRef i) +in (let H8 \def (f_equal T nat TMP_48 TMP_49 TMP_50 H4) in (let TMP_53 \def +(\lambda (n0: nat).(let TMP_51 \def (S n0) in (let TMP_52 \def (lift TMP_51 O +u) in (pc3 c0 TMP_52 u2)))) in (let H9 \def (eq_ind nat n TMP_53 H7 i H8) in +(let TMP_55 \def (\lambda (n0: nat).(let TMP_54 \def (TLRef n0) in (nf2 c0 +TMP_54))) in (let H10 \def (eq_ind nat n TMP_55 H5 i H8) in (let TMP_58 \def +(\lambda (n0: nat).(let TMP_56 \def (Bind Abst) in (let TMP_57 \def (CHead d +TMP_56 u) in (getl n0 c0 TMP_57)))) in (let H11 \def (eq_ind nat n TMP_58 H1 +i H8) in (let TMP_59 \def (S i) in (let TMP_60 \def (lift TMP_59 O u) in (let +H_y \def (pc3_nf2_unfold c0 TMP_60 u2 H9 H6) in (let TMP_61 \def (S i) in +(let TMP_62 \def (getl_drop Abst c0 d u i H11) in (let H12 \def (pr3_gen_lift +c0 u u2 TMP_61 O H_y d TMP_62) in (let TMP_65 \def (\lambda (t2: T).(let +TMP_63 \def (S i) in (let TMP_64 \def (lift TMP_63 O t2) in (eq T u2 +TMP_64)))) in (let TMP_66 \def (\lambda (t2: T).(pr3 d u t2)) in (let TMP_69 +\def (\lambda (u0: T).(let TMP_67 \def (S i) in (let TMP_68 \def (lift TMP_67 +O u0) in (eq T u2 TMP_68)))) in (let TMP_70 \def (ex T TMP_69) in (let TMP_86 +\def (\lambda (x: T).(\lambda (H13: (eq T u2 (lift (S i) O x))).(\lambda (_: +(pr3 d u x)).(let TMP_71 \def (S i) in (let TMP_72 \def (lift TMP_71 O x) in +(let TMP_76 \def (\lambda (t0: T).(let TMP_75 \def (\lambda (u0: T).(let +TMP_73 \def (S i) in (let TMP_74 \def (lift TMP_73 O u0) in (eq T t0 +TMP_74)))) in (ex T TMP_75))) in (let TMP_81 \def (\lambda (u0: T).(let +TMP_77 \def (S i) in (let TMP_78 \def (lift TMP_77 O x) in (let TMP_79 \def +(S i) in (let TMP_80 \def (lift TMP_79 O u0) in (eq T TMP_78 TMP_80)))))) in +(let TMP_82 \def (S i) in (let TMP_83 \def (lift TMP_82 O x) in (let TMP_84 +\def (refl_equal T TMP_83) in (let TMP_85 \def (ex_intro T TMP_81 x TMP_84) +in (eq_ind_r T TMP_72 TMP_76 TMP_85 u2 H13)))))))))))) in (ex2_ind T TMP_65 +TMP_66 TMP_70 TMP_86 H12))))))))))))))))))))))))))))))))))) in (let TMP_96 +\def (\lambda (c0: C).(\lambda (u: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 +u t)).(\lambda (_: (((eq T u (TLRef i)) \to ((nf2 c0 u) \to (\forall (u2: +T).((nf2 c0 u2) \to ((pc3 c0 t u2) \to (ex T (\lambda (u0: T).(eq T u2 (lift +(S i) O u0))))))))))).(\lambda (b: B).(\lambda (t1: T).(\lambda (t2: +T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t1 t2)).(\lambda (_: (((eq T t1 +(TLRef i)) \to ((nf2 (CHead c0 (Bind b) u) t1) \to (\forall (u2: T).((nf2 +(CHead c0 (Bind b) u) u2) \to ((pc3 (CHead c0 (Bind b) u) t2 u2) \to (ex T +(\lambda (u0: T).(eq T u2 (lift (S i) O u0))))))))))).(\lambda (H5: (eq T +(THead (Bind b) u t1) (TLRef i))).(\lambda (_: (nf2 c0 (THead (Bind b) u +t1))).(\lambda (u2: T).(\lambda (_: (nf2 c0 u2)).(\lambda (_: (pc3 c0 (THead +(Bind b) u t2) u2)).(let TMP_88 \def (Bind b) in (let TMP_89 \def (THead +TMP_88 u t1) in (let TMP_90 \def (\lambda (ee: T).(match ee with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow +True])) in (let TMP_91 \def (TLRef i) in (let H9 \def (eq_ind T TMP_89 TMP_90 +I TMP_91 H5) in (let TMP_94 \def (\lambda (u0: T).(let TMP_92 \def (S i) in +(let TMP_93 \def (lift TMP_92 O u0) in (eq T u2 TMP_93)))) in (let TMP_95 +\def (ex T TMP_94) in (False_ind TMP_95 H9))))))))))))))))))))))) in (let +TMP_105 \def (\lambda (c0: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: +(ty3 g c0 w u)).(\lambda (_: (((eq T w (TLRef i)) \to ((nf2 c0 w) \to +(\forall (u2: T).((nf2 c0 u2) \to ((pc3 c0 u u2) \to (ex T (\lambda (u0: +T).(eq T u2 (lift (S i) O u0))))))))))).(\lambda (v: T).(\lambda (t: +T).(\lambda (_: (ty3 g c0 v (THead (Bind Abst) u t))).(\lambda (_: (((eq T v +(TLRef i)) \to ((nf2 c0 v) \to (\forall (u2: T).((nf2 c0 u2) \to ((pc3 c0 +(THead (Bind Abst) u t) u2) \to (ex T (\lambda (u0: T).(eq T u2 (lift (S i) O +u0))))))))))).(\lambda (H5: (eq T (THead (Flat Appl) w v) (TLRef +i))).(\lambda (_: (nf2 c0 (THead (Flat Appl) w v))).(\lambda (u2: T).(\lambda +(_: (nf2 c0 u2)).(\lambda (_: (pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) +u t)) u2)).(let TMP_97 \def (Flat Appl) in (let TMP_98 \def (THead TMP_97 w +v) in (let TMP_99 \def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow +False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) in +(let TMP_100 \def (TLRef i) in (let H9 \def (eq_ind T TMP_98 TMP_99 I TMP_100 +H5) in (let TMP_103 \def (\lambda (u0: T).(let TMP_101 \def (S i) in (let +TMP_102 \def (lift TMP_101 O u0) in (eq T u2 TMP_102)))) in (let TMP_104 \def +(ex T TMP_103) in (False_ind TMP_104 H9)))))))))))))))))))))) in (let TMP_114 +\def (\lambda (c0: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (ty3 g +c0 t1 t2)).(\lambda (_: (((eq T t1 (TLRef i)) \to ((nf2 c0 t1) \to (\forall +(u2: T).((nf2 c0 u2) \to ((pc3 c0 t2 u2) \to (ex T (\lambda (u: T).(eq T u2 +(lift (S i) O u))))))))))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t2 +t0)).(\lambda (_: (((eq T t2 (TLRef i)) \to ((nf2 c0 t2) \to (\forall (u2: +T).((nf2 c0 u2) \to ((pc3 c0 t0 u2) \to (ex T (\lambda (u: T).(eq T u2 (lift +(S i) O u))))))))))).(\lambda (H5: (eq T (THead (Flat Cast) t2 t1) (TLRef +i))).(\lambda (_: (nf2 c0 (THead (Flat Cast) t2 t1))).(\lambda (u2: +T).(\lambda (_: (nf2 c0 u2)).(\lambda (_: (pc3 c0 (THead (Flat Cast) t0 t2) +u2)).(let TMP_106 \def (Flat Cast) in (let TMP_107 \def (THead TMP_106 t2 t1) +in (let TMP_108 \def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow +False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) in +(let TMP_109 \def (TLRef i) in (let H9 \def (eq_ind T TMP_107 TMP_108 I +TMP_109 H5) in (let TMP_112 \def (\lambda (u: T).(let TMP_110 \def (S i) in +(let TMP_111 \def (lift TMP_110 O u) in (eq T u2 TMP_111)))) in (let TMP_113 +\def (ex T TMP_112) in (False_ind TMP_113 H9))))))))))))))))))))) in (ty3_ind +g TMP_10 TMP_23 TMP_31 TMP_47 TMP_87 TMP_96 TMP_105 TMP_114 c y u1 +H0))))))))))) in (insert_eq T TMP_1 TMP_2 TMP_6 TMP_115 H))))))))). theorem ty3_inv_lref_nf2: \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (i: nat).((ty3 g c @@ -210,10 +301,8 @@ T).(eq T u (lift (S i) O u0)))))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (i: nat).(\lambda (H: (ty3 g c (TLRef i) u)).(\lambda (H0: (nf2 c (TLRef i))).(\lambda (H1: -(nf2 c u)).(ty3_inv_lref_nf2_pc3 g c u i H H0 u H1 (pc3_refl c u)))))))). -(* COMMENTS -Initial nodes: 57 -END *) +(nf2 c u)).(let TMP_1 \def (pc3_refl c u) in (ty3_inv_lref_nf2_pc3 g c u i H +H0 u H1 TMP_1)))))))). theorem ty3_inv_appls_lref_nf2: \forall (g: G).(\forall (c: C).(\forall (vs: TList).(\forall (u1: @@ -222,59 +311,112 @@ T).(\forall (i: nat).((ty3 g c (THeads (Flat Appl) vs (TLRef i)) u1) \to i) O u))) (\lambda (u: T).(pc3 c (THeads (Flat Appl) vs (lift (S i) O u)) u1)))))))))) \def - \lambda (g: G).(\lambda (c: C).(\lambda (vs: TList).(TList_ind (\lambda (t: -TList).(\forall (u1: T).(\forall (i: nat).((ty3 g c (THeads (Flat Appl) t -(TLRef i)) u1) \to ((nf2 c (TLRef i)) \to ((nf2 c u1) \to (ex2 T (\lambda (u: -T).(nf2 c (lift (S i) O u))) (\lambda (u: T).(pc3 c (THeads (Flat Appl) t -(lift (S i) O u)) u1))))))))) (\lambda (u1: T).(\lambda (i: nat).(\lambda (H: -(ty3 g c (TLRef i) u1)).(\lambda (H0: (nf2 c (TLRef i))).(\lambda (H1: (nf2 c -u1)).(let H_x \def (ty3_inv_lref_nf2 g c u1 i H H0 H1) in (let H2 \def H_x in -(ex_ind T (\lambda (u0: T).(eq T u1 (lift (S i) O u0))) (ex2 T (\lambda (u: -T).(nf2 c (lift (S i) O u))) (\lambda (u: T).(pc3 c (lift (S i) O u) u1))) -(\lambda (x: T).(\lambda (H3: (eq T u1 (lift (S i) O x))).(let H4 \def -(eq_ind T u1 (\lambda (t: T).(nf2 c t)) H1 (lift (S i) O x) H3) in (eq_ind_r -T (lift (S i) O x) (\lambda (t: T).(ex2 T (\lambda (u: T).(nf2 c (lift (S i) -O u))) (\lambda (u: T).(pc3 c (lift (S i) O u) t)))) (ex_intro2 T (\lambda -(u: T).(nf2 c (lift (S i) O u))) (\lambda (u: T).(pc3 c (lift (S i) O u) -(lift (S i) O x))) x H4 (pc3_refl c (lift (S i) O x))) u1 H3)))) H2)))))))) -(\lambda (t: T).(\lambda (t0: TList).(\lambda (H: ((\forall (u1: T).(\forall -(i: nat).((ty3 g c (THeads (Flat Appl) t0 (TLRef i)) u1) \to ((nf2 c (TLRef -i)) \to ((nf2 c u1) \to (ex2 T (\lambda (u: T).(nf2 c (lift (S i) O u))) -(\lambda (u: T).(pc3 c (THeads (Flat Appl) t0 (lift (S i) O u)) -u1)))))))))).(\lambda (u1: T).(\lambda (i: nat).(\lambda (H0: (ty3 g c (THead -(Flat Appl) t (THeads (Flat Appl) t0 (TLRef i))) u1)).(\lambda (H1: (nf2 c -(TLRef i))).(\lambda (_: (nf2 c u1)).(let H_x \def (ty3_gen_appl_nf2 g c t -(THeads (Flat Appl) t0 (TLRef i)) u1 H0) in (let H3 \def H_x in (ex4_2_ind T -T (\lambda (u: T).(\lambda (t1: T).(pc3 c (THead (Flat Appl) t (THead (Bind -Abst) u t1)) u1))) (\lambda (u: T).(\lambda (t1: T).(ty3 g c (THeads (Flat -Appl) t0 (TLRef i)) (THead (Bind Abst) u t1)))) (\lambda (u: T).(\lambda (_: -T).(ty3 g c t u))) (\lambda (u: T).(\lambda (t1: T).(nf2 c (THead (Bind Abst) -u t1)))) (ex2 T (\lambda (u: T).(nf2 c (lift (S i) O u))) (\lambda (u: -T).(pc3 c (THead (Flat Appl) t (THeads (Flat Appl) t0 (lift (S i) O u))) -u1))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H4: (pc3 c (THead (Flat + \lambda (g: G).(\lambda (c: C).(\lambda (vs: TList).(let TMP_9 \def (\lambda +(t: TList).(\forall (u1: T).(\forall (i: nat).((ty3 g c (THeads (Flat Appl) t +(TLRef i)) u1) \to ((nf2 c (TLRef i)) \to ((nf2 c u1) \to (let TMP_3 \def +(\lambda (u: T).(let TMP_1 \def (S i) in (let TMP_2 \def (lift TMP_1 O u) in +(nf2 c TMP_2)))) in (let TMP_8 \def (\lambda (u: T).(let TMP_4 \def (Flat +Appl) in (let TMP_5 \def (S i) in (let TMP_6 \def (lift TMP_5 O u) in (let +TMP_7 \def (THeads TMP_4 t TMP_6) in (pc3 c TMP_7 u1)))))) in (ex2 T TMP_3 +TMP_8))))))))) in (let TMP_45 \def (\lambda (u1: T).(\lambda (i: +nat).(\lambda (H: (ty3 g c (TLRef i) u1)).(\lambda (H0: (nf2 c (TLRef +i))).(\lambda (H1: (nf2 c u1)).(let H_x \def (ty3_inv_lref_nf2 g c u1 i H H0 +H1) in (let H2 \def H_x in (let TMP_12 \def (\lambda (u0: T).(let TMP_10 \def +(S i) in (let TMP_11 \def (lift TMP_10 O u0) in (eq T u1 TMP_11)))) in (let +TMP_15 \def (\lambda (u: T).(let TMP_13 \def (S i) in (let TMP_14 \def (lift +TMP_13 O u) in (nf2 c TMP_14)))) in (let TMP_18 \def (\lambda (u: T).(let +TMP_16 \def (S i) in (let TMP_17 \def (lift TMP_16 O u) in (pc3 c TMP_17 +u1)))) in (let TMP_19 \def (ex2 T TMP_15 TMP_18) in (let TMP_44 \def (\lambda +(x: T).(\lambda (H3: (eq T u1 (lift (S i) O x))).(let TMP_20 \def (\lambda +(t: T).(nf2 c t)) in (let TMP_21 \def (S i) in (let TMP_22 \def (lift TMP_21 +O x) in (let H4 \def (eq_ind T u1 TMP_20 H1 TMP_22 H3) in (let TMP_23 \def (S +i) in (let TMP_24 \def (lift TMP_23 O x) in (let TMP_31 \def (\lambda (t: +T).(let TMP_27 \def (\lambda (u: T).(let TMP_25 \def (S i) in (let TMP_26 +\def (lift TMP_25 O u) in (nf2 c TMP_26)))) in (let TMP_30 \def (\lambda (u: +T).(let TMP_28 \def (S i) in (let TMP_29 \def (lift TMP_28 O u) in (pc3 c +TMP_29 t)))) in (ex2 T TMP_27 TMP_30)))) in (let TMP_34 \def (\lambda (u: +T).(let TMP_32 \def (S i) in (let TMP_33 \def (lift TMP_32 O u) in (nf2 c +TMP_33)))) in (let TMP_39 \def (\lambda (u: T).(let TMP_35 \def (S i) in (let +TMP_36 \def (lift TMP_35 O u) in (let TMP_37 \def (S i) in (let TMP_38 \def +(lift TMP_37 O x) in (pc3 c TMP_36 TMP_38)))))) in (let TMP_40 \def (S i) in +(let TMP_41 \def (lift TMP_40 O x) in (let TMP_42 \def (pc3_refl c TMP_41) in +(let TMP_43 \def (ex_intro2 T TMP_34 TMP_39 x H4 TMP_42) in (eq_ind_r T +TMP_24 TMP_31 TMP_43 u1 H3)))))))))))))))) in (ex_ind T TMP_12 TMP_19 TMP_44 +H2))))))))))))) in (let TMP_145 \def (\lambda (t: T).(\lambda (t0: +TList).(\lambda (H: ((\forall (u1: T).(\forall (i: nat).((ty3 g c (THeads +(Flat Appl) t0 (TLRef i)) u1) \to ((nf2 c (TLRef i)) \to ((nf2 c u1) \to (ex2 +T (\lambda (u: T).(nf2 c (lift (S i) O u))) (\lambda (u: T).(pc3 c (THeads +(Flat Appl) t0 (lift (S i) O u)) u1)))))))))).(\lambda (u1: T).(\lambda (i: +nat).(\lambda (H0: (ty3 g c (THead (Flat Appl) t (THeads (Flat Appl) t0 +(TLRef i))) u1)).(\lambda (H1: (nf2 c (TLRef i))).(\lambda (_: (nf2 c +u1)).(let TMP_46 \def (Flat Appl) in (let TMP_47 \def (TLRef i) in (let +TMP_48 \def (THeads TMP_46 t0 TMP_47) in (let H_x \def (ty3_gen_appl_nf2 g c +t TMP_48 u1 H0) in (let H3 \def H_x in (let TMP_53 \def (\lambda (u: +T).(\lambda (t1: T).(let TMP_49 \def (Flat Appl) in (let TMP_50 \def (Bind +Abst) in (let TMP_51 \def (THead TMP_50 u t1) in (let TMP_52 \def (THead +TMP_49 t TMP_51) in (pc3 c TMP_52 u1))))))) in (let TMP_59 \def (\lambda (u: +T).(\lambda (t1: T).(let TMP_54 \def (Flat Appl) in (let TMP_55 \def (TLRef +i) in (let TMP_56 \def (THeads TMP_54 t0 TMP_55) in (let TMP_57 \def (Bind +Abst) in (let TMP_58 \def (THead TMP_57 u t1) in (ty3 g c TMP_56 +TMP_58)))))))) in (let TMP_60 \def (\lambda (u: T).(\lambda (_: T).(ty3 g c t +u))) in (let TMP_63 \def (\lambda (u: T).(\lambda (t1: T).(let TMP_61 \def +(Bind Abst) in (let TMP_62 \def (THead TMP_61 u t1) in (nf2 c TMP_62))))) in +(let TMP_66 \def (\lambda (u: T).(let TMP_64 \def (S i) in (let TMP_65 \def +(lift TMP_64 O u) in (nf2 c TMP_65)))) in (let TMP_73 \def (\lambda (u: +T).(let TMP_67 \def (Flat Appl) in (let TMP_68 \def (Flat Appl) in (let +TMP_69 \def (S i) in (let TMP_70 \def (lift TMP_69 O u) in (let TMP_71 \def +(THeads TMP_68 t0 TMP_70) in (let TMP_72 \def (THead TMP_67 t TMP_71) in (pc3 +c TMP_72 u1)))))))) in (let TMP_74 \def (ex2 T TMP_66 TMP_73) in (let TMP_144 +\def (\lambda (x0: T).(\lambda (x1: T).(\lambda (H4: (pc3 c (THead (Flat Appl) t (THead (Bind Abst) x0 x1)) u1)).(\lambda (H5: (ty3 g c (THeads (Flat Appl) t0 (TLRef i)) (THead (Bind Abst) x0 x1))).(\lambda (_: (ty3 g c t x0)).(\lambda (H7: (nf2 c (THead (Bind Abst) x0 x1))).(let H8 \def -(nf2_gen_abst c x0 x1 H7) in (land_ind (nf2 c x0) (nf2 (CHead c (Bind Abst) -x0) x1) (ex2 T (\lambda (u: T).(nf2 c (lift (S i) O u))) (\lambda (u: T).(pc3 -c (THead (Flat Appl) t (THeads (Flat Appl) t0 (lift (S i) O u))) u1))) -(\lambda (H9: (nf2 c x0)).(\lambda (H10: (nf2 (CHead c (Bind Abst) x0) -x1)).(let H_y \def (H (THead (Bind Abst) x0 x1) i H5 H1) in (let H11 \def -(H_y (nf2_abst_shift c x0 H9 x1 H10)) in (ex2_ind T (\lambda (u: T).(nf2 c -(lift (S i) O u))) (\lambda (u: T).(pc3 c (THeads (Flat Appl) t0 (lift (S i) -O u)) (THead (Bind Abst) x0 x1))) (ex2 T (\lambda (u: T).(nf2 c (lift (S i) O -u))) (\lambda (u: T).(pc3 c (THead (Flat Appl) t (THeads (Flat Appl) t0 (lift -(S i) O u))) u1))) (\lambda (x: T).(\lambda (H12: (nf2 c (lift (S i) O -x))).(\lambda (H13: (pc3 c (THeads (Flat Appl) t0 (lift (S i) O x)) (THead -(Bind Abst) x0 x1))).(ex_intro2 T (\lambda (u: T).(nf2 c (lift (S i) O u))) -(\lambda (u: T).(pc3 c (THead (Flat Appl) t (THeads (Flat Appl) t0 (lift (S -i) O u))) u1)) x H12 (pc3_t (THead (Flat Appl) t (THead (Bind Abst) x0 x1)) c -(THead (Flat Appl) t (THeads (Flat Appl) t0 (lift (S i) O x))) (pc3_thin_dx c -(THeads (Flat Appl) t0 (lift (S i) O x)) (THead (Bind Abst) x0 x1) H13 t -Appl) u1 H4))))) H11))))) H8)))))))) H3))))))))))) vs))). -(* COMMENTS -Initial nodes: 1213 -END *) +(nf2_gen_abst c x0 x1 H7) in (let TMP_75 \def (nf2 c x0) in (let TMP_76 \def +(Bind Abst) in (let TMP_77 \def (CHead c TMP_76 x0) in (let TMP_78 \def (nf2 +TMP_77 x1) in (let TMP_81 \def (\lambda (u: T).(let TMP_79 \def (S i) in (let +TMP_80 \def (lift TMP_79 O u) in (nf2 c TMP_80)))) in (let TMP_88 \def +(\lambda (u: T).(let TMP_82 \def (Flat Appl) in (let TMP_83 \def (Flat Appl) +in (let TMP_84 \def (S i) in (let TMP_85 \def (lift TMP_84 O u) in (let +TMP_86 \def (THeads TMP_83 t0 TMP_85) in (let TMP_87 \def (THead TMP_82 t +TMP_86) in (pc3 c TMP_87 u1)))))))) in (let TMP_89 \def (ex2 T TMP_81 TMP_88) +in (let TMP_143 \def (\lambda (H9: (nf2 c x0)).(\lambda (H10: (nf2 (CHead c +(Bind Abst) x0) x1)).(let TMP_90 \def (Bind Abst) in (let TMP_91 \def (THead +TMP_90 x0 x1) in (let H_y \def (H TMP_91 i H5 H1) in (let TMP_92 \def +(nf2_abst_shift c x0 H9 x1 H10) in (let H11 \def (H_y TMP_92) in (let TMP_95 +\def (\lambda (u: T).(let TMP_93 \def (S i) in (let TMP_94 \def (lift TMP_93 +O u) in (nf2 c TMP_94)))) in (let TMP_102 \def (\lambda (u: T).(let TMP_96 +\def (Flat Appl) in (let TMP_97 \def (S i) in (let TMP_98 \def (lift TMP_97 O +u) in (let TMP_99 \def (THeads TMP_96 t0 TMP_98) in (let TMP_100 \def (Bind +Abst) in (let TMP_101 \def (THead TMP_100 x0 x1) in (pc3 c TMP_99 +TMP_101)))))))) in (let TMP_105 \def (\lambda (u: T).(let TMP_103 \def (S i) +in (let TMP_104 \def (lift TMP_103 O u) in (nf2 c TMP_104)))) in (let TMP_112 +\def (\lambda (u: T).(let TMP_106 \def (Flat Appl) in (let TMP_107 \def (Flat +Appl) in (let TMP_108 \def (S i) in (let TMP_109 \def (lift TMP_108 O u) in +(let TMP_110 \def (THeads TMP_107 t0 TMP_109) in (let TMP_111 \def (THead +TMP_106 t TMP_110) in (pc3 c TMP_111 u1)))))))) in (let TMP_113 \def (ex2 T +TMP_105 TMP_112) in (let TMP_142 \def (\lambda (x: T).(\lambda (H12: (nf2 c +(lift (S i) O x))).(\lambda (H13: (pc3 c (THeads (Flat Appl) t0 (lift (S i) O +x)) (THead (Bind Abst) x0 x1))).(let TMP_116 \def (\lambda (u: T).(let +TMP_114 \def (S i) in (let TMP_115 \def (lift TMP_114 O u) in (nf2 c +TMP_115)))) in (let TMP_123 \def (\lambda (u: T).(let TMP_117 \def (Flat +Appl) in (let TMP_118 \def (Flat Appl) in (let TMP_119 \def (S i) in (let +TMP_120 \def (lift TMP_119 O u) in (let TMP_121 \def (THeads TMP_118 t0 +TMP_120) in (let TMP_122 \def (THead TMP_117 t TMP_121) in (pc3 c TMP_122 +u1)))))))) in (let TMP_124 \def (Flat Appl) in (let TMP_125 \def (Bind Abst) +in (let TMP_126 \def (THead TMP_125 x0 x1) in (let TMP_127 \def (THead +TMP_124 t TMP_126) in (let TMP_128 \def (Flat Appl) in (let TMP_129 \def +(Flat Appl) in (let TMP_130 \def (S i) in (let TMP_131 \def (lift TMP_130 O +x) in (let TMP_132 \def (THeads TMP_129 t0 TMP_131) in (let TMP_133 \def +(THead TMP_128 t TMP_132) in (let TMP_134 \def (Flat Appl) in (let TMP_135 +\def (S i) in (let TMP_136 \def (lift TMP_135 O x) in (let TMP_137 \def +(THeads TMP_134 t0 TMP_136) in (let TMP_138 \def (Bind Abst) in (let TMP_139 +\def (THead TMP_138 x0 x1) in (let TMP_140 \def (pc3_thin_dx c TMP_137 +TMP_139 H13 t Appl) in (let TMP_141 \def (pc3_t TMP_127 c TMP_133 TMP_140 u1 +H4) in (ex_intro2 T TMP_116 TMP_123 x H12 TMP_141)))))))))))))))))))))))) in +(ex2_ind T TMP_95 TMP_102 TMP_113 TMP_142 H11)))))))))))))) in (land_ind +TMP_75 TMP_78 TMP_89 TMP_143 H8)))))))))))))))) in (ex4_2_ind T T TMP_53 +TMP_59 TMP_60 TMP_63 TMP_74 TMP_144 H3)))))))))))))))))))))) in (TList_ind +TMP_9 TMP_45 TMP_145 vs)))))). theorem ty3_inv_lref_lref_nf2: \forall (g: G).(\forall (c: C).(\forall (i: nat).(\forall (j: nat).((ty3 g c @@ -283,19 +425,29 @@ j))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: (ty3 g c (TLRef i) (TLRef j))).(\lambda (H0: (nf2 c (TLRef i))).(\lambda -(H1: (nf2 c (TLRef j))).(let H_x \def (ty3_inv_lref_nf2 g c (TLRef j) i H H0 -H1) in (let H2 \def H_x in (ex_ind T (\lambda (u0: T).(eq T (TLRef j) (lift -(S i) O u0))) (lt i j) (\lambda (x: T).(\lambda (H3: (eq T (TLRef j) (lift (S -i) O x))).(let H_x0 \def (lift_gen_lref x O (S i) j H3) in (let H4 \def H_x0 -in (or_ind (land (lt j O) (eq T x (TLRef j))) (land (le (S i) j) (eq T x -(TLRef (minus j (S i))))) (lt i j) (\lambda (H5: (land (lt j O) (eq T x -(TLRef j)))).(land_ind (lt j O) (eq T x (TLRef j)) (lt i j) (\lambda (H6: (lt -j O)).(\lambda (_: (eq T x (TLRef j))).(lt_x_O j H6 (lt i j)))) H5)) (\lambda -(H5: (land (le (S i) j) (eq T x (TLRef (minus j (S i)))))).(land_ind (le (S -i) j) (eq T x (TLRef (minus j (S i)))) (lt i j) (\lambda (H6: (le (S i) -j)).(\lambda (_: (eq T x (TLRef (minus j (S i))))).H6)) H5)) H4))))) -H2))))))))). -(* COMMENTS -Initial nodes: 337 -END *) +(H1: (nf2 c (TLRef j))).(let TMP_1 \def (TLRef j) in (let H_x \def +(ty3_inv_lref_nf2 g c TMP_1 i H H0 H1) in (let H2 \def H_x in (let TMP_5 \def +(\lambda (u0: T).(let TMP_2 \def (TLRef j) in (let TMP_3 \def (S i) in (let +TMP_4 \def (lift TMP_3 O u0) in (eq T TMP_2 TMP_4))))) in (let TMP_6 \def (lt +i j) in (let TMP_36 \def (\lambda (x: T).(\lambda (H3: (eq T (TLRef j) (lift +(S i) O x))).(let TMP_7 \def (S i) in (let H_x0 \def (lift_gen_lref x O TMP_7 +j H3) in (let H4 \def H_x0 in (let TMP_8 \def (lt j O) in (let TMP_9 \def +(TLRef j) in (let TMP_10 \def (eq T x TMP_9) in (let TMP_11 \def (land TMP_8 +TMP_10) in (let TMP_12 \def (S i) in (let TMP_13 \def (le TMP_12 j) in (let +TMP_14 \def (S i) in (let TMP_15 \def (minus j TMP_14) in (let TMP_16 \def +(TLRef TMP_15) in (let TMP_17 \def (eq T x TMP_16) in (let TMP_18 \def (land +TMP_13 TMP_17) in (let TMP_19 \def (lt i j) in (let TMP_26 \def (\lambda (H5: +(land (lt j O) (eq T x (TLRef j)))).(let TMP_20 \def (lt j O) in (let TMP_21 +\def (TLRef j) in (let TMP_22 \def (eq T x TMP_21) in (let TMP_23 \def (lt i +j) in (let TMP_25 \def (\lambda (H6: (lt j O)).(\lambda (_: (eq T x (TLRef +j))).(let TMP_24 \def (lt i j) in (lt_x_O j H6 TMP_24)))) in (land_ind TMP_20 +TMP_22 TMP_23 TMP_25 H5))))))) in (let TMP_35 \def (\lambda (H5: (land (le (S +i) j) (eq T x (TLRef (minus j (S i)))))).(let TMP_27 \def (S i) in (let +TMP_28 \def (le TMP_27 j) in (let TMP_29 \def (S i) in (let TMP_30 \def +(minus j TMP_29) in (let TMP_31 \def (TLRef TMP_30) in (let TMP_32 \def (eq T +x TMP_31) in (let TMP_33 \def (lt i j) in (let TMP_34 \def (\lambda (H6: (le +(S i) j)).(\lambda (_: (eq T x (TLRef (minus j (S i))))).H6)) in (land_ind +TMP_28 TMP_32 TMP_33 TMP_34 H5)))))))))) in (or_ind TMP_11 TMP_18 TMP_19 +TMP_26 TMP_35 H4)))))))))))))))))))) in (ex_ind T TMP_5 TMP_6 TMP_36 +H2))))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/nf2.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/nf2.ma index 47b675663..5d968c502 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/nf2.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/nf2.ma @@ -14,11 +14,11 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/arity.ma". +include "basic_1/ty3/arity.ma". -include "Basic-1/pc3/nf2.ma". +include "basic_1/pc3/nf2.ma". -include "Basic-1/nf2/arity.ma". +include "basic_1/nf2/arity.ma". definition ty3_nf2_inv_abst_premise: C \to (T \to (T \to Prop)) @@ -35,11 +35,9 @@ theorem ty3_nf2_inv_abst_premise_csort: \lambda (w: T).(\lambda (u: T).(\lambda (m: nat).(\lambda (d: C).(\lambda (wi: T).(\lambda (i: nat).(\lambda (H: (getl i (CSort m) (CHead d (Bind Abst) wi))).(\lambda (vs: TList).(\lambda (_: (pc3 (CSort m) (THeads (Flat Appl) vs -(lift (S i) O wi)) (THead (Bind Abst) w u))).(getl_gen_sort m i (CHead d -(Bind Abst) wi) H False))))))))). -(* COMMENTS -Initial nodes: 85 -END *) +(lift (S i) O wi)) (THead (Bind Abst) w u))).(let TMP_1 \def (Bind Abst) in +(let TMP_2 \def (CHead d TMP_1 wi) in (getl_gen_sort m i TMP_2 H +False))))))))))). theorem ty3_nf2_inv_all: \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (u: T).((ty3 g c t @@ -53,19 +51,25 @@ TList).(\lambda (i: nat).(nf2 c (TLRef i))))))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (u: T).(\lambda (H: (ty3 g c t u)).(\lambda (H0: (nf2 c t)).(let H_x \def (ty3_arity g c t u H) -in (let H1 \def H_x in (ex2_ind A (\lambda (a1: A).(arity g c t a1)) (\lambda -(a1: A).(arity g c u (asucc g a1))) (or3 (ex3_2 T T (\lambda (w: T).(\lambda -(u0: T).(eq T t (THead (Bind Abst) w u0)))) (\lambda (w: T).(\lambda (_: -T).(nf2 c w))) (\lambda (w: T).(\lambda (u0: T).(nf2 (CHead c (Bind Abst) w) -u0)))) (ex nat (\lambda (n: nat).(eq T t (TSort n)))) (ex3_2 TList nat -(\lambda (ws: TList).(\lambda (i: nat).(eq T t (THeads (Flat Appl) ws (TLRef -i))))) (\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: -TList).(\lambda (i: nat).(nf2 c (TLRef i)))))) (\lambda (x: A).(\lambda (H2: +in (let H1 \def H_x in (let TMP_1 \def (\lambda (a1: A).(arity g c t a1)) in +(let TMP_3 \def (\lambda (a1: A).(let TMP_2 \def (asucc g a1) in (arity g c u +TMP_2))) in (let TMP_6 \def (\lambda (w: T).(\lambda (u0: T).(let TMP_4 \def +(Bind Abst) in (let TMP_5 \def (THead TMP_4 w u0) in (eq T t TMP_5))))) in +(let TMP_7 \def (\lambda (w: T).(\lambda (_: T).(nf2 c w))) in (let TMP_10 +\def (\lambda (w: T).(\lambda (u0: T).(let TMP_8 \def (Bind Abst) in (let +TMP_9 \def (CHead c TMP_8 w) in (nf2 TMP_9 u0))))) in (let TMP_11 \def (ex3_2 +T T TMP_6 TMP_7 TMP_10) in (let TMP_13 \def (\lambda (n: nat).(let TMP_12 +\def (TSort n) in (eq T t TMP_12))) in (let TMP_14 \def (ex nat TMP_13) in +(let TMP_18 \def (\lambda (ws: TList).(\lambda (i: nat).(let TMP_15 \def +(Flat Appl) in (let TMP_16 \def (TLRef i) in (let TMP_17 \def (THeads TMP_15 +ws TMP_16) in (eq T t TMP_17)))))) in (let TMP_19 \def (\lambda (ws: +TList).(\lambda (_: nat).(nfs2 c ws))) in (let TMP_21 \def (\lambda (_: +TList).(\lambda (i: nat).(let TMP_20 \def (TLRef i) in (nf2 c TMP_20)))) in +(let TMP_22 \def (ex3_2 TList nat TMP_18 TMP_19 TMP_21) in (let TMP_23 \def +(or3 TMP_11 TMP_14 TMP_22) in (let TMP_24 \def (\lambda (x: A).(\lambda (H2: (arity g c t x)).(\lambda (_: (arity g c u (asucc g x))).(arity_nf2_inv_all g -c t x H2 H0)))) H1)))))))). -(* COMMENTS -Initial nodes: 233 -END *) +c t x H2 H0)))) in (ex2_ind A TMP_1 TMP_3 TMP_23 TMP_24 +H1)))))))))))))))))))))). theorem ty3_nf2_inv_sort: \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (m: nat).((ty3 g c t @@ -76,111 +80,222 @@ TList).(\lambda (i: nat).(eq T t (THeads (Flat Appl) ws (TLRef i))))) TList).(\lambda (i: nat).(nf2 c (TLRef i))))))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (m: nat).(\lambda -(H: (ty3 g c t (TSort m))).(\lambda (H0: (nf2 c t)).(let H_x \def -(ty3_nf2_inv_all g c t (TSort m) H H0) in (let H1 \def H_x in (or3_ind (ex3_2 -T T (\lambda (w: T).(\lambda (u: T).(eq T t (THead (Bind Abst) w u)))) -(\lambda (w: T).(\lambda (_: T).(nf2 c w))) (\lambda (w: T).(\lambda (u: -T).(nf2 (CHead c (Bind Abst) w) u)))) (ex nat (\lambda (n: nat).(eq T t -(TSort n)))) (ex3_2 TList nat (\lambda (ws: TList).(\lambda (i: nat).(eq T t -(THeads (Flat Appl) ws (TLRef i))))) (\lambda (ws: TList).(\lambda (_: -nat).(nfs2 c ws))) (\lambda (_: TList).(\lambda (i: nat).(nf2 c (TLRef i))))) -(or (ex2 nat (\lambda (n: nat).(eq T t (TSort n))) (\lambda (n: nat).(eq nat -m (next g n)))) (ex3_2 TList nat (\lambda (ws: TList).(\lambda (i: nat).(eq T -t (THeads (Flat Appl) ws (TLRef i))))) (\lambda (ws: TList).(\lambda (_: -nat).(nfs2 c ws))) (\lambda (_: TList).(\lambda (i: nat).(nf2 c (TLRef -i)))))) (\lambda (H2: (ex3_2 T T (\lambda (w: T).(\lambda (u: T).(eq T t -(THead (Bind Abst) w u)))) (\lambda (w: T).(\lambda (_: T).(nf2 c w))) -(\lambda (w: T).(\lambda (u: T).(nf2 (CHead c (Bind Abst) w) -u))))).(ex3_2_ind T T (\lambda (w: T).(\lambda (u: T).(eq T t (THead (Bind -Abst) w u)))) (\lambda (w: T).(\lambda (_: T).(nf2 c w))) (\lambda (w: -T).(\lambda (u: T).(nf2 (CHead c (Bind Abst) w) u))) (or (ex2 nat (\lambda -(n: nat).(eq T t (TSort n))) (\lambda (n: nat).(eq nat m (next g n)))) (ex3_2 -TList nat (\lambda (ws: TList).(\lambda (i: nat).(eq T t (THeads (Flat Appl) -ws (TLRef i))))) (\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) -(\lambda (_: TList).(\lambda (i: nat).(nf2 c (TLRef i)))))) (\lambda (x0: -T).(\lambda (x1: T).(\lambda (H3: (eq T t (THead (Bind Abst) x0 -x1))).(\lambda (_: (nf2 c x0)).(\lambda (_: (nf2 (CHead c (Bind Abst) x0) -x1)).(let H6 \def (eq_ind T t (\lambda (t0: T).(ty3 g c t0 (TSort m))) H -(THead (Bind Abst) x0 x1) H3) in (eq_ind_r T (THead (Bind Abst) x0 x1) -(\lambda (t0: T).(or (ex2 nat (\lambda (n: nat).(eq T t0 (TSort n))) (\lambda -(n: nat).(eq nat m (next g n)))) (ex3_2 TList nat (\lambda (ws: -TList).(\lambda (i: nat).(eq T t0 (THeads (Flat Appl) ws (TLRef i))))) -(\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: -TList).(\lambda (i: nat).(nf2 c (TLRef i))))))) (ex3_2_ind T T (\lambda (t2: -T).(\lambda (_: T).(pc3 c (THead (Bind Abst) x0 t2) (TSort m)))) (\lambda (_: -T).(\lambda (t0: T).(ty3 g c x0 t0))) (\lambda (t2: T).(\lambda (_: T).(ty3 g -(CHead c (Bind Abst) x0) x1 t2))) (or (ex2 nat (\lambda (n: nat).(eq T (THead -(Bind Abst) x0 x1) (TSort n))) (\lambda (n: nat).(eq nat m (next g n)))) -(ex3_2 TList nat (\lambda (ws: TList).(\lambda (i: nat).(eq T (THead (Bind -Abst) x0 x1) (THeads (Flat Appl) ws (TLRef i))))) (\lambda (ws: -TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: TList).(\lambda (i: -nat).(nf2 c (TLRef i)))))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H7: +(H: (ty3 g c t (TSort m))).(\lambda (H0: (nf2 c t)).(let TMP_1 \def (TSort m) +in (let H_x \def (ty3_nf2_inv_all g c t TMP_1 H H0) in (let H1 \def H_x in +(let TMP_4 \def (\lambda (w: T).(\lambda (u: T).(let TMP_2 \def (Bind Abst) +in (let TMP_3 \def (THead TMP_2 w u) in (eq T t TMP_3))))) in (let TMP_5 \def +(\lambda (w: T).(\lambda (_: T).(nf2 c w))) in (let TMP_8 \def (\lambda (w: +T).(\lambda (u: T).(let TMP_6 \def (Bind Abst) in (let TMP_7 \def (CHead c +TMP_6 w) in (nf2 TMP_7 u))))) in (let TMP_9 \def (ex3_2 T T TMP_4 TMP_5 +TMP_8) in (let TMP_11 \def (\lambda (n: nat).(let TMP_10 \def (TSort n) in +(eq T t TMP_10))) in (let TMP_12 \def (ex nat TMP_11) in (let TMP_16 \def +(\lambda (ws: TList).(\lambda (i: nat).(let TMP_13 \def (Flat Appl) in (let +TMP_14 \def (TLRef i) in (let TMP_15 \def (THeads TMP_13 ws TMP_14) in (eq T +t TMP_15)))))) in (let TMP_17 \def (\lambda (ws: TList).(\lambda (_: +nat).(nfs2 c ws))) in (let TMP_19 \def (\lambda (_: TList).(\lambda (i: +nat).(let TMP_18 \def (TLRef i) in (nf2 c TMP_18)))) in (let TMP_20 \def +(ex3_2 TList nat TMP_16 TMP_17 TMP_19) in (let TMP_22 \def (\lambda (n: +nat).(let TMP_21 \def (TSort n) in (eq T t TMP_21))) in (let TMP_24 \def +(\lambda (n: nat).(let TMP_23 \def (next g n) in (eq nat m TMP_23))) in (let +TMP_25 \def (ex2 nat TMP_22 TMP_24) in (let TMP_29 \def (\lambda (ws: +TList).(\lambda (i: nat).(let TMP_26 \def (Flat Appl) in (let TMP_27 \def +(TLRef i) in (let TMP_28 \def (THeads TMP_26 ws TMP_27) in (eq T t +TMP_28)))))) in (let TMP_30 \def (\lambda (ws: TList).(\lambda (_: nat).(nfs2 +c ws))) in (let TMP_32 \def (\lambda (_: TList).(\lambda (i: nat).(let TMP_31 +\def (TLRef i) in (nf2 c TMP_31)))) in (let TMP_33 \def (ex3_2 TList nat +TMP_29 TMP_30 TMP_32) in (let TMP_34 \def (or TMP_25 TMP_33) in (let TMP_129 +\def (\lambda (H2: (ex3_2 T T (\lambda (w: T).(\lambda (u: T).(eq T t (THead +(Bind Abst) w u)))) (\lambda (w: T).(\lambda (_: T).(nf2 c w))) (\lambda (w: +T).(\lambda (u: T).(nf2 (CHead c (Bind Abst) w) u))))).(let TMP_37 \def +(\lambda (w: T).(\lambda (u: T).(let TMP_35 \def (Bind Abst) in (let TMP_36 +\def (THead TMP_35 w u) in (eq T t TMP_36))))) in (let TMP_38 \def (\lambda +(w: T).(\lambda (_: T).(nf2 c w))) in (let TMP_41 \def (\lambda (w: +T).(\lambda (u: T).(let TMP_39 \def (Bind Abst) in (let TMP_40 \def (CHead c +TMP_39 w) in (nf2 TMP_40 u))))) in (let TMP_43 \def (\lambda (n: nat).(let +TMP_42 \def (TSort n) in (eq T t TMP_42))) in (let TMP_45 \def (\lambda (n: +nat).(let TMP_44 \def (next g n) in (eq nat m TMP_44))) in (let TMP_46 \def +(ex2 nat TMP_43 TMP_45) in (let TMP_50 \def (\lambda (ws: TList).(\lambda (i: +nat).(let TMP_47 \def (Flat Appl) in (let TMP_48 \def (TLRef i) in (let +TMP_49 \def (THeads TMP_47 ws TMP_48) in (eq T t TMP_49)))))) in (let TMP_51 +\def (\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) in (let TMP_53 \def +(\lambda (_: TList).(\lambda (i: nat).(let TMP_52 \def (TLRef i) in (nf2 c +TMP_52)))) in (let TMP_54 \def (ex3_2 TList nat TMP_50 TMP_51 TMP_53) in (let +TMP_55 \def (or TMP_46 TMP_54) in (let TMP_128 \def (\lambda (x0: T).(\lambda +(x1: T).(\lambda (H3: (eq T t (THead (Bind Abst) x0 x1))).(\lambda (_: (nf2 c +x0)).(\lambda (_: (nf2 (CHead c (Bind Abst) x0) x1)).(let TMP_57 \def +(\lambda (t0: T).(let TMP_56 \def (TSort m) in (ty3 g c t0 TMP_56))) in (let +TMP_58 \def (Bind Abst) in (let TMP_59 \def (THead TMP_58 x0 x1) in (let H6 +\def (eq_ind T t TMP_57 H TMP_59 H3) in (let TMP_60 \def (Bind Abst) in (let +TMP_61 \def (THead TMP_60 x0 x1) in (let TMP_75 \def (\lambda (t0: T).(let +TMP_63 \def (\lambda (n: nat).(let TMP_62 \def (TSort n) in (eq T t0 +TMP_62))) in (let TMP_65 \def (\lambda (n: nat).(let TMP_64 \def (next g n) +in (eq nat m TMP_64))) in (let TMP_66 \def (ex2 nat TMP_63 TMP_65) in (let +TMP_70 \def (\lambda (ws: TList).(\lambda (i: nat).(let TMP_67 \def (Flat +Appl) in (let TMP_68 \def (TLRef i) in (let TMP_69 \def (THeads TMP_67 ws +TMP_68) in (eq T t0 TMP_69)))))) in (let TMP_71 \def (\lambda (ws: +TList).(\lambda (_: nat).(nfs2 c ws))) in (let TMP_73 \def (\lambda (_: +TList).(\lambda (i: nat).(let TMP_72 \def (TLRef i) in (nf2 c TMP_72)))) in +(let TMP_74 \def (ex3_2 TList nat TMP_70 TMP_71 TMP_73) in (or TMP_66 +TMP_74))))))))) in (let TMP_79 \def (\lambda (t2: T).(\lambda (_: T).(let +TMP_76 \def (Bind Abst) in (let TMP_77 \def (THead TMP_76 x0 t2) in (let +TMP_78 \def (TSort m) in (pc3 c TMP_77 TMP_78)))))) in (let TMP_80 \def +(\lambda (_: T).(\lambda (t0: T).(ty3 g c x0 t0))) in (let TMP_83 \def +(\lambda (t2: T).(\lambda (_: T).(let TMP_81 \def (Bind Abst) in (let TMP_82 +\def (CHead c TMP_81 x0) in (ty3 g TMP_82 x1 t2))))) in (let TMP_87 \def +(\lambda (n: nat).(let TMP_84 \def (Bind Abst) in (let TMP_85 \def (THead +TMP_84 x0 x1) in (let TMP_86 \def (TSort n) in (eq T TMP_85 TMP_86))))) in +(let TMP_89 \def (\lambda (n: nat).(let TMP_88 \def (next g n) in (eq nat m +TMP_88))) in (let TMP_90 \def (ex2 nat TMP_87 TMP_89) in (let TMP_96 \def +(\lambda (ws: TList).(\lambda (i: nat).(let TMP_91 \def (Bind Abst) in (let +TMP_92 \def (THead TMP_91 x0 x1) in (let TMP_93 \def (Flat Appl) in (let +TMP_94 \def (TLRef i) in (let TMP_95 \def (THeads TMP_93 ws TMP_94) in (eq T +TMP_92 TMP_95)))))))) in (let TMP_97 \def (\lambda (ws: TList).(\lambda (_: +nat).(nfs2 c ws))) in (let TMP_99 \def (\lambda (_: TList).(\lambda (i: +nat).(let TMP_98 \def (TLRef i) in (nf2 c TMP_98)))) in (let TMP_100 \def +(ex3_2 TList nat TMP_96 TMP_97 TMP_99) in (let TMP_101 \def (or TMP_90 +TMP_100) in (let TMP_124 \def (\lambda (x2: T).(\lambda (x3: T).(\lambda (H7: (pc3 c (THead (Bind Abst) x0 x2) (TSort m))).(\lambda (_: (ty3 g c x0 -x3)).(\lambda (_: (ty3 g (CHead c (Bind Abst) x0) x1 x2)).(pc3_gen_sort_abst -c x0 x2 m (pc3_s c (TSort m) (THead (Bind Abst) x0 x2) H7) (or (ex2 nat -(\lambda (n: nat).(eq T (THead (Bind Abst) x0 x1) (TSort n))) (\lambda (n: -nat).(eq nat m (next g n)))) (ex3_2 TList nat (\lambda (ws: TList).(\lambda -(i: nat).(eq T (THead (Bind Abst) x0 x1) (THeads (Flat Appl) ws (TLRef i))))) -(\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: -TList).(\lambda (i: nat).(nf2 c (TLRef i)))))))))))) (ty3_gen_bind g Abst c -x0 x1 (TSort m) H6)) t H3))))))) H2)) (\lambda (H2: (ex nat (\lambda (n: -nat).(eq T t (TSort n))))).(ex_ind nat (\lambda (n: nat).(eq T t (TSort n))) -(or (ex2 nat (\lambda (n: nat).(eq T t (TSort n))) (\lambda (n: nat).(eq nat -m (next g n)))) (ex3_2 TList nat (\lambda (ws: TList).(\lambda (i: nat).(eq T -t (THeads (Flat Appl) ws (TLRef i))))) (\lambda (ws: TList).(\lambda (_: -nat).(nfs2 c ws))) (\lambda (_: TList).(\lambda (i: nat).(nf2 c (TLRef -i)))))) (\lambda (x: nat).(\lambda (H3: (eq T t (TSort x))).(let H4 \def -(eq_ind T t (\lambda (t0: T).(ty3 g c t0 (TSort m))) H (TSort x) H3) in -(eq_ind_r T (TSort x) (\lambda (t0: T).(or (ex2 nat (\lambda (n: nat).(eq T -t0 (TSort n))) (\lambda (n: nat).(eq nat m (next g n)))) (ex3_2 TList nat -(\lambda (ws: TList).(\lambda (i: nat).(eq T t0 (THeads (Flat Appl) ws (TLRef -i))))) (\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: -TList).(\lambda (i: nat).(nf2 c (TLRef i))))))) (eq_ind nat (next g x) -(\lambda (n: nat).(or (ex2 nat (\lambda (n0: nat).(eq T (TSort x) (TSort -n0))) (\lambda (n0: nat).(eq nat n (next g n0)))) (ex3_2 TList nat (\lambda -(ws: TList).(\lambda (i: nat).(eq T (TSort x) (THeads (Flat Appl) ws (TLRef -i))))) (\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: -TList).(\lambda (i: nat).(nf2 c (TLRef i))))))) (or_introl (ex2 nat (\lambda -(n: nat).(eq T (TSort x) (TSort n))) (\lambda (n: nat).(eq nat (next g x) -(next g n)))) (ex3_2 TList nat (\lambda (ws: TList).(\lambda (i: nat).(eq T -(TSort x) (THeads (Flat Appl) ws (TLRef i))))) (\lambda (ws: TList).(\lambda -(_: nat).(nfs2 c ws))) (\lambda (_: TList).(\lambda (i: nat).(nf2 c (TLRef -i))))) (ex_intro2 nat (\lambda (n: nat).(eq T (TSort x) (TSort n))) (\lambda -(n: nat).(eq nat (next g x) (next g n))) x (refl_equal T (TSort x)) -(refl_equal nat (next g x)))) m (pc3_gen_sort c (next g x) m (ty3_gen_sort g -c (TSort m) x H4))) t H3)))) H2)) (\lambda (H2: (ex3_2 TList nat (\lambda -(ws: TList).(\lambda (i: nat).(eq T t (THeads (Flat Appl) ws (TLRef i))))) -(\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: -TList).(\lambda (i: nat).(nf2 c (TLRef i)))))).(ex3_2_ind TList nat (\lambda +x3)).(\lambda (_: (ty3 g (CHead c (Bind Abst) x0) x1 x2)).(let TMP_102 \def +(TSort m) in (let TMP_103 \def (Bind Abst) in (let TMP_104 \def (THead +TMP_103 x0 x2) in (let TMP_105 \def (pc3_s c TMP_102 TMP_104 H7) in (let +TMP_109 \def (\lambda (n: nat).(let TMP_106 \def (Bind Abst) in (let TMP_107 +\def (THead TMP_106 x0 x1) in (let TMP_108 \def (TSort n) in (eq T TMP_107 +TMP_108))))) in (let TMP_111 \def (\lambda (n: nat).(let TMP_110 \def (next g +n) in (eq nat m TMP_110))) in (let TMP_112 \def (ex2 nat TMP_109 TMP_111) in +(let TMP_118 \def (\lambda (ws: TList).(\lambda (i: nat).(let TMP_113 \def +(Bind Abst) in (let TMP_114 \def (THead TMP_113 x0 x1) in (let TMP_115 \def +(Flat Appl) in (let TMP_116 \def (TLRef i) in (let TMP_117 \def (THeads +TMP_115 ws TMP_116) in (eq T TMP_114 TMP_117)))))))) in (let TMP_119 \def +(\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) in (let TMP_121 \def +(\lambda (_: TList).(\lambda (i: nat).(let TMP_120 \def (TLRef i) in (nf2 c +TMP_120)))) in (let TMP_122 \def (ex3_2 TList nat TMP_118 TMP_119 TMP_121) in +(let TMP_123 \def (or TMP_112 TMP_122) in (pc3_gen_sort_abst c x0 x2 m +TMP_105 TMP_123)))))))))))))))))) in (let TMP_125 \def (TSort m) in (let +TMP_126 \def (ty3_gen_bind g Abst c x0 x1 TMP_125 H6) in (let TMP_127 \def +(ex3_2_ind T T TMP_79 TMP_80 TMP_83 TMP_101 TMP_124 TMP_126) in (eq_ind_r T +TMP_61 TMP_75 TMP_127 t H3)))))))))))))))))))))))))))) in (ex3_2_ind T T +TMP_37 TMP_38 TMP_41 TMP_55 TMP_128 H2)))))))))))))) in (let TMP_215 \def +(\lambda (H2: (ex nat (\lambda (n: nat).(eq T t (TSort n))))).(let TMP_131 +\def (\lambda (n: nat).(let TMP_130 \def (TSort n) in (eq T t TMP_130))) in +(let TMP_133 \def (\lambda (n: nat).(let TMP_132 \def (TSort n) in (eq T t +TMP_132))) in (let TMP_135 \def (\lambda (n: nat).(let TMP_134 \def (next g +n) in (eq nat m TMP_134))) in (let TMP_136 \def (ex2 nat TMP_133 TMP_135) in +(let TMP_140 \def (\lambda (ws: TList).(\lambda (i: nat).(let TMP_137 \def +(Flat Appl) in (let TMP_138 \def (TLRef i) in (let TMP_139 \def (THeads +TMP_137 ws TMP_138) in (eq T t TMP_139)))))) in (let TMP_141 \def (\lambda +(ws: TList).(\lambda (_: nat).(nfs2 c ws))) in (let TMP_143 \def (\lambda (_: +TList).(\lambda (i: nat).(let TMP_142 \def (TLRef i) in (nf2 c TMP_142)))) in +(let TMP_144 \def (ex3_2 TList nat TMP_140 TMP_141 TMP_143) in (let TMP_145 +\def (or TMP_136 TMP_144) in (let TMP_214 \def (\lambda (x: nat).(\lambda +(H3: (eq T t (TSort x))).(let TMP_147 \def (\lambda (t0: T).(let TMP_146 \def +(TSort m) in (ty3 g c t0 TMP_146))) in (let TMP_148 \def (TSort x) in (let H4 +\def (eq_ind T t TMP_147 H TMP_148 H3) in (let TMP_149 \def (TSort x) in (let +TMP_163 \def (\lambda (t0: T).(let TMP_151 \def (\lambda (n: nat).(let +TMP_150 \def (TSort n) in (eq T t0 TMP_150))) in (let TMP_153 \def (\lambda +(n: nat).(let TMP_152 \def (next g n) in (eq nat m TMP_152))) in (let TMP_154 +\def (ex2 nat TMP_151 TMP_153) in (let TMP_158 \def (\lambda (ws: +TList).(\lambda (i: nat).(let TMP_155 \def (Flat Appl) in (let TMP_156 \def +(TLRef i) in (let TMP_157 \def (THeads TMP_155 ws TMP_156) in (eq T t0 +TMP_157)))))) in (let TMP_159 \def (\lambda (ws: TList).(\lambda (_: +nat).(nfs2 c ws))) in (let TMP_161 \def (\lambda (_: TList).(\lambda (i: +nat).(let TMP_160 \def (TLRef i) in (nf2 c TMP_160)))) in (let TMP_162 \def +(ex3_2 TList nat TMP_158 TMP_159 TMP_161) in (or TMP_154 TMP_162))))))))) in +(let TMP_164 \def (next g x) in (let TMP_180 \def (\lambda (n: nat).(let +TMP_167 \def (\lambda (n0: nat).(let TMP_165 \def (TSort x) in (let TMP_166 +\def (TSort n0) in (eq T TMP_165 TMP_166)))) in (let TMP_169 \def (\lambda +(n0: nat).(let TMP_168 \def (next g n0) in (eq nat n TMP_168))) in (let +TMP_170 \def (ex2 nat TMP_167 TMP_169) in (let TMP_175 \def (\lambda (ws: +TList).(\lambda (i: nat).(let TMP_171 \def (TSort x) in (let TMP_172 \def +(Flat Appl) in (let TMP_173 \def (TLRef i) in (let TMP_174 \def (THeads +TMP_172 ws TMP_173) in (eq T TMP_171 TMP_174))))))) in (let TMP_176 \def +(\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) in (let TMP_178 \def +(\lambda (_: TList).(\lambda (i: nat).(let TMP_177 \def (TLRef i) in (nf2 c +TMP_177)))) in (let TMP_179 \def (ex3_2 TList nat TMP_175 TMP_176 TMP_178) in +(or TMP_170 TMP_179))))))))) in (let TMP_183 \def (\lambda (n: nat).(let +TMP_181 \def (TSort x) in (let TMP_182 \def (TSort n) in (eq T TMP_181 +TMP_182)))) in (let TMP_186 \def (\lambda (n: nat).(let TMP_184 \def (next g +x) in (let TMP_185 \def (next g n) in (eq nat TMP_184 TMP_185)))) in (let +TMP_187 \def (ex2 nat TMP_183 TMP_186) in (let TMP_192 \def (\lambda (ws: +TList).(\lambda (i: nat).(let TMP_188 \def (TSort x) in (let TMP_189 \def +(Flat Appl) in (let TMP_190 \def (TLRef i) in (let TMP_191 \def (THeads +TMP_189 ws TMP_190) in (eq T TMP_188 TMP_191))))))) in (let TMP_193 \def +(\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) in (let TMP_195 \def +(\lambda (_: TList).(\lambda (i: nat).(let TMP_194 \def (TLRef i) in (nf2 c +TMP_194)))) in (let TMP_196 \def (ex3_2 TList nat TMP_192 TMP_193 TMP_195) in +(let TMP_199 \def (\lambda (n: nat).(let TMP_197 \def (TSort x) in (let +TMP_198 \def (TSort n) in (eq T TMP_197 TMP_198)))) in (let TMP_202 \def +(\lambda (n: nat).(let TMP_200 \def (next g x) in (let TMP_201 \def (next g +n) in (eq nat TMP_200 TMP_201)))) in (let TMP_203 \def (TSort x) in (let +TMP_204 \def (refl_equal T TMP_203) in (let TMP_205 \def (next g x) in (let +TMP_206 \def (refl_equal nat TMP_205) in (let TMP_207 \def (ex_intro2 nat +TMP_199 TMP_202 x TMP_204 TMP_206) in (let TMP_208 \def (or_introl TMP_187 +TMP_196 TMP_207) in (let TMP_209 \def (next g x) in (let TMP_210 \def (TSort +m) in (let TMP_211 \def (ty3_gen_sort g c TMP_210 x H4) in (let TMP_212 \def +(pc3_gen_sort c TMP_209 m TMP_211) in (let TMP_213 \def (eq_ind nat TMP_164 +TMP_180 TMP_208 m TMP_212) in (eq_ind_r T TMP_149 TMP_163 TMP_213 t +H3)))))))))))))))))))))))))))))) in (ex_ind nat TMP_131 TMP_145 TMP_214 +H2)))))))))))) in (let TMP_295 \def (\lambda (H2: (ex3_2 TList nat (\lambda (ws: TList).(\lambda (i: nat).(eq T t (THeads (Flat Appl) ws (TLRef i))))) (\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: -TList).(\lambda (i: nat).(nf2 c (TLRef i)))) (or (ex2 nat (\lambda (n: -nat).(eq T t (TSort n))) (\lambda (n: nat).(eq nat m (next g n)))) (ex3_2 -TList nat (\lambda (ws: TList).(\lambda (i: nat).(eq T t (THeads (Flat Appl) -ws (TLRef i))))) (\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) -(\lambda (_: TList).(\lambda (i: nat).(nf2 c (TLRef i)))))) (\lambda (x0: -TList).(\lambda (x1: nat).(\lambda (H3: (eq T t (THeads (Flat Appl) x0 (TLRef -x1)))).(\lambda (H4: (nfs2 c x0)).(\lambda (H5: (nf2 c (TLRef x1))).(let H6 -\def (eq_ind T t (\lambda (t0: T).(ty3 g c t0 (TSort m))) H (THeads (Flat -Appl) x0 (TLRef x1)) H3) in (eq_ind_r T (THeads (Flat Appl) x0 (TLRef x1)) -(\lambda (t0: T).(or (ex2 nat (\lambda (n: nat).(eq T t0 (TSort n))) (\lambda -(n: nat).(eq nat m (next g n)))) (ex3_2 TList nat (\lambda (ws: -TList).(\lambda (i: nat).(eq T t0 (THeads (Flat Appl) ws (TLRef i))))) -(\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: -TList).(\lambda (i: nat).(nf2 c (TLRef i))))))) (or_intror (ex2 nat (\lambda -(n: nat).(eq T (THeads (Flat Appl) x0 (TLRef x1)) (TSort n))) (\lambda (n: -nat).(eq nat m (next g n)))) (ex3_2 TList nat (\lambda (ws: TList).(\lambda -(i: nat).(eq T (THeads (Flat Appl) x0 (TLRef x1)) (THeads (Flat Appl) ws -(TLRef i))))) (\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda -(_: TList).(\lambda (i: nat).(nf2 c (TLRef i))))) (ex3_2_intro TList nat -(\lambda (ws: TList).(\lambda (i: nat).(eq T (THeads (Flat Appl) x0 (TLRef -x1)) (THeads (Flat Appl) ws (TLRef i))))) (\lambda (ws: TList).(\lambda (_: -nat).(nfs2 c ws))) (\lambda (_: TList).(\lambda (i: nat).(nf2 c (TLRef i)))) -x0 x1 (refl_equal T (THeads (Flat Appl) x0 (TLRef x1))) H4 H5)) t H3))))))) -H2)) H1)))))))). -(* COMMENTS -Initial nodes: 2045 -END *) +TList).(\lambda (i: nat).(nf2 c (TLRef i)))))).(let TMP_219 \def (\lambda +(ws: TList).(\lambda (i: nat).(let TMP_216 \def (Flat Appl) in (let TMP_217 +\def (TLRef i) in (let TMP_218 \def (THeads TMP_216 ws TMP_217) in (eq T t +TMP_218)))))) in (let TMP_220 \def (\lambda (ws: TList).(\lambda (_: +nat).(nfs2 c ws))) in (let TMP_222 \def (\lambda (_: TList).(\lambda (i: +nat).(let TMP_221 \def (TLRef i) in (nf2 c TMP_221)))) in (let TMP_224 \def +(\lambda (n: nat).(let TMP_223 \def (TSort n) in (eq T t TMP_223))) in (let +TMP_226 \def (\lambda (n: nat).(let TMP_225 \def (next g n) in (eq nat m +TMP_225))) in (let TMP_227 \def (ex2 nat TMP_224 TMP_226) in (let TMP_231 +\def (\lambda (ws: TList).(\lambda (i: nat).(let TMP_228 \def (Flat Appl) in +(let TMP_229 \def (TLRef i) in (let TMP_230 \def (THeads TMP_228 ws TMP_229) +in (eq T t TMP_230)))))) in (let TMP_232 \def (\lambda (ws: TList).(\lambda +(_: nat).(nfs2 c ws))) in (let TMP_234 \def (\lambda (_: TList).(\lambda (i: +nat).(let TMP_233 \def (TLRef i) in (nf2 c TMP_233)))) in (let TMP_235 \def +(ex3_2 TList nat TMP_231 TMP_232 TMP_234) in (let TMP_236 \def (or TMP_227 +TMP_235) in (let TMP_294 \def (\lambda (x0: TList).(\lambda (x1: +nat).(\lambda (H3: (eq T t (THeads (Flat Appl) x0 (TLRef x1)))).(\lambda (H4: +(nfs2 c x0)).(\lambda (H5: (nf2 c (TLRef x1))).(let TMP_238 \def (\lambda +(t0: T).(let TMP_237 \def (TSort m) in (ty3 g c t0 TMP_237))) in (let TMP_239 +\def (Flat Appl) in (let TMP_240 \def (TLRef x1) in (let TMP_241 \def (THeads +TMP_239 x0 TMP_240) in (let H6 \def (eq_ind T t TMP_238 H TMP_241 H3) in (let +TMP_242 \def (Flat Appl) in (let TMP_243 \def (TLRef x1) in (let TMP_244 \def +(THeads TMP_242 x0 TMP_243) in (let TMP_258 \def (\lambda (t0: T).(let +TMP_246 \def (\lambda (n: nat).(let TMP_245 \def (TSort n) in (eq T t0 +TMP_245))) in (let TMP_248 \def (\lambda (n: nat).(let TMP_247 \def (next g +n) in (eq nat m TMP_247))) in (let TMP_249 \def (ex2 nat TMP_246 TMP_248) in +(let TMP_253 \def (\lambda (ws: TList).(\lambda (i: nat).(let TMP_250 \def +(Flat Appl) in (let TMP_251 \def (TLRef i) in (let TMP_252 \def (THeads +TMP_250 ws TMP_251) in (eq T t0 TMP_252)))))) in (let TMP_254 \def (\lambda +(ws: TList).(\lambda (_: nat).(nfs2 c ws))) in (let TMP_256 \def (\lambda (_: +TList).(\lambda (i: nat).(let TMP_255 \def (TLRef i) in (nf2 c TMP_255)))) in +(let TMP_257 \def (ex3_2 TList nat TMP_253 TMP_254 TMP_256) in (or TMP_249 +TMP_257))))))))) in (let TMP_263 \def (\lambda (n: nat).(let TMP_259 \def +(Flat Appl) in (let TMP_260 \def (TLRef x1) in (let TMP_261 \def (THeads +TMP_259 x0 TMP_260) in (let TMP_262 \def (TSort n) in (eq T TMP_261 +TMP_262)))))) in (let TMP_265 \def (\lambda (n: nat).(let TMP_264 \def (next +g n) in (eq nat m TMP_264))) in (let TMP_266 \def (ex2 nat TMP_263 TMP_265) +in (let TMP_273 \def (\lambda (ws: TList).(\lambda (i: nat).(let TMP_267 \def +(Flat Appl) in (let TMP_268 \def (TLRef x1) in (let TMP_269 \def (THeads +TMP_267 x0 TMP_268) in (let TMP_270 \def (Flat Appl) in (let TMP_271 \def +(TLRef i) in (let TMP_272 \def (THeads TMP_270 ws TMP_271) in (eq T TMP_269 +TMP_272))))))))) in (let TMP_274 \def (\lambda (ws: TList).(\lambda (_: +nat).(nfs2 c ws))) in (let TMP_276 \def (\lambda (_: TList).(\lambda (i: +nat).(let TMP_275 \def (TLRef i) in (nf2 c TMP_275)))) in (let TMP_277 \def +(ex3_2 TList nat TMP_273 TMP_274 TMP_276) in (let TMP_284 \def (\lambda (ws: +TList).(\lambda (i: nat).(let TMP_278 \def (Flat Appl) in (let TMP_279 \def +(TLRef x1) in (let TMP_280 \def (THeads TMP_278 x0 TMP_279) in (let TMP_281 +\def (Flat Appl) in (let TMP_282 \def (TLRef i) in (let TMP_283 \def (THeads +TMP_281 ws TMP_282) in (eq T TMP_280 TMP_283))))))))) in (let TMP_285 \def +(\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) in (let TMP_287 \def +(\lambda (_: TList).(\lambda (i: nat).(let TMP_286 \def (TLRef i) in (nf2 c +TMP_286)))) in (let TMP_288 \def (Flat Appl) in (let TMP_289 \def (TLRef x1) +in (let TMP_290 \def (THeads TMP_288 x0 TMP_289) in (let TMP_291 \def +(refl_equal T TMP_290) in (let TMP_292 \def (ex3_2_intro TList nat TMP_284 +TMP_285 TMP_287 x0 x1 TMP_291 H4 H5) in (let TMP_293 \def (or_intror TMP_266 +TMP_277 TMP_292) in (eq_ind_r T TMP_244 TMP_258 TMP_293 t +H3))))))))))))))))))))))))))))))) in (ex3_2_ind TList nat TMP_219 TMP_220 +TMP_222 TMP_236 TMP_294 H2)))))))))))))) in (or3_ind TMP_9 TMP_12 TMP_20 +TMP_34 TMP_129 TMP_215 TMP_295 H1)))))))))))))))))))))))))))))). theorem ty3_nf2_gen__ty3_nf2_inv_abst_aux: \forall (c: C).(\forall (w1: T).(\forall (u1: T).((ty3_nf2_inv_abst_premise @@ -196,14 +311,18 @@ T).(\lambda (u2: T).(\lambda (H0: (pc3 c (THead (Flat Appl) t (THead (Bind Abst) w2 u2)) (THead (Bind Abst) w1 u1))).(\lambda (d: C).(\lambda (wi: T).(\lambda (i: nat).(\lambda (H1: (getl i c (CHead d (Bind Abst) wi))).(\lambda (vs: TList).(\lambda (H2: (pc3 c (THeads (Flat Appl) vs (lift -(S i) O wi)) (THead (Bind Abst) w2 u2))).(H d wi i H1 (TCons t vs) (pc3_t -(THead (Flat Appl) t (THead (Bind Abst) w2 u2)) c (THead (Flat Appl) t -(THeads (Flat Appl) vs (lift (S i) O wi))) (pc3_thin_dx c (THeads (Flat Appl) -vs (lift (S i) O wi)) (THead (Bind Abst) w2 u2) H2 t Appl) (THead (Bind Abst) -w1 u1) H0))))))))))))))). -(* COMMENTS -Initial nodes: 271 -END *) +(S i) O wi)) (THead (Bind Abst) w2 u2))).(let TMP_1 \def (TCons t vs) in (let +TMP_2 \def (Flat Appl) in (let TMP_3 \def (Bind Abst) in (let TMP_4 \def +(THead TMP_3 w2 u2) in (let TMP_5 \def (THead TMP_2 t TMP_4) in (let TMP_6 +\def (Flat Appl) in (let TMP_7 \def (Flat Appl) in (let TMP_8 \def (S i) in +(let TMP_9 \def (lift TMP_8 O wi) in (let TMP_10 \def (THeads TMP_7 vs TMP_9) +in (let TMP_11 \def (THead TMP_6 t TMP_10) in (let TMP_12 \def (Flat Appl) in +(let TMP_13 \def (S i) in (let TMP_14 \def (lift TMP_13 O wi) in (let TMP_15 +\def (THeads TMP_12 vs TMP_14) in (let TMP_16 \def (Bind Abst) in (let TMP_17 +\def (THead TMP_16 w2 u2) in (let TMP_18 \def (pc3_thin_dx c TMP_15 TMP_17 H2 +t Appl) in (let TMP_19 \def (Bind Abst) in (let TMP_20 \def (THead TMP_19 w1 +u1) in (let TMP_21 \def (pc3_t TMP_5 c TMP_11 TMP_18 TMP_20 H0) in (H d wi i +H1 TMP_1 TMP_21))))))))))))))))))))))))))))))))))). theorem ty3_nf2_inv_abst: \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (w: T).(\forall (u: @@ -217,256 +336,475 @@ v)))))))))))) \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (w: T).(\lambda (u: T).(\lambda (H: (ty3 g c t (THead (Bind Abst) w u))).(\lambda (H0: (nf2 c t)).(\lambda (H1: (nf2 c w)).(\lambda (H2: (ty3_nf2_inv_abst_premise c w -u)).(let H_x \def (ty3_nf2_inv_all g c t (THead (Bind Abst) w u) H H0) in -(let H3 \def H_x in (or3_ind (ex3_2 T T (\lambda (w0: T).(\lambda (u0: T).(eq -T t (THead (Bind Abst) w0 u0)))) (\lambda (w0: T).(\lambda (_: T).(nf2 c -w0))) (\lambda (w0: T).(\lambda (u0: T).(nf2 (CHead c (Bind Abst) w0) u0)))) -(ex nat (\lambda (n: nat).(eq T t (TSort n)))) (ex3_2 TList nat (\lambda (ws: +u)).(let TMP_1 \def (Bind Abst) in (let TMP_2 \def (THead TMP_1 w u) in (let +H_x \def (ty3_nf2_inv_all g c t TMP_2 H H0) in (let H3 \def H_x in (let TMP_5 +\def (\lambda (w0: T).(\lambda (u0: T).(let TMP_3 \def (Bind Abst) in (let +TMP_4 \def (THead TMP_3 w0 u0) in (eq T t TMP_4))))) in (let TMP_6 \def +(\lambda (w0: T).(\lambda (_: T).(nf2 c w0))) in (let TMP_9 \def (\lambda +(w0: T).(\lambda (u0: T).(let TMP_7 \def (Bind Abst) in (let TMP_8 \def +(CHead c TMP_7 w0) in (nf2 TMP_8 u0))))) in (let TMP_10 \def (ex3_2 T T TMP_5 +TMP_6 TMP_9) in (let TMP_12 \def (\lambda (n: nat).(let TMP_11 \def (TSort n) +in (eq T t TMP_11))) in (let TMP_13 \def (ex nat TMP_12) in (let TMP_17 \def +(\lambda (ws: TList).(\lambda (i: nat).(let TMP_14 \def (Flat Appl) in (let +TMP_15 \def (TLRef i) in (let TMP_16 \def (THeads TMP_14 ws TMP_15) in (eq T +t TMP_16)))))) in (let TMP_18 \def (\lambda (ws: TList).(\lambda (_: +nat).(nfs2 c ws))) in (let TMP_20 \def (\lambda (_: TList).(\lambda (i: +nat).(let TMP_19 \def (TLRef i) in (nf2 c TMP_19)))) in (let TMP_21 \def +(ex3_2 TList nat TMP_17 TMP_18 TMP_20) in (let TMP_24 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_22 \def (Bind Abst) in (let TMP_23 \def (THead +TMP_22 w v) in (eq T t TMP_23))))) in (let TMP_25 \def (\lambda (_: +T).(\lambda (w0: T).(ty3 g c w w0))) in (let TMP_28 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_26 \def (Bind Abst) in (let TMP_27 \def (CHead c +TMP_26 w) in (ty3 g TMP_27 v u))))) in (let TMP_31 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_29 \def (Bind Abst) in (let TMP_30 \def (CHead c +TMP_29 w) in (nf2 TMP_30 v))))) in (let TMP_32 \def (ex4_2 T T TMP_24 TMP_25 +TMP_28 TMP_31) in (let TMP_199 \def (\lambda (H4: (ex3_2 T T (\lambda (w0: +T).(\lambda (u0: T).(eq T t (THead (Bind Abst) w0 u0)))) (\lambda (w0: +T).(\lambda (_: T).(nf2 c w0))) (\lambda (w0: T).(\lambda (u0: T).(nf2 (CHead +c (Bind Abst) w0) u0))))).(let TMP_35 \def (\lambda (w0: T).(\lambda (u0: +T).(let TMP_33 \def (Bind Abst) in (let TMP_34 \def (THead TMP_33 w0 u0) in +(eq T t TMP_34))))) in (let TMP_36 \def (\lambda (w0: T).(\lambda (_: T).(nf2 +c w0))) in (let TMP_39 \def (\lambda (w0: T).(\lambda (u0: T).(let TMP_37 +\def (Bind Abst) in (let TMP_38 \def (CHead c TMP_37 w0) in (nf2 TMP_38 +u0))))) in (let TMP_42 \def (\lambda (v: T).(\lambda (_: T).(let TMP_40 \def +(Bind Abst) in (let TMP_41 \def (THead TMP_40 w v) in (eq T t TMP_41))))) in +(let TMP_43 \def (\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) in (let +TMP_46 \def (\lambda (v: T).(\lambda (_: T).(let TMP_44 \def (Bind Abst) in +(let TMP_45 \def (CHead c TMP_44 w) in (ty3 g TMP_45 v u))))) in (let TMP_49 +\def (\lambda (v: T).(\lambda (_: T).(let TMP_47 \def (Bind Abst) in (let +TMP_48 \def (CHead c TMP_47 w) in (nf2 TMP_48 v))))) in (let TMP_50 \def +(ex4_2 T T TMP_42 TMP_43 TMP_46 TMP_49) in (let TMP_198 \def (\lambda (x0: +T).(\lambda (x1: T).(\lambda (H5: (eq T t (THead (Bind Abst) x0 +x1))).(\lambda (H6: (nf2 c x0)).(\lambda (H7: (nf2 (CHead c (Bind Abst) x0) +x1)).(let TMP_53 \def (\lambda (t0: T).(let TMP_51 \def (Bind Abst) in (let +TMP_52 \def (THead TMP_51 w u) in (ty3 g c t0 TMP_52)))) in (let TMP_54 \def +(Bind Abst) in (let TMP_55 \def (THead TMP_54 x0 x1) in (let H8 \def (eq_ind +T t TMP_53 H TMP_55 H5) in (let TMP_56 \def (Bind Abst) in (let TMP_57 \def +(THead TMP_56 x0 x1) in (let TMP_68 \def (\lambda (t0: T).(let TMP_60 \def +(\lambda (v: T).(\lambda (_: T).(let TMP_58 \def (Bind Abst) in (let TMP_59 +\def (THead TMP_58 w v) in (eq T t0 TMP_59))))) in (let TMP_61 \def (\lambda +(_: T).(\lambda (w0: T).(ty3 g c w w0))) in (let TMP_64 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_62 \def (Bind Abst) in (let TMP_63 \def (CHead c +TMP_62 w) in (ty3 g TMP_63 v u))))) in (let TMP_67 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_65 \def (Bind Abst) in (let TMP_66 \def (CHead c +TMP_65 w) in (nf2 TMP_66 v))))) in (ex4_2 T T TMP_60 TMP_61 TMP_64 +TMP_67)))))) in (let TMP_71 \def (\lambda (t0: T).(let TMP_69 \def (Bind +Abst) in (let TMP_70 \def (THead TMP_69 w u) in (ty3 g c TMP_70 t0)))) in +(let TMP_76 \def (\lambda (v: T).(\lambda (_: T).(let TMP_72 \def (Bind Abst) +in (let TMP_73 \def (THead TMP_72 x0 x1) in (let TMP_74 \def (Bind Abst) in +(let TMP_75 \def (THead TMP_74 w v) in (eq T TMP_73 TMP_75))))))) in (let +TMP_77 \def (\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) in (let TMP_80 +\def (\lambda (v: T).(\lambda (_: T).(let TMP_78 \def (Bind Abst) in (let +TMP_79 \def (CHead c TMP_78 w) in (ty3 g TMP_79 v u))))) in (let TMP_83 \def +(\lambda (v: T).(\lambda (_: T).(let TMP_81 \def (Bind Abst) in (let TMP_82 +\def (CHead c TMP_81 w) in (nf2 TMP_82 v))))) in (let TMP_84 \def (ex4_2 T T +TMP_76 TMP_77 TMP_80 TMP_83) in (let TMP_191 \def (\lambda (x: T).(\lambda +(H9: (ty3 g c (THead (Bind Abst) w u) x)).(let TMP_87 \def (\lambda (t2: +T).(\lambda (_: T).(let TMP_85 \def (Bind Abst) in (let TMP_86 \def (THead +TMP_85 w t2) in (pc3 c TMP_86 x))))) in (let TMP_88 \def (\lambda (_: +T).(\lambda (t0: T).(ty3 g c w t0))) in (let TMP_91 \def (\lambda (t2: +T).(\lambda (_: T).(let TMP_89 \def (Bind Abst) in (let TMP_90 \def (CHead c +TMP_89 w) in (ty3 g TMP_90 u t2))))) in (let TMP_96 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_92 \def (Bind Abst) in (let TMP_93 \def (THead +TMP_92 x0 x1) in (let TMP_94 \def (Bind Abst) in (let TMP_95 \def (THead +TMP_94 w v) in (eq T TMP_93 TMP_95))))))) in (let TMP_97 \def (\lambda (_: +T).(\lambda (w0: T).(ty3 g c w w0))) in (let TMP_100 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_98 \def (Bind Abst) in (let TMP_99 \def (CHead c +TMP_98 w) in (ty3 g TMP_99 v u))))) in (let TMP_103 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_101 \def (Bind Abst) in (let TMP_102 \def (CHead +c TMP_101 w) in (nf2 TMP_102 v))))) in (let TMP_104 \def (ex4_2 T T TMP_96 +TMP_97 TMP_100 TMP_103) in (let TMP_189 \def (\lambda (x2: T).(\lambda (x3: +T).(\lambda (_: (pc3 c (THead (Bind Abst) w x2) x)).(\lambda (H11: (ty3 g c w +x3)).(\lambda (H12: (ty3 g (CHead c (Bind Abst) w) u x2)).(let TMP_109 \def +(\lambda (t2: T).(\lambda (_: T).(let TMP_105 \def (Bind Abst) in (let +TMP_106 \def (THead TMP_105 x0 t2) in (let TMP_107 \def (Bind Abst) in (let +TMP_108 \def (THead TMP_107 w u) in (pc3 c TMP_106 TMP_108))))))) in (let +TMP_110 \def (\lambda (_: T).(\lambda (t0: T).(ty3 g c x0 t0))) in (let +TMP_113 \def (\lambda (t2: T).(\lambda (_: T).(let TMP_111 \def (Bind Abst) +in (let TMP_112 \def (CHead c TMP_111 x0) in (ty3 g TMP_112 x1 t2))))) in +(let TMP_118 \def (\lambda (v: T).(\lambda (_: T).(let TMP_114 \def (Bind +Abst) in (let TMP_115 \def (THead TMP_114 x0 x1) in (let TMP_116 \def (Bind +Abst) in (let TMP_117 \def (THead TMP_116 w v) in (eq T TMP_115 +TMP_117))))))) in (let TMP_119 \def (\lambda (_: T).(\lambda (w0: T).(ty3 g c +w w0))) in (let TMP_122 \def (\lambda (v: T).(\lambda (_: T).(let TMP_120 +\def (Bind Abst) in (let TMP_121 \def (CHead c TMP_120 w) in (ty3 g TMP_121 v +u))))) in (let TMP_125 \def (\lambda (v: T).(\lambda (_: T).(let TMP_123 \def +(Bind Abst) in (let TMP_124 \def (CHead c TMP_123 w) in (nf2 TMP_124 v))))) +in (let TMP_126 \def (ex4_2 T T TMP_118 TMP_119 TMP_122 TMP_125) in (let +TMP_185 \def (\lambda (x4: T).(\lambda (x5: T).(\lambda (H13: (pc3 c (THead +(Bind Abst) x0 x4) (THead (Bind Abst) w u))).(\lambda (_: (ty3 g c x0 +x5)).(\lambda (H15: (ty3 g (CHead c (Bind Abst) x0) x1 x4)).(let TMP_127 \def +(pc3 c x0 w) in (let TMP_130 \def (\forall (b: B).(\forall (u0: T).(let +TMP_128 \def (Bind b) in (let TMP_129 \def (CHead c TMP_128 u0) in (pc3 +TMP_129 x4 u))))) in (let TMP_135 \def (\lambda (v: T).(\lambda (_: T).(let +TMP_131 \def (Bind Abst) in (let TMP_132 \def (THead TMP_131 x0 x1) in (let +TMP_133 \def (Bind Abst) in (let TMP_134 \def (THead TMP_133 w v) in (eq T +TMP_132 TMP_134))))))) in (let TMP_136 \def (\lambda (_: T).(\lambda (w0: +T).(ty3 g c w w0))) in (let TMP_139 \def (\lambda (v: T).(\lambda (_: T).(let +TMP_137 \def (Bind Abst) in (let TMP_138 \def (CHead c TMP_137 w) in (ty3 g +TMP_138 v u))))) in (let TMP_142 \def (\lambda (v: T).(\lambda (_: T).(let +TMP_140 \def (Bind Abst) in (let TMP_141 \def (CHead c TMP_140 w) in (nf2 +TMP_141 v))))) in (let TMP_143 \def (ex4_2 T T TMP_135 TMP_136 TMP_139 +TMP_142) in (let TMP_183 \def (\lambda (H16: (pc3 c x0 w)).(\lambda (H17: +((\forall (b: B).(\forall (u0: T).(pc3 (CHead c (Bind b) u0) x4 u))))).(let +H_y \def (pc3_nf2 c x0 w H16 H6 H1) in (let TMP_146 \def (\lambda (t0: +T).(let TMP_144 \def (Bind Abst) in (let TMP_145 \def (CHead c TMP_144 t0) in +(ty3 g TMP_145 x1 x4)))) in (let H18 \def (eq_ind T x0 TMP_146 H15 w H_y) in +(let TMP_149 \def (\lambda (t0: T).(let TMP_147 \def (Bind Abst) in (let +TMP_148 \def (CHead c TMP_147 t0) in (nf2 TMP_148 x1)))) in (let H19 \def +(eq_ind T x0 TMP_149 H7 w H_y) in (let TMP_162 \def (\lambda (t0: T).(let +TMP_154 \def (\lambda (v: T).(\lambda (_: T).(let TMP_150 \def (Bind Abst) in +(let TMP_151 \def (THead TMP_150 t0 x1) in (let TMP_152 \def (Bind Abst) in +(let TMP_153 \def (THead TMP_152 w v) in (eq T TMP_151 TMP_153))))))) in (let +TMP_155 \def (\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) in (let +TMP_158 \def (\lambda (v: T).(\lambda (_: T).(let TMP_156 \def (Bind Abst) in +(let TMP_157 \def (CHead c TMP_156 w) in (ty3 g TMP_157 v u))))) in (let +TMP_161 \def (\lambda (v: T).(\lambda (_: T).(let TMP_159 \def (Bind Abst) in +(let TMP_160 \def (CHead c TMP_159 w) in (nf2 TMP_160 v))))) in (ex4_2 T T +TMP_154 TMP_155 TMP_158 TMP_161)))))) in (let TMP_167 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_163 \def (Bind Abst) in (let TMP_164 \def (THead +TMP_163 w x1) in (let TMP_165 \def (Bind Abst) in (let TMP_166 \def (THead +TMP_165 w v) in (eq T TMP_164 TMP_166))))))) in (let TMP_168 \def (\lambda +(_: T).(\lambda (w0: T).(ty3 g c w w0))) in (let TMP_171 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_169 \def (Bind Abst) in (let TMP_170 \def (CHead +c TMP_169 w) in (ty3 g TMP_170 v u))))) in (let TMP_174 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_172 \def (Bind Abst) in (let TMP_173 \def (CHead +c TMP_172 w) in (nf2 TMP_173 v))))) in (let TMP_175 \def (Bind Abst) in (let +TMP_176 \def (THead TMP_175 w x1) in (let TMP_177 \def (refl_equal T TMP_176) +in (let TMP_178 \def (Bind Abst) in (let TMP_179 \def (CHead c TMP_178 w) in +(let TMP_180 \def (H17 Abst w) in (let TMP_181 \def (ty3_conv g TMP_179 u x2 +H12 x1 x4 H18 TMP_180) in (let TMP_182 \def (ex4_2_intro T T TMP_167 TMP_168 +TMP_171 TMP_174 x1 x3 TMP_177 H11 TMP_181 H19) in (eq_ind_r T w TMP_162 +TMP_182 x0 H_y))))))))))))))))))))) in (let TMP_184 \def (pc3_gen_abst c x0 w +x4 u H13) in (land_ind TMP_127 TMP_130 TMP_143 TMP_183 TMP_184))))))))))))))) +in (let TMP_186 \def (Bind Abst) in (let TMP_187 \def (THead TMP_186 w u) in +(let TMP_188 \def (ty3_gen_bind g Abst c x0 x1 TMP_187 H8) in (ex3_2_ind T T +TMP_109 TMP_110 TMP_113 TMP_126 TMP_185 TMP_188)))))))))))))))))) in (let +TMP_190 \def (ty3_gen_bind g Abst c w u x H9) in (ex3_2_ind T T TMP_87 TMP_88 +TMP_91 TMP_104 TMP_189 TMP_190))))))))))))) in (let TMP_192 \def (Bind Abst) +in (let TMP_193 \def (THead TMP_192 x0 x1) in (let TMP_194 \def (Bind Abst) +in (let TMP_195 \def (THead TMP_194 w u) in (let TMP_196 \def (ty3_correct g +c TMP_193 TMP_195 H8) in (let TMP_197 \def (ex_ind T TMP_71 TMP_84 TMP_191 +TMP_196) in (eq_ind_r T TMP_57 TMP_68 TMP_197 t H5)))))))))))))))))))))))))) +in (ex3_2_ind T T TMP_35 TMP_36 TMP_39 TMP_50 TMP_198 H4))))))))))) in (let +TMP_247 \def (\lambda (H4: (ex nat (\lambda (n: nat).(eq T t (TSort +n))))).(let TMP_201 \def (\lambda (n: nat).(let TMP_200 \def (TSort n) in (eq +T t TMP_200))) in (let TMP_204 \def (\lambda (v: T).(\lambda (_: T).(let +TMP_202 \def (Bind Abst) in (let TMP_203 \def (THead TMP_202 w v) in (eq T t +TMP_203))))) in (let TMP_205 \def (\lambda (_: T).(\lambda (w0: T).(ty3 g c w +w0))) in (let TMP_208 \def (\lambda (v: T).(\lambda (_: T).(let TMP_206 \def +(Bind Abst) in (let TMP_207 \def (CHead c TMP_206 w) in (ty3 g TMP_207 v +u))))) in (let TMP_211 \def (\lambda (v: T).(\lambda (_: T).(let TMP_209 \def +(Bind Abst) in (let TMP_210 \def (CHead c TMP_209 w) in (nf2 TMP_210 v))))) +in (let TMP_212 \def (ex4_2 T T TMP_204 TMP_205 TMP_208 TMP_211) in (let +TMP_246 \def (\lambda (x: nat).(\lambda (H5: (eq T t (TSort x))).(let TMP_215 +\def (\lambda (t0: T).(let TMP_213 \def (Bind Abst) in (let TMP_214 \def +(THead TMP_213 w u) in (ty3 g c t0 TMP_214)))) in (let TMP_216 \def (TSort x) +in (let H6 \def (eq_ind T t TMP_215 H TMP_216 H5) in (let TMP_217 \def (TSort +x) in (let TMP_228 \def (\lambda (t0: T).(let TMP_220 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_218 \def (Bind Abst) in (let TMP_219 \def (THead +TMP_218 w v) in (eq T t0 TMP_219))))) in (let TMP_221 \def (\lambda (_: +T).(\lambda (w0: T).(ty3 g c w w0))) in (let TMP_224 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_222 \def (Bind Abst) in (let TMP_223 \def (CHead +c TMP_222 w) in (ty3 g TMP_223 v u))))) in (let TMP_227 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_225 \def (Bind Abst) in (let TMP_226 \def (CHead +c TMP_225 w) in (nf2 TMP_226 v))))) in (ex4_2 T T TMP_220 TMP_221 TMP_224 +TMP_227)))))) in (let TMP_229 \def (next g x) in (let TMP_230 \def (Bind +Abst) in (let TMP_231 \def (THead TMP_230 w u) in (let TMP_232 \def +(ty3_gen_sort g c TMP_231 x H6) in (let TMP_236 \def (\lambda (v: T).(\lambda +(_: T).(let TMP_233 \def (TSort x) in (let TMP_234 \def (Bind Abst) in (let +TMP_235 \def (THead TMP_234 w v) in (eq T TMP_233 TMP_235)))))) in (let +TMP_237 \def (\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) in (let +TMP_240 \def (\lambda (v: T).(\lambda (_: T).(let TMP_238 \def (Bind Abst) in +(let TMP_239 \def (CHead c TMP_238 w) in (ty3 g TMP_239 v u))))) in (let +TMP_243 \def (\lambda (v: T).(\lambda (_: T).(let TMP_241 \def (Bind Abst) in +(let TMP_242 \def (CHead c TMP_241 w) in (nf2 TMP_242 v))))) in (let TMP_244 +\def (ex4_2 T T TMP_236 TMP_237 TMP_240 TMP_243) in (let TMP_245 \def +(pc3_gen_sort_abst c w u TMP_229 TMP_232 TMP_244) in (eq_ind_r T TMP_217 +TMP_228 TMP_245 t H5)))))))))))))))))) in (ex_ind nat TMP_201 TMP_212 TMP_246 +H4))))))))) in (let TMP_570 \def (\lambda (H4: (ex3_2 TList nat (\lambda (ws: TList).(\lambda (i: nat).(eq T t (THeads (Flat Appl) ws (TLRef i))))) (\lambda (ws: TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: -TList).(\lambda (i: nat).(nf2 c (TLRef i))))) (ex4_2 T T (\lambda (v: -T).(\lambda (_: T).(eq T t (THead (Bind Abst) w v)))) (\lambda (_: -T).(\lambda (w0: T).(ty3 g c w w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g -(CHead c (Bind Abst) w) v u))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c -(Bind Abst) w) v)))) (\lambda (H4: (ex3_2 T T (\lambda (w0: T).(\lambda (u0: -T).(eq T t (THead (Bind Abst) w0 u0)))) (\lambda (w0: T).(\lambda (_: T).(nf2 -c w0))) (\lambda (w0: T).(\lambda (u0: T).(nf2 (CHead c (Bind Abst) w0) -u0))))).(ex3_2_ind T T (\lambda (w0: T).(\lambda (u0: T).(eq T t (THead (Bind -Abst) w0 u0)))) (\lambda (w0: T).(\lambda (_: T).(nf2 c w0))) (\lambda (w0: -T).(\lambda (u0: T).(nf2 (CHead c (Bind Abst) w0) u0))) (ex4_2 T T (\lambda -(v: T).(\lambda (_: T).(eq T t (THead (Bind Abst) w v)))) (\lambda (_: -T).(\lambda (w0: T).(ty3 g c w w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g -(CHead c (Bind Abst) w) v u))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c -(Bind Abst) w) v)))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H5: (eq T t -(THead (Bind Abst) x0 x1))).(\lambda (H6: (nf2 c x0)).(\lambda (H7: (nf2 -(CHead c (Bind Abst) x0) x1)).(let H8 \def (eq_ind T t (\lambda (t0: T).(ty3 -g c t0 (THead (Bind Abst) w u))) H (THead (Bind Abst) x0 x1) H5) in (eq_ind_r -T (THead (Bind Abst) x0 x1) (\lambda (t0: T).(ex4_2 T T (\lambda (v: -T).(\lambda (_: T).(eq T t0 (THead (Bind Abst) w v)))) (\lambda (_: -T).(\lambda (w0: T).(ty3 g c w w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g -(CHead c (Bind Abst) w) v u))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c -(Bind Abst) w) v))))) (ex_ind T (\lambda (t0: T).(ty3 g c (THead (Bind Abst) -w u) t0)) (ex4_2 T T (\lambda (v: T).(\lambda (_: T).(eq T (THead (Bind Abst) -x0 x1) (THead (Bind Abst) w v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c w -w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) w) v u))) -(\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) w) v)))) (\lambda -(x: T).(\lambda (H9: (ty3 g c (THead (Bind Abst) w u) x)).(ex3_2_ind T T -(\lambda (t2: T).(\lambda (_: T).(pc3 c (THead (Bind Abst) w t2) x))) -(\lambda (_: T).(\lambda (t0: T).(ty3 g c w t0))) (\lambda (t2: T).(\lambda -(_: T).(ty3 g (CHead c (Bind Abst) w) u t2))) (ex4_2 T T (\lambda (v: -T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) (THead (Bind Abst) w v)))) -(\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) (\lambda (v: T).(\lambda -(_: T).(ty3 g (CHead c (Bind Abst) w) v u))) (\lambda (v: T).(\lambda (_: -T).(nf2 (CHead c (Bind Abst) w) v)))) (\lambda (x2: T).(\lambda (x3: -T).(\lambda (_: (pc3 c (THead (Bind Abst) w x2) x)).(\lambda (H11: (ty3 g c w -x3)).(\lambda (H12: (ty3 g (CHead c (Bind Abst) w) u x2)).(ex3_2_ind T T -(\lambda (t2: T).(\lambda (_: T).(pc3 c (THead (Bind Abst) x0 t2) (THead -(Bind Abst) w u)))) (\lambda (_: T).(\lambda (t0: T).(ty3 g c x0 t0))) -(\lambda (t2: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) x0) x1 t2))) -(ex4_2 T T (\lambda (v: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) -(THead (Bind Abst) w v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) -(\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) w) v u))) -(\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) w) v)))) (\lambda -(x4: T).(\lambda (x5: T).(\lambda (H13: (pc3 c (THead (Bind Abst) x0 x4) -(THead (Bind Abst) w u))).(\lambda (_: (ty3 g c x0 x5)).(\lambda (H15: (ty3 g -(CHead c (Bind Abst) x0) x1 x4)).(land_ind (pc3 c x0 w) (\forall (b: -B).(\forall (u0: T).(pc3 (CHead c (Bind b) u0) x4 u))) (ex4_2 T T (\lambda -(v: T).(\lambda (_: T).(eq T (THead (Bind Abst) x0 x1) (THead (Bind Abst) w -v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) (\lambda (v: -T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) w) v u))) (\lambda (v: -T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) w) v)))) (\lambda (H16: (pc3 c -x0 w)).(\lambda (H17: ((\forall (b: B).(\forall (u0: T).(pc3 (CHead c (Bind -b) u0) x4 u))))).(let H_y \def (pc3_nf2 c x0 w H16 H6 H1) in (let H18 \def -(eq_ind T x0 (\lambda (t0: T).(ty3 g (CHead c (Bind Abst) t0) x1 x4)) H15 w -H_y) in (let H19 \def (eq_ind T x0 (\lambda (t0: T).(nf2 (CHead c (Bind Abst) -t0) x1)) H7 w H_y) in (eq_ind_r T w (\lambda (t0: T).(ex4_2 T T (\lambda (v: -T).(\lambda (_: T).(eq T (THead (Bind Abst) t0 x1) (THead (Bind Abst) w v)))) -(\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) (\lambda (v: T).(\lambda -(_: T).(ty3 g (CHead c (Bind Abst) w) v u))) (\lambda (v: T).(\lambda (_: -T).(nf2 (CHead c (Bind Abst) w) v))))) (ex4_2_intro T T (\lambda (v: -T).(\lambda (_: T).(eq T (THead (Bind Abst) w x1) (THead (Bind Abst) w v)))) -(\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) (\lambda (v: T).(\lambda -(_: T).(ty3 g (CHead c (Bind Abst) w) v u))) (\lambda (v: T).(\lambda (_: -T).(nf2 (CHead c (Bind Abst) w) v))) x1 x3 (refl_equal T (THead (Bind Abst) w -x1)) H11 (ty3_conv g (CHead c (Bind Abst) w) u x2 H12 x1 x4 H18 (H17 Abst w)) -H19) x0 H_y)))))) (pc3_gen_abst c x0 w x4 u H13))))))) (ty3_gen_bind g Abst c -x0 x1 (THead (Bind Abst) w u) H8))))))) (ty3_gen_bind g Abst c w u x H9)))) -(ty3_correct g c (THead (Bind Abst) x0 x1) (THead (Bind Abst) w u) H8)) t -H5))))))) H4)) (\lambda (H4: (ex nat (\lambda (n: nat).(eq T t (TSort -n))))).(ex_ind nat (\lambda (n: nat).(eq T t (TSort n))) (ex4_2 T T (\lambda -(v: T).(\lambda (_: T).(eq T t (THead (Bind Abst) w v)))) (\lambda (_: -T).(\lambda (w0: T).(ty3 g c w w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g -(CHead c (Bind Abst) w) v u))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c -(Bind Abst) w) v)))) (\lambda (x: nat).(\lambda (H5: (eq T t (TSort x))).(let -H6 \def (eq_ind T t (\lambda (t0: T).(ty3 g c t0 (THead (Bind Abst) w u))) H -(TSort x) H5) in (eq_ind_r T (TSort x) (\lambda (t0: T).(ex4_2 T T (\lambda -(v: T).(\lambda (_: T).(eq T t0 (THead (Bind Abst) w v)))) (\lambda (_: -T).(\lambda (w0: T).(ty3 g c w w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g -(CHead c (Bind Abst) w) v u))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c -(Bind Abst) w) v))))) (pc3_gen_sort_abst c w u (next g x) (ty3_gen_sort g c -(THead (Bind Abst) w u) x H6) (ex4_2 T T (\lambda (v: T).(\lambda (_: T).(eq -T (TSort x) (THead (Bind Abst) w v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 -g c w w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) w) v -u))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) w) v))))) t -H5)))) H4)) (\lambda (H4: (ex3_2 TList nat (\lambda (ws: TList).(\lambda (i: -nat).(eq T t (THeads (Flat Appl) ws (TLRef i))))) (\lambda (ws: -TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: TList).(\lambda (i: -nat).(nf2 c (TLRef i)))))).(ex3_2_ind TList nat (\lambda (ws: TList).(\lambda -(i: nat).(eq T t (THeads (Flat Appl) ws (TLRef i))))) (\lambda (ws: -TList).(\lambda (_: nat).(nfs2 c ws))) (\lambda (_: TList).(\lambda (i: -nat).(nf2 c (TLRef i)))) (ex4_2 T T (\lambda (v: T).(\lambda (_: T).(eq T t -(THead (Bind Abst) w v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) -(\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) w) v u))) -(\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) w) v)))) (\lambda -(x0: TList).(\lambda (x1: nat).(\lambda (H5: (eq T t (THeads (Flat Appl) x0 -(TLRef x1)))).(\lambda (_: (nfs2 c x0)).(\lambda (H7: (nf2 c (TLRef -x1))).(let H8 \def (eq_ind T t (\lambda (t0: T).(ty3 g c t0 (THead (Bind -Abst) w u))) H (THeads (Flat Appl) x0 (TLRef x1)) H5) in (eq_ind_r T (THeads -(Flat Appl) x0 (TLRef x1)) (\lambda (t0: T).(ex4_2 T T (\lambda (v: -T).(\lambda (_: T).(eq T t0 (THead (Bind Abst) w v)))) (\lambda (_: -T).(\lambda (w0: T).(ty3 g c w w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g -(CHead c (Bind Abst) w) v u))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c -(Bind Abst) w) v))))) (let H9 \def H2 in ((let H10 \def H8 in (unintro T u -(\lambda (t0: T).((ty3 g c (THeads (Flat Appl) x0 (TLRef x1)) (THead (Bind -Abst) w t0)) \to ((ty3_nf2_inv_abst_premise c w t0) \to (ex4_2 T T (\lambda -(v: T).(\lambda (_: T).(eq T (THeads (Flat Appl) x0 (TLRef x1)) (THead (Bind -Abst) w v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) (\lambda (v: -T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) w) v t0))) (\lambda (v: -T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) w) v))))))) (unintro T w -(\lambda (t0: T).(\forall (x: T).((ty3 g c (THeads (Flat Appl) x0 (TLRef x1)) -(THead (Bind Abst) t0 x)) \to ((ty3_nf2_inv_abst_premise c t0 x) \to (ex4_2 T -T (\lambda (v: T).(\lambda (_: T).(eq T (THeads (Flat Appl) x0 (TLRef x1)) -(THead (Bind Abst) t0 v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c t0 -w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) t0) v x))) -(\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) t0) v)))))))) -(TList_ind (\lambda (t0: TList).(\forall (x: T).(\forall (x2: T).((ty3 g c -(THeads (Flat Appl) t0 (TLRef x1)) (THead (Bind Abst) x x2)) \to -((ty3_nf2_inv_abst_premise c x x2) \to (ex4_2 T T (\lambda (v: T).(\lambda -(_: T).(eq T (THeads (Flat Appl) t0 (TLRef x1)) (THead (Bind Abst) x v)))) -(\lambda (_: T).(\lambda (w0: T).(ty3 g c x w0))) (\lambda (v: T).(\lambda -(_: T).(ty3 g (CHead c (Bind Abst) x) v x2))) (\lambda (v: T).(\lambda (_: -T).(nf2 (CHead c (Bind Abst) x) v))))))))) (\lambda (x: T).(\lambda (x2: -T).(\lambda (H11: (ty3 g c (TLRef x1) (THead (Bind Abst) x x2))).(\lambda -(H12: (ty3_nf2_inv_abst_premise c x x2)).(or_ind (ex3_3 C T T (\lambda (_: -C).(\lambda (_: T).(\lambda (t0: T).(pc3 c (lift (S x1) O t0) (THead (Bind -Abst) x x2))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl x1 c -(CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: -T).(ty3 g e u0 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda -(_: T).(pc3 c (lift (S x1) O u0) (THead (Bind Abst) x x2))))) (\lambda (e: -C).(\lambda (u0: T).(\lambda (_: T).(getl x1 c (CHead e (Bind Abst) u0))))) -(\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0))))) (ex4_2 -T T (\lambda (v: T).(\lambda (_: T).(eq T (TLRef x1) (THead (Bind Abst) x -v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c x w0))) (\lambda (v: -T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) x) v x2))) (\lambda (v: -T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) x) v)))) (\lambda (H13: (ex3_3 C -T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c (lift (S x1) O -t0) (THead (Bind Abst) x x2))))) (\lambda (e: C).(\lambda (u0: T).(\lambda -(_: T).(getl x1 c (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: -T).(\lambda (t0: T).(ty3 g e u0 t0)))))).(ex3_3_ind C T T (\lambda (_: +TList).(\lambda (i: nat).(nf2 c (TLRef i)))))).(let TMP_251 \def (\lambda +(ws: TList).(\lambda (i: nat).(let TMP_248 \def (Flat Appl) in (let TMP_249 +\def (TLRef i) in (let TMP_250 \def (THeads TMP_248 ws TMP_249) in (eq T t +TMP_250)))))) in (let TMP_252 \def (\lambda (ws: TList).(\lambda (_: +nat).(nfs2 c ws))) in (let TMP_254 \def (\lambda (_: TList).(\lambda (i: +nat).(let TMP_253 \def (TLRef i) in (nf2 c TMP_253)))) in (let TMP_257 \def +(\lambda (v: T).(\lambda (_: T).(let TMP_255 \def (Bind Abst) in (let TMP_256 +\def (THead TMP_255 w v) in (eq T t TMP_256))))) in (let TMP_258 \def +(\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) in (let TMP_261 \def +(\lambda (v: T).(\lambda (_: T).(let TMP_259 \def (Bind Abst) in (let TMP_260 +\def (CHead c TMP_259 w) in (ty3 g TMP_260 v u))))) in (let TMP_264 \def +(\lambda (v: T).(\lambda (_: T).(let TMP_262 \def (Bind Abst) in (let TMP_263 +\def (CHead c TMP_262 w) in (nf2 TMP_263 v))))) in (let TMP_265 \def (ex4_2 T +T TMP_257 TMP_258 TMP_261 TMP_264) in (let TMP_569 \def (\lambda (x0: +TList).(\lambda (x1: nat).(\lambda (H5: (eq T t (THeads (Flat Appl) x0 (TLRef +x1)))).(\lambda (_: (nfs2 c x0)).(\lambda (H7: (nf2 c (TLRef x1))).(let +TMP_268 \def (\lambda (t0: T).(let TMP_266 \def (Bind Abst) in (let TMP_267 +\def (THead TMP_266 w u) in (ty3 g c t0 TMP_267)))) in (let TMP_269 \def +(Flat Appl) in (let TMP_270 \def (TLRef x1) in (let TMP_271 \def (THeads +TMP_269 x0 TMP_270) in (let H8 \def (eq_ind T t TMP_268 H TMP_271 H5) in (let +TMP_272 \def (Flat Appl) in (let TMP_273 \def (TLRef x1) in (let TMP_274 \def +(THeads TMP_272 x0 TMP_273) in (let TMP_285 \def (\lambda (t0: T).(let +TMP_277 \def (\lambda (v: T).(\lambda (_: T).(let TMP_275 \def (Bind Abst) in +(let TMP_276 \def (THead TMP_275 w v) in (eq T t0 TMP_276))))) in (let +TMP_278 \def (\lambda (_: T).(\lambda (w0: T).(ty3 g c w w0))) in (let +TMP_281 \def (\lambda (v: T).(\lambda (_: T).(let TMP_279 \def (Bind Abst) in +(let TMP_280 \def (CHead c TMP_279 w) in (ty3 g TMP_280 v u))))) in (let +TMP_284 \def (\lambda (v: T).(\lambda (_: T).(let TMP_282 \def (Bind Abst) in +(let TMP_283 \def (CHead c TMP_282 w) in (nf2 TMP_283 v))))) in (ex4_2 T T +TMP_277 TMP_278 TMP_281 TMP_284)))))) in (let H9 \def H2 in (let H10 \def H8 +in (let TMP_299 \def (\lambda (t0: T).((ty3 g c (THeads (Flat Appl) x0 (TLRef +x1)) (THead (Bind Abst) w t0)) \to ((ty3_nf2_inv_abst_premise c w t0) \to +(let TMP_291 \def (\lambda (v: T).(\lambda (_: T).(let TMP_286 \def (Flat +Appl) in (let TMP_287 \def (TLRef x1) in (let TMP_288 \def (THeads TMP_286 x0 +TMP_287) in (let TMP_289 \def (Bind Abst) in (let TMP_290 \def (THead TMP_289 +w v) in (eq T TMP_288 TMP_290)))))))) in (let TMP_292 \def (\lambda (_: +T).(\lambda (w0: T).(ty3 g c w w0))) in (let TMP_295 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_293 \def (Bind Abst) in (let TMP_294 \def (CHead +c TMP_293 w) in (ty3 g TMP_294 v t0))))) in (let TMP_298 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_296 \def (Bind Abst) in (let TMP_297 \def (CHead +c TMP_296 w) in (nf2 TMP_297 v))))) in (ex4_2 T T TMP_291 TMP_292 TMP_295 +TMP_298)))))))) in (let TMP_313 \def (\lambda (t0: T).(\forall (x: T).((ty3 g +c (THeads (Flat Appl) x0 (TLRef x1)) (THead (Bind Abst) t0 x)) \to +((ty3_nf2_inv_abst_premise c t0 x) \to (let TMP_305 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_300 \def (Flat Appl) in (let TMP_301 \def (TLRef +x1) in (let TMP_302 \def (THeads TMP_300 x0 TMP_301) in (let TMP_303 \def +(Bind Abst) in (let TMP_304 \def (THead TMP_303 t0 v) in (eq T TMP_302 +TMP_304)))))))) in (let TMP_306 \def (\lambda (_: T).(\lambda (w0: T).(ty3 g +c t0 w0))) in (let TMP_309 \def (\lambda (v: T).(\lambda (_: T).(let TMP_307 +\def (Bind Abst) in (let TMP_308 \def (CHead c TMP_307 t0) in (ty3 g TMP_308 +v x))))) in (let TMP_312 \def (\lambda (v: T).(\lambda (_: T).(let TMP_310 +\def (Bind Abst) in (let TMP_311 \def (CHead c TMP_310 t0) in (nf2 TMP_311 +v))))) in (ex4_2 T T TMP_305 TMP_306 TMP_309 TMP_312))))))))) in (let TMP_327 +\def (\lambda (t0: TList).(\forall (x: T).(\forall (x2: T).((ty3 g c (THeads +(Flat Appl) t0 (TLRef x1)) (THead (Bind Abst) x x2)) \to +((ty3_nf2_inv_abst_premise c x x2) \to (let TMP_319 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_314 \def (Flat Appl) in (let TMP_315 \def (TLRef +x1) in (let TMP_316 \def (THeads TMP_314 t0 TMP_315) in (let TMP_317 \def +(Bind Abst) in (let TMP_318 \def (THead TMP_317 x v) in (eq T TMP_316 +TMP_318)))))))) in (let TMP_320 \def (\lambda (_: T).(\lambda (w0: T).(ty3 g +c x w0))) in (let TMP_323 \def (\lambda (v: T).(\lambda (_: T).(let TMP_321 +\def (Bind Abst) in (let TMP_322 \def (CHead c TMP_321 x) in (ty3 g TMP_322 v +x2))))) in (let TMP_326 \def (\lambda (v: T).(\lambda (_: T).(let TMP_324 +\def (Bind Abst) in (let TMP_325 \def (CHead c TMP_324 x) in (nf2 TMP_325 +v))))) in (ex4_2 T T TMP_319 TMP_320 TMP_323 TMP_326)))))))))) in (let +TMP_433 \def (\lambda (x: T).(\lambda (x2: T).(\lambda (H11: (ty3 g c (TLRef +x1) (THead (Bind Abst) x x2))).(\lambda (H12: (ty3_nf2_inv_abst_premise c x +x2)).(let TMP_332 \def (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(let +TMP_328 \def (S x1) in (let TMP_329 \def (lift TMP_328 O t0) in (let TMP_330 +\def (Bind Abst) in (let TMP_331 \def (THead TMP_330 x x2) in (pc3 c TMP_329 +TMP_331)))))))) in (let TMP_335 \def (\lambda (e: C).(\lambda (u0: +T).(\lambda (_: T).(let TMP_333 \def (Bind Abbr) in (let TMP_334 \def (CHead +e TMP_333 u0) in (getl x1 c TMP_334)))))) in (let TMP_336 \def (\lambda (e: +C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0)))) in (let TMP_337 \def +(ex3_3 C T T TMP_332 TMP_335 TMP_336) in (let TMP_342 \def (\lambda (_: +C).(\lambda (u0: T).(\lambda (_: T).(let TMP_338 \def (S x1) in (let TMP_339 +\def (lift TMP_338 O u0) in (let TMP_340 \def (Bind Abst) in (let TMP_341 +\def (THead TMP_340 x x2) in (pc3 c TMP_339 TMP_341)))))))) in (let TMP_345 +\def (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(let TMP_343 \def (Bind +Abst) in (let TMP_344 \def (CHead e TMP_343 u0) in (getl x1 c TMP_344)))))) +in (let TMP_346 \def (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g +e u0 t0)))) in (let TMP_347 \def (ex3_3 C T T TMP_342 TMP_345 TMP_346) in +(let TMP_351 \def (\lambda (v: T).(\lambda (_: T).(let TMP_348 \def (TLRef +x1) in (let TMP_349 \def (Bind Abst) in (let TMP_350 \def (THead TMP_349 x v) +in (eq T TMP_348 TMP_350)))))) in (let TMP_352 \def (\lambda (_: T).(\lambda +(w0: T).(ty3 g c x w0))) in (let TMP_355 \def (\lambda (v: T).(\lambda (_: +T).(let TMP_353 \def (Bind Abst) in (let TMP_354 \def (CHead c TMP_353 x) in +(ty3 g TMP_354 v x2))))) in (let TMP_358 \def (\lambda (v: T).(\lambda (_: +T).(let TMP_356 \def (Bind Abst) in (let TMP_357 \def (CHead c TMP_356 x) in +(nf2 TMP_357 v))))) in (let TMP_359 \def (ex4_2 T T TMP_351 TMP_352 TMP_355 +TMP_358) in (let TMP_394 \def (\lambda (H13: (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c (lift (S x1) O t0) (THead (Bind Abst) x x2))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl x1 c (CHead e (Bind Abbr) u0))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: -T).(ty3 g e u0 t0)))) (ex4_2 T T (\lambda (v: T).(\lambda (_: T).(eq T (TLRef -x1) (THead (Bind Abst) x v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c x -w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) x) v x2))) -(\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) x) v)))) (\lambda -(x3: C).(\lambda (x4: T).(\lambda (x5: T).(\lambda (_: (pc3 c (lift (S x1) O -x5) (THead (Bind Abst) x x2))).(\lambda (H15: (getl x1 c (CHead x3 (Bind -Abbr) x4))).(\lambda (_: (ty3 g x3 x4 x5)).(nf2_gen_lref c x3 x4 x1 H15 H7 -(ex4_2 T T (\lambda (v: T).(\lambda (_: T).(eq T (TLRef x1) (THead (Bind -Abst) x v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c x w0))) (\lambda (v: -T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) x) v x2))) (\lambda (v: -T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) x) v))))))))))) H13)) (\lambda -(H13: (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c -(lift (S x1) O u0) (THead (Bind Abst) x x2))))) (\lambda (e: C).(\lambda (u0: -T).(\lambda (_: T).(getl x1 c (CHead e (Bind Abst) u0))))) (\lambda (e: -C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0)))))).(ex3_3_ind C T T +T).(ty3 g e u0 t0)))))).(let TMP_364 \def (\lambda (_: C).(\lambda (_: +T).(\lambda (t0: T).(let TMP_360 \def (S x1) in (let TMP_361 \def (lift +TMP_360 O t0) in (let TMP_362 \def (Bind Abst) in (let TMP_363 \def (THead +TMP_362 x x2) in (pc3 c TMP_361 TMP_363)))))))) in (let TMP_367 \def (\lambda +(e: C).(\lambda (u0: T).(\lambda (_: T).(let TMP_365 \def (Bind Abbr) in (let +TMP_366 \def (CHead e TMP_365 u0) in (getl x1 c TMP_366)))))) in (let TMP_368 +\def (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g e u0 t0)))) in +(let TMP_372 \def (\lambda (v: T).(\lambda (_: T).(let TMP_369 \def (TLRef +x1) in (let TMP_370 \def (Bind Abst) in (let TMP_371 \def (THead TMP_370 x v) +in (eq T TMP_369 TMP_371)))))) in (let TMP_373 \def (\lambda (_: T).(\lambda +(w0: T).(ty3 g c x w0))) in (let TMP_376 \def (\lambda (v: T).(\lambda (_: +T).(let TMP_374 \def (Bind Abst) in (let TMP_375 \def (CHead c TMP_374 x) in +(ty3 g TMP_375 v x2))))) in (let TMP_379 \def (\lambda (v: T).(\lambda (_: +T).(let TMP_377 \def (Bind Abst) in (let TMP_378 \def (CHead c TMP_377 x) in +(nf2 TMP_378 v))))) in (let TMP_380 \def (ex4_2 T T TMP_372 TMP_373 TMP_376 +TMP_379) in (let TMP_393 \def (\lambda (x3: C).(\lambda (x4: T).(\lambda (x5: +T).(\lambda (_: (pc3 c (lift (S x1) O x5) (THead (Bind Abst) x x2))).(\lambda +(H15: (getl x1 c (CHead x3 (Bind Abbr) x4))).(\lambda (_: (ty3 g x3 x4 +x5)).(let TMP_384 \def (\lambda (v: T).(\lambda (_: T).(let TMP_381 \def +(TLRef x1) in (let TMP_382 \def (Bind Abst) in (let TMP_383 \def (THead +TMP_382 x v) in (eq T TMP_381 TMP_383)))))) in (let TMP_385 \def (\lambda (_: +T).(\lambda (w0: T).(ty3 g c x w0))) in (let TMP_388 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_386 \def (Bind Abst) in (let TMP_387 \def (CHead +c TMP_386 x) in (ty3 g TMP_387 v x2))))) in (let TMP_391 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_389 \def (Bind Abst) in (let TMP_390 \def (CHead +c TMP_389 x) in (nf2 TMP_390 v))))) in (let TMP_392 \def (ex4_2 T T TMP_384 +TMP_385 TMP_388 TMP_391) in (nf2_gen_lref c x3 x4 x1 H15 H7 +TMP_392)))))))))))) in (ex3_3_ind C T T TMP_364 TMP_367 TMP_368 TMP_380 +TMP_393 H13))))))))))) in (let TMP_429 \def (\lambda (H13: (ex3_3 C T T (\lambda (_: C).(\lambda (u0: T).(\lambda (_: T).(pc3 c (lift (S x1) O u0) (THead (Bind Abst) x x2))))) (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(getl x1 c (CHead e (Bind Abst) u0))))) (\lambda (e: C).(\lambda (u0: -T).(\lambda (t0: T).(ty3 g e u0 t0)))) (ex4_2 T T (\lambda (v: T).(\lambda -(_: T).(eq T (TLRef x1) (THead (Bind Abst) x v)))) (\lambda (_: T).(\lambda -(w0: T).(ty3 g c x w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c -(Bind Abst) x) v x2))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind -Abst) x) v)))) (\lambda (x3: C).(\lambda (x4: T).(\lambda (x5: T).(\lambda -(H14: (pc3 c (lift (S x1) O x4) (THead (Bind Abst) x x2))).(\lambda (H15: -(getl x1 c (CHead x3 (Bind Abst) x4))).(\lambda (_: (ty3 g x3 x4 x5)).(let -H_x0 \def (H12 x3 x4 x1 H15 TNil H14) in (let H17 \def H_x0 in (False_ind -(ex4_2 T T (\lambda (v: T).(\lambda (_: T).(eq T (TLRef x1) (THead (Bind -Abst) x v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c x w0))) (\lambda (v: -T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) x) v x2))) (\lambda (v: -T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) x) v)))) H17))))))))) H13)) -(ty3_gen_lref g c (THead (Bind Abst) x x2) x1 H11)))))) (\lambda (t0: -T).(\lambda (t1: TList).(\lambda (H11: ((\forall (x: T).(\forall (x2: -T).((ty3 g c (THeads (Flat Appl) t1 (TLRef x1)) (THead (Bind Abst) x x2)) \to -((ty3_nf2_inv_abst_premise c x x2) \to (ex4_2 T T (\lambda (v: T).(\lambda -(_: T).(eq T (THeads (Flat Appl) t1 (TLRef x1)) (THead (Bind Abst) x v)))) -(\lambda (_: T).(\lambda (w0: T).(ty3 g c x w0))) (\lambda (v: T).(\lambda -(_: T).(ty3 g (CHead c (Bind Abst) x) v x2))) (\lambda (v: T).(\lambda (_: -T).(nf2 (CHead c (Bind Abst) x) v)))))))))).(\lambda (x: T).(\lambda (x2: -T).(\lambda (H12: (ty3 g c (THead (Flat Appl) t0 (THeads (Flat Appl) t1 -(TLRef x1))) (THead (Bind Abst) x x2))).(\lambda (H13: -(ty3_nf2_inv_abst_premise c x x2)).(ex3_2_ind T T (\lambda (u0: T).(\lambda -(t2: T).(pc3 c (THead (Flat Appl) t0 (THead (Bind Abst) u0 t2)) (THead (Bind -Abst) x x2)))) (\lambda (u0: T).(\lambda (t2: T).(ty3 g c (THeads (Flat Appl) -t1 (TLRef x1)) (THead (Bind Abst) u0 t2)))) (\lambda (u0: T).(\lambda (_: -T).(ty3 g c t0 u0))) (ex4_2 T T (\lambda (v: T).(\lambda (_: T).(eq T (THead -(Flat Appl) t0 (THeads (Flat Appl) t1 (TLRef x1))) (THead (Bind Abst) x v)))) +T).(\lambda (t0: T).(ty3 g e u0 t0)))))).(let TMP_399 \def (\lambda (_: +C).(\lambda (u0: T).(\lambda (_: T).(let TMP_395 \def (S x1) in (let TMP_396 +\def (lift TMP_395 O u0) in (let TMP_397 \def (Bind Abst) in (let TMP_398 +\def (THead TMP_397 x x2) in (pc3 c TMP_396 TMP_398)))))))) in (let TMP_402 +\def (\lambda (e: C).(\lambda (u0: T).(\lambda (_: T).(let TMP_400 \def (Bind +Abst) in (let TMP_401 \def (CHead e TMP_400 u0) in (getl x1 c TMP_401)))))) +in (let TMP_403 \def (\lambda (e: C).(\lambda (u0: T).(\lambda (t0: T).(ty3 g +e u0 t0)))) in (let TMP_407 \def (\lambda (v: T).(\lambda (_: T).(let TMP_404 +\def (TLRef x1) in (let TMP_405 \def (Bind Abst) in (let TMP_406 \def (THead +TMP_405 x v) in (eq T TMP_404 TMP_406)))))) in (let TMP_408 \def (\lambda (_: +T).(\lambda (w0: T).(ty3 g c x w0))) in (let TMP_411 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_409 \def (Bind Abst) in (let TMP_410 \def (CHead +c TMP_409 x) in (ty3 g TMP_410 v x2))))) in (let TMP_414 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_412 \def (Bind Abst) in (let TMP_413 \def (CHead +c TMP_412 x) in (nf2 TMP_413 v))))) in (let TMP_415 \def (ex4_2 T T TMP_407 +TMP_408 TMP_411 TMP_414) in (let TMP_428 \def (\lambda (x3: C).(\lambda (x4: +T).(\lambda (x5: T).(\lambda (H14: (pc3 c (lift (S x1) O x4) (THead (Bind +Abst) x x2))).(\lambda (H15: (getl x1 c (CHead x3 (Bind Abst) x4))).(\lambda +(_: (ty3 g x3 x4 x5)).(let H_x0 \def (H12 x3 x4 x1 H15 TNil H14) in (let H17 +\def H_x0 in (let TMP_419 \def (\lambda (v: T).(\lambda (_: T).(let TMP_416 +\def (TLRef x1) in (let TMP_417 \def (Bind Abst) in (let TMP_418 \def (THead +TMP_417 x v) in (eq T TMP_416 TMP_418)))))) in (let TMP_420 \def (\lambda (_: +T).(\lambda (w0: T).(ty3 g c x w0))) in (let TMP_423 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_421 \def (Bind Abst) in (let TMP_422 \def (CHead +c TMP_421 x) in (ty3 g TMP_422 v x2))))) in (let TMP_426 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_424 \def (Bind Abst) in (let TMP_425 \def (CHead +c TMP_424 x) in (nf2 TMP_425 v))))) in (let TMP_427 \def (ex4_2 T T TMP_419 +TMP_420 TMP_423 TMP_426) in (False_ind TMP_427 H17)))))))))))))) in +(ex3_3_ind C T T TMP_399 TMP_402 TMP_403 TMP_415 TMP_428 H13))))))))))) in +(let TMP_430 \def (Bind Abst) in (let TMP_431 \def (THead TMP_430 x x2) in +(let TMP_432 \def (ty3_gen_lref g c TMP_431 x1 H11) in (or_ind TMP_337 +TMP_347 TMP_359 TMP_394 TMP_429 TMP_432))))))))))))))))))))))) in (let +TMP_564 \def (\lambda (t0: T).(\lambda (t1: TList).(\lambda (H11: ((\forall +(x: T).(\forall (x2: T).((ty3 g c (THeads (Flat Appl) t1 (TLRef x1)) (THead +(Bind Abst) x x2)) \to ((ty3_nf2_inv_abst_premise c x x2) \to (ex4_2 T T +(\lambda (v: T).(\lambda (_: T).(eq T (THeads (Flat Appl) t1 (TLRef x1)) +(THead (Bind Abst) x v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c x w0))) +(\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) x) v x2))) +(\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) x) +v)))))))))).(\lambda (x: T).(\lambda (x2: T).(\lambda (H12: (ty3 g c (THead +(Flat Appl) t0 (THeads (Flat Appl) t1 (TLRef x1))) (THead (Bind Abst) x +x2))).(\lambda (H13: (ty3_nf2_inv_abst_premise c x x2)).(let TMP_440 \def +(\lambda (u0: T).(\lambda (t2: T).(let TMP_434 \def (Flat Appl) in (let +TMP_435 \def (Bind Abst) in (let TMP_436 \def (THead TMP_435 u0 t2) in (let +TMP_437 \def (THead TMP_434 t0 TMP_436) in (let TMP_438 \def (Bind Abst) in +(let TMP_439 \def (THead TMP_438 x x2) in (pc3 c TMP_437 TMP_439))))))))) in +(let TMP_446 \def (\lambda (u0: T).(\lambda (t2: T).(let TMP_441 \def (Flat +Appl) in (let TMP_442 \def (TLRef x1) in (let TMP_443 \def (THeads TMP_441 t1 +TMP_442) in (let TMP_444 \def (Bind Abst) in (let TMP_445 \def (THead TMP_444 +u0 t2) in (ty3 g c TMP_443 TMP_445)))))))) in (let TMP_447 \def (\lambda (u0: +T).(\lambda (_: T).(ty3 g c t0 u0))) in (let TMP_455 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_448 \def (Flat Appl) in (let TMP_449 \def (Flat +Appl) in (let TMP_450 \def (TLRef x1) in (let TMP_451 \def (THeads TMP_449 t1 +TMP_450) in (let TMP_452 \def (THead TMP_448 t0 TMP_451) in (let TMP_453 \def +(Bind Abst) in (let TMP_454 \def (THead TMP_453 x v) in (eq T TMP_452 +TMP_454)))))))))) in (let TMP_456 \def (\lambda (_: T).(\lambda (w0: T).(ty3 +g c x w0))) in (let TMP_459 \def (\lambda (v: T).(\lambda (_: T).(let TMP_457 +\def (Bind Abst) in (let TMP_458 \def (CHead c TMP_457 x) in (ty3 g TMP_458 v +x2))))) in (let TMP_462 \def (\lambda (v: T).(\lambda (_: T).(let TMP_460 +\def (Bind Abst) in (let TMP_461 \def (CHead c TMP_460 x) in (nf2 TMP_461 +v))))) in (let TMP_463 \def (ex4_2 T T TMP_455 TMP_456 TMP_459 TMP_462) in +(let TMP_557 \def (\lambda (x3: T).(\lambda (x4: T).(\lambda (H14: (pc3 c +(THead (Flat Appl) t0 (THead (Bind Abst) x3 x4)) (THead (Bind Abst) x +x2))).(\lambda (H15: (ty3 g c (THeads (Flat Appl) t1 (TLRef x1)) (THead (Bind +Abst) x3 x4))).(\lambda (_: (ty3 g c t0 x3)).(let H_y \def +(ty3_nf2_gen__ty3_nf2_inv_abst_aux c x x2 H13 t0 x3 x4 H14) in (let H_x0 \def +(H11 x3 x4 H15 H_y) in (let H17 \def H_x0 in (let TMP_469 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_464 \def (Flat Appl) in (let TMP_465 \def (TLRef +x1) in (let TMP_466 \def (THeads TMP_464 t1 TMP_465) in (let TMP_467 \def +(Bind Abst) in (let TMP_468 \def (THead TMP_467 x3 v) in (eq T TMP_466 +TMP_468)))))))) in (let TMP_470 \def (\lambda (_: T).(\lambda (w0: T).(ty3 g +c x3 w0))) in (let TMP_473 \def (\lambda (v: T).(\lambda (_: T).(let TMP_471 +\def (Bind Abst) in (let TMP_472 \def (CHead c TMP_471 x3) in (ty3 g TMP_472 +v x4))))) in (let TMP_476 \def (\lambda (v: T).(\lambda (_: T).(let TMP_474 +\def (Bind Abst) in (let TMP_475 \def (CHead c TMP_474 x3) in (nf2 TMP_475 +v))))) in (let TMP_484 \def (\lambda (v: T).(\lambda (_: T).(let TMP_477 \def +(Flat Appl) in (let TMP_478 \def (Flat Appl) in (let TMP_479 \def (TLRef x1) +in (let TMP_480 \def (THeads TMP_478 t1 TMP_479) in (let TMP_481 \def (THead +TMP_477 t0 TMP_480) in (let TMP_482 \def (Bind Abst) in (let TMP_483 \def +(THead TMP_482 x v) in (eq T TMP_481 TMP_483)))))))))) in (let TMP_485 \def +(\lambda (_: T).(\lambda (w0: T).(ty3 g c x w0))) in (let TMP_488 \def +(\lambda (v: T).(\lambda (_: T).(let TMP_486 \def (Bind Abst) in (let TMP_487 +\def (CHead c TMP_486 x) in (ty3 g TMP_487 v x2))))) in (let TMP_491 \def +(\lambda (v: T).(\lambda (_: T).(let TMP_489 \def (Bind Abst) in (let TMP_490 +\def (CHead c TMP_489 x) in (nf2 TMP_490 v))))) in (let TMP_492 \def (ex4_2 T +T TMP_484 TMP_485 TMP_488 TMP_491) in (let TMP_556 \def (\lambda (x5: +T).(\lambda (x6: T).(\lambda (H18: (eq T (THeads (Flat Appl) t1 (TLRef x1)) +(THead (Bind Abst) x3 x5))).(\lambda (_: (ty3 g c x3 x6)).(\lambda (_: (ty3 g +(CHead c (Bind Abst) x3) x5 x4)).(\lambda (_: (nf2 (CHead c (Bind Abst) x3) +x5)).(let TMP_508 \def (\lambda (t2: TList).((eq T (THeads (Flat Appl) t2 +(TLRef x1)) (THead (Bind Abst) x3 x5)) \to (let TMP_500 \def (\lambda (v: +T).(\lambda (_: T).(let TMP_493 \def (Flat Appl) in (let TMP_494 \def (Flat +Appl) in (let TMP_495 \def (TLRef x1) in (let TMP_496 \def (THeads TMP_494 t2 +TMP_495) in (let TMP_497 \def (THead TMP_493 t0 TMP_496) in (let TMP_498 \def +(Bind Abst) in (let TMP_499 \def (THead TMP_498 x v) in (eq T TMP_497 +TMP_499)))))))))) in (let TMP_501 \def (\lambda (_: T).(\lambda (w0: T).(ty3 +g c x w0))) in (let TMP_504 \def (\lambda (v: T).(\lambda (_: T).(let TMP_502 +\def (Bind Abst) in (let TMP_503 \def (CHead c TMP_502 x) in (ty3 g TMP_503 v +x2))))) in (let TMP_507 \def (\lambda (v: T).(\lambda (_: T).(let TMP_505 +\def (Bind Abst) in (let TMP_506 \def (CHead c TMP_505 x) in (nf2 TMP_506 +v))))) in (ex4_2 T T TMP_500 TMP_501 TMP_504 TMP_507))))))) in (let TMP_529 +\def (\lambda (H22: (eq T (THeads (Flat Appl) TNil (TLRef x1)) (THead (Bind +Abst) x3 x5))).(let TMP_509 \def (TLRef x1) in (let TMP_510 \def (\lambda +(ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow +True | (THead _ _ _) \Rightarrow False])) in (let TMP_511 \def (Bind Abst) in +(let TMP_512 \def (THead TMP_511 x3 x5) in (let H23 \def (eq_ind T TMP_509 +TMP_510 I TMP_512 H22) in (let TMP_520 \def (\lambda (v: T).(\lambda (_: +T).(let TMP_513 \def (Flat Appl) in (let TMP_514 \def (Flat Appl) in (let +TMP_515 \def (TLRef x1) in (let TMP_516 \def (THeads TMP_514 TNil TMP_515) in +(let TMP_517 \def (THead TMP_513 t0 TMP_516) in (let TMP_518 \def (Bind Abst) +in (let TMP_519 \def (THead TMP_518 x v) in (eq T TMP_517 TMP_519)))))))))) +in (let TMP_521 \def (\lambda (_: T).(\lambda (w0: T).(ty3 g c x w0))) in +(let TMP_524 \def (\lambda (v: T).(\lambda (_: T).(let TMP_522 \def (Bind +Abst) in (let TMP_523 \def (CHead c TMP_522 x) in (ty3 g TMP_523 v x2))))) in +(let TMP_527 \def (\lambda (v: T).(\lambda (_: T).(let TMP_525 \def (Bind +Abst) in (let TMP_526 \def (CHead c TMP_525 x) in (nf2 TMP_526 v))))) in (let +TMP_528 \def (ex4_2 T T TMP_520 TMP_521 TMP_524 TMP_527) in (False_ind +TMP_528 H23)))))))))))) in (let TMP_555 \def (\lambda (t2: T).(\lambda (t3: +TList).(\lambda (_: (((eq T (THeads (Flat Appl) t3 (TLRef x1)) (THead (Bind +Abst) x3 x5)) \to (ex4_2 T T (\lambda (v: T).(\lambda (_: T).(eq T (THead +(Flat Appl) t0 (THeads (Flat Appl) t3 (TLRef x1))) (THead (Bind Abst) x v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c x w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) x) v x2))) (\lambda (v: T).(\lambda (_: -T).(nf2 (CHead c (Bind Abst) x) v)))) (\lambda (x3: T).(\lambda (x4: -T).(\lambda (H14: (pc3 c (THead (Flat Appl) t0 (THead (Bind Abst) x3 x4)) -(THead (Bind Abst) x x2))).(\lambda (H15: (ty3 g c (THeads (Flat Appl) t1 -(TLRef x1)) (THead (Bind Abst) x3 x4))).(\lambda (_: (ty3 g c t0 x3)).(let -H_y \def (ty3_nf2_gen__ty3_nf2_inv_abst_aux c x x2 H13 t0 x3 x4 H14) in (let -H_x0 \def (H11 x3 x4 H15 H_y) in (let H17 \def H_x0 in (ex4_2_ind T T -(\lambda (v: T).(\lambda (_: T).(eq T (THeads (Flat Appl) t1 (TLRef x1)) -(THead (Bind Abst) x3 v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 g c x3 -w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) x3) v x4))) -(\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) x3) v))) (ex4_2 T T -(\lambda (v: T).(\lambda (_: T).(eq T (THead (Flat Appl) t0 (THeads (Flat -Appl) t1 (TLRef x1))) (THead (Bind Abst) x v)))) (\lambda (_: T).(\lambda -(w0: T).(ty3 g c x w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c -(Bind Abst) x) v x2))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind -Abst) x) v)))) (\lambda (x5: T).(\lambda (x6: T).(\lambda (H18: (eq T (THeads -(Flat Appl) t1 (TLRef x1)) (THead (Bind Abst) x3 x5))).(\lambda (_: (ty3 g c -x3 x6)).(\lambda (_: (ty3 g (CHead c (Bind Abst) x3) x5 x4)).(\lambda (_: -(nf2 (CHead c (Bind Abst) x3) x5)).(TList_ind (\lambda (t2: TList).((eq T -(THeads (Flat Appl) t2 (TLRef x1)) (THead (Bind Abst) x3 x5)) \to (ex4_2 T T -(\lambda (v: T).(\lambda (_: T).(eq T (THead (Flat Appl) t0 (THeads (Flat -Appl) t2 (TLRef x1))) (THead (Bind Abst) x v)))) (\lambda (_: T).(\lambda -(w0: T).(ty3 g c x w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c -(Bind Abst) x) v x2))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind -Abst) x) v)))))) (\lambda (H22: (eq T (THeads (Flat Appl) TNil (TLRef x1)) -(THead (Bind Abst) x3 x5))).(let H23 \def (eq_ind T (TLRef x1) (\lambda (ee: -T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow -False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I -(THead (Bind Abst) x3 x5) H22) in (False_ind (ex4_2 T T (\lambda (v: -T).(\lambda (_: T).(eq T (THead (Flat Appl) t0 (THeads (Flat Appl) TNil -(TLRef x1))) (THead (Bind Abst) x v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 -g c x w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) x) v -x2))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) x) v)))) -H23))) (\lambda (t2: T).(\lambda (t3: TList).(\lambda (_: (((eq T (THeads -(Flat Appl) t3 (TLRef x1)) (THead (Bind Abst) x3 x5)) \to (ex4_2 T T (\lambda -(v: T).(\lambda (_: T).(eq T (THead (Flat Appl) t0 (THeads (Flat Appl) t3 -(TLRef x1))) (THead (Bind Abst) x v)))) (\lambda (_: T).(\lambda (w0: T).(ty3 -g c x w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) x) v -x2))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) x) -v))))))).(\lambda (H22: (eq T (THeads (Flat Appl) (TCons t2 t3) (TLRef x1)) -(THead (Bind Abst) x3 x5))).(let H23 \def (eq_ind T (THead (Flat Appl) t2 -(THeads (Flat Appl) t3 (TLRef x1))) (\lambda (ee: T).(match ee in T return -(\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) -\Rightarrow False | (THead k _ _) \Rightarrow (match k in K return (\lambda -(_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow -True])])) I (THead (Bind Abst) x3 x5) H22) in (False_ind (ex4_2 T T (\lambda -(v: T).(\lambda (_: T).(eq T (THead (Flat Appl) t0 (THeads (Flat Appl) (TCons -t2 t3) (TLRef x1))) (THead (Bind Abst) x v)))) (\lambda (_: T).(\lambda (w0: -T).(ty3 g c x w0))) (\lambda (v: T).(\lambda (_: T).(ty3 g (CHead c (Bind -Abst) x) v x2))) (\lambda (v: T).(\lambda (_: T).(nf2 (CHead c (Bind Abst) x) -v)))) H23)))))) t1 H18))))))) H17))))))))) (ty3_gen_appl g c t0 (THeads (Flat -Appl) t1 (TLRef x1)) (THead (Bind Abst) x x2) H12))))))))) x0)) H10)) H9)) t -H5))))))) H4)) H3))))))))))). -(* COMMENTS -Initial nodes: 5333 -END *) +T).(nf2 (CHead c (Bind Abst) x) v))))))).(\lambda (H22: (eq T (THeads (Flat +Appl) (TCons t2 t3) (TLRef x1)) (THead (Bind Abst) x3 x5))).(let TMP_530 \def +(Flat Appl) in (let TMP_531 \def (Flat Appl) in (let TMP_532 \def (TLRef x1) +in (let TMP_533 \def (THeads TMP_531 t3 TMP_532) in (let TMP_534 \def (THead +TMP_530 t2 TMP_533) in (let TMP_535 \def (\lambda (ee: T).(match ee with +[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) +\Rightarrow (match k with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow +True])])) in (let TMP_536 \def (Bind Abst) in (let TMP_537 \def (THead +TMP_536 x3 x5) in (let H23 \def (eq_ind T TMP_534 TMP_535 I TMP_537 H22) in +(let TMP_546 \def (\lambda (v: T).(\lambda (_: T).(let TMP_538 \def (Flat +Appl) in (let TMP_539 \def (Flat Appl) in (let TMP_540 \def (TCons t2 t3) in +(let TMP_541 \def (TLRef x1) in (let TMP_542 \def (THeads TMP_539 TMP_540 +TMP_541) in (let TMP_543 \def (THead TMP_538 t0 TMP_542) in (let TMP_544 \def +(Bind Abst) in (let TMP_545 \def (THead TMP_544 x v) in (eq T TMP_543 +TMP_545))))))))))) in (let TMP_547 \def (\lambda (_: T).(\lambda (w0: T).(ty3 +g c x w0))) in (let TMP_550 \def (\lambda (v: T).(\lambda (_: T).(let TMP_548 +\def (Bind Abst) in (let TMP_549 \def (CHead c TMP_548 x) in (ty3 g TMP_549 v +x2))))) in (let TMP_553 \def (\lambda (v: T).(\lambda (_: T).(let TMP_551 +\def (Bind Abst) in (let TMP_552 \def (CHead c TMP_551 x) in (nf2 TMP_552 +v))))) in (let TMP_554 \def (ex4_2 T T TMP_546 TMP_547 TMP_550 TMP_553) in +(False_ind TMP_554 H23))))))))))))))))))) in (TList_ind TMP_508 TMP_529 +TMP_555 t1 H18)))))))))) in (ex4_2_ind T T TMP_469 TMP_470 TMP_473 TMP_476 +TMP_492 TMP_556 H17))))))))))))))))))) in (let TMP_558 \def (Flat Appl) in +(let TMP_559 \def (TLRef x1) in (let TMP_560 \def (THeads TMP_558 t1 TMP_559) +in (let TMP_561 \def (Bind Abst) in (let TMP_562 \def (THead TMP_561 x x2) in +(let TMP_563 \def (ty3_gen_appl g c t0 TMP_560 TMP_562 H12) in (ex3_2_ind T T +TMP_440 TMP_446 TMP_447 TMP_463 TMP_557 TMP_563))))))))))))))))))))))) in +(let TMP_565 \def (TList_ind TMP_327 TMP_433 TMP_564 x0) in (let TMP_566 \def +(unintro T w TMP_313 TMP_565) in (let TMP_567 \def (unintro T u TMP_299 +TMP_566 H10) in (let TMP_568 \def (TMP_567 H9) in (eq_ind_r T TMP_274 TMP_285 +TMP_568 t H5)))))))))))))))))))))))))) in (ex3_2_ind TList nat TMP_251 +TMP_252 TMP_254 TMP_265 TMP_569 H4))))))))))) in (or3_ind TMP_10 TMP_13 +TMP_21 TMP_32 TMP_199 TMP_247 TMP_570 H3))))))))))))))))))))))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/pr3.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/pr3.ma index 8d184aa58..632347788 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/pr3.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/pr3.ma @@ -14,17 +14,17 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/csubt/ty3.ma". +include "basic_1/csubt/ty3.ma". -include "Basic-1/ty3/subst1.ma". +include "basic_1/ty3/subst1.ma". -include "Basic-1/ty3/fsubst0.ma". +include "basic_1/ty3/fsubst0.ma". -include "Basic-1/pc3/pc1.ma". +include "basic_1/pc3/pc1.ma". -include "Basic-1/pc3/wcpr0.ma". +include "basic_1/pc3/wcpr0.ma". -include "Basic-1/pc1/props.ma". +include "basic_1/pc1/props.ma". theorem ty3_sred_wcpr0_pr0: \forall (g: G).(\forall (c1: C).(\forall (t1: T).(\forall (t: T).((ty3 g c1 @@ -81,248 +81,225 @@ B).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H2: (ty3 g (CHead c (Bind b) u) t2 t3)).(\lambda (H3: ((\forall (c2: C).((wcpr0 (CHead c (Bind b) u) c2) \to (\forall (t4: T).((pr0 t2 t4) \to (ty3 g c2 t4 t3))))))).(\lambda (c2: C).(\lambda (H4: (wcpr0 c c2)).(\lambda (t4: T).(\lambda (H5: (pr0 (THead -(Bind b) u t2) t4)).(let H6 \def (match H5 in pr0 return (\lambda (t5: -T).(\lambda (t6: T).(\lambda (_: (pr0 t5 t6)).((eq T t5 (THead (Bind b) u -t2)) \to ((eq T t6 t4) \to (ty3 g c2 t4 (THead (Bind b) u t3))))))) with -[(pr0_refl t5) \Rightarrow (\lambda (H6: (eq T t5 (THead (Bind b) u -t2))).(\lambda (H7: (eq T t5 t4)).(eq_ind T (THead (Bind b) u t2) (\lambda -(t6: T).((eq T t6 t4) \to (ty3 g c2 t4 (THead (Bind b) u t3)))) (\lambda (H8: -(eq T (THead (Bind b) u t2) t4)).(eq_ind T (THead (Bind b) u t2) (\lambda -(t6: T).(ty3 g c2 t6 (THead (Bind b) u t3))) (ty3_bind g c2 u t0 (H1 c2 H4 u -(pr0_refl u)) b t2 t3 (H3 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H4 u u -(pr0_refl u) (Bind b)) t2 (pr0_refl t2))) t4 H8)) t5 (sym_eq T t5 (THead -(Bind b) u t2) H6) H7))) | (pr0_comp u1 u2 H6 t5 t6 H7 k) \Rightarrow -(\lambda (H8: (eq T (THead k u1 t5) (THead (Bind b) u t2))).(\lambda (H9: (eq -T (THead k u2 t6) t4)).((let H10 \def (f_equal T T (\lambda (e: T).(match e -in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t5 | (TLRef _) -\Rightarrow t5 | (THead _ _ t7) \Rightarrow t7])) (THead k u1 t5) (THead -(Bind b) u t2) H8) in ((let H11 \def (f_equal T T (\lambda (e: T).(match e in -T return (\lambda (_: T).T) with [(TSort _) \Rightarrow u1 | (TLRef _) -\Rightarrow u1 | (THead _ t7 _) \Rightarrow t7])) (THead k u1 t5) (THead -(Bind b) u t2) H8) in ((let H12 \def (f_equal T K (\lambda (e: T).(match e in -T return (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _) -\Rightarrow k | (THead k0 _ _) \Rightarrow k0])) (THead k u1 t5) (THead (Bind -b) u t2) H8) in (eq_ind K (Bind b) (\lambda (k0: K).((eq T u1 u) \to ((eq T -t5 t2) \to ((eq T (THead k0 u2 t6) t4) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to -(ty3 g c2 t4 (THead (Bind b) u t3)))))))) (\lambda (H13: (eq T u1 u)).(eq_ind -T u (\lambda (t7: T).((eq T t5 t2) \to ((eq T (THead (Bind b) u2 t6) t4) \to -((pr0 t7 u2) \to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Bind b) u t3))))))) -(\lambda (H14: (eq T t5 t2)).(eq_ind T t2 (\lambda (t7: T).((eq T (THead -(Bind b) u2 t6) t4) \to ((pr0 u u2) \to ((pr0 t7 t6) \to (ty3 g c2 t4 (THead -(Bind b) u t3)))))) (\lambda (H15: (eq T (THead (Bind b) u2 t6) t4)).(eq_ind -T (THead (Bind b) u2 t6) (\lambda (t7: T).((pr0 u u2) \to ((pr0 t2 t6) \to -(ty3 g c2 t7 (THead (Bind b) u t3))))) (\lambda (H16: (pr0 u u2)).(\lambda -(H17: (pr0 t2 t6)).(ex_ind T (\lambda (t7: T).(ty3 g (CHead c2 (Bind b) u) t3 -t7)) (ty3 g c2 (THead (Bind b) u2 t6) (THead (Bind b) u t3)) (\lambda (x: -T).(\lambda (H18: (ty3 g (CHead c2 (Bind b) u) t3 x)).(ex_ind T (\lambda (t7: -T).(ty3 g (CHead c2 (Bind b) u2) t3 t7)) (ty3 g c2 (THead (Bind b) u2 t6) -(THead (Bind b) u t3)) (\lambda (x0: T).(\lambda (_: (ty3 g (CHead c2 (Bind -b) u2) t3 x0)).(ty3_conv g c2 (THead (Bind b) u t3) (THead (Bind b) u x) -(ty3_bind g c2 u t0 (H1 c2 H4 u (pr0_refl u)) b t3 x H18) (THead (Bind b) u2 -t6) (THead (Bind b) u2 t3) (ty3_bind g c2 u2 t0 (H1 c2 H4 u2 H16) b t6 t3 (H3 -(CHead c2 (Bind b) u2) (wcpr0_comp c c2 H4 u u2 H16 (Bind b)) t6 H17)) -(pc3_pr2_x c2 (THead (Bind b) u2 t3) (THead (Bind b) u t3) (pr2_head_1 c2 u -u2 (pr2_free c2 u u2 H16) (Bind b) t3))))) (ty3_correct g (CHead c2 (Bind b) -u2) t6 t3 (H3 (CHead c2 (Bind b) u2) (wcpr0_comp c c2 H4 u u2 H16 (Bind b)) -t6 H17))))) (ty3_correct g (CHead c2 (Bind b) u) t2 t3 (H3 (CHead c2 (Bind b) -u) (wcpr0_comp c c2 H4 u u (pr0_refl u) (Bind b)) t2 (pr0_refl t2)))))) t4 -H15)) t5 (sym_eq T t5 t2 H14))) u1 (sym_eq T u1 u H13))) k (sym_eq K k (Bind -b) H12))) H11)) H10)) H9 H6 H7))) | (pr0_beta u0 v1 v2 H6 t5 t6 H7) -\Rightarrow (\lambda (H8: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u0 -t5)) (THead (Bind b) u t2))).(\lambda (H9: (eq T (THead (Bind Abbr) v2 t6) -t4)).((let H10 \def (eq_ind T (THead (Flat Appl) v1 (THead (Bind Abst) u0 -t5)) (\lambda (e: T).(match e in T return (\lambda (_: T).Prop) with [(TSort -_) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) -\Rightarrow (match k in K return (\lambda (_: K).Prop) with [(Bind _) -\Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u t2) -H8) in (False_ind ((eq T (THead (Bind Abbr) v2 t6) t4) \to ((pr0 v1 v2) \to -((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Bind b) u t3))))) H10)) H9 H6 H7))) | -(pr0_upsilon b0 H6 v1 v2 H7 u1 u2 H8 t5 t6 H9) \Rightarrow (\lambda (H10: (eq -T (THead (Flat Appl) v1 (THead (Bind b0) u1 t5)) (THead (Bind b) u -t2))).(\lambda (H11: (eq T (THead (Bind b0) u2 (THead (Flat Appl) (lift (S O) -O v2) t6)) t4)).((let H12 \def (eq_ind T (THead (Flat Appl) v1 (THead (Bind -b0) u1 t5)) (\lambda (e: T).(match e in T return (\lambda (_: T).Prop) with -[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) -\Rightarrow (match k in K return (\lambda (_: K).Prop) with [(Bind _) -\Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind b) u t2) -H10) in (False_ind ((eq T (THead (Bind b0) u2 (THead (Flat Appl) (lift (S O) -O v2) t6)) t4) \to ((not (eq B b0 Abst)) \to ((pr0 v1 v2) \to ((pr0 u1 u2) -\to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Bind b) u t3))))))) H12)) H11 H6 H7 -H8 H9))) | (pr0_delta u1 u2 H6 t5 t6 H7 w H8) \Rightarrow (\lambda (H9: (eq T -(THead (Bind Abbr) u1 t5) (THead (Bind b) u t2))).(\lambda (H10: (eq T (THead -(Bind Abbr) u2 w) t4)).((let H11 \def (f_equal T T (\lambda (e: T).(match e -in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t5 | (TLRef _) -\Rightarrow t5 | (THead _ _ t7) \Rightarrow t7])) (THead (Bind Abbr) u1 t5) -(THead (Bind b) u t2) H9) in ((let H12 \def (f_equal T T (\lambda (e: -T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow u1 | -(TLRef _) \Rightarrow u1 | (THead _ t7 _) \Rightarrow t7])) (THead (Bind -Abbr) u1 t5) (THead (Bind b) u t2) H9) in ((let H13 \def (f_equal T B -(\lambda (e: T).(match e in T return (\lambda (_: T).B) with [(TSort _) -\Rightarrow Abbr | (TLRef _) \Rightarrow Abbr | (THead k _ _) \Rightarrow -(match k in K return (\lambda (_: K).B) with [(Bind b0) \Rightarrow b0 | -(Flat _) \Rightarrow Abbr])])) (THead (Bind Abbr) u1 t5) (THead (Bind b) u -t2) H9) in (eq_ind B Abbr (\lambda (b0: B).((eq T u1 u) \to ((eq T t5 t2) \to -((eq T (THead (Bind Abbr) u2 w) t4) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to -((subst0 O u2 t6 w) \to (ty3 g c2 t4 (THead (Bind b0) u t3))))))))) (\lambda -(H14: (eq T u1 u)).(eq_ind T u (\lambda (t7: T).((eq T t5 t2) \to ((eq T -(THead (Bind Abbr) u2 w) t4) \to ((pr0 t7 u2) \to ((pr0 t5 t6) \to ((subst0 O -u2 t6 w) \to (ty3 g c2 t4 (THead (Bind Abbr) u t3)))))))) (\lambda (H15: (eq -T t5 t2)).(eq_ind T t2 (\lambda (t7: T).((eq T (THead (Bind Abbr) u2 w) t4) -\to ((pr0 u u2) \to ((pr0 t7 t6) \to ((subst0 O u2 t6 w) \to (ty3 g c2 t4 -(THead (Bind Abbr) u t3))))))) (\lambda (H16: (eq T (THead (Bind Abbr) u2 w) -t4)).(eq_ind T (THead (Bind Abbr) u2 w) (\lambda (t7: T).((pr0 u u2) \to -((pr0 t2 t6) \to ((subst0 O u2 t6 w) \to (ty3 g c2 t7 (THead (Bind Abbr) u -t3)))))) (\lambda (H17: (pr0 u u2)).(\lambda (H18: (pr0 t2 t6)).(\lambda -(H19: (subst0 O u2 t6 w)).(let H20 \def (eq_ind_r B b (\lambda (b0: -B).(\forall (c3: C).((wcpr0 (CHead c (Bind b0) u) c3) \to (\forall (t7: -T).((pr0 t2 t7) \to (ty3 g c3 t7 t3)))))) H3 Abbr H13) in (let H21 \def -(eq_ind_r B b (\lambda (b0: B).(ty3 g (CHead c (Bind b0) u) t2 t3)) H2 Abbr -H13) in (ex_ind T (\lambda (t7: T).(ty3 g (CHead c2 (Bind Abbr) u) t3 t7)) -(ty3 g c2 (THead (Bind Abbr) u2 w) (THead (Bind Abbr) u t3)) (\lambda (x: -T).(\lambda (H22: (ty3 g (CHead c2 (Bind Abbr) u) t3 x)).(ex_ind T (\lambda -(t7: T).(ty3 g (CHead c2 (Bind Abbr) u2) t3 t7)) (ty3 g c2 (THead (Bind Abbr) -u2 w) (THead (Bind Abbr) u t3)) (\lambda (x0: T).(\lambda (_: (ty3 g (CHead -c2 (Bind Abbr) u2) t3 x0)).(ty3_conv g c2 (THead (Bind Abbr) u t3) (THead -(Bind Abbr) u x) (ty3_bind g c2 u t0 (H1 c2 H4 u (pr0_refl u)) Abbr t3 x H22) -(THead (Bind Abbr) u2 w) (THead (Bind Abbr) u2 t3) (ty3_bind g c2 u2 t0 (H1 -c2 H4 u2 H17) Abbr w t3 (ty3_subst0 g (CHead c2 (Bind Abbr) u2) t6 t3 (H20 -(CHead c2 (Bind Abbr) u2) (wcpr0_comp c c2 H4 u u2 H17 (Bind Abbr)) t6 H18) -c2 u2 O (getl_refl Abbr c2 u2) w H19)) (pc3_pr2_x c2 (THead (Bind Abbr) u2 -t3) (THead (Bind Abbr) u t3) (pr2_head_1 c2 u u2 (pr2_free c2 u u2 H17) (Bind -Abbr) t3))))) (ty3_correct g (CHead c2 (Bind Abbr) u2) t6 t3 (H20 (CHead c2 -(Bind Abbr) u2) (wcpr0_comp c c2 H4 u u2 H17 (Bind Abbr)) t6 H18))))) -(ty3_correct g (CHead c2 (Bind Abbr) u) t2 t3 (H20 (CHead c2 (Bind Abbr) u) -(wcpr0_comp c c2 H4 u u (pr0_refl u) (Bind Abbr)) t2 (pr0_refl t2))))))))) t4 -H16)) t5 (sym_eq T t5 t2 H15))) u1 (sym_eq T u1 u H14))) b H13)) H12)) H11)) -H10 H6 H7 H8))) | (pr0_zeta b0 H6 t5 t6 H7 u0) \Rightarrow (\lambda (H8: (eq -T (THead (Bind b0) u0 (lift (S O) O t5)) (THead (Bind b) u t2))).(\lambda -(H9: (eq T t6 t4)).((let H10 \def (f_equal T T (\lambda (e: T).(match e in T -return (\lambda (_: T).T) with [(TSort _) \Rightarrow ((let rec lref_map (f: -((nat \to nat))) (d: nat) (t7: T) on t7: T \def (match t7 with [(TSort n) -\Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef (match (blt i d) with -[true \Rightarrow i | false \Rightarrow (f i)])) | (THead k u1 t8) -\Rightarrow (THead k (lref_map f d u1) (lref_map f (s k d) t8))]) in -lref_map) (\lambda (x: nat).(plus x (S O))) O t5) | (TLRef _) \Rightarrow -((let rec lref_map (f: ((nat \to nat))) (d: nat) (t7: T) on t7: T \def (match -t7 with [(TSort n) \Rightarrow (TSort n) | (TLRef i) \Rightarrow (TLRef -(match (blt i d) with [true \Rightarrow i | false \Rightarrow (f i)])) | -(THead k u1 t8) \Rightarrow (THead k (lref_map f d u1) (lref_map f (s k d) -t8))]) in lref_map) (\lambda (x: nat).(plus x (S O))) O t5) | (THead _ _ t7) -\Rightarrow t7])) (THead (Bind b0) u0 (lift (S O) O t5)) (THead (Bind b) u -t2) H8) in ((let H11 \def (f_equal T T (\lambda (e: T).(match e in T return -(\lambda (_: T).T) with [(TSort _) \Rightarrow u0 | (TLRef _) \Rightarrow u0 -| (THead _ t7 _) \Rightarrow t7])) (THead (Bind b0) u0 (lift (S O) O t5)) -(THead (Bind b) u t2) H8) in ((let H12 \def (f_equal T B (\lambda (e: -T).(match e in T return (\lambda (_: T).B) with [(TSort _) \Rightarrow b0 | -(TLRef _) \Rightarrow b0 | (THead k _ _) \Rightarrow (match k in K return -(\lambda (_: K).B) with [(Bind b1) \Rightarrow b1 | (Flat _) \Rightarrow -b0])])) (THead (Bind b0) u0 (lift (S O) O t5)) (THead (Bind b) u t2) H8) in -(eq_ind B b (\lambda (b1: B).((eq T u0 u) \to ((eq T (lift (S O) O t5) t2) -\to ((eq T t6 t4) \to ((not (eq B b1 Abst)) \to ((pr0 t5 t6) \to (ty3 g c2 t4 -(THead (Bind b) u t3)))))))) (\lambda (H13: (eq T u0 u)).(eq_ind T u (\lambda -(_: T).((eq T (lift (S O) O t5) t2) \to ((eq T t6 t4) \to ((not (eq B b -Abst)) \to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Bind b) u t3))))))) (\lambda -(H14: (eq T (lift (S O) O t5) t2)).(eq_ind T (lift (S O) O t5) (\lambda (_: -T).((eq T t6 t4) \to ((not (eq B b Abst)) \to ((pr0 t5 t6) \to (ty3 g c2 t4 -(THead (Bind b) u t3)))))) (\lambda (H15: (eq T t6 t4)).(eq_ind T t4 (\lambda -(t7: T).((not (eq B b Abst)) \to ((pr0 t5 t7) \to (ty3 g c2 t4 (THead (Bind -b) u t3))))) (\lambda (H16: (not (eq B b Abst))).(\lambda (H17: (pr0 t5 -t4)).(let H18 \def (eq_ind_r T t2 (\lambda (t7: T).(\forall (c3: C).((wcpr0 -(CHead c (Bind b) u) c3) \to (\forall (t8: T).((pr0 t7 t8) \to (ty3 g c3 t8 -t3)))))) H3 (lift (S O) O t5) H14) in (let H19 \def (eq_ind_r T t2 (\lambda -(t7: T).(ty3 g (CHead c (Bind b) u) t7 t3)) H2 (lift (S O) O t5) H14) in -(ex_ind T (\lambda (t7: T).(ty3 g (CHead c2 (Bind b) u) t3 t7)) (ty3 g c2 t4 -(THead (Bind b) u t3)) (\lambda (x: T).(\lambda (H20: (ty3 g (CHead c2 (Bind -b) u) t3 x)).(B_ind (\lambda (b1: B).((not (eq B b1 Abst)) \to ((ty3 g (CHead -c2 (Bind b1) u) t3 x) \to ((ty3 g (CHead c2 (Bind b1) u) (lift (S O) O t4) -t3) \to (ty3 g c2 t4 (THead (Bind b1) u t3)))))) (\lambda (H21: (not (eq B -Abbr Abst))).(\lambda (H22: (ty3 g (CHead c2 (Bind Abbr) u) t3 x)).(\lambda -(H23: (ty3 g (CHead c2 (Bind Abbr) u) (lift (S O) O t4) t3)).(let H24 \def -(ty3_gen_cabbr g (CHead c2 (Bind Abbr) u) (lift (S O) O t4) t3 H23 c2 u O -(getl_refl Abbr c2 u) (CHead c2 (Bind Abbr) u) (csubst1_refl O u (CHead c2 -(Bind Abbr) u)) c2 (drop_drop (Bind Abbr) O c2 c2 (drop_refl c2) u)) in -(ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(subst1 O u (lift (S O) O t4) -(lift (S O) O y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 O u t3 (lift (S -O) O y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g c2 y1 y2))) (ty3 g c2 t4 -(THead (Bind Abbr) u t3)) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H25: -(subst1 O u (lift (S O) O t4) (lift (S O) O x0))).(\lambda (H26: (subst1 O u -t3 (lift (S O) O x1))).(\lambda (H27: (ty3 g c2 x0 x1)).(let H28 \def (eq_ind -T x0 (\lambda (t7: T).(ty3 g c2 t7 x1)) H27 t4 (lift_inj x0 t4 (S O) O -(subst1_gen_lift_eq t4 u (lift (S O) O x0) (S O) O O (le_n O) (eq_ind_r nat -(plus (S O) O) (\lambda (n: nat).(lt O n)) (le_n (plus (S O) O)) (plus O (S -O)) (plus_sym O (S O))) H25))) in (ty3_conv g c2 (THead (Bind Abbr) u t3) -(THead (Bind Abbr) u x) (ty3_bind g c2 u t0 (H1 c2 H4 u (pr0_refl u)) Abbr t3 -x H22) t4 x1 H28 (pc3_pr3_x c2 x1 (THead (Bind Abbr) u t3) (pr3_t (THead -(Bind Abbr) u (lift (S O) O x1)) (THead (Bind Abbr) u t3) c2 (pr3_pr2 c2 -(THead (Bind Abbr) u t3) (THead (Bind Abbr) u (lift (S O) O x1)) (pr2_free c2 -(THead (Bind Abbr) u t3) (THead (Bind Abbr) u (lift (S O) O x1)) (pr0_delta1 -u u (pr0_refl u) t3 t3 (pr0_refl t3) (lift (S O) O x1) H26))) x1 (pr3_pr2 c2 -(THead (Bind Abbr) u (lift (S O) O x1)) x1 (pr2_free c2 (THead (Bind Abbr) u -(lift (S O) O x1)) x1 (pr0_zeta Abbr H21 x1 x1 (pr0_refl x1) u)))))))))))) -H24))))) (\lambda (H21: (not (eq B Abst Abst))).(\lambda (_: (ty3 g (CHead c2 -(Bind Abst) u) t3 x)).(\lambda (_: (ty3 g (CHead c2 (Bind Abst) u) (lift (S -O) O t4) t3)).(let H24 \def (match (H21 (refl_equal B Abst)) in False return -(\lambda (_: False).(ty3 g c2 t4 (THead (Bind Abst) u t3))) with []) in -H24)))) (\lambda (H21: (not (eq B Void Abst))).(\lambda (H22: (ty3 g (CHead -c2 (Bind Void) u) t3 x)).(\lambda (H23: (ty3 g (CHead c2 (Bind Void) u) (lift -(S O) O t4) t3)).(let H24 \def (ty3_gen_cvoid g (CHead c2 (Bind Void) u) -(lift (S O) O t4) t3 H23 c2 u O (getl_refl Void c2 u) c2 (drop_drop (Bind -Void) O c2 c2 (drop_refl c2) u)) in (ex3_2_ind T T (\lambda (y1: T).(\lambda -(_: T).(eq T (lift (S O) O t4) (lift (S O) O y1)))) (\lambda (_: T).(\lambda -(y2: T).(eq T t3 (lift (S O) O y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 -g c2 y1 y2))) (ty3 g c2 t4 (THead (Bind Void) u t3)) (\lambda (x0: -T).(\lambda (x1: T).(\lambda (H25: (eq T (lift (S O) O t4) (lift (S O) O -x0))).(\lambda (H26: (eq T t3 (lift (S O) O x1))).(\lambda (H27: (ty3 g c2 x0 -x1)).(let H28 \def (eq_ind T t3 (\lambda (t7: T).(ty3 g (CHead c2 (Bind Void) -u) t7 x)) H22 (lift (S O) O x1) H26) in (eq_ind_r T (lift (S O) O x1) -(\lambda (t7: T).(ty3 g c2 t4 (THead (Bind Void) u t7))) (let H29 \def -(eq_ind_r T x0 (\lambda (t7: T).(ty3 g c2 t7 x1)) H27 t4 (lift_inj t4 x0 (S -O) O H25)) in (ty3_conv g c2 (THead (Bind Void) u (lift (S O) O x1)) (THead -(Bind Void) u x) (ty3_bind g c2 u t0 (H1 c2 H4 u (pr0_refl u)) Void (lift (S -O) O x1) x H28) t4 x1 H29 (pc3_s c2 x1 (THead (Bind Void) u (lift (S O) O -x1)) (pc3_pr2_r c2 (THead (Bind Void) u (lift (S O) O x1)) x1 (pr2_free c2 -(THead (Bind Void) u (lift (S O) O x1)) x1 (pr0_zeta Void H21 x1 x1 (pr0_refl -x1) u)))))) t3 H26))))))) H24))))) b H16 H20 (H18 (CHead c2 (Bind b) u) -(wcpr0_comp c c2 H4 u u (pr0_refl u) (Bind b)) (lift (S O) O t4) (pr0_lift t5 -t4 H17 (S O) O))))) (ty3_correct g (CHead c2 (Bind b) u) (lift (S O) O t4) t3 -(H18 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H4 u u (pr0_refl u) (Bind b)) -(lift (S O) O t4) (pr0_lift t5 t4 H17 (S O) O)))))))) t6 (sym_eq T t6 t4 -H15))) t2 H14)) u0 (sym_eq T u0 u H13))) b0 (sym_eq B b0 b H12))) H11)) H10)) -H9 H6 H7))) | (pr0_tau t5 t6 H6 u0) \Rightarrow (\lambda (H7: (eq T (THead -(Flat Cast) u0 t5) (THead (Bind b) u t2))).(\lambda (H8: (eq T t6 t4)).((let -H9 \def (eq_ind T (THead (Flat Cast) u0 t5) (\lambda (e: T).(match e in T -return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) -\Rightarrow False | (THead k _ _) \Rightarrow (match k in K return (\lambda -(_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow -True])])) I (THead (Bind b) u t2) H7) in (False_ind ((eq T t6 t4) \to ((pr0 -t5 t6) \to (ty3 g c2 t4 (THead (Bind b) u t3)))) H9)) H8 H6)))]) in (H6 -(refl_equal T (THead (Bind b) u t2)) (refl_equal T t4))))))))))))))))) -(\lambda (c: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: (ty3 g c w -u)).(\lambda (H1: ((\forall (c2: C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 -w t2) \to (ty3 g c2 t2 u))))))).(\lambda (v: T).(\lambda (t0: T).(\lambda -(H2: (ty3 g c v (THead (Bind Abst) u t0))).(\lambda (H3: ((\forall (c2: -C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 v t2) \to (ty3 g c2 t2 (THead -(Bind Abst) u t0)))))))).(\lambda (c2: C).(\lambda (H4: (wcpr0 c -c2)).(\lambda (t2: T).(\lambda (H5: (pr0 (THead (Flat Appl) w v) t2)).(let H6 -\def (match H5 in pr0 return (\lambda (t3: T).(\lambda (t4: T).(\lambda (_: -(pr0 t3 t4)).((eq T t3 (THead (Flat Appl) w v)) \to ((eq T t4 t2) \to (ty3 g -c2 t2 (THead (Flat Appl) w (THead (Bind Abst) u t0)))))))) with [(pr0_refl -t3) \Rightarrow (\lambda (H6: (eq T t3 (THead (Flat Appl) w v))).(\lambda -(H7: (eq T t3 t2)).(eq_ind T (THead (Flat Appl) w v) (\lambda (t4: T).((eq T -t4 t2) \to (ty3 g c2 t2 (THead (Flat Appl) w (THead (Bind Abst) u t0))))) -(\lambda (H8: (eq T (THead (Flat Appl) w v) t2)).(eq_ind T (THead (Flat Appl) -w v) (\lambda (t4: T).(ty3 g c2 t4 (THead (Flat Appl) w (THead (Bind Abst) u -t0)))) (ty3_appl g c2 w u (H1 c2 H4 w (pr0_refl w)) v t0 (H3 c2 H4 v -(pr0_refl v))) t2 H8)) t3 (sym_eq T t3 (THead (Flat Appl) w v) H6) H7))) | -(pr0_comp u1 u2 H6 t3 t4 H7 k) \Rightarrow (\lambda (H8: (eq T (THead k u1 -t3) (THead (Flat Appl) w v))).(\lambda (H9: (eq T (THead k u2 t4) t2)).((let -H10 \def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) -with [(TSort _) \Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t5) -\Rightarrow t5])) (THead k u1 t3) (THead (Flat Appl) w v) H8) in ((let H11 -\def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) -with [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t5 _) -\Rightarrow t5])) (THead k u1 t3) (THead (Flat Appl) w v) H8) in ((let H12 -\def (f_equal T K (\lambda (e: T).(match e in T return (\lambda (_: T).K) +(Bind b) u t2) t4)).(let H6 \def (match H5 with [(pr0_refl t5) \Rightarrow +(\lambda (H6: (eq T t5 (THead (Bind b) u t2))).(\lambda (H7: (eq T t5 +t4)).(eq_ind T (THead (Bind b) u t2) (\lambda (t6: T).((eq T t6 t4) \to (ty3 +g c2 t4 (THead (Bind b) u t3)))) (\lambda (H8: (eq T (THead (Bind b) u t2) +t4)).(eq_ind T (THead (Bind b) u t2) (\lambda (t6: T).(ty3 g c2 t6 (THead +(Bind b) u t3))) (ty3_bind g c2 u t0 (H1 c2 H4 u (pr0_refl u)) b t2 t3 (H3 +(CHead c2 (Bind b) u) (wcpr0_comp c c2 H4 u u (pr0_refl u) (Bind b)) t2 +(pr0_refl t2))) t4 H8)) t5 (sym_eq T t5 (THead (Bind b) u t2) H6) H7))) | +(pr0_comp u1 u2 H6 t5 t6 H7 k) \Rightarrow (\lambda (H8: (eq T (THead k u1 +t5) (THead (Bind b) u t2))).(\lambda (H9: (eq T (THead k u2 t6) t4)).((let +H10 \def (f_equal T T (\lambda (e: T).(match e with [(TSort _) \Rightarrow t5 +| (TLRef _) \Rightarrow t5 | (THead _ _ t7) \Rightarrow t7])) (THead k u1 t5) +(THead (Bind b) u t2) H8) in ((let H11 \def (f_equal T T (\lambda (e: +T).(match e with [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | +(THead _ t7 _) \Rightarrow t7])) (THead k u1 t5) (THead (Bind b) u t2) H8) in +((let H12 \def (f_equal T K (\lambda (e: T).(match e with [(TSort _) +\Rightarrow k | (TLRef _) \Rightarrow k | (THead k0 _ _) \Rightarrow k0])) +(THead k u1 t5) (THead (Bind b) u t2) H8) in (eq_ind K (Bind b) (\lambda (k0: +K).((eq T u1 u) \to ((eq T t5 t2) \to ((eq T (THead k0 u2 t6) t4) \to ((pr0 +u1 u2) \to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Bind b) u t3)))))))) +(\lambda (H13: (eq T u1 u)).(eq_ind T u (\lambda (t7: T).((eq T t5 t2) \to +((eq T (THead (Bind b) u2 t6) t4) \to ((pr0 t7 u2) \to ((pr0 t5 t6) \to (ty3 +g c2 t4 (THead (Bind b) u t3))))))) (\lambda (H14: (eq T t5 t2)).(eq_ind T t2 +(\lambda (t7: T).((eq T (THead (Bind b) u2 t6) t4) \to ((pr0 u u2) \to ((pr0 +t7 t6) \to (ty3 g c2 t4 (THead (Bind b) u t3)))))) (\lambda (H15: (eq T +(THead (Bind b) u2 t6) t4)).(eq_ind T (THead (Bind b) u2 t6) (\lambda (t7: +T).((pr0 u u2) \to ((pr0 t2 t6) \to (ty3 g c2 t7 (THead (Bind b) u t3))))) +(\lambda (H16: (pr0 u u2)).(\lambda (H17: (pr0 t2 t6)).(ex_ind T (\lambda +(t7: T).(ty3 g (CHead c2 (Bind b) u) t3 t7)) (ty3 g c2 (THead (Bind b) u2 t6) +(THead (Bind b) u t3)) (\lambda (x: T).(\lambda (H18: (ty3 g (CHead c2 (Bind +b) u) t3 x)).(ex_ind T (\lambda (t7: T).(ty3 g (CHead c2 (Bind b) u2) t3 t7)) +(ty3 g c2 (THead (Bind b) u2 t6) (THead (Bind b) u t3)) (\lambda (x0: +T).(\lambda (_: (ty3 g (CHead c2 (Bind b) u2) t3 x0)).(ty3_conv g c2 (THead +(Bind b) u t3) (THead (Bind b) u x) (ty3_bind g c2 u t0 (H1 c2 H4 u (pr0_refl +u)) b t3 x H18) (THead (Bind b) u2 t6) (THead (Bind b) u2 t3) (ty3_bind g c2 +u2 t0 (H1 c2 H4 u2 H16) b t6 t3 (H3 (CHead c2 (Bind b) u2) (wcpr0_comp c c2 +H4 u u2 H16 (Bind b)) t6 H17)) (pc3_pr2_x c2 (THead (Bind b) u2 t3) (THead +(Bind b) u t3) (pr2_head_1 c2 u u2 (pr2_free c2 u u2 H16) (Bind b) t3))))) +(ty3_correct g (CHead c2 (Bind b) u2) t6 t3 (H3 (CHead c2 (Bind b) u2) +(wcpr0_comp c c2 H4 u u2 H16 (Bind b)) t6 H17))))) (ty3_correct g (CHead c2 +(Bind b) u) t2 t3 (H3 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H4 u u (pr0_refl +u) (Bind b)) t2 (pr0_refl t2)))))) t4 H15)) t5 (sym_eq T t5 t2 H14))) u1 +(sym_eq T u1 u H13))) k (sym_eq K k (Bind b) H12))) H11)) H10)) H9 H6 H7))) | +(pr0_beta u0 v1 v2 H6 t5 t6 H7) \Rightarrow (\lambda (H8: (eq T (THead (Flat +Appl) v1 (THead (Bind Abst) u0 t5)) (THead (Bind b) u t2))).(\lambda (H9: (eq +T (THead (Bind Abbr) v2 t6) t4)).((let H10 \def (eq_ind T (THead (Flat Appl) +v1 (THead (Bind Abst) u0 t5)) (\lambda (e: T).(match e with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow +(match k with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I +(THead (Bind b) u t2) H8) in (False_ind ((eq T (THead (Bind Abbr) v2 t6) t4) +\to ((pr0 v1 v2) \to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Bind b) u t3))))) +H10)) H9 H6 H7))) | (pr0_upsilon b0 H6 v1 v2 H7 u1 u2 H8 t5 t6 H9) +\Rightarrow (\lambda (H10: (eq T (THead (Flat Appl) v1 (THead (Bind b0) u1 +t5)) (THead (Bind b) u t2))).(\lambda (H11: (eq T (THead (Bind b0) u2 (THead +(Flat Appl) (lift (S O) O v2) t6)) t4)).((let H12 \def (eq_ind T (THead (Flat +Appl) v1 (THead (Bind b0) u1 t5)) (\lambda (e: T).(match e with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow +(match k with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I +(THead (Bind b) u t2) H10) in (False_ind ((eq T (THead (Bind b0) u2 (THead +(Flat Appl) (lift (S O) O v2) t6)) t4) \to ((not (eq B b0 Abst)) \to ((pr0 v1 +v2) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Bind b) u +t3))))))) H12)) H11 H6 H7 H8 H9))) | (pr0_delta u1 u2 H6 t5 t6 H7 w H8) +\Rightarrow (\lambda (H9: (eq T (THead (Bind Abbr) u1 t5) (THead (Bind b) u +t2))).(\lambda (H10: (eq T (THead (Bind Abbr) u2 w) t4)).((let H11 \def +(f_equal T T (\lambda (e: T).(match e with [(TSort _) \Rightarrow t5 | (TLRef +_) \Rightarrow t5 | (THead _ _ t7) \Rightarrow t7])) (THead (Bind Abbr) u1 +t5) (THead (Bind b) u t2) H9) in ((let H12 \def (f_equal T T (\lambda (e: +T).(match e with [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | +(THead _ t7 _) \Rightarrow t7])) (THead (Bind Abbr) u1 t5) (THead (Bind b) u +t2) H9) in ((let H13 \def (f_equal T B (\lambda (e: T).(match e with [(TSort +_) \Rightarrow Abbr | (TLRef _) \Rightarrow Abbr | (THead k _ _) \Rightarrow +(match k with [(Bind b0) \Rightarrow b0 | (Flat _) \Rightarrow Abbr])])) +(THead (Bind Abbr) u1 t5) (THead (Bind b) u t2) H9) in (eq_ind B Abbr +(\lambda (b0: B).((eq T u1 u) \to ((eq T t5 t2) \to ((eq T (THead (Bind Abbr) +u2 w) t4) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to ((subst0 O u2 t6 w) \to (ty3 +g c2 t4 (THead (Bind b0) u t3))))))))) (\lambda (H14: (eq T u1 u)).(eq_ind T +u (\lambda (t7: T).((eq T t5 t2) \to ((eq T (THead (Bind Abbr) u2 w) t4) \to +((pr0 t7 u2) \to ((pr0 t5 t6) \to ((subst0 O u2 t6 w) \to (ty3 g c2 t4 (THead +(Bind Abbr) u t3)))))))) (\lambda (H15: (eq T t5 t2)).(eq_ind T t2 (\lambda +(t7: T).((eq T (THead (Bind Abbr) u2 w) t4) \to ((pr0 u u2) \to ((pr0 t7 t6) +\to ((subst0 O u2 t6 w) \to (ty3 g c2 t4 (THead (Bind Abbr) u t3))))))) +(\lambda (H16: (eq T (THead (Bind Abbr) u2 w) t4)).(eq_ind T (THead (Bind +Abbr) u2 w) (\lambda (t7: T).((pr0 u u2) \to ((pr0 t2 t6) \to ((subst0 O u2 +t6 w) \to (ty3 g c2 t7 (THead (Bind Abbr) u t3)))))) (\lambda (H17: (pr0 u +u2)).(\lambda (H18: (pr0 t2 t6)).(\lambda (H19: (subst0 O u2 t6 w)).(let H20 +\def (eq_ind_r B b (\lambda (b0: B).(\forall (c3: C).((wcpr0 (CHead c (Bind +b0) u) c3) \to (\forall (t7: T).((pr0 t2 t7) \to (ty3 g c3 t7 t3)))))) H3 +Abbr H13) in (let H21 \def (eq_ind_r B b (\lambda (b0: B).(ty3 g (CHead c +(Bind b0) u) t2 t3)) H2 Abbr H13) in (ex_ind T (\lambda (t7: T).(ty3 g (CHead +c2 (Bind Abbr) u) t3 t7)) (ty3 g c2 (THead (Bind Abbr) u2 w) (THead (Bind +Abbr) u t3)) (\lambda (x: T).(\lambda (H22: (ty3 g (CHead c2 (Bind Abbr) u) +t3 x)).(ex_ind T (\lambda (t7: T).(ty3 g (CHead c2 (Bind Abbr) u2) t3 t7)) +(ty3 g c2 (THead (Bind Abbr) u2 w) (THead (Bind Abbr) u t3)) (\lambda (x0: +T).(\lambda (_: (ty3 g (CHead c2 (Bind Abbr) u2) t3 x0)).(ty3_conv g c2 +(THead (Bind Abbr) u t3) (THead (Bind Abbr) u x) (ty3_bind g c2 u t0 (H1 c2 +H4 u (pr0_refl u)) Abbr t3 x H22) (THead (Bind Abbr) u2 w) (THead (Bind Abbr) +u2 t3) (ty3_bind g c2 u2 t0 (H1 c2 H4 u2 H17) Abbr w t3 (ty3_subst0 g (CHead +c2 (Bind Abbr) u2) t6 t3 (H20 (CHead c2 (Bind Abbr) u2) (wcpr0_comp c c2 H4 u +u2 H17 (Bind Abbr)) t6 H18) c2 u2 O (getl_refl Abbr c2 u2) w H19)) (pc3_pr2_x +c2 (THead (Bind Abbr) u2 t3) (THead (Bind Abbr) u t3) (pr2_head_1 c2 u u2 +(pr2_free c2 u u2 H17) (Bind Abbr) t3))))) (ty3_correct g (CHead c2 (Bind +Abbr) u2) t6 t3 (H20 (CHead c2 (Bind Abbr) u2) (wcpr0_comp c c2 H4 u u2 H17 +(Bind Abbr)) t6 H18))))) (ty3_correct g (CHead c2 (Bind Abbr) u) t2 t3 (H20 +(CHead c2 (Bind Abbr) u) (wcpr0_comp c c2 H4 u u (pr0_refl u) (Bind Abbr)) t2 +(pr0_refl t2))))))))) t4 H16)) t5 (sym_eq T t5 t2 H15))) u1 (sym_eq T u1 u +H14))) b H13)) H12)) H11)) H10 H6 H7 H8))) | (pr0_zeta b0 H6 t5 t6 H7 u0) +\Rightarrow (\lambda (H8: (eq T (THead (Bind b0) u0 (lift (S O) O t5)) (THead +(Bind b) u t2))).(\lambda (H9: (eq T t6 t4)).((let H10 \def (f_equal T T +(\lambda (e: T).(match e with [(TSort _) \Rightarrow (lref_map (\lambda (x: +nat).(plus x (S O))) O t5) | (TLRef _) \Rightarrow (lref_map (\lambda (x: +nat).(plus x (S O))) O t5) | (THead _ _ t7) \Rightarrow t7])) (THead (Bind +b0) u0 (lift (S O) O t5)) (THead (Bind b) u t2) H8) in ((let H11 \def +(f_equal T T (\lambda (e: T).(match e with [(TSort _) \Rightarrow u0 | (TLRef +_) \Rightarrow u0 | (THead _ t7 _) \Rightarrow t7])) (THead (Bind b0) u0 +(lift (S O) O t5)) (THead (Bind b) u t2) H8) in ((let H12 \def (f_equal T B +(\lambda (e: T).(match e with [(TSort _) \Rightarrow b0 | (TLRef _) +\Rightarrow b0 | (THead k _ _) \Rightarrow (match k with [(Bind b1) +\Rightarrow b1 | (Flat _) \Rightarrow b0])])) (THead (Bind b0) u0 (lift (S O) +O t5)) (THead (Bind b) u t2) H8) in (eq_ind B b (\lambda (b1: B).((eq T u0 u) +\to ((eq T (lift (S O) O t5) t2) \to ((eq T t6 t4) \to ((not (eq B b1 Abst)) +\to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Bind b) u t3)))))))) (\lambda (H13: +(eq T u0 u)).(eq_ind T u (\lambda (_: T).((eq T (lift (S O) O t5) t2) \to +((eq T t6 t4) \to ((not (eq B b Abst)) \to ((pr0 t5 t6) \to (ty3 g c2 t4 +(THead (Bind b) u t3))))))) (\lambda (H14: (eq T (lift (S O) O t5) +t2)).(eq_ind T (lift (S O) O t5) (\lambda (_: T).((eq T t6 t4) \to ((not (eq +B b Abst)) \to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Bind b) u t3)))))) +(\lambda (H15: (eq T t6 t4)).(eq_ind T t4 (\lambda (t7: T).((not (eq B b +Abst)) \to ((pr0 t5 t7) \to (ty3 g c2 t4 (THead (Bind b) u t3))))) (\lambda +(H16: (not (eq B b Abst))).(\lambda (H17: (pr0 t5 t4)).(let H18 \def +(eq_ind_r T t2 (\lambda (t7: T).(\forall (c3: C).((wcpr0 (CHead c (Bind b) u) +c3) \to (\forall (t8: T).((pr0 t7 t8) \to (ty3 g c3 t8 t3)))))) H3 (lift (S +O) O t5) H14) in (let H19 \def (eq_ind_r T t2 (\lambda (t7: T).(ty3 g (CHead +c (Bind b) u) t7 t3)) H2 (lift (S O) O t5) H14) in (ex_ind T (\lambda (t7: +T).(ty3 g (CHead c2 (Bind b) u) t3 t7)) (ty3 g c2 t4 (THead (Bind b) u t3)) +(\lambda (x: T).(\lambda (H20: (ty3 g (CHead c2 (Bind b) u) t3 x)).(B_ind +(\lambda (b1: B).((not (eq B b1 Abst)) \to ((ty3 g (CHead c2 (Bind b1) u) t3 +x) \to ((ty3 g (CHead c2 (Bind b1) u) (lift (S O) O t4) t3) \to (ty3 g c2 t4 +(THead (Bind b1) u t3)))))) (\lambda (H21: (not (eq B Abbr Abst))).(\lambda +(H22: (ty3 g (CHead c2 (Bind Abbr) u) t3 x)).(\lambda (H23: (ty3 g (CHead c2 +(Bind Abbr) u) (lift (S O) O t4) t3)).(let H24 \def (ty3_gen_cabbr g (CHead +c2 (Bind Abbr) u) (lift (S O) O t4) t3 H23 c2 u O (getl_refl Abbr c2 u) +(CHead c2 (Bind Abbr) u) (csubst1_refl O u (CHead c2 (Bind Abbr) u)) c2 +(drop_drop (Bind Abbr) O c2 c2 (drop_refl c2) u)) in (ex3_2_ind T T (\lambda +(y1: T).(\lambda (_: T).(subst1 O u (lift (S O) O t4) (lift (S O) O y1)))) +(\lambda (_: T).(\lambda (y2: T).(subst1 O u t3 (lift (S O) O y2)))) (\lambda +(y1: T).(\lambda (y2: T).(ty3 g c2 y1 y2))) (ty3 g c2 t4 (THead (Bind Abbr) u +t3)) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H25: (subst1 O u (lift (S O) +O t4) (lift (S O) O x0))).(\lambda (H26: (subst1 O u t3 (lift (S O) O +x1))).(\lambda (H27: (ty3 g c2 x0 x1)).(let H28 \def (eq_ind T x0 (\lambda +(t7: T).(ty3 g c2 t7 x1)) H27 t4 (lift_inj x0 t4 (S O) O (subst1_gen_lift_eq +t4 u (lift (S O) O x0) (S O) O O (le_O_n O) (eq_ind_r nat (plus (S O) O) +(\lambda (n: nat).(lt O n)) (le_n (plus (S O) O)) (plus O (S O)) (plus_sym O +(S O))) H25))) in (ty3_conv g c2 (THead (Bind Abbr) u t3) (THead (Bind Abbr) +u x) (ty3_bind g c2 u t0 (H1 c2 H4 u (pr0_refl u)) Abbr t3 x H22) t4 x1 H28 +(pc3_pr3_x c2 x1 (THead (Bind Abbr) u t3) (pr3_t (THead (Bind Abbr) u (lift +(S O) O x1)) (THead (Bind Abbr) u t3) c2 (pr3_pr2 c2 (THead (Bind Abbr) u t3) +(THead (Bind Abbr) u (lift (S O) O x1)) (pr2_free c2 (THead (Bind Abbr) u t3) +(THead (Bind Abbr) u (lift (S O) O x1)) (pr0_delta1 u u (pr0_refl u) t3 t3 +(pr0_refl t3) (lift (S O) O x1) H26))) x1 (pr3_pr2 c2 (THead (Bind Abbr) u +(lift (S O) O x1)) x1 (pr2_free c2 (THead (Bind Abbr) u (lift (S O) O x1)) x1 +(pr0_zeta Abbr H21 x1 x1 (pr0_refl x1) u)))))))))))) H24))))) (\lambda (H21: +(not (eq B Abst Abst))).(\lambda (_: (ty3 g (CHead c2 (Bind Abst) u) t3 +x)).(\lambda (_: (ty3 g (CHead c2 (Bind Abst) u) (lift (S O) O t4) t3)).(let +H24 \def (match (H21 (refl_equal B Abst)) in False with []) in H24)))) +(\lambda (H21: (not (eq B Void Abst))).(\lambda (H22: (ty3 g (CHead c2 (Bind +Void) u) t3 x)).(\lambda (H23: (ty3 g (CHead c2 (Bind Void) u) (lift (S O) O +t4) t3)).(let H24 \def (ty3_gen_cvoid g (CHead c2 (Bind Void) u) (lift (S O) +O t4) t3 H23 c2 u O (getl_refl Void c2 u) c2 (drop_drop (Bind Void) O c2 c2 +(drop_refl c2) u)) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T +(lift (S O) O t4) (lift (S O) O y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T +t3 (lift (S O) O y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g c2 y1 y2))) +(ty3 g c2 t4 (THead (Bind Void) u t3)) (\lambda (x0: T).(\lambda (x1: +T).(\lambda (H25: (eq T (lift (S O) O t4) (lift (S O) O x0))).(\lambda (H26: +(eq T t3 (lift (S O) O x1))).(\lambda (H27: (ty3 g c2 x0 x1)).(let H28 \def +(eq_ind T t3 (\lambda (t7: T).(ty3 g (CHead c2 (Bind Void) u) t7 x)) H22 +(lift (S O) O x1) H26) in (eq_ind_r T (lift (S O) O x1) (\lambda (t7: T).(ty3 +g c2 t4 (THead (Bind Void) u t7))) (let H29 \def (eq_ind_r T x0 (\lambda (t7: +T).(ty3 g c2 t7 x1)) H27 t4 (lift_inj t4 x0 (S O) O H25)) in (ty3_conv g c2 +(THead (Bind Void) u (lift (S O) O x1)) (THead (Bind Void) u x) (ty3_bind g +c2 u t0 (H1 c2 H4 u (pr0_refl u)) Void (lift (S O) O x1) x H28) t4 x1 H29 +(pc3_s c2 x1 (THead (Bind Void) u (lift (S O) O x1)) (pc3_pr2_r c2 (THead +(Bind Void) u (lift (S O) O x1)) x1 (pr2_free c2 (THead (Bind Void) u (lift +(S O) O x1)) x1 (pr0_zeta Void H21 x1 x1 (pr0_refl x1) u)))))) t3 H26))))))) +H24))))) b H16 H20 (H18 (CHead c2 (Bind b) u) (wcpr0_comp c c2 H4 u u +(pr0_refl u) (Bind b)) (lift (S O) O t4) (pr0_lift t5 t4 H17 (S O) O))))) +(ty3_correct g (CHead c2 (Bind b) u) (lift (S O) O t4) t3 (H18 (CHead c2 +(Bind b) u) (wcpr0_comp c c2 H4 u u (pr0_refl u) (Bind b)) (lift (S O) O t4) +(pr0_lift t5 t4 H17 (S O) O)))))))) t6 (sym_eq T t6 t4 H15))) t2 H14)) u0 +(sym_eq T u0 u H13))) b0 (sym_eq B b0 b H12))) H11)) H10)) H9 H6 H7))) | +(pr0_tau t5 t6 H6 u0) \Rightarrow (\lambda (H7: (eq T (THead (Flat Cast) u0 +t5) (THead (Bind b) u t2))).(\lambda (H8: (eq T t6 t4)).((let H9 \def (eq_ind +T (THead (Flat Cast) u0 t5) (\lambda (e: T).(match e with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow +(match k with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I +(THead (Bind b) u t2) H7) in (False_ind ((eq T t6 t4) \to ((pr0 t5 t6) \to +(ty3 g c2 t4 (THead (Bind b) u t3)))) H9)) H8 H6)))]) in (H6 (refl_equal T +(THead (Bind b) u t2)) (refl_equal T t4))))))))))))))))) (\lambda (c: +C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: (ty3 g c w u)).(\lambda (H1: +((\forall (c2: C).((wcpr0 c c2) \to (\forall (t2: T).((pr0 w t2) \to (ty3 g +c2 t2 u))))))).(\lambda (v: T).(\lambda (t0: T).(\lambda (H2: (ty3 g c v +(THead (Bind Abst) u t0))).(\lambda (H3: ((\forall (c2: C).((wcpr0 c c2) \to +(\forall (t2: T).((pr0 v t2) \to (ty3 g c2 t2 (THead (Bind Abst) u +t0)))))))).(\lambda (c2: C).(\lambda (H4: (wcpr0 c c2)).(\lambda (t2: +T).(\lambda (H5: (pr0 (THead (Flat Appl) w v) t2)).(let H6 \def (match H5 +with [(pr0_refl t3) \Rightarrow (\lambda (H6: (eq T t3 (THead (Flat Appl) w +v))).(\lambda (H7: (eq T t3 t2)).(eq_ind T (THead (Flat Appl) w v) (\lambda +(t4: T).((eq T t4 t2) \to (ty3 g c2 t2 (THead (Flat Appl) w (THead (Bind +Abst) u t0))))) (\lambda (H8: (eq T (THead (Flat Appl) w v) t2)).(eq_ind T +(THead (Flat Appl) w v) (\lambda (t4: T).(ty3 g c2 t4 (THead (Flat Appl) w +(THead (Bind Abst) u t0)))) (ty3_appl g c2 w u (H1 c2 H4 w (pr0_refl w)) v t0 +(H3 c2 H4 v (pr0_refl v))) t2 H8)) t3 (sym_eq T t3 (THead (Flat Appl) w v) +H6) H7))) | (pr0_comp u1 u2 H6 t3 t4 H7 k) \Rightarrow (\lambda (H8: (eq T +(THead k u1 t3) (THead (Flat Appl) w v))).(\lambda (H9: (eq T (THead k u2 t4) +t2)).((let H10 \def (f_equal T T (\lambda (e: T).(match e with [(TSort _) +\Rightarrow t3 | (TLRef _) \Rightarrow t3 | (THead _ _ t5) \Rightarrow t5])) +(THead k u1 t3) (THead (Flat Appl) w v) H8) in ((let H11 \def (f_equal T T +(\lambda (e: T).(match e with [(TSort _) \Rightarrow u1 | (TLRef _) +\Rightarrow u1 | (THead _ t5 _) \Rightarrow t5])) (THead k u1 t3) (THead +(Flat Appl) w v) H8) in ((let H12 \def (f_equal T K (\lambda (e: T).(match e with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k0 _ _) \Rightarrow k0])) (THead k u1 t3) (THead (Flat Appl) w v) H8) in (eq_ind K (Flat Appl) (\lambda (k0: K).((eq T u1 w) \to ((eq T t3 v) \to ((eq T (THead @@ -359,31 +336,30 @@ u t0) (H3 c2 H4 v (pr0_refl v)))))) t2 H15)) t3 (sym_eq T t3 v H14))) u1 H7))) | (pr0_beta u0 v1 v2 H6 t3 t4 H7) \Rightarrow (\lambda (H8: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u0 t3)) (THead (Flat Appl) w v))).(\lambda (H9: (eq T (THead (Bind Abbr) v2 t4) t2)).((let H10 \def -(f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with -[(TSort _) \Rightarrow (THead (Bind Abst) u0 t3) | (TLRef _) \Rightarrow -(THead (Bind Abst) u0 t3) | (THead _ _ t5) \Rightarrow t5])) (THead (Flat -Appl) v1 (THead (Bind Abst) u0 t3)) (THead (Flat Appl) w v) H8) in ((let H11 -\def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) -with [(TSort _) \Rightarrow v1 | (TLRef _) \Rightarrow v1 | (THead _ t5 _) -\Rightarrow t5])) (THead (Flat Appl) v1 (THead (Bind Abst) u0 t3)) (THead -(Flat Appl) w v) H8) in (eq_ind T w (\lambda (t5: T).((eq T (THead (Bind -Abst) u0 t3) v) \to ((eq T (THead (Bind Abbr) v2 t4) t2) \to ((pr0 t5 v2) \to -((pr0 t3 t4) \to (ty3 g c2 t2 (THead (Flat Appl) w (THead (Bind Abst) u -t0)))))))) (\lambda (H12: (eq T (THead (Bind Abst) u0 t3) v)).(eq_ind T -(THead (Bind Abst) u0 t3) (\lambda (_: T).((eq T (THead (Bind Abbr) v2 t4) -t2) \to ((pr0 w v2) \to ((pr0 t3 t4) \to (ty3 g c2 t2 (THead (Flat Appl) w -(THead (Bind Abst) u t0))))))) (\lambda (H13: (eq T (THead (Bind Abbr) v2 t4) -t2)).(eq_ind T (THead (Bind Abbr) v2 t4) (\lambda (t5: T).((pr0 w v2) \to -((pr0 t3 t4) \to (ty3 g c2 t5 (THead (Flat Appl) w (THead (Bind Abst) u -t0)))))) (\lambda (H14: (pr0 w v2)).(\lambda (H15: (pr0 t3 t4)).(let H16 \def -(eq_ind_r T v (\lambda (t5: T).(\forall (c3: C).((wcpr0 c c3) \to (\forall -(t6: T).((pr0 t5 t6) \to (ty3 g c3 t6 (THead (Bind Abst) u t0))))))) H3 -(THead (Bind Abst) u0 t3) H12) in (let H17 \def (eq_ind_r T v (\lambda (t5: -T).(ty3 g c t5 (THead (Bind Abst) u t0))) H2 (THead (Bind Abst) u0 t3) H12) -in (ex_ind T (\lambda (t5: T).(ty3 g c2 (THead (Bind Abst) u t0) t5)) (ty3 g -c2 (THead (Bind Abbr) v2 t4) (THead (Flat Appl) w (THead (Bind Abst) u t0))) -(\lambda (x: T).(\lambda (H18: (ty3 g c2 (THead (Bind Abst) u t0) -x)).(ex3_2_ind T T (\lambda (t5: T).(\lambda (_: T).(pc3 c2 (THead (Bind +(f_equal T T (\lambda (e: T).(match e with [(TSort _) \Rightarrow (THead +(Bind Abst) u0 t3) | (TLRef _) \Rightarrow (THead (Bind Abst) u0 t3) | (THead +_ _ t5) \Rightarrow t5])) (THead (Flat Appl) v1 (THead (Bind Abst) u0 t3)) +(THead (Flat Appl) w v) H8) in ((let H11 \def (f_equal T T (\lambda (e: +T).(match e with [(TSort _) \Rightarrow v1 | (TLRef _) \Rightarrow v1 | +(THead _ t5 _) \Rightarrow t5])) (THead (Flat Appl) v1 (THead (Bind Abst) u0 +t3)) (THead (Flat Appl) w v) H8) in (eq_ind T w (\lambda (t5: T).((eq T +(THead (Bind Abst) u0 t3) v) \to ((eq T (THead (Bind Abbr) v2 t4) t2) \to +((pr0 t5 v2) \to ((pr0 t3 t4) \to (ty3 g c2 t2 (THead (Flat Appl) w (THead +(Bind Abst) u t0)))))))) (\lambda (H12: (eq T (THead (Bind Abst) u0 t3) +v)).(eq_ind T (THead (Bind Abst) u0 t3) (\lambda (_: T).((eq T (THead (Bind +Abbr) v2 t4) t2) \to ((pr0 w v2) \to ((pr0 t3 t4) \to (ty3 g c2 t2 (THead +(Flat Appl) w (THead (Bind Abst) u t0))))))) (\lambda (H13: (eq T (THead +(Bind Abbr) v2 t4) t2)).(eq_ind T (THead (Bind Abbr) v2 t4) (\lambda (t5: +T).((pr0 w v2) \to ((pr0 t3 t4) \to (ty3 g c2 t5 (THead (Flat Appl) w (THead +(Bind Abst) u t0)))))) (\lambda (H14: (pr0 w v2)).(\lambda (H15: (pr0 t3 +t4)).(let H16 \def (eq_ind_r T v (\lambda (t5: T).(\forall (c3: C).((wcpr0 c +c3) \to (\forall (t6: T).((pr0 t5 t6) \to (ty3 g c3 t6 (THead (Bind Abst) u +t0))))))) H3 (THead (Bind Abst) u0 t3) H12) in (let H17 \def (eq_ind_r T v +(\lambda (t5: T).(ty3 g c t5 (THead (Bind Abst) u t0))) H2 (THead (Bind Abst) +u0 t3) H12) in (ex_ind T (\lambda (t5: T).(ty3 g c2 (THead (Bind Abst) u t0) +t5)) (ty3 g c2 (THead (Bind Abbr) v2 t4) (THead (Flat Appl) w (THead (Bind +Abst) u t0))) (\lambda (x: T).(\lambda (H18: (ty3 g c2 (THead (Bind Abst) u +t0) x)).(ex3_2_ind T T (\lambda (t5: T).(\lambda (_: T).(pc3 c2 (THead (Bind Abst) u t5) x))) (\lambda (_: T).(\lambda (t6: T).(ty3 g c2 u t6))) (\lambda (t5: T).(\lambda (_: T).(ty3 g (CHead c2 (Bind Abst) u) t0 t5))) (ty3 g c2 (THead (Bind Abbr) v2 t4) (THead (Flat Appl) w (THead (Bind Abst) u t0))) @@ -420,18 +396,17 @@ t3))))))))) t2 H13)) v H12)) v1 (sym_eq T v1 w H11))) H10)) H9 H6 H7))) | (pr0_upsilon b H6 v1 v2 H7 u1 u2 H8 t3 t4 H9) \Rightarrow (\lambda (H10: (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t3)) (THead (Flat Appl) w v))).(\lambda (H11: (eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O -v2) t4)) t2)).((let H12 \def (f_equal T T (\lambda (e: T).(match e in T -return (\lambda (_: T).T) with [(TSort _) \Rightarrow (THead (Bind b) u1 t3) -| (TLRef _) \Rightarrow (THead (Bind b) u1 t3) | (THead _ _ t5) \Rightarrow -t5])) (THead (Flat Appl) v1 (THead (Bind b) u1 t3)) (THead (Flat Appl) w v) -H10) in ((let H13 \def (f_equal T T (\lambda (e: T).(match e in T return -(\lambda (_: T).T) with [(TSort _) \Rightarrow v1 | (TLRef _) \Rightarrow v1 -| (THead _ t5 _) \Rightarrow t5])) (THead (Flat Appl) v1 (THead (Bind b) u1 -t3)) (THead (Flat Appl) w v) H10) in (eq_ind T w (\lambda (t5: T).((eq T -(THead (Bind b) u1 t3) v) \to ((eq T (THead (Bind b) u2 (THead (Flat Appl) -(lift (S O) O v2) t4)) t2) \to ((not (eq B b Abst)) \to ((pr0 t5 v2) \to -((pr0 u1 u2) \to ((pr0 t3 t4) \to (ty3 g c2 t2 (THead (Flat Appl) w (THead -(Bind Abst) u t0)))))))))) (\lambda (H14: (eq T (THead (Bind b) u1 t3) +v2) t4)) t2)).((let H12 \def (f_equal T T (\lambda (e: T).(match e with +[(TSort _) \Rightarrow (THead (Bind b) u1 t3) | (TLRef _) \Rightarrow (THead +(Bind b) u1 t3) | (THead _ _ t5) \Rightarrow t5])) (THead (Flat Appl) v1 +(THead (Bind b) u1 t3)) (THead (Flat Appl) w v) H10) in ((let H13 \def +(f_equal T T (\lambda (e: T).(match e with [(TSort _) \Rightarrow v1 | (TLRef +_) \Rightarrow v1 | (THead _ t5 _) \Rightarrow t5])) (THead (Flat Appl) v1 +(THead (Bind b) u1 t3)) (THead (Flat Appl) w v) H10) in (eq_ind T w (\lambda +(t5: T).((eq T (THead (Bind b) u1 t3) v) \to ((eq T (THead (Bind b) u2 (THead +(Flat Appl) (lift (S O) O v2) t4)) t2) \to ((not (eq B b Abst)) \to ((pr0 t5 +v2) \to ((pr0 u1 u2) \to ((pr0 t3 t4) \to (ty3 g c2 t2 (THead (Flat Appl) w +(THead (Bind Abst) u t0)))))))))) (\lambda (H14: (eq T (THead (Bind b) u1 t3) v)).(eq_ind T (THead (Bind b) u1 t3) (\lambda (_: T).((eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t4)) t2) \to ((not (eq B b Abst)) \to ((pr0 w v2) \to ((pr0 u1 u2) \to ((pr0 t3 t4) \to (ty3 g c2 t2 (THead (Flat @@ -520,146 +495,131 @@ Abst) u t0) (H20 c2 H4 (THead (Bind b) u2 t4) (pr0_comp u1 u2 H18 t3 t4 H19 H8 H9))) | (pr0_delta u1 u2 H6 t3 t4 H7 w0 H8) \Rightarrow (\lambda (H9: (eq T (THead (Bind Abbr) u1 t3) (THead (Flat Appl) w v))).(\lambda (H10: (eq T (THead (Bind Abbr) u2 w0) t2)).((let H11 \def (eq_ind T (THead (Bind Abbr) u1 -t3) (\lambda (e: T).(match e in T return (\lambda (_: T).Prop) with [(TSort -_) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) -\Rightarrow (match k in K return (\lambda (_: K).Prop) with [(Bind _) +t3) (\lambda (e: T).(match e with [(TSort _) \Rightarrow False | (TLRef _) +\Rightarrow False | (THead k _ _) \Rightarrow (match k with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Appl) w v) H9) in (False_ind ((eq T (THead (Bind Abbr) u2 w0) t2) \to ((pr0 u1 u2) \to ((pr0 t3 t4) \to ((subst0 O u2 t4 w0) \to (ty3 g c2 t2 (THead (Flat Appl) w (THead (Bind Abst) u t0))))))) H11)) H10 H6 H7 H8))) | (pr0_zeta b H6 t3 t4 H7 u0) \Rightarrow (\lambda (H8: (eq T (THead (Bind b) u0 (lift (S O) O t3)) (THead (Flat Appl) w v))).(\lambda (H9: (eq T t4 t2)).((let H10 \def (eq_ind -T (THead (Bind b) u0 (lift (S O) O t3)) (\lambda (e: T).(match e in T return -(\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) -\Rightarrow False | (THead k _ _) \Rightarrow (match k in K return (\lambda -(_: K).Prop) with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow +T (THead (Bind b) u0 (lift (S O) O t3)) (\lambda (e: T).(match e with [(TSort +_) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) +\Rightarrow (match k with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Appl) w v) H8) in (False_ind ((eq T t4 t2) \to ((not (eq B b Abst)) \to ((pr0 t3 t4) \to (ty3 g c2 t2 (THead (Flat Appl) w (THead (Bind Abst) u t0)))))) H10)) H9 H6 H7))) | (pr0_tau t3 t4 H6 u0) \Rightarrow (\lambda (H7: (eq T (THead (Flat Cast) u0 t3) (THead (Flat Appl) w v))).(\lambda (H8: (eq T t4 t2)).((let H9 \def (eq_ind T (THead (Flat Cast) -u0 t3) (\lambda (e: T).(match e in T return (\lambda (_: T).Prop) with -[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) -\Rightarrow (match k in K return (\lambda (_: K).Prop) with [(Bind _) -\Rightarrow False | (Flat f) \Rightarrow (match f in F return (\lambda (_: -F).Prop) with [Appl \Rightarrow False | Cast \Rightarrow True])])])) I (THead -(Flat Appl) w v) H7) in (False_ind ((eq T t4 t2) \to ((pr0 t3 t4) \to (ty3 g -c2 t2 (THead (Flat Appl) w (THead (Bind Abst) u t0))))) H9)) H8 H6)))]) in -(H6 (refl_equal T (THead (Flat Appl) w v)) (refl_equal T t2)))))))))))))))) -(\lambda (c: C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (ty3 g c t2 -t3)).(\lambda (H1: ((\forall (c2: C).((wcpr0 c c2) \to (\forall (t4: T).((pr0 -t2 t4) \to (ty3 g c2 t4 t3))))))).(\lambda (t0: T).(\lambda (_: (ty3 g c t3 -t0)).(\lambda (H3: ((\forall (c2: C).((wcpr0 c c2) \to (\forall (t4: T).((pr0 -t3 t4) \to (ty3 g c2 t4 t0))))))).(\lambda (c2: C).(\lambda (H4: (wcpr0 c -c2)).(\lambda (t4: T).(\lambda (H5: (pr0 (THead (Flat Cast) t3 t2) t4)).(let -H6 \def (match H5 in pr0 return (\lambda (t5: T).(\lambda (t6: T).(\lambda -(_: (pr0 t5 t6)).((eq T t5 (THead (Flat Cast) t3 t2)) \to ((eq T t6 t4) \to -(ty3 g c2 t4 (THead (Flat Cast) t0 t3))))))) with [(pr0_refl t5) \Rightarrow -(\lambda (H6: (eq T t5 (THead (Flat Cast) t3 t2))).(\lambda (H7: (eq T t5 -t4)).(eq_ind T (THead (Flat Cast) t3 t2) (\lambda (t6: T).((eq T t6 t4) \to -(ty3 g c2 t4 (THead (Flat Cast) t0 t3)))) (\lambda (H8: (eq T (THead (Flat -Cast) t3 t2) t4)).(eq_ind T (THead (Flat Cast) t3 t2) (\lambda (t6: T).(ty3 g -c2 t6 (THead (Flat Cast) t0 t3))) (ty3_cast g c2 t2 t3 (H1 c2 H4 t2 (pr0_refl -t2)) t0 (H3 c2 H4 t3 (pr0_refl t3))) t4 H8)) t5 (sym_eq T t5 (THead (Flat -Cast) t3 t2) H6) H7))) | (pr0_comp u1 u2 H6 t5 t6 H7 k) \Rightarrow (\lambda -(H8: (eq T (THead k u1 t5) (THead (Flat Cast) t3 t2))).(\lambda (H9: (eq T -(THead k u2 t6) t4)).((let H10 \def (f_equal T T (\lambda (e: T).(match e in -T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t5 | (TLRef _) -\Rightarrow t5 | (THead _ _ t7) \Rightarrow t7])) (THead k u1 t5) (THead +u0 t3) (\lambda (e: T).(match e with [(TSort _) \Rightarrow False | (TLRef _) +\Rightarrow False | (THead k _ _) \Rightarrow (match k with [(Bind _) +\Rightarrow False | (Flat f) \Rightarrow (match f with [Appl \Rightarrow +False | Cast \Rightarrow True])])])) I (THead (Flat Appl) w v) H7) in +(False_ind ((eq T t4 t2) \to ((pr0 t3 t4) \to (ty3 g c2 t2 (THead (Flat Appl) +w (THead (Bind Abst) u t0))))) H9)) H8 H6)))]) in (H6 (refl_equal T (THead +(Flat Appl) w v)) (refl_equal T t2)))))))))))))))) (\lambda (c: C).(\lambda +(t2: T).(\lambda (t3: T).(\lambda (_: (ty3 g c t2 t3)).(\lambda (H1: +((\forall (c2: C).((wcpr0 c c2) \to (\forall (t4: T).((pr0 t2 t4) \to (ty3 g +c2 t4 t3))))))).(\lambda (t0: T).(\lambda (_: (ty3 g c t3 t0)).(\lambda (H3: +((\forall (c2: C).((wcpr0 c c2) \to (\forall (t4: T).((pr0 t3 t4) \to (ty3 g +c2 t4 t0))))))).(\lambda (c2: C).(\lambda (H4: (wcpr0 c c2)).(\lambda (t4: +T).(\lambda (H5: (pr0 (THead (Flat Cast) t3 t2) t4)).(let H6 \def (match H5 +with [(pr0_refl t5) \Rightarrow (\lambda (H6: (eq T t5 (THead (Flat Cast) t3 +t2))).(\lambda (H7: (eq T t5 t4)).(eq_ind T (THead (Flat Cast) t3 t2) +(\lambda (t6: T).((eq T t6 t4) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3)))) +(\lambda (H8: (eq T (THead (Flat Cast) t3 t2) t4)).(eq_ind T (THead (Flat +Cast) t3 t2) (\lambda (t6: T).(ty3 g c2 t6 (THead (Flat Cast) t0 t3))) +(ty3_cast g c2 t2 t3 (H1 c2 H4 t2 (pr0_refl t2)) t0 (H3 c2 H4 t3 (pr0_refl +t3))) t4 H8)) t5 (sym_eq T t5 (THead (Flat Cast) t3 t2) H6) H7))) | (pr0_comp +u1 u2 H6 t5 t6 H7 k) \Rightarrow (\lambda (H8: (eq T (THead k u1 t5) (THead +(Flat Cast) t3 t2))).(\lambda (H9: (eq T (THead k u2 t6) t4)).((let H10 \def +(f_equal T T (\lambda (e: T).(match e with [(TSort _) \Rightarrow t5 | (TLRef +_) \Rightarrow t5 | (THead _ _ t7) \Rightarrow t7])) (THead k u1 t5) (THead (Flat Cast) t3 t2) H8) in ((let H11 \def (f_equal T T (\lambda (e: T).(match -e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow u1 | (TLRef _) -\Rightarrow u1 | (THead _ t7 _) \Rightarrow t7])) (THead k u1 t5) (THead -(Flat Cast) t3 t2) H8) in ((let H12 \def (f_equal T K (\lambda (e: T).(match -e in T return (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _) -\Rightarrow k | (THead k0 _ _) \Rightarrow k0])) (THead k u1 t5) (THead (Flat -Cast) t3 t2) H8) in (eq_ind K (Flat Cast) (\lambda (k0: K).((eq T u1 t3) \to -((eq T t5 t2) \to ((eq T (THead k0 u2 t6) t4) \to ((pr0 u1 u2) \to ((pr0 t5 -t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3)))))))) (\lambda (H13: (eq T u1 -t3)).(eq_ind T t3 (\lambda (t7: T).((eq T t5 t2) \to ((eq T (THead (Flat -Cast) u2 t6) t4) \to ((pr0 t7 u2) \to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead -(Flat Cast) t0 t3))))))) (\lambda (H14: (eq T t5 t2)).(eq_ind T t2 (\lambda -(t7: T).((eq T (THead (Flat Cast) u2 t6) t4) \to ((pr0 t3 u2) \to ((pr0 t7 -t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3)))))) (\lambda (H15: (eq T -(THead (Flat Cast) u2 t6) t4)).(eq_ind T (THead (Flat Cast) u2 t6) (\lambda -(t7: T).((pr0 t3 u2) \to ((pr0 t2 t6) \to (ty3 g c2 t7 (THead (Flat Cast) t0 -t3))))) (\lambda (H16: (pr0 t3 u2)).(\lambda (H17: (pr0 t2 t6)).(ex_ind T -(\lambda (t7: T).(ty3 g c2 t0 t7)) (ty3 g c2 (THead (Flat Cast) u2 t6) (THead -(Flat Cast) t0 t3)) (\lambda (x: T).(\lambda (H18: (ty3 g c2 t0 x)).(ty3_conv -g c2 (THead (Flat Cast) t0 t3) (THead (Flat Cast) x t0) (ty3_cast g c2 t3 t0 -(H3 c2 H4 t3 (pr0_refl t3)) x H18) (THead (Flat Cast) u2 t6) (THead (Flat -Cast) t0 u2) (ty3_cast g c2 t6 u2 (ty3_conv g c2 u2 t0 (H3 c2 H4 u2 H16) t6 -t3 (H1 c2 H4 t6 H17) (pc3_pr2_r c2 t3 u2 (pr2_free c2 t3 u2 H16))) t0 (H3 c2 -H4 u2 H16)) (pc3_s c2 (THead (Flat Cast) t0 u2) (THead (Flat Cast) t0 t3) -(pc3_pr2_r c2 (THead (Flat Cast) t0 t3) (THead (Flat Cast) t0 u2) -(pr2_thin_dx c2 t3 u2 (pr2_free c2 t3 u2 H16) t0 Cast)))))) (ty3_correct g c2 -t3 t0 (H3 c2 H4 t3 (pr0_refl t3)))))) t4 H15)) t5 (sym_eq T t5 t2 H14))) u1 -(sym_eq T u1 t3 H13))) k (sym_eq K k (Flat Cast) H12))) H11)) H10)) H9 H6 +e with [(TSort _) \Rightarrow u1 | (TLRef _) \Rightarrow u1 | (THead _ t7 _) +\Rightarrow t7])) (THead k u1 t5) (THead (Flat Cast) t3 t2) H8) in ((let H12 +\def (f_equal T K (\lambda (e: T).(match e with [(TSort _) \Rightarrow k | +(TLRef _) \Rightarrow k | (THead k0 _ _) \Rightarrow k0])) (THead k u1 t5) +(THead (Flat Cast) t3 t2) H8) in (eq_ind K (Flat Cast) (\lambda (k0: K).((eq +T u1 t3) \to ((eq T t5 t2) \to ((eq T (THead k0 u2 t6) t4) \to ((pr0 u1 u2) +\to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3)))))))) (\lambda +(H13: (eq T u1 t3)).(eq_ind T t3 (\lambda (t7: T).((eq T t5 t2) \to ((eq T +(THead (Flat Cast) u2 t6) t4) \to ((pr0 t7 u2) \to ((pr0 t5 t6) \to (ty3 g c2 +t4 (THead (Flat Cast) t0 t3))))))) (\lambda (H14: (eq T t5 t2)).(eq_ind T t2 +(\lambda (t7: T).((eq T (THead (Flat Cast) u2 t6) t4) \to ((pr0 t3 u2) \to +((pr0 t7 t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3)))))) (\lambda (H15: +(eq T (THead (Flat Cast) u2 t6) t4)).(eq_ind T (THead (Flat Cast) u2 t6) +(\lambda (t7: T).((pr0 t3 u2) \to ((pr0 t2 t6) \to (ty3 g c2 t7 (THead (Flat +Cast) t0 t3))))) (\lambda (H16: (pr0 t3 u2)).(\lambda (H17: (pr0 t2 +t6)).(ex_ind T (\lambda (t7: T).(ty3 g c2 t0 t7)) (ty3 g c2 (THead (Flat +Cast) u2 t6) (THead (Flat Cast) t0 t3)) (\lambda (x: T).(\lambda (H18: (ty3 g +c2 t0 x)).(ty3_conv g c2 (THead (Flat Cast) t0 t3) (THead (Flat Cast) x t0) +(ty3_cast g c2 t3 t0 (H3 c2 H4 t3 (pr0_refl t3)) x H18) (THead (Flat Cast) u2 +t6) (THead (Flat Cast) t0 u2) (ty3_cast g c2 t6 u2 (ty3_conv g c2 u2 t0 (H3 +c2 H4 u2 H16) t6 t3 (H1 c2 H4 t6 H17) (pc3_pr2_r c2 t3 u2 (pr2_free c2 t3 u2 +H16))) t0 (H3 c2 H4 u2 H16)) (pc3_s c2 (THead (Flat Cast) t0 u2) (THead (Flat +Cast) t0 t3) (pc3_pr2_r c2 (THead (Flat Cast) t0 t3) (THead (Flat Cast) t0 +u2) (pr2_thin_dx c2 t3 u2 (pr2_free c2 t3 u2 H16) t0 Cast)))))) (ty3_correct +g c2 t3 t0 (H3 c2 H4 t3 (pr0_refl t3)))))) t4 H15)) t5 (sym_eq T t5 t2 H14))) +u1 (sym_eq T u1 t3 H13))) k (sym_eq K k (Flat Cast) H12))) H11)) H10)) H9 H6 H7))) | (pr0_beta u v1 v2 H6 t5 t6 H7) \Rightarrow (\lambda (H8: (eq T (THead (Flat Appl) v1 (THead (Bind Abst) u t5)) (THead (Flat Cast) t3 t2))).(\lambda (H9: (eq T (THead (Bind Abbr) v2 t6) t4)).((let H10 \def (eq_ind T (THead -(Flat Appl) v1 (THead (Bind Abst) u t5)) (\lambda (e: T).(match e in T return -(\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) -\Rightarrow False | (THead k _ _) \Rightarrow (match k in K return (\lambda -(_: K).Prop) with [(Bind _) \Rightarrow False | (Flat f) \Rightarrow (match f -in F return (\lambda (_: F).Prop) with [Appl \Rightarrow True | Cast -\Rightarrow False])])])) I (THead (Flat Cast) t3 t2) H8) in (False_ind ((eq T -(THead (Bind Abbr) v2 t6) t4) \to ((pr0 v1 v2) \to ((pr0 t5 t6) \to (ty3 g c2 -t4 (THead (Flat Cast) t0 t3))))) H10)) H9 H6 H7))) | (pr0_upsilon b H6 v1 v2 -H7 u1 u2 H8 t5 t6 H9) \Rightarrow (\lambda (H10: (eq T (THead (Flat Appl) v1 -(THead (Bind b) u1 t5)) (THead (Flat Cast) t3 t2))).(\lambda (H11: (eq T -(THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) t6)) t4)).((let H12 -\def (eq_ind T (THead (Flat Appl) v1 (THead (Bind b) u1 t5)) (\lambda (e: -T).(match e in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow -False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow (match k in K -return (\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat f) -\Rightarrow (match f in F return (\lambda (_: F).Prop) with [Appl \Rightarrow -True | Cast \Rightarrow False])])])) I (THead (Flat Cast) t3 t2) H10) in -(False_ind ((eq T (THead (Bind b) u2 (THead (Flat Appl) (lift (S O) O v2) -t6)) t4) \to ((not (eq B b Abst)) \to ((pr0 v1 v2) \to ((pr0 u1 u2) \to ((pr0 -t5 t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3))))))) H12)) H11 H6 H7 H8 -H9))) | (pr0_delta u1 u2 H6 t5 t6 H7 w H8) \Rightarrow (\lambda (H9: (eq T -(THead (Bind Abbr) u1 t5) (THead (Flat Cast) t3 t2))).(\lambda (H10: (eq T -(THead (Bind Abbr) u2 w) t4)).((let H11 \def (eq_ind T (THead (Bind Abbr) u1 -t5) (\lambda (e: T).(match e in T return (\lambda (_: T).Prop) with [(TSort -_) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) -\Rightarrow (match k in K return (\lambda (_: K).Prop) with [(Bind _) -\Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat Cast) t3 -t2) H9) in (False_ind ((eq T (THead (Bind Abbr) u2 w) t4) \to ((pr0 u1 u2) -\to ((pr0 t5 t6) \to ((subst0 O u2 t6 w) \to (ty3 g c2 t4 (THead (Flat Cast) -t0 t3)))))) H11)) H10 H6 H7 H8))) | (pr0_zeta b H6 t5 t6 H7 u) \Rightarrow -(\lambda (H8: (eq T (THead (Bind b) u (lift (S O) O t5)) (THead (Flat Cast) -t3 t2))).(\lambda (H9: (eq T t6 t4)).((let H10 \def (eq_ind T (THead (Bind b) -u (lift (S O) O t5)) (\lambda (e: T).(match e in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | -(THead k _ _) \Rightarrow (match k in K return (\lambda (_: K).Prop) with -[(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I (THead (Flat -Cast) t3 t2) H8) in (False_ind ((eq T t6 t4) \to ((not (eq B b Abst)) \to -((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3))))) H10)) H9 H6 H7))) -| (pr0_tau t5 t6 H6 u) \Rightarrow (\lambda (H7: (eq T (THead (Flat Cast) u -t5) (THead (Flat Cast) t3 t2))).(\lambda (H8: (eq T t6 t4)).((let H9 \def -(f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) with -[(TSort _) \Rightarrow t5 | (TLRef _) \Rightarrow t5 | (THead _ _ t7) -\Rightarrow t7])) (THead (Flat Cast) u t5) (THead (Flat Cast) t3 t2) H7) in -((let H10 \def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: -T).T) with [(TSort _) \Rightarrow u | (TLRef _) \Rightarrow u | (THead _ t7 -_) \Rightarrow t7])) (THead (Flat Cast) u t5) (THead (Flat Cast) t3 t2) H7) -in (eq_ind T t3 (\lambda (_: T).((eq T t5 t2) \to ((eq T t6 t4) \to ((pr0 t5 -t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3)))))) (\lambda (H11: (eq T t5 -t2)).(eq_ind T t2 (\lambda (t7: T).((eq T t6 t4) \to ((pr0 t7 t6) \to (ty3 g -c2 t4 (THead (Flat Cast) t0 t3))))) (\lambda (H12: (eq T t6 t4)).(eq_ind T t4 -(\lambda (t7: T).((pr0 t2 t7) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3)))) -(\lambda (H13: (pr0 t2 t4)).(ex_ind T (\lambda (t7: T).(ty3 g c2 t0 t7)) (ty3 -g c2 t4 (THead (Flat Cast) t0 t3)) (\lambda (x: T).(\lambda (H14: (ty3 g c2 -t0 x)).(ty3_conv g c2 (THead (Flat Cast) t0 t3) (THead (Flat Cast) x t0) -(ty3_cast g c2 t3 t0 (H3 c2 H4 t3 (pr0_refl t3)) x H14) t4 t3 (H1 c2 H4 t4 -H13) (pc3_pr2_x c2 t3 (THead (Flat Cast) t0 t3) (pr2_free c2 (THead (Flat -Cast) t0 t3) t3 (pr0_tau t3 t3 (pr0_refl t3) t0)))))) (ty3_correct g c2 t3 t0 -(H3 c2 H4 t3 (pr0_refl t3))))) t6 (sym_eq T t6 t4 H12))) t5 (sym_eq T t5 t2 -H11))) u (sym_eq T u t3 H10))) H9)) H8 H6)))]) in (H6 (refl_equal T (THead -(Flat Cast) t3 t2)) (refl_equal T t4))))))))))))))) c1 t1 t H))))). -(* COMMENTS -Initial nodes: 14710 -END *) +(Flat Appl) v1 (THead (Bind Abst) u t5)) (\lambda (e: T).(match e with +[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) +\Rightarrow (match k with [(Bind _) \Rightarrow False | (Flat f) \Rightarrow +(match f with [Appl \Rightarrow True | Cast \Rightarrow False])])])) I (THead +(Flat Cast) t3 t2) H8) in (False_ind ((eq T (THead (Bind Abbr) v2 t6) t4) \to +((pr0 v1 v2) \to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3))))) +H10)) H9 H6 H7))) | (pr0_upsilon b H6 v1 v2 H7 u1 u2 H8 t5 t6 H9) \Rightarrow +(\lambda (H10: (eq T (THead (Flat Appl) v1 (THead (Bind b) u1 t5)) (THead +(Flat Cast) t3 t2))).(\lambda (H11: (eq T (THead (Bind b) u2 (THead (Flat +Appl) (lift (S O) O v2) t6)) t4)).((let H12 \def (eq_ind T (THead (Flat Appl) +v1 (THead (Bind b) u1 t5)) (\lambda (e: T).(match e with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow +(match k with [(Bind _) \Rightarrow False | (Flat f) \Rightarrow (match f +with [Appl \Rightarrow True | Cast \Rightarrow False])])])) I (THead (Flat +Cast) t3 t2) H10) in (False_ind ((eq T (THead (Bind b) u2 (THead (Flat Appl) +(lift (S O) O v2) t6)) t4) \to ((not (eq B b Abst)) \to ((pr0 v1 v2) \to +((pr0 u1 u2) \to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 +t3))))))) H12)) H11 H6 H7 H8 H9))) | (pr0_delta u1 u2 H6 t5 t6 H7 w H8) +\Rightarrow (\lambda (H9: (eq T (THead (Bind Abbr) u1 t5) (THead (Flat Cast) +t3 t2))).(\lambda (H10: (eq T (THead (Bind Abbr) u2 w) t4)).((let H11 \def +(eq_ind T (THead (Bind Abbr) u1 t5) (\lambda (e: T).(match e with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) \Rightarrow +(match k with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])])) I +(THead (Flat Cast) t3 t2) H9) in (False_ind ((eq T (THead (Bind Abbr) u2 w) +t4) \to ((pr0 u1 u2) \to ((pr0 t5 t6) \to ((subst0 O u2 t6 w) \to (ty3 g c2 +t4 (THead (Flat Cast) t0 t3)))))) H11)) H10 H6 H7 H8))) | (pr0_zeta b H6 t5 +t6 H7 u) \Rightarrow (\lambda (H8: (eq T (THead (Bind b) u (lift (S O) O t5)) +(THead (Flat Cast) t3 t2))).(\lambda (H9: (eq T t6 t4)).((let H10 \def +(eq_ind T (THead (Bind b) u (lift (S O) O t5)) (\lambda (e: T).(match e with +[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k _ _) +\Rightarrow (match k with [(Bind _) \Rightarrow True | (Flat _) \Rightarrow +False])])) I (THead (Flat Cast) t3 t2) H8) in (False_ind ((eq T t6 t4) \to +((not (eq B b Abst)) \to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 +t3))))) H10)) H9 H6 H7))) | (pr0_tau t5 t6 H6 u) \Rightarrow (\lambda (H7: +(eq T (THead (Flat Cast) u t5) (THead (Flat Cast) t3 t2))).(\lambda (H8: (eq +T t6 t4)).((let H9 \def (f_equal T T (\lambda (e: T).(match e with [(TSort _) +\Rightarrow t5 | (TLRef _) \Rightarrow t5 | (THead _ _ t7) \Rightarrow t7])) +(THead (Flat Cast) u t5) (THead (Flat Cast) t3 t2) H7) in ((let H10 \def +(f_equal T T (\lambda (e: T).(match e with [(TSort _) \Rightarrow u | (TLRef +_) \Rightarrow u | (THead _ t7 _) \Rightarrow t7])) (THead (Flat Cast) u t5) +(THead (Flat Cast) t3 t2) H7) in (eq_ind T t3 (\lambda (_: T).((eq T t5 t2) +\to ((eq T t6 t4) \to ((pr0 t5 t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 +t3)))))) (\lambda (H11: (eq T t5 t2)).(eq_ind T t2 (\lambda (t7: T).((eq T t6 +t4) \to ((pr0 t7 t6) \to (ty3 g c2 t4 (THead (Flat Cast) t0 t3))))) (\lambda +(H12: (eq T t6 t4)).(eq_ind T t4 (\lambda (t7: T).((pr0 t2 t7) \to (ty3 g c2 +t4 (THead (Flat Cast) t0 t3)))) (\lambda (H13: (pr0 t2 t4)).(ex_ind T +(\lambda (t7: T).(ty3 g c2 t0 t7)) (ty3 g c2 t4 (THead (Flat Cast) t0 t3)) +(\lambda (x: T).(\lambda (H14: (ty3 g c2 t0 x)).(ty3_conv g c2 (THead (Flat +Cast) t0 t3) (THead (Flat Cast) x t0) (ty3_cast g c2 t3 t0 (H3 c2 H4 t3 +(pr0_refl t3)) x H14) t4 t3 (H1 c2 H4 t4 H13) (pc3_pr2_x c2 t3 (THead (Flat +Cast) t0 t3) (pr2_free c2 (THead (Flat Cast) t0 t3) t3 (pr0_tau t3 t3 +(pr0_refl t3) t0)))))) (ty3_correct g c2 t3 t0 (H3 c2 H4 t3 (pr0_refl t3))))) +t6 (sym_eq T t6 t4 H12))) t5 (sym_eq T t5 t2 H11))) u (sym_eq T u t3 H10))) +H9)) H8 H6)))]) in (H6 (refl_equal T (THead (Flat Cast) t3 t2)) (refl_equal T +t4))))))))))))))) c1 t1 t H))))). theorem ty3_sred_pr0: \forall (t1: T).(\forall (t2: T).((pr0 t1 t2) \to (\forall (g: G).(\forall @@ -668,9 +628,6 @@ theorem ty3_sred_pr0: \lambda (t1: T).(\lambda (t2: T).(\lambda (H: (pr0 t1 t2)).(\lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (H0: (ty3 g c t1 t)).(ty3_sred_wcpr0_pr0 g c t1 t H0 c (wcpr0_refl c) t2 H))))))). -(* COMMENTS -Initial nodes: 47 -END *) theorem ty3_sred_pr1: \forall (t1: T).(\forall (t2: T).((pr1 t1 t2) \to (\forall (g: G).(\forall @@ -685,9 +642,6 @@ T).(\lambda (_: (pr1 t3 t5)).(\lambda (H2: ((\forall (g: G).(\forall (c: C).(\forall (t: T).((ty3 g c t3 t) \to (ty3 g c t5 t))))))).(\lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (H3: (ty3 g c t4 t)).(H2 g c t (ty3_sred_pr0 t4 t3 H0 g c t H3)))))))))))) t1 t2 H))). -(* COMMENTS -Initial nodes: 151 -END *) theorem ty3_sred_pr2: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr2 c t1 t2) \to (\forall @@ -705,9 +659,6 @@ t4)).(\lambda (t: T).(\lambda (H2: (subst0 i u t4 t)).(\lambda (g: G).(\lambda (t0: T).(\lambda (H3: (ty3 g c0 t3 t0)).(ty3_subst0 g c0 t4 t0 (ty3_sred_wcpr0_pr0 g c0 t3 t0 H3 c0 (wcpr0_refl c0) t4 H1) d u i H0 t H2)))))))))))))) c t1 t2 H)))). -(* COMMENTS -Initial nodes: 205 -END *) theorem ty3_sred_pr3: \forall (c: C).(\forall (t1: T).(\forall (t2: T).((pr3 c t1 t2) \to (\forall @@ -722,7 +673,4 @@ T).(\lambda (t4: T).(\lambda (H0: (pr2 c t4 t3)).(\lambda (t5: T).(\lambda t3 t) \to (ty3 g c t5 t)))))).(\lambda (g: G).(\lambda (t: T).(\lambda (H3: (ty3 g c t4 t)).(H2 g t (ty3_sred_pr2 c t4 t3 H0 g t H3))))))))))) t1 t2 H)))). -(* COMMENTS -Initial nodes: 151 -END *) diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/pr3_props.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/pr3_props.ma index b5bb1fb69..c7eb51db7 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/pr3_props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/pr3_props.ma @@ -14,7 +14,7 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/pr3.ma". +include "basic_1/ty3/pr3.ma". theorem ty3_cred_pr2: \forall (g: G).(\forall (c: C).(\forall (v1: T).(\forall (v2: T).((pr2 c v1 @@ -40,9 +40,6 @@ c0) t1 t2 H1 (Bind b)) t0 (pr0_refl t0)) d u (S i) (getl_clear_bind b (CHead c0 (Bind b) t2) c0 t2 (clear_bind b c0 t2) (CHead d (Bind Abbr) u) i H0) (CHead c0 (Bind b) t) (csubst0_snd_bind b i u t2 t H2 c0)))))))))))))))) c v1 v2 H))))). -(* COMMENTS -Initial nodes: 383 -END *) theorem ty3_cred_pr3: \forall (g: G).(\forall (c: C).(\forall (v1: T).(\forall (v2: T).((pr3 c v1 @@ -60,9 +57,6 @@ B).(\forall (t4: T).(\forall (t5: T).((ty3 g (CHead c (Bind b) t2) t4 t5) \to (ty3 g (CHead c (Bind b) t3) t4 t5))))))).(\lambda (b: B).(\lambda (t0: T).(\lambda (t4: T).(\lambda (H3: (ty3 g (CHead c (Bind b) t1) t0 t4)).(H2 b t0 t4 (ty3_cred_pr2 g c t1 t2 H0 b t0 t4 H3)))))))))))) v1 v2 H))))). -(* COMMENTS -Initial nodes: 215 -END *) theorem ty3_gen_lift: \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (x: T).(\forall (h: @@ -175,9 +169,9 @@ T).(ty3 g e t0 t2)))) (ex_intro2 T (\lambda (t2: T).(pc3 c0 (lift h x1 t2) x1 h) n (le_plus_r x1 h) H8))) (plus h (S (minus n h))) (plus_n_Sm h (minus n h))) (lift h x1 (lift (S (minus n h)) O t)) (lift_free t (S (minus n h)) h O x1 (le_trans x1 (S (minus n h)) (plus O (S (minus n h))) (le_S_minus x1 h n -H8) (le_n (plus O (S (minus n h))))) (le_O_n x1))) (ty3_abbr g (minus n h) e -d0 u (getl_drop_conf_ge n (CHead d0 (Bind Abbr) u) c0 H1 e h x1 H5 H8) t H2)) -x0 H9))) H7)) H6)))))))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda +H8) (le_plus_r O (S (minus n h)))) (le_O_n x1))) (ty3_abbr g (minus n h) e d0 +u (getl_drop_conf_ge n (CHead d0 (Bind Abbr) u) c0 H1 e h x1 H5 H8) t H2)) x0 +H9))) H7)) H6)))))))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d0: C).(\lambda (u: T).(\lambda (H1: (getl n c0 (CHead d0 (Bind Abst) u))).(\lambda (t: T).(\lambda (H2: (ty3 g d0 u t)).(\lambda (H3: ((\forall (x0: T).(\forall (x1: nat).((eq T u (lift h x1 x0)) \to (\forall (e: @@ -245,7 +239,7 @@ O u) (lift (S n) O u))) (pc3_refl c0 (lift (S n) O u)) (plus h (minus n h)) (le_plus_minus h n (le_trans h (plus x1 h) n (le_plus_r x1 h) H8))) (plus h (S (minus n h))) (plus_n_Sm h (minus n h))) (lift h x1 (lift (S (minus n h)) O u)) (lift_free u (S (minus n h)) h O x1 (le_trans x1 (S (minus n h)) (plus -O (S (minus n h))) (le_S_minus x1 h n H8) (le_n (plus O (S (minus n h))))) +O (S (minus n h))) (le_S_minus x1 h n H8) (le_plus_r O (S (minus n h)))) (le_O_n x1))) (ty3_abst g (minus n h) e d0 u (getl_drop_conf_ge n (CHead d0 (Bind Abst) u) c0 H1 e h x1 H5 H8) t H2)) x0 H9))) H7)) H6)))))))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (t: T).(\lambda (H1: (ty3 g c0 u @@ -448,9 +442,6 @@ Cast) x5 x2)) (lift_flat Cast x5 x2 h x1)) (ty3_cast g e x3 x2 (ty3_conv g e x2 x5 H21 x3 x4 H18 (pc3_gen_lift c0 x4 x2 h x1 H17 e H6)) x5 H21))))) H19))))) H16)))) t3 H8))))) x0 H7)))))) (lift_gen_flat Cast t3 t2 x0 h x1 H5))))))))))))))) c y x H0))))) H))))))). -(* COMMENTS -Initial nodes: 9781 -END *) theorem ty3_tred: \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t1: T).((ty3 g c u @@ -461,9 +452,6 @@ t1) \to (\forall (t2: T).((pr3 c t1 t2) \to (ty3 g c u t2))))))) (\lambda (t: T).(ty3 g c t1 t)) (ty3 g c u t2) (\lambda (x: T).(\lambda (H1: (ty3 g c t1 x)).(let H_y \def (ty3_sred_pr3 c t1 t2 H0 g x H1) in (ty3_conv g c t2 x H_y u t1 H (pc3_pr3_r c t1 t2 H0))))) (ty3_correct g c u t1 H)))))))). -(* COMMENTS -Initial nodes: 121 -END *) theorem ty3_sconv_pc3: \forall (g: G).(\forall (c: C).(\forall (u1: T).(\forall (t1: T).((ty3 g c @@ -477,9 +465,6 @@ u2 t2)).(\lambda (H1: (pc3 c u1 u2)).(let H2 \def H1 in (ex2_ind T (\lambda T).(\lambda (H3: (pr3 c u1 x)).(\lambda (H4: (pr3 c u2 x)).(let H_y \def (ty3_sred_pr3 c u2 x H4 g t2 H0) in (let H_y0 \def (ty3_sred_pr3 c u1 x H3 g t1 H) in (ty3_unique g c x t1 H_y0 t2 H_y)))))) H2)))))))))). -(* COMMENTS -Initial nodes: 141 -END *) theorem ty3_sred_back: \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t0: T).((ty3 g c @@ -492,9 +477,6 @@ t) \to (ty3 g c t1 t))))))))) t3)) (ty3 g c t1 t) (\lambda (x: T).(\lambda (H2: (ty3 g c t x)).(ty3_conv g c t x H2 t1 t0 H (ty3_unique g c t2 t0 (ty3_sred_pr3 c t1 t2 H0 g t0 H) t H1)))) (ty3_correct g c t2 t H1)))))))))). -(* COMMENTS -Initial nodes: 137 -END *) theorem ty3_sconv: \forall (g: G).(\forall (c: C).(\forall (u1: T).(\forall (t1: T).((ty3 g c @@ -507,7 +489,4 @@ u2 t2)).(\lambda (H1: (pc3 c u1 u2)).(let H2 \def H1 in (ex2_ind T (\lambda (t: T).(pr3 c u1 t)) (\lambda (t: T).(pr3 c u2 t)) (ty3 g c u1 t2) (\lambda (x: T).(\lambda (H3: (pr3 c u1 x)).(\lambda (H4: (pr3 c u2 x)).(ty3_sred_back g c u1 t1 H x H3 t2 (ty3_sred_pr3 c u2 x H4 g t2 H0))))) H2)))))))))). -(* COMMENTS -Initial nodes: 129 -END *) diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/props.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/props.ma index 579a8dd69..eedc5fddd 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/props.ma @@ -14,9 +14,9 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/fwd.ma". +include "basic_1/ty3/fwd.ma". -include "Basic-1/pc3/fwd.ma". +include "basic_1/pc3/fwd.ma". theorem ty3_lift: \forall (g: G).(\forall (e: C).(\forall (t1: T).(\forall (t2: T).((ty3 g e @@ -24,406 +24,806 @@ t1 t2) \to (\forall (c: C).(\forall (d: nat).(\forall (h: nat).((drop h d c e) \to (ty3 g c (lift h d t1) (lift h d t2)))))))))) \def \lambda (g: G).(\lambda (e: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda -(H: (ty3 g e t1 t2)).(ty3_ind g (\lambda (c: C).(\lambda (t: T).(\lambda (t0: -T).(\forall (c0: C).(\forall (d: nat).(\forall (h: nat).((drop h d c0 c) \to -(ty3 g c0 (lift h d t) (lift h d t0))))))))) (\lambda (c: C).(\lambda (t0: +(H: (ty3 g e t1 t2)).(let TMP_3 \def (\lambda (c: C).(\lambda (t: T).(\lambda +(t0: T).(\forall (c0: C).(\forall (d: nat).(\forall (h: nat).((drop h d c0 c) +\to (let TMP_1 \def (lift h d t) in (let TMP_2 \def (lift h d t0) in (ty3 g +c0 TMP_1 TMP_2)))))))))) in (let TMP_11 \def (\lambda (c: C).(\lambda (t0: T).(\lambda (t: T).(\lambda (_: (ty3 g c t0 t)).(\lambda (H1: ((\forall (c0: C).(\forall (d: nat).(\forall (h: nat).((drop h d c0 c) \to (ty3 g c0 (lift h d t0) (lift h d t)))))))).(\lambda (u: T).(\lambda (t3: T).(\lambda (_: (ty3 g c u t3)).(\lambda (H3: ((\forall (c0: C).(\forall (d: nat).(\forall (h: nat).((drop h d c0 c) \to (ty3 g c0 (lift h d u) (lift h d t3)))))))).(\lambda (H4: (pc3 c t3 t0)).(\lambda (c0: C).(\lambda (d: -nat).(\lambda (h: nat).(\lambda (H5: (drop h d c0 c)).(ty3_conv g c0 (lift h -d t0) (lift h d t) (H1 c0 d h H5) (lift h d u) (lift h d t3) (H3 c0 d h H5) -(pc3_lift c0 c h d H5 t3 t0 H4)))))))))))))))) (\lambda (c: C).(\lambda (m: +nat).(\lambda (h: nat).(\lambda (H5: (drop h d c0 c)).(let TMP_4 \def (lift h +d t0) in (let TMP_5 \def (lift h d t) in (let TMP_6 \def (H1 c0 d h H5) in +(let TMP_7 \def (lift h d u) in (let TMP_8 \def (lift h d t3) in (let TMP_9 +\def (H3 c0 d h H5) in (let TMP_10 \def (pc3_lift c0 c h d H5 t3 t0 H4) in +(ty3_conv g c0 TMP_4 TMP_5 TMP_6 TMP_7 TMP_8 TMP_9 +TMP_10)))))))))))))))))))))) in (let TMP_31 \def (\lambda (c: C).(\lambda (m: nat).(\lambda (c0: C).(\lambda (d: nat).(\lambda (h: nat).(\lambda (_: (drop -h d c0 c)).(eq_ind_r T (TSort m) (\lambda (t: T).(ty3 g c0 t (lift h d (TSort -(next g m))))) (eq_ind_r T (TSort (next g m)) (\lambda (t: T).(ty3 g c0 -(TSort m) t)) (ty3_sort g c0 m) (lift h d (TSort (next g m))) (lift_sort -(next g m) h d)) (lift h d (TSort m)) (lift_sort m h d)))))))) (\lambda (n: -nat).(\lambda (c: C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n c -(CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda (H1: (ty3 g d u -t)).(\lambda (H2: ((\forall (c0: C).(\forall (d0: nat).(\forall (h: -nat).((drop h d0 c0 d) \to (ty3 g c0 (lift h d0 u) (lift h d0 -t)))))))).(\lambda (c0: C).(\lambda (d0: nat).(\lambda (h: nat).(\lambda (H3: -(drop h d0 c0 c)).(lt_le_e n d0 (ty3 g c0 (lift h d0 (TLRef n)) (lift h d0 -(lift (S n) O t))) (\lambda (H4: (lt n d0)).(let H5 \def (drop_getl_trans_le -n d0 (le_S_n n d0 (le_S (S n) d0 H4)) c0 c h H3 (CHead d (Bind Abbr) u) H0) -in (ex3_2_ind C C (\lambda (e0: C).(\lambda (_: C).(drop n O c0 e0))) -(\lambda (e0: C).(\lambda (e1: C).(drop h (minus d0 n) e0 e1))) (\lambda (_: -C).(\lambda (e1: C).(clear e1 (CHead d (Bind Abbr) u)))) (ty3 g c0 (lift h d0 -(TLRef n)) (lift h d0 (lift (S n) O t))) (\lambda (x0: C).(\lambda (x1: +h d c0 c)).(let TMP_12 \def (TSort m) in (let TMP_16 \def (\lambda (t: +T).(let TMP_13 \def (next g m) in (let TMP_14 \def (TSort TMP_13) in (let +TMP_15 \def (lift h d TMP_14) in (ty3 g c0 t TMP_15))))) in (let TMP_17 \def +(next g m) in (let TMP_18 \def (TSort TMP_17) in (let TMP_20 \def (\lambda +(t: T).(let TMP_19 \def (TSort m) in (ty3 g c0 TMP_19 t))) in (let TMP_21 +\def (ty3_sort g c0 m) in (let TMP_22 \def (next g m) in (let TMP_23 \def +(TSort TMP_22) in (let TMP_24 \def (lift h d TMP_23) in (let TMP_25 \def +(next g m) in (let TMP_26 \def (lift_sort TMP_25 h d) in (let TMP_27 \def +(eq_ind_r T TMP_18 TMP_20 TMP_21 TMP_24 TMP_26) in (let TMP_28 \def (TSort m) +in (let TMP_29 \def (lift h d TMP_28) in (let TMP_30 \def (lift_sort m h d) +in (eq_ind_r T TMP_12 TMP_16 TMP_27 TMP_29 TMP_30)))))))))))))))))))))) in +(let TMP_233 \def (\lambda (n: nat).(\lambda (c: C).(\lambda (d: C).(\lambda +(u: T).(\lambda (H0: (getl n c (CHead d (Bind Abbr) u))).(\lambda (t: +T).(\lambda (H1: (ty3 g d u t)).(\lambda (H2: ((\forall (c0: C).(\forall (d0: +nat).(\forall (h: nat).((drop h d0 c0 d) \to (ty3 g c0 (lift h d0 u) (lift h +d0 t)))))))).(\lambda (c0: C).(\lambda (d0: nat).(\lambda (h: nat).(\lambda +(H3: (drop h d0 c0 c)).(let TMP_32 \def (TLRef n) in (let TMP_33 \def (lift h +d0 TMP_32) in (let TMP_34 \def (S n) in (let TMP_35 \def (lift TMP_34 O t) in +(let TMP_36 \def (lift h d0 TMP_35) in (let TMP_37 \def (ty3 g c0 TMP_33 +TMP_36) in (let TMP_159 \def (\lambda (H4: (lt n d0)).(let TMP_38 \def (S n) +in (let TMP_39 \def (S d0) in (let TMP_40 \def (S n) in (let TMP_41 \def (S +TMP_40) in (let TMP_42 \def (S d0) in (let TMP_43 \def (S n) in (let TMP_44 +\def (le_n_S TMP_43 d0 H4) in (let TMP_45 \def (le_S TMP_41 TMP_42 TMP_44) in +(let TMP_46 \def (le_S_n TMP_38 TMP_39 TMP_45) in (let TMP_47 \def (le_S_n n +d0 TMP_46) in (let TMP_48 \def (Bind Abbr) in (let TMP_49 \def (CHead d +TMP_48 u) in (let H5 \def (drop_getl_trans_le n d0 TMP_47 c0 c h H3 TMP_49 +H0) in (let TMP_50 \def (\lambda (e0: C).(\lambda (_: C).(drop n O c0 e0))) +in (let TMP_52 \def (\lambda (e0: C).(\lambda (e1: C).(let TMP_51 \def (minus +d0 n) in (drop h TMP_51 e0 e1)))) in (let TMP_55 \def (\lambda (_: +C).(\lambda (e1: C).(let TMP_53 \def (Bind Abbr) in (let TMP_54 \def (CHead d +TMP_53 u) in (clear e1 TMP_54))))) in (let TMP_56 \def (TLRef n) in (let +TMP_57 \def (lift h d0 TMP_56) in (let TMP_58 \def (S n) in (let TMP_59 \def +(lift TMP_58 O t) in (let TMP_60 \def (lift h d0 TMP_59) in (let TMP_61 \def +(ty3 g c0 TMP_57 TMP_60) in (let TMP_158 \def (\lambda (x0: C).(\lambda (x1: C).(\lambda (H6: (drop n O c0 x0)).(\lambda (H7: (drop h (minus d0 n) x0 -x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abbr) u))).(let H9 \def (eq_ind -nat (minus d0 n) (\lambda (n0: nat).(drop h n0 x0 x1)) H7 (S (minus d0 (S -n))) (minus_x_Sy d0 n H4)) in (let H10 \def (drop_clear_S x1 x0 h (minus d0 -(S n)) H9 Abbr d u H8) in (ex2_ind C (\lambda (c1: C).(clear x0 (CHead c1 -(Bind Abbr) (lift h (minus d0 (S n)) u)))) (\lambda (c1: C).(drop h (minus d0 -(S n)) c1 d)) (ty3 g c0 (lift h d0 (TLRef n)) (lift h d0 (lift (S n) O t))) -(\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abbr) (lift h (minus -d0 (S n)) u)))).(\lambda (H12: (drop h (minus d0 (S n)) x d)).(eq_ind_r T -(TLRef n) (\lambda (t0: T).(ty3 g c0 t0 (lift h d0 (lift (S n) O t)))) -(eq_ind nat (plus (S n) (minus d0 (S n))) (\lambda (n0: nat).(ty3 g c0 (TLRef -n) (lift h n0 (lift (S n) O t)))) (eq_ind_r T (lift (S n) O (lift h (minus d0 -(S n)) t)) (\lambda (t0: T).(ty3 g c0 (TLRef n) t0)) (eq_ind nat d0 (\lambda -(_: nat).(ty3 g c0 (TLRef n) (lift (S n) O (lift h (minus d0 (S n)) t)))) -(ty3_abbr g n c0 x (lift h (minus d0 (S n)) u) (getl_intro n c0 (CHead x -(Bind Abbr) (lift h (minus d0 (S n)) u)) x0 H6 H11) (lift h (minus d0 (S n)) -t) (H2 x (minus d0 (S n)) h H12)) (plus (S n) (minus d0 (S n))) -(le_plus_minus (S n) d0 H4)) (lift h (plus (S n) (minus d0 (S n))) (lift (S -n) O t)) (lift_d t h (S n) (minus d0 (S n)) O (le_O_n (minus d0 (S n))))) d0 -(le_plus_minus_r (S n) d0 H4)) (lift h d0 (TLRef n)) (lift_lref_lt n h d0 -H4))))) H10)))))))) H5))) (\lambda (H4: (le d0 n)).(eq_ind_r T (TLRef (plus n -h)) (\lambda (t0: T).(ty3 g c0 t0 (lift h d0 (lift (S n) O t)))) (eq_ind nat -(S n) (\lambda (_: nat).(ty3 g c0 (TLRef (plus n h)) (lift h d0 (lift (S n) O -t)))) (eq_ind_r T (lift (plus h (S n)) O t) (\lambda (t0: T).(ty3 g c0 (TLRef -(plus n h)) t0)) (eq_ind_r nat (plus (S n) h) (\lambda (n0: nat).(ty3 g c0 -(TLRef (plus n h)) (lift n0 O t))) (ty3_abbr g (plus n h) c0 d u -(drop_getl_trans_ge n c0 c d0 h H3 (CHead d (Bind Abbr) u) H0 H4) t H1) (plus -h (S n)) (plus_sym h (S n))) (lift h d0 (lift (S n) O t)) (lift_free t (S n) -h O d0 (le_S d0 n H4) (le_O_n d0))) (plus n (S O)) (eq_ind_r nat (plus (S O) -n) (\lambda (n0: nat).(eq nat (S n) n0)) (refl_equal nat (plus (S O) n)) -(plus n (S O)) (plus_sym n (S O)))) (lift h d0 (TLRef n)) (lift_lref_ge n h -d0 H4)))))))))))))))) (\lambda (n: nat).(\lambda (c: C).(\lambda (d: -C).(\lambda (u: T).(\lambda (H0: (getl n c (CHead d (Bind Abst) u))).(\lambda -(t: T).(\lambda (H1: (ty3 g d u t)).(\lambda (H2: ((\forall (c0: C).(\forall -(d0: nat).(\forall (h: nat).((drop h d0 c0 d) \to (ty3 g c0 (lift h d0 u) -(lift h d0 t)))))))).(\lambda (c0: C).(\lambda (d0: nat).(\lambda (h: -nat).(\lambda (H3: (drop h d0 c0 c)).(lt_le_e n d0 (ty3 g c0 (lift h d0 -(TLRef n)) (lift h d0 (lift (S n) O u))) (\lambda (H4: (lt n d0)).(let H5 -\def (drop_getl_trans_le n d0 (le_S_n n d0 (le_S (S n) d0 H4)) c0 c h H3 -(CHead d (Bind Abst) u) H0) in (ex3_2_ind C C (\lambda (e0: C).(\lambda (_: -C).(drop n O c0 e0))) (\lambda (e0: C).(\lambda (e1: C).(drop h (minus d0 n) -e0 e1))) (\lambda (_: C).(\lambda (e1: C).(clear e1 (CHead d (Bind Abst) -u)))) (ty3 g c0 (lift h d0 (TLRef n)) (lift h d0 (lift (S n) O u))) (\lambda -(x0: C).(\lambda (x1: C).(\lambda (H6: (drop n O c0 x0)).(\lambda (H7: (drop -h (minus d0 n) x0 x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abst) u))).(let -H9 \def (eq_ind nat (minus d0 n) (\lambda (n0: nat).(drop h n0 x0 x1)) H7 (S -(minus d0 (S n))) (minus_x_Sy d0 n H4)) in (let H10 \def (drop_clear_S x1 x0 -h (minus d0 (S n)) H9 Abst d u H8) in (ex2_ind C (\lambda (c1: C).(clear x0 -(CHead c1 (Bind Abst) (lift h (minus d0 (S n)) u)))) (\lambda (c1: C).(drop h -(minus d0 (S n)) c1 d)) (ty3 g c0 (lift h d0 (TLRef n)) (lift h d0 (lift (S -n) O u))) (\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abst) (lift -h (minus d0 (S n)) u)))).(\lambda (H12: (drop h (minus d0 (S n)) x -d)).(eq_ind_r T (TLRef n) (\lambda (t0: T).(ty3 g c0 t0 (lift h d0 (lift (S -n) O u)))) (eq_ind nat (plus (S n) (minus d0 (S n))) (\lambda (n0: nat).(ty3 -g c0 (TLRef n) (lift h n0 (lift (S n) O u)))) (eq_ind_r T (lift (S n) O (lift -h (minus d0 (S n)) u)) (\lambda (t0: T).(ty3 g c0 (TLRef n) t0)) (eq_ind nat -d0 (\lambda (_: nat).(ty3 g c0 (TLRef n) (lift (S n) O (lift h (minus d0 (S -n)) u)))) (ty3_abst g n c0 x (lift h (minus d0 (S n)) u) (getl_intro n c0 -(CHead x (Bind Abst) (lift h (minus d0 (S n)) u)) x0 H6 H11) (lift h (minus -d0 (S n)) t) (H2 x (minus d0 (S n)) h H12)) (plus (S n) (minus d0 (S n))) -(le_plus_minus (S n) d0 H4)) (lift h (plus (S n) (minus d0 (S n))) (lift (S -n) O u)) (lift_d u h (S n) (minus d0 (S n)) O (le_O_n (minus d0 (S n))))) d0 -(le_plus_minus_r (S n) d0 H4)) (lift h d0 (TLRef n)) (lift_lref_lt n h d0 -H4))))) H10)))))))) H5))) (\lambda (H4: (le d0 n)).(eq_ind_r T (TLRef (plus n -h)) (\lambda (t0: T).(ty3 g c0 t0 (lift h d0 (lift (S n) O u)))) (eq_ind nat -(S n) (\lambda (_: nat).(ty3 g c0 (TLRef (plus n h)) (lift h d0 (lift (S n) O -u)))) (eq_ind_r T (lift (plus h (S n)) O u) (\lambda (t0: T).(ty3 g c0 (TLRef -(plus n h)) t0)) (eq_ind_r nat (plus (S n) h) (\lambda (n0: nat).(ty3 g c0 -(TLRef (plus n h)) (lift n0 O u))) (ty3_abst g (plus n h) c0 d u -(drop_getl_trans_ge n c0 c d0 h H3 (CHead d (Bind Abst) u) H0 H4) t H1) (plus -h (S n)) (plus_sym h (S n))) (lift h d0 (lift (S n) O u)) (lift_free u (S n) -h O d0 (le_S d0 n H4) (le_O_n d0))) (plus n (S O)) (eq_ind_r nat (plus (S O) -n) (\lambda (n0: nat).(eq nat (S n) n0)) (refl_equal nat (plus (S O) n)) -(plus n (S O)) (plus_sym n (S O)))) (lift h d0 (TLRef n)) (lift_lref_ge n h -d0 H4)))))))))))))))) (\lambda (c: C).(\lambda (u: T).(\lambda (t: -T).(\lambda (_: (ty3 g c u t)).(\lambda (H1: ((\forall (c0: C).(\forall (d: -nat).(\forall (h: nat).((drop h d c0 c) \to (ty3 g c0 (lift h d u) (lift h d -t)))))))).(\lambda (b: B).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (ty3 -g (CHead c (Bind b) u) t0 t3)).(\lambda (H3: ((\forall (c0: C).(\forall (d: -nat).(\forall (h: nat).((drop h d c0 (CHead c (Bind b) u)) \to (ty3 g c0 -(lift h d t0) (lift h d t3)))))))).(\lambda (c0: C).(\lambda (d: -nat).(\lambda (h: nat).(\lambda (H4: (drop h d c0 c)).(eq_ind_r T (THead -(Bind b) (lift h d u) (lift h (s (Bind b) d) t0)) (\lambda (t4: T).(ty3 g c0 -t4 (lift h d (THead (Bind b) u t3)))) (eq_ind_r T (THead (Bind b) (lift h d -u) (lift h (s (Bind b) d) t3)) (\lambda (t4: T).(ty3 g c0 (THead (Bind b) -(lift h d u) (lift h (s (Bind b) d) t0)) t4)) (ty3_bind g c0 (lift h d u) -(lift h d t) (H1 c0 d h H4) b (lift h (S d) t0) (lift h (S d) t3) (H3 (CHead -c0 (Bind b) (lift h d u)) (S d) h (drop_skip_bind h d c0 c H4 b u))) (lift h -d (THead (Bind b) u t3)) (lift_head (Bind b) u t3 h d)) (lift h d (THead -(Bind b) u t0)) (lift_head (Bind b) u t0 h d)))))))))))))))) (\lambda (c: -C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: (ty3 g c w u)).(\lambda (H1: -((\forall (c0: C).(\forall (d: nat).(\forall (h: nat).((drop h d c0 c) \to -(ty3 g c0 (lift h d w) (lift h d u)))))))).(\lambda (v: T).(\lambda (t: -T).(\lambda (_: (ty3 g c v (THead (Bind Abst) u t))).(\lambda (H3: ((\forall -(c0: C).(\forall (d: nat).(\forall (h: nat).((drop h d c0 c) \to (ty3 g c0 -(lift h d v) (lift h d (THead (Bind Abst) u t))))))))).(\lambda (c0: -C).(\lambda (d: nat).(\lambda (h: nat).(\lambda (H4: (drop h d c0 -c)).(eq_ind_r T (THead (Flat Appl) (lift h d w) (lift h (s (Flat Appl) d) v)) -(\lambda (t0: T).(ty3 g c0 t0 (lift h d (THead (Flat Appl) w (THead (Bind -Abst) u t))))) (eq_ind_r T (THead (Flat Appl) (lift h d w) (lift h (s (Flat -Appl) d) (THead (Bind Abst) u t))) (\lambda (t0: T).(ty3 g c0 (THead (Flat -Appl) (lift h d w) (lift h (s (Flat Appl) d) v)) t0)) (eq_ind_r T (THead -(Bind Abst) (lift h (s (Flat Appl) d) u) (lift h (s (Bind Abst) (s (Flat -Appl) d)) t)) (\lambda (t0: T).(ty3 g c0 (THead (Flat Appl) (lift h d w) -(lift h (s (Flat Appl) d) v)) (THead (Flat Appl) (lift h d w) t0))) (ty3_appl -g c0 (lift h d w) (lift h d u) (H1 c0 d h H4) (lift h d v) (lift h (S d) t) -(eq_ind T (lift h d (THead (Bind Abst) u t)) (\lambda (t0: T).(ty3 g c0 (lift -h d v) t0)) (H3 c0 d h H4) (THead (Bind Abst) (lift h d u) (lift h (S d) t)) -(lift_bind Abst u t h d))) (lift h (s (Flat Appl) d) (THead (Bind Abst) u t)) -(lift_head (Bind Abst) u t h (s (Flat Appl) d))) (lift h d (THead (Flat Appl) -w (THead (Bind Abst) u t))) (lift_head (Flat Appl) w (THead (Bind Abst) u t) -h d)) (lift h d (THead (Flat Appl) w v)) (lift_head (Flat Appl) w v h -d))))))))))))))) (\lambda (c: C).(\lambda (t0: T).(\lambda (t3: T).(\lambda -(_: (ty3 g c t0 t3)).(\lambda (H1: ((\forall (c0: C).(\forall (d: -nat).(\forall (h: nat).((drop h d c0 c) \to (ty3 g c0 (lift h d t0) (lift h d -t3)))))))).(\lambda (t4: T).(\lambda (_: (ty3 g c t3 t4)).(\lambda (H3: -((\forall (c0: C).(\forall (d: nat).(\forall (h: nat).((drop h d c0 c) \to -(ty3 g c0 (lift h d t3) (lift h d t4)))))))).(\lambda (c0: C).(\lambda (d: -nat).(\lambda (h: nat).(\lambda (H4: (drop h d c0 c)).(eq_ind_r T (THead -(Flat Cast) (lift h d t3) (lift h (s (Flat Cast) d) t0)) (\lambda (t: T).(ty3 -g c0 t (lift h d (THead (Flat Cast) t4 t3)))) (eq_ind_r T (THead (Flat Cast) -(lift h d t4) (lift h (s (Flat Cast) d) t3)) (\lambda (t: T).(ty3 g c0 (THead -(Flat Cast) (lift h d t3) (lift h (s (Flat Cast) d) t0)) t)) (ty3_cast g c0 -(lift h (s (Flat Cast) d) t0) (lift h (s (Flat Cast) d) t3) (H1 c0 (s (Flat -Cast) d) h H4) (lift h d t4) (H3 c0 d h H4)) (lift h d (THead (Flat Cast) t4 -t3)) (lift_head (Flat Cast) t4 t3 h d)) (lift h d (THead (Flat Cast) t3 t0)) -(lift_head (Flat Cast) t3 t0 h d)))))))))))))) e t1 t2 H))))). -(* COMMENTS -Initial nodes: 4253 -END *) +x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abbr) u))).(let TMP_62 \def +(minus d0 n) in (let TMP_63 \def (\lambda (n0: nat).(drop h n0 x0 x1)) in +(let TMP_64 \def (S n) in (let TMP_65 \def (minus d0 TMP_64) in (let TMP_66 +\def (S TMP_65) in (let TMP_67 \def (minus_x_Sy d0 n H4) in (let H9 \def +(eq_ind nat TMP_62 TMP_63 H7 TMP_66 TMP_67) in (let TMP_68 \def (S n) in (let +TMP_69 \def (minus d0 TMP_68) in (let H10 \def (drop_clear_S x1 x0 h TMP_69 +H9 Abbr d u H8) in (let TMP_75 \def (\lambda (c1: C).(let TMP_70 \def (Bind +Abbr) in (let TMP_71 \def (S n) in (let TMP_72 \def (minus d0 TMP_71) in (let +TMP_73 \def (lift h TMP_72 u) in (let TMP_74 \def (CHead c1 TMP_70 TMP_73) in +(clear x0 TMP_74))))))) in (let TMP_78 \def (\lambda (c1: C).(let TMP_76 \def +(S n) in (let TMP_77 \def (minus d0 TMP_76) in (drop h TMP_77 c1 d)))) in +(let TMP_79 \def (TLRef n) in (let TMP_80 \def (lift h d0 TMP_79) in (let +TMP_81 \def (S n) in (let TMP_82 \def (lift TMP_81 O t) in (let TMP_83 \def +(lift h d0 TMP_82) in (let TMP_84 \def (ty3 g c0 TMP_80 TMP_83) in (let +TMP_157 \def (\lambda (x: C).(\lambda (H11: (clear x0 (CHead x (Bind Abbr) +(lift h (minus d0 (S n)) u)))).(\lambda (H12: (drop h (minus d0 (S n)) x +d)).(let TMP_85 \def (TLRef n) in (let TMP_89 \def (\lambda (t0: T).(let +TMP_86 \def (S n) in (let TMP_87 \def (lift TMP_86 O t) in (let TMP_88 \def +(lift h d0 TMP_87) in (ty3 g c0 t0 TMP_88))))) in (let TMP_90 \def (S n) in +(let TMP_91 \def (S n) in (let TMP_92 \def (minus d0 TMP_91) in (let TMP_93 +\def (plus TMP_90 TMP_92) in (let TMP_98 \def (\lambda (n0: nat).(let TMP_94 +\def (TLRef n) in (let TMP_95 \def (S n) in (let TMP_96 \def (lift TMP_95 O +t) in (let TMP_97 \def (lift h n0 TMP_96) in (ty3 g c0 TMP_94 TMP_97)))))) in +(let TMP_99 \def (S n) in (let TMP_100 \def (S n) in (let TMP_101 \def (minus +d0 TMP_100) in (let TMP_102 \def (lift h TMP_101 t) in (let TMP_103 \def +(lift TMP_99 O TMP_102) in (let TMP_105 \def (\lambda (t0: T).(let TMP_104 +\def (TLRef n) in (ty3 g c0 TMP_104 t0))) in (let TMP_112 \def (\lambda (_: +nat).(let TMP_106 \def (TLRef n) in (let TMP_107 \def (S n) in (let TMP_108 +\def (S n) in (let TMP_109 \def (minus d0 TMP_108) in (let TMP_110 \def (lift +h TMP_109 t) in (let TMP_111 \def (lift TMP_107 O TMP_110) in (ty3 g c0 +TMP_106 TMP_111)))))))) in (let TMP_113 \def (S n) in (let TMP_114 \def +(minus d0 TMP_113) in (let TMP_115 \def (lift h TMP_114 u) in (let TMP_116 +\def (Bind Abbr) in (let TMP_117 \def (S n) in (let TMP_118 \def (minus d0 +TMP_117) in (let TMP_119 \def (lift h TMP_118 u) in (let TMP_120 \def (CHead +x TMP_116 TMP_119) in (let TMP_121 \def (getl_intro n c0 TMP_120 x0 H6 H11) +in (let TMP_122 \def (S n) in (let TMP_123 \def (minus d0 TMP_122) in (let +TMP_124 \def (lift h TMP_123 t) in (let TMP_125 \def (S n) in (let TMP_126 +\def (minus d0 TMP_125) in (let TMP_127 \def (H2 x TMP_126 h H12) in (let +TMP_128 \def (ty3_abbr g n c0 x TMP_115 TMP_121 TMP_124 TMP_127) in (let +TMP_129 \def (S n) in (let TMP_130 \def (S n) in (let TMP_131 \def (minus d0 +TMP_130) in (let TMP_132 \def (plus TMP_129 TMP_131) in (let TMP_133 \def (S +n) in (let TMP_134 \def (le_plus_minus TMP_133 d0 H4) in (let TMP_135 \def +(eq_ind nat d0 TMP_112 TMP_128 TMP_132 TMP_134) in (let TMP_136 \def (S n) in +(let TMP_137 \def (S n) in (let TMP_138 \def (minus d0 TMP_137) in (let +TMP_139 \def (plus TMP_136 TMP_138) in (let TMP_140 \def (S n) in (let +TMP_141 \def (lift TMP_140 O t) in (let TMP_142 \def (lift h TMP_139 TMP_141) +in (let TMP_143 \def (S n) in (let TMP_144 \def (S n) in (let TMP_145 \def +(minus d0 TMP_144) in (let TMP_146 \def (S n) in (let TMP_147 \def (minus d0 +TMP_146) in (let TMP_148 \def (le_O_n TMP_147) in (let TMP_149 \def (lift_d t +h TMP_143 TMP_145 O TMP_148) in (let TMP_150 \def (eq_ind_r T TMP_103 TMP_105 +TMP_135 TMP_142 TMP_149) in (let TMP_151 \def (S n) in (let TMP_152 \def +(le_plus_minus_r TMP_151 d0 H4) in (let TMP_153 \def (eq_ind nat TMP_93 +TMP_98 TMP_150 d0 TMP_152) in (let TMP_154 \def (TLRef n) in (let TMP_155 +\def (lift h d0 TMP_154) in (let TMP_156 \def (lift_lref_lt n h d0 H4) in +(eq_ind_r T TMP_85 TMP_89 TMP_153 TMP_155 +TMP_156)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) in +(ex2_ind C TMP_75 TMP_78 TMP_84 TMP_157 H10))))))))))))))))))))))))) in +(ex3_2_ind C C TMP_50 TMP_52 TMP_55 TMP_61 TMP_158 +H5))))))))))))))))))))))))) in (let TMP_232 \def (\lambda (H4: (le d0 +n)).(let TMP_160 \def (plus n h) in (let TMP_161 \def (TLRef TMP_160) in (let +TMP_165 \def (\lambda (t0: T).(let TMP_162 \def (S n) in (let TMP_163 \def +(lift TMP_162 O t) in (let TMP_164 \def (lift h d0 TMP_163) in (ty3 g c0 t0 +TMP_164))))) in (let TMP_166 \def (S n) in (let TMP_172 \def (\lambda (_: +nat).(let TMP_167 \def (plus n h) in (let TMP_168 \def (TLRef TMP_167) in +(let TMP_169 \def (S n) in (let TMP_170 \def (lift TMP_169 O t) in (let +TMP_171 \def (lift h d0 TMP_170) in (ty3 g c0 TMP_168 TMP_171))))))) in (let +TMP_173 \def (S n) in (let TMP_174 \def (plus h TMP_173) in (let TMP_175 \def +(lift TMP_174 O t) in (let TMP_178 \def (\lambda (t0: T).(let TMP_176 \def +(plus n h) in (let TMP_177 \def (TLRef TMP_176) in (ty3 g c0 TMP_177 t0)))) +in (let TMP_179 \def (S n) in (let TMP_180 \def (plus TMP_179 h) in (let +TMP_184 \def (\lambda (n0: nat).(let TMP_181 \def (plus n h) in (let TMP_182 +\def (TLRef TMP_181) in (let TMP_183 \def (lift n0 O t) in (ty3 g c0 TMP_182 +TMP_183))))) in (let TMP_185 \def (plus n h) in (let TMP_186 \def (Bind Abbr) +in (let TMP_187 \def (CHead d TMP_186 u) in (let TMP_188 \def +(drop_getl_trans_ge n c0 c d0 h H3 TMP_187 H0 H4) in (let TMP_189 \def +(ty3_abbr g TMP_185 c0 d u TMP_188 t H1) in (let TMP_190 \def (S n) in (let +TMP_191 \def (plus h TMP_190) in (let TMP_192 \def (S n) in (let TMP_193 \def +(plus_sym h TMP_192) in (let TMP_194 \def (eq_ind_r nat TMP_180 TMP_184 +TMP_189 TMP_191 TMP_193) in (let TMP_195 \def (S n) in (let TMP_196 \def +(lift TMP_195 O t) in (let TMP_197 \def (lift h d0 TMP_196) in (let TMP_198 +\def (S n) in (let TMP_199 \def (S n) in (let TMP_200 \def (S d0) in (let +TMP_201 \def (S n) in (let TMP_202 \def (le_n_S d0 n H4) in (let TMP_203 \def +(le_S TMP_200 TMP_201 TMP_202) in (let TMP_204 \def (le_S_n d0 TMP_199 +TMP_203) in (let TMP_205 \def (le_O_n d0) in (let TMP_206 \def (lift_free t +TMP_198 h O d0 TMP_204 TMP_205) in (let TMP_207 \def (eq_ind_r T TMP_175 +TMP_178 TMP_194 TMP_197 TMP_206) in (let TMP_208 \def (S O) in (let TMP_209 +\def (plus n TMP_208) in (let TMP_210 \def (S O) in (let TMP_211 \def (plus +TMP_210 n) in (let TMP_213 \def (\lambda (n0: nat).(let TMP_212 \def (S n) in +(eq nat TMP_212 n0))) in (let TMP_214 \def (S n) in (let TMP_215 \def (S O) +in (let TMP_216 \def (plus TMP_215 n) in (let TMP_217 \def (S O) in (let +TMP_218 \def (plus TMP_217 n) in (let TMP_219 \def (le_n TMP_218) in (let +TMP_220 \def (S n) in (let TMP_221 \def (le_n TMP_220) in (let TMP_222 \def +(le_antisym TMP_214 TMP_216 TMP_219 TMP_221) in (let TMP_223 \def (S O) in +(let TMP_224 \def (plus n TMP_223) in (let TMP_225 \def (S O) in (let TMP_226 +\def (plus_sym n TMP_225) in (let TMP_227 \def (eq_ind_r nat TMP_211 TMP_213 +TMP_222 TMP_224 TMP_226) in (let TMP_228 \def (eq_ind nat TMP_166 TMP_172 +TMP_207 TMP_209 TMP_227) in (let TMP_229 \def (TLRef n) in (let TMP_230 \def +(lift h d0 TMP_229) in (let TMP_231 \def (lift_lref_ge n h d0 H4) in +(eq_ind_r T TMP_161 TMP_165 TMP_228 TMP_230 +TMP_231)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) in +(lt_le_e n d0 TMP_37 TMP_159 TMP_232))))))))))))))))))))) in (let TMP_435 +\def (\lambda (n: nat).(\lambda (c: C).(\lambda (d: C).(\lambda (u: +T).(\lambda (H0: (getl n c (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda +(H1: (ty3 g d u t)).(\lambda (H2: ((\forall (c0: C).(\forall (d0: +nat).(\forall (h: nat).((drop h d0 c0 d) \to (ty3 g c0 (lift h d0 u) (lift h +d0 t)))))))).(\lambda (c0: C).(\lambda (d0: nat).(\lambda (h: nat).(\lambda +(H3: (drop h d0 c0 c)).(let TMP_234 \def (TLRef n) in (let TMP_235 \def (lift +h d0 TMP_234) in (let TMP_236 \def (S n) in (let TMP_237 \def (lift TMP_236 O +u) in (let TMP_238 \def (lift h d0 TMP_237) in (let TMP_239 \def (ty3 g c0 +TMP_235 TMP_238) in (let TMP_361 \def (\lambda (H4: (lt n d0)).(let TMP_240 +\def (S n) in (let TMP_241 \def (S d0) in (let TMP_242 \def (S n) in (let +TMP_243 \def (S TMP_242) in (let TMP_244 \def (S d0) in (let TMP_245 \def (S +n) in (let TMP_246 \def (le_n_S TMP_245 d0 H4) in (let TMP_247 \def (le_S +TMP_243 TMP_244 TMP_246) in (let TMP_248 \def (le_S_n TMP_240 TMP_241 +TMP_247) in (let TMP_249 \def (le_S_n n d0 TMP_248) in (let TMP_250 \def +(Bind Abst) in (let TMP_251 \def (CHead d TMP_250 u) in (let H5 \def +(drop_getl_trans_le n d0 TMP_249 c0 c h H3 TMP_251 H0) in (let TMP_252 \def +(\lambda (e0: C).(\lambda (_: C).(drop n O c0 e0))) in (let TMP_254 \def +(\lambda (e0: C).(\lambda (e1: C).(let TMP_253 \def (minus d0 n) in (drop h +TMP_253 e0 e1)))) in (let TMP_257 \def (\lambda (_: C).(\lambda (e1: C).(let +TMP_255 \def (Bind Abst) in (let TMP_256 \def (CHead d TMP_255 u) in (clear +e1 TMP_256))))) in (let TMP_258 \def (TLRef n) in (let TMP_259 \def (lift h +d0 TMP_258) in (let TMP_260 \def (S n) in (let TMP_261 \def (lift TMP_260 O +u) in (let TMP_262 \def (lift h d0 TMP_261) in (let TMP_263 \def (ty3 g c0 +TMP_259 TMP_262) in (let TMP_360 \def (\lambda (x0: C).(\lambda (x1: +C).(\lambda (H6: (drop n O c0 x0)).(\lambda (H7: (drop h (minus d0 n) x0 +x1)).(\lambda (H8: (clear x1 (CHead d (Bind Abst) u))).(let TMP_264 \def +(minus d0 n) in (let TMP_265 \def (\lambda (n0: nat).(drop h n0 x0 x1)) in +(let TMP_266 \def (S n) in (let TMP_267 \def (minus d0 TMP_266) in (let +TMP_268 \def (S TMP_267) in (let TMP_269 \def (minus_x_Sy d0 n H4) in (let H9 +\def (eq_ind nat TMP_264 TMP_265 H7 TMP_268 TMP_269) in (let TMP_270 \def (S +n) in (let TMP_271 \def (minus d0 TMP_270) in (let H10 \def (drop_clear_S x1 +x0 h TMP_271 H9 Abst d u H8) in (let TMP_277 \def (\lambda (c1: C).(let +TMP_272 \def (Bind Abst) in (let TMP_273 \def (S n) in (let TMP_274 \def +(minus d0 TMP_273) in (let TMP_275 \def (lift h TMP_274 u) in (let TMP_276 +\def (CHead c1 TMP_272 TMP_275) in (clear x0 TMP_276))))))) in (let TMP_280 +\def (\lambda (c1: C).(let TMP_278 \def (S n) in (let TMP_279 \def (minus d0 +TMP_278) in (drop h TMP_279 c1 d)))) in (let TMP_281 \def (TLRef n) in (let +TMP_282 \def (lift h d0 TMP_281) in (let TMP_283 \def (S n) in (let TMP_284 +\def (lift TMP_283 O u) in (let TMP_285 \def (lift h d0 TMP_284) in (let +TMP_286 \def (ty3 g c0 TMP_282 TMP_285) in (let TMP_359 \def (\lambda (x: +C).(\lambda (H11: (clear x0 (CHead x (Bind Abst) (lift h (minus d0 (S n)) +u)))).(\lambda (H12: (drop h (minus d0 (S n)) x d)).(let TMP_287 \def (TLRef +n) in (let TMP_291 \def (\lambda (t0: T).(let TMP_288 \def (S n) in (let +TMP_289 \def (lift TMP_288 O u) in (let TMP_290 \def (lift h d0 TMP_289) in +(ty3 g c0 t0 TMP_290))))) in (let TMP_292 \def (S n) in (let TMP_293 \def (S +n) in (let TMP_294 \def (minus d0 TMP_293) in (let TMP_295 \def (plus TMP_292 +TMP_294) in (let TMP_300 \def (\lambda (n0: nat).(let TMP_296 \def (TLRef n) +in (let TMP_297 \def (S n) in (let TMP_298 \def (lift TMP_297 O u) in (let +TMP_299 \def (lift h n0 TMP_298) in (ty3 g c0 TMP_296 TMP_299)))))) in (let +TMP_301 \def (S n) in (let TMP_302 \def (S n) in (let TMP_303 \def (minus d0 +TMP_302) in (let TMP_304 \def (lift h TMP_303 u) in (let TMP_305 \def (lift +TMP_301 O TMP_304) in (let TMP_307 \def (\lambda (t0: T).(let TMP_306 \def +(TLRef n) in (ty3 g c0 TMP_306 t0))) in (let TMP_314 \def (\lambda (_: +nat).(let TMP_308 \def (TLRef n) in (let TMP_309 \def (S n) in (let TMP_310 +\def (S n) in (let TMP_311 \def (minus d0 TMP_310) in (let TMP_312 \def (lift +h TMP_311 u) in (let TMP_313 \def (lift TMP_309 O TMP_312) in (ty3 g c0 +TMP_308 TMP_313)))))))) in (let TMP_315 \def (S n) in (let TMP_316 \def +(minus d0 TMP_315) in (let TMP_317 \def (lift h TMP_316 u) in (let TMP_318 +\def (Bind Abst) in (let TMP_319 \def (S n) in (let TMP_320 \def (minus d0 +TMP_319) in (let TMP_321 \def (lift h TMP_320 u) in (let TMP_322 \def (CHead +x TMP_318 TMP_321) in (let TMP_323 \def (getl_intro n c0 TMP_322 x0 H6 H11) +in (let TMP_324 \def (S n) in (let TMP_325 \def (minus d0 TMP_324) in (let +TMP_326 \def (lift h TMP_325 t) in (let TMP_327 \def (S n) in (let TMP_328 +\def (minus d0 TMP_327) in (let TMP_329 \def (H2 x TMP_328 h H12) in (let +TMP_330 \def (ty3_abst g n c0 x TMP_317 TMP_323 TMP_326 TMP_329) in (let +TMP_331 \def (S n) in (let TMP_332 \def (S n) in (let TMP_333 \def (minus d0 +TMP_332) in (let TMP_334 \def (plus TMP_331 TMP_333) in (let TMP_335 \def (S +n) in (let TMP_336 \def (le_plus_minus TMP_335 d0 H4) in (let TMP_337 \def +(eq_ind nat d0 TMP_314 TMP_330 TMP_334 TMP_336) in (let TMP_338 \def (S n) in +(let TMP_339 \def (S n) in (let TMP_340 \def (minus d0 TMP_339) in (let +TMP_341 \def (plus TMP_338 TMP_340) in (let TMP_342 \def (S n) in (let +TMP_343 \def (lift TMP_342 O u) in (let TMP_344 \def (lift h TMP_341 TMP_343) +in (let TMP_345 \def (S n) in (let TMP_346 \def (S n) in (let TMP_347 \def +(minus d0 TMP_346) in (let TMP_348 \def (S n) in (let TMP_349 \def (minus d0 +TMP_348) in (let TMP_350 \def (le_O_n TMP_349) in (let TMP_351 \def (lift_d u +h TMP_345 TMP_347 O TMP_350) in (let TMP_352 \def (eq_ind_r T TMP_305 TMP_307 +TMP_337 TMP_344 TMP_351) in (let TMP_353 \def (S n) in (let TMP_354 \def +(le_plus_minus_r TMP_353 d0 H4) in (let TMP_355 \def (eq_ind nat TMP_295 +TMP_300 TMP_352 d0 TMP_354) in (let TMP_356 \def (TLRef n) in (let TMP_357 +\def (lift h d0 TMP_356) in (let TMP_358 \def (lift_lref_lt n h d0 H4) in +(eq_ind_r T TMP_287 TMP_291 TMP_355 TMP_357 +TMP_358)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) in +(ex2_ind C TMP_277 TMP_280 TMP_286 TMP_359 H10))))))))))))))))))))))))) in +(ex3_2_ind C C TMP_252 TMP_254 TMP_257 TMP_263 TMP_360 +H5))))))))))))))))))))))))) in (let TMP_434 \def (\lambda (H4: (le d0 +n)).(let TMP_362 \def (plus n h) in (let TMP_363 \def (TLRef TMP_362) in (let +TMP_367 \def (\lambda (t0: T).(let TMP_364 \def (S n) in (let TMP_365 \def +(lift TMP_364 O u) in (let TMP_366 \def (lift h d0 TMP_365) in (ty3 g c0 t0 +TMP_366))))) in (let TMP_368 \def (S n) in (let TMP_374 \def (\lambda (_: +nat).(let TMP_369 \def (plus n h) in (let TMP_370 \def (TLRef TMP_369) in +(let TMP_371 \def (S n) in (let TMP_372 \def (lift TMP_371 O u) in (let +TMP_373 \def (lift h d0 TMP_372) in (ty3 g c0 TMP_370 TMP_373))))))) in (let +TMP_375 \def (S n) in (let TMP_376 \def (plus h TMP_375) in (let TMP_377 \def +(lift TMP_376 O u) in (let TMP_380 \def (\lambda (t0: T).(let TMP_378 \def +(plus n h) in (let TMP_379 \def (TLRef TMP_378) in (ty3 g c0 TMP_379 t0)))) +in (let TMP_381 \def (S n) in (let TMP_382 \def (plus TMP_381 h) in (let +TMP_386 \def (\lambda (n0: nat).(let TMP_383 \def (plus n h) in (let TMP_384 +\def (TLRef TMP_383) in (let TMP_385 \def (lift n0 O u) in (ty3 g c0 TMP_384 +TMP_385))))) in (let TMP_387 \def (plus n h) in (let TMP_388 \def (Bind Abst) +in (let TMP_389 \def (CHead d TMP_388 u) in (let TMP_390 \def +(drop_getl_trans_ge n c0 c d0 h H3 TMP_389 H0 H4) in (let TMP_391 \def +(ty3_abst g TMP_387 c0 d u TMP_390 t H1) in (let TMP_392 \def (S n) in (let +TMP_393 \def (plus h TMP_392) in (let TMP_394 \def (S n) in (let TMP_395 \def +(plus_sym h TMP_394) in (let TMP_396 \def (eq_ind_r nat TMP_382 TMP_386 +TMP_391 TMP_393 TMP_395) in (let TMP_397 \def (S n) in (let TMP_398 \def +(lift TMP_397 O u) in (let TMP_399 \def (lift h d0 TMP_398) in (let TMP_400 +\def (S n) in (let TMP_401 \def (S n) in (let TMP_402 \def (S d0) in (let +TMP_403 \def (S n) in (let TMP_404 \def (le_n_S d0 n H4) in (let TMP_405 \def +(le_S TMP_402 TMP_403 TMP_404) in (let TMP_406 \def (le_S_n d0 TMP_401 +TMP_405) in (let TMP_407 \def (le_O_n d0) in (let TMP_408 \def (lift_free u +TMP_400 h O d0 TMP_406 TMP_407) in (let TMP_409 \def (eq_ind_r T TMP_377 +TMP_380 TMP_396 TMP_399 TMP_408) in (let TMP_410 \def (S O) in (let TMP_411 +\def (plus n TMP_410) in (let TMP_412 \def (S O) in (let TMP_413 \def (plus +TMP_412 n) in (let TMP_415 \def (\lambda (n0: nat).(let TMP_414 \def (S n) in +(eq nat TMP_414 n0))) in (let TMP_416 \def (S n) in (let TMP_417 \def (S O) +in (let TMP_418 \def (plus TMP_417 n) in (let TMP_419 \def (S O) in (let +TMP_420 \def (plus TMP_419 n) in (let TMP_421 \def (le_n TMP_420) in (let +TMP_422 \def (S n) in (let TMP_423 \def (le_n TMP_422) in (let TMP_424 \def +(le_antisym TMP_416 TMP_418 TMP_421 TMP_423) in (let TMP_425 \def (S O) in +(let TMP_426 \def (plus n TMP_425) in (let TMP_427 \def (S O) in (let TMP_428 +\def (plus_sym n TMP_427) in (let TMP_429 \def (eq_ind_r nat TMP_413 TMP_415 +TMP_424 TMP_426 TMP_428) in (let TMP_430 \def (eq_ind nat TMP_368 TMP_374 +TMP_409 TMP_411 TMP_429) in (let TMP_431 \def (TLRef n) in (let TMP_432 \def +(lift h d0 TMP_431) in (let TMP_433 \def (lift_lref_ge n h d0 H4) in +(eq_ind_r T TMP_363 TMP_367 TMP_430 TMP_432 +TMP_433)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) in +(lt_le_e n d0 TMP_239 TMP_361 TMP_434))))))))))))))))))))) in (let TMP_484 +\def (\lambda (c: C).(\lambda (u: T).(\lambda (t: T).(\lambda (_: (ty3 g c u +t)).(\lambda (H1: ((\forall (c0: C).(\forall (d: nat).(\forall (h: +nat).((drop h d c0 c) \to (ty3 g c0 (lift h d u) (lift h d t)))))))).(\lambda +(b: B).(\lambda (t0: T).(\lambda (t3: T).(\lambda (_: (ty3 g (CHead c (Bind +b) u) t0 t3)).(\lambda (H3: ((\forall (c0: C).(\forall (d: nat).(\forall (h: +nat).((drop h d c0 (CHead c (Bind b) u)) \to (ty3 g c0 (lift h d t0) (lift h +d t3)))))))).(\lambda (c0: C).(\lambda (d: nat).(\lambda (h: nat).(\lambda +(H4: (drop h d c0 c)).(let TMP_436 \def (Bind b) in (let TMP_437 \def (lift h +d u) in (let TMP_438 \def (Bind b) in (let TMP_439 \def (s TMP_438 d) in (let +TMP_440 \def (lift h TMP_439 t0) in (let TMP_441 \def (THead TMP_436 TMP_437 +TMP_440) in (let TMP_445 \def (\lambda (t4: T).(let TMP_442 \def (Bind b) in +(let TMP_443 \def (THead TMP_442 u t3) in (let TMP_444 \def (lift h d +TMP_443) in (ty3 g c0 t4 TMP_444))))) in (let TMP_446 \def (Bind b) in (let +TMP_447 \def (lift h d u) in (let TMP_448 \def (Bind b) in (let TMP_449 \def +(s TMP_448 d) in (let TMP_450 \def (lift h TMP_449 t3) in (let TMP_451 \def +(THead TMP_446 TMP_447 TMP_450) in (let TMP_458 \def (\lambda (t4: T).(let +TMP_452 \def (Bind b) in (let TMP_453 \def (lift h d u) in (let TMP_454 \def +(Bind b) in (let TMP_455 \def (s TMP_454 d) in (let TMP_456 \def (lift h +TMP_455 t0) in (let TMP_457 \def (THead TMP_452 TMP_453 TMP_456) in (ty3 g c0 +TMP_457 t4)))))))) in (let TMP_459 \def (lift h d u) in (let TMP_460 \def +(lift h d t) in (let TMP_461 \def (H1 c0 d h H4) in (let TMP_462 \def (S d) +in (let TMP_463 \def (lift h TMP_462 t0) in (let TMP_464 \def (S d) in (let +TMP_465 \def (lift h TMP_464 t3) in (let TMP_466 \def (Bind b) in (let +TMP_467 \def (lift h d u) in (let TMP_468 \def (CHead c0 TMP_466 TMP_467) in +(let TMP_469 \def (S d) in (let TMP_470 \def (drop_skip_bind h d c0 c H4 b u) +in (let TMP_471 \def (H3 TMP_468 TMP_469 h TMP_470) in (let TMP_472 \def +(ty3_bind g c0 TMP_459 TMP_460 TMP_461 b TMP_463 TMP_465 TMP_471) in (let +TMP_473 \def (Bind b) in (let TMP_474 \def (THead TMP_473 u t3) in (let +TMP_475 \def (lift h d TMP_474) in (let TMP_476 \def (Bind b) in (let TMP_477 +\def (lift_head TMP_476 u t3 h d) in (let TMP_478 \def (eq_ind_r T TMP_451 +TMP_458 TMP_472 TMP_475 TMP_477) in (let TMP_479 \def (Bind b) in (let +TMP_480 \def (THead TMP_479 u t0) in (let TMP_481 \def (lift h d TMP_480) in +(let TMP_482 \def (Bind b) in (let TMP_483 \def (lift_head TMP_482 u t0 h d) +in (eq_ind_r T TMP_441 TMP_445 TMP_478 TMP_481 +TMP_483)))))))))))))))))))))))))))))))))))))))))))))))))))))) in (let TMP_577 +\def (\lambda (c: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: (ty3 g c w +u)).(\lambda (H1: ((\forall (c0: C).(\forall (d: nat).(\forall (h: +nat).((drop h d c0 c) \to (ty3 g c0 (lift h d w) (lift h d u)))))))).(\lambda +(v: T).(\lambda (t: T).(\lambda (_: (ty3 g c v (THead (Bind Abst) u +t))).(\lambda (H3: ((\forall (c0: C).(\forall (d: nat).(\forall (h: +nat).((drop h d c0 c) \to (ty3 g c0 (lift h d v) (lift h d (THead (Bind Abst) +u t))))))))).(\lambda (c0: C).(\lambda (d: nat).(\lambda (h: nat).(\lambda +(H4: (drop h d c0 c)).(let TMP_485 \def (Flat Appl) in (let TMP_486 \def +(lift h d w) in (let TMP_487 \def (Flat Appl) in (let TMP_488 \def (s TMP_487 +d) in (let TMP_489 \def (lift h TMP_488 v) in (let TMP_490 \def (THead +TMP_485 TMP_486 TMP_489) in (let TMP_496 \def (\lambda (t0: T).(let TMP_491 +\def (Flat Appl) in (let TMP_492 \def (Bind Abst) in (let TMP_493 \def (THead +TMP_492 u t) in (let TMP_494 \def (THead TMP_491 w TMP_493) in (let TMP_495 +\def (lift h d TMP_494) in (ty3 g c0 t0 TMP_495))))))) in (let TMP_497 \def +(Flat Appl) in (let TMP_498 \def (lift h d w) in (let TMP_499 \def (Flat +Appl) in (let TMP_500 \def (s TMP_499 d) in (let TMP_501 \def (Bind Abst) in +(let TMP_502 \def (THead TMP_501 u t) in (let TMP_503 \def (lift h TMP_500 +TMP_502) in (let TMP_504 \def (THead TMP_497 TMP_498 TMP_503) in (let TMP_511 +\def (\lambda (t0: T).(let TMP_505 \def (Flat Appl) in (let TMP_506 \def +(lift h d w) in (let TMP_507 \def (Flat Appl) in (let TMP_508 \def (s TMP_507 +d) in (let TMP_509 \def (lift h TMP_508 v) in (let TMP_510 \def (THead +TMP_505 TMP_506 TMP_509) in (ty3 g c0 TMP_510 t0)))))))) in (let TMP_512 \def +(Bind Abst) in (let TMP_513 \def (Flat Appl) in (let TMP_514 \def (s TMP_513 +d) in (let TMP_515 \def (lift h TMP_514 u) in (let TMP_516 \def (Bind Abst) +in (let TMP_517 \def (Flat Appl) in (let TMP_518 \def (s TMP_517 d) in (let +TMP_519 \def (s TMP_516 TMP_518) in (let TMP_520 \def (lift h TMP_519 t) in +(let TMP_521 \def (THead TMP_512 TMP_515 TMP_520) in (let TMP_531 \def +(\lambda (t0: T).(let TMP_522 \def (Flat Appl) in (let TMP_523 \def (lift h d +w) in (let TMP_524 \def (Flat Appl) in (let TMP_525 \def (s TMP_524 d) in +(let TMP_526 \def (lift h TMP_525 v) in (let TMP_527 \def (THead TMP_522 +TMP_523 TMP_526) in (let TMP_528 \def (Flat Appl) in (let TMP_529 \def (lift +h d w) in (let TMP_530 \def (THead TMP_528 TMP_529 t0) in (ty3 g c0 TMP_527 +TMP_530))))))))))) in (let TMP_532 \def (lift h d w) in (let TMP_533 \def +(lift h d u) in (let TMP_534 \def (H1 c0 d h H4) in (let TMP_535 \def (lift h +d v) in (let TMP_536 \def (S d) in (let TMP_537 \def (lift h TMP_536 t) in +(let TMP_538 \def (Bind Abst) in (let TMP_539 \def (THead TMP_538 u t) in +(let TMP_540 \def (lift h d TMP_539) in (let TMP_542 \def (\lambda (t0: +T).(let TMP_541 \def (lift h d v) in (ty3 g c0 TMP_541 t0))) in (let TMP_543 +\def (H3 c0 d h H4) in (let TMP_544 \def (Bind Abst) in (let TMP_545 \def +(lift h d u) in (let TMP_546 \def (S d) in (let TMP_547 \def (lift h TMP_546 +t) in (let TMP_548 \def (THead TMP_544 TMP_545 TMP_547) in (let TMP_549 \def +(lift_bind Abst u t h d) in (let TMP_550 \def (eq_ind T TMP_540 TMP_542 +TMP_543 TMP_548 TMP_549) in (let TMP_551 \def (ty3_appl g c0 TMP_532 TMP_533 +TMP_534 TMP_535 TMP_537 TMP_550) in (let TMP_552 \def (Flat Appl) in (let +TMP_553 \def (s TMP_552 d) in (let TMP_554 \def (Bind Abst) in (let TMP_555 +\def (THead TMP_554 u t) in (let TMP_556 \def (lift h TMP_553 TMP_555) in +(let TMP_557 \def (Bind Abst) in (let TMP_558 \def (Flat Appl) in (let +TMP_559 \def (s TMP_558 d) in (let TMP_560 \def (lift_head TMP_557 u t h +TMP_559) in (let TMP_561 \def (eq_ind_r T TMP_521 TMP_531 TMP_551 TMP_556 +TMP_560) in (let TMP_562 \def (Flat Appl) in (let TMP_563 \def (Bind Abst) in +(let TMP_564 \def (THead TMP_563 u t) in (let TMP_565 \def (THead TMP_562 w +TMP_564) in (let TMP_566 \def (lift h d TMP_565) in (let TMP_567 \def (Flat +Appl) in (let TMP_568 \def (Bind Abst) in (let TMP_569 \def (THead TMP_568 u +t) in (let TMP_570 \def (lift_head TMP_567 w TMP_569 h d) in (let TMP_571 +\def (eq_ind_r T TMP_504 TMP_511 TMP_561 TMP_566 TMP_570) in (let TMP_572 +\def (Flat Appl) in (let TMP_573 \def (THead TMP_572 w v) in (let TMP_574 +\def (lift h d TMP_573) in (let TMP_575 \def (Flat Appl) in (let TMP_576 \def +(lift_head TMP_575 w v h d) in (eq_ind_r T TMP_490 TMP_496 TMP_571 TMP_574 +TMP_576))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +)))))))))))))) in (let TMP_624 \def (\lambda (c: C).(\lambda (t0: T).(\lambda +(t3: T).(\lambda (_: (ty3 g c t0 t3)).(\lambda (H1: ((\forall (c0: +C).(\forall (d: nat).(\forall (h: nat).((drop h d c0 c) \to (ty3 g c0 (lift h +d t0) (lift h d t3)))))))).(\lambda (t4: T).(\lambda (_: (ty3 g c t3 +t4)).(\lambda (H3: ((\forall (c0: C).(\forall (d: nat).(\forall (h: +nat).((drop h d c0 c) \to (ty3 g c0 (lift h d t3) (lift h d +t4)))))))).(\lambda (c0: C).(\lambda (d: nat).(\lambda (h: nat).(\lambda (H4: +(drop h d c0 c)).(let TMP_578 \def (Flat Cast) in (let TMP_579 \def (lift h d +t3) in (let TMP_580 \def (Flat Cast) in (let TMP_581 \def (s TMP_580 d) in +(let TMP_582 \def (lift h TMP_581 t0) in (let TMP_583 \def (THead TMP_578 +TMP_579 TMP_582) in (let TMP_587 \def (\lambda (t: T).(let TMP_584 \def (Flat +Cast) in (let TMP_585 \def (THead TMP_584 t4 t3) in (let TMP_586 \def (lift h +d TMP_585) in (ty3 g c0 t TMP_586))))) in (let TMP_588 \def (Flat Cast) in +(let TMP_589 \def (lift h d t4) in (let TMP_590 \def (Flat Cast) in (let +TMP_591 \def (s TMP_590 d) in (let TMP_592 \def (lift h TMP_591 t3) in (let +TMP_593 \def (THead TMP_588 TMP_589 TMP_592) in (let TMP_600 \def (\lambda +(t: T).(let TMP_594 \def (Flat Cast) in (let TMP_595 \def (lift h d t3) in +(let TMP_596 \def (Flat Cast) in (let TMP_597 \def (s TMP_596 d) in (let +TMP_598 \def (lift h TMP_597 t0) in (let TMP_599 \def (THead TMP_594 TMP_595 +TMP_598) in (ty3 g c0 TMP_599 t)))))))) in (let TMP_601 \def (Flat Cast) in +(let TMP_602 \def (s TMP_601 d) in (let TMP_603 \def (lift h TMP_602 t0) in +(let TMP_604 \def (Flat Cast) in (let TMP_605 \def (s TMP_604 d) in (let +TMP_606 \def (lift h TMP_605 t3) in (let TMP_607 \def (Flat Cast) in (let +TMP_608 \def (s TMP_607 d) in (let TMP_609 \def (H1 c0 TMP_608 h H4) in (let +TMP_610 \def (lift h d t4) in (let TMP_611 \def (H3 c0 d h H4) in (let +TMP_612 \def (ty3_cast g c0 TMP_603 TMP_606 TMP_609 TMP_610 TMP_611) in (let +TMP_613 \def (Flat Cast) in (let TMP_614 \def (THead TMP_613 t4 t3) in (let +TMP_615 \def (lift h d TMP_614) in (let TMP_616 \def (Flat Cast) in (let +TMP_617 \def (lift_head TMP_616 t4 t3 h d) in (let TMP_618 \def (eq_ind_r T +TMP_593 TMP_600 TMP_612 TMP_615 TMP_617) in (let TMP_619 \def (Flat Cast) in +(let TMP_620 \def (THead TMP_619 t3 t0) in (let TMP_621 \def (lift h d +TMP_620) in (let TMP_622 \def (Flat Cast) in (let TMP_623 \def (lift_head +TMP_622 t3 t0 h d) in (eq_ind_r T TMP_583 TMP_587 TMP_618 TMP_621 +TMP_623)))))))))))))))))))))))))))))))))))))))))))))))))) in (ty3_ind g TMP_3 +TMP_11 TMP_31 TMP_233 TMP_435 TMP_484 TMP_577 TMP_624 e t1 t2 H))))))))))))). theorem ty3_correct: \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c t1 t2) \to (ex T (\lambda (t: T).(ty3 g c t2 t))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda -(H: (ty3 g c t1 t2)).(ty3_ind g (\lambda (c0: C).(\lambda (_: T).(\lambda -(t0: T).(ex T (\lambda (t3: T).(ty3 g c0 t0 t3)))))) (\lambda (c0: -C).(\lambda (t0: T).(\lambda (t: T).(\lambda (H0: (ty3 g c0 t0 t)).(\lambda -(_: (ex T (\lambda (t3: T).(ty3 g c0 t t3)))).(\lambda (u: T).(\lambda (t3: -T).(\lambda (_: (ty3 g c0 u t3)).(\lambda (_: (ex T (\lambda (t4: T).(ty3 g -c0 t3 t4)))).(\lambda (_: (pc3 c0 t3 t0)).(ex_intro T (\lambda (t4: T).(ty3 g -c0 t0 t4)) t H0))))))))))) (\lambda (c0: C).(\lambda (m: nat).(ex_intro T -(\lambda (t: T).(ty3 g c0 (TSort (next g m)) t)) (TSort (next g (next g m))) -(ty3_sort g c0 (next g m))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: -C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abbr) -u))).(\lambda (t: T).(\lambda (_: (ty3 g d u t)).(\lambda (H2: (ex T (\lambda -(t0: T).(ty3 g d t t0)))).(let H3 \def H2 in (ex_ind T (\lambda (t0: T).(ty3 -g d t t0)) (ex T (\lambda (t0: T).(ty3 g c0 (lift (S n) O t) t0))) (\lambda -(x: T).(\lambda (H4: (ty3 g d t x)).(ex_intro T (\lambda (t0: T).(ty3 g c0 -(lift (S n) O t) t0)) (lift (S n) O x) (ty3_lift g d t x H4 c0 O (S n) -(getl_drop Abbr c0 d u n H0))))) H3)))))))))) (\lambda (n: nat).(\lambda (c0: +(H: (ty3 g c t1 t2)).(let TMP_2 \def (\lambda (c0: C).(\lambda (_: +T).(\lambda (t0: T).(let TMP_1 \def (\lambda (t3: T).(ty3 g c0 t0 t3)) in (ex +T TMP_1))))) in (let TMP_4 \def (\lambda (c0: C).(\lambda (t0: T).(\lambda +(t: T).(\lambda (H0: (ty3 g c0 t0 t)).(\lambda (_: (ex T (\lambda (t3: +T).(ty3 g c0 t t3)))).(\lambda (u: T).(\lambda (t3: T).(\lambda (_: (ty3 g c0 +u t3)).(\lambda (_: (ex T (\lambda (t4: T).(ty3 g c0 t3 t4)))).(\lambda (_: +(pc3 c0 t3 t0)).(let TMP_3 \def (\lambda (t4: T).(ty3 g c0 t0 t4)) in +(ex_intro T TMP_3 t H0)))))))))))) in (let TMP_13 \def (\lambda (c0: +C).(\lambda (m: nat).(let TMP_7 \def (\lambda (t: T).(let TMP_5 \def (next g +m) in (let TMP_6 \def (TSort TMP_5) in (ty3 g c0 TMP_6 t)))) in (let TMP_8 +\def (next g m) in (let TMP_9 \def (next g TMP_8) in (let TMP_10 \def (TSort +TMP_9) in (let TMP_11 \def (next g m) in (let TMP_12 \def (ty3_sort g c0 +TMP_11) in (ex_intro T TMP_7 TMP_10 TMP_12))))))))) in (let TMP_28 \def +(\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda +(H0: (getl n c0 (CHead d (Bind Abbr) u))).(\lambda (t: T).(\lambda (_: (ty3 g +d u t)).(\lambda (H2: (ex T (\lambda (t0: T).(ty3 g d t t0)))).(let H3 \def +H2 in (let TMP_14 \def (\lambda (t0: T).(ty3 g d t t0)) in (let TMP_17 \def +(\lambda (t0: T).(let TMP_15 \def (S n) in (let TMP_16 \def (lift TMP_15 O t) +in (ty3 g c0 TMP_16 t0)))) in (let TMP_18 \def (ex T TMP_17) in (let TMP_27 +\def (\lambda (x: T).(\lambda (H4: (ty3 g d t x)).(let TMP_21 \def (\lambda +(t0: T).(let TMP_19 \def (S n) in (let TMP_20 \def (lift TMP_19 O t) in (ty3 +g c0 TMP_20 t0)))) in (let TMP_22 \def (S n) in (let TMP_23 \def (lift TMP_22 +O x) in (let TMP_24 \def (S n) in (let TMP_25 \def (getl_drop Abbr c0 d u n +H0) in (let TMP_26 \def (ty3_lift g d t x H4 c0 O TMP_24 TMP_25) in (ex_intro +T TMP_21 TMP_23 TMP_26))))))))) in (ex_ind T TMP_14 TMP_18 TMP_27 +H3)))))))))))))) in (let TMP_37 \def (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda (H1: (ty3 g d u t)).(\lambda (_: (ex T -(\lambda (t0: T).(ty3 g d t t0)))).(ex_intro T (\lambda (t0: T).(ty3 g c0 -(lift (S n) O u) t0)) (lift (S n) O t) (ty3_lift g d u t H1 c0 O (S n) -(getl_drop Abst c0 d u n H0))))))))))) (\lambda (c0: C).(\lambda (u: -T).(\lambda (t: T).(\lambda (H0: (ty3 g c0 u t)).(\lambda (_: (ex T (\lambda -(t0: T).(ty3 g c0 t t0)))).(\lambda (b: B).(\lambda (t0: T).(\lambda (t3: -T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t0 t3)).(\lambda (H3: (ex T -(\lambda (t4: T).(ty3 g (CHead c0 (Bind b) u) t3 t4)))).(let H4 \def H3 in -(ex_ind T (\lambda (t4: T).(ty3 g (CHead c0 (Bind b) u) t3 t4)) (ex T -(\lambda (t4: T).(ty3 g c0 (THead (Bind b) u t3) t4))) (\lambda (x: -T).(\lambda (H5: (ty3 g (CHead c0 (Bind b) u) t3 x)).(ex_intro T (\lambda -(t4: T).(ty3 g c0 (THead (Bind b) u t3) t4)) (THead (Bind b) u x) (ty3_bind g -c0 u t H0 b t3 x H5)))) H4)))))))))))) (\lambda (c0: C).(\lambda (w: -T).(\lambda (u: T).(\lambda (H0: (ty3 g c0 w u)).(\lambda (H1: (ex T (\lambda -(t: T).(ty3 g c0 u t)))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g -c0 v (THead (Bind Abst) u t))).(\lambda (H3: (ex T (\lambda (t0: T).(ty3 g c0 -(THead (Bind Abst) u t) t0)))).(let H4 \def H1 in (ex_ind T (\lambda (t0: -T).(ty3 g c0 u t0)) (ex T (\lambda (t0: T).(ty3 g c0 (THead (Flat Appl) w -(THead (Bind Abst) u t)) t0))) (\lambda (x: T).(\lambda (_: (ty3 g c0 u -x)).(let H6 \def H3 in (ex_ind T (\lambda (t0: T).(ty3 g c0 (THead (Bind -Abst) u t) t0)) (ex T (\lambda (t0: T).(ty3 g c0 (THead (Flat Appl) w (THead -(Bind Abst) u t)) t0))) (\lambda (x0: T).(\lambda (H7: (ty3 g c0 (THead (Bind -Abst) u t) x0)).(ex3_2_ind T T (\lambda (t3: T).(\lambda (_: T).(pc3 c0 -(THead (Bind Abst) u t3) x0))) (\lambda (_: T).(\lambda (t0: T).(ty3 g c0 u -t0))) (\lambda (t3: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind Abst) u) t -t3))) (ex T (\lambda (t0: T).(ty3 g c0 (THead (Flat Appl) w (THead (Bind -Abst) u t)) t0))) (\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 c0 -(THead (Bind Abst) u x1) x0)).(\lambda (H9: (ty3 g c0 u x2)).(\lambda (H10: -(ty3 g (CHead c0 (Bind Abst) u) t x1)).(ex_intro T (\lambda (t0: T).(ty3 g c0 -(THead (Flat Appl) w (THead (Bind Abst) u t)) t0)) (THead (Flat Appl) w -(THead (Bind Abst) u x1)) (ty3_appl g c0 w u H0 (THead (Bind Abst) u t) x1 -(ty3_bind g c0 u x2 H9 Abst t x1 H10)))))))) (ty3_gen_bind g Abst c0 u t x0 -H7)))) H6)))) H4))))))))))) (\lambda (c0: C).(\lambda (t0: T).(\lambda (t3: -T).(\lambda (_: (ty3 g c0 t0 t3)).(\lambda (_: (ex T (\lambda (t: T).(ty3 g -c0 t3 t)))).(\lambda (t4: T).(\lambda (H2: (ty3 g c0 t3 t4)).(\lambda (H3: -(ex T (\lambda (t: T).(ty3 g c0 t4 t)))).(let H4 \def H3 in (ex_ind T -(\lambda (t: T).(ty3 g c0 t4 t)) (ex T (\lambda (t: T).(ty3 g c0 (THead (Flat -Cast) t4 t3) t))) (\lambda (x: T).(\lambda (H5: (ty3 g c0 t4 x)).(ex_intro T -(\lambda (t: T).(ty3 g c0 (THead (Flat Cast) t4 t3) t)) (THead (Flat Cast) x -t4) (ty3_cast g c0 t3 t4 H2 x H5)))) H4)))))))))) c t1 t2 H))))). -(* COMMENTS -Initial nodes: 1333 -END *) +(\lambda (t0: T).(ty3 g d t t0)))).(let TMP_31 \def (\lambda (t0: T).(let +TMP_29 \def (S n) in (let TMP_30 \def (lift TMP_29 O u) in (ty3 g c0 TMP_30 +t0)))) in (let TMP_32 \def (S n) in (let TMP_33 \def (lift TMP_32 O t) in +(let TMP_34 \def (S n) in (let TMP_35 \def (getl_drop Abst c0 d u n H0) in +(let TMP_36 \def (ty3_lift g d u t H1 c0 O TMP_34 TMP_35) in (ex_intro T +TMP_31 TMP_33 TMP_36))))))))))))))) in (let TMP_52 \def (\lambda (c0: +C).(\lambda (u: T).(\lambda (t: T).(\lambda (H0: (ty3 g c0 u t)).(\lambda (_: +(ex T (\lambda (t0: T).(ty3 g c0 t t0)))).(\lambda (b: B).(\lambda (t0: +T).(\lambda (t3: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t0 +t3)).(\lambda (H3: (ex T (\lambda (t4: T).(ty3 g (CHead c0 (Bind b) u) t3 +t4)))).(let H4 \def H3 in (let TMP_40 \def (\lambda (t4: T).(let TMP_38 \def +(Bind b) in (let TMP_39 \def (CHead c0 TMP_38 u) in (ty3 g TMP_39 t3 t4)))) +in (let TMP_43 \def (\lambda (t4: T).(let TMP_41 \def (Bind b) in (let TMP_42 +\def (THead TMP_41 u t3) in (ty3 g c0 TMP_42 t4)))) in (let TMP_44 \def (ex T +TMP_43) in (let TMP_51 \def (\lambda (x: T).(\lambda (H5: (ty3 g (CHead c0 +(Bind b) u) t3 x)).(let TMP_47 \def (\lambda (t4: T).(let TMP_45 \def (Bind +b) in (let TMP_46 \def (THead TMP_45 u t3) in (ty3 g c0 TMP_46 t4)))) in (let +TMP_48 \def (Bind b) in (let TMP_49 \def (THead TMP_48 u x) in (let TMP_50 +\def (ty3_bind g c0 u t H0 b t3 x H5) in (ex_intro T TMP_47 TMP_49 +TMP_50))))))) in (ex_ind T TMP_40 TMP_44 TMP_51 H4)))))))))))))))) in (let +TMP_99 \def (\lambda (c0: C).(\lambda (w: T).(\lambda (u: T).(\lambda (H0: +(ty3 g c0 w u)).(\lambda (H1: (ex T (\lambda (t: T).(ty3 g c0 u +t)))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead (Bind +Abst) u t))).(\lambda (H3: (ex T (\lambda (t0: T).(ty3 g c0 (THead (Bind +Abst) u t) t0)))).(let H4 \def H1 in (let TMP_53 \def (\lambda (t0: T).(ty3 g +c0 u t0)) in (let TMP_58 \def (\lambda (t0: T).(let TMP_54 \def (Flat Appl) +in (let TMP_55 \def (Bind Abst) in (let TMP_56 \def (THead TMP_55 u t) in +(let TMP_57 \def (THead TMP_54 w TMP_56) in (ty3 g c0 TMP_57 t0)))))) in (let +TMP_59 \def (ex T TMP_58) in (let TMP_98 \def (\lambda (x: T).(\lambda (_: +(ty3 g c0 u x)).(let H6 \def H3 in (let TMP_62 \def (\lambda (t0: T).(let +TMP_60 \def (Bind Abst) in (let TMP_61 \def (THead TMP_60 u t) in (ty3 g c0 +TMP_61 t0)))) in (let TMP_67 \def (\lambda (t0: T).(let TMP_63 \def (Flat +Appl) in (let TMP_64 \def (Bind Abst) in (let TMP_65 \def (THead TMP_64 u t) +in (let TMP_66 \def (THead TMP_63 w TMP_65) in (ty3 g c0 TMP_66 t0)))))) in +(let TMP_68 \def (ex T TMP_67) in (let TMP_97 \def (\lambda (x0: T).(\lambda +(H7: (ty3 g c0 (THead (Bind Abst) u t) x0)).(let TMP_71 \def (\lambda (t3: +T).(\lambda (_: T).(let TMP_69 \def (Bind Abst) in (let TMP_70 \def (THead +TMP_69 u t3) in (pc3 c0 TMP_70 x0))))) in (let TMP_72 \def (\lambda (_: +T).(\lambda (t0: T).(ty3 g c0 u t0))) in (let TMP_75 \def (\lambda (t3: +T).(\lambda (_: T).(let TMP_73 \def (Bind Abst) in (let TMP_74 \def (CHead c0 +TMP_73 u) in (ty3 g TMP_74 t t3))))) in (let TMP_80 \def (\lambda (t0: +T).(let TMP_76 \def (Flat Appl) in (let TMP_77 \def (Bind Abst) in (let +TMP_78 \def (THead TMP_77 u t) in (let TMP_79 \def (THead TMP_76 w TMP_78) in +(ty3 g c0 TMP_79 t0)))))) in (let TMP_81 \def (ex T TMP_80) in (let TMP_95 +\def (\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 c0 (THead (Bind +Abst) u x1) x0)).(\lambda (H9: (ty3 g c0 u x2)).(\lambda (H10: (ty3 g (CHead +c0 (Bind Abst) u) t x1)).(let TMP_86 \def (\lambda (t0: T).(let TMP_82 \def +(Flat Appl) in (let TMP_83 \def (Bind Abst) in (let TMP_84 \def (THead TMP_83 +u t) in (let TMP_85 \def (THead TMP_82 w TMP_84) in (ty3 g c0 TMP_85 t0)))))) +in (let TMP_87 \def (Flat Appl) in (let TMP_88 \def (Bind Abst) in (let +TMP_89 \def (THead TMP_88 u x1) in (let TMP_90 \def (THead TMP_87 w TMP_89) +in (let TMP_91 \def (Bind Abst) in (let TMP_92 \def (THead TMP_91 u t) in +(let TMP_93 \def (ty3_bind g c0 u x2 H9 Abst t x1 H10) in (let TMP_94 \def +(ty3_appl g c0 w u H0 TMP_92 x1 TMP_93) in (ex_intro T TMP_86 TMP_90 +TMP_94))))))))))))))) in (let TMP_96 \def (ty3_gen_bind g Abst c0 u t x0 H7) +in (ex3_2_ind T T TMP_71 TMP_72 TMP_75 TMP_81 TMP_95 TMP_96)))))))))) in +(ex_ind T TMP_62 TMP_68 TMP_97 H6)))))))) in (ex_ind T TMP_53 TMP_59 TMP_98 +H4))))))))))))))) in (let TMP_112 \def (\lambda (c0: C).(\lambda (t0: +T).(\lambda (t3: T).(\lambda (_: (ty3 g c0 t0 t3)).(\lambda (_: (ex T +(\lambda (t: T).(ty3 g c0 t3 t)))).(\lambda (t4: T).(\lambda (H2: (ty3 g c0 +t3 t4)).(\lambda (H3: (ex T (\lambda (t: T).(ty3 g c0 t4 t)))).(let H4 \def +H3 in (let TMP_100 \def (\lambda (t: T).(ty3 g c0 t4 t)) in (let TMP_103 \def +(\lambda (t: T).(let TMP_101 \def (Flat Cast) in (let TMP_102 \def (THead +TMP_101 t4 t3) in (ty3 g c0 TMP_102 t)))) in (let TMP_104 \def (ex T TMP_103) +in (let TMP_111 \def (\lambda (x: T).(\lambda (H5: (ty3 g c0 t4 x)).(let +TMP_107 \def (\lambda (t: T).(let TMP_105 \def (Flat Cast) in (let TMP_106 +\def (THead TMP_105 t4 t3) in (ty3 g c0 TMP_106 t)))) in (let TMP_108 \def +(Flat Cast) in (let TMP_109 \def (THead TMP_108 x t4) in (let TMP_110 \def +(ty3_cast g c0 t3 t4 H2 x H5) in (ex_intro T TMP_107 TMP_109 TMP_110))))))) +in (ex_ind T TMP_100 TMP_104 TMP_111 H4)))))))))))))) in (ty3_ind g TMP_2 +TMP_4 TMP_13 TMP_28 TMP_37 TMP_52 TMP_99 TMP_112 c t1 t2 H))))))))))))). theorem ty3_unique: \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t1: T).((ty3 g c u t1) \to (\forall (t2: T).((ty3 g c u t2) \to (pc3 c t1 t2))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (H: -(ty3 g c u t1)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda (t0: -T).(\forall (t2: T).((ty3 g c0 t t2) \to (pc3 c0 t0 t2)))))) (\lambda (c0: -C).(\lambda (t2: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t2 t)).(\lambda -(_: ((\forall (t3: T).((ty3 g c0 t2 t3) \to (pc3 c0 t t3))))).(\lambda (u0: -T).(\lambda (t0: T).(\lambda (_: (ty3 g c0 u0 t0)).(\lambda (H3: ((\forall -(t3: T).((ty3 g c0 u0 t3) \to (pc3 c0 t0 t3))))).(\lambda (H4: (pc3 c0 t0 -t2)).(\lambda (t3: T).(\lambda (H5: (ty3 g c0 u0 t3)).(pc3_t t0 c0 t2 (pc3_s -c0 t2 t0 H4) t3 (H3 t3 H5)))))))))))))) (\lambda (c0: C).(\lambda (m: -nat).(\lambda (t2: T).(\lambda (H0: (ty3 g c0 (TSort m) t2)).(ty3_gen_sort g -c0 t2 m H0))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda -(u0: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abbr) u0))).(\lambda (t: -T).(\lambda (_: (ty3 g d u0 t)).(\lambda (H2: ((\forall (t2: T).((ty3 g d u0 -t2) \to (pc3 d t t2))))).(\lambda (t2: T).(\lambda (H3: (ty3 g c0 (TLRef n) -t2)).(or_ind (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: -T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda -(_: T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: -T).(\lambda (t0: T).(ty3 g e u1 t0))))) (ex3_3 C T T (\lambda (_: C).(\lambda -(u1: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u1) t2)))) (\lambda (e: -C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u1))))) -(\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0))))) (pc3 c0 -(lift (S n) O t) t2) (\lambda (H4: (ex3_3 C T T (\lambda (_: C).(\lambda (_: -T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda (e: C).(\lambda -(u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: -C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0)))))).(ex3_3_ind C T T -(\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) -t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e -(Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g -e u1 t0)))) (pc3 c0 (lift (S n) O t) t2) (\lambda (x0: C).(\lambda (x1: -T).(\lambda (x2: T).(\lambda (H5: (pc3 c0 (lift (S n) O x2) t2)).(\lambda -(H6: (getl n c0 (CHead x0 (Bind Abbr) x1))).(\lambda (H7: (ty3 g x0 x1 -x2)).(let H8 \def (eq_ind C (CHead d (Bind Abbr) u0) (\lambda (c1: C).(getl n -c0 c1)) H0 (CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d (Bind Abbr) u0) n -H0 (CHead x0 (Bind Abbr) x1) H6)) in (let H9 \def (f_equal C C (\lambda (e: -C).(match e in C return (\lambda (_: C).C) with [(CSort _) \Rightarrow d | -(CHead c1 _ _) \Rightarrow c1])) (CHead d (Bind Abbr) u0) (CHead x0 (Bind -Abbr) x1) (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead x0 (Bind Abbr) -x1) H6)) in ((let H10 \def (f_equal C T (\lambda (e: C).(match e in C return -(\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t0) -\Rightarrow t0])) (CHead d (Bind Abbr) u0) (CHead x0 (Bind Abbr) x1) -(getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in -(\lambda (H11: (eq C d x0)).(let H12 \def (eq_ind_r T x1 (\lambda (t0: -T).(getl n c0 (CHead x0 (Bind Abbr) t0))) H8 u0 H10) in (let H13 \def -(eq_ind_r T x1 (\lambda (t0: T).(ty3 g x0 t0 x2)) H7 u0 H10) in (let H14 \def -(eq_ind_r C x0 (\lambda (c1: C).(getl n c0 (CHead c1 (Bind Abbr) u0))) H12 d -H11) in (let H15 \def (eq_ind_r C x0 (\lambda (c1: C).(ty3 g c1 u0 x2)) H13 d -H11) in (pc3_t (lift (S n) O x2) c0 (lift (S n) O t) (pc3_lift c0 d (S n) O -(getl_drop Abbr c0 d u0 n H14) t x2 (H2 x2 H15)) t2 H5))))))) H9))))))))) -H4)) (\lambda (H4: (ex3_3 C T T (\lambda (_: C).(\lambda (u1: T).(\lambda (_: -T).(pc3 c0 (lift (S n) O u1) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda -(_: T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: -T).(\lambda (t0: T).(ty3 g e u1 t0)))))).(ex3_3_ind C T T (\lambda (_: -C).(\lambda (u1: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u1) t2)))) (\lambda -(e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) -u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0)))) -(pc3 c0 (lift (S n) O t) t2) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: -T).(\lambda (_: (pc3 c0 (lift (S n) O x1) t2)).(\lambda (H6: (getl n c0 -(CHead x0 (Bind Abst) x1))).(\lambda (_: (ty3 g x0 x1 x2)).(let H8 \def -(eq_ind C (CHead d (Bind Abbr) u0) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead -x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead x0 -(Bind Abst) x1) H6)) in (let H9 \def (eq_ind C (CHead d (Bind Abbr) u0) -(\lambda (ee: C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) -\Rightarrow False | (CHead _ k _) \Rightarrow (match k in K return (\lambda -(_: K).Prop) with [(Bind b) \Rightarrow (match b in B return (\lambda (_: -B).Prop) with [Abbr \Rightarrow True | Abst \Rightarrow False | Void -\Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead x0 (Bind Abst) -x1) (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead x0 (Bind Abst) x1) -H6)) in (False_ind (pc3 c0 (lift (S n) O t) t2) H9))))))))) H4)) -(ty3_gen_lref g c0 t2 n H3)))))))))))) (\lambda (n: nat).(\lambda (c0: -C).(\lambda (d: C).(\lambda (u0: T).(\lambda (H0: (getl n c0 (CHead d (Bind -Abst) u0))).(\lambda (t: T).(\lambda (_: (ty3 g d u0 t)).(\lambda (_: -((\forall (t2: T).((ty3 g d u0 t2) \to (pc3 d t t2))))).(\lambda (t2: -T).(\lambda (H3: (ty3 g c0 (TLRef n) t2)).(or_ind (ex3_3 C T T (\lambda (_: -C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda -(e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) -u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0))))) -(ex3_3 C T T (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(pc3 c0 (lift -(S n) O u1) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n -c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda -(t0: T).(ty3 g e u1 t0))))) (pc3 c0 (lift (S n) O u0) t2) (\lambda (H4: -(ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift -(S n) O t0) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n -c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda -(t0: T).(ty3 g e u1 t0)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (_: +(ty3 g c u t1)).(let TMP_1 \def (\lambda (c0: C).(\lambda (t: T).(\lambda +(t0: T).(\forall (t2: T).((ty3 g c0 t t2) \to (pc3 c0 t0 t2)))))) in (let +TMP_4 \def (\lambda (c0: C).(\lambda (t2: T).(\lambda (t: T).(\lambda (_: +(ty3 g c0 t2 t)).(\lambda (_: ((\forall (t3: T).((ty3 g c0 t2 t3) \to (pc3 c0 +t t3))))).(\lambda (u0: T).(\lambda (t0: T).(\lambda (_: (ty3 g c0 u0 +t0)).(\lambda (H3: ((\forall (t3: T).((ty3 g c0 u0 t3) \to (pc3 c0 t0 +t3))))).(\lambda (H4: (pc3 c0 t0 t2)).(\lambda (t3: T).(\lambda (H5: (ty3 g +c0 u0 t3)).(let TMP_2 \def (pc3_s c0 t2 t0 H4) in (let TMP_3 \def (H3 t3 H5) +in (pc3_t t0 c0 t2 TMP_2 t3 TMP_3))))))))))))))) in (let TMP_5 \def (\lambda +(c0: C).(\lambda (m: nat).(\lambda (t2: T).(\lambda (H0: (ty3 g c0 (TSort m) +t2)).(ty3_gen_sort g c0 t2 m H0))))) in (let TMP_120 \def (\lambda (n: +nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (H0: (getl n +c0 (CHead d (Bind Abbr) u0))).(\lambda (t: T).(\lambda (_: (ty3 g d u0 +t)).(\lambda (H2: ((\forall (t2: T).((ty3 g d u0 t2) \to (pc3 d t +t2))))).(\lambda (t2: T).(\lambda (H3: (ty3 g c0 (TLRef n) t2)).(let TMP_8 +\def (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(let TMP_6 \def (S n) +in (let TMP_7 \def (lift TMP_6 O t0) in (pc3 c0 TMP_7 t2)))))) in (let TMP_11 +\def (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_9 \def (Bind +Abbr) in (let TMP_10 \def (CHead e TMP_9 u1) in (getl n c0 TMP_10)))))) in +(let TMP_12 \def (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e +u1 t0)))) in (let TMP_13 \def (ex3_3 C T T TMP_8 TMP_11 TMP_12) in (let +TMP_16 \def (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_14 \def +(S n) in (let TMP_15 \def (lift TMP_14 O u1) in (pc3 c0 TMP_15 t2)))))) in +(let TMP_19 \def (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_17 +\def (Bind Abst) in (let TMP_18 \def (CHead e TMP_17 u1) in (getl n c0 +TMP_18)))))) in (let TMP_20 \def (\lambda (e: C).(\lambda (u1: T).(\lambda +(t0: T).(ty3 g e u1 t0)))) in (let TMP_21 \def (ex3_3 C T T TMP_16 TMP_19 +TMP_20) in (let TMP_22 \def (S n) in (let TMP_23 \def (lift TMP_22 O t) in +(let TMP_24 \def (pc3 c0 TMP_23 t2) in (let TMP_83 \def (\lambda (H4: (ex3_3 +C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O +t0) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead +e (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 +g e u1 t0)))))).(let TMP_27 \def (\lambda (_: C).(\lambda (_: T).(\lambda +(t0: T).(let TMP_25 \def (S n) in (let TMP_26 \def (lift TMP_25 O t0) in (pc3 +c0 TMP_26 t2)))))) in (let TMP_30 \def (\lambda (e: C).(\lambda (u1: +T).(\lambda (_: T).(let TMP_28 \def (Bind Abbr) in (let TMP_29 \def (CHead e +TMP_28 u1) in (getl n c0 TMP_29)))))) in (let TMP_31 \def (\lambda (e: +C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0)))) in (let TMP_32 \def +(S n) in (let TMP_33 \def (lift TMP_32 O t) in (let TMP_34 \def (pc3 c0 +TMP_33 t2) in (let TMP_82 \def (\lambda (x0: C).(\lambda (x1: T).(\lambda +(x2: T).(\lambda (H5: (pc3 c0 (lift (S n) O x2) t2)).(\lambda (H6: (getl n c0 +(CHead x0 (Bind Abbr) x1))).(\lambda (H7: (ty3 g x0 x1 x2)).(let TMP_35 \def +(Bind Abbr) in (let TMP_36 \def (CHead d TMP_35 u0) in (let TMP_37 \def +(\lambda (c1: C).(getl n c0 c1)) in (let TMP_38 \def (Bind Abbr) in (let +TMP_39 \def (CHead x0 TMP_38 x1) in (let TMP_40 \def (Bind Abbr) in (let +TMP_41 \def (CHead d TMP_40 u0) in (let TMP_42 \def (Bind Abbr) in (let +TMP_43 \def (CHead x0 TMP_42 x1) in (let TMP_44 \def (getl_mono c0 TMP_41 n +H0 TMP_43 H6) in (let H8 \def (eq_ind C TMP_36 TMP_37 H0 TMP_39 TMP_44) in +(let TMP_45 \def (\lambda (e: C).(match e with [(CSort _) \Rightarrow d | +(CHead c1 _ _) \Rightarrow c1])) in (let TMP_46 \def (Bind Abbr) in (let +TMP_47 \def (CHead d TMP_46 u0) in (let TMP_48 \def (Bind Abbr) in (let +TMP_49 \def (CHead x0 TMP_48 x1) in (let TMP_50 \def (Bind Abbr) in (let +TMP_51 \def (CHead d TMP_50 u0) in (let TMP_52 \def (Bind Abbr) in (let +TMP_53 \def (CHead x0 TMP_52 x1) in (let TMP_54 \def (getl_mono c0 TMP_51 n +H0 TMP_53 H6) in (let H9 \def (f_equal C C TMP_45 TMP_47 TMP_49 TMP_54) in +(let TMP_55 \def (\lambda (e: C).(match e with [(CSort _) \Rightarrow u0 | +(CHead _ _ t0) \Rightarrow t0])) in (let TMP_56 \def (Bind Abbr) in (let +TMP_57 \def (CHead d TMP_56 u0) in (let TMP_58 \def (Bind Abbr) in (let +TMP_59 \def (CHead x0 TMP_58 x1) in (let TMP_60 \def (Bind Abbr) in (let +TMP_61 \def (CHead d TMP_60 u0) in (let TMP_62 \def (Bind Abbr) in (let +TMP_63 \def (CHead x0 TMP_62 x1) in (let TMP_64 \def (getl_mono c0 TMP_61 n +H0 TMP_63 H6) in (let H10 \def (f_equal C T TMP_55 TMP_57 TMP_59 TMP_64) in +(let TMP_81 \def (\lambda (H11: (eq C d x0)).(let TMP_67 \def (\lambda (t0: +T).(let TMP_65 \def (Bind Abbr) in (let TMP_66 \def (CHead x0 TMP_65 t0) in +(getl n c0 TMP_66)))) in (let H12 \def (eq_ind_r T x1 TMP_67 H8 u0 H10) in +(let TMP_68 \def (\lambda (t0: T).(ty3 g x0 t0 x2)) in (let H13 \def +(eq_ind_r T x1 TMP_68 H7 u0 H10) in (let TMP_71 \def (\lambda (c1: C).(let +TMP_69 \def (Bind Abbr) in (let TMP_70 \def (CHead c1 TMP_69 u0) in (getl n +c0 TMP_70)))) in (let H14 \def (eq_ind_r C x0 TMP_71 H12 d H11) in (let +TMP_72 \def (\lambda (c1: C).(ty3 g c1 u0 x2)) in (let H15 \def (eq_ind_r C +x0 TMP_72 H13 d H11) in (let TMP_73 \def (S n) in (let TMP_74 \def (lift +TMP_73 O x2) in (let TMP_75 \def (S n) in (let TMP_76 \def (lift TMP_75 O t) +in (let TMP_77 \def (S n) in (let TMP_78 \def (getl_drop Abbr c0 d u0 n H14) +in (let TMP_79 \def (H2 x2 H15) in (let TMP_80 \def (pc3_lift c0 d TMP_77 O +TMP_78 t x2 TMP_79) in (pc3_t TMP_74 c0 TMP_76 TMP_80 t2 H5)))))))))))))))))) +in (TMP_81 H9))))))))))))))))))))))))))))))))))))))))) in (ex3_3_ind C T T +TMP_27 TMP_30 TMP_31 TMP_34 TMP_82 H4))))))))) in (let TMP_118 \def (\lambda +(H4: (ex3_3 C T T (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(pc3 c0 +(lift (S n) O u1) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda (_: +T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: +T).(\lambda (t0: T).(ty3 g e u1 t0)))))).(let TMP_86 \def (\lambda (_: +C).(\lambda (u1: T).(\lambda (_: T).(let TMP_84 \def (S n) in (let TMP_85 +\def (lift TMP_84 O u1) in (pc3 c0 TMP_85 t2)))))) in (let TMP_89 \def +(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_87 \def (Bind Abst) +in (let TMP_88 \def (CHead e TMP_87 u1) in (getl n c0 TMP_88)))))) in (let +TMP_90 \def (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 +t0)))) in (let TMP_91 \def (S n) in (let TMP_92 \def (lift TMP_91 O t) in +(let TMP_93 \def (pc3 c0 TMP_92 t2) in (let TMP_117 \def (\lambda (x0: +C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 c0 (lift (S n) O x1) +t2)).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abst) x1))).(\lambda (_: (ty3 g +x0 x1 x2)).(let TMP_94 \def (Bind Abbr) in (let TMP_95 \def (CHead d TMP_94 +u0) in (let TMP_96 \def (\lambda (c1: C).(getl n c0 c1)) in (let TMP_97 \def +(Bind Abst) in (let TMP_98 \def (CHead x0 TMP_97 x1) in (let TMP_99 \def +(Bind Abbr) in (let TMP_100 \def (CHead d TMP_99 u0) in (let TMP_101 \def +(Bind Abst) in (let TMP_102 \def (CHead x0 TMP_101 x1) in (let TMP_103 \def +(getl_mono c0 TMP_100 n H0 TMP_102 H6) in (let H8 \def (eq_ind C TMP_95 +TMP_96 H0 TMP_98 TMP_103) in (let TMP_104 \def (Bind Abbr) in (let TMP_105 +\def (CHead d TMP_104 u0) in (let TMP_106 \def (\lambda (ee: C).(match ee +with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match k with +[(Bind b) \Rightarrow (match b with [Abbr \Rightarrow True | Abst \Rightarrow +False | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) in (let +TMP_107 \def (Bind Abst) in (let TMP_108 \def (CHead x0 TMP_107 x1) in (let +TMP_109 \def (Bind Abbr) in (let TMP_110 \def (CHead d TMP_109 u0) in (let +TMP_111 \def (Bind Abst) in (let TMP_112 \def (CHead x0 TMP_111 x1) in (let +TMP_113 \def (getl_mono c0 TMP_110 n H0 TMP_112 H6) in (let H9 \def (eq_ind C +TMP_105 TMP_106 I TMP_108 TMP_113) in (let TMP_114 \def (S n) in (let TMP_115 +\def (lift TMP_114 O t) in (let TMP_116 \def (pc3 c0 TMP_115 t2) in +(False_ind TMP_116 H9)))))))))))))))))))))))))))))))) in (ex3_3_ind C T T +TMP_86 TMP_89 TMP_90 TMP_93 TMP_117 H4))))))))) in (let TMP_119 \def +(ty3_gen_lref g c0 t2 n H3) in (or_ind TMP_13 TMP_21 TMP_24 TMP_83 TMP_118 +TMP_119))))))))))))))))))))))))) in (let TMP_230 \def (\lambda (n: +nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (H0: (getl n +c0 (CHead d (Bind Abst) u0))).(\lambda (t: T).(\lambda (_: (ty3 g d u0 +t)).(\lambda (_: ((\forall (t2: T).((ty3 g d u0 t2) \to (pc3 d t +t2))))).(\lambda (t2: T).(\lambda (H3: (ty3 g c0 (TLRef n) t2)).(let TMP_123 +\def (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(let TMP_121 \def (S n) +in (let TMP_122 \def (lift TMP_121 O t0) in (pc3 c0 TMP_122 t2)))))) in (let +TMP_126 \def (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_124 +\def (Bind Abbr) in (let TMP_125 \def (CHead e TMP_124 u1) in (getl n c0 +TMP_125)))))) in (let TMP_127 \def (\lambda (e: C).(\lambda (u1: T).(\lambda +(t0: T).(ty3 g e u1 t0)))) in (let TMP_128 \def (ex3_3 C T T TMP_123 TMP_126 +TMP_127) in (let TMP_131 \def (\lambda (_: C).(\lambda (u1: T).(\lambda (_: +T).(let TMP_129 \def (S n) in (let TMP_130 \def (lift TMP_129 O u1) in (pc3 +c0 TMP_130 t2)))))) in (let TMP_134 \def (\lambda (e: C).(\lambda (u1: +T).(\lambda (_: T).(let TMP_132 \def (Bind Abst) in (let TMP_133 \def (CHead +e TMP_132 u1) in (getl n c0 TMP_133)))))) in (let TMP_135 \def (\lambda (e: +C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0)))) in (let TMP_136 \def +(ex3_3 C T T TMP_131 TMP_134 TMP_135) in (let TMP_137 \def (S n) in (let +TMP_138 \def (lift TMP_137 O u0) in (let TMP_139 \def (pc3 c0 TMP_138 t2) in +(let TMP_174 \def (\lambda (H4: (ex3_3 C T T (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: -C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0)))) (pc3 c0 (lift (S n) O -u0) t2) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 -c0 (lift (S n) O x2) t2)).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abbr) -x1))).(\lambda (_: (ty3 g x0 x1 x2)).(let H8 \def (eq_ind C (CHead d (Bind -Abst) u0) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind Abbr) x1) -(getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in -(let H9 \def (eq_ind C (CHead d (Bind Abst) u0) (\lambda (ee: C).(match ee in -C return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k -_) \Rightarrow (match k in K return (\lambda (_: K).Prop) with [(Bind b) -\Rightarrow (match b in B return (\lambda (_: B).Prop) with [Abbr \Rightarrow -False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat _) -\Rightarrow False])])) I (CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d -(Bind Abst) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in (False_ind (pc3 c0 -(lift (S n) O u0) t2) H9))))))))) H4)) (\lambda (H4: (ex3_3 C T T (\lambda -(_: C).(\lambda (u1: T).(\lambda (_: T).(pc3 c0 (lift (S n) O u1) t2)))) -(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind -Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 -t0)))))).(ex3_3_ind C T T (\lambda (_: C).(\lambda (u1: T).(\lambda (_: -T).(pc3 c0 (lift (S n) O u1) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda -(_: T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: -T).(\lambda (t0: T).(ty3 g e u1 t0)))) (pc3 c0 (lift (S n) O u0) t2) (\lambda -(x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H5: (pc3 c0 (lift (S n) O -x1) t2)).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abst) x1))).(\lambda (H7: -(ty3 g x0 x1 x2)).(let H8 \def (eq_ind C (CHead d (Bind Abst) u0) (\lambda -(c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d -(Bind Abst) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in (let H9 \def (f_equal -C C (\lambda (e: C).(match e in C return (\lambda (_: C).C) with [(CSort _) -\Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) (CHead d (Bind Abst) u0) -(CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead -x0 (Bind Abst) x1) H6)) in ((let H10 \def (f_equal C T (\lambda (e: C).(match -e in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ -t0) \Rightarrow t0])) (CHead d (Bind Abst) u0) (CHead x0 (Bind Abst) x1) -(getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in -(\lambda (H11: (eq C d x0)).(let H12 \def (eq_ind_r T x1 (\lambda (t0: -T).(getl n c0 (CHead x0 (Bind Abst) t0))) H8 u0 H10) in (let H13 \def -(eq_ind_r T x1 (\lambda (t0: T).(ty3 g x0 t0 x2)) H7 u0 H10) in (let H14 \def -(eq_ind_r T x1 (\lambda (t0: T).(pc3 c0 (lift (S n) O t0) t2)) H5 u0 H10) in -(let H15 \def (eq_ind_r C x0 (\lambda (c1: C).(getl n c0 (CHead c1 (Bind -Abst) u0))) H12 d H11) in (let H16 \def (eq_ind_r C x0 (\lambda (c1: C).(ty3 -g c1 u0 x2)) H13 d H11) in H14))))))) H9))))))))) H4)) (ty3_gen_lref g c0 t2 -n H3)))))))))))) (\lambda (c0: C).(\lambda (u0: T).(\lambda (t: T).(\lambda -(_: (ty3 g c0 u0 t)).(\lambda (_: ((\forall (t2: T).((ty3 g c0 u0 t2) \to -(pc3 c0 t t2))))).(\lambda (b: B).(\lambda (t0: T).(\lambda (t2: T).(\lambda -(_: (ty3 g (CHead c0 (Bind b) u0) t0 t2)).(\lambda (H3: ((\forall (t3: -T).((ty3 g (CHead c0 (Bind b) u0) t0 t3) \to (pc3 (CHead c0 (Bind b) u0) t2 -t3))))).(\lambda (t3: T).(\lambda (H4: (ty3 g c0 (THead (Bind b) u0 t0) -t3)).(ex3_2_ind T T (\lambda (t4: T).(\lambda (_: T).(pc3 c0 (THead (Bind b) -u0 t4) t3))) (\lambda (_: T).(\lambda (t5: T).(ty3 g c0 u0 t5))) (\lambda -(t4: T).(\lambda (_: T).(ty3 g (CHead c0 (Bind b) u0) t0 t4))) (pc3 c0 (THead -(Bind b) u0 t2) t3) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H5: (pc3 c0 -(THead (Bind b) u0 x0) t3)).(\lambda (_: (ty3 g c0 u0 x1)).(\lambda (H7: (ty3 -g (CHead c0 (Bind b) u0) t0 x0)).(pc3_t (THead (Bind b) u0 x0) c0 (THead -(Bind b) u0 t2) (pc3_head_2 c0 u0 t2 x0 (Bind b) (H3 x0 H7)) t3 H5)))))) -(ty3_gen_bind g b c0 u0 t0 t3 H4)))))))))))))) (\lambda (c0: C).(\lambda (w: -T).(\lambda (u0: T).(\lambda (_: (ty3 g c0 w u0)).(\lambda (_: ((\forall (t2: -T).((ty3 g c0 w t2) \to (pc3 c0 u0 t2))))).(\lambda (v: T).(\lambda (t: -T).(\lambda (_: (ty3 g c0 v (THead (Bind Abst) u0 t))).(\lambda (H3: -((\forall (t2: T).((ty3 g c0 v t2) \to (pc3 c0 (THead (Bind Abst) u0 t) -t2))))).(\lambda (t2: T).(\lambda (H4: (ty3 g c0 (THead (Flat Appl) w v) -t2)).(ex3_2_ind T T (\lambda (u1: T).(\lambda (t0: T).(pc3 c0 (THead (Flat -Appl) w (THead (Bind Abst) u1 t0)) t2))) (\lambda (u1: T).(\lambda (t0: -T).(ty3 g c0 v (THead (Bind Abst) u1 t0)))) (\lambda (u1: T).(\lambda (_: -T).(ty3 g c0 w u1))) (pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u0 t)) -t2) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H5: (pc3 c0 (THead (Flat -Appl) w (THead (Bind Abst) x0 x1)) t2)).(\lambda (H6: (ty3 g c0 v (THead -(Bind Abst) x0 x1))).(\lambda (_: (ty3 g c0 w x0)).(pc3_t (THead (Flat Appl) -w (THead (Bind Abst) x0 x1)) c0 (THead (Flat Appl) w (THead (Bind Abst) u0 -t)) (pc3_thin_dx c0 (THead (Bind Abst) u0 t) (THead (Bind Abst) x0 x1) (H3 -(THead (Bind Abst) x0 x1) H6) w Appl) t2 H5)))))) (ty3_gen_appl g c0 w v t2 -H4))))))))))))) (\lambda (c0: C).(\lambda (t0: T).(\lambda (t2: T).(\lambda -(_: (ty3 g c0 t0 t2)).(\lambda (_: ((\forall (t3: T).((ty3 g c0 t0 t3) \to -(pc3 c0 t2 t3))))).(\lambda (t3: T).(\lambda (_: (ty3 g c0 t2 t3)).(\lambda -(H3: ((\forall (t4: T).((ty3 g c0 t2 t4) \to (pc3 c0 t3 t4))))).(\lambda (t4: -T).(\lambda (H4: (ty3 g c0 (THead (Flat Cast) t2 t0) t4)).(ex3_ind T (\lambda -(t5: T).(pc3 c0 (THead (Flat Cast) t5 t2) t4)) (\lambda (_: T).(ty3 g c0 t0 -t2)) (\lambda (t5: T).(ty3 g c0 t2 t5)) (pc3 c0 (THead (Flat Cast) t3 t2) t4) -(\lambda (x0: T).(\lambda (H5: (pc3 c0 (THead (Flat Cast) x0 t2) -t4)).(\lambda (_: (ty3 g c0 t0 t2)).(\lambda (H7: (ty3 g c0 t2 x0)).(pc3_t -(THead (Flat Cast) x0 t2) c0 (THead (Flat Cast) t3 t2) (pc3_head_1 c0 t3 x0 -(H3 x0 H7) (Flat Cast) t2) t4 H5))))) (ty3_gen_cast g c0 t0 t2 t4 -H4)))))))))))) c u t1 H))))). -(* COMMENTS -Initial nodes: 3459 -END *) +C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0)))))).(let TMP_142 \def +(\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(let TMP_140 \def (S n) in +(let TMP_141 \def (lift TMP_140 O t0) in (pc3 c0 TMP_141 t2)))))) in (let +TMP_145 \def (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_143 +\def (Bind Abbr) in (let TMP_144 \def (CHead e TMP_143 u1) in (getl n c0 +TMP_144)))))) in (let TMP_146 \def (\lambda (e: C).(\lambda (u1: T).(\lambda +(t0: T).(ty3 g e u1 t0)))) in (let TMP_147 \def (S n) in (let TMP_148 \def +(lift TMP_147 O u0) in (let TMP_149 \def (pc3 c0 TMP_148 t2) in (let TMP_173 +\def (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (_: (pc3 c0 +(lift (S n) O x2) t2)).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abbr) +x1))).(\lambda (_: (ty3 g x0 x1 x2)).(let TMP_150 \def (Bind Abst) in (let +TMP_151 \def (CHead d TMP_150 u0) in (let TMP_152 \def (\lambda (c1: C).(getl +n c0 c1)) in (let TMP_153 \def (Bind Abbr) in (let TMP_154 \def (CHead x0 +TMP_153 x1) in (let TMP_155 \def (Bind Abst) in (let TMP_156 \def (CHead d +TMP_155 u0) in (let TMP_157 \def (Bind Abbr) in (let TMP_158 \def (CHead x0 +TMP_157 x1) in (let TMP_159 \def (getl_mono c0 TMP_156 n H0 TMP_158 H6) in +(let H8 \def (eq_ind C TMP_151 TMP_152 H0 TMP_154 TMP_159) in (let TMP_160 +\def (Bind Abst) in (let TMP_161 \def (CHead d TMP_160 u0) in (let TMP_162 +\def (\lambda (ee: C).(match ee with [(CSort _) \Rightarrow False | (CHead _ +k _) \Rightarrow (match k with [(Bind b) \Rightarrow (match b with [Abbr +\Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat +_) \Rightarrow False])])) in (let TMP_163 \def (Bind Abbr) in (let TMP_164 +\def (CHead x0 TMP_163 x1) in (let TMP_165 \def (Bind Abst) in (let TMP_166 +\def (CHead d TMP_165 u0) in (let TMP_167 \def (Bind Abbr) in (let TMP_168 +\def (CHead x0 TMP_167 x1) in (let TMP_169 \def (getl_mono c0 TMP_166 n H0 +TMP_168 H6) in (let H9 \def (eq_ind C TMP_161 TMP_162 I TMP_164 TMP_169) in +(let TMP_170 \def (S n) in (let TMP_171 \def (lift TMP_170 O u0) in (let +TMP_172 \def (pc3 c0 TMP_171 t2) in (False_ind TMP_172 +H9)))))))))))))))))))))))))))))))) in (ex3_3_ind C T T TMP_142 TMP_145 +TMP_146 TMP_149 TMP_173 H4))))))))) in (let TMP_228 \def (\lambda (H4: (ex3_3 +C T T (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(pc3 c0 (lift (S n) O +u1) t2)))) (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead +e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(ty3 +g e u1 t0)))))).(let TMP_177 \def (\lambda (_: C).(\lambda (u1: T).(\lambda +(_: T).(let TMP_175 \def (S n) in (let TMP_176 \def (lift TMP_175 O u1) in +(pc3 c0 TMP_176 t2)))))) in (let TMP_180 \def (\lambda (e: C).(\lambda (u1: +T).(\lambda (_: T).(let TMP_178 \def (Bind Abst) in (let TMP_179 \def (CHead +e TMP_178 u1) in (getl n c0 TMP_179)))))) in (let TMP_181 \def (\lambda (e: +C).(\lambda (u1: T).(\lambda (t0: T).(ty3 g e u1 t0)))) in (let TMP_182 \def +(S n) in (let TMP_183 \def (lift TMP_182 O u0) in (let TMP_184 \def (pc3 c0 +TMP_183 t2) in (let TMP_227 \def (\lambda (x0: C).(\lambda (x1: T).(\lambda +(x2: T).(\lambda (H5: (pc3 c0 (lift (S n) O x1) t2)).(\lambda (H6: (getl n c0 +(CHead x0 (Bind Abst) x1))).(\lambda (H7: (ty3 g x0 x1 x2)).(let TMP_185 \def +(Bind Abst) in (let TMP_186 \def (CHead d TMP_185 u0) in (let TMP_187 \def +(\lambda (c1: C).(getl n c0 c1)) in (let TMP_188 \def (Bind Abst) in (let +TMP_189 \def (CHead x0 TMP_188 x1) in (let TMP_190 \def (Bind Abst) in (let +TMP_191 \def (CHead d TMP_190 u0) in (let TMP_192 \def (Bind Abst) in (let +TMP_193 \def (CHead x0 TMP_192 x1) in (let TMP_194 \def (getl_mono c0 TMP_191 +n H0 TMP_193 H6) in (let H8 \def (eq_ind C TMP_186 TMP_187 H0 TMP_189 +TMP_194) in (let TMP_195 \def (\lambda (e: C).(match e with [(CSort _) +\Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) in (let TMP_196 \def (Bind +Abst) in (let TMP_197 \def (CHead d TMP_196 u0) in (let TMP_198 \def (Bind +Abst) in (let TMP_199 \def (CHead x0 TMP_198 x1) in (let TMP_200 \def (Bind +Abst) in (let TMP_201 \def (CHead d TMP_200 u0) in (let TMP_202 \def (Bind +Abst) in (let TMP_203 \def (CHead x0 TMP_202 x1) in (let TMP_204 \def +(getl_mono c0 TMP_201 n H0 TMP_203 H6) in (let H9 \def (f_equal C C TMP_195 +TMP_197 TMP_199 TMP_204) in (let TMP_205 \def (\lambda (e: C).(match e with +[(CSort _) \Rightarrow u0 | (CHead _ _ t0) \Rightarrow t0])) in (let TMP_206 +\def (Bind Abst) in (let TMP_207 \def (CHead d TMP_206 u0) in (let TMP_208 +\def (Bind Abst) in (let TMP_209 \def (CHead x0 TMP_208 x1) in (let TMP_210 +\def (Bind Abst) in (let TMP_211 \def (CHead d TMP_210 u0) in (let TMP_212 +\def (Bind Abst) in (let TMP_213 \def (CHead x0 TMP_212 x1) in (let TMP_214 +\def (getl_mono c0 TMP_211 n H0 TMP_213 H6) in (let H10 \def (f_equal C T +TMP_205 TMP_207 TMP_209 TMP_214) in (let TMP_226 \def (\lambda (H11: (eq C d +x0)).(let TMP_217 \def (\lambda (t0: T).(let TMP_215 \def (Bind Abst) in (let +TMP_216 \def (CHead x0 TMP_215 t0) in (getl n c0 TMP_216)))) in (let H12 \def +(eq_ind_r T x1 TMP_217 H8 u0 H10) in (let TMP_218 \def (\lambda (t0: T).(ty3 +g x0 t0 x2)) in (let H13 \def (eq_ind_r T x1 TMP_218 H7 u0 H10) in (let +TMP_221 \def (\lambda (t0: T).(let TMP_219 \def (S n) in (let TMP_220 \def +(lift TMP_219 O t0) in (pc3 c0 TMP_220 t2)))) in (let H14 \def (eq_ind_r T x1 +TMP_221 H5 u0 H10) in (let TMP_224 \def (\lambda (c1: C).(let TMP_222 \def +(Bind Abst) in (let TMP_223 \def (CHead c1 TMP_222 u0) in (getl n c0 +TMP_223)))) in (let H15 \def (eq_ind_r C x0 TMP_224 H12 d H11) in (let +TMP_225 \def (\lambda (c1: C).(ty3 g c1 u0 x2)) in (let H16 \def (eq_ind_r C +x0 TMP_225 H13 d H11) in H14))))))))))) in (TMP_226 +H9))))))))))))))))))))))))))))))))))))))))) in (ex3_3_ind C T T TMP_177 +TMP_180 TMP_181 TMP_184 TMP_227 H4))))))))) in (let TMP_229 \def +(ty3_gen_lref g c0 t2 n H3) in (or_ind TMP_128 TMP_136 TMP_139 TMP_174 +TMP_228 TMP_229))))))))))))))))))))))))) in (let TMP_250 \def (\lambda (c0: +C).(\lambda (u0: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u0 t)).(\lambda +(_: ((\forall (t2: T).((ty3 g c0 u0 t2) \to (pc3 c0 t t2))))).(\lambda (b: +B).(\lambda (t0: T).(\lambda (t2: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) +u0) t0 t2)).(\lambda (H3: ((\forall (t3: T).((ty3 g (CHead c0 (Bind b) u0) t0 +t3) \to (pc3 (CHead c0 (Bind b) u0) t2 t3))))).(\lambda (t3: T).(\lambda (H4: +(ty3 g c0 (THead (Bind b) u0 t0) t3)).(let TMP_233 \def (\lambda (t4: +T).(\lambda (_: T).(let TMP_231 \def (Bind b) in (let TMP_232 \def (THead +TMP_231 u0 t4) in (pc3 c0 TMP_232 t3))))) in (let TMP_234 \def (\lambda (_: +T).(\lambda (t5: T).(ty3 g c0 u0 t5))) in (let TMP_237 \def (\lambda (t4: +T).(\lambda (_: T).(let TMP_235 \def (Bind b) in (let TMP_236 \def (CHead c0 +TMP_235 u0) in (ty3 g TMP_236 t0 t4))))) in (let TMP_238 \def (Bind b) in +(let TMP_239 \def (THead TMP_238 u0 t2) in (let TMP_240 \def (pc3 c0 TMP_239 +t3) in (let TMP_248 \def (\lambda (x0: T).(\lambda (x1: T).(\lambda (H5: (pc3 +c0 (THead (Bind b) u0 x0) t3)).(\lambda (_: (ty3 g c0 u0 x1)).(\lambda (H7: +(ty3 g (CHead c0 (Bind b) u0) t0 x0)).(let TMP_241 \def (Bind b) in (let +TMP_242 \def (THead TMP_241 u0 x0) in (let TMP_243 \def (Bind b) in (let +TMP_244 \def (THead TMP_243 u0 t2) in (let TMP_245 \def (Bind b) in (let +TMP_246 \def (H3 x0 H7) in (let TMP_247 \def (pc3_head_2 c0 u0 t2 x0 TMP_245 +TMP_246) in (pc3_t TMP_242 c0 TMP_244 TMP_247 t3 H5))))))))))))) in (let +TMP_249 \def (ty3_gen_bind g b c0 u0 t0 t3 H4) in (ex3_2_ind T T TMP_233 +TMP_234 TMP_237 TMP_240 TMP_248 TMP_249))))))))))))))))))))) in (let TMP_283 +\def (\lambda (c0: C).(\lambda (w: T).(\lambda (u0: T).(\lambda (_: (ty3 g c0 +w u0)).(\lambda (_: ((\forall (t2: T).((ty3 g c0 w t2) \to (pc3 c0 u0 +t2))))).(\lambda (v: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 v (THead (Bind +Abst) u0 t))).(\lambda (H3: ((\forall (t2: T).((ty3 g c0 v t2) \to (pc3 c0 +(THead (Bind Abst) u0 t) t2))))).(\lambda (t2: T).(\lambda (H4: (ty3 g c0 +(THead (Flat Appl) w v) t2)).(let TMP_255 \def (\lambda (u1: T).(\lambda (t0: +T).(let TMP_251 \def (Flat Appl) in (let TMP_252 \def (Bind Abst) in (let +TMP_253 \def (THead TMP_252 u1 t0) in (let TMP_254 \def (THead TMP_251 w +TMP_253) in (pc3 c0 TMP_254 t2))))))) in (let TMP_258 \def (\lambda (u1: +T).(\lambda (t0: T).(let TMP_256 \def (Bind Abst) in (let TMP_257 \def (THead +TMP_256 u1 t0) in (ty3 g c0 v TMP_257))))) in (let TMP_259 \def (\lambda (u1: +T).(\lambda (_: T).(ty3 g c0 w u1))) in (let TMP_260 \def (Flat Appl) in (let +TMP_261 \def (Bind Abst) in (let TMP_262 \def (THead TMP_261 u0 t) in (let +TMP_263 \def (THead TMP_260 w TMP_262) in (let TMP_264 \def (pc3 c0 TMP_263 +t2) in (let TMP_281 \def (\lambda (x0: T).(\lambda (x1: T).(\lambda (H5: (pc3 +c0 (THead (Flat Appl) w (THead (Bind Abst) x0 x1)) t2)).(\lambda (H6: (ty3 g +c0 v (THead (Bind Abst) x0 x1))).(\lambda (_: (ty3 g c0 w x0)).(let TMP_265 +\def (Flat Appl) in (let TMP_266 \def (Bind Abst) in (let TMP_267 \def (THead +TMP_266 x0 x1) in (let TMP_268 \def (THead TMP_265 w TMP_267) in (let TMP_269 +\def (Flat Appl) in (let TMP_270 \def (Bind Abst) in (let TMP_271 \def (THead +TMP_270 u0 t) in (let TMP_272 \def (THead TMP_269 w TMP_271) in (let TMP_273 +\def (Bind Abst) in (let TMP_274 \def (THead TMP_273 u0 t) in (let TMP_275 +\def (Bind Abst) in (let TMP_276 \def (THead TMP_275 x0 x1) in (let TMP_277 +\def (Bind Abst) in (let TMP_278 \def (THead TMP_277 x0 x1) in (let TMP_279 +\def (H3 TMP_278 H6) in (let TMP_280 \def (pc3_thin_dx c0 TMP_274 TMP_276 +TMP_279 w Appl) in (pc3_t TMP_268 c0 TMP_272 TMP_280 t2 +H5)))))))))))))))))))))) in (let TMP_282 \def (ty3_gen_appl g c0 w v t2 H4) +in (ex3_2_ind T T TMP_255 TMP_258 TMP_259 TMP_264 TMP_281 +TMP_282)))))))))))))))))))))) in (let TMP_301 \def (\lambda (c0: C).(\lambda +(t0: T).(\lambda (t2: T).(\lambda (_: (ty3 g c0 t0 t2)).(\lambda (_: +((\forall (t3: T).((ty3 g c0 t0 t3) \to (pc3 c0 t2 t3))))).(\lambda (t3: +T).(\lambda (_: (ty3 g c0 t2 t3)).(\lambda (H3: ((\forall (t4: T).((ty3 g c0 +t2 t4) \to (pc3 c0 t3 t4))))).(\lambda (t4: T).(\lambda (H4: (ty3 g c0 (THead +(Flat Cast) t2 t0) t4)).(let TMP_286 \def (\lambda (t5: T).(let TMP_284 \def +(Flat Cast) in (let TMP_285 \def (THead TMP_284 t5 t2) in (pc3 c0 TMP_285 +t4)))) in (let TMP_287 \def (\lambda (_: T).(ty3 g c0 t0 t2)) in (let TMP_288 +\def (\lambda (t5: T).(ty3 g c0 t2 t5)) in (let TMP_289 \def (Flat Cast) in +(let TMP_290 \def (THead TMP_289 t3 t2) in (let TMP_291 \def (pc3 c0 TMP_290 +t4) in (let TMP_299 \def (\lambda (x0: T).(\lambda (H5: (pc3 c0 (THead (Flat +Cast) x0 t2) t4)).(\lambda (_: (ty3 g c0 t0 t2)).(\lambda (H7: (ty3 g c0 t2 +x0)).(let TMP_292 \def (Flat Cast) in (let TMP_293 \def (THead TMP_292 x0 t2) +in (let TMP_294 \def (Flat Cast) in (let TMP_295 \def (THead TMP_294 t3 t2) +in (let TMP_296 \def (H3 x0 H7) in (let TMP_297 \def (Flat Cast) in (let +TMP_298 \def (pc3_head_1 c0 t3 x0 TMP_296 TMP_297 t2) in (pc3_t TMP_293 c0 +TMP_295 TMP_298 t4 H5)))))))))))) in (let TMP_300 \def (ty3_gen_cast g c0 t0 +t2 t4 H4) in (ex3_ind T TMP_286 TMP_287 TMP_288 TMP_291 TMP_299 +TMP_300))))))))))))))))))) in (ty3_ind g TMP_1 TMP_4 TMP_5 TMP_120 TMP_230 +TMP_250 TMP_283 TMP_301 c u t1 H))))))))))))). theorem ty3_gen_abst_abst: \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t1: T).(\forall @@ -433,45 +833,62 @@ u) t1 t2)))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (t2: T).(\lambda (H: (ty3 g c (THead (Bind Abst) u t1) (THead (Bind Abst) u -t2))).(ex_ind T (\lambda (t: T).(ty3 g c (THead (Bind Abst) u t2) t)) (ex2 T -(\lambda (w: T).(ty3 g c u w)) (\lambda (_: T).(ty3 g (CHead c (Bind Abst) u) -t1 t2))) (\lambda (x: T).(\lambda (H0: (ty3 g c (THead (Bind Abst) u t2) -x)).(ex3_2_ind T T (\lambda (t3: T).(\lambda (_: T).(pc3 c (THead (Bind Abst) -u t3) x))) (\lambda (_: T).(\lambda (t: T).(ty3 g c u t))) (\lambda (t3: -T).(\lambda (_: T).(ty3 g (CHead c (Bind Abst) u) t2 t3))) (ex2 T (\lambda -(w: T).(ty3 g c u w)) (\lambda (_: T).(ty3 g (CHead c (Bind Abst) u) t1 t2))) -(\lambda (x0: T).(\lambda (x1: T).(\lambda (_: (pc3 c (THead (Bind Abst) u -x0) x)).(\lambda (_: (ty3 g c u x1)).(\lambda (H3: (ty3 g (CHead c (Bind -Abst) u) t2 x0)).(ex3_2_ind T T (\lambda (t3: T).(\lambda (_: T).(pc3 c -(THead (Bind Abst) u t3) (THead (Bind Abst) u t2)))) (\lambda (_: T).(\lambda -(t: T).(ty3 g c u t))) (\lambda (t3: T).(\lambda (_: T).(ty3 g (CHead c (Bind -Abst) u) t1 t3))) (ex2 T (\lambda (w: T).(ty3 g c u w)) (\lambda (_: T).(ty3 -g (CHead c (Bind Abst) u) t1 t2))) (\lambda (x2: T).(\lambda (x3: T).(\lambda -(H4: (pc3 c (THead (Bind Abst) u x2) (THead (Bind Abst) u t2))).(\lambda (H5: -(ty3 g c u x3)).(\lambda (H6: (ty3 g (CHead c (Bind Abst) u) t1 x2)).(let H_y -\def (pc3_gen_abst_shift c u x2 t2 H4) in (ex_intro2 T (\lambda (w: T).(ty3 g -c u w)) (\lambda (_: T).(ty3 g (CHead c (Bind Abst) u) t1 t2)) x3 H5 -(ty3_conv g (CHead c (Bind Abst) u) t2 x0 H3 t1 x2 H6 H_y)))))))) -(ty3_gen_bind g Abst c u t1 (THead (Bind Abst) u t2) H))))))) (ty3_gen_bind g -Abst c u t2 x H0)))) (ty3_correct g c (THead (Bind Abst) u t1) (THead (Bind -Abst) u t2) H))))))). -(* COMMENTS -Initial nodes: 571 -END *) +t2))).(let TMP_3 \def (\lambda (t: T).(let TMP_1 \def (Bind Abst) in (let +TMP_2 \def (THead TMP_1 u t2) in (ty3 g c TMP_2 t)))) in (let TMP_4 \def +(\lambda (w: T).(ty3 g c u w)) in (let TMP_7 \def (\lambda (_: T).(let TMP_5 +\def (Bind Abst) in (let TMP_6 \def (CHead c TMP_5 u) in (ty3 g TMP_6 t1 +t2)))) in (let TMP_8 \def (ex2 T TMP_4 TMP_7) in (let TMP_48 \def (\lambda +(x: T).(\lambda (H0: (ty3 g c (THead (Bind Abst) u t2) x)).(let TMP_11 \def +(\lambda (t3: T).(\lambda (_: T).(let TMP_9 \def (Bind Abst) in (let TMP_10 +\def (THead TMP_9 u t3) in (pc3 c TMP_10 x))))) in (let TMP_12 \def (\lambda +(_: T).(\lambda (t: T).(ty3 g c u t))) in (let TMP_15 \def (\lambda (t3: +T).(\lambda (_: T).(let TMP_13 \def (Bind Abst) in (let TMP_14 \def (CHead c +TMP_13 u) in (ty3 g TMP_14 t2 t3))))) in (let TMP_16 \def (\lambda (w: +T).(ty3 g c u w)) in (let TMP_19 \def (\lambda (_: T).(let TMP_17 \def (Bind +Abst) in (let TMP_18 \def (CHead c TMP_17 u) in (ty3 g TMP_18 t1 t2)))) in +(let TMP_20 \def (ex2 T TMP_16 TMP_19) in (let TMP_46 \def (\lambda (x0: +T).(\lambda (x1: T).(\lambda (_: (pc3 c (THead (Bind Abst) u x0) x)).(\lambda +(_: (ty3 g c u x1)).(\lambda (H3: (ty3 g (CHead c (Bind Abst) u) t2 x0)).(let +TMP_25 \def (\lambda (t3: T).(\lambda (_: T).(let TMP_21 \def (Bind Abst) in +(let TMP_22 \def (THead TMP_21 u t3) in (let TMP_23 \def (Bind Abst) in (let +TMP_24 \def (THead TMP_23 u t2) in (pc3 c TMP_22 TMP_24))))))) in (let TMP_26 +\def (\lambda (_: T).(\lambda (t: T).(ty3 g c u t))) in (let TMP_29 \def +(\lambda (t3: T).(\lambda (_: T).(let TMP_27 \def (Bind Abst) in (let TMP_28 +\def (CHead c TMP_27 u) in (ty3 g TMP_28 t1 t3))))) in (let TMP_30 \def +(\lambda (w: T).(ty3 g c u w)) in (let TMP_33 \def (\lambda (_: T).(let +TMP_31 \def (Bind Abst) in (let TMP_32 \def (CHead c TMP_31 u) in (ty3 g +TMP_32 t1 t2)))) in (let TMP_34 \def (ex2 T TMP_30 TMP_33) in (let TMP_42 +\def (\lambda (x2: T).(\lambda (x3: T).(\lambda (H4: (pc3 c (THead (Bind +Abst) u x2) (THead (Bind Abst) u t2))).(\lambda (H5: (ty3 g c u x3)).(\lambda +(H6: (ty3 g (CHead c (Bind Abst) u) t1 x2)).(let H_y \def (pc3_gen_abst_shift +c u x2 t2 H4) in (let TMP_35 \def (\lambda (w: T).(ty3 g c u w)) in (let +TMP_38 \def (\lambda (_: T).(let TMP_36 \def (Bind Abst) in (let TMP_37 \def +(CHead c TMP_36 u) in (ty3 g TMP_37 t1 t2)))) in (let TMP_39 \def (Bind Abst) +in (let TMP_40 \def (CHead c TMP_39 u) in (let TMP_41 \def (ty3_conv g TMP_40 +t2 x0 H3 t1 x2 H6 H_y) in (ex_intro2 T TMP_35 TMP_38 x3 H5 TMP_41)))))))))))) +in (let TMP_43 \def (Bind Abst) in (let TMP_44 \def (THead TMP_43 u t2) in +(let TMP_45 \def (ty3_gen_bind g Abst c u t1 TMP_44 H) in (ex3_2_ind T T +TMP_25 TMP_26 TMP_29 TMP_34 TMP_42 TMP_45)))))))))))))))) in (let TMP_47 \def +(ty3_gen_bind g Abst c u t2 x H0) in (ex3_2_ind T T TMP_11 TMP_12 TMP_15 +TMP_20 TMP_46 TMP_47))))))))))) in (let TMP_49 \def (Bind Abst) in (let +TMP_50 \def (THead TMP_49 u t1) in (let TMP_51 \def (Bind Abst) in (let +TMP_52 \def (THead TMP_51 u t2) in (let TMP_53 \def (ty3_correct g c TMP_50 +TMP_52 H) in (ex_ind T TMP_3 TMP_8 TMP_48 TMP_53)))))))))))))))). theorem ty3_typecheck: \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (v: T).((ty3 g c t v) \to (ex T (\lambda (u: T).(ty3 g c (THead (Flat Cast) v t) u))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (v: T).(\lambda (H: -(ty3 g c t v)).(ex_ind T (\lambda (t0: T).(ty3 g c v t0)) (ex T (\lambda (u: -T).(ty3 g c (THead (Flat Cast) v t) u))) (\lambda (x: T).(\lambda (H0: (ty3 g -c v x)).(ex_intro T (\lambda (u: T).(ty3 g c (THead (Flat Cast) v t) u)) -(THead (Flat Cast) x v) (ty3_cast g c t v H x H0)))) (ty3_correct g c t v -H)))))). -(* COMMENTS -Initial nodes: 131 -END *) +(ty3 g c t v)).(let TMP_1 \def (\lambda (t0: T).(ty3 g c v t0)) in (let TMP_4 +\def (\lambda (u: T).(let TMP_2 \def (Flat Cast) in (let TMP_3 \def (THead +TMP_2 v t) in (ty3 g c TMP_3 u)))) in (let TMP_5 \def (ex T TMP_4) in (let +TMP_12 \def (\lambda (x: T).(\lambda (H0: (ty3 g c v x)).(let TMP_8 \def +(\lambda (u: T).(let TMP_6 \def (Flat Cast) in (let TMP_7 \def (THead TMP_6 v +t) in (ty3 g c TMP_7 u)))) in (let TMP_9 \def (Flat Cast) in (let TMP_10 \def +(THead TMP_9 x v) in (let TMP_11 \def (ty3_cast g c t v H x H0) in (ex_intro +T TMP_8 TMP_10 TMP_11))))))) in (let TMP_13 \def (ty3_correct g c t v H) in +(ex_ind T TMP_1 TMP_5 TMP_12 TMP_13)))))))))). theorem ty3_getl_subst0: \forall (g: G).(\forall (c: C).(\forall (t: T).(\forall (u: T).((ty3 g c t @@ -480,99 +897,150 @@ t0) \to (\forall (b: B).(\forall (d: C).(\forall (v: T).((getl i c (CHead d (Bind b) v)) \to (ex T (\lambda (w: T).(ty3 g d v w))))))))))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (t: T).(\lambda (u: T).(\lambda (H: -(ty3 g c t u)).(ty3_ind g (\lambda (c0: C).(\lambda (t0: T).(\lambda (_: +(ty3 g c t u)).(let TMP_2 \def (\lambda (c0: C).(\lambda (t0: T).(\lambda (_: T).(\forall (v0: T).(\forall (t2: T).(\forall (i: nat).((subst0 i v0 t0 t2) \to (\forall (b: B).(\forall (d: C).(\forall (v: T).((getl i c0 (CHead d -(Bind b) v)) \to (ex T (\lambda (w: T).(ty3 g d v w)))))))))))))) (\lambda -(c0: C).(\lambda (t2: T).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t2 -t0)).(\lambda (_: ((\forall (v0: T).(\forall (t1: T).(\forall (i: -nat).((subst0 i v0 t2 t1) \to (\forall (b: B).(\forall (d: C).(\forall (v: -T).((getl i c0 (CHead d (Bind b) v)) \to (ex T (\lambda (w: T).(ty3 g d v -w))))))))))))).(\lambda (u0: T).(\lambda (t1: T).(\lambda (_: (ty3 g c0 u0 -t1)).(\lambda (H3: ((\forall (v0: T).(\forall (t3: T).(\forall (i: -nat).((subst0 i v0 u0 t3) \to (\forall (b: B).(\forall (d: C).(\forall (v: -T).((getl i c0 (CHead d (Bind b) v)) \to (ex T (\lambda (w: T).(ty3 g d v -w))))))))))))).(\lambda (_: (pc3 c0 t1 t2)).(\lambda (v0: T).(\lambda (t3: -T).(\lambda (i: nat).(\lambda (H5: (subst0 i v0 u0 t3)).(\lambda (b: -B).(\lambda (d: C).(\lambda (v: T).(\lambda (H6: (getl i c0 (CHead d (Bind b) -v))).(H3 v0 t3 i H5 b d v H6))))))))))))))))))) (\lambda (c0: C).(\lambda (m: +(Bind b) v)) \to (let TMP_1 \def (\lambda (w: T).(ty3 g d v w)) in (ex T +TMP_1))))))))))))) in (let TMP_3 \def (\lambda (c0: C).(\lambda (t2: +T).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t2 t0)).(\lambda (_: ((\forall +(v0: T).(\forall (t1: T).(\forall (i: nat).((subst0 i v0 t2 t1) \to (\forall +(b: B).(\forall (d: C).(\forall (v: T).((getl i c0 (CHead d (Bind b) v)) \to +(ex T (\lambda (w: T).(ty3 g d v w))))))))))))).(\lambda (u0: T).(\lambda +(t1: T).(\lambda (_: (ty3 g c0 u0 t1)).(\lambda (H3: ((\forall (v0: +T).(\forall (t3: T).(\forall (i: nat).((subst0 i v0 u0 t3) \to (\forall (b: +B).(\forall (d: C).(\forall (v: T).((getl i c0 (CHead d (Bind b) v)) \to (ex +T (\lambda (w: T).(ty3 g d v w))))))))))))).(\lambda (_: (pc3 c0 t1 +t2)).(\lambda (v0: T).(\lambda (t3: T).(\lambda (i: nat).(\lambda (H5: +(subst0 i v0 u0 t3)).(\lambda (b: B).(\lambda (d: C).(\lambda (v: T).(\lambda +(H6: (getl i c0 (CHead d (Bind b) v))).(H3 v0 t3 i H5 b d v +H6))))))))))))))))))) in (let TMP_6 \def (\lambda (c0: C).(\lambda (m: nat).(\lambda (v0: T).(\lambda (t0: T).(\lambda (i: nat).(\lambda (H0: (subst0 i v0 (TSort m) t0)).(\lambda (b: B).(\lambda (d: C).(\lambda (v: -T).(\lambda (_: (getl i c0 (CHead d (Bind b) v))).(subst0_gen_sort v0 t0 i m -H0 (ex T (\lambda (w: T).(ty3 g d v w)))))))))))))) (\lambda (n: -nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (H0: (getl n -c0 (CHead d (Bind Abbr) u0))).(\lambda (t0: T).(\lambda (H1: (ty3 g d u0 -t0)).(\lambda (_: ((\forall (v0: T).(\forall (t1: T).(\forall (i: +T).(\lambda (_: (getl i c0 (CHead d (Bind b) v))).(let TMP_4 \def (\lambda +(w: T).(ty3 g d v w)) in (let TMP_5 \def (ex T TMP_4) in (subst0_gen_sort v0 +t0 i m H0 TMP_5))))))))))))) in (let TMP_76 \def (\lambda (n: nat).(\lambda +(c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (H0: (getl n c0 (CHead d +(Bind Abbr) u0))).(\lambda (t0: T).(\lambda (H1: (ty3 g d u0 t0)).(\lambda +(_: ((\forall (v0: T).(\forall (t1: T).(\forall (i: nat).((subst0 i v0 u0 t1) +\to (\forall (b: B).(\forall (d0: C).(\forall (v: T).((getl i d (CHead d0 +(Bind b) v)) \to (ex T (\lambda (w: T).(ty3 g d0 v w))))))))))))).(\lambda +(v0: T).(\lambda (t1: T).(\lambda (i: nat).(\lambda (H3: (subst0 i v0 (TLRef +n) t1)).(\lambda (b: B).(\lambda (d0: C).(\lambda (v: T).(\lambda (H4: (getl +i c0 (CHead d0 (Bind b) v))).(let TMP_7 \def (eq nat n i) in (let TMP_8 \def +(S n) in (let TMP_9 \def (lift TMP_8 O v0) in (let TMP_10 \def (eq T t1 +TMP_9) in (let TMP_11 \def (\lambda (w: T).(ty3 g d0 v w)) in (let TMP_12 +\def (ex T TMP_11) in (let TMP_74 \def (\lambda (H5: (eq nat n i)).(\lambda +(_: (eq T t1 (lift (S n) O v0))).(let TMP_15 \def (\lambda (n0: nat).(let +TMP_13 \def (Bind b) in (let TMP_14 \def (CHead d0 TMP_13 v) in (getl n0 c0 +TMP_14)))) in (let H7 \def (eq_ind_r nat i TMP_15 H4 n H5) in (let TMP_16 +\def (Bind Abbr) in (let TMP_17 \def (CHead d TMP_16 u0) in (let TMP_18 \def +(\lambda (c1: C).(getl n c0 c1)) in (let TMP_19 \def (Bind b) in (let TMP_20 +\def (CHead d0 TMP_19 v) in (let TMP_21 \def (Bind Abbr) in (let TMP_22 \def +(CHead d TMP_21 u0) in (let TMP_23 \def (Bind b) in (let TMP_24 \def (CHead +d0 TMP_23 v) in (let TMP_25 \def (getl_mono c0 TMP_22 n H0 TMP_24 H7) in (let +H8 \def (eq_ind C TMP_17 TMP_18 H0 TMP_20 TMP_25) in (let TMP_26 \def +(\lambda (e: C).(match e with [(CSort _) \Rightarrow d | (CHead c1 _ _) +\Rightarrow c1])) in (let TMP_27 \def (Bind Abbr) in (let TMP_28 \def (CHead +d TMP_27 u0) in (let TMP_29 \def (Bind b) in (let TMP_30 \def (CHead d0 +TMP_29 v) in (let TMP_31 \def (Bind Abbr) in (let TMP_32 \def (CHead d TMP_31 +u0) in (let TMP_33 \def (Bind b) in (let TMP_34 \def (CHead d0 TMP_33 v) in +(let TMP_35 \def (getl_mono c0 TMP_32 n H0 TMP_34 H7) in (let H9 \def +(f_equal C C TMP_26 TMP_28 TMP_30 TMP_35) in (let TMP_36 \def (\lambda (e: +C).(match e with [(CSort _) \Rightarrow Abbr | (CHead _ k _) \Rightarrow +(match k with [(Bind b0) \Rightarrow b0 | (Flat _) \Rightarrow Abbr])])) in +(let TMP_37 \def (Bind Abbr) in (let TMP_38 \def (CHead d TMP_37 u0) in (let +TMP_39 \def (Bind b) in (let TMP_40 \def (CHead d0 TMP_39 v) in (let TMP_41 +\def (Bind Abbr) in (let TMP_42 \def (CHead d TMP_41 u0) in (let TMP_43 \def +(Bind b) in (let TMP_44 \def (CHead d0 TMP_43 v) in (let TMP_45 \def +(getl_mono c0 TMP_42 n H0 TMP_44 H7) in (let H10 \def (f_equal C B TMP_36 +TMP_38 TMP_40 TMP_45) in (let TMP_46 \def (\lambda (e: C).(match e with +[(CSort _) \Rightarrow u0 | (CHead _ _ t2) \Rightarrow t2])) in (let TMP_47 +\def (Bind Abbr) in (let TMP_48 \def (CHead d TMP_47 u0) in (let TMP_49 \def +(Bind b) in (let TMP_50 \def (CHead d0 TMP_49 v) in (let TMP_51 \def (Bind +Abbr) in (let TMP_52 \def (CHead d TMP_51 u0) in (let TMP_53 \def (Bind b) in +(let TMP_54 \def (CHead d0 TMP_53 v) in (let TMP_55 \def (getl_mono c0 TMP_52 +n H0 TMP_54 H7) in (let H11 \def (f_equal C T TMP_46 TMP_48 TMP_50 TMP_55) in +(let TMP_72 \def (\lambda (H12: (eq B Abbr b)).(\lambda (H13: (eq C d +d0)).(let TMP_58 \def (\lambda (t2: T).(let TMP_56 \def (Bind b) in (let +TMP_57 \def (CHead d0 TMP_56 t2) in (getl n c0 TMP_57)))) in (let H14 \def +(eq_ind_r T v TMP_58 H8 u0 H11) in (let TMP_60 \def (\lambda (t2: T).(let +TMP_59 \def (\lambda (w: T).(ty3 g d0 t2 w)) in (ex T TMP_59))) in (let +TMP_63 \def (\lambda (c1: C).(let TMP_61 \def (Bind b) in (let TMP_62 \def +(CHead c1 TMP_61 u0) in (getl n c0 TMP_62)))) in (let H15 \def (eq_ind_r C d0 +TMP_63 H14 d H13) in (let TMP_65 \def (\lambda (c1: C).(let TMP_64 \def +(\lambda (w: T).(ty3 g c1 u0 w)) in (ex T TMP_64))) in (let TMP_68 \def +(\lambda (b0: B).(let TMP_66 \def (Bind b0) in (let TMP_67 \def (CHead d +TMP_66 u0) in (getl n c0 TMP_67)))) in (let H16 \def (eq_ind_r B b TMP_68 H15 +Abbr H12) in (let TMP_69 \def (\lambda (w: T).(ty3 g d u0 w)) in (let TMP_70 +\def (ex_intro T TMP_69 t0 H1) in (let TMP_71 \def (eq_ind C d TMP_65 TMP_70 +d0 H13) in (eq_ind T u0 TMP_60 TMP_71 v H11)))))))))))))) in (let TMP_73 \def +(TMP_72 H10) in (TMP_73 H9))))))))))))))))))))))))))))))))))))))))))))))))))) +in (let TMP_75 \def (subst0_gen_lref v0 t1 i n H3) in (land_ind TMP_7 TMP_10 +TMP_12 TMP_74 TMP_75))))))))))))))))))))))))) in (let TMP_146 \def (\lambda +(n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (H0: +(getl n c0 (CHead d (Bind Abst) u0))).(\lambda (t0: T).(\lambda (H1: (ty3 g d +u0 t0)).(\lambda (_: ((\forall (v0: T).(\forall (t1: T).(\forall (i: nat).((subst0 i v0 u0 t1) \to (\forall (b: B).(\forall (d0: C).(\forall (v: T).((getl i d (CHead d0 (Bind b) v)) \to (ex T (\lambda (w: T).(ty3 g d0 v w))))))))))))).(\lambda (v0: T).(\lambda (t1: T).(\lambda (i: nat).(\lambda (H3: (subst0 i v0 (TLRef n) t1)).(\lambda (b: B).(\lambda (d0: C).(\lambda -(v: T).(\lambda (H4: (getl i c0 (CHead d0 (Bind b) v))).(land_ind (eq nat n -i) (eq T t1 (lift (S n) O v0)) (ex T (\lambda (w: T).(ty3 g d0 v w))) -(\lambda (H5: (eq nat n i)).(\lambda (_: (eq T t1 (lift (S n) O v0))).(let H7 -\def (eq_ind_r nat i (\lambda (n0: nat).(getl n0 c0 (CHead d0 (Bind b) v))) -H4 n H5) in (let H8 \def (eq_ind C (CHead d (Bind Abbr) u0) (\lambda (c1: -C).(getl n c0 c1)) H0 (CHead d0 (Bind b) v) (getl_mono c0 (CHead d (Bind -Abbr) u0) n H0 (CHead d0 (Bind b) v) H7)) in (let H9 \def (f_equal C C -(\lambda (e: C).(match e in C return (\lambda (_: C).C) with [(CSort _) -\Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) (CHead d (Bind Abbr) u0) -(CHead d0 (Bind b) v) (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead d0 -(Bind b) v) H7)) in ((let H10 \def (f_equal C B (\lambda (e: C).(match e in C -return (\lambda (_: C).B) with [(CSort _) \Rightarrow Abbr | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).B) with [(Bind b0) -\Rightarrow b0 | (Flat _) \Rightarrow Abbr])])) (CHead d (Bind Abbr) u0) -(CHead d0 (Bind b) v) (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead d0 -(Bind b) v) H7)) in ((let H11 \def (f_equal C T (\lambda (e: C).(match e in C -return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ t2) -\Rightarrow t2])) (CHead d (Bind Abbr) u0) (CHead d0 (Bind b) v) (getl_mono -c0 (CHead d (Bind Abbr) u0) n H0 (CHead d0 (Bind b) v) H7)) in (\lambda (H12: -(eq B Abbr b)).(\lambda (H13: (eq C d d0)).(let H14 \def (eq_ind_r T v -(\lambda (t2: T).(getl n c0 (CHead d0 (Bind b) t2))) H8 u0 H11) in (eq_ind T -u0 (\lambda (t2: T).(ex T (\lambda (w: T).(ty3 g d0 t2 w)))) (let H15 \def -(eq_ind_r C d0 (\lambda (c1: C).(getl n c0 (CHead c1 (Bind b) u0))) H14 d -H13) in (eq_ind C d (\lambda (c1: C).(ex T (\lambda (w: T).(ty3 g c1 u0 w)))) -(let H16 \def (eq_ind_r B b (\lambda (b0: B).(getl n c0 (CHead d (Bind b0) -u0))) H15 Abbr H12) in (ex_intro T (\lambda (w: T).(ty3 g d u0 w)) t0 H1)) d0 -H13)) v H11))))) H10)) H9)))))) (subst0_gen_lref v0 t1 i n -H3)))))))))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: -C).(\lambda (u0: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abst) -u0))).(\lambda (t0: T).(\lambda (H1: (ty3 g d u0 t0)).(\lambda (_: ((\forall -(v0: T).(\forall (t1: T).(\forall (i: nat).((subst0 i v0 u0 t1) \to (\forall -(b: B).(\forall (d0: C).(\forall (v: T).((getl i d (CHead d0 (Bind b) v)) \to -(ex T (\lambda (w: T).(ty3 g d0 v w))))))))))))).(\lambda (v0: T).(\lambda -(t1: T).(\lambda (i: nat).(\lambda (H3: (subst0 i v0 (TLRef n) t1)).(\lambda -(b: B).(\lambda (d0: C).(\lambda (v: T).(\lambda (H4: (getl i c0 (CHead d0 -(Bind b) v))).(land_ind (eq nat n i) (eq T t1 (lift (S n) O v0)) (ex T -(\lambda (w: T).(ty3 g d0 v w))) (\lambda (H5: (eq nat n i)).(\lambda (_: (eq -T t1 (lift (S n) O v0))).(let H7 \def (eq_ind_r nat i (\lambda (n0: -nat).(getl n0 c0 (CHead d0 (Bind b) v))) H4 n H5) in (let H8 \def (eq_ind C -(CHead d (Bind Abst) u0) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead d0 (Bind -b) v) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead d0 (Bind b) v) H7)) -in (let H9 \def (f_equal C C (\lambda (e: C).(match e in C return (\lambda -(_: C).C) with [(CSort _) \Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) -(CHead d (Bind Abst) u0) (CHead d0 (Bind b) v) (getl_mono c0 (CHead d (Bind -Abst) u0) n H0 (CHead d0 (Bind b) v) H7)) in ((let H10 \def (f_equal C B -(\lambda (e: C).(match e in C return (\lambda (_: C).B) with [(CSort _) -\Rightarrow Abst | (CHead _ k _) \Rightarrow (match k in K return (\lambda -(_: K).B) with [(Bind b0) \Rightarrow b0 | (Flat _) \Rightarrow Abst])])) -(CHead d (Bind Abst) u0) (CHead d0 (Bind b) v) (getl_mono c0 (CHead d (Bind -Abst) u0) n H0 (CHead d0 (Bind b) v) H7)) in ((let H11 \def (f_equal C T -(\lambda (e: C).(match e in C return (\lambda (_: C).T) with [(CSort _) -\Rightarrow u0 | (CHead _ _ t2) \Rightarrow t2])) (CHead d (Bind Abst) u0) -(CHead d0 (Bind b) v) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead d0 -(Bind b) v) H7)) in (\lambda (H12: (eq B Abst b)).(\lambda (H13: (eq C d -d0)).(let H14 \def (eq_ind_r T v (\lambda (t2: T).(getl n c0 (CHead d0 (Bind -b) t2))) H8 u0 H11) in (eq_ind T u0 (\lambda (t2: T).(ex T (\lambda (w: -T).(ty3 g d0 t2 w)))) (let H15 \def (eq_ind_r C d0 (\lambda (c1: C).(getl n -c0 (CHead c1 (Bind b) u0))) H14 d H13) in (eq_ind C d (\lambda (c1: C).(ex T -(\lambda (w: T).(ty3 g c1 u0 w)))) (let H16 \def (eq_ind_r B b (\lambda (b0: -B).(getl n c0 (CHead d (Bind b0) u0))) H15 Abst H12) in (ex_intro T (\lambda -(w: T).(ty3 g d u0 w)) t0 H1)) d0 H13)) v H11))))) H10)) H9)))))) -(subst0_gen_lref v0 t1 i n H3)))))))))))))))))) (\lambda (c0: C).(\lambda -(u0: T).(\lambda (t0: T).(\lambda (_: (ty3 g c0 u0 t0)).(\lambda (H1: -((\forall (v0: T).(\forall (t1: T).(\forall (i: nat).((subst0 i v0 u0 t1) \to -(\forall (b: B).(\forall (d: C).(\forall (v: T).((getl i c0 (CHead d (Bind b) -v)) \to (ex T (\lambda (w: T).(ty3 g d v w))))))))))))).(\lambda (b: +(v: T).(\lambda (H4: (getl i c0 (CHead d0 (Bind b) v))).(let TMP_77 \def (eq +nat n i) in (let TMP_78 \def (S n) in (let TMP_79 \def (lift TMP_78 O v0) in +(let TMP_80 \def (eq T t1 TMP_79) in (let TMP_81 \def (\lambda (w: T).(ty3 g +d0 v w)) in (let TMP_82 \def (ex T TMP_81) in (let TMP_144 \def (\lambda (H5: +(eq nat n i)).(\lambda (_: (eq T t1 (lift (S n) O v0))).(let TMP_85 \def +(\lambda (n0: nat).(let TMP_83 \def (Bind b) in (let TMP_84 \def (CHead d0 +TMP_83 v) in (getl n0 c0 TMP_84)))) in (let H7 \def (eq_ind_r nat i TMP_85 H4 +n H5) in (let TMP_86 \def (Bind Abst) in (let TMP_87 \def (CHead d TMP_86 u0) +in (let TMP_88 \def (\lambda (c1: C).(getl n c0 c1)) in (let TMP_89 \def +(Bind b) in (let TMP_90 \def (CHead d0 TMP_89 v) in (let TMP_91 \def (Bind +Abst) in (let TMP_92 \def (CHead d TMP_91 u0) in (let TMP_93 \def (Bind b) in +(let TMP_94 \def (CHead d0 TMP_93 v) in (let TMP_95 \def (getl_mono c0 TMP_92 +n H0 TMP_94 H7) in (let H8 \def (eq_ind C TMP_87 TMP_88 H0 TMP_90 TMP_95) in +(let TMP_96 \def (\lambda (e: C).(match e with [(CSort _) \Rightarrow d | +(CHead c1 _ _) \Rightarrow c1])) in (let TMP_97 \def (Bind Abst) in (let +TMP_98 \def (CHead d TMP_97 u0) in (let TMP_99 \def (Bind b) in (let TMP_100 +\def (CHead d0 TMP_99 v) in (let TMP_101 \def (Bind Abst) in (let TMP_102 +\def (CHead d TMP_101 u0) in (let TMP_103 \def (Bind b) in (let TMP_104 \def +(CHead d0 TMP_103 v) in (let TMP_105 \def (getl_mono c0 TMP_102 n H0 TMP_104 +H7) in (let H9 \def (f_equal C C TMP_96 TMP_98 TMP_100 TMP_105) in (let +TMP_106 \def (\lambda (e: C).(match e with [(CSort _) \Rightarrow Abst | +(CHead _ k _) \Rightarrow (match k with [(Bind b0) \Rightarrow b0 | (Flat _) +\Rightarrow Abst])])) in (let TMP_107 \def (Bind Abst) in (let TMP_108 \def +(CHead d TMP_107 u0) in (let TMP_109 \def (Bind b) in (let TMP_110 \def +(CHead d0 TMP_109 v) in (let TMP_111 \def (Bind Abst) in (let TMP_112 \def +(CHead d TMP_111 u0) in (let TMP_113 \def (Bind b) in (let TMP_114 \def +(CHead d0 TMP_113 v) in (let TMP_115 \def (getl_mono c0 TMP_112 n H0 TMP_114 +H7) in (let H10 \def (f_equal C B TMP_106 TMP_108 TMP_110 TMP_115) in (let +TMP_116 \def (\lambda (e: C).(match e with [(CSort _) \Rightarrow u0 | (CHead +_ _ t2) \Rightarrow t2])) in (let TMP_117 \def (Bind Abst) in (let TMP_118 +\def (CHead d TMP_117 u0) in (let TMP_119 \def (Bind b) in (let TMP_120 \def +(CHead d0 TMP_119 v) in (let TMP_121 \def (Bind Abst) in (let TMP_122 \def +(CHead d TMP_121 u0) in (let TMP_123 \def (Bind b) in (let TMP_124 \def +(CHead d0 TMP_123 v) in (let TMP_125 \def (getl_mono c0 TMP_122 n H0 TMP_124 +H7) in (let H11 \def (f_equal C T TMP_116 TMP_118 TMP_120 TMP_125) in (let +TMP_142 \def (\lambda (H12: (eq B Abst b)).(\lambda (H13: (eq C d d0)).(let +TMP_128 \def (\lambda (t2: T).(let TMP_126 \def (Bind b) in (let TMP_127 \def +(CHead d0 TMP_126 t2) in (getl n c0 TMP_127)))) in (let H14 \def (eq_ind_r T +v TMP_128 H8 u0 H11) in (let TMP_130 \def (\lambda (t2: T).(let TMP_129 \def +(\lambda (w: T).(ty3 g d0 t2 w)) in (ex T TMP_129))) in (let TMP_133 \def +(\lambda (c1: C).(let TMP_131 \def (Bind b) in (let TMP_132 \def (CHead c1 +TMP_131 u0) in (getl n c0 TMP_132)))) in (let H15 \def (eq_ind_r C d0 TMP_133 +H14 d H13) in (let TMP_135 \def (\lambda (c1: C).(let TMP_134 \def (\lambda +(w: T).(ty3 g c1 u0 w)) in (ex T TMP_134))) in (let TMP_138 \def (\lambda +(b0: B).(let TMP_136 \def (Bind b0) in (let TMP_137 \def (CHead d TMP_136 u0) +in (getl n c0 TMP_137)))) in (let H16 \def (eq_ind_r B b TMP_138 H15 Abst +H12) in (let TMP_139 \def (\lambda (w: T).(ty3 g d u0 w)) in (let TMP_140 +\def (ex_intro T TMP_139 t0 H1) in (let TMP_141 \def (eq_ind C d TMP_135 +TMP_140 d0 H13) in (eq_ind T u0 TMP_130 TMP_141 v H11)))))))))))))) in (let +TMP_143 \def (TMP_142 H10) in (TMP_143 +H9))))))))))))))))))))))))))))))))))))))))))))))))))) in (let TMP_145 \def +(subst0_gen_lref v0 t1 i n H3) in (land_ind TMP_77 TMP_80 TMP_82 TMP_144 +TMP_145))))))))))))))))))))))))) in (let TMP_205 \def (\lambda (c0: +C).(\lambda (u0: T).(\lambda (t0: T).(\lambda (_: (ty3 g c0 u0 t0)).(\lambda +(H1: ((\forall (v0: T).(\forall (t1: T).(\forall (i: nat).((subst0 i v0 u0 +t1) \to (\forall (b: B).(\forall (d: C).(\forall (v: T).((getl i c0 (CHead d +(Bind b) v)) \to (ex T (\lambda (w: T).(ty3 g d v w))))))))))))).(\lambda (b: B).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u0) t1 t2)).(\lambda (H3: ((\forall (v0: T).(\forall (t3: T).(\forall (i: nat).((subst0 i v0 t1 t3) \to (\forall (b0: B).(\forall (d: C).(\forall (v: @@ -580,112 +1048,178 @@ T).((getl i (CHead c0 (Bind b) u0) (CHead d (Bind b0) v)) \to (ex T (\lambda (w: T).(ty3 g d v w))))))))))))).(\lambda (v0: T).(\lambda (t3: T).(\lambda (i: nat).(\lambda (H4: (subst0 i v0 (THead (Bind b) u0 t1) t3)).(\lambda (b0: B).(\lambda (d: C).(\lambda (v: T).(\lambda (H5: (getl i c0 (CHead d (Bind -b0) v))).(or3_ind (ex2 T (\lambda (u2: T).(eq T t3 (THead (Bind b) u2 t1))) -(\lambda (u2: T).(subst0 i v0 u0 u2))) (ex2 T (\lambda (t4: T).(eq T t3 -(THead (Bind b) u0 t4))) (\lambda (t4: T).(subst0 (s (Bind b) i) v0 t1 t4))) -(ex3_2 T T (\lambda (u2: T).(\lambda (t4: T).(eq T t3 (THead (Bind b) u2 -t4)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v0 u0 u2))) (\lambda (_: -T).(\lambda (t4: T).(subst0 (s (Bind b) i) v0 t1 t4)))) (ex T (\lambda (w: -T).(ty3 g d v w))) (\lambda (H6: (ex2 T (\lambda (u2: T).(eq T t3 (THead -(Bind b) u2 t1))) (\lambda (u2: T).(subst0 i v0 u0 u2)))).(ex2_ind T (\lambda -(u2: T).(eq T t3 (THead (Bind b) u2 t1))) (\lambda (u2: T).(subst0 i v0 u0 -u2)) (ex T (\lambda (w: T).(ty3 g d v w))) (\lambda (x: T).(\lambda (_: (eq T -t3 (THead (Bind b) x t1))).(\lambda (H8: (subst0 i v0 u0 x)).(H1 v0 x i H8 b0 -d v H5)))) H6)) (\lambda (H6: (ex2 T (\lambda (t4: T).(eq T t3 (THead (Bind -b) u0 t4))) (\lambda (t4: T).(subst0 (s (Bind b) i) v0 t1 t4)))).(ex2_ind T -(\lambda (t4: T).(eq T t3 (THead (Bind b) u0 t4))) (\lambda (t4: T).(subst0 -(s (Bind b) i) v0 t1 t4)) (ex T (\lambda (w: T).(ty3 g d v w))) (\lambda (x: -T).(\lambda (_: (eq T t3 (THead (Bind b) u0 x))).(\lambda (H8: (subst0 (s -(Bind b) i) v0 t1 x)).(H3 v0 x (S i) H8 b0 d v (getl_head (Bind b) i c0 -(CHead d (Bind b0) v) H5 u0))))) H6)) (\lambda (H6: (ex3_2 T T (\lambda (u2: -T).(\lambda (t4: T).(eq T t3 (THead (Bind b) u2 t4)))) (\lambda (u2: -T).(\lambda (_: T).(subst0 i v0 u0 u2))) (\lambda (_: T).(\lambda (t4: -T).(subst0 (s (Bind b) i) v0 t1 t4))))).(ex3_2_ind T T (\lambda (u2: +b0) v))).(let TMP_149 \def (\lambda (u2: T).(let TMP_147 \def (Bind b) in +(let TMP_148 \def (THead TMP_147 u2 t1) in (eq T t3 TMP_148)))) in (let +TMP_150 \def (\lambda (u2: T).(subst0 i v0 u0 u2)) in (let TMP_151 \def (ex2 +T TMP_149 TMP_150) in (let TMP_154 \def (\lambda (t4: T).(let TMP_152 \def +(Bind b) in (let TMP_153 \def (THead TMP_152 u0 t4) in (eq T t3 TMP_153)))) +in (let TMP_157 \def (\lambda (t4: T).(let TMP_155 \def (Bind b) in (let +TMP_156 \def (s TMP_155 i) in (subst0 TMP_156 v0 t1 t4)))) in (let TMP_158 +\def (ex2 T TMP_154 TMP_157) in (let TMP_161 \def (\lambda (u2: T).(\lambda +(t4: T).(let TMP_159 \def (Bind b) in (let TMP_160 \def (THead TMP_159 u2 t4) +in (eq T t3 TMP_160))))) in (let TMP_162 \def (\lambda (u2: T).(\lambda (_: +T).(subst0 i v0 u0 u2))) in (let TMP_165 \def (\lambda (_: T).(\lambda (t4: +T).(let TMP_163 \def (Bind b) in (let TMP_164 \def (s TMP_163 i) in (subst0 +TMP_164 v0 t1 t4))))) in (let TMP_166 \def (ex3_2 T T TMP_161 TMP_162 +TMP_165) in (let TMP_167 \def (\lambda (w: T).(ty3 g d v w)) in (let TMP_168 +\def (ex T TMP_167) in (let TMP_176 \def (\lambda (H6: (ex2 T (\lambda (u2: +T).(eq T t3 (THead (Bind b) u2 t1))) (\lambda (u2: T).(subst0 i v0 u0 +u2)))).(let TMP_171 \def (\lambda (u2: T).(let TMP_169 \def (Bind b) in (let +TMP_170 \def (THead TMP_169 u2 t1) in (eq T t3 TMP_170)))) in (let TMP_172 +\def (\lambda (u2: T).(subst0 i v0 u0 u2)) in (let TMP_173 \def (\lambda (w: +T).(ty3 g d v w)) in (let TMP_174 \def (ex T TMP_173) in (let TMP_175 \def +(\lambda (x: T).(\lambda (_: (eq T t3 (THead (Bind b) x t1))).(\lambda (H8: +(subst0 i v0 u0 x)).(H1 v0 x i H8 b0 d v H5)))) in (ex2_ind T TMP_171 TMP_172 +TMP_174 TMP_175 H6))))))) in (let TMP_191 \def (\lambda (H6: (ex2 T (\lambda +(t4: T).(eq T t3 (THead (Bind b) u0 t4))) (\lambda (t4: T).(subst0 (s (Bind +b) i) v0 t1 t4)))).(let TMP_179 \def (\lambda (t4: T).(let TMP_177 \def (Bind +b) in (let TMP_178 \def (THead TMP_177 u0 t4) in (eq T t3 TMP_178)))) in (let +TMP_182 \def (\lambda (t4: T).(let TMP_180 \def (Bind b) in (let TMP_181 \def +(s TMP_180 i) in (subst0 TMP_181 v0 t1 t4)))) in (let TMP_183 \def (\lambda +(w: T).(ty3 g d v w)) in (let TMP_184 \def (ex T TMP_183) in (let TMP_190 +\def (\lambda (x: T).(\lambda (_: (eq T t3 (THead (Bind b) u0 x))).(\lambda +(H8: (subst0 (s (Bind b) i) v0 t1 x)).(let TMP_185 \def (S i) in (let TMP_186 +\def (Bind b) in (let TMP_187 \def (Bind b0) in (let TMP_188 \def (CHead d +TMP_187 v) in (let TMP_189 \def (getl_head TMP_186 i c0 TMP_188 H5 u0) in (H3 +v0 x TMP_185 H8 b0 d v TMP_189))))))))) in (ex2_ind T TMP_179 TMP_182 TMP_184 +TMP_190 H6))))))) in (let TMP_202 \def (\lambda (H6: (ex3_2 T T (\lambda (u2: T).(\lambda (t4: T).(eq T t3 (THead (Bind b) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v0 u0 u2))) (\lambda (_: T).(\lambda (t4: -T).(subst0 (s (Bind b) i) v0 t1 t4))) (ex T (\lambda (w: T).(ty3 g d v w))) +T).(subst0 (s (Bind b) i) v0 t1 t4))))).(let TMP_194 \def (\lambda (u2: +T).(\lambda (t4: T).(let TMP_192 \def (Bind b) in (let TMP_193 \def (THead +TMP_192 u2 t4) in (eq T t3 TMP_193))))) in (let TMP_195 \def (\lambda (u2: +T).(\lambda (_: T).(subst0 i v0 u0 u2))) in (let TMP_198 \def (\lambda (_: +T).(\lambda (t4: T).(let TMP_196 \def (Bind b) in (let TMP_197 \def (s +TMP_196 i) in (subst0 TMP_197 v0 t1 t4))))) in (let TMP_199 \def (\lambda (w: +T).(ty3 g d v w)) in (let TMP_200 \def (ex T TMP_199) in (let TMP_201 \def (\lambda (x0: T).(\lambda (x1: T).(\lambda (_: (eq T t3 (THead (Bind b) x0 x1))).(\lambda (H8: (subst0 i v0 u0 x0)).(\lambda (_: (subst0 (s (Bind b) i) -v0 t1 x1)).(H1 v0 x0 i H8 b0 d v H5)))))) H6)) (subst0_gen_head (Bind b) v0 -u0 t1 t3 i H4)))))))))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda -(u0: T).(\lambda (_: (ty3 g c0 w u0)).(\lambda (H1: ((\forall (v0: -T).(\forall (t0: T).(\forall (i: nat).((subst0 i v0 w t0) \to (\forall (b: -B).(\forall (d: C).(\forall (v: T).((getl i c0 (CHead d (Bind b) v)) \to (ex -T (\lambda (w0: T).(ty3 g d v w0))))))))))))).(\lambda (v: T).(\lambda (t0: -T).(\lambda (_: (ty3 g c0 v (THead (Bind Abst) u0 t0))).(\lambda (H3: -((\forall (v0: T).(\forall (t1: T).(\forall (i: nat).((subst0 i v0 v t1) \to -(\forall (b: B).(\forall (d: C).(\forall (v1: T).((getl i c0 (CHead d (Bind -b) v1)) \to (ex T (\lambda (w0: T).(ty3 g d v1 w0))))))))))))).(\lambda (v0: -T).(\lambda (t1: T).(\lambda (i: nat).(\lambda (H4: (subst0 i v0 (THead (Flat -Appl) w v) t1)).(\lambda (b: B).(\lambda (d: C).(\lambda (v1: T).(\lambda -(H5: (getl i c0 (CHead d (Bind b) v1))).(or3_ind (ex2 T (\lambda (u2: T).(eq -T t1 (THead (Flat Appl) u2 v))) (\lambda (u2: T).(subst0 i v0 w u2))) (ex2 T -(\lambda (t2: T).(eq T t1 (THead (Flat Appl) w t2))) (\lambda (t2: T).(subst0 -(s (Flat Appl) i) v0 v t2))) (ex3_2 T T (\lambda (u2: T).(\lambda (t2: T).(eq -T t1 (THead (Flat Appl) u2 t2)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i -v0 w u2))) (\lambda (_: T).(\lambda (t2: T).(subst0 (s (Flat Appl) i) v0 v -t2)))) (ex T (\lambda (w0: T).(ty3 g d v1 w0))) (\lambda (H6: (ex2 T (\lambda -(u2: T).(eq T t1 (THead (Flat Appl) u2 v))) (\lambda (u2: T).(subst0 i v0 w -u2)))).(ex2_ind T (\lambda (u2: T).(eq T t1 (THead (Flat Appl) u2 v))) -(\lambda (u2: T).(subst0 i v0 w u2)) (ex T (\lambda (w0: T).(ty3 g d v1 w0))) -(\lambda (x: T).(\lambda (_: (eq T t1 (THead (Flat Appl) x v))).(\lambda (H8: -(subst0 i v0 w x)).(H1 v0 x i H8 b d v1 H5)))) H6)) (\lambda (H6: (ex2 T -(\lambda (t2: T).(eq T t1 (THead (Flat Appl) w t2))) (\lambda (t2: T).(subst0 -(s (Flat Appl) i) v0 v t2)))).(ex2_ind T (\lambda (t2: T).(eq T t1 (THead -(Flat Appl) w t2))) (\lambda (t2: T).(subst0 (s (Flat Appl) i) v0 v t2)) (ex -T (\lambda (w0: T).(ty3 g d v1 w0))) (\lambda (x: T).(\lambda (_: (eq T t1 +v0 t1 x1)).(H1 v0 x0 i H8 b0 d v H5)))))) in (ex3_2_ind T T TMP_194 TMP_195 +TMP_198 TMP_200 TMP_201 H6)))))))) in (let TMP_203 \def (Bind b) in (let +TMP_204 \def (subst0_gen_head TMP_203 v0 u0 t1 t3 i H4) in (or3_ind TMP_151 +TMP_158 TMP_166 TMP_168 TMP_176 TMP_191 TMP_202 +TMP_204)))))))))))))))))))))))))))))))))))) in (let TMP_263 \def (\lambda +(c0: C).(\lambda (w: T).(\lambda (u0: T).(\lambda (_: (ty3 g c0 w +u0)).(\lambda (H1: ((\forall (v0: T).(\forall (t0: T).(\forall (i: +nat).((subst0 i v0 w t0) \to (\forall (b: B).(\forall (d: C).(\forall (v: +T).((getl i c0 (CHead d (Bind b) v)) \to (ex T (\lambda (w0: T).(ty3 g d v +w0))))))))))))).(\lambda (v: T).(\lambda (t0: T).(\lambda (_: (ty3 g c0 v +(THead (Bind Abst) u0 t0))).(\lambda (H3: ((\forall (v0: T).(\forall (t1: +T).(\forall (i: nat).((subst0 i v0 v t1) \to (\forall (b: B).(\forall (d: +C).(\forall (v1: T).((getl i c0 (CHead d (Bind b) v1)) \to (ex T (\lambda +(w0: T).(ty3 g d v1 w0))))))))))))).(\lambda (v0: T).(\lambda (t1: +T).(\lambda (i: nat).(\lambda (H4: (subst0 i v0 (THead (Flat Appl) w v) +t1)).(\lambda (b: B).(\lambda (d: C).(\lambda (v1: T).(\lambda (H5: (getl i +c0 (CHead d (Bind b) v1))).(let TMP_208 \def (\lambda (u2: T).(let TMP_206 +\def (Flat Appl) in (let TMP_207 \def (THead TMP_206 u2 v) in (eq T t1 +TMP_207)))) in (let TMP_209 \def (\lambda (u2: T).(subst0 i v0 w u2)) in (let +TMP_210 \def (ex2 T TMP_208 TMP_209) in (let TMP_213 \def (\lambda (t2: +T).(let TMP_211 \def (Flat Appl) in (let TMP_212 \def (THead TMP_211 w t2) in +(eq T t1 TMP_212)))) in (let TMP_216 \def (\lambda (t2: T).(let TMP_214 \def +(Flat Appl) in (let TMP_215 \def (s TMP_214 i) in (subst0 TMP_215 v0 v t2)))) +in (let TMP_217 \def (ex2 T TMP_213 TMP_216) in (let TMP_220 \def (\lambda +(u2: T).(\lambda (t2: T).(let TMP_218 \def (Flat Appl) in (let TMP_219 \def +(THead TMP_218 u2 t2) in (eq T t1 TMP_219))))) in (let TMP_221 \def (\lambda +(u2: T).(\lambda (_: T).(subst0 i v0 w u2))) in (let TMP_224 \def (\lambda +(_: T).(\lambda (t2: T).(let TMP_222 \def (Flat Appl) in (let TMP_223 \def (s +TMP_222 i) in (subst0 TMP_223 v0 v t2))))) in (let TMP_225 \def (ex3_2 T T +TMP_220 TMP_221 TMP_224) in (let TMP_226 \def (\lambda (w0: T).(ty3 g d v1 +w0)) in (let TMP_227 \def (ex T TMP_226) in (let TMP_235 \def (\lambda (H6: +(ex2 T (\lambda (u2: T).(eq T t1 (THead (Flat Appl) u2 v))) (\lambda (u2: +T).(subst0 i v0 w u2)))).(let TMP_230 \def (\lambda (u2: T).(let TMP_228 \def +(Flat Appl) in (let TMP_229 \def (THead TMP_228 u2 v) in (eq T t1 TMP_229)))) +in (let TMP_231 \def (\lambda (u2: T).(subst0 i v0 w u2)) in (let TMP_232 +\def (\lambda (w0: T).(ty3 g d v1 w0)) in (let TMP_233 \def (ex T TMP_232) in +(let TMP_234 \def (\lambda (x: T).(\lambda (_: (eq T t1 (THead (Flat Appl) x +v))).(\lambda (H8: (subst0 i v0 w x)).(H1 v0 x i H8 b d v1 H5)))) in (ex2_ind +T TMP_230 TMP_231 TMP_233 TMP_234 H6))))))) in (let TMP_247 \def (\lambda +(H6: (ex2 T (\lambda (t2: T).(eq T t1 (THead (Flat Appl) w t2))) (\lambda +(t2: T).(subst0 (s (Flat Appl) i) v0 v t2)))).(let TMP_238 \def (\lambda (t2: +T).(let TMP_236 \def (Flat Appl) in (let TMP_237 \def (THead TMP_236 w t2) in +(eq T t1 TMP_237)))) in (let TMP_241 \def (\lambda (t2: T).(let TMP_239 \def +(Flat Appl) in (let TMP_240 \def (s TMP_239 i) in (subst0 TMP_240 v0 v t2)))) +in (let TMP_242 \def (\lambda (w0: T).(ty3 g d v1 w0)) in (let TMP_243 \def +(ex T TMP_242) in (let TMP_246 \def (\lambda (x: T).(\lambda (_: (eq T t1 (THead (Flat Appl) w x))).(\lambda (H8: (subst0 (s (Flat Appl) i) v0 v -x)).(H3 v0 x (s (Flat Appl) i) H8 b d v1 H5)))) H6)) (\lambda (H6: (ex3_2 T T -(\lambda (u2: T).(\lambda (t2: T).(eq T t1 (THead (Flat Appl) u2 t2)))) -(\lambda (u2: T).(\lambda (_: T).(subst0 i v0 w u2))) (\lambda (_: -T).(\lambda (t2: T).(subst0 (s (Flat Appl) i) v0 v t2))))).(ex3_2_ind T T -(\lambda (u2: T).(\lambda (t2: T).(eq T t1 (THead (Flat Appl) u2 t2)))) -(\lambda (u2: T).(\lambda (_: T).(subst0 i v0 w u2))) (\lambda (_: -T).(\lambda (t2: T).(subst0 (s (Flat Appl) i) v0 v t2))) (ex T (\lambda (w0: -T).(ty3 g d v1 w0))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (_: (eq T t1 -(THead (Flat Appl) x0 x1))).(\lambda (_: (subst0 i v0 w x0)).(\lambda (H9: -(subst0 (s (Flat Appl) i) v0 v x1)).(H3 v0 x1 (s (Flat Appl) i) H9 b d v1 -H5)))))) H6)) (subst0_gen_head (Flat Appl) v0 w v t1 i H4))))))))))))))))))) -(\lambda (c0: C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (ty3 g c0 t1 -t2)).(\lambda (H1: ((\forall (v0: T).(\forall (t0: T).(\forall (i: -nat).((subst0 i v0 t1 t0) \to (\forall (b: B).(\forall (d: C).(\forall (v: -T).((getl i c0 (CHead d (Bind b) v)) \to (ex T (\lambda (w: T).(ty3 g d v -w))))))))))))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t2 t0)).(\lambda (H3: -((\forall (v0: T).(\forall (t3: T).(\forall (i: nat).((subst0 i v0 t2 t3) \to -(\forall (b: B).(\forall (d: C).(\forall (v: T).((getl i c0 (CHead d (Bind b) -v)) \to (ex T (\lambda (w: T).(ty3 g d v w))))))))))))).(\lambda (v0: -T).(\lambda (t3: T).(\lambda (i: nat).(\lambda (H4: (subst0 i v0 (THead (Flat -Cast) t2 t1) t3)).(\lambda (b: B).(\lambda (d: C).(\lambda (v: T).(\lambda -(H5: (getl i c0 (CHead d (Bind b) v))).(or3_ind (ex2 T (\lambda (u2: T).(eq T -t3 (THead (Flat Cast) u2 t1))) (\lambda (u2: T).(subst0 i v0 t2 u2))) (ex2 T -(\lambda (t4: T).(eq T t3 (THead (Flat Cast) t2 t4))) (\lambda (t4: -T).(subst0 (s (Flat Cast) i) v0 t1 t4))) (ex3_2 T T (\lambda (u2: T).(\lambda -(t4: T).(eq T t3 (THead (Flat Cast) u2 t4)))) (\lambda (u2: T).(\lambda (_: -T).(subst0 i v0 t2 u2))) (\lambda (_: T).(\lambda (t4: T).(subst0 (s (Flat -Cast) i) v0 t1 t4)))) (ex T (\lambda (w: T).(ty3 g d v w))) (\lambda (H6: -(ex2 T (\lambda (u2: T).(eq T t3 (THead (Flat Cast) u2 t1))) (\lambda (u2: -T).(subst0 i v0 t2 u2)))).(ex2_ind T (\lambda (u2: T).(eq T t3 (THead (Flat -Cast) u2 t1))) (\lambda (u2: T).(subst0 i v0 t2 u2)) (ex T (\lambda (w: -T).(ty3 g d v w))) (\lambda (x: T).(\lambda (_: (eq T t3 (THead (Flat Cast) x -t1))).(\lambda (H8: (subst0 i v0 t2 x)).(H3 v0 x i H8 b d v H5)))) H6)) -(\lambda (H6: (ex2 T (\lambda (t4: T).(eq T t3 (THead (Flat Cast) t2 t4))) -(\lambda (t4: T).(subst0 (s (Flat Cast) i) v0 t1 t4)))).(ex2_ind T (\lambda -(t4: T).(eq T t3 (THead (Flat Cast) t2 t4))) (\lambda (t4: T).(subst0 (s -(Flat Cast) i) v0 t1 t4)) (ex T (\lambda (w: T).(ty3 g d v w))) (\lambda (x: -T).(\lambda (_: (eq T t3 (THead (Flat Cast) t2 x))).(\lambda (H8: (subst0 (s -(Flat Cast) i) v0 t1 x)).(H1 v0 x (s (Flat Cast) i) H8 b d v H5)))) H6)) +x)).(let TMP_244 \def (Flat Appl) in (let TMP_245 \def (s TMP_244 i) in (H3 +v0 x TMP_245 H8 b d v1 H5)))))) in (ex2_ind T TMP_238 TMP_241 TMP_243 TMP_246 +H6))))))) in (let TMP_260 \def (\lambda (H6: (ex3_2 T T (\lambda (u2: +T).(\lambda (t2: T).(eq T t1 (THead (Flat Appl) u2 t2)))) (\lambda (u2: +T).(\lambda (_: T).(subst0 i v0 w u2))) (\lambda (_: T).(\lambda (t2: +T).(subst0 (s (Flat Appl) i) v0 v t2))))).(let TMP_250 \def (\lambda (u2: +T).(\lambda (t2: T).(let TMP_248 \def (Flat Appl) in (let TMP_249 \def (THead +TMP_248 u2 t2) in (eq T t1 TMP_249))))) in (let TMP_251 \def (\lambda (u2: +T).(\lambda (_: T).(subst0 i v0 w u2))) in (let TMP_254 \def (\lambda (_: +T).(\lambda (t2: T).(let TMP_252 \def (Flat Appl) in (let TMP_253 \def (s +TMP_252 i) in (subst0 TMP_253 v0 v t2))))) in (let TMP_255 \def (\lambda (w0: +T).(ty3 g d v1 w0)) in (let TMP_256 \def (ex T TMP_255) in (let TMP_259 \def +(\lambda (x0: T).(\lambda (x1: T).(\lambda (_: (eq T t1 (THead (Flat Appl) x0 +x1))).(\lambda (_: (subst0 i v0 w x0)).(\lambda (H9: (subst0 (s (Flat Appl) +i) v0 v x1)).(let TMP_257 \def (Flat Appl) in (let TMP_258 \def (s TMP_257 i) +in (H3 v0 x1 TMP_258 H9 b d v1 H5)))))))) in (ex3_2_ind T T TMP_250 TMP_251 +TMP_254 TMP_256 TMP_259 H6)))))))) in (let TMP_261 \def (Flat Appl) in (let +TMP_262 \def (subst0_gen_head TMP_261 v0 w v t1 i H4) in (or3_ind TMP_210 +TMP_217 TMP_225 TMP_227 TMP_235 TMP_247 TMP_260 +TMP_262))))))))))))))))))))))))))))))))))) in (let TMP_319 \def (\lambda (c0: +C).(\lambda (t1: T).(\lambda (t2: T).(\lambda (_: (ty3 g c0 t1 t2)).(\lambda +(H1: ((\forall (v0: T).(\forall (t0: T).(\forall (i: nat).((subst0 i v0 t1 +t0) \to (\forall (b: B).(\forall (d: C).(\forall (v: T).((getl i c0 (CHead d +(Bind b) v)) \to (ex T (\lambda (w: T).(ty3 g d v w))))))))))))).(\lambda +(t0: T).(\lambda (_: (ty3 g c0 t2 t0)).(\lambda (H3: ((\forall (v0: +T).(\forall (t3: T).(\forall (i: nat).((subst0 i v0 t2 t3) \to (\forall (b: +B).(\forall (d: C).(\forall (v: T).((getl i c0 (CHead d (Bind b) v)) \to (ex +T (\lambda (w: T).(ty3 g d v w))))))))))))).(\lambda (v0: T).(\lambda (t3: +T).(\lambda (i: nat).(\lambda (H4: (subst0 i v0 (THead (Flat Cast) t2 t1) +t3)).(\lambda (b: B).(\lambda (d: C).(\lambda (v: T).(\lambda (H5: (getl i c0 +(CHead d (Bind b) v))).(let TMP_266 \def (\lambda (u2: T).(let TMP_264 \def +(Flat Cast) in (let TMP_265 \def (THead TMP_264 u2 t1) in (eq T t3 +TMP_265)))) in (let TMP_267 \def (\lambda (u2: T).(subst0 i v0 t2 u2)) in +(let TMP_268 \def (ex2 T TMP_266 TMP_267) in (let TMP_271 \def (\lambda (t4: +T).(let TMP_269 \def (Flat Cast) in (let TMP_270 \def (THead TMP_269 t2 t4) +in (eq T t3 TMP_270)))) in (let TMP_274 \def (\lambda (t4: T).(let TMP_272 +\def (Flat Cast) in (let TMP_273 \def (s TMP_272 i) in (subst0 TMP_273 v0 t1 +t4)))) in (let TMP_275 \def (ex2 T TMP_271 TMP_274) in (let TMP_278 \def +(\lambda (u2: T).(\lambda (t4: T).(let TMP_276 \def (Flat Cast) in (let +TMP_277 \def (THead TMP_276 u2 t4) in (eq T t3 TMP_277))))) in (let TMP_279 +\def (\lambda (u2: T).(\lambda (_: T).(subst0 i v0 t2 u2))) in (let TMP_282 +\def (\lambda (_: T).(\lambda (t4: T).(let TMP_280 \def (Flat Cast) in (let +TMP_281 \def (s TMP_280 i) in (subst0 TMP_281 v0 t1 t4))))) in (let TMP_283 +\def (ex3_2 T T TMP_278 TMP_279 TMP_282) in (let TMP_284 \def (\lambda (w: +T).(ty3 g d v w)) in (let TMP_285 \def (ex T TMP_284) in (let TMP_293 \def +(\lambda (H6: (ex2 T (\lambda (u2: T).(eq T t3 (THead (Flat Cast) u2 t1))) +(\lambda (u2: T).(subst0 i v0 t2 u2)))).(let TMP_288 \def (\lambda (u2: +T).(let TMP_286 \def (Flat Cast) in (let TMP_287 \def (THead TMP_286 u2 t1) +in (eq T t3 TMP_287)))) in (let TMP_289 \def (\lambda (u2: T).(subst0 i v0 t2 +u2)) in (let TMP_290 \def (\lambda (w: T).(ty3 g d v w)) in (let TMP_291 \def +(ex T TMP_290) in (let TMP_292 \def (\lambda (x: T).(\lambda (_: (eq T t3 +(THead (Flat Cast) x t1))).(\lambda (H8: (subst0 i v0 t2 x)).(H3 v0 x i H8 b +d v H5)))) in (ex2_ind T TMP_288 TMP_289 TMP_291 TMP_292 H6))))))) in (let +TMP_305 \def (\lambda (H6: (ex2 T (\lambda (t4: T).(eq T t3 (THead (Flat +Cast) t2 t4))) (\lambda (t4: T).(subst0 (s (Flat Cast) i) v0 t1 t4)))).(let +TMP_296 \def (\lambda (t4: T).(let TMP_294 \def (Flat Cast) in (let TMP_295 +\def (THead TMP_294 t2 t4) in (eq T t3 TMP_295)))) in (let TMP_299 \def +(\lambda (t4: T).(let TMP_297 \def (Flat Cast) in (let TMP_298 \def (s +TMP_297 i) in (subst0 TMP_298 v0 t1 t4)))) in (let TMP_300 \def (\lambda (w: +T).(ty3 g d v w)) in (let TMP_301 \def (ex T TMP_300) in (let TMP_304 \def +(\lambda (x: T).(\lambda (_: (eq T t3 (THead (Flat Cast) t2 x))).(\lambda +(H8: (subst0 (s (Flat Cast) i) v0 t1 x)).(let TMP_302 \def (Flat Cast) in +(let TMP_303 \def (s TMP_302 i) in (H1 v0 x TMP_303 H8 b d v H5)))))) in +(ex2_ind T TMP_296 TMP_299 TMP_301 TMP_304 H6))))))) in (let TMP_316 \def (\lambda (H6: (ex3_2 T T (\lambda (u2: T).(\lambda (t4: T).(eq T t3 (THead (Flat Cast) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v0 t2 u2))) -(\lambda (_: T).(\lambda (t4: T).(subst0 (s (Flat Cast) i) v0 t1 -t4))))).(ex3_2_ind T T (\lambda (u2: T).(\lambda (t4: T).(eq T t3 (THead -(Flat Cast) u2 t4)))) (\lambda (u2: T).(\lambda (_: T).(subst0 i v0 t2 u2))) -(\lambda (_: T).(\lambda (t4: T).(subst0 (s (Flat Cast) i) v0 t1 t4))) (ex T -(\lambda (w: T).(ty3 g d v w))) (\lambda (x0: T).(\lambda (x1: T).(\lambda -(_: (eq T t3 (THead (Flat Cast) x0 x1))).(\lambda (H8: (subst0 i v0 t2 +(\lambda (_: T).(\lambda (t4: T).(subst0 (s (Flat Cast) i) v0 t1 t4))))).(let +TMP_308 \def (\lambda (u2: T).(\lambda (t4: T).(let TMP_306 \def (Flat Cast) +in (let TMP_307 \def (THead TMP_306 u2 t4) in (eq T t3 TMP_307))))) in (let +TMP_309 \def (\lambda (u2: T).(\lambda (_: T).(subst0 i v0 t2 u2))) in (let +TMP_312 \def (\lambda (_: T).(\lambda (t4: T).(let TMP_310 \def (Flat Cast) +in (let TMP_311 \def (s TMP_310 i) in (subst0 TMP_311 v0 t1 t4))))) in (let +TMP_313 \def (\lambda (w: T).(ty3 g d v w)) in (let TMP_314 \def (ex T +TMP_313) in (let TMP_315 \def (\lambda (x0: T).(\lambda (x1: T).(\lambda (_: +(eq T t3 (THead (Flat Cast) x0 x1))).(\lambda (H8: (subst0 i v0 t2 x0)).(\lambda (_: (subst0 (s (Flat Cast) i) v0 t1 x1)).(H3 v0 x0 i H8 b d v -H5)))))) H6)) (subst0_gen_head (Flat Cast) v0 t2 t1 t3 i H4)))))))))))))))))) -c t u H))))). -(* COMMENTS -Initial nodes: 4343 -END *) +H5)))))) in (ex3_2_ind T T TMP_308 TMP_309 TMP_312 TMP_314 TMP_315 H6)))))))) +in (let TMP_317 \def (Flat Cast) in (let TMP_318 \def (subst0_gen_head +TMP_317 v0 t2 t1 t3 i H4) in (or3_ind TMP_268 TMP_275 TMP_283 TMP_285 TMP_293 +TMP_305 TMP_316 TMP_318)))))))))))))))))))))))))))))))))) in (ty3_ind g TMP_2 +TMP_3 TMP_6 TMP_76 TMP_146 TMP_205 TMP_263 TMP_319 c t u H))))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/sty0.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/sty0.ma index 3c630662c..12d8e1d5c 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/sty0.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/sty0.ma @@ -14,224 +14,380 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/pr3_props.ma". +include "basic_1/ty3/pr3_props.ma". -include "Basic-1/sty0/fwd.ma". +include "basic_1/sty0/fwd.ma". theorem ty3_sty0: \forall (g: G).(\forall (c: C).(\forall (u: T).(\forall (t1: T).((ty3 g c u t1) \to (\forall (t2: T).((sty0 g c u t2) \to (ty3 g c u t2))))))) \def \lambda (g: G).(\lambda (c: C).(\lambda (u: T).(\lambda (t1: T).(\lambda (H: -(ty3 g c u t1)).(ty3_ind g (\lambda (c0: C).(\lambda (t: T).(\lambda (_: -T).(\forall (t2: T).((sty0 g c0 t t2) \to (ty3 g c0 t t2)))))) (\lambda (c0: -C).(\lambda (t2: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 t2 t)).(\lambda -(_: ((\forall (t3: T).((sty0 g c0 t2 t3) \to (ty3 g c0 t2 t3))))).(\lambda -(u0: T).(\lambda (t3: T).(\lambda (_: (ty3 g c0 u0 t3)).(\lambda (H3: -((\forall (t4: T).((sty0 g c0 u0 t4) \to (ty3 g c0 u0 t4))))).(\lambda (_: -(pc3 c0 t3 t2)).(\lambda (t0: T).(\lambda (H5: (sty0 g c0 u0 t0)).(H3 t0 -H5))))))))))))) (\lambda (c0: C).(\lambda (m: nat).(\lambda (t2: T).(\lambda -(H0: (sty0 g c0 (TSort m) t2)).(let H_y \def (sty0_gen_sort g c0 t2 m H0) in -(let H1 \def (f_equal T T (\lambda (e: T).e) t2 (TSort (next g m)) H_y) in -(eq_ind_r T (TSort (next g m)) (\lambda (t: T).(ty3 g c0 (TSort m) t)) -(ty3_sort g c0 m) t2 H1))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda -(d: C).(\lambda (u0: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abbr) -u0))).(\lambda (t: T).(\lambda (_: (ty3 g d u0 t)).(\lambda (H2: ((\forall -(t2: T).((sty0 g d u0 t2) \to (ty3 g d u0 t2))))).(\lambda (t2: T).(\lambda -(H3: (sty0 g c0 (TLRef n) t2)).(let H_x \def (sty0_gen_lref g c0 t2 n H3) in -(let H4 \def H_x in (or_ind (ex3_3 C T T (\lambda (e: C).(\lambda (u1: -T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: -C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: -C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) O t0)))))) (ex3_3 C -T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e -(Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g -e u1 t0)))) (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq T t2 (lift -(S n) O u1)))))) (ty3 g c0 (TLRef n) t2) (\lambda (H5: (ex3_3 C T T (\lambda +(ty3 g c u t1)).(let TMP_1 \def (\lambda (c0: C).(\lambda (t: T).(\lambda (_: +T).(\forall (t2: T).((sty0 g c0 t t2) \to (ty3 g c0 t t2)))))) in (let TMP_2 +\def (\lambda (c0: C).(\lambda (t2: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 +t2 t)).(\lambda (_: ((\forall (t3: T).((sty0 g c0 t2 t3) \to (ty3 g c0 t2 +t3))))).(\lambda (u0: T).(\lambda (t3: T).(\lambda (_: (ty3 g c0 u0 +t3)).(\lambda (H3: ((\forall (t4: T).((sty0 g c0 u0 t4) \to (ty3 g c0 u0 +t4))))).(\lambda (_: (pc3 c0 t3 t2)).(\lambda (t0: T).(\lambda (H5: (sty0 g +c0 u0 t0)).(H3 t0 H5))))))))))))) in (let TMP_11 \def (\lambda (c0: +C).(\lambda (m: nat).(\lambda (t2: T).(\lambda (H0: (sty0 g c0 (TSort m) +t2)).(let H_y \def (sty0_gen_sort g c0 t2 m H0) in (let TMP_3 \def (\lambda +(e: T).e) in (let TMP_4 \def (next g m) in (let TMP_5 \def (TSort TMP_4) in +(let H1 \def (f_equal T T TMP_3 t2 TMP_5 H_y) in (let TMP_6 \def (next g m) +in (let TMP_7 \def (TSort TMP_6) in (let TMP_9 \def (\lambda (t: T).(let +TMP_8 \def (TSort m) in (ty3 g c0 TMP_8 t))) in (let TMP_10 \def (ty3_sort g +c0 m) in (eq_ind_r T TMP_7 TMP_9 TMP_10 t2 H1)))))))))))))) in (let TMP_132 +\def (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: +T).(\lambda (H0: (getl n c0 (CHead d (Bind Abbr) u0))).(\lambda (t: +T).(\lambda (_: (ty3 g d u0 t)).(\lambda (H2: ((\forall (t2: T).((sty0 g d u0 +t2) \to (ty3 g d u0 t2))))).(\lambda (t2: T).(\lambda (H3: (sty0 g c0 (TLRef +n) t2)).(let H_x \def (sty0_gen_lref g c0 t2 n H3) in (let H4 \def H_x in +(let TMP_14 \def (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_12 +\def (Bind Abbr) in (let TMP_13 \def (CHead e TMP_12 u1) in (getl n c0 +TMP_13)))))) in (let TMP_15 \def (\lambda (e: C).(\lambda (u1: T).(\lambda +(t0: T).(sty0 g e u1 t0)))) in (let TMP_18 \def (\lambda (_: C).(\lambda (_: +T).(\lambda (t0: T).(let TMP_16 \def (S n) in (let TMP_17 \def (lift TMP_16 O +t0) in (eq T t2 TMP_17)))))) in (let TMP_19 \def (ex3_3 C T T TMP_14 TMP_15 +TMP_18) in (let TMP_22 \def (\lambda (e: C).(\lambda (u1: T).(\lambda (_: +T).(let TMP_20 \def (Bind Abst) in (let TMP_21 \def (CHead e TMP_20 u1) in +(getl n c0 TMP_21)))))) in (let TMP_23 \def (\lambda (e: C).(\lambda (u1: +T).(\lambda (t0: T).(sty0 g e u1 t0)))) in (let TMP_26 \def (\lambda (_: +C).(\lambda (u1: T).(\lambda (_: T).(let TMP_24 \def (S n) in (let TMP_25 +\def (lift TMP_24 O u1) in (eq T t2 TMP_25)))))) in (let TMP_27 \def (ex3_3 C +T T TMP_22 TMP_23 TMP_26) in (let TMP_28 \def (TLRef n) in (let TMP_29 \def +(ty3 g c0 TMP_28 t2) in (let TMP_88 \def (\lambda (H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) O -t0))))))).(ex3_3_ind C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: -T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: -T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (_: -T).(\lambda (t0: T).(eq T t2 (lift (S n) O t0))))) (ty3 g c0 (TLRef n) t2) -(\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H6: (getl n c0 -(CHead x0 (Bind Abbr) x1))).(\lambda (H7: (sty0 g x0 x1 x2)).(\lambda (H8: -(eq T t2 (lift (S n) O x2))).(let H9 \def (f_equal T T (\lambda (e: T).e) t2 -(lift (S n) O x2) H8) in (eq_ind_r T (lift (S n) O x2) (\lambda (t0: T).(ty3 -g c0 (TLRef n) t0)) (let H10 \def (eq_ind C (CHead d (Bind Abbr) u0) (\lambda -(c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d -(Bind Abbr) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in (let H11 \def (f_equal -C C (\lambda (e: C).(match e in C return (\lambda (_: C).C) with [(CSort _) -\Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) (CHead d (Bind Abbr) u0) -(CHead x0 (Bind Abbr) x1) (getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead -x0 (Bind Abbr) x1) H6)) in ((let H12 \def (f_equal C T (\lambda (e: C).(match -e in C return (\lambda (_: C).T) with [(CSort _) \Rightarrow u0 | (CHead _ _ -t0) \Rightarrow t0])) (CHead d (Bind Abbr) u0) (CHead x0 (Bind Abbr) x1) -(getl_mono c0 (CHead d (Bind Abbr) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in -(\lambda (H13: (eq C d x0)).(let H14 \def (eq_ind_r T x1 (\lambda (t0: -T).(getl n c0 (CHead x0 (Bind Abbr) t0))) H10 u0 H12) in (let H15 \def -(eq_ind_r T x1 (\lambda (t0: T).(sty0 g x0 t0 x2)) H7 u0 H12) in (let H16 -\def (eq_ind_r C x0 (\lambda (c1: C).(getl n c0 (CHead c1 (Bind Abbr) u0))) -H14 d H13) in (let H17 \def (eq_ind_r C x0 (\lambda (c1: C).(sty0 g c1 u0 -x2)) H15 d H13) in (ty3_abbr g n c0 d u0 H16 x2 (H2 x2 H17)))))))) H11))) t2 -H9)))))))) H5)) (\lambda (H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: -T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: -C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: -C).(\lambda (u1: T).(\lambda (_: T).(eq T t2 (lift (S n) O -u1))))))).(ex3_3_ind C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: -T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: -T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (u1: -T).(\lambda (_: T).(eq T t2 (lift (S n) O u1))))) (ty3 g c0 (TLRef n) t2) +t0))))))).(let TMP_32 \def (\lambda (e: C).(\lambda (u1: T).(\lambda (_: +T).(let TMP_30 \def (Bind Abbr) in (let TMP_31 \def (CHead e TMP_30 u1) in +(getl n c0 TMP_31)))))) in (let TMP_33 \def (\lambda (e: C).(\lambda (u1: +T).(\lambda (t0: T).(sty0 g e u1 t0)))) in (let TMP_36 \def (\lambda (_: +C).(\lambda (_: T).(\lambda (t0: T).(let TMP_34 \def (S n) in (let TMP_35 +\def (lift TMP_34 O t0) in (eq T t2 TMP_35)))))) in (let TMP_37 \def (TLRef +n) in (let TMP_38 \def (ty3 g c0 TMP_37 t2) in (let TMP_87 \def (\lambda (x0: +C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H6: (getl n c0 (CHead x0 (Bind +Abbr) x1))).(\lambda (H7: (sty0 g x0 x1 x2)).(\lambda (H8: (eq T t2 (lift (S +n) O x2))).(let TMP_39 \def (\lambda (e: T).e) in (let TMP_40 \def (S n) in +(let TMP_41 \def (lift TMP_40 O x2) in (let H9 \def (f_equal T T TMP_39 t2 +TMP_41 H8) in (let TMP_42 \def (S n) in (let TMP_43 \def (lift TMP_42 O x2) +in (let TMP_45 \def (\lambda (t0: T).(let TMP_44 \def (TLRef n) in (ty3 g c0 +TMP_44 t0))) in (let TMP_46 \def (Bind Abbr) in (let TMP_47 \def (CHead d +TMP_46 u0) in (let TMP_48 \def (\lambda (c1: C).(getl n c0 c1)) in (let +TMP_49 \def (Bind Abbr) in (let TMP_50 \def (CHead x0 TMP_49 x1) in (let +TMP_51 \def (Bind Abbr) in (let TMP_52 \def (CHead d TMP_51 u0) in (let +TMP_53 \def (Bind Abbr) in (let TMP_54 \def (CHead x0 TMP_53 x1) in (let +TMP_55 \def (getl_mono c0 TMP_52 n H0 TMP_54 H6) in (let H10 \def (eq_ind C +TMP_47 TMP_48 H0 TMP_50 TMP_55) in (let TMP_56 \def (\lambda (e: C).(match e +with [(CSort _) \Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) in (let +TMP_57 \def (Bind Abbr) in (let TMP_58 \def (CHead d TMP_57 u0) in (let +TMP_59 \def (Bind Abbr) in (let TMP_60 \def (CHead x0 TMP_59 x1) in (let +TMP_61 \def (Bind Abbr) in (let TMP_62 \def (CHead d TMP_61 u0) in (let +TMP_63 \def (Bind Abbr) in (let TMP_64 \def (CHead x0 TMP_63 x1) in (let +TMP_65 \def (getl_mono c0 TMP_62 n H0 TMP_64 H6) in (let H11 \def (f_equal C +C TMP_56 TMP_58 TMP_60 TMP_65) in (let TMP_66 \def (\lambda (e: C).(match e +with [(CSort _) \Rightarrow u0 | (CHead _ _ t0) \Rightarrow t0])) in (let +TMP_67 \def (Bind Abbr) in (let TMP_68 \def (CHead d TMP_67 u0) in (let +TMP_69 \def (Bind Abbr) in (let TMP_70 \def (CHead x0 TMP_69 x1) in (let +TMP_71 \def (Bind Abbr) in (let TMP_72 \def (CHead d TMP_71 u0) in (let +TMP_73 \def (Bind Abbr) in (let TMP_74 \def (CHead x0 TMP_73 x1) in (let +TMP_75 \def (getl_mono c0 TMP_72 n H0 TMP_74 H6) in (let H12 \def (f_equal C +T TMP_66 TMP_68 TMP_70 TMP_75) in (let TMP_85 \def (\lambda (H13: (eq C d +x0)).(let TMP_78 \def (\lambda (t0: T).(let TMP_76 \def (Bind Abbr) in (let +TMP_77 \def (CHead x0 TMP_76 t0) in (getl n c0 TMP_77)))) in (let H14 \def +(eq_ind_r T x1 TMP_78 H10 u0 H12) in (let TMP_79 \def (\lambda (t0: T).(sty0 +g x0 t0 x2)) in (let H15 \def (eq_ind_r T x1 TMP_79 H7 u0 H12) in (let TMP_82 +\def (\lambda (c1: C).(let TMP_80 \def (Bind Abbr) in (let TMP_81 \def (CHead +c1 TMP_80 u0) in (getl n c0 TMP_81)))) in (let H16 \def (eq_ind_r C x0 TMP_82 +H14 d H13) in (let TMP_83 \def (\lambda (c1: C).(sty0 g c1 u0 x2)) in (let +H17 \def (eq_ind_r C x0 TMP_83 H15 d H13) in (let TMP_84 \def (H2 x2 H17) in +(ty3_abbr g n c0 d u0 H16 x2 TMP_84))))))))))) in (let TMP_86 \def (TMP_85 +H11) in (eq_ind_r T TMP_43 TMP_45 TMP_86 t2 +H9))))))))))))))))))))))))))))))))))))))))))))))))) in (ex3_3_ind C T T +TMP_32 TMP_33 TMP_36 TMP_38 TMP_87 H5)))))))) in (let TMP_131 \def (\lambda +(H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 +(CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: +T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq T +t2 (lift (S n) O u1))))))).(let TMP_91 \def (\lambda (e: C).(\lambda (u1: +T).(\lambda (_: T).(let TMP_89 \def (Bind Abst) in (let TMP_90 \def (CHead e +TMP_89 u1) in (getl n c0 TMP_90)))))) in (let TMP_92 \def (\lambda (e: +C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 t0)))) in (let TMP_95 \def +(\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_93 \def (S n) in +(let TMP_94 \def (lift TMP_93 O u1) in (eq T t2 TMP_94)))))) in (let TMP_96 +\def (TLRef n) in (let TMP_97 \def (ty3 g c0 TMP_96 t2) in (let TMP_130 \def (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abst) x1))).(\lambda (_: (sty0 g x0 x1 x2)).(\lambda (H8: (eq -T t2 (lift (S n) O x1))).(let H9 \def (f_equal T T (\lambda (e: T).e) t2 -(lift (S n) O x1) H8) in (eq_ind_r T (lift (S n) O x1) (\lambda (t0: T).(ty3 -g c0 (TLRef n) t0)) (let H10 \def (eq_ind C (CHead d (Bind Abbr) u0) (\lambda -(c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d -(Bind Abbr) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in (let H11 \def (eq_ind -C (CHead d (Bind Abbr) u0) (\lambda (ee: C).(match ee in C return (\lambda -(_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow -(match k in K return (\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match -b in B return (\lambda (_: B).Prop) with [Abbr \Rightarrow True | Abst -\Rightarrow False | Void \Rightarrow False]) | (Flat _) \Rightarrow -False])])) I (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind Abbr) u0) -n H0 (CHead x0 (Bind Abst) x1) H6)) in (False_ind (ty3 g c0 (TLRef n) (lift -(S n) O x1)) H11))) t2 H9)))))))) H5)) H4))))))))))))) (\lambda (n: +T t2 (lift (S n) O x1))).(let TMP_98 \def (\lambda (e: T).e) in (let TMP_99 +\def (S n) in (let TMP_100 \def (lift TMP_99 O x1) in (let H9 \def (f_equal T +T TMP_98 t2 TMP_100 H8) in (let TMP_101 \def (S n) in (let TMP_102 \def (lift +TMP_101 O x1) in (let TMP_104 \def (\lambda (t0: T).(let TMP_103 \def (TLRef +n) in (ty3 g c0 TMP_103 t0))) in (let TMP_105 \def (Bind Abbr) in (let +TMP_106 \def (CHead d TMP_105 u0) in (let TMP_107 \def (\lambda (c1: C).(getl +n c0 c1)) in (let TMP_108 \def (Bind Abst) in (let TMP_109 \def (CHead x0 +TMP_108 x1) in (let TMP_110 \def (Bind Abbr) in (let TMP_111 \def (CHead d +TMP_110 u0) in (let TMP_112 \def (Bind Abst) in (let TMP_113 \def (CHead x0 +TMP_112 x1) in (let TMP_114 \def (getl_mono c0 TMP_111 n H0 TMP_113 H6) in +(let H10 \def (eq_ind C TMP_106 TMP_107 H0 TMP_109 TMP_114) in (let TMP_115 +\def (Bind Abbr) in (let TMP_116 \def (CHead d TMP_115 u0) in (let TMP_117 +\def (\lambda (ee: C).(match ee with [(CSort _) \Rightarrow False | (CHead _ +k _) \Rightarrow (match k with [(Bind b) \Rightarrow (match b with [Abbr +\Rightarrow True | Abst \Rightarrow False | Void \Rightarrow False]) | (Flat +_) \Rightarrow False])])) in (let TMP_118 \def (Bind Abst) in (let TMP_119 +\def (CHead x0 TMP_118 x1) in (let TMP_120 \def (Bind Abbr) in (let TMP_121 +\def (CHead d TMP_120 u0) in (let TMP_122 \def (Bind Abst) in (let TMP_123 +\def (CHead x0 TMP_122 x1) in (let TMP_124 \def (getl_mono c0 TMP_121 n H0 +TMP_123 H6) in (let H11 \def (eq_ind C TMP_116 TMP_117 I TMP_119 TMP_124) in +(let TMP_125 \def (TLRef n) in (let TMP_126 \def (S n) in (let TMP_127 \def +(lift TMP_126 O x1) in (let TMP_128 \def (ty3 g c0 TMP_125 TMP_127) in (let +TMP_129 \def (False_ind TMP_128 H11) in (eq_ind_r T TMP_102 TMP_104 TMP_129 +t2 H9))))))))))))))))))))))))))))))))))))))))) in (ex3_3_ind C T T TMP_91 +TMP_92 TMP_95 TMP_97 TMP_130 H5)))))))) in (or_ind TMP_19 TMP_27 TMP_29 +TMP_88 TMP_131 H4))))))))))))))))))))))))) in (let TMP_257 \def (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u0: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abst) u0))).(\lambda (t: T).(\lambda (H1: (ty3 g d u0 t)).(\lambda (_: ((\forall (t2: T).((sty0 g d u0 t2) \to (ty3 g d u0 t2))))).(\lambda (t2: T).(\lambda (H3: (sty0 g c0 (TLRef n) t2)).(let H_x -\def (sty0_gen_lref g c0 t2 n H3) in (let H4 \def H_x in (or_ind (ex3_3 C T T -(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind -Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 -t0)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) -O t0)))))) (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: +\def (sty0_gen_lref g c0 t2 n H3) in (let H4 \def H_x in (let TMP_135 \def +(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_133 \def (Bind +Abbr) in (let TMP_134 \def (CHead e TMP_133 u1) in (getl n c0 TMP_134)))))) +in (let TMP_136 \def (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 +g e u1 t0)))) in (let TMP_139 \def (\lambda (_: C).(\lambda (_: T).(\lambda +(t0: T).(let TMP_137 \def (S n) in (let TMP_138 \def (lift TMP_137 O t0) in +(eq T t2 TMP_138)))))) in (let TMP_140 \def (ex3_3 C T T TMP_135 TMP_136 +TMP_139) in (let TMP_143 \def (\lambda (e: C).(\lambda (u1: T).(\lambda (_: +T).(let TMP_141 \def (Bind Abst) in (let TMP_142 \def (CHead e TMP_141 u1) in +(getl n c0 TMP_142)))))) in (let TMP_144 \def (\lambda (e: C).(\lambda (u1: +T).(\lambda (t0: T).(sty0 g e u1 t0)))) in (let TMP_147 \def (\lambda (_: +C).(\lambda (u1: T).(\lambda (_: T).(let TMP_145 \def (S n) in (let TMP_146 +\def (lift TMP_145 O u1) in (eq T t2 TMP_146)))))) in (let TMP_148 \def +(ex3_3 C T T TMP_143 TMP_144 TMP_147) in (let TMP_149 \def (TLRef n) in (let +TMP_150 \def (ty3 g c0 TMP_149 t2) in (let TMP_193 \def (\lambda (H5: (ex3_3 +C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e +(Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g +e u1 t0)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift +(S n) O t0))))))).(let TMP_153 \def (\lambda (e: C).(\lambda (u1: T).(\lambda +(_: T).(let TMP_151 \def (Bind Abbr) in (let TMP_152 \def (CHead e TMP_151 +u1) in (getl n c0 TMP_152)))))) in (let TMP_154 \def (\lambda (e: C).(\lambda +(u1: T).(\lambda (t0: T).(sty0 g e u1 t0)))) in (let TMP_157 \def (\lambda +(_: C).(\lambda (_: T).(\lambda (t0: T).(let TMP_155 \def (S n) in (let +TMP_156 \def (lift TMP_155 O t0) in (eq T t2 TMP_156)))))) in (let TMP_158 +\def (TLRef n) in (let TMP_159 \def (ty3 g c0 TMP_158 t2) in (let TMP_192 +\def (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda (H6: (getl n +c0 (CHead x0 (Bind Abbr) x1))).(\lambda (_: (sty0 g x0 x1 x2)).(\lambda (H8: +(eq T t2 (lift (S n) O x2))).(let TMP_160 \def (\lambda (e: T).e) in (let +TMP_161 \def (S n) in (let TMP_162 \def (lift TMP_161 O x2) in (let H9 \def +(f_equal T T TMP_160 t2 TMP_162 H8) in (let TMP_163 \def (S n) in (let +TMP_164 \def (lift TMP_163 O x2) in (let TMP_166 \def (\lambda (t0: T).(let +TMP_165 \def (TLRef n) in (ty3 g c0 TMP_165 t0))) in (let TMP_167 \def (Bind +Abst) in (let TMP_168 \def (CHead d TMP_167 u0) in (let TMP_169 \def (\lambda +(c1: C).(getl n c0 c1)) in (let TMP_170 \def (Bind Abbr) in (let TMP_171 \def +(CHead x0 TMP_170 x1) in (let TMP_172 \def (Bind Abst) in (let TMP_173 \def +(CHead d TMP_172 u0) in (let TMP_174 \def (Bind Abbr) in (let TMP_175 \def +(CHead x0 TMP_174 x1) in (let TMP_176 \def (getl_mono c0 TMP_173 n H0 TMP_175 +H6) in (let H10 \def (eq_ind C TMP_168 TMP_169 H0 TMP_171 TMP_176) in (let +TMP_177 \def (Bind Abst) in (let TMP_178 \def (CHead d TMP_177 u0) in (let +TMP_179 \def (\lambda (ee: C).(match ee with [(CSort _) \Rightarrow False | +(CHead _ k _) \Rightarrow (match k with [(Bind b) \Rightarrow (match b with +[Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | +(Flat _) \Rightarrow False])])) in (let TMP_180 \def (Bind Abbr) in (let +TMP_181 \def (CHead x0 TMP_180 x1) in (let TMP_182 \def (Bind Abst) in (let +TMP_183 \def (CHead d TMP_182 u0) in (let TMP_184 \def (Bind Abbr) in (let +TMP_185 \def (CHead x0 TMP_184 x1) in (let TMP_186 \def (getl_mono c0 TMP_183 +n H0 TMP_185 H6) in (let H11 \def (eq_ind C TMP_178 TMP_179 I TMP_181 +TMP_186) in (let TMP_187 \def (TLRef n) in (let TMP_188 \def (S n) in (let +TMP_189 \def (lift TMP_188 O x2) in (let TMP_190 \def (ty3 g c0 TMP_187 +TMP_189) in (let TMP_191 \def (False_ind TMP_190 H11) in (eq_ind_r T TMP_164 +TMP_166 TMP_191 t2 H9))))))))))))))))))))))))))))))))))))))))) in (ex3_3_ind +C T T TMP_153 TMP_154 TMP_157 TMP_159 TMP_192 H5)))))))) in (let TMP_256 \def +(\lambda (H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (u1: -T).(\lambda (_: T).(eq T t2 (lift (S n) O u1)))))) (ty3 g c0 (TLRef n) t2) -(\lambda (H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: -T).(getl n c0 (CHead e (Bind Abbr) u1))))) (\lambda (e: C).(\lambda (u1: -T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (_: -T).(\lambda (t0: T).(eq T t2 (lift (S n) O t0))))))).(ex3_3_ind C T T -(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 (CHead e (Bind -Abbr) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 -t0)))) (\lambda (_: C).(\lambda (_: T).(\lambda (t0: T).(eq T t2 (lift (S n) -O t0))))) (ty3 g c0 (TLRef n) t2) (\lambda (x0: C).(\lambda (x1: T).(\lambda -(x2: T).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abbr) x1))).(\lambda (_: -(sty0 g x0 x1 x2)).(\lambda (H8: (eq T t2 (lift (S n) O x2))).(let H9 \def -(f_equal T T (\lambda (e: T).e) t2 (lift (S n) O x2) H8) in (eq_ind_r T (lift -(S n) O x2) (\lambda (t0: T).(ty3 g c0 (TLRef n) t0)) (let H10 \def (eq_ind C -(CHead d (Bind Abst) u0) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind -Abbr) x1) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abbr) -x1) H6)) in (let H11 \def (eq_ind C (CHead d (Bind Abst) u0) (\lambda (ee: -C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow -False | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).Prop) -with [(Bind b) \Rightarrow (match b in B return (\lambda (_: B).Prop) with -[Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | -(Flat _) \Rightarrow False])])) I (CHead x0 (Bind Abbr) x1) (getl_mono c0 -(CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abbr) x1) H6)) in (False_ind -(ty3 g c0 (TLRef n) (lift (S n) O x2)) H11))) t2 H9)))))))) H5)) (\lambda -(H5: (ex3_3 C T T (\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(getl n c0 -(CHead e (Bind Abst) u1))))) (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: -T).(sty0 g e u1 t0)))) (\lambda (_: C).(\lambda (u1: T).(\lambda (_: T).(eq T -t2 (lift (S n) O u1))))))).(ex3_3_ind C T T (\lambda (e: C).(\lambda (u1: -T).(\lambda (_: T).(getl n c0 (CHead e (Bind Abst) u1))))) (\lambda (e: -C).(\lambda (u1: T).(\lambda (t0: T).(sty0 g e u1 t0)))) (\lambda (_: -C).(\lambda (u1: T).(\lambda (_: T).(eq T t2 (lift (S n) O u1))))) (ty3 g c0 -(TLRef n) t2) (\lambda (x0: C).(\lambda (x1: T).(\lambda (x2: T).(\lambda -(H6: (getl n c0 (CHead x0 (Bind Abst) x1))).(\lambda (H7: (sty0 g x0 x1 -x2)).(\lambda (H8: (eq T t2 (lift (S n) O x1))).(let H9 \def (f_equal T T -(\lambda (e: T).e) t2 (lift (S n) O x1) H8) in (eq_ind_r T (lift (S n) O x1) -(\lambda (t0: T).(ty3 g c0 (TLRef n) t0)) (let H10 \def (eq_ind C (CHead d -(Bind Abst) u0) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead x0 (Bind Abst) x1) -(getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in -(let H11 \def (f_equal C C (\lambda (e: C).(match e in C return (\lambda (_: -C).C) with [(CSort _) \Rightarrow d | (CHead c1 _ _) \Rightarrow c1])) (CHead -d (Bind Abst) u0) (CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind -Abst) u0) n H0 (CHead x0 (Bind Abst) x1) H6)) in ((let H12 \def (f_equal C T -(\lambda (e: C).(match e in C return (\lambda (_: C).T) with [(CSort _) -\Rightarrow u0 | (CHead _ _ t0) \Rightarrow t0])) (CHead d (Bind Abst) u0) -(CHead x0 (Bind Abst) x1) (getl_mono c0 (CHead d (Bind Abst) u0) n H0 (CHead -x0 (Bind Abst) x1) H6)) in (\lambda (H13: (eq C d x0)).(let H14 \def -(eq_ind_r T x1 (\lambda (t0: T).(getl n c0 (CHead x0 (Bind Abst) t0))) H10 u0 -H12) in (let H15 \def (eq_ind_r T x1 (\lambda (t0: T).(sty0 g x0 t0 x2)) H7 -u0 H12) in (eq_ind T u0 (\lambda (t0: T).(ty3 g c0 (TLRef n) (lift (S n) O -t0))) (let H16 \def (eq_ind_r C x0 (\lambda (c1: C).(getl n c0 (CHead c1 -(Bind Abst) u0))) H14 d H13) in (let H17 \def (eq_ind_r C x0 (\lambda (c1: -C).(sty0 g c1 u0 x2)) H15 d H13) in (ty3_abst g n c0 d u0 H16 t H1))) x1 -H12))))) H11))) t2 H9)))))))) H5)) H4))))))))))))) (\lambda (c0: C).(\lambda -(u0: T).(\lambda (t: T).(\lambda (H0: (ty3 g c0 u0 t)).(\lambda (_: ((\forall -(t2: T).((sty0 g c0 u0 t2) \to (ty3 g c0 u0 t2))))).(\lambda (b: B).(\lambda -(t2: T).(\lambda (t3: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u0) t2 -t3)).(\lambda (H3: ((\forall (t4: T).((sty0 g (CHead c0 (Bind b) u0) t2 t4) -\to (ty3 g (CHead c0 (Bind b) u0) t2 t4))))).(\lambda (t0: T).(\lambda (H4: -(sty0 g c0 (THead (Bind b) u0 t2) t0)).(let H_x \def (sty0_gen_bind g b c0 u0 -t2 t0 H4) in (let H5 \def H_x in (ex2_ind T (\lambda (t4: T).(sty0 g (CHead -c0 (Bind b) u0) t2 t4)) (\lambda (t4: T).(eq T t0 (THead (Bind b) u0 t4))) -(ty3 g c0 (THead (Bind b) u0 t2) t0) (\lambda (x: T).(\lambda (H6: (sty0 g -(CHead c0 (Bind b) u0) t2 x)).(\lambda (H7: (eq T t0 (THead (Bind b) u0 -x))).(let H8 \def (f_equal T T (\lambda (e: T).e) t0 (THead (Bind b) u0 x) -H7) in (eq_ind_r T (THead (Bind b) u0 x) (\lambda (t4: T).(ty3 g c0 (THead -(Bind b) u0 t2) t4)) (ty3_bind g c0 u0 t H0 b t2 x (H3 x H6)) t0 H8))))) -H5))))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda (u0: T).(\lambda -(H0: (ty3 g c0 w u0)).(\lambda (_: ((\forall (t2: T).((sty0 g c0 w t2) \to -(ty3 g c0 w t2))))).(\lambda (v: T).(\lambda (t: T).(\lambda (H2: (ty3 g c0 v -(THead (Bind Abst) u0 t))).(\lambda (H3: ((\forall (t2: T).((sty0 g c0 v t2) -\to (ty3 g c0 v t2))))).(\lambda (t2: T).(\lambda (H4: (sty0 g c0 (THead -(Flat Appl) w v) t2)).(let H_x \def (sty0_gen_appl g c0 w v t2 H4) in (let H5 -\def H_x in (ex2_ind T (\lambda (t3: T).(sty0 g c0 v t3)) (\lambda (t3: -T).(eq T t2 (THead (Flat Appl) w t3))) (ty3 g c0 (THead (Flat Appl) w v) t2) -(\lambda (x: T).(\lambda (H6: (sty0 g c0 v x)).(\lambda (H7: (eq T t2 (THead -(Flat Appl) w x))).(let H8 \def (f_equal T T (\lambda (e: T).e) t2 (THead -(Flat Appl) w x) H7) in (eq_ind_r T (THead (Flat Appl) w x) (\lambda (t0: -T).(ty3 g c0 (THead (Flat Appl) w v) t0)) (let H_y \def (H3 x H6) in (let H9 -\def (ty3_unique g c0 v x H_y (THead (Bind Abst) u0 t) H2) in (ex_ind T -(\lambda (t0: T).(ty3 g c0 x t0)) (ty3 g c0 (THead (Flat Appl) w v) (THead -(Flat Appl) w x)) (\lambda (x0: T).(\lambda (H10: (ty3 g c0 x x0)).(ex_ind T -(\lambda (t0: T).(ty3 g c0 u0 t0)) (ty3 g c0 (THead (Flat Appl) w v) (THead -(Flat Appl) w x)) (\lambda (x1: T).(\lambda (_: (ty3 g c0 u0 x1)).(ex_ind T -(\lambda (t0: T).(ty3 g c0 (THead (Bind Abst) u0 t) t0)) (ty3 g c0 (THead -(Flat Appl) w v) (THead (Flat Appl) w x)) (\lambda (x2: T).(\lambda (H12: -(ty3 g c0 (THead (Bind Abst) u0 t) x2)).(ex3_2_ind T T (\lambda (t3: -T).(\lambda (_: T).(pc3 c0 (THead (Bind Abst) u0 t3) x2))) (\lambda (_: -T).(\lambda (t0: T).(ty3 g c0 u0 t0))) (\lambda (t3: T).(\lambda (_: T).(ty3 -g (CHead c0 (Bind Abst) u0) t t3))) (ty3 g c0 (THead (Flat Appl) w v) (THead -(Flat Appl) w x)) (\lambda (x3: T).(\lambda (x4: T).(\lambda (_: (pc3 c0 -(THead (Bind Abst) u0 x3) x2)).(\lambda (H14: (ty3 g c0 u0 x4)).(\lambda -(H15: (ty3 g (CHead c0 (Bind Abst) u0) t x3)).(ty3_conv g c0 (THead (Flat -Appl) w x) (THead (Flat Appl) w (THead (Bind Abst) u0 x3)) (ty3_appl g c0 w -u0 H0 x x3 (ty3_sconv g c0 x x0 H10 (THead (Bind Abst) u0 t) (THead (Bind -Abst) u0 x3) (ty3_bind g c0 u0 x4 H14 Abst t x3 H15) H9)) (THead (Flat Appl) -w v) (THead (Flat Appl) w (THead (Bind Abst) u0 t)) (ty3_appl g c0 w u0 H0 v -t H2) (pc3_thin_dx c0 (THead (Bind Abst) u0 t) x (ty3_unique g c0 v (THead -(Bind Abst) u0 t) H2 x H_y) w Appl))))))) (ty3_gen_bind g Abst c0 u0 t x2 -H12)))) (ty3_correct g c0 v (THead (Bind Abst) u0 t) H2)))) (ty3_correct g c0 -w u0 H0)))) (ty3_correct g c0 v x H_y)))) t2 H8))))) H5)))))))))))))) -(\lambda (c0: C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: (ty3 g c0 t2 +T).(\lambda (_: T).(eq T t2 (lift (S n) O u1))))))).(let TMP_196 \def +(\lambda (e: C).(\lambda (u1: T).(\lambda (_: T).(let TMP_194 \def (Bind +Abst) in (let TMP_195 \def (CHead e TMP_194 u1) in (getl n c0 TMP_195)))))) +in (let TMP_197 \def (\lambda (e: C).(\lambda (u1: T).(\lambda (t0: T).(sty0 +g e u1 t0)))) in (let TMP_200 \def (\lambda (_: C).(\lambda (u1: T).(\lambda +(_: T).(let TMP_198 \def (S n) in (let TMP_199 \def (lift TMP_198 O u1) in +(eq T t2 TMP_199)))))) in (let TMP_201 \def (TLRef n) in (let TMP_202 \def +(ty3 g c0 TMP_201 t2) in (let TMP_255 \def (\lambda (x0: C).(\lambda (x1: +T).(\lambda (x2: T).(\lambda (H6: (getl n c0 (CHead x0 (Bind Abst) +x1))).(\lambda (H7: (sty0 g x0 x1 x2)).(\lambda (H8: (eq T t2 (lift (S n) O +x1))).(let TMP_203 \def (\lambda (e: T).e) in (let TMP_204 \def (S n) in (let +TMP_205 \def (lift TMP_204 O x1) in (let H9 \def (f_equal T T TMP_203 t2 +TMP_205 H8) in (let TMP_206 \def (S n) in (let TMP_207 \def (lift TMP_206 O +x1) in (let TMP_209 \def (\lambda (t0: T).(let TMP_208 \def (TLRef n) in (ty3 +g c0 TMP_208 t0))) in (let TMP_210 \def (Bind Abst) in (let TMP_211 \def +(CHead d TMP_210 u0) in (let TMP_212 \def (\lambda (c1: C).(getl n c0 c1)) in +(let TMP_213 \def (Bind Abst) in (let TMP_214 \def (CHead x0 TMP_213 x1) in +(let TMP_215 \def (Bind Abst) in (let TMP_216 \def (CHead d TMP_215 u0) in +(let TMP_217 \def (Bind Abst) in (let TMP_218 \def (CHead x0 TMP_217 x1) in +(let TMP_219 \def (getl_mono c0 TMP_216 n H0 TMP_218 H6) in (let H10 \def +(eq_ind C TMP_211 TMP_212 H0 TMP_214 TMP_219) in (let TMP_220 \def (\lambda +(e: C).(match e with [(CSort _) \Rightarrow d | (CHead c1 _ _) \Rightarrow +c1])) in (let TMP_221 \def (Bind Abst) in (let TMP_222 \def (CHead d TMP_221 +u0) in (let TMP_223 \def (Bind Abst) in (let TMP_224 \def (CHead x0 TMP_223 +x1) in (let TMP_225 \def (Bind Abst) in (let TMP_226 \def (CHead d TMP_225 +u0) in (let TMP_227 \def (Bind Abst) in (let TMP_228 \def (CHead x0 TMP_227 +x1) in (let TMP_229 \def (getl_mono c0 TMP_226 n H0 TMP_228 H6) in (let H11 +\def (f_equal C C TMP_220 TMP_222 TMP_224 TMP_229) in (let TMP_230 \def +(\lambda (e: C).(match e with [(CSort _) \Rightarrow u0 | (CHead _ _ t0) +\Rightarrow t0])) in (let TMP_231 \def (Bind Abst) in (let TMP_232 \def +(CHead d TMP_231 u0) in (let TMP_233 \def (Bind Abst) in (let TMP_234 \def +(CHead x0 TMP_233 x1) in (let TMP_235 \def (Bind Abst) in (let TMP_236 \def +(CHead d TMP_235 u0) in (let TMP_237 \def (Bind Abst) in (let TMP_238 \def +(CHead x0 TMP_237 x1) in (let TMP_239 \def (getl_mono c0 TMP_236 n H0 TMP_238 +H6) in (let H12 \def (f_equal C T TMP_230 TMP_232 TMP_234 TMP_239) in (let +TMP_253 \def (\lambda (H13: (eq C d x0)).(let TMP_242 \def (\lambda (t0: +T).(let TMP_240 \def (Bind Abst) in (let TMP_241 \def (CHead x0 TMP_240 t0) +in (getl n c0 TMP_241)))) in (let H14 \def (eq_ind_r T x1 TMP_242 H10 u0 H12) +in (let TMP_243 \def (\lambda (t0: T).(sty0 g x0 t0 x2)) in (let H15 \def +(eq_ind_r T x1 TMP_243 H7 u0 H12) in (let TMP_247 \def (\lambda (t0: T).(let +TMP_244 \def (TLRef n) in (let TMP_245 \def (S n) in (let TMP_246 \def (lift +TMP_245 O t0) in (ty3 g c0 TMP_244 TMP_246))))) in (let TMP_250 \def (\lambda +(c1: C).(let TMP_248 \def (Bind Abst) in (let TMP_249 \def (CHead c1 TMP_248 +u0) in (getl n c0 TMP_249)))) in (let H16 \def (eq_ind_r C x0 TMP_250 H14 d +H13) in (let TMP_251 \def (\lambda (c1: C).(sty0 g c1 u0 x2)) in (let H17 +\def (eq_ind_r C x0 TMP_251 H15 d H13) in (let TMP_252 \def (ty3_abst g n c0 +d u0 H16 t H1) in (eq_ind T u0 TMP_247 TMP_252 x1 H12)))))))))))) in (let +TMP_254 \def (TMP_253 H11) in (eq_ind_r T TMP_207 TMP_209 TMP_254 t2 +H9))))))))))))))))))))))))))))))))))))))))))))))))) in (ex3_3_ind C T T +TMP_196 TMP_197 TMP_200 TMP_202 TMP_255 H5)))))))) in (or_ind TMP_140 TMP_148 +TMP_150 TMP_193 TMP_256 H4))))))))))))))))))))))))) in (let TMP_278 \def +(\lambda (c0: C).(\lambda (u0: T).(\lambda (t: T).(\lambda (H0: (ty3 g c0 u0 +t)).(\lambda (_: ((\forall (t2: T).((sty0 g c0 u0 t2) \to (ty3 g c0 u0 +t2))))).(\lambda (b: B).(\lambda (t2: T).(\lambda (t3: T).(\lambda (_: (ty3 g +(CHead c0 (Bind b) u0) t2 t3)).(\lambda (H3: ((\forall (t4: T).((sty0 g +(CHead c0 (Bind b) u0) t2 t4) \to (ty3 g (CHead c0 (Bind b) u0) t2 +t4))))).(\lambda (t0: T).(\lambda (H4: (sty0 g c0 (THead (Bind b) u0 t2) +t0)).(let H_x \def (sty0_gen_bind g b c0 u0 t2 t0 H4) in (let H5 \def H_x in +(let TMP_260 \def (\lambda (t4: T).(let TMP_258 \def (Bind b) in (let TMP_259 +\def (CHead c0 TMP_258 u0) in (sty0 g TMP_259 t2 t4)))) in (let TMP_263 \def +(\lambda (t4: T).(let TMP_261 \def (Bind b) in (let TMP_262 \def (THead +TMP_261 u0 t4) in (eq T t0 TMP_262)))) in (let TMP_264 \def (Bind b) in (let +TMP_265 \def (THead TMP_264 u0 t2) in (let TMP_266 \def (ty3 g c0 TMP_265 t0) +in (let TMP_277 \def (\lambda (x: T).(\lambda (H6: (sty0 g (CHead c0 (Bind b) +u0) t2 x)).(\lambda (H7: (eq T t0 (THead (Bind b) u0 x))).(let TMP_267 \def +(\lambda (e: T).e) in (let TMP_268 \def (Bind b) in (let TMP_269 \def (THead +TMP_268 u0 x) in (let H8 \def (f_equal T T TMP_267 t0 TMP_269 H7) in (let +TMP_270 \def (Bind b) in (let TMP_271 \def (THead TMP_270 u0 x) in (let +TMP_274 \def (\lambda (t4: T).(let TMP_272 \def (Bind b) in (let TMP_273 \def +(THead TMP_272 u0 t2) in (ty3 g c0 TMP_273 t4)))) in (let TMP_275 \def (H3 x +H6) in (let TMP_276 \def (ty3_bind g c0 u0 t H0 b t2 x TMP_275) in (eq_ind_r +T TMP_271 TMP_274 TMP_276 t0 H8))))))))))))) in (ex2_ind T TMP_260 TMP_263 +TMP_266 TMP_277 H5))))))))))))))))))))) in (let TMP_366 \def (\lambda (c0: +C).(\lambda (w: T).(\lambda (u0: T).(\lambda (H0: (ty3 g c0 w u0)).(\lambda +(_: ((\forall (t2: T).((sty0 g c0 w t2) \to (ty3 g c0 w t2))))).(\lambda (v: +T).(\lambda (t: T).(\lambda (H2: (ty3 g c0 v (THead (Bind Abst) u0 +t))).(\lambda (H3: ((\forall (t2: T).((sty0 g c0 v t2) \to (ty3 g c0 v +t2))))).(\lambda (t2: T).(\lambda (H4: (sty0 g c0 (THead (Flat Appl) w v) +t2)).(let H_x \def (sty0_gen_appl g c0 w v t2 H4) in (let H5 \def H_x in (let +TMP_279 \def (\lambda (t3: T).(sty0 g c0 v t3)) in (let TMP_282 \def (\lambda +(t3: T).(let TMP_280 \def (Flat Appl) in (let TMP_281 \def (THead TMP_280 w +t3) in (eq T t2 TMP_281)))) in (let TMP_283 \def (Flat Appl) in (let TMP_284 +\def (THead TMP_283 w v) in (let TMP_285 \def (ty3 g c0 TMP_284 t2) in (let +TMP_365 \def (\lambda (x: T).(\lambda (H6: (sty0 g c0 v x)).(\lambda (H7: (eq +T t2 (THead (Flat Appl) w x))).(let TMP_286 \def (\lambda (e: T).e) in (let +TMP_287 \def (Flat Appl) in (let TMP_288 \def (THead TMP_287 w x) in (let H8 +\def (f_equal T T TMP_286 t2 TMP_288 H7) in (let TMP_289 \def (Flat Appl) in +(let TMP_290 \def (THead TMP_289 w x) in (let TMP_293 \def (\lambda (t0: +T).(let TMP_291 \def (Flat Appl) in (let TMP_292 \def (THead TMP_291 w v) in +(ty3 g c0 TMP_292 t0)))) in (let H_y \def (H3 x H6) in (let TMP_294 \def +(Bind Abst) in (let TMP_295 \def (THead TMP_294 u0 t) in (let H9 \def +(ty3_unique g c0 v x H_y TMP_295 H2) in (let TMP_296 \def (\lambda (t0: +T).(ty3 g c0 x t0)) in (let TMP_297 \def (Flat Appl) in (let TMP_298 \def +(THead TMP_297 w v) in (let TMP_299 \def (Flat Appl) in (let TMP_300 \def +(THead TMP_299 w x) in (let TMP_301 \def (ty3 g c0 TMP_298 TMP_300) in (let +TMP_362 \def (\lambda (x0: T).(\lambda (H10: (ty3 g c0 x x0)).(let TMP_302 +\def (\lambda (t0: T).(ty3 g c0 u0 t0)) in (let TMP_303 \def (Flat Appl) in +(let TMP_304 \def (THead TMP_303 w v) in (let TMP_305 \def (Flat Appl) in +(let TMP_306 \def (THead TMP_305 w x) in (let TMP_307 \def (ty3 g c0 TMP_304 +TMP_306) in (let TMP_360 \def (\lambda (x1: T).(\lambda (_: (ty3 g c0 u0 +x1)).(let TMP_310 \def (\lambda (t0: T).(let TMP_308 \def (Bind Abst) in (let +TMP_309 \def (THead TMP_308 u0 t) in (ty3 g c0 TMP_309 t0)))) in (let TMP_311 +\def (Flat Appl) in (let TMP_312 \def (THead TMP_311 w v) in (let TMP_313 +\def (Flat Appl) in (let TMP_314 \def (THead TMP_313 w x) in (let TMP_315 +\def (ty3 g c0 TMP_312 TMP_314) in (let TMP_356 \def (\lambda (x2: +T).(\lambda (H12: (ty3 g c0 (THead (Bind Abst) u0 t) x2)).(let TMP_318 \def +(\lambda (t3: T).(\lambda (_: T).(let TMP_316 \def (Bind Abst) in (let +TMP_317 \def (THead TMP_316 u0 t3) in (pc3 c0 TMP_317 x2))))) in (let TMP_319 +\def (\lambda (_: T).(\lambda (t0: T).(ty3 g c0 u0 t0))) in (let TMP_322 \def +(\lambda (t3: T).(\lambda (_: T).(let TMP_320 \def (Bind Abst) in (let +TMP_321 \def (CHead c0 TMP_320 u0) in (ty3 g TMP_321 t t3))))) in (let +TMP_323 \def (Flat Appl) in (let TMP_324 \def (THead TMP_323 w v) in (let +TMP_325 \def (Flat Appl) in (let TMP_326 \def (THead TMP_325 w x) in (let +TMP_327 \def (ty3 g c0 TMP_324 TMP_326) in (let TMP_354 \def (\lambda (x3: +T).(\lambda (x4: T).(\lambda (_: (pc3 c0 (THead (Bind Abst) u0 x3) +x2)).(\lambda (H14: (ty3 g c0 u0 x4)).(\lambda (H15: (ty3 g (CHead c0 (Bind +Abst) u0) t x3)).(let TMP_328 \def (Flat Appl) in (let TMP_329 \def (THead +TMP_328 w x) in (let TMP_330 \def (Flat Appl) in (let TMP_331 \def (Bind +Abst) in (let TMP_332 \def (THead TMP_331 u0 x3) in (let TMP_333 \def (THead +TMP_330 w TMP_332) in (let TMP_334 \def (Bind Abst) in (let TMP_335 \def +(THead TMP_334 u0 t) in (let TMP_336 \def (Bind Abst) in (let TMP_337 \def +(THead TMP_336 u0 x3) in (let TMP_338 \def (ty3_bind g c0 u0 x4 H14 Abst t x3 +H15) in (let TMP_339 \def (ty3_sconv g c0 x x0 H10 TMP_335 TMP_337 TMP_338 +H9) in (let TMP_340 \def (ty3_appl g c0 w u0 H0 x x3 TMP_339) in (let TMP_341 +\def (Flat Appl) in (let TMP_342 \def (THead TMP_341 w v) in (let TMP_343 +\def (Flat Appl) in (let TMP_344 \def (Bind Abst) in (let TMP_345 \def (THead +TMP_344 u0 t) in (let TMP_346 \def (THead TMP_343 w TMP_345) in (let TMP_347 +\def (ty3_appl g c0 w u0 H0 v t H2) in (let TMP_348 \def (Bind Abst) in (let +TMP_349 \def (THead TMP_348 u0 t) in (let TMP_350 \def (Bind Abst) in (let +TMP_351 \def (THead TMP_350 u0 t) in (let TMP_352 \def (ty3_unique g c0 v +TMP_351 H2 x H_y) in (let TMP_353 \def (pc3_thin_dx c0 TMP_349 x TMP_352 w +Appl) in (ty3_conv g c0 TMP_329 TMP_333 TMP_340 TMP_342 TMP_346 TMP_347 +TMP_353)))))))))))))))))))))))))))))))) in (let TMP_355 \def (ty3_gen_bind g +Abst c0 u0 t x2 H12) in (ex3_2_ind T T TMP_318 TMP_319 TMP_322 TMP_327 +TMP_354 TMP_355))))))))))))) in (let TMP_357 \def (Bind Abst) in (let TMP_358 +\def (THead TMP_357 u0 t) in (let TMP_359 \def (ty3_correct g c0 v TMP_358 +H2) in (ex_ind T TMP_310 TMP_315 TMP_356 TMP_359))))))))))))) in (let TMP_361 +\def (ty3_correct g c0 w u0 H0) in (ex_ind T TMP_302 TMP_307 TMP_360 +TMP_361))))))))))) in (let TMP_363 \def (ty3_correct g c0 v x H_y) in (let +TMP_364 \def (ex_ind T TMP_296 TMP_301 TMP_362 TMP_363) in (eq_ind_r T +TMP_290 TMP_293 TMP_364 t2 H8)))))))))))))))))))))))) in (ex2_ind T TMP_279 +TMP_282 TMP_285 TMP_365 H5)))))))))))))))))))) in (let TMP_414 \def (\lambda +(c0: C).(\lambda (t2: T).(\lambda (t3: T).(\lambda (H0: (ty3 g c0 t2 t3)).(\lambda (H1: ((\forall (t4: T).((sty0 g c0 t2 t4) \to (ty3 g c0 t2 t4))))).(\lambda (t0: T).(\lambda (_: (ty3 g c0 t3 t0)).(\lambda (H3: ((\forall (t4: T).((sty0 g c0 t3 t4) \to (ty3 g c0 t3 t4))))).(\lambda (t4: T).(\lambda (H4: (sty0 g c0 (THead (Flat Cast) t3 t2) t4)).(let H_x \def -(sty0_gen_cast g c0 t3 t2 t4 H4) in (let H5 \def H_x in (ex3_2_ind T T -(\lambda (v2: T).(\lambda (_: T).(sty0 g c0 t3 v2))) (\lambda (_: T).(\lambda -(t5: T).(sty0 g c0 t2 t5))) (\lambda (v2: T).(\lambda (t5: T).(eq T t4 (THead -(Flat Cast) v2 t5)))) (ty3 g c0 (THead (Flat Cast) t3 t2) t4) (\lambda (x0: -T).(\lambda (x1: T).(\lambda (H6: (sty0 g c0 t3 x0)).(\lambda (H7: (sty0 g c0 -t2 x1)).(\lambda (H8: (eq T t4 (THead (Flat Cast) x0 x1))).(let H9 \def -(f_equal T T (\lambda (e: T).e) t4 (THead (Flat Cast) x0 x1) H8) in (eq_ind_r -T (THead (Flat Cast) x0 x1) (\lambda (t: T).(ty3 g c0 (THead (Flat Cast) t3 -t2) t)) (let H_y \def (H1 x1 H7) in (let H_y0 \def (H3 x0 H6) in (let H10 -\def (ty3_unique g c0 t2 x1 H_y t3 H0) in (ex_ind T (\lambda (t: T).(ty3 g c0 -x0 t)) (ty3 g c0 (THead (Flat Cast) t3 t2) (THead (Flat Cast) x0 x1)) -(\lambda (x: T).(\lambda (H11: (ty3 g c0 x0 x)).(ex_ind T (\lambda (t: -T).(ty3 g c0 x1 t)) (ty3 g c0 (THead (Flat Cast) t3 t2) (THead (Flat Cast) x0 -x1)) (\lambda (x2: T).(\lambda (H12: (ty3 g c0 x1 x2)).(ty3_conv g c0 (THead -(Flat Cast) x0 x1) (THead (Flat Cast) x x0) (ty3_cast g c0 x1 x0 (ty3_sconv g -c0 x1 x2 H12 t3 x0 H_y0 H10) x H11) (THead (Flat Cast) t3 t2) (THead (Flat -Cast) x0 t3) (ty3_cast g c0 t2 t3 H0 x0 H_y0) (pc3_thin_dx c0 t3 x1 -(ty3_unique g c0 t2 t3 H0 x1 H_y) x0 Cast)))) (ty3_correct g c0 t2 x1 H_y)))) -(ty3_correct g c0 t3 x0 H_y0))))) t4 H9))))))) H5))))))))))))) c u t1 H))))). -(* COMMENTS -Initial nodes: 4539 -END *) +(sty0_gen_cast g c0 t3 t2 t4 H4) in (let H5 \def H_x in (let TMP_367 \def +(\lambda (v2: T).(\lambda (_: T).(sty0 g c0 t3 v2))) in (let TMP_368 \def +(\lambda (_: T).(\lambda (t5: T).(sty0 g c0 t2 t5))) in (let TMP_371 \def +(\lambda (v2: T).(\lambda (t5: T).(let TMP_369 \def (Flat Cast) in (let +TMP_370 \def (THead TMP_369 v2 t5) in (eq T t4 TMP_370))))) in (let TMP_372 +\def (Flat Cast) in (let TMP_373 \def (THead TMP_372 t3 t2) in (let TMP_374 +\def (ty3 g c0 TMP_373 t4) in (let TMP_413 \def (\lambda (x0: T).(\lambda +(x1: T).(\lambda (H6: (sty0 g c0 t3 x0)).(\lambda (H7: (sty0 g c0 t2 +x1)).(\lambda (H8: (eq T t4 (THead (Flat Cast) x0 x1))).(let TMP_375 \def +(\lambda (e: T).e) in (let TMP_376 \def (Flat Cast) in (let TMP_377 \def +(THead TMP_376 x0 x1) in (let H9 \def (f_equal T T TMP_375 t4 TMP_377 H8) in +(let TMP_378 \def (Flat Cast) in (let TMP_379 \def (THead TMP_378 x0 x1) in +(let TMP_382 \def (\lambda (t: T).(let TMP_380 \def (Flat Cast) in (let +TMP_381 \def (THead TMP_380 t3 t2) in (ty3 g c0 TMP_381 t)))) in (let H_y +\def (H1 x1 H7) in (let H_y0 \def (H3 x0 H6) in (let H10 \def (ty3_unique g +c0 t2 x1 H_y t3 H0) in (let TMP_383 \def (\lambda (t: T).(ty3 g c0 x0 t)) in +(let TMP_384 \def (Flat Cast) in (let TMP_385 \def (THead TMP_384 t3 t2) in +(let TMP_386 \def (Flat Cast) in (let TMP_387 \def (THead TMP_386 x0 x1) in +(let TMP_388 \def (ty3 g c0 TMP_385 TMP_387) in (let TMP_410 \def (\lambda +(x: T).(\lambda (H11: (ty3 g c0 x0 x)).(let TMP_389 \def (\lambda (t: T).(ty3 +g c0 x1 t)) in (let TMP_390 \def (Flat Cast) in (let TMP_391 \def (THead +TMP_390 t3 t2) in (let TMP_392 \def (Flat Cast) in (let TMP_393 \def (THead +TMP_392 x0 x1) in (let TMP_394 \def (ty3 g c0 TMP_391 TMP_393) in (let +TMP_408 \def (\lambda (x2: T).(\lambda (H12: (ty3 g c0 x1 x2)).(let TMP_395 +\def (Flat Cast) in (let TMP_396 \def (THead TMP_395 x0 x1) in (let TMP_397 +\def (Flat Cast) in (let TMP_398 \def (THead TMP_397 x x0) in (let TMP_399 +\def (ty3_sconv g c0 x1 x2 H12 t3 x0 H_y0 H10) in (let TMP_400 \def (ty3_cast +g c0 x1 x0 TMP_399 x H11) in (let TMP_401 \def (Flat Cast) in (let TMP_402 +\def (THead TMP_401 t3 t2) in (let TMP_403 \def (Flat Cast) in (let TMP_404 +\def (THead TMP_403 x0 t3) in (let TMP_405 \def (ty3_cast g c0 t2 t3 H0 x0 +H_y0) in (let TMP_406 \def (ty3_unique g c0 t2 t3 H0 x1 H_y) in (let TMP_407 +\def (pc3_thin_dx c0 t3 x1 TMP_406 x0 Cast) in (ty3_conv g c0 TMP_396 TMP_398 +TMP_400 TMP_402 TMP_404 TMP_405 TMP_407)))))))))))))))) in (let TMP_409 \def +(ty3_correct g c0 t2 x1 H_y) in (ex_ind T TMP_389 TMP_394 TMP_408 +TMP_409))))))))))) in (let TMP_411 \def (ty3_correct g c0 t3 x0 H_y0) in (let +TMP_412 \def (ex_ind T TMP_383 TMP_388 TMP_410 TMP_411) in (eq_ind_r T +TMP_379 TMP_382 TMP_412 t4 H9))))))))))))))))))))))))) in (ex3_2_ind T T +TMP_367 TMP_368 TMP_371 TMP_374 TMP_413 H5)))))))))))))))))))) in (ty3_ind g +TMP_1 TMP_2 TMP_11 TMP_132 TMP_257 TMP_278 TMP_366 TMP_414 c u t1 +H))))))))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/ty3/subst1.ma b/matita/matita/contribs/lambdadelta/basic_1/ty3/subst1.ma index ca9516e58..6d0f4d55f 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/ty3/subst1.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/ty3/subst1.ma @@ -14,11 +14,11 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/ty3/props.ma". +include "basic_1/ty3/props.ma". -include "Basic-1/pc3/subst1.ma". +include "basic_1/pc3/subst1.ma". -include "Basic-1/getl/getl.ma". +include "basic_1/getl/getl.ma". theorem ty3_gen_cabbr: \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c @@ -102,24 +102,25 @@ O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O t) (\lambda (H6: (lt n d0)).(let H7 \def (eq_ind nat (minus d0 n) (\lambda (n0: nat).(getl n0 (CHead d (Bind Abbr) u) (CHead e (Bind Abbr) u0))) (getl_conf_le d0 (CHead e (Bind Abbr) u0) c0 H3 (CHead d (Bind Abbr) u) n H0 -(le_S_n n d0 (le_S (S n) d0 H6))) (S (minus d0 (S n))) (minus_x_Sy d0 n H6)) -in (ex2_ind C (\lambda (e2: C).(csubst1 (minus d0 n) u0 (CHead d (Bind Abbr) -u) e2)) (\lambda (e2: C).(getl n a0 e2)) (ex3_2 T T (\lambda (y1: T).(\lambda -(_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda -(y2: T).(subst1 d0 u0 (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: -T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x: C).(\lambda (H8: (csubst1 -(minus d0 n) u0 (CHead d (Bind Abbr) u) x)).(\lambda (H9: (getl n a0 x)).(let -H10 \def (eq_ind nat (minus d0 n) (\lambda (n0: nat).(csubst1 n0 u0 (CHead d -(Bind Abbr) u) x)) H8 (S (minus d0 (S n))) (minus_x_Sy d0 n H6)) in (let H11 -\def (csubst1_gen_head (Bind Abbr) d x u u0 (minus d0 (S n)) H10) in -(ex3_2_ind T C (\lambda (u2: T).(\lambda (c2: C).(eq C x (CHead c2 (Bind -Abbr) u2)))) (\lambda (u2: T).(\lambda (_: C).(subst1 (minus d0 (S n)) u0 u -u2))) (\lambda (_: T).(\lambda (c2: C).(csubst1 (minus d0 (S n)) u0 d c2))) -(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S -O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O t) -(lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) -(\lambda (x0: T).(\lambda (x1: C).(\lambda (H12: (eq C x (CHead x1 (Bind -Abbr) x0))).(\lambda (H13: (subst1 (minus d0 (S n)) u0 u x0)).(\lambda (H14: +(le_S_n n d0 (le_S_n (S n) (S d0) (le_S (S (S n)) (S d0) (le_n_S (S n) d0 +H6))))) (S (minus d0 (S n))) (minus_x_Sy d0 n H6)) in (ex2_ind C (\lambda +(e2: C).(csubst1 (minus d0 n) u0 (CHead d (Bind Abbr) u) e2)) (\lambda (e2: +C).(getl n a0 e2)) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 +(TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 +u0 (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: +T).(ty3 g a y1 y2)))) (\lambda (x: C).(\lambda (H8: (csubst1 (minus d0 n) u0 +(CHead d (Bind Abbr) u) x)).(\lambda (H9: (getl n a0 x)).(let H10 \def +(eq_ind nat (minus d0 n) (\lambda (n0: nat).(csubst1 n0 u0 (CHead d (Bind +Abbr) u) x)) H8 (S (minus d0 (S n))) (minus_x_Sy d0 n H6)) in (let H11 \def +(csubst1_gen_head (Bind Abbr) d x u u0 (minus d0 (S n)) H10) in (ex3_2_ind T +C (\lambda (u2: T).(\lambda (c2: C).(eq C x (CHead c2 (Bind Abbr) u2)))) +(\lambda (u2: T).(\lambda (_: C).(subst1 (minus d0 (S n)) u0 u u2))) (\lambda +(_: T).(\lambda (c2: C).(csubst1 (minus d0 (S n)) u0 d c2))) (ex3_2 T T +(\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 +y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O t) (lift +(S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda +(x0: T).(\lambda (x1: C).(\lambda (H12: (eq C x (CHead x1 (Bind Abbr) +x0))).(\lambda (H13: (subst1 (minus d0 (S n)) u0 u x0)).(\lambda (H14: (csubst1 (minus d0 (S n)) u0 d x1)).(let H15 \def (eq_ind C x (\lambda (c1: C).(getl n a0 c1)) H9 (CHead x1 (Bind Abbr) x0) H12) in (let H16 \def (eq_ind nat d0 (\lambda (n0: nat).(drop (S O) n0 a0 a)) H5 (S (plus n (minus d0 (S @@ -180,40 +181,39 @@ T).(subst1 n0 u0 (lift (S n) O t) (lift (S O) n0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H10 \def (eq_ind C (CHead d (Bind Abbr) u) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead e (Bind Abbr) u0) (getl_mono c0 (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Abbr) u0) H9)) in -(let H11 \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) n H0 (CHead e (Bind Abbr) u0) H9)) in ((let H12 \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) +(let H11 \def (f_equal C C (\lambda (e0: C).(match e0 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) n H0 (CHead e -(Bind Abbr) u0) H9)) in (\lambda (H13: (eq C d e)).(let H14 \def (eq_ind_r T -u0 (\lambda (t0: T).(getl n c0 (CHead e (Bind Abbr) t0))) H10 u H12) in (let -H15 \def (eq_ind_r T u0 (\lambda (t0: T).(csubst1 n t0 c0 a0)) H8 u H12) in -(eq_ind T u (\lambda (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: -T).(subst1 n t0 (TLRef n) (lift (S O) n y1)))) (\lambda (_: T).(\lambda (y2: -T).(subst1 n t0 (lift (S n) O t) (lift (S O) n y2)))) (\lambda (y1: -T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H16 \def (eq_ind_r C e (\lambda -(c1: C).(getl n c0 (CHead c1 (Bind Abbr) u))) H14 d H13) in (ex3_2_intro T T -(\lambda (y1: T).(\lambda (_: T).(subst1 n u (TLRef n) (lift (S O) n y1)))) -(\lambda (_: T).(\lambda (y2: T).(subst1 n u (lift (S n) O t) (lift (S O) n -y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (lift n O u) (lift -n O t) (subst1_single n u (TLRef n) (lift (S O) n (lift n O u)) (eq_ind_r T -(lift (plus (S O) n) O u) (\lambda (t0: T).(subst0 n u (TLRef n) t0)) -(subst0_lref u n) (lift (S O) n (lift n O u)) (lift_free u n (S O) O n (le_n -(plus O n)) (le_O_n n)))) (eq_ind_r T (lift (plus (S O) n) O t) (\lambda (t0: -T).(subst1 n u (lift (S n) O t) t0)) (subst1_refl n u (lift (S n) O t)) (lift -(S O) n (lift n O t)) (lift_free t n (S O) O n (le_n (plus O n)) (le_O_n n))) -(ty3_lift g d u t H1 a O n (getl_conf_ge_drop Abbr a0 d u n (csubst1_getl_ge -n n (le_n n) c0 a0 u H15 (CHead d (Bind Abbr) u) H16) a H7)))) u0 H12))))) -H11))) d0 H6))))) (\lambda (H6: (lt d0 n)).(eq_ind_r nat (S (plus O (minus n -(S O)))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: +(Bind Abbr) u0) H9)) in ((let H12 \def (f_equal C T (\lambda (e0: C).(match +e0 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) +n H0 (CHead e (Bind Abbr) u0) H9)) in (\lambda (H13: (eq C d e)).(let H14 +\def (eq_ind_r T u0 (\lambda (t0: T).(getl n c0 (CHead e (Bind Abbr) t0))) +H10 u H12) in (let H15 \def (eq_ind_r T u0 (\lambda (t0: T).(csubst1 n t0 c0 +a0)) H8 u H12) in (eq_ind T u (\lambda (t0: T).(ex3_2 T T (\lambda (y1: +T).(\lambda (_: T).(subst1 n t0 (TLRef n) (lift (S O) n y1)))) (\lambda (_: +T).(\lambda (y2: T).(subst1 n t0 (lift (S n) O t) (lift (S O) n y2)))) +(\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H16 \def (eq_ind_r +C e (\lambda (c1: C).(getl n c0 (CHead c1 (Bind Abbr) u))) H14 d H13) in +(ex3_2_intro T T (\lambda (y1: T).(\lambda (_: T).(subst1 n u (TLRef n) (lift +(S O) n y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 n u (lift (S n) O t) +(lift (S O) n y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) +(lift n O u) (lift n O t) (subst1_single n u (TLRef n) (lift (S O) n (lift n +O u)) (eq_ind_r T (lift (plus (S O) n) O u) (\lambda (t0: T).(subst0 n u +(TLRef n) t0)) (subst0_lref u n) (lift (S O) n (lift n O u)) (lift_free u n +(S O) O n (le_plus_r O n) (le_O_n n)))) (eq_ind_r T (lift (plus (S O) n) O t) +(\lambda (t0: T).(subst1 n u (lift (S n) O t) t0)) (subst1_refl n u (lift (S +n) O t)) (lift (S O) n (lift n O t)) (lift_free t n (S O) O n (le_plus_r O n) +(le_O_n n))) (ty3_lift g d u t H1 a O n (getl_conf_ge_drop Abbr a0 d u n +(csubst1_getl_ge n n (le_n n) c0 a0 u H15 (CHead d (Bind Abbr) u) H16) a +H7)))) u0 H12))))) H11))) d0 H6))))) (\lambda (H6: (lt d0 n)).(eq_ind_r nat +(S (plus O (minus n (S O)))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: +T).(\lambda (_: T).(subst1 d0 u0 (TLRef n0) (lift (S O) d0 y1)))) (\lambda +(_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O t) (lift (S O) d0 y2)))) +(\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind nat (plus (S O) +(minus n (S O))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: -T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind nat (plus (S O) (minus n (S -O))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 -d0 u0 (TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: -T).(subst1 d0 u0 (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind_r nat (plus (minus n (S O)) (S O)) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: @@ -232,30 +232,31 @@ u0 (lift (S n) O t) t0)) (subst1_refl d0 u0 (lift (S n) O t)) (lift (S O) d0 (plus O n) H6)) (le_O_n d0))) (eq_ind_r nat (S (minus n (S O))) (\lambda (n0: nat).(ty3 g a (TLRef (minus n (S O))) (lift n0 O t))) (ty3_abbr g (minus n (S O)) a d u (getl_drop_conf_ge n (CHead d (Bind Abbr) u) a0 (csubst1_getl_ge d0 -n (le_S_n d0 n (le_S (S d0) n H6)) c0 a0 u0 H4 (CHead d (Bind Abbr) u) H0) a -(S O) d0 H5 (eq_ind_r nat (plus (S O) d0) (\lambda (n0: nat).(le n0 n)) H6 -(plus d0 (S O)) (plus_sym d0 (S O)))) t H1) n (minus_x_SO n (le_lt_trans O d0 -n (le_O_n d0) H6)))) (plus (S O) (minus n (S O))) (plus_sym (S O) (minus n (S -O)))) (S (plus O (minus n (S O)))) (refl_equal nat (S (plus O (minus n (S -O)))))) n (lt_plus_minus O n (le_lt_trans O d0 n (le_O_n d0) -H6))))))))))))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: -C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abst) -u))).(\lambda (t: T).(\lambda (H1: (ty3 g d u t)).(\lambda (H2: ((\forall (e: -C).(\forall (u0: T).(\forall (d0: nat).((getl d0 d (CHead e (Bind Abbr) u0)) -\to (\forall (a0: C).((csubst1 d0 u0 d a0) \to (\forall (a: C).((drop (S O) -d0 a0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 u -(lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 t (lift -(S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 -y2)))))))))))))).(\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)).(lt_eq_gt_e n d0 (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 -u0 (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 -d0 u0 (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: -T).(ty3 g a y1 y2)))) (\lambda (H6: (lt n d0)).(let H7 \def (eq_ind nat -(minus d0 n) (\lambda (n0: nat).(getl n0 (CHead d (Bind Abst) u) (CHead e -(Bind Abbr) u0))) (getl_conf_le d0 (CHead e (Bind Abbr) u0) c0 H3 (CHead d -(Bind Abst) u) n H0 (le_S_n n d0 (le_S (S n) d0 H6))) (S (minus d0 (S n))) +n (le_S_n d0 n (le_S_n (S d0) (S n) (le_S (S (S d0)) (S n) (le_n_S (S d0) n +H6)))) c0 a0 u0 H4 (CHead d (Bind Abbr) u) H0) a (S O) d0 H5 (eq_ind_r nat +(plus (S O) d0) (\lambda (n0: nat).(le n0 n)) H6 (plus d0 (S O)) (plus_sym d0 +(S O)))) t H1) n (minus_x_SO n (le_lt_trans O d0 n (le_O_n d0) H6)))) (plus +(S O) (minus n (S O))) (plus_sym (S O) (minus n (S O)))) (S (plus O (minus n +(S O)))) (refl_equal nat (S (plus O (minus n (S O)))))) n (lt_plus_minus O n +(le_lt_trans O d0 n (le_O_n d0) H6))))))))))))))))))))) (\lambda (n: +nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n +c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda (H1: (ty3 g d u +t)).(\lambda (H2: ((\forall (e: C).(\forall (u0: T).(\forall (d0: nat).((getl +d0 d (CHead e (Bind Abbr) u0)) \to (\forall (a0: C).((csubst1 d0 u0 d a0) \to +(\forall (a: C).((drop (S O) d0 a0 a) \to (ex3_2 T T (\lambda (y1: +T).(\lambda (_: T).(subst1 d0 u0 u (lift (S O) d0 y1)))) (\lambda (_: +T).(\lambda (y2: T).(subst1 d0 u0 t (lift (S O) d0 y2)))) (\lambda (y1: +T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\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)).(lt_eq_gt_e n d0 (ex3_2 T T (\lambda +(y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 y1)))) +(\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O u) (lift (S O) +d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (H6: +(lt n d0)).(let H7 \def (eq_ind nat (minus d0 n) (\lambda (n0: nat).(getl n0 +(CHead d (Bind Abst) u) (CHead e (Bind Abbr) u0))) (getl_conf_le d0 (CHead e +(Bind Abbr) u0) c0 H3 (CHead d (Bind Abst) u) n H0 (le_S_n n d0 (le_S_n (S n) +(S d0) (le_S (S (S n)) (S d0) (le_n_S (S n) d0 H6))))) (S (minus d0 (S n))) (minus_x_Sy d0 n H6)) in (ex2_ind C (\lambda (e2: C).(csubst1 (minus d0 n) u0 (CHead d (Bind Abst) u) e2)) (\lambda (e2: C).(getl n a0 e2)) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n) (lift (S O) d0 @@ -334,97 +335,97 @@ T).(\lambda (y2: T).(subst1 n0 u0 (lift (S n) O u) (lift (S O) n0 y2)))) (CHead d (Bind Abst) u) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead e (Bind Abbr) u0) (getl_mono c0 (CHead d (Bind Abst) u) n H0 (CHead e (Bind Abbr) u0) H9)) in (let H11 \def (eq_ind C (CHead d (Bind Abst) u) (\lambda (ee: -C).(match ee in C return (\lambda (_: C).Prop) with [(CSort _) \Rightarrow -False | (CHead _ k _) \Rightarrow (match k in K return (\lambda (_: K).Prop) -with [(Bind b) \Rightarrow (match b in B return (\lambda (_: B).Prop) with -[Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | -(Flat _) \Rightarrow False])])) I (CHead e (Bind Abbr) u0) (getl_mono c0 -(CHead d (Bind Abst) u) n H0 (CHead e (Bind Abbr) u0) H9)) in (False_ind -(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 n u0 (TLRef n) (lift (S -O) n y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 n u0 (lift (S n) O u) -(lift (S O) n y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) -H11))) d0 H6))))) (\lambda (H6: (lt d0 n)).(eq_ind_r nat (S (plus O (minus n -(S O)))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: -T).(subst1 d0 u0 (TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda -(y2: T).(subst1 d0 u0 (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda (y1: -T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind nat (plus (S O) (minus n (S -O))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 -d0 u0 (TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: -T).(subst1 d0 u0 (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda (y1: -T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind_r nat (plus (minus n (S O)) -(S O)) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 -d0 u0 (TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: +C).(match ee with [(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow +(match k with [(Bind b) \Rightarrow (match b with [Abbr \Rightarrow False | +Abst \Rightarrow True | Void \Rightarrow False]) | (Flat _) \Rightarrow +False])])) I (CHead e (Bind Abbr) u0) (getl_mono c0 (CHead d (Bind Abst) u) n +H0 (CHead e (Bind Abbr) u0) H9)) in (False_ind (ex3_2 T T (\lambda (y1: +T).(\lambda (_: T).(subst1 n u0 (TLRef n) (lift (S O) n y1)))) (\lambda (_: +T).(\lambda (y2: T).(subst1 n u0 (lift (S n) O u) (lift (S O) n y2)))) +(\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) H11))) d0 H6))))) +(\lambda (H6: (lt d0 n)).(eq_ind_r nat (S (plus O (minus n (S O)))) (\lambda +(n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef +n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 +(lift (S n) O u) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 +g a y1 y2))))) (eq_ind nat (plus (S O) (minus n (S O))) (\lambda (n0: +nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n0) +(lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S +n) O u) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 +y2))))) (eq_ind_r nat (plus (minus n (S O)) (S O)) (\lambda (n0: nat).(ex3_2 +T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef n0) (lift (S O) d0 +y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O u) (lift +(S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) +(ex3_2_intro T T (\lambda (y1: T).(\lambda (_: T).(subst1 d0 u0 (TLRef (plus +(minus n (S O)) (S O))) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda (y1: -T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T (\lambda (y1: -T).(\lambda (_: T).(subst1 d0 u0 (TLRef (plus (minus n (S O)) (S O))) (lift -(S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d0 u0 (lift (S n) O -u) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) -(TLRef (minus n (S O))) (lift n O u) (eq_ind_r T (TLRef (plus (minus n (S O)) -(S O))) (\lambda (t0: T).(subst1 d0 u0 (TLRef (plus (minus n (S O)) (S O))) -t0)) (subst1_refl d0 u0 (TLRef (plus (minus n (S O)) (S O)))) (lift (S O) d0 -(TLRef (minus n (S O)))) (lift_lref_ge (minus n (S O)) (S O) d0 (lt_le_minus -d0 n H6))) (eq_ind_r T (lift (plus (S O) n) O u) (\lambda (t0: T).(subst1 d0 -u0 (lift (S n) O u) t0)) (subst1_refl d0 u0 (lift (S n) O u)) (lift (S O) d0 -(lift n O u)) (lift_free u n (S O) O d0 (le_S_n d0 (plus O n) (le_S (S d0) -(plus O n) H6)) (le_O_n d0))) (eq_ind_r nat (S (minus n (S O))) (\lambda (n0: -nat).(ty3 g a (TLRef (minus n (S O))) (lift n0 O u))) (ty3_abst g (minus n (S -O)) a d u (getl_drop_conf_ge n (CHead d (Bind Abst) u) a0 (csubst1_getl_ge d0 -n (le_S_n d0 n (le_S (S d0) n H6)) c0 a0 u0 H4 (CHead d (Bind Abst) u) H0) a -(S O) d0 H5 (eq_ind_r nat (plus (S O) d0) (\lambda (n0: nat).(le n0 n)) H6 -(plus d0 (S O)) (plus_sym d0 (S O)))) t H1) n (minus_x_SO n (le_lt_trans O d0 -n (le_O_n d0) H6)))) (plus (S O) (minus n (S O))) (plus_sym (S O) (minus n (S -O)))) (S (plus O (minus n (S O)))) (refl_equal nat (S (plus O (minus n (S -O)))))) n (lt_plus_minus O n (le_lt_trans O d0 n (le_O_n d0) -H6))))))))))))))))))))) (\lambda (c0: C).(\lambda (u: T).(\lambda (t: -T).(\lambda (_: (ty3 g c0 u t)).(\lambda (H1: ((\forall (e: C).(\forall (u0: -T).(\forall (d: nat).((getl d c0 (CHead e (Bind Abbr) u0)) \to (\forall (a0: -C).((csubst1 d u0 c0 a0) \to (\forall (a: C).((drop (S O) d a0 a) \to (ex3_2 -T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 u (lift (S O) d y1)))) -(\lambda (_: T).(\lambda (y2: T).(subst1 d u0 t (lift (S O) d y2)))) (\lambda -(y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\lambda (b: -B).(\lambda (t3: T).(\lambda (t4: T).(\lambda (_: (ty3 g (CHead c0 (Bind b) -u) t3 t4)).(\lambda (H3: ((\forall (e: C).(\forall (u0: T).(\forall (d: -nat).((getl d (CHead c0 (Bind b) u) (CHead e (Bind Abbr) u0)) \to (\forall -(a0: C).((csubst1 d u0 (CHead c0 (Bind b) u) a0) \to (\forall (a: C).((drop -(S O) d a0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 t3 -(lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 t4 (lift -(S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 -y2)))))))))))))).(\lambda (e: C).(\lambda (u0: T).(\lambda (d: nat).(\lambda -(H4: (getl d c0 (CHead e (Bind Abbr) u0))).(\lambda (a0: C).(\lambda (H5: -(csubst1 d u0 c0 a0)).(\lambda (a: C).(\lambda (H6: (drop (S O) d a0 a)).(let -H7 \def (H1 e u0 d H4 a0 H5 a H6) in (ex3_2_ind T T (\lambda (y1: T).(\lambda -(_: T).(subst1 d u0 u (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: +T).(\lambda (y2: T).(ty3 g a y1 y2))) (TLRef (minus n (S O))) (lift n O u) +(eq_ind_r T (TLRef (plus (minus n (S O)) (S O))) (\lambda (t0: T).(subst1 d0 +u0 (TLRef (plus (minus n (S O)) (S O))) t0)) (subst1_refl d0 u0 (TLRef (plus +(minus n (S O)) (S O)))) (lift (S O) d0 (TLRef (minus n (S O)))) +(lift_lref_ge (minus n (S O)) (S O) d0 (lt_le_minus d0 n H6))) (eq_ind_r T +(lift (plus (S O) n) O u) (\lambda (t0: T).(subst1 d0 u0 (lift (S n) O u) +t0)) (subst1_refl d0 u0 (lift (S n) O u)) (lift (S O) d0 (lift n O u)) +(lift_free u n (S O) O d0 (le_S_n d0 (plus O n) (le_S (S d0) (plus O n) H6)) +(le_O_n d0))) (eq_ind_r nat (S (minus n (S O))) (\lambda (n0: nat).(ty3 g a +(TLRef (minus n (S O))) (lift n0 O u))) (ty3_abst g (minus n (S O)) a d u +(getl_drop_conf_ge n (CHead d (Bind Abst) u) a0 (csubst1_getl_ge d0 n (le_S_n +d0 n (le_S_n (S d0) (S n) (le_S (S (S d0)) (S n) (le_n_S (S d0) n H6)))) c0 +a0 u0 H4 (CHead d (Bind Abst) u) H0) a (S O) d0 H5 (eq_ind_r nat (plus (S O) +d0) (\lambda (n0: nat).(le n0 n)) H6 (plus d0 (S O)) (plus_sym d0 (S O)))) t +H1) n (minus_x_SO n (le_lt_trans O d0 n (le_O_n d0) H6)))) (plus (S O) (minus +n (S O))) (plus_sym (S O) (minus n (S O)))) (S (plus O (minus n (S O)))) +(refl_equal nat (S (plus O (minus n (S O)))))) n (lt_plus_minus O n +(le_lt_trans O d0 n (le_O_n d0) H6))))))))))))))))))))) (\lambda (c0: +C).(\lambda (u: T).(\lambda (t: T).(\lambda (_: (ty3 g c0 u t)).(\lambda (H1: +((\forall (e: C).(\forall (u0: T).(\forall (d: nat).((getl d c0 (CHead e +(Bind Abbr) u0)) \to (\forall (a0: C).((csubst1 d u0 c0 a0) \to (\forall (a: +C).((drop (S O) d a0 a) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: +T).(subst1 d u0 u (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 t (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 -g a y1 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 (THead -(Bind b) u t3) (lift (S O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 -d u0 (THead (Bind b) u t4) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda -(y2: T).(ty3 g a y1 y2)))) (\lambda (x0: T).(\lambda (x1: T).(\lambda (H8: -(subst1 d u0 u (lift (S O) d x0))).(\lambda (_: (subst1 d u0 t (lift (S O) d -x1))).(\lambda (H10: (ty3 g a x0 x1)).(let H11 \def (H3 e u0 (S d) (getl_head -(Bind b) d c0 (CHead e (Bind Abbr) u0) H4 u) (CHead a0 (Bind b) (lift (S O) d -x0)) (csubst1_bind b d u0 u (lift (S O) d x0) H8 c0 a0 H5) (CHead a (Bind b) -x0) (drop_skip_bind (S O) d a0 a H6 b x0)) in (ex3_2_ind T T (\lambda (y1: -T).(\lambda (_: T).(subst1 (S d) u0 t3 (lift (S O) (S d) y1)))) (\lambda (_: -T).(\lambda (y2: T).(subst1 (S d) u0 t4 (lift (S O) (S d) y2)))) (\lambda -(y1: T).(\lambda (y2: T).(ty3 g (CHead a (Bind b) x0) y1 y2))) (ex3_2 T T -(\lambda (y1: T).(\lambda (_: T).(subst1 d u0 (THead (Bind b) u t3) (lift (S -O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 (THead (Bind b) u -t4) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) -(\lambda (x2: T).(\lambda (x3: T).(\lambda (H12: (subst1 (S d) u0 t3 (lift (S -O) (S d) x2))).(\lambda (H13: (subst1 (S d) u0 t4 (lift (S O) (S d) -x3))).(\lambda (H14: (ty3 g (CHead a (Bind b) x0) x2 x3)).(ex3_2_intro T T -(\lambda (y1: T).(\lambda (_: T).(subst1 d u0 (THead (Bind b) u t3) (lift (S -O) d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 (THead (Bind b) u -t4) (lift (S O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) -(THead (Bind b) x0 x2) (THead (Bind b) x0 x3) (eq_ind_r T (THead (Bind b) -(lift (S O) d x0) (lift (S O) (S d) x2)) (\lambda (t0: T).(subst1 d u0 (THead -(Bind b) u t3) t0)) (subst1_head u0 u (lift (S O) d x0) d H8 (Bind b) t3 -(lift (S O) (S d) x2) H12) (lift (S O) d (THead (Bind b) x0 x2)) (lift_bind b -x0 x2 (S O) d)) (eq_ind_r T (THead (Bind b) (lift (S O) d x0) (lift (S O) (S -d) x3)) (\lambda (t0: T).(subst1 d u0 (THead (Bind b) u t4) t0)) (subst1_head -u0 u (lift (S O) d x0) d H8 (Bind b) t4 (lift (S O) (S d) x3) H13) (lift (S -O) d (THead (Bind b) x0 x3)) (lift_bind b x0 x3 (S O) d)) (ty3_bind g a x0 x1 -H10 b x2 x3 H14))))))) H11))))))) H7)))))))))))))))))))) (\lambda (c0: +g a y1 y2)))))))))))))).(\lambda (b: B).(\lambda (t3: T).(\lambda (t4: +T).(\lambda (_: (ty3 g (CHead c0 (Bind b) u) t3 t4)).(\lambda (H3: ((\forall +(e: C).(\forall (u0: T).(\forall (d: nat).((getl d (CHead c0 (Bind b) u) +(CHead e (Bind Abbr) u0)) \to (\forall (a0: C).((csubst1 d u0 (CHead c0 (Bind +b) u) a0) \to (\forall (a: C).((drop (S O) d a0 a) \to (ex3_2 T T (\lambda +(y1: T).(\lambda (_: T).(subst1 d u0 t3 (lift (S O) d y1)))) (\lambda (_: +T).(\lambda (y2: T).(subst1 d u0 t4 (lift (S O) d y2)))) (\lambda (y1: +T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))))).(\lambda (e: C).(\lambda +(u0: T).(\lambda (d: nat).(\lambda (H4: (getl d c0 (CHead e (Bind Abbr) +u0))).(\lambda (a0: C).(\lambda (H5: (csubst1 d u0 c0 a0)).(\lambda (a: +C).(\lambda (H6: (drop (S O) d a0 a)).(let H7 \def (H1 e u0 d H4 a0 H5 a H6) +in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(subst1 d u0 u (lift (S O) +d y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 d u0 t (lift (S O) d y2)))) +(\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (ex3_2 T T (\lambda (y1: +T).(\lambda (_: T).(subst1 d u0 (THead (Bind b) u t3) (lift (S O) d y1)))) +(\lambda (_: T).(\lambda (y2: T).(subst1 d u0 (THead (Bind b) u t4) (lift (S +O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda +(x0: T).(\lambda (x1: T).(\lambda (H8: (subst1 d u0 u (lift (S O) d +x0))).(\lambda (_: (subst1 d u0 t (lift (S O) d x1))).(\lambda (H10: (ty3 g a +x0 x1)).(let H11 \def (H3 e u0 (S d) (getl_head (Bind b) d c0 (CHead e (Bind +Abbr) u0) H4 u) (CHead a0 (Bind b) (lift (S O) d x0)) (csubst1_bind b d u0 u +(lift (S O) d x0) H8 c0 a0 H5) (CHead a (Bind b) x0) (drop_skip_bind (S O) d +a0 a H6 b x0)) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(subst1 (S +d) u0 t3 (lift (S O) (S d) y1)))) (\lambda (_: T).(\lambda (y2: T).(subst1 (S +d) u0 t4 (lift (S O) (S d) y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g +(CHead a (Bind b) x0) y1 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: +T).(subst1 d u0 (THead (Bind b) u t3) (lift (S O) d y1)))) (\lambda (_: +T).(\lambda (y2: T).(subst1 d u0 (THead (Bind b) u t4) (lift (S O) d y2)))) +(\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x2: +T).(\lambda (x3: T).(\lambda (H12: (subst1 (S d) u0 t3 (lift (S O) (S d) +x2))).(\lambda (H13: (subst1 (S d) u0 t4 (lift (S O) (S d) x3))).(\lambda +(H14: (ty3 g (CHead a (Bind b) x0) x2 x3)).(ex3_2_intro T T (\lambda (y1: +T).(\lambda (_: T).(subst1 d u0 (THead (Bind b) u t3) (lift (S O) d y1)))) +(\lambda (_: T).(\lambda (y2: T).(subst1 d u0 (THead (Bind b) u t4) (lift (S +O) d y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (THead (Bind +b) x0 x2) (THead (Bind b) x0 x3) (eq_ind_r T (THead (Bind b) (lift (S O) d +x0) (lift (S O) (S d) x2)) (\lambda (t0: T).(subst1 d u0 (THead (Bind b) u +t3) t0)) (subst1_head u0 u (lift (S O) d x0) d H8 (Bind b) t3 (lift (S O) (S +d) x2) H12) (lift (S O) d (THead (Bind b) x0 x2)) (lift_bind b x0 x2 (S O) +d)) (eq_ind_r T (THead (Bind b) (lift (S O) d x0) (lift (S O) (S d) x3)) +(\lambda (t0: T).(subst1 d u0 (THead (Bind b) u t4) t0)) (subst1_head u0 u +(lift (S O) d x0) d H8 (Bind b) t4 (lift (S O) (S d) x3) H13) (lift (S O) d +(THead (Bind b) x0 x3)) (lift_bind b x0 x3 (S O) d)) (ty3_bind g a x0 x1 H10 +b x2 x3 H14))))))) H11))))))) H7)))))))))))))))))))) (\lambda (c0: C).(\lambda (w: T).(\lambda (u: T).(\lambda (_: (ty3 g c0 w u)).(\lambda (H1: ((\forall (e: C).(\forall (u0: T).(\forall (d: nat).((getl d c0 (CHead e (Bind Abbr) u0)) \to (\forall (a0: C).((csubst1 d u0 c0 a0) \to (\forall (a: @@ -552,9 +553,6 @@ H12) (lift (S O) d (THead (Flat Cast) x0 x2)) (lift_flat Cast x0 x2 (S O) d)) O) d x1) d H9 (Flat Cast) t4 (lift (S O) d x0) H8) (lift (S O) d (THead (Flat Cast) x1 x0)) (lift_flat Cast x1 x0 (S O) d)) (ty3_cast g a x2 x0 H15 x1 H10)))))))) H11))))))) H7)))))))))))))))))) c t1 t2 H))))). -(* COMMENTS -Initial nodes: 12848 -END *) theorem ty3_gen_cvoid: \forall (g: G).(\forall (c: C).(\forall (t1: T).(\forall (t2: T).((ty3 g c @@ -644,57 +642,58 @@ y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (H5: (lt n d0)).(let H6 \def (eq_ind nat (minus d0 n) (\lambda (n0: nat).(getl n0 (CHead d (Bind Abbr) u) (CHead e (Bind Void) u0))) (getl_conf_le d0 (CHead e -(Bind Void) u0) c0 H3 (CHead d (Bind Abbr) u) n H0 (le_S_n n d0 (le_S (S n) -d0 H5))) (S (minus d0 (S n))) (minus_x_Sy d0 n H5)) in (let H7 \def (eq_ind -nat d0 (\lambda (n0: nat).(drop (S O) n0 c0 a)) H4 (S (plus n (minus d0 (S -n)))) (lt_plus_minus n d0 H5)) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: -C).(eq T u (lift (S O) (minus d0 (S n)) v)))) (\lambda (v: T).(\lambda (e0: -C).(getl n a (CHead e0 (Bind Abbr) v)))) (\lambda (_: T).(\lambda (e0: -C).(drop (S O) (minus d0 (S n)) d e0))) (ex3_2 T T (\lambda (y1: T).(\lambda +(Bind Void) u0) c0 H3 (CHead d (Bind Abbr) u) n H0 (le_S_n n d0 (le_S_n (S n) +(S d0) (le_S (S (S n)) (S d0) (le_n_S (S n) d0 H5))))) (S (minus d0 (S n))) +(minus_x_Sy d0 n H5)) in (let H7 \def (eq_ind nat d0 (\lambda (n0: nat).(drop +(S O) n0 c0 a)) H4 (S (plus n (minus d0 (S n)))) (lt_plus_minus n d0 H5)) in +(ex3_2_ind T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift (S O) (minus d0 +(S n)) v)))) (\lambda (v: T).(\lambda (e0: C).(getl n a (CHead e0 (Bind Abbr) +v)))) (\lambda (_: T).(\lambda (e0: C).(drop (S O) (minus d0 (S n)) d e0))) +(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 +y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) d0 +y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x0: +T).(\lambda (x1: C).(\lambda (H8: (eq T u (lift (S O) (minus d0 (S n)) +x0))).(\lambda (H9: (getl n a (CHead x1 (Bind Abbr) x0))).(\lambda (H10: +(drop (S O) (minus d0 (S n)) d x1)).(let H11 \def (eq_ind T u (\lambda (t0: +T).(\forall (e0: C).(\forall (u1: T).(\forall (d1: nat).((getl d1 d (CHead e0 +(Bind Void) u1)) \to (\forall (a0: C).((drop (S O) d1 d a0) \to (ex3_2 T T +(\lambda (y1: T).(\lambda (_: T).(eq T t0 (lift (S O) d1 y1)))) (\lambda (_: +T).(\lambda (y2: T).(eq T t (lift (S O) d1 y2)))) (\lambda (y1: T).(\lambda +(y2: T).(ty3 g a0 y1 y2))))))))))) H2 (lift (S O) (minus d0 (S n)) x0) H8) in +(let H12 \def (eq_ind T u (\lambda (t0: T).(ty3 g d t0 t)) H1 (lift (S O) +(minus d0 (S n)) x0) H8) in (let H13 \def (H11 e u0 (minus d0 (S n)) +(getl_gen_S (Bind Abbr) d (CHead e (Bind Void) u0) u (minus d0 (S n)) H6) x1 +H10) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T (lift (S O) +(minus d0 (S n)) x0) (lift (S O) (minus d0 (S n)) y1)))) (\lambda (_: +T).(\lambda (y2: T).(eq T t (lift (S O) (minus d0 (S n)) y2)))) (\lambda (y1: +T).(\lambda (y2: T).(ty3 g x1 y1 y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda -(y2: T).(ty3 g a y1 y2)))) (\lambda (x0: T).(\lambda (x1: C).(\lambda (H8: -(eq T u (lift (S O) (minus d0 (S n)) x0))).(\lambda (H9: (getl n a (CHead x1 -(Bind Abbr) x0))).(\lambda (H10: (drop (S O) (minus d0 (S n)) d x1)).(let H11 -\def (eq_ind T u (\lambda (t0: T).(\forall (e0: C).(\forall (u1: T).(\forall -(d1: nat).((getl d1 d (CHead e0 (Bind Void) u1)) \to (\forall (a0: C).((drop -(S O) d1 d a0) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T t0 (lift -(S O) d1 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) d1 -y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a0 y1 y2))))))))))) H2 (lift -(S O) (minus d0 (S n)) x0) H8) in (let H12 \def (eq_ind T u (\lambda (t0: -T).(ty3 g d t0 t)) H1 (lift (S O) (minus d0 (S n)) x0) H8) in (let H13 \def -(H11 e u0 (minus d0 (S n)) (getl_gen_S (Bind Abbr) d (CHead e (Bind Void) u0) -u (minus d0 (S n)) H6) x1 H10) in (ex3_2_ind T T (\lambda (y1: T).(\lambda -(_: T).(eq T (lift (S O) (minus d0 (S n)) x0) (lift (S O) (minus d0 (S n)) -y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) (minus d0 (S n)) -y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g x1 y1 y2))) (ex3_2 T T -(\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) -(\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) d0 y2)))) -(\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x2: -T).(\lambda (x3: T).(\lambda (H14: (eq T (lift (S O) (minus d0 (S n)) x0) -(lift (S O) (minus d0 (S n)) x2))).(\lambda (H15: (eq T t (lift (S O) (minus -d0 (S n)) x3))).(\lambda (H16: (ty3 g x1 x2 x3)).(let H17 \def (eq_ind T t -(\lambda (t0: T).(ty3 g d (lift (S O) (minus d0 (S n)) x0) t0)) H12 (lift (S -O) (minus d0 (S n)) x3) H15) in (eq_ind_r T (lift (S O) (minus d0 (S n)) x3) -(\lambda (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) -(lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O -t0) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 -y2))))) (let H18 \def (eq_ind_r T x2 (\lambda (t0: T).(ty3 g x1 t0 x3)) H16 -x0 (lift_inj x0 x2 (S O) (minus d0 (S n)) H14)) in (eq_ind T (lift (S O) -(plus (S n) (minus d0 (S n))) (lift (S n) O x3)) (\lambda (t0: T).(ex3_2 T T +(y2: T).(ty3 g a y1 y2)))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H14: +(eq T (lift (S O) (minus d0 (S n)) x0) (lift (S O) (minus d0 (S n)) +x2))).(\lambda (H15: (eq T t (lift (S O) (minus d0 (S n)) x3))).(\lambda +(H16: (ty3 g x1 x2 x3)).(let H17 \def (eq_ind T t (\lambda (t0: T).(ty3 g d +(lift (S O) (minus d0 (S n)) x0) t0)) H12 (lift (S O) (minus d0 (S n)) x3) +H15) in (eq_ind_r T (lift (S O) (minus d0 (S n)) x3) (\lambda (t0: T).(ex3_2 +T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) +(\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t0) (lift (S O) d0 +y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H18 \def +(eq_ind_r T x2 (\lambda (t0: T).(ty3 g x1 t0 x3)) H16 x0 (lift_inj x0 x2 (S +O) (minus d0 (S n)) H14)) in (eq_ind T (lift (S O) (plus (S n) (minus d0 (S +n))) (lift (S n) O x3)) (\lambda (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda +(_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: +T).(eq T t0 (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a +y1 y2))))) (eq_ind nat d0 (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: +T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: +T).(\lambda (y2: T).(eq T (lift (S O) n0 (lift (S n) O x3)) (lift (S O) d0 +y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) -(\lambda (_: T).(\lambda (y2: T).(eq T t0 (lift (S O) d0 y2)))) (\lambda (y1: -T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind nat d0 (\lambda (n0: -nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) -d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) n0 (lift (S n) O -x3)) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 -y2))))) (ex3_2_intro T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) -(lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) d0 -(lift (S n) O x3)) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: -T).(ty3 g a y1 y2))) (TLRef n) (lift (S n) O x3) (eq_ind_r T (TLRef n) -(\lambda (t0: T).(eq T (TLRef n) t0)) (refl_equal T (TLRef n)) (lift (S O) d0 -(TLRef n)) (lift_lref_lt n (S O) d0 H5)) (refl_equal T (lift (S O) d0 (lift -(S n) O x3))) (ty3_abbr g n a x1 x0 H9 x3 H18)) (plus (S n) (minus d0 (S n))) +(\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) d0 (lift (S n) O x3)) +(lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) +(TLRef n) (lift (S n) O x3) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T +(TLRef n) t0)) (refl_equal T (TLRef n)) (lift (S O) d0 (TLRef n)) +(lift_lref_lt n (S O) d0 H5)) (refl_equal T (lift (S O) d0 (lift (S n) O +x3))) (ty3_abbr g n a x1 x0 H9 x3 H18)) (plus (S n) (minus d0 (S n))) (le_plus_minus (S n) d0 H5)) (lift (S n) O (lift (S O) (minus d0 (S n)) x3)) (lift_d x3 (S O) (S n) (minus d0 (S n)) O (le_O_n (minus d0 (S n)))))) t H15))))))) H13))))))))) (getl_drop_conf_lt Abbr c0 d u n H0 a (S O) (minus d0 @@ -707,128 +706,125 @@ T (lift (S n) O t) (lift (S O) n0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H8 \def (eq_ind C (CHead d (Bind Abbr) u) (\lambda (c1: C).(getl n c0 c1)) H0 (CHead e (Bind Void) u0) (getl_mono c0 (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Void) u0) H7)) in (let H9 \def -(eq_ind C (CHead d (Bind Abbr) u) (\lambda (ee: C).(match ee in C return -(\lambda (_: C).Prop) with [(CSort _) \Rightarrow False | (CHead _ k _) -\Rightarrow (match k in K return (\lambda (_: K).Prop) with [(Bind b) -\Rightarrow (match b in B return (\lambda (_: B).Prop) with [Abbr \Rightarrow -True | Abst \Rightarrow False | Void \Rightarrow False]) | (Flat _) -\Rightarrow False])])) I (CHead e (Bind Void) u0) (getl_mono c0 (CHead d -(Bind Abbr) u) n H0 (CHead e (Bind Void) u0) H7)) in (False_ind (ex3_2 T T -(\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) n y1)))) -(\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) n y2)))) -(\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) H9))) d0 H5)))) (\lambda -(H5: (lt d0 n)).(eq_ind_r nat (S (plus O (minus n (S O)))) (\lambda (n0: -nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n0) (lift (S O) -d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) -d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind nat -(plus (S O) (minus n (S O))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: +(eq_ind C (CHead d (Bind Abbr) u) (\lambda (ee: C).(match ee with [(CSort _) +\Rightarrow False | (CHead _ k _) \Rightarrow (match k with [(Bind b) +\Rightarrow (match b with [Abbr \Rightarrow True | Abst \Rightarrow False | +Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead e (Bind +Void) u0) (getl_mono c0 (CHead d (Bind Abbr) u) n H0 (CHead e (Bind Void) u0) +H7)) in (False_ind (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef +n) (lift (S O) n y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O +t) (lift (S O) n y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) +H9))) d0 H5)))) (\lambda (H5: (lt d0 n)).(eq_ind_r nat (S (plus O (minus n (S +O)))) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T +(TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift +(S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a +y1 y2))))) (eq_ind nat (plus (S O) (minus n (S O))) (\lambda (n0: nat).(ex3_2 +T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n0) (lift (S O) d0 y1)))) +(\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) d0 y2)))) +(\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind_r nat (plus +(minus n (S O)) (S O)) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda -(y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (eq_ind_r nat (plus (minus n (S -O)) (S O)) (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq -T (TLRef n0) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T -(lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 -g a y1 y2))))) (ex3_2_intro T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef -(plus (minus n (S O)) (S O))) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda -(y2: T).(eq T (lift (S n) O t) (lift (S O) d0 y2)))) (\lambda (y1: -T).(\lambda (y2: T).(ty3 g a y1 y2))) (TLRef (minus n (S O))) (lift n O t) -(eq_ind_r T (TLRef (plus (minus n (S O)) (S O))) (\lambda (t0: T).(eq T -(TLRef (plus (minus n (S O)) (S O))) t0)) (refl_equal T (TLRef (plus (minus n -(S O)) (S O)))) (lift (S O) d0 (TLRef (minus n (S O)))) (lift_lref_ge (minus -n (S O)) (S O) d0 (lt_le_minus d0 n H5))) (eq_ind_r T (lift (plus (S O) n) O -t) (\lambda (t0: T).(eq T (lift (S n) O t) t0)) (refl_equal T (lift (S n) O -t)) (lift (S O) d0 (lift n O t)) (lift_free t n (S O) O d0 (le_S_n d0 (plus O -n) (le_S (S d0) (plus O n) H5)) (le_O_n d0))) (eq_ind_r nat (S (minus n (S -O))) (\lambda (n0: nat).(ty3 g a (TLRef (minus n (S O))) (lift n0 O t))) -(ty3_abbr g (minus n (S O)) a d u (getl_drop_conf_ge n (CHead d (Bind Abbr) -u) c0 H0 a (S O) d0 H4 (eq_ind_r nat (plus (S O) d0) (\lambda (n0: nat).(le -n0 n)) H5 (plus d0 (S O)) (plus_sym d0 (S O)))) t H1) n (minus_x_SO n -(le_lt_trans O d0 n (le_O_n d0) H5)))) (plus (S O) (minus n (S O))) (plus_sym -(S O) (minus n (S O)))) (S (plus O (minus n (S O)))) (refl_equal nat (S (plus -O (minus n (S O)))))) n (lt_plus_minus O n (le_lt_trans O d0 n (le_O_n d0) -H5))))))))))))))))))) (\lambda (n: nat).(\lambda (c0: C).(\lambda (d: -C).(\lambda (u: T).(\lambda (H0: (getl n c0 (CHead d (Bind Abst) -u))).(\lambda (t: T).(\lambda (H1: (ty3 g d u t)).(\lambda (H2: ((\forall (e: -C).(\forall (u0: T).(\forall (d0: nat).((getl d0 d (CHead e (Bind Void) u0)) -\to (\forall (a: C).((drop (S O) d0 d a) \to (ex3_2 T T (\lambda (y1: -T).(\lambda (_: T).(eq T u (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda -(y2: T).(eq T t (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 -g a y1 y2)))))))))))).(\lambda (e: C).(\lambda (u0: T).(\lambda (d0: -nat).(\lambda (H3: (getl d0 c0 (CHead e (Bind Void) u0))).(\lambda (a: -C).(\lambda (H4: (drop (S O) d0 c0 a)).(lt_eq_gt_e n d0 (ex3_2 T T (\lambda -(y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: -T).(\lambda (y2: T).(eq T (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda -(y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (H5: (lt n d0)).(let H6 -\def (eq_ind nat (minus d0 n) (\lambda (n0: nat).(getl n0 (CHead d (Bind -Abst) u) (CHead e (Bind Void) u0))) (getl_conf_le d0 (CHead e (Bind Void) u0) -c0 H3 (CHead d (Bind Abst) u) n H0 (le_S_n n d0 (le_S (S n) d0 H5))) (S -(minus d0 (S n))) (minus_x_Sy d0 n H5)) in (let H7 \def (eq_ind nat d0 -(\lambda (n0: nat).(drop (S O) n0 c0 a)) H4 (S (plus n (minus d0 (S n)))) -(lt_plus_minus n d0 H5)) in (ex3_2_ind T C (\lambda (v: T).(\lambda (_: -C).(eq T u (lift (S O) (minus d0 (S n)) v)))) (\lambda (v: T).(\lambda (e0: -C).(getl n a (CHead e0 (Bind Abst) v)))) (\lambda (_: T).(\lambda (e0: -C).(drop (S O) (minus d0 (S n)) d e0))) (ex3_2 T T (\lambda (y1: T).(\lambda +(y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T (\lambda (y1: +T).(\lambda (_: T).(eq T (TLRef (plus (minus n (S O)) (S O))) (lift (S O) d0 +y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O t) (lift (S O) d0 +y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (TLRef (minus n (S +O))) (lift n O t) (eq_ind_r T (TLRef (plus (minus n (S O)) (S O))) (\lambda +(t0: T).(eq T (TLRef (plus (minus n (S O)) (S O))) t0)) (refl_equal T (TLRef +(plus (minus n (S O)) (S O)))) (lift (S O) d0 (TLRef (minus n (S O)))) +(lift_lref_ge (minus n (S O)) (S O) d0 (lt_le_minus d0 n H5))) (eq_ind_r T +(lift (plus (S O) n) O t) (\lambda (t0: T).(eq T (lift (S n) O t) t0)) +(refl_equal T (lift (S n) O t)) (lift (S O) d0 (lift n O t)) (lift_free t n +(S O) O d0 (le_S_n d0 (plus O n) (le_S (S d0) (plus O n) H5)) (le_O_n d0))) +(eq_ind_r nat (S (minus n (S O))) (\lambda (n0: nat).(ty3 g a (TLRef (minus n +(S O))) (lift n0 O t))) (ty3_abbr g (minus n (S O)) a d u (getl_drop_conf_ge +n (CHead d (Bind Abbr) u) c0 H0 a (S O) d0 H4 (eq_ind_r nat (plus (S O) d0) +(\lambda (n0: nat).(le n0 n)) H5 (plus d0 (S O)) (plus_sym d0 (S O)))) t H1) +n (minus_x_SO n (le_lt_trans O d0 n (le_O_n d0) H5)))) (plus (S O) (minus n +(S O))) (plus_sym (S O) (minus n (S O)))) (S (plus O (minus n (S O)))) +(refl_equal nat (S (plus O (minus n (S O)))))) n (lt_plus_minus O n +(le_lt_trans O d0 n (le_O_n d0) H5))))))))))))))))))) (\lambda (n: +nat).(\lambda (c0: C).(\lambda (d: C).(\lambda (u: T).(\lambda (H0: (getl n +c0 (CHead d (Bind Abst) u))).(\lambda (t: T).(\lambda (H1: (ty3 g d u +t)).(\lambda (H2: ((\forall (e: C).(\forall (u0: T).(\forall (d0: nat).((getl +d0 d (CHead e (Bind Void) u0)) \to (\forall (a: C).((drop (S O) d0 d a) \to +(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T u (lift (S O) d0 y1)))) +(\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) d0 y2)))) (\lambda (y1: +T).(\lambda (y2: T).(ty3 g a y1 y2)))))))))))).(\lambda (e: C).(\lambda (u0: +T).(\lambda (d0: nat).(\lambda (H3: (getl d0 c0 (CHead e (Bind Void) +u0))).(\lambda (a: C).(\lambda (H4: (drop (S O) d0 c0 a)).(lt_eq_gt_e n d0 +(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 +y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O u) (lift (S O) d0 +y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (H5: (lt +n d0)).(let H6 \def (eq_ind nat (minus d0 n) (\lambda (n0: nat).(getl n0 +(CHead d (Bind Abst) u) (CHead e (Bind Void) u0))) (getl_conf_le d0 (CHead e +(Bind Void) u0) c0 H3 (CHead d (Bind Abst) u) n H0 (le_S_n n d0 (le_S_n (S n) +(S d0) (le_S (S (S n)) (S d0) (le_n_S (S n) d0 H5))))) (S (minus d0 (S n))) +(minus_x_Sy d0 n H5)) in (let H7 \def (eq_ind nat d0 (\lambda (n0: nat).(drop +(S O) n0 c0 a)) H4 (S (plus n (minus d0 (S n)))) (lt_plus_minus n d0 H5)) in +(ex3_2_ind T C (\lambda (v: T).(\lambda (_: C).(eq T u (lift (S O) (minus d0 +(S n)) v)))) (\lambda (v: T).(\lambda (e0: C).(getl n a (CHead e0 (Bind Abst) +v)))) (\lambda (_: T).(\lambda (e0: C).(drop (S O) (minus d0 (S n)) d e0))) +(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 +y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O u) (lift (S O) d0 +y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) (\lambda (x0: +T).(\lambda (x1: C).(\lambda (H8: (eq T u (lift (S O) (minus d0 (S n)) +x0))).(\lambda (H9: (getl n a (CHead x1 (Bind Abst) x0))).(\lambda (H10: +(drop (S O) (minus d0 (S n)) d x1)).(let H11 \def (eq_ind T u (\lambda (t0: +T).(\forall (e0: C).(\forall (u1: T).(\forall (d1: nat).((getl d1 d (CHead e0 +(Bind Void) u1)) \to (\forall (a0: C).((drop (S O) d1 d a0) \to (ex3_2 T T +(\lambda (y1: T).(\lambda (_: T).(eq T t0 (lift (S O) d1 y1)))) (\lambda (_: +T).(\lambda (y2: T).(eq T t (lift (S O) d1 y2)))) (\lambda (y1: T).(\lambda +(y2: T).(ty3 g a0 y1 y2))))))))))) H2 (lift (S O) (minus d0 (S n)) x0) H8) in +(let H12 \def (eq_ind T u (\lambda (t0: T).(ty3 g d t0 t)) H1 (lift (S O) +(minus d0 (S n)) x0) H8) in (eq_ind_r T (lift (S O) (minus d0 (S n)) x0) +(\lambda (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) +(lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O +t0) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 +y2))))) (let H13 \def (H11 e u0 (minus d0 (S n)) (getl_gen_S (Bind Abst) d +(CHead e (Bind Void) u0) u (minus d0 (S n)) H6) x1 H10) in (ex3_2_ind T T +(\lambda (y1: T).(\lambda (_: T).(eq T (lift (S O) (minus d0 (S n)) x0) (lift +(S O) (minus d0 (S n)) y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t (lift +(S O) (minus d0 (S n)) y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g x1 y1 +y2))) (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) +d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O (lift (S O) +(minus d0 (S n)) x0)) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: +T).(ty3 g a y1 y2)))) (\lambda (x2: T).(\lambda (x3: T).(\lambda (H14: (eq T +(lift (S O) (minus d0 (S n)) x0) (lift (S O) (minus d0 (S n)) x2))).(\lambda +(H15: (eq T t (lift (S O) (minus d0 (S n)) x3))).(\lambda (H16: (ty3 g x1 x2 +x3)).(let H17 \def (eq_ind T t (\lambda (t0: T).(ty3 g d (lift (S O) (minus +d0 (S n)) x0) t0)) H12 (lift (S O) (minus d0 (S n)) x3) H15) in (let H18 \def +(eq_ind_r T x2 (\lambda (t0: T).(ty3 g x1 t0 x3)) H16 x0 (lift_inj x0 x2 (S +O) (minus d0 (S n)) H14)) in (eq_ind T (lift (S O) (plus (S n) (minus d0 (S +n))) (lift (S n) O x0)) (\lambda (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: -T).(eq T (lift (S n) O u) (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda -(y2: T).(ty3 g a y1 y2)))) (\lambda (x0: T).(\lambda (x1: C).(\lambda (H8: -(eq T u (lift (S O) (minus d0 (S n)) x0))).(\lambda (H9: (getl n a (CHead x1 -(Bind Abst) x0))).(\lambda (H10: (drop (S O) (minus d0 (S n)) d x1)).(let H11 -\def (eq_ind T u (\lambda (t0: T).(\forall (e0: C).(\forall (u1: T).(\forall -(d1: nat).((getl d1 d (CHead e0 (Bind Void) u1)) \to (\forall (a0: C).((drop -(S O) d1 d a0) \to (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T t0 (lift -(S O) d1 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t (lift (S O) d1 -y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a0 y1 y2))))))))))) H2 (lift -(S O) (minus d0 (S n)) x0) H8) in (let H12 \def (eq_ind T u (\lambda (t0: -T).(ty3 g d t0 t)) H1 (lift (S O) (minus d0 (S n)) x0) H8) in (eq_ind_r T -(lift (S O) (minus d0 (S n)) x0) (\lambda (t0: T).(ex3_2 T T (\lambda (y1: -T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: -T).(\lambda (y2: T).(eq T (lift (S n) O t0) (lift (S O) d0 y2)))) (\lambda -(y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (let H13 \def (H11 e u0 (minus -d0 (S n)) (getl_gen_S (Bind Abst) d (CHead e (Bind Void) u0) u (minus d0 (S -n)) H6) x1 H10) in (ex3_2_ind T T (\lambda (y1: T).(\lambda (_: T).(eq T -(lift (S O) (minus d0 (S n)) x0) (lift (S O) (minus d0 (S n)) y1)))) (\lambda -(_: T).(\lambda (y2: T).(eq T t (lift (S O) (minus d0 (S n)) y2)))) (\lambda -(y1: T).(\lambda (y2: T).(ty3 g x1 y1 y2))) (ex3_2 T T (\lambda (y1: -T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: -T).(\lambda (y2: T).(eq T (lift (S n) O (lift (S O) (minus d0 (S n)) x0)) -(lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2)))) -(\lambda (x2: T).(\lambda (x3: T).(\lambda (H14: (eq T (lift (S O) (minus d0 -(S n)) x0) (lift (S O) (minus d0 (S n)) x2))).(\lambda (H15: (eq T t (lift (S -O) (minus d0 (S n)) x3))).(\lambda (H16: (ty3 g x1 x2 x3)).(let H17 \def -(eq_ind T t (\lambda (t0: T).(ty3 g d (lift (S O) (minus d0 (S n)) x0) t0)) -H12 (lift (S O) (minus d0 (S n)) x3) H15) in (let H18 \def (eq_ind_r T x2 -(\lambda (t0: T).(ty3 g x1 t0 x3)) H16 x0 (lift_inj x0 x2 (S O) (minus d0 (S -n)) H14)) in (eq_ind T (lift (S O) (plus (S n) (minus d0 (S n))) (lift (S n) -O x0)) (\lambda (t0: T).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T -(TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T t0 -(lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) -(eq_ind nat d0 (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: -T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq -T (lift (S O) n0 (lift (S n) O x0)) (lift (S O) d0 y2)))) (\lambda (y1: -T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T (\lambda (y1: +T).(eq T t0 (lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a +y1 y2))))) (eq_ind nat d0 (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) (\lambda (_: -T).(\lambda (y2: T).(eq T (lift (S O) d0 (lift (S n) O x0)) (lift (S O) d0 -y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) (TLRef n) (lift (S -n) O x0) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T (TLRef n) t0)) -(refl_equal T (TLRef n)) (lift (S O) d0 (TLRef n)) (lift_lref_lt n (S O) d0 -H5)) (refl_equal T (lift (S O) d0 (lift (S n) O x0))) (ty3_abst g n a x1 x0 -H9 x3 H18)) (plus (S n) (minus d0 (S n))) (le_plus_minus (S n) d0 H5)) (lift -(S n) O (lift (S O) (minus d0 (S n)) x0)) (lift_d x0 (S O) (S n) (minus d0 (S -n)) O (le_O_n (minus d0 (S n)))))))))))) H13)) u H8)))))))) -(getl_drop_conf_lt Abst c0 d u n H0 a (S O) (minus d0 (S n)) H7))))) (\lambda -(H5: (eq nat n d0)).(let H6 \def (eq_ind_r nat d0 (\lambda (n0: nat).(drop (S -O) n0 c0 a)) H4 n H5) in (let H7 \def (eq_ind_r nat d0 (\lambda (n0: -nat).(getl n0 c0 (CHead e (Bind Void) u0))) H3 n H5) in (eq_ind nat n -(\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef -n) (lift (S O) n0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq T (lift (S n) O -u) (lift (S O) n0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 -y2))))) (let H8 \def (eq_ind C (CHead d (Bind Abst) u) (\lambda (c1: C).(getl -n c0 c1)) H0 (CHead e (Bind Void) u0) (getl_mono c0 (CHead d (Bind Abst) u) n -H0 (CHead e (Bind Void) u0) H7)) in (let H9 \def (eq_ind C (CHead d (Bind -Abst) u) (\lambda (ee: C).(match ee in C return (\lambda (_: C).Prop) with -[(CSort _) \Rightarrow False | (CHead _ k _) \Rightarrow (match k in K return -(\lambda (_: K).Prop) with [(Bind b) \Rightarrow (match b in B return -(\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow True | +T).(\lambda (y2: T).(eq T (lift (S O) n0 (lift (S n) O x0)) (lift (S O) d0 +y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))))) (ex3_2_intro T T +(\lambda (y1: T).(\lambda (_: T).(eq T (TLRef n) (lift (S O) d0 y1)))) +(\lambda (_: T).(\lambda (y2: T).(eq T (lift (S O) d0 (lift (S n) O x0)) +(lift (S O) d0 y2)))) (\lambda (y1: T).(\lambda (y2: T).(ty3 g a y1 y2))) +(TLRef n) (lift (S n) O x0) (eq_ind_r T (TLRef n) (\lambda (t0: T).(eq T +(TLRef n) t0)) (refl_equal T (TLRef n)) (lift (S O) d0 (TLRef n)) +(lift_lref_lt n (S O) d0 H5)) (refl_equal T (lift (S O) d0 (lift (S n) O +x0))) (ty3_abst g n a x1 x0 H9 x3 H18)) (plus (S n) (minus d0 (S n))) +(le_plus_minus (S n) d0 H5)) (lift (S n) O (lift (S O) (minus d0 (S n)) x0)) +(lift_d x0 (S O) (S n) (minus d0 (S n)) O (le_O_n (minus d0 (S n)))))))))))) +H13)) u H8)))))))) (getl_drop_conf_lt Abst c0 d u n H0 a (S O) (minus d0 (S +n)) H7))))) (\lambda (H5: (eq nat n d0)).(let H6 \def (eq_ind_r nat d0 +(\lambda (n0: nat).(drop (S O) n0 c0 a)) H4 n H5) in (let H7 \def (eq_ind_r +nat d0 (\lambda (n0: nat).(getl n0 c0 (CHead e (Bind Void) u0))) H3 n H5) in +(eq_ind nat n (\lambda (n0: nat).(ex3_2 T T (\lambda (y1: T).(\lambda (_: +T).(eq T (TLRef n) (lift (S O) n0 y1)))) (\lambda (_: T).(\lambda (y2: T).(eq +T (lift (S n) O u) (lift (S O) n0 y2)))) (\lambda (y1: T).(\lambda (y2: +T).(ty3 g a y1 y2))))) (let H8 \def (eq_ind C (CHead d (Bind Abst) u) +(\lambda (c1: C).(getl n c0 c1)) H0 (CHead e (Bind Void) u0) (getl_mono c0 +(CHead d (Bind Abst) u) n H0 (CHead e (Bind Void) u0) H7)) in (let H9 \def +(eq_ind C (CHead d (Bind Abst) u) (\lambda (ee: C).(match ee with [(CSort _) +\Rightarrow False | (CHead _ k _) \Rightarrow (match k with [(Bind b) +\Rightarrow (match b with [Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False]) | (Flat _) \Rightarrow False])])) I (CHead e (Bind Void) u0) (getl_mono c0 (CHead d (Bind Abst) u) n H0 (CHead e (Bind Void) u0) H7)) in (False_ind (ex3_2 T T (\lambda (y1: T).(\lambda (_: T).(eq T (TLRef @@ -1096,7 +1092,4 @@ x2 x0 H19 x1 H9)) (THead (Flat Cast) (lift (S O) d x1) (lift (S O) d x0)) (lift_flat Cast x1 x0 (S O) d)) (THead (Flat Cast) (lift (S O) d x0) (lift (S O) d x2)) (lift_flat Cast x0 x2 (S O) d))) t3 H15))))))) H14)) t4 H7)))) t0 H8))))))) H6)))))))))))))))) c t1 t2 H))))). -(* COMMENTS -Initial nodes: 13105 -END *) -- 2.39.2