X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fground%2Farith%2Fnat_lt_pred.ma;h=e05ff9473f0c36213c42ded225f6108a4defff77;hb=888840f6b3a71d3d686b53b702d362ab90ab0038;hp=2b3502259f796845194b82ee7d94f64ecca9112a;hpb=5e72e41f4f86814e56d4b00959ccc56c71042a4c;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_pred.ma b/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_pred.ma index 2b3502259..e05ff9473 100644 --- a/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_pred.ma +++ b/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_pred.ma @@ -12,20 +12,50 @@ (* *) (**************************************************************************) -include "ground/arith/nat_pred_succ.ma". +include "ground/arith/nat_le_pred.ma". include "ground/arith/nat_lt.ma". (* STRICT ORDER FOR NON-NEGATIVE INTEGERS ***********************************) -(* Constructions with npred *************************************************) +(* Destructions with npred **************************************************) -lemma nlt_zero_sn (m): m = ↑↓m → 𝟎 < m. -// qed. +(*** S_pred lt_succ_pred lt_inv_O1 *) +lemma nlt_des_gen (m) (n): m < n → n = ↑↓n. +#m #n @(nat_ind_succ … n) -n // +#H elim (nlt_inv_zero_dx … H) +qed-. (* Inversions with npred ****************************************************) -(*** S_pred *) -lemma nlt_inv_zero_sn (m): 𝟎 < m → m = ↑↓m. -#m @(nat_ind … m) -m // -#H elim (nlt_inv_refl … H) +(*** lt_inv_gen *) +lemma nlt_inv_gen (m) (n): m < n → ∧∧ m ≤ ↓n & n = ↑↓n. +/2 width=1 by nle_inv_succ_sn/ qed-. + +(*** lt_inv_S1 *) +lemma nlt_inv_succ_sn (m) (n): ↑m < n → ∧∧ m < ↓n & n = ↑↓n. +/2 width=1 by nle_inv_succ_sn/ qed-. + +lemma nlt_inv_pred_dx (m) (n): m < ↓n → ↑m < n. +#m #n #H >(nlt_des_gen (𝟎) n) +[ /2 width=1 by nlt_succ_bi/ +| /3 width=3 by nle_nlt_trans, nlt_nle_trans/ +] +qed-. + +lemma nlt_inv_pred_bi (m) (n): + ↓m < ↓n → m < n. +/3 width=3 by nlt_inv_pred_dx, nle_nlt_trans/ qed-. + +(* Constructions with npred *************************************************) + +lemma nlt_zero_sn (n): n = ↑↓n → 𝟎 < n. +// qed. + +(*** monotonic_lt_pred *) +lemma nlt_pred_bi (m) (n): 𝟎 < m → m < n → ↓m < ↓n. +#m #n #Hm #Hmn +@nle_inv_succ_bi +<(nlt_des_gen … Hm) -Hm +<(nlt_des_gen … Hmn) // +qed.