equal
deleted
inserted
replaced
375 hence "inverse (real (Suc n)) * x < 1" |
375 hence "inverse (real (Suc n)) * x < 1" |
376 using x_greater_zero by simp |
376 using x_greater_zero by simp |
377 hence "real (Suc n) * (inverse (real (Suc n)) * x) < real (Suc n) * 1" |
377 hence "real (Suc n) * (inverse (real (Suc n)) * x) < real (Suc n) * 1" |
378 by (rule mult_strict_left_mono) simp |
378 by (rule mult_strict_left_mono) simp |
379 hence "x < real (Suc n)" |
379 hence "x < real (Suc n)" |
380 by (simp add: ring_eq_simps) |
380 by (simp add: ring_simps) |
381 thus "\<exists>(n::nat). x < real n" .. |
381 thus "\<exists>(n::nat). x < real n" .. |
382 qed |
382 qed |
383 |
383 |
384 lemma reals_Archimedean3: |
384 lemma reals_Archimedean3: |
385 assumes x_greater_zero: "0 < x" |
385 assumes x_greater_zero: "0 < x" |
390 obtain n where "y * inverse x < real (n::nat)" |
390 obtain n where "y * inverse x < real (n::nat)" |
391 using reals_Archimedean2 .. |
391 using reals_Archimedean2 .. |
392 hence "y * inverse x * x < real n * x" |
392 hence "y * inverse x * x < real n * x" |
393 using x_greater_zero by (simp add: mult_strict_right_mono) |
393 using x_greater_zero by (simp add: mult_strict_right_mono) |
394 hence "x * inverse x * y < x * real n" |
394 hence "x * inverse x * y < x * real n" |
395 by (simp add: ring_eq_simps) |
395 by (simp add: ring_simps) |
396 hence "y < real (n::nat) * x" |
396 hence "y < real (n::nat) * x" |
397 using x_not_zero by (simp add: ring_eq_simps) |
397 using x_not_zero by (simp add: ring_simps) |
398 thus "\<exists>(n::nat). y < real n * x" .. |
398 thus "\<exists>(n::nat). y < real n * x" .. |
399 qed |
399 qed |
400 |
400 |
401 lemma reals_Archimedean6: |
401 lemma reals_Archimedean6: |
402 "0 \<le> r ==> \<exists>(n::nat). real (n - 1) \<le> r & r < real (n)" |
402 "0 \<le> r ==> \<exists>(n::nat). real (n - 1) \<le> r & r < real (n)" |
1224 by (simp add: a) |
1224 by (simp add: a) |
1225 then have "x / real y = ... / real y" |
1225 then have "x / real y = ... / real y" |
1226 by simp |
1226 by simp |
1227 also have "... = real((natfloor x) div y) + real((natfloor x) mod y) / |
1227 also have "... = real((natfloor x) div y) + real((natfloor x) mod y) / |
1228 real y + (x - real(natfloor x)) / real y" |
1228 real y + (x - real(natfloor x)) / real y" |
1229 by (auto simp add: ring_distrib ring_eq_simps add_divide_distrib |
1229 by (auto simp add: ring_simps add_divide_distrib |
1230 diff_divide_distrib prems) |
1230 diff_divide_distrib prems) |
1231 finally have "natfloor (x / real y) = natfloor(...)" by simp |
1231 finally have "natfloor (x / real y) = natfloor(...)" by simp |
1232 also have "... = natfloor(real((natfloor x) mod y) / |
1232 also have "... = natfloor(real((natfloor x) mod y) / |
1233 real y + (x - real(natfloor x)) / real y + real((natfloor x) div y))" |
1233 real y + (x - real(natfloor x)) / real y + real((natfloor x) div y))" |
1234 by (simp add: add_ac) |
1234 by (simp add: add_ac) |