@@ -5,9 +5,8 @@ Authors: Yaël Dillies
5
5
-/
6
6
import Mathlib.Data.Set.Image
7
7
import Mathlib.Topology.Bases
8
- import Mathlib.Tactic.Peel
9
8
import Mathlib.Topology.Inseparable
10
- import Mathlib.Topology.Compactness.Compact
9
+ import Mathlib.Topology.Compactness.Exterior
11
10
12
11
/-!
13
12
# Alexandrov-discrete topological spaces
@@ -21,8 +20,6 @@ minimal neighborhood, which we call the *exterior* of the set.
21
20
## Main declarations
22
21
23
22
* `AlexandrovDiscrete`: Prop-valued typeclass for a topological space to be Alexandrov-discrete
24
- * `exterior`: Intersection of all neighborhoods of a set. When the space is Alexandrov-discrete,
25
- this is the minimal neighborhood of the set.
26
23
27
24
## Notes
28
25
@@ -119,89 +116,6 @@ end AlexandrovDiscrete
119
116
120
117
variable {s t : Set α} {a x y : α}
121
118
122
- /-- The *exterior* of a set is the intersection of all its neighborhoods. In an Alexandrov-discrete
123
- space, this is the smallest neighborhood of the set.
124
-
125
- Note that this construction is unnamed in the literature. We choose the name in analogy to
126
- `interior`. -/
127
- def exterior (s : Set α) : Set α := (𝓝ˢ s).ker
128
-
129
- lemma exterior_singleton_eq_ker_nhds (a : α) : exterior {a} = (𝓝 a).ker := by simp [exterior]
130
-
131
- @[simp]
132
- theorem mem_exterior_singleton : x ∈ exterior {y} ↔ x ⤳ y := by
133
- rw [exterior_singleton_eq_ker_nhds, ker_nhds_eq_specializes, mem_setOf]
134
-
135
- lemma exterior_def (s : Set α) : exterior s = ⋂₀ {t : Set α | IsOpen t ∧ s ⊆ t} :=
136
- (hasBasis_nhdsSet _).ker.trans sInter_eq_biInter.symm
137
-
138
- lemma mem_exterior : a ∈ exterior s ↔ ∀ U, IsOpen U → s ⊆ U → a ∈ U := by simp [exterior_def]
139
-
140
- lemma subset_exterior_iff : s ⊆ exterior t ↔ ∀ U, IsOpen U → t ⊆ U → s ⊆ U := by
141
- simp [exterior_def]
142
-
143
- lemma subset_exterior : s ⊆ exterior s := subset_exterior_iff.2 fun _ _ ↦ id
144
-
145
- lemma exterior_minimal (h₁ : s ⊆ t) (h₂ : IsOpen t) : exterior s ⊆ t := by
146
- rw [exterior_def]; exact sInter_subset_of_mem ⟨h₂, h₁⟩
147
-
148
- lemma IsOpen.exterior_eq (h : IsOpen s) : exterior s = s :=
149
- (exterior_minimal Subset.rfl h).antisymm subset_exterior
150
-
151
- lemma IsOpen.exterior_subset (ht : IsOpen t) : exterior s ⊆ t ↔ s ⊆ t :=
152
- ⟨subset_exterior.trans, fun h ↦ exterior_minimal h ht⟩
153
-
154
- @[deprecated (since := "2024-09-18")] alias IsOpen.exterior_subset_iff := IsOpen.exterior_subset
155
-
156
- @[simp]
157
- theorem exterior_iUnion {ι : Sort *} (s : ι → Set α) :
158
- exterior (⋃ i, s i) = ⋃ i, exterior (s i) := by
159
- simp only [exterior, nhdsSet_iUnion, ker_iSup]
160
-
161
- @[simp]
162
- theorem exterior_union (s t : Set α) : exterior (s ∪ t) = exterior s ∪ exterior t := by
163
- simp only [exterior, nhdsSet_union, ker_sup]
164
-
165
- @[simp]
166
- theorem exterior_sUnion (S : Set (Set α)) : exterior (⋃₀ S) = ⋃ s ∈ S, exterior s := by
167
- simp only [sUnion_eq_biUnion, exterior_iUnion]
168
-
169
- theorem mem_exterior_iff_specializes : a ∈ exterior s ↔ ∃ b ∈ s, a ⤳ b := calc
170
- a ∈ exterior s ↔ a ∈ exterior (⋃ x ∈ s, {x}) := by simp
171
- _ ↔ ∃ b ∈ s, a ⤳ b := by
172
- simp only [exterior_iUnion, mem_exterior_singleton, mem_iUnion₂, exists_prop]
173
-
174
- @[mono] lemma exterior_mono : Monotone (exterior : Set α → Set α) :=
175
- fun _s _t h ↦ ker_mono <| nhdsSet_mono h
176
-
177
- /-- This name was used to be used for the `Iff` version,
178
- see `exterior_subset_exterior_iff_nhdsSet`.
179
- -/
180
- @[gcongr] lemma exterior_subset_exterior (h : s ⊆ t) : exterior s ⊆ exterior t := exterior_mono h
181
-
182
- @[simp] lemma exterior_subset_exterior_iff_nhdsSet : exterior s ⊆ exterior t ↔ 𝓝ˢ s ≤ 𝓝ˢ t := by
183
- simp (config := {contextual := true }) only [subset_exterior_iff, (hasBasis_nhdsSet _).ge_iff,
184
- and_imp, IsOpen.mem_nhdsSet, IsOpen.exterior_subset]
185
-
186
- theorem exterior_eq_exterior_iff_nhdsSet : exterior s = exterior t ↔ 𝓝ˢ s = 𝓝ˢ t := by
187
- simp [le_antisymm_iff]
188
-
189
- lemma specializes_iff_exterior_subset : x ⤳ y ↔ exterior {x} ⊆ exterior {y} := by
190
- simp [Specializes]
191
-
192
- @[simp] lemma exterior_empty : exterior (∅ : Set α) = ∅ := isOpen_empty.exterior_eq
193
- @[simp] lemma exterior_univ : exterior (univ : Set α) = univ := isOpen_univ.exterior_eq
194
-
195
- @[simp] lemma exterior_eq_empty : exterior s = ∅ ↔ s = ∅ :=
196
- ⟨eq_bot_mono subset_exterior, by rintro rfl; exact exterior_empty⟩
197
-
198
- @[simp] lemma nhdsSet_exterior (s : Set α) : 𝓝ˢ (exterior s) = 𝓝ˢ s := by
199
- refine le_antisymm ((hasBasis_nhdsSet _).ge_iff.2 ?_) (nhdsSet_mono subset_exterior)
200
- exact fun U ⟨hUo, hsU⟩ ↦ hUo.mem_nhdsSet.2 <| hUo.exterior_subset.2 hsU
201
-
202
- @[simp] lemma exterior_exterior (s : Set α) : exterior (exterior s) = exterior s := by
203
- simp only [exterior_eq_exterior_iff_nhdsSet, nhdsSet_exterior]
204
-
205
119
lemma Inducing.alexandrovDiscrete [AlexandrovDiscrete α] {f : β → α} (h : Inducing f) :
206
120
AlexandrovDiscrete β where
207
121
isOpen_sInter S hS := by
@@ -210,18 +124,6 @@ lemma Inducing.alexandrovDiscrete [AlexandrovDiscrete α] {f : β → α} (h : I
210
124
refine ⟨_, isOpen_iInter₂ hU, ?_⟩
211
125
simp_rw [preimage_iInter, htU, sInter_eq_biInter]
212
126
213
- theorem IsCompact.exterior_iff : IsCompact (exterior s) ↔ IsCompact s := by
214
- simp only [isCompact_iff_finite_subcover]
215
- peel with ι U hUo
216
- simp only [(isOpen_iUnion hUo).exterior_subset,
217
- (isOpen_iUnion fun i ↦ isOpen_iUnion fun _ ↦ hUo i).exterior_subset]
218
-
219
- protected alias ⟨IsCompact.of_exterior, IsCompact.exterior⟩ := IsCompact.exterior_iff
220
-
221
- @[deprecated IsCompact.exterior (since := "2024-09-18")]
222
- lemma Set.Finite.isCompact_exterior (hs : s.Finite) : IsCompact (exterior s) :=
223
- hs.isCompact.exterior
224
-
225
127
end
226
128
227
129
lemma AlexandrovDiscrete.sup {t₁ t₂ : TopologicalSpace α} (_ : @AlexandrovDiscrete α t₁)
@@ -283,7 +185,7 @@ instance AlexandrovDiscrete.toFirstCountable : FirstCountableTopology α where
283
185
instance AlexandrovDiscrete.toLocallyCompactSpace : LocallyCompactSpace α where
284
186
local_compact_nhds a _U hU := ⟨exterior {a},
285
187
isOpen_exterior.mem_nhds <| subset_exterior <| mem_singleton _,
286
- exterior_singleton_subset_iff_mem_nhds.2 hU, (finite_singleton _).isCompact .exterior⟩
188
+ exterior_singleton_subset_iff_mem_nhds.2 hU, isCompact_singleton .exterior⟩
287
189
288
190
instance Subtype.instAlexandrovDiscrete {p : α → Prop } : AlexandrovDiscrete {a // p a} :=
289
191
inducing_subtype_val.alexandrovDiscrete
0 commit comments