author | wenzelm |
Wed, 23 Jan 2019 23:12:40 +0100 | |
changeset 69729 | 4591221824f6 |
parent 69712 | dc85b5b3a532 |
child 69738 | c558fef62915 |
permissions | -rw-r--r-- |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1 |
(* Author: L C Paulson, University of Cambridge |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2 |
Author: Amine Chaieb, University of Cambridge |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
3 |
Author: Robert Himmelmann, TU Muenchen |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
4 |
Author: Brian Huffman, Portland State University |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
5 |
*) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
6 |
|
69676 | 7 |
chapter \<open>Topology\<close> |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
8 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
9 |
theory Elementary_Topology |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
10 |
imports |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
11 |
"HOL-Library.Set_Idioms" |
69615
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
12 |
"HOL-Library.Disjoint_Sets" |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
13 |
Product_Vector |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
14 |
begin |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
15 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
16 |
|
69676 | 17 |
section \<open>Elementary Topology\<close> |
18 |
||
69544
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
19 |
subsection \<open>TODO: move?\<close> |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
20 |
|
69544
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
21 |
lemma open_subopen: "open S \<longleftrightarrow> (\<forall>x\<in>S. \<exists>T. open T \<and> x \<in> T \<and> T \<subseteq> S)" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
22 |
using openI by auto |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
23 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
24 |
|
69613
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
25 |
subsubsection%unimportant \<open>Archimedean properties and useful consequences\<close> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
26 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
27 |
text\<open>Bernoulli's inequality\<close> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
28 |
proposition Bernoulli_inequality: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
29 |
fixes x :: real |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
30 |
assumes "-1 \<le> x" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
31 |
shows "1 + n * x \<le> (1 + x) ^ n" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
32 |
proof (induct n) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
33 |
case 0 |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
34 |
then show ?case by simp |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
35 |
next |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
36 |
case (Suc n) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
37 |
have "1 + Suc n * x \<le> 1 + (Suc n)*x + n * x^2" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
38 |
by (simp add: algebra_simps) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
39 |
also have "... = (1 + x) * (1 + n*x)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
40 |
by (auto simp: power2_eq_square algebra_simps of_nat_Suc) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
41 |
also have "... \<le> (1 + x) ^ Suc n" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
42 |
using Suc.hyps assms mult_left_mono by fastforce |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
43 |
finally show ?case . |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
44 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
45 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
46 |
corollary Bernoulli_inequality_even: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
47 |
fixes x :: real |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
48 |
assumes "even n" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
49 |
shows "1 + n * x \<le> (1 + x) ^ n" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
50 |
proof (cases "-1 \<le> x \<or> n=0") |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
51 |
case True |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
52 |
then show ?thesis |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
53 |
by (auto simp: Bernoulli_inequality) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
54 |
next |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
55 |
case False |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
56 |
then have "real n \<ge> 1" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
57 |
by simp |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
58 |
with False have "n * x \<le> -1" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
59 |
by (metis linear minus_zero mult.commute mult.left_neutral mult_left_mono_neg neg_le_iff_le order_trans zero_le_one) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
60 |
then have "1 + n * x \<le> 0" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
61 |
by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
62 |
also have "... \<le> (1 + x) ^ n" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
63 |
using assms |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
64 |
using zero_le_even_power by blast |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
65 |
finally show ?thesis . |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
66 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
67 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
68 |
corollary real_arch_pow: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
69 |
fixes x :: real |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
70 |
assumes x: "1 < x" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
71 |
shows "\<exists>n. y < x^n" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
72 |
proof - |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
73 |
from x have x0: "x - 1 > 0" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
74 |
by arith |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
75 |
from reals_Archimedean3[OF x0, rule_format, of y] |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
76 |
obtain n :: nat where n: "y < real n * (x - 1)" by metis |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
77 |
from x0 have x00: "x- 1 \<ge> -1" by arith |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
78 |
from Bernoulli_inequality[OF x00, of n] n |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
79 |
have "y < x^n" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
80 |
then show ?thesis by metis |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
81 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
82 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
83 |
corollary real_arch_pow_inv: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
84 |
fixes x y :: real |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
85 |
assumes y: "y > 0" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
86 |
and x1: "x < 1" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
87 |
shows "\<exists>n. x^n < y" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
88 |
proof (cases "x > 0") |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
89 |
case True |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
90 |
with x1 have ix: "1 < 1/x" by (simp add: field_simps) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
91 |
from real_arch_pow[OF ix, of "1/y"] |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
92 |
obtain n where n: "1/y < (1/x)^n" by blast |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
93 |
then show ?thesis using y \<open>x > 0\<close> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
94 |
by (auto simp add: field_simps) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
95 |
next |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
96 |
case False |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
97 |
with y x1 show ?thesis |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
98 |
by (metis less_le_trans not_less power_one_right) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
99 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
100 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
101 |
lemma forall_pos_mono: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
102 |
"(\<And>d e::real. d < e \<Longrightarrow> P d \<Longrightarrow> P e) \<Longrightarrow> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
103 |
(\<And>n::nat. n \<noteq> 0 \<Longrightarrow> P (inverse (real n))) \<Longrightarrow> (\<And>e. 0 < e \<Longrightarrow> P e)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
104 |
by (metis real_arch_inverse) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
105 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
106 |
lemma forall_pos_mono_1: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
107 |
"(\<And>d e::real. d < e \<Longrightarrow> P d \<Longrightarrow> P e) \<Longrightarrow> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
108 |
(\<And>n. P (inverse (real (Suc n)))) \<Longrightarrow> 0 < e \<Longrightarrow> P e" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
109 |
apply (rule forall_pos_mono) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
110 |
apply auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
111 |
apply (metis Suc_pred of_nat_Suc) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
112 |
done |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
113 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
114 |
subsubsection%unimportant \<open>Affine transformations of intervals\<close> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
115 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
116 |
lemma real_affinity_le: "0 < m \<Longrightarrow> m * x + c \<le> y \<longleftrightarrow> x \<le> inverse m * y + - (c / m)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
117 |
for m :: "'a::linordered_field" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
118 |
by (simp add: field_simps) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
119 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
120 |
lemma real_le_affinity: "0 < m \<Longrightarrow> y \<le> m * x + c \<longleftrightarrow> inverse m * y + - (c / m) \<le> x" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
121 |
for m :: "'a::linordered_field" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
122 |
by (simp add: field_simps) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
123 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
124 |
lemma real_affinity_lt: "0 < m \<Longrightarrow> m * x + c < y \<longleftrightarrow> x < inverse m * y + - (c / m)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
125 |
for m :: "'a::linordered_field" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
126 |
by (simp add: field_simps) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
127 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
128 |
lemma real_lt_affinity: "0 < m \<Longrightarrow> y < m * x + c \<longleftrightarrow> inverse m * y + - (c / m) < x" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
129 |
for m :: "'a::linordered_field" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
130 |
by (simp add: field_simps) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
131 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
132 |
lemma real_affinity_eq: "m \<noteq> 0 \<Longrightarrow> m * x + c = y \<longleftrightarrow> x = inverse m * y + - (c / m)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
133 |
for m :: "'a::linordered_field" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
134 |
by (simp add: field_simps) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
135 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
136 |
lemma real_eq_affinity: "m \<noteq> 0 \<Longrightarrow> y = m * x + c \<longleftrightarrow> inverse m * y + - (c / m) = x" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
137 |
for m :: "'a::linordered_field" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
138 |
by (simp add: field_simps) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
139 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
140 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
141 |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
142 |
subsection \<open>Topological Basis\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
143 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
144 |
context topological_space |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
145 |
begin |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
146 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
147 |
definition%important "topological_basis B \<longleftrightarrow> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
148 |
(\<forall>b\<in>B. open b) \<and> (\<forall>x. open x \<longrightarrow> (\<exists>B'. B' \<subseteq> B \<and> \<Union>B' = x))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
149 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
150 |
lemma topological_basis: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
151 |
"topological_basis B \<longleftrightarrow> (\<forall>x. open x \<longleftrightarrow> (\<exists>B'. B' \<subseteq> B \<and> \<Union>B' = x))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
152 |
unfolding topological_basis_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
153 |
apply safe |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
154 |
apply fastforce |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
155 |
apply fastforce |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
156 |
apply (erule_tac x=x in allE, simp) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
157 |
apply (rule_tac x="{x}" in exI, auto) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
158 |
done |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
159 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
160 |
lemma topological_basis_iff: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
161 |
assumes "\<And>B'. B' \<in> B \<Longrightarrow> open B'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
162 |
shows "topological_basis B \<longleftrightarrow> (\<forall>O'. open O' \<longrightarrow> (\<forall>x\<in>O'. \<exists>B'\<in>B. x \<in> B' \<and> B' \<subseteq> O'))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
163 |
(is "_ \<longleftrightarrow> ?rhs") |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
164 |
proof safe |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
165 |
fix O' and x::'a |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
166 |
assume H: "topological_basis B" "open O'" "x \<in> O'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
167 |
then have "(\<exists>B'\<subseteq>B. \<Union>B' = O')" by (simp add: topological_basis_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
168 |
then obtain B' where "B' \<subseteq> B" "O' = \<Union>B'" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
169 |
then show "\<exists>B'\<in>B. x \<in> B' \<and> B' \<subseteq> O'" using H by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
170 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
171 |
assume H: ?rhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
172 |
show "topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
173 |
using assms unfolding topological_basis_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
174 |
proof safe |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
175 |
fix O' :: "'a set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
176 |
assume "open O'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
177 |
with H obtain f where "\<forall>x\<in>O'. f x \<in> B \<and> x \<in> f x \<and> f x \<subseteq> O'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
178 |
by (force intro: bchoice simp: Bex_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
179 |
then show "\<exists>B'\<subseteq>B. \<Union>B' = O'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
180 |
by (auto intro: exI[where x="{f x |x. x \<in> O'}"]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
181 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
182 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
183 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
184 |
lemma topological_basisI: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
185 |
assumes "\<And>B'. B' \<in> B \<Longrightarrow> open B'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
186 |
and "\<And>O' x. open O' \<Longrightarrow> x \<in> O' \<Longrightarrow> \<exists>B'\<in>B. x \<in> B' \<and> B' \<subseteq> O'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
187 |
shows "topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
188 |
using assms by (subst topological_basis_iff) auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
189 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
190 |
lemma topological_basisE: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
191 |
fixes O' |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
192 |
assumes "topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
193 |
and "open O'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
194 |
and "x \<in> O'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
195 |
obtains B' where "B' \<in> B" "x \<in> B'" "B' \<subseteq> O'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
196 |
proof atomize_elim |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
197 |
from assms have "\<And>B'. B'\<in>B \<Longrightarrow> open B'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
198 |
by (simp add: topological_basis_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
199 |
with topological_basis_iff assms |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
200 |
show "\<exists>B'. B' \<in> B \<and> x \<in> B' \<and> B' \<subseteq> O'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
201 |
using assms by (simp add: Bex_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
202 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
203 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
204 |
lemma topological_basis_open: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
205 |
assumes "topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
206 |
and "X \<in> B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
207 |
shows "open X" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
208 |
using assms by (simp add: topological_basis_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
209 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
210 |
lemma topological_basis_imp_subbasis: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
211 |
assumes B: "topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
212 |
shows "open = generate_topology B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
213 |
proof (intro ext iffI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
214 |
fix S :: "'a set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
215 |
assume "open S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
216 |
with B obtain B' where "B' \<subseteq> B" "S = \<Union>B'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
217 |
unfolding topological_basis_def by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
218 |
then show "generate_topology B S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
219 |
by (auto intro: generate_topology.intros dest: topological_basis_open) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
220 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
221 |
fix S :: "'a set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
222 |
assume "generate_topology B S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
223 |
then show "open S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
224 |
by induct (auto dest: topological_basis_open[OF B]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
225 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
226 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
227 |
lemma basis_dense: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
228 |
fixes B :: "'a set set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
229 |
and f :: "'a set \<Rightarrow> 'a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
230 |
assumes "topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
231 |
and choosefrom_basis: "\<And>B'. B' \<noteq> {} \<Longrightarrow> f B' \<in> B'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
232 |
shows "\<forall>X. open X \<longrightarrow> X \<noteq> {} \<longrightarrow> (\<exists>B' \<in> B. f B' \<in> X)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
233 |
proof (intro allI impI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
234 |
fix X :: "'a set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
235 |
assume "open X" and "X \<noteq> {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
236 |
from topological_basisE[OF \<open>topological_basis B\<close> \<open>open X\<close> choosefrom_basis[OF \<open>X \<noteq> {}\<close>]] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
237 |
obtain B' where "B' \<in> B" "f X \<in> B'" "B' \<subseteq> X" . |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
238 |
then show "\<exists>B'\<in>B. f B' \<in> X" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
239 |
by (auto intro!: choosefrom_basis) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
240 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
241 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
242 |
end |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
243 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
244 |
lemma topological_basis_prod: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
245 |
assumes A: "topological_basis A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
246 |
and B: "topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
247 |
shows "topological_basis ((\<lambda>(a, b). a \<times> b) ` (A \<times> B))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
248 |
unfolding topological_basis_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
249 |
proof (safe, simp_all del: ex_simps add: subset_image_iff ex_simps(1)[symmetric]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
250 |
fix S :: "('a \<times> 'b) set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
251 |
assume "open S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
252 |
then show "\<exists>X\<subseteq>A \<times> B. (\<Union>(a,b)\<in>X. a \<times> b) = S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
253 |
proof (safe intro!: exI[of _ "{x\<in>A \<times> B. fst x \<times> snd x \<subseteq> S}"]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
254 |
fix x y |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
255 |
assume "(x, y) \<in> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
256 |
from open_prod_elim[OF \<open>open S\<close> this] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
257 |
obtain a b where a: "open a""x \<in> a" and b: "open b" "y \<in> b" and "a \<times> b \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
258 |
by (metis mem_Sigma_iff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
259 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
260 |
from A a obtain A0 where "A0 \<in> A" "x \<in> A0" "A0 \<subseteq> a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
261 |
by (rule topological_basisE) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
262 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
263 |
from B b obtain B0 where "B0 \<in> B" "y \<in> B0" "B0 \<subseteq> b" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
264 |
by (rule topological_basisE) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
265 |
ultimately show "(x, y) \<in> (\<Union>(a, b)\<in>{X \<in> A \<times> B. fst X \<times> snd X \<subseteq> S}. a \<times> b)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
266 |
by (intro UN_I[of "(A0, B0)"]) auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
267 |
qed auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
268 |
qed (metis A B topological_basis_open open_Times) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
269 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
270 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
271 |
subsection \<open>Countable Basis\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
272 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
273 |
locale%important countable_basis = |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
274 |
fixes B :: "'a::topological_space set set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
275 |
assumes is_basis: "topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
276 |
and countable_basis: "countable B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
277 |
begin |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
278 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
279 |
lemma open_countable_basis_ex: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
280 |
assumes "open X" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
281 |
shows "\<exists>B' \<subseteq> B. X = \<Union>B'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
282 |
using assms countable_basis is_basis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
283 |
unfolding topological_basis_def by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
284 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
285 |
lemma open_countable_basisE: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
286 |
assumes "open X" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
287 |
obtains B' where "B' \<subseteq> B" "X = \<Union>B'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
288 |
using assms open_countable_basis_ex |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
289 |
by atomize_elim simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
290 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
291 |
lemma countable_dense_exists: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
292 |
"\<exists>D::'a set. countable D \<and> (\<forall>X. open X \<longrightarrow> X \<noteq> {} \<longrightarrow> (\<exists>d \<in> D. d \<in> X))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
293 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
294 |
let ?f = "(\<lambda>B'. SOME x. x \<in> B')" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
295 |
have "countable (?f ` B)" using countable_basis by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
296 |
with basis_dense[OF is_basis, of ?f] show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
297 |
by (intro exI[where x="?f ` B"]) (metis (mono_tags) all_not_in_conv imageI someI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
298 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
299 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
300 |
lemma countable_dense_setE: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
301 |
obtains D :: "'a set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
302 |
where "countable D" "\<And>X. open X \<Longrightarrow> X \<noteq> {} \<Longrightarrow> \<exists>d \<in> D. d \<in> X" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
303 |
using countable_dense_exists by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
304 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
305 |
end |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
306 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
307 |
lemma (in first_countable_topology) first_countable_basisE: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
308 |
fixes x :: 'a |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
309 |
obtains \<A> where "countable \<A>" "\<And>A. A \<in> \<A> \<Longrightarrow> x \<in> A" "\<And>A. A \<in> \<A> \<Longrightarrow> open A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
310 |
"\<And>S. open S \<Longrightarrow> x \<in> S \<Longrightarrow> (\<exists>A\<in>\<A>. A \<subseteq> S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
311 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
312 |
obtain \<A> where \<A>: "(\<forall>i::nat. x \<in> \<A> i \<and> open (\<A> i))" "(\<forall>S. open S \<and> x \<in> S \<longrightarrow> (\<exists>i. \<A> i \<subseteq> S))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
313 |
using first_countable_basis[of x] by metis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
314 |
show thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
315 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
316 |
show "countable (range \<A>)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
317 |
by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
318 |
qed (use \<A> in auto) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
319 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
320 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
321 |
lemma (in first_countable_topology) first_countable_basis_Int_stableE: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
322 |
obtains \<A> where "countable \<A>" "\<And>A. A \<in> \<A> \<Longrightarrow> x \<in> A" "\<And>A. A \<in> \<A> \<Longrightarrow> open A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
323 |
"\<And>S. open S \<Longrightarrow> x \<in> S \<Longrightarrow> (\<exists>A\<in>\<A>. A \<subseteq> S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
324 |
"\<And>A B. A \<in> \<A> \<Longrightarrow> B \<in> \<A> \<Longrightarrow> A \<inter> B \<in> \<A>" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
325 |
proof atomize_elim |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
326 |
obtain \<B> where \<B>: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
327 |
"countable \<B>" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
328 |
"\<And>B. B \<in> \<B> \<Longrightarrow> x \<in> B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
329 |
"\<And>B. B \<in> \<B> \<Longrightarrow> open B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
330 |
"\<And>S. open S \<Longrightarrow> x \<in> S \<Longrightarrow> \<exists>B\<in>\<B>. B \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
331 |
by (rule first_countable_basisE) blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
332 |
define \<A> where [abs_def]: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
333 |
"\<A> = (\<lambda>N. \<Inter>((\<lambda>n. from_nat_into \<B> n) ` N)) ` (Collect finite::nat set set)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
334 |
then show "\<exists>\<A>. countable \<A> \<and> (\<forall>A. A \<in> \<A> \<longrightarrow> x \<in> A) \<and> (\<forall>A. A \<in> \<A> \<longrightarrow> open A) \<and> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
335 |
(\<forall>S. open S \<longrightarrow> x \<in> S \<longrightarrow> (\<exists>A\<in>\<A>. A \<subseteq> S)) \<and> (\<forall>A B. A \<in> \<A> \<longrightarrow> B \<in> \<A> \<longrightarrow> A \<inter> B \<in> \<A>)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
336 |
proof (safe intro!: exI[where x=\<A>]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
337 |
show "countable \<A>" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
338 |
unfolding \<A>_def by (intro countable_image countable_Collect_finite) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
339 |
fix A |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
340 |
assume "A \<in> \<A>" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
341 |
then show "x \<in> A" "open A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
342 |
using \<B>(4)[OF open_UNIV] by (auto simp: \<A>_def intro: \<B> from_nat_into) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
343 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
344 |
let ?int = "\<lambda>N. \<Inter>(from_nat_into \<B> ` N)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
345 |
fix A B |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
346 |
assume "A \<in> \<A>" "B \<in> \<A>" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
347 |
then obtain N M where "A = ?int N" "B = ?int M" "finite (N \<union> M)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
348 |
by (auto simp: \<A>_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
349 |
then show "A \<inter> B \<in> \<A>" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
350 |
by (auto simp: \<A>_def intro!: image_eqI[where x="N \<union> M"]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
351 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
352 |
fix S |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
353 |
assume "open S" "x \<in> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
354 |
then obtain a where a: "a\<in>\<B>" "a \<subseteq> S" using \<B> by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
355 |
then show "\<exists>a\<in>\<A>. a \<subseteq> S" using a \<B> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
356 |
by (intro bexI[where x=a]) (auto simp: \<A>_def intro: image_eqI[where x="{to_nat_on \<B> a}"]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
357 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
358 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
359 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
360 |
lemma (in topological_space) first_countableI: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
361 |
assumes "countable \<A>" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
362 |
and 1: "\<And>A. A \<in> \<A> \<Longrightarrow> x \<in> A" "\<And>A. A \<in> \<A> \<Longrightarrow> open A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
363 |
and 2: "\<And>S. open S \<Longrightarrow> x \<in> S \<Longrightarrow> \<exists>A\<in>\<A>. A \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
364 |
shows "\<exists>\<A>::nat \<Rightarrow> 'a set. (\<forall>i. x \<in> \<A> i \<and> open (\<A> i)) \<and> (\<forall>S. open S \<and> x \<in> S \<longrightarrow> (\<exists>i. \<A> i \<subseteq> S))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
365 |
proof (safe intro!: exI[of _ "from_nat_into \<A>"]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
366 |
fix i |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
367 |
have "\<A> \<noteq> {}" using 2[of UNIV] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
368 |
show "x \<in> from_nat_into \<A> i" "open (from_nat_into \<A> i)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
369 |
using range_from_nat_into_subset[OF \<open>\<A> \<noteq> {}\<close>] 1 by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
370 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
371 |
fix S |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
372 |
assume "open S" "x\<in>S" from 2[OF this] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
373 |
show "\<exists>i. from_nat_into \<A> i \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
374 |
using subset_range_from_nat_into[OF \<open>countable \<A>\<close>] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
375 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
376 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
377 |
instance prod :: (first_countable_topology, first_countable_topology) first_countable_topology |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
378 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
379 |
fix x :: "'a \<times> 'b" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
380 |
obtain \<A> where \<A>: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
381 |
"countable \<A>" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
382 |
"\<And>a. a \<in> \<A> \<Longrightarrow> fst x \<in> a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
383 |
"\<And>a. a \<in> \<A> \<Longrightarrow> open a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
384 |
"\<And>S. open S \<Longrightarrow> fst x \<in> S \<Longrightarrow> \<exists>a\<in>\<A>. a \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
385 |
by (rule first_countable_basisE[of "fst x"]) blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
386 |
obtain B where B: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
387 |
"countable B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
388 |
"\<And>a. a \<in> B \<Longrightarrow> snd x \<in> a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
389 |
"\<And>a. a \<in> B \<Longrightarrow> open a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
390 |
"\<And>S. open S \<Longrightarrow> snd x \<in> S \<Longrightarrow> \<exists>a\<in>B. a \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
391 |
by (rule first_countable_basisE[of "snd x"]) blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
392 |
show "\<exists>\<A>::nat \<Rightarrow> ('a \<times> 'b) set. |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
393 |
(\<forall>i. x \<in> \<A> i \<and> open (\<A> i)) \<and> (\<forall>S. open S \<and> x \<in> S \<longrightarrow> (\<exists>i. \<A> i \<subseteq> S))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
394 |
proof (rule first_countableI[of "(\<lambda>(a, b). a \<times> b) ` (\<A> \<times> B)"], safe) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
395 |
fix a b |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
396 |
assume x: "a \<in> \<A>" "b \<in> B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
397 |
show "x \<in> a \<times> b" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
398 |
by (simp add: \<A>(2) B(2) mem_Times_iff x) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
399 |
show "open (a \<times> b)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
400 |
by (simp add: \<A>(3) B(3) open_Times x) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
401 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
402 |
fix S |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
403 |
assume "open S" "x \<in> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
404 |
then obtain a' b' where a'b': "open a'" "open b'" "x \<in> a' \<times> b'" "a' \<times> b' \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
405 |
by (rule open_prod_elim) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
406 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
407 |
from a'b' \<A>(4)[of a'] B(4)[of b'] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
408 |
obtain a b where "a \<in> \<A>" "a \<subseteq> a'" "b \<in> B" "b \<subseteq> b'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
409 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
410 |
ultimately |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
411 |
show "\<exists>a\<in>(\<lambda>(a, b). a \<times> b) ` (\<A> \<times> B). a \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
412 |
by (auto intro!: bexI[of _ "a \<times> b"] bexI[of _ a] bexI[of _ b]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
413 |
qed (simp add: \<A> B) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
414 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
415 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
416 |
class second_countable_topology = topological_space + |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
417 |
assumes ex_countable_subbasis: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
418 |
"\<exists>B::'a::topological_space set set. countable B \<and> open = generate_topology B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
419 |
begin |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
420 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
421 |
lemma ex_countable_basis: "\<exists>B::'a set set. countable B \<and> topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
422 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
423 |
from ex_countable_subbasis obtain B where B: "countable B" "open = generate_topology B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
424 |
by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
425 |
let ?B = "Inter ` {b. finite b \<and> b \<subseteq> B }" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
426 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
427 |
show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
428 |
proof (intro exI conjI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
429 |
show "countable ?B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
430 |
by (intro countable_image countable_Collect_finite_subset B) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
431 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
432 |
fix S |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
433 |
assume "open S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
434 |
then have "\<exists>B'\<subseteq>{b. finite b \<and> b \<subseteq> B}. (\<Union>b\<in>B'. \<Inter>b) = S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
435 |
unfolding B |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
436 |
proof induct |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
437 |
case UNIV |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
438 |
show ?case by (intro exI[of _ "{{}}"]) simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
439 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
440 |
case (Int a b) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
441 |
then obtain x y where x: "a = \<Union>(Inter ` x)" "\<And>i. i \<in> x \<Longrightarrow> finite i \<and> i \<subseteq> B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
442 |
and y: "b = \<Union>(Inter ` y)" "\<And>i. i \<in> y \<Longrightarrow> finite i \<and> i \<subseteq> B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
443 |
by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
444 |
show ?case |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
445 |
unfolding x y Int_UN_distrib2 |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
446 |
by (intro exI[of _ "{i \<union> j| i j. i \<in> x \<and> j \<in> y}"]) (auto dest: x(2) y(2)) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
447 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
448 |
case (UN K) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
449 |
then have "\<forall>k\<in>K. \<exists>B'\<subseteq>{b. finite b \<and> b \<subseteq> B}. \<Union> (Inter ` B') = k" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
450 |
then obtain k where |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
451 |
"\<forall>ka\<in>K. k ka \<subseteq> {b. finite b \<and> b \<subseteq> B} \<and> \<Union>(Inter ` (k ka)) = ka" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
452 |
unfolding bchoice_iff .. |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
453 |
then show "\<exists>B'\<subseteq>{b. finite b \<and> b \<subseteq> B}. \<Union> (Inter ` B') = \<Union>K" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
454 |
by (intro exI[of _ "\<Union>(k ` K)"]) auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
455 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
456 |
case (Basis S) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
457 |
then show ?case |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
458 |
by (intro exI[of _ "{{S}}"]) auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
459 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
460 |
then have "(\<exists>B'\<subseteq>Inter ` {b. finite b \<and> b \<subseteq> B}. \<Union>B' = S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
461 |
unfolding subset_image_iff by blast } |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
462 |
then show "topological_basis ?B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
463 |
unfolding topological_space_class.topological_basis_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
464 |
by (safe intro!: topological_space_class.open_Inter) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
465 |
(simp_all add: B generate_topology.Basis subset_eq) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
466 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
467 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
468 |
|
69615
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
469 |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
470 |
end |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
471 |
|
69615
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
472 |
lemma univ_second_countable: |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
473 |
obtains \<B> :: "'a::second_countable_topology set set" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
474 |
where "countable \<B>" "\<And>C. C \<in> \<B> \<Longrightarrow> open C" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
475 |
"\<And>S. open S \<Longrightarrow> \<exists>U. U \<subseteq> \<B> \<and> S = \<Union>U" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
476 |
by (metis ex_countable_basis topological_basis_def) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
477 |
|
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
478 |
proposition Lindelof: |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
479 |
fixes \<F> :: "'a::second_countable_topology set set" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
480 |
assumes \<F>: "\<And>S. S \<in> \<F> \<Longrightarrow> open S" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
481 |
obtains \<F>' where "\<F>' \<subseteq> \<F>" "countable \<F>'" "\<Union>\<F>' = \<Union>\<F>" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
482 |
proof - |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
483 |
obtain \<B> :: "'a set set" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
484 |
where "countable \<B>" "\<And>C. C \<in> \<B> \<Longrightarrow> open C" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
485 |
and \<B>: "\<And>S. open S \<Longrightarrow> \<exists>U. U \<subseteq> \<B> \<and> S = \<Union>U" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
486 |
using univ_second_countable by blast |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
487 |
define \<D> where "\<D> \<equiv> {S. S \<in> \<B> \<and> (\<exists>U. U \<in> \<F> \<and> S \<subseteq> U)}" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
488 |
have "countable \<D>" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
489 |
apply (rule countable_subset [OF _ \<open>countable \<B>\<close>]) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
490 |
apply (force simp: \<D>_def) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
491 |
done |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
492 |
have "\<And>S. \<exists>U. S \<in> \<D> \<longrightarrow> U \<in> \<F> \<and> S \<subseteq> U" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
493 |
by (simp add: \<D>_def) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
494 |
then obtain G where G: "\<And>S. S \<in> \<D> \<longrightarrow> G S \<in> \<F> \<and> S \<subseteq> G S" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
495 |
by metis |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
496 |
have "\<Union>\<F> \<subseteq> \<Union>\<D>" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
497 |
unfolding \<D>_def by (blast dest: \<F> \<B>) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
498 |
moreover have "\<Union>\<D> \<subseteq> \<Union>\<F>" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
499 |
using \<D>_def by blast |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
500 |
ultimately have eq1: "\<Union>\<F> = \<Union>\<D>" .. |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
501 |
have eq2: "\<Union>\<D> = \<Union> (G ` \<D>)" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
502 |
using G eq1 by auto |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
503 |
show ?thesis |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
504 |
apply (rule_tac \<F>' = "G ` \<D>" in that) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
505 |
using G \<open>countable \<D>\<close> |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
506 |
by (auto simp: eq1 eq2) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
507 |
qed |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
508 |
|
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
509 |
lemma countable_disjoint_open_subsets: |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
510 |
fixes \<F> :: "'a::second_countable_topology set set" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
511 |
assumes "\<And>S. S \<in> \<F> \<Longrightarrow> open S" and pw: "pairwise disjnt \<F>" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
512 |
shows "countable \<F>" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
513 |
proof - |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
514 |
obtain \<F>' where "\<F>' \<subseteq> \<F>" "countable \<F>'" "\<Union>\<F>' = \<Union>\<F>" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
515 |
by (meson assms Lindelof) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
516 |
with pw have "\<F> \<subseteq> insert {} \<F>'" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
517 |
by (fastforce simp add: pairwise_def disjnt_iff) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
518 |
then show ?thesis |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
519 |
by (simp add: \<open>countable \<F>'\<close> countable_subset) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
520 |
qed |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
521 |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
522 |
sublocale second_countable_topology < |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
523 |
countable_basis "SOME B. countable B \<and> topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
524 |
using someI_ex[OF ex_countable_basis] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
525 |
by unfold_locales safe |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
526 |
|
69615
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
527 |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
528 |
instance prod :: (second_countable_topology, second_countable_topology) second_countable_topology |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
529 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
530 |
obtain A :: "'a set set" where "countable A" "topological_basis A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
531 |
using ex_countable_basis by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
532 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
533 |
obtain B :: "'b set set" where "countable B" "topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
534 |
using ex_countable_basis by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
535 |
ultimately show "\<exists>B::('a \<times> 'b) set set. countable B \<and> open = generate_topology B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
536 |
by (auto intro!: exI[of _ "(\<lambda>(a, b). a \<times> b) ` (A \<times> B)"] topological_basis_prod |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
537 |
topological_basis_imp_subbasis) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
538 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
539 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
540 |
instance second_countable_topology \<subseteq> first_countable_topology |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
541 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
542 |
fix x :: 'a |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
543 |
define B :: "'a set set" where "B = (SOME B. countable B \<and> topological_basis B)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
544 |
then have B: "countable B" "topological_basis B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
545 |
using countable_basis is_basis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
546 |
by (auto simp: countable_basis is_basis) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
547 |
then show "\<exists>A::nat \<Rightarrow> 'a set. |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
548 |
(\<forall>i. x \<in> A i \<and> open (A i)) \<and> (\<forall>S. open S \<and> x \<in> S \<longrightarrow> (\<exists>i. A i \<subseteq> S))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
549 |
by (intro first_countableI[of "{b\<in>B. x \<in> b}"]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
550 |
(fastforce simp: topological_space_class.topological_basis_def)+ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
551 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
552 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
553 |
instance nat :: second_countable_topology |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
554 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
555 |
show "\<exists>B::nat set set. countable B \<and> open = generate_topology B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
556 |
by (intro exI[of _ "range lessThan \<union> range greaterThan"]) (auto simp: open_nat_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
557 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
558 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
559 |
lemma countable_separating_set_linorder1: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
560 |
shows "\<exists>B::('a::{linorder_topology, second_countable_topology} set). countable B \<and> (\<forall>x y. x < y \<longrightarrow> (\<exists>b \<in> B. x < b \<and> b \<le> y))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
561 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
562 |
obtain A::"'a set set" where "countable A" "topological_basis A" using ex_countable_basis by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
563 |
define B1 where "B1 = {(LEAST x. x \<in> U)| U. U \<in> A}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
564 |
then have "countable B1" using \<open>countable A\<close> by (simp add: Setcompr_eq_image) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
565 |
define B2 where "B2 = {(SOME x. x \<in> U)| U. U \<in> A}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
566 |
then have "countable B2" using \<open>countable A\<close> by (simp add: Setcompr_eq_image) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
567 |
have "\<exists>b \<in> B1 \<union> B2. x < b \<and> b \<le> y" if "x < y" for x y |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
568 |
proof (cases) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
569 |
assume "\<exists>z. x < z \<and> z < y" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
570 |
then obtain z where z: "x < z \<and> z < y" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
571 |
define U where "U = {x<..<y}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
572 |
then have "open U" by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
573 |
moreover have "z \<in> U" using z U_def by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
574 |
ultimately obtain V where "V \<in> A" "z \<in> V" "V \<subseteq> U" using topological_basisE[OF \<open>topological_basis A\<close>] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
575 |
define w where "w = (SOME x. x \<in> V)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
576 |
then have "w \<in> V" using \<open>z \<in> V\<close> by (metis someI2) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
577 |
then have "x < w \<and> w \<le> y" using \<open>w \<in> V\<close> \<open>V \<subseteq> U\<close> U_def by fastforce |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
578 |
moreover have "w \<in> B1 \<union> B2" using w_def B2_def \<open>V \<in> A\<close> by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
579 |
ultimately show ?thesis by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
580 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
581 |
assume "\<not>(\<exists>z. x < z \<and> z < y)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
582 |
then have *: "\<And>z. z > x \<Longrightarrow> z \<ge> y" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
583 |
define U where "U = {x<..}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
584 |
then have "open U" by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
585 |
moreover have "y \<in> U" using \<open>x < y\<close> U_def by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
586 |
ultimately obtain "V" where "V \<in> A" "y \<in> V" "V \<subseteq> U" using topological_basisE[OF \<open>topological_basis A\<close>] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
587 |
have "U = {y..}" unfolding U_def using * \<open>x < y\<close> by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
588 |
then have "V \<subseteq> {y..}" using \<open>V \<subseteq> U\<close> by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
589 |
then have "(LEAST w. w \<in> V) = y" using \<open>y \<in> V\<close> by (meson Least_equality atLeast_iff subsetCE) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
590 |
then have "y \<in> B1 \<union> B2" using \<open>V \<in> A\<close> B1_def by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
591 |
moreover have "x < y \<and> y \<le> y" using \<open>x < y\<close> by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
592 |
ultimately show ?thesis by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
593 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
594 |
moreover have "countable (B1 \<union> B2)" using \<open>countable B1\<close> \<open>countable B2\<close> by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
595 |
ultimately show ?thesis by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
596 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
597 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
598 |
lemma countable_separating_set_linorder2: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
599 |
shows "\<exists>B::('a::{linorder_topology, second_countable_topology} set). countable B \<and> (\<forall>x y. x < y \<longrightarrow> (\<exists>b \<in> B. x \<le> b \<and> b < y))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
600 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
601 |
obtain A::"'a set set" where "countable A" "topological_basis A" using ex_countable_basis by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
602 |
define B1 where "B1 = {(GREATEST x. x \<in> U) | U. U \<in> A}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
603 |
then have "countable B1" using \<open>countable A\<close> by (simp add: Setcompr_eq_image) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
604 |
define B2 where "B2 = {(SOME x. x \<in> U)| U. U \<in> A}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
605 |
then have "countable B2" using \<open>countable A\<close> by (simp add: Setcompr_eq_image) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
606 |
have "\<exists>b \<in> B1 \<union> B2. x \<le> b \<and> b < y" if "x < y" for x y |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
607 |
proof (cases) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
608 |
assume "\<exists>z. x < z \<and> z < y" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
609 |
then obtain z where z: "x < z \<and> z < y" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
610 |
define U where "U = {x<..<y}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
611 |
then have "open U" by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
612 |
moreover have "z \<in> U" using z U_def by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
613 |
ultimately obtain "V" where "V \<in> A" "z \<in> V" "V \<subseteq> U" using topological_basisE[OF \<open>topological_basis A\<close>] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
614 |
define w where "w = (SOME x. x \<in> V)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
615 |
then have "w \<in> V" using \<open>z \<in> V\<close> by (metis someI2) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
616 |
then have "x \<le> w \<and> w < y" using \<open>w \<in> V\<close> \<open>V \<subseteq> U\<close> U_def by fastforce |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
617 |
moreover have "w \<in> B1 \<union> B2" using w_def B2_def \<open>V \<in> A\<close> by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
618 |
ultimately show ?thesis by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
619 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
620 |
assume "\<not>(\<exists>z. x < z \<and> z < y)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
621 |
then have *: "\<And>z. z < y \<Longrightarrow> z \<le> x" using leI by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
622 |
define U where "U = {..<y}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
623 |
then have "open U" by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
624 |
moreover have "x \<in> U" using \<open>x < y\<close> U_def by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
625 |
ultimately obtain "V" where "V \<in> A" "x \<in> V" "V \<subseteq> U" using topological_basisE[OF \<open>topological_basis A\<close>] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
626 |
have "U = {..x}" unfolding U_def using * \<open>x < y\<close> by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
627 |
then have "V \<subseteq> {..x}" using \<open>V \<subseteq> U\<close> by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
628 |
then have "(GREATEST x. x \<in> V) = x" using \<open>x \<in> V\<close> by (meson Greatest_equality atMost_iff subsetCE) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
629 |
then have "x \<in> B1 \<union> B2" using \<open>V \<in> A\<close> B1_def by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
630 |
moreover have "x \<le> x \<and> x < y" using \<open>x < y\<close> by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
631 |
ultimately show ?thesis by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
632 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
633 |
moreover have "countable (B1 \<union> B2)" using \<open>countable B1\<close> \<open>countable B2\<close> by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
634 |
ultimately show ?thesis by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
635 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
636 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
637 |
lemma countable_separating_set_dense_linorder: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
638 |
shows "\<exists>B::('a::{linorder_topology, dense_linorder, second_countable_topology} set). countable B \<and> (\<forall>x y. x < y \<longrightarrow> (\<exists>b \<in> B. x < b \<and> b < y))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
639 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
640 |
obtain B::"'a set" where B: "countable B" "\<And>x y. x < y \<Longrightarrow> (\<exists>b \<in> B. x < b \<and> b \<le> y)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
641 |
using countable_separating_set_linorder1 by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
642 |
have "\<exists>b \<in> B. x < b \<and> b < y" if "x < y" for x y |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
643 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
644 |
obtain z where "x < z" "z < y" using \<open>x < y\<close> dense by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
645 |
then obtain b where "b \<in> B" "x < b \<and> b \<le> z" using B(2) by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
646 |
then have "x < b \<and> b < y" using \<open>z < y\<close> by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
647 |
then show ?thesis using \<open>b \<in> B\<close> by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
648 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
649 |
then show ?thesis using B(1) by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
650 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
651 |
|
69615
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
652 |
|
69683 | 653 |
subsection \<open>Polish spaces\<close> |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
654 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
655 |
text \<open>Textbooks define Polish spaces as completely metrizable. |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
656 |
We assume the topology to be complete for a given metric.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
657 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
658 |
class polish_space = complete_space + second_countable_topology |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
659 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
660 |
|
69544
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
661 |
subsection \<open>Limit Points\<close> |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
662 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
663 |
definition%important (in topological_space) islimpt:: "'a \<Rightarrow> 'a set \<Rightarrow> bool" (infixr "islimpt" 60) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
664 |
where "x islimpt S \<longleftrightarrow> (\<forall>T. x\<in>T \<longrightarrow> open T \<longrightarrow> (\<exists>y\<in>S. y\<in>T \<and> y\<noteq>x))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
665 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
666 |
lemma islimptI: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
667 |
assumes "\<And>T. x \<in> T \<Longrightarrow> open T \<Longrightarrow> \<exists>y\<in>S. y \<in> T \<and> y \<noteq> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
668 |
shows "x islimpt S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
669 |
using assms unfolding islimpt_def by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
670 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
671 |
lemma islimptE: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
672 |
assumes "x islimpt S" and "x \<in> T" and "open T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
673 |
obtains y where "y \<in> S" and "y \<in> T" and "y \<noteq> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
674 |
using assms unfolding islimpt_def by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
675 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
676 |
lemma islimpt_iff_eventually: "x islimpt S \<longleftrightarrow> \<not> eventually (\<lambda>y. y \<notin> S) (at x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
677 |
unfolding islimpt_def eventually_at_topological by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
678 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
679 |
lemma islimpt_subset: "x islimpt S \<Longrightarrow> S \<subseteq> T \<Longrightarrow> x islimpt T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
680 |
unfolding islimpt_def by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
681 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
682 |
lemma islimpt_UNIV_iff: "x islimpt UNIV \<longleftrightarrow> \<not> open {x}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
683 |
unfolding islimpt_def by (safe, fast, case_tac "T = {x}", fast, fast) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
684 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
685 |
lemma islimpt_punctured: "x islimpt S = x islimpt (S-{x})" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
686 |
unfolding islimpt_def by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
687 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
688 |
text \<open>A perfect space has no isolated points.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
689 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
690 |
lemma islimpt_UNIV [simp, intro]: "x islimpt UNIV" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
691 |
for x :: "'a::perfect_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
692 |
unfolding islimpt_UNIV_iff by (rule not_open_singleton) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
693 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
694 |
lemma closed_limpt: "closed S \<longleftrightarrow> (\<forall>x. x islimpt S \<longrightarrow> x \<in> S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
695 |
unfolding closed_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
696 |
apply (subst open_subopen) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
697 |
apply (simp add: islimpt_def subset_eq) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
698 |
apply (metis ComplE ComplI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
699 |
done |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
700 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
701 |
lemma islimpt_EMPTY[simp]: "\<not> x islimpt {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
702 |
by (auto simp: islimpt_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
703 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
704 |
lemma islimpt_Un: "x islimpt (S \<union> T) \<longleftrightarrow> x islimpt S \<or> x islimpt T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
705 |
by (simp add: islimpt_iff_eventually eventually_conj_iff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
706 |
|
69544
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
707 |
|
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
708 |
lemma islimpt_insert: |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
709 |
fixes x :: "'a::t1_space" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
710 |
shows "x islimpt (insert a s) \<longleftrightarrow> x islimpt s" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
711 |
proof |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
712 |
assume *: "x islimpt (insert a s)" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
713 |
show "x islimpt s" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
714 |
proof (rule islimptI) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
715 |
fix t |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
716 |
assume t: "x \<in> t" "open t" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
717 |
show "\<exists>y\<in>s. y \<in> t \<and> y \<noteq> x" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
718 |
proof (cases "x = a") |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
719 |
case True |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
720 |
obtain y where "y \<in> insert a s" "y \<in> t" "y \<noteq> x" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
721 |
using * t by (rule islimptE) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
722 |
with \<open>x = a\<close> show ?thesis by auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
723 |
next |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
724 |
case False |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
725 |
with t have t': "x \<in> t - {a}" "open (t - {a})" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
726 |
by (simp_all add: open_Diff) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
727 |
obtain y where "y \<in> insert a s" "y \<in> t - {a}" "y \<noteq> x" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
728 |
using * t' by (rule islimptE) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
729 |
then show ?thesis by auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
730 |
qed |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
731 |
qed |
69544
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
732 |
next |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
733 |
assume "x islimpt s" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
734 |
then show "x islimpt (insert a s)" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
735 |
by (rule islimpt_subset) auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
736 |
qed |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
737 |
|
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
738 |
lemma islimpt_finite: |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
739 |
fixes x :: "'a::t1_space" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
740 |
shows "finite s \<Longrightarrow> \<not> x islimpt s" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
741 |
by (induct set: finite) (simp_all add: islimpt_insert) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
742 |
|
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
743 |
lemma islimpt_Un_finite: |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
744 |
fixes x :: "'a::t1_space" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
745 |
shows "finite s \<Longrightarrow> x islimpt (s \<union> t) \<longleftrightarrow> x islimpt t" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
746 |
by (simp add: islimpt_Un islimpt_finite) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
747 |
|
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
748 |
lemma islimpt_eq_acc_point: |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
749 |
fixes l :: "'a :: t1_space" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
750 |
shows "l islimpt S \<longleftrightarrow> (\<forall>U. l\<in>U \<longrightarrow> open U \<longrightarrow> infinite (U \<inter> S))" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
751 |
proof (safe intro!: islimptI) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
752 |
fix U |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
753 |
assume "l islimpt S" "l \<in> U" "open U" "finite (U \<inter> S)" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
754 |
then have "l islimpt S" "l \<in> (U - (U \<inter> S - {l}))" "open (U - (U \<inter> S - {l}))" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
755 |
by (auto intro: finite_imp_closed) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
756 |
then show False |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
757 |
by (rule islimptE) auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
758 |
next |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
759 |
fix T |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
760 |
assume *: "\<forall>U. l\<in>U \<longrightarrow> open U \<longrightarrow> infinite (U \<inter> S)" "l \<in> T" "open T" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
761 |
then have "infinite (T \<inter> S - {l})" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
762 |
by auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
763 |
then have "\<exists>x. x \<in> (T \<inter> S - {l})" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
764 |
unfolding ex_in_conv by (intro notI) simp |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
765 |
then show "\<exists>y\<in>S. y \<in> T \<and> y \<noteq> l" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
766 |
by auto |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
767 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
768 |
|
69544
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
769 |
lemma acc_point_range_imp_convergent_subsequence: |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
770 |
fixes l :: "'a :: first_countable_topology" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
771 |
assumes l: "\<forall>U. l\<in>U \<longrightarrow> open U \<longrightarrow> infinite (U \<inter> range f)" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
772 |
shows "\<exists>r::nat\<Rightarrow>nat. strict_mono r \<and> (f \<circ> r) \<longlonglongrightarrow> l" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
773 |
proof - |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
774 |
from countable_basis_at_decseq[of l] |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
775 |
obtain A where A: |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
776 |
"\<And>i. open (A i)" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
777 |
"\<And>i. l \<in> A i" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
778 |
"\<And>S. open S \<Longrightarrow> l \<in> S \<Longrightarrow> eventually (\<lambda>i. A i \<subseteq> S) sequentially" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
779 |
by blast |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
780 |
define s where "s n i = (SOME j. i < j \<and> f j \<in> A (Suc n))" for n i |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
781 |
{ |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
782 |
fix n i |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
783 |
have "infinite (A (Suc n) \<inter> range f - f`{.. i})" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
784 |
using l A by auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
785 |
then have "\<exists>x. x \<in> A (Suc n) \<inter> range f - f`{.. i}" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
786 |
unfolding ex_in_conv by (intro notI) simp |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
787 |
then have "\<exists>j. f j \<in> A (Suc n) \<and> j \<notin> {.. i}" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
788 |
by auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
789 |
then have "\<exists>a. i < a \<and> f a \<in> A (Suc n)" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
790 |
by (auto simp: not_le) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
791 |
then have "i < s n i" "f (s n i) \<in> A (Suc n)" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
792 |
unfolding s_def by (auto intro: someI2_ex) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
793 |
} |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
794 |
note s = this |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
795 |
define r where "r = rec_nat (s 0 0) s" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
796 |
have "strict_mono r" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
797 |
by (auto simp: r_def s strict_mono_Suc_iff) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
798 |
moreover |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
799 |
have "(\<lambda>n. f (r n)) \<longlonglongrightarrow> l" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
800 |
proof (rule topological_tendstoI) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
801 |
fix S |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
802 |
assume "open S" "l \<in> S" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
803 |
with A(3) have "eventually (\<lambda>i. A i \<subseteq> S) sequentially" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
804 |
by auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
805 |
moreover |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
806 |
{ |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
807 |
fix i |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
808 |
assume "Suc 0 \<le> i" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
809 |
then have "f (r i) \<in> A i" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
810 |
by (cases i) (simp_all add: r_def s) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
811 |
} |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
812 |
then have "eventually (\<lambda>i. f (r i) \<in> A i) sequentially" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
813 |
by (auto simp: eventually_sequentially) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
814 |
ultimately show "eventually (\<lambda>i. f (r i) \<in> S) sequentially" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
815 |
by eventually_elim auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
816 |
qed |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
817 |
ultimately show "\<exists>r::nat\<Rightarrow>nat. strict_mono r \<and> (f \<circ> r) \<longlonglongrightarrow> l" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
818 |
by (auto simp: convergent_def comp_def) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
819 |
qed |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
820 |
|
69544
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
821 |
lemma islimpt_range_imp_convergent_subsequence: |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
822 |
fixes l :: "'a :: {t1_space, first_countable_topology}" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
823 |
assumes l: "l islimpt (range f)" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
824 |
shows "\<exists>r::nat\<Rightarrow>nat. strict_mono r \<and> (f \<circ> r) \<longlonglongrightarrow> l" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
825 |
using l unfolding islimpt_eq_acc_point |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
826 |
by (rule acc_point_range_imp_convergent_subsequence) |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
827 |
|
69544
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
828 |
lemma sequence_unique_limpt: |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
829 |
fixes f :: "nat \<Rightarrow> 'a::t2_space" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
830 |
assumes "(f \<longlongrightarrow> l) sequentially" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
831 |
and "l' islimpt (range f)" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
832 |
shows "l' = l" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
833 |
proof (rule ccontr) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
834 |
assume "l' \<noteq> l" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
835 |
obtain s t where "open s" "open t" "l' \<in> s" "l \<in> t" "s \<inter> t = {}" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
836 |
using hausdorff [OF \<open>l' \<noteq> l\<close>] by auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
837 |
have "eventually (\<lambda>n. f n \<in> t) sequentially" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
838 |
using assms(1) \<open>open t\<close> \<open>l \<in> t\<close> by (rule topological_tendstoD) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
839 |
then obtain N where "\<forall>n\<ge>N. f n \<in> t" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
840 |
unfolding eventually_sequentially by auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
841 |
|
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
842 |
have "UNIV = {..<N} \<union> {N..}" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
843 |
by auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
844 |
then have "l' islimpt (f ` ({..<N} \<union> {N..}))" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
845 |
using assms(2) by simp |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
846 |
then have "l' islimpt (f ` {..<N} \<union> f ` {N..})" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
847 |
by (simp add: image_Un) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
848 |
then have "l' islimpt (f ` {N..})" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
849 |
by (simp add: islimpt_Un_finite) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
850 |
then obtain y where "y \<in> f ` {N..}" "y \<in> s" "y \<noteq> l'" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
851 |
using \<open>l' \<in> s\<close> \<open>open s\<close> by (rule islimptE) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
852 |
then obtain n where "N \<le> n" "f n \<in> s" "f n \<noteq> l'" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
853 |
by auto |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
854 |
with \<open>\<forall>n\<ge>N. f n \<in> t\<close> have "f n \<in> s \<inter> t" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
855 |
by simp |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
856 |
with \<open>s \<inter> t = {}\<close> show False |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
857 |
by simp |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
858 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
859 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
860 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
861 |
subsection \<open>Interior of a Set\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
862 |
|
69564 | 863 |
definition%important interior :: "('a::topological_space) set \<Rightarrow> 'a set" where |
864 |
"interior S = \<Union>{T. open T \<and> T \<subseteq> S}" |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
865 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
866 |
lemma interiorI [intro?]: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
867 |
assumes "open T" and "x \<in> T" and "T \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
868 |
shows "x \<in> interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
869 |
using assms unfolding interior_def by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
870 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
871 |
lemma interiorE [elim?]: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
872 |
assumes "x \<in> interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
873 |
obtains T where "open T" and "x \<in> T" and "T \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
874 |
using assms unfolding interior_def by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
875 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
876 |
lemma open_interior [simp, intro]: "open (interior S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
877 |
by (simp add: interior_def open_Union) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
878 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
879 |
lemma interior_subset: "interior S \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
880 |
by (auto simp: interior_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
881 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
882 |
lemma interior_maximal: "T \<subseteq> S \<Longrightarrow> open T \<Longrightarrow> T \<subseteq> interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
883 |
by (auto simp: interior_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
884 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
885 |
lemma interior_open: "open S \<Longrightarrow> interior S = S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
886 |
by (intro equalityI interior_subset interior_maximal subset_refl) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
887 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
888 |
lemma interior_eq: "interior S = S \<longleftrightarrow> open S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
889 |
by (metis open_interior interior_open) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
890 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
891 |
lemma open_subset_interior: "open S \<Longrightarrow> S \<subseteq> interior T \<longleftrightarrow> S \<subseteq> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
892 |
by (metis interior_maximal interior_subset subset_trans) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
893 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
894 |
lemma interior_empty [simp]: "interior {} = {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
895 |
using open_empty by (rule interior_open) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
896 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
897 |
lemma interior_UNIV [simp]: "interior UNIV = UNIV" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
898 |
using open_UNIV by (rule interior_open) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
899 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
900 |
lemma interior_interior [simp]: "interior (interior S) = interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
901 |
using open_interior by (rule interior_open) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
902 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
903 |
lemma interior_mono: "S \<subseteq> T \<Longrightarrow> interior S \<subseteq> interior T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
904 |
by (auto simp: interior_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
905 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
906 |
lemma interior_unique: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
907 |
assumes "T \<subseteq> S" and "open T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
908 |
assumes "\<And>T'. T' \<subseteq> S \<Longrightarrow> open T' \<Longrightarrow> T' \<subseteq> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
909 |
shows "interior S = T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
910 |
by (intro equalityI assms interior_subset open_interior interior_maximal) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
911 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
912 |
lemma interior_singleton [simp]: "interior {a} = {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
913 |
for a :: "'a::perfect_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
914 |
apply (rule interior_unique, simp_all) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
915 |
using not_open_singleton subset_singletonD |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
916 |
apply fastforce |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
917 |
done |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
918 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
919 |
lemma interior_Int [simp]: "interior (S \<inter> T) = interior S \<inter> interior T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
920 |
by (intro equalityI Int_mono Int_greatest interior_mono Int_lower1 |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
921 |
Int_lower2 interior_maximal interior_subset open_Int open_interior) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
922 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
923 |
lemma eventually_nhds_in_nhd: "x \<in> interior s \<Longrightarrow> eventually (\<lambda>y. y \<in> s) (nhds x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
924 |
using interior_subset[of s] by (subst eventually_nhds) blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
925 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
926 |
lemma interior_limit_point [intro]: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
927 |
fixes x :: "'a::perfect_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
928 |
assumes x: "x \<in> interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
929 |
shows "x islimpt S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
930 |
using x islimpt_UNIV [of x] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
931 |
unfolding interior_def islimpt_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
932 |
apply (clarsimp, rename_tac T T') |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
933 |
apply (drule_tac x="T \<inter> T'" in spec) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
934 |
apply (auto simp: open_Int) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
935 |
done |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
936 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
937 |
lemma interior_closed_Un_empty_interior: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
938 |
assumes cS: "closed S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
939 |
and iT: "interior T = {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
940 |
shows "interior (S \<union> T) = interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
941 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
942 |
show "interior S \<subseteq> interior (S \<union> T)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
943 |
by (rule interior_mono) (rule Un_upper1) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
944 |
show "interior (S \<union> T) \<subseteq> interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
945 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
946 |
fix x |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
947 |
assume "x \<in> interior (S \<union> T)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
948 |
then obtain R where "open R" "x \<in> R" "R \<subseteq> S \<union> T" .. |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
949 |
show "x \<in> interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
950 |
proof (rule ccontr) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
951 |
assume "x \<notin> interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
952 |
with \<open>x \<in> R\<close> \<open>open R\<close> obtain y where "y \<in> R - S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
953 |
unfolding interior_def by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
954 |
from \<open>open R\<close> \<open>closed S\<close> have "open (R - S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
955 |
by (rule open_Diff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
956 |
from \<open>R \<subseteq> S \<union> T\<close> have "R - S \<subseteq> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
957 |
by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
958 |
from \<open>y \<in> R - S\<close> \<open>open (R - S)\<close> \<open>R - S \<subseteq> T\<close> \<open>interior T = {}\<close> show False |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
959 |
unfolding interior_def by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
960 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
961 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
962 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
963 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
964 |
lemma interior_Times: "interior (A \<times> B) = interior A \<times> interior B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
965 |
proof (rule interior_unique) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
966 |
show "interior A \<times> interior B \<subseteq> A \<times> B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
967 |
by (intro Sigma_mono interior_subset) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
968 |
show "open (interior A \<times> interior B)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
969 |
by (intro open_Times open_interior) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
970 |
fix T |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
971 |
assume "T \<subseteq> A \<times> B" and "open T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
972 |
then show "T \<subseteq> interior A \<times> interior B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
973 |
proof safe |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
974 |
fix x y |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
975 |
assume "(x, y) \<in> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
976 |
then obtain C D where "open C" "open D" "C \<times> D \<subseteq> T" "x \<in> C" "y \<in> D" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
977 |
using \<open>open T\<close> unfolding open_prod_def by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
978 |
then have "open C" "open D" "C \<subseteq> A" "D \<subseteq> B" "x \<in> C" "y \<in> D" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
979 |
using \<open>T \<subseteq> A \<times> B\<close> by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
980 |
then show "x \<in> interior A" and "y \<in> interior B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
981 |
by (auto intro: interiorI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
982 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
983 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
984 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
985 |
lemma interior_Ici: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
986 |
fixes x :: "'a :: {dense_linorder,linorder_topology}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
987 |
assumes "b < x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
988 |
shows "interior {x ..} = {x <..}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
989 |
proof (rule interior_unique) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
990 |
fix T |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
991 |
assume "T \<subseteq> {x ..}" "open T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
992 |
moreover have "x \<notin> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
993 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
994 |
assume "x \<in> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
995 |
obtain y where "y < x" "{y <.. x} \<subseteq> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
996 |
using open_left[OF \<open>open T\<close> \<open>x \<in> T\<close> \<open>b < x\<close>] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
997 |
with dense[OF \<open>y < x\<close>] obtain z where "z \<in> T" "z < x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
998 |
by (auto simp: subset_eq Ball_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
999 |
with \<open>T \<subseteq> {x ..}\<close> show False by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1000 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1001 |
ultimately show "T \<subseteq> {x <..}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1002 |
by (auto simp: subset_eq less_le) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1003 |
qed auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1004 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1005 |
lemma interior_Iic: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1006 |
fixes x :: "'a ::{dense_linorder,linorder_topology}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1007 |
assumes "x < b" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1008 |
shows "interior {.. x} = {..< x}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1009 |
proof (rule interior_unique) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1010 |
fix T |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1011 |
assume "T \<subseteq> {.. x}" "open T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1012 |
moreover have "x \<notin> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1013 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1014 |
assume "x \<in> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1015 |
obtain y where "x < y" "{x ..< y} \<subseteq> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1016 |
using open_right[OF \<open>open T\<close> \<open>x \<in> T\<close> \<open>x < b\<close>] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1017 |
with dense[OF \<open>x < y\<close>] obtain z where "z \<in> T" "x < z" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1018 |
by (auto simp: subset_eq Ball_def less_le) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1019 |
with \<open>T \<subseteq> {.. x}\<close> show False by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1020 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1021 |
ultimately show "T \<subseteq> {..< x}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1022 |
by (auto simp: subset_eq less_le) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1023 |
qed auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1024 |
|
69615
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1025 |
lemma countable_disjoint_nonempty_interior_subsets: |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1026 |
fixes \<F> :: "'a::second_countable_topology set set" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1027 |
assumes pw: "pairwise disjnt \<F>" and int: "\<And>S. \<lbrakk>S \<in> \<F>; interior S = {}\<rbrakk> \<Longrightarrow> S = {}" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1028 |
shows "countable \<F>" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1029 |
proof (rule countable_image_inj_on) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1030 |
have "disjoint (interior ` \<F>)" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1031 |
using pw by (simp add: disjoint_image_subset interior_subset) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1032 |
then show "countable (interior ` \<F>)" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1033 |
by (auto intro: countable_disjoint_open_subsets) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1034 |
show "inj_on interior \<F>" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1035 |
using pw apply (clarsimp simp: inj_on_def pairwise_def) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1036 |
apply (metis disjnt_def disjnt_subset1 inf.orderE int interior_subset) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1037 |
done |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
1038 |
qed |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1039 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1040 |
subsection \<open>Closure of a Set\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1041 |
|
69564 | 1042 |
definition%important closure :: "('a::topological_space) set \<Rightarrow> 'a set" where |
1043 |
"closure S = S \<union> {x . x islimpt S}" |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1044 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1045 |
lemma interior_closure: "interior S = - (closure (- S))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1046 |
by (auto simp: interior_def closure_def islimpt_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1047 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1048 |
lemma closure_interior: "closure S = - interior (- S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1049 |
by (simp add: interior_closure) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1050 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1051 |
lemma closed_closure[simp, intro]: "closed (closure S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1052 |
by (simp add: closure_interior closed_Compl) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1053 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1054 |
lemma closure_subset: "S \<subseteq> closure S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1055 |
by (simp add: closure_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1056 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1057 |
lemma closure_hull: "closure S = closed hull S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1058 |
by (auto simp: hull_def closure_interior interior_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1059 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1060 |
lemma closure_eq: "closure S = S \<longleftrightarrow> closed S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1061 |
unfolding closure_hull using closed_Inter by (rule hull_eq) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1062 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1063 |
lemma closure_closed [simp]: "closed S \<Longrightarrow> closure S = S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1064 |
by (simp only: closure_eq) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1065 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1066 |
lemma closure_closure [simp]: "closure (closure S) = closure S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1067 |
unfolding closure_hull by (rule hull_hull) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1068 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1069 |
lemma closure_mono: "S \<subseteq> T \<Longrightarrow> closure S \<subseteq> closure T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1070 |
unfolding closure_hull by (rule hull_mono) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1071 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1072 |
lemma closure_minimal: "S \<subseteq> T \<Longrightarrow> closed T \<Longrightarrow> closure S \<subseteq> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1073 |
unfolding closure_hull by (rule hull_minimal) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1074 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1075 |
lemma closure_unique: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1076 |
assumes "S \<subseteq> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1077 |
and "closed T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1078 |
and "\<And>T'. S \<subseteq> T' \<Longrightarrow> closed T' \<Longrightarrow> T \<subseteq> T'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1079 |
shows "closure S = T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1080 |
using assms unfolding closure_hull by (rule hull_unique) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1081 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1082 |
lemma closure_empty [simp]: "closure {} = {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1083 |
using closed_empty by (rule closure_closed) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1084 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1085 |
lemma closure_UNIV [simp]: "closure UNIV = UNIV" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1086 |
using closed_UNIV by (rule closure_closed) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1087 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1088 |
lemma closure_Un [simp]: "closure (S \<union> T) = closure S \<union> closure T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1089 |
by (simp add: closure_interior) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1090 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1091 |
lemma closure_eq_empty [iff]: "closure S = {} \<longleftrightarrow> S = {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1092 |
using closure_empty closure_subset[of S] by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1093 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1094 |
lemma closure_subset_eq: "closure S \<subseteq> S \<longleftrightarrow> closed S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1095 |
using closure_eq[of S] closure_subset[of S] by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1096 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1097 |
lemma open_Int_closure_eq_empty: "open S \<Longrightarrow> (S \<inter> closure T) = {} \<longleftrightarrow> S \<inter> T = {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1098 |
using open_subset_interior[of S "- T"] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1099 |
using interior_subset[of "- T"] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1100 |
by (auto simp: closure_interior) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1101 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1102 |
lemma open_Int_closure_subset: "open S \<Longrightarrow> S \<inter> closure T \<subseteq> closure (S \<inter> T)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1103 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1104 |
fix x |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1105 |
assume *: "open S" "x \<in> S \<inter> closure T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1106 |
have "x islimpt (S \<inter> T)" if **: "x islimpt T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1107 |
proof (rule islimptI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1108 |
fix A |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1109 |
assume "x \<in> A" "open A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1110 |
with * have "x \<in> A \<inter> S" "open (A \<inter> S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1111 |
by (simp_all add: open_Int) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1112 |
with ** obtain y where "y \<in> T" "y \<in> A \<inter> S" "y \<noteq> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1113 |
by (rule islimptE) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1114 |
then have "y \<in> S \<inter> T" "y \<in> A \<and> y \<noteq> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1115 |
by simp_all |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1116 |
then show "\<exists>y\<in>(S \<inter> T). y \<in> A \<and> y \<noteq> x" .. |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1117 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1118 |
with * show "x \<in> closure (S \<inter> T)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1119 |
unfolding closure_def by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1120 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1121 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1122 |
lemma closure_complement: "closure (- S) = - interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1123 |
by (simp add: closure_interior) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1124 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1125 |
lemma interior_complement: "interior (- S) = - closure S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1126 |
by (simp add: closure_interior) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1127 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1128 |
lemma interior_diff: "interior(S - T) = interior S - closure T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1129 |
by (simp add: Diff_eq interior_complement) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1130 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1131 |
lemma closure_Times: "closure (A \<times> B) = closure A \<times> closure B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1132 |
proof (rule closure_unique) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1133 |
show "A \<times> B \<subseteq> closure A \<times> closure B" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1134 |
by (intro Sigma_mono closure_subset) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1135 |
show "closed (closure A \<times> closure B)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1136 |
by (intro closed_Times closed_closure) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1137 |
fix T |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1138 |
assume "A \<times> B \<subseteq> T" and "closed T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1139 |
then show "closure A \<times> closure B \<subseteq> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1140 |
apply (simp add: closed_def open_prod_def, clarify) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1141 |
apply (rule ccontr) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1142 |
apply (drule_tac x="(a, b)" in bspec, simp, clarify, rename_tac C D) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1143 |
apply (simp add: closure_interior interior_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1144 |
apply (drule_tac x=C in spec) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1145 |
apply (drule_tac x=D in spec, auto) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1146 |
done |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1147 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1148 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1149 |
lemma islimpt_in_closure: "(x islimpt S) = (x\<in>closure(S-{x}))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1150 |
unfolding closure_def using islimpt_punctured by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1151 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1152 |
lemma connected_imp_connected_closure: "connected S \<Longrightarrow> connected (closure S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1153 |
by (rule connectedI) (meson closure_subset open_Int open_Int_closure_eq_empty subset_trans connectedD) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1154 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1155 |
lemma bdd_below_closure: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1156 |
fixes A :: "real set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1157 |
assumes "bdd_below A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1158 |
shows "bdd_below (closure A)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1159 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1160 |
from assms obtain m where "\<And>x. x \<in> A \<Longrightarrow> m \<le> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1161 |
by (auto simp: bdd_below_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1162 |
then have "A \<subseteq> {m..}" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1163 |
then have "closure A \<subseteq> {m..}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1164 |
using closed_real_atLeast by (rule closure_minimal) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1165 |
then show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1166 |
by (auto simp: bdd_below_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1167 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1168 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1169 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1170 |
subsection \<open>Frontier (also known as boundary)\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1171 |
|
69564 | 1172 |
definition%important frontier :: "('a::topological_space) set \<Rightarrow> 'a set" where |
1173 |
"frontier S = closure S - interior S" |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1174 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1175 |
lemma frontier_closed [iff]: "closed (frontier S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1176 |
by (simp add: frontier_def closed_Diff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1177 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1178 |
lemma frontier_closures: "frontier S = closure S \<inter> closure (- S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1179 |
by (auto simp: frontier_def interior_closure) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1180 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1181 |
lemma frontier_Int: "frontier(S \<inter> T) = closure(S \<inter> T) \<inter> (frontier S \<union> frontier T)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1182 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1183 |
have "closure (S \<inter> T) \<subseteq> closure S" "closure (S \<inter> T) \<subseteq> closure T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1184 |
by (simp_all add: closure_mono) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1185 |
then show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1186 |
by (auto simp: frontier_closures) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1187 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1188 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1189 |
lemma frontier_Int_subset: "frontier(S \<inter> T) \<subseteq> frontier S \<union> frontier T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1190 |
by (auto simp: frontier_Int) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1191 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1192 |
lemma frontier_Int_closed: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1193 |
assumes "closed S" "closed T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1194 |
shows "frontier(S \<inter> T) = (frontier S \<inter> T) \<union> (S \<inter> frontier T)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1195 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1196 |
have "closure (S \<inter> T) = T \<inter> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1197 |
using assms by (simp add: Int_commute closed_Int) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1198 |
moreover have "T \<inter> (closure S \<inter> closure (- S)) = frontier S \<inter> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1199 |
by (simp add: Int_commute frontier_closures) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1200 |
ultimately show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1201 |
by (simp add: Int_Un_distrib Int_assoc Int_left_commute assms frontier_closures) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1202 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1203 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1204 |
lemma frontier_subset_closed: "closed S \<Longrightarrow> frontier S \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1205 |
by (metis frontier_def closure_closed Diff_subset) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1206 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1207 |
lemma frontier_empty [simp]: "frontier {} = {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1208 |
by (simp add: frontier_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1209 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1210 |
lemma frontier_subset_eq: "frontier S \<subseteq> S \<longleftrightarrow> closed S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1211 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1212 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1213 |
assume "frontier S \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1214 |
then have "closure S \<subseteq> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1215 |
using interior_subset unfolding frontier_def by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1216 |
then have "closed S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1217 |
using closure_subset_eq by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1218 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1219 |
then show ?thesis using frontier_subset_closed[of S] .. |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1220 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1221 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1222 |
lemma frontier_complement [simp]: "frontier (- S) = frontier S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1223 |
by (auto simp: frontier_def closure_complement interior_complement) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1224 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1225 |
lemma frontier_Un_subset: "frontier(S \<union> T) \<subseteq> frontier S \<union> frontier T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1226 |
by (metis compl_sup frontier_Int_subset frontier_complement) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1227 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1228 |
lemma frontier_disjoint_eq: "frontier S \<inter> S = {} \<longleftrightarrow> open S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1229 |
using frontier_complement frontier_subset_eq[of "- S"] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1230 |
unfolding open_closed by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1231 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1232 |
lemma frontier_UNIV [simp]: "frontier UNIV = {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1233 |
using frontier_complement frontier_empty by fastforce |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1234 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1235 |
lemma frontier_interiors: "frontier s = - interior(s) - interior(-s)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1236 |
by (simp add: Int_commute frontier_def interior_closure) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1237 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1238 |
lemma frontier_interior_subset: "frontier(interior S) \<subseteq> frontier S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1239 |
by (simp add: Diff_mono frontier_interiors interior_mono interior_subset) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1240 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1241 |
lemma closure_Un_frontier: "closure S = S \<union> frontier S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1242 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1243 |
have "S \<union> interior S = S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1244 |
using interior_subset by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1245 |
then show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1246 |
using closure_subset by (auto simp: frontier_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1247 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1248 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1249 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1250 |
subsection%unimportant \<open>Filters and the ``eventually true'' quantifier\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1251 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1252 |
text \<open>Identify Trivial limits, where we can't approach arbitrarily closely.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1253 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1254 |
lemma trivial_limit_within: "trivial_limit (at a within S) \<longleftrightarrow> \<not> a islimpt S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1255 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1256 |
assume "trivial_limit (at a within S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1257 |
then show "\<not> a islimpt S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1258 |
unfolding trivial_limit_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1259 |
unfolding eventually_at_topological |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1260 |
unfolding islimpt_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1261 |
apply (clarsimp simp add: set_eq_iff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1262 |
apply (rename_tac T, rule_tac x=T in exI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1263 |
apply (clarsimp, drule_tac x=y in bspec, simp_all) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1264 |
done |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1265 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1266 |
assume "\<not> a islimpt S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1267 |
then show "trivial_limit (at a within S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1268 |
unfolding trivial_limit_def eventually_at_topological islimpt_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1269 |
by metis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1270 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1271 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1272 |
lemma trivial_limit_at_iff: "trivial_limit (at a) \<longleftrightarrow> \<not> a islimpt UNIV" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1273 |
using trivial_limit_within [of a UNIV] by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1274 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1275 |
lemma trivial_limit_at: "\<not> trivial_limit (at a)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1276 |
for a :: "'a::perfect_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1277 |
by (rule at_neq_bot) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1278 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1279 |
lemma not_trivial_limit_within: "\<not> trivial_limit (at x within S) = (x \<in> closure (S - {x}))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1280 |
using islimpt_in_closure by (metis trivial_limit_within) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1281 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1282 |
lemma not_in_closure_trivial_limitI: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1283 |
"x \<notin> closure s \<Longrightarrow> trivial_limit (at x within s)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1284 |
using not_trivial_limit_within[of x s] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1285 |
by safe (metis Diff_empty Diff_insert0 closure_subset contra_subsetD) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1286 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1287 |
lemma filterlim_at_within_closure_implies_filterlim: "filterlim f l (at x within s)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1288 |
if "x \<in> closure s \<Longrightarrow> filterlim f l (at x within s)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1289 |
by (metis bot.extremum filterlim_filtercomap filterlim_mono not_in_closure_trivial_limitI that) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1290 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1291 |
lemma at_within_eq_bot_iff: "at c within A = bot \<longleftrightarrow> c \<notin> closure (A - {c})" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1292 |
using not_trivial_limit_within[of c A] by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1293 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1294 |
text \<open>Some property holds "sufficiently close" to the limit point.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1295 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1296 |
lemma trivial_limit_eventually: "trivial_limit net \<Longrightarrow> eventually P net" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1297 |
by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1298 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1299 |
lemma trivial_limit_eq: "trivial_limit net \<longleftrightarrow> (\<forall>P. eventually P net)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1300 |
by (simp add: filter_eq_iff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1301 |
|
69613
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1302 |
lemma Lim_topological: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1303 |
"(f \<longlongrightarrow> l) net \<longleftrightarrow> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1304 |
trivial_limit net \<or> (\<forall>S. open S \<longrightarrow> l \<in> S \<longrightarrow> eventually (\<lambda>x. f x \<in> S) net)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1305 |
unfolding tendsto_def trivial_limit_eq by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1306 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1307 |
lemma eventually_within_Un: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1308 |
"eventually P (at x within (s \<union> t)) \<longleftrightarrow> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1309 |
eventually P (at x within s) \<and> eventually P (at x within t)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1310 |
unfolding eventually_at_filter |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1311 |
by (auto elim!: eventually_rev_mp) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1312 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1313 |
lemma Lim_within_union: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1314 |
"(f \<longlongrightarrow> l) (at x within (s \<union> t)) \<longleftrightarrow> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1315 |
(f \<longlongrightarrow> l) (at x within s) \<and> (f \<longlongrightarrow> l) (at x within t)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1316 |
unfolding tendsto_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1317 |
by (auto simp: eventually_within_Un) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
1318 |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1319 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1320 |
subsection \<open>Limits\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1321 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1322 |
lemma Lim_eventually: "eventually (\<lambda>x. f x = l) net \<Longrightarrow> (f \<longlongrightarrow> l) net" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1323 |
by (rule topological_tendstoI) (auto elim: eventually_mono) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1324 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1325 |
text \<open>The expected monotonicity property.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1326 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1327 |
lemma Lim_Un: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1328 |
assumes "(f \<longlongrightarrow> l) (at x within S)" "(f \<longlongrightarrow> l) (at x within T)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1329 |
shows "(f \<longlongrightarrow> l) (at x within (S \<union> T))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1330 |
using assms unfolding at_within_union by (rule filterlim_sup) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1331 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1332 |
lemma Lim_Un_univ: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1333 |
"(f \<longlongrightarrow> l) (at x within S) \<Longrightarrow> (f \<longlongrightarrow> l) (at x within T) \<Longrightarrow> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1334 |
S \<union> T = UNIV \<Longrightarrow> (f \<longlongrightarrow> l) (at x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1335 |
by (metis Lim_Un) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1336 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1337 |
text \<open>Interrelations between restricted and unrestricted limits.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1338 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1339 |
lemma Lim_at_imp_Lim_at_within: "(f \<longlongrightarrow> l) (at x) \<Longrightarrow> (f \<longlongrightarrow> l) (at x within S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1340 |
by (metis order_refl filterlim_mono subset_UNIV at_le) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1341 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1342 |
lemma eventually_within_interior: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1343 |
assumes "x \<in> interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1344 |
shows "eventually P (at x within S) \<longleftrightarrow> eventually P (at x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1345 |
(is "?lhs = ?rhs") |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1346 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1347 |
from assms obtain T where T: "open T" "x \<in> T" "T \<subseteq> S" .. |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1348 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1349 |
assume ?lhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1350 |
then obtain A where "open A" and "x \<in> A" and "\<forall>y\<in>A. y \<noteq> x \<longrightarrow> y \<in> S \<longrightarrow> P y" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1351 |
by (auto simp: eventually_at_topological) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1352 |
with T have "open (A \<inter> T)" and "x \<in> A \<inter> T" and "\<forall>y \<in> A \<inter> T. y \<noteq> x \<longrightarrow> P y" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1353 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1354 |
then show ?rhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1355 |
by (auto simp: eventually_at_topological) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1356 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1357 |
assume ?rhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1358 |
then show ?lhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1359 |
by (auto elim: eventually_mono simp: eventually_at_filter) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1360 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1361 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1362 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1363 |
lemma at_within_interior: "x \<in> interior S \<Longrightarrow> at x within S = at x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1364 |
unfolding filter_eq_iff by (intro allI eventually_within_interior) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1365 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1366 |
lemma Lim_within_LIMSEQ: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1367 |
fixes a :: "'a::first_countable_topology" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1368 |
assumes "\<forall>S. (\<forall>n. S n \<noteq> a \<and> S n \<in> T) \<and> S \<longlonglongrightarrow> a \<longrightarrow> (\<lambda>n. X (S n)) \<longlonglongrightarrow> L" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1369 |
shows "(X \<longlongrightarrow> L) (at a within T)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1370 |
using assms unfolding tendsto_def [where l=L] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1371 |
by (simp add: sequentially_imp_eventually_within) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1372 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1373 |
lemma Lim_right_bound: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1374 |
fixes f :: "'a :: {linorder_topology, conditionally_complete_linorder, no_top} \<Rightarrow> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1375 |
'b::{linorder_topology, conditionally_complete_linorder}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1376 |
assumes mono: "\<And>a b. a \<in> I \<Longrightarrow> b \<in> I \<Longrightarrow> x < a \<Longrightarrow> a \<le> b \<Longrightarrow> f a \<le> f b" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1377 |
and bnd: "\<And>a. a \<in> I \<Longrightarrow> x < a \<Longrightarrow> K \<le> f a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1378 |
shows "(f \<longlongrightarrow> Inf (f ` ({x<..} \<inter> I))) (at x within ({x<..} \<inter> I))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1379 |
proof (cases "{x<..} \<inter> I = {}") |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1380 |
case True |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1381 |
then show ?thesis by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1382 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1383 |
case False |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1384 |
show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1385 |
proof (rule order_tendstoI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1386 |
fix a |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1387 |
assume a: "a < Inf (f ` ({x<..} \<inter> I))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1388 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1389 |
fix y |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1390 |
assume "y \<in> {x<..} \<inter> I" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1391 |
with False bnd have "Inf (f ` ({x<..} \<inter> I)) \<le> f y" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1392 |
by (auto intro!: cInf_lower bdd_belowI2) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1393 |
with a have "a < f y" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1394 |
by (blast intro: less_le_trans) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1395 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1396 |
then show "eventually (\<lambda>x. a < f x) (at x within ({x<..} \<inter> I))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1397 |
by (auto simp: eventually_at_filter intro: exI[of _ 1] zero_less_one) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1398 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1399 |
fix a |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1400 |
assume "Inf (f ` ({x<..} \<inter> I)) < a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1401 |
from cInf_lessD[OF _ this] False obtain y where y: "x < y" "y \<in> I" "f y < a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1402 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1403 |
then have "eventually (\<lambda>x. x \<in> I \<longrightarrow> f x < a) (at_right x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1404 |
unfolding eventually_at_right[OF \<open>x < y\<close>] by (metis less_imp_le le_less_trans mono) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1405 |
then show "eventually (\<lambda>x. f x < a) (at x within ({x<..} \<inter> I))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1406 |
unfolding eventually_at_filter by eventually_elim simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1407 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1408 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1409 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1410 |
(*could prove directly from islimpt_sequential_inj, but only for metric spaces*) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1411 |
lemma islimpt_sequential: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1412 |
fixes x :: "'a::first_countable_topology" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1413 |
shows "x islimpt S \<longleftrightarrow> (\<exists>f. (\<forall>n::nat. f n \<in> S - {x}) \<and> (f \<longlongrightarrow> x) sequentially)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1414 |
(is "?lhs = ?rhs") |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1415 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1416 |
assume ?lhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1417 |
from countable_basis_at_decseq[of x] obtain A where A: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1418 |
"\<And>i. open (A i)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1419 |
"\<And>i. x \<in> A i" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1420 |
"\<And>S. open S \<Longrightarrow> x \<in> S \<Longrightarrow> eventually (\<lambda>i. A i \<subseteq> S) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1421 |
by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1422 |
define f where "f n = (SOME y. y \<in> S \<and> y \<in> A n \<and> x \<noteq> y)" for n |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1423 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1424 |
fix n |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1425 |
from \<open>?lhs\<close> have "\<exists>y. y \<in> S \<and> y \<in> A n \<and> x \<noteq> y" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1426 |
unfolding islimpt_def using A(1,2)[of n] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1427 |
then have "f n \<in> S \<and> f n \<in> A n \<and> x \<noteq> f n" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1428 |
unfolding f_def by (rule someI_ex) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1429 |
then have "f n \<in> S" "f n \<in> A n" "x \<noteq> f n" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1430 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1431 |
then have "\<forall>n. f n \<in> S - {x}" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1432 |
moreover have "(\<lambda>n. f n) \<longlonglongrightarrow> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1433 |
proof (rule topological_tendstoI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1434 |
fix S |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1435 |
assume "open S" "x \<in> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1436 |
from A(3)[OF this] \<open>\<And>n. f n \<in> A n\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1437 |
show "eventually (\<lambda>x. f x \<in> S) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1438 |
by (auto elim!: eventually_mono) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1439 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1440 |
ultimately show ?rhs by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1441 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1442 |
assume ?rhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1443 |
then obtain f :: "nat \<Rightarrow> 'a" where f: "\<And>n. f n \<in> S - {x}" and lim: "f \<longlonglongrightarrow> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1444 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1445 |
show ?lhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1446 |
unfolding islimpt_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1447 |
proof safe |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1448 |
fix T |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1449 |
assume "open T" "x \<in> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1450 |
from lim[THEN topological_tendstoD, OF this] f |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1451 |
show "\<exists>y\<in>S. y \<in> T \<and> y \<noteq> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1452 |
unfolding eventually_sequentially by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1453 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1454 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1455 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1456 |
text\<open>Deducing things about the limit from the elements.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1457 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1458 |
lemma Lim_in_closed_set: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1459 |
assumes "closed S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1460 |
and "eventually (\<lambda>x. f(x) \<in> S) net" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1461 |
and "\<not> trivial_limit net" "(f \<longlongrightarrow> l) net" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1462 |
shows "l \<in> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1463 |
proof (rule ccontr) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1464 |
assume "l \<notin> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1465 |
with \<open>closed S\<close> have "open (- S)" "l \<in> - S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1466 |
by (simp_all add: open_Compl) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1467 |
with assms(4) have "eventually (\<lambda>x. f x \<in> - S) net" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1468 |
by (rule topological_tendstoD) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1469 |
with assms(2) have "eventually (\<lambda>x. False) net" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1470 |
by (rule eventually_elim2) simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1471 |
with assms(3) show "False" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1472 |
by (simp add: eventually_False) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1473 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1474 |
|
69544
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
1475 |
text\<open>These are special for limits out of the same topological space.\<close> |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1476 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1477 |
lemma Lim_within_id: "(id \<longlongrightarrow> a) (at a within s)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1478 |
unfolding id_def by (rule tendsto_ident_at) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1479 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1480 |
lemma Lim_at_id: "(id \<longlongrightarrow> a) (at a)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1481 |
unfolding id_def by (rule tendsto_ident_at) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1482 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1483 |
text\<open>It's also sometimes useful to extract the limit point from the filter.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1484 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1485 |
abbreviation netlimit :: "'a::t2_space filter \<Rightarrow> 'a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1486 |
where "netlimit F \<equiv> Lim F (\<lambda>x. x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1487 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1488 |
lemma netlimit_within: "\<not> trivial_limit (at a within S) \<Longrightarrow> netlimit (at a within S) = a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1489 |
by (rule tendsto_Lim) (auto intro: tendsto_intros) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1490 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1491 |
lemma netlimit_at [simp]: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1492 |
fixes a :: "'a::{perfect_space,t2_space}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1493 |
shows "netlimit (at a) = a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1494 |
using netlimit_within [of a UNIV] by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1495 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1496 |
lemma lim_within_interior: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1497 |
"x \<in> interior S \<Longrightarrow> (f \<longlongrightarrow> l) (at x within S) \<longleftrightarrow> (f \<longlongrightarrow> l) (at x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1498 |
by (metis at_within_interior) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1499 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1500 |
lemma netlimit_within_interior: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1501 |
fixes x :: "'a::{t2_space,perfect_space}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1502 |
assumes "x \<in> interior S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1503 |
shows "netlimit (at x within S) = x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1504 |
using assms by (metis at_within_interior netlimit_at) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1505 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1506 |
text\<open>Useful lemmas on closure and set of possible sequential limits.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1507 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1508 |
lemma closure_sequential: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1509 |
fixes l :: "'a::first_countable_topology" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1510 |
shows "l \<in> closure S \<longleftrightarrow> (\<exists>x. (\<forall>n. x n \<in> S) \<and> (x \<longlongrightarrow> l) sequentially)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1511 |
(is "?lhs = ?rhs") |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1512 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1513 |
assume "?lhs" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1514 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1515 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1516 |
assume "l \<in> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1517 |
then have "?rhs" using tendsto_const[of l sequentially] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1518 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1519 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1520 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1521 |
assume "l islimpt S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1522 |
then have "?rhs" unfolding islimpt_sequential by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1523 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1524 |
ultimately show "?rhs" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1525 |
unfolding closure_def by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1526 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1527 |
assume "?rhs" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1528 |
then show "?lhs" unfolding closure_def islimpt_sequential by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1529 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1530 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1531 |
lemma closed_sequential_limits: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1532 |
fixes S :: "'a::first_countable_topology set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1533 |
shows "closed S \<longleftrightarrow> (\<forall>x l. (\<forall>n. x n \<in> S) \<and> (x \<longlongrightarrow> l) sequentially \<longrightarrow> l \<in> S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1534 |
by (metis closure_sequential closure_subset_eq subset_iff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1535 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1536 |
lemma tendsto_If_within_closures: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1537 |
assumes f: "x \<in> s \<union> (closure s \<inter> closure t) \<Longrightarrow> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1538 |
(f \<longlongrightarrow> l x) (at x within s \<union> (closure s \<inter> closure t))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1539 |
assumes g: "x \<in> t \<union> (closure s \<inter> closure t) \<Longrightarrow> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1540 |
(g \<longlongrightarrow> l x) (at x within t \<union> (closure s \<inter> closure t))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1541 |
assumes "x \<in> s \<union> t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1542 |
shows "((\<lambda>x. if x \<in> s then f x else g x) \<longlongrightarrow> l x) (at x within s \<union> t)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1543 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1544 |
have *: "(s \<union> t) \<inter> {x. x \<in> s} = s" "(s \<union> t) \<inter> {x. x \<notin> s} = t - s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1545 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1546 |
have "(f \<longlongrightarrow> l x) (at x within s)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1547 |
by (rule filterlim_at_within_closure_implies_filterlim) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1548 |
(use \<open>x \<in> _\<close> in \<open>auto simp: inf_commute closure_def intro: tendsto_within_subset[OF f]\<close>) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1549 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1550 |
have "(g \<longlongrightarrow> l x) (at x within t - s)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1551 |
by (rule filterlim_at_within_closure_implies_filterlim) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1552 |
(use \<open>x \<in> _\<close> in |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1553 |
\<open>auto intro!: tendsto_within_subset[OF g] simp: closure_def intro: islimpt_subset\<close>) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1554 |
ultimately show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1555 |
by (intro filterlim_at_within_If) (simp_all only: *) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1556 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1557 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1558 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1559 |
subsection \<open>Compactness\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1560 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1561 |
subsubsection \<open>Bolzano-Weierstrass property\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1562 |
|
69529 | 1563 |
proposition Heine_Borel_imp_Bolzano_Weierstrass: |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1564 |
assumes "compact s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1565 |
and "infinite t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1566 |
and "t \<subseteq> s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1567 |
shows "\<exists>x \<in> s. x islimpt t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1568 |
proof (rule ccontr) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1569 |
assume "\<not> (\<exists>x \<in> s. x islimpt t)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1570 |
then obtain f where f: "\<forall>x\<in>s. x \<in> f x \<and> open (f x) \<and> (\<forall>y\<in>t. y \<in> f x \<longrightarrow> y = x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1571 |
unfolding islimpt_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1572 |
using bchoice[of s "\<lambda> x T. x \<in> T \<and> open T \<and> (\<forall>y\<in>t. y \<in> T \<longrightarrow> y = x)"] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1573 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1574 |
obtain g where g: "g \<subseteq> {t. \<exists>x. x \<in> s \<and> t = f x}" "finite g" "s \<subseteq> \<Union>g" |
69529 | 1575 |
using assms(1)[unfolded compact_eq_Heine_Borel, THEN spec[where x="{t. \<exists>x. x\<in>s \<and> t = f x}"]] |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1576 |
using f by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1577 |
from g(1,3) have g':"\<forall>x\<in>g. \<exists>xa \<in> s. x = f xa" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1578 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1579 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1580 |
fix x y |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1581 |
assume "x \<in> t" "y \<in> t" "f x = f y" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1582 |
then have "x \<in> f x" "y \<in> f x \<longrightarrow> y = x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1583 |
using f[THEN bspec[where x=x]] and \<open>t \<subseteq> s\<close> by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1584 |
then have "x = y" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1585 |
using \<open>f x = f y\<close> and f[THEN bspec[where x=y]] and \<open>y \<in> t\<close> and \<open>t \<subseteq> s\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1586 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1587 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1588 |
then have "inj_on f t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1589 |
unfolding inj_on_def by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1590 |
then have "infinite (f ` t)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1591 |
using assms(2) using finite_imageD by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1592 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1593 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1594 |
fix x |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1595 |
assume "x \<in> t" "f x \<notin> g" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1596 |
from g(3) assms(3) \<open>x \<in> t\<close> obtain h where "h \<in> g" and "x \<in> h" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1597 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1598 |
then obtain y where "y \<in> s" "h = f y" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1599 |
using g'[THEN bspec[where x=h]] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1600 |
then have "y = x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1601 |
using f[THEN bspec[where x=y]] and \<open>x\<in>t\<close> and \<open>x\<in>h\<close>[unfolded \<open>h = f y\<close>] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1602 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1603 |
then have False |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1604 |
using \<open>f x \<notin> g\<close> \<open>h \<in> g\<close> unfolding \<open>h = f y\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1605 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1606 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1607 |
then have "f ` t \<subseteq> g" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1608 |
ultimately show False |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1609 |
using g(2) using finite_subset by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1610 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1611 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1612 |
lemma sequence_infinite_lemma: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1613 |
fixes f :: "nat \<Rightarrow> 'a::t1_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1614 |
assumes "\<forall>n. f n \<noteq> l" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1615 |
and "(f \<longlongrightarrow> l) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1616 |
shows "infinite (range f)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1617 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1618 |
assume "finite (range f)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1619 |
then have "closed (range f)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1620 |
by (rule finite_imp_closed) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1621 |
then have "open (- range f)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1622 |
by (rule open_Compl) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1623 |
from assms(1) have "l \<in> - range f" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1624 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1625 |
from assms(2) have "eventually (\<lambda>n. f n \<in> - range f) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1626 |
using \<open>open (- range f)\<close> \<open>l \<in> - range f\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1627 |
by (rule topological_tendstoD) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1628 |
then show False |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1629 |
unfolding eventually_sequentially |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1630 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1631 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1632 |
|
69529 | 1633 |
lemma Bolzano_Weierstrass_imp_closed: |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1634 |
fixes s :: "'a::{first_countable_topology,t2_space} set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1635 |
assumes "\<forall>t. infinite t \<and> t \<subseteq> s --> (\<exists>x \<in> s. x islimpt t)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1636 |
shows "closed s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1637 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1638 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1639 |
fix x l |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1640 |
assume as: "\<forall>n::nat. x n \<in> s" "(x \<longlongrightarrow> l) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1641 |
then have "l \<in> s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1642 |
proof (cases "\<forall>n. x n \<noteq> l") |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1643 |
case False |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1644 |
then show "l\<in>s" using as(1) by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1645 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1646 |
case True note cas = this |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1647 |
with as(2) have "infinite (range x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1648 |
using sequence_infinite_lemma[of x l] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1649 |
then obtain l' where "l'\<in>s" "l' islimpt (range x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1650 |
using assms[THEN spec[where x="range x"]] as(1) by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1651 |
then show "l\<in>s" using sequence_unique_limpt[of x l l'] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1652 |
using as cas by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1653 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1654 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1655 |
then show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1656 |
unfolding closed_sequential_limits by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1657 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1658 |
|
69544
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
1659 |
lemma closure_insert: |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
1660 |
fixes x :: "'a::t1_space" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
1661 |
shows "closure (insert x s) = insert x (closure s)" |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
1662 |
apply (rule closure_unique) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
1663 |
apply (rule insert_mono [OF closure_subset]) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
1664 |
apply (rule closed_insert [OF closed_closure]) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
1665 |
apply (simp add: closure_minimal) |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
1666 |
done |
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
1667 |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1668 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1669 |
text\<open>In particular, some common special cases.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1670 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1671 |
lemma compact_Un [intro]: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1672 |
assumes "compact s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1673 |
and "compact t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1674 |
shows " compact (s \<union> t)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1675 |
proof (rule compactI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1676 |
fix f |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1677 |
assume *: "Ball f open" "s \<union> t \<subseteq> \<Union>f" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1678 |
from * \<open>compact s\<close> obtain s' where "s' \<subseteq> f \<and> finite s' \<and> s \<subseteq> \<Union>s'" |
69529 | 1679 |
unfolding compact_eq_Heine_Borel by (auto elim!: allE[of _ f]) |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1680 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1681 |
from * \<open>compact t\<close> obtain t' where "t' \<subseteq> f \<and> finite t' \<and> t \<subseteq> \<Union>t'" |
69529 | 1682 |
unfolding compact_eq_Heine_Borel by (auto elim!: allE[of _ f]) |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1683 |
ultimately show "\<exists>f'\<subseteq>f. finite f' \<and> s \<union> t \<subseteq> \<Union>f'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1684 |
by (auto intro!: exI[of _ "s' \<union> t'"]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1685 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1686 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1687 |
lemma compact_Union [intro]: "finite S \<Longrightarrow> (\<And>T. T \<in> S \<Longrightarrow> compact T) \<Longrightarrow> compact (\<Union>S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1688 |
by (induct set: finite) auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1689 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1690 |
lemma compact_UN [intro]: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1691 |
"finite A \<Longrightarrow> (\<And>x. x \<in> A \<Longrightarrow> compact (B x)) \<Longrightarrow> compact (\<Union>x\<in>A. B x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1692 |
by (rule compact_Union) auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1693 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1694 |
lemma closed_Int_compact [intro]: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1695 |
assumes "closed s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1696 |
and "compact t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1697 |
shows "compact (s \<inter> t)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1698 |
using compact_Int_closed [of t s] assms |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1699 |
by (simp add: Int_commute) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1700 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1701 |
lemma compact_Int [intro]: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1702 |
fixes s t :: "'a :: t2_space set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1703 |
assumes "compact s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1704 |
and "compact t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1705 |
shows "compact (s \<inter> t)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1706 |
using assms by (intro compact_Int_closed compact_imp_closed) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1707 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1708 |
lemma compact_sing [simp]: "compact {a}" |
69529 | 1709 |
unfolding compact_eq_Heine_Borel by auto |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1710 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1711 |
lemma compact_insert [simp]: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1712 |
assumes "compact s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1713 |
shows "compact (insert x s)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1714 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1715 |
have "compact ({x} \<union> s)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1716 |
using compact_sing assms by (rule compact_Un) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1717 |
then show ?thesis by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1718 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1719 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1720 |
lemma finite_imp_compact: "finite s \<Longrightarrow> compact s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1721 |
by (induct set: finite) simp_all |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1722 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1723 |
lemma open_delete: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1724 |
fixes s :: "'a::t1_space set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1725 |
shows "open s \<Longrightarrow> open (s - {x})" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1726 |
by (simp add: open_Diff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1727 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1728 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1729 |
text\<open>Compactness expressed with filters\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1730 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1731 |
lemma closure_iff_nhds_not_empty: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1732 |
"x \<in> closure X \<longleftrightarrow> (\<forall>A. \<forall>S\<subseteq>A. open S \<longrightarrow> x \<in> S \<longrightarrow> X \<inter> A \<noteq> {})" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1733 |
proof safe |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1734 |
assume x: "x \<in> closure X" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1735 |
fix S A |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1736 |
assume "open S" "x \<in> S" "X \<inter> A = {}" "S \<subseteq> A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1737 |
then have "x \<notin> closure (-S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1738 |
by (auto simp: closure_complement subset_eq[symmetric] intro: interiorI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1739 |
with x have "x \<in> closure X - closure (-S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1740 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1741 |
also have "\<dots> \<subseteq> closure (X \<inter> S)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1742 |
using \<open>open S\<close> open_Int_closure_subset[of S X] by (simp add: closed_Compl ac_simps) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1743 |
finally have "X \<inter> S \<noteq> {}" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1744 |
then show False using \<open>X \<inter> A = {}\<close> \<open>S \<subseteq> A\<close> by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1745 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1746 |
assume "\<forall>A S. S \<subseteq> A \<longrightarrow> open S \<longrightarrow> x \<in> S \<longrightarrow> X \<inter> A \<noteq> {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1747 |
from this[THEN spec, of "- X", THEN spec, of "- closure X"] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1748 |
show "x \<in> closure X" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1749 |
by (simp add: closure_subset open_Compl) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1750 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1751 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1752 |
lemma compact_filter: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1753 |
"compact U \<longleftrightarrow> (\<forall>F. F \<noteq> bot \<longrightarrow> eventually (\<lambda>x. x \<in> U) F \<longrightarrow> (\<exists>x\<in>U. inf (nhds x) F \<noteq> bot))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1754 |
proof (intro allI iffI impI compact_fip[THEN iffD2] notI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1755 |
fix F |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1756 |
assume "compact U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1757 |
assume F: "F \<noteq> bot" "eventually (\<lambda>x. x \<in> U) F" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1758 |
then have "U \<noteq> {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1759 |
by (auto simp: eventually_False) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1760 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1761 |
define Z where "Z = closure ` {A. eventually (\<lambda>x. x \<in> A) F}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1762 |
then have "\<forall>z\<in>Z. closed z" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1763 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1764 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1765 |
have ev_Z: "\<And>z. z \<in> Z \<Longrightarrow> eventually (\<lambda>x. x \<in> z) F" |
69712 | 1766 |
unfolding Z_def by (auto elim: eventually_mono intro: subsetD[OF closure_subset]) |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1767 |
have "(\<forall>B \<subseteq> Z. finite B \<longrightarrow> U \<inter> \<Inter>B \<noteq> {})" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1768 |
proof (intro allI impI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1769 |
fix B assume "finite B" "B \<subseteq> Z" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1770 |
with \<open>finite B\<close> ev_Z F(2) have "eventually (\<lambda>x. x \<in> U \<inter> (\<Inter>B)) F" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1771 |
by (auto simp: eventually_ball_finite_distrib eventually_conj_iff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1772 |
with F show "U \<inter> \<Inter>B \<noteq> {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1773 |
by (intro notI) (simp add: eventually_False) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1774 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1775 |
ultimately have "U \<inter> \<Inter>Z \<noteq> {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1776 |
using \<open>compact U\<close> unfolding compact_fip by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1777 |
then obtain x where "x \<in> U" and x: "\<And>z. z \<in> Z \<Longrightarrow> x \<in> z" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1778 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1779 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1780 |
have "\<And>P. eventually P (inf (nhds x) F) \<Longrightarrow> P \<noteq> bot" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1781 |
unfolding eventually_inf eventually_nhds |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1782 |
proof safe |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1783 |
fix P Q R S |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1784 |
assume "eventually R F" "open S" "x \<in> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1785 |
with open_Int_closure_eq_empty[of S "{x. R x}"] x[of "closure {x. R x}"] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1786 |
have "S \<inter> {x. R x} \<noteq> {}" by (auto simp: Z_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1787 |
moreover assume "Ball S Q" "\<forall>x. Q x \<and> R x \<longrightarrow> bot x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1788 |
ultimately show False by (auto simp: set_eq_iff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1789 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1790 |
with \<open>x \<in> U\<close> show "\<exists>x\<in>U. inf (nhds x) F \<noteq> bot" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1791 |
by (metis eventually_bot) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1792 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1793 |
fix A |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1794 |
assume A: "\<forall>a\<in>A. closed a" "\<forall>B\<subseteq>A. finite B \<longrightarrow> U \<inter> \<Inter>B \<noteq> {}" "U \<inter> \<Inter>A = {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1795 |
define F where "F = (INF a\<in>insert U A. principal a)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1796 |
have "F \<noteq> bot" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1797 |
unfolding F_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1798 |
proof (rule INF_filter_not_bot) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1799 |
fix X |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1800 |
assume X: "X \<subseteq> insert U A" "finite X" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1801 |
with A(2)[THEN spec, of "X - {U}"] have "U \<inter> \<Inter>(X - {U}) \<noteq> {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1802 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1803 |
with X show "(INF a\<in>X. principal a) \<noteq> bot" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1804 |
by (auto simp: INF_principal_finite principal_eq_bot_iff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1805 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1806 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1807 |
have "F \<le> principal U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1808 |
unfolding F_def by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1809 |
then have "eventually (\<lambda>x. x \<in> U) F" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1810 |
by (auto simp: le_filter_def eventually_principal) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1811 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1812 |
assume "\<forall>F. F \<noteq> bot \<longrightarrow> eventually (\<lambda>x. x \<in> U) F \<longrightarrow> (\<exists>x\<in>U. inf (nhds x) F \<noteq> bot)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1813 |
ultimately obtain x where "x \<in> U" and x: "inf (nhds x) F \<noteq> bot" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1814 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1815 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1816 |
{ fix V assume "V \<in> A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1817 |
then have "F \<le> principal V" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1818 |
unfolding F_def by (intro INF_lower2[of V]) auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1819 |
then have V: "eventually (\<lambda>x. x \<in> V) F" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1820 |
by (auto simp: le_filter_def eventually_principal) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1821 |
have "x \<in> closure V" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1822 |
unfolding closure_iff_nhds_not_empty |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1823 |
proof (intro impI allI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1824 |
fix S A |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1825 |
assume "open S" "x \<in> S" "S \<subseteq> A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1826 |
then have "eventually (\<lambda>x. x \<in> A) (nhds x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1827 |
by (auto simp: eventually_nhds) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1828 |
with V have "eventually (\<lambda>x. x \<in> V \<inter> A) (inf (nhds x) F)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1829 |
by (auto simp: eventually_inf) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1830 |
with x show "V \<inter> A \<noteq> {}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1831 |
by (auto simp del: Int_iff simp add: trivial_limit_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1832 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1833 |
then have "x \<in> V" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1834 |
using \<open>V \<in> A\<close> A(1) by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1835 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1836 |
with \<open>x\<in>U\<close> have "x \<in> U \<inter> \<Inter>A" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1837 |
with \<open>U \<inter> \<Inter>A = {}\<close> show False by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1838 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1839 |
|
69564 | 1840 |
definition%important countably_compact :: "('a::topological_space) set \<Rightarrow> bool" where |
1841 |
"countably_compact U \<longleftrightarrow> |
|
1842 |
(\<forall>A. countable A \<longrightarrow> (\<forall>a\<in>A. open a) \<longrightarrow> U \<subseteq> \<Union>A |
|
1843 |
\<longrightarrow> (\<exists>T\<subseteq>A. finite T \<and> U \<subseteq> \<Union>T))" |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1844 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1845 |
lemma countably_compactE: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1846 |
assumes "countably_compact s" and "\<forall>t\<in>C. open t" and "s \<subseteq> \<Union>C" "countable C" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1847 |
obtains C' where "C' \<subseteq> C" and "finite C'" and "s \<subseteq> \<Union>C'" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1848 |
using assms unfolding countably_compact_def by metis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1849 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1850 |
lemma countably_compactI: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1851 |
assumes "\<And>C. \<forall>t\<in>C. open t \<Longrightarrow> s \<subseteq> \<Union>C \<Longrightarrow> countable C \<Longrightarrow> (\<exists>C'\<subseteq>C. finite C' \<and> s \<subseteq> \<Union>C')" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1852 |
shows "countably_compact s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1853 |
using assms unfolding countably_compact_def by metis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1854 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1855 |
lemma compact_imp_countably_compact: "compact U \<Longrightarrow> countably_compact U" |
69529 | 1856 |
by (auto simp: compact_eq_Heine_Borel countably_compact_def) |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1857 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1858 |
lemma countably_compact_imp_compact: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1859 |
assumes "countably_compact U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1860 |
and ccover: "countable B" "\<forall>b\<in>B. open b" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1861 |
and basis: "\<And>T x. open T \<Longrightarrow> x \<in> T \<Longrightarrow> x \<in> U \<Longrightarrow> \<exists>b\<in>B. x \<in> b \<and> b \<inter> U \<subseteq> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1862 |
shows "compact U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1863 |
using \<open>countably_compact U\<close> |
69529 | 1864 |
unfolding compact_eq_Heine_Borel countably_compact_def |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1865 |
proof safe |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1866 |
fix A |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1867 |
assume A: "\<forall>a\<in>A. open a" "U \<subseteq> \<Union>A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1868 |
assume *: "\<forall>A. countable A \<longrightarrow> (\<forall>a\<in>A. open a) \<longrightarrow> U \<subseteq> \<Union>A \<longrightarrow> (\<exists>T\<subseteq>A. finite T \<and> U \<subseteq> \<Union>T)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1869 |
moreover define C where "C = {b\<in>B. \<exists>a\<in>A. b \<inter> U \<subseteq> a}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1870 |
ultimately have "countable C" "\<forall>a\<in>C. open a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1871 |
unfolding C_def using ccover by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1872 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1873 |
have "\<Union>A \<inter> U \<subseteq> \<Union>C" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1874 |
proof safe |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1875 |
fix x a |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1876 |
assume "x \<in> U" "x \<in> a" "a \<in> A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1877 |
with basis[of a x] A obtain b where "b \<in> B" "x \<in> b" "b \<inter> U \<subseteq> a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1878 |
by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1879 |
with \<open>a \<in> A\<close> show "x \<in> \<Union>C" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1880 |
unfolding C_def by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1881 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1882 |
then have "U \<subseteq> \<Union>C" using \<open>U \<subseteq> \<Union>A\<close> by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1883 |
ultimately obtain T where T: "T\<subseteq>C" "finite T" "U \<subseteq> \<Union>T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1884 |
using * by metis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1885 |
then have "\<forall>t\<in>T. \<exists>a\<in>A. t \<inter> U \<subseteq> a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1886 |
by (auto simp: C_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1887 |
then obtain f where "\<forall>t\<in>T. f t \<in> A \<and> t \<inter> U \<subseteq> f t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1888 |
unfolding bchoice_iff Bex_def .. |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1889 |
with T show "\<exists>T\<subseteq>A. finite T \<and> U \<subseteq> \<Union>T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1890 |
unfolding C_def by (intro exI[of _ "f`T"]) fastforce |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1891 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1892 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1893 |
proposition countably_compact_imp_compact_second_countable: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1894 |
"countably_compact U \<Longrightarrow> compact (U :: 'a :: second_countable_topology set)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1895 |
proof (rule countably_compact_imp_compact) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1896 |
fix T and x :: 'a |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1897 |
assume "open T" "x \<in> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1898 |
from topological_basisE[OF is_basis this] obtain b where |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1899 |
"b \<in> (SOME B. countable B \<and> topological_basis B)" "x \<in> b" "b \<subseteq> T" . |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1900 |
then show "\<exists>b\<in>SOME B. countable B \<and> topological_basis B. x \<in> b \<and> b \<inter> U \<subseteq> T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1901 |
by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1902 |
qed (insert countable_basis topological_basis_open[OF is_basis], auto) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1903 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1904 |
lemma countably_compact_eq_compact: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1905 |
"countably_compact U \<longleftrightarrow> compact (U :: 'a :: second_countable_topology set)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1906 |
using countably_compact_imp_compact_second_countable compact_imp_countably_compact by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1907 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1908 |
subsubsection\<open>Sequential compactness\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1909 |
|
69564 | 1910 |
definition%important seq_compact :: "'a::topological_space set \<Rightarrow> bool" where |
1911 |
"seq_compact S \<longleftrightarrow> |
|
1912 |
(\<forall>f. (\<forall>n. f n \<in> S) |
|
1913 |
\<longrightarrow> (\<exists>l\<in>S. \<exists>r::nat\<Rightarrow>nat. strict_mono r \<and> ((f \<circ> r) \<longlongrightarrow> l) sequentially))" |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1914 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1915 |
lemma seq_compactI: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1916 |
assumes "\<And>f. \<forall>n. f n \<in> S \<Longrightarrow> \<exists>l\<in>S. \<exists>r::nat\<Rightarrow>nat. strict_mono r \<and> ((f \<circ> r) \<longlongrightarrow> l) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1917 |
shows "seq_compact S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1918 |
unfolding seq_compact_def using assms by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1919 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1920 |
lemma seq_compactE: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1921 |
assumes "seq_compact S" "\<forall>n. f n \<in> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1922 |
obtains l r where "l \<in> S" "strict_mono (r :: nat \<Rightarrow> nat)" "((f \<circ> r) \<longlongrightarrow> l) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1923 |
using assms unfolding seq_compact_def by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1924 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1925 |
lemma closed_sequentially: (* TODO: move upwards *) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1926 |
assumes "closed s" and "\<forall>n. f n \<in> s" and "f \<longlonglongrightarrow> l" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1927 |
shows "l \<in> s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1928 |
proof (rule ccontr) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1929 |
assume "l \<notin> s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1930 |
with \<open>closed s\<close> and \<open>f \<longlonglongrightarrow> l\<close> have "eventually (\<lambda>n. f n \<in> - s) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1931 |
by (fast intro: topological_tendstoD) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1932 |
with \<open>\<forall>n. f n \<in> s\<close> show "False" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1933 |
by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1934 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1935 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1936 |
lemma seq_compact_Int_closed: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1937 |
assumes "seq_compact s" and "closed t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1938 |
shows "seq_compact (s \<inter> t)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1939 |
proof (rule seq_compactI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1940 |
fix f assume "\<forall>n::nat. f n \<in> s \<inter> t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1941 |
hence "\<forall>n. f n \<in> s" and "\<forall>n. f n \<in> t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1942 |
by simp_all |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1943 |
from \<open>seq_compact s\<close> and \<open>\<forall>n. f n \<in> s\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1944 |
obtain l r where "l \<in> s" and r: "strict_mono r" and l: "(f \<circ> r) \<longlonglongrightarrow> l" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1945 |
by (rule seq_compactE) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1946 |
from \<open>\<forall>n. f n \<in> t\<close> have "\<forall>n. (f \<circ> r) n \<in> t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1947 |
by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1948 |
from \<open>closed t\<close> and this and l have "l \<in> t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1949 |
by (rule closed_sequentially) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1950 |
with \<open>l \<in> s\<close> and r and l show "\<exists>l\<in>s \<inter> t. \<exists>r. strict_mono r \<and> (f \<circ> r) \<longlonglongrightarrow> l" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1951 |
by fast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1952 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1953 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1954 |
lemma seq_compact_closed_subset: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1955 |
assumes "closed s" and "s \<subseteq> t" and "seq_compact t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1956 |
shows "seq_compact s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1957 |
using assms seq_compact_Int_closed [of t s] by (simp add: Int_absorb1) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1958 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1959 |
lemma seq_compact_imp_countably_compact: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1960 |
fixes U :: "'a :: first_countable_topology set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1961 |
assumes "seq_compact U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1962 |
shows "countably_compact U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1963 |
proof (safe intro!: countably_compactI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1964 |
fix A |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1965 |
assume A: "\<forall>a\<in>A. open a" "U \<subseteq> \<Union>A" "countable A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1966 |
have subseq: "\<And>X. range X \<subseteq> U \<Longrightarrow> \<exists>r x. x \<in> U \<and> strict_mono (r :: nat \<Rightarrow> nat) \<and> (X \<circ> r) \<longlonglongrightarrow> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1967 |
using \<open>seq_compact U\<close> by (fastforce simp: seq_compact_def subset_eq) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1968 |
show "\<exists>T\<subseteq>A. finite T \<and> U \<subseteq> \<Union>T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1969 |
proof cases |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1970 |
assume "finite A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1971 |
with A show ?thesis by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1972 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1973 |
assume "infinite A" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1974 |
then have "A \<noteq> {}" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1975 |
show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1976 |
proof (rule ccontr) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1977 |
assume "\<not> (\<exists>T\<subseteq>A. finite T \<and> U \<subseteq> \<Union>T)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1978 |
then have "\<forall>T. \<exists>x. T \<subseteq> A \<and> finite T \<longrightarrow> (x \<in> U - \<Union>T)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1979 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1980 |
then obtain X' where T: "\<And>T. T \<subseteq> A \<Longrightarrow> finite T \<Longrightarrow> X' T \<in> U - \<Union>T" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1981 |
by metis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1982 |
define X where "X n = X' (from_nat_into A ` {.. n})" for n |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1983 |
have X: "\<And>n. X n \<in> U - (\<Union>i\<le>n. from_nat_into A i)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1984 |
using \<open>A \<noteq> {}\<close> unfolding X_def by (intro T) (auto intro: from_nat_into) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1985 |
then have "range X \<subseteq> U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1986 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1987 |
with subseq[of X] obtain r x where "x \<in> U" and r: "strict_mono r" "(X \<circ> r) \<longlonglongrightarrow> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1988 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1989 |
from \<open>x\<in>U\<close> \<open>U \<subseteq> \<Union>A\<close> from_nat_into_surj[OF \<open>countable A\<close>] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1990 |
obtain n where "x \<in> from_nat_into A n" by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1991 |
with r(2) A(1) from_nat_into[OF \<open>A \<noteq> {}\<close>, of n] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1992 |
have "eventually (\<lambda>i. X (r i) \<in> from_nat_into A n) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1993 |
unfolding tendsto_def by (auto simp: comp_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1994 |
then obtain N where "\<And>i. N \<le> i \<Longrightarrow> X (r i) \<in> from_nat_into A n" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1995 |
by (auto simp: eventually_sequentially) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1996 |
moreover from X have "\<And>i. n \<le> r i \<Longrightarrow> X (r i) \<notin> from_nat_into A n" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1997 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1998 |
moreover from \<open>strict_mono r\<close>[THEN seq_suble, of "max n N"] have "\<exists>i. n \<le> r i \<and> N \<le> i" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
1999 |
by (auto intro!: exI[of _ "max n N"]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2000 |
ultimately show False |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2001 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2002 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2003 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2004 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2005 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2006 |
lemma compact_imp_seq_compact: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2007 |
fixes U :: "'a :: first_countable_topology set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2008 |
assumes "compact U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2009 |
shows "seq_compact U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2010 |
unfolding seq_compact_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2011 |
proof safe |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2012 |
fix X :: "nat \<Rightarrow> 'a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2013 |
assume "\<forall>n. X n \<in> U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2014 |
then have "eventually (\<lambda>x. x \<in> U) (filtermap X sequentially)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2015 |
by (auto simp: eventually_filtermap) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2016 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2017 |
have "filtermap X sequentially \<noteq> bot" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2018 |
by (simp add: trivial_limit_def eventually_filtermap) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2019 |
ultimately |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2020 |
obtain x where "x \<in> U" and x: "inf (nhds x) (filtermap X sequentially) \<noteq> bot" (is "?F \<noteq> _") |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2021 |
using \<open>compact U\<close> by (auto simp: compact_filter) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2022 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2023 |
from countable_basis_at_decseq[of x] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2024 |
obtain A where A: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2025 |
"\<And>i. open (A i)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2026 |
"\<And>i. x \<in> A i" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2027 |
"\<And>S. open S \<Longrightarrow> x \<in> S \<Longrightarrow> eventually (\<lambda>i. A i \<subseteq> S) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2028 |
by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2029 |
define s where "s n i = (SOME j. i < j \<and> X j \<in> A (Suc n))" for n i |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2030 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2031 |
fix n i |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2032 |
have "\<exists>a. i < a \<and> X a \<in> A (Suc n)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2033 |
proof (rule ccontr) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2034 |
assume "\<not> (\<exists>a>i. X a \<in> A (Suc n))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2035 |
then have "\<And>a. Suc i \<le> a \<Longrightarrow> X a \<notin> A (Suc n)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2036 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2037 |
then have "eventually (\<lambda>x. x \<notin> A (Suc n)) (filtermap X sequentially)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2038 |
by (auto simp: eventually_filtermap eventually_sequentially) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2039 |
moreover have "eventually (\<lambda>x. x \<in> A (Suc n)) (nhds x)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2040 |
using A(1,2)[of "Suc n"] by (auto simp: eventually_nhds) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2041 |
ultimately have "eventually (\<lambda>x. False) ?F" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2042 |
by (auto simp: eventually_inf) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2043 |
with x show False |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2044 |
by (simp add: eventually_False) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2045 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2046 |
then have "i < s n i" "X (s n i) \<in> A (Suc n)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2047 |
unfolding s_def by (auto intro: someI2_ex) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2048 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2049 |
note s = this |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2050 |
define r where "r = rec_nat (s 0 0) s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2051 |
have "strict_mono r" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2052 |
by (auto simp: r_def s strict_mono_Suc_iff) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2053 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2054 |
have "(\<lambda>n. X (r n)) \<longlonglongrightarrow> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2055 |
proof (rule topological_tendstoI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2056 |
fix S |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2057 |
assume "open S" "x \<in> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2058 |
with A(3) have "eventually (\<lambda>i. A i \<subseteq> S) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2059 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2060 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2061 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2062 |
fix i |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2063 |
assume "Suc 0 \<le> i" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2064 |
then have "X (r i) \<in> A i" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2065 |
by (cases i) (simp_all add: r_def s) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2066 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2067 |
then have "eventually (\<lambda>i. X (r i) \<in> A i) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2068 |
by (auto simp: eventually_sequentially) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2069 |
ultimately show "eventually (\<lambda>i. X (r i) \<in> S) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2070 |
by eventually_elim auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2071 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2072 |
ultimately show "\<exists>x \<in> U. \<exists>r. strict_mono r \<and> (X \<circ> r) \<longlonglongrightarrow> x" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2073 |
using \<open>x \<in> U\<close> by (auto simp: convergent_def comp_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2074 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2075 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2076 |
lemma countably_compact_imp_acc_point: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2077 |
assumes "countably_compact s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2078 |
and "countable t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2079 |
and "infinite t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2080 |
and "t \<subseteq> s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2081 |
shows "\<exists>x\<in>s. \<forall>U. x\<in>U \<and> open U \<longrightarrow> infinite (U \<inter> t)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2082 |
proof (rule ccontr) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2083 |
define C where "C = (\<lambda>F. interior (F \<union> (- t))) ` {F. finite F \<and> F \<subseteq> t }" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2084 |
note \<open>countably_compact s\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2085 |
moreover have "\<forall>t\<in>C. open t" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2086 |
by (auto simp: C_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2087 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2088 |
assume "\<not> (\<exists>x\<in>s. \<forall>U. x\<in>U \<and> open U \<longrightarrow> infinite (U \<inter> t))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2089 |
then have s: "\<And>x. x \<in> s \<Longrightarrow> \<exists>U. x\<in>U \<and> open U \<and> finite (U \<inter> t)" by metis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2090 |
have "s \<subseteq> \<Union>C" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2091 |
using \<open>t \<subseteq> s\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2092 |
unfolding C_def |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2093 |
apply (safe dest!: s) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2094 |
apply (rule_tac a="U \<inter> t" in UN_I) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2095 |
apply (auto intro!: interiorI simp add: finite_subset) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2096 |
done |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2097 |
moreover |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2098 |
from \<open>countable t\<close> have "countable C" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2099 |
unfolding C_def by (auto intro: countable_Collect_finite_subset) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2100 |
ultimately |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2101 |
obtain D where "D \<subseteq> C" "finite D" "s \<subseteq> \<Union>D" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2102 |
by (rule countably_compactE) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2103 |
then obtain E where E: "E \<subseteq> {F. finite F \<and> F \<subseteq> t }" "finite E" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2104 |
and s: "s \<subseteq> (\<Union>F\<in>E. interior (F \<union> (- t)))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2105 |
by (metis (lifting) finite_subset_image C_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2106 |
from s \<open>t \<subseteq> s\<close> have "t \<subseteq> \<Union>E" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2107 |
using interior_subset by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2108 |
moreover have "finite (\<Union>E)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2109 |
using E by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2110 |
ultimately show False using \<open>infinite t\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2111 |
by (auto simp: finite_subset) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2112 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2113 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2114 |
lemma countable_acc_point_imp_seq_compact: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2115 |
fixes s :: "'a::first_countable_topology set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2116 |
assumes "\<forall>t. infinite t \<and> countable t \<and> t \<subseteq> s \<longrightarrow> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2117 |
(\<exists>x\<in>s. \<forall>U. x\<in>U \<and> open U \<longrightarrow> infinite (U \<inter> t))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2118 |
shows "seq_compact s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2119 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2120 |
{ |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2121 |
fix f :: "nat \<Rightarrow> 'a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2122 |
assume f: "\<forall>n. f n \<in> s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2123 |
have "\<exists>l\<in>s. \<exists>r. strict_mono r \<and> ((f \<circ> r) \<longlongrightarrow> l) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2124 |
proof (cases "finite (range f)") |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2125 |
case True |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2126 |
obtain l where "infinite {n. f n = f l}" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2127 |
using pigeonhole_infinite[OF _ True] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2128 |
then obtain r :: "nat \<Rightarrow> nat" where "strict_mono r" and fr: "\<forall>n. f (r n) = f l" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2129 |
using infinite_enumerate by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2130 |
then have "strict_mono r \<and> (f \<circ> r) \<longlonglongrightarrow> f l" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2131 |
by (simp add: fr o_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2132 |
with f show "\<exists>l\<in>s. \<exists>r. strict_mono r \<and> (f \<circ> r) \<longlonglongrightarrow> l" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2133 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2134 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2135 |
case False |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2136 |
with f assms have "\<exists>x\<in>s. \<forall>U. x\<in>U \<and> open U \<longrightarrow> infinite (U \<inter> range f)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2137 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2138 |
then obtain l where "l \<in> s" "\<forall>U. l\<in>U \<and> open U \<longrightarrow> infinite (U \<inter> range f)" .. |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2139 |
from this(2) have "\<exists>r. strict_mono r \<and> ((f \<circ> r) \<longlongrightarrow> l) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2140 |
using acc_point_range_imp_convergent_subsequence[of l f] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2141 |
with \<open>l \<in> s\<close> show "\<exists>l\<in>s. \<exists>r. strict_mono r \<and> ((f \<circ> r) \<longlongrightarrow> l) sequentially" .. |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2142 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2143 |
} |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2144 |
then show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2145 |
unfolding seq_compact_def by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2146 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2147 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2148 |
lemma seq_compact_eq_countably_compact: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2149 |
fixes U :: "'a :: first_countable_topology set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2150 |
shows "seq_compact U \<longleftrightarrow> countably_compact U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2151 |
using |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2152 |
countable_acc_point_imp_seq_compact |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2153 |
countably_compact_imp_acc_point |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2154 |
seq_compact_imp_countably_compact |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2155 |
by metis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2156 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2157 |
lemma seq_compact_eq_acc_point: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2158 |
fixes s :: "'a :: first_countable_topology set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2159 |
shows "seq_compact s \<longleftrightarrow> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2160 |
(\<forall>t. infinite t \<and> countable t \<and> t \<subseteq> s --> (\<exists>x\<in>s. \<forall>U. x\<in>U \<and> open U \<longrightarrow> infinite (U \<inter> t)))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2161 |
using |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2162 |
countable_acc_point_imp_seq_compact[of s] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2163 |
countably_compact_imp_acc_point[of s] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2164 |
seq_compact_imp_countably_compact[of s] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2165 |
by metis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2166 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2167 |
lemma seq_compact_eq_compact: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2168 |
fixes U :: "'a :: second_countable_topology set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2169 |
shows "seq_compact U \<longleftrightarrow> compact U" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2170 |
using seq_compact_eq_countably_compact countably_compact_eq_compact by blast |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2171 |
|
69529 | 2172 |
proposition Bolzano_Weierstrass_imp_seq_compact: |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2173 |
fixes s :: "'a::{t1_space, first_countable_topology} set" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2174 |
shows "\<forall>t. infinite t \<and> t \<subseteq> s \<longrightarrow> (\<exists>x \<in> s. x islimpt t) \<Longrightarrow> seq_compact s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2175 |
by (rule countable_acc_point_imp_seq_compact) (metis islimpt_eq_acc_point) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2176 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2177 |
|
69613
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2178 |
subsection%unimportant \<open>Cartesian products\<close> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2179 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2180 |
lemma seq_compact_Times: "seq_compact s \<Longrightarrow> seq_compact t \<Longrightarrow> seq_compact (s \<times> t)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2181 |
unfolding seq_compact_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2182 |
apply clarify |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2183 |
apply (drule_tac x="fst \<circ> f" in spec) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2184 |
apply (drule mp, simp add: mem_Times_iff) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2185 |
apply (clarify, rename_tac l1 r1) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2186 |
apply (drule_tac x="snd \<circ> f \<circ> r1" in spec) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2187 |
apply (drule mp, simp add: mem_Times_iff) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2188 |
apply (clarify, rename_tac l2 r2) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2189 |
apply (rule_tac x="(l1, l2)" in rev_bexI, simp) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2190 |
apply (rule_tac x="r1 \<circ> r2" in exI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2191 |
apply (rule conjI, simp add: strict_mono_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2192 |
apply (drule_tac f=r2 in LIMSEQ_subseq_LIMSEQ, assumption) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2193 |
apply (drule (1) tendsto_Pair) back |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2194 |
apply (simp add: o_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2195 |
done |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2196 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2197 |
lemma compact_Times: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2198 |
assumes "compact s" "compact t" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2199 |
shows "compact (s \<times> t)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2200 |
proof (rule compactI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2201 |
fix C |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2202 |
assume C: "\<forall>t\<in>C. open t" "s \<times> t \<subseteq> \<Union>C" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2203 |
have "\<forall>x\<in>s. \<exists>a. open a \<and> x \<in> a \<and> (\<exists>d\<subseteq>C. finite d \<and> a \<times> t \<subseteq> \<Union>d)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2204 |
proof |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2205 |
fix x |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2206 |
assume "x \<in> s" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2207 |
have "\<forall>y\<in>t. \<exists>a b c. c \<in> C \<and> open a \<and> open b \<and> x \<in> a \<and> y \<in> b \<and> a \<times> b \<subseteq> c" (is "\<forall>y\<in>t. ?P y") |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2208 |
proof |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2209 |
fix y |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2210 |
assume "y \<in> t" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2211 |
with \<open>x \<in> s\<close> C obtain c where "c \<in> C" "(x, y) \<in> c" "open c" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2212 |
then show "?P y" by (auto elim!: open_prod_elim) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2213 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2214 |
then obtain a b c where b: "\<And>y. y \<in> t \<Longrightarrow> open (b y)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2215 |
and c: "\<And>y. y \<in> t \<Longrightarrow> c y \<in> C \<and> open (a y) \<and> open (b y) \<and> x \<in> a y \<and> y \<in> b y \<and> a y \<times> b y \<subseteq> c y" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2216 |
by metis |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2217 |
then have "\<forall>y\<in>t. open (b y)" "t \<subseteq> (\<Union>y\<in>t. b y)" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2218 |
with compactE_image[OF \<open>compact t\<close>] obtain D where D: "D \<subseteq> t" "finite D" "t \<subseteq> (\<Union>y\<in>D. b y)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2219 |
by metis |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2220 |
moreover from D c have "(\<Inter>y\<in>D. a y) \<times> t \<subseteq> (\<Union>y\<in>D. c y)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2221 |
by (fastforce simp: subset_eq) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2222 |
ultimately show "\<exists>a. open a \<and> x \<in> a \<and> (\<exists>d\<subseteq>C. finite d \<and> a \<times> t \<subseteq> \<Union>d)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2223 |
using c by (intro exI[of _ "c`D"] exI[of _ "\<Inter>(a`D)"] conjI) (auto intro!: open_INT) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2224 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2225 |
then obtain a d where a: "\<And>x. x\<in>s \<Longrightarrow> open (a x)" "s \<subseteq> (\<Union>x\<in>s. a x)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2226 |
and d: "\<And>x. x \<in> s \<Longrightarrow> d x \<subseteq> C \<and> finite (d x) \<and> a x \<times> t \<subseteq> \<Union>d x" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2227 |
unfolding subset_eq UN_iff by metis |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2228 |
moreover |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2229 |
from compactE_image[OF \<open>compact s\<close> a] |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2230 |
obtain e where e: "e \<subseteq> s" "finite e" and s: "s \<subseteq> (\<Union>x\<in>e. a x)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2231 |
by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2232 |
moreover |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2233 |
{ |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2234 |
from s have "s \<times> t \<subseteq> (\<Union>x\<in>e. a x \<times> t)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2235 |
by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2236 |
also have "\<dots> \<subseteq> (\<Union>x\<in>e. \<Union>d x)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2237 |
using d \<open>e \<subseteq> s\<close> by (intro UN_mono) auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2238 |
finally have "s \<times> t \<subseteq> (\<Union>x\<in>e. \<Union>d x)" . |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2239 |
} |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2240 |
ultimately show "\<exists>C'\<subseteq>C. finite C' \<and> s \<times> t \<subseteq> \<Union>C'" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2241 |
by (intro exI[of _ "(\<Union>x\<in>e. d x)"]) (auto simp: subset_eq) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2242 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2243 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2244 |
|
69615
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2245 |
lemma tube_lemma: |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2246 |
assumes "compact K" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2247 |
assumes "open W" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2248 |
assumes "{x0} \<times> K \<subseteq> W" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2249 |
shows "\<exists>X0. x0 \<in> X0 \<and> open X0 \<and> X0 \<times> K \<subseteq> W" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2250 |
proof - |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2251 |
{ |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2252 |
fix y assume "y \<in> K" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2253 |
then have "(x0, y) \<in> W" using assms by auto |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2254 |
with \<open>open W\<close> |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2255 |
have "\<exists>X0 Y. open X0 \<and> open Y \<and> x0 \<in> X0 \<and> y \<in> Y \<and> X0 \<times> Y \<subseteq> W" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2256 |
by (rule open_prod_elim) blast |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2257 |
} |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2258 |
then obtain X0 Y where |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2259 |
*: "\<forall>y \<in> K. open (X0 y) \<and> open (Y y) \<and> x0 \<in> X0 y \<and> y \<in> Y y \<and> X0 y \<times> Y y \<subseteq> W" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2260 |
by metis |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2261 |
from * have "\<forall>t\<in>Y ` K. open t" "K \<subseteq> \<Union>(Y ` K)" by auto |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2262 |
with \<open>compact K\<close> obtain CC where CC: "CC \<subseteq> Y ` K" "finite CC" "K \<subseteq> \<Union>CC" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2263 |
by (meson compactE) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2264 |
then obtain c where c: "\<And>C. C \<in> CC \<Longrightarrow> c C \<in> K \<and> C = Y (c C)" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2265 |
by (force intro!: choice) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2266 |
with * CC show ?thesis |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2267 |
by (force intro!: exI[where x="\<Inter>C\<in>CC. X0 (c C)"]) (* SLOW *) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2268 |
qed |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2269 |
|
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2270 |
lemma continuous_on_prod_compactE: |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2271 |
fixes fx::"'a::topological_space \<times> 'b::topological_space \<Rightarrow> 'c::metric_space" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2272 |
and e::real |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2273 |
assumes cont_fx: "continuous_on (U \<times> C) fx" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2274 |
assumes "compact C" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2275 |
assumes [intro]: "x0 \<in> U" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2276 |
notes [continuous_intros] = continuous_on_compose2[OF cont_fx] |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2277 |
assumes "e > 0" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2278 |
obtains X0 where "x0 \<in> X0" "open X0" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2279 |
"\<forall>x\<in>X0 \<inter> U. \<forall>t \<in> C. dist (fx (x, t)) (fx (x0, t)) \<le> e" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2280 |
proof - |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2281 |
define psi where "psi = (\<lambda>(x, t). dist (fx (x, t)) (fx (x0, t)))" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2282 |
define W0 where "W0 = {(x, t) \<in> U \<times> C. psi (x, t) < e}" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2283 |
have W0_eq: "W0 = psi -` {..<e} \<inter> U \<times> C" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2284 |
by (auto simp: vimage_def W0_def) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2285 |
have "open {..<e}" by simp |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2286 |
have "continuous_on (U \<times> C) psi" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2287 |
by (auto intro!: continuous_intros simp: psi_def split_beta') |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2288 |
from this[unfolded continuous_on_open_invariant, rule_format, OF \<open>open {..<e}\<close>] |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2289 |
obtain W where W: "open W" "W \<inter> U \<times> C = W0 \<inter> U \<times> C" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2290 |
unfolding W0_eq by blast |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2291 |
have "{x0} \<times> C \<subseteq> W \<inter> U \<times> C" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2292 |
unfolding W |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2293 |
by (auto simp: W0_def psi_def \<open>0 < e\<close>) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2294 |
then have "{x0} \<times> C \<subseteq> W" by blast |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2295 |
from tube_lemma[OF \<open>compact C\<close> \<open>open W\<close> this] |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2296 |
obtain X0 where X0: "x0 \<in> X0" "open X0" "X0 \<times> C \<subseteq> W" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2297 |
by blast |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2298 |
|
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2299 |
have "\<forall>x\<in>X0 \<inter> U. \<forall>t \<in> C. dist (fx (x, t)) (fx (x0, t)) \<le> e" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2300 |
proof safe |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2301 |
fix x assume x: "x \<in> X0" "x \<in> U" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2302 |
fix t assume t: "t \<in> C" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2303 |
have "dist (fx (x, t)) (fx (x0, t)) = psi (x, t)" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2304 |
by (auto simp: psi_def) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2305 |
also |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2306 |
{ |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2307 |
have "(x, t) \<in> X0 \<times> C" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2308 |
using t x |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2309 |
by auto |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2310 |
also note \<open>\<dots> \<subseteq> W\<close> |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2311 |
finally have "(x, t) \<in> W" . |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2312 |
with t x have "(x, t) \<in> W \<inter> U \<times> C" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2313 |
by blast |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2314 |
also note \<open>W \<inter> U \<times> C = W0 \<inter> U \<times> C\<close> |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2315 |
finally have "psi (x, t) < e" |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2316 |
by (auto simp: W0_def) |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2317 |
} |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2318 |
finally show "dist (fx (x, t)) (fx (x0, t)) \<le> e" by simp |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2319 |
qed |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2320 |
from X0(1,2) this show ?thesis .. |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2321 |
qed |
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2322 |
|
e502cd4d7062
moved material from Connected.thy to more appropriate places
immler
parents:
69613
diff
changeset
|
2323 |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2324 |
subsection \<open>Continuity\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2325 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2326 |
lemma continuous_at_imp_continuous_within: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2327 |
"continuous (at x) f \<Longrightarrow> continuous (at x within s) f" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2328 |
unfolding continuous_within continuous_at using Lim_at_imp_Lim_at_within by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2329 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2330 |
lemma Lim_trivial_limit: "trivial_limit net \<Longrightarrow> (f \<longlongrightarrow> l) net" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2331 |
by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2332 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2333 |
lemmas continuous_on = continuous_on_def \<comment> \<open>legacy theorem name\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2334 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2335 |
lemma continuous_within_subset: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2336 |
"continuous (at x within s) f \<Longrightarrow> t \<subseteq> s \<Longrightarrow> continuous (at x within t) f" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2337 |
unfolding continuous_within by(metis tendsto_within_subset) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2338 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2339 |
lemma continuous_on_interior: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2340 |
"continuous_on s f \<Longrightarrow> x \<in> interior s \<Longrightarrow> continuous (at x) f" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2341 |
by (metis continuous_on_eq_continuous_at continuous_on_subset interiorE) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2342 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2343 |
lemma continuous_on_eq: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2344 |
"\<lbrakk>continuous_on s f; \<And>x. x \<in> s \<Longrightarrow> f x = g x\<rbrakk> \<Longrightarrow> continuous_on s g" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2345 |
unfolding continuous_on_def tendsto_def eventually_at_topological |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2346 |
by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2347 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2348 |
text \<open>Characterization of various kinds of continuity in terms of sequences.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2349 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2350 |
lemma continuous_within_sequentiallyI: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2351 |
fixes f :: "'a::{first_countable_topology, t2_space} \<Rightarrow> 'b::topological_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2352 |
assumes "\<And>u::nat \<Rightarrow> 'a. u \<longlonglongrightarrow> a \<Longrightarrow> (\<forall>n. u n \<in> s) \<Longrightarrow> (\<lambda>n. f (u n)) \<longlonglongrightarrow> f a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2353 |
shows "continuous (at a within s) f" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2354 |
using assms unfolding continuous_within tendsto_def[where l = "f a"] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2355 |
by (auto intro!: sequentially_imp_eventually_within) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2356 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2357 |
lemma continuous_within_tendsto_compose: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2358 |
fixes f::"'a::t2_space \<Rightarrow> 'b::topological_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2359 |
assumes "continuous (at a within s) f" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2360 |
"eventually (\<lambda>n. x n \<in> s) F" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2361 |
"(x \<longlongrightarrow> a) F " |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2362 |
shows "((\<lambda>n. f (x n)) \<longlongrightarrow> f a) F" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2363 |
proof - |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2364 |
have *: "filterlim x (inf (nhds a) (principal s)) F" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2365 |
using assms(2) assms(3) unfolding at_within_def filterlim_inf by (auto simp: filterlim_principal eventually_mono) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2366 |
show ?thesis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2367 |
by (auto simp: assms(1) continuous_within[symmetric] tendsto_at_within_iff_tendsto_nhds[symmetric] intro!: filterlim_compose[OF _ *]) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2368 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2369 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2370 |
lemma continuous_within_tendsto_compose': |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2371 |
fixes f::"'a::t2_space \<Rightarrow> 'b::topological_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2372 |
assumes "continuous (at a within s) f" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2373 |
"\<And>n. x n \<in> s" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2374 |
"(x \<longlongrightarrow> a) F " |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2375 |
shows "((\<lambda>n. f (x n)) \<longlongrightarrow> f a) F" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2376 |
by (auto intro!: continuous_within_tendsto_compose[OF assms(1)] simp add: assms) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2377 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2378 |
lemma continuous_within_sequentially: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2379 |
fixes f :: "'a::{first_countable_topology, t2_space} \<Rightarrow> 'b::topological_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2380 |
shows "continuous (at a within s) f \<longleftrightarrow> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2381 |
(\<forall>x. (\<forall>n::nat. x n \<in> s) \<and> (x \<longlongrightarrow> a) sequentially |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2382 |
\<longrightarrow> ((f \<circ> x) \<longlongrightarrow> f a) sequentially)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2383 |
using continuous_within_tendsto_compose'[of a s f _ sequentially] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2384 |
continuous_within_sequentiallyI[of a s f] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2385 |
by (auto simp: o_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2386 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2387 |
lemma continuous_at_sequentiallyI: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2388 |
fixes f :: "'a::{first_countable_topology, t2_space} \<Rightarrow> 'b::topological_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2389 |
assumes "\<And>u. u \<longlonglongrightarrow> a \<Longrightarrow> (\<lambda>n. f (u n)) \<longlonglongrightarrow> f a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2390 |
shows "continuous (at a) f" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2391 |
using continuous_within_sequentiallyI[of a UNIV f] assms by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2392 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2393 |
lemma continuous_at_sequentially: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2394 |
fixes f :: "'a::metric_space \<Rightarrow> 'b::topological_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2395 |
shows "continuous (at a) f \<longleftrightarrow> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2396 |
(\<forall>x. (x \<longlongrightarrow> a) sequentially --> ((f \<circ> x) \<longlongrightarrow> f a) sequentially)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2397 |
using continuous_within_sequentially[of a UNIV f] by simp |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2398 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2399 |
lemma continuous_on_sequentiallyI: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2400 |
fixes f :: "'a::{first_countable_topology, t2_space} \<Rightarrow> 'b::topological_space" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2401 |
assumes "\<And>u a. (\<forall>n. u n \<in> s) \<Longrightarrow> a \<in> s \<Longrightarrow> u \<longlonglongrightarrow> a \<Longrightarrow> (\<lambda>n. f (u n)) \<longlonglongrightarrow> f a" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2402 |
shows "continuous_on s f" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2403 |
using assms unfolding continuous_on_eq_continuous_within |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2404 |
using continuous_within_sequentiallyI[of _ s f] by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2405 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2406 |
lemma continuous_on_sequentially: |
69544
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
immler
parents:
69529
diff
changeset
|
2407 |
fixes f :: "'a::{first_countable_topology, t2_space} \<Rightarrow> 'b::topological_space" |
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2408 |
shows "continuous_on s f \<longleftrightarrow> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2409 |
(\<forall>x. \<forall>a \<in> s. (\<forall>n. x(n) \<in> s) \<and> (x \<longlongrightarrow> a) sequentially |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2410 |
--> ((f \<circ> x) \<longlongrightarrow> f a) sequentially)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2411 |
(is "?lhs = ?rhs") |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2412 |
proof |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2413 |
assume ?rhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2414 |
then show ?lhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2415 |
using continuous_within_sequentially[of _ s f] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2416 |
unfolding continuous_on_eq_continuous_within |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2417 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2418 |
next |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2419 |
assume ?lhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2420 |
then show ?rhs |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2421 |
unfolding continuous_on_eq_continuous_within |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2422 |
using continuous_within_sequentially[of _ s f] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2423 |
by auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2424 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2425 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2426 |
text \<open>Continuity in terms of open preimages.\<close> |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2427 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2428 |
lemma continuous_at_open: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2429 |
"continuous (at x) f \<longleftrightarrow> (\<forall>t. open t \<and> f x \<in> t --> (\<exists>s. open s \<and> x \<in> s \<and> (\<forall>x' \<in> s. (f x') \<in> t)))" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2430 |
unfolding continuous_within_topological [of x UNIV f] |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2431 |
unfolding imp_conjL |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2432 |
by (intro all_cong imp_cong ex_cong conj_cong refl) auto |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2433 |
|
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2434 |
lemma continuous_imp_tendsto: |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2435 |
assumes "continuous (at x0) f" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2436 |
and "x \<longlonglongrightarrow> x0" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2437 |
shows "(f \<circ> x) \<longlonglongrightarrow> (f x0)" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2438 |
proof (rule topological_tendstoI) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2439 |
fix S |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2440 |
assume "open S" "f x0 \<in> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2441 |
then obtain T where T_def: "open T" "x0 \<in> T" "\<forall>x\<in>T. f x \<in> S" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2442 |
using assms continuous_at_open by metis |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2443 |
then have "eventually (\<lambda>n. x n \<in> T) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2444 |
using assms T_def by (auto simp: tendsto_def) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2445 |
then show "eventually (\<lambda>n. (f \<circ> x) n \<in> S) sequentially" |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2446 |
using T_def by (auto elim!: eventually_mono) |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2447 |
qed |
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2448 |
|
69613
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2449 |
subsection \<open>Homeomorphisms\<close> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2450 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2451 |
definition%important "homeomorphism s t f g \<longleftrightarrow> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2452 |
(\<forall>x\<in>s. (g(f x) = x)) \<and> (f ` s = t) \<and> continuous_on s f \<and> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2453 |
(\<forall>y\<in>t. (f(g y) = y)) \<and> (g ` t = s) \<and> continuous_on t g" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2454 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2455 |
lemma homeomorphismI [intro?]: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2456 |
assumes "continuous_on S f" "continuous_on T g" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2457 |
"f ` S \<subseteq> T" "g ` T \<subseteq> S" "\<And>x. x \<in> S \<Longrightarrow> g(f x) = x" "\<And>y. y \<in> T \<Longrightarrow> f(g y) = y" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2458 |
shows "homeomorphism S T f g" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2459 |
using assms by (force simp: homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2460 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2461 |
lemma homeomorphism_translation: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2462 |
fixes a :: "'a :: real_normed_vector" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2463 |
shows "homeomorphism ((+) a ` S) S ((+) (- a)) ((+) a)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2464 |
unfolding homeomorphism_def by (auto simp: algebra_simps continuous_intros) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2465 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2466 |
lemma homeomorphism_ident: "homeomorphism T T (\<lambda>a. a) (\<lambda>a. a)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2467 |
by (rule homeomorphismI) (auto simp: continuous_on_id) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2468 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2469 |
lemma homeomorphism_compose: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2470 |
assumes "homeomorphism S T f g" "homeomorphism T U h k" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2471 |
shows "homeomorphism S U (h o f) (g o k)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2472 |
using assms |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2473 |
unfolding homeomorphism_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2474 |
by (intro conjI ballI continuous_on_compose) (auto simp: image_comp [symmetric]) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2475 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2476 |
lemma homeomorphism_symD: "homeomorphism S t f g \<Longrightarrow> homeomorphism t S g f" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2477 |
by (simp add: homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2478 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2479 |
lemma homeomorphism_sym: "homeomorphism S t f g = homeomorphism t S g f" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2480 |
by (force simp: homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2481 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2482 |
definition%important homeomorphic :: "'a::topological_space set \<Rightarrow> 'b::topological_space set \<Rightarrow> bool" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2483 |
(infixr "homeomorphic" 60) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2484 |
where "s homeomorphic t \<equiv> (\<exists>f g. homeomorphism s t f g)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2485 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2486 |
lemma homeomorphic_empty [iff]: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2487 |
"S homeomorphic {} \<longleftrightarrow> S = {}" "{} homeomorphic S \<longleftrightarrow> S = {}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2488 |
by (auto simp: homeomorphic_def homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2489 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2490 |
lemma homeomorphic_refl: "s homeomorphic s" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2491 |
unfolding homeomorphic_def homeomorphism_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2492 |
using continuous_on_id |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2493 |
apply (rule_tac x = "(\<lambda>x. x)" in exI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2494 |
apply (rule_tac x = "(\<lambda>x. x)" in exI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2495 |
apply blast |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2496 |
done |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2497 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2498 |
lemma homeomorphic_sym: "s homeomorphic t \<longleftrightarrow> t homeomorphic s" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2499 |
unfolding homeomorphic_def homeomorphism_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2500 |
by blast |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2501 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2502 |
lemma homeomorphic_trans [trans]: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2503 |
assumes "S homeomorphic T" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2504 |
and "T homeomorphic U" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2505 |
shows "S homeomorphic U" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2506 |
using assms |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2507 |
unfolding homeomorphic_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2508 |
by (metis homeomorphism_compose) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2509 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2510 |
lemma homeomorphic_minimal: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2511 |
"s homeomorphic t \<longleftrightarrow> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2512 |
(\<exists>f g. (\<forall>x\<in>s. f(x) \<in> t \<and> (g(f(x)) = x)) \<and> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2513 |
(\<forall>y\<in>t. g(y) \<in> s \<and> (f(g(y)) = y)) \<and> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2514 |
continuous_on s f \<and> continuous_on t g)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2515 |
(is "?lhs = ?rhs") |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2516 |
proof |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2517 |
assume ?lhs |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2518 |
then show ?rhs |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2519 |
by (fastforce simp: homeomorphic_def homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2520 |
next |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2521 |
assume ?rhs |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2522 |
then show ?lhs |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2523 |
apply clarify |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2524 |
unfolding homeomorphic_def homeomorphism_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2525 |
by (metis equalityI image_subset_iff subsetI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2526 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2527 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2528 |
lemma homeomorphicI [intro?]: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2529 |
"\<lbrakk>f ` S = T; g ` T = S; |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2530 |
continuous_on S f; continuous_on T g; |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2531 |
\<And>x. x \<in> S \<Longrightarrow> g(f(x)) = x; |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2532 |
\<And>y. y \<in> T \<Longrightarrow> f(g(y)) = y\<rbrakk> \<Longrightarrow> S homeomorphic T" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2533 |
unfolding homeomorphic_def homeomorphism_def by metis |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2534 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2535 |
lemma homeomorphism_of_subsets: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2536 |
"\<lbrakk>homeomorphism S T f g; S' \<subseteq> S; T'' \<subseteq> T; f ` S' = T'\<rbrakk> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2537 |
\<Longrightarrow> homeomorphism S' T' f g" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2538 |
apply (auto simp: homeomorphism_def elim!: continuous_on_subset) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2539 |
by (metis subsetD imageI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2540 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2541 |
lemma homeomorphism_apply1: "\<lbrakk>homeomorphism S T f g; x \<in> S\<rbrakk> \<Longrightarrow> g(f x) = x" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2542 |
by (simp add: homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2543 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2544 |
lemma homeomorphism_apply2: "\<lbrakk>homeomorphism S T f g; x \<in> T\<rbrakk> \<Longrightarrow> f(g x) = x" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2545 |
by (simp add: homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2546 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2547 |
lemma homeomorphism_image1: "homeomorphism S T f g \<Longrightarrow> f ` S = T" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2548 |
by (simp add: homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2549 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2550 |
lemma homeomorphism_image2: "homeomorphism S T f g \<Longrightarrow> g ` T = S" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2551 |
by (simp add: homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2552 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2553 |
lemma homeomorphism_cont1: "homeomorphism S T f g \<Longrightarrow> continuous_on S f" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2554 |
by (simp add: homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2555 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2556 |
lemma homeomorphism_cont2: "homeomorphism S T f g \<Longrightarrow> continuous_on T g" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2557 |
by (simp add: homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2558 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2559 |
lemma continuous_on_no_limpt: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2560 |
"(\<And>x. \<not> x islimpt S) \<Longrightarrow> continuous_on S f" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2561 |
unfolding continuous_on_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2562 |
by (metis UNIV_I empty_iff eventually_at_topological islimptE open_UNIV tendsto_def trivial_limit_within) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2563 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2564 |
lemma continuous_on_finite: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2565 |
fixes S :: "'a::t1_space set" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2566 |
shows "finite S \<Longrightarrow> continuous_on S f" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2567 |
by (metis continuous_on_no_limpt islimpt_finite) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2568 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2569 |
lemma homeomorphic_finite: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2570 |
fixes S :: "'a::t1_space set" and T :: "'b::t1_space set" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2571 |
assumes "finite T" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2572 |
shows "S homeomorphic T \<longleftrightarrow> finite S \<and> finite T \<and> card S = card T" (is "?lhs = ?rhs") |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2573 |
proof |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2574 |
assume "S homeomorphic T" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2575 |
with assms show ?rhs |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2576 |
apply (auto simp: homeomorphic_def homeomorphism_def) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2577 |
apply (metis finite_imageI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2578 |
by (metis card_image_le finite_imageI le_antisym) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2579 |
next |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2580 |
assume R: ?rhs |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2581 |
with finite_same_card_bij obtain h where "bij_betw h S T" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2582 |
by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2583 |
with R show ?lhs |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2584 |
apply (auto simp: homeomorphic_def homeomorphism_def continuous_on_finite) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2585 |
apply (rule_tac x=h in exI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2586 |
apply (rule_tac x="inv_into S h" in exI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2587 |
apply (auto simp: bij_betw_inv_into_left bij_betw_inv_into_right bij_betw_imp_surj_on inv_into_into bij_betwE) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2588 |
apply (metis bij_betw_def bij_betw_inv_into) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2589 |
done |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2590 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2591 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2592 |
text \<open>Relatively weak hypotheses if a set is compact.\<close> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2593 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2594 |
lemma homeomorphism_compact: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2595 |
fixes f :: "'a::topological_space \<Rightarrow> 'b::t2_space" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2596 |
assumes "compact s" "continuous_on s f" "f ` s = t" "inj_on f s" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2597 |
shows "\<exists>g. homeomorphism s t f g" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2598 |
proof - |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2599 |
define g where "g x = (SOME y. y\<in>s \<and> f y = x)" for x |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2600 |
have g: "\<forall>x\<in>s. g (f x) = x" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2601 |
using assms(3) assms(4)[unfolded inj_on_def] unfolding g_def by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2602 |
{ |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2603 |
fix y |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2604 |
assume "y \<in> t" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2605 |
then obtain x where x:"f x = y" "x\<in>s" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2606 |
using assms(3) by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2607 |
then have "g (f x) = x" using g by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2608 |
then have "f (g y) = y" unfolding x(1)[symmetric] by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2609 |
} |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2610 |
then have g':"\<forall>x\<in>t. f (g x) = x" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2611 |
moreover |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2612 |
{ |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2613 |
fix x |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2614 |
have "x\<in>s \<Longrightarrow> x \<in> g ` t" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2615 |
using g[THEN bspec[where x=x]] |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2616 |
unfolding image_iff |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2617 |
using assms(3) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2618 |
by (auto intro!: bexI[where x="f x"]) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2619 |
moreover |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2620 |
{ |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2621 |
assume "x\<in>g ` t" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2622 |
then obtain y where y:"y\<in>t" "g y = x" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2623 |
then obtain x' where x':"x'\<in>s" "f x' = y" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2624 |
using assms(3) by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2625 |
then have "x \<in> s" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2626 |
unfolding g_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2627 |
using someI2[of "\<lambda>b. b\<in>s \<and> f b = y" x' "\<lambda>x. x\<in>s"] |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2628 |
unfolding y(2)[symmetric] and g_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2629 |
by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2630 |
} |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2631 |
ultimately have "x\<in>s \<longleftrightarrow> x \<in> g ` t" .. |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2632 |
} |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2633 |
then have "g ` t = s" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2634 |
ultimately show ?thesis |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2635 |
unfolding homeomorphism_def homeomorphic_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2636 |
apply (rule_tac x=g in exI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2637 |
using g and assms(3) and continuous_on_inv[OF assms(2,1), of g, unfolded assms(3)] and assms(2) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2638 |
apply auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2639 |
done |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2640 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2641 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2642 |
lemma homeomorphic_compact: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2643 |
fixes f :: "'a::topological_space \<Rightarrow> 'b::t2_space" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2644 |
shows "compact s \<Longrightarrow> continuous_on s f \<Longrightarrow> (f ` s = t) \<Longrightarrow> inj_on f s \<Longrightarrow> s homeomorphic t" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2645 |
unfolding homeomorphic_def by (metis homeomorphism_compact) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2646 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2647 |
text\<open>Preservation of topological properties.\<close> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2648 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2649 |
lemma homeomorphic_compactness: "s homeomorphic t \<Longrightarrow> (compact s \<longleftrightarrow> compact t)" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2650 |
unfolding homeomorphic_def homeomorphism_def |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2651 |
by (metis compact_continuous_image) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2652 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2653 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2654 |
subsection%unimportant \<open>On Linorder Topologies\<close> |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2655 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2656 |
lemma islimpt_greaterThanLessThan1: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2657 |
fixes a b::"'a::{linorder_topology, dense_order}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2658 |
assumes "a < b" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2659 |
shows "a islimpt {a<..<b}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2660 |
proof (rule islimptI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2661 |
fix T |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2662 |
assume "open T" "a \<in> T" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2663 |
from open_right[OF this \<open>a < b\<close>] |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2664 |
obtain c where c: "a < c" "{a..<c} \<subseteq> T" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2665 |
with assms dense[of a "min c b"] |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2666 |
show "\<exists>y\<in>{a<..<b}. y \<in> T \<and> y \<noteq> a" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2667 |
by (metis atLeastLessThan_iff greaterThanLessThan_iff min_less_iff_conj |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2668 |
not_le order.strict_implies_order subset_eq) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2669 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2670 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2671 |
lemma islimpt_greaterThanLessThan2: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2672 |
fixes a b::"'a::{linorder_topology, dense_order}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2673 |
assumes "a < b" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2674 |
shows "b islimpt {a<..<b}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2675 |
proof (rule islimptI) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2676 |
fix T |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2677 |
assume "open T" "b \<in> T" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2678 |
from open_left[OF this \<open>a < b\<close>] |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2679 |
obtain c where c: "c < b" "{c<..b} \<subseteq> T" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2680 |
with assms dense[of "max a c" b] |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2681 |
show "\<exists>y\<in>{a<..<b}. y \<in> T \<and> y \<noteq> b" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2682 |
by (metis greaterThanAtMost_iff greaterThanLessThan_iff max_less_iff_conj |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2683 |
not_le order.strict_implies_order subset_eq) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2684 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2685 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2686 |
lemma closure_greaterThanLessThan[simp]: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2687 |
fixes a b::"'a::{linorder_topology, dense_order}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2688 |
shows "a < b \<Longrightarrow> closure {a <..< b} = {a .. b}" (is "_ \<Longrightarrow> ?l = ?r") |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2689 |
proof |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2690 |
have "?l \<subseteq> closure ?r" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2691 |
by (rule closure_mono) auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2692 |
thus "closure {a<..<b} \<subseteq> {a..b}" by simp |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2693 |
qed (auto simp: closure_def order.order_iff_strict islimpt_greaterThanLessThan1 |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2694 |
islimpt_greaterThanLessThan2) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2695 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2696 |
lemma closure_greaterThan[simp]: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2697 |
fixes a b::"'a::{no_top, linorder_topology, dense_order}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2698 |
shows "closure {a<..} = {a..}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2699 |
proof - |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2700 |
from gt_ex obtain b where "a < b" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2701 |
hence "{a<..} = {a<..<b} \<union> {b..}" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2702 |
also have "closure \<dots> = {a..}" using \<open>a < b\<close> unfolding closure_Un |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2703 |
by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2704 |
finally show ?thesis . |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2705 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2706 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2707 |
lemma closure_lessThan[simp]: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2708 |
fixes b::"'a::{no_bot, linorder_topology, dense_order}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2709 |
shows "closure {..<b} = {..b}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2710 |
proof - |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2711 |
from lt_ex obtain a where "a < b" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2712 |
hence "{..<b} = {a<..<b} \<union> {..a}" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2713 |
also have "closure \<dots> = {..b}" using \<open>a < b\<close> unfolding closure_Un |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2714 |
by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2715 |
finally show ?thesis . |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2716 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2717 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2718 |
lemma closure_atLeastLessThan[simp]: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2719 |
fixes a b::"'a::{linorder_topology, dense_order}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2720 |
assumes "a < b" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2721 |
shows "closure {a ..< b} = {a .. b}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2722 |
proof - |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2723 |
from assms have "{a ..< b} = {a} \<union> {a <..< b}" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2724 |
also have "closure \<dots> = {a .. b}" unfolding closure_Un |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2725 |
by (auto simp: assms less_imp_le) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2726 |
finally show ?thesis . |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2727 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2728 |
|
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2729 |
lemma closure_greaterThanAtMost[simp]: |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2730 |
fixes a b::"'a::{linorder_topology, dense_order}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2731 |
assumes "a < b" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2732 |
shows "closure {a <.. b} = {a .. b}" |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2733 |
proof - |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2734 |
from assms have "{a <.. b} = {b} \<union> {a <..< b}" by auto |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2735 |
also have "closure \<dots> = {a .. b}" unfolding closure_Un |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2736 |
by (auto simp: assms less_imp_le) |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2737 |
finally show ?thesis . |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2738 |
qed |
1331e57b54c6
moved material from Connected.thy to more appropriate places
immler
parents:
69611
diff
changeset
|
2739 |
|
69611
42cc3609fedf
moved some material from Connected.thy to more appropriate places
immler
parents:
69564
diff
changeset
|
2740 |
|
69516
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
immler
parents:
diff
changeset
|
2741 |
end |