summary |
shortlog |
changelog |
graph |
tags |
bookmarks |
branches |
files |
changeset |
raw | gz |
help

author | huffman |

Wed, 28 Mar 2018 12:12:19 -0700 | |

changeset 67957 | 55f00429da84 |

parent 67956 | 79dbb9dccc99 |

child 67958 | 732c0b059463 |

tuned some proofs

--- a/src/HOL/Topological_Spaces.thy Wed Mar 28 11:19:07 2018 -0700 +++ b/src/HOL/Topological_Spaces.thy Wed Mar 28 12:12:19 2018 -0700 @@ -3472,23 +3472,7 @@ lemma tendsto_Pair [tendsto_intros]: assumes "(f \<longlongrightarrow> a) F" and "(g \<longlongrightarrow> b) F" shows "((\<lambda>x. (f x, g x)) \<longlongrightarrow> (a, b)) F" -proof (rule topological_tendstoI) - fix S - assume "open S" and "(a, b) \<in> S" - then obtain A B where "open A" "open B" "a \<in> A" "b \<in> B" "A \<times> B \<subseteq> S" - unfolding open_prod_def by fast - have "eventually (\<lambda>x. f x \<in> A) F" - using \<open>(f \<longlongrightarrow> a) F\<close> \<open>open A\<close> \<open>a \<in> A\<close> - by (rule topological_tendstoD) - moreover - have "eventually (\<lambda>x. g x \<in> B) F" - using \<open>(g \<longlongrightarrow> b) F\<close> \<open>open B\<close> \<open>b \<in> B\<close> - by (rule topological_tendstoD) - ultimately - show "eventually (\<lambda>x. (f x, g x) \<in> S) F" - by (rule eventually_elim2) - (simp add: subsetD [OF \<open>A \<times> B \<subseteq> S\<close>]) -qed + unfolding nhds_prod using assms by (rule filterlim_Pair) lemma continuous_fst[continuous_intros]: "continuous F f \<Longrightarrow> continuous F (\<lambda>x. fst (f x))" unfolding continuous_def by (rule tendsto_fst) @@ -3625,17 +3609,13 @@ using continuous_on_eq_continuous_within continuous_on_swap by blast lemma open_diagonal_complement: - "open {(x,y) | x y. x \<noteq> (y::('a::t2_space))}" -proof (rule topological_space_class.openI) - fix t assume "t \<in> {(x, y) | x y. x \<noteq> (y::'a)}" - then obtain x y where "t = (x,y)" "x \<noteq> y" by blast - then obtain U V where *: "open U \<and> open V \<and> x \<in> U \<and> y \<in> V \<and> U \<inter> V = {}" - by (auto simp add: separation_t2) - define T where "T = U \<times> V" - have "open T" using * open_Times T_def by auto - moreover have "t \<in> T" unfolding T_def using \<open>t = (x,y)\<close> * by auto - moreover have "T \<subseteq> {(x, y) | x y. x \<noteq> y}" unfolding T_def using * by auto - ultimately show "\<exists>T. open T \<and> t \<in> T \<and> T \<subseteq> {(x, y) | x y. x \<noteq> y}" by auto + "open {(x,y) |x y. x \<noteq> (y::('a::t2_space))}" +proof - + have "open {(x, y). x \<noteq> (y::'a)}" + unfolding split_def by (intro open_Collect_neq continuous_intros) + also have "{(x, y). x \<noteq> (y::'a)} = {(x, y) |x y. x \<noteq> (y::'a)}" + by auto + finally show ?thesis . qed lemma closed_diagonal: @@ -3647,29 +3627,12 @@ lemma open_superdiagonal: "open {(x,y) | x y. x > (y::'a::{linorder_topology})}" -proof (rule topological_space_class.openI) - fix t assume "t \<in> {(x, y) | x y. y < (x::'a)}" - then obtain x y where "t = (x, y)" "x > y" by blast - show "\<exists>T. open T \<and> t \<in> T \<and> T \<subseteq> {(x, y) | x y. y < x}" - proof (cases) - assume "\<exists>z. y < z \<and> z < x" - then obtain z where z: "y < z \<and> z < x" by blast - define T where "T = {z<..} \<times> {..<z}" - have "open T" unfolding T_def by (simp add: open_Times) - moreover have "t \<in> T" using T_def z \<open>t = (x,y)\<close> by auto - moreover have "T \<subseteq> {(x, y) | x y. y < x}" unfolding T_def by auto - ultimately show ?thesis by auto - next - assume "\<not>(\<exists>z. y < z \<and> z < x)" - then have *: "{x ..} = {y<..}" "{..< x} = {..y}" - using \<open>x > y\<close> apply auto using leI by blast - define T where "T = {x ..} \<times> {.. y}" - then have "T = {y<..} \<times> {..< x}" using * by simp - then have "open T" unfolding T_def by (simp add: open_Times) - moreover have "t \<in> T" using T_def \<open>t = (x,y)\<close> by auto - moreover have "T \<subseteq> {(x, y) | x y. y < x}" unfolding T_def using \<open>x > y\<close> by auto - ultimately show ?thesis by auto - qed +proof - + have "open {(x, y). x > (y::'a)}" + unfolding split_def by (intro open_Collect_less continuous_intros) + also have "{(x, y). x > (y::'a)} = {(x, y) |x y. x > (y::'a)}" + by auto + finally show ?thesis . qed lemma closed_subdiagonal: @@ -3681,29 +3644,12 @@ lemma open_subdiagonal: "open {(x,y) | x y. x < (y::'a::{linorder_topology})}" -proof (rule topological_space_class.openI) - fix t assume "t \<in> {(x, y) | x y. y > (x::'a)}" - then obtain x y where "t = (x, y)" "x < y" by blast - show "\<exists>T. open T \<and> t \<in> T \<and> T \<subseteq> {(x, y) | x y. y > x}" - proof (cases) - assume "\<exists>z. y > z \<and> z > x" - then obtain z where z: "y > z \<and> z > x" by blast - define T where "T = {..<z} \<times> {z<..}" - have "open T" unfolding T_def by (simp add: open_Times) - moreover have "t \<in> T" using T_def z \<open>t = (x,y)\<close> by auto - moreover have "T \<subseteq> {(x, y) |x y. y > x}" unfolding T_def by auto - ultimately show ?thesis by auto - next - assume "\<not>(\<exists>z. y > z \<and> z > x)" - then have *: "{..x} = {..<y}" "{x<..} = {y..}" - using \<open>x < y\<close> apply auto using leI by blast - define T where "T = {..x} \<times> {y..}" - then have "T = {..<y} \<times> {x<..}" using * by simp - then have "open T" unfolding T_def by (simp add: open_Times) - moreover have "t \<in> T" using T_def \<open>t = (x,y)\<close> by auto - moreover have "T \<subseteq> {(x, y) |x y. y > x}" unfolding T_def using \<open>x < y\<close> by auto - ultimately show ?thesis by auto - qed +proof - + have "open {(x, y). x < (y::'a)}" + unfolding split_def by (intro open_Collect_less continuous_intros) + also have "{(x, y). x < (y::'a)} = {(x, y) |x y. x < (y::'a)}" + by auto + finally show ?thesis . qed lemma closed_superdiagonal: