Skip to content

Commit bf815bd

Browse files
committed
refactor: split NormalSpace into NormalSpace and T4Space (#7072)
* Rename `NormalSpace` to `T4Space`. * Add `NormalSpace`, a version without the `T1Space` assumption. * Adjust some theorems. * Supersedes thus closes #6892. * Add some instance cycles, see #2030
1 parent 8c31491 commit bf815bd

File tree

17 files changed

+105
-103
lines changed

17 files changed

+105
-103
lines changed

Mathlib/Analysis/Complex/UpperHalfPlane/Topology.lean

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,9 @@ theorem continuous_im : Continuous im :=
5454
instance : TopologicalSpace.SecondCountableTopology ℍ :=
5555
TopologicalSpace.Subtype.secondCountableTopology _
5656

57-
instance : T3Space ℍ :=
58-
Subtype.t3Space
57+
instance : T3Space ℍ := Subtype.t3Space
5958

60-
instance : NormalSpace ℍ :=
61-
normalSpaceOfT3SecondCountable ℍ
59+
instance : T4Space ℍ := inferInstance
6260

6361
instance : ContractibleSpace ℍ :=
6462
(convex_halfspace_im_gt 0).contractibleSpace ⟨I, one_pos.trans_eq I_im.symm⟩

Mathlib/Geometry/Manifold/Metrizable.lean

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ theorem ManifoldWithCorners.metrizableSpace {E : Type*} [NormedAddCommGroup E] [
2626
(M : Type*) [TopologicalSpace M] [ChartedSpace H M] [SigmaCompactSpace M] [T2Space M] :
2727
MetrizableSpace M := by
2828
haveI := I.locallyCompactSpace; haveI := ChartedSpace.locallyCompactSpace H M
29-
haveI : NormalSpace M := normal_of_paracompact_t2
3029
haveI := I.secondCountableTopology
3130
haveI := ChartedSpace.secondCountable_of_sigma_compact H M
3231
exact metrizableSpace_of_t3_second_countable M

Mathlib/Geometry/Manifold/PartitionOfUnity.lean

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,6 @@ theorem exists_isSubordinate [T2Space M] [SigmaCompactSpace M] (hs : IsClosed s)
343343
-- First we deduce some missing instances
344344
haveI : LocallyCompactSpace H := I.locallyCompactSpace
345345
haveI : LocallyCompactSpace M := ChartedSpace.locallyCompactSpace H M
346-
haveI : NormalSpace M := normal_of_paracompact_t2
347346
-- Next we choose a covering by supports of smooth bump functions
348347
have hB := fun x hx => SmoothBumpFunction.nhds_basis_support I (hU x hx)
349348
rcases refinement_of_locallyCompact_sigmaCompact_of_nhds_basis_set hs hB with
@@ -523,7 +522,6 @@ theorem exists_isSubordinate {s : Set M} (hs : IsClosed s) (U : ι → Set M) (h
523522
(hU : s ⊆ ⋃ i, U i) : ∃ f : SmoothPartitionOfUnity ι I M s, f.IsSubordinate U := by
524523
haveI : LocallyCompactSpace H := I.locallyCompactSpace
525524
haveI : LocallyCompactSpace M := ChartedSpace.locallyCompactSpace H M
526-
haveI : NormalSpace M := normal_of_paracompact_t2
527525
-- porting note(https://github.com/leanprover/std4/issues/116):
528526
-- split `rcases` into `have` + `rcases`
529527
have := BumpCovering.exists_isSubordinate_of_prop (Smooth I 𝓘(ℝ)) ?_ hs U ho hU

Mathlib/MeasureTheory/Function/ContinuousMapDense.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ open scoped ENNReal NNReal Topology BoundedContinuousFunction
6363

6464
open MeasureTheory TopologicalSpace ContinuousMap Set
6565

66-
variable {α : Type*} [MeasurableSpace α] [TopologicalSpace α] [NormalSpace α] [BorelSpace α]
66+
variable {α : Type*} [MeasurableSpace α] [TopologicalSpace α] [T4Space α] [BorelSpace α]
6767

6868
variable {E : Type*} [NormedAddCommGroup E] {μ : Measure α} {p : ℝ≥0∞}
6969

Mathlib/Topology/Category/CompHaus/Basic.lean

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,6 @@ theorem epi_iff_surjective {X Y : CompHaus.{u}} (f : X ⟶ Y) : Epi f ↔ Functi
340340
rw [Set.disjoint_singleton_right]
341341
rintro ⟨y', hy'⟩
342342
exact hy y' hy'
343-
--haveI : NormalSpace Y.toTop := normalOfCompactT2
344-
haveI : NormalSpace ((forget CompHaus).obj Y) := normalOfCompactT2
345343
obtain ⟨φ, hφ0, hφ1, hφ01⟩ := exists_continuous_zero_one_of_closed hC hD hCD
346344
haveI : CompactSpace (ULift.{u} <| Set.Icc (0 : ℝ) 1) := Homeomorph.ulift.symm.compactSpace
347345
haveI : T2Space (ULift.{u} <| Set.Icc (0 : ℝ) 1) := Homeomorph.ulift.symm.t2Space

Mathlib/Topology/Compactification/OnePoint.lean

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -457,14 +457,14 @@ instance [T1Space X] : T1Space (OnePoint X) where
457457
· rw [← image_singleton, isClosed_image_coe]
458458
exact ⟨isClosed_singleton, isCompact_singleton⟩
459459

460-
/-- The one point compactification of a locally compact Hausdorff space is a normal (hence,
461-
Hausdorff and regular) topological space. -/
462-
instance [LocallyCompactSpace X] [T2Space X] : NormalSpace (OnePoint X) := by
460+
/-- The one point compactification of a weakly locally compact Hausdorff space is a T₄
461+
(hence, Hausdorff and regular) topological space. -/
462+
instance [WeaklyLocallyCompactSpace X] [T2Space X] : T4Space (OnePoint X) := by
463463
have key : ∀ z : X, Disjoint (𝓝 (some z)) (𝓝 ∞) := fun z => by
464464
rw [nhds_infty_eq, disjoint_sup_right, nhds_coe_eq, coclosedCompact_eq_cocompact,
465465
disjoint_map coe_injective, ← principal_singleton, disjoint_principal_right, compl_infty]
466466
exact ⟨disjoint_nhds_cocompact z, range_mem_map⟩
467-
suffices : T2Space (OnePoint X); exact normalOfCompactT2
467+
suffices : T2Space (OnePoint X); infer_instance
468468
refine t2Space_iff_disjoint_nhds.2 fun x y hxy => ?_
469469
induction x using OnePoint.rec <;> induction y using OnePoint.rec
470470
· exact (hxy rfl).elim

Mathlib/Topology/ContinuousFunction/Ideals.lean

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,6 @@ theorem setOfIdeal_ofSet_eq_interior (s : Set X) : setOfIdeal (idealOfSet 𝕜 s
321321
-- If `x ∉ closure sᶜ`, we must produce `f : C(X, 𝕜)` which is zero on `sᶜ` and `f x ≠ 0`.
322322
rw [← compl_compl (interior s), ← closure_compl] at hx
323323
simp_rw [mem_setOfIdeal, mem_idealOfSet]
324-
haveI : NormalSpace X := normalOfCompactT2
325324
/- Apply Urysohn's lemma to get `g : C(X, ℝ)` which is zero on `sᶜ` and `g x ≠ 0`, then compose
326325
with the natural embedding `ℝ ↪ 𝕜` to produce the desired `f`. -/
327326
obtain ⟨g, hgs, hgx : Set.EqOn g 1 {x}, -⟩ :=
@@ -436,7 +435,6 @@ variable [CompactSpace X] [T2Space X] [IsROrC 𝕜]
436435
theorem continuousMapEval_bijective : Bijective (continuousMapEval X 𝕜) := by
437436
refine' ⟨fun x y hxy => _, fun φ => _⟩
438437
· contrapose! hxy
439-
haveI := @normalOfCompactT2 X _ _ _
440438
rcases exists_continuous_zero_one_of_closed (isClosed_singleton : _root_.IsClosed {x})
441439
(isClosed_singleton : _root_.IsClosed {y}) (Set.disjoint_singleton.mpr hxy) with
442440
⟨f, fx, fy, -⟩

Mathlib/Topology/EMetricSpace/Paracompact.lean

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ open ENNReal Topology Set
3535
namespace EMetric
3636

3737
-- See note [lower instance priority]
38-
/-- A `PseudoEMetricSpace` is always a paracompact space. Formalization is based
39-
on [MR0236876]. -/
38+
/-- A `PseudoEMetricSpace` is always a paracompact space.
39+
Formalization is based on [MR0236876]. -/
4040
instance (priority := 100) instParacompactSpace [PseudoEMetricSpace α] : ParacompactSpace α := by
4141
/- We start with trivial observations about `1 / 2 ^ k`. Here and below we use `1 / 2 ^ k` in
4242
the comments and `2⁻¹ ^ k` in the code. -/
@@ -166,9 +166,8 @@ instance (priority := 100) instParacompactSpace [PseudoEMetricSpace α] : Paraco
166166
exact not_lt.1 fun hlt => (Hgt I.1 hlt I.2).le_bot hI.choose_spec
167167
#align emetric.paracompact_space EMetric.instParacompactSpace
168168

169-
-- see Note [lower instance priority]
170-
instance (priority := 100) instNormalSpace [EMetricSpace α] : NormalSpace α :=
171-
normal_of_paracompact_t2
172-
#align emetric.normal_of_emetric EMetric.instNormalSpace
169+
-- porting note: no longer an instance because `inferInstance` can find it
170+
theorem t4Space [EMetricSpace α] : T4Space α := inferInstance
171+
#align emetric.normal_of_emetric EMetric.t4Space
173172

174173
end EMetric

Mathlib/Topology/Homeomorph.lean

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,10 @@ protected theorem closedEmbedding (h : α ≃ₜ β) : ClosedEmbedding h :=
360360

361361
protected theorem normalSpace [NormalSpace α] (h : α ≃ₜ β) : NormalSpace β :=
362362
h.symm.closedEmbedding.normalSpace
363-
#align homeomorph.normal_space Homeomorph.normalSpace
363+
364+
protected theorem t4Space [T4Space α] (h : α ≃ₜ β) : T4Space β :=
365+
h.symm.closedEmbedding.t4Space
366+
#align homeomorph.normal_space Homeomorph.t4Space
364367

365368
theorem preimage_closure (h : α ≃ₜ β) (s : Set β) : h ⁻¹' closure s = closure (h ⁻¹' s) :=
366369
h.isOpenMap.preimage_closure_eq_closure_preimage h.continuous _

Mathlib/Topology/Instances/AddCircle.lean

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -525,9 +525,8 @@ instance : ProperlyDiscontinuousVAdd (AddSubgroup.opposite (zmultiples p)) ℝ :
525525
instance : T2Space (AddCircle p) :=
526526
t2Space_of_properlyDiscontinuousVAdd_of_t2Space
527527

528-
/-- The "additive circle" `ℝ ⧸ (ℤ ∙ p)` is normal. -/
529-
instance [Fact (0 < p)] : NormalSpace (AddCircle p) :=
530-
normalOfCompactT2
528+
/-- The "additive circle" `ℝ ⧸ (ℤ ∙ p)` is T₄. -/
529+
instance [Fact (0 < p)] : T4Space (AddCircle p) := inferInstance
531530

532531
/-- The "additive circle" `ℝ ⧸ (ℤ ∙ p)` is second-countable. -/
533532
instance : SecondCountableTopology (AddCircle p) :=

0 commit comments

Comments
 (0)