X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_1%2FT%2Fdec.ma;h=ae783b82210f1ee9363cb924ba45b746ecf88174;hb=8f5533bd34e93eee2a14cdcfd0595be65651bfa7;hp=a088c40e3bb410629eb0c8e932c9aca9ecce0b8a;hpb=88a68a9c334646bc17314d5327cd3b790202acd6;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_1/T/dec.ma b/matita/matita/contribs/lambdadelta/basic_1/T/dec.ma index a088c40e3..ae783b822 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/T/dec.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/T/dec.ma @@ -14,9 +14,9 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/T/defs.ma". +include "basic_1/T/fwd.ma". -theorem terms_props__bind_dec: +fact terms_props__bind_dec: \forall (b1: B).(\forall (b2: B).(or (eq B b1 b2) ((eq B b1 b2) \to (\forall (P: Prop).P)))) \def @@ -26,41 +26,36 @@ B).(or (eq B Abbr b) ((eq B Abbr b) \to (\forall (P: Prop).P)))) (or_introl (eq B Abbr Abbr) ((eq B Abbr Abbr) \to (\forall (P: Prop).P)) (refl_equal B Abbr)) (or_intror (eq B Abbr Abst) ((eq B Abbr Abst) \to (\forall (P: Prop).P)) (\lambda (H: (eq B Abbr Abst)).(\lambda (P: Prop).(let H0 \def -(eq_ind B Abbr (\lambda (ee: B).(match ee in B return (\lambda (_: B).Prop) -with [Abbr \Rightarrow True | Abst \Rightarrow False | Void \Rightarrow -False])) I Abst H) in (False_ind P H0))))) (or_intror (eq B Abbr Void) ((eq B -Abbr Void) \to (\forall (P: Prop).P)) (\lambda (H: (eq B Abbr Void)).(\lambda -(P: Prop).(let H0 \def (eq_ind B Abbr (\lambda (ee: B).(match ee in B return -(\lambda (_: B).Prop) with [Abbr \Rightarrow True | Abst \Rightarrow False | -Void \Rightarrow False])) I Void H) in (False_ind P H0))))) b2)) (\lambda -(b2: B).(B_ind (\lambda (b: B).(or (eq B Abst b) ((eq B Abst b) \to (\forall -(P: Prop).P)))) (or_intror (eq B Abst Abbr) ((eq B Abst Abbr) \to (\forall -(P: Prop).P)) (\lambda (H: (eq B Abst Abbr)).(\lambda (P: Prop).(let H0 \def -(eq_ind B Abst (\lambda (ee: B).(match ee in B return (\lambda (_: B).Prop) -with [Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow -False])) I Abbr H) in (False_ind P H0))))) (or_introl (eq B Abst Abst) ((eq B -Abst Abst) \to (\forall (P: Prop).P)) (refl_equal B Abst)) (or_intror (eq B -Abst Void) ((eq B Abst Void) \to (\forall (P: Prop).P)) (\lambda (H: (eq B -Abst Void)).(\lambda (P: Prop).(let H0 \def (eq_ind B Abst (\lambda (ee: -B).(match ee in B return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | -Abst \Rightarrow True | Void \Rightarrow False])) I Void H) in (False_ind P -H0))))) b2)) (\lambda (b2: B).(B_ind (\lambda (b: B).(or (eq B Void b) ((eq B -Void b) \to (\forall (P: Prop).P)))) (or_intror (eq B Void Abbr) ((eq B Void -Abbr) \to (\forall (P: Prop).P)) (\lambda (H: (eq B Void Abbr)).(\lambda (P: -Prop).(let H0 \def (eq_ind B Void (\lambda (ee: B).(match ee in B return -(\lambda (_: B).Prop) with [Abbr \Rightarrow False | Abst \Rightarrow False | -Void \Rightarrow True])) I Abbr H) in (False_ind P H0))))) (or_intror (eq B -Void Abst) ((eq B Void Abst) \to (\forall (P: Prop).P)) (\lambda (H: (eq B -Void Abst)).(\lambda (P: Prop).(let H0 \def (eq_ind B Void (\lambda (ee: -B).(match ee in B return (\lambda (_: B).Prop) with [Abbr \Rightarrow False | -Abst \Rightarrow False | Void \Rightarrow True])) I Abst H) in (False_ind P -H0))))) (or_introl (eq B Void Void) ((eq B Void Void) \to (\forall (P: -Prop).P)) (refl_equal B Void)) b2)) b1). -(* COMMENTS -Initial nodes: 559 -END *) +(eq_ind B Abbr (\lambda (ee: B).(match ee with [Abbr \Rightarrow True | Abst +\Rightarrow False | Void \Rightarrow False])) I Abst H) in (False_ind P +H0))))) (or_intror (eq B Abbr Void) ((eq B Abbr Void) \to (\forall (P: +Prop).P)) (\lambda (H: (eq B Abbr Void)).(\lambda (P: Prop).(let H0 \def +(eq_ind B Abbr (\lambda (ee: B).(match ee with [Abbr \Rightarrow True | Abst +\Rightarrow False | Void \Rightarrow False])) I Void H) in (False_ind P +H0))))) b2)) (\lambda (b2: B).(B_ind (\lambda (b: B).(or (eq B Abst b) ((eq B +Abst b) \to (\forall (P: Prop).P)))) (or_intror (eq B Abst Abbr) ((eq B Abst +Abbr) \to (\forall (P: Prop).P)) (\lambda (H: (eq B Abst Abbr)).(\lambda (P: +Prop).(let H0 \def (eq_ind B Abst (\lambda (ee: B).(match ee with [Abbr +\Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False])) I Abbr +H) in (False_ind P H0))))) (or_introl (eq B Abst Abst) ((eq B Abst Abst) \to +(\forall (P: Prop).P)) (refl_equal B Abst)) (or_intror (eq B Abst Void) ((eq +B Abst Void) \to (\forall (P: Prop).P)) (\lambda (H: (eq B Abst +Void)).(\lambda (P: Prop).(let H0 \def (eq_ind B Abst (\lambda (ee: B).(match +ee with [Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow +False])) I Void H) in (False_ind P H0))))) b2)) (\lambda (b2: B).(B_ind +(\lambda (b: B).(or (eq B Void b) ((eq B Void b) \to (\forall (P: Prop).P)))) +(or_intror (eq B Void Abbr) ((eq B Void Abbr) \to (\forall (P: Prop).P)) +(\lambda (H: (eq B Void Abbr)).(\lambda (P: Prop).(let H0 \def (eq_ind B Void +(\lambda (ee: B).(match ee with [Abbr \Rightarrow False | Abst \Rightarrow +False | Void \Rightarrow True])) I Abbr H) in (False_ind P H0))))) (or_intror +(eq B Void Abst) ((eq B Void Abst) \to (\forall (P: Prop).P)) (\lambda (H: +(eq B Void Abst)).(\lambda (P: Prop).(let H0 \def (eq_ind B Void (\lambda +(ee: B).(match ee with [Abbr \Rightarrow False | Abst \Rightarrow False | +Void \Rightarrow True])) I Abst H) in (False_ind P H0))))) (or_introl (eq B +Void Void) ((eq B Void Void) \to (\forall (P: Prop).P)) (refl_equal B Void)) +b2)) b1). -theorem bind_dec_not: +lemma bind_dec_not: \forall (b1: B).(\forall (b2: B).(or (eq B b1 b2) (not (eq B b1 b2)))) \def \lambda (b1: B).(\lambda (b2: B).(let H_x \def (terms_props__bind_dec b1 b2) @@ -69,11 +64,8 @@ Prop).P)) (or (eq B b1 b2) ((eq B b1 b2) \to False)) (\lambda (H0: (eq B b1 b2)).(or_introl (eq B b1 b2) ((eq B b1 b2) \to False) H0)) (\lambda (H0: (((eq B b1 b2) \to (\forall (P: Prop).P)))).(or_intror (eq B b1 b2) ((eq B b1 b2) \to False) (\lambda (H1: (eq B b1 b2)).(H0 H1 False)))) H)))). -(* COMMENTS -Initial nodes: 131 -END *) -theorem terms_props__flat_dec: +fact terms_props__flat_dec: \forall (f1: F).(\forall (f2: F).(or (eq F f1 f2) ((eq F f1 f2) \to (\forall (P: Prop).P)))) \def @@ -83,21 +75,17 @@ F).(or (eq F Appl f) ((eq F Appl f) \to (\forall (P: Prop).P)))) (or_introl (eq F Appl Appl) ((eq F Appl Appl) \to (\forall (P: Prop).P)) (refl_equal F Appl)) (or_intror (eq F Appl Cast) ((eq F Appl Cast) \to (\forall (P: Prop).P)) (\lambda (H: (eq F Appl Cast)).(\lambda (P: Prop).(let H0 \def -(eq_ind F Appl (\lambda (ee: F).(match ee in F return (\lambda (_: F).Prop) -with [Appl \Rightarrow True | Cast \Rightarrow False])) I Cast H) in -(False_ind P H0))))) f2)) (\lambda (f2: F).(F_ind (\lambda (f: F).(or (eq F -Cast f) ((eq F Cast f) \to (\forall (P: Prop).P)))) (or_intror (eq F Cast -Appl) ((eq F Cast Appl) \to (\forall (P: Prop).P)) (\lambda (H: (eq F Cast -Appl)).(\lambda (P: Prop).(let H0 \def (eq_ind F Cast (\lambda (ee: F).(match -ee in F return (\lambda (_: F).Prop) with [Appl \Rightarrow False | Cast +(eq_ind F Appl (\lambda (ee: F).(match ee with [Appl \Rightarrow True | Cast +\Rightarrow False])) I Cast H) in (False_ind P H0))))) f2)) (\lambda (f2: +F).(F_ind (\lambda (f: F).(or (eq F Cast f) ((eq F Cast f) \to (\forall (P: +Prop).P)))) (or_intror (eq F Cast Appl) ((eq F Cast Appl) \to (\forall (P: +Prop).P)) (\lambda (H: (eq F Cast Appl)).(\lambda (P: Prop).(let H0 \def +(eq_ind F Cast (\lambda (ee: F).(match ee with [Appl \Rightarrow False | Cast \Rightarrow True])) I Appl H) in (False_ind P H0))))) (or_introl (eq F Cast Cast) ((eq F Cast Cast) \to (\forall (P: Prop).P)) (refl_equal F Cast)) f2)) f1). -(* COMMENTS -Initial nodes: 263 -END *) -theorem terms_props__kind_dec: +fact terms_props__kind_dec: \forall (k1: K).(\forall (k2: K).(or (eq K k1 k2) ((eq K k1 k2) \to (\forall (P: Prop).P)))) \def @@ -114,39 +102,35 @@ Prop).P)))) (or_introl (eq K (Bind b) (Bind b)) ((eq K (Bind b) (Bind b)) \to b b0) \to (\forall (P: Prop).P)))).(or_intror (eq K (Bind b) (Bind b0)) ((eq K (Bind b) (Bind b0)) \to (\forall (P: Prop).P)) (\lambda (H1: (eq K (Bind b) (Bind b0))).(\lambda (P: Prop).(let H2 \def (f_equal K B (\lambda (e: -K).(match e in K return (\lambda (_: K).B) with [(Bind b1) \Rightarrow b1 | -(Flat _) \Rightarrow b])) (Bind b) (Bind b0) H1) in (let H3 \def (eq_ind_r B -b0 (\lambda (b1: B).((eq B b b1) \to (\forall (P0: Prop).P0))) H0 b H2) in -(H3 (refl_equal B b) P))))))) H)))) (\lambda (f: F).(or_intror (eq K (Bind b) -(Flat f)) ((eq K (Bind b) (Flat f)) \to (\forall (P: Prop).P)) (\lambda (H: -(eq K (Bind b) (Flat f))).(\lambda (P: Prop).(let H0 \def (eq_ind K (Bind b) -(\lambda (ee: K).(match ee in K return (\lambda (_: K).Prop) with [(Bind _) -\Rightarrow True | (Flat _) \Rightarrow False])) I (Flat f) H) in (False_ind -P H0)))))) k2))) (\lambda (f: F).(\lambda (k2: K).(K_ind (\lambda (k: K).(or -(eq K (Flat f) k) ((eq K (Flat f) k) \to (\forall (P: Prop).P)))) (\lambda -(b: B).(or_intror (eq K (Flat f) (Bind b)) ((eq K (Flat f) (Bind b)) \to -(\forall (P: Prop).P)) (\lambda (H: (eq K (Flat f) (Bind b))).(\lambda (P: -Prop).(let H0 \def (eq_ind K (Flat f) (\lambda (ee: K).(match ee in K return -(\lambda (_: K).Prop) with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow -True])) I (Bind b) H) in (False_ind P H0)))))) (\lambda (f0: F).(let H_x \def -(terms_props__flat_dec f f0) in (let H \def H_x in (or_ind (eq F f f0) ((eq F -f f0) \to (\forall (P: Prop).P)) (or (eq K (Flat f) (Flat f0)) ((eq K (Flat -f) (Flat f0)) \to (\forall (P: Prop).P))) (\lambda (H0: (eq F f f0)).(eq_ind -F f (\lambda (f1: F).(or (eq K (Flat f) (Flat f1)) ((eq K (Flat f) (Flat f1)) -\to (\forall (P: Prop).P)))) (or_introl (eq K (Flat f) (Flat f)) ((eq K (Flat -f) (Flat f)) \to (\forall (P: Prop).P)) (refl_equal K (Flat f))) f0 H0)) -(\lambda (H0: (((eq F f f0) \to (\forall (P: Prop).P)))).(or_intror (eq K -(Flat f) (Flat f0)) ((eq K (Flat f) (Flat f0)) \to (\forall (P: Prop).P)) -(\lambda (H1: (eq K (Flat f) (Flat f0))).(\lambda (P: Prop).(let H2 \def -(f_equal K F (\lambda (e: K).(match e in K return (\lambda (_: K).F) with -[(Bind _) \Rightarrow f | (Flat f1) \Rightarrow f1])) (Flat f) (Flat f0) H1) -in (let H3 \def (eq_ind_r F f0 (\lambda (f1: F).((eq F f f1) \to (\forall -(P0: Prop).P0))) H0 f H2) in (H3 (refl_equal F f) P))))))) H)))) k2))) k1). -(* COMMENTS -Initial nodes: 799 -END *) +K).(match e with [(Bind b1) \Rightarrow b1 | (Flat _) \Rightarrow b])) (Bind +b) (Bind b0) H1) in (let H3 \def (eq_ind_r B b0 (\lambda (b1: B).((eq B b b1) +\to (\forall (P0: Prop).P0))) H0 b H2) in (H3 (refl_equal B b) P))))))) H)))) +(\lambda (f: F).(or_intror (eq K (Bind b) (Flat f)) ((eq K (Bind b) (Flat f)) +\to (\forall (P: Prop).P)) (\lambda (H: (eq K (Bind b) (Flat f))).(\lambda +(P: Prop).(let H0 \def (eq_ind K (Bind b) (\lambda (ee: K).(match ee with +[(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])) I (Flat f) H) in +(False_ind P H0)))))) k2))) (\lambda (f: F).(\lambda (k2: K).(K_ind (\lambda +(k: K).(or (eq K (Flat f) k) ((eq K (Flat f) k) \to (\forall (P: Prop).P)))) +(\lambda (b: B).(or_intror (eq K (Flat f) (Bind b)) ((eq K (Flat f) (Bind b)) +\to (\forall (P: Prop).P)) (\lambda (H: (eq K (Flat f) (Bind b))).(\lambda +(P: Prop).(let H0 \def (eq_ind K (Flat f) (\lambda (ee: K).(match ee with +[(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])) I (Bind b) H) in +(False_ind P H0)))))) (\lambda (f0: F).(let H_x \def (terms_props__flat_dec f +f0) in (let H \def H_x in (or_ind (eq F f f0) ((eq F f f0) \to (\forall (P: +Prop).P)) (or (eq K (Flat f) (Flat f0)) ((eq K (Flat f) (Flat f0)) \to +(\forall (P: Prop).P))) (\lambda (H0: (eq F f f0)).(eq_ind F f (\lambda (f1: +F).(or (eq K (Flat f) (Flat f1)) ((eq K (Flat f) (Flat f1)) \to (\forall (P: +Prop).P)))) (or_introl (eq K (Flat f) (Flat f)) ((eq K (Flat f) (Flat f)) \to +(\forall (P: Prop).P)) (refl_equal K (Flat f))) f0 H0)) (\lambda (H0: (((eq F +f f0) \to (\forall (P: Prop).P)))).(or_intror (eq K (Flat f) (Flat f0)) ((eq +K (Flat f) (Flat f0)) \to (\forall (P: Prop).P)) (\lambda (H1: (eq K (Flat f) +(Flat f0))).(\lambda (P: Prop).(let H2 \def (f_equal K F (\lambda (e: +K).(match e with [(Bind _) \Rightarrow f | (Flat f1) \Rightarrow f1])) (Flat +f) (Flat f0) H1) in (let H3 \def (eq_ind_r F f0 (\lambda (f1: F).((eq F f f1) +\to (\forall (P0: Prop).P0))) H0 f H2) in (H3 (refl_equal F f) P))))))) H)))) +k2))) k1). -theorem term_dec: +lemma term_dec: \forall (t1: T).(\forall (t2: T).(or (eq T t1 t2) ((eq T t1 t2) \to (\forall (P: Prop).P)))) \def @@ -163,15 +147,14 @@ n) (TSort n)) \to (\forall (P: Prop).P)) (refl_equal T (TSort n))) n0 H0)) (\lambda (H0: (((eq nat n n0) \to (\forall (P: Prop).P)))).(or_intror (eq T (TSort n) (TSort n0)) ((eq T (TSort n) (TSort n0)) \to (\forall (P: Prop).P)) (\lambda (H1: (eq T (TSort n) (TSort n0))).(\lambda (P: Prop).(let H2 \def -(f_equal T nat (\lambda (e: T).(match e in T return (\lambda (_: T).nat) with -[(TSort n1) \Rightarrow n1 | (TLRef _) \Rightarrow n | (THead _ _ _) -\Rightarrow n])) (TSort n) (TSort n0) H1) in (let H3 \def (eq_ind_r nat n0 -(\lambda (n1: nat).((eq nat n n1) \to (\forall (P0: Prop).P0))) H0 n H2) in -(H3 (refl_equal nat n) P))))))) H)))) (\lambda (n0: nat).(or_intror (eq T -(TSort n) (TLRef n0)) ((eq T (TSort n) (TLRef n0)) \to (\forall (P: Prop).P)) -(\lambda (H: (eq T (TSort n) (TLRef n0))).(\lambda (P: Prop).(let H0 \def -(eq_ind T (TSort n) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | +(f_equal T nat (\lambda (e: T).(match e with [(TSort n1) \Rightarrow n1 | +(TLRef _) \Rightarrow n | (THead _ _ _) \Rightarrow n])) (TSort n) (TSort n0) +H1) in (let H3 \def (eq_ind_r nat n0 (\lambda (n1: nat).((eq nat n n1) \to +(\forall (P0: Prop).P0))) H0 n H2) in (H3 (refl_equal nat n) P))))))) H)))) +(\lambda (n0: nat).(or_intror (eq T (TSort n) (TLRef n0)) ((eq T (TSort n) +(TLRef n0)) \to (\forall (P: Prop).P)) (\lambda (H: (eq T (TSort n) (TLRef +n0))).(\lambda (P: Prop).(let H0 \def (eq_ind T (TSort n) (\lambda (ee: +T).(match ee with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) I (TLRef n0) H) in (False_ind P H0)))))) (\lambda (k: K).(\lambda (t: T).(\lambda (_: (or (eq T (TSort n) t) ((eq T (TSort n) t) \to (\forall (P: Prop).P)))).(\lambda (t0: T).(\lambda (_: (or @@ -179,15 +162,14 @@ T).Prop) with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | Prop).P)))).(or_intror (eq T (TSort n) (THead k t t0)) ((eq T (TSort n) (THead k t t0)) \to (\forall (P: Prop).P)) (\lambda (H1: (eq T (TSort n) (THead k t t0))).(\lambda (P: Prop).(let H2 \def (eq_ind T (TSort n) (\lambda -(ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) -\Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow -False])) I (THead k t t0) H1) in (False_ind P H2)))))))))) t2))) (\lambda (n: -nat).(\lambda (t2: T).(T_ind (\lambda (t: T).(or (eq T (TLRef n) t) ((eq T -(TLRef n) t) \to (\forall (P: Prop).P)))) (\lambda (n0: nat).(or_intror (eq T -(TLRef n) (TSort n0)) ((eq T (TLRef n) (TSort n0)) \to (\forall (P: Prop).P)) -(\lambda (H: (eq T (TLRef n) (TSort n0))).(\lambda (P: Prop).(let H0 \def -(eq_ind T (TLRef n) (\lambda (ee: T).(match ee in T return (\lambda (_: -T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | +(ee: T).(match ee with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow +False | (THead _ _ _) \Rightarrow False])) I (THead k t t0) H1) in (False_ind +P H2)))))))))) t2))) (\lambda (n: nat).(\lambda (t2: T).(T_ind (\lambda (t: +T).(or (eq T (TLRef n) t) ((eq T (TLRef n) t) \to (\forall (P: Prop).P)))) +(\lambda (n0: nat).(or_intror (eq T (TLRef n) (TSort n0)) ((eq T (TLRef n) +(TSort n0)) \to (\forall (P: Prop).P)) (\lambda (H: (eq T (TLRef n) (TSort +n0))).(\lambda (P: Prop).(let H0 \def (eq_ind T (TLRef n) (\lambda (ee: +T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) I (TSort n0) H) in (False_ind P H0)))))) (\lambda (n0: nat).(let H_x \def (nat_dec n n0) in (let H \def H_x in (or_ind (eq nat n n0) ((eq nat n n0) \to (\forall (P: Prop).P)) (or (eq T (TLRef n) @@ -199,34 +181,32 @@ T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | nat n n0) \to (\forall (P: Prop).P)))).(or_intror (eq T (TLRef n) (TLRef n0)) ((eq T (TLRef n) (TLRef n0)) \to (\forall (P: Prop).P)) (\lambda (H1: (eq T (TLRef n) (TLRef n0))).(\lambda (P: Prop).(let H2 \def (f_equal T nat -(\lambda (e: T).(match e in T return (\lambda (_: T).nat) with [(TSort _) -\Rightarrow n | (TLRef n1) \Rightarrow n1 | (THead _ _ _) \Rightarrow n])) -(TLRef n) (TLRef n0) H1) in (let H3 \def (eq_ind_r nat n0 (\lambda (n1: -nat).((eq nat n n1) \to (\forall (P0: Prop).P0))) H0 n H2) in (H3 (refl_equal -nat n) P))))))) H)))) (\lambda (k: K).(\lambda (t: T).(\lambda (_: (or (eq T -(TLRef n) t) ((eq T (TLRef n) t) \to (\forall (P: Prop).P)))).(\lambda (t0: -T).(\lambda (_: (or (eq T (TLRef n) t0) ((eq T (TLRef n) t0) \to (\forall (P: -Prop).P)))).(or_intror (eq T (TLRef n) (THead k t t0)) ((eq T (TLRef n) -(THead k t t0)) \to (\forall (P: Prop).P)) (\lambda (H1: (eq T (TLRef n) -(THead k t t0))).(\lambda (P: Prop).(let H2 \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 k t t0) H1) in (False_ind P H2)))))))))) t2))) (\lambda (k: -K).(\lambda (t: T).(\lambda (H: ((\forall (t2: T).(or (eq T t t2) ((eq T t -t2) \to (\forall (P: Prop).P)))))).(\lambda (t0: T).(\lambda (H0: ((\forall -(t2: T).(or (eq T t0 t2) ((eq T t0 t2) \to (\forall (P: +(\lambda (e: T).(match e with [(TSort _) \Rightarrow n | (TLRef n1) +\Rightarrow n1 | (THead _ _ _) \Rightarrow n])) (TLRef n) (TLRef n0) H1) in +(let H3 \def (eq_ind_r nat n0 (\lambda (n1: nat).((eq nat n n1) \to (\forall +(P0: Prop).P0))) H0 n H2) in (H3 (refl_equal nat n) P))))))) H)))) (\lambda +(k: K).(\lambda (t: T).(\lambda (_: (or (eq T (TLRef n) t) ((eq T (TLRef n) +t) \to (\forall (P: Prop).P)))).(\lambda (t0: T).(\lambda (_: (or (eq T +(TLRef n) t0) ((eq T (TLRef n) t0) \to (\forall (P: Prop).P)))).(or_intror +(eq T (TLRef n) (THead k t t0)) ((eq T (TLRef n) (THead k t t0)) \to (\forall +(P: Prop).P)) (\lambda (H1: (eq T (TLRef n) (THead k t t0))).(\lambda (P: +Prop).(let H2 \def (eq_ind T (TLRef n) (\lambda (ee: T).(match ee with +[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) +\Rightarrow False])) I (THead k t t0) H1) in (False_ind P H2)))))))))) t2))) +(\lambda (k: K).(\lambda (t: T).(\lambda (H: ((\forall (t2: T).(or (eq T t +t2) ((eq T t t2) \to (\forall (P: Prop).P)))))).(\lambda (t0: T).(\lambda +(H0: ((\forall (t2: T).(or (eq T t0 t2) ((eq T t0 t2) \to (\forall (P: Prop).P)))))).(\lambda (t2: T).(T_ind (\lambda (t3: T).(or (eq T (THead k t t0) t3) ((eq T (THead k t t0) t3) \to (\forall (P: Prop).P)))) (\lambda (n: nat).(or_intror (eq T (THead k t t0) (TSort n)) ((eq T (THead k t t0) (TSort n)) \to (\forall (P: Prop).P)) (\lambda (H1: (eq T (THead k t t0) (TSort n))).(\lambda (P: Prop).(let H2 \def (eq_ind T (THead k t t0) (\lambda (ee: -T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow -False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I -(TSort n) H1) in (False_ind P H2)))))) (\lambda (n: nat).(or_intror (eq T -(THead k t t0) (TLRef n)) ((eq T (THead k t t0) (TLRef n)) \to (\forall (P: -Prop).P)) (\lambda (H1: (eq T (THead k t t0) (TLRef n))).(\lambda (P: -Prop).(let H2 \def (eq_ind T (THead k t t0) (\lambda (ee: T).(match ee in T -return (\lambda (_: T).Prop) with [(TSort _) \Rightarrow False | (TLRef _) +T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False +| (THead _ _ _) \Rightarrow True])) I (TSort n) H1) in (False_ind P H2)))))) +(\lambda (n: nat).(or_intror (eq T (THead k t t0) (TLRef n)) ((eq T (THead k +t t0) (TLRef n)) \to (\forall (P: Prop).P)) (\lambda (H1: (eq T (THead k t +t0) (TLRef n))).(\lambda (P: Prop).(let H2 \def (eq_ind T (THead k t t0) +(\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) I (TLRef n) H1) in (False_ind P H2)))))) (\lambda (k0: K).(\lambda (t3: T).(\lambda (H1: (or (eq T (THead k t t0) t3) ((eq T (THead k t t0) t3) \to (\forall (P: @@ -257,19 +237,18 @@ k0 H10)) (\lambda (H10: (((eq K k k0) \to (\forall (P: Prop).P)))).(or_intror (eq T (THead k t t0) (THead k0 t t0)) ((eq T (THead k t t0) (THead k0 t t0)) \to (\forall (P: Prop).P)) (\lambda (H11: (eq T (THead k t t0) (THead k0 t t0))).(\lambda (P: Prop).(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 k1 _ _) \Rightarrow k1])) (THead k t t0) (THead k0 t -t0) H11) in (let H13 \def (eq_ind_r K k0 (\lambda (k1: K).((eq K k k1) \to -(\forall (P0: Prop).P0))) H10 k H12) in (H13 (refl_equal K k) P))))))) H9))) -t4 H7))) (\lambda (H7: (((eq T t0 t4) \to (\forall (P: Prop).P)))).(or_intror -(eq T (THead k t t0) (THead k0 t t4)) ((eq T (THead k t t0) (THead k0 t t4)) -\to (\forall (P: Prop).P)) (\lambda (H8: (eq T (THead k t t0) (THead k0 t -t4))).(\lambda (P: Prop).(let H9 \def (f_equal T K (\lambda (e: T).(match e -in T return (\lambda (_: T).K) with [(TSort _) \Rightarrow k | (TLRef _) -\Rightarrow k | (THead k1 _ _) \Rightarrow k1])) (THead k t t0) (THead k0 t -t4) H8) in ((let H10 \def (f_equal T T (\lambda (e: T).(match e in T return -(\lambda (_: T).T) with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 -| (THead _ _ t5) \Rightarrow t5])) (THead k t t0) (THead k0 t t4) H8) in +with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k1 _ _) +\Rightarrow k1])) (THead k t t0) (THead k0 t t0) H11) in (let H13 \def +(eq_ind_r K k0 (\lambda (k1: K).((eq K k k1) \to (\forall (P0: Prop).P0))) +H10 k H12) in (H13 (refl_equal K k) P))))))) H9))) t4 H7))) (\lambda (H7: +(((eq T t0 t4) \to (\forall (P: Prop).P)))).(or_intror (eq T (THead k t t0) +(THead k0 t t4)) ((eq T (THead k t t0) (THead k0 t t4)) \to (\forall (P: +Prop).P)) (\lambda (H8: (eq T (THead k t t0) (THead k0 t t4))).(\lambda (P: +Prop).(let H9 \def (f_equal T K (\lambda (e: T).(match e with [(TSort _) +\Rightarrow k | (TLRef _) \Rightarrow k | (THead k1 _ _) \Rightarrow k1])) +(THead k t t0) (THead k0 t t4) H8) in ((let H10 \def (f_equal T T (\lambda +(e: T).(match e with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | +(THead _ _ t5) \Rightarrow t5])) (THead k t t0) (THead k0 t t4) H8) in (\lambda (_: (eq K k k0)).(let H12 \def (eq_ind_r T t4 (\lambda (t5: T).((eq T t0 t5) \to (\forall (P0: Prop).P0))) H7 t0 H10) in (let H13 \def (eq_ind_r T t4 (\lambda (t5: T).(or (eq T (THead k t t0) t5) ((eq T (THead k t t0) t5) @@ -278,26 +257,22 @@ H9)))))) H6))) t3 H4))) (\lambda (H4: (((eq T t t3) \to (\forall (P: Prop).P)))).(or_intror (eq T (THead k t t0) (THead k0 t3 t4)) ((eq T (THead k t t0) (THead k0 t3 t4)) \to (\forall (P: Prop).P)) (\lambda (H5: (eq T (THead k t t0) (THead k0 t3 t4))).(\lambda (P: Prop).(let H6 \def (f_equal T K -(\lambda (e: T).(match e in T return (\lambda (_: T).K) with [(TSort _) -\Rightarrow k | (TLRef _) \Rightarrow k | (THead k1 _ _) \Rightarrow k1])) -(THead k t t0) (THead k0 t3 t4) H5) in ((let H7 \def (f_equal T T (\lambda -(e: T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t -| (TLRef _) \Rightarrow t | (THead _ t5 _) \Rightarrow t5])) (THead k t t0) -(THead k0 t3 t4) 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 _ _ t5) \Rightarrow t5])) (THead k t t0) (THead k0 t3 -t4) H5) in (\lambda (H9: (eq T t t3)).(\lambda (_: (eq K k k0)).(let H11 \def -(eq_ind_r T t4 (\lambda (t5: T).(or (eq T (THead k t t0) t5) ((eq T (THead k -t t0) t5) \to (\forall (P0: Prop).P0)))) H2 t0 H8) in (let H12 \def (eq_ind_r -T t3 (\lambda (t5: T).((eq T t t5) \to (\forall (P0: Prop).P0))) H4 t H9) in -(let H13 \def (eq_ind_r T t3 (\lambda (t5: T).(or (eq T (THead k t t0) t5) -((eq T (THead k t t0) t5) \to (\forall (P0: Prop).P0)))) H1 t H9) in (H12 +(\lambda (e: T).(match e with [(TSort _) \Rightarrow k | (TLRef _) +\Rightarrow k | (THead k1 _ _) \Rightarrow k1])) (THead k t t0) (THead k0 t3 +t4) H5) in ((let H7 \def (f_equal T T (\lambda (e: T).(match e with [(TSort +_) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ t5 _) \Rightarrow t5])) +(THead k t t0) (THead k0 t3 t4) H5) in ((let H8 \def (f_equal T T (\lambda +(e: T).(match e with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | +(THead _ _ t5) \Rightarrow t5])) (THead k t t0) (THead k0 t3 t4) H5) in +(\lambda (H9: (eq T t t3)).(\lambda (_: (eq K k k0)).(let H11 \def (eq_ind_r +T t4 (\lambda (t5: T).(or (eq T (THead k t t0) t5) ((eq T (THead k t t0) t5) +\to (\forall (P0: Prop).P0)))) H2 t0 H8) in (let H12 \def (eq_ind_r T t3 +(\lambda (t5: T).((eq T t t5) \to (\forall (P0: Prop).P0))) H4 t H9) in (let +H13 \def (eq_ind_r T t3 (\lambda (t5: T).(or (eq T (THead k t t0) t5) ((eq T +(THead k t t0) t5) \to (\forall (P0: Prop).P0)))) H1 t H9) in (H12 (refl_equal T t) P))))))) H7)) H6)))))) H3)))))))) t2))))))) t1). -(* COMMENTS -Initial nodes: 2821 -END *) -theorem binder_dec: +lemma binder_dec: \forall (t: T).(or (ex_3 B T T (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(eq T t (THead (Bind b) w u)))))) (\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T t (THead (Bind b) w u)) \to (\forall (P: Prop).P)))))) @@ -311,15 +286,14 @@ b) w u)))))) (\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T (TSort n) (THead (Bind b) w u)) \to (\forall (P: Prop).P))))) (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(\lambda (H: (eq T (TSort n) (THead (Bind b) w u))).(\lambda (P: Prop).(let H0 \def (eq_ind T (TSort n) (\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) w u) H) in (False_ind P H0))))))))) (\lambda (n: -nat).(or_intror (ex_3 B T T (\lambda (b: B).(\lambda (w: T).(\lambda (u: -T).(eq T (TLRef n) (THead (Bind b) w u)))))) (\forall (b: B).(\forall (w: -T).(\forall (u: T).((eq T (TLRef n) (THead (Bind b) w u)) \to (\forall (P: -Prop).P))))) (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(\lambda (H: (eq -T (TLRef n) (THead (Bind b) w u))).(\lambda (P: Prop).(let H0 \def (eq_ind T -(TLRef n) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with +T).(match ee with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | +(THead _ _ _) \Rightarrow False])) I (THead (Bind b) w u) H) in (False_ind P +H0))))))))) (\lambda (n: nat).(or_intror (ex_3 B T T (\lambda (b: B).(\lambda +(w: T).(\lambda (u: T).(eq T (TLRef n) (THead (Bind b) w u)))))) (\forall (b: +B).(\forall (w: T).(\forall (u: T).((eq T (TLRef n) (THead (Bind b) w u)) \to +(\forall (P: Prop).P))))) (\lambda (b: B).(\lambda (w: T).(\lambda (u: +T).(\lambda (H: (eq T (TLRef n) (THead (Bind b) w u))).(\lambda (P: +Prop).(let H0 \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) w u) H) in (False_ind P H0))))))))) (\lambda (k: K).(K_ind (\lambda (k0: K).(\forall (t0: T).((or (ex_3 B T T @@ -357,16 +331,12 @@ T).(\lambda (u: T).(eq T (THead (Flat f) t0 t1) (THead (Bind b) w u)))))) (THead (Bind b) w u)) \to (\forall (P: Prop).P))))) (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(\lambda (H1: (eq T (THead (Flat f) t0 t1) (THead (Bind b) w u))).(\lambda (P: Prop).(let H2 \def (eq_ind T (THead (Flat f) t0 -t1) (\lambda (ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort -_) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k0 _ _) -\Rightarrow (match k0 in K return (\lambda (_: K).Prop) with [(Bind _) +t1) (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) +\Rightarrow False | (THead k0 _ _) \Rightarrow (match k0 with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) I (THead (Bind b) w u) H1) in (False_ind P H2))))))))))))) k)) t). -(* COMMENTS -Initial nodes: 1063 -END *) -theorem abst_dec: +lemma abst_dec: \forall (u: T).(\forall (v: T).(or (ex T (\lambda (t: T).(eq T u (THead (Bind Abst) v t)))) (\forall (t: T).((eq T u (THead (Bind Abst) v t)) \to (\forall (P: Prop).P))))) @@ -378,69 +348,64 @@ theorem abst_dec: t)))) (\forall (t: T).((eq T (TSort n) (THead (Bind Abst) v t)) \to (\forall (P: Prop).P))) (\lambda (t: T).(\lambda (H: (eq T (TSort n) (THead (Bind Abst) v t))).(\lambda (P: Prop).(let H0 \def (eq_ind T (TSort n) (\lambda -(ee: T).(match ee in T return (\lambda (_: T).Prop) with [(TSort _) -\Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow -False])) I (THead (Bind Abst) v t) H) in (False_ind P H0)))))))) (\lambda (n: -nat).(\lambda (v: T).(or_intror (ex T (\lambda (t: T).(eq T (TLRef n) (THead -(Bind Abst) v t)))) (\forall (t: T).((eq T (TLRef n) (THead (Bind Abst) v t)) -\to (\forall (P: Prop).P))) (\lambda (t: T).(\lambda (H: (eq T (TLRef n) -(THead (Bind Abst) v t))).(\lambda (P: Prop).(let H0 \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 Abst) v t) H) in (False_ind P H0)))))))) (\lambda (k: -K).(\lambda (t: T).(\lambda (_: ((\forall (v: T).(or (ex T (\lambda (t0: -T).(eq T t (THead (Bind Abst) v t0)))) (\forall (t0: T).((eq T t (THead (Bind -Abst) v t0)) \to (\forall (P: Prop).P))))))).(\lambda (t0: T).(\lambda (_: -((\forall (v: T).(or (ex T (\lambda (t1: T).(eq T t0 (THead (Bind Abst) v -t1)))) (\forall (t1: T).((eq T t0 (THead (Bind Abst) v t1)) \to (\forall (P: -Prop).P))))))).(\lambda (v: T).(let H_x \def (terms_props__kind_dec k (Bind -Abst)) in (let H1 \def H_x in (or_ind (eq K k (Bind Abst)) ((eq K k (Bind -Abst)) \to (\forall (P: Prop).P)) (or (ex T (\lambda (t1: T).(eq T (THead k t -t0) (THead (Bind Abst) v t1)))) (\forall (t1: T).((eq T (THead k t t0) (THead -(Bind Abst) v t1)) \to (\forall (P: Prop).P)))) (\lambda (H2: (eq K k (Bind -Abst))).(eq_ind_r K (Bind Abst) (\lambda (k0: K).(or (ex T (\lambda (t1: -T).(eq T (THead k0 t t0) (THead (Bind Abst) v t1)))) (\forall (t1: T).((eq T -(THead k0 t t0) (THead (Bind Abst) v t1)) \to (\forall (P: Prop).P))))) (let -H_x0 \def (term_dec t v) in (let H3 \def H_x0 in (or_ind (eq T t v) ((eq T t -v) \to (\forall (P: Prop).P)) (or (ex T (\lambda (t1: T).(eq T (THead (Bind -Abst) t t0) (THead (Bind Abst) v t1)))) (\forall (t1: T).((eq T (THead (Bind -Abst) t t0) (THead (Bind Abst) v t1)) \to (\forall (P: Prop).P)))) (\lambda -(H4: (eq T t v)).(eq_ind T t (\lambda (t1: T).(or (ex T (\lambda (t2: T).(eq -T (THead (Bind Abst) t t0) (THead (Bind Abst) t1 t2)))) (\forall (t2: T).((eq -T (THead (Bind Abst) t t0) (THead (Bind Abst) t1 t2)) \to (\forall (P: -Prop).P))))) (or_introl (ex T (\lambda (t1: T).(eq T (THead (Bind Abst) t t0) -(THead (Bind Abst) t t1)))) (\forall (t1: T).((eq T (THead (Bind Abst) t t0) -(THead (Bind Abst) t t1)) \to (\forall (P: Prop).P))) (ex_intro T (\lambda -(t1: T).(eq T (THead (Bind Abst) t t0) (THead (Bind Abst) t t1))) t0 -(refl_equal T (THead (Bind Abst) t t0)))) v H4)) (\lambda (H4: (((eq T t v) -\to (\forall (P: Prop).P)))).(or_intror (ex T (\lambda (t1: T).(eq T (THead -(Bind Abst) t t0) (THead (Bind Abst) v t1)))) (\forall (t1: T).((eq T (THead -(Bind Abst) t t0) (THead (Bind Abst) v t1)) \to (\forall (P: Prop).P))) -(\lambda (t1: T).(\lambda (H5: (eq T (THead (Bind Abst) t t0) (THead (Bind -Abst) v t1))).(\lambda (P: Prop).(let H6 \def (f_equal T T (\lambda (e: -T).(match e in T return (\lambda (_: T).T) with [(TSort _) \Rightarrow t | -(TLRef _) \Rightarrow t | (THead _ t2 _) \Rightarrow t2])) (THead (Bind Abst) -t t0) (THead (Bind Abst) v 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 _ _ t2) \Rightarrow t2])) (THead (Bind -Abst) t t0) (THead (Bind Abst) v t1) H5) in (\lambda (H8: (eq T t v)).(H4 H8 -P))) H6))))))) H3))) k H2)) (\lambda (H2: (((eq K k (Bind Abst)) \to (\forall -(P: Prop).P)))).(or_intror (ex T (\lambda (t1: T).(eq T (THead k t t0) (THead -(Bind Abst) v t1)))) (\forall (t1: T).((eq T (THead k t t0) (THead (Bind -Abst) v t1)) \to (\forall (P: Prop).P))) (\lambda (t1: T).(\lambda (H3: (eq T -(THead k t t0) (THead (Bind Abst) v t1))).(\lambda (P: Prop).(let H4 \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 t t0) (THead (Bind Abst) v t1) H3) in ((let H5 -\def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) +(ee: T).(match ee with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow +False | (THead _ _ _) \Rightarrow False])) I (THead (Bind Abst) v t) H) in +(False_ind P H0)))))))) (\lambda (n: nat).(\lambda (v: T).(or_intror (ex T +(\lambda (t: T).(eq T (TLRef n) (THead (Bind Abst) v t)))) (\forall (t: +T).((eq T (TLRef n) (THead (Bind Abst) v t)) \to (\forall (P: Prop).P))) +(\lambda (t: T).(\lambda (H: (eq T (TLRef n) (THead (Bind Abst) v +t))).(\lambda (P: Prop).(let H0 \def (eq_ind T (TLRef n) (\lambda (ee: +T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | +(THead _ _ _) \Rightarrow False])) I (THead (Bind Abst) v t) H) in (False_ind +P H0)))))))) (\lambda (k: K).(\lambda (t: T).(\lambda (_: ((\forall (v: +T).(or (ex T (\lambda (t0: T).(eq T t (THead (Bind Abst) v t0)))) (\forall +(t0: T).((eq T t (THead (Bind Abst) v t0)) \to (\forall (P: +Prop).P))))))).(\lambda (t0: T).(\lambda (_: ((\forall (v: T).(or (ex T +(\lambda (t1: T).(eq T t0 (THead (Bind Abst) v t1)))) (\forall (t1: T).((eq T +t0 (THead (Bind Abst) v t1)) \to (\forall (P: Prop).P))))))).(\lambda (v: +T).(let H_x \def (terms_props__kind_dec k (Bind Abst)) in (let H1 \def H_x in +(or_ind (eq K k (Bind Abst)) ((eq K k (Bind Abst)) \to (\forall (P: Prop).P)) +(or (ex T (\lambda (t1: T).(eq T (THead k t t0) (THead (Bind Abst) v t1)))) +(\forall (t1: T).((eq T (THead k t t0) (THead (Bind Abst) v t1)) \to (\forall +(P: Prop).P)))) (\lambda (H2: (eq K k (Bind Abst))).(eq_ind_r K (Bind Abst) +(\lambda (k0: K).(or (ex T (\lambda (t1: T).(eq T (THead k0 t t0) (THead +(Bind Abst) v t1)))) (\forall (t1: T).((eq T (THead k0 t t0) (THead (Bind +Abst) v t1)) \to (\forall (P: Prop).P))))) (let H_x0 \def (term_dec t v) in +(let H3 \def H_x0 in (or_ind (eq T t v) ((eq T t v) \to (\forall (P: +Prop).P)) (or (ex T (\lambda (t1: T).(eq T (THead (Bind Abst) t t0) (THead +(Bind Abst) v t1)))) (\forall (t1: T).((eq T (THead (Bind Abst) t t0) (THead +(Bind Abst) v t1)) \to (\forall (P: Prop).P)))) (\lambda (H4: (eq T t +v)).(eq_ind T t (\lambda (t1: T).(or (ex T (\lambda (t2: T).(eq T (THead +(Bind Abst) t t0) (THead (Bind Abst) t1 t2)))) (\forall (t2: T).((eq T (THead +(Bind Abst) t t0) (THead (Bind Abst) t1 t2)) \to (\forall (P: Prop).P))))) +(or_introl (ex T (\lambda (t1: T).(eq T (THead (Bind Abst) t t0) (THead (Bind +Abst) t t1)))) (\forall (t1: T).((eq T (THead (Bind Abst) t t0) (THead (Bind +Abst) t t1)) \to (\forall (P: Prop).P))) (ex_intro T (\lambda (t1: T).(eq T +(THead (Bind Abst) t t0) (THead (Bind Abst) t t1))) t0 (refl_equal T (THead +(Bind Abst) t t0)))) v H4)) (\lambda (H4: (((eq T t v) \to (\forall (P: +Prop).P)))).(or_intror (ex T (\lambda (t1: T).(eq T (THead (Bind Abst) t t0) +(THead (Bind Abst) v t1)))) (\forall (t1: T).((eq T (THead (Bind Abst) t t0) +(THead (Bind Abst) v t1)) \to (\forall (P: Prop).P))) (\lambda (t1: +T).(\lambda (H5: (eq T (THead (Bind Abst) t t0) (THead (Bind Abst) v +t1))).(\lambda (P: Prop).(let H6 \def (f_equal T T (\lambda (e: T).(match e with [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ t2 _) -\Rightarrow t2])) (THead k t t0) (THead (Bind Abst) v t1) H3) in ((let H6 -\def (f_equal T T (\lambda (e: T).(match e in T return (\lambda (_: T).T) -with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t2) +\Rightarrow t2])) (THead (Bind Abst) t t0) (THead (Bind Abst) v t1) H5) in +((let H7 \def (f_equal T T (\lambda (e: T).(match e with [(TSort _) +\Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t2) \Rightarrow t2])) +(THead (Bind Abst) t t0) (THead (Bind Abst) v t1) H5) in (\lambda (H8: (eq T +t v)).(H4 H8 P))) H6))))))) H3))) k H2)) (\lambda (H2: (((eq K k (Bind Abst)) +\to (\forall (P: Prop).P)))).(or_intror (ex T (\lambda (t1: T).(eq T (THead k +t t0) (THead (Bind Abst) v t1)))) (\forall (t1: T).((eq T (THead k t t0) +(THead (Bind Abst) v t1)) \to (\forall (P: Prop).P))) (\lambda (t1: +T).(\lambda (H3: (eq T (THead k t t0) (THead (Bind Abst) v t1))).(\lambda (P: +Prop).(let H4 \def (f_equal T K (\lambda (e: T).(match e with [(TSort _) +\Rightarrow k | (TLRef _) \Rightarrow k | (THead k0 _ _) \Rightarrow k0])) +(THead k t t0) (THead (Bind Abst) v t1) H3) in ((let H5 \def (f_equal T T +(\lambda (e: T).(match e with [(TSort _) \Rightarrow t | (TLRef _) +\Rightarrow t | (THead _ t2 _) \Rightarrow t2])) (THead k t t0) (THead (Bind +Abst) v t1) H3) in ((let H6 \def (f_equal T T (\lambda (e: T).(match e with +[(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t2) \Rightarrow t2])) (THead k t t0) (THead (Bind Abst) v t1) H3) in (\lambda (_: (eq T t v)).(\lambda (H8: (eq K k (Bind Abst))).(H2 H8 P)))) H5)) H4))))))) H1))))))))) u). -(* COMMENTS -Initial nodes: 1305 -END *)