src/HOL/Set_Interval.thy
changeset 58970 2f65dcd32a59
parent 58889 5b7a9633cfa8
child 59000 6eb0725503fc
equal deleted inserted replaced
58969:5f179549c362 58970:2f65dcd32a59
   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