Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
c758a4d
constructibleTop_T2
FMLJohn Jun 3, 2026
8e1d6c8
change content
FMLJohn Jun 3, 2026
b639d29
Merge branch 'master' into constructibleTop_T2
FMLJohn Jun 3, 2026
72f30fe
change expression
FMLJohn Jun 3, 2026
b1642b9
Merge branch 'master' into constructibleTop_T2
FMLJohn Jun 3, 2026
34d9dc8
Merge branch 'master' into constructibleTop_T2
FMLJohn Jun 4, 2026
f2288e2
Merge branch 'master' into constructibleTop_T2
FMLJohn Jun 4, 2026
35098ea
remove `: Set X`
FMLJohn Jun 4, 2026
4e786cb
Update Mathlib/Topology/Order.lean
FMLJohn Jun 5, 2026
b58bb8d
Update Mathlib/Topology/Order.lean
FMLJohn Jun 5, 2026
3dcbd25
Update Mathlib/Topology/Order.lean
FMLJohn Jun 5, 2026
633c089
Update Mathlib/Topology/Spectral/ConstructibleTopology.lean
FMLJohn Jun 5, 2026
46ea543
Update Mathlib/Topology/Spectral/ConstructibleTopology.lean
FMLJohn Jun 5, 2026
8f4828a
Update Mathlib/Topology/Spectral/ConstructibleTopology.lean
FMLJohn Jun 5, 2026
091f349
Update Mathlib/Topology/Spectral/ConstructibleTopology.lean
FMLJohn Jun 5, 2026
a02f697
Update Mathlib/Topology/Spectral/ConstructibleTopology.lean
FMLJohn Jun 5, 2026
9038f3b
pick out a lemma
FMLJohn Jun 5, 2026
c2c618d
add a lemma
FMLJohn Jun 5, 2026
ce69c8b
Merge branch 'master' into constructibleTop_T2
FMLJohn Jun 5, 2026
9fd1391
Merge branch 'master' into constructibleTop_T2
FMLJohn Jun 7, 2026
9716529
Update Mathlib/Topology/Spectral/ConstructibleTopology.lean
FMLJohn Jun 12, 2026
149035f
Update Mathlib/Topology/Order.lean
FMLJohn Jun 12, 2026
1424f91
Update Mathlib/Order/BooleanSubalgebra.lean
FMLJohn Jun 12, 2026
38bb46d
Update Mathlib/Topology/Spectral/ConstructibleTopology.lean
FMLJohn Jun 12, 2026
b0cc4f3
Update Mathlib/Topology/Spectral/ConstructibleTopology.lean
FMLJohn Jun 12, 2026
d5e294f
Update Mathlib/Topology/Spectral/ConstructibleTopology.lean
FMLJohn Jun 12, 2026
f02c173
Merge branch 'master' into constructibleTop_T2
FMLJohn Jun 12, 2026
33df492
Merge branch 'master' into constructibleTop_T2
FMLJohn Jun 13, 2026
31e23b5
Merge branch 'master' into constructibleTop_T2
FMLJohn Jun 22, 2026
c3a35b4
Update Mathlib/Topology/Order.lean
FMLJohn Jul 8, 2026
d2cd6cf
Merge branch 'master' into constructibleTop_T2
FMLJohn Jul 8, 2026
4cb93b3
add a new file
FMLJohn Jul 8, 2026
b9eeed9
Merge branch 'master' into constructibleTop_T2
FMLJohn Jul 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Mathlib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -8090,6 +8090,7 @@ public import Mathlib.Topology.Order.DenselyOrdered
public import Mathlib.Topology.Order.ExtendFrom
public import Mathlib.Topology.Order.ExtrClosure
public import Mathlib.Topology.Order.Filter
public import Mathlib.Topology.Order.GenerateFromLattice
public import Mathlib.Topology.Order.Hom.Basic
public import Mathlib.Topology.Order.Hom.Esakia
public import Mathlib.Topology.Order.HullKernel
Expand Down
12 changes: 12 additions & 0 deletions Mathlib/Order/BooleanSubalgebra.lean
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,18 @@ lemma closure_bot_sup_induction {p : ∀ g ∈ closure s, Prop} (mem : ∀ x hx,
compl_mem' := fun ⟨_, hb⟩ ↦ ⟨_, compl _ _ hb⟩ }
closure_le (L := L).mpr (fun y hy ↦ ⟨subset_closure hy, mem y hy⟩) hx |>.elim fun _ ↦ id

lemma closure_eq_latticeClosure (hs1 : ⊥ ∈ s) (hs2 : compl '' s = s) :
closure s = latticeClosure s := by
refine subset_antisymm ?_ latticeClosure_subset_closure
intro t ht
induction ht using closure_bot_sup_induction with
| mem _ hx => apply subset_latticeClosure hx
| bot => apply subset_latticeClosure hs1
| sup _ _ _ _ hx hy => apply isSublattice_latticeClosure.supClosed hx hy
| compl _ _ h =>
rw [← compl_image_latticeClosure_eq_of_compl_image_eq_self hs2]
exact mem_image_of_mem compl h

section sdiff_sup

variable (isSublattice : IsSublattice s) (bot_mem : ⊥ ∈ s) (top_mem : ⊤ ∈ s)
Expand Down
30 changes: 30 additions & 0 deletions Mathlib/Topology/Order/GenerateFromLattice.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/-
Copyright (c) 2026 Fangming Li. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Fangming Li
-/
module

public import Mathlib.Order.SupClosed
public import Mathlib.Topology.Order

/-!
# The topology generated by the lattice closure of a collection of sets

In this file, we prove that for `α : Type*` and `s : Set (Set α)`, the topology on `α` generated
by `latticeClosure s` is the same as the topology generated by `s`.
-/

@[expose] public section

open TopologicalSpace

lemma generateFrom_latticeClosure {α : Type*} (s : Set (Set α)) :
generateFrom (latticeClosure s) = generateFrom s := by
let : TopologicalSpace α := generateFrom s
refine le_antisymm (generateFrom_anti subset_latticeClosure) ?_
refine le_generateFrom fun o hos => ?_
induction hos using latticeClosure_sup_inf_induction with
| mem _ has => exact isOpen_generateFrom_of_mem has
| sup _ _ _ _ ha hb => exact ha.union hb
| inf _ _ _ _ ha hb => exact ha.inter hb
43 changes: 41 additions & 2 deletions Mathlib/Topology/Spectral/ConstructibleTopology.lean
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
/-
Copyright (c) 2025 Jiedong Jiang, Christian Merten. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Jiedong Jiang, Christian Merten
Authors: Johan Commelin, Jiedong Jiang, Fangming Li, Christian Merten
-/
module

public import Mathlib.Topology.Constructible
public import Mathlib.Topology.Order.GenerateFromLattice
public import Mathlib.Topology.Spectral.Basic
public import Mathlib.Topology.WithTopology
public import Mathlib.Topology.JacobsonSpace
Expand Down Expand Up @@ -47,7 +49,12 @@ def constructibleTopology (X : Type*) [TopologicalSpace X] : TopologicalSpace X
abbrev WithConstructibleTopology (X : Type*) [TopologicalSpace X] : Type _ :=
WithTopology X (constructibleTopology X)

open Topology
open TopologicalSpace Topology

variable (X) in
@[simp]
lemma empty_mem_constructibleTopologySubbasis : ∅ ∈ constructibleTopologySubbasis X :=
Comment thread
FMLJohn marked this conversation as resolved.
Or.intro_left _ ⟨isOpen_empty, isCompact_empty⟩

lemma WithConstructibleTopology.isOpen_iff {s : Set (WithConstructibleTopology X)} :
IsOpen s ↔ IsOpen[constructibleTopology X] (WithTopology.toTopology _ ⁻¹' s) :=
Expand All @@ -72,6 +79,38 @@ lemma compl_mem_constructibleTopologySubbasis_iff {s : Set X} :
sᶜ ∈ constructibleTopologySubbasis X ↔ s ∈ constructibleTopologySubbasis X := by
grind [constructibleTopologySubbasis, isClosed_compl_iff, compl_compl]

lemma compl_image_constructibleTopologySubbasis :
compl '' constructibleTopologySubbasis X = constructibleTopologySubbasis X := by
grind [constructibleTopologySubbasis, isClosed_compl_iff, compl_compl]

lemma latticeClosure_constructibleTopologySubbasis [CompactSpace X] [QuasiSeparatedSpace X] :
latticeClosure (constructibleTopologySubbasis X) = { s | IsConstructible s } := by
rw [← BooleanSubalgebra.closure_eq_latticeClosure (empty_mem_constructibleTopologySubbasis X)
compl_image_constructibleTopologySubbasis]
dsimp only [IsConstructible, SetLike.setOf_mem_eq]
congr 1
refine le_antisymm ?_ (BooleanSubalgebra.closure_mono ?_)
· rw [BooleanSubalgebra.closure_le]
rintro s (⟨h₁, h₂⟩ | ⟨h₁, h₂⟩)
· apply BooleanSubalgebra.subset_closure
grind [QuasiSeparatedSpace.isRetrocompact_iff_isCompact]
· rw [← compl_compl s]
refine BooleanSubalgebra.compl_mem (BooleanSubalgebra.subset_closure ?_)
grind [QuasiSeparatedSpace.isRetrocompact_iff_isCompact, IsClosed.isOpen_compl]
· grind [QuasiSeparatedSpace.isRetrocompact_iff_isCompact, constructibleTopologySubbasis]

lemma constructibleTopologySubbasis_subset_isConstructible
[CompactSpace X] [QuasiSeparatedSpace X] :
constructibleTopologySubbasis X ⊆ { s | IsConstructible s } := by
simp [← latticeClosure_constructibleTopologySubbasis]

variable (X) in
lemma constructibleTopology_eq_generateFrom_isConstructible
[CompactSpace X] [QuasiSeparatedSpace X] :
constructibleTopology X = generateFrom { s | IsConstructible s } := by
rw [constructibleTopology, ← generateFrom_latticeClosure (constructibleTopologySubbasis X),
latticeClosure_constructibleTopologySubbasis]

lemma isCompact_of_mem_constructibleTopologySubbasis [CompactSpace X] {s : Set X}
(hs : s ∈ constructibleTopologySubbasis X) : IsCompact s := by
obtain (hs | hs) := hs
Expand Down
Loading