equal
deleted
inserted
replaced
279 using \<open>T \<subseteq> image f S\<close> \<open>inj f\<close> unfolding inj_on_def subset_eq by auto |
279 using \<open>T \<subseteq> image f S\<close> \<open>inj f\<close> unfolding inj_on_def subset_eq by auto |
280 ultimately have "y \<in> interior S" .. |
280 ultimately have "y \<in> interior S" .. |
281 with \<open>x = f y\<close> show "x \<in> f ` interior S" .. |
281 with \<open>x = f y\<close> show "x \<in> f ` interior S" .. |
282 qed |
282 qed |
283 |
283 |
284 subsection%unimportant \<open>Equality of continuous functions on closure and related results\<close> |
284 subsection\<^marker>\<open>tag unimportant\<close> \<open>Equality of continuous functions on closure and related results\<close> |
285 |
285 |
286 lemma continuous_closedin_preimage_constant: |
286 lemma continuous_closedin_preimage_constant: |
287 fixes f :: "_ \<Rightarrow> 'b::t1_space" |
287 fixes f :: "_ \<Rightarrow> 'b::t1_space" |
288 shows "continuous_on S f \<Longrightarrow> closedin (top_of_set S) {x \<in> S. f x = a}" |
288 shows "continuous_on S f \<Longrightarrow> closedin (top_of_set S) {x \<in> S. f x = a}" |
289 using continuous_closedin_preimage[of S f "{a}"] by (simp add: vimage_def Collect_conj_eq) |
289 using continuous_closedin_preimage[of S f "{a}"] by (simp add: vimage_def Collect_conj_eq) |
317 ultimately have "closure S = (closure S \<inter> f -` T)" |
317 ultimately have "closure S = (closure S \<inter> f -` T)" |
318 using closure_minimal[of S "(closure S \<inter> f -` T)"] by auto |
318 using closure_minimal[of S "(closure S \<inter> f -` T)"] by auto |
319 then show ?thesis by auto |
319 then show ?thesis by auto |
320 qed |
320 qed |
321 |
321 |
322 subsection%unimportant \<open>A function constant on a set\<close> |
322 subsection\<^marker>\<open>tag unimportant\<close> \<open>A function constant on a set\<close> |
323 |
323 |
324 definition constant_on (infixl "(constant'_on)" 50) |
324 definition constant_on (infixl "(constant'_on)" 50) |
325 where "f constant_on A \<equiv> \<exists>y. \<forall>x\<in>A. f x = y" |
325 where "f constant_on A \<equiv> \<exists>y. \<forall>x\<in>A. f x = y" |
326 |
326 |
327 lemma constant_on_subset: "\<lbrakk>f constant_on A; B \<subseteq> A\<rbrakk> \<Longrightarrow> f constant_on B" |
327 lemma constant_on_subset: "\<lbrakk>f constant_on A; B \<subseteq> A\<rbrakk> \<Longrightarrow> f constant_on B" |
339 shows "f constant_on (closure S)" |
339 shows "f constant_on (closure S)" |
340 using continuous_constant_on_closure [OF contf] cof unfolding constant_on_def |
340 using continuous_constant_on_closure [OF contf] cof unfolding constant_on_def |
341 by metis |
341 by metis |
342 |
342 |
343 |
343 |
344 subsection%unimportant \<open>Continuity relative to a union.\<close> |
344 subsection\<^marker>\<open>tag unimportant\<close> \<open>Continuity relative to a union.\<close> |
345 |
345 |
346 lemma continuous_on_Un_local: |
346 lemma continuous_on_Un_local: |
347 "\<lbrakk>closedin (top_of_set (s \<union> t)) s; closedin (top_of_set (s \<union> t)) t; |
347 "\<lbrakk>closedin (top_of_set (s \<union> t)) s; closedin (top_of_set (s \<union> t)) t; |
348 continuous_on s f; continuous_on t f\<rbrakk> |
348 continuous_on s f; continuous_on t f\<rbrakk> |
349 \<Longrightarrow> continuous_on (s \<union> t) f" |
349 \<Longrightarrow> continuous_on (s \<union> t) f" |
389 shows "continuous_on s (\<lambda>t. if t \<le> a then f(t) else g(t))" |
389 shows "continuous_on s (\<lambda>t. if t \<le> a then f(t) else g(t))" |
390 using assms |
390 using assms |
391 by (auto simp: continuous_on_id intro: continuous_on_cases_le [where h = id, simplified]) |
391 by (auto simp: continuous_on_id intro: continuous_on_cases_le [where h = id, simplified]) |
392 |
392 |
393 |
393 |
394 subsection%unimportant\<open>Inverse function property for open/closed maps\<close> |
394 subsection\<^marker>\<open>tag unimportant\<close>\<open>Inverse function property for open/closed maps\<close> |
395 |
395 |
396 lemma continuous_on_inverse_open_map: |
396 lemma continuous_on_inverse_open_map: |
397 assumes contf: "continuous_on S f" |
397 assumes contf: "continuous_on S f" |
398 and imf: "f ` S = T" |
398 and imf: "f ` S = T" |
399 and injf: "\<And>x. x \<in> S \<Longrightarrow> g (f x) = x" |
399 and injf: "\<And>x. x \<in> S \<Longrightarrow> g (f x) = x" |
477 by (metis hom homeomorphism_def) |
477 by (metis hom homeomorphism_def) |
478 ultimately show ?thesis |
478 ultimately show ?thesis |
479 by (simp add: continuous_on_closed oo) |
479 by (simp add: continuous_on_closed oo) |
480 qed |
480 qed |
481 |
481 |
482 subsection%unimportant \<open>Seperability\<close> |
482 subsection\<^marker>\<open>tag unimportant\<close> \<open>Seperability\<close> |
483 |
483 |
484 lemma subset_second_countable: |
484 lemma subset_second_countable: |
485 obtains \<B> :: "'a:: second_countable_topology set set" |
485 obtains \<B> :: "'a:: second_countable_topology set set" |
486 where "countable \<B>" |
486 where "countable \<B>" |
487 "{} \<notin> \<B>" |
487 "{} \<notin> \<B>" |
538 by (clarsimp simp add: countable_subset_image) |
538 by (clarsimp simp add: countable_subset_image) |
539 then show ?thesis .. |
539 then show ?thesis .. |
540 qed |
540 qed |
541 |
541 |
542 |
542 |
543 subsection%unimportant\<open>Closed Maps\<close> |
543 subsection\<^marker>\<open>tag unimportant\<close>\<open>Closed Maps\<close> |
544 |
544 |
545 lemma continuous_imp_closed_map: |
545 lemma continuous_imp_closed_map: |
546 fixes f :: "'a::t2_space \<Rightarrow> 'b::t2_space" |
546 fixes f :: "'a::t2_space \<Rightarrow> 'b::t2_space" |
547 assumes "closedin (top_of_set S) U" |
547 assumes "closedin (top_of_set S) U" |
548 "continuous_on S f" "f ` S = T" "compact S" |
548 "continuous_on S f" "f ` S = T" "compact S" |
559 using cloU by (auto simp: closedin_closed) |
559 using cloU by (auto simp: closedin_closed) |
560 with cc [of "S \<inter> V"] \<open>T' \<subseteq> T\<close> show ?thesis |
560 with cc [of "S \<inter> V"] \<open>T' \<subseteq> T\<close> show ?thesis |
561 by (fastforce simp add: closedin_closed) |
561 by (fastforce simp add: closedin_closed) |
562 qed |
562 qed |
563 |
563 |
564 subsection%unimportant\<open>Open Maps\<close> |
564 subsection\<^marker>\<open>tag unimportant\<close>\<open>Open Maps\<close> |
565 |
565 |
566 lemma open_map_restrict: |
566 lemma open_map_restrict: |
567 assumes opeU: "openin (top_of_set (S \<inter> f -` T')) U" |
567 assumes opeU: "openin (top_of_set (S \<inter> f -` T')) U" |
568 and oo: "\<And>U. openin (top_of_set S) U \<Longrightarrow> openin (top_of_set T) (f ` U)" |
568 and oo: "\<And>U. openin (top_of_set S) U \<Longrightarrow> openin (top_of_set T) (f ` U)" |
569 and "T' \<subseteq> T" |
569 and "T' \<subseteq> T" |
574 with oo [of "S \<inter> V"] \<open>T' \<subseteq> T\<close> show ?thesis |
574 with oo [of "S \<inter> V"] \<open>T' \<subseteq> T\<close> show ?thesis |
575 by (fastforce simp add: openin_open) |
575 by (fastforce simp add: openin_open) |
576 qed |
576 qed |
577 |
577 |
578 |
578 |
579 subsection%unimportant\<open>Quotient maps\<close> |
579 subsection\<^marker>\<open>tag unimportant\<close>\<open>Quotient maps\<close> |
580 |
580 |
581 lemma quotient_map_imp_continuous_open: |
581 lemma quotient_map_imp_continuous_open: |
582 assumes T: "f ` S \<subseteq> T" |
582 assumes T: "f ` S \<subseteq> T" |
583 and ope: "\<And>U. U \<subseteq> T |
583 and ope: "\<And>U. U \<subseteq> T |
584 \<Longrightarrow> (openin (top_of_set S) (S \<inter> f -` U) \<longleftrightarrow> |
584 \<Longrightarrow> (openin (top_of_set S) (S \<inter> f -` U) \<longleftrightarrow> |
691 assumes "continuous_on S f" "f ` S = T" "compact S" "U \<subseteq> T" |
691 assumes "continuous_on S f" "f ` S = T" "compact S" "U \<subseteq> T" |
692 shows "openin (top_of_set S) (S \<inter> f -` U) \<longleftrightarrow> |
692 shows "openin (top_of_set S) (S \<inter> f -` U) \<longleftrightarrow> |
693 openin (top_of_set T) U" |
693 openin (top_of_set T) U" |
694 by (metis (no_types, lifting) assms closed_map_imp_quotient_map continuous_imp_closed_map) |
694 by (metis (no_types, lifting) assms closed_map_imp_quotient_map continuous_imp_closed_map) |
695 |
695 |
696 subsection%unimportant\<open>Pasting lemmas for functions, for of casewise definitions\<close> |
696 subsection\<^marker>\<open>tag unimportant\<close>\<open>Pasting lemmas for functions, for of casewise definitions\<close> |
697 |
697 |
698 subsubsection\<open>on open sets\<close> |
698 subsubsection\<open>on open sets\<close> |
699 |
699 |
700 lemma pasting_lemma: |
700 lemma pasting_lemma: |
701 assumes ope: "\<And>i. i \<in> I \<Longrightarrow> openin X (T i)" |
701 assumes ope: "\<And>i. i \<in> I \<Longrightarrow> openin X (T i)" |
903 using that continuous_map_frontier_frontier_preimage_subset [OF contp, of U] fg by blast |
903 using that continuous_map_frontier_frontier_preimage_subset [OF contp, of U] fg by blast |
904 qed |
904 qed |
905 |
905 |
906 subsection \<open>Retractions\<close> |
906 subsection \<open>Retractions\<close> |
907 |
907 |
908 definition%important retraction :: "('a::topological_space) set \<Rightarrow> 'a set \<Rightarrow> ('a \<Rightarrow> 'a) \<Rightarrow> bool" |
908 definition\<^marker>\<open>tag important\<close> retraction :: "('a::topological_space) set \<Rightarrow> 'a set \<Rightarrow> ('a \<Rightarrow> 'a) \<Rightarrow> bool" |
909 where "retraction S T r \<longleftrightarrow> |
909 where "retraction S T r \<longleftrightarrow> |
910 T \<subseteq> S \<and> continuous_on S r \<and> r ` S \<subseteq> T \<and> (\<forall>x\<in>T. r x = x)" |
910 T \<subseteq> S \<and> continuous_on S r \<and> r ` S \<subseteq> T \<and> (\<forall>x\<in>T. r x = x)" |
911 |
911 |
912 definition%important retract_of (infixl "retract'_of" 50) where |
912 definition\<^marker>\<open>tag important\<close> retract_of (infixl "retract'_of" 50) where |
913 "T retract_of S \<longleftrightarrow> (\<exists>r. retraction S T r)" |
913 "T retract_of S \<longleftrightarrow> (\<exists>r. retraction S T r)" |
914 |
914 |
915 lemma retraction_idempotent: "retraction S T r \<Longrightarrow> x \<in> S \<Longrightarrow> r (r x) = r x" |
915 lemma retraction_idempotent: "retraction S T r \<Longrightarrow> x \<in> S \<Longrightarrow> r (r x) = r x" |
916 unfolding retraction_def by auto |
916 unfolding retraction_def by auto |
917 |
917 |