X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fground%2Farith%2Fnat_minus.ma;h=e4ccf83f4f4b5265f3e11c4874523dbdda5f98c0;hb=0bcf2dc1a27e38cb6cd3d44eb838d652926841e0;hp=8129ad55c7b92e0182e6fc5e2fc9e2407b4e218d;hpb=5e72e41f4f86814e56d4b00959ccc56c71042a4c;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/ground/arith/nat_minus.ma b/matita/matita/contribs/lambdadelta/ground/arith/nat_minus.ma index 8129ad55c..e4ccf83f4 100644 --- a/matita/matita/contribs/lambdadelta/ground/arith/nat_minus.ma +++ b/matita/matita/contribs/lambdadelta/ground/arith/nat_minus.ma @@ -19,53 +19,62 @@ include "ground/arith/nat_pred_succ.ma". (*** minus *) definition nminus: nat → nat → nat ≝ - λm,n. npred^n m. + λm,n. (npred^n) m. interpretation - "minus (positive integers" + "minus (non-negative integers)" 'minus m n = (nminus m n). -(* Basic rewrites ***********************************************************) +(* Basic constructions ******************************************************) (*** minus_n_O *) lemma nminus_zero_dx (m): m = m - 𝟎. // qed. -lemma nminus_pred_sn (m) (n): ↓(m - n) = ↓m - n. -#m #n @(niter_appl … npred) -qed. +(*** minus_SO_dx *) +lemma nminus_unit_dx (m): ↓m = m - 𝟏 . +// qed. (*** eq_minus_S_pred *) lemma nminus_succ_dx (m) (n): ↓(m - n) = m - ↑n. #m #n @(niter_succ … npred) qed. +(* Advanced constructions ***************************************************) + +lemma nminus_pred_sn (m) (n): ↓(m - n) = ↓m - n. +#m #n @(niter_appl … npred) +qed. + (*** minus_O_n *) lemma nminus_zero_sn (n): 𝟎 = 𝟎 - n. -#n elim n -n // +#n @(nat_ind_succ … n) -n // qed. (*** minus_S_S *) lemma nminus_succ_bi (m) (n): m - n = ↑m - ↑n. -#m #n elim n -n // +#m #n @(nat_ind_succ … n) -n // qed. -(* Advanced rewrites ********************************************************) - lemma nminus_succ_dx_pred_sn (m) (n): ↓m - n = m - ↑n. // qed-. (*** minus_n_n *) lemma nminus_refl (m): 𝟎 = m - m. -#m elim m -m // +#m @(nat_ind_succ … m) -m // qed. (*** minus_Sn_n *) lemma nminus_succ_sn_refl (m): ninj (𝟏) = ↑m - m. -#m elim m -m // +#m @(nat_ind_succ … m) -m // qed. (*** minus_minus_comm *) -lemma nminus_minus_comm (o) (m) (n): o - m - n = o - n - m. -#o #m #n elim n -n // -qed-. +lemma nminus_comm (o) (m) (n): o - m - n = o - n - m. +#o #m #n @(nat_ind_succ … n) -n // +qed. + +(*** minus_minus_comm3 *) +lemma nminus_comm_231 (n) (m1) (m2) (m3): + n-m1-m2-m3 = n-m2-m3-m1. +// qed.