Skip to content

Commit 585cee3

Browse files
pangelinosjcommelin
andcommitted
feat: define spectral spaces and prove that a quasi-compact open of a spectral space is spectral (leanprover-community#11090)
Define spectral spaces and prove that a quasi-compact open of a spectral space is spectral. Co-authored-by: Johan Commelin <johan@commelin.net>
1 parent cf617dd commit 585cee3

3 files changed

Lines changed: 48 additions & 9 deletions

File tree

Mathlib/Topology/QuasiSeparated.lean

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ theorem IsQuasiSeparated.image_of_isEmbedding {s : Set α} (H : IsQuasiSeparated
8282
rw [Set.image_preimage_eq_inter_range, Set.inter_eq_left]
8383
exact hV.trans (Set.image_subset_range _ _)
8484

85+
theorem IsQuasiSeparated.of_subset {s t : Set α} (ht : IsQuasiSeparated t) (h : s ⊆ t) :
86+
IsQuasiSeparated s := by
87+
intro U V hU hU' hU'' hV hV' hV''
88+
exact ht U V (hU.trans h) hU' hU'' (hV.trans h) hV' hV''
89+
8590
theorem Topology.IsOpenEmbedding.isQuasiSeparated_iff (h : IsOpenEmbedding f) {s : Set α} :
8691
IsQuasiSeparated s ↔ IsQuasiSeparated (f '' s) := by
8792
refine ⟨fun hs => hs.image_of_isEmbedding h.isEmbedding, ?_⟩
@@ -91,17 +96,17 @@ theorem Topology.IsOpenEmbedding.isQuasiSeparated_iff (h : IsOpenEmbedding f) {s
9196
H (f '' U) (f '' V) (image_mono hU) (h.isOpenMap _ hU') (hU''.image h.continuous)
9297
(image_mono hV) (h.isOpenMap _ hV') (hV''.image h.continuous)
9398

99+
lemma Topology.IsOpenEmbedding.quasiSeparatedSpace [QuasiSeparatedSpace β] (h : IsOpenEmbedding f) :
100+
QuasiSeparatedSpace α := by
101+
rw [← isQuasiSeparated_univ_iff, h.isQuasiSeparated_iff]
102+
exact isQuasiSeparated_univ.of_subset <| Set.subset_univ _
103+
94104
theorem isQuasiSeparated_iff_quasiSeparatedSpace (s : Set α) (hs : IsOpen s) :
95105
IsQuasiSeparated s ↔ QuasiSeparatedSpace s := by
96106
rw [← isQuasiSeparated_univ_iff]
97107
convert (hs.isOpenEmbedding_subtypeVal.isQuasiSeparated_iff (s := Set.univ)).symm
98108
simp
99109

100-
theorem IsQuasiSeparated.of_subset {s t : Set α} (ht : IsQuasiSeparated t) (h : s ⊆ t) :
101-
IsQuasiSeparated s := by
102-
intro U V hU hU' hU'' hV hV' hV''
103-
exact ht U V (hU.trans h) hU' hU'' (hV.trans h) hV' hV''
104-
105110
instance (priority := 100) T2Space.to_quasiSeparatedSpace [T2Space α] : QuasiSeparatedSpace α :=
106111
fun _ _ _ hU' _ hV' => hU'.inter hV'⟩
107112

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/-
22
Copyright (c) 2025 Fangming Li. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
4-
Authors: Fangming Li
4+
Authors: Fangming Li, Panagiotis Angelinos
55
-/
66
module
77

@@ -13,16 +13,35 @@ public import Mathlib.Topology.Spectral.Prespectral
1313
1414
A topological space is spectral if it is T0, compact, sober, quasi-separated, and its compact open
1515
subsets form an open basis. Prime spectra of commutative semirings are spectral spaces.
16+
17+
## Main Results
18+
19+
- `SpectralSpace` : Predicate for a topological space to be spectral.
20+
- `Topology.IsOpenEmbedding.spectralSpace` : a compact open subspace of a spectral space is spectral
21+
22+
## References
23+
24+
See [stacks-project], tag 08YF for details.
1625
-/
1726

1827
@[expose] public section
1928

20-
variable (α : Type*) [TopologicalSpace α]
29+
open Topology
30+
31+
variable {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y] {f : X → Y}
2132

2233
/--
2334
A topological space is spectral if it is T0, compact, sober, quasi-separated, and its compact open
2435
subsets form an open basis.
2536
-/
2637
@[stacks 08YG]
27-
class SpectralSpace : Prop extends
28-
T0Space α, CompactSpace α, QuasiSober α, QuasiSeparatedSpace α, PrespectralSpace α
38+
class SpectralSpace (X : Type*) [TopologicalSpace X] : Prop extends
39+
T0Space X, CompactSpace X, QuasiSober X, QuasiSeparatedSpace X, PrespectralSpace X
40+
41+
theorem Topology.IsOpenEmbedding.spectralSpace
42+
[SpectralSpace Y] [CompactSpace X] (hf : IsOpenEmbedding f) :
43+
SpectralSpace X where
44+
__ := hf.quasiSober
45+
__ := hf.prespectralSpace
46+
__ := hf.quasiSeparatedSpace
47+
__ := hf.isEmbedding.t0Space

Mathlib/Topology/Spectral/Prespectral.lean

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,21 @@ lemma PrespectralSpace.of_isClosedEmbedding [PrespectralSpace Y]
7777
(f : X → Y) (hf : IsClosedEmbedding f) : PrespectralSpace X :=
7878
.of_isInducing f hf.isInducing hf.isProperMap.isSpectralMap
7979

80+
/-- Let `f : X → Y` be an open embedding of topological spaces.
81+
If `Y` is a prespectral space (i.e., the quasi-compact opens of `Y` form a basis),
82+
then `X` is also a prespectral space. -/
83+
lemma Topology.IsOpenEmbedding.prespectralSpace [PrespectralSpace Y]
84+
{f : X → Y} (hf : IsOpenEmbedding f) :
85+
PrespectralSpace X where
86+
isTopologicalBasis := by
87+
apply isTopologicalBasis_of_isOpen_of_nhds (fun U hU ↦ hU.1) <| fun x U hx hU ↦ ?_
88+
obtain ⟨V, ⟨hoV, hcV⟩, hfx, hVf⟩ : ∃ V ∈ {V | IsOpen V ∧ IsCompact V}, f x ∈ V ∧ V ⊆ f '' U :=
89+
(PrespectralSpace.isTopologicalBasis (X := Y)).isOpen_iff.mp
90+
(hf.isOpen_iff_image_isOpen.mp hU) (f x) ⟨x, hx, rfl⟩
91+
refine ⟨f ⁻¹' V, ⟨hoV.preimage hf.continuous, ?_⟩, ⟨hfx, fun y hy ↦ ?_⟩⟩
92+
· exact hf.toIsInducing.isCompact_preimage' hcV <| Set.SurjOn.subset_range hVf
93+
· exact hf.injective.mem_set_image.mp (hVf hy)
94+
8095
instance PrespectralSpace.sigma {ι : Type*} (X : ι → Type*) [∀ i, TopologicalSpace (X i)]
8196
[∀ i, PrespectralSpace (X i)] : PrespectralSpace (Σ i, X i) :=
8297
.of_isTopologicalBasis (IsTopologicalBasis.sigma fun i ↦ isTopologicalBasis) fun U hU ↦ by

0 commit comments

Comments
 (0)