From: Ferruccio Guidi Date: Wed, 4 Feb 2015 16:08:16 +0000 (+0000) Subject: - some improvements in the generation of terms X-Git-Tag: make_still_working~754 X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=commitdiff_plain;h=14a8276e6d877c2281a1fda452ed3e4c150f5d39 - some improvements in the generation of terms - basic_1: we commit sections s and tlist --- diff --git a/matita/matita/contribs/lambdadelta/basic_1/T/dec.ma b/matita/matita/contribs/lambdadelta/basic_1/T/dec.ma index e8e7ed885..48a1cd509 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/T/dec.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/T/dec.ma @@ -20,650 +20,636 @@ theorem 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 - \lambda (b1: B).(let TMP_61 \def (\lambda (b: B).(\forall (b2: B).(let -TMP_60 \def (eq B b b2) in (let TMP_59 \def ((eq B b b2) \to (\forall (P: -Prop).P)) in (or TMP_60 TMP_59))))) in (let TMP_58 \def (\lambda (b2: B).(let -TMP_57 \def (\lambda (b: B).(let TMP_56 \def (eq B Abbr b) in (let TMP_55 -\def ((eq B Abbr b) \to (\forall (P: Prop).P)) in (or TMP_56 TMP_55)))) in -(let TMP_53 \def (eq B Abbr Abbr) in (let TMP_52 \def ((eq B Abbr Abbr) \to -(\forall (P: Prop).P)) in (let TMP_51 \def (refl_equal B Abbr) in (let TMP_54 -\def (or_introl TMP_53 TMP_52 TMP_51) in (let TMP_49 \def (eq B Abbr Abst) in -(let TMP_48 \def ((eq B Abbr Abst) \to (\forall (P: Prop).P)) in (let TMP_47 -\def (\lambda (H: (eq B Abbr Abst)).(\lambda (P: Prop).(let TMP_46 \def -(\lambda (ee: B).(match ee in B with [Abbr \Rightarrow True | Abst -\Rightarrow False | Void \Rightarrow False])) in (let H0 \def (eq_ind B Abbr -TMP_46 I Abst H) in (False_ind P H0))))) in (let TMP_50 \def (or_intror -TMP_49 TMP_48 TMP_47) in (let TMP_44 \def (eq B Abbr Void) in (let TMP_43 -\def ((eq B Abbr Void) \to (\forall (P: Prop).P)) in (let TMP_42 \def -(\lambda (H: (eq B Abbr Void)).(\lambda (P: Prop).(let TMP_41 \def (\lambda -(ee: B).(match ee in B with [Abbr \Rightarrow True | Abst \Rightarrow False | -Void \Rightarrow False])) in (let H0 \def (eq_ind B Abbr TMP_41 I Void H) in -(False_ind P H0))))) in (let TMP_45 \def (or_intror TMP_44 TMP_43 TMP_42) in -(B_ind TMP_57 TMP_54 TMP_50 TMP_45 b2))))))))))))))) in (let TMP_40 \def -(\lambda (b2: B).(let TMP_39 \def (\lambda (b: B).(let TMP_38 \def (eq B Abst -b) in (let TMP_37 \def ((eq B Abst b) \to (\forall (P: Prop).P)) in (or -TMP_38 TMP_37)))) in (let TMP_35 \def (eq B Abst Abbr) in (let TMP_34 \def -((eq B Abst Abbr) \to (\forall (P: Prop).P)) in (let TMP_33 \def (\lambda (H: -(eq B Abst Abbr)).(\lambda (P: Prop).(let TMP_32 \def (\lambda (ee: B).(match -ee in B with [Abbr \Rightarrow False | Abst \Rightarrow True | Void -\Rightarrow False])) in (let H0 \def (eq_ind B Abst TMP_32 I Abbr H) in -(False_ind P H0))))) in (let TMP_36 \def (or_intror TMP_35 TMP_34 TMP_33) in -(let TMP_30 \def (eq B Abst Abst) in (let TMP_29 \def ((eq B Abst Abst) \to -(\forall (P: Prop).P)) in (let TMP_28 \def (refl_equal B Abst) in (let TMP_31 -\def (or_introl TMP_30 TMP_29 TMP_28) in (let TMP_26 \def (eq B Abst Void) in -(let TMP_25 \def ((eq B Abst Void) \to (\forall (P: Prop).P)) in (let TMP_24 -\def (\lambda (H: (eq B Abst Void)).(\lambda (P: Prop).(let TMP_23 \def -(\lambda (ee: B).(match ee in B with [Abbr \Rightarrow False | Abst -\Rightarrow True | Void \Rightarrow False])) in (let H0 \def (eq_ind B Abst -TMP_23 I Void H) in (False_ind P H0))))) in (let TMP_27 \def (or_intror -TMP_26 TMP_25 TMP_24) in (B_ind TMP_39 TMP_36 TMP_31 TMP_27 b2))))))))))))))) -in (let TMP_22 \def (\lambda (b2: B).(let TMP_21 \def (\lambda (b: B).(let -TMP_20 \def (eq B Void b) in (let TMP_19 \def ((eq B Void b) \to (\forall (P: -Prop).P)) in (or TMP_20 TMP_19)))) in (let TMP_17 \def (eq B Void Abbr) in -(let TMP_16 \def ((eq B Void Abbr) \to (\forall (P: Prop).P)) in (let TMP_15 -\def (\lambda (H: (eq B Void Abbr)).(\lambda (P: Prop).(let TMP_14 \def -(\lambda (ee: B).(match ee in B with [Abbr \Rightarrow False | Abst + \lambda (b1: B).(let TMP_3 \def (\lambda (b: B).(\forall (b2: B).(let TMP_1 +\def (eq B b b2) in (let TMP_2 \def ((eq B b b2) \to (\forall (P: Prop).P)) +in (or TMP_1 TMP_2))))) in (let TMP_21 \def (\lambda (b2: B).(let TMP_6 \def +(\lambda (b: B).(let TMP_4 \def (eq B Abbr b) in (let TMP_5 \def ((eq B Abbr +b) \to (\forall (P: Prop).P)) in (or TMP_4 TMP_5)))) in (let TMP_7 \def (eq B +Abbr Abbr) in (let TMP_8 \def ((eq B Abbr Abbr) \to (\forall (P: Prop).P)) in +(let TMP_9 \def (refl_equal B Abbr) in (let TMP_10 \def (or_introl TMP_7 +TMP_8 TMP_9) in (let TMP_11 \def (eq B Abbr Abst) in (let TMP_12 \def ((eq B +Abbr Abst) \to (\forall (P: Prop).P)) in (let TMP_14 \def (\lambda (H: (eq B +Abbr Abst)).(\lambda (P: Prop).(let TMP_13 \def (\lambda (ee: B).(match ee +with [Abbr \Rightarrow True | Abst \Rightarrow False | Void \Rightarrow +False])) in (let H0 \def (eq_ind B Abbr TMP_13 I Abst H) in (False_ind P +H0))))) in (let TMP_15 \def (or_intror TMP_11 TMP_12 TMP_14) in (let TMP_16 +\def (eq B Abbr Void) in (let TMP_17 \def ((eq B Abbr Void) \to (\forall (P: +Prop).P)) in (let TMP_19 \def (\lambda (H: (eq B Abbr Void)).(\lambda (P: +Prop).(let TMP_18 \def (\lambda (ee: B).(match ee with [Abbr \Rightarrow True +| Abst \Rightarrow False | Void \Rightarrow False])) in (let H0 \def (eq_ind +B Abbr TMP_18 I Void H) in (False_ind P H0))))) in (let TMP_20 \def +(or_intror TMP_16 TMP_17 TMP_19) in (B_ind TMP_6 TMP_10 TMP_15 TMP_20 +b2))))))))))))))) in (let TMP_39 \def (\lambda (b2: B).(let TMP_24 \def +(\lambda (b: B).(let TMP_22 \def (eq B Abst b) in (let TMP_23 \def ((eq B +Abst b) \to (\forall (P: Prop).P)) in (or TMP_22 TMP_23)))) in (let TMP_25 +\def (eq B Abst Abbr) in (let TMP_26 \def ((eq B Abst Abbr) \to (\forall (P: +Prop).P)) in (let TMP_28 \def (\lambda (H: (eq B Abst Abbr)).(\lambda (P: +Prop).(let TMP_27 \def (\lambda (ee: B).(match ee with [Abbr \Rightarrow +False | Abst \Rightarrow True | Void \Rightarrow False])) in (let H0 \def +(eq_ind B Abst TMP_27 I Abbr H) in (False_ind P H0))))) in (let TMP_29 \def +(or_intror TMP_25 TMP_26 TMP_28) in (let TMP_30 \def (eq B Abst Abst) in (let +TMP_31 \def ((eq B Abst Abst) \to (\forall (P: Prop).P)) in (let TMP_32 \def +(refl_equal B Abst) in (let TMP_33 \def (or_introl TMP_30 TMP_31 TMP_32) in +(let TMP_34 \def (eq B Abst Void) in (let TMP_35 \def ((eq B Abst Void) \to +(\forall (P: Prop).P)) in (let TMP_37 \def (\lambda (H: (eq B Abst +Void)).(\lambda (P: Prop).(let TMP_36 \def (\lambda (ee: B).(match ee with +[Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow False])) +in (let H0 \def (eq_ind B Abst TMP_36 I Void H) in (False_ind P H0))))) in +(let TMP_38 \def (or_intror TMP_34 TMP_35 TMP_37) in (B_ind TMP_24 TMP_29 +TMP_33 TMP_38 b2))))))))))))))) in (let TMP_57 \def (\lambda (b2: B).(let +TMP_42 \def (\lambda (b: B).(let TMP_40 \def (eq B Void b) in (let TMP_41 +\def ((eq B Void b) \to (\forall (P: Prop).P)) in (or TMP_40 TMP_41)))) in +(let TMP_43 \def (eq B Void Abbr) in (let TMP_44 \def ((eq B Void Abbr) \to +(\forall (P: Prop).P)) in (let TMP_46 \def (\lambda (H: (eq B Void +Abbr)).(\lambda (P: Prop).(let TMP_45 \def (\lambda (ee: B).(match ee with +[Abbr \Rightarrow False | Abst \Rightarrow False | Void \Rightarrow True])) +in (let H0 \def (eq_ind B Void TMP_45 I Abbr H) in (False_ind P H0))))) in +(let TMP_47 \def (or_intror TMP_43 TMP_44 TMP_46) in (let TMP_48 \def (eq B +Void Abst) in (let TMP_49 \def ((eq B Void Abst) \to (\forall (P: Prop).P)) +in (let TMP_51 \def (\lambda (H: (eq B Void Abst)).(\lambda (P: Prop).(let +TMP_50 \def (\lambda (ee: B).(match ee with [Abbr \Rightarrow False | Abst \Rightarrow False | Void \Rightarrow True])) in (let H0 \def (eq_ind B Void -TMP_14 I Abbr H) in (False_ind P H0))))) in (let TMP_18 \def (or_intror -TMP_17 TMP_16 TMP_15) in (let TMP_12 \def (eq B Void Abst) in (let TMP_11 -\def ((eq B Void Abst) \to (\forall (P: Prop).P)) in (let TMP_10 \def -(\lambda (H: (eq B Void Abst)).(\lambda (P: Prop).(let TMP_9 \def (\lambda -(ee: B).(match ee in B with [Abbr \Rightarrow False | Abst \Rightarrow False -| Void \Rightarrow True])) in (let H0 \def (eq_ind B Void TMP_9 I Abst H) in -(False_ind P H0))))) in (let TMP_13 \def (or_intror TMP_12 TMP_11 TMP_10) in -(let TMP_7 \def (eq B Void Void) in (let TMP_6 \def ((eq B Void Void) \to -(\forall (P: Prop).P)) in (let TMP_5 \def (refl_equal B Void) in (let TMP_8 -\def (or_introl TMP_7 TMP_6 TMP_5) in (B_ind TMP_21 TMP_18 TMP_13 TMP_8 -b2))))))))))))))) in (B_ind TMP_61 TMP_58 TMP_40 TMP_22 b1))))). +TMP_50 I Abst H) in (False_ind P H0))))) in (let TMP_52 \def (or_intror +TMP_48 TMP_49 TMP_51) in (let TMP_53 \def (eq B Void Void) in (let TMP_54 +\def ((eq B Void Void) \to (\forall (P: Prop).P)) in (let TMP_55 \def +(refl_equal B Void) in (let TMP_56 \def (or_introl TMP_53 TMP_54 TMP_55) in +(B_ind TMP_42 TMP_47 TMP_52 TMP_56 b2))))))))))))))) in (B_ind TMP_3 TMP_21 +TMP_39 TMP_57 b1))))). theorem 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) -in (let H \def H_x in (let TMP_73 \def (eq B b1 b2) in (let TMP_72 \def ((eq -B b1 b2) \to (\forall (P: Prop).P)) in (let TMP_70 \def (eq B b1 b2) in (let -TMP_69 \def ((eq B b1 b2) \to False) in (let TMP_71 \def (or TMP_70 TMP_69) -in (let TMP_68 \def (\lambda (H0: (eq B b1 b2)).(let TMP_67 \def (eq B b1 b2) -in (let TMP_66 \def ((eq B b1 b2) \to False) in (or_introl TMP_67 TMP_66 -H0)))) in (let TMP_65 \def (\lambda (H0: (((eq B b1 b2) \to (\forall (P: -Prop).P)))).(let TMP_64 \def (eq B b1 b2) in (let TMP_63 \def ((eq B b1 b2) -\to False) in (let TMP_62 \def (\lambda (H1: (eq B b1 b2)).(H0 H1 False)) in -(or_intror TMP_64 TMP_63 TMP_62))))) in (or_ind TMP_73 TMP_72 TMP_71 TMP_68 -TMP_65 H))))))))))). +in (let H \def H_x in (let TMP_1 \def (eq B b1 b2) in (let TMP_2 \def ((eq B +b1 b2) \to (\forall (P: Prop).P)) in (let TMP_3 \def (eq B b1 b2) in (let +TMP_4 \def ((eq B b1 b2) \to False) in (let TMP_5 \def (or TMP_3 TMP_4) in +(let TMP_8 \def (\lambda (H0: (eq B b1 b2)).(let TMP_6 \def (eq B b1 b2) in +(let TMP_7 \def ((eq B b1 b2) \to False) in (or_introl TMP_6 TMP_7 H0)))) in +(let TMP_12 \def (\lambda (H0: (((eq B b1 b2) \to (\forall (P: +Prop).P)))).(let TMP_9 \def (eq B b1 b2) in (let TMP_10 \def ((eq B b1 b2) +\to False) in (let TMP_11 \def (\lambda (H1: (eq B b1 b2)).(H0 H1 False)) in +(or_intror TMP_9 TMP_10 TMP_11))))) in (or_ind TMP_1 TMP_2 TMP_5 TMP_8 TMP_12 +H))))))))))). theorem 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 - \lambda (f1: F).(let TMP_102 \def (\lambda (f: F).(\forall (f2: F).(let -TMP_101 \def (eq F f f2) in (let TMP_100 \def ((eq F f f2) \to (\forall (P: -Prop).P)) in (or TMP_101 TMP_100))))) in (let TMP_99 \def (\lambda (f2: -F).(let TMP_98 \def (\lambda (f: F).(let TMP_97 \def (eq F Appl f) in (let -TMP_96 \def ((eq F Appl f) \to (\forall (P: Prop).P)) in (or TMP_97 -TMP_96)))) in (let TMP_94 \def (eq F Appl Appl) in (let TMP_93 \def ((eq F -Appl Appl) \to (\forall (P: Prop).P)) in (let TMP_92 \def (refl_equal F Appl) -in (let TMP_95 \def (or_introl TMP_94 TMP_93 TMP_92) in (let TMP_90 \def (eq -F Appl Cast) in (let TMP_89 \def ((eq F Appl Cast) \to (\forall (P: Prop).P)) -in (let TMP_88 \def (\lambda (H: (eq F Appl Cast)).(\lambda (P: Prop).(let -TMP_87 \def (\lambda (ee: F).(match ee in F with [Appl \Rightarrow True | -Cast \Rightarrow False])) in (let H0 \def (eq_ind F Appl TMP_87 I Cast H) in -(False_ind P H0))))) in (let TMP_91 \def (or_intror TMP_90 TMP_89 TMP_88) in -(F_ind TMP_98 TMP_95 TMP_91 f2))))))))))) in (let TMP_86 \def (\lambda (f2: -F).(let TMP_85 \def (\lambda (f: F).(let TMP_84 \def (eq F Cast f) in (let -TMP_83 \def ((eq F Cast f) \to (\forall (P: Prop).P)) in (or TMP_84 -TMP_83)))) in (let TMP_81 \def (eq F Cast Appl) in (let TMP_80 \def ((eq F -Cast Appl) \to (\forall (P: Prop).P)) in (let TMP_79 \def (\lambda (H: (eq F -Cast Appl)).(\lambda (P: Prop).(let TMP_78 \def (\lambda (ee: F).(match ee in -F with [Appl \Rightarrow False | Cast \Rightarrow True])) in (let H0 \def -(eq_ind F Cast TMP_78 I Appl H) in (False_ind P H0))))) in (let TMP_82 \def -(or_intror TMP_81 TMP_80 TMP_79) in (let TMP_76 \def (eq F Cast Cast) in (let -TMP_75 \def ((eq F Cast Cast) \to (\forall (P: Prop).P)) in (let TMP_74 \def -(refl_equal F Cast) in (let TMP_77 \def (or_introl TMP_76 TMP_75 TMP_74) in -(F_ind TMP_85 TMP_82 TMP_77 f2))))))))))) in (F_ind TMP_102 TMP_99 TMP_86 -f1)))). + \lambda (f1: F).(let TMP_3 \def (\lambda (f: F).(\forall (f2: F).(let TMP_1 +\def (eq F f f2) in (let TMP_2 \def ((eq F f f2) \to (\forall (P: Prop).P)) +in (or TMP_1 TMP_2))))) in (let TMP_16 \def (\lambda (f2: F).(let TMP_6 \def +(\lambda (f: F).(let TMP_4 \def (eq F Appl f) in (let TMP_5 \def ((eq F Appl +f) \to (\forall (P: Prop).P)) in (or TMP_4 TMP_5)))) in (let TMP_7 \def (eq F +Appl Appl) in (let TMP_8 \def ((eq F Appl Appl) \to (\forall (P: Prop).P)) in +(let TMP_9 \def (refl_equal F Appl) in (let TMP_10 \def (or_introl TMP_7 +TMP_8 TMP_9) in (let TMP_11 \def (eq F Appl Cast) in (let TMP_12 \def ((eq F +Appl Cast) \to (\forall (P: Prop).P)) in (let TMP_14 \def (\lambda (H: (eq F +Appl Cast)).(\lambda (P: Prop).(let TMP_13 \def (\lambda (ee: F).(match ee +with [Appl \Rightarrow True | Cast \Rightarrow False])) in (let H0 \def +(eq_ind F Appl TMP_13 I Cast H) in (False_ind P H0))))) in (let TMP_15 \def +(or_intror TMP_11 TMP_12 TMP_14) in (F_ind TMP_6 TMP_10 TMP_15 f2))))))))))) +in (let TMP_29 \def (\lambda (f2: F).(let TMP_19 \def (\lambda (f: F).(let +TMP_17 \def (eq F Cast f) in (let TMP_18 \def ((eq F Cast f) \to (\forall (P: +Prop).P)) in (or TMP_17 TMP_18)))) in (let TMP_20 \def (eq F Cast Appl) in +(let TMP_21 \def ((eq F Cast Appl) \to (\forall (P: Prop).P)) in (let TMP_23 +\def (\lambda (H: (eq F Cast Appl)).(\lambda (P: Prop).(let TMP_22 \def +(\lambda (ee: F).(match ee with [Appl \Rightarrow False | Cast \Rightarrow +True])) in (let H0 \def (eq_ind F Cast TMP_22 I Appl H) in (False_ind P +H0))))) in (let TMP_24 \def (or_intror TMP_20 TMP_21 TMP_23) in (let TMP_25 +\def (eq F Cast Cast) in (let TMP_26 \def ((eq F Cast Cast) \to (\forall (P: +Prop).P)) in (let TMP_27 \def (refl_equal F Cast) in (let TMP_28 \def +(or_introl TMP_25 TMP_26 TMP_27) in (F_ind TMP_19 TMP_24 TMP_28 f2))))))))))) +in (F_ind TMP_3 TMP_16 TMP_29 f1)))). theorem 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 - \lambda (k1: K).(let TMP_197 \def (\lambda (k: K).(\forall (k2: K).(let -TMP_196 \def (eq K k k2) in (let TMP_195 \def ((eq K k k2) \to (\forall (P: -Prop).P)) in (or TMP_196 TMP_195))))) in (let TMP_194 \def (\lambda (b: -B).(\lambda (k2: K).(let TMP_193 \def (\lambda (k: K).(let TMP_191 \def (Bind -b) in (let TMP_192 \def (eq K TMP_191 k) in (let TMP_190 \def ((eq K (Bind b) -k) \to (\forall (P: Prop).P)) in (or TMP_192 TMP_190))))) in (let TMP_189 -\def (\lambda (b0: B).(let H_x \def (terms_props__bind_dec b b0) in (let H -\def H_x in (let TMP_188 \def (eq B b b0) in (let TMP_187 \def ((eq B b b0) -\to (\forall (P: Prop).P)) in (let TMP_184 \def (Bind b) in (let TMP_183 \def -(Bind b0) in (let TMP_185 \def (eq K TMP_184 TMP_183) in (let TMP_182 \def -((eq K (Bind b) (Bind b0)) \to (\forall (P: Prop).P)) in (let TMP_186 \def -(or TMP_185 TMP_182) in (let TMP_181 \def (\lambda (H0: (eq B b b0)).(let -TMP_180 \def (\lambda (b1: B).(let TMP_178 \def (Bind b) in (let TMP_177 \def -(Bind b1) in (let TMP_179 \def (eq K TMP_178 TMP_177) in (let TMP_176 \def -((eq K (Bind b) (Bind b1)) \to (\forall (P: Prop).P)) in (or TMP_179 -TMP_176)))))) in (let TMP_173 \def (Bind b) in (let TMP_172 \def (Bind b) in -(let TMP_174 \def (eq K TMP_173 TMP_172) in (let TMP_171 \def ((eq K (Bind b) -(Bind b)) \to (\forall (P: Prop).P)) in (let TMP_169 \def (Bind b) in (let -TMP_170 \def (refl_equal K TMP_169) in (let TMP_175 \def (or_introl TMP_174 -TMP_171 TMP_170) in (eq_ind B b TMP_180 TMP_175 b0 H0)))))))))) in (let -TMP_168 \def (\lambda (H0: (((eq B b b0) \to (\forall (P: Prop).P)))).(let -TMP_166 \def (Bind b) in (let TMP_165 \def (Bind b0) in (let TMP_167 \def (eq -K TMP_166 TMP_165) in (let TMP_164 \def ((eq K (Bind b) (Bind b0)) \to -(\forall (P: Prop).P)) in (let TMP_163 \def (\lambda (H1: (eq K (Bind b) -(Bind b0))).(\lambda (P: Prop).(let TMP_160 \def (\lambda (e: K).(match e in -K with [(Bind b1) \Rightarrow b1 | (Flat _) \Rightarrow b])) in (let TMP_159 -\def (Bind b) in (let TMP_158 \def (Bind b0) in (let H2 \def (f_equal K B -TMP_160 TMP_159 TMP_158 H1) in (let TMP_161 \def (\lambda (b1: B).((eq B b -b1) \to (\forall (P0: Prop).P0))) in (let H3 \def (eq_ind_r B b0 TMP_161 H0 b -H2) in (let TMP_162 \def (refl_equal B b) in (H3 TMP_162 P)))))))))) in -(or_intror TMP_167 TMP_164 TMP_163))))))) in (or_ind TMP_188 TMP_187 TMP_186 -TMP_181 TMP_168 H))))))))))))) in (let TMP_157 \def (\lambda (f: F).(let -TMP_155 \def (Bind b) in (let TMP_154 \def (Flat f) in (let TMP_156 \def (eq -K TMP_155 TMP_154) in (let TMP_153 \def ((eq K (Bind b) (Flat f)) \to -(\forall (P: Prop).P)) in (let TMP_152 \def (\lambda (H: (eq K (Bind b) (Flat -f))).(\lambda (P: Prop).(let TMP_151 \def (Bind b) in (let TMP_150 \def -(\lambda (ee: K).(match ee in K with [(Bind _) \Rightarrow True | (Flat _) -\Rightarrow False])) in (let TMP_149 \def (Flat f) in (let H0 \def (eq_ind K -TMP_151 TMP_150 I TMP_149 H) in (False_ind P H0))))))) in (or_intror TMP_156 -TMP_153 TMP_152))))))) in (K_ind TMP_193 TMP_189 TMP_157 k2)))))) in (let -TMP_148 \def (\lambda (f: F).(\lambda (k2: K).(let TMP_147 \def (\lambda (k: -K).(let TMP_145 \def (Flat f) in (let TMP_146 \def (eq K TMP_145 k) in (let -TMP_144 \def ((eq K (Flat f) k) \to (\forall (P: Prop).P)) in (or TMP_146 -TMP_144))))) in (let TMP_143 \def (\lambda (b: B).(let TMP_141 \def (Flat f) -in (let TMP_140 \def (Bind b) in (let TMP_142 \def (eq K TMP_141 TMP_140) in -(let TMP_139 \def ((eq K (Flat f) (Bind b)) \to (\forall (P: Prop).P)) in -(let TMP_138 \def (\lambda (H: (eq K (Flat f) (Bind b))).(\lambda (P: -Prop).(let TMP_137 \def (Flat f) in (let TMP_136 \def (\lambda (ee: K).(match -ee in K with [(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])) in -(let TMP_135 \def (Bind b) in (let H0 \def (eq_ind K TMP_137 TMP_136 I -TMP_135 H) in (False_ind P H0))))))) in (or_intror TMP_142 TMP_139 -TMP_138))))))) in (let TMP_134 \def (\lambda (f0: F).(let H_x \def -(terms_props__flat_dec f f0) in (let H \def H_x in (let TMP_133 \def (eq F f -f0) in (let TMP_132 \def ((eq F f f0) \to (\forall (P: Prop).P)) in (let -TMP_129 \def (Flat f) in (let TMP_128 \def (Flat f0) in (let TMP_130 \def (eq -K TMP_129 TMP_128) in (let TMP_127 \def ((eq K (Flat f) (Flat f0)) \to -(\forall (P: Prop).P)) in (let TMP_131 \def (or TMP_130 TMP_127) in (let -TMP_126 \def (\lambda (H0: (eq F f f0)).(let TMP_125 \def (\lambda (f1: -F).(let TMP_123 \def (Flat f) in (let TMP_122 \def (Flat f1) in (let TMP_124 -\def (eq K TMP_123 TMP_122) in (let TMP_121 \def ((eq K (Flat f) (Flat f1)) -\to (\forall (P: Prop).P)) in (or TMP_124 TMP_121)))))) in (let TMP_118 \def -(Flat f) in (let TMP_117 \def (Flat f) in (let TMP_119 \def (eq K TMP_118 -TMP_117) in (let TMP_116 \def ((eq K (Flat f) (Flat f)) \to (\forall (P: -Prop).P)) in (let TMP_114 \def (Flat f) in (let TMP_115 \def (refl_equal K -TMP_114) in (let TMP_120 \def (or_introl TMP_119 TMP_116 TMP_115) in (eq_ind -F f TMP_125 TMP_120 f0 H0)))))))))) in (let TMP_113 \def (\lambda (H0: (((eq -F f f0) \to (\forall (P: Prop).P)))).(let TMP_111 \def (Flat f) in (let -TMP_110 \def (Flat f0) in (let TMP_112 \def (eq K TMP_111 TMP_110) in (let -TMP_109 \def ((eq K (Flat f) (Flat f0)) \to (\forall (P: Prop).P)) in (let -TMP_108 \def (\lambda (H1: (eq K (Flat f) (Flat f0))).(\lambda (P: Prop).(let -TMP_105 \def (\lambda (e: K).(match e in K with [(Bind _) \Rightarrow f | -(Flat f1) \Rightarrow f1])) in (let TMP_104 \def (Flat f) in (let TMP_103 -\def (Flat f0) in (let H2 \def (f_equal K F TMP_105 TMP_104 TMP_103 H1) in -(let TMP_106 \def (\lambda (f1: F).((eq F f f1) \to (\forall (P0: Prop).P0))) -in (let H3 \def (eq_ind_r F f0 TMP_106 H0 f H2) in (let TMP_107 \def -(refl_equal F f) in (H3 TMP_107 P)))))))))) in (or_intror TMP_112 TMP_109 -TMP_108))))))) in (or_ind TMP_133 TMP_132 TMP_131 TMP_126 TMP_113 -H))))))))))))) in (K_ind TMP_147 TMP_143 TMP_134 k2)))))) in (K_ind TMP_197 -TMP_194 TMP_148 k1)))). + \lambda (k1: K).(let TMP_3 \def (\lambda (k: K).(\forall (k2: K).(let TMP_1 +\def (eq K k k2) in (let TMP_2 \def ((eq K k k2) \to (\forall (P: Prop).P)) +in (or TMP_1 TMP_2))))) in (let TMP_49 \def (\lambda (b: B).(\lambda (k2: +K).(let TMP_7 \def (\lambda (k: K).(let TMP_4 \def (Bind b) in (let TMP_5 +\def (eq K TMP_4 k) in (let TMP_6 \def ((eq K (Bind b) k) \to (\forall (P: +Prop).P)) in (or TMP_5 TMP_6))))) in (let TMP_39 \def (\lambda (b0: B).(let +H_x \def (terms_props__bind_dec b b0) in (let H \def H_x in (let TMP_8 \def +(eq B b b0) in (let TMP_9 \def ((eq B b b0) \to (\forall (P: Prop).P)) in +(let TMP_10 \def (Bind b) in (let TMP_11 \def (Bind b0) in (let TMP_12 \def +(eq K TMP_10 TMP_11) in (let TMP_13 \def ((eq K (Bind b) (Bind b0)) \to +(\forall (P: Prop).P)) in (let TMP_14 \def (or TMP_12 TMP_13) in (let TMP_27 +\def (\lambda (H0: (eq B b b0)).(let TMP_19 \def (\lambda (b1: B).(let TMP_15 +\def (Bind b) in (let TMP_16 \def (Bind b1) in (let TMP_17 \def (eq K TMP_15 +TMP_16) in (let TMP_18 \def ((eq K (Bind b) (Bind b1)) \to (\forall (P: +Prop).P)) in (or TMP_17 TMP_18)))))) in (let TMP_20 \def (Bind b) in (let +TMP_21 \def (Bind b) in (let TMP_22 \def (eq K TMP_20 TMP_21) in (let TMP_23 +\def ((eq K (Bind b) (Bind b)) \to (\forall (P: Prop).P)) in (let TMP_24 \def +(Bind b) in (let TMP_25 \def (refl_equal K TMP_24) in (let TMP_26 \def +(or_introl TMP_22 TMP_23 TMP_25) in (eq_ind B b TMP_19 TMP_26 b0 H0)))))))))) +in (let TMP_38 \def (\lambda (H0: (((eq B b b0) \to (\forall (P: +Prop).P)))).(let TMP_28 \def (Bind b) in (let TMP_29 \def (Bind b0) in (let +TMP_30 \def (eq K TMP_28 TMP_29) in (let TMP_31 \def ((eq K (Bind b) (Bind +b0)) \to (\forall (P: Prop).P)) in (let TMP_37 \def (\lambda (H1: (eq K (Bind +b) (Bind b0))).(\lambda (P: Prop).(let TMP_32 \def (\lambda (e: K).(match e +with [(Bind b1) \Rightarrow b1 | (Flat _) \Rightarrow b])) in (let TMP_33 +\def (Bind b) in (let TMP_34 \def (Bind b0) in (let H2 \def (f_equal K B +TMP_32 TMP_33 TMP_34 H1) in (let TMP_35 \def (\lambda (b1: B).((eq B b b1) +\to (\forall (P0: Prop).P0))) in (let H3 \def (eq_ind_r B b0 TMP_35 H0 b H2) +in (let TMP_36 \def (refl_equal B b) in (H3 TMP_36 P)))))))))) in (or_intror +TMP_30 TMP_31 TMP_37))))))) in (or_ind TMP_8 TMP_9 TMP_14 TMP_27 TMP_38 +H))))))))))))) in (let TMP_48 \def (\lambda (f: F).(let TMP_40 \def (Bind b) +in (let TMP_41 \def (Flat f) in (let TMP_42 \def (eq K TMP_40 TMP_41) in (let +TMP_43 \def ((eq K (Bind b) (Flat f)) \to (\forall (P: Prop).P)) in (let +TMP_47 \def (\lambda (H: (eq K (Bind b) (Flat f))).(\lambda (P: Prop).(let +TMP_44 \def (Bind b) in (let TMP_45 \def (\lambda (ee: K).(match ee with +[(Bind _) \Rightarrow True | (Flat _) \Rightarrow False])) in (let TMP_46 +\def (Flat f) in (let H0 \def (eq_ind K TMP_44 TMP_45 I TMP_46 H) in +(False_ind P H0))))))) in (or_intror TMP_42 TMP_43 TMP_47))))))) in (K_ind +TMP_7 TMP_39 TMP_48 k2)))))) in (let TMP_95 \def (\lambda (f: F).(\lambda +(k2: K).(let TMP_53 \def (\lambda (k: K).(let TMP_50 \def (Flat f) in (let +TMP_51 \def (eq K TMP_50 k) in (let TMP_52 \def ((eq K (Flat f) k) \to +(\forall (P: Prop).P)) in (or TMP_51 TMP_52))))) in (let TMP_62 \def (\lambda +(b: B).(let TMP_54 \def (Flat f) in (let TMP_55 \def (Bind b) in (let TMP_56 +\def (eq K TMP_54 TMP_55) in (let TMP_57 \def ((eq K (Flat f) (Bind b)) \to +(\forall (P: Prop).P)) in (let TMP_61 \def (\lambda (H: (eq K (Flat f) (Bind +b))).(\lambda (P: Prop).(let TMP_58 \def (Flat f) in (let TMP_59 \def +(\lambda (ee: K).(match ee with [(Bind _) \Rightarrow False | (Flat _) +\Rightarrow True])) in (let TMP_60 \def (Bind b) in (let H0 \def (eq_ind K +TMP_58 TMP_59 I TMP_60 H) in (False_ind P H0))))))) in (or_intror TMP_56 +TMP_57 TMP_61))))))) in (let TMP_94 \def (\lambda (f0: F).(let H_x \def +(terms_props__flat_dec f f0) in (let H \def H_x in (let TMP_63 \def (eq F f +f0) in (let TMP_64 \def ((eq F f f0) \to (\forall (P: Prop).P)) in (let +TMP_65 \def (Flat f) in (let TMP_66 \def (Flat f0) in (let TMP_67 \def (eq K +TMP_65 TMP_66) in (let TMP_68 \def ((eq K (Flat f) (Flat f0)) \to (\forall +(P: Prop).P)) in (let TMP_69 \def (or TMP_67 TMP_68) in (let TMP_82 \def +(\lambda (H0: (eq F f f0)).(let TMP_74 \def (\lambda (f1: F).(let TMP_70 \def +(Flat f) in (let TMP_71 \def (Flat f1) in (let TMP_72 \def (eq K TMP_70 +TMP_71) in (let TMP_73 \def ((eq K (Flat f) (Flat f1)) \to (\forall (P: +Prop).P)) in (or TMP_72 TMP_73)))))) in (let TMP_75 \def (Flat f) in (let +TMP_76 \def (Flat f) in (let TMP_77 \def (eq K TMP_75 TMP_76) in (let TMP_78 +\def ((eq K (Flat f) (Flat f)) \to (\forall (P: Prop).P)) in (let TMP_79 \def +(Flat f) in (let TMP_80 \def (refl_equal K TMP_79) in (let TMP_81 \def +(or_introl TMP_77 TMP_78 TMP_80) in (eq_ind F f TMP_74 TMP_81 f0 H0)))))))))) +in (let TMP_93 \def (\lambda (H0: (((eq F f f0) \to (\forall (P: +Prop).P)))).(let TMP_83 \def (Flat f) in (let TMP_84 \def (Flat f0) in (let +TMP_85 \def (eq K TMP_83 TMP_84) in (let TMP_86 \def ((eq K (Flat f) (Flat +f0)) \to (\forall (P: Prop).P)) in (let TMP_92 \def (\lambda (H1: (eq K (Flat +f) (Flat f0))).(\lambda (P: Prop).(let TMP_87 \def (\lambda (e: K).(match e +with [(Bind _) \Rightarrow f | (Flat f1) \Rightarrow f1])) in (let TMP_88 +\def (Flat f) in (let TMP_89 \def (Flat f0) in (let H2 \def (f_equal K F +TMP_87 TMP_88 TMP_89 H1) in (let TMP_90 \def (\lambda (f1: F).((eq F f f1) +\to (\forall (P0: Prop).P0))) in (let H3 \def (eq_ind_r F f0 TMP_90 H0 f H2) +in (let TMP_91 \def (refl_equal F f) in (H3 TMP_91 P)))))))))) in (or_intror +TMP_85 TMP_86 TMP_92))))))) in (or_ind TMP_63 TMP_64 TMP_69 TMP_82 TMP_93 +H))))))))))))) in (K_ind TMP_53 TMP_62 TMP_94 k2)))))) in (K_ind TMP_3 TMP_49 +TMP_95 k1)))). theorem term_dec: \forall (t1: T).(\forall (t2: T).(or (eq T t1 t2) ((eq T t1 t2) \to (\forall (P: Prop).P)))) \def - \lambda (t1: T).(let TMP_447 \def (\lambda (t: T).(\forall (t2: T).(let -TMP_446 \def (eq T t t2) in (let TMP_445 \def ((eq T t t2) \to (\forall (P: -Prop).P)) in (or TMP_446 TMP_445))))) in (let TMP_444 \def (\lambda (n: -nat).(\lambda (t2: T).(let TMP_443 \def (\lambda (t: T).(let TMP_441 \def -(TSort n) in (let TMP_442 \def (eq T TMP_441 t) in (let TMP_440 \def ((eq T -(TSort n) t) \to (\forall (P: Prop).P)) in (or TMP_442 TMP_440))))) in (let -TMP_439 \def (\lambda (n0: nat).(let H_x \def (nat_dec n n0) in (let H \def -H_x in (let TMP_438 \def (eq nat n n0) in (let TMP_437 \def ((eq nat n n0) -\to (\forall (P: Prop).P)) in (let TMP_434 \def (TSort n) in (let TMP_433 -\def (TSort n0) in (let TMP_435 \def (eq T TMP_434 TMP_433) in (let TMP_432 -\def ((eq T (TSort n) (TSort n0)) \to (\forall (P: Prop).P)) in (let TMP_436 -\def (or TMP_435 TMP_432) in (let TMP_431 \def (\lambda (H0: (eq nat n -n0)).(let TMP_430 \def (\lambda (n1: nat).(let TMP_428 \def (TSort n) in (let -TMP_427 \def (TSort n1) in (let TMP_429 \def (eq T TMP_428 TMP_427) in (let -TMP_426 \def ((eq T (TSort n) (TSort n1)) \to (\forall (P: Prop).P)) in (or -TMP_429 TMP_426)))))) in (let TMP_423 \def (TSort n) in (let TMP_422 \def -(TSort n) in (let TMP_424 \def (eq T TMP_423 TMP_422) in (let TMP_421 \def -((eq T (TSort n) (TSort n)) \to (\forall (P: Prop).P)) in (let TMP_419 \def -(TSort n) in (let TMP_420 \def (refl_equal T TMP_419) in (let TMP_425 \def -(or_introl TMP_424 TMP_421 TMP_420) in (eq_ind nat n TMP_430 TMP_425 n0 -H0)))))))))) in (let TMP_418 \def (\lambda (H0: (((eq nat n n0) \to (\forall -(P: Prop).P)))).(let TMP_416 \def (TSort n) in (let TMP_415 \def (TSort n0) -in (let TMP_417 \def (eq T TMP_416 TMP_415) in (let TMP_414 \def ((eq T -(TSort n) (TSort n0)) \to (\forall (P: Prop).P)) in (let TMP_413 \def -(\lambda (H1: (eq T (TSort n) (TSort n0))).(\lambda (P: Prop).(let TMP_410 -\def (\lambda (e: T).(match e in T with [(TSort n1) \Rightarrow n1 | (TLRef -_) \Rightarrow n | (THead _ _ _) \Rightarrow n])) in (let TMP_409 \def (TSort -n) in (let TMP_408 \def (TSort n0) in (let H2 \def (f_equal T nat TMP_410 -TMP_409 TMP_408 H1) in (let TMP_411 \def (\lambda (n1: nat).((eq nat n n1) -\to (\forall (P0: Prop).P0))) in (let H3 \def (eq_ind_r nat n0 TMP_411 H0 n -H2) in (let TMP_412 \def (refl_equal nat n) in (H3 TMP_412 P)))))))))) in -(or_intror TMP_417 TMP_414 TMP_413))))))) in (or_ind TMP_438 TMP_437 TMP_436 -TMP_431 TMP_418 H))))))))))))) in (let TMP_407 \def (\lambda (n0: nat).(let -TMP_405 \def (TSort n) in (let TMP_404 \def (TLRef n0) in (let TMP_406 \def -(eq T TMP_405 TMP_404) in (let TMP_403 \def ((eq T (TSort n) (TLRef n0)) \to -(\forall (P: Prop).P)) in (let TMP_402 \def (\lambda (H: (eq T (TSort n) -(TLRef n0))).(\lambda (P: Prop).(let TMP_401 \def (TSort n) in (let TMP_400 -\def (\lambda (ee: T).(match ee in T with [(TSort _) \Rightarrow True | -(TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) in (let -TMP_399 \def (TLRef n0) in (let H0 \def (eq_ind T TMP_401 TMP_400 I TMP_399 -H) in (False_ind P H0))))))) in (or_intror TMP_406 TMP_403 TMP_402))))))) in -(let TMP_398 \def (\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 (eq T (TSort n) t0) ((eq T (TSort n) t0) \to (\forall (P: -Prop).P)))).(let TMP_396 \def (TSort n) in (let TMP_395 \def (THead k t t0) -in (let TMP_397 \def (eq T TMP_396 TMP_395) in (let TMP_394 \def ((eq T -(TSort n) (THead k t t0)) \to (\forall (P: Prop).P)) in (let TMP_393 \def -(\lambda (H1: (eq T (TSort n) (THead k t t0))).(\lambda (P: Prop).(let -TMP_392 \def (TSort n) in (let TMP_391 \def (\lambda (ee: T).(match ee in T -with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ _ -_) \Rightarrow False])) in (let TMP_390 \def (THead k t t0) in (let H2 \def -(eq_ind T TMP_392 TMP_391 I TMP_390 H1) in (False_ind P H2))))))) in -(or_intror TMP_397 TMP_394 TMP_393))))))))))) in (T_ind TMP_443 TMP_439 -TMP_407 TMP_398 t2))))))) in (let TMP_389 \def (\lambda (n: nat).(\lambda -(t2: T).(let TMP_388 \def (\lambda (t: T).(let TMP_386 \def (TLRef n) in (let -TMP_387 \def (eq T TMP_386 t) in (let TMP_385 \def ((eq T (TLRef n) t) \to -(\forall (P: Prop).P)) in (or TMP_387 TMP_385))))) in (let TMP_384 \def -(\lambda (n0: nat).(let TMP_382 \def (TLRef n) in (let TMP_381 \def (TSort -n0) in (let TMP_383 \def (eq T TMP_382 TMP_381) in (let TMP_380 \def ((eq T -(TLRef n) (TSort n0)) \to (\forall (P: Prop).P)) in (let TMP_379 \def -(\lambda (H: (eq T (TLRef n) (TSort n0))).(\lambda (P: Prop).(let TMP_378 -\def (TLRef n) in (let TMP_377 \def (\lambda (ee: T).(match ee in T with -[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) -\Rightarrow False])) in (let TMP_376 \def (TSort n0) in (let H0 \def (eq_ind -T TMP_378 TMP_377 I TMP_376 H) in (False_ind P H0))))))) in (or_intror -TMP_383 TMP_380 TMP_379))))))) in (let TMP_375 \def (\lambda (n0: nat).(let -H_x \def (nat_dec n n0) in (let H \def H_x in (let TMP_374 \def (eq nat n n0) -in (let TMP_373 \def ((eq nat n n0) \to (\forall (P: Prop).P)) in (let -TMP_370 \def (TLRef n) in (let TMP_369 \def (TLRef n0) in (let TMP_371 \def -(eq T TMP_370 TMP_369) in (let TMP_368 \def ((eq T (TLRef n) (TLRef n0)) \to -(\forall (P: Prop).P)) in (let TMP_372 \def (or TMP_371 TMP_368) in (let -TMP_367 \def (\lambda (H0: (eq nat n n0)).(let TMP_366 \def (\lambda (n1: -nat).(let TMP_364 \def (TLRef n) in (let TMP_363 \def (TLRef n1) in (let -TMP_365 \def (eq T TMP_364 TMP_363) in (let TMP_362 \def ((eq T (TLRef n) -(TLRef n1)) \to (\forall (P: Prop).P)) in (or TMP_365 TMP_362)))))) in (let -TMP_359 \def (TLRef n) in (let TMP_358 \def (TLRef n) in (let TMP_360 \def -(eq T TMP_359 TMP_358) in (let TMP_357 \def ((eq T (TLRef n) (TLRef n)) \to -(\forall (P: Prop).P)) in (let TMP_355 \def (TLRef n) in (let TMP_356 \def -(refl_equal T TMP_355) in (let TMP_361 \def (or_introl TMP_360 TMP_357 -TMP_356) in (eq_ind nat n TMP_366 TMP_361 n0 H0)))))))))) in (let TMP_354 -\def (\lambda (H0: (((eq nat n n0) \to (\forall (P: Prop).P)))).(let TMP_352 -\def (TLRef n) in (let TMP_351 \def (TLRef n0) in (let TMP_353 \def (eq T -TMP_352 TMP_351) in (let TMP_350 \def ((eq T (TLRef n) (TLRef n0)) \to -(\forall (P: Prop).P)) in (let TMP_349 \def (\lambda (H1: (eq T (TLRef n) -(TLRef n0))).(\lambda (P: Prop).(let TMP_346 \def (\lambda (e: T).(match e in -T with [(TSort _) \Rightarrow n | (TLRef n1) \Rightarrow n1 | (THead _ _ _) -\Rightarrow n])) in (let TMP_345 \def (TLRef n) in (let TMP_344 \def (TLRef -n0) in (let H2 \def (f_equal T nat TMP_346 TMP_345 TMP_344 H1) in (let -TMP_347 \def (\lambda (n1: nat).((eq nat n n1) \to (\forall (P0: Prop).P0))) -in (let H3 \def (eq_ind_r nat n0 TMP_347 H0 n H2) in (let TMP_348 \def -(refl_equal nat n) in (H3 TMP_348 P)))))))))) in (or_intror TMP_353 TMP_350 -TMP_349))))))) in (or_ind TMP_374 TMP_373 TMP_372 TMP_367 TMP_354 -H))))))))))))) in (let TMP_343 \def (\lambda (k: K).(\lambda (t: T).(\lambda + \lambda (t1: T).(let TMP_3 \def (\lambda (t: T).(\forall (t2: T).(let TMP_1 +\def (eq T t t2) in (let TMP_2 \def ((eq T t t2) \to (\forall (P: Prop).P)) +in (or TMP_1 TMP_2))))) in (let TMP_58 \def (\lambda (n: nat).(\lambda (t2: +T).(let TMP_7 \def (\lambda (t: T).(let TMP_4 \def (TSort n) in (let TMP_5 +\def (eq T TMP_4 t) in (let TMP_6 \def ((eq T (TSort n) t) \to (\forall (P: +Prop).P)) in (or TMP_5 TMP_6))))) in (let TMP_39 \def (\lambda (n0: nat).(let +H_x \def (nat_dec n n0) in (let H \def H_x in (let TMP_8 \def (eq nat n n0) +in (let TMP_9 \def ((eq nat n n0) \to (\forall (P: Prop).P)) in (let TMP_10 +\def (TSort n) in (let TMP_11 \def (TSort n0) in (let TMP_12 \def (eq T +TMP_10 TMP_11) in (let TMP_13 \def ((eq T (TSort n) (TSort n0)) \to (\forall +(P: Prop).P)) in (let TMP_14 \def (or TMP_12 TMP_13) in (let TMP_27 \def +(\lambda (H0: (eq nat n n0)).(let TMP_19 \def (\lambda (n1: nat).(let TMP_15 +\def (TSort n) in (let TMP_16 \def (TSort n1) in (let TMP_17 \def (eq T +TMP_15 TMP_16) in (let TMP_18 \def ((eq T (TSort n) (TSort n1)) \to (\forall +(P: Prop).P)) in (or TMP_17 TMP_18)))))) in (let TMP_20 \def (TSort n) in +(let TMP_21 \def (TSort n) in (let TMP_22 \def (eq T TMP_20 TMP_21) in (let +TMP_23 \def ((eq T (TSort n) (TSort n)) \to (\forall (P: Prop).P)) in (let +TMP_24 \def (TSort n) in (let TMP_25 \def (refl_equal T TMP_24) in (let +TMP_26 \def (or_introl TMP_22 TMP_23 TMP_25) in (eq_ind nat n TMP_19 TMP_26 +n0 H0)))))))))) in (let TMP_38 \def (\lambda (H0: (((eq nat n n0) \to +(\forall (P: Prop).P)))).(let TMP_28 \def (TSort n) in (let TMP_29 \def +(TSort n0) in (let TMP_30 \def (eq T TMP_28 TMP_29) in (let TMP_31 \def ((eq +T (TSort n) (TSort n0)) \to (\forall (P: Prop).P)) in (let TMP_37 \def +(\lambda (H1: (eq T (TSort n) (TSort n0))).(\lambda (P: Prop).(let TMP_32 +\def (\lambda (e: T).(match e with [(TSort n1) \Rightarrow n1 | (TLRef _) +\Rightarrow n | (THead _ _ _) \Rightarrow n])) in (let TMP_33 \def (TSort n) +in (let TMP_34 \def (TSort n0) in (let H2 \def (f_equal T nat TMP_32 TMP_33 +TMP_34 H1) in (let TMP_35 \def (\lambda (n1: nat).((eq nat n n1) \to (\forall +(P0: Prop).P0))) in (let H3 \def (eq_ind_r nat n0 TMP_35 H0 n H2) in (let +TMP_36 \def (refl_equal nat n) in (H3 TMP_36 P)))))))))) in (or_intror TMP_30 +TMP_31 TMP_37))))))) in (or_ind TMP_8 TMP_9 TMP_14 TMP_27 TMP_38 +H))))))))))))) in (let TMP_48 \def (\lambda (n0: nat).(let TMP_40 \def (TSort +n) in (let TMP_41 \def (TLRef n0) in (let TMP_42 \def (eq T TMP_40 TMP_41) in +(let TMP_43 \def ((eq T (TSort n) (TLRef n0)) \to (\forall (P: Prop).P)) in +(let TMP_47 \def (\lambda (H: (eq T (TSort n) (TLRef n0))).(\lambda (P: +Prop).(let TMP_44 \def (TSort n) in (let TMP_45 \def (\lambda (ee: T).(match +ee with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ +_ _) \Rightarrow False])) in (let TMP_46 \def (TLRef n0) in (let H0 \def +(eq_ind T TMP_44 TMP_45 I TMP_46 H) in (False_ind P H0))))))) in (or_intror +TMP_42 TMP_43 TMP_47))))))) in (let TMP_57 \def (\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 (eq T (TSort n) t0) ((eq T +(TSort n) t0) \to (\forall (P: Prop).P)))).(let TMP_49 \def (TSort n) in (let +TMP_50 \def (THead k t t0) in (let TMP_51 \def (eq T TMP_49 TMP_50) in (let +TMP_52 \def ((eq T (TSort n) (THead k t t0)) \to (\forall (P: Prop).P)) in +(let TMP_56 \def (\lambda (H1: (eq T (TSort n) (THead k t t0))).(\lambda (P: +Prop).(let TMP_53 \def (TSort n) in (let TMP_54 \def (\lambda (ee: T).(match +ee with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow False | (THead _ +_ _) \Rightarrow False])) in (let TMP_55 \def (THead k t t0) in (let H2 \def +(eq_ind T TMP_53 TMP_54 I TMP_55 H1) in (False_ind P H2))))))) in (or_intror +TMP_51 TMP_52 TMP_56))))))))))) in (T_ind TMP_7 TMP_39 TMP_48 TMP_57 +t2))))))) in (let TMP_113 \def (\lambda (n: nat).(\lambda (t2: T).(let TMP_62 +\def (\lambda (t: T).(let TMP_59 \def (TLRef n) in (let TMP_60 \def (eq T +TMP_59 t) in (let TMP_61 \def ((eq T (TLRef n) t) \to (\forall (P: Prop).P)) +in (or TMP_60 TMP_61))))) in (let TMP_71 \def (\lambda (n0: nat).(let TMP_63 +\def (TLRef n) in (let TMP_64 \def (TSort n0) in (let TMP_65 \def (eq T +TMP_63 TMP_64) in (let TMP_66 \def ((eq T (TLRef n) (TSort n0)) \to (\forall +(P: Prop).P)) in (let TMP_70 \def (\lambda (H: (eq T (TLRef n) (TSort +n0))).(\lambda (P: Prop).(let TMP_67 \def (TLRef n) in (let TMP_68 \def +(\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) +\Rightarrow True | (THead _ _ _) \Rightarrow False])) in (let TMP_69 \def +(TSort n0) in (let H0 \def (eq_ind T TMP_67 TMP_68 I TMP_69 H) in (False_ind +P H0))))))) in (or_intror TMP_65 TMP_66 TMP_70))))))) in (let TMP_103 \def +(\lambda (n0: nat).(let H_x \def (nat_dec n n0) in (let H \def H_x in (let +TMP_72 \def (eq nat n n0) in (let TMP_73 \def ((eq nat n n0) \to (\forall (P: +Prop).P)) in (let TMP_74 \def (TLRef n) in (let TMP_75 \def (TLRef n0) in +(let TMP_76 \def (eq T TMP_74 TMP_75) in (let TMP_77 \def ((eq T (TLRef n) +(TLRef n0)) \to (\forall (P: Prop).P)) in (let TMP_78 \def (or TMP_76 TMP_77) +in (let TMP_91 \def (\lambda (H0: (eq nat n n0)).(let TMP_83 \def (\lambda +(n1: nat).(let TMP_79 \def (TLRef n) in (let TMP_80 \def (TLRef n1) in (let +TMP_81 \def (eq T TMP_79 TMP_80) in (let TMP_82 \def ((eq T (TLRef n) (TLRef +n1)) \to (\forall (P: Prop).P)) in (or TMP_81 TMP_82)))))) in (let TMP_84 +\def (TLRef n) in (let TMP_85 \def (TLRef n) in (let TMP_86 \def (eq T TMP_84 +TMP_85) in (let TMP_87 \def ((eq T (TLRef n) (TLRef n)) \to (\forall (P: +Prop).P)) in (let TMP_88 \def (TLRef n) in (let TMP_89 \def (refl_equal T +TMP_88) in (let TMP_90 \def (or_introl TMP_86 TMP_87 TMP_89) in (eq_ind nat n +TMP_83 TMP_90 n0 H0)))))))))) in (let TMP_102 \def (\lambda (H0: (((eq nat n +n0) \to (\forall (P: Prop).P)))).(let TMP_92 \def (TLRef n) in (let TMP_93 +\def (TLRef n0) in (let TMP_94 \def (eq T TMP_92 TMP_93) in (let TMP_95 \def +((eq T (TLRef n) (TLRef n0)) \to (\forall (P: Prop).P)) in (let TMP_101 \def +(\lambda (H1: (eq T (TLRef n) (TLRef n0))).(\lambda (P: Prop).(let TMP_96 +\def (\lambda (e: T).(match e with [(TSort _) \Rightarrow n | (TLRef n1) +\Rightarrow n1 | (THead _ _ _) \Rightarrow n])) in (let TMP_97 \def (TLRef n) +in (let TMP_98 \def (TLRef n0) in (let H2 \def (f_equal T nat TMP_96 TMP_97 +TMP_98 H1) in (let TMP_99 \def (\lambda (n1: nat).((eq nat n n1) \to (\forall +(P0: Prop).P0))) in (let H3 \def (eq_ind_r nat n0 TMP_99 H0 n H2) in (let +TMP_100 \def (refl_equal nat n) in (H3 TMP_100 P)))))))))) in (or_intror +TMP_94 TMP_95 TMP_101))))))) in (or_ind TMP_72 TMP_73 TMP_78 TMP_91 TMP_102 +H))))))))))))) in (let TMP_112 \def (\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)))).(let TMP_341 \def (TLRef n) in -(let TMP_340 \def (THead k t t0) in (let TMP_342 \def (eq T TMP_341 TMP_340) -in (let TMP_339 \def ((eq T (TLRef n) (THead k t t0)) \to (\forall (P: -Prop).P)) in (let TMP_338 \def (\lambda (H1: (eq T (TLRef n) (THead k t -t0))).(\lambda (P: Prop).(let TMP_337 \def (TLRef n) in (let TMP_336 \def -(\lambda (ee: T).(match ee in T with [(TSort _) \Rightarrow False | (TLRef _) -\Rightarrow True | (THead _ _ _) \Rightarrow False])) in (let TMP_335 \def -(THead k t t0) in (let H2 \def (eq_ind T TMP_337 TMP_336 I TMP_335 H1) in -(False_ind P H2))))))) in (or_intror TMP_342 TMP_339 TMP_338))))))))))) in -(T_ind TMP_388 TMP_384 TMP_375 TMP_343 t2))))))) in (let TMP_334 \def -(\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).(let TMP_333 \def (\lambda (t3: T).(let -TMP_331 \def (THead k t t0) in (let TMP_332 \def (eq T TMP_331 t3) in (let -TMP_330 \def ((eq T (THead k t t0) t3) \to (\forall (P: Prop).P)) in (or -TMP_332 TMP_330))))) in (let TMP_329 \def (\lambda (n: nat).(let TMP_327 \def -(THead k t t0) in (let TMP_326 \def (TSort n) in (let TMP_328 \def (eq T -TMP_327 TMP_326) in (let TMP_325 \def ((eq T (THead k t t0) (TSort n)) \to -(\forall (P: Prop).P)) in (let TMP_324 \def (\lambda (H1: (eq T (THead k t -t0) (TSort n))).(\lambda (P: Prop).(let TMP_323 \def (THead k t t0) in (let -TMP_322 \def (\lambda (ee: T).(match ee in T with [(TSort _) \Rightarrow -False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) in -(let TMP_321 \def (TSort n) in (let H2 \def (eq_ind T TMP_323 TMP_322 I -TMP_321 H1) in (False_ind P H2))))))) in (or_intror TMP_328 TMP_325 -TMP_324))))))) in (let TMP_320 \def (\lambda (n: nat).(let TMP_318 \def -(THead k t t0) in (let TMP_317 \def (TLRef n) in (let TMP_319 \def (eq T -TMP_318 TMP_317) in (let TMP_316 \def ((eq T (THead k t t0) (TLRef n)) \to -(\forall (P: Prop).P)) in (let TMP_315 \def (\lambda (H1: (eq T (THead k t -t0) (TLRef n))).(\lambda (P: Prop).(let TMP_314 \def (THead k t t0) in (let -TMP_313 \def (\lambda (ee: T).(match ee in T with [(TSort _) \Rightarrow -False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) in -(let TMP_312 \def (TLRef n) in (let H2 \def (eq_ind T TMP_314 TMP_313 I -TMP_312 H1) in (False_ind P H2))))))) in (or_intror TMP_319 TMP_316 -TMP_315))))))) in (let TMP_311 \def (\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: Prop).P)))).(\lambda (t4: T).(\lambda (H2: (or (eq T (THead k t -t0) t4) ((eq T (THead k t t0) t4) \to (\forall (P: Prop).P)))).(let H_x \def -(H t3) in (let H3 \def H_x in (let TMP_310 \def (eq T t t3) in (let TMP_309 -\def ((eq T t t3) \to (\forall (P: Prop).P)) in (let TMP_306 \def (THead k t -t0) in (let TMP_305 \def (THead k0 t3 t4) in (let TMP_307 \def (eq T TMP_306 -TMP_305) in (let TMP_304 \def ((eq T (THead k t t0) (THead k0 t3 t4)) \to -(\forall (P: Prop).P)) in (let TMP_308 \def (or TMP_307 TMP_304) in (let -TMP_303 \def (\lambda (H4: (eq T t t3)).(let TMP_228 \def (\lambda (t5: -T).(let TMP_226 \def (THead k t t0) in (let TMP_227 \def (eq T TMP_226 t5) in -(let TMP_225 \def ((eq T (THead k t t0) t5) \to (\forall (P: Prop).P)) in (or -TMP_227 TMP_225))))) in (let H5 \def (eq_ind_r T t3 TMP_228 H1 t H4) in (let -TMP_302 \def (\lambda (t5: T).(let TMP_300 \def (THead k t t0) in (let -TMP_299 \def (THead k0 t5 t4) in (let TMP_301 \def (eq T TMP_300 TMP_299) in -(let TMP_298 \def ((eq T (THead k t t0) (THead k0 t5 t4)) \to (\forall (P: -Prop).P)) in (or TMP_301 TMP_298)))))) in (let H_x0 \def (H0 t4) in (let H6 -\def H_x0 in (let TMP_296 \def (eq T t0 t4) in (let TMP_295 \def ((eq T t0 -t4) \to (\forall (P: Prop).P)) in (let TMP_292 \def (THead k t t0) in (let -TMP_291 \def (THead k0 t t4) in (let TMP_293 \def (eq T TMP_292 TMP_291) in -(let TMP_290 \def ((eq T (THead k t t0) (THead k0 t t4)) \to (\forall (P: -Prop).P)) in (let TMP_294 \def (or TMP_293 TMP_290) in (let TMP_289 \def -(\lambda (H7: (eq T t0 t4)).(let TMP_251 \def (\lambda (t5: T).(let TMP_249 -\def (THead k t t0) in (let TMP_250 \def (eq T TMP_249 t5) in (let TMP_248 -\def ((eq T (THead k t t0) t5) \to (\forall (P: Prop).P)) in (or TMP_250 -TMP_248))))) in (let H8 \def (eq_ind_r T t4 TMP_251 H2 t0 H7) in (let TMP_288 -\def (\lambda (t5: T).(let TMP_286 \def (THead k t t0) in (let TMP_285 \def -(THead k0 t t5) in (let TMP_287 \def (eq T TMP_286 TMP_285) in (let TMP_284 -\def ((eq T (THead k t t0) (THead k0 t t5)) \to (\forall (P: Prop).P)) in (or -TMP_287 TMP_284)))))) in (let H_x1 \def (terms_props__kind_dec k k0) in (let -H9 \def H_x1 in (let TMP_282 \def (eq K k k0) in (let TMP_281 \def ((eq K k -k0) \to (\forall (P: Prop).P)) in (let TMP_278 \def (THead k t t0) in (let -TMP_277 \def (THead k0 t t0) in (let TMP_279 \def (eq T TMP_278 TMP_277) in -(let TMP_276 \def ((eq T (THead k t t0) (THead k0 t t0)) \to (\forall (P: -Prop).P)) in (let TMP_280 \def (or TMP_279 TMP_276) in (let TMP_275 \def -(\lambda (H10: (eq K k k0)).(let TMP_274 \def (\lambda (k1: K).(let TMP_272 -\def (THead k t t0) in (let TMP_271 \def (THead k1 t t0) in (let TMP_273 \def -(eq T TMP_272 TMP_271) in (let TMP_270 \def ((eq T (THead k t t0) (THead k1 t -t0)) \to (\forall (P: Prop).P)) in (or TMP_273 TMP_270)))))) in (let TMP_267 -\def (THead k t t0) in (let TMP_266 \def (THead k t t0) in (let TMP_268 \def -(eq T TMP_267 TMP_266) in (let TMP_265 \def ((eq T (THead k t t0) (THead k t -t0)) \to (\forall (P: Prop).P)) in (let TMP_263 \def (THead k t t0) in (let -TMP_264 \def (refl_equal T TMP_263) in (let TMP_269 \def (or_introl TMP_268 -TMP_265 TMP_264) in (eq_ind K k TMP_274 TMP_269 k0 H10)))))))))) in (let -TMP_262 \def (\lambda (H10: (((eq K k k0) \to (\forall (P: Prop).P)))).(let -TMP_260 \def (THead k t t0) in (let TMP_259 \def (THead k0 t t0) in (let -TMP_261 \def (eq T TMP_260 TMP_259) in (let TMP_258 \def ((eq T (THead k t -t0) (THead k0 t t0)) \to (\forall (P: Prop).P)) in (let TMP_257 \def (\lambda -(H11: (eq T (THead k t t0) (THead k0 t t0))).(\lambda (P: Prop).(let TMP_254 -\def (\lambda (e: T).(match e in T with [(TSort _) \Rightarrow k | (TLRef _) -\Rightarrow k | (THead k1 _ _) \Rightarrow k1])) in (let TMP_253 \def (THead -k t t0) in (let TMP_252 \def (THead k0 t t0) in (let H12 \def (f_equal T K -TMP_254 TMP_253 TMP_252 H11) in (let TMP_255 \def (\lambda (k1: K).((eq K k -k1) \to (\forall (P0: Prop).P0))) in (let H13 \def (eq_ind_r K k0 TMP_255 H10 -k H12) in (let TMP_256 \def (refl_equal K k) in (H13 TMP_256 P)))))))))) in -(or_intror TMP_261 TMP_258 TMP_257))))))) in (let TMP_283 \def (or_ind -TMP_282 TMP_281 TMP_280 TMP_275 TMP_262 H9) in (eq_ind T t0 TMP_288 TMP_283 -t4 H7))))))))))))))))) in (let TMP_247 \def (\lambda (H7: (((eq T t0 t4) \to -(\forall (P: Prop).P)))).(let TMP_245 \def (THead k t t0) in (let TMP_244 -\def (THead k0 t t4) in (let TMP_246 \def (eq T TMP_245 TMP_244) in (let -TMP_243 \def ((eq T (THead k t t0) (THead k0 t t4)) \to (\forall (P: -Prop).P)) in (let TMP_242 \def (\lambda (H8: (eq T (THead k t t0) (THead k0 t -t4))).(\lambda (P: Prop).(let TMP_231 \def (\lambda (e: T).(match e in T with +(TLRef n) t0) \to (\forall (P: Prop).P)))).(let TMP_104 \def (TLRef n) in +(let TMP_105 \def (THead k t t0) in (let TMP_106 \def (eq T TMP_104 TMP_105) +in (let TMP_107 \def ((eq T (TLRef n) (THead k t t0)) \to (\forall (P: +Prop).P)) in (let TMP_111 \def (\lambda (H1: (eq T (TLRef n) (THead k t +t0))).(\lambda (P: Prop).(let TMP_108 \def (TLRef n) in (let TMP_109 \def +(\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) +\Rightarrow True | (THead _ _ _) \Rightarrow False])) in (let TMP_110 \def +(THead k t t0) in (let H2 \def (eq_ind T TMP_108 TMP_109 I TMP_110 H1) in +(False_ind P H2))))))) in (or_intror TMP_106 TMP_107 TMP_111))))))))))) in +(T_ind TMP_62 TMP_71 TMP_103 TMP_112 t2))))))) in (let TMP_250 \def (\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).(let TMP_117 \def (\lambda (t3: T).(let +TMP_114 \def (THead k t t0) in (let TMP_115 \def (eq T TMP_114 t3) in (let +TMP_116 \def ((eq T (THead k t t0) t3) \to (\forall (P: Prop).P)) in (or +TMP_115 TMP_116))))) in (let TMP_126 \def (\lambda (n: nat).(let TMP_118 \def +(THead k t t0) in (let TMP_119 \def (TSort n) in (let TMP_120 \def (eq T +TMP_118 TMP_119) in (let TMP_121 \def ((eq T (THead k t t0) (TSort n)) \to +(\forall (P: Prop).P)) in (let TMP_125 \def (\lambda (H1: (eq T (THead k t +t0) (TSort n))).(\lambda (P: Prop).(let TMP_122 \def (THead k t t0) in (let +TMP_123 \def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | +(TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) in (let +TMP_124 \def (TSort n) in (let H2 \def (eq_ind T TMP_122 TMP_123 I TMP_124 +H1) in (False_ind P H2))))))) in (or_intror TMP_120 TMP_121 TMP_125))))))) in +(let TMP_135 \def (\lambda (n: nat).(let TMP_127 \def (THead k t t0) in (let +TMP_128 \def (TLRef n) in (let TMP_129 \def (eq T TMP_127 TMP_128) in (let +TMP_130 \def ((eq T (THead k t t0) (TLRef n)) \to (\forall (P: Prop).P)) in +(let TMP_134 \def (\lambda (H1: (eq T (THead k t t0) (TLRef n))).(\lambda (P: +Prop).(let TMP_131 \def (THead k t t0) in (let TMP_132 \def (\lambda (ee: +T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False +| (THead _ _ _) \Rightarrow True])) in (let TMP_133 \def (TLRef n) in (let H2 +\def (eq_ind T TMP_131 TMP_132 I TMP_133 H1) in (False_ind P H2))))))) in +(or_intror TMP_129 TMP_130 TMP_134))))))) in (let TMP_249 \def (\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: Prop).P)))).(\lambda (t4: T).(\lambda (H2: (or +(eq T (THead k t t0) t4) ((eq T (THead k t t0) t4) \to (\forall (P: +Prop).P)))).(let H_x \def (H t3) in (let H3 \def H_x in (let TMP_136 \def (eq +T t t3) in (let TMP_137 \def ((eq T t t3) \to (\forall (P: Prop).P)) in (let +TMP_138 \def (THead k t t0) in (let TMP_139 \def (THead k0 t3 t4) in (let +TMP_140 \def (eq T TMP_138 TMP_139) in (let TMP_141 \def ((eq T (THead k t +t0) (THead k0 t3 t4)) \to (\forall (P: Prop).P)) in (let TMP_142 \def (or +TMP_140 TMP_141) in (let TMP_221 \def (\lambda (H4: (eq T t t3)).(let TMP_146 +\def (\lambda (t5: T).(let TMP_143 \def (THead k t t0) in (let TMP_144 \def +(eq T TMP_143 t5) in (let TMP_145 \def ((eq T (THead k t t0) t5) \to (\forall +(P: Prop).P)) in (or TMP_144 TMP_145))))) in (let H5 \def (eq_ind_r T t3 +TMP_146 H1 t H4) in (let TMP_151 \def (\lambda (t5: T).(let TMP_147 \def +(THead k t t0) in (let TMP_148 \def (THead k0 t5 t4) in (let TMP_149 \def (eq +T TMP_147 TMP_148) in (let TMP_150 \def ((eq T (THead k t t0) (THead k0 t5 +t4)) \to (\forall (P: Prop).P)) in (or TMP_149 TMP_150)))))) in (let H_x0 +\def (H0 t4) in (let H6 \def H_x0 in (let TMP_152 \def (eq T t0 t4) in (let +TMP_153 \def ((eq T t0 t4) \to (\forall (P: Prop).P)) in (let TMP_154 \def +(THead k t t0) in (let TMP_155 \def (THead k0 t t4) in (let TMP_156 \def (eq +T TMP_154 TMP_155) in (let TMP_157 \def ((eq T (THead k t t0) (THead k0 t +t4)) \to (\forall (P: Prop).P)) in (let TMP_158 \def (or TMP_156 TMP_157) in +(let TMP_200 \def (\lambda (H7: (eq T t0 t4)).(let TMP_162 \def (\lambda (t5: +T).(let TMP_159 \def (THead k t t0) in (let TMP_160 \def (eq T TMP_159 t5) in +(let TMP_161 \def ((eq T (THead k t t0) t5) \to (\forall (P: Prop).P)) in (or +TMP_160 TMP_161))))) in (let H8 \def (eq_ind_r T t4 TMP_162 H2 t0 H7) in (let +TMP_167 \def (\lambda (t5: T).(let TMP_163 \def (THead k t t0) in (let +TMP_164 \def (THead k0 t t5) in (let TMP_165 \def (eq T TMP_163 TMP_164) in +(let TMP_166 \def ((eq T (THead k t t0) (THead k0 t t5)) \to (\forall (P: +Prop).P)) in (or TMP_165 TMP_166)))))) in (let H_x1 \def +(terms_props__kind_dec k k0) in (let H9 \def H_x1 in (let TMP_168 \def (eq K +k k0) in (let TMP_169 \def ((eq K k k0) \to (\forall (P: Prop).P)) in (let +TMP_170 \def (THead k t t0) in (let TMP_171 \def (THead k0 t t0) in (let +TMP_172 \def (eq T TMP_170 TMP_171) in (let TMP_173 \def ((eq T (THead k t +t0) (THead k0 t t0)) \to (\forall (P: Prop).P)) in (let TMP_174 \def (or +TMP_172 TMP_173) in (let TMP_187 \def (\lambda (H10: (eq K k k0)).(let +TMP_179 \def (\lambda (k1: K).(let TMP_175 \def (THead k t t0) in (let +TMP_176 \def (THead k1 t t0) in (let TMP_177 \def (eq T TMP_175 TMP_176) in +(let TMP_178 \def ((eq T (THead k t t0) (THead k1 t t0)) \to (\forall (P: +Prop).P)) in (or TMP_177 TMP_178)))))) in (let TMP_180 \def (THead k t t0) in +(let TMP_181 \def (THead k t t0) in (let TMP_182 \def (eq T TMP_180 TMP_181) +in (let TMP_183 \def ((eq T (THead k t t0) (THead k t t0)) \to (\forall (P: +Prop).P)) in (let TMP_184 \def (THead k t t0) in (let TMP_185 \def +(refl_equal T TMP_184) in (let TMP_186 \def (or_introl TMP_182 TMP_183 +TMP_185) in (eq_ind K k TMP_179 TMP_186 k0 H10)))))))))) in (let TMP_198 \def +(\lambda (H10: (((eq K k k0) \to (\forall (P: Prop).P)))).(let TMP_188 \def +(THead k t t0) in (let TMP_189 \def (THead k0 t t0) in (let TMP_190 \def (eq +T TMP_188 TMP_189) in (let TMP_191 \def ((eq T (THead k t t0) (THead k0 t +t0)) \to (\forall (P: Prop).P)) in (let TMP_197 \def (\lambda (H11: (eq T +(THead k t t0) (THead k0 t t0))).(\lambda (P: Prop).(let TMP_192 \def +(\lambda (e: T).(match e with [(TSort _) \Rightarrow k | (TLRef _) +\Rightarrow k | (THead k1 _ _) \Rightarrow k1])) in (let TMP_193 \def (THead +k t t0) in (let TMP_194 \def (THead k0 t t0) in (let H12 \def (f_equal T K +TMP_192 TMP_193 TMP_194 H11) in (let TMP_195 \def (\lambda (k1: K).((eq K k +k1) \to (\forall (P0: Prop).P0))) in (let H13 \def (eq_ind_r K k0 TMP_195 H10 +k H12) in (let TMP_196 \def (refl_equal K k) in (H13 TMP_196 P)))))))))) in +(or_intror TMP_190 TMP_191 TMP_197))))))) in (let TMP_199 \def (or_ind +TMP_168 TMP_169 TMP_174 TMP_187 TMP_198 H9) in (eq_ind T t0 TMP_167 TMP_199 +t4 H7))))))))))))))))) in (let TMP_219 \def (\lambda (H7: (((eq T t0 t4) \to +(\forall (P: Prop).P)))).(let TMP_201 \def (THead k t t0) in (let TMP_202 +\def (THead k0 t t4) in (let TMP_203 \def (eq T TMP_201 TMP_202) in (let +TMP_204 \def ((eq T (THead k t t0) (THead k0 t t4)) \to (\forall (P: +Prop).P)) in (let TMP_218 \def (\lambda (H8: (eq T (THead k t t0) (THead k0 t +t4))).(\lambda (P: Prop).(let TMP_205 \def (\lambda (e: T).(match e with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k1 _ _) -\Rightarrow k1])) in (let TMP_230 \def (THead k t t0) in (let TMP_229 \def -(THead k0 t t4) in (let H9 \def (f_equal T K TMP_231 TMP_230 TMP_229 H8) in -(let TMP_234 \def (\lambda (e: T).(match e in T with [(TSort _) \Rightarrow -t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t5) \Rightarrow t5])) in (let -TMP_233 \def (THead k t t0) in (let TMP_232 \def (THead k0 t t4) in (let H10 -\def (f_equal T T TMP_234 TMP_233 TMP_232 H8) in (let TMP_241 \def (\lambda -(_: (eq K k k0)).(let TMP_235 \def (\lambda (t5: T).((eq T t0 t5) \to -(\forall (P0: Prop).P0))) in (let H12 \def (eq_ind_r T t4 TMP_235 H7 t0 H10) -in (let TMP_239 \def (\lambda (t5: T).(let TMP_237 \def (THead k t t0) in -(let TMP_238 \def (eq T TMP_237 t5) in (let TMP_236 \def ((eq T (THead k t -t0) t5) \to (\forall (P0: Prop).P0)) in (or TMP_238 TMP_236))))) in (let H13 -\def (eq_ind_r T t4 TMP_239 H2 t0 H10) in (let TMP_240 \def (refl_equal T t0) -in (H12 TMP_240 P))))))) in (TMP_241 H9)))))))))))) in (or_intror TMP_246 -TMP_243 TMP_242))))))) in (let TMP_297 \def (or_ind TMP_296 TMP_295 TMP_294 -TMP_289 TMP_247 H6) in (eq_ind T t TMP_302 TMP_297 t3 H4))))))))))))))))) in -(let TMP_224 \def (\lambda (H4: (((eq T t t3) \to (\forall (P: -Prop).P)))).(let TMP_222 \def (THead k t t0) in (let TMP_221 \def (THead k0 -t3 t4) in (let TMP_223 \def (eq T TMP_222 TMP_221) in (let TMP_220 \def ((eq -T (THead k t t0) (THead k0 t3 t4)) \to (\forall (P: Prop).P)) in (let TMP_219 +\Rightarrow k1])) in (let TMP_206 \def (THead k t t0) in (let TMP_207 \def +(THead k0 t t4) in (let H9 \def (f_equal T K TMP_205 TMP_206 TMP_207 H8) in +(let TMP_208 \def (\lambda (e: T).(match e with [(TSort _) \Rightarrow t0 | +(TLRef _) \Rightarrow t0 | (THead _ _ t5) \Rightarrow t5])) in (let TMP_209 +\def (THead k t t0) in (let TMP_210 \def (THead k0 t t4) in (let H10 \def +(f_equal T T TMP_208 TMP_209 TMP_210 H8) in (let TMP_217 \def (\lambda (_: +(eq K k k0)).(let TMP_211 \def (\lambda (t5: T).((eq T t0 t5) \to (\forall +(P0: Prop).P0))) in (let H12 \def (eq_ind_r T t4 TMP_211 H7 t0 H10) in (let +TMP_215 \def (\lambda (t5: T).(let TMP_212 \def (THead k t t0) in (let +TMP_213 \def (eq T TMP_212 t5) in (let TMP_214 \def ((eq T (THead k t t0) t5) +\to (\forall (P0: Prop).P0)) in (or TMP_213 TMP_214))))) in (let H13 \def +(eq_ind_r T t4 TMP_215 H2 t0 H10) in (let TMP_216 \def (refl_equal T t0) in +(H12 TMP_216 P))))))) in (TMP_217 H9)))))))))))) in (or_intror TMP_203 +TMP_204 TMP_218))))))) in (let TMP_220 \def (or_ind TMP_152 TMP_153 TMP_158 +TMP_200 TMP_219 H6) in (eq_ind T t TMP_151 TMP_220 t3 H4))))))))))))))))) in +(let TMP_248 \def (\lambda (H4: (((eq T t t3) \to (\forall (P: +Prop).P)))).(let TMP_222 \def (THead k t t0) in (let TMP_223 \def (THead k0 +t3 t4) in (let TMP_224 \def (eq T TMP_222 TMP_223) in (let TMP_225 \def ((eq +T (THead k t t0) (THead k0 t3 t4)) \to (\forall (P: Prop).P)) in (let TMP_247 \def (\lambda (H5: (eq T (THead k t t0) (THead k0 t3 t4))).(\lambda (P: -Prop).(let TMP_200 \def (\lambda (e: T).(match e in T with [(TSort _) -\Rightarrow k | (TLRef _) \Rightarrow k | (THead k1 _ _) \Rightarrow k1])) in -(let TMP_199 \def (THead k t t0) in (let TMP_198 \def (THead k0 t3 t4) in -(let H6 \def (f_equal T K TMP_200 TMP_199 TMP_198 H5) in (let TMP_203 \def -(\lambda (e: T).(match e in T with [(TSort _) \Rightarrow t | (TLRef _) -\Rightarrow t | (THead _ t5 _) \Rightarrow t5])) in (let TMP_202 \def (THead -k t t0) in (let TMP_201 \def (THead k0 t3 t4) in (let H7 \def (f_equal T T -TMP_203 TMP_202 TMP_201 H5) in (let TMP_206 \def (\lambda (e: T).(match e in -T with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t5) -\Rightarrow t5])) in (let TMP_205 \def (THead k t t0) in (let TMP_204 \def -(THead k0 t3 t4) in (let H8 \def (f_equal T T TMP_206 TMP_205 TMP_204 H5) in -(let TMP_217 \def (\lambda (H9: (eq T t t3)).(\lambda (_: (eq K k k0)).(let -TMP_210 \def (\lambda (t5: T).(let TMP_208 \def (THead k t t0) in (let -TMP_209 \def (eq T TMP_208 t5) in (let TMP_207 \def ((eq T (THead k t t0) t5) -\to (\forall (P0: Prop).P0)) in (or TMP_209 TMP_207))))) in (let H11 \def -(eq_ind_r T t4 TMP_210 H2 t0 H8) in (let TMP_211 \def (\lambda (t5: T).((eq T -t t5) \to (\forall (P0: Prop).P0))) in (let H12 \def (eq_ind_r T t3 TMP_211 -H4 t H9) in (let TMP_215 \def (\lambda (t5: T).(let TMP_213 \def (THead k t -t0) in (let TMP_214 \def (eq T TMP_213 t5) in (let TMP_212 \def ((eq T (THead -k t t0) t5) \to (\forall (P0: Prop).P0)) in (or TMP_214 TMP_212))))) in (let -H13 \def (eq_ind_r T t3 TMP_215 H1 t H9) in (let TMP_216 \def (refl_equal T -t) in (H12 TMP_216 P)))))))))) in (let TMP_218 \def (TMP_217 H7) in (TMP_218 -H6))))))))))))))))) in (or_intror TMP_223 TMP_220 TMP_219))))))) in (or_ind -TMP_310 TMP_309 TMP_308 TMP_303 TMP_224 H3))))))))))))))))) in (T_ind TMP_333 -TMP_329 TMP_320 TMP_311 t2))))))))))) in (T_ind TMP_447 TMP_444 TMP_389 -TMP_334 t1))))). +Prop).(let TMP_226 \def (\lambda (e: T).(match e with [(TSort _) \Rightarrow +k | (TLRef _) \Rightarrow k | (THead k1 _ _) \Rightarrow k1])) in (let +TMP_227 \def (THead k t t0) in (let TMP_228 \def (THead k0 t3 t4) in (let H6 +\def (f_equal T K TMP_226 TMP_227 TMP_228 H5) in (let TMP_229 \def (\lambda +(e: T).(match e with [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | +(THead _ t5 _) \Rightarrow t5])) in (let TMP_230 \def (THead k t t0) in (let +TMP_231 \def (THead k0 t3 t4) in (let H7 \def (f_equal T T TMP_229 TMP_230 +TMP_231 H5) in (let TMP_232 \def (\lambda (e: T).(match e with [(TSort _) +\Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t5) \Rightarrow t5])) +in (let TMP_233 \def (THead k t t0) in (let TMP_234 \def (THead k0 t3 t4) in +(let H8 \def (f_equal T T TMP_232 TMP_233 TMP_234 H5) in (let TMP_245 \def +(\lambda (H9: (eq T t t3)).(\lambda (_: (eq K k k0)).(let TMP_238 \def +(\lambda (t5: T).(let TMP_235 \def (THead k t t0) in (let TMP_236 \def (eq T +TMP_235 t5) in (let TMP_237 \def ((eq T (THead k t t0) t5) \to (\forall (P0: +Prop).P0)) in (or TMP_236 TMP_237))))) in (let H11 \def (eq_ind_r T t4 +TMP_238 H2 t0 H8) in (let TMP_239 \def (\lambda (t5: T).((eq T t t5) \to +(\forall (P0: Prop).P0))) in (let H12 \def (eq_ind_r T t3 TMP_239 H4 t H9) in +(let TMP_243 \def (\lambda (t5: T).(let TMP_240 \def (THead k t t0) in (let +TMP_241 \def (eq T TMP_240 t5) in (let TMP_242 \def ((eq T (THead k t t0) t5) +\to (\forall (P0: Prop).P0)) in (or TMP_241 TMP_242))))) in (let H13 \def +(eq_ind_r T t3 TMP_243 H1 t H9) in (let TMP_244 \def (refl_equal T t) in (H12 +TMP_244 P)))))))))) in (let TMP_246 \def (TMP_245 H7) in (TMP_246 +H6))))))))))))))))) in (or_intror TMP_224 TMP_225 TMP_247))))))) in (or_ind +TMP_136 TMP_137 TMP_142 TMP_221 TMP_248 H3))))))))))))))))) in (T_ind TMP_117 +TMP_126 TMP_135 TMP_249 t2))))))))))) in (T_ind TMP_3 TMP_58 TMP_113 TMP_250 +t1))))). theorem 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)))))) \def - \lambda (t: T).(let TMP_516 \def (\lambda (t0: T).(let TMP_514 \def (\lambda -(b: B).(\lambda (w: T).(\lambda (u: T).(let TMP_512 \def (Bind b) in (let -TMP_513 \def (THead TMP_512 w u) in (eq T t0 TMP_513)))))) in (let TMP_515 -\def (ex_3 B T T TMP_514) in (let TMP_511 \def (\forall (b: B).(\forall (w: + \lambda (t: T).(let TMP_6 \def (\lambda (t0: T).(let TMP_3 \def (\lambda (b: +B).(\lambda (w: T).(\lambda (u: T).(let TMP_1 \def (Bind b) in (let TMP_2 +\def (THead TMP_1 w u) in (eq T t0 TMP_2)))))) in (let TMP_4 \def (ex_3 B T T +TMP_3) in (let TMP_5 \def (\forall (b: B).(\forall (w: T).(\forall (u: +T).((eq T t0 (THead (Bind b) w u)) \to (\forall (P: Prop).P))))) in (or TMP_4 +TMP_5))))) in (let TMP_18 \def (\lambda (n: nat).(let TMP_10 \def (\lambda +(b: B).(\lambda (w: T).(\lambda (u: T).(let TMP_7 \def (TSort n) in (let +TMP_8 \def (Bind b) in (let TMP_9 \def (THead TMP_8 w u) in (eq T TMP_7 +TMP_9))))))) in (let TMP_11 \def (ex_3 B T T TMP_10) in (let TMP_12 \def +(\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T (TSort n) (THead (Bind +b) w u)) \to (\forall (P: Prop).P))))) in (let TMP_17 \def (\lambda (b: +B).(\lambda (w: T).(\lambda (u: T).(\lambda (H: (eq T (TSort n) (THead (Bind +b) w u))).(\lambda (P: Prop).(let TMP_13 \def (TSort n) in (let TMP_14 \def +(\lambda (ee: T).(match ee with [(TSort _) \Rightarrow True | (TLRef _) +\Rightarrow False | (THead _ _ _) \Rightarrow False])) in (let TMP_15 \def +(Bind b) in (let TMP_16 \def (THead TMP_15 w u) in (let H0 \def (eq_ind T +TMP_13 TMP_14 I TMP_16 H) in (False_ind P H0))))))))))) in (or_intror TMP_11 +TMP_12 TMP_17)))))) in (let TMP_30 \def (\lambda (n: nat).(let TMP_22 \def +(\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(let TMP_19 \def (TLRef n) in +(let TMP_20 \def (Bind b) in (let TMP_21 \def (THead TMP_20 w u) in (eq T +TMP_19 TMP_21))))))) in (let TMP_23 \def (ex_3 B T T TMP_22) in (let TMP_24 +\def (\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T (TLRef n) (THead +(Bind b) w u)) \to (\forall (P: Prop).P))))) in (let TMP_29 \def (\lambda (b: +B).(\lambda (w: T).(\lambda (u: T).(\lambda (H: (eq T (TLRef n) (THead (Bind +b) w u))).(\lambda (P: Prop).(let TMP_25 \def (TLRef n) in (let TMP_26 \def +(\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | (TLRef _) +\Rightarrow True | (THead _ _ _) \Rightarrow False])) in (let TMP_27 \def +(Bind b) in (let TMP_28 \def (THead TMP_27 w u) in (let H0 \def (eq_ind T +TMP_25 TMP_26 I TMP_28 H) in (False_ind P H0))))))))))) in (or_intror TMP_23 +TMP_24 TMP_29)))))) in (let TMP_69 \def (\lambda (k: K).(let TMP_37 \def +(\lambda (k0: K).(\forall (t0: T).((or (ex_3 B T T (\lambda (b: B).(\lambda +(w: T).(\lambda (u: T).(eq T t0 (THead (Bind b) w u)))))) (\forall (b: +B).(\forall (w: T).(\forall (u: T).((eq T t0 (THead (Bind b) w u)) \to +(\forall (P: Prop).P)))))) \to (\forall (t1: T).((or (ex_3 B T T (\lambda (b: +B).(\lambda (w: T).(\lambda (u: T).(eq T t1 (THead (Bind b) w u)))))) +(\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T t1 (THead (Bind b) w +u)) \to (\forall (P: Prop).P)))))) \to (let TMP_34 \def (\lambda (b: +B).(\lambda (w: T).(\lambda (u: T).(let TMP_31 \def (THead k0 t0 t1) in (let +TMP_32 \def (Bind b) in (let TMP_33 \def (THead TMP_32 w u) in (eq T TMP_31 +TMP_33))))))) in (let TMP_35 \def (ex_3 B T T TMP_34) in (let TMP_36 \def +(\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T (THead k0 t0 t1) +(THead (Bind b) w u)) \to (\forall (P: Prop).P))))) in (or TMP_35 +TMP_36))))))))) in (let TMP_54 \def (\lambda (b: B).(\lambda (t0: T).(\lambda +(_: (or (ex_3 B T T (\lambda (b0: B).(\lambda (w: T).(\lambda (u: T).(eq T t0 +(THead (Bind b0) w u)))))) (\forall (b0: B).(\forall (w: T).(\forall (u: +T).((eq T t0 (THead (Bind b0) w u)) \to (\forall (P: Prop).P))))))).(\lambda +(t1: T).(\lambda (_: (or (ex_3 B T T (\lambda (b0: B).(\lambda (w: +T).(\lambda (u: T).(eq T t1 (THead (Bind b0) w u)))))) (\forall (b0: +B).(\forall (w: T).(\forall (u: T).((eq T t1 (THead (Bind b0) w u)) \to +(\forall (P: Prop).P))))))).(let TMP_42 \def (\lambda (b0: B).(\lambda (w: +T).(\lambda (u: T).(let TMP_38 \def (Bind b) in (let TMP_39 \def (THead +TMP_38 t0 t1) in (let TMP_40 \def (Bind b0) in (let TMP_41 \def (THead TMP_40 +w u) in (eq T TMP_39 TMP_41)))))))) in (let TMP_43 \def (ex_3 B T T TMP_42) +in (let TMP_44 \def (\forall (b0: B).(\forall (w: T).(\forall (u: T).((eq T +(THead (Bind b) t0 t1) (THead (Bind b0) w u)) \to (\forall (P: Prop).P))))) +in (let TMP_49 \def (\lambda (b0: B).(\lambda (w: T).(\lambda (u: T).(let +TMP_45 \def (Bind b) in (let TMP_46 \def (THead TMP_45 t0 t1) in (let TMP_47 +\def (Bind b0) in (let TMP_48 \def (THead TMP_47 w u) in (eq T TMP_46 +TMP_48)))))))) in (let TMP_50 \def (Bind b) in (let TMP_51 \def (THead TMP_50 +t0 t1) in (let TMP_52 \def (refl_equal T TMP_51) in (let TMP_53 \def +(ex_3_intro B T T TMP_49 b t0 t1 TMP_52) in (or_introl TMP_43 TMP_44 +TMP_53)))))))))))))) in (let TMP_68 \def (\lambda (f: F).(\lambda (t0: +T).(\lambda (_: (or (ex_3 B T T (\lambda (b: B).(\lambda (w: T).(\lambda (u: +T).(eq T t0 (THead (Bind b) w u)))))) (\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T t0 (THead (Bind b) w u)) \to (\forall (P: -Prop).P))))) in (or TMP_515 TMP_511))))) in (let TMP_510 \def (\lambda (n: -nat).(let TMP_508 \def (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(let -TMP_507 \def (TSort n) in (let TMP_505 \def (Bind b) in (let TMP_506 \def -(THead TMP_505 w u) in (eq T TMP_507 TMP_506))))))) in (let TMP_509 \def -(ex_3 B T T TMP_508) in (let TMP_504 \def (\forall (b: B).(\forall (w: -T).(\forall (u: T).((eq T (TSort n) (THead (Bind b) w u)) \to (\forall (P: -Prop).P))))) in (let TMP_503 \def (\lambda (b: B).(\lambda (w: T).(\lambda -(u: T).(\lambda (H: (eq T (TSort n) (THead (Bind b) w u))).(\lambda (P: -Prop).(let TMP_502 \def (TSort n) in (let TMP_501 \def (\lambda (ee: -T).(match ee in T with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow -False | (THead _ _ _) \Rightarrow False])) in (let TMP_499 \def (Bind b) in -(let TMP_500 \def (THead TMP_499 w u) in (let H0 \def (eq_ind T TMP_502 -TMP_501 I TMP_500 H) in (False_ind P H0))))))))))) in (or_intror TMP_509 -TMP_504 TMP_503)))))) in (let TMP_498 \def (\lambda (n: nat).(let TMP_496 -\def (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(let TMP_495 \def (TLRef -n) in (let TMP_493 \def (Bind b) in (let TMP_494 \def (THead TMP_493 w u) in -(eq T TMP_495 TMP_494))))))) in (let TMP_497 \def (ex_3 B T T TMP_496) in -(let TMP_492 \def (\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T -(TLRef n) (THead (Bind b) w u)) \to (\forall (P: Prop).P))))) in (let TMP_491 -\def (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(\lambda (H: (eq T -(TLRef n) (THead (Bind b) w u))).(\lambda (P: Prop).(let TMP_490 \def (TLRef -n) in (let TMP_489 \def (\lambda (ee: T).(match ee in T with [(TSort _) -\Rightarrow False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow -False])) in (let TMP_487 \def (Bind b) in (let TMP_488 \def (THead TMP_487 w -u) in (let H0 \def (eq_ind T TMP_490 TMP_489 I TMP_488 H) in (False_ind P -H0))))))))))) in (or_intror TMP_497 TMP_492 TMP_491)))))) in (let TMP_486 -\def (\lambda (k: K).(let TMP_485 \def (\lambda (k0: K).(\forall (t0: T).((or -(ex_3 B T T (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(eq T t0 (THead -(Bind b) w u)))))) (\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T t0 -(THead (Bind b) w u)) \to (\forall (P: Prop).P)))))) \to (\forall (t1: -T).((or (ex_3 B T T (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(eq T t1 -(THead (Bind b) w u)))))) (\forall (b: B).(\forall (w: T).(\forall (u: -T).((eq T t1 (THead (Bind b) w u)) \to (\forall (P: Prop).P)))))) \to (let -TMP_483 \def (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(let TMP_482 -\def (THead k0 t0 t1) in (let TMP_480 \def (Bind b) in (let TMP_481 \def -(THead TMP_480 w u) in (eq T TMP_482 TMP_481))))))) in (let TMP_484 \def -(ex_3 B T T TMP_483) in (let TMP_479 \def (\forall (b: B).(\forall (w: -T).(\forall (u: T).((eq T (THead k0 t0 t1) (THead (Bind b) w u)) \to (\forall -(P: Prop).P))))) in (or TMP_484 TMP_479))))))))) in (let TMP_478 \def -(\lambda (b: B).(\lambda (t0: T).(\lambda (_: (or (ex_3 B T T (\lambda (b0: -B).(\lambda (w: T).(\lambda (u: T).(eq T t0 (THead (Bind b0) w u)))))) -(\forall (b0: B).(\forall (w: T).(\forall (u: T).((eq T t0 (THead (Bind b0) w -u)) \to (\forall (P: Prop).P))))))).(\lambda (t1: T).(\lambda (_: (or (ex_3 B -T T (\lambda (b0: B).(\lambda (w: T).(\lambda (u: T).(eq T t1 (THead (Bind -b0) w u)))))) (\forall (b0: B).(\forall (w: T).(\forall (u: T).((eq T t1 -(THead (Bind b0) w u)) \to (\forall (P: Prop).P))))))).(let TMP_476 \def -(\lambda (b0: B).(\lambda (w: T).(\lambda (u: T).(let TMP_474 \def (Bind b) -in (let TMP_475 \def (THead TMP_474 t0 t1) in (let TMP_472 \def (Bind b0) in -(let TMP_473 \def (THead TMP_472 w u) in (eq T TMP_475 TMP_473)))))))) in -(let TMP_477 \def (ex_3 B T T TMP_476) in (let TMP_471 \def (\forall (b0: -B).(\forall (w: T).(\forall (u: T).((eq T (THead (Bind b) t0 t1) (THead (Bind -b0) w u)) \to (\forall (P: Prop).P))))) in (let TMP_469 \def (\lambda (b0: -B).(\lambda (w: T).(\lambda (u: T).(let TMP_467 \def (Bind b) in (let TMP_468 -\def (THead TMP_467 t0 t1) in (let TMP_465 \def (Bind b0) in (let TMP_466 -\def (THead TMP_465 w u) in (eq T TMP_468 TMP_466)))))))) in (let TMP_462 -\def (Bind b) in (let TMP_463 \def (THead TMP_462 t0 t1) in (let TMP_464 \def -(refl_equal T TMP_463) in (let TMP_470 \def (ex_3_intro B T T TMP_469 b t0 t1 -TMP_464) in (or_introl TMP_477 TMP_471 TMP_470)))))))))))))) in (let TMP_461 -\def (\lambda (f: F).(\lambda (t0: T).(\lambda (_: (or (ex_3 B T T (\lambda -(b: B).(\lambda (w: T).(\lambda (u: T).(eq T t0 (THead (Bind b) w u)))))) -(\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T t0 (THead (Bind b) w -u)) \to (\forall (P: Prop).P))))))).(\lambda (t1: T).(\lambda (_: (or (ex_3 B -T T (\lambda (b: B).(\lambda (w: T).(\lambda (u: T).(eq T t1 (THead (Bind b) -w u)))))) (\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T t1 (THead -(Bind b) w u)) \to (\forall (P: Prop).P))))))).(let TMP_459 \def (\lambda (b: -B).(\lambda (w: T).(\lambda (u: T).(let TMP_457 \def (Flat f) in (let TMP_458 -\def (THead TMP_457 t0 t1) in (let TMP_455 \def (Bind b) in (let TMP_456 \def -(THead TMP_455 w u) in (eq T TMP_458 TMP_456)))))))) in (let TMP_460 \def -(ex_3 B T T TMP_459) in (let TMP_454 \def (\forall (b: B).(\forall (w: -T).(\forall (u: T).((eq T (THead (Flat f) t0 t1) (THead (Bind b) w u)) \to -(\forall (P: Prop).P))))) in (let TMP_453 \def (\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 TMP_451 \def (Flat f) in (let TMP_452 \def -(THead TMP_451 t0 t1) in (let TMP_450 \def (\lambda (ee: T).(match ee in T -with [(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead k0 _ -_) \Rightarrow (match k0 in K with [(Bind _) \Rightarrow False | (Flat _) -\Rightarrow True])])) in (let TMP_448 \def (Bind b) in (let TMP_449 \def -(THead TMP_448 w u) in (let H2 \def (eq_ind T TMP_452 TMP_450 I TMP_449 H1) -in (False_ind P H2)))))))))))) in (or_intror TMP_460 TMP_454 -TMP_453)))))))))) in (K_ind TMP_485 TMP_478 TMP_461 k))))) in (T_ind TMP_516 -TMP_510 TMP_498 TMP_486 t))))). +Prop).P))))))).(\lambda (t1: T).(\lambda (_: (or (ex_3 B T T (\lambda (b: +B).(\lambda (w: T).(\lambda (u: T).(eq T t1 (THead (Bind b) w u)))))) +(\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T t1 (THead (Bind b) w +u)) \to (\forall (P: Prop).P))))))).(let TMP_59 \def (\lambda (b: B).(\lambda +(w: T).(\lambda (u: T).(let TMP_55 \def (Flat f) in (let TMP_56 \def (THead +TMP_55 t0 t1) in (let TMP_57 \def (Bind b) in (let TMP_58 \def (THead TMP_57 +w u) in (eq T TMP_56 TMP_58)))))))) in (let TMP_60 \def (ex_3 B T T TMP_59) +in (let TMP_61 \def (\forall (b: B).(\forall (w: T).(\forall (u: T).((eq T +(THead (Flat f) t0 t1) (THead (Bind b) w u)) \to (\forall (P: Prop).P))))) in +(let TMP_67 \def (\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 TMP_62 \def (Flat f) in (let TMP_63 \def (THead TMP_62 t0 t1) in +(let TMP_64 \def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False +| (TLRef _) \Rightarrow False | (THead k0 _ _) \Rightarrow (match k0 with +[(Bind _) \Rightarrow False | (Flat _) \Rightarrow True])])) in (let TMP_65 +\def (Bind b) in (let TMP_66 \def (THead TMP_65 w u) in (let H2 \def (eq_ind +T TMP_63 TMP_64 I TMP_66 H1) in (False_ind P H2)))))))))))) in (or_intror +TMP_60 TMP_61 TMP_67)))))))))) in (K_ind TMP_37 TMP_54 TMP_68 k))))) in +(T_ind TMP_6 TMP_18 TMP_30 TMP_69 t))))). theorem 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))))) \def - \lambda (u: T).(let TMP_646 \def (\lambda (t: T).(\forall (v: T).(let -TMP_644 \def (\lambda (t0: T).(let TMP_642 \def (Bind Abst) in (let TMP_643 -\def (THead TMP_642 v t0) in (eq T t TMP_643)))) in (let TMP_645 \def (ex T -TMP_644) in (let TMP_641 \def (\forall (t0: T).((eq T t (THead (Bind Abst) v -t0)) \to (\forall (P: Prop).P))) in (or TMP_645 TMP_641)))))) in (let TMP_640 -\def (\lambda (n: nat).(\lambda (v: T).(let TMP_638 \def (\lambda (t: T).(let -TMP_637 \def (TSort n) in (let TMP_635 \def (Bind Abst) in (let TMP_636 \def -(THead TMP_635 v t) in (eq T TMP_637 TMP_636))))) in (let TMP_639 \def (ex T -TMP_638) in (let TMP_634 \def (\forall (t: T).((eq T (TSort n) (THead (Bind -Abst) v t)) \to (\forall (P: Prop).P))) in (let TMP_633 \def (\lambda (t: -T).(\lambda (H: (eq T (TSort n) (THead (Bind Abst) v t))).(\lambda (P: -Prop).(let TMP_632 \def (TSort n) in (let TMP_631 \def (\lambda (ee: -T).(match ee in T with [(TSort _) \Rightarrow True | (TLRef _) \Rightarrow -False | (THead _ _ _) \Rightarrow False])) in (let TMP_629 \def (Bind Abst) -in (let TMP_630 \def (THead TMP_629 v t) in (let H0 \def (eq_ind T TMP_632 -TMP_631 I TMP_630 H) in (False_ind P H0))))))))) in (or_intror TMP_639 -TMP_634 TMP_633))))))) in (let TMP_628 \def (\lambda (n: nat).(\lambda (v: -T).(let TMP_626 \def (\lambda (t: T).(let TMP_625 \def (TLRef n) in (let -TMP_623 \def (Bind Abst) in (let TMP_624 \def (THead TMP_623 v t) in (eq T -TMP_625 TMP_624))))) in (let TMP_627 \def (ex T TMP_626) in (let TMP_622 \def -(\forall (t: T).((eq T (TLRef n) (THead (Bind Abst) v t)) \to (\forall (P: -Prop).P))) in (let TMP_621 \def (\lambda (t: T).(\lambda (H: (eq T (TLRef n) -(THead (Bind Abst) v t))).(\lambda (P: Prop).(let TMP_620 \def (TLRef n) in -(let TMP_619 \def (\lambda (ee: T).(match ee in T with [(TSort _) \Rightarrow -False | (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) in -(let TMP_617 \def (Bind Abst) in (let TMP_618 \def (THead TMP_617 v t) in -(let H0 \def (eq_ind T TMP_620 TMP_619 I TMP_618 H) in (False_ind P -H0))))))))) in (or_intror TMP_627 TMP_622 TMP_621))))))) in (let TMP_616 \def -(\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 TMP_517 \def (Bind Abst) in -(let H_x \def (terms_props__kind_dec k TMP_517) in (let H1 \def H_x in (let -TMP_614 \def (Bind Abst) in (let TMP_615 \def (eq K k TMP_614) in (let -TMP_613 \def ((eq K k (Bind Abst)) \to (\forall (P: Prop).P)) in (let TMP_610 -\def (\lambda (t1: T).(let TMP_609 \def (THead k t t0) in (let TMP_607 \def -(Bind Abst) in (let TMP_608 \def (THead TMP_607 v t1) in (eq T TMP_609 -TMP_608))))) in (let TMP_611 \def (ex T TMP_610) in (let TMP_606 \def -(\forall (t1: T).((eq T (THead k t t0) (THead (Bind Abst) v t1)) \to (\forall -(P: Prop).P))) in (let TMP_612 \def (or TMP_611 TMP_606) in (let TMP_605 \def -(\lambda (H2: (eq K k (Bind Abst))).(let TMP_604 \def (Bind Abst) in (let -TMP_603 \def (\lambda (k0: K).(let TMP_601 \def (\lambda (t1: T).(let TMP_600 -\def (THead k0 t t0) in (let TMP_598 \def (Bind Abst) in (let TMP_599 \def -(THead TMP_598 v t1) in (eq T TMP_600 TMP_599))))) in (let TMP_602 \def (ex T -TMP_601) in (let TMP_597 \def (\forall (t1: T).((eq T (THead k0 t t0) (THead -(Bind Abst) v t1)) \to (\forall (P: Prop).P))) in (or TMP_602 TMP_597))))) in -(let H_x0 \def (term_dec t v) in (let H3 \def H_x0 in (let TMP_595 \def (eq T -t v) in (let TMP_594 \def ((eq T t v) \to (\forall (P: Prop).P)) in (let -TMP_591 \def (\lambda (t1: T).(let TMP_589 \def (Bind Abst) in (let TMP_590 -\def (THead TMP_589 t t0) in (let TMP_587 \def (Bind Abst) in (let TMP_588 -\def (THead TMP_587 v t1) in (eq T TMP_590 TMP_588)))))) in (let TMP_592 \def -(ex T TMP_591) in (let TMP_586 \def (\forall (t1: T).((eq T (THead (Bind -Abst) t t0) (THead (Bind Abst) v t1)) \to (\forall (P: Prop).P))) in (let -TMP_593 \def (or TMP_592 TMP_586) in (let TMP_585 \def (\lambda (H4: (eq T t -v)).(let TMP_584 \def (\lambda (t1: T).(let TMP_582 \def (\lambda (t2: -T).(let TMP_580 \def (Bind Abst) in (let TMP_581 \def (THead TMP_580 t t0) in -(let TMP_578 \def (Bind Abst) in (let TMP_579 \def (THead TMP_578 t1 t2) in -(eq T TMP_581 TMP_579)))))) in (let TMP_583 \def (ex T TMP_582) in (let -TMP_577 \def (\forall (t2: T).((eq T (THead (Bind Abst) t t0) (THead (Bind -Abst) t1 t2)) \to (\forall (P: Prop).P))) in (or TMP_583 TMP_577))))) in (let -TMP_574 \def (\lambda (t1: T).(let TMP_572 \def (Bind Abst) in (let TMP_573 -\def (THead TMP_572 t t0) in (let TMP_570 \def (Bind Abst) in (let TMP_571 -\def (THead TMP_570 t t1) in (eq T TMP_573 TMP_571)))))) in (let TMP_575 \def -(ex T TMP_574) in (let TMP_569 \def (\forall (t1: T).((eq T (THead (Bind -Abst) t t0) (THead (Bind Abst) t t1)) \to (\forall (P: Prop).P))) in (let -TMP_567 \def (\lambda (t1: T).(let TMP_565 \def (Bind Abst) in (let TMP_566 -\def (THead TMP_565 t t0) in (let TMP_563 \def (Bind Abst) in (let TMP_564 -\def (THead TMP_563 t t1) in (eq T TMP_566 TMP_564)))))) in (let TMP_560 \def -(Bind Abst) in (let TMP_561 \def (THead TMP_560 t t0) in (let TMP_562 \def -(refl_equal T TMP_561) in (let TMP_568 \def (ex_intro T TMP_567 t0 TMP_562) -in (let TMP_576 \def (or_introl TMP_575 TMP_569 TMP_568) in (eq_ind T t -TMP_584 TMP_576 v H4)))))))))))) in (let TMP_559 \def (\lambda (H4: (((eq T t -v) \to (\forall (P: Prop).P)))).(let TMP_557 \def (\lambda (t1: T).(let -TMP_555 \def (Bind Abst) in (let TMP_556 \def (THead TMP_555 t t0) in (let -TMP_553 \def (Bind Abst) in (let TMP_554 \def (THead TMP_553 v t1) in (eq T -TMP_556 TMP_554)))))) in (let TMP_558 \def (ex T TMP_557) in (let TMP_552 -\def (\forall (t1: T).((eq T (THead (Bind Abst) t t0) (THead (Bind Abst) v -t1)) \to (\forall (P: Prop).P))) in (let TMP_551 \def (\lambda (t1: -T).(\lambda (H5: (eq T (THead (Bind Abst) t t0) (THead (Bind Abst) v -t1))).(\lambda (P: Prop).(let TMP_544 \def (\lambda (e: T).(match e in T with + \lambda (u: T).(let TMP_6 \def (\lambda (t: T).(\forall (v: T).(let TMP_3 +\def (\lambda (t0: T).(let TMP_1 \def (Bind Abst) in (let TMP_2 \def (THead +TMP_1 v t0) in (eq T t TMP_2)))) in (let TMP_4 \def (ex T TMP_3) in (let +TMP_5 \def (\forall (t0: T).((eq T t (THead (Bind Abst) v t0)) \to (\forall +(P: Prop).P))) in (or TMP_4 TMP_5)))))) in (let TMP_18 \def (\lambda (n: +nat).(\lambda (v: T).(let TMP_10 \def (\lambda (t: T).(let TMP_7 \def (TSort +n) in (let TMP_8 \def (Bind Abst) in (let TMP_9 \def (THead TMP_8 v t) in (eq +T TMP_7 TMP_9))))) in (let TMP_11 \def (ex T TMP_10) in (let TMP_12 \def +(\forall (t: T).((eq T (TSort n) (THead (Bind Abst) v t)) \to (\forall (P: +Prop).P))) in (let TMP_17 \def (\lambda (t: T).(\lambda (H: (eq T (TSort n) +(THead (Bind Abst) v t))).(\lambda (P: Prop).(let TMP_13 \def (TSort n) in +(let TMP_14 \def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow True +| (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow False])) in (let +TMP_15 \def (Bind Abst) in (let TMP_16 \def (THead TMP_15 v t) in (let H0 +\def (eq_ind T TMP_13 TMP_14 I TMP_16 H) in (False_ind P H0))))))))) in +(or_intror TMP_11 TMP_12 TMP_17))))))) in (let TMP_30 \def (\lambda (n: +nat).(\lambda (v: T).(let TMP_22 \def (\lambda (t: T).(let TMP_19 \def (TLRef +n) in (let TMP_20 \def (Bind Abst) in (let TMP_21 \def (THead TMP_20 v t) in +(eq T TMP_19 TMP_21))))) in (let TMP_23 \def (ex T TMP_22) in (let TMP_24 +\def (\forall (t: T).((eq T (TLRef n) (THead (Bind Abst) v t)) \to (\forall +(P: Prop).P))) in (let TMP_29 \def (\lambda (t: T).(\lambda (H: (eq T (TLRef +n) (THead (Bind Abst) v t))).(\lambda (P: Prop).(let TMP_25 \def (TLRef n) in +(let TMP_26 \def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False +| (TLRef _) \Rightarrow True | (THead _ _ _) \Rightarrow False])) in (let +TMP_27 \def (Bind Abst) in (let TMP_28 \def (THead TMP_27 v t) in (let H0 +\def (eq_ind T TMP_25 TMP_26 I TMP_28 H) in (False_ind P H0))))))))) in +(or_intror TMP_23 TMP_24 TMP_29))))))) in (let TMP_130 \def (\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 TMP_31 \def (Bind Abst) in (let H_x \def +(terms_props__kind_dec k TMP_31) in (let H1 \def H_x in (let TMP_32 \def +(Bind Abst) in (let TMP_33 \def (eq K k TMP_32) in (let TMP_34 \def ((eq K k +(Bind Abst)) \to (\forall (P: Prop).P)) in (let TMP_38 \def (\lambda (t1: +T).(let TMP_35 \def (THead k t t0) in (let TMP_36 \def (Bind Abst) in (let +TMP_37 \def (THead TMP_36 v t1) in (eq T TMP_35 TMP_37))))) in (let TMP_39 +\def (ex T TMP_38) in (let TMP_40 \def (\forall (t1: T).((eq T (THead k t t0) +(THead (Bind Abst) v t1)) \to (\forall (P: Prop).P))) in (let TMP_41 \def (or +TMP_39 TMP_40) in (let TMP_107 \def (\lambda (H2: (eq K k (Bind Abst))).(let +TMP_42 \def (Bind Abst) in (let TMP_49 \def (\lambda (k0: K).(let TMP_46 \def +(\lambda (t1: T).(let TMP_43 \def (THead k0 t t0) in (let TMP_44 \def (Bind +Abst) in (let TMP_45 \def (THead TMP_44 v t1) in (eq T TMP_43 TMP_45))))) in +(let TMP_47 \def (ex T TMP_46) in (let TMP_48 \def (\forall (t1: T).((eq T +(THead k0 t t0) (THead (Bind Abst) v t1)) \to (\forall (P: Prop).P))) in (or +TMP_47 TMP_48))))) in (let H_x0 \def (term_dec t v) in (let H3 \def H_x0 in +(let TMP_50 \def (eq T t v) in (let TMP_51 \def ((eq T t v) \to (\forall (P: +Prop).P)) in (let TMP_56 \def (\lambda (t1: T).(let TMP_52 \def (Bind Abst) +in (let TMP_53 \def (THead TMP_52 t t0) in (let TMP_54 \def (Bind Abst) in +(let TMP_55 \def (THead TMP_54 v t1) in (eq T TMP_53 TMP_55)))))) in (let +TMP_57 \def (ex T TMP_56) in (let TMP_58 \def (\forall (t1: T).((eq T (THead +(Bind Abst) t t0) (THead (Bind Abst) v t1)) \to (\forall (P: Prop).P))) in +(let TMP_59 \def (or TMP_57 TMP_58) in (let TMP_85 \def (\lambda (H4: (eq T t +v)).(let TMP_67 \def (\lambda (t1: T).(let TMP_64 \def (\lambda (t2: T).(let +TMP_60 \def (Bind Abst) in (let TMP_61 \def (THead TMP_60 t t0) in (let +TMP_62 \def (Bind Abst) in (let TMP_63 \def (THead TMP_62 t1 t2) in (eq T +TMP_61 TMP_63)))))) in (let TMP_65 \def (ex T TMP_64) in (let TMP_66 \def +(\forall (t2: T).((eq T (THead (Bind Abst) t t0) (THead (Bind Abst) t1 t2)) +\to (\forall (P: Prop).P))) in (or TMP_65 TMP_66))))) in (let TMP_72 \def +(\lambda (t1: T).(let TMP_68 \def (Bind Abst) in (let TMP_69 \def (THead +TMP_68 t t0) in (let TMP_70 \def (Bind Abst) in (let TMP_71 \def (THead +TMP_70 t t1) in (eq T TMP_69 TMP_71)))))) in (let TMP_73 \def (ex T TMP_72) +in (let TMP_74 \def (\forall (t1: T).((eq T (THead (Bind Abst) t t0) (THead +(Bind Abst) t t1)) \to (\forall (P: Prop).P))) in (let TMP_79 \def (\lambda +(t1: T).(let TMP_75 \def (Bind Abst) in (let TMP_76 \def (THead TMP_75 t t0) +in (let TMP_77 \def (Bind Abst) in (let TMP_78 \def (THead TMP_77 t t1) in +(eq T TMP_76 TMP_78)))))) in (let TMP_80 \def (Bind Abst) in (let TMP_81 \def +(THead TMP_80 t t0) in (let TMP_82 \def (refl_equal T TMP_81) in (let TMP_83 +\def (ex_intro T TMP_79 t0 TMP_82) in (let TMP_84 \def (or_introl TMP_73 +TMP_74 TMP_83) in (eq_ind T t TMP_67 TMP_84 v H4)))))))))))) in (let TMP_105 +\def (\lambda (H4: (((eq T t v) \to (\forall (P: Prop).P)))).(let TMP_90 \def +(\lambda (t1: T).(let TMP_86 \def (Bind Abst) in (let TMP_87 \def (THead +TMP_86 t t0) in (let TMP_88 \def (Bind Abst) in (let TMP_89 \def (THead +TMP_88 v t1) in (eq T TMP_87 TMP_89)))))) in (let TMP_91 \def (ex T TMP_90) +in (let TMP_92 \def (\forall (t1: T).((eq T (THead (Bind Abst) t t0) (THead +(Bind Abst) v t1)) \to (\forall (P: Prop).P))) in (let TMP_104 \def (\lambda +(t1: T).(\lambda (H5: (eq T (THead (Bind Abst) t t0) (THead (Bind Abst) v +t1))).(\lambda (P: Prop).(let TMP_93 \def (\lambda (e: T).(match e with [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | (THead _ t2 _) -\Rightarrow t2])) in (let TMP_542 \def (Bind Abst) in (let TMP_543 \def -(THead TMP_542 t t0) in (let TMP_540 \def (Bind Abst) in (let TMP_541 \def -(THead TMP_540 v t1) in (let H6 \def (f_equal T T TMP_544 TMP_543 TMP_541 H5) -in (let TMP_549 \def (\lambda (e: T).(match e in T with [(TSort _) -\Rightarrow t0 | (TLRef _) \Rightarrow t0 | (THead _ _ t2) \Rightarrow t2])) -in (let TMP_547 \def (Bind Abst) in (let TMP_548 \def (THead TMP_547 t t0) in -(let TMP_545 \def (Bind Abst) in (let TMP_546 \def (THead TMP_545 v t1) in -(let H7 \def (f_equal T T TMP_549 TMP_548 TMP_546 H5) in (let TMP_550 \def -(\lambda (H8: (eq T t v)).(H4 H8 P)) in (TMP_550 H6))))))))))))))))) in -(or_intror TMP_558 TMP_552 TMP_551)))))) in (let TMP_596 \def (or_ind TMP_595 -TMP_594 TMP_593 TMP_585 TMP_559 H3) in (eq_ind_r K TMP_604 TMP_603 TMP_596 k -H2))))))))))))))) in (let TMP_539 \def (\lambda (H2: (((eq K k (Bind Abst)) -\to (\forall (P: Prop).P)))).(let TMP_537 \def (\lambda (t1: T).(let TMP_536 -\def (THead k t t0) in (let TMP_534 \def (Bind Abst) in (let TMP_535 \def -(THead TMP_534 v t1) in (eq T TMP_536 TMP_535))))) in (let TMP_538 \def (ex T -TMP_537) in (let TMP_533 \def (\forall (t1: T).((eq T (THead k t t0) (THead -(Bind Abst) v t1)) \to (\forall (P: Prop).P))) in (let TMP_532 \def (\lambda -(t1: T).(\lambda (H3: (eq T (THead k t t0) (THead (Bind Abst) v -t1))).(\lambda (P: Prop).(let TMP_521 \def (\lambda (e: T).(match e in T with -[(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k0 _ _) -\Rightarrow k0])) in (let TMP_520 \def (THead k t t0) in (let TMP_518 \def -(Bind Abst) in (let TMP_519 \def (THead TMP_518 v t1) in (let H4 \def -(f_equal T K TMP_521 TMP_520 TMP_519 H3) in (let TMP_525 \def (\lambda (e: -T).(match e in T with [(TSort _) \Rightarrow t | (TLRef _) \Rightarrow t | -(THead _ t2 _) \Rightarrow t2])) in (let TMP_524 \def (THead k t t0) in (let -TMP_522 \def (Bind Abst) in (let TMP_523 \def (THead TMP_522 v t1) in (let H5 -\def (f_equal T T TMP_525 TMP_524 TMP_523 H3) in (let TMP_529 \def (\lambda -(e: T).(match e in T with [(TSort _) \Rightarrow t0 | (TLRef _) \Rightarrow -t0 | (THead _ _ t2) \Rightarrow t2])) in (let TMP_528 \def (THead k t t0) in -(let TMP_526 \def (Bind Abst) in (let TMP_527 \def (THead TMP_526 v t1) in -(let H6 \def (f_equal T T TMP_529 TMP_528 TMP_527 H3) in (let TMP_530 \def -(\lambda (_: (eq T t v)).(\lambda (H8: (eq K k (Bind Abst))).(H2 H8 P))) in -(let TMP_531 \def (TMP_530 H5) in (TMP_531 H4))))))))))))))))))))) in -(or_intror TMP_538 TMP_533 TMP_532)))))) in (or_ind TMP_615 TMP_613 TMP_612 -TMP_605 TMP_539 H1))))))))))))))))))) in (T_ind TMP_646 TMP_640 TMP_628 -TMP_616 u))))). +\Rightarrow t2])) in (let TMP_94 \def (Bind Abst) in (let TMP_95 \def (THead +TMP_94 t t0) in (let TMP_96 \def (Bind Abst) in (let TMP_97 \def (THead +TMP_96 v t1) in (let H6 \def (f_equal T T TMP_93 TMP_95 TMP_97 H5) in (let +TMP_98 \def (\lambda (e: T).(match e with [(TSort _) \Rightarrow t0 | (TLRef +_) \Rightarrow t0 | (THead _ _ t2) \Rightarrow t2])) in (let TMP_99 \def +(Bind Abst) in (let TMP_100 \def (THead TMP_99 t t0) in (let TMP_101 \def +(Bind Abst) in (let TMP_102 \def (THead TMP_101 v t1) in (let H7 \def +(f_equal T T TMP_98 TMP_100 TMP_102 H5) in (let TMP_103 \def (\lambda (H8: +(eq T t v)).(H4 H8 P)) in (TMP_103 H6))))))))))))))))) in (or_intror TMP_91 +TMP_92 TMP_104)))))) in (let TMP_106 \def (or_ind TMP_50 TMP_51 TMP_59 TMP_85 +TMP_105 H3) in (eq_ind_r K TMP_42 TMP_49 TMP_106 k H2))))))))))))))) in (let +TMP_129 \def (\lambda (H2: (((eq K k (Bind Abst)) \to (\forall (P: +Prop).P)))).(let TMP_111 \def (\lambda (t1: T).(let TMP_108 \def (THead k t +t0) in (let TMP_109 \def (Bind Abst) in (let TMP_110 \def (THead TMP_109 v +t1) in (eq T TMP_108 TMP_110))))) in (let TMP_112 \def (ex T TMP_111) in (let +TMP_113 \def (\forall (t1: T).((eq T (THead k t t0) (THead (Bind Abst) v t1)) +\to (\forall (P: Prop).P))) in (let TMP_128 \def (\lambda (t1: T).(\lambda +(H3: (eq T (THead k t t0) (THead (Bind Abst) v t1))).(\lambda (P: Prop).(let +TMP_114 \def (\lambda (e: T).(match e with [(TSort _) \Rightarrow k | (TLRef +_) \Rightarrow k | (THead k0 _ _) \Rightarrow k0])) in (let TMP_115 \def +(THead k t t0) in (let TMP_116 \def (Bind Abst) in (let TMP_117 \def (THead +TMP_116 v t1) in (let H4 \def (f_equal T K TMP_114 TMP_115 TMP_117 H3) in +(let TMP_118 \def (\lambda (e: T).(match e with [(TSort _) \Rightarrow t | +(TLRef _) \Rightarrow t | (THead _ t2 _) \Rightarrow t2])) in (let TMP_119 +\def (THead k t t0) in (let TMP_120 \def (Bind Abst) in (let TMP_121 \def +(THead TMP_120 v t1) in (let H5 \def (f_equal T T TMP_118 TMP_119 TMP_121 H3) +in (let TMP_122 \def (\lambda (e: T).(match e with [(TSort _) \Rightarrow t0 +| (TLRef _) \Rightarrow t0 | (THead _ _ t2) \Rightarrow t2])) in (let TMP_123 +\def (THead k t t0) in (let TMP_124 \def (Bind Abst) in (let TMP_125 \def +(THead TMP_124 v t1) in (let H6 \def (f_equal T T TMP_122 TMP_123 TMP_125 H3) +in (let TMP_126 \def (\lambda (_: (eq T t v)).(\lambda (H8: (eq K k (Bind +Abst))).(H2 H8 P))) in (let TMP_127 \def (TMP_126 H5) in (TMP_127 +H4))))))))))))))))))))) in (or_intror TMP_112 TMP_113 TMP_128)))))) in +(or_ind TMP_33 TMP_34 TMP_41 TMP_107 TMP_129 H1))))))))))))))))))) in (T_ind +TMP_6 TMP_18 TMP_30 TMP_130 u))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/T/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/T/defs.ma index c065188f3..313ac01ae 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/T/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/T/defs.ma @@ -35,7 +35,7 @@ inductive T: Type[0] \def | THead: K \to (T \to (T \to T)). let rec tweight (t: T) on t: nat \def match t with [(TSort _) \Rightarrow (S -O) | (TLRef _) \Rightarrow (S O) | (THead _ u t0) \Rightarrow (let TMP_1824 -\def (tweight u) in (let TMP_1823 \def (tweight t0) in (let TMP_1825 \def -(plus TMP_1824 TMP_1823) in (S TMP_1825))))]. +O) | (TLRef _) \Rightarrow (S O) | (THead _ u t0) \Rightarrow (let TMP_1 \def +(tweight u) in (let TMP_2 \def (tweight t0) in (let TMP_3 \def (plus TMP_1 +TMP_2) in (S TMP_3))))]. diff --git a/matita/matita/contribs/lambdadelta/basic_1/T/fwd.ma b/matita/matita/contribs/lambdadelta/basic_1/T/fwd.ma index 32ca6cbc8..f08b62d8c 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/T/fwd.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/T/fwd.ma @@ -19,10 +19,9 @@ include "basic_1/T/defs.ma". let rec T_rect (P: (T \to Type[0])) (f: (\forall (n: nat).(P (TSort n)))) (f0: (\forall (n: nat).(P (TLRef n)))) (f1: (\forall (k: K).(\forall (t: T).((P t) \to (\forall (t0: T).((P t0) \to (P (THead k t t0)))))))) (t: T) on -t: P t \def match t in T with [(TSort n) \Rightarrow (f n) | (TLRef n) -\Rightarrow (f0 n) | (THead k t0 t1) \Rightarrow (let TMP_2 \def ((T_rect P f -f0 f1) t0) in (let TMP_1 \def ((T_rect P f f0 f1) t1) in (f1 k t0 TMP_2 t1 -TMP_1)))]. +t: P t \def match t with [(TSort n) \Rightarrow (f n) | (TLRef n) \Rightarrow +(f0 n) | (THead k t0 t1) \Rightarrow (let TMP_1 \def ((T_rect P f f0 f1) t0) +in (let TMP_2 \def ((T_rect P f f0 f1) t1) in (f1 k t0 TMP_1 t1 TMP_2)))]. theorem T_ind: \forall (P: ((T \to Prop))).(((\forall (n: nat).(P (TSort n)))) \to @@ -36,42 +35,41 @@ theorem thead_x_y_y: \forall (k: K).(\forall (v: T).(\forall (t: T).((eq T (THead k v t) t) \to (\forall (P: Prop).P)))) \def - \lambda (k: K).(\lambda (v: T).(\lambda (t: T).(let TMP_676 \def (\lambda -(t0: T).((eq T (THead k v t0) t0) \to (\forall (P: Prop).P))) in (let TMP_675 -\def (\lambda (n: nat).(\lambda (H: (eq T (THead k v (TSort n)) (TSort -n))).(\lambda (P: Prop).(let TMP_673 \def (TSort n) in (let TMP_674 \def -(THead k v TMP_673) in (let TMP_672 \def (\lambda (ee: T).(match ee in T with -[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) -\Rightarrow True])) in (let TMP_671 \def (TSort n) in (let H0 \def (eq_ind T -TMP_674 TMP_672 I TMP_671 H) in (False_ind P H0))))))))) in (let TMP_670 \def -(\lambda (n: nat).(\lambda (H: (eq T (THead k v (TLRef n)) (TLRef -n))).(\lambda (P: Prop).(let TMP_668 \def (TLRef n) in (let TMP_669 \def -(THead k v TMP_668) in (let TMP_667 \def (\lambda (ee: T).(match ee in T with -[(TSort _) \Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) -\Rightarrow True])) in (let TMP_666 \def (TLRef n) in (let H0 \def (eq_ind T -TMP_669 TMP_667 I TMP_666 H) in (False_ind P H0))))))))) in (let TMP_665 \def -(\lambda (k0: K).(\lambda (t0: T).(\lambda (_: (((eq T (THead k v t0) t0) \to -(\forall (P: Prop).P)))).(\lambda (t1: T).(\lambda (H0: (((eq T (THead k v -t1) t1) \to (\forall (P: Prop).P)))).(\lambda (H1: (eq T (THead k v (THead k0 -t0 t1)) (THead k0 t0 t1))).(\lambda (P: Prop).(let TMP_652 \def (\lambda (e: -T).(match e in T with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | -(THead k1 _ _) \Rightarrow k1])) in (let TMP_650 \def (THead k0 t0 t1) in -(let TMP_651 \def (THead k v TMP_650) in (let TMP_649 \def (THead k0 t0 t1) -in (let H2 \def (f_equal T K TMP_652 TMP_651 TMP_649 H1) in (let TMP_656 \def -(\lambda (e: T).(match e in T with [(TSort _) \Rightarrow v | (TLRef _) -\Rightarrow v | (THead _ t2 _) \Rightarrow t2])) in (let TMP_654 \def (THead -k0 t0 t1) in (let TMP_655 \def (THead k v TMP_654) in (let TMP_653 \def -(THead k0 t0 t1) in (let H3 \def (f_equal T T TMP_656 TMP_655 TMP_653 H1) in -(let TMP_660 \def (\lambda (e: T).(match e in T with [(TSort _) \Rightarrow -(THead k0 t0 t1) | (TLRef _) \Rightarrow (THead k0 t0 t1) | (THead _ _ t2) -\Rightarrow t2])) in (let TMP_658 \def (THead k0 t0 t1) in (let TMP_659 \def -(THead k v TMP_658) in (let TMP_657 \def (THead k0 t0 t1) in (let H4 \def -(f_equal T T TMP_660 TMP_659 TMP_657 H1) in (let TMP_663 \def (\lambda (H5: -(eq T v t0)).(\lambda (H6: (eq K k k0)).(let TMP_661 \def (\lambda (t2: -T).((eq T (THead k t2 t1) t1) \to (\forall (P0: Prop).P0))) in (let H7 \def -(eq_ind T v TMP_661 H0 t0 H5) in (let TMP_662 \def (\lambda (k1: K).((eq T -(THead k1 t0 t1) t1) \to (\forall (P0: Prop).P0))) in (let H8 \def (eq_ind K -k TMP_662 H7 k0 H6) in (H8 H4 P))))))) in (let TMP_664 \def (TMP_663 H3) in -(TMP_664 H2))))))))))))))))))))))))) in (T_ind TMP_676 TMP_675 TMP_670 -TMP_665 t))))))). + \lambda (k: K).(\lambda (v: T).(\lambda (t: T).(let TMP_1 \def (\lambda (t0: +T).((eq T (THead k v t0) t0) \to (\forall (P: Prop).P))) in (let TMP_6 \def +(\lambda (n: nat).(\lambda (H: (eq T (THead k v (TSort n)) (TSort +n))).(\lambda (P: Prop).(let TMP_2 \def (TSort n) in (let TMP_3 \def (THead k +v TMP_2) in (let TMP_4 \def (\lambda (ee: T).(match ee with [(TSort _) +\Rightarrow False | (TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow +True])) in (let TMP_5 \def (TSort n) in (let H0 \def (eq_ind T TMP_3 TMP_4 I +TMP_5 H) in (False_ind P H0))))))))) in (let TMP_11 \def (\lambda (n: +nat).(\lambda (H: (eq T (THead k v (TLRef n)) (TLRef n))).(\lambda (P: +Prop).(let TMP_7 \def (TLRef n) in (let TMP_8 \def (THead k v TMP_7) in (let +TMP_9 \def (\lambda (ee: T).(match ee with [(TSort _) \Rightarrow False | +(TLRef _) \Rightarrow False | (THead _ _ _) \Rightarrow True])) in (let +TMP_10 \def (TLRef n) in (let H0 \def (eq_ind T TMP_8 TMP_9 I TMP_10 H) in +(False_ind P H0))))))))) in (let TMP_28 \def (\lambda (k0: K).(\lambda (t0: +T).(\lambda (_: (((eq T (THead k v t0) t0) \to (\forall (P: +Prop).P)))).(\lambda (t1: T).(\lambda (H0: (((eq T (THead k v t1) t1) \to +(\forall (P: Prop).P)))).(\lambda (H1: (eq T (THead k v (THead k0 t0 t1)) +(THead k0 t0 t1))).(\lambda (P: Prop).(let TMP_12 \def (\lambda (e: T).(match +e with [(TSort _) \Rightarrow k | (TLRef _) \Rightarrow k | (THead k1 _ _) +\Rightarrow k1])) in (let TMP_13 \def (THead k0 t0 t1) in (let TMP_14 \def +(THead k v TMP_13) in (let TMP_15 \def (THead k0 t0 t1) in (let H2 \def +(f_equal T K TMP_12 TMP_14 TMP_15 H1) in (let TMP_16 \def (\lambda (e: +T).(match e with [(TSort _) \Rightarrow v | (TLRef _) \Rightarrow v | (THead +_ t2 _) \Rightarrow t2])) in (let TMP_17 \def (THead k0 t0 t1) in (let TMP_18 +\def (THead k v TMP_17) in (let TMP_19 \def (THead k0 t0 t1) in (let H3 \def +(f_equal T T TMP_16 TMP_18 TMP_19 H1) in (let TMP_20 \def (\lambda (e: +T).(match e with [(TSort _) \Rightarrow (THead k0 t0 t1) | (TLRef _) +\Rightarrow (THead k0 t0 t1) | (THead _ _ t2) \Rightarrow t2])) in (let +TMP_21 \def (THead k0 t0 t1) in (let TMP_22 \def (THead k v TMP_21) in (let +TMP_23 \def (THead k0 t0 t1) in (let H4 \def (f_equal T T TMP_20 TMP_22 +TMP_23 H1) in (let TMP_26 \def (\lambda (H5: (eq T v t0)).(\lambda (H6: (eq K +k k0)).(let TMP_24 \def (\lambda (t2: T).((eq T (THead k t2 t1) t1) \to +(\forall (P0: Prop).P0))) in (let H7 \def (eq_ind T v TMP_24 H0 t0 H5) in +(let TMP_25 \def (\lambda (k1: K).((eq T (THead k1 t0 t1) t1) \to (\forall +(P0: Prop).P0))) in (let H8 \def (eq_ind K k TMP_25 H7 k0 H6) in (H8 H4 +P))))))) in (let TMP_27 \def (TMP_26 H3) in (TMP_27 +H2))))))))))))))))))))))))) in (T_ind TMP_1 TMP_6 TMP_11 TMP_28 t))))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/T/props.ma b/matita/matita/contribs/lambdadelta/basic_1/T/props.ma index 9b7a03f1d..cce311989 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/T/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/T/props.ma @@ -19,48 +19,46 @@ include "basic_1/T/fwd.ma". theorem not_abbr_abst: not (eq B Abbr Abst) \def - \lambda (H: (eq B Abbr Abst)).(let TMP_1 \def (\lambda (ee: B).(match ee in -B with [Abbr \Rightarrow True | Abst \Rightarrow False | Void \Rightarrow + \lambda (H: (eq B Abbr Abst)).(let TMP_1 \def (\lambda (ee: B).(match ee +with [Abbr \Rightarrow True | Abst \Rightarrow False | Void \Rightarrow False])) in (let H0 \def (eq_ind B Abbr TMP_1 I Abst H) in (False_ind False H0))). theorem not_void_abst: not (eq B Void Abst) \def - \lambda (H: (eq B Void Abst)).(let TMP_2 \def (\lambda (ee: B).(match ee in -B with [Abbr \Rightarrow False | Abst \Rightarrow False | Void \Rightarrow -True])) in (let H0 \def (eq_ind B Void TMP_2 I Abst H) in (False_ind False + \lambda (H: (eq B Void Abst)).(let TMP_1 \def (\lambda (ee: B).(match ee +with [Abbr \Rightarrow False | Abst \Rightarrow False | Void \Rightarrow +True])) in (let H0 \def (eq_ind B Void TMP_1 I Abst H) in (False_ind False H0))). theorem not_abbr_void: not (eq B Abbr Void) \def - \lambda (H: (eq B Abbr Void)).(let TMP_3 \def (\lambda (ee: B).(match ee in -B with [Abbr \Rightarrow True | Abst \Rightarrow False | Void \Rightarrow -False])) in (let H0 \def (eq_ind B Abbr TMP_3 I Void H) in (False_ind False + \lambda (H: (eq B Abbr Void)).(let TMP_1 \def (\lambda (ee: B).(match ee +with [Abbr \Rightarrow True | Abst \Rightarrow False | Void \Rightarrow +False])) in (let H0 \def (eq_ind B Abbr TMP_1 I Void H) in (False_ind False H0))). theorem not_abst_void: not (eq B Abst Void) \def - \lambda (H: (eq B Abst Void)).(let TMP_4 \def (\lambda (ee: B).(match ee in -B with [Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow -False])) in (let H0 \def (eq_ind B Abst TMP_4 I Void H) in (False_ind False + \lambda (H: (eq B Abst Void)).(let TMP_1 \def (\lambda (ee: B).(match ee +with [Abbr \Rightarrow False | Abst \Rightarrow True | Void \Rightarrow +False])) in (let H0 \def (eq_ind B Abst TMP_1 I Void H) in (False_ind False H0))). theorem tweight_lt: \forall (t: T).(lt O (tweight t)) \def - \lambda (t: T).(let TMP_1848 \def (\lambda (t0: T).(let TMP_1847 \def -(tweight t0) in (lt O TMP_1847))) in (let TMP_1846 \def (\lambda (_: -nat).(let TMP_1845 \def (S O) in (le_n TMP_1845))) in (let TMP_1844 \def -(\lambda (_: nat).(let TMP_1843 \def (S O) in (le_n TMP_1843))) in (let -TMP_1842 \def (\lambda (_: K).(\lambda (t0: T).(\lambda (H: (lt O (tweight -t0))).(\lambda (t1: T).(\lambda (_: (lt O (tweight t1))).(let TMP_1841 \def -(S O) in (let TMP_1839 \def (tweight t0) in (let TMP_1838 \def (tweight t1) -in (let TMP_1840 \def (plus TMP_1839 TMP_1838) in (let TMP_1836 \def (S O) in -(let TMP_1835 \def (tweight t0) in (let TMP_1834 \def (tweight t1) in (let -TMP_1837 \def (le_plus_trans TMP_1836 TMP_1835 TMP_1834 H) in (le_S TMP_1841 -TMP_1840 TMP_1837)))))))))))))) in (T_ind TMP_1848 TMP_1846 TMP_1844 TMP_1842 -t))))). + \lambda (t: T).(let TMP_2 \def (\lambda (t0: T).(let TMP_1 \def (tweight t0) +in (lt O TMP_1))) in (let TMP_4 \def (\lambda (_: nat).(let TMP_3 \def (S O) +in (le_n TMP_3))) in (let TMP_6 \def (\lambda (_: nat).(let TMP_5 \def (S O) +in (le_n TMP_5))) in (let TMP_15 \def (\lambda (_: K).(\lambda (t0: +T).(\lambda (H: (lt O (tweight t0))).(\lambda (t1: T).(\lambda (_: (lt O +(tweight t1))).(let TMP_7 \def (S O) in (let TMP_8 \def (tweight t0) in (let +TMP_9 \def (tweight t1) in (let TMP_10 \def (plus TMP_8 TMP_9) in (let TMP_11 +\def (S O) in (let TMP_12 \def (tweight t0) in (let TMP_13 \def (tweight t1) +in (let TMP_14 \def (le_plus_trans TMP_11 TMP_12 TMP_13 H) in (le_S TMP_7 +TMP_10 TMP_14)))))))))))))) in (T_ind TMP_2 TMP_4 TMP_6 TMP_15 t))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/s/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/s/defs.ma index 0d1fb7914..9a2f29db9 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/s/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/s/defs.ma @@ -14,7 +14,7 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/T/defs.ma". +include "basic_1/T/defs.ma". definition s: K \to (nat \to nat) diff --git a/matita/matita/contribs/lambdadelta/basic_1/s/fwd.ma b/matita/matita/contribs/lambdadelta/basic_1/s/fwd.ma new file mode 100644 index 000000000..c9ab5dbfc --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_1/s/fwd.ma @@ -0,0 +1,51 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.cs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +(* This file was automatically generated: do not edit *********************) + +include "basic_1/s/defs.ma". + +theorem s_inj: + \forall (k: K).(\forall (i: nat).(\forall (j: nat).((eq nat (s k i) (s k j)) +\to (eq nat i j)))) +\def + \lambda (k: K).(let TMP_1 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).((eq nat (s k0 i) (s k0 j)) \to (eq nat i j))))) in (let TMP_2 \def +(\lambda (b: B).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: (eq nat (s +(Bind b) i) (s (Bind b) j))).(eq_add_S i j H))))) in (let TMP_3 \def (\lambda +(f: F).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: (eq nat (s (Flat f) +i) (s (Flat f) j))).H)))) in (K_ind TMP_1 TMP_2 TMP_3 k)))). + +theorem s_le_gen: + \forall (k: K).(\forall (i: nat).(\forall (j: nat).((le (s k i) (s k j)) \to +(le i j)))) +\def + \lambda (k: K).(let TMP_1 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).((le (s k0 i) (s k0 j)) \to (le i j))))) in (let TMP_2 \def (\lambda +(b: B).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: (le (s (Bind b) i) (s +(Bind b) j))).(le_S_n i j H))))) in (let TMP_3 \def (\lambda (f: F).(\lambda +(i: nat).(\lambda (j: nat).(\lambda (H: (le (s (Flat f) i) (s (Flat f) +j))).H)))) in (K_ind TMP_1 TMP_2 TMP_3 k)))). + +theorem s_lt_gen: + \forall (k: K).(\forall (i: nat).(\forall (j: nat).((lt (s k i) (s k j)) \to +(lt i j)))) +\def + \lambda (k: K).(let TMP_1 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).((lt (s k0 i) (s k0 j)) \to (lt i j))))) in (let TMP_3 \def (\lambda +(b: B).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: (lt (s (Bind b) i) (s +(Bind b) j))).(let TMP_2 \def (S i) in (le_S_n TMP_2 j H)))))) in (let TMP_4 +\def (\lambda (f: F).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: (lt (s +(Flat f) i) (s (Flat f) j))).H)))) in (K_ind TMP_1 TMP_3 TMP_4 k)))). + diff --git a/matita/matita/contribs/lambdadelta/basic_1/s/props.ma b/matita/matita/contribs/lambdadelta/basic_1/s/props.ma index 3cb4fbd74..5727eee55 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/s/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/s/props.ma @@ -14,138 +14,143 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/s/defs.ma". +include "basic_1/s/defs.ma". theorem s_S: \forall (k: K).(\forall (i: nat).(eq nat (s k (S i)) (S (s k i)))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(eq nat (s k0 (S -i)) (S (s k0 i))))) (\lambda (b: B).(\lambda (i: nat).(refl_equal nat (S (s -(Bind b) i))))) (\lambda (f: F).(\lambda (i: nat).(refl_equal nat (S (s (Flat -f) i))))) k). -(* COMMENTS -Initial nodes: 65 -END *) + \lambda (k: K).(let TMP_5 \def (\lambda (k0: K).(\forall (i: nat).(let TMP_1 +\def (S i) in (let TMP_2 \def (s k0 TMP_1) in (let TMP_3 \def (s k0 i) in +(let TMP_4 \def (S TMP_3) in (eq nat TMP_2 TMP_4))))))) in (let TMP_9 \def +(\lambda (b: B).(\lambda (i: nat).(let TMP_6 \def (Bind b) in (let TMP_7 \def +(s TMP_6 i) in (let TMP_8 \def (S TMP_7) in (refl_equal nat TMP_8)))))) in +(let TMP_13 \def (\lambda (f: F).(\lambda (i: nat).(let TMP_10 \def (Flat f) +in (let TMP_11 \def (s TMP_10 i) in (let TMP_12 \def (S TMP_11) in +(refl_equal nat TMP_12)))))) in (K_ind TMP_5 TMP_9 TMP_13 k)))). theorem s_plus: \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (s k (plus i j)) (plus (s k i) j)))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(\forall (j: -nat).(eq nat (s k0 (plus i j)) (plus (s k0 i) j))))) (\lambda (b: B).(\lambda -(i: nat).(\lambda (j: nat).(refl_equal nat (plus (s (Bind b) i) j))))) -(\lambda (f: F).(\lambda (i: nat).(\lambda (j: nat).(refl_equal nat (plus (s -(Flat f) i) j))))) k). -(* COMMENTS -Initial nodes: 79 -END *) + \lambda (k: K).(let TMP_5 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).(let TMP_1 \def (plus i j) in (let TMP_2 \def (s k0 TMP_1) in (let +TMP_3 \def (s k0 i) in (let TMP_4 \def (plus TMP_3 j) in (eq nat TMP_2 +TMP_4)))))))) in (let TMP_9 \def (\lambda (b: B).(\lambda (i: nat).(\lambda +(j: nat).(let TMP_6 \def (Bind b) in (let TMP_7 \def (s TMP_6 i) in (let +TMP_8 \def (plus TMP_7 j) in (refl_equal nat TMP_8))))))) in (let TMP_13 \def +(\lambda (f: F).(\lambda (i: nat).(\lambda (j: nat).(let TMP_10 \def (Flat f) +in (let TMP_11 \def (s TMP_10 i) in (let TMP_12 \def (plus TMP_11 j) in +(refl_equal nat TMP_12))))))) in (K_ind TMP_5 TMP_9 TMP_13 k)))). theorem s_plus_sym: \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (s k (plus i j)) (plus i (s k j))))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(\forall (j: -nat).(eq nat (s k0 (plus i j)) (plus i (s k0 j)))))) (\lambda (_: B).(\lambda -(i: nat).(\lambda (j: nat).(eq_ind_r nat (plus i (S j)) (\lambda (n: nat).(eq -nat n (plus i (S j)))) (refl_equal nat (plus i (S j))) (S (plus i j)) -(plus_n_Sm i j))))) (\lambda (f: F).(\lambda (i: nat).(\lambda (j: -nat).(refl_equal nat (plus i (s (Flat f) j)))))) k). -(* COMMENTS -Initial nodes: 117 -END *) + \lambda (k: K).(let TMP_5 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).(let TMP_1 \def (plus i j) in (let TMP_2 \def (s k0 TMP_1) in (let +TMP_3 \def (s k0 j) in (let TMP_4 \def (plus i TMP_3) in (eq nat TMP_2 +TMP_4)))))))) in (let TMP_17 \def (\lambda (_: B).(\lambda (i: nat).(\lambda +(j: nat).(let TMP_6 \def (S j) in (let TMP_7 \def (plus i TMP_6) in (let +TMP_10 \def (\lambda (n: nat).(let TMP_8 \def (S j) in (let TMP_9 \def (plus +i TMP_8) in (eq nat n TMP_9)))) in (let TMP_11 \def (S j) in (let TMP_12 \def +(plus i TMP_11) in (let TMP_13 \def (refl_equal nat TMP_12) in (let TMP_14 +\def (plus i j) in (let TMP_15 \def (S TMP_14) in (let TMP_16 \def (plus_n_Sm +i j) in (eq_ind_r nat TMP_7 TMP_10 TMP_13 TMP_15 TMP_16))))))))))))) in (let +TMP_21 \def (\lambda (f: F).(\lambda (i: nat).(\lambda (j: nat).(let TMP_18 +\def (Flat f) in (let TMP_19 \def (s TMP_18 j) in (let TMP_20 \def (plus i +TMP_19) in (refl_equal nat TMP_20))))))) in (K_ind TMP_5 TMP_17 TMP_21 k)))). theorem s_minus: \forall (k: K).(\forall (i: nat).(\forall (j: nat).((le j i) \to (eq nat (s k (minus i j)) (minus (s k i) j))))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(\forall (j: -nat).((le j i) \to (eq nat (s k0 (minus i j)) (minus (s k0 i) j)))))) -(\lambda (_: B).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: (le j -i)).(eq_ind_r nat (minus (S i) j) (\lambda (n: nat).(eq nat n (minus (S i) -j))) (refl_equal nat (minus (S i) j)) (S (minus i j)) (minus_Sn_m i j H)))))) -(\lambda (f: F).(\lambda (i: nat).(\lambda (j: nat).(\lambda (_: (le j -i)).(refl_equal nat (minus (s (Flat f) i) j)))))) k). -(* COMMENTS -Initial nodes: 137 -END *) + \lambda (k: K).(let TMP_5 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).((le j i) \to (let TMP_1 \def (minus i j) in (let TMP_2 \def (s k0 +TMP_1) in (let TMP_3 \def (s k0 i) in (let TMP_4 \def (minus TMP_3 j) in (eq +nat TMP_2 TMP_4))))))))) in (let TMP_17 \def (\lambda (_: B).(\lambda (i: +nat).(\lambda (j: nat).(\lambda (H: (le j i)).(let TMP_6 \def (S i) in (let +TMP_7 \def (minus TMP_6 j) in (let TMP_10 \def (\lambda (n: nat).(let TMP_8 +\def (S i) in (let TMP_9 \def (minus TMP_8 j) in (eq nat n TMP_9)))) in (let +TMP_11 \def (S i) in (let TMP_12 \def (minus TMP_11 j) in (let TMP_13 \def +(refl_equal nat TMP_12) in (let TMP_14 \def (minus i j) in (let TMP_15 \def +(S TMP_14) in (let TMP_16 \def (minus_Sn_m i j H) in (eq_ind_r nat TMP_7 +TMP_10 TMP_13 TMP_15 TMP_16)))))))))))))) in (let TMP_21 \def (\lambda (f: +F).(\lambda (i: nat).(\lambda (j: nat).(\lambda (_: (le j i)).(let TMP_18 +\def (Flat f) in (let TMP_19 \def (s TMP_18 i) in (let TMP_20 \def (minus +TMP_19 j) in (refl_equal nat TMP_20)))))))) in (K_ind TMP_5 TMP_17 TMP_21 +k)))). theorem minus_s_s: \forall (k: K).(\forall (i: nat).(\forall (j: nat).(eq nat (minus (s k i) (s k j)) (minus i j)))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(\forall (j: -nat).(eq nat (minus (s k0 i) (s k0 j)) (minus i j))))) (\lambda (_: -B).(\lambda (i: nat).(\lambda (j: nat).(refl_equal nat (minus i j))))) -(\lambda (_: F).(\lambda (i: nat).(\lambda (j: nat).(refl_equal nat (minus i -j))))) k). -(* COMMENTS -Initial nodes: 67 -END *) + \lambda (k: K).(let TMP_5 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).(let TMP_1 \def (s k0 i) in (let TMP_2 \def (s k0 j) in (let TMP_3 +\def (minus TMP_1 TMP_2) in (let TMP_4 \def (minus i j) in (eq nat TMP_3 +TMP_4)))))))) in (let TMP_7 \def (\lambda (_: B).(\lambda (i: nat).(\lambda +(j: nat).(let TMP_6 \def (minus i j) in (refl_equal nat TMP_6))))) in (let +TMP_9 \def (\lambda (_: F).(\lambda (i: nat).(\lambda (j: nat).(let TMP_8 +\def (minus i j) in (refl_equal nat TMP_8))))) in (K_ind TMP_5 TMP_7 TMP_9 +k)))). theorem s_le: \forall (k: K).(\forall (i: nat).(\forall (j: nat).((le i j) \to (le (s k i) (s k j))))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(\forall (j: -nat).((le i j) \to (le (s k0 i) (s k0 j)))))) (\lambda (_: B).(\lambda (i: -nat).(\lambda (j: nat).(\lambda (H: (le i j)).(le_n_S i j H))))) (\lambda (_: -F).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: (le i j)).H)))) k). -(* COMMENTS -Initial nodes: 65 -END *) + \lambda (k: K).(let TMP_3 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).((le i j) \to (let TMP_1 \def (s k0 i) in (let TMP_2 \def (s k0 j) +in (le TMP_1 TMP_2))))))) in (let TMP_4 \def (\lambda (_: B).(\lambda (i: +nat).(\lambda (j: nat).(\lambda (H: (le i j)).(le_n_S i j H))))) in (let +TMP_5 \def (\lambda (_: F).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: +(le i j)).H)))) in (K_ind TMP_3 TMP_4 TMP_5 k)))). theorem s_lt: \forall (k: K).(\forall (i: nat).(\forall (j: nat).((lt i j) \to (lt (s k i) (s k j))))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(\forall (j: -nat).((lt i j) \to (lt (s k0 i) (s k0 j)))))) (\lambda (_: B).(\lambda (i: -nat).(\lambda (j: nat).(\lambda (H: (lt i j)).(le_n_S (S i) j H))))) (\lambda -(_: F).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: (lt i j)).H)))) k). -(* COMMENTS -Initial nodes: 67 -END *) - -theorem s_inj: - \forall (k: K).(\forall (i: nat).(\forall (j: nat).((eq nat (s k i) (s k j)) -\to (eq nat i j)))) -\def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(\forall (j: -nat).((eq nat (s k0 i) (s k0 j)) \to (eq nat i j))))) (\lambda (b: -B).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: (eq nat (s (Bind b) i) (s -(Bind b) j))).(eq_add_S i j H))))) (\lambda (f: F).(\lambda (i: nat).(\lambda -(j: nat).(\lambda (H: (eq nat (s (Flat f) i) (s (Flat f) j))).H)))) k). -(* COMMENTS -Initial nodes: 97 -END *) + \lambda (k: K).(let TMP_3 \def (\lambda (k0: K).(\forall (i: nat).(\forall +(j: nat).((lt i j) \to (let TMP_1 \def (s k0 i) in (let TMP_2 \def (s k0 j) +in (lt TMP_1 TMP_2))))))) in (let TMP_4 \def (\lambda (_: B).(\lambda (i: +nat).(\lambda (j: nat).(\lambda (H: (lt i j)).(lt_n_S i j H))))) in (let +TMP_5 \def (\lambda (_: F).(\lambda (i: nat).(\lambda (j: nat).(\lambda (H: +(lt i j)).H)))) in (K_ind TMP_3 TMP_4 TMP_5 k)))). theorem s_inc: \forall (k: K).(\forall (i: nat).(le i (s k i))) \def - \lambda (k: K).(K_ind (\lambda (k0: K).(\forall (i: nat).(le i (s k0 i)))) -(\lambda (b: B).(\lambda (i: nat).(le_S_n i (s (Bind b) i) (le_S (S i) (s -(Bind b) i) (le_n (s (Bind b) i)))))) (\lambda (f: F).(\lambda (i: nat).(le_n -(s (Flat f) i)))) k). -(* COMMENTS -Initial nodes: 73 -END *) + \lambda (k: K).(let TMP_2 \def (\lambda (k0: K).(\forall (i: nat).(let TMP_1 +\def (s k0 i) in (le i TMP_1)))) in (let TMP_30 \def (\lambda (b: B).(\lambda +(i: nat).(let TMP_3 \def (Bind b) in (let TMP_4 \def (s TMP_3 i) in (let +TMP_5 \def (S i) in (let TMP_6 \def (Bind b) in (let TMP_7 \def (s TMP_6 i) +in (let TMP_8 \def (S TMP_7) in (let TMP_9 \def (S i) in (let TMP_10 \def (S +TMP_9) in (let TMP_11 \def (Bind b) in (let TMP_12 \def (s TMP_11 i) in (let +TMP_13 \def (S TMP_12) in (let TMP_14 \def (S TMP_13) in (let TMP_15 \def (S +i) in (let TMP_16 \def (S TMP_15) in (let TMP_17 \def (S TMP_16) in (let +TMP_18 \def (Bind b) in (let TMP_19 \def (s TMP_18 i) in (let TMP_20 \def (S +TMP_19) in (let TMP_21 \def (S TMP_20) in (let TMP_22 \def (Bind b) in (let +TMP_23 \def (s TMP_22 i) in (let TMP_24 \def (S TMP_23) in (let TMP_25 \def +(S TMP_24) in (let TMP_26 \def (le_n TMP_25) in (let TMP_27 \def (le_S TMP_17 +TMP_21 TMP_26) in (let TMP_28 \def (le_S_n TMP_10 TMP_14 TMP_27) in (let +TMP_29 \def (le_S_n TMP_5 TMP_8 TMP_28) in (le_S_n i TMP_4 +TMP_29)))))))))))))))))))))))))))))) in (let TMP_33 \def (\lambda (f: +F).(\lambda (i: nat).(let TMP_31 \def (Flat f) in (let TMP_32 \def (s TMP_31 +i) in (le_n TMP_32))))) in (K_ind TMP_2 TMP_30 TMP_33 k)))). theorem s_arith0: \forall (k: K).(\forall (i: nat).(eq nat (minus (s k i) (s k O)) i)) \def - \lambda (k: K).(\lambda (i: nat).(eq_ind_r nat (minus i O) (\lambda (n: -nat).(eq nat n i)) (eq_ind nat i (\lambda (n: nat).(eq nat n i)) (refl_equal -nat i) (minus i O) (minus_n_O i)) (minus (s k i) (s k O)) (minus_s_s k i O))). -(* COMMENTS -Initial nodes: 77 -END *) + \lambda (k: K).(\lambda (i: nat).(let TMP_1 \def (minus i O) in (let TMP_2 +\def (\lambda (n: nat).(eq nat n i)) in (let TMP_3 \def (\lambda (n: nat).(eq +nat n i)) in (let TMP_4 \def (refl_equal nat i) in (let TMP_5 \def (minus i +O) in (let TMP_6 \def (minus_n_O i) in (let TMP_7 \def (eq_ind nat i TMP_3 +TMP_4 TMP_5 TMP_6) in (let TMP_8 \def (s k i) in (let TMP_9 \def (s k O) in +(let TMP_10 \def (minus TMP_8 TMP_9) in (let TMP_11 \def (minus_s_s k i O) in +(eq_ind_r nat TMP_1 TMP_2 TMP_7 TMP_10 TMP_11))))))))))))). theorem s_arith1: \forall (b: B).(\forall (i: nat).(eq nat (minus (s (Bind b) i) (S O)) i)) \def - \lambda (_: B).(\lambda (i: nat).(eq_ind nat i (\lambda (n: nat).(eq nat n -i)) (refl_equal nat i) (minus i O) (minus_n_O i))). -(* COMMENTS -Initial nodes: 35 -END *) + \lambda (_: B).(\lambda (i: nat).(let TMP_1 \def (\lambda (n: nat).(eq nat n +i)) in (let TMP_2 \def (refl_equal nat i) in (let TMP_3 \def (minus i O) in +(let TMP_4 \def (minus_n_O i) in (eq_ind nat i TMP_1 TMP_2 TMP_3 TMP_4)))))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/tlist/defs.ma b/matita/matita/contribs/lambdadelta/basic_1/tlist/defs.ma index 9445013d4..557e41021 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/tlist/defs.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/tlist/defs.ma @@ -14,34 +14,26 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/T/defs.ma". +include "basic_1/T/defs.ma". -inductive TList: Set \def +inductive TList: Type[0] \def | TNil: TList | TCons: T \to (TList \to TList). -definition THeads: - K \to (TList \to (T \to T)) -\def - let rec THeads (k: K) (us: TList) on us: (T \to T) \def (\lambda (t: -T).(match us with [TNil \Rightarrow t | (TCons u ul) \Rightarrow (THead k u -(THeads k ul t))])) in THeads. +let rec THeads (k: K) (us: TList) on us: T \to T \def \lambda (t: T).(match +us with [TNil \Rightarrow t | (TCons u ul) \Rightarrow (let TMP_1 \def +(THeads k ul t) in (THead k u TMP_1))]). -definition TApp: - TList \to (T \to TList) -\def - let rec TApp (ts: TList) on ts: (T \to TList) \def (\lambda (v: T).(match ts -with [TNil \Rightarrow (TCons v TNil) | (TCons t ts0) \Rightarrow (TCons t -(TApp ts0 v))])) in TApp. +let rec TApp (ts: TList) on ts: T \to TList \def \lambda (v: T).(match ts +with [TNil \Rightarrow (TCons v TNil) | (TCons t ts0) \Rightarrow (let TMP_1 +\def (TApp ts0 v) in (TCons t TMP_1))]). -definition tslen: - TList \to nat -\def - let rec tslen (ts: TList) on ts: nat \def (match ts with [TNil \Rightarrow O -| (TCons _ ts0) \Rightarrow (S (tslen ts0))]) in tslen. +let rec tslen (ts: TList) on ts: nat \def match ts with [TNil \Rightarrow O | +(TCons _ ts0) \Rightarrow (let TMP_1 \def (tslen ts0) in (S TMP_1))]. definition tslt: TList \to (TList \to Prop) \def - \lambda (ts1: TList).(\lambda (ts2: TList).(lt (tslen ts1) (tslen ts2))). + \lambda (ts1: TList).(\lambda (ts2: TList).(let TMP_1 \def (tslen ts1) in +(let TMP_2 \def (tslen ts2) in (lt TMP_1 TMP_2)))). diff --git a/matita/matita/contribs/lambdadelta/basic_1/tlist/fwd.ma b/matita/matita/contribs/lambdadelta/basic_1/tlist/fwd.ma new file mode 100644 index 000000000..ed68fca56 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_1/tlist/fwd.ma @@ -0,0 +1,85 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.cs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +(* This file was automatically generated: do not edit *********************) + +include "basic_1/tlist/props.ma". + +theorem tslt_wf__q_ind: + \forall (P: ((TList \to Prop))).(((\forall (n: nat).((\lambda (P0: ((TList +\to Prop))).(\lambda (n0: nat).(\forall (ts: TList).((eq nat (tslen ts) n0) +\to (P0 ts))))) P n))) \to (\forall (ts: TList).(P ts))) +\def + let Q \def (\lambda (P: ((TList \to Prop))).(\lambda (n: nat).(\forall (ts: +TList).((eq nat (tslen ts) n) \to (P ts))))) in (\lambda (P: ((TList \to +Prop))).(\lambda (H: ((\forall (n: nat).(\forall (ts: TList).((eq nat (tslen +ts) n) \to (P ts)))))).(\lambda (ts: TList).(let TMP_1 \def (tslen ts) in +(let TMP_2 \def (tslen ts) in (let TMP_3 \def (refl_equal nat TMP_2) in (H +TMP_1 ts TMP_3))))))). + +theorem tslt_wf_ind: + \forall (P: ((TList \to Prop))).(((\forall (ts2: TList).(((\forall (ts1: +TList).((tslt ts1 ts2) \to (P ts1)))) \to (P ts2)))) \to (\forall (ts: +TList).(P ts))) +\def + let Q \def (\lambda (P: ((TList \to Prop))).(\lambda (n: nat).(\forall (ts: +TList).((eq nat (tslen ts) n) \to (P ts))))) in (\lambda (P: ((TList \to +Prop))).(\lambda (H: ((\forall (ts2: TList).(((\forall (ts1: TList).((lt +(tslen ts1) (tslen ts2)) \to (P ts1)))) \to (P ts2))))).(\lambda (ts: +TList).(let TMP_1 \def (\lambda (t: TList).(P t)) in (let TMP_11 \def +(\lambda (n: nat).(let TMP_2 \def (\lambda (t: TList).(P t)) in (let TMP_3 +\def (Q TMP_2) in (let TMP_10 \def (\lambda (n0: nat).(\lambda (H0: ((\forall +(m: nat).((lt m n0) \to (Q (\lambda (t: TList).(P t)) m))))).(\lambda (ts0: +TList).(\lambda (H1: (eq nat (tslen ts0) n0)).(let TMP_4 \def (\lambda (n1: +nat).(\forall (m: nat).((lt m n1) \to (\forall (ts1: TList).((eq nat (tslen +ts1) m) \to (P ts1)))))) in (let TMP_5 \def (tslen ts0) in (let H2 \def +(eq_ind_r nat n0 TMP_4 H0 TMP_5 H1) in (let TMP_9 \def (\lambda (ts1: +TList).(\lambda (H3: (lt (tslen ts1) (tslen ts0))).(let TMP_6 \def (tslen +ts1) in (let TMP_7 \def (tslen ts1) in (let TMP_8 \def (refl_equal nat TMP_7) +in (H2 TMP_6 H3 ts1 TMP_8)))))) in (H ts0 TMP_9))))))))) in (lt_wf_ind n +TMP_3 TMP_10))))) in (tslt_wf__q_ind TMP_1 TMP_11 ts)))))). + +theorem tlist_ind_rev: + \forall (P: ((TList \to Prop))).((P TNil) \to (((\forall (ts: +TList).(\forall (t: T).((P ts) \to (P (TApp ts t)))))) \to (\forall (ts: +TList).(P ts)))) +\def + \lambda (P: ((TList \to Prop))).(\lambda (H: (P TNil)).(\lambda (H0: +((\forall (ts: TList).(\forall (t: T).((P ts) \to (P (TApp ts +t))))))).(\lambda (ts: TList).(let TMP_1 \def (\lambda (t: TList).(P t)) in +(let TMP_28 \def (\lambda (ts2: TList).(let TMP_2 \def (\lambda (t: +TList).(((\forall (ts1: TList).((tslt ts1 t) \to (P ts1)))) \to (P t))) in +(let TMP_3 \def (\lambda (_: ((\forall (ts1: TList).((tslt ts1 TNil) \to (P +ts1))))).H) in (let TMP_27 \def (\lambda (t: T).(\lambda (t0: TList).(\lambda +(_: ((((\forall (ts1: TList).((tslt ts1 t0) \to (P ts1)))) \to (P +t0)))).(\lambda (H2: ((\forall (ts1: TList).((tslt ts1 (TCons t t0)) \to (P +ts1))))).(let H_x \def (tcons_tapp_ex t0 t) in (let H3 \def H_x in (let TMP_6 +\def (\lambda (ts3: TList).(\lambda (t2: T).(let TMP_4 \def (TCons t t0) in +(let TMP_5 \def (TApp ts3 t2) in (eq TList TMP_4 TMP_5))))) in (let TMP_9 +\def (\lambda (ts3: TList).(\lambda (_: T).(let TMP_7 \def (tslen t0) in (let +TMP_8 \def (tslen ts3) in (eq nat TMP_7 TMP_8))))) in (let TMP_10 \def (TCons +t t0) in (let TMP_11 \def (P TMP_10) in (let TMP_26 \def (\lambda (x0: +TList).(\lambda (x1: T).(\lambda (H4: (eq TList (TCons t t0) (TApp x0 +x1))).(\lambda (H5: (eq nat (tslen t0) (tslen x0))).(let TMP_12 \def (TApp x0 +x1) in (let TMP_13 \def (\lambda (t1: TList).(P t1)) in (let TMP_14 \def +(tslen t0) in (let TMP_17 \def (\lambda (n: nat).(let TMP_15 \def (TCons t +t0) in (let TMP_16 \def (tslen TMP_15) in (lt n TMP_16)))) in (let TMP_18 +\def (TCons t t0) in (let TMP_19 \def (tslen TMP_18) in (let TMP_20 \def +(le_n TMP_19) in (let TMP_21 \def (tslen x0) in (let TMP_22 \def (eq_ind nat +TMP_14 TMP_17 TMP_20 TMP_21 H5) in (let TMP_23 \def (H2 x0 TMP_22) in (let +TMP_24 \def (H0 x0 x1 TMP_23) in (let TMP_25 \def (TCons t t0) in (eq_ind_r +TList TMP_12 TMP_13 TMP_24 TMP_25 H4))))))))))))))))) in (ex2_2_ind TList T +TMP_6 TMP_9 TMP_11 TMP_26 H3)))))))))))) in (TList_ind TMP_2 TMP_3 TMP_27 +ts2))))) in (tslt_wf_ind TMP_1 TMP_28 ts)))))). + diff --git a/matita/matita/contribs/lambdadelta/basic_1/tlist/props.ma b/matita/matita/contribs/lambdadelta/basic_1/tlist/props.ma index 92b0d05ff..ea801d6cb 100644 --- a/matita/matita/contribs/lambdadelta/basic_1/tlist/props.ma +++ b/matita/matita/contribs/lambdadelta/basic_1/tlist/props.ma @@ -14,118 +14,86 @@ (* This file was automatically generated: do not edit *********************) -include "Basic-1/tlist/defs.ma". - -theorem tslt_wf__q_ind: - \forall (P: ((TList \to Prop))).(((\forall (n: nat).((\lambda (P0: ((TList -\to Prop))).(\lambda (n0: nat).(\forall (ts: TList).((eq nat (tslen ts) n0) -\to (P0 ts))))) P n))) \to (\forall (ts: TList).(P ts))) -\def - let Q \def (\lambda (P: ((TList \to Prop))).(\lambda (n: nat).(\forall (ts: -TList).((eq nat (tslen ts) n) \to (P ts))))) in (\lambda (P: ((TList \to -Prop))).(\lambda (H: ((\forall (n: nat).(\forall (ts: TList).((eq nat (tslen -ts) n) \to (P ts)))))).(\lambda (ts: TList).(H (tslen ts) ts (refl_equal nat -(tslen ts)))))). -(* COMMENTS -Initial nodes: 61 -END *) - -theorem tslt_wf_ind: - \forall (P: ((TList \to Prop))).(((\forall (ts2: TList).(((\forall (ts1: -TList).((tslt ts1 ts2) \to (P ts1)))) \to (P ts2)))) \to (\forall (ts: -TList).(P ts))) -\def - let Q \def (\lambda (P: ((TList \to Prop))).(\lambda (n: nat).(\forall (ts: -TList).((eq nat (tslen ts) n) \to (P ts))))) in (\lambda (P: ((TList \to -Prop))).(\lambda (H: ((\forall (ts2: TList).(((\forall (ts1: TList).((lt -(tslen ts1) (tslen ts2)) \to (P ts1)))) \to (P ts2))))).(\lambda (ts: -TList).(tslt_wf__q_ind (\lambda (t: TList).(P t)) (\lambda (n: -nat).(lt_wf_ind n (Q (\lambda (t: TList).(P t))) (\lambda (n0: nat).(\lambda -(H0: ((\forall (m: nat).((lt m n0) \to (Q (\lambda (t: TList).(P t)) -m))))).(\lambda (ts0: TList).(\lambda (H1: (eq nat (tslen ts0) n0)).(let H2 -\def (eq_ind_r nat n0 (\lambda (n1: nat).(\forall (m: nat).((lt m n1) \to -(\forall (ts1: TList).((eq nat (tslen ts1) m) \to (P ts1)))))) H0 (tslen ts0) -H1) in (H ts0 (\lambda (ts1: TList).(\lambda (H3: (lt (tslen ts1) (tslen -ts0))).(H2 (tslen ts1) H3 ts1 (refl_equal nat (tslen ts1))))))))))))) ts)))). -(* COMMENTS -Initial nodes: 179 -END *) +include "basic_1/tlist/defs.ma". theorem theads_tapp: \forall (k: K).(\forall (v: T).(\forall (t: T).(\forall (vs: TList).(eq T (THeads k (TApp vs v) t) (THeads k vs (THead k v t)))))) \def - \lambda (k: K).(\lambda (v: T).(\lambda (t: T).(\lambda (vs: -TList).(TList_ind (\lambda (t0: TList).(eq T (THeads k (TApp t0 v) t) (THeads -k t0 (THead k v t)))) (refl_equal T (THead k v t)) (\lambda (t0: T).(\lambda -(t1: TList).(\lambda (H: (eq T (THeads k (TApp t1 v) t) (THeads k t1 (THead k -v t)))).(eq_ind T (THeads k (TApp t1 v) t) (\lambda (t2: T).(eq T (THead k t0 -(THeads k (TApp t1 v) t)) (THead k t0 t2))) (refl_equal T (THead k t0 (THeads -k (TApp t1 v) t))) (THeads k t1 (THead k v t)) H)))) vs)))). -(* COMMENTS -Initial nodes: 175 -END *) + \lambda (k: K).(\lambda (v: T).(\lambda (t: T).(\lambda (vs: TList).(let +TMP_5 \def (\lambda (t0: TList).(let TMP_1 \def (TApp t0 v) in (let TMP_2 +\def (THeads k TMP_1 t) in (let TMP_3 \def (THead k v t) in (let TMP_4 \def +(THeads k t0 TMP_3) in (eq T TMP_2 TMP_4)))))) in (let TMP_6 \def (THead k v +t) in (let TMP_7 \def (refl_equal T TMP_6) in (let TMP_21 \def (\lambda (t0: +T).(\lambda (t1: TList).(\lambda (H: (eq T (THeads k (TApp t1 v) t) (THeads k +t1 (THead k v t)))).(let TMP_8 \def (TApp t1 v) in (let TMP_9 \def (THeads k +TMP_8 t) in (let TMP_14 \def (\lambda (t2: T).(let TMP_10 \def (TApp t1 v) in +(let TMP_11 \def (THeads k TMP_10 t) in (let TMP_12 \def (THead k t0 TMP_11) +in (let TMP_13 \def (THead k t0 t2) in (eq T TMP_12 TMP_13)))))) in (let +TMP_15 \def (TApp t1 v) in (let TMP_16 \def (THeads k TMP_15 t) in (let +TMP_17 \def (THead k t0 TMP_16) in (let TMP_18 \def (refl_equal T TMP_17) in +(let TMP_19 \def (THead k v t) in (let TMP_20 \def (THeads k t1 TMP_19) in +(eq_ind T TMP_9 TMP_14 TMP_18 TMP_20 H))))))))))))) in (TList_ind TMP_5 TMP_7 +TMP_21 vs)))))))). theorem tcons_tapp_ex: \forall (ts1: TList).(\forall (t1: T).(ex2_2 TList T (\lambda (ts2: TList).(\lambda (t2: T).(eq TList (TCons t1 ts1) (TApp ts2 t2)))) (\lambda (ts2: TList).(\lambda (_: T).(eq nat (tslen ts1) (tslen ts2)))))) \def - \lambda (ts1: TList).(TList_ind (\lambda (t: TList).(\forall (t1: T).(ex2_2 -TList T (\lambda (ts2: TList).(\lambda (t2: T).(eq TList (TCons t1 t) (TApp -ts2 t2)))) (\lambda (ts2: TList).(\lambda (_: T).(eq nat (tslen t) (tslen -ts2))))))) (\lambda (t1: T).(ex2_2_intro TList T (\lambda (ts2: -TList).(\lambda (t2: T).(eq TList (TCons t1 TNil) (TApp ts2 t2)))) (\lambda -(ts2: TList).(\lambda (_: T).(eq nat O (tslen ts2)))) TNil t1 (refl_equal -TList (TApp TNil t1)) (refl_equal nat (tslen TNil)))) (\lambda (t: + \lambda (ts1: TList).(let TMP_7 \def (\lambda (t: TList).(\forall (t1: +T).(let TMP_3 \def (\lambda (ts2: TList).(\lambda (t2: T).(let TMP_1 \def +(TCons t1 t) in (let TMP_2 \def (TApp ts2 t2) in (eq TList TMP_1 TMP_2))))) +in (let TMP_6 \def (\lambda (ts2: TList).(\lambda (_: T).(let TMP_4 \def +(tslen t) in (let TMP_5 \def (tslen ts2) in (eq nat TMP_4 TMP_5))))) in +(ex2_2 TList T TMP_3 TMP_6))))) in (let TMP_17 \def (\lambda (t1: T).(let +TMP_10 \def (\lambda (ts2: TList).(\lambda (t2: T).(let TMP_8 \def (TCons t1 +TNil) in (let TMP_9 \def (TApp ts2 t2) in (eq TList TMP_8 TMP_9))))) in (let +TMP_12 \def (\lambda (ts2: TList).(\lambda (_: T).(let TMP_11 \def (tslen +ts2) in (eq nat O TMP_11)))) in (let TMP_13 \def (TApp TNil t1) in (let +TMP_14 \def (refl_equal TList TMP_13) in (let TMP_15 \def (tslen TNil) in +(let TMP_16 \def (refl_equal nat TMP_15) in (ex2_2_intro TList T TMP_10 +TMP_12 TNil t1 TMP_14 TMP_16)))))))) in (let TMP_71 \def (\lambda (t: T).(\lambda (t0: TList).(\lambda (H: ((\forall (t1: T).(ex2_2 TList T (\lambda (ts2: TList).(\lambda (t2: T).(eq TList (TCons t1 t0) (TApp ts2 t2)))) (\lambda (ts2: TList).(\lambda (_: T).(eq nat (tslen t0) (tslen -ts2)))))))).(\lambda (t1: T).(let H_x \def (H t) in (let H0 \def H_x in -(ex2_2_ind TList T (\lambda (ts2: TList).(\lambda (t2: T).(eq TList (TCons t -t0) (TApp ts2 t2)))) (\lambda (ts2: TList).(\lambda (_: T).(eq nat (tslen t0) -(tslen ts2)))) (ex2_2 TList T (\lambda (ts2: TList).(\lambda (t2: T).(eq -TList (TCons t1 (TCons t t0)) (TApp ts2 t2)))) (\lambda (ts2: TList).(\lambda -(_: T).(eq nat (S (tslen t0)) (tslen ts2))))) (\lambda (x0: TList).(\lambda -(x1: T).(\lambda (H1: (eq TList (TCons t t0) (TApp x0 x1))).(\lambda (H2: (eq -nat (tslen t0) (tslen x0))).(eq_ind_r TList (TApp x0 x1) (\lambda (t2: -TList).(ex2_2 TList T (\lambda (ts2: TList).(\lambda (t3: T).(eq TList (TCons -t1 t2) (TApp ts2 t3)))) (\lambda (ts2: TList).(\lambda (_: T).(eq nat (S -(tslen t0)) (tslen ts2)))))) (eq_ind_r nat (tslen x0) (\lambda (n: -nat).(ex2_2 TList T (\lambda (ts2: TList).(\lambda (t2: T).(eq TList (TCons -t1 (TApp x0 x1)) (TApp ts2 t2)))) (\lambda (ts2: TList).(\lambda (_: T).(eq -nat (S n) (tslen ts2)))))) (ex2_2_intro TList T (\lambda (ts2: -TList).(\lambda (t2: T).(eq TList (TCons t1 (TApp x0 x1)) (TApp ts2 t2)))) -(\lambda (ts2: TList).(\lambda (_: T).(eq nat (S (tslen x0)) (tslen ts2)))) -(TCons t1 x0) x1 (refl_equal TList (TApp (TCons t1 x0) x1)) (refl_equal nat -(tslen (TCons t1 x0)))) (tslen t0) H2) (TCons t t0) H1))))) H0))))))) ts1). -(* COMMENTS -Initial nodes: 503 -END *) - -theorem tlist_ind_rev: - \forall (P: ((TList \to Prop))).((P TNil) \to (((\forall (ts: -TList).(\forall (t: T).((P ts) \to (P (TApp ts t)))))) \to (\forall (ts: -TList).(P ts)))) -\def - \lambda (P: ((TList \to Prop))).(\lambda (H: (P TNil)).(\lambda (H0: -((\forall (ts: TList).(\forall (t: T).((P ts) \to (P (TApp ts -t))))))).(\lambda (ts: TList).(tslt_wf_ind (\lambda (t: TList).(P t)) -(\lambda (ts2: TList).(TList_ind (\lambda (t: TList).(((\forall (ts1: -TList).((tslt ts1 t) \to (P ts1)))) \to (P t))) (\lambda (_: ((\forall (ts1: -TList).((tslt ts1 TNil) \to (P ts1))))).H) (\lambda (t: T).(\lambda (t0: -TList).(\lambda (_: ((((\forall (ts1: TList).((tslt ts1 t0) \to (P ts1)))) -\to (P t0)))).(\lambda (H2: ((\forall (ts1: TList).((tslt ts1 (TCons t t0)) -\to (P ts1))))).(let H_x \def (tcons_tapp_ex t0 t) in (let H3 \def H_x in -(ex2_2_ind TList T (\lambda (ts3: TList).(\lambda (t2: T).(eq TList (TCons t -t0) (TApp ts3 t2)))) (\lambda (ts3: TList).(\lambda (_: T).(eq nat (tslen t0) -(tslen ts3)))) (P (TCons t t0)) (\lambda (x0: TList).(\lambda (x1: -T).(\lambda (H4: (eq TList (TCons t t0) (TApp x0 x1))).(\lambda (H5: (eq nat -(tslen t0) (tslen x0))).(eq_ind_r TList (TApp x0 x1) (\lambda (t1: TList).(P -t1)) (H0 x0 x1 (H2 x0 (eq_ind nat (tslen t0) (\lambda (n: nat).(lt n (tslen -(TCons t t0)))) (le_n (tslen (TCons t t0))) (tslen x0) H5))) (TCons t t0) -H4))))) H3))))))) ts2)) ts)))). -(* COMMENTS -Initial nodes: 273 -END *) +ts2)))))))).(\lambda (t1: T).(let H_x \def (H t) in (let H0 \def H_x in (let +TMP_20 \def (\lambda (ts2: TList).(\lambda (t2: T).(let TMP_18 \def (TCons t +t0) in (let TMP_19 \def (TApp ts2 t2) in (eq TList TMP_18 TMP_19))))) in (let +TMP_23 \def (\lambda (ts2: TList).(\lambda (_: T).(let TMP_21 \def (tslen t0) +in (let TMP_22 \def (tslen ts2) in (eq nat TMP_21 TMP_22))))) in (let TMP_27 +\def (\lambda (ts2: TList).(\lambda (t2: T).(let TMP_24 \def (TCons t t0) in +(let TMP_25 \def (TCons t1 TMP_24) in (let TMP_26 \def (TApp ts2 t2) in (eq +TList TMP_25 TMP_26)))))) in (let TMP_31 \def (\lambda (ts2: TList).(\lambda +(_: T).(let TMP_28 \def (tslen t0) in (let TMP_29 \def (S TMP_28) in (let +TMP_30 \def (tslen ts2) in (eq nat TMP_29 TMP_30)))))) in (let TMP_32 \def +(ex2_2 TList T TMP_27 TMP_31) in (let TMP_70 \def (\lambda (x0: +TList).(\lambda (x1: T).(\lambda (H1: (eq TList (TCons t t0) (TApp x0 +x1))).(\lambda (H2: (eq nat (tslen t0) (tslen x0))).(let TMP_33 \def (TApp x0 +x1) in (let TMP_41 \def (\lambda (t2: TList).(let TMP_36 \def (\lambda (ts2: +TList).(\lambda (t3: T).(let TMP_34 \def (TCons t1 t2) in (let TMP_35 \def +(TApp ts2 t3) in (eq TList TMP_34 TMP_35))))) in (let TMP_40 \def (\lambda +(ts2: TList).(\lambda (_: T).(let TMP_37 \def (tslen t0) in (let TMP_38 \def +(S TMP_37) in (let TMP_39 \def (tslen ts2) in (eq nat TMP_38 TMP_39)))))) in +(ex2_2 TList T TMP_36 TMP_40)))) in (let TMP_42 \def (tslen x0) in (let +TMP_50 \def (\lambda (n: nat).(let TMP_46 \def (\lambda (ts2: TList).(\lambda +(t2: T).(let TMP_43 \def (TApp x0 x1) in (let TMP_44 \def (TCons t1 TMP_43) +in (let TMP_45 \def (TApp ts2 t2) in (eq TList TMP_44 TMP_45)))))) in (let +TMP_49 \def (\lambda (ts2: TList).(\lambda (_: T).(let TMP_47 \def (S n) in +(let TMP_48 \def (tslen ts2) in (eq nat TMP_47 TMP_48))))) in (ex2_2 TList T +TMP_46 TMP_49)))) in (let TMP_54 \def (\lambda (ts2: TList).(\lambda (t2: +T).(let TMP_51 \def (TApp x0 x1) in (let TMP_52 \def (TCons t1 TMP_51) in +(let TMP_53 \def (TApp ts2 t2) in (eq TList TMP_52 TMP_53)))))) in (let +TMP_58 \def (\lambda (ts2: TList).(\lambda (_: T).(let TMP_55 \def (tslen x0) +in (let TMP_56 \def (S TMP_55) in (let TMP_57 \def (tslen ts2) in (eq nat +TMP_56 TMP_57)))))) in (let TMP_59 \def (TCons t1 x0) in (let TMP_60 \def +(TCons t1 x0) in (let TMP_61 \def (TApp TMP_60 x1) in (let TMP_62 \def +(refl_equal TList TMP_61) in (let TMP_63 \def (TCons t1 x0) in (let TMP_64 +\def (tslen TMP_63) in (let TMP_65 \def (refl_equal nat TMP_64) in (let +TMP_66 \def (ex2_2_intro TList T TMP_54 TMP_58 TMP_59 x1 TMP_62 TMP_65) in +(let TMP_67 \def (tslen t0) in (let TMP_68 \def (eq_ind_r nat TMP_42 TMP_50 +TMP_66 TMP_67 H2) in (let TMP_69 \def (TCons t t0) in (eq_ind_r TList TMP_33 +TMP_41 TMP_68 TMP_69 H1)))))))))))))))))))))) in (ex2_2_ind TList T TMP_20 +TMP_23 TMP_32 TMP_70 H0))))))))))))) in (TList_ind TMP_7 TMP_17 TMP_71 +ts1)))). diff --git a/matita/matita/contribs/lambdadelta/ground_1/blt/props.ma b/matita/matita/contribs/lambdadelta/ground_1/blt/props.ma index 3a1a6c270..2b189447e 100644 --- a/matita/matita/contribs/lambdadelta/ground_1/blt/props.ma +++ b/matita/matita/contribs/lambdadelta/ground_1/blt/props.ma @@ -19,106 +19,102 @@ include "ground_1/blt/defs.ma". theorem lt_blt: \forall (x: nat).(\forall (y: nat).((lt y x) \to (eq bool (blt y x) true))) \def - \lambda (x: nat).(let TMP_793 \def (\lambda (n: nat).(\forall (y: nat).((lt -y n) \to (let TMP_792 \def (blt y n) in (eq bool TMP_792 true))))) in (let -TMP_791 \def (\lambda (y: nat).(\lambda (H: (lt y O)).(let H0 \def (match H -in le with [le_n \Rightarrow (\lambda (H0: (eq nat (S y) O)).(let TMP_787 -\def (S y) in (let TMP_786 \def (\lambda (e: nat).(match e in nat with [O -\Rightarrow False | (S _) \Rightarrow True])) in (let H1 \def (eq_ind nat -TMP_787 TMP_786 I O H0) in (let TMP_788 \def (blt y O) in (let TMP_789 \def -(eq bool TMP_788 true) in (False_ind TMP_789 H1))))))) | (le_S m H0) -\Rightarrow (\lambda (H1: (eq nat (S m) O)).(let TMP_782 \def (S m) in (let -TMP_781 \def (\lambda (e: nat).(match e in nat with [O \Rightarrow False | (S -_) \Rightarrow True])) in (let H2 \def (eq_ind nat TMP_782 TMP_781 I O H1) in -(let TMP_784 \def ((le (S y) m) \to (let TMP_783 \def (blt y O) in (eq bool -TMP_783 true))) in (let TMP_785 \def (False_ind TMP_784 H2) in (TMP_785 -H0)))))))]) in (let TMP_790 \def (refl_equal nat O) in (H0 TMP_790))))) in -(let TMP_780 \def (\lambda (n: nat).(\lambda (H: ((\forall (y: nat).((lt y n) -\to (eq bool (blt y n) true))))).(\lambda (y: nat).(let TMP_779 \def (\lambda -(n0: nat).((lt n0 (S n)) \to (let TMP_777 \def (S n) in (let TMP_778 \def -(blt n0 TMP_777) in (eq bool TMP_778 true))))) in (let TMP_776 \def (\lambda -(_: (lt O (S n))).(refl_equal bool true)) in (let TMP_775 \def (\lambda (n0: -nat).(\lambda (_: (((lt n0 (S n)) \to (eq bool (match n0 with [O \Rightarrow -true | (S m) \Rightarrow (blt m n)]) true)))).(\lambda (H1: (lt (S n0) (S -n))).(let TMP_773 \def (S n0) in (let TMP_774 \def (le_S_n TMP_773 n H1) in -(H n0 TMP_774)))))) in (nat_ind TMP_779 TMP_776 TMP_775 y))))))) in (nat_ind -TMP_793 TMP_791 TMP_780 x)))). + \lambda (x: nat).(let TMP_2 \def (\lambda (n: nat).(\forall (y: nat).((lt y +n) \to (let TMP_1 \def (blt y n) in (eq bool TMP_1 true))))) in (let TMP_13 +\def (\lambda (y: nat).(\lambda (H: (lt y O)).(let H0 \def (match H with +[le_n \Rightarrow (\lambda (H0: (eq nat (S y) O)).(let TMP_8 \def (S y) in +(let TMP_9 \def (\lambda (e: nat).(match e with [O \Rightarrow False | (S _) +\Rightarrow True])) in (let H1 \def (eq_ind nat TMP_8 TMP_9 I O H0) in (let +TMP_10 \def (blt y O) in (let TMP_11 \def (eq bool TMP_10 true) in (False_ind +TMP_11 H1))))))) | (le_S m H0) \Rightarrow (\lambda (H1: (eq nat (S m) +O)).(let TMP_3 \def (S m) in (let TMP_4 \def (\lambda (e: nat).(match e with +[O \Rightarrow False | (S _) \Rightarrow True])) in (let H2 \def (eq_ind nat +TMP_3 TMP_4 I O H1) in (let TMP_6 \def ((le (S y) m) \to (let TMP_5 \def (blt +y O) in (eq bool TMP_5 true))) in (let TMP_7 \def (False_ind TMP_6 H2) in +(TMP_7 H0)))))))]) in (let TMP_12 \def (refl_equal nat O) in (H0 TMP_12))))) +in (let TMP_21 \def (\lambda (n: nat).(\lambda (H: ((\forall (y: nat).((lt y +n) \to (eq bool (blt y n) true))))).(\lambda (y: nat).(let TMP_16 \def +(\lambda (n0: nat).((lt n0 (S n)) \to (let TMP_14 \def (S n) in (let TMP_15 +\def (blt n0 TMP_14) in (eq bool TMP_15 true))))) in (let TMP_17 \def +(\lambda (_: (lt O (S n))).(refl_equal bool true)) in (let TMP_20 \def +(\lambda (n0: nat).(\lambda (_: (((lt n0 (S n)) \to (eq bool (match n0 with +[O \Rightarrow true | (S m) \Rightarrow (blt m n)]) true)))).(\lambda (H1: +(lt (S n0) (S n))).(let TMP_18 \def (S n0) in (let TMP_19 \def (le_S_n TMP_18 +n H1) in (H n0 TMP_19)))))) in (nat_ind TMP_16 TMP_17 TMP_20 y))))))) in +(nat_ind TMP_2 TMP_13 TMP_21 x)))). theorem le_bge: \forall (x: nat).(\forall (y: nat).((le x y) \to (eq bool (blt y x) false))) \def - \lambda (x: nat).(let TMP_815 \def (\lambda (n: nat).(\forall (y: nat).((le -n y) \to (let TMP_814 \def (blt y n) in (eq bool TMP_814 false))))) in (let -TMP_813 \def (\lambda (y: nat).(\lambda (_: (le O y)).(refl_equal bool -false))) in (let TMP_812 \def (\lambda (n: nat).(\lambda (H: ((\forall (y: -nat).((le n y) \to (eq bool (blt y n) false))))).(\lambda (y: nat).(let -TMP_811 \def (\lambda (n0: nat).((le (S n) n0) \to (let TMP_809 \def (S n) in -(let TMP_810 \def (blt n0 TMP_809) in (eq bool TMP_810 false))))) in (let -TMP_808 \def (\lambda (H0: (le (S n) O)).(let H1 \def (match H0 in le with -[le_n \Rightarrow (\lambda (H1: (eq nat (S n) O)).(let TMP_803 \def (S n) in -(let TMP_802 \def (\lambda (e: nat).(match e in nat with [O \Rightarrow False -| (S _) \Rightarrow True])) in (let H2 \def (eq_ind nat TMP_803 TMP_802 I O -H1) in (let TMP_804 \def (S n) in (let TMP_805 \def (blt O TMP_804) in (let -TMP_806 \def (eq bool TMP_805 false) in (False_ind TMP_806 H2)))))))) | (le_S -m H1) \Rightarrow (\lambda (H2: (eq nat (S m) O)).(let TMP_797 \def (S m) in -(let TMP_796 \def (\lambda (e: nat).(match e in nat with [O \Rightarrow False -| (S _) \Rightarrow True])) in (let H3 \def (eq_ind nat TMP_797 TMP_796 I O -H2) in (let TMP_800 \def ((le (S n) m) \to (let TMP_798 \def (S n) in (let -TMP_799 \def (blt O TMP_798) in (eq bool TMP_799 false)))) in (let TMP_801 -\def (False_ind TMP_800 H3) in (TMP_801 H1)))))))]) in (let TMP_807 \def -(refl_equal nat O) in (H1 TMP_807)))) in (let TMP_795 \def (\lambda (n0: + \lambda (x: nat).(let TMP_2 \def (\lambda (n: nat).(\forall (y: nat).((le n +y) \to (let TMP_1 \def (blt y n) in (eq bool TMP_1 false))))) in (let TMP_3 +\def (\lambda (y: nat).(\lambda (_: (le O y)).(refl_equal bool false))) in +(let TMP_22 \def (\lambda (n: nat).(\lambda (H: ((\forall (y: nat).((le n y) +\to (eq bool (blt y n) false))))).(\lambda (y: nat).(let TMP_6 \def (\lambda +(n0: nat).((le (S n) n0) \to (let TMP_4 \def (S n) in (let TMP_5 \def (blt n0 +TMP_4) in (eq bool TMP_5 false))))) in (let TMP_19 \def (\lambda (H0: (le (S +n) O)).(let H1 \def (match H0 with [le_n \Rightarrow (\lambda (H1: (eq nat (S +n) O)).(let TMP_13 \def (S n) in (let TMP_14 \def (\lambda (e: nat).(match e +with [O \Rightarrow False | (S _) \Rightarrow True])) in (let H2 \def (eq_ind +nat TMP_13 TMP_14 I O H1) in (let TMP_15 \def (S n) in (let TMP_16 \def (blt +O TMP_15) in (let TMP_17 \def (eq bool TMP_16 false) in (False_ind TMP_17 +H2)))))))) | (le_S m H1) \Rightarrow (\lambda (H2: (eq nat (S m) O)).(let +TMP_7 \def (S m) in (let TMP_8 \def (\lambda (e: nat).(match e with [O +\Rightarrow False | (S _) \Rightarrow True])) in (let H3 \def (eq_ind nat +TMP_7 TMP_8 I O H2) in (let TMP_11 \def ((le (S n) m) \to (let TMP_9 \def (S +n) in (let TMP_10 \def (blt O TMP_9) in (eq bool TMP_10 false)))) in (let +TMP_12 \def (False_ind TMP_11 H3) in (TMP_12 H1)))))))]) in (let TMP_18 \def +(refl_equal nat O) in (H1 TMP_18)))) in (let TMP_21 \def (\lambda (n0: nat).(\lambda (_: (((le (S n) n0) \to (eq bool (blt n0 (S n)) -false)))).(\lambda (H1: (le (S n) (S n0))).(let TMP_794 \def (le_S_n n n0 H1) -in (H n0 TMP_794))))) in (nat_ind TMP_811 TMP_808 TMP_795 y))))))) in -(nat_ind TMP_815 TMP_813 TMP_812 x)))). +false)))).(\lambda (H1: (le (S n) (S n0))).(let TMP_20 \def (le_S_n n n0 H1) +in (H n0 TMP_20))))) in (nat_ind TMP_6 TMP_19 TMP_21 y))))))) in (nat_ind +TMP_2 TMP_3 TMP_22 x)))). theorem blt_lt: \forall (x: nat).(\forall (y: nat).((eq bool (blt y x) true) \to (lt y x))) \def - \lambda (x: nat).(let TMP_834 \def (\lambda (n: nat).(\forall (y: nat).((eq -bool (blt y n) true) \to (lt y n)))) in (let TMP_833 \def (\lambda (y: -nat).(\lambda (H: (eq bool (blt y O) true)).(let H0 \def (match H in eq with -[refl_equal \Rightarrow (\lambda (H0: (eq bool (blt y O) true)).(let TMP_830 -\def (blt y O) in (let TMP_829 \def (\lambda (e: bool).(match e in bool with -[true \Rightarrow False | false \Rightarrow True])) in (let H1 \def (eq_ind -bool TMP_830 TMP_829 I true H0) in (let TMP_831 \def (lt y O) in (False_ind -TMP_831 H1))))))]) in (let TMP_832 \def (refl_equal bool true) in (H0 -TMP_832))))) in (let TMP_828 \def (\lambda (n: nat).(\lambda (H: ((\forall -(y: nat).((eq bool (blt y n) true) \to (lt y n))))).(\lambda (y: nat).(let -TMP_827 \def (\lambda (n0: nat).((eq bool (blt n0 (S n)) true) \to (let -TMP_826 \def (S n) in (lt n0 TMP_826)))) in (let TMP_825 \def (\lambda (_: -(eq bool true true)).(let TMP_824 \def (S O) in (let TMP_823 \def (S n) in -(let TMP_821 \def (S O) in (let TMP_820 \def (S n) in (let TMP_818 \def -(le_O_n n) in (let TMP_819 \def (le_n_S O n TMP_818) in (let TMP_822 \def -(le_n_S TMP_821 TMP_820 TMP_819) in (le_S_n TMP_824 TMP_823 TMP_822))))))))) -in (let TMP_817 \def (\lambda (n0: nat).(\lambda (_: (((eq bool (match n0 -with [O \Rightarrow true | (S m) \Rightarrow (blt m n)]) true) \to (lt n0 (S -n))))).(\lambda (H1: (eq bool (blt n0 n) true)).(let TMP_816 \def (H n0 H1) -in (lt_n_S n0 n TMP_816))))) in (nat_ind TMP_827 TMP_825 TMP_817 y))))))) in -(nat_ind TMP_834 TMP_833 TMP_828 x)))). + \lambda (x: nat).(let TMP_1 \def (\lambda (n: nat).(\forall (y: nat).((eq +bool (blt y n) true) \to (lt y n)))) in (let TMP_6 \def (\lambda (y: +nat).(\lambda (H: (eq bool (blt y O) true)).(let H0 \def (match H with +[refl_equal \Rightarrow (\lambda (H0: (eq bool (blt y O) true)).(let TMP_2 +\def (blt y O) in (let TMP_3 \def (\lambda (e: bool).(match e with [true +\Rightarrow False | false \Rightarrow True])) in (let H1 \def (eq_ind bool +TMP_2 TMP_3 I true H0) in (let TMP_4 \def (lt y O) in (False_ind TMP_4 +H1))))))]) in (let TMP_5 \def (refl_equal bool true) in (H0 TMP_5))))) in +(let TMP_19 \def (\lambda (n: nat).(\lambda (H: ((\forall (y: nat).((eq bool +(blt y n) true) \to (lt y n))))).(\lambda (y: nat).(let TMP_8 \def (\lambda +(n0: nat).((eq bool (blt n0 (S n)) true) \to (let TMP_7 \def (S n) in (lt n0 +TMP_7)))) in (let TMP_16 \def (\lambda (_: (eq bool true true)).(let TMP_9 +\def (S O) in (let TMP_10 \def (S n) in (let TMP_11 \def (S O) in (let TMP_12 +\def (S n) in (let TMP_13 \def (le_O_n n) in (let TMP_14 \def (le_n_S O n +TMP_13) in (let TMP_15 \def (le_n_S TMP_11 TMP_12 TMP_14) in (le_S_n TMP_9 +TMP_10 TMP_15))))))))) in (let TMP_18 \def (\lambda (n0: nat).(\lambda (_: +(((eq bool (match n0 with [O \Rightarrow true | (S m) \Rightarrow (blt m n)]) +true) \to (lt n0 (S n))))).(\lambda (H1: (eq bool (blt n0 n) true)).(let +TMP_17 \def (H n0 H1) in (lt_n_S n0 n TMP_17))))) in (nat_ind TMP_8 TMP_16 +TMP_18 y))))))) in (nat_ind TMP_1 TMP_6 TMP_19 x)))). theorem bge_le: \forall (x: nat).(\forall (y: nat).((eq bool (blt y x) false) \to (le x y))) \def - \lambda (x: nat).(let TMP_854 \def (\lambda (n: nat).(\forall (y: nat).((eq -bool (blt y n) false) \to (le n y)))) in (let TMP_853 \def (\lambda (y: -nat).(\lambda (_: (eq bool (blt y O) false)).(le_O_n y))) in (let TMP_852 -\def (\lambda (n: nat).(\lambda (H: ((\forall (y: nat).((eq bool (blt y n) -false) \to (le n y))))).(\lambda (y: nat).(let TMP_851 \def (\lambda (n0: -nat).((eq bool (blt n0 (S n)) false) \to (let TMP_850 \def (S n) in (le -TMP_850 n0)))) in (let TMP_849 \def (\lambda (H0: (eq bool (blt O (S n)) -false)).(let H1 \def (match H0 in eq with [refl_equal \Rightarrow (\lambda -(H1: (eq bool (blt O (S n)) false)).(let TMP_844 \def (S n) in (let TMP_845 -\def (blt O TMP_844) in (let TMP_843 \def (\lambda (e: bool).(match e in bool -with [true \Rightarrow True | false \Rightarrow False])) in (let H2 \def -(eq_ind bool TMP_845 TMP_843 I false H1) in (let TMP_846 \def (S n) in (let -TMP_847 \def (le TMP_846 O) in (False_ind TMP_847 H2))))))))]) in (let -TMP_848 \def (refl_equal bool false) in (H1 TMP_848)))) in (let TMP_842 \def -(\lambda (n0: nat).(\lambda (_: (((eq bool (blt n0 (S n)) false) \to (le (S -n) n0)))).(\lambda (H1: (eq bool (blt (S n0) (S n)) false)).(let TMP_841 \def -(S n) in (let TMP_840 \def (S n0) in (let TMP_838 \def (S n) in (let TMP_837 -\def (S n0) in (let TMP_835 \def (H n0 H1) in (let TMP_836 \def (le_n_S n n0 -TMP_835) in (let TMP_839 \def (le_n_S TMP_838 TMP_837 TMP_836) in (le_S_n -TMP_841 TMP_840 TMP_839))))))))))) in (nat_ind TMP_851 TMP_849 TMP_842 -y))))))) in (nat_ind TMP_854 TMP_853 TMP_852 x)))). + \lambda (x: nat).(let TMP_1 \def (\lambda (n: nat).(\forall (y: nat).((eq +bool (blt y n) false) \to (le n y)))) in (let TMP_2 \def (\lambda (y: +nat).(\lambda (_: (eq bool (blt y O) false)).(le_O_n y))) in (let TMP_20 \def +(\lambda (n: nat).(\lambda (H: ((\forall (y: nat).((eq bool (blt y n) false) +\to (le n y))))).(\lambda (y: nat).(let TMP_4 \def (\lambda (n0: nat).((eq +bool (blt n0 (S n)) false) \to (let TMP_3 \def (S n) in (le TMP_3 n0)))) in +(let TMP_11 \def (\lambda (H0: (eq bool (blt O (S n)) false)).(let H1 \def +(match H0 with [refl_equal \Rightarrow (\lambda (H1: (eq bool (blt O (S n)) +false)).(let TMP_5 \def (S n) in (let TMP_6 \def (blt O TMP_5) in (let TMP_7 +\def (\lambda (e: bool).(match e with [true \Rightarrow True | false +\Rightarrow False])) in (let H2 \def (eq_ind bool TMP_6 TMP_7 I false H1) in +(let TMP_8 \def (S n) in (let TMP_9 \def (le TMP_8 O) in (False_ind TMP_9 +H2))))))))]) in (let TMP_10 \def (refl_equal bool false) in (H1 TMP_10)))) in +(let TMP_19 \def (\lambda (n0: nat).(\lambda (_: (((eq bool (blt n0 (S n)) +false) \to (le (S n) n0)))).(\lambda (H1: (eq bool (blt (S n0) (S n)) +false)).(let TMP_12 \def (S n) in (let TMP_13 \def (S n0) in (let TMP_14 \def +(S n) in (let TMP_15 \def (S n0) in (let TMP_16 \def (H n0 H1) in (let TMP_17 +\def (le_n_S n n0 TMP_16) in (let TMP_18 \def (le_n_S TMP_14 TMP_15 TMP_17) +in (le_S_n TMP_12 TMP_13 TMP_18))))))))))) in (nat_ind TMP_4 TMP_11 TMP_19 +y))))))) in (nat_ind TMP_1 TMP_2 TMP_20 x)))). diff --git a/matita/matita/contribs/lambdadelta/ground_1/ext/arith.ma b/matita/matita/contribs/lambdadelta/ground_1/ext/arith.ma index 393440c25..637a86598 100644 --- a/matita/matita/contribs/lambdadelta/ground_1/ext/arith.ma +++ b/matita/matita/contribs/lambdadelta/ground_1/ext/arith.ma @@ -20,212 +20,204 @@ theorem nat_dec: \forall (n1: nat).(\forall (n2: nat).(or (eq nat n1 n2) ((eq nat n1 n2) \to (\forall (P: Prop).P)))) \def - \lambda (n1: nat).(let TMP_81 \def (\lambda (n: nat).(\forall (n2: nat).(let -TMP_80 \def (eq nat n n2) in (let TMP_79 \def ((eq nat n n2) \to (\forall (P: -Prop).P)) in (or TMP_80 TMP_79))))) in (let TMP_78 \def (\lambda (n2: -nat).(let TMP_77 \def (\lambda (n: nat).(let TMP_76 \def (eq nat O n) in (let -TMP_75 \def ((eq nat O n) \to (\forall (P: Prop).P)) in (or TMP_76 TMP_75)))) -in (let TMP_73 \def (eq nat O O) in (let TMP_72 \def ((eq nat O O) \to -(\forall (P: Prop).P)) in (let TMP_71 \def (refl_equal nat O) in (let TMP_74 -\def (or_introl TMP_73 TMP_72 TMP_71) in (let TMP_70 \def (\lambda (n: -nat).(\lambda (_: (or (eq nat O n) ((eq nat O n) \to (\forall (P: -Prop).P)))).(let TMP_68 \def (S n) in (let TMP_69 \def (eq nat O TMP_68) in -(let TMP_67 \def ((eq nat O (S n)) \to (\forall (P: Prop).P)) in (let TMP_66 -\def (\lambda (H0: (eq nat O (S n))).(\lambda (P: Prop).(let TMP_65 \def -(\lambda (ee: nat).(match ee in nat with [O \Rightarrow True | (S _) -\Rightarrow False])) in (let TMP_64 \def (S n) in (let H1 \def (eq_ind nat O -TMP_65 I TMP_64 H0) in (False_ind P H1)))))) in (or_intror TMP_69 TMP_67 -TMP_66))))))) in (nat_ind TMP_77 TMP_74 TMP_70 n2)))))))) in (let TMP_63 \def -(\lambda (n: nat).(\lambda (H: ((\forall (n2: nat).(or (eq nat n n2) ((eq nat -n n2) \to (\forall (P: Prop).P)))))).(\lambda (n2: nat).(let TMP_62 \def -(\lambda (n0: nat).(let TMP_60 \def (S n) in (let TMP_61 \def (eq nat TMP_60 -n0) in (let TMP_59 \def ((eq nat (S n) n0) \to (\forall (P: Prop).P)) in (or -TMP_61 TMP_59))))) in (let TMP_56 \def (S n) in (let TMP_57 \def (eq nat -TMP_56 O) in (let TMP_55 \def ((eq nat (S n) O) \to (\forall (P: Prop).P)) in -(let TMP_54 \def (\lambda (H0: (eq nat (S n) O)).(\lambda (P: Prop).(let -TMP_53 \def (S n) in (let TMP_52 \def (\lambda (ee: nat).(match ee in nat -with [O \Rightarrow False | (S _) \Rightarrow True])) in (let H1 \def (eq_ind -nat TMP_53 TMP_52 I O H0) in (False_ind P H1)))))) in (let TMP_58 \def -(or_intror TMP_57 TMP_55 TMP_54) in (let TMP_51 \def (\lambda (n0: -nat).(\lambda (H0: (or (eq nat (S n) n0) ((eq nat (S n) n0) \to (\forall (P: -Prop).P)))).(let TMP_50 \def (eq nat n n0) in (let TMP_49 \def ((eq nat n n0) -\to (\forall (P: Prop).P)) in (let TMP_46 \def (S n) in (let TMP_45 \def (S -n0) in (let TMP_47 \def (eq nat TMP_46 TMP_45) in (let TMP_44 \def ((eq nat -(S n) (S n0)) \to (\forall (P: Prop).P)) in (let TMP_48 \def (or TMP_47 -TMP_44) in (let TMP_43 \def (\lambda (H1: (eq nat n n0)).(let TMP_30 \def -(\lambda (n3: nat).(let TMP_28 \def (S n) in (let TMP_29 \def (eq nat TMP_28 -n3) in (let TMP_27 \def ((eq nat (S n) n3) \to (\forall (P: Prop).P)) in (or -TMP_29 TMP_27))))) in (let H2 \def (eq_ind_r nat n0 TMP_30 H0 n H1) in (let -TMP_42 \def (\lambda (n3: nat).(let TMP_40 \def (S n) in (let TMP_39 \def (S -n3) in (let TMP_41 \def (eq nat TMP_40 TMP_39) in (let TMP_38 \def ((eq nat -(S n) (S n3)) \to (\forall (P: Prop).P)) in (or TMP_41 TMP_38)))))) in (let -TMP_35 \def (S n) in (let TMP_34 \def (S n) in (let TMP_36 \def (eq nat -TMP_35 TMP_34) in (let TMP_33 \def ((eq nat (S n) (S n)) \to (\forall (P: -Prop).P)) in (let TMP_31 \def (S n) in (let TMP_32 \def (refl_equal nat -TMP_31) in (let TMP_37 \def (or_introl TMP_36 TMP_33 TMP_32) in (eq_ind nat n -TMP_42 TMP_37 n0 H1)))))))))))) in (let TMP_26 \def (\lambda (H1: (((eq nat n -n0) \to (\forall (P: Prop).P)))).(let TMP_24 \def (S n) in (let TMP_23 \def -(S n0) in (let TMP_25 \def (eq nat TMP_24 TMP_23) in (let TMP_22 \def ((eq -nat (S n) (S n0)) \to (\forall (P: Prop).P)) in (let TMP_21 \def (\lambda -(H2: (eq nat (S n) (S n0))).(\lambda (P: Prop).(let TMP_14 \def (\lambda (e: -nat).(match e in nat with [O \Rightarrow n | (S n3) \Rightarrow n3])) in (let -TMP_13 \def (S n) in (let TMP_12 \def (S n0) in (let H3 \def (f_equal nat nat -TMP_14 TMP_13 TMP_12 H2) in (let TMP_15 \def (\lambda (n3: nat).((eq nat n -n3) \to (\forall (P0: Prop).P0))) in (let H4 \def (eq_ind_r nat n0 TMP_15 H1 -n H3) in (let TMP_19 \def (\lambda (n3: nat).(let TMP_17 \def (S n) in (let -TMP_18 \def (eq nat TMP_17 n3) in (let TMP_16 \def ((eq nat (S n) n3) \to -(\forall (P0: Prop).P0)) in (or TMP_18 TMP_16))))) in (let H5 \def (eq_ind_r -nat n0 TMP_19 H0 n H3) in (let TMP_20 \def (refl_equal nat n) in (H4 TMP_20 -P)))))))))))) in (or_intror TMP_25 TMP_22 TMP_21))))))) in (let TMP_11 \def -(H n0) in (or_ind TMP_50 TMP_49 TMP_48 TMP_43 TMP_26 TMP_11))))))))))))) in -(nat_ind TMP_62 TMP_58 TMP_51 n2))))))))))) in (nat_ind TMP_81 TMP_78 TMP_63 -n1)))). + \lambda (n1: nat).(let TMP_3 \def (\lambda (n: nat).(\forall (n2: nat).(let +TMP_1 \def (eq nat n n2) in (let TMP_2 \def ((eq nat n n2) \to (\forall (P: +Prop).P)) in (or TMP_1 TMP_2))))) in (let TMP_18 \def (\lambda (n2: nat).(let +TMP_6 \def (\lambda (n: nat).(let TMP_4 \def (eq nat O n) in (let TMP_5 \def +((eq nat O n) \to (\forall (P: Prop).P)) in (or TMP_4 TMP_5)))) in (let TMP_7 +\def (eq nat O O) in (let TMP_8 \def ((eq nat O O) \to (\forall (P: Prop).P)) +in (let TMP_9 \def (refl_equal nat O) in (let TMP_10 \def (or_introl TMP_7 +TMP_8 TMP_9) in (let TMP_17 \def (\lambda (n: nat).(\lambda (_: (or (eq nat O +n) ((eq nat O n) \to (\forall (P: Prop).P)))).(let TMP_11 \def (S n) in (let +TMP_12 \def (eq nat O TMP_11) in (let TMP_13 \def ((eq nat O (S n)) \to +(\forall (P: Prop).P)) in (let TMP_16 \def (\lambda (H0: (eq nat O (S +n))).(\lambda (P: Prop).(let TMP_14 \def (\lambda (ee: nat).(match ee with [O +\Rightarrow True | (S _) \Rightarrow False])) in (let TMP_15 \def (S n) in +(let H1 \def (eq_ind nat O TMP_14 I TMP_15 H0) in (False_ind P H1)))))) in +(or_intror TMP_12 TMP_13 TMP_16))))))) in (nat_ind TMP_6 TMP_10 TMP_17 +n2)))))))) in (let TMP_71 \def (\lambda (n: nat).(\lambda (H: ((\forall (n2: +nat).(or (eq nat n n2) ((eq nat n n2) \to (\forall (P: Prop).P)))))).(\lambda +(n2: nat).(let TMP_22 \def (\lambda (n0: nat).(let TMP_19 \def (S n) in (let +TMP_20 \def (eq nat TMP_19 n0) in (let TMP_21 \def ((eq nat (S n) n0) \to +(\forall (P: Prop).P)) in (or TMP_20 TMP_21))))) in (let TMP_23 \def (S n) in +(let TMP_24 \def (eq nat TMP_23 O) in (let TMP_25 \def ((eq nat (S n) O) \to +(\forall (P: Prop).P)) in (let TMP_28 \def (\lambda (H0: (eq nat (S n) +O)).(\lambda (P: Prop).(let TMP_26 \def (S n) in (let TMP_27 \def (\lambda +(ee: nat).(match ee with [O \Rightarrow False | (S _) \Rightarrow True])) in +(let H1 \def (eq_ind nat TMP_26 TMP_27 I O H0) in (False_ind P H1)))))) in +(let TMP_29 \def (or_intror TMP_24 TMP_25 TMP_28) in (let TMP_70 \def +(\lambda (n0: nat).(\lambda (H0: (or (eq nat (S n) n0) ((eq nat (S n) n0) \to +(\forall (P: Prop).P)))).(let TMP_30 \def (eq nat n n0) in (let TMP_31 \def +((eq nat n n0) \to (\forall (P: Prop).P)) in (let TMP_32 \def (S n) in (let +TMP_33 \def (S n0) in (let TMP_34 \def (eq nat TMP_32 TMP_33) in (let TMP_35 +\def ((eq nat (S n) (S n0)) \to (\forall (P: Prop).P)) in (let TMP_36 \def +(or TMP_34 TMP_35) in (let TMP_53 \def (\lambda (H1: (eq nat n n0)).(let +TMP_40 \def (\lambda (n3: nat).(let TMP_37 \def (S n) in (let TMP_38 \def (eq +nat TMP_37 n3) in (let TMP_39 \def ((eq nat (S n) n3) \to (\forall (P: +Prop).P)) in (or TMP_38 TMP_39))))) in (let H2 \def (eq_ind_r nat n0 TMP_40 +H0 n H1) in (let TMP_45 \def (\lambda (n3: nat).(let TMP_41 \def (S n) in +(let TMP_42 \def (S n3) in (let TMP_43 \def (eq nat TMP_41 TMP_42) in (let +TMP_44 \def ((eq nat (S n) (S n3)) \to (\forall (P: Prop).P)) in (or TMP_43 +TMP_44)))))) in (let TMP_46 \def (S n) in (let TMP_47 \def (S n) in (let +TMP_48 \def (eq nat TMP_46 TMP_47) in (let TMP_49 \def ((eq nat (S n) (S n)) +\to (\forall (P: Prop).P)) in (let TMP_50 \def (S n) in (let TMP_51 \def +(refl_equal nat TMP_50) in (let TMP_52 \def (or_introl TMP_48 TMP_49 TMP_51) +in (eq_ind nat n TMP_45 TMP_52 n0 H1)))))))))))) in (let TMP_68 \def (\lambda +(H1: (((eq nat n n0) \to (\forall (P: Prop).P)))).(let TMP_54 \def (S n) in +(let TMP_55 \def (S n0) in (let TMP_56 \def (eq nat TMP_54 TMP_55) in (let +TMP_57 \def ((eq nat (S n) (S n0)) \to (\forall (P: Prop).P)) in (let TMP_67 +\def (\lambda (H2: (eq nat (S n) (S n0))).(\lambda (P: Prop).(let TMP_58 \def +(\lambda (e: nat).(match e with [O \Rightarrow n | (S n3) \Rightarrow n3])) +in (let TMP_59 \def (S n) in (let TMP_60 \def (S n0) in (let H3 \def (f_equal +nat nat TMP_58 TMP_59 TMP_60 H2) in (let TMP_61 \def (\lambda (n3: nat).((eq +nat n n3) \to (\forall (P0: Prop).P0))) in (let H4 \def (eq_ind_r nat n0 +TMP_61 H1 n H3) in (let TMP_65 \def (\lambda (n3: nat).(let TMP_62 \def (S n) +in (let TMP_63 \def (eq nat TMP_62 n3) in (let TMP_64 \def ((eq nat (S n) n3) +\to (\forall (P0: Prop).P0)) in (or TMP_63 TMP_64))))) in (let H5 \def +(eq_ind_r nat n0 TMP_65 H0 n H3) in (let TMP_66 \def (refl_equal nat n) in +(H4 TMP_66 P)))))))))))) in (or_intror TMP_56 TMP_57 TMP_67))))))) in (let +TMP_69 \def (H n0) in (or_ind TMP_30 TMP_31 TMP_36 TMP_53 TMP_68 +TMP_69))))))))))))) in (nat_ind TMP_22 TMP_29 TMP_70 n2))))))))))) in +(nat_ind TMP_3 TMP_18 TMP_71 n1)))). theorem simpl_plus_r: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).((eq nat (plus m n) (plus p n)) \to (eq nat m p)))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(\lambda (H: (eq nat -(plus m n) (plus p n))).(let TMP_92 \def (plus m n) in (let TMP_91 \def -(\lambda (n0: nat).(let TMP_90 \def (plus n p) in (eq nat n0 TMP_90))) in -(let TMP_88 \def (plus p n) in (let TMP_87 \def (\lambda (n0: nat).(let -TMP_86 \def (plus n p) in (eq nat n0 TMP_86))) in (let TMP_85 \def (plus_sym -p n) in (let TMP_84 \def (plus m n) in (let TMP_89 \def (eq_ind_r nat TMP_88 -TMP_87 TMP_85 TMP_84 H) in (let TMP_83 \def (plus n m) in (let TMP_82 \def -(plus_sym n m) in (let TMP_93 \def (eq_ind_r nat TMP_92 TMP_91 TMP_89 TMP_83 -TMP_82) in (simpl_plus_l n m p TMP_93)))))))))))))). +(plus m n) (plus p n))).(let TMP_1 \def (plus m n) in (let TMP_3 \def +(\lambda (n0: nat).(let TMP_2 \def (plus n p) in (eq nat n0 TMP_2))) in (let +TMP_4 \def (plus p n) in (let TMP_6 \def (\lambda (n0: nat).(let TMP_5 \def +(plus n p) in (eq nat n0 TMP_5))) in (let TMP_7 \def (plus_sym p n) in (let +TMP_8 \def (plus m n) in (let TMP_9 \def (eq_ind_r nat TMP_4 TMP_6 TMP_7 +TMP_8 H) in (let TMP_10 \def (plus n m) in (let TMP_11 \def (plus_sym n m) in +(let TMP_12 \def (eq_ind_r nat TMP_1 TMP_3 TMP_9 TMP_10 TMP_11) in +(simpl_plus_l n m p TMP_12)))))))))))))). theorem minus_Sx_Sy: \forall (x: nat).(\forall (y: nat).(eq nat (minus (S x) (S y)) (minus x y))) \def - \lambda (x: nat).(\lambda (y: nat).(let TMP_94 \def (minus x y) in -(refl_equal nat TMP_94))). + \lambda (x: nat).(\lambda (y: nat).(let TMP_1 \def (minus x y) in +(refl_equal nat TMP_1))). theorem minus_plus_r: \forall (m: nat).(\forall (n: nat).(eq nat (minus (plus m n) n) m)) \def - \lambda (m: nat).(\lambda (n: nat).(let TMP_100 \def (plus n m) in (let -TMP_99 \def (\lambda (n0: nat).(let TMP_98 \def (minus n0 n) in (eq nat -TMP_98 m))) in (let TMP_97 \def (minus_plus n m) in (let TMP_96 \def (plus m -n) in (let TMP_95 \def (plus_sym m n) in (eq_ind_r nat TMP_100 TMP_99 TMP_97 -TMP_96 TMP_95))))))). + \lambda (m: nat).(\lambda (n: nat).(let TMP_1 \def (plus n m) in (let TMP_3 +\def (\lambda (n0: nat).(let TMP_2 \def (minus n0 n) in (eq nat TMP_2 m))) in +(let TMP_4 \def (minus_plus n m) in (let TMP_5 \def (plus m n) in (let TMP_6 +\def (plus_sym m n) in (eq_ind_r nat TMP_1 TMP_3 TMP_4 TMP_5 TMP_6))))))). theorem plus_permute_2_in_3: \forall (x: nat).(\forall (y: nat).(\forall (z: nat).(eq nat (plus (plus x y) z) (plus (plus x z) y)))) \def - \lambda (x: nat).(\lambda (y: nat).(\lambda (z: nat).(let TMP_127 \def (plus -y z) in (let TMP_128 \def (plus x TMP_127) in (let TMP_126 \def (\lambda (n: -nat).(let TMP_124 \def (plus x z) in (let TMP_125 \def (plus TMP_124 y) in -(eq nat n TMP_125)))) in (let TMP_122 \def (plus z y) in (let TMP_121 \def -(\lambda (n: nat).(let TMP_120 \def (plus x n) in (let TMP_118 \def (plus x -z) in (let TMP_119 \def (plus TMP_118 y) in (eq nat TMP_120 TMP_119))))) in -(let TMP_115 \def (plus x z) in (let TMP_116 \def (plus TMP_115 y) in (let -TMP_114 \def (\lambda (n: nat).(let TMP_112 \def (plus x z) in (let TMP_113 -\def (plus TMP_112 y) in (eq nat n TMP_113)))) in (let TMP_109 \def (plus x -z) in (let TMP_110 \def (plus TMP_109 y) in (let TMP_111 \def (refl_equal nat -TMP_110) in (let TMP_107 \def (plus z y) in (let TMP_108 \def (plus x -TMP_107) in (let TMP_106 \def (plus_assoc_r x z y) in (let TMP_117 \def -(eq_ind nat TMP_116 TMP_114 TMP_111 TMP_108 TMP_106) in (let TMP_105 \def -(plus y z) in (let TMP_104 \def (plus_sym y z) in (let TMP_123 \def (eq_ind_r -nat TMP_122 TMP_121 TMP_117 TMP_105 TMP_104) in (let TMP_102 \def (plus x y) -in (let TMP_103 \def (plus TMP_102 z) in (let TMP_101 \def (plus_assoc_r x y -z) in (eq_ind_r nat TMP_128 TMP_126 TMP_123 TMP_103 -TMP_101)))))))))))))))))))))))). + \lambda (x: nat).(\lambda (y: nat).(\lambda (z: nat).(let TMP_1 \def (plus y +z) in (let TMP_2 \def (plus x TMP_1) in (let TMP_5 \def (\lambda (n: +nat).(let TMP_3 \def (plus x z) in (let TMP_4 \def (plus TMP_3 y) in (eq nat +n TMP_4)))) in (let TMP_6 \def (plus z y) in (let TMP_10 \def (\lambda (n: +nat).(let TMP_7 \def (plus x n) in (let TMP_8 \def (plus x z) in (let TMP_9 +\def (plus TMP_8 y) in (eq nat TMP_7 TMP_9))))) in (let TMP_11 \def (plus x +z) in (let TMP_12 \def (plus TMP_11 y) in (let TMP_15 \def (\lambda (n: +nat).(let TMP_13 \def (plus x z) in (let TMP_14 \def (plus TMP_13 y) in (eq +nat n TMP_14)))) in (let TMP_16 \def (plus x z) in (let TMP_17 \def (plus +TMP_16 y) in (let TMP_18 \def (refl_equal nat TMP_17) in (let TMP_19 \def +(plus z y) in (let TMP_20 \def (plus x TMP_19) in (let TMP_21 \def +(plus_assoc_r x z y) in (let TMP_22 \def (eq_ind nat TMP_12 TMP_15 TMP_18 +TMP_20 TMP_21) in (let TMP_23 \def (plus y z) in (let TMP_24 \def (plus_sym y +z) in (let TMP_25 \def (eq_ind_r nat TMP_6 TMP_10 TMP_22 TMP_23 TMP_24) in +(let TMP_26 \def (plus x y) in (let TMP_27 \def (plus TMP_26 z) in (let +TMP_28 \def (plus_assoc_r x y z) in (eq_ind_r nat TMP_2 TMP_5 TMP_25 TMP_27 +TMP_28)))))))))))))))))))))))). theorem plus_permute_2_in_3_assoc: \forall (n: nat).(\forall (h: nat).(\forall (k: nat).(eq nat (plus (plus n h) k) (plus n (plus k h))))) \def - \lambda (n: nat).(\lambda (h: nat).(\lambda (k: nat).(let TMP_147 \def (plus -n k) in (let TMP_148 \def (plus TMP_147 h) in (let TMP_146 \def (\lambda (n0: -nat).(let TMP_144 \def (plus k h) in (let TMP_145 \def (plus n TMP_144) in -(eq nat n0 TMP_145)))) in (let TMP_141 \def (plus n k) in (let TMP_142 \def -(plus TMP_141 h) in (let TMP_140 \def (\lambda (n0: nat).(let TMP_138 \def -(plus n k) in (let TMP_139 \def (plus TMP_138 h) in (eq nat TMP_139 n0)))) in -(let TMP_135 \def (plus n k) in (let TMP_136 \def (plus TMP_135 h) in (let -TMP_137 \def (refl_equal nat TMP_136) in (let TMP_133 \def (plus k h) in (let -TMP_134 \def (plus n TMP_133) in (let TMP_132 \def (plus_assoc_l n k h) in -(let TMP_143 \def (eq_ind_r nat TMP_142 TMP_140 TMP_137 TMP_134 TMP_132) in -(let TMP_130 \def (plus n h) in (let TMP_131 \def (plus TMP_130 k) in (let -TMP_129 \def (plus_permute_2_in_3 n h k) in (eq_ind_r nat TMP_148 TMP_146 -TMP_143 TMP_131 TMP_129))))))))))))))))))). + \lambda (n: nat).(\lambda (h: nat).(\lambda (k: nat).(let TMP_1 \def (plus n +k) in (let TMP_2 \def (plus TMP_1 h) in (let TMP_5 \def (\lambda (n0: +nat).(let TMP_3 \def (plus k h) in (let TMP_4 \def (plus n TMP_3) in (eq nat +n0 TMP_4)))) in (let TMP_6 \def (plus n k) in (let TMP_7 \def (plus TMP_6 h) +in (let TMP_10 \def (\lambda (n0: nat).(let TMP_8 \def (plus n k) in (let +TMP_9 \def (plus TMP_8 h) in (eq nat TMP_9 n0)))) in (let TMP_11 \def (plus n +k) in (let TMP_12 \def (plus TMP_11 h) in (let TMP_13 \def (refl_equal nat +TMP_12) in (let TMP_14 \def (plus k h) in (let TMP_15 \def (plus n TMP_14) in +(let TMP_16 \def (plus_assoc_l n k h) in (let TMP_17 \def (eq_ind_r nat TMP_7 +TMP_10 TMP_13 TMP_15 TMP_16) in (let TMP_18 \def (plus n h) in (let TMP_19 +\def (plus TMP_18 k) in (let TMP_20 \def (plus_permute_2_in_3 n h k) in +(eq_ind_r nat TMP_2 TMP_5 TMP_17 TMP_19 TMP_20))))))))))))))))))). theorem plus_O: \forall (x: nat).(\forall (y: nat).((eq nat (plus x y) O) \to (land (eq nat x O) (eq nat y O)))) \def - \lambda (x: nat).(let TMP_164 \def (\lambda (n: nat).(\forall (y: nat).((eq -nat (plus n y) O) \to (let TMP_163 \def (eq nat n O) in (let TMP_162 \def (eq -nat y O) in (land TMP_163 TMP_162)))))) in (let TMP_161 \def (\lambda (y: -nat).(\lambda (H: (eq nat (plus O y) O)).(let TMP_160 \def (eq nat O O) in -(let TMP_159 \def (eq nat y O) in (let TMP_158 \def (refl_equal nat O) in -(conj TMP_160 TMP_159 TMP_158 H)))))) in (let TMP_157 \def (\lambda (n: -nat).(\lambda (_: ((\forall (y: nat).((eq nat (plus n y) O) \to (land (eq nat -n O) (eq nat y O)))))).(\lambda (y: nat).(\lambda (H0: (eq nat (plus (S n) y) -O)).(let H1 \def (match H0 in eq with [refl_equal \Rightarrow (\lambda (H1: -(eq nat (plus (S n) y) O)).(let TMP_150 \def (S n) in (let TMP_151 \def (plus -TMP_150 y) in (let TMP_149 \def (\lambda (e: nat).(match e in nat with [O -\Rightarrow False | (S _) \Rightarrow True])) in (let H2 \def (eq_ind nat -TMP_151 TMP_149 I O H1) in (let TMP_153 \def (S n) in (let TMP_154 \def (eq -nat TMP_153 O) in (let TMP_152 \def (eq nat y O) in (let TMP_155 \def (land -TMP_154 TMP_152) in (False_ind TMP_155 H2))))))))))]) in (let TMP_156 \def -(refl_equal nat O) in (H1 TMP_156))))))) in (nat_ind TMP_164 TMP_161 TMP_157 + \lambda (x: nat).(let TMP_3 \def (\lambda (n: nat).(\forall (y: nat).((eq +nat (plus n y) O) \to (let TMP_1 \def (eq nat n O) in (let TMP_2 \def (eq nat +y O) in (land TMP_1 TMP_2)))))) in (let TMP_7 \def (\lambda (y: nat).(\lambda +(H: (eq nat (plus O y) O)).(let TMP_4 \def (eq nat O O) in (let TMP_5 \def +(eq nat y O) in (let TMP_6 \def (refl_equal nat O) in (conj TMP_4 TMP_5 TMP_6 +H)))))) in (let TMP_16 \def (\lambda (n: nat).(\lambda (_: ((\forall (y: +nat).((eq nat (plus n y) O) \to (land (eq nat n O) (eq nat y O)))))).(\lambda +(y: nat).(\lambda (H0: (eq nat (plus (S n) y) O)).(let H1 \def (match H0 with +[refl_equal \Rightarrow (\lambda (H1: (eq nat (plus (S n) y) O)).(let TMP_8 +\def (S n) in (let TMP_9 \def (plus TMP_8 y) in (let TMP_10 \def (\lambda (e: +nat).(match e with [O \Rightarrow False | (S _) \Rightarrow True])) in (let +H2 \def (eq_ind nat TMP_9 TMP_10 I O H1) in (let TMP_11 \def (S n) in (let +TMP_12 \def (eq nat TMP_11 O) in (let TMP_13 \def (eq nat y O) in (let TMP_14 +\def (land TMP_12 TMP_13) in (False_ind TMP_14 H2))))))))))]) in (let TMP_15 +\def (refl_equal nat O) in (H1 TMP_15))))))) in (nat_ind TMP_3 TMP_7 TMP_16 x)))). theorem minus_Sx_SO: \forall (x: nat).(eq nat (minus (S x) (S O)) x) \def - \lambda (x: nat).(let TMP_168 \def (\lambda (n: nat).(eq nat n x)) in (let -TMP_167 \def (refl_equal nat x) in (let TMP_166 \def (minus x O) in (let -TMP_165 \def (minus_n_O x) in (eq_ind nat x TMP_168 TMP_167 TMP_166 -TMP_165))))). + \lambda (x: nat).(let TMP_1 \def (\lambda (n: nat).(eq nat n x)) in (let +TMP_2 \def (refl_equal nat x) in (let TMP_3 \def (minus x O) in (let TMP_4 +\def (minus_n_O x) in (eq_ind nat x TMP_1 TMP_2 TMP_3 TMP_4))))). theorem nat_dec_neg: \forall (i: nat).(\forall (j: nat).(or (not (eq nat i j)) (eq nat i j))) \def - \lambda (i: nat).(let TMP_236 \def (\lambda (n: nat).(\forall (j: nat).(let -TMP_234 \def (eq nat n j) in (let TMP_235 \def (not TMP_234) in (let TMP_233 -\def (eq nat n j) in (or TMP_235 TMP_233)))))) in (let TMP_232 \def (\lambda -(j: nat).(let TMP_231 \def (\lambda (n: nat).(let TMP_229 \def (eq nat O n) -in (let TMP_230 \def (not TMP_229) in (let TMP_228 \def (eq nat O n) in (or -TMP_230 TMP_228))))) in (let TMP_225 \def (eq nat O O) in (let TMP_226 \def -(not TMP_225) in (let TMP_224 \def (eq nat O O) in (let TMP_223 \def -(refl_equal nat O) in (let TMP_227 \def (or_intror TMP_226 TMP_224 TMP_223) -in (let TMP_222 \def (\lambda (n: nat).(\lambda (_: (or (not (eq nat O n)) -(eq nat O n))).(let TMP_219 \def (S n) in (let TMP_220 \def (eq nat O -TMP_219) in (let TMP_221 \def (not TMP_220) in (let TMP_217 \def (S n) in -(let TMP_218 \def (eq nat O TMP_217) in (let TMP_216 \def (O_S n) in -(or_introl TMP_221 TMP_218 TMP_216))))))))) in (nat_ind TMP_231 TMP_227 -TMP_222 j))))))))) in (let TMP_215 \def (\lambda (n: nat).(\lambda (H: + \lambda (i: nat).(let TMP_4 \def (\lambda (n: nat).(\forall (j: nat).(let +TMP_1 \def (eq nat n j) in (let TMP_2 \def (not TMP_1) in (let TMP_3 \def (eq +nat n j) in (or TMP_2 TMP_3)))))) in (let TMP_21 \def (\lambda (j: nat).(let +TMP_8 \def (\lambda (n: nat).(let TMP_5 \def (eq nat O n) in (let TMP_6 \def +(not TMP_5) in (let TMP_7 \def (eq nat O n) in (or TMP_6 TMP_7))))) in (let +TMP_9 \def (eq nat O O) in (let TMP_10 \def (not TMP_9) in (let TMP_11 \def +(eq nat O O) in (let TMP_12 \def (refl_equal nat O) in (let TMP_13 \def +(or_intror TMP_10 TMP_11 TMP_12) in (let TMP_20 \def (\lambda (n: +nat).(\lambda (_: (or (not (eq nat O n)) (eq nat O n))).(let TMP_14 \def (S +n) in (let TMP_15 \def (eq nat O TMP_14) in (let TMP_16 \def (not TMP_15) in +(let TMP_17 \def (S n) in (let TMP_18 \def (eq nat O TMP_17) in (let TMP_19 +\def (O_S n) in (or_introl TMP_16 TMP_18 TMP_19))))))))) in (nat_ind TMP_8 +TMP_13 TMP_20 j))))))))) in (let TMP_68 \def (\lambda (n: nat).(\lambda (H: ((\forall (j: nat).(or (not (eq nat n j)) (eq nat n j))))).(\lambda (j: -nat).(let TMP_214 \def (\lambda (n0: nat).(let TMP_211 \def (S n) in (let -TMP_212 \def (eq nat TMP_211 n0) in (let TMP_213 \def (not TMP_212) in (let -TMP_209 \def (S n) in (let TMP_210 \def (eq nat TMP_209 n0) in (or TMP_213 -TMP_210))))))) in (let TMP_205 \def (S n) in (let TMP_206 \def (eq nat -TMP_205 O) in (let TMP_207 \def (not TMP_206) in (let TMP_203 \def (S n) in -(let TMP_204 \def (eq nat TMP_203 O) in (let TMP_201 \def (S n) in (let -TMP_200 \def (O_S n) in (let TMP_202 \def (sym_not_eq nat O TMP_201 TMP_200) -in (let TMP_208 \def (or_introl TMP_207 TMP_204 TMP_202) in (let TMP_199 \def -(\lambda (n0: nat).(\lambda (_: (or (not (eq nat (S n) n0)) (eq nat (S n) -n0))).(let TMP_197 \def (eq nat n n0) in (let TMP_198 \def (not TMP_197) in -(let TMP_196 \def (eq nat n n0) in (let TMP_192 \def (S n) in (let TMP_191 -\def (S n0) in (let TMP_193 \def (eq nat TMP_192 TMP_191) in (let TMP_194 -\def (not TMP_193) in (let TMP_189 \def (S n) in (let TMP_188 \def (S n0) in -(let TMP_190 \def (eq nat TMP_189 TMP_188) in (let TMP_195 \def (or TMP_194 -TMP_190) in (let TMP_187 \def (\lambda (H1: (not (eq nat n n0))).(let TMP_184 -\def (S n) in (let TMP_183 \def (S n0) in (let TMP_185 \def (eq nat TMP_184 -TMP_183) in (let TMP_186 \def (not TMP_185) in (let TMP_181 \def (S n) in -(let TMP_180 \def (S n0) in (let TMP_182 \def (eq nat TMP_181 TMP_180) in -(let TMP_179 \def (not_eq_S n n0 H1) in (or_introl TMP_186 TMP_182 -TMP_179)))))))))) in (let TMP_178 \def (\lambda (H1: (eq nat n n0)).(let -TMP_175 \def (S n) in (let TMP_174 \def (S n0) in (let TMP_176 \def (eq nat -TMP_175 TMP_174) in (let TMP_177 \def (not TMP_176) in (let TMP_172 \def (S -n) in (let TMP_171 \def (S n0) in (let TMP_173 \def (eq nat TMP_172 TMP_171) -in (let TMP_170 \def (f_equal nat nat S n n0 H1) in (or_intror TMP_177 -TMP_173 TMP_170)))))))))) in (let TMP_169 \def (H n0) in (or_ind TMP_198 -TMP_196 TMP_195 TMP_187 TMP_178 TMP_169))))))))))))))))) in (nat_ind TMP_214 -TMP_208 TMP_199 j))))))))))))))) in (nat_ind TMP_236 TMP_232 TMP_215 i)))). +nat).(let TMP_27 \def (\lambda (n0: nat).(let TMP_22 \def (S n) in (let +TMP_23 \def (eq nat TMP_22 n0) in (let TMP_24 \def (not TMP_23) in (let +TMP_25 \def (S n) in (let TMP_26 \def (eq nat TMP_25 n0) in (or TMP_24 +TMP_26))))))) in (let TMP_28 \def (S n) in (let TMP_29 \def (eq nat TMP_28 O) +in (let TMP_30 \def (not TMP_29) in (let TMP_31 \def (S n) in (let TMP_32 +\def (eq nat TMP_31 O) in (let TMP_33 \def (S n) in (let TMP_34 \def (O_S n) +in (let TMP_35 \def (sym_not_eq nat O TMP_33 TMP_34) in (let TMP_36 \def +(or_introl TMP_30 TMP_32 TMP_35) in (let TMP_67 \def (\lambda (n0: +nat).(\lambda (_: (or (not (eq nat (S n) n0)) (eq nat (S n) n0))).(let TMP_37 +\def (eq nat n n0) in (let TMP_38 \def (not TMP_37) in (let TMP_39 \def (eq +nat n n0) in (let TMP_40 \def (S n) in (let TMP_41 \def (S n0) in (let TMP_42 +\def (eq nat TMP_40 TMP_41) in (let TMP_43 \def (not TMP_42) in (let TMP_44 +\def (S n) in (let TMP_45 \def (S n0) in (let TMP_46 \def (eq nat TMP_44 +TMP_45) in (let TMP_47 \def (or TMP_43 TMP_46) in (let TMP_56 \def (\lambda +(H1: (not (eq nat n n0))).(let TMP_48 \def (S n) in (let TMP_49 \def (S n0) +in (let TMP_50 \def (eq nat TMP_48 TMP_49) in (let TMP_51 \def (not TMP_50) +in (let TMP_52 \def (S n) in (let TMP_53 \def (S n0) in (let TMP_54 \def (eq +nat TMP_52 TMP_53) in (let TMP_55 \def (not_eq_S n n0 H1) in (or_introl +TMP_51 TMP_54 TMP_55)))))))))) in (let TMP_65 \def (\lambda (H1: (eq nat n +n0)).(let TMP_57 \def (S n) in (let TMP_58 \def (S n0) in (let TMP_59 \def +(eq nat TMP_57 TMP_58) in (let TMP_60 \def (not TMP_59) in (let TMP_61 \def +(S n) in (let TMP_62 \def (S n0) in (let TMP_63 \def (eq nat TMP_61 TMP_62) +in (let TMP_64 \def (f_equal nat nat S n n0 H1) in (or_intror TMP_60 TMP_63 +TMP_64)))))))))) in (let TMP_66 \def (H n0) in (or_ind TMP_38 TMP_39 TMP_47 +TMP_56 TMP_65 TMP_66))))))))))))))))) in (nat_ind TMP_27 TMP_36 TMP_67 +j))))))))))))))) in (nat_ind TMP_4 TMP_21 TMP_68 i)))). theorem neq_eq_e: \forall (i: nat).(\forall (j: nat).(\forall (P: Prop).((((not (eq nat i j)) @@ -233,348 +225,337 @@ theorem neq_eq_e: \def \lambda (i: nat).(\lambda (j: nat).(\lambda (P: Prop).(\lambda (H: (((not (eq nat i j)) \to P))).(\lambda (H0: (((eq nat i j) \to P))).(let o \def -(nat_dec_neg i j) in (let TMP_238 \def (eq nat i j) in (let TMP_239 \def (not -TMP_238) in (let TMP_237 \def (eq nat i j) in (or_ind TMP_239 TMP_237 P H H0 +(nat_dec_neg i j) in (let TMP_1 \def (eq nat i j) in (let TMP_2 \def (not +TMP_1) in (let TMP_3 \def (eq nat i j) in (or_ind TMP_2 TMP_3 P H H0 o))))))))). theorem le_false: \forall (m: nat).(\forall (n: nat).(\forall (P: Prop).((le m n) \to ((le (S n) m) \to P)))) \def - \lambda (m: nat).(let TMP_262 \def (\lambda (n: nat).(\forall (n0: + \lambda (m: nat).(let TMP_1 \def (\lambda (n: nat).(\forall (n0: nat).(\forall (P: Prop).((le n n0) \to ((le (S n0) n) \to P))))) in (let -TMP_261 \def (\lambda (n: nat).(\lambda (P: Prop).(\lambda (_: (le O -n)).(\lambda (H0: (le (S n) O)).(let H1 \def (match H0 in le with [le_n -\Rightarrow (\lambda (H1: (eq nat (S n) O)).(let TMP_259 \def (S n) in (let -TMP_258 \def (\lambda (e: nat).(match e in nat with [O \Rightarrow False | (S -_) \Rightarrow True])) in (let H2 \def (eq_ind nat TMP_259 TMP_258 I O H1) in -(False_ind P H2))))) | (le_S m0 H1) \Rightarrow (\lambda (H2: (eq nat (S m0) -O)).(let TMP_255 \def (S m0) in (let TMP_254 \def (\lambda (e: nat).(match e -in nat with [O \Rightarrow False | (S _) \Rightarrow True])) in (let H3 \def -(eq_ind nat TMP_255 TMP_254 I O H2) in (let TMP_256 \def ((le (S n) m0) \to -P) in (let TMP_257 \def (False_ind TMP_256 H3) in (TMP_257 H1)))))))]) in -(let TMP_260 \def (refl_equal nat O) in (H1 TMP_260))))))) in (let TMP_253 -\def (\lambda (n: nat).(\lambda (H: ((\forall (n0: nat).(\forall (P: -Prop).((le n n0) \to ((le (S n0) n) \to P)))))).(\lambda (n0: nat).(let -TMP_252 \def (\lambda (n1: nat).(\forall (P: Prop).((le (S n) n1) \to ((le (S -n1) (S n)) \to P)))) in (let TMP_251 \def (\lambda (P: Prop).(\lambda (H0: -(le (S n) O)).(\lambda (_: (le (S O) (S n))).(let H2 \def (match H0 in le -with [le_n \Rightarrow (\lambda (H2: (eq nat (S n) O)).(let TMP_249 \def (S -n) in (let TMP_248 \def (\lambda (e: nat).(match e in nat with [O \Rightarrow -False | (S _) \Rightarrow True])) in (let H3 \def (eq_ind nat TMP_249 TMP_248 -I O H2) in (False_ind P H3))))) | (le_S m0 H2) \Rightarrow (\lambda (H3: (eq -nat (S m0) O)).(let TMP_245 \def (S m0) in (let TMP_244 \def (\lambda (e: -nat).(match e in nat with [O \Rightarrow False | (S _) \Rightarrow True])) in -(let H4 \def (eq_ind nat TMP_245 TMP_244 I O H3) in (let TMP_246 \def ((le (S -n) m0) \to P) in (let TMP_247 \def (False_ind TMP_246 H4) in (TMP_247 -H2)))))))]) in (let TMP_250 \def (refl_equal nat O) in (H2 TMP_250)))))) in -(let TMP_243 \def (\lambda (n1: nat).(\lambda (_: ((\forall (P: Prop).((le (S -n) n1) \to ((le (S n1) (S n)) \to P))))).(\lambda (P: Prop).(\lambda (H1: (le -(S n) (S n1))).(\lambda (H2: (le (S (S n1)) (S n))).(let TMP_242 \def (le_S_n -n n1 H1) in (let TMP_240 \def (S n1) in (let TMP_241 \def (le_S_n TMP_240 n -H2) in (H n1 P TMP_242 TMP_241))))))))) in (nat_ind TMP_252 TMP_251 TMP_243 -n0))))))) in (nat_ind TMP_262 TMP_261 TMP_253 m)))). +TMP_9 \def (\lambda (n: nat).(\lambda (P: Prop).(\lambda (_: (le O +n)).(\lambda (H0: (le (S n) O)).(let H1 \def (match H0 with [le_n \Rightarrow +(\lambda (H1: (eq nat (S n) O)).(let TMP_6 \def (S n) in (let TMP_7 \def +(\lambda (e: nat).(match e with [O \Rightarrow False | (S _) \Rightarrow +True])) in (let H2 \def (eq_ind nat TMP_6 TMP_7 I O H1) in (False_ind P +H2))))) | (le_S m0 H1) \Rightarrow (\lambda (H2: (eq nat (S m0) O)).(let +TMP_2 \def (S m0) in (let TMP_3 \def (\lambda (e: nat).(match e with [O +\Rightarrow False | (S _) \Rightarrow True])) in (let H3 \def (eq_ind nat +TMP_2 TMP_3 I O H2) in (let TMP_4 \def ((le (S n) m0) \to P) in (let TMP_5 +\def (False_ind TMP_4 H3) in (TMP_5 H1)))))))]) in (let TMP_8 \def +(refl_equal nat O) in (H1 TMP_8))))))) in (let TMP_23 \def (\lambda (n: +nat).(\lambda (H: ((\forall (n0: nat).(\forall (P: Prop).((le n n0) \to ((le +(S n0) n) \to P)))))).(\lambda (n0: nat).(let TMP_10 \def (\lambda (n1: +nat).(\forall (P: Prop).((le (S n) n1) \to ((le (S n1) (S n)) \to P)))) in +(let TMP_18 \def (\lambda (P: Prop).(\lambda (H0: (le (S n) O)).(\lambda (_: +(le (S O) (S n))).(let H2 \def (match H0 with [le_n \Rightarrow (\lambda (H2: +(eq nat (S n) O)).(let TMP_15 \def (S n) in (let TMP_16 \def (\lambda (e: +nat).(match e with [O \Rightarrow False | (S _) \Rightarrow True])) in (let +H3 \def (eq_ind nat TMP_15 TMP_16 I O H2) in (False_ind P H3))))) | (le_S m0 +H2) \Rightarrow (\lambda (H3: (eq nat (S m0) O)).(let TMP_11 \def (S m0) in +(let TMP_12 \def (\lambda (e: nat).(match e with [O \Rightarrow False | (S _) +\Rightarrow True])) in (let H4 \def (eq_ind nat TMP_11 TMP_12 I O H3) in (let +TMP_13 \def ((le (S n) m0) \to P) in (let TMP_14 \def (False_ind TMP_13 H4) +in (TMP_14 H2)))))))]) in (let TMP_17 \def (refl_equal nat O) in (H2 +TMP_17)))))) in (let TMP_22 \def (\lambda (n1: nat).(\lambda (_: ((\forall +(P: Prop).((le (S n) n1) \to ((le (S n1) (S n)) \to P))))).(\lambda (P: +Prop).(\lambda (H1: (le (S n) (S n1))).(\lambda (H2: (le (S (S n1)) (S +n))).(let TMP_19 \def (le_S_n n n1 H1) in (let TMP_20 \def (S n1) in (let +TMP_21 \def (le_S_n TMP_20 n H2) in (H n1 P TMP_19 TMP_21))))))))) in +(nat_ind TMP_10 TMP_18 TMP_22 n0))))))) in (nat_ind TMP_1 TMP_9 TMP_23 m)))). theorem le_Sx_x: \forall (x: nat).((le (S x) x) \to (\forall (P: Prop).P)) \def \lambda (x: nat).(\lambda (H: (le (S x) x)).(\lambda (P: Prop).(let H0 \def -le_Sn_n in (let TMP_263 \def (H0 x H) in (False_ind P TMP_263))))). +le_Sn_n in (let TMP_1 \def (H0 x H) in (False_ind P TMP_1))))). theorem le_n_pred: \forall (n: nat).(\forall (m: nat).((le n m) \to (le (pred n) (pred m)))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_272 \def -(\lambda (n0: nat).(let TMP_271 \def (pred n) in (let TMP_270 \def (pred n0) -in (le TMP_271 TMP_270)))) in (let TMP_268 \def (pred n) in (let TMP_269 \def -(le_n TMP_268) in (let TMP_267 \def (\lambda (m0: nat).(\lambda (_: (le n -m0)).(\lambda (H1: (le (pred n) (pred m0))).(let TMP_266 \def (pred n) in -(let TMP_265 \def (pred m0) in (let TMP_264 \def (le_pred_n m0) in (le_trans -TMP_266 TMP_265 m0 H1 TMP_264))))))) in (le_ind n TMP_272 TMP_269 TMP_267 m -H))))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_3 \def +(\lambda (n0: nat).(let TMP_1 \def (pred n) in (let TMP_2 \def (pred n0) in +(le TMP_1 TMP_2)))) in (let TMP_4 \def (pred n) in (let TMP_5 \def (le_n +TMP_4) in (let TMP_9 \def (\lambda (m0: nat).(\lambda (_: (le n m0)).(\lambda +(H1: (le (pred n) (pred m0))).(let TMP_6 \def (pred n) in (let TMP_7 \def +(pred m0) in (let TMP_8 \def (le_pred_n m0) in (le_trans TMP_6 TMP_7 m0 H1 +TMP_8))))))) in (le_ind n TMP_3 TMP_5 TMP_9 m H))))))). theorem minus_le: \forall (x: nat).(\forall (y: nat).(le (minus x y) x)) \def - \lambda (x: nat).(let TMP_285 \def (\lambda (n: nat).(\forall (y: nat).(let -TMP_284 \def (minus n y) in (le TMP_284 n)))) in (let TMP_283 \def (\lambda -(_: nat).(le_O_n O)) in (let TMP_282 \def (\lambda (n: nat).(\lambda (H: -((\forall (y: nat).(le (minus n y) n)))).(\lambda (y: nat).(let TMP_281 \def -(\lambda (n0: nat).(let TMP_279 \def (S n) in (let TMP_280 \def (minus -TMP_279 n0) in (let TMP_278 \def (S n) in (le TMP_280 TMP_278))))) in (let -TMP_276 \def (S n) in (let TMP_277 \def (le_n TMP_276) in (let TMP_275 \def -(\lambda (n0: nat).(\lambda (_: (le (match n0 with [O \Rightarrow (S n) | (S -l) \Rightarrow (minus n l)]) (S n))).(let TMP_274 \def (minus n n0) in (let -TMP_273 \def (H n0) in (le_S TMP_274 n TMP_273))))) in (nat_ind TMP_281 -TMP_277 TMP_275 y)))))))) in (nat_ind TMP_285 TMP_283 TMP_282 x)))). + \lambda (x: nat).(let TMP_2 \def (\lambda (n: nat).(\forall (y: nat).(let +TMP_1 \def (minus n y) in (le TMP_1 n)))) in (let TMP_3 \def (\lambda (_: +nat).(le_O_n O)) in (let TMP_13 \def (\lambda (n: nat).(\lambda (H: ((\forall +(y: nat).(le (minus n y) n)))).(\lambda (y: nat).(let TMP_7 \def (\lambda +(n0: nat).(let TMP_4 \def (S n) in (let TMP_5 \def (minus TMP_4 n0) in (let +TMP_6 \def (S n) in (le TMP_5 TMP_6))))) in (let TMP_8 \def (S n) in (let +TMP_9 \def (le_n TMP_8) in (let TMP_12 \def (\lambda (n0: nat).(\lambda (_: +(le (match n0 with [O \Rightarrow (S n) | (S l) \Rightarrow (minus n l)]) (S +n))).(let TMP_10 \def (minus n n0) in (let TMP_11 \def (H n0) in (le_S TMP_10 +n TMP_11))))) in (nat_ind TMP_7 TMP_9 TMP_12 y)))))))) in (nat_ind TMP_2 +TMP_3 TMP_13 x)))). theorem le_plus_minus_sym: \forall (n: nat).(\forall (m: nat).((le n m) \to (eq nat m (plus (minus m n) n)))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_292 \def -(minus m n) in (let TMP_293 \def (plus n TMP_292) in (let TMP_291 \def -(\lambda (n0: nat).(eq nat m n0)) in (let TMP_290 \def (le_plus_minus n m H) -in (let TMP_288 \def (minus m n) in (let TMP_289 \def (plus TMP_288 n) in -(let TMP_286 \def (minus m n) in (let TMP_287 \def (plus_sym TMP_286 n) in -(eq_ind_r nat TMP_293 TMP_291 TMP_290 TMP_289 TMP_287))))))))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_1 \def +(minus m n) in (let TMP_2 \def (plus n TMP_1) in (let TMP_3 \def (\lambda +(n0: nat).(eq nat m n0)) in (let TMP_4 \def (le_plus_minus n m H) in (let +TMP_5 \def (minus m n) in (let TMP_6 \def (plus TMP_5 n) in (let TMP_7 \def +(minus m n) in (let TMP_8 \def (plus_sym TMP_7 n) in (eq_ind_r nat TMP_2 +TMP_3 TMP_4 TMP_6 TMP_8))))))))))). theorem le_minus_minus: \forall (x: nat).(\forall (y: nat).((le x y) \to (\forall (z: nat).((le y z) \to (le (minus y x) (minus z x)))))) \def \lambda (x: nat).(\lambda (y: nat).(\lambda (H: (le x y)).(\lambda (z: -nat).(\lambda (H0: (le y z)).(let TMP_308 \def (minus y x) in (let TMP_307 -\def (minus z x) in (let TMP_305 \def (\lambda (n: nat).(let TMP_303 \def -(minus z x) in (let TMP_304 \def (plus x TMP_303) in (le n TMP_304)))) in -(let TMP_301 \def (\lambda (n: nat).(le y n)) in (let TMP_299 \def (minus z -x) in (let TMP_300 \def (plus x TMP_299) in (let TMP_297 \def (le_trans x y z -H H0) in (let TMP_298 \def (le_plus_minus_r x z TMP_297) in (let TMP_302 \def -(eq_ind_r nat z TMP_301 H0 TMP_300 TMP_298) in (let TMP_295 \def (minus y x) -in (let TMP_296 \def (plus x TMP_295) in (let TMP_294 \def (le_plus_minus_r x -y H) in (let TMP_306 \def (eq_ind_r nat y TMP_305 TMP_302 TMP_296 TMP_294) in -(simpl_le_plus_l x TMP_308 TMP_307 TMP_306)))))))))))))))))). +nat).(\lambda (H0: (le y z)).(let TMP_1 \def (minus y x) in (let TMP_2 \def +(minus z x) in (let TMP_5 \def (\lambda (n: nat).(let TMP_3 \def (minus z x) +in (let TMP_4 \def (plus x TMP_3) in (le n TMP_4)))) in (let TMP_6 \def +(\lambda (n: nat).(le y n)) in (let TMP_7 \def (minus z x) in (let TMP_8 \def +(plus x TMP_7) in (let TMP_9 \def (le_trans x y z H H0) in (let TMP_10 \def +(le_plus_minus_r x z TMP_9) in (let TMP_11 \def (eq_ind_r nat z TMP_6 H0 +TMP_8 TMP_10) in (let TMP_12 \def (minus y x) in (let TMP_13 \def (plus x +TMP_12) in (let TMP_14 \def (le_plus_minus_r x y H) in (let TMP_15 \def +(eq_ind_r nat y TMP_5 TMP_11 TMP_13 TMP_14) in (simpl_le_plus_l x TMP_1 TMP_2 +TMP_15)))))))))))))))))). theorem le_minus_plus: \forall (z: nat).(\forall (x: nat).((le z x) \to (\forall (y: nat).(eq nat (minus (plus x y) z) (plus (minus x z) y))))) \def - \lambda (z: nat).(let TMP_368 \def (\lambda (n: nat).(\forall (x: nat).((le -n x) \to (\forall (y: nat).(let TMP_366 \def (plus x y) in (let TMP_367 \def -(minus TMP_366 n) in (let TMP_364 \def (minus x n) in (let TMP_365 \def (plus -TMP_364 y) in (eq nat TMP_367 TMP_365))))))))) in (let TMP_363 \def (\lambda -(x: nat).(\lambda (H: (le O x)).(let H0 \def (match H in le with [le_n -\Rightarrow (\lambda (H0: (eq nat O x)).(let TMP_361 \def (\lambda (n: -nat).(\forall (y: nat).(let TMP_359 \def (plus n y) in (let TMP_360 \def -(minus TMP_359 O) in (let TMP_357 \def (minus n O) in (let TMP_358 \def (plus -TMP_357 y) in (eq nat TMP_360 TMP_358))))))) in (let TMP_356 \def (\lambda -(y: nat).(let TMP_354 \def (minus O O) in (let TMP_355 \def (plus TMP_354 y) -in (let TMP_352 \def (plus O y) in (let TMP_353 \def (minus TMP_352 O) in -(let TMP_350 \def (plus O y) in (let TMP_351 \def (minus_n_O TMP_350) in -(sym_eq nat TMP_355 TMP_353 TMP_351)))))))) in (eq_ind nat O TMP_361 TMP_356 -x H0)))) | (le_S m H0) \Rightarrow (\lambda (H1: (eq nat (S m) x)).(let -TMP_349 \def (S m) in (let TMP_348 \def (\lambda (n: nat).((le O m) \to -(\forall (y: nat).(let TMP_346 \def (plus n y) in (let TMP_347 \def (minus -TMP_346 O) in (let TMP_344 \def (minus n O) in (let TMP_345 \def (plus -TMP_344 y) in (eq nat TMP_347 TMP_345)))))))) in (let TMP_343 \def (\lambda -(_: (le O m)).(\lambda (y: nat).(let TMP_340 \def (S m) in (let TMP_341 \def -(minus TMP_340 O) in (let TMP_342 \def (plus TMP_341 y) in (refl_equal nat -TMP_342)))))) in (eq_ind nat TMP_349 TMP_348 TMP_343 x H1 H0)))))]) in (let -TMP_362 \def (refl_equal nat x) in (H0 TMP_362))))) in (let TMP_339 \def -(\lambda (z0: nat).(\lambda (H: ((\forall (x: nat).((le z0 x) \to (\forall -(y: nat).(eq nat (minus (plus x y) z0) (plus (minus x z0) y))))))).(\lambda -(x: nat).(let TMP_338 \def (\lambda (n: nat).((le (S z0) n) \to (\forall (y: -nat).(let TMP_336 \def (plus n y) in (let TMP_335 \def (S z0) in (let TMP_337 -\def (minus TMP_336 TMP_335) in (let TMP_332 \def (S z0) in (let TMP_333 \def -(minus n TMP_332) in (let TMP_334 \def (plus TMP_333 y) in (eq nat TMP_337 -TMP_334)))))))))) in (let TMP_331 \def (\lambda (H0: (le (S z0) O)).(\lambda -(y: nat).(let H1 \def (match H0 in le with [le_n \Rightarrow (\lambda (H1: -(eq nat (S z0) O)).(let TMP_322 \def (S z0) in (let TMP_321 \def (\lambda (e: -nat).(match e in nat with [O \Rightarrow False | (S _) \Rightarrow True])) in -(let H2 \def (eq_ind nat TMP_322 TMP_321 I O H1) in (let TMP_327 \def (plus O -y) in (let TMP_326 \def (S z0) in (let TMP_328 \def (minus TMP_327 TMP_326) -in (let TMP_323 \def (S z0) in (let TMP_324 \def (minus O TMP_323) in (let -TMP_325 \def (plus TMP_324 y) in (let TMP_329 \def (eq nat TMP_328 TMP_325) -in (False_ind TMP_329 H2)))))))))))) | (le_S m H1) \Rightarrow (\lambda (H2: -(eq nat (S m) O)).(let TMP_312 \def (S m) in (let TMP_311 \def (\lambda (e: -nat).(match e in nat with [O \Rightarrow False | (S _) \Rightarrow True])) in -(let H3 \def (eq_ind nat TMP_312 TMP_311 I O H2) in (let TMP_319 \def ((le (S -z0) m) \to (let TMP_317 \def (plus O y) in (let TMP_316 \def (S z0) in (let -TMP_318 \def (minus TMP_317 TMP_316) in (let TMP_313 \def (S z0) in (let -TMP_314 \def (minus O TMP_313) in (let TMP_315 \def (plus TMP_314 y) in (eq -nat TMP_318 TMP_315)))))))) in (let TMP_320 \def (False_ind TMP_319 H3) in -(TMP_320 H1)))))))]) in (let TMP_330 \def (refl_equal nat O) in (H1 -TMP_330))))) in (let TMP_310 \def (\lambda (n: nat).(\lambda (_: (((le (S z0) -n) \to (\forall (y: nat).(eq nat (minus (plus n y) (S z0)) (plus (minus n (S -z0)) y)))))).(\lambda (H1: (le (S z0) (S n))).(\lambda (y: nat).(let TMP_309 -\def (le_S_n z0 n H1) in (H n TMP_309 y)))))) in (nat_ind TMP_338 TMP_331 -TMP_310 x))))))) in (nat_ind TMP_368 TMP_363 TMP_339 z)))). + \lambda (z: nat).(let TMP_5 \def (\lambda (n: nat).(\forall (x: nat).((le n +x) \to (\forall (y: nat).(let TMP_1 \def (plus x y) in (let TMP_2 \def (minus +TMP_1 n) in (let TMP_3 \def (minus x n) in (let TMP_4 \def (plus TMP_3 y) in +(eq nat TMP_2 TMP_4))))))))) in (let TMP_29 \def (\lambda (x: nat).(\lambda +(H: (le O x)).(let H0 \def (match H with [le_n \Rightarrow (\lambda (H0: (eq +nat O x)).(let TMP_20 \def (\lambda (n: nat).(\forall (y: nat).(let TMP_16 +\def (plus n y) in (let TMP_17 \def (minus TMP_16 O) in (let TMP_18 \def +(minus n O) in (let TMP_19 \def (plus TMP_18 y) in (eq nat TMP_17 +TMP_19))))))) in (let TMP_27 \def (\lambda (y: nat).(let TMP_21 \def (minus O +O) in (let TMP_22 \def (plus TMP_21 y) in (let TMP_23 \def (plus O y) in (let +TMP_24 \def (minus TMP_23 O) in (let TMP_25 \def (plus O y) in (let TMP_26 +\def (minus_n_O TMP_25) in (sym_eq nat TMP_22 TMP_24 TMP_26)))))))) in +(eq_ind nat O TMP_20 TMP_27 x H0)))) | (le_S m H0) \Rightarrow (\lambda (H1: +(eq nat (S m) x)).(let TMP_6 \def (S m) in (let TMP_11 \def (\lambda (n: +nat).((le O m) \to (\forall (y: nat).(let TMP_7 \def (plus n y) in (let TMP_8 +\def (minus TMP_7 O) in (let TMP_9 \def (minus n O) in (let TMP_10 \def (plus +TMP_9 y) in (eq nat TMP_8 TMP_10)))))))) in (let TMP_15 \def (\lambda (_: (le +O m)).(\lambda (y: nat).(let TMP_12 \def (S m) in (let TMP_13 \def (minus +TMP_12 O) in (let TMP_14 \def (plus TMP_13 y) in (refl_equal nat TMP_14)))))) +in (eq_ind nat TMP_6 TMP_11 TMP_15 x H1 H0)))))]) in (let TMP_28 \def +(refl_equal nat x) in (H0 TMP_28))))) in (let TMP_60 \def (\lambda (z0: +nat).(\lambda (H: ((\forall (x: nat).((le z0 x) \to (\forall (y: nat).(eq nat +(minus (plus x y) z0) (plus (minus x z0) y))))))).(\lambda (x: nat).(let +TMP_36 \def (\lambda (n: nat).((le (S z0) n) \to (\forall (y: nat).(let +TMP_30 \def (plus n y) in (let TMP_31 \def (S z0) in (let TMP_32 \def (minus +TMP_30 TMP_31) in (let TMP_33 \def (S z0) in (let TMP_34 \def (minus n +TMP_33) in (let TMP_35 \def (plus TMP_34 y) in (eq nat TMP_32 +TMP_35)))))))))) in (let TMP_57 \def (\lambda (H0: (le (S z0) O)).(\lambda +(y: nat).(let H1 \def (match H0 with [le_n \Rightarrow (\lambda (H1: (eq nat +(S z0) O)).(let TMP_47 \def (S z0) in (let TMP_48 \def (\lambda (e: +nat).(match e with [O \Rightarrow False | (S _) \Rightarrow True])) in (let +H2 \def (eq_ind nat TMP_47 TMP_48 I O H1) in (let TMP_49 \def (plus O y) in +(let TMP_50 \def (S z0) in (let TMP_51 \def (minus TMP_49 TMP_50) in (let +TMP_52 \def (S z0) in (let TMP_53 \def (minus O TMP_52) in (let TMP_54 \def +(plus TMP_53 y) in (let TMP_55 \def (eq nat TMP_51 TMP_54) in (False_ind +TMP_55 H2)))))))))))) | (le_S m H1) \Rightarrow (\lambda (H2: (eq nat (S m) +O)).(let TMP_37 \def (S m) in (let TMP_38 \def (\lambda (e: nat).(match e +with [O \Rightarrow False | (S _) \Rightarrow True])) in (let H3 \def (eq_ind +nat TMP_37 TMP_38 I O H2) in (let TMP_45 \def ((le (S z0) m) \to (let TMP_39 +\def (plus O y) in (let TMP_40 \def (S z0) in (let TMP_41 \def (minus TMP_39 +TMP_40) in (let TMP_42 \def (S z0) in (let TMP_43 \def (minus O TMP_42) in +(let TMP_44 \def (plus TMP_43 y) in (eq nat TMP_41 TMP_44)))))))) in (let +TMP_46 \def (False_ind TMP_45 H3) in (TMP_46 H1)))))))]) in (let TMP_56 \def +(refl_equal nat O) in (H1 TMP_56))))) in (let TMP_59 \def (\lambda (n: +nat).(\lambda (_: (((le (S z0) n) \to (\forall (y: nat).(eq nat (minus (plus +n y) (S z0)) (plus (minus n (S z0)) y)))))).(\lambda (H1: (le (S z0) (S +n))).(\lambda (y: nat).(let TMP_58 \def (le_S_n z0 n H1) in (H n TMP_58 +y)))))) in (nat_ind TMP_36 TMP_57 TMP_59 x))))))) in (nat_ind TMP_5 TMP_29 +TMP_60 z)))). theorem le_minus: \forall (x: nat).(\forall (z: nat).(\forall (y: nat).((le (plus x y) z) \to (le x (minus z y))))) \def \lambda (x: nat).(\lambda (z: nat).(\lambda (y: nat).(\lambda (H: (le (plus -x y) z)).(let TMP_375 \def (plus x y) in (let TMP_376 \def (minus TMP_375 y) -in (let TMP_374 \def (\lambda (n: nat).(let TMP_373 \def (minus z y) in (le n -TMP_373))) in (let TMP_371 \def (plus x y) in (let TMP_370 \def (le_plus_r x -y) in (let TMP_372 \def (le_minus_minus y TMP_371 TMP_370 z H) in (let -TMP_369 \def (minus_plus_r x y) in (eq_ind nat TMP_376 TMP_374 TMP_372 x -TMP_369))))))))))). +x y) z)).(let TMP_1 \def (plus x y) in (let TMP_2 \def (minus TMP_1 y) in +(let TMP_4 \def (\lambda (n: nat).(let TMP_3 \def (minus z y) in (le n +TMP_3))) in (let TMP_5 \def (plus x y) in (let TMP_6 \def (le_plus_r x y) in +(let TMP_7 \def (le_minus_minus y TMP_5 TMP_6 z H) in (let TMP_8 \def +(minus_plus_r x y) in (eq_ind nat TMP_2 TMP_4 TMP_7 x TMP_8))))))))))). theorem le_trans_plus_r: \forall (x: nat).(\forall (y: nat).(\forall (z: nat).((le (plus x y) z) \to (le y z)))) \def \lambda (x: nat).(\lambda (y: nat).(\lambda (z: nat).(\lambda (H: (le (plus -x y) z)).(let TMP_378 \def (plus x y) in (let TMP_377 \def (le_plus_r x y) in -(le_trans y TMP_378 z TMP_377 H)))))). +x y) z)).(let TMP_1 \def (plus x y) in (let TMP_2 \def (le_plus_r x y) in +(le_trans y TMP_1 z TMP_2 H)))))). theorem lt_x_O: \forall (x: nat).((lt x O) \to (\forall (P: Prop).P)) \def - \lambda (x: nat).(\lambda (H: (le (S x) O)).(\lambda (P: Prop).(let TMP_379 -\def (S x) in (let H_y \def (le_n_O_eq TMP_379 H) in (let TMP_381 \def -(\lambda (ee: nat).(match ee in nat with [O \Rightarrow True | (S _) -\Rightarrow False])) in (let TMP_380 \def (S x) in (let H0 \def (eq_ind nat O -TMP_381 I TMP_380 H_y) in (False_ind P H0)))))))). + \lambda (x: nat).(\lambda (H: (le (S x) O)).(\lambda (P: Prop).(let TMP_1 +\def (S x) in (let H_y \def (le_n_O_eq TMP_1 H) in (let TMP_2 \def (\lambda +(ee: nat).(match ee with [O \Rightarrow True | (S _) \Rightarrow False])) in +(let TMP_3 \def (S x) in (let H0 \def (eq_ind nat O TMP_2 I TMP_3 H_y) in +(False_ind P H0)))))))). theorem le_gen_S: \forall (m: nat).(\forall (x: nat).((le (S m) x) \to (ex2 nat (\lambda (n: nat).(eq nat x (S n))) (\lambda (n: nat).(le m n))))) \def \lambda (m: nat).(\lambda (x: nat).(\lambda (H: (le (S m) x)).(let H0 \def -(match H in le with [le_n \Rightarrow (\lambda (H0: (eq nat (S m) x)).(let -TMP_409 \def (S m) in (let TMP_408 \def (\lambda (n: nat).(let TMP_407 \def -(\lambda (n0: nat).(let TMP_406 \def (S n0) in (eq nat n TMP_406))) in (let -TMP_405 \def (\lambda (n0: nat).(le m n0)) in (ex2 nat TMP_407 TMP_405)))) in -(let TMP_403 \def (\lambda (n: nat).(let TMP_402 \def (S m) in (let TMP_401 -\def (S n) in (eq nat TMP_402 TMP_401)))) in (let TMP_400 \def (\lambda (n: -nat).(le m n)) in (let TMP_398 \def (S m) in (let TMP_399 \def (refl_equal -nat TMP_398) in (let TMP_397 \def (le_n m) in (let TMP_404 \def (ex_intro2 -nat TMP_403 TMP_400 m TMP_399 TMP_397) in (eq_ind nat TMP_409 TMP_408 TMP_404 -x H0)))))))))) | (le_S m0 H0) \Rightarrow (\lambda (H1: (eq nat (S m0) -x)).(let TMP_396 \def (S m0) in (let TMP_395 \def (\lambda (n: nat).((le (S -m) m0) \to (let TMP_394 \def (\lambda (n0: nat).(let TMP_393 \def (S n0) in -(eq nat n TMP_393))) in (let TMP_392 \def (\lambda (n0: nat).(le m n0)) in -(ex2 nat TMP_394 TMP_392))))) in (let TMP_391 \def (\lambda (H2: (le (S m) -m0)).(let TMP_390 \def (\lambda (n: nat).(let TMP_389 \def (S m0) in (let -TMP_388 \def (S n) in (eq nat TMP_389 TMP_388)))) in (let TMP_387 \def -(\lambda (n: nat).(le m n)) in (let TMP_385 \def (S m0) in (let TMP_386 \def -(refl_equal nat TMP_385) in (let TMP_382 \def (S m) in (let TMP_383 \def -(le_S TMP_382 m0 H2) in (let TMP_384 \def (le_S_n m m0 TMP_383) in (ex_intro2 -nat TMP_390 TMP_387 m0 TMP_386 TMP_384))))))))) in (eq_ind nat TMP_396 -TMP_395 TMP_391 x H1 H0)))))]) in (let TMP_410 \def (refl_equal nat x) in (H0 -TMP_410))))). +(match H with [le_n \Rightarrow (\lambda (H0: (eq nat (S m) x)).(let TMP_16 +\def (S m) in (let TMP_20 \def (\lambda (n: nat).(let TMP_18 \def (\lambda +(n0: nat).(let TMP_17 \def (S n0) in (eq nat n TMP_17))) in (let TMP_19 \def +(\lambda (n0: nat).(le m n0)) in (ex2 nat TMP_18 TMP_19)))) in (let TMP_23 +\def (\lambda (n: nat).(let TMP_21 \def (S m) in (let TMP_22 \def (S n) in +(eq nat TMP_21 TMP_22)))) in (let TMP_24 \def (\lambda (n: nat).(le m n)) in +(let TMP_25 \def (S m) in (let TMP_26 \def (refl_equal nat TMP_25) in (let +TMP_27 \def (le_n m) in (let TMP_28 \def (ex_intro2 nat TMP_23 TMP_24 m +TMP_26 TMP_27) in (eq_ind nat TMP_16 TMP_20 TMP_28 x H0)))))))))) | (le_S m0 +H0) \Rightarrow (\lambda (H1: (eq nat (S m0) x)).(let TMP_1 \def (S m0) in +(let TMP_5 \def (\lambda (n: nat).((le (S m) m0) \to (let TMP_3 \def (\lambda +(n0: nat).(let TMP_2 \def (S n0) in (eq nat n TMP_2))) in (let TMP_4 \def +(\lambda (n0: nat).(le m n0)) in (ex2 nat TMP_3 TMP_4))))) in (let TMP_15 +\def (\lambda (H2: (le (S m) m0)).(let TMP_8 \def (\lambda (n: nat).(let +TMP_6 \def (S m0) in (let TMP_7 \def (S n) in (eq nat TMP_6 TMP_7)))) in (let +TMP_9 \def (\lambda (n: nat).(le m n)) in (let TMP_10 \def (S m0) in (let +TMP_11 \def (refl_equal nat TMP_10) in (let TMP_12 \def (S m) in (let TMP_13 +\def (le_S TMP_12 m0 H2) in (let TMP_14 \def (le_S_n m m0 TMP_13) in +(ex_intro2 nat TMP_8 TMP_9 m0 TMP_11 TMP_14))))))))) in (eq_ind nat TMP_1 +TMP_5 TMP_15 x H1 H0)))))]) in (let TMP_29 \def (refl_equal nat x) in (H0 +TMP_29))))). theorem lt_x_plus_x_Sy: \forall (x: nat).(\forall (y: nat).(lt x (plus x (S y)))) \def - \lambda (x: nat).(\lambda (y: nat).(let TMP_427 \def (S y) in (let TMP_428 -\def (plus TMP_427 x) in (let TMP_426 \def (\lambda (n: nat).(lt x n)) in -(let TMP_424 \def (S x) in (let TMP_422 \def (plus y x) in (let TMP_423 \def -(S TMP_422) in (let TMP_420 \def (S x) in (let TMP_418 \def (plus y x) in -(let TMP_419 \def (S TMP_418) in (let TMP_416 \def (plus y x) in (let TMP_415 -\def (le_plus_r y x) in (let TMP_417 \def (le_n_S x TMP_416 TMP_415) in (let -TMP_421 \def (le_n_S TMP_420 TMP_419 TMP_417) in (let TMP_425 \def (le_S_n -TMP_424 TMP_423 TMP_421) in (let TMP_413 \def (S y) in (let TMP_414 \def -(plus x TMP_413) in (let TMP_411 \def (S y) in (let TMP_412 \def (plus_sym x -TMP_411) in (eq_ind_r nat TMP_428 TMP_426 TMP_425 TMP_414 -TMP_412)))))))))))))))))))). + \lambda (x: nat).(\lambda (y: nat).(let TMP_1 \def (S y) in (let TMP_2 \def +(plus TMP_1 x) in (let TMP_3 \def (\lambda (n: nat).(lt x n)) in (let TMP_4 +\def (S x) in (let TMP_5 \def (plus y x) in (let TMP_6 \def (S TMP_5) in (let +TMP_7 \def (S x) in (let TMP_8 \def (plus y x) in (let TMP_9 \def (S TMP_8) +in (let TMP_10 \def (plus y x) in (let TMP_11 \def (le_plus_r y x) in (let +TMP_12 \def (le_n_S x TMP_10 TMP_11) in (let TMP_13 \def (le_n_S TMP_7 TMP_9 +TMP_12) in (let TMP_14 \def (le_S_n TMP_4 TMP_6 TMP_13) in (let TMP_15 \def +(S y) in (let TMP_16 \def (plus x TMP_15) in (let TMP_17 \def (S y) in (let +TMP_18 \def (plus_sym x TMP_17) in (eq_ind_r nat TMP_2 TMP_3 TMP_14 TMP_16 +TMP_18)))))))))))))))))))). theorem simpl_lt_plus_r: \forall (p: nat).(\forall (n: nat).(\forall (m: nat).((lt (plus n p) (plus m p)) \to (lt n m)))) \def \lambda (p: nat).(\lambda (n: nat).(\lambda (m: nat).(\lambda (H: (lt (plus -n p) (plus m p))).(let TMP_433 \def (plus n p) in (let TMP_432 \def (\lambda -(n0: nat).(let TMP_431 \def (plus m p) in (lt n0 TMP_431))) in (let TMP_430 -\def (plus p n) in (let TMP_429 \def (plus_sym n p) in (let H0 \def (eq_ind -nat TMP_433 TMP_432 H TMP_430 TMP_429) in (let TMP_438 \def (plus m p) in -(let TMP_437 \def (\lambda (n0: nat).(let TMP_436 \def (plus p n) in (lt -TMP_436 n0))) in (let TMP_435 \def (plus p m) in (let TMP_434 \def (plus_sym -m p) in (let H1 \def (eq_ind nat TMP_438 TMP_437 H0 TMP_435 TMP_434) in -(simpl_lt_plus_l n m p H1)))))))))))))). +n p) (plus m p))).(let TMP_1 \def (plus n p) in (let TMP_3 \def (\lambda (n0: +nat).(let TMP_2 \def (plus m p) in (lt n0 TMP_2))) in (let TMP_4 \def (plus p +n) in (let TMP_5 \def (plus_sym n p) in (let H0 \def (eq_ind nat TMP_1 TMP_3 +H TMP_4 TMP_5) in (let TMP_6 \def (plus m p) in (let TMP_8 \def (\lambda (n0: +nat).(let TMP_7 \def (plus p n) in (lt TMP_7 n0))) in (let TMP_9 \def (plus p +m) in (let TMP_10 \def (plus_sym m p) in (let H1 \def (eq_ind nat TMP_6 TMP_8 +H0 TMP_9 TMP_10) in (simpl_lt_plus_l n m p H1)))))))))))))). theorem minus_x_Sy: \forall (x: nat).(\forall (y: nat).((lt y x) \to (eq nat (minus x y) (S (minus x (S y)))))) \def - \lambda (x: nat).(let TMP_478 \def (\lambda (n: nat).(\forall (y: nat).((lt -y n) \to (let TMP_477 \def (minus n y) in (let TMP_474 \def (S y) in (let -TMP_475 \def (minus n TMP_474) in (let TMP_476 \def (S TMP_475) in (eq nat -TMP_477 TMP_476)))))))) in (let TMP_473 \def (\lambda (y: nat).(\lambda (H: -(lt y O)).(let H0 \def (match H in le with [le_n \Rightarrow (\lambda (H0: -(eq nat (S y) O)).(let TMP_466 \def (S y) in (let TMP_465 \def (\lambda (e: -nat).(match e in nat with [O \Rightarrow False | (S _) \Rightarrow True])) in -(let H1 \def (eq_ind nat TMP_466 TMP_465 I O H0) in (let TMP_470 \def (minus -O y) in (let TMP_467 \def (S y) in (let TMP_468 \def (minus O TMP_467) in -(let TMP_469 \def (S TMP_468) in (let TMP_471 \def (eq nat TMP_470 TMP_469) -in (False_ind TMP_471 H1)))))))))) | (le_S m H0) \Rightarrow (\lambda (H1: -(eq nat (S m) O)).(let TMP_458 \def (S m) in (let TMP_457 \def (\lambda (e: -nat).(match e in nat with [O \Rightarrow False | (S _) \Rightarrow True])) in -(let H2 \def (eq_ind nat TMP_458 TMP_457 I O H1) in (let TMP_463 \def ((le (S -y) m) \to (let TMP_462 \def (minus O y) in (let TMP_459 \def (S y) in (let -TMP_460 \def (minus O TMP_459) in (let TMP_461 \def (S TMP_460) in (eq nat -TMP_462 TMP_461)))))) in (let TMP_464 \def (False_ind TMP_463 H2) in (TMP_464 -H0)))))))]) in (let TMP_472 \def (refl_equal nat O) in (H0 TMP_472))))) in -(let TMP_456 \def (\lambda (n: nat).(\lambda (H: ((\forall (y: nat).((lt y n) -\to (eq nat (minus n y) (S (minus n (S y)))))))).(\lambda (y: nat).(let -TMP_455 \def (\lambda (n0: nat).((lt n0 (S n)) \to (let TMP_453 \def (S n) in -(let TMP_454 \def (minus TMP_453 n0) in (let TMP_450 \def (S n) in (let -TMP_449 \def (S n0) in (let TMP_451 \def (minus TMP_450 TMP_449) in (let -TMP_452 \def (S TMP_451) in (eq nat TMP_454 TMP_452))))))))) in (let TMP_448 -\def (\lambda (_: (lt O (S n))).(let TMP_447 \def (\lambda (n0: nat).(let -TMP_446 \def (S n) in (let TMP_445 \def (S n0) in (eq nat TMP_446 TMP_445)))) -in (let TMP_443 \def (S n) in (let TMP_444 \def (refl_equal nat TMP_443) in -(let TMP_442 \def (minus n O) in (let TMP_441 \def (minus_n_O n) in (eq_ind -nat n TMP_447 TMP_444 TMP_442 TMP_441))))))) in (let TMP_440 \def (\lambda -(n0: nat).(\lambda (_: (((lt n0 (S n)) \to (eq nat (minus (S n) n0) (S (minus -(S n) (S n0))))))).(\lambda (H1: (lt (S n0) (S n))).(let TMP_439 \def (S n0) -in (let H2 \def (le_S_n TMP_439 n H1) in (H n0 H2)))))) in (nat_ind TMP_455 -TMP_448 TMP_440 y))))))) in (nat_ind TMP_478 TMP_473 TMP_456 x)))). + \lambda (x: nat).(let TMP_5 \def (\lambda (n: nat).(\forall (y: nat).((lt y +n) \to (let TMP_1 \def (minus n y) in (let TMP_2 \def (S y) in (let TMP_3 +\def (minus n TMP_2) in (let TMP_4 \def (S TMP_3) in (eq nat TMP_1 +TMP_4)))))))) in (let TMP_22 \def (\lambda (y: nat).(\lambda (H: (lt y +O)).(let H0 \def (match H with [le_n \Rightarrow (\lambda (H0: (eq nat (S y) +O)).(let TMP_14 \def (S y) in (let TMP_15 \def (\lambda (e: nat).(match e +with [O \Rightarrow False | (S _) \Rightarrow True])) in (let H1 \def (eq_ind +nat TMP_14 TMP_15 I O H0) in (let TMP_16 \def (minus O y) in (let TMP_17 \def +(S y) in (let TMP_18 \def (minus O TMP_17) in (let TMP_19 \def (S TMP_18) in +(let TMP_20 \def (eq nat TMP_16 TMP_19) in (False_ind TMP_20 H1)))))))))) | +(le_S m H0) \Rightarrow (\lambda (H1: (eq nat (S m) O)).(let TMP_6 \def (S m) +in (let TMP_7 \def (\lambda (e: nat).(match e with [O \Rightarrow False | (S +_) \Rightarrow True])) in (let H2 \def (eq_ind nat TMP_6 TMP_7 I O H1) in +(let TMP_12 \def ((le (S y) m) \to (let TMP_8 \def (minus O y) in (let TMP_9 +\def (S y) in (let TMP_10 \def (minus O TMP_9) in (let TMP_11 \def (S TMP_10) +in (eq nat TMP_8 TMP_11)))))) in (let TMP_13 \def (False_ind TMP_12 H2) in +(TMP_13 H0)))))))]) in (let TMP_21 \def (refl_equal nat O) in (H0 TMP_21))))) +in (let TMP_40 \def (\lambda (n: nat).(\lambda (H: ((\forall (y: nat).((lt y +n) \to (eq nat (minus n y) (S (minus n (S y)))))))).(\lambda (y: nat).(let +TMP_29 \def (\lambda (n0: nat).((lt n0 (S n)) \to (let TMP_23 \def (S n) in +(let TMP_24 \def (minus TMP_23 n0) in (let TMP_25 \def (S n) in (let TMP_26 +\def (S n0) in (let TMP_27 \def (minus TMP_25 TMP_26) in (let TMP_28 \def (S +TMP_27) in (eq nat TMP_24 TMP_28))))))))) in (let TMP_37 \def (\lambda (_: +(lt O (S n))).(let TMP_32 \def (\lambda (n0: nat).(let TMP_30 \def (S n) in +(let TMP_31 \def (S n0) in (eq nat TMP_30 TMP_31)))) in (let TMP_33 \def (S +n) in (let TMP_34 \def (refl_equal nat TMP_33) in (let TMP_35 \def (minus n +O) in (let TMP_36 \def (minus_n_O n) in (eq_ind nat n TMP_32 TMP_34 TMP_35 +TMP_36))))))) in (let TMP_39 \def (\lambda (n0: nat).(\lambda (_: (((lt n0 (S +n)) \to (eq nat (minus (S n) n0) (S (minus (S n) (S n0))))))).(\lambda (H1: +(lt (S n0) (S n))).(let TMP_38 \def (S n0) in (let H2 \def (le_S_n TMP_38 n +H1) in (H n0 H2)))))) in (nat_ind TMP_29 TMP_37 TMP_39 y))))))) in (nat_ind +TMP_5 TMP_22 TMP_40 x)))). theorem lt_plus_minus: \forall (x: nat).(\forall (y: nat).((lt x y) \to (eq nat y (S (plus x (minus y (S x))))))) \def - \lambda (x: nat).(\lambda (y: nat).(\lambda (H: (lt x y)).(let TMP_479 \def -(S x) in (le_plus_minus TMP_479 y H)))). + \lambda (x: nat).(\lambda (y: nat).(\lambda (H: (lt x y)).(let TMP_1 \def (S +x) in (le_plus_minus TMP_1 y H)))). theorem lt_plus_minus_r: \forall (x: nat).(\forall (y: nat).((lt x y) \to (eq nat y (S (plus (minus y (S x)) x))))) \def - \lambda (x: nat).(\lambda (y: nat).(\lambda (H: (lt x y)).(let TMP_489 \def -(S x) in (let TMP_490 \def (minus y TMP_489) in (let TMP_491 \def (plus x -TMP_490) in (let TMP_488 \def (\lambda (n: nat).(let TMP_487 \def (S n) in -(eq nat y TMP_487))) in (let TMP_486 \def (lt_plus_minus x y H) in (let -TMP_483 \def (S x) in (let TMP_484 \def (minus y TMP_483) in (let TMP_485 -\def (plus TMP_484 x) in (let TMP_480 \def (S x) in (let TMP_481 \def (minus -y TMP_480) in (let TMP_482 \def (plus_sym TMP_481 x) in (eq_ind_r nat TMP_491 -TMP_488 TMP_486 TMP_485 TMP_482)))))))))))))). + \lambda (x: nat).(\lambda (y: nat).(\lambda (H: (lt x y)).(let TMP_1 \def (S +x) in (let TMP_2 \def (minus y TMP_1) in (let TMP_3 \def (plus x TMP_2) in +(let TMP_5 \def (\lambda (n: nat).(let TMP_4 \def (S n) in (eq nat y TMP_4))) +in (let TMP_6 \def (lt_plus_minus x y H) in (let TMP_7 \def (S x) in (let +TMP_8 \def (minus y TMP_7) in (let TMP_9 \def (plus TMP_8 x) in (let TMP_10 +\def (S x) in (let TMP_11 \def (minus y TMP_10) in (let TMP_12 \def (plus_sym +TMP_11 x) in (eq_ind_r nat TMP_3 TMP_5 TMP_6 TMP_9 TMP_12)))))))))))))). theorem minus_x_SO: \forall (x: nat).((lt O x) \to (eq nat x (S (minus x (S O))))) \def - \lambda (x: nat).(\lambda (H: (lt O x)).(let TMP_502 \def (minus x O) in -(let TMP_501 \def (\lambda (n: nat).(eq nat x n)) in (let TMP_499 \def -(\lambda (n: nat).(eq nat x n)) in (let TMP_498 \def (refl_equal nat x) in -(let TMP_497 \def (minus x O) in (let TMP_496 \def (minus_n_O x) in (let -TMP_500 \def (eq_ind nat x TMP_499 TMP_498 TMP_497 TMP_496) in (let TMP_493 -\def (S O) in (let TMP_494 \def (minus x TMP_493) in (let TMP_495 \def (S -TMP_494) in (let TMP_492 \def (minus_x_Sy x O H) in (eq_ind nat TMP_502 -TMP_501 TMP_500 TMP_495 TMP_492))))))))))))). + \lambda (x: nat).(\lambda (H: (lt O x)).(let TMP_1 \def (minus x O) in (let +TMP_2 \def (\lambda (n: nat).(eq nat x n)) in (let TMP_3 \def (\lambda (n: +nat).(eq nat x n)) in (let TMP_4 \def (refl_equal nat x) in (let TMP_5 \def +(minus x O) in (let TMP_6 \def (minus_n_O x) in (let TMP_7 \def (eq_ind nat x +TMP_3 TMP_4 TMP_5 TMP_6) in (let TMP_8 \def (S O) in (let TMP_9 \def (minus x +TMP_8) in (let TMP_10 \def (S TMP_9) in (let TMP_11 \def (minus_x_Sy x O H) +in (eq_ind nat TMP_1 TMP_2 TMP_7 TMP_10 TMP_11))))))))))))). theorem le_x_pred_y: \forall (y: nat).(\forall (x: nat).((lt x y) \to (le x (pred y)))) \def - \lambda (y: nat).(let TMP_514 \def (\lambda (n: nat).(\forall (x: nat).((lt -x n) \to (let TMP_513 \def (pred n) in (le x TMP_513))))) in (let TMP_512 -\def (\lambda (x: nat).(\lambda (H: (lt x O)).(let H0 \def (match H in le -with [le_n \Rightarrow (\lambda (H0: (eq nat (S x) O)).(let TMP_509 \def (S -x) in (let TMP_508 \def (\lambda (e: nat).(match e in nat with [O \Rightarrow -False | (S _) \Rightarrow True])) in (let H1 \def (eq_ind nat TMP_509 TMP_508 -I O H0) in (let TMP_510 \def (le x O) in (False_ind TMP_510 H1)))))) | (le_S -m H0) \Rightarrow (\lambda (H1: (eq nat (S m) O)).(let TMP_505 \def (S m) in -(let TMP_504 \def (\lambda (e: nat).(match e in nat with [O \Rightarrow False -| (S _) \Rightarrow True])) in (let H2 \def (eq_ind nat TMP_505 TMP_504 I O -H1) in (let TMP_506 \def ((le (S x) m) \to (le x O)) in (let TMP_507 \def -(False_ind TMP_506 H2) in (TMP_507 H0)))))))]) in (let TMP_511 \def -(refl_equal nat O) in (H0 TMP_511))))) in (let TMP_503 \def (\lambda (n: -nat).(\lambda (_: ((\forall (x: nat).((lt x n) \to (le x (pred -n)))))).(\lambda (x: nat).(\lambda (H0: (lt x (S n))).(le_S_n x n H0))))) in -(nat_ind TMP_514 TMP_512 TMP_503 y)))). + \lambda (y: nat).(let TMP_2 \def (\lambda (n: nat).(\forall (x: nat).((lt x +n) \to (let TMP_1 \def (pred n) in (le x TMP_1))))) in (let TMP_11 \def +(\lambda (x: nat).(\lambda (H: (lt x O)).(let H0 \def (match H with [le_n +\Rightarrow (\lambda (H0: (eq nat (S x) O)).(let TMP_7 \def (S x) in (let +TMP_8 \def (\lambda (e: nat).(match e with [O \Rightarrow False | (S _) +\Rightarrow True])) in (let H1 \def (eq_ind nat TMP_7 TMP_8 I O H0) in (let +TMP_9 \def (le x O) in (False_ind TMP_9 H1)))))) | (le_S m H0) \Rightarrow +(\lambda (H1: (eq nat (S m) O)).(let TMP_3 \def (S m) in (let TMP_4 \def +(\lambda (e: nat).(match e with [O \Rightarrow False | (S _) \Rightarrow +True])) in (let H2 \def (eq_ind nat TMP_3 TMP_4 I O H1) in (let TMP_5 \def +((le (S x) m) \to (le x O)) in (let TMP_6 \def (False_ind TMP_5 H2) in (TMP_6 +H0)))))))]) in (let TMP_10 \def (refl_equal nat O) in (H0 TMP_10))))) in (let +TMP_12 \def (\lambda (n: nat).(\lambda (_: ((\forall (x: nat).((lt x n) \to +(le x (pred n)))))).(\lambda (x: nat).(\lambda (H0: (lt x (S n))).(le_S_n x n +H0))))) in (nat_ind TMP_2 TMP_11 TMP_12 y)))). theorem lt_le_minus: \forall (x: nat).(\forall (y: nat).((lt x y) \to (le x (minus y (S O))))) \def - \lambda (x: nat).(\lambda (y: nat).(\lambda (H: (lt x y)).(let TMP_523 \def -(S O) in (let TMP_520 \def (S O) in (let TMP_521 \def (plus TMP_520 x) in -(let TMP_519 \def (\lambda (n: nat).(le n y)) in (let TMP_517 \def (S O) in -(let TMP_518 \def (plus x TMP_517) in (let TMP_515 \def (S O) in (let TMP_516 -\def (plus_sym x TMP_515) in (let TMP_522 \def (eq_ind_r nat TMP_521 TMP_519 -H TMP_518 TMP_516) in (le_minus x y TMP_523 TMP_522)))))))))))). + \lambda (x: nat).(\lambda (y: nat).(\lambda (H: (lt x y)).(let TMP_1 \def (S +O) in (let TMP_2 \def (S O) in (let TMP_3 \def (plus TMP_2 x) in (let TMP_4 +\def (\lambda (n: nat).(le n y)) in (let TMP_5 \def (S O) in (let TMP_6 \def +(plus x TMP_5) in (let TMP_7 \def (S O) in (let TMP_8 \def (plus_sym x TMP_7) +in (let TMP_9 \def (eq_ind_r nat TMP_3 TMP_4 H TMP_6 TMP_8) in (le_minus x y +TMP_1 TMP_9)))))))))))). theorem lt_le_e: \forall (n: nat).(\forall (d: nat).(\forall (P: Prop).((((lt n d) \to P)) @@ -582,8 +563,8 @@ theorem lt_le_e: \def \lambda (n: nat).(\lambda (d: nat).(\lambda (P: Prop).(\lambda (H: (((lt n d) \to P))).(\lambda (H0: (((le d n) \to P))).(let H1 \def (le_or_lt d n) in -(let TMP_525 \def (le d n) in (let TMP_524 \def (lt n d) in (or_ind TMP_525 -TMP_524 P H0 H H1)))))))). +(let TMP_1 \def (le d n) in (let TMP_2 \def (lt n d) in (or_ind TMP_1 TMP_2 P +H0 H H1)))))))). theorem lt_eq_e: \forall (x: nat).(\forall (y: nat).(\forall (P: Prop).((((lt x y) \to P)) @@ -591,9 +572,8 @@ theorem lt_eq_e: \def \lambda (x: nat).(\lambda (y: nat).(\lambda (P: Prop).(\lambda (H: (((lt x y) \to P))).(\lambda (H0: (((eq nat x y) \to P))).(\lambda (H1: (le x -y)).(let TMP_528 \def (lt x y) in (let TMP_527 \def (eq nat x y) in (let -TMP_526 \def (le_lt_or_eq x y H1) in (or_ind TMP_528 TMP_527 P H H0 -TMP_526))))))))). +y)).(let TMP_1 \def (lt x y) in (let TMP_2 \def (eq nat x y) in (let TMP_3 +\def (le_lt_or_eq x y H1) in (or_ind TMP_1 TMP_2 P H H0 TMP_3))))))))). theorem lt_eq_gt_e: \forall (x: nat).(\forall (y: nat).(\forall (P: Prop).((((lt x y) \to P)) @@ -601,298 +581,289 @@ theorem lt_eq_gt_e: \def \lambda (x: nat).(\lambda (y: nat).(\lambda (P: Prop).(\lambda (H: (((lt x y) \to P))).(\lambda (H0: (((eq nat x y) \to P))).(\lambda (H1: (((lt y x) -\to P))).(let TMP_531 \def (\lambda (H2: (le y x)).(let TMP_530 \def (\lambda -(H3: (eq nat y x)).(let TMP_529 \def (sym_eq nat y x H3) in (H0 TMP_529))) in -(lt_eq_e y x P H1 TMP_530 H2))) in (lt_le_e x y P H TMP_531))))))). +\to P))).(let TMP_3 \def (\lambda (H2: (le y x)).(let TMP_2 \def (\lambda +(H3: (eq nat y x)).(let TMP_1 \def (sym_eq nat y x H3) in (H0 TMP_1))) in +(lt_eq_e y x P H1 TMP_2 H2))) in (lt_le_e x y P H TMP_3))))))). theorem lt_gen_xS: \forall (x: nat).(\forall (n: nat).((lt x (S n)) \to (or (eq nat x O) (ex2 nat (\lambda (m: nat).(eq nat x (S m))) (\lambda (m: nat).(lt m n)))))) \def - \lambda (x: nat).(let TMP_561 \def (\lambda (n: nat).(\forall (n0: nat).((lt -n (S n0)) \to (let TMP_560 \def (eq nat n O) in (let TMP_558 \def (\lambda -(m: nat).(let TMP_557 \def (S m) in (eq nat n TMP_557))) in (let TMP_556 \def -(\lambda (m: nat).(lt m n0)) in (let TMP_559 \def (ex2 nat TMP_558 TMP_556) -in (or TMP_560 TMP_559)))))))) in (let TMP_555 \def (\lambda (n: -nat).(\lambda (_: (lt O (S n))).(let TMP_554 \def (eq nat O O) in (let -TMP_552 \def (\lambda (m: nat).(let TMP_551 \def (S m) in (eq nat O -TMP_551))) in (let TMP_550 \def (\lambda (m: nat).(lt m n)) in (let TMP_553 -\def (ex2 nat TMP_552 TMP_550) in (let TMP_549 \def (refl_equal nat O) in -(or_introl TMP_554 TMP_553 TMP_549)))))))) in (let TMP_548 \def (\lambda (n: -nat).(\lambda (_: ((\forall (n0: nat).((lt n (S n0)) \to (or (eq nat n O) -(ex2 nat (\lambda (m: nat).(eq nat n (S m))) (\lambda (m: nat).(lt m -n0)))))))).(\lambda (n0: nat).(\lambda (H0: (lt (S n) (S n0))).(let TMP_546 -\def (S n) in (let TMP_547 \def (eq nat TMP_546 O) in (let TMP_544 \def -(\lambda (m: nat).(let TMP_543 \def (S n) in (let TMP_542 \def (S m) in (eq -nat TMP_543 TMP_542)))) in (let TMP_541 \def (\lambda (m: nat).(lt m n0)) in -(let TMP_545 \def (ex2 nat TMP_544 TMP_541) in (let TMP_539 \def (\lambda (m: -nat).(let TMP_538 \def (S n) in (let TMP_537 \def (S m) in (eq nat TMP_538 -TMP_537)))) in (let TMP_536 \def (\lambda (m: nat).(lt m n0)) in (let TMP_534 -\def (S n) in (let TMP_535 \def (refl_equal nat TMP_534) in (let TMP_532 \def -(S n) in (let TMP_533 \def (le_S_n TMP_532 n0 H0) in (let TMP_540 \def -(ex_intro2 nat TMP_539 TMP_536 n TMP_535 TMP_533) in (or_intror TMP_547 -TMP_545 TMP_540))))))))))))))))) in (nat_ind TMP_561 TMP_555 TMP_548 x)))). + \lambda (x: nat).(let TMP_6 \def (\lambda (n: nat).(\forall (n0: nat).((lt n +(S n0)) \to (let TMP_1 \def (eq nat n O) in (let TMP_3 \def (\lambda (m: +nat).(let TMP_2 \def (S m) in (eq nat n TMP_2))) in (let TMP_4 \def (\lambda +(m: nat).(lt m n0)) in (let TMP_5 \def (ex2 nat TMP_3 TMP_4) in (or TMP_1 +TMP_5)))))))) in (let TMP_13 \def (\lambda (n: nat).(\lambda (_: (lt O (S +n))).(let TMP_7 \def (eq nat O O) in (let TMP_9 \def (\lambda (m: nat).(let +TMP_8 \def (S m) in (eq nat O TMP_8))) in (let TMP_10 \def (\lambda (m: +nat).(lt m n)) in (let TMP_11 \def (ex2 nat TMP_9 TMP_10) in (let TMP_12 \def +(refl_equal nat O) in (or_introl TMP_7 TMP_11 TMP_12)))))))) in (let TMP_30 +\def (\lambda (n: nat).(\lambda (_: ((\forall (n0: nat).((lt n (S n0)) \to +(or (eq nat n O) (ex2 nat (\lambda (m: nat).(eq nat n (S m))) (\lambda (m: +nat).(lt m n0)))))))).(\lambda (n0: nat).(\lambda (H0: (lt (S n) (S +n0))).(let TMP_14 \def (S n) in (let TMP_15 \def (eq nat TMP_14 O) in (let +TMP_18 \def (\lambda (m: nat).(let TMP_16 \def (S n) in (let TMP_17 \def (S +m) in (eq nat TMP_16 TMP_17)))) in (let TMP_19 \def (\lambda (m: nat).(lt m +n0)) in (let TMP_20 \def (ex2 nat TMP_18 TMP_19) in (let TMP_23 \def (\lambda +(m: nat).(let TMP_21 \def (S n) in (let TMP_22 \def (S m) in (eq nat TMP_21 +TMP_22)))) in (let TMP_24 \def (\lambda (m: nat).(lt m n0)) in (let TMP_25 +\def (S n) in (let TMP_26 \def (refl_equal nat TMP_25) in (let TMP_27 \def (S +n) in (let TMP_28 \def (le_S_n TMP_27 n0 H0) in (let TMP_29 \def (ex_intro2 +nat TMP_23 TMP_24 n TMP_26 TMP_28) in (or_intror TMP_15 TMP_20 +TMP_29))))))))))))))))) in (nat_ind TMP_6 TMP_13 TMP_30 x)))). theorem le_lt_false: \forall (x: nat).(\forall (y: nat).((le x y) \to ((lt y x) \to (\forall (P: Prop).P)))) \def \lambda (x: nat).(\lambda (y: nat).(\lambda (H: (le x y)).(\lambda (H0: (lt -y x)).(\lambda (P: Prop).(let TMP_562 \def (le_not_lt x y H H0) in (False_ind -P TMP_562)))))). +y x)).(\lambda (P: Prop).(let TMP_1 \def (le_not_lt x y H H0) in (False_ind P +TMP_1)))))). theorem lt_neq: \forall (x: nat).(\forall (y: nat).((lt x y) \to (not (eq nat x y)))) \def \lambda (x: nat).(\lambda (y: nat).(\lambda (H: (lt x y)).(\lambda (H0: (eq -nat x y)).(let TMP_563 \def (\lambda (n: nat).(lt n y)) in (let H1 \def -(eq_ind nat x TMP_563 H y H0) in (lt_n_n y H1)))))). +nat x y)).(let TMP_1 \def (\lambda (n: nat).(lt n y)) in (let H1 \def (eq_ind +nat x TMP_1 H y H0) in (lt_n_n y H1)))))). theorem arith0: \forall (h2: nat).(\forall (d2: nat).(\forall (n: nat).((le (plus d2 h2) n) \to (\forall (h1: nat).(le (plus d2 h1) (minus (plus n h1) h2)))))) \def \lambda (h2: nat).(\lambda (d2: nat).(\lambda (n: nat).(\lambda (H: (le -(plus d2 h2) n)).(\lambda (h1: nat).(let TMP_602 \def (plus d2 h1) in (let -TMP_603 \def (plus h2 TMP_602) in (let TMP_604 \def (minus TMP_603 h2) in -(let TMP_601 \def (\lambda (n0: nat).(let TMP_599 \def (plus n h1) in (let -TMP_600 \def (minus TMP_599 h2) in (le n0 TMP_600)))) in (let TMP_596 \def -(plus d2 h1) in (let TMP_597 \def (plus h2 TMP_596) in (let TMP_594 \def -(plus d2 h1) in (let TMP_595 \def (le_plus_l h2 TMP_594) in (let TMP_593 \def -(plus n h1) in (let TMP_590 \def (plus h2 d2) in (let TMP_591 \def (plus -TMP_590 h1) in (let TMP_589 \def (\lambda (n0: nat).(let TMP_588 \def (plus n -h1) in (le n0 TMP_588))) in (let TMP_586 \def (plus d2 h2) in (let TMP_585 -\def (\lambda (n0: nat).(let TMP_584 \def (plus n0 h1) in (let TMP_583 \def -(plus n h1) in (le TMP_584 TMP_583)))) in (let TMP_580 \def (plus d2 h2) in -(let TMP_581 \def (plus TMP_580 h1) in (let TMP_579 \def (plus n h1) in (let -TMP_576 \def (plus d2 h2) in (let TMP_577 \def (plus TMP_576 h1) in (let -TMP_575 \def (plus n h1) in (let TMP_573 \def (plus d2 h2) in (let TMP_572 -\def (le_n h1) in (let TMP_574 \def (le_plus_plus TMP_573 n h1 h1 H TMP_572) -in (let TMP_578 \def (le_n_S TMP_577 TMP_575 TMP_574) in (let TMP_582 \def -(le_S_n TMP_581 TMP_579 TMP_578) in (let TMP_571 \def (plus h2 d2) in (let -TMP_570 \def (plus_sym h2 d2) in (let TMP_587 \def (eq_ind_r nat TMP_586 -TMP_585 TMP_582 TMP_571 TMP_570) in (let TMP_568 \def (plus d2 h1) in (let -TMP_569 \def (plus h2 TMP_568) in (let TMP_567 \def (plus_assoc_l h2 d2 h1) -in (let TMP_592 \def (eq_ind_r nat TMP_591 TMP_589 TMP_587 TMP_569 TMP_567) -in (let TMP_598 \def (le_minus_minus h2 TMP_597 TMP_595 TMP_593 TMP_592) in -(let TMP_566 \def (plus d2 h1) in (let TMP_564 \def (plus d2 h1) in (let -TMP_565 \def (minus_plus h2 TMP_564) in (eq_ind nat TMP_604 TMP_601 TMP_598 -TMP_566 TMP_565))))))))))))))))))))))))))))))))))))))))). +(plus d2 h2) n)).(\lambda (h1: nat).(let TMP_1 \def (plus d2 h1) in (let +TMP_2 \def (plus h2 TMP_1) in (let TMP_3 \def (minus TMP_2 h2) in (let TMP_6 +\def (\lambda (n0: nat).(let TMP_4 \def (plus n h1) in (let TMP_5 \def (minus +TMP_4 h2) in (le n0 TMP_5)))) in (let TMP_7 \def (plus d2 h1) in (let TMP_8 +\def (plus h2 TMP_7) in (let TMP_9 \def (plus d2 h1) in (let TMP_10 \def +(le_plus_l h2 TMP_9) in (let TMP_11 \def (plus n h1) in (let TMP_12 \def +(plus h2 d2) in (let TMP_13 \def (plus TMP_12 h1) in (let TMP_15 \def +(\lambda (n0: nat).(let TMP_14 \def (plus n h1) in (le n0 TMP_14))) in (let +TMP_16 \def (plus d2 h2) in (let TMP_19 \def (\lambda (n0: nat).(let TMP_17 +\def (plus n0 h1) in (let TMP_18 \def (plus n h1) in (le TMP_17 TMP_18)))) in +(let TMP_20 \def (plus d2 h2) in (let TMP_21 \def (plus TMP_20 h1) in (let +TMP_22 \def (plus n h1) in (let TMP_23 \def (plus d2 h2) in (let TMP_24 \def +(plus TMP_23 h1) in (let TMP_25 \def (plus n h1) in (let TMP_26 \def (plus d2 +h2) in (let TMP_27 \def (le_n h1) in (let TMP_28 \def (le_plus_plus TMP_26 n +h1 h1 H TMP_27) in (let TMP_29 \def (le_n_S TMP_24 TMP_25 TMP_28) in (let +TMP_30 \def (le_S_n TMP_21 TMP_22 TMP_29) in (let TMP_31 \def (plus h2 d2) in +(let TMP_32 \def (plus_sym h2 d2) in (let TMP_33 \def (eq_ind_r nat TMP_16 +TMP_19 TMP_30 TMP_31 TMP_32) in (let TMP_34 \def (plus d2 h1) in (let TMP_35 +\def (plus h2 TMP_34) in (let TMP_36 \def (plus_assoc_l h2 d2 h1) in (let +TMP_37 \def (eq_ind_r nat TMP_13 TMP_15 TMP_33 TMP_35 TMP_36) in (let TMP_38 +\def (le_minus_minus h2 TMP_8 TMP_10 TMP_11 TMP_37) in (let TMP_39 \def (plus +d2 h1) in (let TMP_40 \def (plus d2 h1) in (let TMP_41 \def (minus_plus h2 +TMP_40) in (eq_ind nat TMP_3 TMP_6 TMP_38 TMP_39 +TMP_41))))))))))))))))))))))))))))))))))))))))). theorem O_minus: \forall (x: nat).(\forall (y: nat).((le x y) \to (eq nat (minus x y) O))) \def - \lambda (x: nat).(let TMP_624 \def (\lambda (n: nat).(\forall (y: nat).((le -n y) \to (let TMP_623 \def (minus n y) in (eq nat TMP_623 O))))) in (let -TMP_622 \def (\lambda (y: nat).(\lambda (_: (le O y)).(refl_equal nat O))) in -(let TMP_621 \def (\lambda (x0: nat).(\lambda (H: ((\forall (y: nat).((le x0 -y) \to (eq nat (minus x0 y) O))))).(\lambda (y: nat).(let TMP_620 \def -(\lambda (n: nat).((le (S x0) n) \to (let TMP_619 \def (match n with [O -\Rightarrow (S x0) | (S l) \Rightarrow (minus x0 l)]) in (eq nat TMP_619 -O)))) in (let TMP_618 \def (\lambda (H0: (le (S x0) O)).(let TMP_617 \def -(\lambda (n: nat).(let TMP_616 \def (S n) in (eq nat O TMP_616))) in (let -TMP_615 \def (\lambda (n: nat).(le x0 n)) in (let TMP_613 \def (S x0) in (let -TMP_614 \def (eq nat TMP_613 O) in (let TMP_612 \def (\lambda (x1: -nat).(\lambda (H1: (eq nat O (S x1))).(\lambda (_: (le x0 x1)).(let TMP_609 -\def (\lambda (ee: nat).(match ee in nat with [O \Rightarrow True | (S _) -\Rightarrow False])) in (let TMP_608 \def (S x1) in (let H3 \def (eq_ind nat -O TMP_609 I TMP_608 H1) in (let TMP_610 \def (S x0) in (let TMP_611 \def (eq -nat TMP_610 O) in (False_ind TMP_611 H3))))))))) in (let TMP_607 \def -(le_gen_S x0 O H0) in (ex2_ind nat TMP_617 TMP_615 TMP_614 TMP_612 -TMP_607)))))))) in (let TMP_606 \def (\lambda (n: nat).(\lambda (_: (((le (S -x0) n) \to (eq nat (match n with [O \Rightarrow (S x0) | (S l) \Rightarrow -(minus x0 l)]) O)))).(\lambda (H1: (le (S x0) (S n))).(let TMP_605 \def -(le_S_n x0 n H1) in (H n TMP_605))))) in (nat_ind TMP_620 TMP_618 TMP_606 -y))))))) in (nat_ind TMP_624 TMP_622 TMP_621 x)))). + \lambda (x: nat).(let TMP_2 \def (\lambda (n: nat).(\forall (y: nat).((le n +y) \to (let TMP_1 \def (minus n y) in (eq nat TMP_1 O))))) in (let TMP_3 \def +(\lambda (y: nat).(\lambda (_: (le O y)).(refl_equal nat O))) in (let TMP_20 +\def (\lambda (x0: nat).(\lambda (H: ((\forall (y: nat).((le x0 y) \to (eq +nat (minus x0 y) O))))).(\lambda (y: nat).(let TMP_5 \def (\lambda (n: +nat).((le (S x0) n) \to (let TMP_4 \def (match n with [O \Rightarrow (S x0) | +(S l) \Rightarrow (minus x0 l)]) in (eq nat TMP_4 O)))) in (let TMP_17 \def +(\lambda (H0: (le (S x0) O)).(let TMP_7 \def (\lambda (n: nat).(let TMP_6 +\def (S n) in (eq nat O TMP_6))) in (let TMP_8 \def (\lambda (n: nat).(le x0 +n)) in (let TMP_9 \def (S x0) in (let TMP_10 \def (eq nat TMP_9 O) in (let +TMP_15 \def (\lambda (x1: nat).(\lambda (H1: (eq nat O (S x1))).(\lambda (_: +(le x0 x1)).(let TMP_11 \def (\lambda (ee: nat).(match ee with [O \Rightarrow +True | (S _) \Rightarrow False])) in (let TMP_12 \def (S x1) in (let H3 \def +(eq_ind nat O TMP_11 I TMP_12 H1) in (let TMP_13 \def (S x0) in (let TMP_14 +\def (eq nat TMP_13 O) in (False_ind TMP_14 H3))))))))) in (let TMP_16 \def +(le_gen_S x0 O H0) in (ex2_ind nat TMP_7 TMP_8 TMP_10 TMP_15 TMP_16)))))))) +in (let TMP_19 \def (\lambda (n: nat).(\lambda (_: (((le (S x0) n) \to (eq +nat (match n with [O \Rightarrow (S x0) | (S l) \Rightarrow (minus x0 l)]) +O)))).(\lambda (H1: (le (S x0) (S n))).(let TMP_18 \def (le_S_n x0 n H1) in +(H n TMP_18))))) in (nat_ind TMP_5 TMP_17 TMP_19 y))))))) in (nat_ind TMP_2 +TMP_3 TMP_20 x)))). theorem minus_minus: \forall (z: nat).(\forall (x: nat).(\forall (y: nat).((le z x) \to ((le z y) \to ((eq nat (minus x z) (minus y z)) \to (eq nat x y)))))) \def - \lambda (z: nat).(let TMP_664 \def (\lambda (n: nat).(\forall (x: + \lambda (z: nat).(let TMP_1 \def (\lambda (n: nat).(\forall (x: nat).(\forall (y: nat).((le n x) \to ((le n y) \to ((eq nat (minus x n) -(minus y n)) \to (eq nat x y))))))) in (let TMP_663 \def (\lambda (x: +(minus y n)) \to (eq nat x y))))))) in (let TMP_9 \def (\lambda (x: nat).(\lambda (y: nat).(\lambda (_: (le O x)).(\lambda (_: (le O y)).(\lambda -(H1: (eq nat (minus x O) (minus y O))).(let TMP_659 \def (minus x O) in (let -TMP_658 \def (\lambda (n: nat).(let TMP_657 \def (minus y O) in (eq nat n -TMP_657))) in (let TMP_656 \def (minus_n_O x) in (let H2 \def (eq_ind_r nat -TMP_659 TMP_658 H1 x TMP_656) in (let TMP_662 \def (minus y O) in (let -TMP_661 \def (\lambda (n: nat).(eq nat x n)) in (let TMP_660 \def (minus_n_O -y) in (let H3 \def (eq_ind_r nat TMP_662 TMP_661 H2 y TMP_660) in -H3))))))))))))) in (let TMP_655 \def (\lambda (z0: nat).(\lambda (IH: -((\forall (x: nat).(\forall (y: nat).((le z0 x) \to ((le z0 y) \to ((eq nat -(minus x z0) (minus y z0)) \to (eq nat x y)))))))).(\lambda (x: nat).(let -TMP_654 \def (\lambda (n: nat).(\forall (y: nat).((le (S z0) n) \to ((le (S -z0) y) \to ((eq nat (minus n (S z0)) (minus y (S z0))) \to (eq nat n y)))))) -in (let TMP_653 \def (\lambda (y: nat).(\lambda (H: (le (S z0) O)).(\lambda -(_: (le (S z0) y)).(\lambda (_: (eq nat (minus O (S z0)) (minus y (S -z0)))).(let TMP_652 \def (\lambda (n: nat).(let TMP_651 \def (S n) in (eq nat -O TMP_651))) in (let TMP_650 \def (\lambda (n: nat).(le z0 n)) in (let -TMP_649 \def (eq nat O y) in (let TMP_648 \def (\lambda (x0: nat).(\lambda -(H2: (eq nat O (S x0))).(\lambda (_: (le z0 x0)).(let TMP_646 \def (\lambda -(ee: nat).(match ee in nat with [O \Rightarrow True | (S _) \Rightarrow -False])) in (let TMP_645 \def (S x0) in (let H4 \def (eq_ind nat O TMP_646 I -TMP_645 H2) in (let TMP_647 \def (eq nat O y) in (False_ind TMP_647 -H4)))))))) in (let TMP_644 \def (le_gen_S z0 O H) in (ex2_ind nat TMP_652 -TMP_650 TMP_649 TMP_648 TMP_644)))))))))) in (let TMP_643 \def (\lambda (x0: +(H1: (eq nat (minus x O) (minus y O))).(let TMP_2 \def (minus x O) in (let +TMP_4 \def (\lambda (n: nat).(let TMP_3 \def (minus y O) in (eq nat n +TMP_3))) in (let TMP_5 \def (minus_n_O x) in (let H2 \def (eq_ind_r nat TMP_2 +TMP_4 H1 x TMP_5) in (let TMP_6 \def (minus y O) in (let TMP_7 \def (\lambda +(n: nat).(eq nat x n)) in (let TMP_8 \def (minus_n_O y) in (let H3 \def +(eq_ind_r nat TMP_6 TMP_7 H2 y TMP_8) in H3))))))))))))) in (let TMP_40 \def +(\lambda (z0: nat).(\lambda (IH: ((\forall (x: nat).(\forall (y: nat).((le z0 +x) \to ((le z0 y) \to ((eq nat (minus x z0) (minus y z0)) \to (eq nat x +y)))))))).(\lambda (x: nat).(let TMP_10 \def (\lambda (n: nat).(\forall (y: +nat).((le (S z0) n) \to ((le (S z0) y) \to ((eq nat (minus n (S z0)) (minus y +(S z0))) \to (eq nat n y)))))) in (let TMP_20 \def (\lambda (y: nat).(\lambda +(H: (le (S z0) O)).(\lambda (_: (le (S z0) y)).(\lambda (_: (eq nat (minus O +(S z0)) (minus y (S z0)))).(let TMP_12 \def (\lambda (n: nat).(let TMP_11 +\def (S n) in (eq nat O TMP_11))) in (let TMP_13 \def (\lambda (n: nat).(le +z0 n)) in (let TMP_14 \def (eq nat O y) in (let TMP_18 \def (\lambda (x0: +nat).(\lambda (H2: (eq nat O (S x0))).(\lambda (_: (le z0 x0)).(let TMP_15 +\def (\lambda (ee: nat).(match ee with [O \Rightarrow True | (S _) +\Rightarrow False])) in (let TMP_16 \def (S x0) in (let H4 \def (eq_ind nat O +TMP_15 I TMP_16 H2) in (let TMP_17 \def (eq nat O y) in (False_ind TMP_17 +H4)))))))) in (let TMP_19 \def (le_gen_S z0 O H) in (ex2_ind nat TMP_12 +TMP_13 TMP_14 TMP_18 TMP_19)))))))))) in (let TMP_39 \def (\lambda (x0: nat).(\lambda (_: ((\forall (y: nat).((le (S z0) x0) \to ((le (S z0) y) \to ((eq nat (minus x0 (S z0)) (minus y (S z0))) \to (eq nat x0 y))))))).(\lambda -(y: nat).(let TMP_642 \def (\lambda (n: nat).((le (S z0) (S x0)) \to ((le (S -z0) n) \to ((eq nat (minus (S x0) (S z0)) (minus n (S z0))) \to (let TMP_641 -\def (S x0) in (eq nat TMP_641 n)))))) in (let TMP_640 \def (\lambda (H: (le -(S z0) (S x0))).(\lambda (H0: (le (S z0) O)).(\lambda (_: (eq nat (minus (S -x0) (S z0)) (minus O (S z0)))).(let H_y \def (le_S_n z0 x0 H) in (let TMP_639 -\def (\lambda (n: nat).(let TMP_638 \def (S n) in (eq nat O TMP_638))) in -(let TMP_637 \def (\lambda (n: nat).(le z0 n)) in (let TMP_635 \def (S x0) in -(let TMP_636 \def (eq nat TMP_635 O) in (let TMP_634 \def (\lambda (x1: -nat).(\lambda (H2: (eq nat O (S x1))).(\lambda (_: (le z0 x1)).(let TMP_631 -\def (\lambda (ee: nat).(match ee in nat with [O \Rightarrow True | (S _) -\Rightarrow False])) in (let TMP_630 \def (S x1) in (let H4 \def (eq_ind nat -O TMP_631 I TMP_630 H2) in (let TMP_632 \def (S x0) in (let TMP_633 \def (eq -nat TMP_632 O) in (False_ind TMP_633 H4))))))))) in (let TMP_629 \def -(le_gen_S z0 O H0) in (ex2_ind nat TMP_639 TMP_637 TMP_636 TMP_634 -TMP_629))))))))))) in (let TMP_628 \def (\lambda (y0: nat).(\lambda (_: (((le -(S z0) (S x0)) \to ((le (S z0) y0) \to ((eq nat (minus (S x0) (S z0)) (minus -y0 (S z0))) \to (eq nat (S x0) y0)))))).(\lambda (H: (le (S z0) (S -x0))).(\lambda (H0: (le (S z0) (S y0))).(\lambda (H1: (eq nat (minus (S x0) -(S z0)) (minus (S y0) (S z0)))).(let TMP_626 \def (le_S_n z0 x0 H) in (let -TMP_625 \def (le_S_n z0 y0 H0) in (let TMP_627 \def (IH x0 y0 TMP_626 TMP_625 -H1) in (f_equal nat nat S x0 y0 TMP_627))))))))) in (nat_ind TMP_642 TMP_640 -TMP_628 y))))))) in (nat_ind TMP_654 TMP_653 TMP_643 x))))))) in (nat_ind -TMP_664 TMP_663 TMP_655 z)))). +(y: nat).(let TMP_22 \def (\lambda (n: nat).((le (S z0) (S x0)) \to ((le (S +z0) n) \to ((eq nat (minus (S x0) (S z0)) (minus n (S z0))) \to (let TMP_21 +\def (S x0) in (eq nat TMP_21 n)))))) in (let TMP_34 \def (\lambda (H: (le (S +z0) (S x0))).(\lambda (H0: (le (S z0) O)).(\lambda (_: (eq nat (minus (S x0) +(S z0)) (minus O (S z0)))).(let H_y \def (le_S_n z0 x0 H) in (let TMP_24 \def +(\lambda (n: nat).(let TMP_23 \def (S n) in (eq nat O TMP_23))) in (let +TMP_25 \def (\lambda (n: nat).(le z0 n)) in (let TMP_26 \def (S x0) in (let +TMP_27 \def (eq nat TMP_26 O) in (let TMP_32 \def (\lambda (x1: nat).(\lambda +(H2: (eq nat O (S x1))).(\lambda (_: (le z0 x1)).(let TMP_28 \def (\lambda +(ee: nat).(match ee with [O \Rightarrow True | (S _) \Rightarrow False])) in +(let TMP_29 \def (S x1) in (let H4 \def (eq_ind nat O TMP_28 I TMP_29 H2) in +(let TMP_30 \def (S x0) in (let TMP_31 \def (eq nat TMP_30 O) in (False_ind +TMP_31 H4))))))))) in (let TMP_33 \def (le_gen_S z0 O H0) in (ex2_ind nat +TMP_24 TMP_25 TMP_27 TMP_32 TMP_33))))))))))) in (let TMP_38 \def (\lambda +(y0: nat).(\lambda (_: (((le (S z0) (S x0)) \to ((le (S z0) y0) \to ((eq nat +(minus (S x0) (S z0)) (minus y0 (S z0))) \to (eq nat (S x0) y0)))))).(\lambda +(H: (le (S z0) (S x0))).(\lambda (H0: (le (S z0) (S y0))).(\lambda (H1: (eq +nat (minus (S x0) (S z0)) (minus (S y0) (S z0)))).(let TMP_35 \def (le_S_n z0 +x0 H) in (let TMP_36 \def (le_S_n z0 y0 H0) in (let TMP_37 \def (IH x0 y0 +TMP_35 TMP_36 H1) in (f_equal nat nat S x0 y0 TMP_37))))))))) in (nat_ind +TMP_22 TMP_34 TMP_38 y))))))) in (nat_ind TMP_10 TMP_20 TMP_39 x))))))) in +(nat_ind TMP_1 TMP_9 TMP_40 z)))). theorem plus_plus: \forall (z: nat).(\forall (x1: nat).(\forall (x2: nat).(\forall (y1: nat).(\forall (y2: nat).((le x1 z) \to ((le x2 z) \to ((eq nat (plus (minus z x1) y1) (plus (minus z x2) y2)) \to (eq nat (plus x1 y2) (plus x2 y1))))))))) \def - \lambda (z: nat).(let TMP_755 \def (\lambda (n: nat).(\forall (x1: + \lambda (z: nat).(let TMP_3 \def (\lambda (n: nat).(\forall (x1: nat).(\forall (x2: nat).(\forall (y1: nat).(\forall (y2: nat).((le x1 n) \to ((le x2 n) \to ((eq nat (plus (minus n x1) y1) (plus (minus n x2) y2)) \to -(let TMP_754 \def (plus x1 y2) in (let TMP_753 \def (plus x2 y1) in (eq nat -TMP_754 TMP_753))))))))))) in (let TMP_752 \def (\lambda (x1: nat).(\lambda -(x2: nat).(\lambda (y1: nat).(\lambda (y2: nat).(\lambda (H: (le x1 -O)).(\lambda (H0: (le x2 O)).(\lambda (H1: (eq nat y1 y2)).(let TMP_751 \def -(\lambda (n: nat).(let TMP_750 \def (plus x1 n) in (let TMP_749 \def (plus x2 -y1) in (eq nat TMP_750 TMP_749)))) in (let H_y \def (le_n_O_eq x2 H0) in (let -TMP_747 \def (\lambda (n: nat).(let TMP_746 \def (plus x1 y1) in (let TMP_745 -\def (plus n y1) in (eq nat TMP_746 TMP_745)))) in (let H_y0 \def (le_n_O_eq -x1 H) in (let TMP_743 \def (\lambda (n: nat).(let TMP_742 \def (plus n y1) in -(let TMP_741 \def (plus O y1) in (eq nat TMP_742 TMP_741)))) in (let TMP_739 -\def (plus O y1) in (let TMP_740 \def (refl_equal nat TMP_739) in (let -TMP_744 \def (eq_ind nat O TMP_743 TMP_740 x1 H_y0) in (let TMP_748 \def -(eq_ind nat O TMP_747 TMP_744 x2 H_y) in (eq_ind nat y1 TMP_751 TMP_748 y2 -H1))))))))))))))))) in (let TMP_738 \def (\lambda (z0: nat).(\lambda (IH: -((\forall (x1: nat).(\forall (x2: nat).(\forall (y1: nat).(\forall (y2: -nat).((le x1 z0) \to ((le x2 z0) \to ((eq nat (plus (minus z0 x1) y1) (plus -(minus z0 x2) y2)) \to (eq nat (plus x1 y2) (plus x2 y1))))))))))).(\lambda -(x1: nat).(let TMP_737 \def (\lambda (n: nat).(\forall (x2: nat).(\forall -(y1: nat).(\forall (y2: nat).((le n (S z0)) \to ((le x2 (S z0)) \to ((eq nat -(plus (minus (S z0) n) y1) (plus (minus (S z0) x2) y2)) \to (let TMP_736 \def -(plus n y2) in (let TMP_735 \def (plus x2 y1) in (eq nat TMP_736 -TMP_735)))))))))) in (let TMP_734 \def (\lambda (x2: nat).(let TMP_733 \def -(\lambda (n: nat).(\forall (y1: nat).(\forall (y2: nat).((le O (S z0)) \to -((le n (S z0)) \to ((eq nat (plus (minus (S z0) O) y1) (plus (minus (S z0) n) -y2)) \to (let TMP_732 \def (plus O y2) in (let TMP_731 \def (plus n y1) in -(eq nat TMP_732 TMP_731))))))))) in (let TMP_730 \def (\lambda (y1: -nat).(\lambda (y2: nat).(\lambda (_: (le O (S z0))).(\lambda (_: (le O (S -z0))).(\lambda (H1: (eq nat (S (plus z0 y1)) (S (plus z0 y2)))).(let H_y \def -(IH O O) in (let TMP_724 \def (minus z0 O) in (let TMP_723 \def (\lambda (n: -nat).(\forall (y3: nat).(\forall (y4: nat).((le O z0) \to ((le O z0) \to ((eq -nat (plus n y3) (plus n y4)) \to (eq nat y4 y3))))))) in (let TMP_722 \def -(minus_n_O z0) in (let H2 \def (eq_ind_r nat TMP_724 TMP_723 H_y z0 TMP_722) -in (let TMP_729 \def (le_O_n z0) in (let TMP_728 \def (le_O_n z0) in (let -TMP_726 \def (plus z0 y1) in (let TMP_725 \def (plus z0 y2) in (let TMP_727 -\def (eq_add_S TMP_726 TMP_725 H1) in (H2 y1 y2 TMP_729 TMP_728 -TMP_727)))))))))))))))) in (let TMP_721 \def (\lambda (x3: nat).(\lambda (_: +(let TMP_1 \def (plus x1 y2) in (let TMP_2 \def (plus x2 y1) in (eq nat TMP_1 +TMP_2))))))))))) in (let TMP_17 \def (\lambda (x1: nat).(\lambda (x2: +nat).(\lambda (y1: nat).(\lambda (y2: nat).(\lambda (H: (le x1 O)).(\lambda +(H0: (le x2 O)).(\lambda (H1: (eq nat y1 y2)).(let TMP_6 \def (\lambda (n: +nat).(let TMP_4 \def (plus x1 n) in (let TMP_5 \def (plus x2 y1) in (eq nat +TMP_4 TMP_5)))) in (let H_y \def (le_n_O_eq x2 H0) in (let TMP_9 \def +(\lambda (n: nat).(let TMP_7 \def (plus x1 y1) in (let TMP_8 \def (plus n y1) +in (eq nat TMP_7 TMP_8)))) in (let H_y0 \def (le_n_O_eq x1 H) in (let TMP_12 +\def (\lambda (n: nat).(let TMP_10 \def (plus n y1) in (let TMP_11 \def (plus +O y1) in (eq nat TMP_10 TMP_11)))) in (let TMP_13 \def (plus O y1) in (let +TMP_14 \def (refl_equal nat TMP_13) in (let TMP_15 \def (eq_ind nat O TMP_12 +TMP_14 x1 H_y0) in (let TMP_16 \def (eq_ind nat O TMP_9 TMP_15 x2 H_y) in +(eq_ind nat y1 TMP_6 TMP_16 y2 H1))))))))))))))))) in (let TMP_91 \def +(\lambda (z0: nat).(\lambda (IH: ((\forall (x1: nat).(\forall (x2: +nat).(\forall (y1: nat).(\forall (y2: nat).((le x1 z0) \to ((le x2 z0) \to +((eq nat (plus (minus z0 x1) y1) (plus (minus z0 x2) y2)) \to (eq nat (plus +x1 y2) (plus x2 y1))))))))))).(\lambda (x1: nat).(let TMP_20 \def (\lambda +(n: nat).(\forall (x2: nat).(\forall (y1: nat).(\forall (y2: nat).((le n (S +z0)) \to ((le x2 (S z0)) \to ((eq nat (plus (minus (S z0) n) y1) (plus (minus +(S z0) x2) y2)) \to (let TMP_18 \def (plus n y2) in (let TMP_19 \def (plus x2 +y1) in (eq nat TMP_18 TMP_19)))))))))) in (let TMP_56 \def (\lambda (x2: +nat).(let TMP_23 \def (\lambda (n: nat).(\forall (y1: nat).(\forall (y2: +nat).((le O (S z0)) \to ((le n (S z0)) \to ((eq nat (plus (minus (S z0) O) +y1) (plus (minus (S z0) n) y2)) \to (let TMP_21 \def (plus O y2) in (let +TMP_22 \def (plus n y1) in (eq nat TMP_21 TMP_22))))))))) in (let TMP_32 \def +(\lambda (y1: nat).(\lambda (y2: nat).(\lambda (_: (le O (S z0))).(\lambda +(_: (le O (S z0))).(\lambda (H1: (eq nat (S (plus z0 y1)) (S (plus z0 +y2)))).(let H_y \def (IH O O) in (let TMP_24 \def (minus z0 O) in (let TMP_25 +\def (\lambda (n: nat).(\forall (y3: nat).(\forall (y4: nat).((le O z0) \to +((le O z0) \to ((eq nat (plus n y3) (plus n y4)) \to (eq nat y4 y3))))))) in +(let TMP_26 \def (minus_n_O z0) in (let H2 \def (eq_ind_r nat TMP_24 TMP_25 +H_y z0 TMP_26) in (let TMP_27 \def (le_O_n z0) in (let TMP_28 \def (le_O_n +z0) in (let TMP_29 \def (plus z0 y1) in (let TMP_30 \def (plus z0 y2) in (let +TMP_31 \def (eq_add_S TMP_29 TMP_30 H1) in (H2 y1 y2 TMP_27 TMP_28 +TMP_31)))))))))))))))) in (let TMP_55 \def (\lambda (x3: nat).(\lambda (_: ((\forall (y1: nat).(\forall (y2: nat).((le O (S z0)) \to ((le x3 (S z0)) \to ((eq nat (S (plus z0 y1)) (plus (match x3 with [O \Rightarrow (S z0) | (S l) \Rightarrow (minus z0 l)]) y2)) \to (eq nat y2 (plus x3 y1))))))))).(\lambda (y1: nat).(\lambda (y2: nat).(\lambda (_: (le O (S z0))).(\lambda (H0: (le (S x3) (S z0))).(\lambda (H1: (eq nat (S (plus z0 y1)) (plus (minus z0 x3) -y2))).(let TMP_699 \def (S y1) in (let H_y \def (IH O x3 TMP_699) in (let -TMP_704 \def (minus z0 O) in (let TMP_703 \def (\lambda (n: nat).(\forall -(y3: nat).((le O z0) \to ((le x3 z0) \to ((eq nat (plus n (S y1)) (plus -(minus z0 x3) y3)) \to (let TMP_701 \def (S y1) in (let TMP_702 \def (plus x3 -TMP_701) in (eq nat y3 TMP_702)))))))) in (let TMP_700 \def (minus_n_O z0) in -(let H2 \def (eq_ind_r nat TMP_704 TMP_703 H_y z0 TMP_700) in (let TMP_711 -\def (S y1) in (let TMP_712 \def (plus z0 TMP_711) in (let TMP_710 \def -(\lambda (n: nat).(\forall (y3: nat).((le O z0) \to ((le x3 z0) \to ((eq nat -n (plus (minus z0 x3) y3)) \to (let TMP_708 \def (S y1) in (let TMP_709 \def -(plus x3 TMP_708) in (eq nat y3 TMP_709)))))))) in (let TMP_706 \def (plus z0 -y1) in (let TMP_707 \def (S TMP_706) in (let TMP_705 \def (plus_n_Sm z0 y1) -in (let H3 \def (eq_ind_r nat TMP_712 TMP_710 H2 TMP_707 TMP_705) in (let -TMP_717 \def (S y1) in (let TMP_718 \def (plus x3 TMP_717) in (let TMP_716 -\def (\lambda (n: nat).(\forall (y3: nat).((le O z0) \to ((le x3 z0) \to ((eq -nat (S (plus z0 y1)) (plus (minus z0 x3) y3)) \to (eq nat y3 n)))))) in (let -TMP_714 \def (plus x3 y1) in (let TMP_715 \def (S TMP_714) in (let TMP_713 -\def (plus_n_Sm x3 y1) in (let H4 \def (eq_ind_r nat TMP_718 TMP_716 H3 -TMP_715 TMP_713) in (let TMP_720 \def (le_O_n z0) in (let TMP_719 \def -(le_S_n x3 z0 H0) in (H4 y2 TMP_720 TMP_719 H1)))))))))))))))))))))))))))))) -in (nat_ind TMP_733 TMP_730 TMP_721 x2))))) in (let TMP_698 \def (\lambda -(x2: nat).(\lambda (_: ((\forall (x3: nat).(\forall (y1: nat).(\forall (y2: -nat).((le x2 (S z0)) \to ((le x3 (S z0)) \to ((eq nat (plus (minus (S z0) x2) -y1) (plus (minus (S z0) x3) y2)) \to (eq nat (plus x2 y2) (plus x3 -y1)))))))))).(\lambda (x3: nat).(let TMP_697 \def (\lambda (n: nat).(\forall -(y1: nat).(\forall (y2: nat).((le (S x2) (S z0)) \to ((le n (S z0)) \to ((eq -nat (plus (minus (S z0) (S x2)) y1) (plus (minus (S z0) n) y2)) \to (let -TMP_695 \def (S x2) in (let TMP_696 \def (plus TMP_695 y2) in (let TMP_694 -\def (plus n y1) in (eq nat TMP_696 TMP_694)))))))))) in (let TMP_693 \def -(\lambda (y1: nat).(\lambda (y2: nat).(\lambda (H: (le (S x2) (S +y2))).(let TMP_33 \def (S y1) in (let H_y \def (IH O x3 TMP_33) in (let +TMP_34 \def (minus z0 O) in (let TMP_37 \def (\lambda (n: nat).(\forall (y3: +nat).((le O z0) \to ((le x3 z0) \to ((eq nat (plus n (S y1)) (plus (minus z0 +x3) y3)) \to (let TMP_35 \def (S y1) in (let TMP_36 \def (plus x3 TMP_35) in +(eq nat y3 TMP_36)))))))) in (let TMP_38 \def (minus_n_O z0) in (let H2 \def +(eq_ind_r nat TMP_34 TMP_37 H_y z0 TMP_38) in (let TMP_39 \def (S y1) in (let +TMP_40 \def (plus z0 TMP_39) in (let TMP_43 \def (\lambda (n: nat).(\forall +(y3: nat).((le O z0) \to ((le x3 z0) \to ((eq nat n (plus (minus z0 x3) y3)) +\to (let TMP_41 \def (S y1) in (let TMP_42 \def (plus x3 TMP_41) in (eq nat +y3 TMP_42)))))))) in (let TMP_44 \def (plus z0 y1) in (let TMP_45 \def (S +TMP_44) in (let TMP_46 \def (plus_n_Sm z0 y1) in (let H3 \def (eq_ind_r nat +TMP_40 TMP_43 H2 TMP_45 TMP_46) in (let TMP_47 \def (S y1) in (let TMP_48 +\def (plus x3 TMP_47) in (let TMP_49 \def (\lambda (n: nat).(\forall (y3: +nat).((le O z0) \to ((le x3 z0) \to ((eq nat (S (plus z0 y1)) (plus (minus z0 +x3) y3)) \to (eq nat y3 n)))))) in (let TMP_50 \def (plus x3 y1) in (let +TMP_51 \def (S TMP_50) in (let TMP_52 \def (plus_n_Sm x3 y1) in (let H4 \def +(eq_ind_r nat TMP_48 TMP_49 H3 TMP_51 TMP_52) in (let TMP_53 \def (le_O_n z0) +in (let TMP_54 \def (le_S_n x3 z0 H0) in (H4 y2 TMP_53 TMP_54 +H1)))))))))))))))))))))))))))))) in (nat_ind TMP_23 TMP_32 TMP_55 x2))))) in +(let TMP_90 \def (\lambda (x2: nat).(\lambda (_: ((\forall (x3: nat).(\forall +(y1: nat).(\forall (y2: nat).((le x2 (S z0)) \to ((le x3 (S z0)) \to ((eq nat +(plus (minus (S z0) x2) y1) (plus (minus (S z0) x3) y2)) \to (eq nat (plus x2 +y2) (plus x3 y1)))))))))).(\lambda (x3: nat).(let TMP_60 \def (\lambda (n: +nat).(\forall (y1: nat).(\forall (y2: nat).((le (S x2) (S z0)) \to ((le n (S +z0)) \to ((eq nat (plus (minus (S z0) (S x2)) y1) (plus (minus (S z0) n) y2)) +\to (let TMP_57 \def (S x2) in (let TMP_58 \def (plus TMP_57 y2) in (let +TMP_59 \def (plus n y1) in (eq nat TMP_58 TMP_59)))))))))) in (let TMP_83 +\def (\lambda (y1: nat).(\lambda (y2: nat).(\lambda (H: (le (S x2) (S z0))).(\lambda (_: (le O (S z0))).(\lambda (H1: (eq nat (plus (minus z0 x2) -y1) (S (plus z0 y2)))).(let TMP_671 \def (S y2) in (let H_y \def (IH x2 O y1 -TMP_671) in (let TMP_676 \def (minus z0 O) in (let TMP_675 \def (\lambda (n: +y1) (S (plus z0 y2)))).(let TMP_61 \def (S y2) in (let H_y \def (IH x2 O y1 +TMP_61) in (let TMP_62 \def (minus z0 O) in (let TMP_65 \def (\lambda (n: nat).((le x2 z0) \to ((le O z0) \to ((eq nat (plus (minus z0 x2) y1) (plus n -(S y2))) \to (let TMP_673 \def (S y2) in (let TMP_674 \def (plus x2 TMP_673) -in (eq nat TMP_674 y1))))))) in (let TMP_672 \def (minus_n_O z0) in (let H2 -\def (eq_ind_r nat TMP_676 TMP_675 H_y z0 TMP_672) in (let TMP_683 \def (S -y2) in (let TMP_684 \def (plus z0 TMP_683) in (let TMP_682 \def (\lambda (n: -nat).((le x2 z0) \to ((le O z0) \to ((eq nat (plus (minus z0 x2) y1) n) \to -(let TMP_680 \def (S y2) in (let TMP_681 \def (plus x2 TMP_680) in (eq nat -TMP_681 y1))))))) in (let TMP_678 \def (plus z0 y2) in (let TMP_679 \def (S -TMP_678) in (let TMP_677 \def (plus_n_Sm z0 y2) in (let H3 \def (eq_ind_r nat -TMP_684 TMP_682 H2 TMP_679 TMP_677) in (let TMP_689 \def (S y2) in (let -TMP_690 \def (plus x2 TMP_689) in (let TMP_688 \def (\lambda (n: nat).((le x2 -z0) \to ((le O z0) \to ((eq nat (plus (minus z0 x2) y1) (S (plus z0 y2))) \to -(eq nat n y1))))) in (let TMP_686 \def (plus x2 y2) in (let TMP_687 \def (S -TMP_686) in (let TMP_685 \def (plus_n_Sm x2 y2) in (let H4 \def (eq_ind_r nat -TMP_690 TMP_688 H3 TMP_687 TMP_685) in (let TMP_692 \def (le_S_n x2 z0 H) in -(let TMP_691 \def (le_O_n z0) in (H4 TMP_692 TMP_691 -H1)))))))))))))))))))))))))))) in (let TMP_670 \def (\lambda (x4: -nat).(\lambda (_: ((\forall (y1: nat).(\forall (y2: nat).((le (S x2) (S z0)) -\to ((le x4 (S z0)) \to ((eq nat (plus (minus z0 x2) y1) (plus (match x4 with -[O \Rightarrow (S z0) | (S l) \Rightarrow (minus z0 l)]) y2)) \to (eq nat (S -(plus x2 y2)) (plus x4 y1))))))))).(\lambda (y1: nat).(\lambda (y2: -nat).(\lambda (H: (le (S x2) (S z0))).(\lambda (H0: (le (S x4) (S +(S y2))) \to (let TMP_63 \def (S y2) in (let TMP_64 \def (plus x2 TMP_63) in +(eq nat TMP_64 y1))))))) in (let TMP_66 \def (minus_n_O z0) in (let H2 \def +(eq_ind_r nat TMP_62 TMP_65 H_y z0 TMP_66) in (let TMP_67 \def (S y2) in (let +TMP_68 \def (plus z0 TMP_67) in (let TMP_71 \def (\lambda (n: nat).((le x2 +z0) \to ((le O z0) \to ((eq nat (plus (minus z0 x2) y1) n) \to (let TMP_69 +\def (S y2) in (let TMP_70 \def (plus x2 TMP_69) in (eq nat TMP_70 y1))))))) +in (let TMP_72 \def (plus z0 y2) in (let TMP_73 \def (S TMP_72) in (let +TMP_74 \def (plus_n_Sm z0 y2) in (let H3 \def (eq_ind_r nat TMP_68 TMP_71 H2 +TMP_73 TMP_74) in (let TMP_75 \def (S y2) in (let TMP_76 \def (plus x2 +TMP_75) in (let TMP_77 \def (\lambda (n: nat).((le x2 z0) \to ((le O z0) \to +((eq nat (plus (minus z0 x2) y1) (S (plus z0 y2))) \to (eq nat n y1))))) in +(let TMP_78 \def (plus x2 y2) in (let TMP_79 \def (S TMP_78) in (let TMP_80 +\def (plus_n_Sm x2 y2) in (let H4 \def (eq_ind_r nat TMP_76 TMP_77 H3 TMP_79 +TMP_80) in (let TMP_81 \def (le_S_n x2 z0 H) in (let TMP_82 \def (le_O_n z0) +in (H4 TMP_81 TMP_82 H1)))))))))))))))))))))))))))) in (let TMP_89 \def +(\lambda (x4: nat).(\lambda (_: ((\forall (y1: nat).(\forall (y2: nat).((le +(S x2) (S z0)) \to ((le x4 (S z0)) \to ((eq nat (plus (minus z0 x2) y1) (plus +(match x4 with [O \Rightarrow (S z0) | (S l) \Rightarrow (minus z0 l)]) y2)) +\to (eq nat (S (plus x2 y2)) (plus x4 y1))))))))).(\lambda (y1: nat).(\lambda +(y2: nat).(\lambda (H: (le (S x2) (S z0))).(\lambda (H0: (le (S x4) (S z0))).(\lambda (H1: (eq nat (plus (minus z0 x2) y1) (plus (minus z0 x4) -y2))).(let TMP_669 \def (plus x2 y2) in (let TMP_668 \def (plus x4 y1) in -(let TMP_666 \def (le_S_n x2 z0 H) in (let TMP_665 \def (le_S_n x4 z0 H0) in -(let TMP_667 \def (IH x2 x4 y1 y2 TMP_666 TMP_665 H1) in (f_equal nat nat S -TMP_669 TMP_668 TMP_667))))))))))))) in (nat_ind TMP_697 TMP_693 TMP_670 -x3))))))) in (nat_ind TMP_737 TMP_734 TMP_698 x1))))))) in (nat_ind TMP_755 -TMP_752 TMP_738 z)))). +y2))).(let TMP_84 \def (plus x2 y2) in (let TMP_85 \def (plus x4 y1) in (let +TMP_86 \def (le_S_n x2 z0 H) in (let TMP_87 \def (le_S_n x4 z0 H0) in (let +TMP_88 \def (IH x2 x4 y1 y2 TMP_86 TMP_87 H1) in (f_equal nat nat S TMP_84 +TMP_85 TMP_88))))))))))))) in (nat_ind TMP_60 TMP_83 TMP_89 x3))))))) in +(nat_ind TMP_20 TMP_56 TMP_90 x1))))))) in (nat_ind TMP_3 TMP_17 TMP_91 z)))). theorem le_S_minus: \forall (d: nat).(\forall (h: nat).(\forall (n: nat).((le (plus d h) n) \to (le d (S (minus n h)))))) \def \lambda (d: nat).(\lambda (h: nat).(\lambda (n: nat).(\lambda (H: (le (plus -d h) n)).(let TMP_757 \def (plus d h) in (let TMP_756 \def (le_plus_l d h) in -(let H0 \def (le_trans d TMP_757 n TMP_756 H) in (let TMP_764 \def (\lambda -(n0: nat).(le d n0)) in (let TMP_762 \def (minus n h) in (let TMP_763 \def -(plus TMP_762 h) in (let TMP_759 \def (plus d h) in (let TMP_758 \def -(le_plus_r d h) in (let TMP_760 \def (le_trans h TMP_759 n TMP_758 H) in (let -TMP_761 \def (le_plus_minus_sym h n TMP_760) in (let H1 \def (eq_ind nat n -TMP_764 H0 TMP_763 TMP_761) in (let TMP_766 \def (minus n h) in (let TMP_765 -\def (le_minus d n h H) in (le_S d TMP_766 TMP_765))))))))))))))))). +d h) n)).(let TMP_1 \def (plus d h) in (let TMP_2 \def (le_plus_l d h) in +(let H0 \def (le_trans d TMP_1 n TMP_2 H) in (let TMP_3 \def (\lambda (n0: +nat).(le d n0)) in (let TMP_4 \def (minus n h) in (let TMP_5 \def (plus TMP_4 +h) in (let TMP_6 \def (plus d h) in (let TMP_7 \def (le_plus_r d h) in (let +TMP_8 \def (le_trans h TMP_6 n TMP_7 H) in (let TMP_9 \def (le_plus_minus_sym +h n TMP_8) in (let H1 \def (eq_ind nat n TMP_3 H0 TMP_5 TMP_9) in (let TMP_10 +\def (minus n h) in (let TMP_11 \def (le_minus d n h H) in (le_S d TMP_10 +TMP_11))))))))))))))))). theorem lt_x_pred_y: \forall (x: nat).(\forall (y: nat).((lt x (pred y)) \to (lt (S x) y))) \def - \lambda (x: nat).(\lambda (y: nat).(let TMP_772 \def (\lambda (n: nat).((lt -x (pred n)) \to (let TMP_771 \def (S x) in (lt TMP_771 n)))) in (let TMP_770 -\def (\lambda (H: (lt x O)).(let TMP_768 \def (S x) in (let TMP_769 \def (lt -TMP_768 O) in (lt_x_O x H TMP_769)))) in (let TMP_767 \def (\lambda (n: -nat).(\lambda (_: (((lt x (pred n)) \to (lt (S x) n)))).(\lambda (H0: (lt x -n)).(lt_n_S x n H0)))) in (nat_ind TMP_772 TMP_770 TMP_767 y))))). + \lambda (x: nat).(\lambda (y: nat).(let TMP_2 \def (\lambda (n: nat).((lt x +(pred n)) \to (let TMP_1 \def (S x) in (lt TMP_1 n)))) in (let TMP_5 \def +(\lambda (H: (lt x O)).(let TMP_3 \def (S x) in (let TMP_4 \def (lt TMP_3 O) +in (lt_x_O x H TMP_4)))) in (let TMP_6 \def (\lambda (n: nat).(\lambda (_: +(((lt x (pred n)) \to (lt (S x) n)))).(\lambda (H0: (lt x n)).(lt_n_S x n +H0)))) in (nat_ind TMP_2 TMP_5 TMP_6 y))))). diff --git a/matita/matita/contribs/lambdadelta/ground_1/ext/tactics.ma b/matita/matita/contribs/lambdadelta/ground_1/ext/tactics.ma index a868d6db8..ef7d48075 100644 --- a/matita/matita/contribs/lambdadelta/ground_1/ext/tactics.ma +++ b/matita/matita/contribs/lambdadelta/ground_1/ext/tactics.ma @@ -38,6 +38,6 @@ theorem xinduction: (x: A).((eq A t x) \to (P x)))) \to (P t)))) \def \lambda (A: Type[0]).(\lambda (t: A).(\lambda (P: ((A \to Prop))).(\lambda -(H: ((\forall (x: A).((eq A t x) \to (P x))))).(let TMP_2 \def (refl_equal A -t) in (H t TMP_2))))). +(H: ((\forall (x: A).((eq A t x) \to (P x))))).(let TMP_1 \def (refl_equal A +t) in (H t TMP_1))))). diff --git a/matita/matita/contribs/lambdadelta/ground_1/plist/defs.ma b/matita/matita/contribs/lambdadelta/ground_1/plist/defs.ma index 008493722..fb5163dde 100644 --- a/matita/matita/contribs/lambdadelta/ground_1/plist/defs.ma +++ b/matita/matita/contribs/lambdadelta/ground_1/plist/defs.ma @@ -22,14 +22,14 @@ inductive PList: Type[0] \def let rec PConsTail (hds: PList) on hds: nat \to (nat \to PList) \def \lambda (h0: nat).(\lambda (d0: nat).(match hds with [PNil \Rightarrow (PCons h0 d0 -PNil) | (PCons h d hds0) \Rightarrow (let TMP_855 \def (PConsTail hds0 h0 d0) -in (PCons h d TMP_855))])). +PNil) | (PCons h d hds0) \Rightarrow (let TMP_1 \def (PConsTail hds0 h0 d0) +in (PCons h d TMP_1))])). let rec Ss (hds: PList) on hds: PList \def match hds with [PNil \Rightarrow -PNil | (PCons h d hds0) \Rightarrow (let TMP_857 \def (S d) in (let TMP_856 -\def (Ss hds0) in (PCons h TMP_857 TMP_856)))]. +PNil | (PCons h d hds0) \Rightarrow (let TMP_1 \def (S d) in (let TMP_2 \def +(Ss hds0) in (PCons h TMP_1 TMP_2)))]. let rec papp (a: PList) on a: PList \to PList \def \lambda (b: PList).(match -a with [PNil \Rightarrow b | (PCons h d a0) \Rightarrow (let TMP_858 \def -(papp a0 b) in (PCons h d TMP_858))]). +a with [PNil \Rightarrow b | (PCons h d a0) \Rightarrow (let TMP_1 \def (papp +a0 b) in (PCons h d TMP_1))]). diff --git a/matita/matita/contribs/lambdadelta/ground_1/plist/props.ma b/matita/matita/contribs/lambdadelta/ground_1/plist/props.ma index 18cf0589e..81bf3f928 100644 --- a/matita/matita/contribs/lambdadelta/ground_1/plist/props.ma +++ b/matita/matita/contribs/lambdadelta/ground_1/plist/props.ma @@ -20,23 +20,22 @@ theorem papp_ss: \forall (is1: PList).(\forall (is2: PList).(eq PList (papp (Ss is1) (Ss is2)) (Ss (papp is1 is2)))) \def - \lambda (is1: PList).(let TMP_885 \def (\lambda (p: PList).(\forall (is2: -PList).(let TMP_883 \def (Ss p) in (let TMP_882 \def (Ss is2) in (let TMP_884 -\def (papp TMP_883 TMP_882) in (let TMP_880 \def (papp p is2) in (let TMP_881 -\def (Ss TMP_880) in (eq PList TMP_884 TMP_881)))))))) in (let TMP_879 \def -(\lambda (is2: PList).(let TMP_878 \def (Ss is2) in (refl_equal PList -TMP_878))) in (let TMP_877 \def (\lambda (n: nat).(\lambda (n0: nat).(\lambda -(p: PList).(\lambda (H: ((\forall (is2: PList).(eq PList (papp (Ss p) (Ss -is2)) (Ss (papp p is2)))))).(\lambda (is2: PList).(let TMP_875 \def (papp p -is2) in (let TMP_876 \def (Ss TMP_875) in (let TMP_874 \def (\lambda (p0: -PList).(let TMP_872 \def (S n0) in (let TMP_873 \def (PCons n TMP_872 p0) in -(let TMP_870 \def (S n0) in (let TMP_868 \def (papp p is2) in (let TMP_869 -\def (Ss TMP_868) in (let TMP_871 \def (PCons n TMP_870 TMP_869) in (eq PList -TMP_873 TMP_871)))))))) in (let TMP_865 \def (S n0) in (let TMP_863 \def -(papp p is2) in (let TMP_864 \def (Ss TMP_863) in (let TMP_866 \def (PCons n -TMP_865 TMP_864) in (let TMP_867 \def (refl_equal PList TMP_866) in (let -TMP_861 \def (Ss p) in (let TMP_860 \def (Ss is2) in (let TMP_862 \def (papp -TMP_861 TMP_860) in (let TMP_859 \def (H is2) in (eq_ind_r PList TMP_876 -TMP_874 TMP_867 TMP_862 TMP_859)))))))))))))))))) in (PList_ind TMP_885 -TMP_879 TMP_877 is1)))). + \lambda (is1: PList).(let TMP_6 \def (\lambda (p: PList).(\forall (is2: +PList).(let TMP_1 \def (Ss p) in (let TMP_2 \def (Ss is2) in (let TMP_3 \def +(papp TMP_1 TMP_2) in (let TMP_4 \def (papp p is2) in (let TMP_5 \def (Ss +TMP_4) in (eq PList TMP_3 TMP_5)))))))) in (let TMP_8 \def (\lambda (is2: +PList).(let TMP_7 \def (Ss is2) in (refl_equal PList TMP_7))) in (let TMP_27 +\def (\lambda (n: nat).(\lambda (n0: nat).(\lambda (p: PList).(\lambda (H: +((\forall (is2: PList).(eq PList (papp (Ss p) (Ss is2)) (Ss (papp p +is2)))))).(\lambda (is2: PList).(let TMP_9 \def (papp p is2) in (let TMP_10 +\def (Ss TMP_9) in (let TMP_17 \def (\lambda (p0: PList).(let TMP_11 \def (S +n0) in (let TMP_12 \def (PCons n TMP_11 p0) in (let TMP_13 \def (S n0) in +(let TMP_14 \def (papp p is2) in (let TMP_15 \def (Ss TMP_14) in (let TMP_16 +\def (PCons n TMP_13 TMP_15) in (eq PList TMP_12 TMP_16)))))))) in (let +TMP_18 \def (S n0) in (let TMP_19 \def (papp p is2) in (let TMP_20 \def (Ss +TMP_19) in (let TMP_21 \def (PCons n TMP_18 TMP_20) in (let TMP_22 \def +(refl_equal PList TMP_21) in (let TMP_23 \def (Ss p) in (let TMP_24 \def (Ss +is2) in (let TMP_25 \def (papp TMP_23 TMP_24) in (let TMP_26 \def (H is2) in +(eq_ind_r PList TMP_10 TMP_17 TMP_22 TMP_25 TMP_26)))))))))))))))))) in +(PList_ind TMP_6 TMP_8 TMP_27 is1)))). diff --git a/matita/matita/contribs/lambdadelta/ground_1/theory.ma b/matita/matita/contribs/lambdadelta/ground_1/theory.ma index e563c691a..2f7065443 100644 --- a/matita/matita/contribs/lambdadelta/ground_1/theory.ma +++ b/matita/matita/contribs/lambdadelta/ground_1/theory.ma @@ -16,6 +16,8 @@ include "ground_1/ext/tactics.ma". +include "ground_1/types/fwd.ma". + include "ground_1/types/props.ma". include "ground_1/ext/arith.ma". diff --git a/matita/matita/contribs/lambdadelta/ground_1/types/fwd.ma b/matita/matita/contribs/lambdadelta/ground_1/types/fwd.ma new file mode 100644 index 000000000..d1139518f --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground_1/types/fwd.ma @@ -0,0 +1,419 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.cs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +(* This file was automatically generated: do not edit *********************) + +include "ground_1/types/defs.ma". + +theorem and3_rect: + \forall (P0: Prop).(\forall (P1: Prop).(\forall (P2: Prop).(\forall (P: +Type[0]).(((P0 \to (P1 \to (P2 \to P)))) \to ((and3 P0 P1 P2) \to P))))) +\def + \lambda (P0: Prop).(\lambda (P1: Prop).(\lambda (P2: Prop).(\lambda (P: +Type[0]).(\lambda (f: ((P0 \to (P1 \to (P2 \to P))))).(\lambda (a: (and3 P0 +P1 P2)).(match a with [(and3_intro x x0 x1) \Rightarrow (f x x0 x1)])))))). + +theorem and3_ind: + \forall (P0: Prop).(\forall (P1: Prop).(\forall (P2: Prop).(\forall (P: +Prop).(((P0 \to (P1 \to (P2 \to P)))) \to ((and3 P0 P1 P2) \to P))))) +\def + \lambda (P0: Prop).(\lambda (P1: Prop).(\lambda (P2: Prop).(\lambda (P: +Prop).(and3_rect P0 P1 P2 P)))). + +theorem and4_rect: + \forall (P0: Prop).(\forall (P1: Prop).(\forall (P2: Prop).(\forall (P3: +Prop).(\forall (P: Type[0]).(((P0 \to (P1 \to (P2 \to (P3 \to P))))) \to +((and4 P0 P1 P2 P3) \to P)))))) +\def + \lambda (P0: Prop).(\lambda (P1: Prop).(\lambda (P2: Prop).(\lambda (P3: +Prop).(\lambda (P: Type[0]).(\lambda (f: ((P0 \to (P1 \to (P2 \to (P3 \to +P)))))).(\lambda (a: (and4 P0 P1 P2 P3)).(match a with [(and4_intro x x0 x1 +x2) \Rightarrow (f x x0 x1 x2)]))))))). + +theorem and4_ind: + \forall (P0: Prop).(\forall (P1: Prop).(\forall (P2: Prop).(\forall (P3: +Prop).(\forall (P: Prop).(((P0 \to (P1 \to (P2 \to (P3 \to P))))) \to ((and4 +P0 P1 P2 P3) \to P)))))) +\def + \lambda (P0: Prop).(\lambda (P1: Prop).(\lambda (P2: Prop).(\lambda (P3: +Prop).(\lambda (P: Prop).(and4_rect P0 P1 P2 P3 P))))). + +theorem and5_rect: + \forall (P0: Prop).(\forall (P1: Prop).(\forall (P2: Prop).(\forall (P3: +Prop).(\forall (P4: Prop).(\forall (P: Type[0]).(((P0 \to (P1 \to (P2 \to (P3 +\to (P4 \to P)))))) \to ((and5 P0 P1 P2 P3 P4) \to P))))))) +\def + \lambda (P0: Prop).(\lambda (P1: Prop).(\lambda (P2: Prop).(\lambda (P3: +Prop).(\lambda (P4: Prop).(\lambda (P: Type[0]).(\lambda (f: ((P0 \to (P1 \to +(P2 \to (P3 \to (P4 \to P))))))).(\lambda (a: (and5 P0 P1 P2 P3 P4)).(match a +with [(and5_intro x x0 x1 x2 x3) \Rightarrow (f x x0 x1 x2 x3)])))))))). + +theorem and5_ind: + \forall (P0: Prop).(\forall (P1: Prop).(\forall (P2: Prop).(\forall (P3: +Prop).(\forall (P4: Prop).(\forall (P: Prop).(((P0 \to (P1 \to (P2 \to (P3 +\to (P4 \to P)))))) \to ((and5 P0 P1 P2 P3 P4) \to P))))))) +\def + \lambda (P0: Prop).(\lambda (P1: Prop).(\lambda (P2: Prop).(\lambda (P3: +Prop).(\lambda (P4: Prop).(\lambda (P: Prop).(and5_rect P0 P1 P2 P3 P4 +P)))))). + +theorem or3_ind: + \forall (P0: Prop).(\forall (P1: Prop).(\forall (P2: Prop).(\forall (P: +Prop).(((P0 \to P)) \to (((P1 \to P)) \to (((P2 \to P)) \to ((or3 P0 P1 P2) +\to P))))))) +\def + \lambda (P0: Prop).(\lambda (P1: Prop).(\lambda (P2: Prop).(\lambda (P: +Prop).(\lambda (f: ((P0 \to P))).(\lambda (f0: ((P1 \to P))).(\lambda (f1: +((P2 \to P))).(\lambda (o: (or3 P0 P1 P2)).(match o with [(or3_intro0 x) +\Rightarrow (f x) | (or3_intro1 x) \Rightarrow (f0 x) | (or3_intro2 x) +\Rightarrow (f1 x)])))))))). + +theorem or4_ind: + \forall (P0: Prop).(\forall (P1: Prop).(\forall (P2: Prop).(\forall (P3: +Prop).(\forall (P: Prop).(((P0 \to P)) \to (((P1 \to P)) \to (((P2 \to P)) +\to (((P3 \to P)) \to ((or4 P0 P1 P2 P3) \to P))))))))) +\def + \lambda (P0: Prop).(\lambda (P1: Prop).(\lambda (P2: Prop).(\lambda (P3: +Prop).(\lambda (P: Prop).(\lambda (f: ((P0 \to P))).(\lambda (f0: ((P1 \to +P))).(\lambda (f1: ((P2 \to P))).(\lambda (f2: ((P3 \to P))).(\lambda (o: +(or4 P0 P1 P2 P3)).(match o with [(or4_intro0 x) \Rightarrow (f x) | +(or4_intro1 x) \Rightarrow (f0 x) | (or4_intro2 x) \Rightarrow (f1 x) | +(or4_intro3 x) \Rightarrow (f2 x)])))))))))). + +theorem or5_ind: + \forall (P0: Prop).(\forall (P1: Prop).(\forall (P2: Prop).(\forall (P3: +Prop).(\forall (P4: Prop).(\forall (P: Prop).(((P0 \to P)) \to (((P1 \to P)) +\to (((P2 \to P)) \to (((P3 \to P)) \to (((P4 \to P)) \to ((or5 P0 P1 P2 P3 +P4) \to P))))))))))) +\def + \lambda (P0: Prop).(\lambda (P1: Prop).(\lambda (P2: Prop).(\lambda (P3: +Prop).(\lambda (P4: Prop).(\lambda (P: Prop).(\lambda (f: ((P0 \to +P))).(\lambda (f0: ((P1 \to P))).(\lambda (f1: ((P2 \to P))).(\lambda (f2: +((P3 \to P))).(\lambda (f3: ((P4 \to P))).(\lambda (o: (or5 P0 P1 P2 P3 +P4)).(match o with [(or5_intro0 x) \Rightarrow (f x) | (or5_intro1 x) +\Rightarrow (f0 x) | (or5_intro2 x) \Rightarrow (f1 x) | (or5_intro3 x) +\Rightarrow (f2 x) | (or5_intro4 x) \Rightarrow (f3 x)])))))))))))). + +theorem ex3_ind: + \forall (A0: Type[0]).(\forall (P0: ((A0 \to Prop))).(\forall (P1: ((A0 \to +Prop))).(\forall (P2: ((A0 \to Prop))).(\forall (P: Prop).(((\forall (x0: +A0).((P0 x0) \to ((P1 x0) \to ((P2 x0) \to P))))) \to ((ex3 A0 P0 P1 P2) \to +P)))))) +\def + \lambda (A0: Type[0]).(\lambda (P0: ((A0 \to Prop))).(\lambda (P1: ((A0 \to +Prop))).(\lambda (P2: ((A0 \to Prop))).(\lambda (P: Prop).(\lambda (f: +((\forall (x0: A0).((P0 x0) \to ((P1 x0) \to ((P2 x0) \to P)))))).(\lambda +(e: (ex3 A0 P0 P1 P2)).(match e with [(ex3_intro x x0 x1 x2) \Rightarrow (f x +x0 x1 x2)]))))))). + +theorem ex4_ind: + \forall (A0: Type[0]).(\forall (P0: ((A0 \to Prop))).(\forall (P1: ((A0 \to +Prop))).(\forall (P2: ((A0 \to Prop))).(\forall (P3: ((A0 \to +Prop))).(\forall (P: Prop).(((\forall (x0: A0).((P0 x0) \to ((P1 x0) \to ((P2 +x0) \to ((P3 x0) \to P)))))) \to ((ex4 A0 P0 P1 P2 P3) \to P))))))) +\def + \lambda (A0: Type[0]).(\lambda (P0: ((A0 \to Prop))).(\lambda (P1: ((A0 \to +Prop))).(\lambda (P2: ((A0 \to Prop))).(\lambda (P3: ((A0 \to +Prop))).(\lambda (P: Prop).(\lambda (f: ((\forall (x0: A0).((P0 x0) \to ((P1 +x0) \to ((P2 x0) \to ((P3 x0) \to P))))))).(\lambda (e: (ex4 A0 P0 P1 P2 +P3)).(match e with [(ex4_intro x x0 x1 x2 x3) \Rightarrow (f x x0 x1 x2 +x3)])))))))). + +theorem ex_2_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (P0: ((A0 \to (A1 \to +Prop)))).(\forall (P: Prop).(((\forall (x0: A0).(\forall (x1: A1).((P0 x0 x1) +\to P)))) \to ((ex_2 A0 A1 P0) \to P))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (P0: ((A0 \to (A1 \to +Prop)))).(\lambda (P: Prop).(\lambda (f: ((\forall (x0: A0).(\forall (x1: +A1).((P0 x0 x1) \to P))))).(\lambda (e: (ex_2 A0 A1 P0)).(match e with +[(ex_2_intro x x0 x1) \Rightarrow (f x x0 x1)])))))). + +theorem ex2_2_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (P0: ((A0 \to (A1 \to +Prop)))).(\forall (P1: ((A0 \to (A1 \to Prop)))).(\forall (P: +Prop).(((\forall (x0: A0).(\forall (x1: A1).((P0 x0 x1) \to ((P1 x0 x1) \to +P))))) \to ((ex2_2 A0 A1 P0 P1) \to P)))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (P0: ((A0 \to (A1 \to +Prop)))).(\lambda (P1: ((A0 \to (A1 \to Prop)))).(\lambda (P: Prop).(\lambda +(f: ((\forall (x0: A0).(\forall (x1: A1).((P0 x0 x1) \to ((P1 x0 x1) \to +P)))))).(\lambda (e: (ex2_2 A0 A1 P0 P1)).(match e with [(ex2_2_intro x x0 x1 +x2) \Rightarrow (f x x0 x1 x2)]))))))). + +theorem ex3_2_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (P0: ((A0 \to (A1 \to +Prop)))).(\forall (P1: ((A0 \to (A1 \to Prop)))).(\forall (P2: ((A0 \to (A1 +\to Prop)))).(\forall (P: Prop).(((\forall (x0: A0).(\forall (x1: A1).((P0 x0 +x1) \to ((P1 x0 x1) \to ((P2 x0 x1) \to P)))))) \to ((ex3_2 A0 A1 P0 P1 P2) +\to P))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (P0: ((A0 \to (A1 \to +Prop)))).(\lambda (P1: ((A0 \to (A1 \to Prop)))).(\lambda (P2: ((A0 \to (A1 +\to Prop)))).(\lambda (P: Prop).(\lambda (f: ((\forall (x0: A0).(\forall (x1: +A1).((P0 x0 x1) \to ((P1 x0 x1) \to ((P2 x0 x1) \to P))))))).(\lambda (e: +(ex3_2 A0 A1 P0 P1 P2)).(match e with [(ex3_2_intro x x0 x1 x2 x3) +\Rightarrow (f x x0 x1 x2 x3)])))))))). + +theorem ex4_2_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (P0: ((A0 \to (A1 \to +Prop)))).(\forall (P1: ((A0 \to (A1 \to Prop)))).(\forall (P2: ((A0 \to (A1 +\to Prop)))).(\forall (P3: ((A0 \to (A1 \to Prop)))).(\forall (P: +Prop).(((\forall (x0: A0).(\forall (x1: A1).((P0 x0 x1) \to ((P1 x0 x1) \to +((P2 x0 x1) \to ((P3 x0 x1) \to P))))))) \to ((ex4_2 A0 A1 P0 P1 P2 P3) \to +P)))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (P0: ((A0 \to (A1 \to +Prop)))).(\lambda (P1: ((A0 \to (A1 \to Prop)))).(\lambda (P2: ((A0 \to (A1 +\to Prop)))).(\lambda (P3: ((A0 \to (A1 \to Prop)))).(\lambda (P: +Prop).(\lambda (f: ((\forall (x0: A0).(\forall (x1: A1).((P0 x0 x1) \to ((P1 +x0 x1) \to ((P2 x0 x1) \to ((P3 x0 x1) \to P)))))))).(\lambda (e: (ex4_2 A0 +A1 P0 P1 P2 P3)).(match e with [(ex4_2_intro x x0 x1 x2 x3 x4) \Rightarrow (f +x x0 x1 x2 x3 x4)]))))))))). + +theorem ex_3_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall +(P0: ((A0 \to (A1 \to (A2 \to Prop))))).(\forall (P: Prop).(((\forall (x0: +A0).(\forall (x1: A1).(\forall (x2: A2).((P0 x0 x1 x2) \to P))))) \to ((ex_3 +A0 A1 A2 P0) \to P)))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda +(P0: ((A0 \to (A1 \to (A2 \to Prop))))).(\lambda (P: Prop).(\lambda (f: +((\forall (x0: A0).(\forall (x1: A1).(\forall (x2: A2).((P0 x0 x1 x2) \to +P)))))).(\lambda (e: (ex_3 A0 A1 A2 P0)).(match e with [(ex_3_intro x x0 x1 +x2) \Rightarrow (f x x0 x1 x2)]))))))). + +theorem ex2_3_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall +(P0: ((A0 \to (A1 \to (A2 \to Prop))))).(\forall (P1: ((A0 \to (A1 \to (A2 +\to Prop))))).(\forall (P: Prop).(((\forall (x0: A0).(\forall (x1: +A1).(\forall (x2: A2).((P0 x0 x1 x2) \to ((P1 x0 x1 x2) \to P)))))) \to +((ex2_3 A0 A1 A2 P0 P1) \to P))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda +(P0: ((A0 \to (A1 \to (A2 \to Prop))))).(\lambda (P1: ((A0 \to (A1 \to (A2 +\to Prop))))).(\lambda (P: Prop).(\lambda (f: ((\forall (x0: A0).(\forall +(x1: A1).(\forall (x2: A2).((P0 x0 x1 x2) \to ((P1 x0 x1 x2) \to +P))))))).(\lambda (e: (ex2_3 A0 A1 A2 P0 P1)).(match e with [(ex2_3_intro x +x0 x1 x2 x3) \Rightarrow (f x x0 x1 x2 x3)])))))))). + +theorem ex3_3_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall +(P0: ((A0 \to (A1 \to (A2 \to Prop))))).(\forall (P1: ((A0 \to (A1 \to (A2 +\to Prop))))).(\forall (P2: ((A0 \to (A1 \to (A2 \to Prop))))).(\forall (P: +Prop).(((\forall (x0: A0).(\forall (x1: A1).(\forall (x2: A2).((P0 x0 x1 x2) +\to ((P1 x0 x1 x2) \to ((P2 x0 x1 x2) \to P))))))) \to ((ex3_3 A0 A1 A2 P0 P1 +P2) \to P)))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda +(P0: ((A0 \to (A1 \to (A2 \to Prop))))).(\lambda (P1: ((A0 \to (A1 \to (A2 +\to Prop))))).(\lambda (P2: ((A0 \to (A1 \to (A2 \to Prop))))).(\lambda (P: +Prop).(\lambda (f: ((\forall (x0: A0).(\forall (x1: A1).(\forall (x2: +A2).((P0 x0 x1 x2) \to ((P1 x0 x1 x2) \to ((P2 x0 x1 x2) \to +P)))))))).(\lambda (e: (ex3_3 A0 A1 A2 P0 P1 P2)).(match e with [(ex3_3_intro +x x0 x1 x2 x3 x4) \Rightarrow (f x x0 x1 x2 x3 x4)]))))))))). + +theorem ex4_3_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall +(P0: ((A0 \to (A1 \to (A2 \to Prop))))).(\forall (P1: ((A0 \to (A1 \to (A2 +\to Prop))))).(\forall (P2: ((A0 \to (A1 \to (A2 \to Prop))))).(\forall (P3: +((A0 \to (A1 \to (A2 \to Prop))))).(\forall (P: Prop).(((\forall (x0: +A0).(\forall (x1: A1).(\forall (x2: A2).((P0 x0 x1 x2) \to ((P1 x0 x1 x2) \to +((P2 x0 x1 x2) \to ((P3 x0 x1 x2) \to P)))))))) \to ((ex4_3 A0 A1 A2 P0 P1 P2 +P3) \to P))))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda +(P0: ((A0 \to (A1 \to (A2 \to Prop))))).(\lambda (P1: ((A0 \to (A1 \to (A2 +\to Prop))))).(\lambda (P2: ((A0 \to (A1 \to (A2 \to Prop))))).(\lambda (P3: +((A0 \to (A1 \to (A2 \to Prop))))).(\lambda (P: Prop).(\lambda (f: ((\forall +(x0: A0).(\forall (x1: A1).(\forall (x2: A2).((P0 x0 x1 x2) \to ((P1 x0 x1 +x2) \to ((P2 x0 x1 x2) \to ((P3 x0 x1 x2) \to P))))))))).(\lambda (e: (ex4_3 +A0 A1 A2 P0 P1 P2 P3)).(match e with [(ex4_3_intro x x0 x1 x2 x3 x4 x5) +\Rightarrow (f x x0 x1 x2 x3 x4 x5)])))))))))). + +theorem ex5_3_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall +(P0: ((A0 \to (A1 \to (A2 \to Prop))))).(\forall (P1: ((A0 \to (A1 \to (A2 +\to Prop))))).(\forall (P2: ((A0 \to (A1 \to (A2 \to Prop))))).(\forall (P3: +((A0 \to (A1 \to (A2 \to Prop))))).(\forall (P4: ((A0 \to (A1 \to (A2 \to +Prop))))).(\forall (P: Prop).(((\forall (x0: A0).(\forall (x1: A1).(\forall +(x2: A2).((P0 x0 x1 x2) \to ((P1 x0 x1 x2) \to ((P2 x0 x1 x2) \to ((P3 x0 x1 +x2) \to ((P4 x0 x1 x2) \to P))))))))) \to ((ex5_3 A0 A1 A2 P0 P1 P2 P3 P4) +\to P)))))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda +(P0: ((A0 \to (A1 \to (A2 \to Prop))))).(\lambda (P1: ((A0 \to (A1 \to (A2 +\to Prop))))).(\lambda (P2: ((A0 \to (A1 \to (A2 \to Prop))))).(\lambda (P3: +((A0 \to (A1 \to (A2 \to Prop))))).(\lambda (P4: ((A0 \to (A1 \to (A2 \to +Prop))))).(\lambda (P: Prop).(\lambda (f: ((\forall (x0: A0).(\forall (x1: +A1).(\forall (x2: A2).((P0 x0 x1 x2) \to ((P1 x0 x1 x2) \to ((P2 x0 x1 x2) +\to ((P3 x0 x1 x2) \to ((P4 x0 x1 x2) \to P)))))))))).(\lambda (e: (ex5_3 A0 +A1 A2 P0 P1 P2 P3 P4)).(match e with [(ex5_3_intro x x0 x1 x2 x3 x4 x5 x6) +\Rightarrow (f x x0 x1 x2 x3 x4 x5 x6)]))))))))))). + +theorem ex3_4_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall +(A3: Type[0]).(\forall (P0: ((A0 \to (A1 \to (A2 \to (A3 \to +Prop)))))).(\forall (P1: ((A0 \to (A1 \to (A2 \to (A3 \to Prop)))))).(\forall +(P2: ((A0 \to (A1 \to (A2 \to (A3 \to Prop)))))).(\forall (P: +Prop).(((\forall (x0: A0).(\forall (x1: A1).(\forall (x2: A2).(\forall (x3: +A3).((P0 x0 x1 x2 x3) \to ((P1 x0 x1 x2 x3) \to ((P2 x0 x1 x2 x3) \to +P)))))))) \to ((ex3_4 A0 A1 A2 A3 P0 P1 P2) \to P))))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda +(A3: Type[0]).(\lambda (P0: ((A0 \to (A1 \to (A2 \to (A3 \to +Prop)))))).(\lambda (P1: ((A0 \to (A1 \to (A2 \to (A3 \to Prop)))))).(\lambda +(P2: ((A0 \to (A1 \to (A2 \to (A3 \to Prop)))))).(\lambda (P: Prop).(\lambda +(f: ((\forall (x0: A0).(\forall (x1: A1).(\forall (x2: A2).(\forall (x3: +A3).((P0 x0 x1 x2 x3) \to ((P1 x0 x1 x2 x3) \to ((P2 x0 x1 x2 x3) \to +P))))))))).(\lambda (e: (ex3_4 A0 A1 A2 A3 P0 P1 P2)).(match e with +[(ex3_4_intro x x0 x1 x2 x3 x4 x5) \Rightarrow (f x x0 x1 x2 x3 x4 +x5)])))))))))). + +theorem ex4_4_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall +(A3: Type[0]).(\forall (P0: ((A0 \to (A1 \to (A2 \to (A3 \to +Prop)))))).(\forall (P1: ((A0 \to (A1 \to (A2 \to (A3 \to Prop)))))).(\forall +(P2: ((A0 \to (A1 \to (A2 \to (A3 \to Prop)))))).(\forall (P3: ((A0 \to (A1 +\to (A2 \to (A3 \to Prop)))))).(\forall (P: Prop).(((\forall (x0: +A0).(\forall (x1: A1).(\forall (x2: A2).(\forall (x3: A3).((P0 x0 x1 x2 x3) +\to ((P1 x0 x1 x2 x3) \to ((P2 x0 x1 x2 x3) \to ((P3 x0 x1 x2 x3) \to +P))))))))) \to ((ex4_4 A0 A1 A2 A3 P0 P1 P2 P3) \to P)))))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda +(A3: Type[0]).(\lambda (P0: ((A0 \to (A1 \to (A2 \to (A3 \to +Prop)))))).(\lambda (P1: ((A0 \to (A1 \to (A2 \to (A3 \to Prop)))))).(\lambda +(P2: ((A0 \to (A1 \to (A2 \to (A3 \to Prop)))))).(\lambda (P3: ((A0 \to (A1 +\to (A2 \to (A3 \to Prop)))))).(\lambda (P: Prop).(\lambda (f: ((\forall (x0: +A0).(\forall (x1: A1).(\forall (x2: A2).(\forall (x3: A3).((P0 x0 x1 x2 x3) +\to ((P1 x0 x1 x2 x3) \to ((P2 x0 x1 x2 x3) \to ((P3 x0 x1 x2 x3) \to +P)))))))))).(\lambda (e: (ex4_4 A0 A1 A2 A3 P0 P1 P2 P3)).(match e with +[(ex4_4_intro x x0 x1 x2 x3 x4 x5 x6) \Rightarrow (f x x0 x1 x2 x3 x4 x5 +x6)]))))))))))). + +theorem ex4_5_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall +(A3: Type[0]).(\forall (A4: Type[0]).(\forall (P0: ((A0 \to (A1 \to (A2 \to +(A3 \to (A4 \to Prop))))))).(\forall (P1: ((A0 \to (A1 \to (A2 \to (A3 \to +(A4 \to Prop))))))).(\forall (P2: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to +Prop))))))).(\forall (P3: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to +Prop))))))).(\forall (P: Prop).(((\forall (x0: A0).(\forall (x1: A1).(\forall +(x2: A2).(\forall (x3: A3).(\forall (x4: A4).((P0 x0 x1 x2 x3 x4) \to ((P1 x0 +x1 x2 x3 x4) \to ((P2 x0 x1 x2 x3 x4) \to ((P3 x0 x1 x2 x3 x4) \to +P)))))))))) \to ((ex4_5 A0 A1 A2 A3 A4 P0 P1 P2 P3) \to P))))))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda +(A3: Type[0]).(\lambda (A4: Type[0]).(\lambda (P0: ((A0 \to (A1 \to (A2 \to +(A3 \to (A4 \to Prop))))))).(\lambda (P1: ((A0 \to (A1 \to (A2 \to (A3 \to +(A4 \to Prop))))))).(\lambda (P2: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to +Prop))))))).(\lambda (P3: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to +Prop))))))).(\lambda (P: Prop).(\lambda (f: ((\forall (x0: A0).(\forall (x1: +A1).(\forall (x2: A2).(\forall (x3: A3).(\forall (x4: A4).((P0 x0 x1 x2 x3 +x4) \to ((P1 x0 x1 x2 x3 x4) \to ((P2 x0 x1 x2 x3 x4) \to ((P3 x0 x1 x2 x3 +x4) \to P))))))))))).(\lambda (e: (ex4_5 A0 A1 A2 A3 A4 P0 P1 P2 P3)).(match +e with [(ex4_5_intro x x0 x1 x2 x3 x4 x5 x6 x7) \Rightarrow (f x x0 x1 x2 x3 +x4 x5 x6 x7)])))))))))))). + +theorem ex5_5_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall +(A3: Type[0]).(\forall (A4: Type[0]).(\forall (P0: ((A0 \to (A1 \to (A2 \to +(A3 \to (A4 \to Prop))))))).(\forall (P1: ((A0 \to (A1 \to (A2 \to (A3 \to +(A4 \to Prop))))))).(\forall (P2: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to +Prop))))))).(\forall (P3: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to +Prop))))))).(\forall (P4: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to +Prop))))))).(\forall (P: Prop).(((\forall (x0: A0).(\forall (x1: A1).(\forall +(x2: A2).(\forall (x3: A3).(\forall (x4: A4).((P0 x0 x1 x2 x3 x4) \to ((P1 x0 +x1 x2 x3 x4) \to ((P2 x0 x1 x2 x3 x4) \to ((P3 x0 x1 x2 x3 x4) \to ((P4 x0 x1 +x2 x3 x4) \to P))))))))))) \to ((ex5_5 A0 A1 A2 A3 A4 P0 P1 P2 P3 P4) \to +P)))))))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda +(A3: Type[0]).(\lambda (A4: Type[0]).(\lambda (P0: ((A0 \to (A1 \to (A2 \to +(A3 \to (A4 \to Prop))))))).(\lambda (P1: ((A0 \to (A1 \to (A2 \to (A3 \to +(A4 \to Prop))))))).(\lambda (P2: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to +Prop))))))).(\lambda (P3: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to +Prop))))))).(\lambda (P4: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to +Prop))))))).(\lambda (P: Prop).(\lambda (f: ((\forall (x0: A0).(\forall (x1: +A1).(\forall (x2: A2).(\forall (x3: A3).(\forall (x4: A4).((P0 x0 x1 x2 x3 +x4) \to ((P1 x0 x1 x2 x3 x4) \to ((P2 x0 x1 x2 x3 x4) \to ((P3 x0 x1 x2 x3 +x4) \to ((P4 x0 x1 x2 x3 x4) \to P)))))))))))).(\lambda (e: (ex5_5 A0 A1 A2 +A3 A4 P0 P1 P2 P3 P4)).(match e with [(ex5_5_intro x x0 x1 x2 x3 x4 x5 x6 x7 +x8) \Rightarrow (f x x0 x1 x2 x3 x4 x5 x6 x7 x8)]))))))))))))). + +theorem ex6_6_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall +(A3: Type[0]).(\forall (A4: Type[0]).(\forall (A5: Type[0]).(\forall (P0: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\forall (P1: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\forall (P2: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\forall (P3: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\forall (P4: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\forall (P5: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\forall (P: +Prop).(((\forall (x0: A0).(\forall (x1: A1).(\forall (x2: A2).(\forall (x3: +A3).(\forall (x4: A4).(\forall (x5: A5).((P0 x0 x1 x2 x3 x4 x5) \to ((P1 x0 +x1 x2 x3 x4 x5) \to ((P2 x0 x1 x2 x3 x4 x5) \to ((P3 x0 x1 x2 x3 x4 x5) \to +((P4 x0 x1 x2 x3 x4 x5) \to ((P5 x0 x1 x2 x3 x4 x5) \to P))))))))))))) \to +((ex6_6 A0 A1 A2 A3 A4 A5 P0 P1 P2 P3 P4 P5) \to P)))))))))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda +(A3: Type[0]).(\lambda (A4: Type[0]).(\lambda (A5: Type[0]).(\lambda (P0: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\lambda (P1: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\lambda (P2: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\lambda (P3: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\lambda (P4: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\lambda (P5: +((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to Prop)))))))).(\lambda (P: +Prop).(\lambda (f: ((\forall (x0: A0).(\forall (x1: A1).(\forall (x2: +A2).(\forall (x3: A3).(\forall (x4: A4).(\forall (x5: A5).((P0 x0 x1 x2 x3 x4 +x5) \to ((P1 x0 x1 x2 x3 x4 x5) \to ((P2 x0 x1 x2 x3 x4 x5) \to ((P3 x0 x1 x2 +x3 x4 x5) \to ((P4 x0 x1 x2 x3 x4 x5) \to ((P5 x0 x1 x2 x3 x4 x5) \to +P)))))))))))))).(\lambda (e: (ex6_6 A0 A1 A2 A3 A4 A5 P0 P1 P2 P3 P4 +P5)).(match e with [(ex6_6_intro x x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10) +\Rightarrow (f x x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10)]))))))))))))))). + +theorem ex6_7_ind: + \forall (A0: Type[0]).(\forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall +(A3: Type[0]).(\forall (A4: Type[0]).(\forall (A5: Type[0]).(\forall (A6: +Type[0]).(\forall (P0: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to (A6 +\to Prop))))))))).(\forall (P1: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 +\to (A6 \to Prop))))))))).(\forall (P2: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 +\to (A5 \to (A6 \to Prop))))))))).(\forall (P3: ((A0 \to (A1 \to (A2 \to (A3 +\to (A4 \to (A5 \to (A6 \to Prop))))))))).(\forall (P4: ((A0 \to (A1 \to (A2 +\to (A3 \to (A4 \to (A5 \to (A6 \to Prop))))))))).(\forall (P5: ((A0 \to (A1 +\to (A2 \to (A3 \to (A4 \to (A5 \to (A6 \to Prop))))))))).(\forall (P: +Prop).(((\forall (x0: A0).(\forall (x1: A1).(\forall (x2: A2).(\forall (x3: +A3).(\forall (x4: A4).(\forall (x5: A5).(\forall (x6: A6).((P0 x0 x1 x2 x3 x4 +x5 x6) \to ((P1 x0 x1 x2 x3 x4 x5 x6) \to ((P2 x0 x1 x2 x3 x4 x5 x6) \to ((P3 +x0 x1 x2 x3 x4 x5 x6) \to ((P4 x0 x1 x2 x3 x4 x5 x6) \to ((P5 x0 x1 x2 x3 x4 +x5 x6) \to P)))))))))))))) \to ((ex6_7 A0 A1 A2 A3 A4 A5 A6 P0 P1 P2 P3 P4 +P5) \to P))))))))))))))) +\def + \lambda (A0: Type[0]).(\lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda +(A3: Type[0]).(\lambda (A4: Type[0]).(\lambda (A5: Type[0]).(\lambda (A6: +Type[0]).(\lambda (P0: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 \to (A6 +\to Prop))))))))).(\lambda (P1: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 \to (A5 +\to (A6 \to Prop))))))))).(\lambda (P2: ((A0 \to (A1 \to (A2 \to (A3 \to (A4 +\to (A5 \to (A6 \to Prop))))))))).(\lambda (P3: ((A0 \to (A1 \to (A2 \to (A3 +\to (A4 \to (A5 \to (A6 \to Prop))))))))).(\lambda (P4: ((A0 \to (A1 \to (A2 +\to (A3 \to (A4 \to (A5 \to (A6 \to Prop))))))))).(\lambda (P5: ((A0 \to (A1 +\to (A2 \to (A3 \to (A4 \to (A5 \to (A6 \to Prop))))))))).(\lambda (P: +Prop).(\lambda (f: ((\forall (x0: A0).(\forall (x1: A1).(\forall (x2: +A2).(\forall (x3: A3).(\forall (x4: A4).(\forall (x5: A5).(\forall (x6: +A6).((P0 x0 x1 x2 x3 x4 x5 x6) \to ((P1 x0 x1 x2 x3 x4 x5 x6) \to ((P2 x0 x1 +x2 x3 x4 x5 x6) \to ((P3 x0 x1 x2 x3 x4 x5 x6) \to ((P4 x0 x1 x2 x3 x4 x5 x6) +\to ((P5 x0 x1 x2 x3 x4 x5 x6) \to P))))))))))))))).(\lambda (e: (ex6_7 A0 A1 +A2 A3 A4 A5 A6 P0 P1 P2 P3 P4 P5)).(match e with [(ex6_7_intro x x0 x1 x2 x3 +x4 x5 x6 x7 x8 x9 x10 x11) \Rightarrow (f x x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 +x11)])))))))))))))))). + diff --git a/matita/matita/contribs/lambdadelta/ground_1/types/props.ma b/matita/matita/contribs/lambdadelta/ground_1/types/props.ma index e6cdb238f..1948116a6 100644 --- a/matita/matita/contribs/lambdadelta/ground_1/types/props.ma +++ b/matita/matita/contribs/lambdadelta/ground_1/types/props.ma @@ -23,11 +23,11 @@ Prop))).((ex2 A (\lambda (x: A).(P x)) (\lambda (x: A).(Q x))) \to (ex2 A \def \lambda (A: Type[0]).(\lambda (P: ((A \to Prop))).(\lambda (Q: ((A \to Prop))).(\lambda (H: (ex2 A (\lambda (x: A).(P x)) (\lambda (x: A).(Q -x)))).(let TMP_10 \def (\lambda (x: A).(P x)) in (let TMP_9 \def (\lambda (x: -A).(Q x)) in (let TMP_7 \def (\lambda (x: A).(Q x)) in (let TMP_6 \def -(\lambda (x: A).(P x)) in (let TMP_8 \def (ex2 A TMP_7 TMP_6) in (let TMP_5 -\def (\lambda (x: A).(\lambda (H0: (P x)).(\lambda (H1: (Q x)).(let TMP_4 -\def (\lambda (x0: A).(Q x0)) in (let TMP_3 \def (\lambda (x0: A).(P x0)) in -(ex_intro2 A TMP_4 TMP_3 x H1 H0)))))) in (ex2_ind A TMP_10 TMP_9 TMP_8 TMP_5 +x)))).(let TMP_1 \def (\lambda (x: A).(P x)) in (let TMP_2 \def (\lambda (x: +A).(Q x)) in (let TMP_3 \def (\lambda (x: A).(Q x)) in (let TMP_4 \def +(\lambda (x: A).(P x)) in (let TMP_5 \def (ex2 A TMP_3 TMP_4) in (let TMP_8 +\def (\lambda (x: A).(\lambda (H0: (P x)).(\lambda (H1: (Q x)).(let TMP_6 +\def (\lambda (x0: A).(Q x0)) in (let TMP_7 \def (\lambda (x0: A).(P x0)) in +(ex_intro2 A TMP_6 TMP_7 x H1 H0)))))) in (ex2_ind A TMP_1 TMP_2 TMP_5 TMP_8 H)))))))))). diff --git a/matita/matita/contribs/lambdadelta/legacy_1/coq/defs.ma b/matita/matita/contribs/lambdadelta/legacy_1/coq/defs.ma index b059133d9..d9e9f05e8 100644 --- a/matita/matita/contribs/lambdadelta/legacy_1/coq/defs.ma +++ b/matita/matita/contribs/lambdadelta/legacy_1/coq/defs.ma @@ -69,8 +69,8 @@ definition pred: \lambda (n: nat).(match n with [O \Rightarrow O | (S u) \Rightarrow u]). let rec plus (n: nat) on n: nat \to nat \def \lambda (m: nat).(match n with -[O \Rightarrow m | (S p) \Rightarrow (let TMP_2 \def (plus p m) in (S -TMP_2))]). +[O \Rightarrow m | (S p) \Rightarrow (let TMP_1 \def (plus p m) in (S +TMP_1))]). let rec minus (n: nat) on n: nat \to nat \def \lambda (m: nat).(match n with [O \Rightarrow O | (S k) \Rightarrow (match m with [O \Rightarrow (S k) | (S @@ -90,6 +90,6 @@ definition ltof: \forall (A: Type[0]).(((A \to nat)) \to (A \to (A \to Prop))) \def \lambda (A: Type[0]).(\lambda (f: ((A \to nat))).(\lambda (a: A).(\lambda -(b: A).(let TMP_4 \def (f a) in (let TMP_3 \def (f b) in (lt TMP_4 -TMP_3)))))). +(b: A).(let TMP_1 \def (f a) in (let TMP_2 \def (f b) in (lt TMP_1 +TMP_2)))))). diff --git a/matita/matita/contribs/lambdadelta/legacy_1/coq/fwd.ma b/matita/matita/contribs/lambdadelta/legacy_1/coq/fwd.ma index 332911d0b..5e19eab75 100644 --- a/matita/matita/contribs/lambdadelta/legacy_1/coq/fwd.ma +++ b/matita/matita/contribs/lambdadelta/legacy_1/coq/fwd.ma @@ -31,7 +31,7 @@ theorem land_rect: P))) \to ((land A B) \to P)))) \def \lambda (A: Prop).(\lambda (B: Prop).(\lambda (P: Type[0]).(\lambda (f: ((A -\to (B \to P)))).(\lambda (a: (land A B)).(match a in land with [(conj x x0) +\to (B \to P)))).(\lambda (a: (land A B)).(match a with [(conj x x0) \Rightarrow (f x x0)]))))). theorem land_ind: @@ -45,7 +45,7 @@ theorem or_ind: (((B \to P)) \to ((or A B) \to P))))) \def \lambda (A: Prop).(\lambda (B: Prop).(\lambda (P: Prop).(\lambda (f: ((A \to -P))).(\lambda (f0: ((B \to P))).(\lambda (o: (or A B)).(match o in or with +P))).(\lambda (f0: ((B \to P))).(\lambda (o: (or A B)).(match o with [(or_introl x) \Rightarrow (f x) | (or_intror x) \Rightarrow (f0 x)])))))). theorem ex_ind: @@ -54,7 +54,7 @@ Prop).(((\forall (x: A).((P x) \to P0))) \to ((ex A P) \to P0)))) \def \lambda (A: Type[0]).(\lambda (P: ((A \to Prop))).(\lambda (P0: Prop).(\lambda (f: ((\forall (x: A).((P x) \to P0)))).(\lambda (e: (ex A -P)).(match e in ex with [(ex_intro x x0) \Rightarrow (f x x0)]))))). +P)).(match e with [(ex_intro x x0) \Rightarrow (f x x0)]))))). theorem ex2_ind: \forall (A: Type[0]).(\forall (P: ((A \to Prop))).(\forall (Q: ((A \to @@ -63,8 +63,8 @@ Prop))).(\forall (P0: Prop).(((\forall (x: A).((P x) \to ((Q x) \to P0)))) \def \lambda (A: Type[0]).(\lambda (P: ((A \to Prop))).(\lambda (Q: ((A \to Prop))).(\lambda (P0: Prop).(\lambda (f: ((\forall (x: A).((P x) \to ((Q x) -\to P0))))).(\lambda (e: (ex2 A P Q)).(match e in ex2 with [(ex_intro2 x x0 -x1) \Rightarrow (f x x0 x1)])))))). +\to P0))))).(\lambda (e: (ex2 A P Q)).(match e with [(ex_intro2 x x0 x1) +\Rightarrow (f x x0 x1)])))))). theorem eq_rect: \forall (A: Type[0]).(\forall (x: A).(\forall (P: ((A \to Type[0]))).((P x) @@ -72,7 +72,7 @@ theorem eq_rect: \def \lambda (A: Type[0]).(\lambda (x: A).(\lambda (P: ((A \to Type[0]))).(\lambda (f: (P x)).(\lambda (y: A).(\lambda (e: (eq A x -y)).(match e in eq with [refl_equal \Rightarrow f])))))). +y)).(match e with [refl_equal \Rightarrow f])))))). theorem eq_ind: \forall (A: Type[0]).(\forall (x: A).(\forall (P: ((A \to Prop))).((P x) \to @@ -83,13 +83,13 @@ x P))). let rec le_ind (n: nat) (P: (nat \to Prop)) (f: P n) (f0: (\forall (m: nat).((le n m) \to ((P m) \to (P (S m)))))) (n0: nat) (l: le n n0) on l: P n0 -\def match l in le with [le_n \Rightarrow f | (le_S m l0) \Rightarrow (let -TMP_5 \def ((le_ind n P f f0) m l0) in (f0 m l0 TMP_5))]. +\def match l with [le_n \Rightarrow f | (le_S m l0) \Rightarrow (let TMP_1 +\def ((le_ind n P f f0) m l0) in (f0 m l0 TMP_1))]. let rec Acc_ind (A: Type[0]) (R: (A \to (A \to Prop))) (P: (A \to Prop)) (f: (\forall (x: A).(((\forall (y: A).((R y x) \to (Acc A R y)))) \to (((\forall (y: A).((R y x) \to (P y)))) \to (P x))))) (a: A) (a0: Acc A R a) on a0: P a -\def match a0 in Acc with [(Acc_intro x a1) \Rightarrow (let TMP_7 \def -(\lambda (y: A).(\lambda (r: (R y x)).(let TMP_6 \def (a1 y r) in ((Acc_ind A -R P f) y TMP_6)))) in (f x a1 TMP_7))]. +\def match a0 with [(Acc_intro x a1) \Rightarrow (let TMP_2 \def (\lambda (y: +A).(\lambda (r: (R y x)).(let TMP_1 \def (a1 y r) in ((Acc_ind A R P f) y +TMP_1)))) in (f x a1 TMP_2))]. diff --git a/matita/matita/contribs/lambdadelta/legacy_1/coq/props.ma b/matita/matita/contribs/lambdadelta/legacy_1/coq/props.ma index 79b6a3733..83e2b707e 100644 --- a/matita/matita/contribs/lambdadelta/legacy_1/coq/props.ma +++ b/matita/matita/contribs/lambdadelta/legacy_1/coq/props.ma @@ -21,10 +21,10 @@ theorem f_equal: B))).(\forall (x: A).(\forall (y: A).((eq A x y) \to (eq B (f x) (f y))))))) \def \lambda (A: Type[0]).(\lambda (B: Type[0]).(\lambda (f: ((A \to -B))).(\lambda (x: A).(\lambda (y: A).(\lambda (H: (eq A x y)).(let TMP_12 -\def (\lambda (a: A).(let TMP_11 \def (f x) in (let TMP_10 \def (f a) in (eq -B TMP_11 TMP_10)))) in (let TMP_8 \def (f x) in (let TMP_9 \def (refl_equal B -TMP_8) in (eq_ind A x TMP_12 TMP_9 y H))))))))). +B))).(\lambda (x: A).(\lambda (y: A).(\lambda (H: (eq A x y)).(let TMP_3 \def +(\lambda (a: A).(let TMP_1 \def (f x) in (let TMP_2 \def (f a) in (eq B TMP_1 +TMP_2)))) in (let TMP_4 \def (f x) in (let TMP_5 \def (refl_equal B TMP_4) in +(eq_ind A x TMP_3 TMP_5 y H))))))))). theorem f_equal2: \forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall (B: Type[0]).(\forall @@ -34,13 +34,13 @@ A2).(\forall (y2: A2).((eq A1 x1 y1) \to ((eq A2 x2 y2) \to (eq B (f x1 x2) \def \lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda (B: Type[0]).(\lambda (f: ((A1 \to (A2 \to B)))).(\lambda (x1: A1).(\lambda (y1: A1).(\lambda (x2: -A2).(\lambda (y2: A2).(\lambda (H: (eq A1 x1 y1)).(let TMP_21 \def (\lambda -(a: A1).((eq A2 x2 y2) \to (let TMP_20 \def (f x1 x2) in (let TMP_19 \def (f -a y2) in (eq B TMP_20 TMP_19))))) in (let TMP_18 \def (\lambda (H0: (eq A2 x2 -y2)).(let TMP_17 \def (\lambda (a: A2).(let TMP_16 \def (f x1 x2) in (let -TMP_15 \def (f x1 a) in (eq B TMP_16 TMP_15)))) in (let TMP_13 \def (f x1 x2) -in (let TMP_14 \def (refl_equal B TMP_13) in (eq_ind A2 x2 TMP_17 TMP_14 y2 -H0))))) in (eq_ind A1 x1 TMP_21 TMP_18 y1 H))))))))))). +A2).(\lambda (y2: A2).(\lambda (H: (eq A1 x1 y1)).(let TMP_3 \def (\lambda +(a: A1).((eq A2 x2 y2) \to (let TMP_1 \def (f x1 x2) in (let TMP_2 \def (f a +y2) in (eq B TMP_1 TMP_2))))) in (let TMP_9 \def (\lambda (H0: (eq A2 x2 +y2)).(let TMP_6 \def (\lambda (a: A2).(let TMP_4 \def (f x1 x2) in (let TMP_5 +\def (f x1 a) in (eq B TMP_4 TMP_5)))) in (let TMP_7 \def (f x1 x2) in (let +TMP_8 \def (refl_equal B TMP_7) in (eq_ind A2 x2 TMP_6 TMP_8 y2 H0))))) in +(eq_ind A1 x1 TMP_3 TMP_9 y1 H))))))))))). theorem f_equal3: \forall (A1: Type[0]).(\forall (A2: Type[0]).(\forall (A3: Type[0]).(\forall @@ -52,25 +52,25 @@ A3).(\forall (y3: A3).((eq A1 x1 y1) \to ((eq A2 x2 y2) \to ((eq A3 x3 y3) \lambda (A1: Type[0]).(\lambda (A2: Type[0]).(\lambda (A3: Type[0]).(\lambda (B: Type[0]).(\lambda (f: ((A1 \to (A2 \to (A3 \to B))))).(\lambda (x1: A1).(\lambda (y1: A1).(\lambda (x2: A2).(\lambda (y2: A2).(\lambda (x3: -A3).(\lambda (y3: A3).(\lambda (H: (eq A1 x1 y1)).(let TMP_34 \def (\lambda -(a: A1).((eq A2 x2 y2) \to ((eq A3 x3 y3) \to (let TMP_33 \def (f x1 x2 x3) -in (let TMP_32 \def (f a y2 y3) in (eq B TMP_33 TMP_32)))))) in (let TMP_31 -\def (\lambda (H0: (eq A2 x2 y2)).(let TMP_30 \def (\lambda (a: A2).((eq A3 -x3 y3) \to (let TMP_29 \def (f x1 x2 x3) in (let TMP_28 \def (f x1 a y3) in -(eq B TMP_29 TMP_28))))) in (let TMP_27 \def (\lambda (H1: (eq A3 x3 -y3)).(let TMP_26 \def (\lambda (a: A3).(let TMP_25 \def (f x1 x2 x3) in (let -TMP_24 \def (f x1 x2 a) in (eq B TMP_25 TMP_24)))) in (let TMP_22 \def (f x1 -x2 x3) in (let TMP_23 \def (refl_equal B TMP_22) in (eq_ind A3 x3 TMP_26 -TMP_23 y3 H1))))) in (eq_ind A2 x2 TMP_30 TMP_27 y2 H0)))) in (eq_ind A1 x1 -TMP_34 TMP_31 y1 H)))))))))))))). +A3).(\lambda (y3: A3).(\lambda (H: (eq A1 x1 y1)).(let TMP_3 \def (\lambda +(a: A1).((eq A2 x2 y2) \to ((eq A3 x3 y3) \to (let TMP_1 \def (f x1 x2 x3) in +(let TMP_2 \def (f a y2 y3) in (eq B TMP_1 TMP_2)))))) in (let TMP_13 \def +(\lambda (H0: (eq A2 x2 y2)).(let TMP_6 \def (\lambda (a: A2).((eq A3 x3 y3) +\to (let TMP_4 \def (f x1 x2 x3) in (let TMP_5 \def (f x1 a y3) in (eq B +TMP_4 TMP_5))))) in (let TMP_12 \def (\lambda (H1: (eq A3 x3 y3)).(let TMP_9 +\def (\lambda (a: A3).(let TMP_7 \def (f x1 x2 x3) in (let TMP_8 \def (f x1 +x2 a) in (eq B TMP_7 TMP_8)))) in (let TMP_10 \def (f x1 x2 x3) in (let +TMP_11 \def (refl_equal B TMP_10) in (eq_ind A3 x3 TMP_9 TMP_11 y3 H1))))) in +(eq_ind A2 x2 TMP_6 TMP_12 y2 H0)))) in (eq_ind A1 x1 TMP_3 TMP_13 y1 +H)))))))))))))). theorem sym_eq: \forall (A: Type[0]).(\forall (x: A).(\forall (y: A).((eq A x y) \to (eq A y x)))) \def \lambda (A: Type[0]).(\lambda (x: A).(\lambda (y: A).(\lambda (H: (eq A x -y)).(let TMP_36 \def (\lambda (a: A).(eq A a x)) in (let TMP_35 \def -(refl_equal A x) in (eq_ind A x TMP_36 TMP_35 y H)))))). +y)).(let TMP_1 \def (\lambda (a: A).(eq A a x)) in (let TMP_2 \def +(refl_equal A x) in (eq_ind A x TMP_1 TMP_2 y H)))))). theorem eq_ind_r: \forall (A: Type[0]).(\forall (x: A).(\forall (P: ((A \to Prop))).((P x) \to @@ -78,24 +78,24 @@ theorem eq_ind_r: \def \lambda (A: Type[0]).(\lambda (x: A).(\lambda (P: ((A \to Prop))).(\lambda (H: (P x)).(\lambda (y: A).(\lambda (H0: (eq A y x)).(match (sym_eq A y x H0) -in eq with [refl_equal \Rightarrow H])))))). +with [refl_equal \Rightarrow H])))))). theorem trans_eq: \forall (A: Type[0]).(\forall (x: A).(\forall (y: A).(\forall (z: A).((eq A x y) \to ((eq A y z) \to (eq A x z)))))) \def \lambda (A: Type[0]).(\lambda (x: A).(\lambda (y: A).(\lambda (z: -A).(\lambda (H: (eq A x y)).(\lambda (H0: (eq A y z)).(let TMP_37 \def -(\lambda (a: A).(eq A x a)) in (eq_ind A y TMP_37 H z H0))))))). +A).(\lambda (H: (eq A x y)).(\lambda (H0: (eq A y z)).(let TMP_1 \def +(\lambda (a: A).(eq A x a)) in (eq_ind A y TMP_1 H z H0))))))). theorem sym_not_eq: \forall (A: Type[0]).(\forall (x: A).(\forall (y: A).((not (eq A x y)) \to (not (eq A y x))))) \def \lambda (A: Type[0]).(\lambda (x: A).(\lambda (y: A).(\lambda (h1: (not (eq -A x y))).(\lambda (h2: (eq A y x)).(let TMP_39 \def (\lambda (a: A).(eq A a -y)) in (let TMP_38 \def (refl_equal A y) in (let TMP_40 \def (eq_ind A y -TMP_39 TMP_38 x h2) in (h1 TMP_40)))))))). +A x y))).(\lambda (h2: (eq A y x)).(let TMP_1 \def (\lambda (a: A).(eq A a +y)) in (let TMP_2 \def (refl_equal A y) in (let TMP_3 \def (eq_ind A y TMP_1 +TMP_2 x h2) in (h1 TMP_3)))))))). theorem nat_double_ind: \forall (R: ((nat \to (nat \to Prop)))).(((\forall (n: nat).(R O n))) \to @@ -106,138 +106,136 @@ nat).(R n m)))))) \lambda (R: ((nat \to (nat \to Prop)))).(\lambda (H: ((\forall (n: nat).(R O n)))).(\lambda (H0: ((\forall (n: nat).(R (S n) O)))).(\lambda (H1: ((\forall (n: nat).(\forall (m: nat).((R n m) \to (R (S n) (S m))))))).(\lambda (n: -nat).(let TMP_47 \def (\lambda (n0: nat).(\forall (m: nat).(R n0 m))) in (let -TMP_46 \def (\lambda (n0: nat).(\lambda (H2: ((\forall (m: nat).(R n0 -m)))).(\lambda (m: nat).(let TMP_45 \def (\lambda (n1: nat).(let TMP_44 \def -(S n0) in (R TMP_44 n1))) in (let TMP_43 \def (H0 n0) in (let TMP_42 \def -(\lambda (n1: nat).(\lambda (_: (R (S n0) n1)).(let TMP_41 \def (H2 n1) in -(H1 n0 n1 TMP_41)))) in (nat_ind TMP_45 TMP_43 TMP_42 m))))))) in (nat_ind -TMP_47 H TMP_46 n))))))). +nat).(let TMP_1 \def (\lambda (n0: nat).(\forall (m: nat).(R n0 m))) in (let +TMP_7 \def (\lambda (n0: nat).(\lambda (H2: ((\forall (m: nat).(R n0 +m)))).(\lambda (m: nat).(let TMP_3 \def (\lambda (n1: nat).(let TMP_2 \def (S +n0) in (R TMP_2 n1))) in (let TMP_4 \def (H0 n0) in (let TMP_6 \def (\lambda +(n1: nat).(\lambda (_: (R (S n0) n1)).(let TMP_5 \def (H2 n1) in (H1 n0 n1 +TMP_5)))) in (nat_ind TMP_3 TMP_4 TMP_6 m))))))) in (nat_ind TMP_1 H TMP_7 +n))))))). theorem eq_add_S: \forall (n: nat).(\forall (m: nat).((eq nat (S n) (S m)) \to (eq nat n m))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (eq nat (S n) (S m))).(let -TMP_49 \def (S n) in (let TMP_48 \def (S m) in (f_equal nat nat pred TMP_49 -TMP_48 H))))). +TMP_1 \def (S n) in (let TMP_2 \def (S m) in (f_equal nat nat pred TMP_1 +TMP_2 H))))). theorem O_S: \forall (n: nat).(not (eq nat O (S n))) \def - \lambda (n: nat).(\lambda (H: (eq nat O (S n))).(let TMP_53 \def (S n) in -(let TMP_52 \def (\lambda (n0: nat).(IsSucc n0)) in (let TMP_50 \def (S n) in -(let TMP_51 \def (sym_eq nat O TMP_50 H) in (eq_ind nat TMP_53 TMP_52 I O -TMP_51)))))). + \lambda (n: nat).(\lambda (H: (eq nat O (S n))).(let TMP_1 \def (S n) in +(let TMP_2 \def (\lambda (n0: nat).(IsSucc n0)) in (let TMP_3 \def (S n) in +(let TMP_4 \def (sym_eq nat O TMP_3 H) in (eq_ind nat TMP_1 TMP_2 I O +TMP_4)))))). theorem not_eq_S: \forall (n: nat).(\forall (m: nat).((not (eq nat n m)) \to (not (eq nat (S n) (S m))))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (not (eq nat n m))).(\lambda -(H0: (eq nat (S n) (S m))).(let TMP_54 \def (eq_add_S n m H0) in (H -TMP_54))))). +(H0: (eq nat (S n) (S m))).(let TMP_1 \def (eq_add_S n m H0) in (H TMP_1))))). theorem pred_Sn: \forall (m: nat).(eq nat m (pred (S m))) \def - \lambda (m: nat).(let TMP_55 \def (S m) in (let TMP_56 \def (pred TMP_55) in -(refl_equal nat TMP_56))). + \lambda (m: nat).(let TMP_1 \def (S m) in (let TMP_2 \def (pred TMP_1) in +(refl_equal nat TMP_2))). theorem S_pred: \forall (n: nat).(\forall (m: nat).((lt m n) \to (eq nat n (S (pred n))))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (lt m n)).(let TMP_68 \def -(S m) in (let TMP_67 \def (\lambda (n0: nat).(let TMP_65 \def (pred n0) in -(let TMP_66 \def (S TMP_65) in (eq nat n0 TMP_66)))) in (let TMP_61 \def (S -m) in (let TMP_62 \def (pred TMP_61) in (let TMP_63 \def (S TMP_62) in (let -TMP_64 \def (refl_equal nat TMP_63) in (let TMP_60 \def (\lambda (m0: -nat).(\lambda (_: (le (S m) m0)).(\lambda (_: (eq nat m0 (S (pred m0)))).(let -TMP_57 \def (S m0) in (let TMP_58 \def (pred TMP_57) in (let TMP_59 \def (S -TMP_58) in (refl_equal nat TMP_59))))))) in (le_ind TMP_68 TMP_67 TMP_64 -TMP_60 n H)))))))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (lt m n)).(let TMP_1 \def (S +m) in (let TMP_4 \def (\lambda (n0: nat).(let TMP_2 \def (pred n0) in (let +TMP_3 \def (S TMP_2) in (eq nat n0 TMP_3)))) in (let TMP_5 \def (S m) in (let +TMP_6 \def (pred TMP_5) in (let TMP_7 \def (S TMP_6) in (let TMP_8 \def +(refl_equal nat TMP_7) in (let TMP_12 \def (\lambda (m0: nat).(\lambda (_: +(le (S m) m0)).(\lambda (_: (eq nat m0 (S (pred m0)))).(let TMP_9 \def (S m0) +in (let TMP_10 \def (pred TMP_9) in (let TMP_11 \def (S TMP_10) in +(refl_equal nat TMP_11))))))) in (le_ind TMP_1 TMP_4 TMP_8 TMP_12 n +H)))))))))). theorem le_trans: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).((le n m) \to ((le m p) \to (le n p))))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(\lambda (H: (le n -m)).(\lambda (H0: (le m p)).(let TMP_70 \def (\lambda (n0: nat).(le n n0)) in -(let TMP_69 \def (\lambda (m0: nat).(\lambda (_: (le m m0)).(\lambda (IHle: -(le n m0)).(le_S n m0 IHle)))) in (le_ind m TMP_70 H TMP_69 p H0))))))). +m)).(\lambda (H0: (le m p)).(let TMP_1 \def (\lambda (n0: nat).(le n n0)) in +(let TMP_2 \def (\lambda (m0: nat).(\lambda (_: (le m m0)).(\lambda (IHle: +(le n m0)).(le_S n m0 IHle)))) in (le_ind m TMP_1 H TMP_2 p H0))))))). theorem le_trans_S: \forall (n: nat).(\forall (m: nat).((le (S n) m) \to (le n m))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le (S n) m)).(let TMP_73 -\def (S n) in (let TMP_71 \def (le_n n) in (let TMP_72 \def (le_S n n TMP_71) -in (le_trans n TMP_73 m TMP_72 H)))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le (S n) m)).(let TMP_1 +\def (S n) in (let TMP_2 \def (le_n n) in (let TMP_3 \def (le_S n n TMP_2) in +(le_trans n TMP_1 m TMP_3 H)))))). theorem le_n_S: \forall (n: nat).(\forall (m: nat).((le n m) \to (le (S n) (S m)))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_81 \def -(\lambda (n0: nat).(let TMP_80 \def (S n) in (let TMP_79 \def (S n0) in (le -TMP_80 TMP_79)))) in (let TMP_77 \def (S n) in (let TMP_78 \def (le_n TMP_77) -in (let TMP_76 \def (\lambda (m0: nat).(\lambda (_: (le n m0)).(\lambda -(IHle: (le (S n) (S m0))).(let TMP_75 \def (S n) in (let TMP_74 \def (S m0) -in (le_S TMP_75 TMP_74 IHle)))))) in (le_ind n TMP_81 TMP_78 TMP_76 m -H))))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_3 \def +(\lambda (n0: nat).(let TMP_1 \def (S n) in (let TMP_2 \def (S n0) in (le +TMP_1 TMP_2)))) in (let TMP_4 \def (S n) in (let TMP_5 \def (le_n TMP_4) in +(let TMP_8 \def (\lambda (m0: nat).(\lambda (_: (le n m0)).(\lambda (IHle: +(le (S n) (S m0))).(let TMP_6 \def (S n) in (let TMP_7 \def (S m0) in (le_S +TMP_6 TMP_7 IHle)))))) in (le_ind n TMP_3 TMP_5 TMP_8 m H))))))). theorem le_O_n: \forall (n: nat).(le O n) \def - \lambda (n: nat).(let TMP_84 \def (\lambda (n0: nat).(le O n0)) in (let -TMP_83 \def (le_n O) in (let TMP_82 \def (\lambda (n0: nat).(\lambda (IHn: -(le O n0)).(le_S O n0 IHn))) in (nat_ind TMP_84 TMP_83 TMP_82 n)))). + \lambda (n: nat).(let TMP_1 \def (\lambda (n0: nat).(le O n0)) in (let TMP_2 +\def (le_n O) in (let TMP_3 \def (\lambda (n0: nat).(\lambda (IHn: (le O +n0)).(le_S O n0 IHn))) in (nat_ind TMP_1 TMP_2 TMP_3 n)))). theorem le_S_n: \forall (n: nat).(\forall (m: nat).((le (S n) (S m)) \to (le n m))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le (S n) (S m))).(let -TMP_92 \def (S n) in (let TMP_91 \def (\lambda (n0: nat).(let TMP_89 \def (S -n) in (let TMP_90 \def (pred TMP_89) in (let TMP_88 \def (pred n0) in (le -TMP_90 TMP_88))))) in (let TMP_87 \def (le_n n) in (let TMP_86 \def (\lambda -(m0: nat).(\lambda (H0: (le (S n) m0)).(\lambda (_: (le n (pred -m0))).(le_trans_S n m0 H0)))) in (let TMP_85 \def (S m) in (le_ind TMP_92 -TMP_91 TMP_87 TMP_86 TMP_85 H)))))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le (S n) (S m))).(let TMP_1 +\def (S n) in (let TMP_5 \def (\lambda (n0: nat).(let TMP_2 \def (S n) in +(let TMP_3 \def (pred TMP_2) in (let TMP_4 \def (pred n0) in (le TMP_3 +TMP_4))))) in (let TMP_6 \def (le_n n) in (let TMP_7 \def (\lambda (m0: +nat).(\lambda (H0: (le (S n) m0)).(\lambda (_: (le n (pred m0))).(le_trans_S +n m0 H0)))) in (let TMP_8 \def (S m) in (le_ind TMP_1 TMP_5 TMP_6 TMP_7 TMP_8 +H)))))))). theorem le_Sn_O: \forall (n: nat).(not (le (S n) O)) \def - \lambda (n: nat).(\lambda (H: (le (S n) O)).(let TMP_95 \def (S n) in (let -TMP_94 \def (\lambda (n0: nat).(IsSucc n0)) in (let TMP_93 \def (\lambda (m: + \lambda (n: nat).(\lambda (H: (le (S n) O)).(let TMP_1 \def (S n) in (let +TMP_2 \def (\lambda (n0: nat).(IsSucc n0)) in (let TMP_3 \def (\lambda (m: nat).(\lambda (_: (le (S n) m)).(\lambda (_: (IsSucc m)).I))) in (le_ind -TMP_95 TMP_94 I TMP_93 O H))))). +TMP_1 TMP_2 I TMP_3 O H))))). theorem le_Sn_n: \forall (n: nat).(not (le (S n) n)) \def - \lambda (n: nat).(let TMP_102 \def (\lambda (n0: nat).(let TMP_100 \def (S -n0) in (let TMP_101 \def (le TMP_100 n0) in (not TMP_101)))) in (let TMP_99 -\def (le_Sn_O O) in (let TMP_98 \def (\lambda (n0: nat).(\lambda (IHn: (not -(le (S n0) n0))).(\lambda (H: (le (S (S n0)) (S n0))).(let TMP_96 \def (S n0) -in (let TMP_97 \def (le_S_n TMP_96 n0 H) in (IHn TMP_97)))))) in (nat_ind -TMP_102 TMP_99 TMP_98 n)))). + \lambda (n: nat).(let TMP_3 \def (\lambda (n0: nat).(let TMP_1 \def (S n0) +in (let TMP_2 \def (le TMP_1 n0) in (not TMP_2)))) in (let TMP_4 \def +(le_Sn_O O) in (let TMP_7 \def (\lambda (n0: nat).(\lambda (IHn: (not (le (S +n0) n0))).(\lambda (H: (le (S (S n0)) (S n0))).(let TMP_5 \def (S n0) in (let +TMP_6 \def (le_S_n TMP_5 n0 H) in (IHn TMP_6)))))) in (nat_ind TMP_3 TMP_4 +TMP_7 n)))). theorem le_antisym: \forall (n: nat).(\forall (m: nat).((le n m) \to ((le m n) \to (eq nat n m)))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (h: (le n m)).(let TMP_110 \def -(\lambda (n0: nat).((le n0 n) \to (eq nat n n0))) in (let TMP_109 \def -(\lambda (_: (le n n)).(refl_equal nat n)) in (let TMP_108 \def (\lambda (m0: + \lambda (n: nat).(\lambda (m: nat).(\lambda (h: (le n m)).(let TMP_1 \def +(\lambda (n0: nat).((le n0 n) \to (eq nat n n0))) in (let TMP_2 \def (\lambda +(_: (le n n)).(refl_equal nat n)) in (let TMP_8 \def (\lambda (m0: nat).(\lambda (H: (le n m0)).(\lambda (_: (((le m0 n) \to (eq nat n -m0)))).(\lambda (H1: (le (S m0) n)).(let TMP_106 \def (S m0) in (let TMP_107 -\def (eq nat n TMP_106) in (let TMP_103 \def (S m0) in (let H2 \def (le_trans -TMP_103 n m0 H1 H) in (let H3 \def (le_Sn_n m0) in (let TMP_104 \def (\lambda -(H4: (le (S m0) m0)).(H3 H4)) in (let TMP_105 \def (TMP_104 H2) in (False_ind -TMP_107 TMP_105)))))))))))) in (le_ind n TMP_110 TMP_109 TMP_108 m h)))))). +m0)))).(\lambda (H1: (le (S m0) n)).(let TMP_3 \def (S m0) in (let TMP_4 \def +(eq nat n TMP_3) in (let TMP_5 \def (S m0) in (let H2 \def (le_trans TMP_5 n +m0 H1 H) in (let H3 \def (le_Sn_n m0) in (let TMP_6 \def (\lambda (H4: (le (S +m0) m0)).(H3 H4)) in (let TMP_7 \def (TMP_6 H2) in (False_ind TMP_4 +TMP_7)))))))))))) in (le_ind n TMP_1 TMP_2 TMP_8 m h)))))). theorem le_n_O_eq: \forall (n: nat).((le n O) \to (eq nat O n)) \def - \lambda (n: nat).(\lambda (H: (le n O)).(let TMP_111 \def (le_O_n n) in -(le_antisym O n TMP_111 H))). + \lambda (n: nat).(\lambda (H: (le n O)).(let TMP_1 \def (le_O_n n) in +(le_antisym O n TMP_1 H))). theorem le_elim_rel: \forall (P: ((nat \to (nat \to Prop)))).(((\forall (p: nat).(P O p))) \to @@ -246,19 +244,19 @@ q))))))) \to (\forall (n: nat).(\forall (m: nat).((le n m) \to (P n m)))))) \def \lambda (P: ((nat \to (nat \to Prop)))).(\lambda (H: ((\forall (p: nat).(P O p)))).(\lambda (H0: ((\forall (p: nat).(\forall (q: nat).((le p q) \to ((P p -q) \to (P (S p) (S q)))))))).(\lambda (n: nat).(let TMP_125 \def (\lambda -(n0: nat).(\forall (m: nat).((le n0 m) \to (P n0 m)))) in (let TMP_124 \def -(\lambda (m: nat).(\lambda (_: (le O m)).(H m))) in (let TMP_123 \def -(\lambda (n0: nat).(\lambda (IHn: ((\forall (m: nat).((le n0 m) \to (P n0 -m))))).(\lambda (m: nat).(\lambda (Le: (le (S n0) m)).(let TMP_122 \def (S -n0) in (let TMP_121 \def (\lambda (n1: nat).(let TMP_120 \def (S n0) in (P -TMP_120 n1))) in (let TMP_118 \def (le_n n0) in (let TMP_116 \def (le_n n0) -in (let TMP_117 \def (IHn n0 TMP_116) in (let TMP_119 \def (H0 n0 n0 TMP_118 -TMP_117) in (let TMP_115 \def (\lambda (m0: nat).(\lambda (H1: (le (S n0) -m0)).(\lambda (_: (P (S n0) m0)).(let TMP_114 \def (le_trans_S n0 m0 H1) in -(let TMP_112 \def (le_trans_S n0 m0 H1) in (let TMP_113 \def (IHn m0 TMP_112) -in (H0 n0 m0 TMP_114 TMP_113))))))) in (le_ind TMP_122 TMP_121 TMP_119 -TMP_115 m Le)))))))))))) in (nat_ind TMP_125 TMP_124 TMP_123 n))))))). +q) \to (P (S p) (S q)))))))).(\lambda (n: nat).(let TMP_1 \def (\lambda (n0: +nat).(\forall (m: nat).((le n0 m) \to (P n0 m)))) in (let TMP_2 \def (\lambda +(m: nat).(\lambda (_: (le O m)).(H m))) in (let TMP_14 \def (\lambda (n0: +nat).(\lambda (IHn: ((\forall (m: nat).((le n0 m) \to (P n0 m))))).(\lambda +(m: nat).(\lambda (Le: (le (S n0) m)).(let TMP_3 \def (S n0) in (let TMP_5 +\def (\lambda (n1: nat).(let TMP_4 \def (S n0) in (P TMP_4 n1))) in (let +TMP_6 \def (le_n n0) in (let TMP_7 \def (le_n n0) in (let TMP_8 \def (IHn n0 +TMP_7) in (let TMP_9 \def (H0 n0 n0 TMP_6 TMP_8) in (let TMP_13 \def (\lambda +(m0: nat).(\lambda (H1: (le (S n0) m0)).(\lambda (_: (P (S n0) m0)).(let +TMP_10 \def (le_trans_S n0 m0 H1) in (let TMP_11 \def (le_trans_S n0 m0 H1) +in (let TMP_12 \def (IHn m0 TMP_11) in (H0 n0 m0 TMP_10 TMP_12))))))) in +(le_ind TMP_3 TMP_5 TMP_9 TMP_13 m Le)))))))))))) in (nat_ind TMP_1 TMP_2 +TMP_14 n))))))). theorem lt_n_n: \forall (n: nat).(not (lt n n)) @@ -268,19 +266,19 @@ theorem lt_n_n: theorem lt_n_S: \forall (n: nat).(\forall (m: nat).((lt n m) \to (lt (S n) (S m)))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (lt n m)).(let TMP_126 \def -(S n) in (le_n_S TMP_126 m H)))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (lt n m)).(let TMP_1 \def (S +n) in (le_n_S TMP_1 m H)))). theorem lt_n_Sn: \forall (n: nat).(lt n (S n)) \def - \lambda (n: nat).(let TMP_127 \def (S n) in (le_n TMP_127)). + \lambda (n: nat).(let TMP_1 \def (S n) in (le_n TMP_1)). theorem lt_S_n: \forall (n: nat).(\forall (m: nat).((lt (S n) (S m)) \to (lt n m))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (lt (S n) (S m))).(let -TMP_128 \def (S n) in (le_S_n TMP_128 m H)))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (lt (S n) (S m))).(let TMP_1 +\def (S n) in (le_S_n TMP_1 m H)))). theorem lt_n_O: \forall (n: nat).(not (lt n O)) @@ -292,17 +290,16 @@ theorem lt_trans: \to (lt n p))))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(\lambda (H: (lt n -m)).(\lambda (H0: (lt m p)).(let TMP_134 \def (S m) in (let TMP_133 \def -(\lambda (n0: nat).(lt n n0)) in (let TMP_131 \def (S n) in (let TMP_132 \def -(le_S TMP_131 m H) in (let TMP_130 \def (\lambda (m0: nat).(\lambda (_: (le -(S m) m0)).(\lambda (IHle: (lt n m0)).(let TMP_129 \def (S n) in (le_S -TMP_129 m0 IHle))))) in (le_ind TMP_134 TMP_133 TMP_132 TMP_130 p -H0)))))))))). +m)).(\lambda (H0: (lt m p)).(let TMP_1 \def (S m) in (let TMP_2 \def (\lambda +(n0: nat).(lt n n0)) in (let TMP_3 \def (S n) in (let TMP_4 \def (le_S TMP_3 +m H) in (let TMP_6 \def (\lambda (m0: nat).(\lambda (_: (le (S m) +m0)).(\lambda (IHle: (lt n m0)).(let TMP_5 \def (S n) in (le_S TMP_5 m0 +IHle))))) in (le_ind TMP_1 TMP_2 TMP_4 TMP_6 p H0)))))))))). theorem lt_O_Sn: \forall (n: nat).(lt O (S n)) \def - \lambda (n: nat).(let TMP_135 \def (le_O_n n) in (le_n_S O n TMP_135)). + \lambda (n: nat).(let TMP_1 \def (le_O_n n) in (le_n_S O n TMP_1)). theorem lt_le_S: \forall (n: nat).(\forall (p: nat).((lt n p) \to (le (S n) p))) @@ -312,12 +309,12 @@ theorem lt_le_S: theorem le_not_lt: \forall (n: nat).(\forall (m: nat).((le n m) \to (not (lt m n)))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_141 \def -(\lambda (n0: nat).(let TMP_140 \def (lt n0 n) in (not TMP_140))) in (let -TMP_139 \def (lt_n_n n) in (let TMP_138 \def (\lambda (m0: nat).(\lambda (_: -(le n m0)).(\lambda (IHle: (not (lt m0 n))).(\lambda (H1: (lt (S m0) n)).(let -TMP_136 \def (S m0) in (let TMP_137 \def (le_trans_S TMP_136 n H1) in (IHle -TMP_137))))))) in (le_ind n TMP_141 TMP_139 TMP_138 m H)))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_2 \def +(\lambda (n0: nat).(let TMP_1 \def (lt n0 n) in (not TMP_1))) in (let TMP_3 +\def (lt_n_n n) in (let TMP_6 \def (\lambda (m0: nat).(\lambda (_: (le n +m0)).(\lambda (IHle: (not (lt m0 n))).(\lambda (H1: (lt (S m0) n)).(let TMP_4 +\def (S m0) in (let TMP_5 \def (le_trans_S TMP_4 n H1) in (IHle TMP_5))))))) +in (le_ind n TMP_2 TMP_3 TMP_6 m H)))))). theorem le_lt_n_Sm: \forall (n: nat).(\forall (m: nat).((le n m) \to (lt n (S m)))) @@ -329,21 +326,21 @@ theorem le_lt_trans: \to (lt n p))))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(\lambda (H: (le n -m)).(\lambda (H0: (lt m p)).(let TMP_146 \def (S m) in (let TMP_145 \def -(\lambda (n0: nat).(lt n n0)) in (let TMP_144 \def (le_n_S n m H) in (let -TMP_143 \def (\lambda (m0: nat).(\lambda (_: (le (S m) m0)).(\lambda (IHle: -(lt n m0)).(let TMP_142 \def (S n) in (le_S TMP_142 m0 IHle))))) in (le_ind -TMP_146 TMP_145 TMP_144 TMP_143 p H0))))))))). +m)).(\lambda (H0: (lt m p)).(let TMP_1 \def (S m) in (let TMP_2 \def (\lambda +(n0: nat).(lt n n0)) in (let TMP_3 \def (le_n_S n m H) in (let TMP_5 \def +(\lambda (m0: nat).(\lambda (_: (le (S m) m0)).(\lambda (IHle: (lt n +m0)).(let TMP_4 \def (S n) in (le_S TMP_4 m0 IHle))))) in (le_ind TMP_1 TMP_2 +TMP_3 TMP_5 p H0))))))))). theorem lt_le_trans: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).((lt n m) \to ((le m p) \to (lt n p))))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(\lambda (H: (lt n -m)).(\lambda (H0: (le m p)).(let TMP_149 \def (\lambda (n0: nat).(lt n n0)) -in (let TMP_148 \def (\lambda (m0: nat).(\lambda (_: (le m m0)).(\lambda -(IHle: (lt n m0)).(let TMP_147 \def (S n) in (le_S TMP_147 m0 IHle))))) in -(le_ind m TMP_149 H TMP_148 p H0))))))). +m)).(\lambda (H0: (le m p)).(let TMP_1 \def (\lambda (n0: nat).(lt n n0)) in +(let TMP_3 \def (\lambda (m0: nat).(\lambda (_: (le m m0)).(\lambda (IHle: +(lt n m0)).(let TMP_2 \def (S n) in (le_S TMP_2 m0 IHle))))) in (le_ind m +TMP_1 H TMP_3 p H0))))))). theorem lt_le_weak: \forall (n: nat).(\forall (m: nat).((lt n m) \to (le n m))) @@ -360,410 +357,392 @@ H))). theorem le_lt_or_eq: \forall (n: nat).(\forall (m: nat).((le n m) \to (or (lt n m) (eq nat n m)))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_162 \def -(\lambda (n0: nat).(let TMP_161 \def (lt n n0) in (let TMP_160 \def (eq nat n -n0) in (or TMP_161 TMP_160)))) in (let TMP_158 \def (lt n n) in (let TMP_157 -\def (eq nat n n) in (let TMP_156 \def (refl_equal nat n) in (let TMP_159 -\def (or_intror TMP_158 TMP_157 TMP_156) in (let TMP_155 \def (\lambda (m0: -nat).(\lambda (H0: (le n m0)).(\lambda (_: (or (lt n m0) (eq nat n m0))).(let -TMP_153 \def (S m0) in (let TMP_154 \def (lt n TMP_153) in (let TMP_151 \def -(S m0) in (let TMP_152 \def (eq nat n TMP_151) in (let TMP_150 \def (le_n_S n -m0 H0) in (or_introl TMP_154 TMP_152 TMP_150))))))))) in (le_ind n TMP_162 -TMP_159 TMP_155 m H))))))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_3 \def +(\lambda (n0: nat).(let TMP_1 \def (lt n n0) in (let TMP_2 \def (eq nat n n0) +in (or TMP_1 TMP_2)))) in (let TMP_4 \def (lt n n) in (let TMP_5 \def (eq nat +n n) in (let TMP_6 \def (refl_equal nat n) in (let TMP_7 \def (or_intror +TMP_4 TMP_5 TMP_6) in (let TMP_13 \def (\lambda (m0: nat).(\lambda (H0: (le n +m0)).(\lambda (_: (or (lt n m0) (eq nat n m0))).(let TMP_8 \def (S m0) in +(let TMP_9 \def (lt n TMP_8) in (let TMP_10 \def (S m0) in (let TMP_11 \def +(eq nat n TMP_10) in (let TMP_12 \def (le_n_S n m0 H0) in (or_introl TMP_9 +TMP_11 TMP_12))))))))) in (le_ind n TMP_3 TMP_7 TMP_13 m H))))))))). theorem le_or_lt: \forall (n: nat).(\forall (m: nat).(or (le n m) (lt m n))) \def - \lambda (n: nat).(\lambda (m: nat).(let TMP_204 \def (\lambda (n0: -nat).(\lambda (n1: nat).(let TMP_203 \def (le n0 n1) in (let TMP_202 \def (lt -n1 n0) in (or TMP_203 TMP_202))))) in (let TMP_201 \def (\lambda (n0: -nat).(let TMP_200 \def (le O n0) in (let TMP_199 \def (lt n0 O) in (let -TMP_198 \def (le_O_n n0) in (or_introl TMP_200 TMP_199 TMP_198))))) in (let -TMP_197 \def (\lambda (n0: nat).(let TMP_195 \def (S n0) in (let TMP_196 \def -(le TMP_195 O) in (let TMP_193 \def (S n0) in (let TMP_194 \def (lt O -TMP_193) in (let TMP_191 \def (S n0) in (let TMP_190 \def (lt_O_Sn n0) in -(let TMP_192 \def (lt_le_S O TMP_191 TMP_190) in (or_intror TMP_196 TMP_194 -TMP_192))))))))) in (let TMP_189 \def (\lambda (n0: nat).(\lambda (m0: -nat).(\lambda (H: (or (le n0 m0) (lt m0 n0))).(let TMP_188 \def (le n0 m0) in -(let TMP_187 \def (lt m0 n0) in (let TMP_184 \def (S n0) in (let TMP_183 \def -(S m0) in (let TMP_185 \def (le TMP_184 TMP_183) in (let TMP_181 \def (S m0) -in (let TMP_180 \def (S n0) in (let TMP_182 \def (lt TMP_181 TMP_180) in (let -TMP_186 \def (or TMP_185 TMP_182) in (let TMP_179 \def (\lambda (H0: (le n0 -m0)).(let TMP_177 \def (S n0) in (let TMP_176 \def (S m0) in (let TMP_178 -\def (le TMP_177 TMP_176) in (let TMP_174 \def (S m0) in (let TMP_173 \def (S -n0) in (let TMP_175 \def (lt TMP_174 TMP_173) in (let TMP_172 \def (le_n_S n0 -m0 H0) in (or_introl TMP_178 TMP_175 TMP_172))))))))) in (let TMP_171 \def -(\lambda (H0: (lt m0 n0)).(let TMP_169 \def (S n0) in (let TMP_168 \def (S -m0) in (let TMP_170 \def (le TMP_169 TMP_168) in (let TMP_166 \def (S m0) in -(let TMP_165 \def (S n0) in (let TMP_167 \def (lt TMP_166 TMP_165) in (let -TMP_163 \def (S m0) in (let TMP_164 \def (le_n_S TMP_163 n0 H0) in (or_intror -TMP_170 TMP_167 TMP_164)))))))))) in (or_ind TMP_188 TMP_187 TMP_186 TMP_179 -TMP_171 H))))))))))))))) in (nat_double_ind TMP_204 TMP_201 TMP_197 TMP_189 n -m)))))). + \lambda (n: nat).(\lambda (m: nat).(let TMP_3 \def (\lambda (n0: +nat).(\lambda (n1: nat).(let TMP_1 \def (le n0 n1) in (let TMP_2 \def (lt n1 +n0) in (or TMP_1 TMP_2))))) in (let TMP_7 \def (\lambda (n0: nat).(let TMP_4 +\def (le O n0) in (let TMP_5 \def (lt n0 O) in (let TMP_6 \def (le_O_n n0) in +(or_introl TMP_4 TMP_5 TMP_6))))) in (let TMP_15 \def (\lambda (n0: nat).(let +TMP_8 \def (S n0) in (let TMP_9 \def (le TMP_8 O) in (let TMP_10 \def (S n0) +in (let TMP_11 \def (lt O TMP_10) in (let TMP_12 \def (S n0) in (let TMP_13 +\def (lt_O_Sn n0) in (let TMP_14 \def (lt_le_S O TMP_12 TMP_13) in (or_intror +TMP_9 TMP_11 TMP_14))))))))) in (let TMP_42 \def (\lambda (n0: nat).(\lambda +(m0: nat).(\lambda (H: (or (le n0 m0) (lt m0 n0))).(let TMP_16 \def (le n0 +m0) in (let TMP_17 \def (lt m0 n0) in (let TMP_18 \def (S n0) in (let TMP_19 +\def (S m0) in (let TMP_20 \def (le TMP_18 TMP_19) in (let TMP_21 \def (S m0) +in (let TMP_22 \def (S n0) in (let TMP_23 \def (lt TMP_21 TMP_22) in (let +TMP_24 \def (or TMP_20 TMP_23) in (let TMP_32 \def (\lambda (H0: (le n0 +m0)).(let TMP_25 \def (S n0) in (let TMP_26 \def (S m0) in (let TMP_27 \def +(le TMP_25 TMP_26) in (let TMP_28 \def (S m0) in (let TMP_29 \def (S n0) in +(let TMP_30 \def (lt TMP_28 TMP_29) in (let TMP_31 \def (le_n_S n0 m0 H0) in +(or_introl TMP_27 TMP_30 TMP_31))))))))) in (let TMP_41 \def (\lambda (H0: +(lt m0 n0)).(let TMP_33 \def (S n0) in (let TMP_34 \def (S m0) in (let TMP_35 +\def (le TMP_33 TMP_34) in (let TMP_36 \def (S m0) in (let TMP_37 \def (S n0) +in (let TMP_38 \def (lt TMP_36 TMP_37) in (let TMP_39 \def (S m0) in (let +TMP_40 \def (le_n_S TMP_39 n0 H0) in (or_intror TMP_35 TMP_38 +TMP_40)))))))))) in (or_ind TMP_16 TMP_17 TMP_24 TMP_32 TMP_41 +H))))))))))))))) in (nat_double_ind TMP_3 TMP_7 TMP_15 TMP_42 n m)))))). theorem plus_n_O: \forall (n: nat).(eq nat n (plus n O)) \def - \lambda (n: nat).(let TMP_209 \def (\lambda (n0: nat).(let TMP_208 \def -(plus n0 O) in (eq nat n0 TMP_208))) in (let TMP_207 \def (refl_equal nat O) -in (let TMP_206 \def (\lambda (n0: nat).(\lambda (H: (eq nat n0 (plus n0 -O))).(let TMP_205 \def (plus n0 O) in (f_equal nat nat S n0 TMP_205 H)))) in -(nat_ind TMP_209 TMP_207 TMP_206 n)))). + \lambda (n: nat).(let TMP_2 \def (\lambda (n0: nat).(let TMP_1 \def (plus n0 +O) in (eq nat n0 TMP_1))) in (let TMP_3 \def (refl_equal nat O) in (let TMP_5 +\def (\lambda (n0: nat).(\lambda (H: (eq nat n0 (plus n0 O))).(let TMP_4 \def +(plus n0 O) in (f_equal nat nat S n0 TMP_4 H)))) in (nat_ind TMP_2 TMP_3 +TMP_5 n)))). theorem plus_n_Sm: \forall (n: nat).(\forall (m: nat).(eq nat (S (plus n m)) (plus n (S m)))) \def - \lambda (m: nat).(\lambda (n: nat).(let TMP_221 \def (\lambda (n0: nat).(let -TMP_219 \def (plus n0 n) in (let TMP_220 \def (S TMP_219) in (let TMP_217 -\def (S n) in (let TMP_218 \def (plus n0 TMP_217) in (eq nat TMP_220 -TMP_218)))))) in (let TMP_215 \def (S n) in (let TMP_216 \def (refl_equal nat -TMP_215) in (let TMP_214 \def (\lambda (n0: nat).(\lambda (H: (eq nat (S -(plus n0 n)) (plus n0 (S n)))).(let TMP_212 \def (plus n0 n) in (let TMP_213 -\def (S TMP_212) in (let TMP_210 \def (S n) in (let TMP_211 \def (plus n0 -TMP_210) in (f_equal nat nat S TMP_213 TMP_211 H))))))) in (nat_ind TMP_221 -TMP_216 TMP_214 m)))))). + \lambda (m: nat).(\lambda (n: nat).(let TMP_5 \def (\lambda (n0: nat).(let +TMP_1 \def (plus n0 n) in (let TMP_2 \def (S TMP_1) in (let TMP_3 \def (S n) +in (let TMP_4 \def (plus n0 TMP_3) in (eq nat TMP_2 TMP_4)))))) in (let TMP_6 +\def (S n) in (let TMP_7 \def (refl_equal nat TMP_6) in (let TMP_12 \def +(\lambda (n0: nat).(\lambda (H: (eq nat (S (plus n0 n)) (plus n0 (S +n)))).(let TMP_8 \def (plus n0 n) in (let TMP_9 \def (S TMP_8) in (let TMP_10 +\def (S n) in (let TMP_11 \def (plus n0 TMP_10) in (f_equal nat nat S TMP_9 +TMP_11 H))))))) in (nat_ind TMP_5 TMP_7 TMP_12 m)))))). theorem plus_sym: \forall (n: nat).(\forall (m: nat).(eq nat (plus n m) (plus m n))) \def - \lambda (n: nat).(\lambda (m: nat).(let TMP_237 \def (\lambda (n0: nat).(let -TMP_236 \def (plus n0 m) in (let TMP_235 \def (plus m n0) in (eq nat TMP_236 -TMP_235)))) in (let TMP_234 \def (plus_n_O m) in (let TMP_233 \def (\lambda -(y: nat).(\lambda (H: (eq nat (plus y m) (plus m y))).(let TMP_231 \def (plus -m y) in (let TMP_232 \def (S TMP_231) in (let TMP_230 \def (\lambda (n0: -nat).(let TMP_228 \def (plus y m) in (let TMP_229 \def (S TMP_228) in (eq nat -TMP_229 n0)))) in (let TMP_226 \def (plus y m) in (let TMP_225 \def (plus m -y) in (let TMP_227 \def (f_equal nat nat S TMP_226 TMP_225 H) in (let TMP_223 -\def (S y) in (let TMP_224 \def (plus m TMP_223) in (let TMP_222 \def -(plus_n_Sm m y) in (eq_ind nat TMP_232 TMP_230 TMP_227 TMP_224 -TMP_222)))))))))))) in (nat_ind TMP_237 TMP_234 TMP_233 n))))). + \lambda (n: nat).(\lambda (m: nat).(let TMP_3 \def (\lambda (n0: nat).(let +TMP_1 \def (plus n0 m) in (let TMP_2 \def (plus m n0) in (eq nat TMP_1 +TMP_2)))) in (let TMP_4 \def (plus_n_O m) in (let TMP_16 \def (\lambda (y: +nat).(\lambda (H: (eq nat (plus y m) (plus m y))).(let TMP_5 \def (plus m y) +in (let TMP_6 \def (S TMP_5) in (let TMP_9 \def (\lambda (n0: nat).(let TMP_7 +\def (plus y m) in (let TMP_8 \def (S TMP_7) in (eq nat TMP_8 n0)))) in (let +TMP_10 \def (plus y m) in (let TMP_11 \def (plus m y) in (let TMP_12 \def +(f_equal nat nat S TMP_10 TMP_11 H) in (let TMP_13 \def (S y) in (let TMP_14 +\def (plus m TMP_13) in (let TMP_15 \def (plus_n_Sm m y) in (eq_ind nat TMP_6 +TMP_9 TMP_12 TMP_14 TMP_15)))))))))))) in (nat_ind TMP_3 TMP_4 TMP_16 n))))). theorem plus_Snm_nSm: \forall (n: nat).(\forall (m: nat).(eq nat (plus (S n) m) (plus n (S m)))) \def - \lambda (n: nat).(\lambda (m: nat).(let TMP_257 \def (plus m n) in (let -TMP_256 \def (\lambda (n0: nat).(let TMP_255 \def (S n0) in (let TMP_253 \def -(S m) in (let TMP_254 \def (plus n TMP_253) in (eq nat TMP_255 TMP_254))))) -in (let TMP_250 \def (S m) in (let TMP_251 \def (plus TMP_250 n) in (let -TMP_249 \def (\lambda (n0: nat).(let TMP_247 \def (plus m n) in (let TMP_248 -\def (S TMP_247) in (eq nat TMP_248 n0)))) in (let TMP_244 \def (S m) in (let -TMP_245 \def (plus TMP_244 n) in (let TMP_246 \def (refl_equal nat TMP_245) -in (let TMP_242 \def (S m) in (let TMP_243 \def (plus n TMP_242) in (let -TMP_240 \def (S m) in (let TMP_241 \def (plus_sym n TMP_240) in (let TMP_252 -\def (eq_ind_r nat TMP_251 TMP_249 TMP_246 TMP_243 TMP_241) in (let TMP_239 -\def (plus n m) in (let TMP_238 \def (plus_sym n m) in (eq_ind_r nat TMP_257 -TMP_256 TMP_252 TMP_239 TMP_238))))))))))))))))). + \lambda (n: nat).(\lambda (m: nat).(let TMP_1 \def (plus m n) in (let TMP_5 +\def (\lambda (n0: nat).(let TMP_2 \def (S n0) in (let TMP_3 \def (S m) in +(let TMP_4 \def (plus n TMP_3) in (eq nat TMP_2 TMP_4))))) in (let TMP_6 \def +(S m) in (let TMP_7 \def (plus TMP_6 n) in (let TMP_10 \def (\lambda (n0: +nat).(let TMP_8 \def (plus m n) in (let TMP_9 \def (S TMP_8) in (eq nat TMP_9 +n0)))) in (let TMP_11 \def (S m) in (let TMP_12 \def (plus TMP_11 n) in (let +TMP_13 \def (refl_equal nat TMP_12) in (let TMP_14 \def (S m) in (let TMP_15 +\def (plus n TMP_14) in (let TMP_16 \def (S m) in (let TMP_17 \def (plus_sym +n TMP_16) in (let TMP_18 \def (eq_ind_r nat TMP_7 TMP_10 TMP_13 TMP_15 +TMP_17) in (let TMP_19 \def (plus n m) in (let TMP_20 \def (plus_sym n m) in +(eq_ind_r nat TMP_1 TMP_5 TMP_18 TMP_19 TMP_20))))))))))))))))). theorem plus_assoc_l: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).(eq nat (plus n (plus m p)) (plus (plus n m) p)))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_269 \def -(\lambda (n0: nat).(let TMP_267 \def (plus m p) in (let TMP_268 \def (plus n0 -TMP_267) in (let TMP_265 \def (plus n0 m) in (let TMP_266 \def (plus TMP_265 -p) in (eq nat TMP_268 TMP_266)))))) in (let TMP_263 \def (plus m p) in (let -TMP_264 \def (refl_equal nat TMP_263) in (let TMP_262 \def (\lambda (n0: -nat).(\lambda (H: (eq nat (plus n0 (plus m p)) (plus (plus n0 m) p))).(let -TMP_260 \def (plus m p) in (let TMP_261 \def (plus n0 TMP_260) in (let -TMP_258 \def (plus n0 m) in (let TMP_259 \def (plus TMP_258 p) in (f_equal -nat nat S TMP_261 TMP_259 H))))))) in (nat_ind TMP_269 TMP_264 TMP_262 -n))))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_5 \def +(\lambda (n0: nat).(let TMP_1 \def (plus m p) in (let TMP_2 \def (plus n0 +TMP_1) in (let TMP_3 \def (plus n0 m) in (let TMP_4 \def (plus TMP_3 p) in +(eq nat TMP_2 TMP_4)))))) in (let TMP_6 \def (plus m p) in (let TMP_7 \def +(refl_equal nat TMP_6) in (let TMP_12 \def (\lambda (n0: nat).(\lambda (H: +(eq nat (plus n0 (plus m p)) (plus (plus n0 m) p))).(let TMP_8 \def (plus m +p) in (let TMP_9 \def (plus n0 TMP_8) in (let TMP_10 \def (plus n0 m) in (let +TMP_11 \def (plus TMP_10 p) in (f_equal nat nat S TMP_9 TMP_11 H))))))) in +(nat_ind TMP_5 TMP_7 TMP_12 n))))))). theorem plus_assoc_r: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).(eq nat (plus (plus n m) p) (plus n (plus m p))))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_273 \def (plus -m p) in (let TMP_274 \def (plus n TMP_273) in (let TMP_271 \def (plus n m) in -(let TMP_272 \def (plus TMP_271 p) in (let TMP_270 \def (plus_assoc_l n m p) -in (sym_eq nat TMP_274 TMP_272 TMP_270)))))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_1 \def (plus m +p) in (let TMP_2 \def (plus n TMP_1) in (let TMP_3 \def (plus n m) in (let +TMP_4 \def (plus TMP_3 p) in (let TMP_5 \def (plus_assoc_l n m p) in (sym_eq +nat TMP_2 TMP_4 TMP_5)))))))). theorem simpl_plus_l: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).((eq nat (plus n m) (plus n p)) \to (eq nat m p)))) \def - \lambda (n: nat).(let TMP_287 \def (\lambda (n0: nat).(\forall (m: + \lambda (n: nat).(let TMP_1 \def (\lambda (n0: nat).(\forall (m: nat).(\forall (p: nat).((eq nat (plus n0 m) (plus n0 p)) \to (eq nat m p))))) -in (let TMP_286 \def (\lambda (m: nat).(\lambda (p: nat).(\lambda (H: (eq nat -m p)).H))) in (let TMP_285 \def (\lambda (n0: nat).(\lambda (IHn: ((\forall -(m: nat).(\forall (p: nat).((eq nat (plus n0 m) (plus n0 p)) \to (eq nat m +in (let TMP_2 \def (\lambda (m: nat).(\lambda (p: nat).(\lambda (H: (eq nat m +p)).H))) in (let TMP_13 \def (\lambda (n0: nat).(\lambda (IHn: ((\forall (m: +nat).(\forall (p: nat).((eq nat (plus n0 m) (plus n0 p)) \to (eq nat m p)))))).(\lambda (m: nat).(\lambda (p: nat).(\lambda (H: (eq nat (S (plus n0 -m)) (S (plus n0 p)))).(let TMP_283 \def (plus n0 m) in (let TMP_282 \def -(plus n0 p) in (let TMP_280 \def (plus n0) in (let TMP_279 \def (plus n0 m) -in (let TMP_278 \def (plus n0 p) in (let TMP_276 \def (plus n0 m) in (let -TMP_275 \def (plus n0 p) in (let TMP_277 \def (eq_add_S TMP_276 TMP_275 H) in -(let TMP_281 \def (f_equal nat nat TMP_280 TMP_279 TMP_278 TMP_277) in (let -TMP_284 \def (IHn TMP_283 TMP_282 TMP_281) in (IHn m p -TMP_284)))))))))))))))) in (nat_ind TMP_287 TMP_286 TMP_285 n)))). +m)) (S (plus n0 p)))).(let TMP_3 \def (plus n0 m) in (let TMP_4 \def (plus n0 +p) in (let TMP_5 \def (plus n0) in (let TMP_6 \def (plus n0 m) in (let TMP_7 +\def (plus n0 p) in (let TMP_8 \def (plus n0 m) in (let TMP_9 \def (plus n0 +p) in (let TMP_10 \def (eq_add_S TMP_8 TMP_9 H) in (let TMP_11 \def (f_equal +nat nat TMP_5 TMP_6 TMP_7 TMP_10) in (let TMP_12 \def (IHn TMP_3 TMP_4 +TMP_11) in (IHn m p TMP_12)))))))))))))))) in (nat_ind TMP_1 TMP_2 TMP_13 +n)))). theorem minus_n_O: \forall (n: nat).(eq nat n (minus n O)) \def - \lambda (n: nat).(let TMP_292 \def (\lambda (n0: nat).(let TMP_291 \def -(minus n0 O) in (eq nat n0 TMP_291))) in (let TMP_290 \def (refl_equal nat O) -in (let TMP_289 \def (\lambda (n0: nat).(\lambda (_: (eq nat n0 (minus n0 -O))).(let TMP_288 \def (S n0) in (refl_equal nat TMP_288)))) in (nat_ind -TMP_292 TMP_290 TMP_289 n)))). + \lambda (n: nat).(let TMP_2 \def (\lambda (n0: nat).(let TMP_1 \def (minus +n0 O) in (eq nat n0 TMP_1))) in (let TMP_3 \def (refl_equal nat O) in (let +TMP_5 \def (\lambda (n0: nat).(\lambda (_: (eq nat n0 (minus n0 O))).(let +TMP_4 \def (S n0) in (refl_equal nat TMP_4)))) in (nat_ind TMP_2 TMP_3 TMP_5 +n)))). theorem minus_n_n: \forall (n: nat).(eq nat O (minus n n)) \def - \lambda (n: nat).(let TMP_296 \def (\lambda (n0: nat).(let TMP_295 \def -(minus n0 n0) in (eq nat O TMP_295))) in (let TMP_294 \def (refl_equal nat O) -in (let TMP_293 \def (\lambda (n0: nat).(\lambda (IHn: (eq nat O (minus n0 -n0))).IHn)) in (nat_ind TMP_296 TMP_294 TMP_293 n)))). + \lambda (n: nat).(let TMP_2 \def (\lambda (n0: nat).(let TMP_1 \def (minus +n0 n0) in (eq nat O TMP_1))) in (let TMP_3 \def (refl_equal nat O) in (let +TMP_4 \def (\lambda (n0: nat).(\lambda (IHn: (eq nat O (minus n0 n0))).IHn)) +in (nat_ind TMP_2 TMP_3 TMP_4 n)))). theorem minus_Sn_m: \forall (n: nat).(\forall (m: nat).((le m n) \to (eq nat (S (minus n m)) (minus (S n) m)))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (Le: (le m n)).(let TMP_307 \def -(\lambda (n0: nat).(\lambda (n1: nat).(let TMP_305 \def (minus n1 n0) in (let -TMP_306 \def (S TMP_305) in (let TMP_303 \def (S n1) in (let TMP_304 \def -(minus TMP_303 n0) in (eq nat TMP_306 TMP_304))))))) in (let TMP_302 \def -(\lambda (p: nat).(let TMP_301 \def (minus p O) in (let TMP_299 \def (minus p -O) in (let TMP_298 \def (minus_n_O p) in (let TMP_300 \def (sym_eq nat p -TMP_299 TMP_298) in (f_equal nat nat S TMP_301 p TMP_300)))))) in (let -TMP_297 \def (\lambda (p: nat).(\lambda (q: nat).(\lambda (_: (le p -q)).(\lambda (H0: (eq nat (S (minus q p)) (match p with [O \Rightarrow (S q) -| (S l) \Rightarrow (minus q l)]))).H0)))) in (le_elim_rel TMP_307 TMP_302 -TMP_297 m n Le)))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (Le: (le m n)).(let TMP_5 \def +(\lambda (n0: nat).(\lambda (n1: nat).(let TMP_1 \def (minus n1 n0) in (let +TMP_2 \def (S TMP_1) in (let TMP_3 \def (S n1) in (let TMP_4 \def (minus +TMP_3 n0) in (eq nat TMP_2 TMP_4))))))) in (let TMP_10 \def (\lambda (p: +nat).(let TMP_6 \def (minus p O) in (let TMP_7 \def (minus p O) in (let TMP_8 +\def (minus_n_O p) in (let TMP_9 \def (sym_eq nat p TMP_7 TMP_8) in (f_equal +nat nat S TMP_6 p TMP_9)))))) in (let TMP_11 \def (\lambda (p: nat).(\lambda +(q: nat).(\lambda (_: (le p q)).(\lambda (H0: (eq nat (S (minus q p)) (match +p with [O \Rightarrow (S q) | (S l) \Rightarrow (minus q l)]))).H0)))) in +(le_elim_rel TMP_5 TMP_10 TMP_11 m n Le)))))). theorem plus_minus: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).((eq nat n (plus m p)) \to (eq nat p (minus n m))))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_322 \def -(\lambda (n0: nat).(\lambda (n1: nat).((eq nat n1 (plus n0 p)) \to (let -TMP_321 \def (minus n1 n0) in (eq nat p TMP_321))))) in (let TMP_320 \def -(\lambda (n0: nat).(\lambda (H: (eq nat n0 p)).(let TMP_319 \def (\lambda -(n1: nat).(eq nat p n1)) in (let TMP_318 \def (sym_eq nat n0 p H) in (let -TMP_317 \def (minus n0 O) in (let TMP_316 \def (minus_n_O n0) in (eq_ind nat -n0 TMP_319 TMP_318 TMP_317 TMP_316))))))) in (let TMP_315 \def (\lambda (n0: -nat).(\lambda (H: (eq nat O (S (plus n0 p)))).(let TMP_314 \def (eq nat p O) -in (let H0 \def H in (let TMP_311 \def (plus n0 p) in (let H1 \def (O_S -TMP_311) in (let TMP_312 \def (\lambda (H2: (eq nat O (S (plus n0 p)))).(H1 -H2)) in (let TMP_313 \def (TMP_312 H0) in (False_ind TMP_314 TMP_313))))))))) -in (let TMP_310 \def (\lambda (n0: nat).(\lambda (m0: nat).(\lambda (H: (((eq -nat m0 (plus n0 p)) \to (eq nat p (minus m0 n0))))).(\lambda (H0: (eq nat (S -m0) (S (plus n0 p)))).(let TMP_308 \def (plus n0 p) in (let TMP_309 \def -(eq_add_S m0 TMP_308 H0) in (H TMP_309))))))) in (nat_double_ind TMP_322 -TMP_320 TMP_315 TMP_310 m n))))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_2 \def +(\lambda (n0: nat).(\lambda (n1: nat).((eq nat n1 (plus n0 p)) \to (let TMP_1 +\def (minus n1 n0) in (eq nat p TMP_1))))) in (let TMP_7 \def (\lambda (n0: +nat).(\lambda (H: (eq nat n0 p)).(let TMP_3 \def (\lambda (n1: nat).(eq nat p +n1)) in (let TMP_4 \def (sym_eq nat n0 p H) in (let TMP_5 \def (minus n0 O) +in (let TMP_6 \def (minus_n_O n0) in (eq_ind nat n0 TMP_3 TMP_4 TMP_5 +TMP_6))))))) in (let TMP_12 \def (\lambda (n0: nat).(\lambda (H: (eq nat O (S +(plus n0 p)))).(let TMP_8 \def (eq nat p O) in (let H0 \def H in (let TMP_9 +\def (plus n0 p) in (let H1 \def (O_S TMP_9) in (let TMP_10 \def (\lambda +(H2: (eq nat O (S (plus n0 p)))).(H1 H2)) in (let TMP_11 \def (TMP_10 H0) in +(False_ind TMP_8 TMP_11))))))))) in (let TMP_15 \def (\lambda (n0: +nat).(\lambda (m0: nat).(\lambda (H: (((eq nat m0 (plus n0 p)) \to (eq nat p +(minus m0 n0))))).(\lambda (H0: (eq nat (S m0) (S (plus n0 p)))).(let TMP_13 +\def (plus n0 p) in (let TMP_14 \def (eq_add_S m0 TMP_13 H0) in (H +TMP_14))))))) in (nat_double_ind TMP_2 TMP_7 TMP_12 TMP_15 m n))))))). theorem minus_plus: \forall (n: nat).(\forall (m: nat).(eq nat (minus (plus n m) n) m)) \def - \lambda (n: nat).(\lambda (m: nat).(let TMP_327 \def (plus n m) in (let -TMP_328 \def (minus TMP_327 n) in (let TMP_325 \def (plus n m) in (let -TMP_323 \def (plus n m) in (let TMP_324 \def (refl_equal nat TMP_323) in (let -TMP_326 \def (plus_minus TMP_325 n m TMP_324) in (sym_eq nat m TMP_328 -TMP_326)))))))). + \lambda (n: nat).(\lambda (m: nat).(let TMP_1 \def (plus n m) in (let TMP_2 +\def (minus TMP_1 n) in (let TMP_3 \def (plus n m) in (let TMP_4 \def (plus n +m) in (let TMP_5 \def (refl_equal nat TMP_4) in (let TMP_6 \def (plus_minus +TMP_3 n m TMP_5) in (sym_eq nat m TMP_2 TMP_6)))))))). theorem le_pred_n: \forall (n: nat).(le (pred n) n) \def - \lambda (n: nat).(let TMP_335 \def (\lambda (n0: nat).(let TMP_334 \def -(pred n0) in (le TMP_334 n0))) in (let TMP_333 \def (le_n O) in (let TMP_332 -\def (\lambda (n0: nat).(\lambda (_: (le (pred n0) n0)).(let TMP_330 \def (S -n0) in (let TMP_331 \def (pred TMP_330) in (let TMP_329 \def (le_n n0) in -(le_S TMP_331 n0 TMP_329)))))) in (nat_ind TMP_335 TMP_333 TMP_332 n)))). + \lambda (n: nat).(let TMP_2 \def (\lambda (n0: nat).(let TMP_1 \def (pred +n0) in (le TMP_1 n0))) in (let TMP_3 \def (le_n O) in (let TMP_7 \def +(\lambda (n0: nat).(\lambda (_: (le (pred n0) n0)).(let TMP_4 \def (S n0) in +(let TMP_5 \def (pred TMP_4) in (let TMP_6 \def (le_n n0) in (le_S TMP_5 n0 +TMP_6)))))) in (nat_ind TMP_2 TMP_3 TMP_7 n)))). theorem le_plus_l: \forall (n: nat).(\forall (m: nat).(le n (plus n m))) \def - \lambda (n: nat).(let TMP_341 \def (\lambda (n0: nat).(\forall (m: nat).(let -TMP_340 \def (plus n0 m) in (le n0 TMP_340)))) in (let TMP_339 \def (\lambda -(m: nat).(le_O_n m)) in (let TMP_338 \def (\lambda (n0: nat).(\lambda (IHn: -((\forall (m: nat).(le n0 (plus n0 m))))).(\lambda (m: nat).(let TMP_337 \def -(plus n0 m) in (let TMP_336 \def (IHn m) in (le_n_S n0 TMP_337 TMP_336)))))) -in (nat_ind TMP_341 TMP_339 TMP_338 n)))). + \lambda (n: nat).(let TMP_2 \def (\lambda (n0: nat).(\forall (m: nat).(let +TMP_1 \def (plus n0 m) in (le n0 TMP_1)))) in (let TMP_3 \def (\lambda (m: +nat).(le_O_n m)) in (let TMP_6 \def (\lambda (n0: nat).(\lambda (IHn: +((\forall (m: nat).(le n0 (plus n0 m))))).(\lambda (m: nat).(let TMP_4 \def +(plus n0 m) in (let TMP_5 \def (IHn m) in (le_n_S n0 TMP_4 TMP_5)))))) in +(nat_ind TMP_2 TMP_3 TMP_6 n)))). theorem le_plus_r: \forall (n: nat).(\forall (m: nat).(le m (plus n m))) \def - \lambda (n: nat).(\lambda (m: nat).(let TMP_346 \def (\lambda (n0: nat).(let -TMP_345 \def (plus n0 m) in (le m TMP_345))) in (let TMP_344 \def (le_n m) in -(let TMP_343 \def (\lambda (n0: nat).(\lambda (H: (le m (plus n0 m))).(let -TMP_342 \def (plus n0 m) in (le_S m TMP_342 H)))) in (nat_ind TMP_346 TMP_344 -TMP_343 n))))). + \lambda (n: nat).(\lambda (m: nat).(let TMP_2 \def (\lambda (n0: nat).(let +TMP_1 \def (plus n0 m) in (le m TMP_1))) in (let TMP_3 \def (le_n m) in (let +TMP_5 \def (\lambda (n0: nat).(\lambda (H: (le m (plus n0 m))).(let TMP_4 +\def (plus n0 m) in (le_S m TMP_4 H)))) in (nat_ind TMP_2 TMP_3 TMP_5 n))))). theorem simpl_le_plus_l: \forall (p: nat).(\forall (n: nat).(\forall (m: nat).((le (plus p n) (plus p m)) \to (le n m)))) \def - \lambda (p: nat).(let TMP_352 \def (\lambda (n: nat).(\forall (n0: + \lambda (p: nat).(let TMP_1 \def (\lambda (n: nat).(\forall (n0: nat).(\forall (m: nat).((le (plus n n0) (plus n m)) \to (le n0 m))))) in (let -TMP_351 \def (\lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).H))) -in (let TMP_350 \def (\lambda (p0: nat).(\lambda (IHp: ((\forall (n: -nat).(\forall (m: nat).((le (plus p0 n) (plus p0 m)) \to (le n -m)))))).(\lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le (S (plus p0 n)) -(S (plus p0 m)))).(let TMP_348 \def (plus p0 n) in (let TMP_347 \def (plus p0 -m) in (let TMP_349 \def (le_S_n TMP_348 TMP_347 H) in (IHp n m -TMP_349))))))))) in (nat_ind TMP_352 TMP_351 TMP_350 p)))). +TMP_2 \def (\lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).H))) in +(let TMP_6 \def (\lambda (p0: nat).(\lambda (IHp: ((\forall (n: nat).(\forall +(m: nat).((le (plus p0 n) (plus p0 m)) \to (le n m)))))).(\lambda (n: +nat).(\lambda (m: nat).(\lambda (H: (le (S (plus p0 n)) (S (plus p0 +m)))).(let TMP_3 \def (plus p0 n) in (let TMP_4 \def (plus p0 m) in (let +TMP_5 \def (le_S_n TMP_3 TMP_4 H) in (IHp n m TMP_5))))))))) in (nat_ind +TMP_1 TMP_2 TMP_6 p)))). theorem le_plus_trans: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).((le n m) \to (le n (plus m p))))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(\lambda (H: (le n -m)).(let TMP_354 \def (plus m p) in (let TMP_353 \def (le_plus_l m p) in -(le_trans n m TMP_354 H TMP_353)))))). +m)).(let TMP_1 \def (plus m p) in (let TMP_2 \def (le_plus_l m p) in +(le_trans n m TMP_1 H TMP_2)))))). theorem le_reg_l: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).((le n m) \to (le (plus p n) (plus p m))))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_362 \def -(\lambda (n0: nat).((le n m) \to (let TMP_361 \def (plus n0 n) in (let -TMP_360 \def (plus n0 m) in (le TMP_361 TMP_360))))) in (let TMP_359 \def -(\lambda (H: (le n m)).H) in (let TMP_358 \def (\lambda (p0: nat).(\lambda -(IHp: (((le n m) \to (le (plus p0 n) (plus p0 m))))).(\lambda (H: (le n -m)).(let TMP_357 \def (plus p0 n) in (let TMP_356 \def (plus p0 m) in (let -TMP_355 \def (IHp H) in (le_n_S TMP_357 TMP_356 TMP_355))))))) in (nat_ind -TMP_362 TMP_359 TMP_358 p)))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_3 \def +(\lambda (n0: nat).((le n m) \to (let TMP_1 \def (plus n0 n) in (let TMP_2 +\def (plus n0 m) in (le TMP_1 TMP_2))))) in (let TMP_4 \def (\lambda (H: (le +n m)).H) in (let TMP_8 \def (\lambda (p0: nat).(\lambda (IHp: (((le n m) \to +(le (plus p0 n) (plus p0 m))))).(\lambda (H: (le n m)).(let TMP_5 \def (plus +p0 n) in (let TMP_6 \def (plus p0 m) in (let TMP_7 \def (IHp H) in (le_n_S +TMP_5 TMP_6 TMP_7))))))) in (nat_ind TMP_3 TMP_4 TMP_8 p)))))). theorem le_plus_plus: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).(\forall (q: nat).((le n m) \to ((le p q) \to (le (plus n p) (plus m q))))))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(\lambda (q: -nat).(\lambda (H: (le n m)).(\lambda (H0: (le p q)).(let TMP_369 \def -(\lambda (n0: nat).(let TMP_368 \def (plus n p) in (let TMP_367 \def (plus n0 -q) in (le TMP_368 TMP_367)))) in (let TMP_366 \def (le_reg_l p q n H0) in -(let TMP_365 \def (\lambda (m0: nat).(\lambda (_: (le n m0)).(\lambda (H2: -(le (plus n p) (plus m0 q))).(let TMP_364 \def (plus n p) in (let TMP_363 -\def (plus m0 q) in (le_S TMP_364 TMP_363 H2)))))) in (le_ind n TMP_369 -TMP_366 TMP_365 m H))))))))). +nat).(\lambda (H: (le n m)).(\lambda (H0: (le p q)).(let TMP_3 \def (\lambda +(n0: nat).(let TMP_1 \def (plus n p) in (let TMP_2 \def (plus n0 q) in (le +TMP_1 TMP_2)))) in (let TMP_4 \def (le_reg_l p q n H0) in (let TMP_7 \def +(\lambda (m0: nat).(\lambda (_: (le n m0)).(\lambda (H2: (le (plus n p) (plus +m0 q))).(let TMP_5 \def (plus n p) in (let TMP_6 \def (plus m0 q) in (le_S +TMP_5 TMP_6 H2)))))) in (le_ind n TMP_3 TMP_4 TMP_7 m H))))))))). theorem le_plus_minus: \forall (n: nat).(\forall (m: nat).((le n m) \to (eq nat m (plus n (minus m n))))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (Le: (le n m)).(let TMP_376 \def -(\lambda (n0: nat).(\lambda (n1: nat).(let TMP_374 \def (minus n1 n0) in (let -TMP_375 \def (plus n0 TMP_374) in (eq nat n1 TMP_375))))) in (let TMP_373 -\def (\lambda (p: nat).(minus_n_O p)) in (let TMP_372 \def (\lambda (p: + \lambda (n: nat).(\lambda (m: nat).(\lambda (Le: (le n m)).(let TMP_3 \def +(\lambda (n0: nat).(\lambda (n1: nat).(let TMP_1 \def (minus n1 n0) in (let +TMP_2 \def (plus n0 TMP_1) in (eq nat n1 TMP_2))))) in (let TMP_4 \def +(\lambda (p: nat).(minus_n_O p)) in (let TMP_7 \def (\lambda (p: nat).(\lambda (q: nat).(\lambda (_: (le p q)).(\lambda (H0: (eq nat q (plus p -(minus q p)))).(let TMP_370 \def (minus q p) in (let TMP_371 \def (plus p -TMP_370) in (f_equal nat nat S q TMP_371 H0))))))) in (le_elim_rel TMP_376 -TMP_373 TMP_372 n m Le)))))). +(minus q p)))).(let TMP_5 \def (minus q p) in (let TMP_6 \def (plus p TMP_5) +in (f_equal nat nat S q TMP_6 H0))))))) in (le_elim_rel TMP_3 TMP_4 TMP_7 n m +Le)))))). theorem le_plus_minus_r: \forall (n: nat).(\forall (m: nat).((le n m) \to (eq nat (plus n (minus m n)) m))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_378 \def -(minus m n) in (let TMP_379 \def (plus n TMP_378) in (let TMP_377 \def -(le_plus_minus n m H) in (sym_eq nat m TMP_379 TMP_377)))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (H: (le n m)).(let TMP_1 \def +(minus m n) in (let TMP_2 \def (plus n TMP_1) in (let TMP_3 \def +(le_plus_minus n m H) in (sym_eq nat m TMP_2 TMP_3)))))). theorem simpl_lt_plus_l: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).((lt (plus p n) (plus p m)) \to (lt n m)))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_386 \def -(\lambda (n0: nat).((lt (plus n0 n) (plus n0 m)) \to (lt n m))) in (let -TMP_385 \def (\lambda (H: (lt n m)).H) in (let TMP_384 \def (\lambda (p0: -nat).(\lambda (IHp: (((lt (plus p0 n) (plus p0 m)) \to (lt n m)))).(\lambda -(H: (lt (S (plus p0 n)) (S (plus p0 m)))).(let TMP_381 \def (plus p0 n) in -(let TMP_382 \def (S TMP_381) in (let TMP_380 \def (plus p0 m) in (let -TMP_383 \def (le_S_n TMP_382 TMP_380 H) in (IHp TMP_383)))))))) in (nat_ind -TMP_386 TMP_385 TMP_384 p)))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_1 \def +(\lambda (n0: nat).((lt (plus n0 n) (plus n0 m)) \to (lt n m))) in (let TMP_2 +\def (\lambda (H: (lt n m)).H) in (let TMP_7 \def (\lambda (p0: nat).(\lambda +(IHp: (((lt (plus p0 n) (plus p0 m)) \to (lt n m)))).(\lambda (H: (lt (S +(plus p0 n)) (S (plus p0 m)))).(let TMP_3 \def (plus p0 n) in (let TMP_4 \def +(S TMP_3) in (let TMP_5 \def (plus p0 m) in (let TMP_6 \def (le_S_n TMP_4 +TMP_5 H) in (IHp TMP_6)))))))) in (nat_ind TMP_1 TMP_2 TMP_7 p)))))). theorem lt_reg_l: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).((lt n m) \to (lt (plus p n) (plus p m))))) \def - \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_394 \def -(\lambda (n0: nat).((lt n m) \to (let TMP_393 \def (plus n0 n) in (let -TMP_392 \def (plus n0 m) in (lt TMP_393 TMP_392))))) in (let TMP_391 \def -(\lambda (H: (lt n m)).H) in (let TMP_390 \def (\lambda (p0: nat).(\lambda -(IHp: (((lt n m) \to (lt (plus p0 n) (plus p0 m))))).(\lambda (H: (lt n -m)).(let TMP_389 \def (plus p0 n) in (let TMP_388 \def (plus p0 m) in (let -TMP_387 \def (IHp H) in (lt_n_S TMP_389 TMP_388 TMP_387))))))) in (nat_ind -TMP_394 TMP_391 TMP_390 p)))))). + \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(let TMP_3 \def +(\lambda (n0: nat).((lt n m) \to (let TMP_1 \def (plus n0 n) in (let TMP_2 +\def (plus n0 m) in (lt TMP_1 TMP_2))))) in (let TMP_4 \def (\lambda (H: (lt +n m)).H) in (let TMP_8 \def (\lambda (p0: nat).(\lambda (IHp: (((lt n m) \to +(lt (plus p0 n) (plus p0 m))))).(\lambda (H: (lt n m)).(let TMP_5 \def (plus +p0 n) in (let TMP_6 \def (plus p0 m) in (let TMP_7 \def (IHp H) in (lt_n_S +TMP_5 TMP_6 TMP_7))))))) in (nat_ind TMP_3 TMP_4 TMP_8 p)))))). theorem lt_reg_r: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).((lt n m) \to (lt (plus n p) (plus m p))))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(\lambda (H: (lt n -m)).(let TMP_411 \def (plus p n) in (let TMP_410 \def (\lambda (n0: nat).(let -TMP_409 \def (plus m p) in (lt n0 TMP_409))) in (let TMP_407 \def (plus p m) -in (let TMP_406 \def (\lambda (n0: nat).(let TMP_405 \def (plus p n) in (lt -TMP_405 n0))) in (let TMP_403 \def (\lambda (n0: nat).(let TMP_402 \def (plus -n0 n) in (let TMP_401 \def (plus n0 m) in (lt TMP_402 TMP_401)))) in (let -TMP_400 \def (\lambda (n0: nat).(\lambda (_: (lt (plus n0 n) (plus n0 -m))).(let TMP_399 \def (S n0) in (lt_reg_l n m TMP_399 H)))) in (let TMP_404 -\def (nat_ind TMP_403 H TMP_400 p) in (let TMP_398 \def (plus m p) in (let -TMP_397 \def (plus_sym m p) in (let TMP_408 \def (eq_ind_r nat TMP_407 -TMP_406 TMP_404 TMP_398 TMP_397) in (let TMP_396 \def (plus n p) in (let -TMP_395 \def (plus_sym n p) in (eq_ind_r nat TMP_411 TMP_410 TMP_408 TMP_396 -TMP_395)))))))))))))))). +m)).(let TMP_1 \def (plus p n) in (let TMP_3 \def (\lambda (n0: nat).(let +TMP_2 \def (plus m p) in (lt n0 TMP_2))) in (let TMP_4 \def (plus p m) in +(let TMP_6 \def (\lambda (n0: nat).(let TMP_5 \def (plus p n) in (lt TMP_5 +n0))) in (let TMP_9 \def (\lambda (n0: nat).(let TMP_7 \def (plus n0 n) in +(let TMP_8 \def (plus n0 m) in (lt TMP_7 TMP_8)))) in (let TMP_11 \def +(\lambda (n0: nat).(\lambda (_: (lt (plus n0 n) (plus n0 m))).(let TMP_10 +\def (S n0) in (lt_reg_l n m TMP_10 H)))) in (let TMP_12 \def (nat_ind TMP_9 +H TMP_11 p) in (let TMP_13 \def (plus m p) in (let TMP_14 \def (plus_sym m p) +in (let TMP_15 \def (eq_ind_r nat TMP_4 TMP_6 TMP_12 TMP_13 TMP_14) in (let +TMP_16 \def (plus n p) in (let TMP_17 \def (plus_sym n p) in (eq_ind_r nat +TMP_1 TMP_3 TMP_15 TMP_16 TMP_17)))))))))))))))). theorem le_lt_plus_plus: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).(\forall (q: nat).((le n m) \to ((lt p q) \to (lt (plus n p) (plus m q))))))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(\lambda (q: -nat).(\lambda (H: (le n m)).(\lambda (H0: (le (S p) q)).(let TMP_419 \def (S -p) in (let TMP_420 \def (plus n TMP_419) in (let TMP_418 \def (\lambda (n0: -nat).(let TMP_417 \def (plus m q) in (le n0 TMP_417))) in (let TMP_415 \def -(S p) in (let TMP_416 \def (le_plus_plus n m TMP_415 q H H0) in (let TMP_413 -\def (S n) in (let TMP_414 \def (plus TMP_413 p) in (let TMP_412 \def -(plus_Snm_nSm n p) in (eq_ind_r nat TMP_420 TMP_418 TMP_416 TMP_414 -TMP_412)))))))))))))). +nat).(\lambda (H: (le n m)).(\lambda (H0: (le (S p) q)).(let TMP_1 \def (S p) +in (let TMP_2 \def (plus n TMP_1) in (let TMP_4 \def (\lambda (n0: nat).(let +TMP_3 \def (plus m q) in (le n0 TMP_3))) in (let TMP_5 \def (S p) in (let +TMP_6 \def (le_plus_plus n m TMP_5 q H H0) in (let TMP_7 \def (S n) in (let +TMP_8 \def (plus TMP_7 p) in (let TMP_9 \def (plus_Snm_nSm n p) in (eq_ind_r +nat TMP_2 TMP_4 TMP_6 TMP_8 TMP_9)))))))))))))). theorem lt_le_plus_plus: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).(\forall (q: nat).((lt n m) \to ((le p q) \to (lt (plus n p) (plus m q))))))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(\lambda (q: -nat).(\lambda (H: (le (S n) m)).(\lambda (H0: (le p q)).(let TMP_421 \def (S -n) in (le_plus_plus TMP_421 m p q H H0))))))). +nat).(\lambda (H: (le (S n) m)).(\lambda (H0: (le p q)).(let TMP_1 \def (S n) +in (le_plus_plus TMP_1 m p q H H0))))))). theorem lt_plus_plus: \forall (n: nat).(\forall (m: nat).(\forall (p: nat).(\forall (q: nat).((lt n m) \to ((lt p q) \to (lt (plus n p) (plus m q))))))) \def \lambda (n: nat).(\lambda (m: nat).(\lambda (p: nat).(\lambda (q: -nat).(\lambda (H: (lt n m)).(\lambda (H0: (lt p q)).(let TMP_422 \def -(lt_le_weak p q H0) in (lt_le_plus_plus n m p q H TMP_422))))))). +nat).(\lambda (H: (lt n m)).(\lambda (H0: (lt p q)).(let TMP_1 \def +(lt_le_weak p q H0) in (lt_le_plus_plus n m p q H TMP_1))))))). theorem well_founded_ltof: \forall (A: Type[0]).(\forall (f: ((A \to nat))).(well_founded A (ltof A f))) \def \lambda (A: Type[0]).(\lambda (f: ((A \to nat))).(let H \def (\lambda (n: -nat).(let TMP_438 \def (\lambda (n0: nat).(\forall (a: A).((lt (f a) n0) \to -(let TMP_437 \def (ltof A f) in (Acc A TMP_437 a))))) in (let TMP_436 \def -(\lambda (a: A).(\lambda (H: (lt (f a) O)).(let TMP_434 \def (ltof A f) in -(let TMP_435 \def (Acc A TMP_434 a) in (let H0 \def H in (let TMP_431 \def (f -a) in (let H1 \def (lt_n_O TMP_431) in (let TMP_432 \def (\lambda (H2: (lt (f -a) O)).(H1 H2)) in (let TMP_433 \def (TMP_432 H0) in (False_ind TMP_435 -TMP_433)))))))))) in (let TMP_430 \def (\lambda (n0: nat).(\lambda (IHn: -((\forall (a: A).((lt (f a) n0) \to (Acc A (ltof A f) a))))).(\lambda (a: -A).(\lambda (ltSma: (lt (f a) (S n0))).(let TMP_429 \def (ltof A f) in (let -TMP_428 \def (\lambda (b: A).(\lambda (ltfafb: (lt (f b) (f a))).(let TMP_426 -\def (f b) in (let TMP_425 \def (f a) in (let TMP_423 \def (f a) in (let -TMP_424 \def (lt_n_Sm_le TMP_423 n0 ltSma) in (let TMP_427 \def (lt_le_trans -TMP_426 TMP_425 n0 ltfafb TMP_424) in (IHn b TMP_427)))))))) in (Acc_intro A -TMP_429 a TMP_428))))))) in (nat_ind TMP_438 TMP_436 TMP_430 n))))) in -(\lambda (a: A).(let TMP_442 \def (f a) in (let TMP_443 \def (S TMP_442) in -(let TMP_439 \def (f a) in (let TMP_440 \def (S TMP_439) in (let TMP_441 \def -(le_n TMP_440) in (H TMP_443 a TMP_441))))))))). +nat).(let TMP_2 \def (\lambda (n0: nat).(\forall (a: A).((lt (f a) n0) \to +(let TMP_1 \def (ltof A f) in (Acc A TMP_1 a))))) in (let TMP_8 \def (\lambda +(a: A).(\lambda (H: (lt (f a) O)).(let TMP_3 \def (ltof A f) in (let TMP_4 +\def (Acc A TMP_3 a) in (let H0 \def H in (let TMP_5 \def (f a) in (let H1 +\def (lt_n_O TMP_5) in (let TMP_6 \def (\lambda (H2: (lt (f a) O)).(H1 H2)) +in (let TMP_7 \def (TMP_6 H0) in (False_ind TMP_4 TMP_7)))))))))) in (let +TMP_16 \def (\lambda (n0: nat).(\lambda (IHn: ((\forall (a: A).((lt (f a) n0) +\to (Acc A (ltof A f) a))))).(\lambda (a: A).(\lambda (ltSma: (lt (f a) (S +n0))).(let TMP_9 \def (ltof A f) in (let TMP_15 \def (\lambda (b: A).(\lambda +(ltfafb: (lt (f b) (f a))).(let TMP_10 \def (f b) in (let TMP_11 \def (f a) +in (let TMP_12 \def (f a) in (let TMP_13 \def (lt_n_Sm_le TMP_12 n0 ltSma) in +(let TMP_14 \def (lt_le_trans TMP_10 TMP_11 n0 ltfafb TMP_13) in (IHn b +TMP_14)))))))) in (Acc_intro A TMP_9 a TMP_15))))))) in (nat_ind TMP_2 TMP_8 +TMP_16 n))))) in (\lambda (a: A).(let TMP_17 \def (f a) in (let TMP_18 \def +(S TMP_17) in (let TMP_19 \def (f a) in (let TMP_20 \def (S TMP_19) in (let +TMP_21 \def (le_n TMP_20) in (H TMP_18 a TMP_21))))))))). theorem lt_wf: well_founded nat lt \def - let TMP_444 \def (\lambda (m: nat).m) in (well_founded_ltof nat TMP_444). + let TMP_1 \def (\lambda (m: nat).m) in (well_founded_ltof nat TMP_1). theorem lt_wf_ind: \forall (p: nat).(\forall (P: ((nat \to Prop))).(((\forall (n: nat).(((\forall (m: nat).((lt m n) \to (P m)))) \to (P n)))) \to (P p))) \def \lambda (p: nat).(\lambda (P: ((nat \to Prop))).(\lambda (H: ((\forall (n: -nat).(((\forall (m: nat).((lt m n) \to (P m)))) \to (P n))))).(let TMP_447 -\def (\lambda (n: nat).(P n)) in (let TMP_446 \def (\lambda (x: nat).(\lambda -(_: ((\forall (y: nat).((lt y x) \to (Acc nat lt y))))).(\lambda (H1: -((\forall (y: nat).((lt y x) \to (P y))))).(H x H1)))) in (let TMP_445 \def -(lt_wf p) in (Acc_ind nat lt TMP_447 TMP_446 p TMP_445)))))). +nat).(((\forall (m: nat).((lt m n) \to (P m)))) \to (P n))))).(let TMP_1 \def +(\lambda (n: nat).(P n)) in (let TMP_2 \def (\lambda (x: nat).(\lambda (_: +((\forall (y: nat).((lt y x) \to (Acc nat lt y))))).(\lambda (H1: ((\forall +(y: nat).((lt y x) \to (P y))))).(H x H1)))) in (let TMP_3 \def (lt_wf p) in +(Acc_ind nat lt TMP_1 TMP_2 p TMP_3)))))).