115 done |
115 done |
116 |
116 |
117 lemma reals_Archimedean6a: "0 \<le> r ==> \<exists>n. real (n) \<le> r & r < real (Suc n)" |
117 lemma reals_Archimedean6a: "0 \<le> r ==> \<exists>n. real (n) \<le> r & r < real (Suc n)" |
118 by (drule reals_Archimedean6) auto |
118 by (drule reals_Archimedean6) auto |
119 |
119 |
|
120 text {* TODO: delete *} |
120 lemma reals_Archimedean_6b_int: |
121 lemma reals_Archimedean_6b_int: |
121 "0 \<le> r ==> \<exists>n::int. real n \<le> r & r < real (n+1)" |
122 "0 \<le> r ==> \<exists>n::int. real n \<le> r & r < real (n+1)" |
122 unfolding real_of_int_def by (rule floor_exists) |
123 unfolding real_of_int_def by (rule floor_exists) |
123 |
124 |
|
125 text {* TODO: delete *} |
124 lemma reals_Archimedean_6c_int: |
126 lemma reals_Archimedean_6c_int: |
125 "r < 0 ==> \<exists>n::int. real n \<le> r & r < real (n+1)" |
127 "r < 0 ==> \<exists>n::int. real n \<le> r & r < real (n+1)" |
126 unfolding real_of_int_def by (rule floor_exists) |
128 unfolding real_of_int_def by (rule floor_exists) |
127 |
129 |
128 |
130 |
202 |
204 |
203 lemma number_of_le_real_of_int_iff2 [simp]: |
205 lemma number_of_le_real_of_int_iff2 [simp]: |
204 "(real (m::int) \<le> (number_of n)) = (m \<le> number_of n)" |
206 "(real (m::int) \<le> (number_of n)) = (m \<le> number_of n)" |
205 by (simp add: linorder_not_less [symmetric]) |
207 by (simp add: linorder_not_less [symmetric]) |
206 |
208 |
207 lemma floor_real_of_nat_zero: "floor (real (0::nat)) = 0" |
|
208 by auto (* delete? *) |
|
209 |
|
210 lemma floor_real_of_nat [simp]: "floor (real (n::nat)) = int n" |
209 lemma floor_real_of_nat [simp]: "floor (real (n::nat)) = int n" |
211 unfolding real_of_nat_def by simp |
210 unfolding real_of_nat_def by simp |
212 |
211 |
213 lemma floor_minus_real_of_nat [simp]: "floor (- real (n::nat)) = - int n" |
212 lemma floor_minus_real_of_nat [simp]: "floor (- real (n::nat)) = - int n" |
214 unfolding real_of_nat_def by (simp add: floor_minus) |
213 unfolding real_of_nat_def by (simp add: floor_minus) |
257 lemma floor_eq4: "[| real n \<le> x; x < real (Suc n) |] ==> nat(floor x) = n" |
256 lemma floor_eq4: "[| real n \<le> x; x < real (Suc n) |] ==> nat(floor x) = n" |
258 apply (drule order_le_imp_less_or_eq) |
257 apply (drule order_le_imp_less_or_eq) |
259 apply (auto intro: floor_eq3) |
258 apply (auto intro: floor_eq3) |
260 done |
259 done |
261 |
260 |
262 lemma floor_number_of_eq: |
|
263 "floor(number_of n :: real) = (number_of n :: int)" |
|
264 by (rule floor_number_of) (* already declared [simp] *) |
|
265 |
|
266 lemma real_of_int_floor_ge_diff_one [simp]: "r - 1 \<le> real(floor r)" |
261 lemma real_of_int_floor_ge_diff_one [simp]: "r - 1 \<le> real(floor r)" |
267 unfolding real_of_int_def using floor_correct [of r] by simp |
262 unfolding real_of_int_def using floor_correct [of r] by simp |
268 |
263 |
269 lemma real_of_int_floor_gt_diff_one [simp]: "r - 1 < real(floor r)" |
264 lemma real_of_int_floor_gt_diff_one [simp]: "r - 1 < real(floor r)" |
270 unfolding real_of_int_def using floor_correct [of r] by simp |
265 unfolding real_of_int_def using floor_correct [of r] by simp |
282 unfolding real_of_int_def by (simp add: le_floor_iff) |
277 unfolding real_of_int_def by (simp add: le_floor_iff) |
283 |
278 |
284 lemma le_floor_eq: "(a <= floor x) = (real a <= x)" |
279 lemma le_floor_eq: "(a <= floor x) = (real a <= x)" |
285 unfolding real_of_int_def by (rule le_floor_iff) |
280 unfolding real_of_int_def by (rule le_floor_iff) |
286 |
281 |
287 lemma le_floor_eq_number_of: |
|
288 "(number_of n <= floor x) = (number_of n <= x)" |
|
289 by (rule number_of_le_floor) (* already declared [simp] *) |
|
290 |
|
291 lemma le_floor_eq_zero: "(0 <= floor x) = (0 <= x)" |
|
292 by (rule zero_le_floor) (* already declared [simp] *) |
|
293 |
|
294 lemma le_floor_eq_one: "(1 <= floor x) = (1 <= x)" |
|
295 by (rule one_le_floor) (* already declared [simp] *) |
|
296 |
|
297 lemma floor_less_eq: "(floor x < a) = (x < real a)" |
282 lemma floor_less_eq: "(floor x < a) = (x < real a)" |
298 unfolding real_of_int_def by (rule floor_less_iff) |
283 unfolding real_of_int_def by (rule floor_less_iff) |
299 |
284 |
300 lemma floor_less_eq_number_of: |
|
301 "(floor x < number_of n) = (x < number_of n)" |
|
302 by (rule floor_less_number_of) (* already declared [simp] *) |
|
303 |
|
304 lemma floor_less_eq_zero: "(floor x < 0) = (x < 0)" |
|
305 by (rule floor_less_zero) (* already declared [simp] *) |
|
306 |
|
307 lemma floor_less_eq_one: "(floor x < 1) = (x < 1)" |
|
308 by (rule floor_less_one) (* already declared [simp] *) |
|
309 |
|
310 lemma less_floor_eq: "(a < floor x) = (real a + 1 <= x)" |
285 lemma less_floor_eq: "(a < floor x) = (real a + 1 <= x)" |
311 unfolding real_of_int_def by (rule less_floor_iff) |
286 unfolding real_of_int_def by (rule less_floor_iff) |
312 |
287 |
313 lemma less_floor_eq_number_of: |
|
314 "(number_of n < floor x) = (number_of n + 1 <= x)" |
|
315 by (rule number_of_less_floor) (* already declared [simp] *) |
|
316 |
|
317 lemma less_floor_eq_zero: "(0 < floor x) = (1 <= x)" |
|
318 by (rule zero_less_floor) (* already declared [simp] *) |
|
319 |
|
320 lemma less_floor_eq_one: "(1 < floor x) = (2 <= x)" |
|
321 by (rule one_less_floor) (* already declared [simp] *) |
|
322 |
|
323 lemma floor_le_eq: "(floor x <= a) = (x < real a + 1)" |
288 lemma floor_le_eq: "(floor x <= a) = (x < real a + 1)" |
324 unfolding real_of_int_def by (rule floor_le_iff) |
289 unfolding real_of_int_def by (rule floor_le_iff) |
325 |
290 |
326 lemma floor_le_eq_number_of: |
|
327 "(floor x <= number_of n) = (x < number_of n + 1)" |
|
328 by (rule floor_le_number_of) (* already declared [simp] *) |
|
329 |
|
330 lemma floor_le_eq_zero: "(floor x <= 0) = (x < 1)" |
|
331 by (rule floor_le_zero) (* already declared [simp] *) |
|
332 |
|
333 lemma floor_le_eq_one: "(floor x <= 1) = (x < 2)" |
|
334 by (rule floor_le_one) (* already declared [simp] *) |
|
335 |
|
336 lemma floor_add [simp]: "floor (x + real a) = floor x + a" |
291 lemma floor_add [simp]: "floor (x + real a) = floor x + a" |
337 unfolding real_of_int_def by (rule floor_add_of_int) |
292 unfolding real_of_int_def by (rule floor_add_of_int) |
338 |
293 |
339 lemma floor_subtract [simp]: "floor (x - real a) = floor x - a" |
294 lemma floor_subtract [simp]: "floor (x - real a) = floor x - a" |
340 unfolding real_of_int_def by (rule floor_diff_of_int) |
295 unfolding real_of_int_def by (rule floor_diff_of_int) |
341 |
|
342 lemma floor_subtract_number_of: "floor (x - number_of n) = |
|
343 floor x - number_of n" |
|
344 by (rule floor_diff_number_of) (* already declared [simp] *) |
|
345 |
|
346 lemma floor_subtract_one: "floor (x - 1) = floor x - 1" |
|
347 by (rule floor_diff_one) (* already declared [simp] *) |
|
348 |
296 |
349 lemma le_mult_floor: |
297 lemma le_mult_floor: |
350 assumes "0 \<le> (a :: real)" and "0 \<le> b" |
298 assumes "0 \<le> (a :: real)" and "0 \<le> b" |
351 shows "floor a * floor b \<le> floor (a * b)" |
299 shows "floor a * floor b \<le> floor (a * b)" |
352 proof - |
300 proof - |
359 qed |
307 qed |
360 |
308 |
361 lemma ceiling_real_of_nat [simp]: "ceiling (real (n::nat)) = int n" |
309 lemma ceiling_real_of_nat [simp]: "ceiling (real (n::nat)) = int n" |
362 unfolding real_of_nat_def by simp |
310 unfolding real_of_nat_def by simp |
363 |
311 |
364 lemma ceiling_real_of_nat_zero: "ceiling (real (0::nat)) = 0" |
|
365 by auto (* delete? *) |
|
366 |
|
367 lemma ceiling_floor [simp]: "ceiling (real (floor r)) = floor r" |
312 lemma ceiling_floor [simp]: "ceiling (real (floor r)) = floor r" |
368 unfolding real_of_int_def by simp |
313 unfolding real_of_int_def by simp |
369 |
314 |
370 lemma floor_ceiling [simp]: "floor (real (ceiling r)) = ceiling r" |
315 lemma floor_ceiling [simp]: "floor (real (ceiling r)) = ceiling r" |
371 unfolding real_of_int_def by simp |
316 unfolding real_of_int_def by simp |
387 unfolding real_of_int_def using ceiling_unique [of "n + 1" x] by simp |
332 unfolding real_of_int_def using ceiling_unique [of "n + 1" x] by simp |
388 |
333 |
389 lemma ceiling_eq3: "[| real n - 1 < x; x \<le> real n |] ==> ceiling x = n" |
334 lemma ceiling_eq3: "[| real n - 1 < x; x \<le> real n |] ==> ceiling x = n" |
390 unfolding real_of_int_def using ceiling_unique [of n x] by simp |
335 unfolding real_of_int_def using ceiling_unique [of n x] by simp |
391 |
336 |
392 lemma ceiling_number_of_eq: |
|
393 "ceiling (number_of n :: real) = (number_of n)" |
|
394 by (rule ceiling_number_of) (* already declared [simp] *) |
|
395 |
|
396 lemma real_of_int_ceiling_diff_one_le [simp]: "real (ceiling r) - 1 \<le> r" |
337 lemma real_of_int_ceiling_diff_one_le [simp]: "real (ceiling r) - 1 \<le> r" |
397 unfolding real_of_int_def using ceiling_correct [of r] by simp |
338 unfolding real_of_int_def using ceiling_correct [of r] by simp |
398 |
339 |
399 lemma real_of_int_ceiling_le_add_one [simp]: "real (ceiling r) \<le> r + 1" |
340 lemma real_of_int_ceiling_le_add_one [simp]: "real (ceiling r) \<le> r + 1" |
400 unfolding real_of_int_def using ceiling_correct [of r] by simp |
341 unfolding real_of_int_def using ceiling_correct [of r] by simp |
406 unfolding real_of_int_def by (simp add: ceiling_le_iff) |
347 unfolding real_of_int_def by (simp add: ceiling_le_iff) |
407 |
348 |
408 lemma ceiling_le_eq: "(ceiling x <= a) = (x <= real a)" |
349 lemma ceiling_le_eq: "(ceiling x <= a) = (x <= real a)" |
409 unfolding real_of_int_def by (rule ceiling_le_iff) |
350 unfolding real_of_int_def by (rule ceiling_le_iff) |
410 |
351 |
411 lemma ceiling_le_eq_number_of: |
|
412 "(ceiling x <= number_of n) = (x <= number_of n)" |
|
413 by (rule ceiling_le_number_of) (* already declared [simp] *) |
|
414 |
|
415 lemma ceiling_le_zero_eq: "(ceiling x <= 0) = (x <= 0)" |
|
416 by (rule ceiling_le_zero) (* already declared [simp] *) |
|
417 |
|
418 lemma ceiling_le_eq_one: "(ceiling x <= 1) = (x <= 1)" |
|
419 by (rule ceiling_le_one) (* already declared [simp] *) |
|
420 |
|
421 lemma less_ceiling_eq: "(a < ceiling x) = (real a < x)" |
352 lemma less_ceiling_eq: "(a < ceiling x) = (real a < x)" |
422 unfolding real_of_int_def by (rule less_ceiling_iff) |
353 unfolding real_of_int_def by (rule less_ceiling_iff) |
423 |
354 |
424 lemma less_ceiling_eq_number_of: |
|
425 "(number_of n < ceiling x) = (number_of n < x)" |
|
426 by (rule number_of_less_ceiling) (* already declared [simp] *) |
|
427 |
|
428 lemma less_ceiling_eq_zero: "(0 < ceiling x) = (0 < x)" |
|
429 by (rule zero_less_ceiling) (* already declared [simp] *) |
|
430 |
|
431 lemma less_ceiling_eq_one: "(1 < ceiling x) = (1 < x)" |
|
432 by (rule one_less_ceiling) (* already declared [simp] *) |
|
433 |
|
434 lemma ceiling_less_eq: "(ceiling x < a) = (x <= real a - 1)" |
355 lemma ceiling_less_eq: "(ceiling x < a) = (x <= real a - 1)" |
435 unfolding real_of_int_def by (rule ceiling_less_iff) |
356 unfolding real_of_int_def by (rule ceiling_less_iff) |
436 |
357 |
437 lemma ceiling_less_eq_number_of: |
|
438 "(ceiling x < number_of n) = (x <= number_of n - 1)" |
|
439 by (rule ceiling_less_number_of) (* already declared [simp] *) |
|
440 |
|
441 lemma ceiling_less_eq_zero: "(ceiling x < 0) = (x <= -1)" |
|
442 by (rule ceiling_less_zero) (* already declared [simp] *) |
|
443 |
|
444 lemma ceiling_less_eq_one: "(ceiling x < 1) = (x <= 0)" |
|
445 by (rule ceiling_less_one) (* already declared [simp] *) |
|
446 |
|
447 lemma le_ceiling_eq: "(a <= ceiling x) = (real a - 1 < x)" |
358 lemma le_ceiling_eq: "(a <= ceiling x) = (real a - 1 < x)" |
448 unfolding real_of_int_def by (rule le_ceiling_iff) |
359 unfolding real_of_int_def by (rule le_ceiling_iff) |
449 |
360 |
450 lemma le_ceiling_eq_number_of: |
|
451 "(number_of n <= ceiling x) = (number_of n - 1 < x)" |
|
452 by (rule number_of_le_ceiling) (* already declared [simp] *) |
|
453 |
|
454 lemma le_ceiling_eq_zero: "(0 <= ceiling x) = (-1 < x)" |
|
455 by (rule zero_le_ceiling) (* already declared [simp] *) |
|
456 |
|
457 lemma le_ceiling_eq_one: "(1 <= ceiling x) = (0 < x)" |
|
458 by (rule one_le_ceiling) (* already declared [simp] *) |
|
459 |
|
460 lemma ceiling_add [simp]: "ceiling (x + real a) = ceiling x + a" |
361 lemma ceiling_add [simp]: "ceiling (x + real a) = ceiling x + a" |
461 unfolding real_of_int_def by (rule ceiling_add_of_int) |
362 unfolding real_of_int_def by (rule ceiling_add_of_int) |
462 |
363 |
463 lemma ceiling_subtract [simp]: "ceiling (x - real a) = ceiling x - a" |
364 lemma ceiling_subtract [simp]: "ceiling (x - real a) = ceiling x - a" |
464 unfolding real_of_int_def by (rule ceiling_diff_of_int) |
365 unfolding real_of_int_def by (rule ceiling_diff_of_int) |
465 |
|
466 lemma ceiling_subtract_number_of: "ceiling (x - number_of n) = |
|
467 ceiling x - number_of n" |
|
468 by (rule ceiling_diff_number_of) (* already declared [simp] *) |
|
469 |
|
470 lemma ceiling_subtract_one: "ceiling (x - 1) = ceiling x - 1" |
|
471 by (rule ceiling_diff_one) (* already declared [simp] *) |
|
472 |
366 |
473 |
367 |
474 subsection {* Versions for the natural numbers *} |
368 subsection {* Versions for the natural numbers *} |
475 |
369 |
476 definition |
370 definition |