equal
deleted
inserted
replaced
485 lemma Iio_eq_empty_iff: "{..< n::'a::{linorder, order_bot}} = {} \<longleftrightarrow> n = bot" |
485 lemma Iio_eq_empty_iff: "{..< n::'a::{linorder, order_bot}} = {} \<longleftrightarrow> n = bot" |
486 by (auto simp: set_eq_iff not_less le_bot) |
486 by (auto simp: set_eq_iff not_less le_bot) |
487 |
487 |
488 lemma Iio_eq_empty_iff_nat: "{..< n::nat} = {} \<longleftrightarrow> n = 0" |
488 lemma Iio_eq_empty_iff_nat: "{..< n::nat} = {} \<longleftrightarrow> n = 0" |
489 by (simp add: Iio_eq_empty_iff bot_nat_def) |
489 by (simp add: Iio_eq_empty_iff bot_nat_def) |
|
490 |
|
491 lemma mono_image_least: |
|
492 assumes f_mono: "mono f" and f_img: "f ` {m ..< n} = {m' ..< n'}" "m < n" |
|
493 shows "f m = m'" |
|
494 proof - |
|
495 from f_img have "{m' ..< n'} \<noteq> {}" |
|
496 by (metis atLeastLessThan_empty_iff image_is_empty) |
|
497 with f_img have "m' \<in> f ` {m ..< n}" by auto |
|
498 then obtain k where "f k = m'" "m \<le> k" by auto |
|
499 moreover have "m' \<le> f m" using f_img by auto |
|
500 ultimately show "f m = m'" |
|
501 using f_mono by (auto elim: monoE[where x=m and y=k]) |
|
502 qed |
490 |
503 |
491 |
504 |
492 subsection {* Infinite intervals *} |
505 subsection {* Infinite intervals *} |
493 |
506 |
494 context dense_linorder |
507 context dense_linorder |