X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Flib%2Farithmetics%2Fdiv_and_mod.ma;h=4044695d221c775f833f90f212f09e7397d86942;hb=bb397726bff29389cdcb649a8c37484395b3b85e;hp=f2b0849afa7b6fe087ef26f039cb00073f9106af;hpb=1b1224fb776aaccb9935e61db36fed1160317621;p=helm.git diff --git a/matita/matita/lib/arithmetics/div_and_mod.ma b/matita/matita/lib/arithmetics/div_and_mod.ma index f2b0849af..4044695d2 100644 --- a/matita/matita/lib/arithmetics/div_and_mod.ma +++ b/matita/matita/lib/arithmetics/div_and_mod.ma @@ -136,7 +136,6 @@ theorem div_times: ∀a,b:nat. O < b → a*b/b = a. @(div_mod_spec_to_eq (a*b) b … O (div_mod_spec_div_mod …)) // @div_mod_spec_intro // qed. -(* theorem div_n_n: ∀n:nat. O < n → n / n = 1. /2/ qed. @@ -148,7 +147,7 @@ theorem eq_div_O: ∀n,m. n < m → n / m = O. theorem mod_n_n: ∀n:nat. O < n → n \mod n = O. #n #posn @(div_mod_spec_to_eq2 n n … 1 0 (div_mod_spec_div_mod …)) -/2/ qed. *) +/2/ qed. theorem mod_S: ∀n,m:nat. O < m → S (n \mod m) < m → ((S n) \mod m) = S (n \mod m). @@ -368,30 +367,11 @@ split ] qed. *) -theorem le_plus_to_minus_r: ∀a,b,c. a + b ≤ c → a ≤ c -b. -#a #b #c #H @(le_plus_to_le_r … b) /2/ -qed. - -theorem le_minus_to_plus_r: ∀a,b,c. c ≤ b → a ≤ b - c → a + c ≤ b. -#a #b #c #Hlecb #H >(plus_minus_m_m … Hlecb) /2/ -qed. - -theorem lt_minus_to_plus: ∀a,b,c. a - b < c → a < c + b. -#a #b #c #H @not_le_to_lt -@(not_to_not … (lt_to_not_le …H)) /2/ -qed. - -theorem lt_minus_to_plus_r: ∀a,b,c. c ≤ a → - a < b + c → a - c < b. -#a #b #c #lea #H @not_le_to_lt -@(not_to_not … (lt_to_not_le …H)) /2/ -qed. - theorem lt_to_le_times_to_lt_S_to_div: ∀a,c,b:nat. O < b → (b*c) ≤ a → a < (b*(S c)) → a/b = c. #a #c #b #posb#lea #lta @(div_mod_spec_to_eq … (a-b*c) (div_mod_spec_div_mod … posb …)) -@div_mod_spec_intro [@lt_minus_to_plus_r // |/2/] +@div_mod_spec_intro [@lt_plus_to_minus // |/2/] qed. theorem div_times_times: ∀a,b,c:nat. O < c → O < b → @@ -407,7 +387,7 @@ O < c → O < b → (a*c) \mod (b*c) = c*(a\mod b). @(div_mod_spec_to_eq2 (a*c) (b*c) (a/b) ((a*c) \mod (b*c)) (a/b) (c*(a \mod b))) [>(div_times_times … posc) // @div_mod_spec_div_mod /2/ |@div_mod_spec_intro - [(applyS monotonic_lt_times_l) /2/ + [applyS (monotonic_lt_times_r … c posc) /2/ |(applyS (eq_f …(λx.x*c))) // ] ]