equal
deleted
inserted
replaced
331 hence "\<bar>inverse (X n) - inverse (Y n)\<bar> = |
331 hence "\<bar>inverse (X n) - inverse (Y n)\<bar> = |
332 inverse \<bar>X n\<bar> * \<bar>X n - Y n\<bar> * inverse \<bar>Y n\<bar>" |
332 inverse \<bar>X n\<bar> * \<bar>X n - Y n\<bar> * inverse \<bar>Y n\<bar>" |
333 by (simp add: inverse_diff_inverse abs_mult) |
333 by (simp add: inverse_diff_inverse abs_mult) |
334 also have "\<dots> < inverse a * s * inverse b" |
334 also have "\<dots> < inverse a * s * inverse b" |
335 apply (intro mult_strict_mono' less_imp_inverse_less) |
335 apply (intro mult_strict_mono' less_imp_inverse_less) |
336 apply (simp_all add: a b i j k n mult_nonneg_nonneg) |
336 apply (simp_all add: a b i j k n) |
337 done |
337 done |
338 also note `inverse a * s * inverse b = r` |
338 also note `inverse a * s * inverse b = r` |
339 finally show "\<bar>inverse (X n) - inverse (Y n)\<bar> < r" . |
339 finally show "\<bar>inverse (X n) - inverse (Y n)\<bar> < r" . |
340 qed |
340 qed |
341 thus "\<exists>k. \<forall>n\<ge>k. \<bar>inverse (X n) - inverse (Y n)\<bar> < r" .. |
341 thus "\<exists>k. \<forall>n\<ge>k. \<bar>inverse (X n) - inverse (Y n)\<bar> < r" .. |
1925 qed |
1925 qed |
1926 |
1926 |
1927 lemma le_mult_natfloor: |
1927 lemma le_mult_natfloor: |
1928 shows "natfloor a * natfloor b \<le> natfloor (a * b)" |
1928 shows "natfloor a * natfloor b \<le> natfloor (a * b)" |
1929 by (cases "0 <= a & 0 <= b") |
1929 by (cases "0 <= a & 0 <= b") |
1930 (auto simp add: le_natfloor_eq mult_nonneg_nonneg mult_mono' real_natfloor_le natfloor_neg) |
1930 (auto simp add: le_natfloor_eq mult_mono' real_natfloor_le natfloor_neg) |
1931 |
1931 |
1932 lemma natceiling_zero [simp]: "natceiling 0 = 0" |
1932 lemma natceiling_zero [simp]: "natceiling 0 = 0" |
1933 by (unfold natceiling_def, simp) |
1933 by (unfold natceiling_def, simp) |
1934 |
1934 |
1935 lemma natceiling_one [simp]: "natceiling 1 = 1" |
1935 lemma natceiling_one [simp]: "natceiling 1 = 1" |