src/HOL/Analysis/Homeomorphism.thy
changeset 68073 fad29d2a17a5
parent 68072 493b818e8e10
parent 68069 36209dfb981e
child 68074 8d50467f7555
equal deleted inserted replaced
68072:493b818e8e10 68073:fad29d2a17a5
   879   then have bne: "ball z 1 \<inter> U \<noteq> {}" by force
   879   then have bne: "ball z 1 \<inter> U \<noteq> {}" by force
   880   then have [simp]: "aff_dim(ball z 1 \<inter> U) = aff_dim U"
   880   then have [simp]: "aff_dim(ball z 1 \<inter> U) = aff_dim U"
   881     using aff_dim_convex_Int_open [OF \<open>convex U\<close> open_ball]
   881     using aff_dim_convex_Int_open [OF \<open>convex U\<close> open_ball]
   882     by (fastforce simp add: Int_commute)
   882     by (fastforce simp add: Int_commute)
   883   have "rel_frontier S homeomorphic rel_frontier (ball z 1 \<inter> U)"
   883   have "rel_frontier S homeomorphic rel_frontier (ball z 1 \<inter> U)"
   884     apply (rule homeomorphic_rel_frontiers_convex_bounded_sets)
   884     by (rule homeomorphic_rel_frontiers_convex_bounded_sets)
   885     apply (auto simp: \<open>affine U\<close> affine_imp_convex convex_Int affdS assms)
   885        (auto simp: \<open>affine U\<close> affine_imp_convex convex_Int affdS assms)
   886     done
       
   887   also have "... = sphere z 1 \<inter> U"
   886   also have "... = sphere z 1 \<inter> U"
   888     using convex_affine_rel_frontier_Int [of "ball z 1" U]
   887     using convex_affine_rel_frontier_Int [of "ball z 1" U]
   889     by (simp add: \<open>affine U\<close> bne)
   888     by (simp add: \<open>affine U\<close> bne)
   890   finally have "rel_frontier S homeomorphic sphere z 1 \<inter> U" . 
   889   finally have "rel_frontier S homeomorphic sphere z 1 \<inter> U" . 
   891   then obtain h k where him: "h ` rel_frontier S = sphere z 1 \<inter> U"
   890   then obtain h k where him: "h ` rel_frontier S = sphere z 1 \<inter> U"
   901       using him a kh by auto metis
   900       using him a kh by auto metis
   902     show "k ` (sphere z 1 \<inter> U - {h a}) = rel_frontier S - {a}"
   901     show "k ` (sphere z 1 \<inter> U - {h a}) = rel_frontier S - {a}"
   903       by (force simp: h [symmetric] image_comp o_def kh)
   902       by (force simp: h [symmetric] image_comp o_def kh)
   904   qed (auto intro: continuous_on_subset hcon kcon simp: kh hk)
   903   qed (auto intro: continuous_on_subset hcon kcon simp: kh hk)
   905   also have "... homeomorphic T"
   904   also have "... homeomorphic T"
   906     apply (rule homeomorphic_punctured_affine_sphere_affine)
   905     by (rule homeomorphic_punctured_affine_sphere_affine)
   907     using a him
   906        (use a him in \<open>auto simp: affS affdS \<open>affine T\<close> \<open>affine U\<close> \<open>z \<in> U\<close>\<close>)
   908     by (auto simp: affS affdS \<open>affine T\<close> \<open>affine U\<close> \<open>z \<in> U\<close>)
       
   909   finally show ?thesis .
   907   finally show ?thesis .
   910 qed
   908 qed
   911 
   909 
   912 
   910 
   913 text\<open> When dealing with AR, ANR and ANR later, it's useful to know that every set
   911 text\<open> When dealing with AR, ANR and ANR later, it's useful to know that every set
   963     apply (auto simp: affine_hyperplane)
   961     apply (auto simp: affine_hyperplane)
   964     by (metis DIM_positive Suc_eq_plus1 add.left_neutral diff_add_cancel not_le not_less_eq_eq of_nat_1 of_nat_diff)
   962     by (metis DIM_positive Suc_eq_plus1 add.left_neutral diff_add_cancel not_le not_less_eq_eq of_nat_1 of_nat_diff)
   965   then obtain f g where fg: "homeomorphism (sphere 0 1 - {i}) {x. i \<bullet> x = 0} f g"
   963   then obtain f g where fg: "homeomorphism (sphere 0 1 - {i}) {x. i \<bullet> x = 0} f g"
   966     by (force simp: homeomorphic_def)
   964     by (force simp: homeomorphic_def)
   967   have "h ` (+) (- a) ` S \<subseteq> T"
   965   have "h ` (+) (- a) ` S \<subseteq> T"
   968     using heq span_clauses(1) span_linear_image by blast
   966     using heq span_superset span_linear_image by blast
   969   then have "g ` h ` (+) (- a) ` S \<subseteq> g ` {x. i \<bullet> x = 0}"
   967   then have "g ` h ` (+) (- a) ` S \<subseteq> g ` {x. i \<bullet> x = 0}"
   970     using Tsub by (simp add: image_mono)
   968     using Tsub by (simp add: image_mono)
   971   also have "... \<subseteq> sphere 0 1 - {i}"
   969   also have "... \<subseteq> sphere 0 1 - {i}"
   972     by (simp add: fg [unfolded homeomorphism_def])
   970     by (simp add: fg [unfolded homeomorphism_def])
   973   finally have gh_sub_sph: "(g \<circ> h) ` (+) (- a) ` S \<subseteq> sphere 0 1 - {i}"
   971   finally have gh_sub_sph: "(g \<circ> h) ` (+) (- a) ` S \<subseteq> sphere 0 1 - {i}"
   987     by (simp add: homeomorphic_translation)
   985     by (simp add: homeomorphic_translation)
   988   also have Shom: "\<dots> homeomorphic (g \<circ> h) ` (+) (- a) ` S"
   986   also have Shom: "\<dots> homeomorphic (g \<circ> h) ` (+) (- a) ` S"
   989     apply (simp add: homeomorphic_def homeomorphism_def)
   987     apply (simp add: homeomorphic_def homeomorphism_def)
   990     apply (rule_tac x="g \<circ> h" in exI)
   988     apply (rule_tac x="g \<circ> h" in exI)
   991     apply (rule_tac x="k \<circ> f" in exI)
   989     apply (rule_tac x="k \<circ> f" in exI)
   992     apply (auto simp: ghcont kfcont span_clauses(1) homeomorphism_apply2 [OF fg] image_comp)
   990     apply (auto simp: ghcont kfcont span_superset homeomorphism_apply2 [OF fg] image_comp)
   993     apply (force simp: o_def homeomorphism_apply2 [OF fg] span_clauses(1))
   991     apply (force simp: o_def homeomorphism_apply2 [OF fg] span_superset)
   994     done
   992     done
   995   finally have Shom: "S homeomorphic (g \<circ> h) ` (+) (- a) ` S" .
   993   finally have Shom: "S homeomorphic (g \<circ> h) ` (+) (- a) ` S" .
   996   show ?thesis
   994   show ?thesis
   997     apply (rule_tac U = "ball 0 1 \<union> image (g o h) ((+) (- a) ` S)"
   995     apply (rule_tac U = "ball 0 1 \<union> image (g o h) ((+) (- a) ` S)"
   998                 and T = "image (g o h) ((+) (- a) ` S)"
   996                 and T = "image (g o h) ((+) (- a) ` S)"