src/HOL/Analysis/Convex_Euclidean_Space.thy
changeset 69710 61372780515b
parent 69619 3f7d8e05e0f2
child 69922 4a9167f377b0
equal deleted inserted replaced
69700:7a92cbec7030 69710:61372780515b
   519     done
   519     done
   520   ultimately show ?thesis
   520   ultimately show ?thesis
   521     using mem_rel_interior_ball[of "x - e *\<^sub>R (x - c)" S] \<open>e > 0\<close> by auto
   521     using mem_rel_interior_ball[of "x - e *\<^sub>R (x - c)" S] \<open>e > 0\<close> by auto
   522 qed
   522 qed
   523 
   523 
   524 lemma interior_real_semiline:
   524 lemma interior_real_atLeast [simp]:
   525   fixes a :: real
   525   fixes a :: real
   526   shows "interior {a..} = {a<..}"
   526   shows "interior {a..} = {a<..}"
   527 proof -
   527 proof -
   528   {
   528   {
   529     fix y
   529     fix y
   559     by (auto simp: continuous_on_closed_vimage)
   559     by (auto simp: continuous_on_closed_vimage)
   560   hence "closure (g -` {a..} \<inter> {c..d}) = g -` {a..} \<inter> {c..d}" by simp
   560   hence "closure (g -` {a..} \<inter> {c..d}) = g -` {a..} \<inter> {c..d}" by simp
   561   finally show ?thesis using \<open>x \<in> {c..d}\<close> by auto
   561   finally show ?thesis using \<open>x \<in> {c..d}\<close> by auto
   562 qed
   562 qed
   563 
   563 
   564 lemma interior_real_semiline':
   564 lemma interior_real_atMost [simp]:
   565   fixes a :: real
   565   fixes a :: real
   566   shows "interior {..a} = {..<a}"
   566   shows "interior {..a} = {..<a}"
   567 proof -
   567 proof -
   568   {
   568   {
   569     fix y
   569     fix y
   590 
   590 
   591 lemma interior_atLeastAtMost_real [simp]: "interior {a..b} = {a<..<b :: real}"
   591 lemma interior_atLeastAtMost_real [simp]: "interior {a..b} = {a<..<b :: real}"
   592 proof-
   592 proof-
   593   have "{a..b} = {a..} \<inter> {..b}" by auto
   593   have "{a..b} = {a..} \<inter> {..b}" by auto
   594   also have "interior \<dots> = {a<..} \<inter> {..<b}"
   594   also have "interior \<dots> = {a<..} \<inter> {..<b}"
   595     by (simp add: interior_real_semiline interior_real_semiline')
   595     by (simp add: interior_real_atLeast interior_real_atMost)
   596   also have "\<dots> = {a<..<b}" by auto
   596   also have "\<dots> = {a<..<b}" by auto
   597   finally show ?thesis .
   597   finally show ?thesis .
   598 qed
   598 qed
   599 
   599 
   600 lemma interior_atLeastLessThan [simp]:
   600 lemma interior_atLeastLessThan [simp]:
   601   fixes a::real shows "interior {a..<b} = {a<..<b}"
   601   fixes a::real shows "interior {a..<b} = {a<..<b}"
   602   by (metis atLeastLessThan_def greaterThanLessThan_def interior_atLeastAtMost_real interior_Int interior_interior interior_real_semiline)
   602   by (metis atLeastLessThan_def greaterThanLessThan_def interior_atLeastAtMost_real interior_Int interior_interior interior_real_atLeast)
   603 
   603 
   604 lemma interior_lessThanAtMost [simp]:
   604 lemma interior_lessThanAtMost [simp]:
   605   fixes a::real shows "interior {a<..b} = {a<..<b}"
   605   fixes a::real shows "interior {a<..b} = {a<..<b}"
   606   by (metis atLeastAtMost_def greaterThanAtMost_def interior_atLeastAtMost_real interior_Int
   606   by (metis atLeastAtMost_def greaterThanAtMost_def interior_atLeastAtMost_real interior_Int
   607             interior_interior interior_real_semiline)
   607             interior_interior interior_real_atLeast)
   608 
   608 
   609 lemma interior_greaterThanLessThan_real [simp]: "interior {a<..<b} = {a<..<b :: real}"
   609 lemma interior_greaterThanLessThan_real [simp]: "interior {a<..<b} = {a<..<b :: real}"
   610   by (metis interior_atLeastAtMost_real interior_interior)
   610   by (metis interior_atLeastAtMost_real interior_interior)
   611 
   611 
   612 lemma frontier_real_Iic [simp]:
   612 lemma frontier_real_atMost [simp]:
   613   fixes a :: real
   613   fixes a :: real
   614   shows "frontier {..a} = {a}"
   614   shows "frontier {..a} = {a}"
   615   unfolding frontier_def by (auto simp: interior_real_semiline')
   615   unfolding frontier_def by (auto simp: interior_real_atMost)
       
   616 
       
   617 lemma frontier_real_atLeast [simp]: "frontier {a..} = {a::real}"
       
   618   by (auto simp: frontier_def)
       
   619 
       
   620 lemma frontier_real_greaterThan [simp]: "frontier {a<..} = {a::real}"
       
   621   by (auto simp: interior_open frontier_def)
       
   622 
       
   623 lemma frontier_real_lessThan [simp]: "frontier {..<a} = {a::real}"
       
   624   by (auto simp: interior_open frontier_def)
   616 
   625 
   617 lemma rel_interior_real_box [simp]:
   626 lemma rel_interior_real_box [simp]:
   618   fixes a b :: real
   627   fixes a b :: real
   619   assumes "a < b"
   628   assumes "a < b"
   620   shows "rel_interior {a .. b} = {a <..< b}"
   629   shows "rel_interior {a .. b} = {a <..< b}"
   632   fixes a :: real
   641   fixes a :: real
   633   shows "rel_interior {a..} = {a<..}"
   642   shows "rel_interior {a..} = {a<..}"
   634 proof -
   643 proof -
   635   have *: "{a<..} \<noteq> {}"
   644   have *: "{a<..} \<noteq> {}"
   636     unfolding set_eq_iff by (auto intro!: exI[of _ "a + 1"])
   645     unfolding set_eq_iff by (auto intro!: exI[of _ "a + 1"])
   637   then show ?thesis using interior_real_semiline interior_rel_interior_gen[of "{a..}"]
   646   then show ?thesis using interior_real_atLeast interior_rel_interior_gen[of "{a..}"]
   638     by (auto split: if_split_asm)
   647     by (auto split: if_split_asm)
   639 qed
   648 qed
   640 
   649 
   641 subsubsection \<open>Relative open sets\<close>
   650 subsubsection \<open>Relative open sets\<close>
   642 
   651