Skip to content

Commit 6c37355

Browse files
committed
feat(Topology): infinite T2 spaces (#30661)
1 parent 3a0b00e commit 6c37355

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6882,6 +6882,7 @@ import Mathlib.Topology.Metrizable.ContinuousMap
68826882
import Mathlib.Topology.Metrizable.Real
68836883
import Mathlib.Topology.Metrizable.Uniformity
68846884
import Mathlib.Topology.Metrizable.Urysohn
6885+
import Mathlib.Topology.NatEmbedding
68856886
import Mathlib.Topology.Neighborhoods
68866887
import Mathlib.Topology.NhdsKer
68876888
import Mathlib.Topology.NhdsSet

Mathlib/Topology/NatEmbedding.lean

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/-
2+
Copyright (c) 2023 Yury Kudryashov. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Yury Kudryashov
5+
-/
6+
import Mathlib.Topology.Homeomorph.Lemmas
7+
8+
/-!
9+
# Infinite Hausdorff topological spaces
10+
11+
In this file we prove several properties of infinite Hausdorff topological spaces.
12+
13+
- `exists_seq_infinite_isOpen_pairwise_disjoint`: there exists a sequence
14+
of pairwise disjoint infinite open sets;
15+
- `exists_topology_isEmbedding_nat`: there exista a topological embedding of `ℕ` into the space;
16+
- `exists_infinite_discreteTopology`: there exists an infinite subset with discrete topology.
17+
-/
18+
19+
open Function Filter Set Topology
20+
21+
variable (X : Type*) [TopologicalSpace X] [T2Space X] [Infinite X]
22+
23+
/-- In an infinite Hausdorff topological space, there exists a sequence of pairwise disjoint
24+
infinite open sets. -/
25+
theorem exists_seq_infinite_isOpen_pairwise_disjoint :
26+
∃ U : ℕ → Set X, (∀ n, (U n).Infinite) ∧ (∀ n, IsOpen (U n)) ∧ Pairwise (Disjoint on U) := by
27+
suffices ∃ U : ℕ → Set X, (∀ n, (U n).Nonempty) ∧ (∀ n, IsOpen (U n)) ∧
28+
Pairwise (Disjoint on U) by
29+
rcases this with ⟨U, hne, ho, hd⟩
30+
refine ⟨fun n ↦ ⋃ m, U (.pair n m), ?_, fun _ ↦ isOpen_iUnion fun _ ↦ ho _, ?_⟩
31+
· refine fun n ↦ infinite_iUnion fun i j hij ↦ ?_
32+
suffices n.pair i = n.pair j by simpa
33+
apply hd.eq
34+
simpa [hij, onFun] using (hne _).ne_empty
35+
· refine fun n n' hne ↦ disjoint_iUnion_left.2 fun m ↦ disjoint_iUnion_right.2 fun m' ↦ hd ?_
36+
simp [hne]
37+
by_cases h : DiscreteTopology X
38+
· refine ⟨fun n ↦ {Infinite.natEmbedding X n}, fun _ ↦ singleton_nonempty _,
39+
fun _ ↦ isOpen_discrete _, fun _ _ h ↦ ?_⟩
40+
simpa using h
41+
· simp only [discreteTopology_iff_nhds_ne, not_forall, ← ne_eq, ← neBot_iff] at h
42+
rcases h with ⟨x, hx⟩
43+
suffices ∃ U : ℕ → Set X, (∀ n, (U n).Nonempty ∧ IsOpen (U n) ∧ (U n)ᶜ ∈ 𝓝 x) ∧
44+
Pairwise (Disjoint on U) by
45+
rcases this with ⟨U, hU, hd⟩
46+
exact ⟨U, fun n ↦ (hU n).1, fun n ↦ (hU n).2.1, hd⟩
47+
have : IsSymm (Set X) Disjoint := ⟨fun _ _ h ↦ h.symm⟩
48+
refine exists_seq_of_forall_finset_exists' (fun U : Set X ↦ U.Nonempty ∧ IsOpen U ∧ Uᶜ ∈ 𝓝 x)
49+
Disjoint fun S hS ↦ ?_
50+
have : (⋂ U ∈ S, interior (Uᶜ)) \ {x} ∈ 𝓝[≠] x := inter_mem_inf ((biInter_finset_mem _).2
51+
fun U hU ↦ interior_mem_nhds.2 (hS _ hU).2.2) (mem_principal_self _)
52+
rcases hx.nonempty_of_mem this with ⟨y, hyU, hyx : y ≠ x⟩
53+
rcases t2_separation hyx with ⟨V, W, hVo, hWo, hyV, hxW, hVW⟩
54+
refine ⟨V ∩ ⋂ U ∈ S, interior (Uᶜ), ⟨⟨y, hyV, hyU⟩, ?_, ?_⟩, fun U hU ↦ ?_⟩
55+
· exact hVo.inter (isOpen_biInter_finset fun _ _ ↦ isOpen_interior)
56+
· refine mem_of_superset (hWo.mem_nhds hxW) fun z hzW ⟨hzV, _⟩ ↦ ?_
57+
exact disjoint_left.1 hVW hzV hzW
58+
· exact disjoint_left.2 fun z hzU ⟨_, hzU'⟩ ↦ interior_subset (mem_iInter₂.1 hzU' U hU) hzU
59+
60+
/-- If `X` is an infinite Hausdorff topological space, then there exists a topological embedding
61+
`f : ℕ → X`.
62+
63+
Note: this theorem is true for an infinite KC-space but the proof in that case is different. -/
64+
theorem exists_topology_isEmbedding_nat : ∃ f : ℕ → X, IsEmbedding f := by
65+
rcases exists_seq_infinite_isOpen_pairwise_disjoint X with ⟨U, hUi, hUo, hd⟩
66+
choose f hf using fun n ↦ (hUi n).nonempty
67+
refine ⟨f, IsInducing.isEmbedding ⟨Eq.symm (eq_bot_of_singletons_open fun n ↦ ⟨U n, hUo n, ?_⟩)⟩⟩
68+
refine eq_singleton_iff_unique_mem.2 ⟨hf _, fun m hm ↦ ?_⟩
69+
exact hd.eq (not_disjoint_iff.2 ⟨f m, hf _, hm⟩)
70+
71+
/-- If `X` is an infinite Hausdorff topological space, then there exists an infinite set `s : Set X`
72+
that has the induced topology is the discrete topology. -/
73+
theorem exists_infinite_discreteTopology : ∃ s : Set X, s.Infinite ∧ DiscreteTopology s := by
74+
rcases exists_topology_isEmbedding_nat X with ⟨f, hf⟩
75+
refine ⟨range f, infinite_range_of_injective hf.injective, ?_⟩
76+
exact hf.toHomeomorph.symm.isEmbedding.discreteTopology

0 commit comments

Comments
 (0)