| author | nipkow | 
| Tue, 01 Jan 2019 13:26:37 +0100 | |
| changeset 69564 | a59f7d07bf17 | 
| parent 69544 | 5aa5a8d6e5b5 | 
| child 69611 | 42cc3609fedf | 
| 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  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
7  | 
section \<open>Elementary Topology\<close>  | 
| 
 
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"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
12  | 
Product_Vector  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
13  | 
begin  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
14  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
15  | 
|
| 
69544
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
16  | 
subsection \<open>TODO: move?\<close>  | 
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
17  | 
|
| 
69544
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
18  | 
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
 | 
19  | 
using openI by auto  | 
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
20  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
21  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
22  | 
subsection \<open>Topological Basis\<close>  | 
| 
 
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  | 
context topological_space  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
25  | 
begin  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
26  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
27  | 
definition%important "topological_basis B \<longleftrightarrow>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
28  | 
(\<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
 | 
29  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
30  | 
lemma topological_basis:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
31  | 
"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
 | 
32  | 
unfolding topological_basis_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
33  | 
apply safe  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
34  | 
apply fastforce  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
35  | 
apply fastforce  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
36  | 
apply (erule_tac x=x in allE, simp)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
37  | 
   apply (rule_tac x="{x}" in exI, auto)
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
38  | 
done  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
39  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
40  | 
lemma topological_basis_iff:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
41  | 
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
 | 
42  | 
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
 | 
43  | 
(is "_ \<longleftrightarrow> ?rhs")  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
44  | 
proof safe  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
45  | 
fix O' and x::'a  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
46  | 
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
 | 
47  | 
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
 | 
48  | 
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
 | 
49  | 
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
 | 
50  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
51  | 
assume H: ?rhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
52  | 
show "topological_basis B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
53  | 
using assms unfolding topological_basis_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
54  | 
proof safe  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
55  | 
fix O' :: "'a set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
56  | 
assume "open O'"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
57  | 
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
 | 
58  | 
by (force intro: bchoice simp: Bex_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
59  | 
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
 | 
60  | 
      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
 | 
61  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
62  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
63  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
64  | 
lemma topological_basisI:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
65  | 
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
 | 
66  | 
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
 | 
67  | 
shows "topological_basis B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
68  | 
using assms by (subst topological_basis_iff) auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
69  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
70  | 
lemma topological_basisE:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
71  | 
fixes O'  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
72  | 
assumes "topological_basis B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
73  | 
and "open O'"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
74  | 
and "x \<in> O'"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
75  | 
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
 | 
76  | 
proof atomize_elim  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
77  | 
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
 | 
78  | 
by (simp add: topological_basis_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
79  | 
with topological_basis_iff assms  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
80  | 
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
 | 
81  | 
using assms by (simp add: Bex_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
82  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
83  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
84  | 
lemma topological_basis_open:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
85  | 
assumes "topological_basis B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
86  | 
and "X \<in> B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
87  | 
shows "open X"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
88  | 
using assms by (simp add: topological_basis_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
89  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
90  | 
lemma topological_basis_imp_subbasis:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
91  | 
assumes B: "topological_basis B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
92  | 
shows "open = generate_topology B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
93  | 
proof (intro ext iffI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
94  | 
fix S :: "'a set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
95  | 
assume "open S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
96  | 
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
 | 
97  | 
unfolding topological_basis_def by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
98  | 
then show "generate_topology B S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
99  | 
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
 | 
100  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
101  | 
fix S :: "'a set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
102  | 
assume "generate_topology B S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
103  | 
then show "open S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
104  | 
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
 | 
105  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
106  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
107  | 
lemma basis_dense:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
108  | 
fixes B :: "'a set set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
109  | 
and f :: "'a set \<Rightarrow> 'a"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
110  | 
assumes "topological_basis B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
111  | 
    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
 | 
112  | 
  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
 | 
113  | 
proof (intro allI impI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
114  | 
fix X :: "'a set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
115  | 
  assume "open X" and "X \<noteq> {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
116  | 
  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
 | 
117  | 
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
 | 
118  | 
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
 | 
119  | 
by (auto intro!: choosefrom_basis)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
120  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
121  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
122  | 
end  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
123  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
124  | 
lemma topological_basis_prod:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
125  | 
assumes A: "topological_basis A"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
126  | 
and B: "topological_basis B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
127  | 
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
 | 
128  | 
unfolding topological_basis_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
129  | 
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
 | 
130  | 
  fix S :: "('a \<times> 'b) set"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
131  | 
assume "open S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
132  | 
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
 | 
133  | 
  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
 | 
134  | 
fix x y  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
135  | 
assume "(x, y) \<in> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
136  | 
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
 | 
137  | 
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
 | 
138  | 
by (metis mem_Sigma_iff)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
139  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
140  | 
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
 | 
141  | 
by (rule topological_basisE)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
142  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
143  | 
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
 | 
144  | 
by (rule topological_basisE)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
145  | 
    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
 | 
146  | 
by (intro UN_I[of "(A0, B0)"]) auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
147  | 
qed auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
148  | 
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
 | 
149  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
150  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
151  | 
subsection \<open>Countable Basis\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
152  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
153  | 
locale%important countable_basis =  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
154  | 
fixes B :: "'a::topological_space set set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
155  | 
assumes is_basis: "topological_basis B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
156  | 
and countable_basis: "countable B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
157  | 
begin  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
158  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
159  | 
lemma open_countable_basis_ex:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
160  | 
assumes "open X"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
161  | 
shows "\<exists>B' \<subseteq> B. X = \<Union>B'"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
162  | 
using assms countable_basis is_basis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
163  | 
unfolding topological_basis_def by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
164  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
165  | 
lemma open_countable_basisE:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
166  | 
assumes "open X"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
167  | 
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
 | 
168  | 
using assms open_countable_basis_ex  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
169  | 
by atomize_elim simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
170  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
171  | 
lemma countable_dense_exists:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
172  | 
  "\<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
 | 
173  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
174  | 
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
 | 
175  | 
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
 | 
176  | 
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
 | 
177  | 
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
 | 
178  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
179  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
180  | 
lemma countable_dense_setE:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
181  | 
obtains D :: "'a set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
182  | 
  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
 | 
183  | 
using countable_dense_exists by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
184  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
185  | 
end  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
186  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
187  | 
lemma (in first_countable_topology) first_countable_basisE:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
188  | 
fixes x :: 'a  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
189  | 
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
 | 
190  | 
"\<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
 | 
191  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
192  | 
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
 | 
193  | 
using first_countable_basis[of x] by metis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
194  | 
show thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
195  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
196  | 
show "countable (range \<A>)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
197  | 
by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
198  | 
qed (use \<A> in auto)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
199  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
200  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
201  | 
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
 | 
202  | 
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
 | 
203  | 
"\<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
 | 
204  | 
"\<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
 | 
205  | 
proof atomize_elim  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
206  | 
obtain \<B> where \<B>:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
207  | 
"countable \<B>"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
208  | 
"\<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
 | 
209  | 
"\<And>B. B \<in> \<B> \<Longrightarrow> open B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
210  | 
"\<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
 | 
211  | 
by (rule first_countable_basisE) blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
212  | 
define \<A> where [abs_def]:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
213  | 
"\<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
 | 
214  | 
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
 | 
215  | 
(\<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
 | 
216  | 
proof (safe intro!: exI[where x=\<A>])  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
217  | 
show "countable \<A>"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
218  | 
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
 | 
219  | 
fix A  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
220  | 
assume "A \<in> \<A>"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
221  | 
then show "x \<in> A" "open A"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
222  | 
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
 | 
223  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
224  | 
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
 | 
225  | 
fix A B  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
226  | 
assume "A \<in> \<A>" "B \<in> \<A>"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
227  | 
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
 | 
228  | 
by (auto simp: \<A>_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
229  | 
then show "A \<inter> B \<in> \<A>"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
230  | 
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
 | 
231  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
232  | 
fix S  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
233  | 
assume "open S" "x \<in> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
234  | 
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
 | 
235  | 
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
 | 
236  | 
      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
 | 
237  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
238  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
239  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
240  | 
lemma (in topological_space) first_countableI:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
241  | 
assumes "countable \<A>"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
242  | 
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
 | 
243  | 
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
 | 
244  | 
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
 | 
245  | 
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
 | 
246  | 
fix i  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
247  | 
  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
 | 
248  | 
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
 | 
249  | 
    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
 | 
250  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
251  | 
fix S  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
252  | 
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
 | 
253  | 
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
 | 
254  | 
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
 | 
255  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
256  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
257  | 
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
 | 
258  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
259  | 
fix x :: "'a \<times> 'b"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
260  | 
obtain \<A> where \<A>:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
261  | 
"countable \<A>"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
262  | 
"\<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
 | 
263  | 
"\<And>a. a \<in> \<A> \<Longrightarrow> open a"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
264  | 
"\<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
 | 
265  | 
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
 | 
266  | 
obtain B where B:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
267  | 
"countable B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
268  | 
"\<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
 | 
269  | 
"\<And>a. a \<in> B \<Longrightarrow> open a"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
270  | 
"\<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
 | 
271  | 
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
 | 
272  | 
  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
 | 
273  | 
(\<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
 | 
274  | 
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
 | 
275  | 
fix a b  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
276  | 
assume x: "a \<in> \<A>" "b \<in> B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
277  | 
show "x \<in> a \<times> b"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
278  | 
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
 | 
279  | 
show "open (a \<times> b)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
280  | 
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
 | 
281  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
282  | 
fix S  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
283  | 
assume "open S" "x \<in> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
284  | 
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
 | 
285  | 
by (rule open_prod_elim)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
286  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
287  | 
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
 | 
288  | 
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
 | 
289  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
290  | 
ultimately  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
291  | 
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
 | 
292  | 
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
 | 
293  | 
qed (simp add: \<A> B)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
294  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
295  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
296  | 
class second_countable_topology = topological_space +  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
297  | 
assumes ex_countable_subbasis:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
298  | 
"\<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
 | 
299  | 
begin  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
300  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
301  | 
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
 | 
302  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
303  | 
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
 | 
304  | 
by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
305  | 
  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
 | 
306  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
307  | 
show ?thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
308  | 
proof (intro exI conjI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
309  | 
show "countable ?B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
310  | 
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
 | 
311  | 
    {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
312  | 
fix S  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
313  | 
assume "open S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
314  | 
      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
 | 
315  | 
unfolding B  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
316  | 
proof induct  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
317  | 
case UNIV  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
318  | 
        show ?case by (intro exI[of _ "{{}}"]) simp
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
319  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
320  | 
case (Int a b)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
321  | 
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
 | 
322  | 
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
 | 
323  | 
by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
324  | 
show ?case  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
325  | 
unfolding x y Int_UN_distrib2  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
326  | 
          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
 | 
327  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
328  | 
case (UN K)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
329  | 
        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
 | 
330  | 
then obtain k where  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
331  | 
            "\<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
 | 
332  | 
unfolding bchoice_iff ..  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
333  | 
        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
 | 
334  | 
by (intro exI[of _ "\<Union>(k ` K)"]) auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
335  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
336  | 
case (Basis S)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
337  | 
then show ?case  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
338  | 
          by (intro exI[of _ "{{S}}"]) auto
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
339  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
340  | 
      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
 | 
341  | 
unfolding subset_image_iff by blast }  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
342  | 
then show "topological_basis ?B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
343  | 
unfolding topological_space_class.topological_basis_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
344  | 
by (safe intro!: topological_space_class.open_Inter)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
345  | 
(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
 | 
346  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
347  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
348  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
349  | 
end  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
350  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
351  | 
sublocale second_countable_topology <  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
352  | 
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
 | 
353  | 
using someI_ex[OF ex_countable_basis]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
354  | 
by unfold_locales safe  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
355  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
356  | 
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
 | 
357  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
358  | 
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
 | 
359  | 
using ex_countable_basis by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
360  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
361  | 
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
 | 
362  | 
using ex_countable_basis by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
363  | 
  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
 | 
364  | 
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
 | 
365  | 
topological_basis_imp_subbasis)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
366  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
367  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
368  | 
instance second_countable_topology \<subseteq> first_countable_topology  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
369  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
370  | 
fix x :: 'a  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
371  | 
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
 | 
372  | 
then have B: "countable B" "topological_basis B"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
373  | 
using countable_basis is_basis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
374  | 
by (auto simp: countable_basis is_basis)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
375  | 
then show "\<exists>A::nat \<Rightarrow> 'a set.  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
376  | 
(\<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
 | 
377  | 
    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
 | 
378  | 
(fastforce simp: topological_space_class.topological_basis_def)+  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
379  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
380  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
381  | 
instance nat :: second_countable_topology  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
382  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
383  | 
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
 | 
384  | 
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
 | 
385  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
386  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
387  | 
lemma countable_separating_set_linorder1:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
388  | 
  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
 | 
389  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
390  | 
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
 | 
391  | 
  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
 | 
392  | 
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
 | 
393  | 
  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
 | 
394  | 
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
 | 
395  | 
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
 | 
396  | 
proof (cases)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
397  | 
assume "\<exists>z. x < z \<and> z < y"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
398  | 
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
 | 
399  | 
    define U where "U = {x<..<y}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
400  | 
then have "open U" by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
401  | 
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
 | 
402  | 
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
 | 
403  | 
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
 | 
404  | 
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
 | 
405  | 
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
 | 
406  | 
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
 | 
407  | 
ultimately show ?thesis by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
408  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
409  | 
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
 | 
410  | 
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
 | 
411  | 
    define U where "U = {x<..}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
412  | 
then have "open U" by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
413  | 
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
 | 
414  | 
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
 | 
415  | 
    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
 | 
416  | 
    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
 | 
417  | 
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
 | 
418  | 
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
 | 
419  | 
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
 | 
420  | 
ultimately show ?thesis by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
421  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
422  | 
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
 | 
423  | 
ultimately show ?thesis by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
424  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
425  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
426  | 
lemma countable_separating_set_linorder2:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
427  | 
  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
 | 
428  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
429  | 
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
 | 
430  | 
  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
 | 
431  | 
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
 | 
432  | 
  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
 | 
433  | 
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
 | 
434  | 
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
 | 
435  | 
proof (cases)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
436  | 
assume "\<exists>z. x < z \<and> z < y"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
437  | 
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
 | 
438  | 
    define U where "U = {x<..<y}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
439  | 
then have "open U" by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
440  | 
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
 | 
441  | 
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
 | 
442  | 
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
 | 
443  | 
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
 | 
444  | 
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
 | 
445  | 
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
 | 
446  | 
ultimately show ?thesis by auto  | 
| 
 
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  | 
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
 | 
449  | 
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
 | 
450  | 
    define U where "U = {..<y}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
451  | 
then have "open U" by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
452  | 
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
 | 
453  | 
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
 | 
454  | 
    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
 | 
455  | 
    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
 | 
456  | 
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
 | 
457  | 
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
 | 
458  | 
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
 | 
459  | 
ultimately show ?thesis by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
460  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
461  | 
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
 | 
462  | 
ultimately show ?thesis by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
463  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
464  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
465  | 
lemma countable_separating_set_dense_linorder:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
466  | 
  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
 | 
467  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
468  | 
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
 | 
469  | 
using countable_separating_set_linorder1 by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
470  | 
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
 | 
471  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
472  | 
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
 | 
473  | 
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
 | 
474  | 
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
 | 
475  | 
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
 | 
476  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
477  | 
then show ?thesis using B(1) by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
478  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
479  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
480  | 
subsection%important \<open>Polish spaces\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
481  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
482  | 
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
 | 
483  | 
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
 | 
484  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
485  | 
class polish_space = complete_space + second_countable_topology  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
486  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
487  | 
|
| 
69544
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
488  | 
subsection \<open>Limit Points\<close>  | 
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
489  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
490  | 
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
 | 
491  | 
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
 | 
492  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
493  | 
lemma islimptI:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
494  | 
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
 | 
495  | 
shows "x islimpt S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
496  | 
using assms unfolding islimpt_def by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
497  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
498  | 
lemma islimptE:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
499  | 
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
 | 
500  | 
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
 | 
501  | 
using assms unfolding islimpt_def by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
502  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
503  | 
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
 | 
504  | 
unfolding islimpt_def eventually_at_topological by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
505  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
506  | 
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
 | 
507  | 
unfolding islimpt_def by fast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
508  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
509  | 
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
 | 
510  | 
  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
 | 
511  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
512  | 
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
 | 
513  | 
unfolding islimpt_def by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
514  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
515  | 
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
 | 
516  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
517  | 
lemma islimpt_UNIV [simp, intro]: "x islimpt UNIV"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
518  | 
for x :: "'a::perfect_space"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
519  | 
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
 | 
520  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
521  | 
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
 | 
522  | 
unfolding closed_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
523  | 
apply (subst open_subopen)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
524  | 
apply (simp add: islimpt_def subset_eq)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
525  | 
apply (metis ComplE ComplI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
526  | 
done  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
527  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
528  | 
lemma islimpt_EMPTY[simp]: "\<not> x islimpt {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
529  | 
by (auto simp: islimpt_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
530  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
531  | 
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
 | 
532  | 
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
 | 
533  | 
|
| 
69544
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
534  | 
|
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
535  | 
lemma islimpt_insert:  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
536  | 
fixes x :: "'a::t1_space"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
537  | 
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
 | 
538  | 
proof  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
539  | 
assume *: "x islimpt (insert a s)"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
540  | 
show "x islimpt s"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
541  | 
proof (rule islimptI)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
542  | 
fix t  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
543  | 
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
 | 
544  | 
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
 | 
545  | 
proof (cases "x = a")  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
546  | 
case True  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
547  | 
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
 | 
548  | 
using * t by (rule islimptE)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
549  | 
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
 | 
550  | 
next  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
551  | 
case False  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
552  | 
      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
 | 
553  | 
by (simp_all add: open_Diff)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
554  | 
      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
 | 
555  | 
using * t' by (rule islimptE)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
556  | 
then show ?thesis by auto  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
557  | 
qed  | 
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
558  | 
qed  | 
| 
69544
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
559  | 
next  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
560  | 
assume "x islimpt s"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
561  | 
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
 | 
562  | 
by (rule islimpt_subset) auto  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
563  | 
qed  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
564  | 
|
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
565  | 
lemma islimpt_finite:  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
566  | 
fixes x :: "'a::t1_space"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
567  | 
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
 | 
568  | 
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
 | 
569  | 
|
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
570  | 
lemma islimpt_Un_finite:  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
571  | 
fixes x :: "'a::t1_space"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
572  | 
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
 | 
573  | 
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
 | 
574  | 
|
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
575  | 
lemma islimpt_eq_acc_point:  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
576  | 
fixes l :: "'a :: t1_space"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
577  | 
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
 | 
578  | 
proof (safe intro!: islimptI)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
579  | 
fix U  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
580  | 
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
 | 
581  | 
  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
 | 
582  | 
by (auto intro: finite_imp_closed)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
583  | 
then show False  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
584  | 
by (rule islimptE) auto  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
585  | 
next  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
586  | 
fix T  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
587  | 
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
 | 
588  | 
  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
 | 
589  | 
by auto  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
590  | 
  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
 | 
591  | 
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
 | 
592  | 
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
 | 
593  | 
by auto  | 
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
594  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
595  | 
|
| 
69544
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
596  | 
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
 | 
597  | 
fixes l :: "'a :: first_countable_topology"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
598  | 
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
 | 
599  | 
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
 | 
600  | 
proof -  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
601  | 
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
 | 
602  | 
obtain A where A:  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
603  | 
"\<And>i. open (A i)"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
604  | 
"\<And>i. l \<in> A i"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
605  | 
"\<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
 | 
606  | 
by blast  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
607  | 
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
 | 
608  | 
  {
 | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
609  | 
fix n i  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
610  | 
    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
 | 
611  | 
using l A by auto  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
612  | 
    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
 | 
613  | 
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
 | 
614  | 
    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
 | 
615  | 
by auto  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
616  | 
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
 | 
617  | 
by (auto simp: not_le)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
618  | 
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
 | 
619  | 
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
 | 
620  | 
}  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
621  | 
note s = this  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
622  | 
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
 | 
623  | 
have "strict_mono r"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
624  | 
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
 | 
625  | 
moreover  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
626  | 
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
 | 
627  | 
proof (rule topological_tendstoI)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
628  | 
fix S  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
629  | 
assume "open S" "l \<in> S"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
630  | 
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
 | 
631  | 
by auto  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
632  | 
moreover  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
633  | 
    {
 | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
634  | 
fix i  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
635  | 
assume "Suc 0 \<le> i"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
636  | 
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
 | 
637  | 
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
 | 
638  | 
}  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
639  | 
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
 | 
640  | 
by (auto simp: eventually_sequentially)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
641  | 
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
 | 
642  | 
by eventually_elim auto  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
643  | 
qed  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
644  | 
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
 | 
645  | 
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
 | 
646  | 
qed  | 
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
647  | 
|
| 
69544
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
648  | 
lemma islimpt_range_imp_convergent_subsequence:  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
649  | 
  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
 | 
650  | 
assumes l: "l islimpt (range f)"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
651  | 
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
 | 
652  | 
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
 | 
653  | 
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
 | 
654  | 
|
| 
69544
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
655  | 
lemma sequence_unique_limpt:  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
656  | 
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
 | 
657  | 
assumes "(f \<longlongrightarrow> l) sequentially"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
658  | 
and "l' islimpt (range f)"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
659  | 
shows "l' = l"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
660  | 
proof (rule ccontr)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
661  | 
assume "l' \<noteq> l"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
662  | 
  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
 | 
663  | 
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
 | 
664  | 
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
 | 
665  | 
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
 | 
666  | 
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
 | 
667  | 
unfolding eventually_sequentially by auto  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
668  | 
|
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
669  | 
  have "UNIV = {..<N} \<union> {N..}"
 | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
670  | 
by auto  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
671  | 
  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
 | 
672  | 
using assms(2) by simp  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
673  | 
  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
 | 
674  | 
by (simp add: image_Un)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
675  | 
  then have "l' islimpt (f ` {N..})"
 | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
676  | 
by (simp add: islimpt_Un_finite)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
677  | 
  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
 | 
678  | 
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
 | 
679  | 
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
 | 
680  | 
by auto  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
681  | 
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
 | 
682  | 
by simp  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
683  | 
  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
 | 
684  | 
by simp  | 
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
685  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
686  | 
|
| 
 
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  | 
subsection \<open>Interior of a Set\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
689  | 
|
| 69564 | 690  | 
definition%important interior :: "('a::topological_space) set \<Rightarrow> 'a set" where
 | 
691  | 
"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
 | 
692  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
693  | 
lemma interiorI [intro?]:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
694  | 
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
 | 
695  | 
shows "x \<in> interior S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
696  | 
using assms unfolding interior_def by fast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
697  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
698  | 
lemma interiorE [elim?]:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
699  | 
assumes "x \<in> interior S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
700  | 
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
 | 
701  | 
using assms unfolding interior_def by fast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
702  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
703  | 
lemma open_interior [simp, intro]: "open (interior S)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
704  | 
by (simp add: interior_def open_Union)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
705  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
706  | 
lemma interior_subset: "interior S \<subseteq> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
707  | 
by (auto simp: interior_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
708  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
709  | 
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
 | 
710  | 
by (auto simp: interior_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
711  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
712  | 
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
 | 
713  | 
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
 | 
714  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
715  | 
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
 | 
716  | 
by (metis open_interior interior_open)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
717  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
718  | 
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
 | 
719  | 
by (metis interior_maximal interior_subset subset_trans)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
720  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
721  | 
lemma interior_empty [simp]: "interior {} = {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
722  | 
using open_empty by (rule interior_open)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
723  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
724  | 
lemma interior_UNIV [simp]: "interior UNIV = UNIV"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
725  | 
using open_UNIV by (rule interior_open)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
726  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
727  | 
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
 | 
728  | 
using open_interior by (rule interior_open)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
729  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
730  | 
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
 | 
731  | 
by (auto simp: interior_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
732  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
733  | 
lemma interior_unique:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
734  | 
assumes "T \<subseteq> S" and "open T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
735  | 
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
 | 
736  | 
shows "interior S = T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
737  | 
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
 | 
738  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
739  | 
lemma interior_singleton [simp]: "interior {a} = {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
740  | 
for a :: "'a::perfect_space"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
741  | 
apply (rule interior_unique, simp_all)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
742  | 
using not_open_singleton subset_singletonD  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
743  | 
apply fastforce  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
744  | 
done  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
745  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
746  | 
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
 | 
747  | 
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
 | 
748  | 
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
 | 
749  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
750  | 
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
 | 
751  | 
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
 | 
752  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
753  | 
lemma interior_limit_point [intro]:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
754  | 
fixes x :: "'a::perfect_space"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
755  | 
assumes x: "x \<in> interior S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
756  | 
shows "x islimpt S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
757  | 
using x islimpt_UNIV [of x]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
758  | 
unfolding interior_def islimpt_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
759  | 
apply (clarsimp, rename_tac T T')  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
760  | 
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
 | 
761  | 
apply (auto simp: open_Int)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
762  | 
done  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
763  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
764  | 
lemma interior_closed_Un_empty_interior:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
765  | 
assumes cS: "closed S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
766  | 
    and iT: "interior T = {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
767  | 
shows "interior (S \<union> T) = interior S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
768  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
769  | 
show "interior S \<subseteq> interior (S \<union> T)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
770  | 
by (rule interior_mono) (rule Un_upper1)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
771  | 
show "interior (S \<union> T) \<subseteq> interior S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
772  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
773  | 
fix x  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
774  | 
assume "x \<in> interior (S \<union> T)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
775  | 
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
 | 
776  | 
show "x \<in> interior S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
777  | 
proof (rule ccontr)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
778  | 
assume "x \<notin> interior S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
779  | 
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
 | 
780  | 
unfolding interior_def by fast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
781  | 
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
 | 
782  | 
by (rule open_Diff)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
783  | 
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
 | 
784  | 
by fast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
785  | 
      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
 | 
786  | 
unfolding interior_def by fast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
787  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
788  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
789  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
790  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
791  | 
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
 | 
792  | 
proof (rule interior_unique)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
793  | 
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
 | 
794  | 
by (intro Sigma_mono interior_subset)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
795  | 
show "open (interior A \<times> interior B)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
796  | 
by (intro open_Times open_interior)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
797  | 
fix T  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
798  | 
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
 | 
799  | 
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
 | 
800  | 
proof safe  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
801  | 
fix x y  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
802  | 
assume "(x, y) \<in> T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
803  | 
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
 | 
804  | 
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
 | 
805  | 
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
 | 
806  | 
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
 | 
807  | 
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
 | 
808  | 
by (auto intro: interiorI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
809  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
810  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
811  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
812  | 
lemma interior_Ici:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
813  | 
  fixes x :: "'a :: {dense_linorder,linorder_topology}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
814  | 
assumes "b < x"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
815  | 
  shows "interior {x ..} = {x <..}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
816  | 
proof (rule interior_unique)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
817  | 
fix T  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
818  | 
  assume "T \<subseteq> {x ..}" "open T"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
819  | 
moreover have "x \<notin> T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
820  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
821  | 
assume "x \<in> T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
822  | 
    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
 | 
823  | 
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
 | 
824  | 
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
 | 
825  | 
by (auto simp: subset_eq Ball_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
826  | 
    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
 | 
827  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
828  | 
  ultimately show "T \<subseteq> {x <..}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
829  | 
by (auto simp: subset_eq less_le)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
830  | 
qed auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
831  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
832  | 
lemma interior_Iic:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
833  | 
  fixes x :: "'a ::{dense_linorder,linorder_topology}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
834  | 
assumes "x < b"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
835  | 
  shows "interior {.. x} = {..< x}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
836  | 
proof (rule interior_unique)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
837  | 
fix T  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
838  | 
  assume "T \<subseteq> {.. x}" "open T"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
839  | 
moreover have "x \<notin> T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
840  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
841  | 
assume "x \<in> T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
842  | 
    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
 | 
843  | 
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
 | 
844  | 
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
 | 
845  | 
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
 | 
846  | 
    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
 | 
847  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
848  | 
  ultimately show "T \<subseteq> {..< x}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
849  | 
by (auto simp: subset_eq less_le)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
850  | 
qed auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
851  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
852  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
853  | 
subsection \<open>Closure of a Set\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
854  | 
|
| 69564 | 855  | 
definition%important closure :: "('a::topological_space) set \<Rightarrow> 'a set" where
 | 
856  | 
"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
 | 
857  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
858  | 
lemma interior_closure: "interior S = - (closure (- S))"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
859  | 
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
 | 
860  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
861  | 
lemma closure_interior: "closure S = - interior (- S)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
862  | 
by (simp add: interior_closure)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
863  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
864  | 
lemma closed_closure[simp, intro]: "closed (closure S)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
865  | 
by (simp add: closure_interior closed_Compl)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
866  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
867  | 
lemma closure_subset: "S \<subseteq> closure S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
868  | 
by (simp add: closure_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
869  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
870  | 
lemma closure_hull: "closure S = closed hull S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
871  | 
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
 | 
872  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
873  | 
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
 | 
874  | 
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
 | 
875  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
876  | 
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
 | 
877  | 
by (simp only: closure_eq)  | 
| 
 
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 closure_closure [simp]: "closure (closure S) = closure S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
880  | 
unfolding closure_hull by (rule hull_hull)  | 
| 
 
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 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
 | 
883  | 
unfolding closure_hull by (rule hull_mono)  | 
| 
 
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 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
 | 
886  | 
unfolding closure_hull by (rule hull_minimal)  | 
| 
 
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 closure_unique:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
889  | 
assumes "S \<subseteq> T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
890  | 
and "closed T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
891  | 
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
 | 
892  | 
shows "closure S = T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
893  | 
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
 | 
894  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
895  | 
lemma closure_empty [simp]: "closure {} = {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
896  | 
using closed_empty by (rule closure_closed)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
897  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
898  | 
lemma closure_UNIV [simp]: "closure UNIV = UNIV"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
899  | 
using closed_UNIV by (rule closure_closed)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
900  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
901  | 
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
 | 
902  | 
by (simp add: closure_interior)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
903  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
904  | 
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
 | 
905  | 
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
 | 
906  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
907  | 
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
 | 
908  | 
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
 | 
909  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
910  | 
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
 | 
911  | 
using open_subset_interior[of S "- T"]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
912  | 
using interior_subset[of "- T"]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
913  | 
by (auto simp: closure_interior)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
914  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
915  | 
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
 | 
916  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
917  | 
fix x  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
918  | 
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
 | 
919  | 
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
 | 
920  | 
proof (rule islimptI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
921  | 
fix A  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
922  | 
assume "x \<in> A" "open A"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
923  | 
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
 | 
924  | 
by (simp_all add: open_Int)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
925  | 
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
 | 
926  | 
by (rule islimptE)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
927  | 
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
 | 
928  | 
by simp_all  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
929  | 
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
 | 
930  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
931  | 
with * show "x \<in> closure (S \<inter> T)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
932  | 
unfolding closure_def by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
933  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
934  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
935  | 
lemma closure_complement: "closure (- S) = - interior S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
936  | 
by (simp add: closure_interior)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
937  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
938  | 
lemma interior_complement: "interior (- S) = - closure S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
939  | 
by (simp add: closure_interior)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
940  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
941  | 
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
 | 
942  | 
by (simp add: Diff_eq interior_complement)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
943  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
944  | 
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
 | 
945  | 
proof (rule closure_unique)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
946  | 
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
 | 
947  | 
by (intro Sigma_mono closure_subset)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
948  | 
show "closed (closure A \<times> closure B)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
949  | 
by (intro closed_Times closed_closure)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
950  | 
fix T  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
951  | 
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
 | 
952  | 
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
 | 
953  | 
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
 | 
954  | 
apply (rule ccontr)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
955  | 
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
 | 
956  | 
apply (simp add: closure_interior interior_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
957  | 
apply (drule_tac x=C in spec)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
958  | 
apply (drule_tac x=D in spec, auto)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
959  | 
done  | 
| 
 
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  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
962  | 
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
 | 
963  | 
unfolding closure_def using islimpt_punctured by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
964  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
965  | 
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
 | 
966  | 
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
 | 
967  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
968  | 
lemma bdd_below_closure:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
969  | 
fixes A :: "real set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
970  | 
assumes "bdd_below A"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
971  | 
shows "bdd_below (closure A)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
972  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
973  | 
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
 | 
974  | 
by (auto simp: bdd_below_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
975  | 
  then have "A \<subseteq> {m..}" by auto
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
976  | 
  then have "closure A \<subseteq> {m..}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
977  | 
using closed_real_atLeast by (rule closure_minimal)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
978  | 
then show ?thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
979  | 
by (auto simp: bdd_below_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
980  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
981  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
982  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
983  | 
subsection \<open>Frontier (also known as boundary)\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
984  | 
|
| 69564 | 985  | 
definition%important frontier :: "('a::topological_space) set \<Rightarrow> 'a set" where
 | 
986  | 
"frontier S = closure S - interior S"  | 
|
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
987  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
988  | 
lemma frontier_closed [iff]: "closed (frontier S)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
989  | 
by (simp add: frontier_def closed_Diff)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
990  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
991  | 
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
 | 
992  | 
by (auto simp: frontier_def interior_closure)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
993  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
994  | 
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
 | 
995  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
996  | 
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
 | 
997  | 
by (simp_all add: closure_mono)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
998  | 
then show ?thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
999  | 
by (auto simp: frontier_closures)  | 
| 
 
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  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1002  | 
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
 | 
1003  | 
by (auto simp: frontier_Int)  | 
| 
 
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 frontier_Int_closed:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1006  | 
assumes "closed S" "closed T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1007  | 
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
 | 
1008  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1009  | 
have "closure (S \<inter> T) = T \<inter> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1010  | 
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
 | 
1011  | 
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
 | 
1012  | 
by (simp add: Int_commute frontier_closures)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1013  | 
ultimately show ?thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1014  | 
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
 | 
1015  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1016  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1017  | 
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
 | 
1018  | 
by (metis frontier_def closure_closed Diff_subset)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1019  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1020  | 
lemma frontier_empty [simp]: "frontier {} = {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1021  | 
by (simp add: frontier_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1022  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1023  | 
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
 | 
1024  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1025  | 
  {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1026  | 
assume "frontier S \<subseteq> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1027  | 
then have "closure S \<subseteq> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1028  | 
using interior_subset unfolding frontier_def by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1029  | 
then have "closed S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1030  | 
using closure_subset_eq by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1031  | 
}  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1032  | 
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
 | 
1033  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1034  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1035  | 
lemma frontier_complement [simp]: "frontier (- S) = frontier S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1036  | 
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
 | 
1037  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1038  | 
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
 | 
1039  | 
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
 | 
1040  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1041  | 
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
 | 
1042  | 
using frontier_complement frontier_subset_eq[of "- S"]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1043  | 
unfolding open_closed by auto  | 
| 
 
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 frontier_UNIV [simp]: "frontier UNIV = {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1046  | 
using frontier_complement frontier_empty by fastforce  | 
| 
 
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 frontier_interiors: "frontier s = - interior(s) - interior(-s)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1049  | 
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
 | 
1050  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1051  | 
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
 | 
1052  | 
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
 | 
1053  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1054  | 
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
 | 
1055  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1056  | 
have "S \<union> interior S = S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1057  | 
using interior_subset by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1058  | 
then show ?thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1059  | 
using closure_subset by (auto simp: frontier_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1060  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1061  | 
|
| 
 
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  | 
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
 | 
1064  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1065  | 
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
 | 
1066  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1067  | 
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
 | 
1068  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1069  | 
assume "trivial_limit (at a within S)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1070  | 
then show "\<not> a islimpt S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1071  | 
unfolding trivial_limit_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1072  | 
unfolding eventually_at_topological  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1073  | 
unfolding islimpt_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1074  | 
apply (clarsimp simp add: set_eq_iff)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1075  | 
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
 | 
1076  | 
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
 | 
1077  | 
done  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1078  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1079  | 
assume "\<not> a islimpt S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1080  | 
then show "trivial_limit (at a within S)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1081  | 
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
 | 
1082  | 
by metis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1083  | 
qed  | 
| 
 
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 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
 | 
1086  | 
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
 | 
1087  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1088  | 
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
 | 
1089  | 
for a :: "'a::perfect_space"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1090  | 
by (rule at_neq_bot)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1091  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1092  | 
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
 | 
1093  | 
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
 | 
1094  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1095  | 
lemma not_in_closure_trivial_limitI:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1096  | 
"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
 | 
1097  | 
using not_trivial_limit_within[of x s]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1098  | 
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
 | 
1099  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1100  | 
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
 | 
1101  | 
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
 | 
1102  | 
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
 | 
1103  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1104  | 
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
 | 
1105  | 
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
 | 
1106  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1107  | 
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
 | 
1108  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1109  | 
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
 | 
1110  | 
by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1111  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1112  | 
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
 | 
1113  | 
by (simp add: filter_eq_iff)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1114  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1115  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1116  | 
subsection \<open>Limits\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1117  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1118  | 
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
 | 
1119  | 
by (rule topological_tendstoI) (auto elim: eventually_mono)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1120  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1121  | 
text \<open>The expected monotonicity property.\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1122  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1123  | 
lemma Lim_Un:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1124  | 
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
 | 
1125  | 
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
 | 
1126  | 
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
 | 
1127  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1128  | 
lemma Lim_Un_univ:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1129  | 
"(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
 | 
1130  | 
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
 | 
1131  | 
by (metis Lim_Un)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1132  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1133  | 
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
 | 
1134  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1135  | 
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
 | 
1136  | 
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
 | 
1137  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1138  | 
lemma eventually_within_interior:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1139  | 
assumes "x \<in> interior S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1140  | 
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
 | 
1141  | 
(is "?lhs = ?rhs")  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1142  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1143  | 
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
 | 
1144  | 
  {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1145  | 
assume ?lhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1146  | 
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
 | 
1147  | 
by (auto simp: eventually_at_topological)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1148  | 
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
 | 
1149  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1150  | 
then show ?rhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1151  | 
by (auto simp: eventually_at_topological)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1152  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1153  | 
assume ?rhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1154  | 
then show ?lhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1155  | 
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
 | 
1156  | 
}  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1157  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1158  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1159  | 
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
 | 
1160  | 
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
 | 
1161  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1162  | 
lemma Lim_within_LIMSEQ:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1163  | 
fixes a :: "'a::first_countable_topology"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1164  | 
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
 | 
1165  | 
shows "(X \<longlongrightarrow> L) (at a within T)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1166  | 
using assms unfolding tendsto_def [where l=L]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1167  | 
by (simp add: sequentially_imp_eventually_within)  | 
| 
 
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  | 
lemma Lim_right_bound:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1170  | 
  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
 | 
1171  | 
    'b::{linorder_topology, conditionally_complete_linorder}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1172  | 
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
 | 
1173  | 
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
 | 
1174  | 
  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
 | 
1175  | 
proof (cases "{x<..} \<inter> I = {}")
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1176  | 
case True  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1177  | 
then show ?thesis by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1178  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1179  | 
case False  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1180  | 
show ?thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1181  | 
proof (rule order_tendstoI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1182  | 
fix a  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1183  | 
    assume a: "a < Inf (f ` ({x<..} \<inter> I))"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1184  | 
    {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1185  | 
fix y  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1186  | 
      assume "y \<in> {x<..} \<inter> I"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1187  | 
      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
 | 
1188  | 
by (auto intro!: cInf_lower bdd_belowI2)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1189  | 
with a have "a < f y"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1190  | 
by (blast intro: less_le_trans)  | 
| 
 
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  | 
    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
 | 
1193  | 
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
 | 
1194  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1195  | 
fix a  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1196  | 
    assume "Inf (f ` ({x<..} \<inter> I)) < a"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1197  | 
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
 | 
1198  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1199  | 
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
 | 
1200  | 
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
 | 
1201  | 
    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
 | 
1202  | 
unfolding eventually_at_filter by eventually_elim simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1203  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1204  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1205  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1206  | 
(*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
 | 
1207  | 
lemma islimpt_sequential:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1208  | 
fixes x :: "'a::first_countable_topology"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1209  | 
  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
 | 
1210  | 
(is "?lhs = ?rhs")  | 
| 
 
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  | 
assume ?lhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1213  | 
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
 | 
1214  | 
"\<And>i. open (A i)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1215  | 
"\<And>i. x \<in> A i"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1216  | 
"\<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
 | 
1217  | 
by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1218  | 
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
 | 
1219  | 
  {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1220  | 
fix n  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1221  | 
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
 | 
1222  | 
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
 | 
1223  | 
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
 | 
1224  | 
unfolding f_def by (rule someI_ex)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1225  | 
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
 | 
1226  | 
}  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1227  | 
  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
 | 
1228  | 
moreover have "(\<lambda>n. f n) \<longlonglongrightarrow> x"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1229  | 
proof (rule topological_tendstoI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1230  | 
fix S  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1231  | 
assume "open S" "x \<in> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1232  | 
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
 | 
1233  | 
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
 | 
1234  | 
by (auto elim!: eventually_mono)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1235  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1236  | 
ultimately show ?rhs by fast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1237  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1238  | 
assume ?rhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1239  | 
  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
 | 
1240  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1241  | 
show ?lhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1242  | 
unfolding islimpt_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1243  | 
proof safe  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1244  | 
fix T  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1245  | 
assume "open T" "x \<in> T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1246  | 
from lim[THEN topological_tendstoD, OF this] f  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1247  | 
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
 | 
1248  | 
unfolding eventually_sequentially by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1249  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1250  | 
qed  | 
| 
 
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>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
 | 
1253  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1254  | 
lemma Lim_in_closed_set:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1255  | 
assumes "closed S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1256  | 
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
 | 
1257  | 
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
 | 
1258  | 
shows "l \<in> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1259  | 
proof (rule ccontr)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1260  | 
assume "l \<notin> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1261  | 
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
 | 
1262  | 
by (simp_all add: open_Compl)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1263  | 
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
 | 
1264  | 
by (rule topological_tendstoD)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1265  | 
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
 | 
1266  | 
by (rule eventually_elim2) simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1267  | 
with assms(3) show "False"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1268  | 
by (simp add: eventually_False)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1269  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1270  | 
|
| 
69544
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
1271  | 
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
 | 
1272  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1273  | 
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
 | 
1274  | 
unfolding id_def by (rule tendsto_ident_at)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1275  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1276  | 
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
 | 
1277  | 
unfolding id_def by (rule tendsto_ident_at)  | 
| 
 
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  | 
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
 | 
1280  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1281  | 
abbreviation netlimit :: "'a::t2_space filter \<Rightarrow> 'a"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1282  | 
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
 | 
1283  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1284  | 
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
 | 
1285  | 
by (rule tendsto_Lim) (auto intro: tendsto_intros)  | 
| 
 
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 netlimit_at [simp]:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1288  | 
  fixes a :: "'a::{perfect_space,t2_space}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1289  | 
shows "netlimit (at a) = a"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1290  | 
using netlimit_within [of a UNIV] by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1291  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1292  | 
lemma lim_within_interior:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1293  | 
"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
 | 
1294  | 
by (metis at_within_interior)  | 
| 
 
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 netlimit_within_interior:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1297  | 
  fixes x :: "'a::{t2_space,perfect_space}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1298  | 
assumes "x \<in> interior S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1299  | 
shows "netlimit (at x within S) = x"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1300  | 
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
 | 
1301  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1302  | 
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
 | 
1303  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1304  | 
lemma closure_sequential:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1305  | 
fixes l :: "'a::first_countable_topology"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1306  | 
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
 | 
1307  | 
(is "?lhs = ?rhs")  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1308  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1309  | 
assume "?lhs"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1310  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1311  | 
  {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1312  | 
assume "l \<in> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1313  | 
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
 | 
1314  | 
}  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1315  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1316  | 
  {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1317  | 
assume "l islimpt S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1318  | 
then have "?rhs" unfolding islimpt_sequential by auto  | 
| 
 
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  | 
ultimately show "?rhs"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1321  | 
unfolding closure_def by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1322  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1323  | 
assume "?rhs"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1324  | 
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
 | 
1325  | 
qed  | 
| 
 
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 closed_sequential_limits:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1328  | 
fixes S :: "'a::first_countable_topology set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1329  | 
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
 | 
1330  | 
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
 | 
1331  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1332  | 
lemma tendsto_If_within_closures:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1333  | 
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
 | 
1334  | 
(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
 | 
1335  | 
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
 | 
1336  | 
(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
 | 
1337  | 
assumes "x \<in> s \<union> t"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1338  | 
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
 | 
1339  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1340  | 
  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
 | 
1341  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1342  | 
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
 | 
1343  | 
by (rule filterlim_at_within_closure_implies_filterlim)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1344  | 
(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
 | 
1345  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1346  | 
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
 | 
1347  | 
by (rule filterlim_at_within_closure_implies_filterlim)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1348  | 
(use \<open>x \<in> _\<close> in  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1349  | 
\<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
 | 
1350  | 
ultimately show ?thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1351  | 
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
 | 
1352  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1353  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1354  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1355  | 
subsection \<open>Compactness\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1356  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1357  | 
subsubsection \<open>Bolzano-Weierstrass property\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1358  | 
|
| 69529 | 1359  | 
proposition Heine_Borel_imp_Bolzano_Weierstrass:  | 
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1360  | 
assumes "compact s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1361  | 
and "infinite t"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1362  | 
and "t \<subseteq> s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1363  | 
shows "\<exists>x \<in> s. x islimpt t"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1364  | 
proof (rule ccontr)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1365  | 
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
 | 
1366  | 
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
 | 
1367  | 
unfolding islimpt_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1368  | 
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
 | 
1369  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1370  | 
  obtain g where g: "g \<subseteq> {t. \<exists>x. x \<in> s \<and> t = f x}" "finite g" "s \<subseteq> \<Union>g"
 | 
| 69529 | 1371  | 
    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
 | 
1372  | 
using f by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1373  | 
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
 | 
1374  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1375  | 
  {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1376  | 
fix x y  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1377  | 
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
 | 
1378  | 
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
 | 
1379  | 
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
 | 
1380  | 
then have "x = y"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1381  | 
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
 | 
1382  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1383  | 
}  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1384  | 
then have "inj_on f t"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1385  | 
unfolding inj_on_def by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1386  | 
then have "infinite (f ` t)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1387  | 
using assms(2) using finite_imageD by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1388  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1389  | 
  {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1390  | 
fix x  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1391  | 
assume "x \<in> t" "f x \<notin> g"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1392  | 
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
 | 
1393  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1394  | 
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
 | 
1395  | 
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
 | 
1396  | 
then have "y = x"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1397  | 
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
 | 
1398  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1399  | 
then have False  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1400  | 
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
 | 
1401  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1402  | 
}  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1403  | 
then have "f ` t \<subseteq> g" by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1404  | 
ultimately show False  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1405  | 
using g(2) using finite_subset by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1406  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1407  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1408  | 
lemma sequence_infinite_lemma:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1409  | 
fixes f :: "nat \<Rightarrow> 'a::t1_space"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1410  | 
assumes "\<forall>n. f n \<noteq> l"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1411  | 
and "(f \<longlongrightarrow> l) sequentially"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1412  | 
shows "infinite (range f)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1413  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1414  | 
assume "finite (range f)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1415  | 
then have "closed (range f)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1416  | 
by (rule finite_imp_closed)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1417  | 
then have "open (- range f)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1418  | 
by (rule open_Compl)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1419  | 
from assms(1) have "l \<in> - range f"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1420  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1421  | 
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
 | 
1422  | 
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
 | 
1423  | 
by (rule topological_tendstoD)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1424  | 
then show False  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1425  | 
unfolding eventually_sequentially  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1426  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1427  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1428  | 
|
| 69529 | 1429  | 
lemma Bolzano_Weierstrass_imp_closed:  | 
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1430  | 
  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
 | 
1431  | 
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
 | 
1432  | 
shows "closed s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1433  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1434  | 
  {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1435  | 
fix x l  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1436  | 
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
 | 
1437  | 
then have "l \<in> s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1438  | 
proof (cases "\<forall>n. x n \<noteq> l")  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1439  | 
case False  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1440  | 
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
 | 
1441  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1442  | 
case True note cas = this  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1443  | 
with as(2) have "infinite (range x)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1444  | 
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
 | 
1445  | 
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
 | 
1446  | 
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
 | 
1447  | 
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
 | 
1448  | 
using as cas by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1449  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1450  | 
}  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1451  | 
then show ?thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1452  | 
unfolding closed_sequential_limits by fast  | 
| 
 
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  | 
|
| 
69544
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
1455  | 
lemma closure_insert:  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
1456  | 
fixes x :: "'a::t1_space"  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
1457  | 
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
 | 
1458  | 
apply (rule closure_unique)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
1459  | 
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
 | 
1460  | 
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
 | 
1461  | 
apply (simp add: closure_minimal)  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
1462  | 
done  | 
| 
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
1463  | 
|
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1464  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1465  | 
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
 | 
1466  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1467  | 
lemma compact_Un [intro]:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1468  | 
assumes "compact s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1469  | 
and "compact t"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1470  | 
shows " compact (s \<union> t)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1471  | 
proof (rule compactI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1472  | 
fix f  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1473  | 
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
 | 
1474  | 
from * \<open>compact s\<close> obtain s' where "s' \<subseteq> f \<and> finite s' \<and> s \<subseteq> \<Union>s'"  | 
| 69529 | 1475  | 
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
 | 
1476  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1477  | 
from * \<open>compact t\<close> obtain t' where "t' \<subseteq> f \<and> finite t' \<and> t \<subseteq> \<Union>t'"  | 
| 69529 | 1478  | 
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
 | 
1479  | 
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
 | 
1480  | 
by (auto intro!: exI[of _ "s' \<union> t'"])  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1481  | 
qed  | 
| 
 
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  | 
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
 | 
1484  | 
by (induct set: finite) auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1485  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1486  | 
lemma compact_UN [intro]:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1487  | 
"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
 | 
1488  | 
by (rule compact_Union) auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1489  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1490  | 
lemma closed_Int_compact [intro]:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1491  | 
assumes "closed s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1492  | 
and "compact t"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1493  | 
shows "compact (s \<inter> t)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1494  | 
using compact_Int_closed [of t s] assms  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1495  | 
by (simp add: Int_commute)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1496  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1497  | 
lemma compact_Int [intro]:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1498  | 
fixes s t :: "'a :: t2_space set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1499  | 
assumes "compact s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1500  | 
and "compact t"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1501  | 
shows "compact (s \<inter> t)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1502  | 
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
 | 
1503  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1504  | 
lemma compact_sing [simp]: "compact {a}"
 | 
| 69529 | 1505  | 
unfolding compact_eq_Heine_Borel by auto  | 
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1506  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1507  | 
lemma compact_insert [simp]:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1508  | 
assumes "compact s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1509  | 
shows "compact (insert x s)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1510  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1511  | 
  have "compact ({x} \<union> s)"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1512  | 
using compact_sing assms by (rule compact_Un)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1513  | 
then show ?thesis by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1514  | 
qed  | 
| 
 
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  | 
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
 | 
1517  | 
by (induct set: finite) simp_all  | 
| 
 
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  | 
lemma open_delete:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1520  | 
fixes s :: "'a::t1_space set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1521  | 
  shows "open s \<Longrightarrow> open (s - {x})"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1522  | 
by (simp add: open_Diff)  | 
| 
 
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  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1525  | 
text\<open>Compactness expressed with filters\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1526  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1527  | 
lemma closure_iff_nhds_not_empty:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1528  | 
  "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
 | 
1529  | 
proof safe  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1530  | 
assume x: "x \<in> closure X"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1531  | 
fix S A  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1532  | 
  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
 | 
1533  | 
then have "x \<notin> closure (-S)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1534  | 
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
 | 
1535  | 
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
 | 
1536  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1537  | 
also have "\<dots> \<subseteq> closure (X \<inter> S)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1538  | 
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
 | 
1539  | 
  finally have "X \<inter> S \<noteq> {}" by auto
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1540  | 
  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
 | 
1541  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1542  | 
  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
 | 
1543  | 
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
 | 
1544  | 
show "x \<in> closure X"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1545  | 
by (simp add: closure_subset open_Compl)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1546  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1547  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1548  | 
lemma compact_filter:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1549  | 
"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
 | 
1550  | 
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
 | 
1551  | 
fix F  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1552  | 
assume "compact U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1553  | 
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
 | 
1554  | 
  then have "U \<noteq> {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1555  | 
by (auto simp: eventually_False)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1556  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1557  | 
  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
 | 
1558  | 
then have "\<forall>z\<in>Z. closed z"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1559  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1560  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1561  | 
have ev_Z: "\<And>z. z \<in> Z \<Longrightarrow> eventually (\<lambda>x. x \<in> z) F"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1562  | 
unfolding Z_def by (auto elim: eventually_mono intro: set_mp[OF closure_subset])  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1563  | 
  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
 | 
1564  | 
proof (intro allI impI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1565  | 
fix B assume "finite B" "B \<subseteq> Z"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1566  | 
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
 | 
1567  | 
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
 | 
1568  | 
    with F show "U \<inter> \<Inter>B \<noteq> {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1569  | 
by (intro notI) (simp add: eventually_False)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1570  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1571  | 
  ultimately have "U \<inter> \<Inter>Z \<noteq> {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1572  | 
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
 | 
1573  | 
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
 | 
1574  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1575  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1576  | 
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
 | 
1577  | 
unfolding eventually_inf eventually_nhds  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1578  | 
proof safe  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1579  | 
fix P Q R S  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1580  | 
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
 | 
1581  | 
    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
 | 
1582  | 
    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
 | 
1583  | 
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
 | 
1584  | 
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
 | 
1585  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1586  | 
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
 | 
1587  | 
by (metis eventually_bot)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1588  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1589  | 
fix A  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1590  | 
  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
 | 
1591  | 
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
 | 
1592  | 
have "F \<noteq> bot"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1593  | 
unfolding F_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1594  | 
proof (rule INF_filter_not_bot)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1595  | 
fix X  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1596  | 
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
 | 
1597  | 
    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
 | 
1598  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1599  | 
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
 | 
1600  | 
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
 | 
1601  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1602  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1603  | 
have "F \<le> principal U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1604  | 
unfolding F_def by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1605  | 
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
 | 
1606  | 
by (auto simp: le_filter_def eventually_principal)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1607  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1608  | 
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
 | 
1609  | 
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
 | 
1610  | 
by auto  | 
| 
 
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  | 
  { fix V assume "V \<in> A"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1613  | 
then have "F \<le> principal V"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1614  | 
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
 | 
1615  | 
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
 | 
1616  | 
by (auto simp: le_filter_def eventually_principal)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1617  | 
have "x \<in> closure V"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1618  | 
unfolding closure_iff_nhds_not_empty  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1619  | 
proof (intro impI allI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1620  | 
fix S A  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1621  | 
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
 | 
1622  | 
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
 | 
1623  | 
by (auto simp: eventually_nhds)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1624  | 
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
 | 
1625  | 
by (auto simp: eventually_inf)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1626  | 
      with x show "V \<inter> A \<noteq> {}"
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1627  | 
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
 | 
1628  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1629  | 
then have "x \<in> V"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1630  | 
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
 | 
1631  | 
}  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1632  | 
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
 | 
1633  | 
  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
 | 
1634  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1635  | 
|
| 69564 | 1636  | 
definition%important countably_compact :: "('a::topological_space) set \<Rightarrow> bool" where
 | 
1637  | 
"countably_compact U \<longleftrightarrow>  | 
|
1638  | 
(\<forall>A. countable A \<longrightarrow> (\<forall>a\<in>A. open a) \<longrightarrow> U \<subseteq> \<Union>A  | 
|
1639  | 
\<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
 | 
1640  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1641  | 
lemma countably_compactE:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1642  | 
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
 | 
1643  | 
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
 | 
1644  | 
using assms unfolding countably_compact_def by metis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1645  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1646  | 
lemma countably_compactI:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1647  | 
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
 | 
1648  | 
shows "countably_compact s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1649  | 
using assms unfolding countably_compact_def by metis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1650  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1651  | 
lemma compact_imp_countably_compact: "compact U \<Longrightarrow> countably_compact U"  | 
| 69529 | 1652  | 
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
 | 
1653  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1654  | 
lemma countably_compact_imp_compact:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1655  | 
assumes "countably_compact U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1656  | 
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
 | 
1657  | 
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
 | 
1658  | 
shows "compact U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1659  | 
using \<open>countably_compact U\<close>  | 
| 69529 | 1660  | 
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
 | 
1661  | 
proof safe  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1662  | 
fix A  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1663  | 
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
 | 
1664  | 
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
 | 
1665  | 
  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
 | 
1666  | 
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
 | 
1667  | 
unfolding C_def using ccover by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1668  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1669  | 
have "\<Union>A \<inter> U \<subseteq> \<Union>C"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1670  | 
proof safe  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1671  | 
fix x a  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1672  | 
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
 | 
1673  | 
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
 | 
1674  | 
by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1675  | 
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
 | 
1676  | 
unfolding C_def by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1677  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1678  | 
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
 | 
1679  | 
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
 | 
1680  | 
using * by metis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1681  | 
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
 | 
1682  | 
by (auto simp: C_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1683  | 
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
 | 
1684  | 
unfolding bchoice_iff Bex_def ..  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1685  | 
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
 | 
1686  | 
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
 | 
1687  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1688  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1689  | 
proposition countably_compact_imp_compact_second_countable:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1690  | 
"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
 | 
1691  | 
proof (rule countably_compact_imp_compact)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1692  | 
fix T and x :: 'a  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1693  | 
assume "open T" "x \<in> T"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1694  | 
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
 | 
1695  | 
"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
 | 
1696  | 
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
 | 
1697  | 
by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1698  | 
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
 | 
1699  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1700  | 
lemma countably_compact_eq_compact:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1701  | 
"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
 | 
1702  | 
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
 | 
1703  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1704  | 
subsubsection\<open>Sequential compactness\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1705  | 
|
| 69564 | 1706  | 
definition%important seq_compact :: "'a::topological_space set \<Rightarrow> bool" where  | 
1707  | 
"seq_compact S \<longleftrightarrow>  | 
|
1708  | 
(\<forall>f. (\<forall>n. f n \<in> S)  | 
|
1709  | 
\<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
 | 
1710  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1711  | 
lemma seq_compactI:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1712  | 
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
 | 
1713  | 
shows "seq_compact S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1714  | 
unfolding seq_compact_def using assms by fast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1715  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1716  | 
lemma seq_compactE:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1717  | 
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
 | 
1718  | 
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
 | 
1719  | 
using assms unfolding seq_compact_def by fast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1720  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1721  | 
lemma closed_sequentially: (* TODO: move upwards *)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1722  | 
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
 | 
1723  | 
shows "l \<in> s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1724  | 
proof (rule ccontr)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1725  | 
assume "l \<notin> s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1726  | 
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
 | 
1727  | 
by (fast intro: topological_tendstoD)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1728  | 
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
 | 
1729  | 
by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1730  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1731  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1732  | 
lemma seq_compact_Int_closed:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1733  | 
assumes "seq_compact s" and "closed t"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1734  | 
shows "seq_compact (s \<inter> t)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1735  | 
proof (rule seq_compactI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1736  | 
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
 | 
1737  | 
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
 | 
1738  | 
by simp_all  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1739  | 
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
 | 
1740  | 
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
 | 
1741  | 
by (rule seq_compactE)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1742  | 
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
 | 
1743  | 
by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1744  | 
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
 | 
1745  | 
by (rule closed_sequentially)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1746  | 
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
 | 
1747  | 
by fast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1748  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1749  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1750  | 
lemma seq_compact_closed_subset:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1751  | 
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
 | 
1752  | 
shows "seq_compact s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1753  | 
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
 | 
1754  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1755  | 
lemma seq_compact_imp_countably_compact:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1756  | 
fixes U :: "'a :: first_countable_topology set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1757  | 
assumes "seq_compact U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1758  | 
shows "countably_compact U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1759  | 
proof (safe intro!: countably_compactI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1760  | 
fix A  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1761  | 
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
 | 
1762  | 
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
 | 
1763  | 
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
 | 
1764  | 
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
 | 
1765  | 
proof cases  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1766  | 
assume "finite A"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1767  | 
with A show ?thesis by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1768  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1769  | 
assume "infinite A"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1770  | 
    then have "A \<noteq> {}" by auto
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1771  | 
show ?thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1772  | 
proof (rule ccontr)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1773  | 
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
 | 
1774  | 
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
 | 
1775  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1776  | 
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
 | 
1777  | 
by metis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1778  | 
      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
 | 
1779  | 
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
 | 
1780  | 
        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
 | 
1781  | 
then have "range X \<subseteq> U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1782  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1783  | 
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
 | 
1784  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1785  | 
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
 | 
1786  | 
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
 | 
1787  | 
      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
 | 
1788  | 
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
 | 
1789  | 
unfolding tendsto_def by (auto simp: comp_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1790  | 
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
 | 
1791  | 
by (auto simp: eventually_sequentially)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1792  | 
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
 | 
1793  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1794  | 
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
 | 
1795  | 
by (auto intro!: exI[of _ "max n N"])  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1796  | 
ultimately show False  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1797  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1798  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1799  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1800  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1801  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1802  | 
lemma compact_imp_seq_compact:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1803  | 
fixes U :: "'a :: first_countable_topology set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1804  | 
assumes "compact U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1805  | 
shows "seq_compact U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1806  | 
unfolding seq_compact_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1807  | 
proof safe  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1808  | 
fix X :: "nat \<Rightarrow> 'a"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1809  | 
assume "\<forall>n. X n \<in> U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1810  | 
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
 | 
1811  | 
by (auto simp: eventually_filtermap)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1812  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1813  | 
have "filtermap X sequentially \<noteq> bot"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1814  | 
by (simp add: trivial_limit_def eventually_filtermap)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1815  | 
ultimately  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1816  | 
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
 | 
1817  | 
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
 | 
1818  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1819  | 
from countable_basis_at_decseq[of x]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1820  | 
obtain A where A:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1821  | 
"\<And>i. open (A i)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1822  | 
"\<And>i. x \<in> A i"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1823  | 
"\<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
 | 
1824  | 
by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1825  | 
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
 | 
1826  | 
  {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1827  | 
fix n i  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1828  | 
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
 | 
1829  | 
proof (rule ccontr)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1830  | 
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
 | 
1831  | 
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
 | 
1832  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1833  | 
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
 | 
1834  | 
by (auto simp: eventually_filtermap eventually_sequentially)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1835  | 
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
 | 
1836  | 
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
 | 
1837  | 
ultimately have "eventually (\<lambda>x. False) ?F"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1838  | 
by (auto simp: eventually_inf)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1839  | 
with x show False  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1840  | 
by (simp add: eventually_False)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1841  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1842  | 
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
 | 
1843  | 
unfolding s_def by (auto intro: someI2_ex)  | 
| 
 
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  | 
note s = this  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1846  | 
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
 | 
1847  | 
have "strict_mono r"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1848  | 
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
 | 
1849  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1850  | 
have "(\<lambda>n. X (r n)) \<longlonglongrightarrow> x"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1851  | 
proof (rule topological_tendstoI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1852  | 
fix S  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1853  | 
assume "open S" "x \<in> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1854  | 
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
 | 
1855  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1856  | 
moreover  | 
| 
 
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  | 
fix i  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1859  | 
assume "Suc 0 \<le> i"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1860  | 
then have "X (r i) \<in> A i"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1861  | 
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
 | 
1862  | 
}  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1863  | 
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
 | 
1864  | 
by (auto simp: eventually_sequentially)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1865  | 
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
 | 
1866  | 
by eventually_elim auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1867  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1868  | 
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
 | 
1869  | 
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
 | 
1870  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1871  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1872  | 
lemma countably_compact_imp_acc_point:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1873  | 
assumes "countably_compact s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1874  | 
and "countable t"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1875  | 
and "infinite t"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1876  | 
and "t \<subseteq> s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1877  | 
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
 | 
1878  | 
proof (rule ccontr)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1879  | 
  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
 | 
1880  | 
note \<open>countably_compact s\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1881  | 
moreover have "\<forall>t\<in>C. open t"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1882  | 
by (auto simp: C_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1883  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1884  | 
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
 | 
1885  | 
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
 | 
1886  | 
have "s \<subseteq> \<Union>C"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1887  | 
using \<open>t \<subseteq> s\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1888  | 
unfolding C_def  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1889  | 
apply (safe dest!: s)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1890  | 
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
 | 
1891  | 
apply (auto intro!: interiorI simp add: finite_subset)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1892  | 
done  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1893  | 
moreover  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1894  | 
from \<open>countable t\<close> have "countable C"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1895  | 
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
 | 
1896  | 
ultimately  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1897  | 
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
 | 
1898  | 
by (rule countably_compactE)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1899  | 
  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
 | 
1900  | 
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
 | 
1901  | 
by (metis (lifting) finite_subset_image C_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1902  | 
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
 | 
1903  | 
using interior_subset by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1904  | 
moreover have "finite (\<Union>E)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1905  | 
using E by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1906  | 
ultimately show False using \<open>infinite t\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1907  | 
by (auto simp: finite_subset)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1908  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1909  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1910  | 
lemma countable_acc_point_imp_seq_compact:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1911  | 
fixes s :: "'a::first_countable_topology set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1912  | 
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
 | 
1913  | 
(\<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
 | 
1914  | 
shows "seq_compact s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1915  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1916  | 
  {
 | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1917  | 
fix f :: "nat \<Rightarrow> 'a"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1918  | 
assume f: "\<forall>n. f n \<in> s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1919  | 
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
 | 
1920  | 
proof (cases "finite (range f)")  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1921  | 
case True  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1922  | 
      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
 | 
1923  | 
using pigeonhole_infinite[OF _ True] by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1924  | 
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
 | 
1925  | 
using infinite_enumerate by blast  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1926  | 
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
 | 
1927  | 
by (simp add: fr o_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1928  | 
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
 | 
1929  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1930  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1931  | 
case False  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1932  | 
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
 | 
1933  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1934  | 
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
 | 
1935  | 
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
 | 
1936  | 
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
 | 
1937  | 
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
 | 
1938  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1939  | 
}  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1940  | 
then show ?thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1941  | 
unfolding seq_compact_def by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1942  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1943  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1944  | 
lemma seq_compact_eq_countably_compact:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1945  | 
fixes U :: "'a :: first_countable_topology set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1946  | 
shows "seq_compact U \<longleftrightarrow> countably_compact U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1947  | 
using  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1948  | 
countable_acc_point_imp_seq_compact  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1949  | 
countably_compact_imp_acc_point  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1950  | 
seq_compact_imp_countably_compact  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1951  | 
by metis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1952  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1953  | 
lemma seq_compact_eq_acc_point:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1954  | 
fixes s :: "'a :: first_countable_topology set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1955  | 
shows "seq_compact s \<longleftrightarrow>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1956  | 
(\<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
 | 
1957  | 
using  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1958  | 
countable_acc_point_imp_seq_compact[of s]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1959  | 
countably_compact_imp_acc_point[of s]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1960  | 
seq_compact_imp_countably_compact[of s]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1961  | 
by metis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1962  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1963  | 
lemma seq_compact_eq_compact:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1964  | 
fixes U :: "'a :: second_countable_topology set"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1965  | 
shows "seq_compact U \<longleftrightarrow> compact U"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1966  | 
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
 | 
1967  | 
|
| 69529 | 1968  | 
proposition Bolzano_Weierstrass_imp_seq_compact:  | 
| 
69516
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1969  | 
  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
 | 
1970  | 
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
 | 
1971  | 
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
 | 
1972  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1973  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1974  | 
subsection \<open>Continuity\<close>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1975  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1976  | 
lemma continuous_at_imp_continuous_within:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1977  | 
"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
 | 
1978  | 
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
 | 
1979  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1980  | 
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
 | 
1981  | 
by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1982  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1983  | 
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
 | 
1984  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1985  | 
lemma continuous_within_subset:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1986  | 
"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
 | 
1987  | 
unfolding continuous_within by(metis tendsto_within_subset)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1988  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1989  | 
lemma continuous_on_interior:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1990  | 
"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
 | 
1991  | 
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
 | 
1992  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1993  | 
lemma continuous_on_eq:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1994  | 
"\<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
 | 
1995  | 
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
 | 
1996  | 
by simp  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1997  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
1998  | 
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
 | 
1999  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2000  | 
lemma continuous_within_sequentiallyI:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2001  | 
  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
 | 
2002  | 
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
 | 
2003  | 
shows "continuous (at a within s) f"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2004  | 
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
 | 
2005  | 
by (auto intro!: sequentially_imp_eventually_within)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2006  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2007  | 
lemma continuous_within_tendsto_compose:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2008  | 
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
 | 
2009  | 
assumes "continuous (at a within s) f"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2010  | 
"eventually (\<lambda>n. x n \<in> s) F"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2011  | 
"(x \<longlongrightarrow> a) F "  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2012  | 
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
 | 
2013  | 
proof -  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2014  | 
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
 | 
2015  | 
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
 | 
2016  | 
show ?thesis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2017  | 
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
 | 
2018  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2019  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2020  | 
lemma continuous_within_tendsto_compose':  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2021  | 
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
 | 
2022  | 
assumes "continuous (at a within s) f"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2023  | 
"\<And>n. x n \<in> s"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2024  | 
"(x \<longlongrightarrow> a) F "  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2025  | 
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
 | 
2026  | 
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
 | 
2027  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2028  | 
lemma continuous_within_sequentially:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2029  | 
  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
 | 
2030  | 
shows "continuous (at a within s) f \<longleftrightarrow>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2031  | 
(\<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
 | 
2032  | 
\<longrightarrow> ((f \<circ> x) \<longlongrightarrow> f a) sequentially)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2033  | 
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
 | 
2034  | 
continuous_within_sequentiallyI[of a s f]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2035  | 
by (auto simp: o_def)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2036  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2037  | 
lemma continuous_at_sequentiallyI:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2038  | 
  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
 | 
2039  | 
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
 | 
2040  | 
shows "continuous (at a) f"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2041  | 
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
 | 
2042  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2043  | 
lemma continuous_at_sequentially:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2044  | 
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
 | 
2045  | 
shows "continuous (at a) f \<longleftrightarrow>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2046  | 
(\<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
 | 
2047  | 
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
 | 
2048  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2049  | 
lemma continuous_on_sequentiallyI:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2050  | 
  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
 | 
2051  | 
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
 | 
2052  | 
shows "continuous_on s f"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2053  | 
using assms unfolding continuous_on_eq_continuous_within  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2054  | 
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
 | 
2055  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2056  | 
lemma continuous_on_sequentially:  | 
| 
69544
 
5aa5a8d6e5b5
split off theorems involving classes below metric_space and real_normed_vector
 
immler 
parents: 
69529 
diff
changeset
 | 
2057  | 
  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
 | 
2058  | 
shows "continuous_on s f \<longleftrightarrow>  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2059  | 
(\<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
 | 
2060  | 
--> ((f \<circ> x) \<longlongrightarrow> f a) sequentially)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2061  | 
(is "?lhs = ?rhs")  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2062  | 
proof  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2063  | 
assume ?rhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2064  | 
then show ?lhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2065  | 
using continuous_within_sequentially[of _ s f]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2066  | 
unfolding continuous_on_eq_continuous_within  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2067  | 
by auto  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2068  | 
next  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2069  | 
assume ?lhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2070  | 
then show ?rhs  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2071  | 
unfolding continuous_on_eq_continuous_within  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2072  | 
using continuous_within_sequentially[of _ s f]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2073  | 
by auto  | 
| 
 
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  | 
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
 | 
2077  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2078  | 
lemma continuous_at_open:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2079  | 
"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
 | 
2080  | 
unfolding continuous_within_topological [of x UNIV f]  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2081  | 
unfolding imp_conjL  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2082  | 
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
 | 
2083  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2084  | 
lemma continuous_imp_tendsto:  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2085  | 
assumes "continuous (at x0) f"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2086  | 
and "x \<longlonglongrightarrow> x0"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2087  | 
shows "(f \<circ> x) \<longlonglongrightarrow> (f x0)"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2088  | 
proof (rule topological_tendstoI)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2089  | 
fix S  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2090  | 
assume "open S" "f x0 \<in> S"  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2091  | 
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
 | 
2092  | 
using assms continuous_at_open by metis  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2093  | 
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
 | 
2094  | 
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
 | 
2095  | 
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
 | 
2096  | 
using T_def by (auto elim!: eventually_mono)  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2097  | 
qed  | 
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2098  | 
|
| 
 
09bb8f470959
most of Topology_Euclidean_Space (now Elementary_Topology) requires fewer dependencies
 
immler 
parents:  
diff
changeset
 | 
2099  | 
end  |