Skip to content

Commit fbda364

Browse files
urkuddagurtomas
authored andcommitted
feat(Topology/Sequences): add missing instances (#13460)
- Subtype of a Fréchet-Urysohn space is a Fréchet-Urysohn space; - Disjoint union (`Sum`, `Sigma`) of sequential spaces is a sequential space.
1 parent 7531ac7 commit fbda364

File tree

2 files changed

+49
-2
lines changed

2 files changed

+49
-2
lines changed

Mathlib/Topology/Order.lean

+4
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,10 @@ theorem isOpen_coinduced {t : TopologicalSpace α} {s : Set β} {f : α → β}
394394
Iff.rfl
395395
#align is_open_coinduced isOpen_coinduced
396396

397+
theorem isClosed_coinduced {t : TopologicalSpace α} {s : Set β} {f : α → β} :
398+
IsClosed[t.coinduced f] s ↔ IsClosed (f ⁻¹' s) := by
399+
simp only [← isOpen_compl_iff, isOpen_coinduced (f := f), preimage_compl]
400+
397401
theorem preimage_nhds_coinduced [TopologicalSpace α] {π : α → β} {s : Set β} {a : α}
398402
(hs : s ∈ @nhds β (TopologicalSpace.coinduced π ‹_›) (π a)) : π ⁻¹' s ∈ 𝓝 a := by
399403
letI := TopologicalSpace.coinduced π ‹_›

Mathlib/Topology/Sequences.lean

+45-2
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,20 @@ instance (priority := 100) FrechetUrysohnSpace.to_sequentialSpace [FrechetUrysoh
165165
fun s hs => by rw [← closure_eq_iff_isClosed, ← seqClosure_eq_closure, hs.seqClosure_eq]⟩
166166
#align frechet_urysohn_space.to_sequential_space FrechetUrysohnSpace.to_sequentialSpace
167167

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+
168182
/-- In a sequential space, a set is closed iff it's sequentially closed. -/
169183
theorem isSeqClosed_iff_isClosed [SequentialSpace X] {M : Set X} : IsSeqClosed M ↔ IsClosed M :=
170184
⟨IsSeqClosed.isClosed, IsClosed.isSeqClosed⟩
@@ -194,15 +208,44 @@ theorem continuous_iff_seqContinuous [SequentialSpace X] {f : X → Y} :
194208
⟨Continuous.seqContinuous, SeqContinuous.continuous⟩
195209
#align continuous_iff_seq_continuous continuous_iff_seqContinuous
196210

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+
197229
theorem QuotientMap.sequentialSpace [SequentialSpace X] {f : X → Y} (hf : QuotientMap f) :
198230
SequentialSpace Y :=
199-
fun _s hs => hf.isClosed_preimage.mp <| (hs.preimage <| hf.continuous.seqContinuous).isClosed⟩
231+
hf.2.symm ▸ .coinduced f
200232
#align quotient_map.sequential_space QuotientMap.sequentialSpace
201233

202234
/-- 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) :=
204237
quotientMap_quot_mk.sequentialSpace
205238

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+
206249
end TopologicalSpace
207250

208251
section SeqCompact

0 commit comments

Comments
 (0)