229 John Harrison writes: "This turns out to be sufficient (since any set in \<open>\<real>\<^sup>n\<close> can be |
229 John Harrison writes: "This turns out to be sufficient (since any set in \<open>\<real>\<^sup>n\<close> can be |
230 embedded as a closed subset of a convex subset of \<open>\<real>\<^sup>n\<^sup>+\<^sup>1\<close>) to derive the usual |
230 embedded as a closed subset of a convex subset of \<open>\<real>\<^sup>n\<^sup>+\<^sup>1\<close>) to derive the usual |
231 definitions, but we need to split them into two implications because of the lack of type |
231 definitions, but we need to split them into two implications because of the lack of type |
232 quantifiers. Then ENR turns out to be equivalent to ANR plus local compactness."\<close> |
232 quantifiers. Then ENR turns out to be equivalent to ANR plus local compactness."\<close> |
233 |
233 |
234 definition%important AR :: "'a::topological_space set \<Rightarrow> bool" where |
234 definition\<^marker>\<open>tag important\<close> AR :: "'a::topological_space set \<Rightarrow> bool" where |
235 "AR S \<equiv> \<forall>U. \<forall>S'::('a * real) set. |
235 "AR S \<equiv> \<forall>U. \<forall>S'::('a * real) set. |
236 S homeomorphic S' \<and> closedin (top_of_set U) S' \<longrightarrow> S' retract_of U" |
236 S homeomorphic S' \<and> closedin (top_of_set U) S' \<longrightarrow> S' retract_of U" |
237 |
237 |
238 definition%important ANR :: "'a::topological_space set \<Rightarrow> bool" where |
238 definition\<^marker>\<open>tag important\<close> ANR :: "'a::topological_space set \<Rightarrow> bool" where |
239 "ANR S \<equiv> \<forall>U. \<forall>S'::('a * real) set. |
239 "ANR S \<equiv> \<forall>U. \<forall>S'::('a * real) set. |
240 S homeomorphic S' \<and> closedin (top_of_set U) S' |
240 S homeomorphic S' \<and> closedin (top_of_set U) S' |
241 \<longrightarrow> (\<exists>T. openin (top_of_set U) T \<and> S' retract_of T)" |
241 \<longrightarrow> (\<exists>T. openin (top_of_set U) T \<and> S' retract_of T)" |
242 |
242 |
243 definition%important ENR :: "'a::topological_space set \<Rightarrow> bool" where |
243 definition\<^marker>\<open>tag important\<close> ENR :: "'a::topological_space set \<Rightarrow> bool" where |
244 "ENR S \<equiv> \<exists>U. open U \<and> S retract_of U" |
244 "ENR S \<equiv> \<exists>U. open U \<and> S retract_of U" |
245 |
245 |
246 text \<open>First, show that we do indeed get the "usual" properties of ARs and ANRs.\<close> |
246 text \<open>First, show that we do indeed get the "usual" properties of ARs and ANRs.\<close> |
247 |
247 |
248 lemma AR_imp_absolute_extensor: |
248 lemma AR_imp_absolute_extensor: |
4070 then show ?thesis |
4070 then show ?thesis |
4071 using finite_imp_ENR |
4071 using finite_imp_ENR |
4072 by (metis finite_insert infinite_imp_nonempty less_linear sphere_eq_empty sphere_trivial) |
4072 by (metis finite_insert infinite_imp_nonempty less_linear sphere_eq_empty sphere_trivial) |
4073 qed |
4073 qed |
4074 |
4074 |
4075 corollary%unimportant ANR_sphere: |
4075 corollary\<^marker>\<open>tag unimportant\<close> ANR_sphere: |
4076 fixes a :: "'a::euclidean_space" |
4076 fixes a :: "'a::euclidean_space" |
4077 shows "ANR(sphere a r)" |
4077 shows "ANR(sphere a r)" |
4078 by (simp add: ENR_imp_ANR ENR_sphere) |
4078 by (simp add: ENR_imp_ANR ENR_sphere) |
4079 |
4079 |
4080 subsubsection\<open>Spheres are connected, etc\<close> |
4080 subsubsection\<open>Spheres are connected, etc\<close> |
4252 by (simp add: B_def a1 h'_def keq) |
4252 by (simp add: B_def a1 h'_def keq) |
4253 qed |
4253 qed |
4254 qed |
4254 qed |
4255 |
4255 |
4256 |
4256 |
4257 corollary%unimportant nullhomotopic_into_ANR_extension: |
4257 corollary\<^marker>\<open>tag unimportant\<close> nullhomotopic_into_ANR_extension: |
4258 fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
4258 fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
4259 assumes "closed S" |
4259 assumes "closed S" |
4260 and contf: "continuous_on S f" |
4260 and contf: "continuous_on S f" |
4261 and "ANR T" |
4261 and "ANR T" |
4262 and fim: "f ` S \<subseteq> T" |
4262 and fim: "f ` S \<subseteq> T" |
4286 by (simp add: homotopic_from_subtopology) |
4286 by (simp add: homotopic_from_subtopology) |
4287 then show ?lhs |
4287 then show ?lhs |
4288 by (force elim: homotopic_with_eq [of _ _ _ g "\<lambda>x. c"] simp: \<open>\<And>x. x \<in> S \<Longrightarrow> g x = f x\<close>) |
4288 by (force elim: homotopic_with_eq [of _ _ _ g "\<lambda>x. c"] simp: \<open>\<And>x. x \<in> S \<Longrightarrow> g x = f x\<close>) |
4289 qed |
4289 qed |
4290 |
4290 |
4291 corollary%unimportant nullhomotopic_into_rel_frontier_extension: |
4291 corollary\<^marker>\<open>tag unimportant\<close> nullhomotopic_into_rel_frontier_extension: |
4292 fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
4292 fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
4293 assumes "closed S" |
4293 assumes "closed S" |
4294 and contf: "continuous_on S f" |
4294 and contf: "continuous_on S f" |
4295 and "convex T" "bounded T" |
4295 and "convex T" "bounded T" |
4296 and fim: "f ` S \<subseteq> rel_frontier T" |
4296 and fim: "f ` S \<subseteq> rel_frontier T" |
4297 and "S \<noteq> {}" |
4297 and "S \<noteq> {}" |
4298 shows "(\<exists>c. homotopic_with_canon (\<lambda>x. True) S (rel_frontier T) f (\<lambda>x. c)) \<longleftrightarrow> |
4298 shows "(\<exists>c. homotopic_with_canon (\<lambda>x. True) S (rel_frontier T) f (\<lambda>x. c)) \<longleftrightarrow> |
4299 (\<exists>g. continuous_on UNIV g \<and> range g \<subseteq> rel_frontier T \<and> (\<forall>x \<in> S. g x = f x))" |
4299 (\<exists>g. continuous_on UNIV g \<and> range g \<subseteq> rel_frontier T \<and> (\<forall>x \<in> S. g x = f x))" |
4300 by (simp add: nullhomotopic_into_ANR_extension assms ANR_rel_frontier_convex) |
4300 by (simp add: nullhomotopic_into_ANR_extension assms ANR_rel_frontier_convex) |
4301 |
4301 |
4302 corollary%unimportant nullhomotopic_into_sphere_extension: |
4302 corollary\<^marker>\<open>tag unimportant\<close> nullhomotopic_into_sphere_extension: |
4303 fixes f :: "'a::euclidean_space \<Rightarrow> 'b :: euclidean_space" |
4303 fixes f :: "'a::euclidean_space \<Rightarrow> 'b :: euclidean_space" |
4304 assumes "closed S" and contf: "continuous_on S f" |
4304 assumes "closed S" and contf: "continuous_on S f" |
4305 and "S \<noteq> {}" and fim: "f ` S \<subseteq> sphere a r" |
4305 and "S \<noteq> {}" and fim: "f ` S \<subseteq> sphere a r" |
4306 shows "((\<exists>c. homotopic_with_canon (\<lambda>x. True) S (sphere a r) f (\<lambda>x. c)) \<longleftrightarrow> |
4306 shows "((\<exists>c. homotopic_with_canon (\<lambda>x. True) S (sphere a r) f (\<lambda>x. c)) \<longleftrightarrow> |
4307 (\<exists>g. continuous_on UNIV g \<and> range g \<subseteq> sphere a r \<and> (\<forall>x \<in> S. g x = f x)))" |
4307 (\<exists>g. continuous_on UNIV g \<and> range g \<subseteq> sphere a r \<and> (\<forall>x \<in> S. g x = f x)))" |
4319 apply (rule nullhomotopic_into_rel_frontier_extension [OF \<open>closed S\<close> contf convex_cball bounded_cball]) |
4319 apply (rule nullhomotopic_into_rel_frontier_extension [OF \<open>closed S\<close> contf convex_cball bounded_cball]) |
4320 apply (rule \<open>S \<noteq> {}\<close>) |
4320 apply (rule \<open>S \<noteq> {}\<close>) |
4321 done |
4321 done |
4322 qed |
4322 qed |
4323 |
4323 |
4324 proposition%unimportant Borsuk_map_essential_bounded_component: |
4324 proposition\<^marker>\<open>tag unimportant\<close> Borsuk_map_essential_bounded_component: |
4325 fixes a :: "'a :: euclidean_space" |
4325 fixes a :: "'a :: euclidean_space" |
4326 assumes "compact S" and "a \<notin> S" |
4326 assumes "compact S" and "a \<notin> S" |
4327 shows "bounded (connected_component_set (- S) a) \<longleftrightarrow> |
4327 shows "bounded (connected_component_set (- S) a) \<longleftrightarrow> |
4328 \<not>(\<exists>c. homotopic_with_canon (\<lambda>x. True) S (sphere 0 1) |
4328 \<not>(\<exists>c. homotopic_with_canon (\<lambda>x. True) S (sphere 0 1) |
4329 (\<lambda>x. inverse(norm(x - a)) *\<^sub>R (x - a)) (\<lambda>x. c))" |
4329 (\<lambda>x. inverse(norm(x - a)) *\<^sub>R (x - a)) (\<lambda>x. c))" |
4576 show "S \<times> \<Union>(F ` T) \<subseteq> U" |
4576 show "S \<times> \<Union>(F ` T) \<subseteq> U" |
4577 using F by auto |
4577 using F by auto |
4578 qed |
4578 qed |
4579 qed |
4579 qed |
4580 |
4580 |
4581 proposition%unimportant homotopic_neighbourhood_extension: |
4581 proposition\<^marker>\<open>tag unimportant\<close> homotopic_neighbourhood_extension: |
4582 fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
4582 fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space" |
4583 assumes contf: "continuous_on S f" and fim: "f ` S \<subseteq> U" |
4583 assumes contf: "continuous_on S f" and fim: "f ` S \<subseteq> U" |
4584 and contg: "continuous_on S g" and gim: "g ` S \<subseteq> U" |
4584 and contg: "continuous_on S g" and gim: "g ` S \<subseteq> U" |
4585 and clo: "closedin (top_of_set S) T" |
4585 and clo: "closedin (top_of_set S) T" |
4586 and "ANR U" and hom: "homotopic_with_canon (\<lambda>x. True) T U f g" |
4586 and "ANR U" and hom: "homotopic_with_canon (\<lambda>x. True) T U f g" |
4641 ultimately show ?thesis |
4641 ultimately show ?thesis |
4642 by (blast intro: that) |
4642 by (blast intro: that) |
4643 qed |
4643 qed |
4644 |
4644 |
4645 text\<open> Homotopy on a union of closed-open sets.\<close> |
4645 text\<open> Homotopy on a union of closed-open sets.\<close> |
4646 proposition%unimportant homotopic_on_clopen_Union: |
4646 proposition\<^marker>\<open>tag unimportant\<close> homotopic_on_clopen_Union: |
4647 fixes \<F> :: "'a::euclidean_space set set" |
4647 fixes \<F> :: "'a::euclidean_space set set" |
4648 assumes "\<And>S. S \<in> \<F> \<Longrightarrow> closedin (top_of_set (\<Union>\<F>)) S" |
4648 assumes "\<And>S. S \<in> \<F> \<Longrightarrow> closedin (top_of_set (\<Union>\<F>)) S" |
4649 and "\<And>S. S \<in> \<F> \<Longrightarrow> openin (top_of_set (\<Union>\<F>)) S" |
4649 and "\<And>S. S \<in> \<F> \<Longrightarrow> openin (top_of_set (\<Union>\<F>)) S" |
4650 and "\<And>S. S \<in> \<F> \<Longrightarrow> homotopic_with_canon (\<lambda>x. True) S T f g" |
4650 and "\<And>S. S \<in> \<F> \<Longrightarrow> homotopic_with_canon (\<lambda>x. True) S T f g" |
4651 shows "homotopic_with_canon (\<lambda>x. True) (\<Union>\<F>) T f g" |
4651 shows "homotopic_with_canon (\<lambda>x. True) (\<Union>\<F>) T f g" |