449 unfolding Hausdorff_space_def |
449 unfolding Hausdorff_space_def |
450 proof clarify |
450 proof clarify |
451 fix x y |
451 fix x y |
452 assume x: "x \<in> topspace X" and y: "y \<in> topspace X" and "x \<noteq> y" |
452 assume x: "x \<in> topspace X" and y: "y \<in> topspace X" and "x \<noteq> y" |
453 then obtain U V where "openin Y U" "openin Y V" "f x \<in> U" "f y \<in> V" "disjnt U V" |
453 then obtain U V where "openin Y U" "openin Y V" "f x \<in> U" "f y \<in> V" "disjnt U V" |
454 using assms unfolding Hausdorff_space_def continuous_map_def by (meson inj_onD) |
454 using assms |
|
455 by (smt (verit, ccfv_threshold) Hausdorff_space_def continuous_map image_subset_iff inj_on_def) |
455 show "\<exists>U V. openin X U \<and> openin X V \<and> x \<in> U \<and> y \<in> V \<and> disjnt U V" |
456 show "\<exists>U V. openin X U \<and> openin X V \<and> x \<in> U \<and> y \<in> V \<and> disjnt U V" |
456 proof (intro exI conjI) |
457 proof (intro exI conjI) |
457 show "openin X {x \<in> topspace X. f x \<in> U}" |
458 show "openin X {x \<in> topspace X. f x \<in> U}" |
458 using \<open>openin Y U\<close> cmf continuous_map by fastforce |
459 using \<open>openin Y U\<close> cmf continuous_map by fastforce |
459 show "openin X {x \<in> topspace X. f x \<in> V}" |
460 show "openin X {x \<in> topspace X. f x \<in> V}" |
499 proof (intro allI impI) |
500 proof (intro allI impI) |
500 show "\<exists>U V. openin X U \<and> openin Y V \<and> x \<in> U \<and> y \<in> V \<and> U \<times> V \<subseteq> topspace (prod_topology X Y) - (\<lambda>x. (x, f x)) ` topspace X" |
501 show "\<exists>U V. openin X U \<and> openin Y V \<and> x \<in> U \<and> y \<in> V \<and> U \<times> V \<subseteq> topspace (prod_topology X Y) - (\<lambda>x. (x, f x)) ` topspace X" |
501 if "(x,y) \<in> topspace (prod_topology X Y) - (\<lambda>x. (x, f x)) ` topspace X" |
502 if "(x,y) \<in> topspace (prod_topology X Y) - (\<lambda>x. (x, f x)) ` topspace X" |
502 for x y |
503 for x y |
503 proof - |
504 proof - |
504 have "x \<in> topspace X" "y \<in> topspace Y" "y \<noteq> f x" |
505 have "x \<in> topspace X" and y: "y \<in> topspace Y" "y \<noteq> f x" |
505 using that by auto |
506 using that by auto |
506 moreover have "f x \<in> topspace Y" |
507 then have "f x \<in> topspace Y" |
507 by (meson \<open>x \<in> topspace X\<close> continuous_map_def f) |
508 using continuous_map_image_subset_topspace f by blast |
508 ultimately obtain U V where UV: "openin Y U" "openin Y V" "f x \<in> U" "y \<in> V" "disjnt U V" |
509 then obtain U V where UV: "openin Y U" "openin Y V" "f x \<in> U" "y \<in> V" "disjnt U V" |
509 using Y Hausdorff_space_def by metis |
510 using Y y Hausdorff_space_def by metis |
510 show ?thesis |
511 show ?thesis |
511 proof (intro exI conjI) |
512 proof (intro exI conjI) |
512 show "openin X {x \<in> topspace X. f x \<in> U}" |
513 show "openin X {x \<in> topspace X. f x \<in> U}" |
513 using \<open>openin Y U\<close> f openin_continuous_map_preimage by blast |
514 using \<open>openin Y U\<close> f openin_continuous_map_preimage by blast |
514 show "{x \<in> topspace X. f x \<in> U} \<times> V \<subseteq> topspace (prod_topology X Y) - (\<lambda>x. (x, f x)) ` topspace X" |
515 show "{x \<in> topspace X. f x \<in> U} \<times> V \<subseteq> topspace (prod_topology X Y) - (\<lambda>x. (x, f x)) ` topspace X" |
545 shows "continuous_map (subtopology Y S) X g" |
546 shows "continuous_map (subtopology Y S) X g" |
546 proof (rule continuous_map_from_subtopology_mono [OF _ \<open>S \<subseteq> f ` (topspace X)\<close>]) |
547 proof (rule continuous_map_from_subtopology_mono [OF _ \<open>S \<subseteq> f ` (topspace X)\<close>]) |
547 show "continuous_map (subtopology Y (f ` (topspace X))) X g" |
548 show "continuous_map (subtopology Y (f ` (topspace X))) X g" |
548 unfolding continuous_map_closedin |
549 unfolding continuous_map_closedin |
549 proof (intro conjI ballI allI impI) |
550 proof (intro conjI ballI allI impI) |
550 fix x |
551 show "g \<in> topspace (subtopology Y (f ` topspace X)) \<rightarrow> topspace X" |
551 assume "x \<in> topspace (subtopology Y (f ` topspace X))" |
552 using gf by auto |
552 then show "g x \<in> topspace X" |
|
553 by (auto simp: gf) |
|
554 next |
553 next |
555 fix C |
554 fix C |
556 assume C: "closedin X C" |
555 assume C: "closedin X C" |
557 show "closedin (subtopology Y (f ` topspace X)) |
556 show "closedin (subtopology Y (f ` topspace X)) |
558 {x \<in> topspace (subtopology Y (f ` topspace X)). g x \<in> C}" |
557 {x \<in> topspace (subtopology Y (f ` topspace X)). g x \<in> C}" |