X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fground%2Farith%2Fnat_lt_minus.ma;h=61ab9b5444977d6033948a3b92e490898cb730fa;hb=5d9f7ae4bad2b5926f615141c12942b9a8eb23fb;hp=bf889def7538d99a54e5f9f7e360ebb195260abc;hpb=68e028d053806177e218ee1a5f8778d3011bef83;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_minus.ma b/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_minus.ma index bf889def7..61ab9b544 100644 --- a/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_minus.ma +++ b/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_minus.ma @@ -12,37 +12,71 @@ (* *) (**************************************************************************) +include "ground/generated/pull_2.ma". include "ground/arith/nat_le_minus.ma". include "ground/arith/nat_lt_pred.ma". (* STRICT ORDER FOR NON-NEGATIVE INTEGERS ***********************************) -(* Rewrites with nminus *****************************************************) - -(*** minus_pred_pred *) -lemma nminus_pred_bi (m) (n): 𝟎 < m → 𝟎 < n → n - m = ↓n - ↓m. -#m #n #Hm #Hn ->(nlt_inv_zero_sn … Hm) in ⊢ (??%?); -Hm ->(nlt_inv_zero_sn … Hn) in ⊢ (??%?); -Hn -// -qed-. - (* Constructions with nminus ************************************************) (*** monotonic_lt_minus_l *) -lemma nlt_minus_sn_bi (o) (m) (n): o ≤ m → m < n → m - o < n - o. +lemma nlt_minus_bi_dx (o) (m) (n): o ≤ m → m < n → m - o < n - o. #o #m #n #Hom #Hmn -lapply (nle_minus_sn_bi … o Hmn) -Hmn +lapply (nle_minus_bi_dx … o Hmn) -Hmn <(nminus_succ_sn … Hom) // qed. +(*** monotonic_lt_minus_r *) +lemma nlt_minus_bi_sn (o) (m) (n): + m < o -> m < n → o-n < o-m. +#o #m #n #Ho #H +lapply (nle_minus_bi_sn … o H) -H #H +@(nle_nlt_trans … H) -n +@nlt_i >(nminus_succ_sn … Ho) // +qed. + +(* Inversions with nminus ***************************************************) + +lemma nlt_inv_minus_bi_dx (o) (m) (n): + m - o < n - o → m < n. +#o @(nat_ind_succ … o) -o +/3 width=1 by nlt_inv_pred_bi/ +qed-. + (* Destructions with nminus *************************************************) +(*** minus_pred_pred *) +lemma nminus_pred_bi (m) (n): 𝟎 < m → 𝟎 < n → n - m = ↓n - ↓m. +#m #n #Hm #Hn +>(nlt_des_gen … Hm) in ⊢ (??%?); -Hm +>(nlt_des_gen … Hn) in ⊢ (??%?); -Hn +// +qed-. + lemma nlt_des_minus_dx (o) (m) (n): m < n - o → o < n. -#o elim o -o +#o @(nat_ind_succ … o) -o [ #m #n (nminus_minus_dx_refl_sn … Hn) -Hn +lapply (nle_minus_sn_refl_sn n2 n1) +let d ≝ (n2-n1) +@(nat_ind_lt … d) -d -n1 #d +@pull_2 #Hd +>(nminus_minus_dx_refl_sn … Hd) in ⊢ (%→?); -Hd +let n1 ≝ (n2-d) #IHd +@IH -IH [| // ] #m #Hn +/4 width=3 by nlt_des_le, nlt_nle_trans/ +qed-.