@@ -165,6 +165,20 @@ instance (priority := 100) FrechetUrysohnSpace.to_sequentialSpace [FrechetUrysoh
165
165
⟨fun s hs => by rw [← closure_eq_iff_isClosed, ← seqClosure_eq_closure, hs.seqClosure_eq]⟩
166
166
#align frechet_urysohn_space.to_sequential_space FrechetUrysohnSpace.to_sequentialSpace
167
167
168
+ theorem Inducing.frechetUrysohnSpace [FrechetUrysohnSpace Y] {f : X → Y} (hf : Inducing f) :
169
+ FrechetUrysohnSpace X := by
170
+ refine ⟨fun s x hx ↦ ?_⟩
171
+ rw [hf.closure_eq_preimage_closure_image, mem_preimage, mem_closure_iff_seq_limit] at hx
172
+ rcases hx with ⟨u, hus, hu⟩
173
+ choose v hv hvu using hus
174
+ refine ⟨v, hv, ?_⟩
175
+ simpa only [hf.tendsto_nhds_iff, (· ∘ ·), hvu]
176
+
177
+ /-- Subtype of a Fréchet-Urysohn space is a Fréchet-Urysohn space. -/
178
+ instance Subtype.instFrechetUrysohnSpace [FrechetUrysohnSpace X] {p : X → Prop } :
179
+ FrechetUrysohnSpace (Subtype p) :=
180
+ inducing_subtype_val.frechetUrysohnSpace
181
+
168
182
/-- In a sequential space, a set is closed iff it's sequentially closed. -/
169
183
theorem isSeqClosed_iff_isClosed [SequentialSpace X] {M : Set X} : IsSeqClosed M ↔ IsClosed M :=
170
184
⟨IsSeqClosed.isClosed, IsClosed.isSeqClosed⟩
@@ -194,15 +208,44 @@ theorem continuous_iff_seqContinuous [SequentialSpace X] {f : X → Y} :
194
208
⟨Continuous.seqContinuous, SeqContinuous.continuous⟩
195
209
#align continuous_iff_seq_continuous continuous_iff_seqContinuous
196
210
211
+ theorem SequentialSpace.coinduced [SequentialSpace X] (f : X → Y) :
212
+ @SequentialSpace Y (.coinduced f ‹_›) :=
213
+ letI : TopologicalSpace Y := .coinduced f ‹_›
214
+ ⟨fun s hs ↦ isClosed_coinduced.2 (hs.preimage continuous_coinduced_rng.seqContinuous).isClosed⟩
215
+
216
+ protected theorem SequentialSpace.iSup {ι : Sort *} {t : ι → TopologicalSpace X}
217
+ (h : ∀ i, @SequentialSpace X (t i)) : @SequentialSpace X (⨆ i, t i) := by
218
+ letI : TopologicalSpace X := ⨆ i, t i
219
+ refine ⟨fun s hs ↦ isClosed_iSup_iff.2 fun i ↦ ?_⟩
220
+ letI := t i
221
+ exact IsSeqClosed.isClosed fun u x hus hux ↦ hs hus <| hux.mono_right <| nhds_mono <| le_iSup _ _
222
+
223
+ protected theorem SequentialSpace.sup {t₁ t₂ : TopologicalSpace X}
224
+ (h₁ : @SequentialSpace X t₁) (h₂ : @SequentialSpace X t₂) :
225
+ @SequentialSpace X (t₁ ⊔ t₂) := by
226
+ rw [sup_eq_iSup]
227
+ exact .iSup <| Bool.forall_bool.2 ⟨h₂, h₁⟩
228
+
197
229
theorem QuotientMap.sequentialSpace [SequentialSpace X] {f : X → Y} (hf : QuotientMap f) :
198
230
SequentialSpace Y :=
199
- ⟨ fun _s hs => hf.isClosed_preimage.mp <| (hs.preimage <| hf.continuous.seqContinuous).isClosed⟩
231
+ hf.2 .symm ▸ .coinduced f
200
232
#align quotient_map.sequential_space QuotientMap.sequentialSpace
201
233
202
234
/-- The quotient of a sequential space is a sequential space. -/
203
- instance [SequentialSpace X] {s : Setoid X} : SequentialSpace (Quotient s) :=
235
+ instance Quotient.instSequentialSpace [SequentialSpace X] {s : Setoid X} :
236
+ SequentialSpace (Quotient s) :=
204
237
quotientMap_quot_mk.sequentialSpace
205
238
239
+ /-- The sum (disjoint union) of two sequential spaces is a sequential space. -/
240
+ instance Sum.instSequentialSpace [SequentialSpace X] [SequentialSpace Y] :
241
+ SequentialSpace (X ⊕ Y) :=
242
+ .sup (.coinduced Sum.inl) (.coinduced Sum.inr)
243
+
244
+ /-- The disjoint union of an indexed family of sequential spaces is a sequential space. -/
245
+ instance Sigma.instSequentialSpace {ι : Type *} {X : ι → Type *}
246
+ [∀ i, TopologicalSpace (X i)] [∀ i, SequentialSpace (X i)] : SequentialSpace (Σ i, X i) :=
247
+ .iSup fun _ ↦ .coinduced _
248
+
206
249
end TopologicalSpace
207
250
208
251
section SeqCompact
0 commit comments