ModuleTopologicalStratification.lean
Nyll.EtaleCohomology.Constructible.TopologicalStratification
5 declarations indexed from sourceView source ↗ Module documentation
Finite locally closed refinements of constructible sets
A finite family of constructible subsets of an arbitrary topological space admits a common finite partition into locally closed constructible subsets. Each part is contained in, or disjoint from, each member of the original family. Empty parts are allowed, so the result also applies to empty spaces.
The partition is constructed using the Boolean induction principle for constructible sets. An open retrocompact set and its complement give the initial partition; intersections refine two partitions simultaneously. No compactness, separation, or noetherian hypothesis is required.
Imports8
- Mathlib.Data.Finset.Insert
- Mathlib.Data.Fintype.Basic
- Mathlib.Data.Fintype.EquivFin
- Mathlib.Data.Fintype.Prod
- Mathlib.Data.Set.Disjoint
- Mathlib.Topology.Basic
- Mathlib.Topology.Constructible
- Mathlib.Topology.LocallyClosed
Imported by2
Declarations
EtaleCohomology.inter_partition
Source context 6 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
open Set Topology
universe u v
variable {X : Type u} [TopologicalSpace X]
namespace EtaleCohomology
omit [TopologicalSpace X] in
EtaleCohomology.constructible_partition
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
open Set Topology
universe u v
variable {X : Type u} [TopologicalSpace X]
namespace EtaleCohomology
Lean source · full declarationlemma constructible_partition {s : Set X} (hs : IsConstructible s) :
∃ (ι : Type) (_ : Fintype ι) (p : ι → Set X),
(∀ i, IsLocallyClosed (p i) ∧ IsConstructible (p i)) ∧
Pairwise (fun i j => Disjoint (p i) (p j)) ∧
(∀ x, ∃ i, x ∈ p i) ∧
(∀ i, p i ⊆ s ∨ p i ⊆ sᶜ) := by
classical
induction hs using IsConstructible.empty_union_induction with
| open_retrocompact U hU hUr =>
let p : Bool → Set X := fun b => if b then U else Uᶜ
have hUc : IsConstructible U := hUr.isConstructible hU
refine ⟨Bool, inferInstance, p, ?_, ?_, ?_, ?_⟩
· intro b
cases b
· exact ⟨hU.isClosed_compl.isLocallyClosed, hUc.compl⟩
· exact ⟨hU.isLocallyClosed, hUc⟩
· intro b c hbc
cases b <;> cases c
· exact (hbc rfl).elim
· exact disjoint_compl_left
· exact disjoint_compl_right
· exact (hbc rfl).elim
· intro x
by_cases hx : x ∈ U
· exact ⟨true, hx⟩
· exact ⟨false, hx⟩
· intro b
cases b
· exact Or.inr subset_rfl
· exact Or.inl subset_rfl
| union s hs t ht ihs iht =>
obtain ⟨ι, hi, p, hp, hpdisj, hpcover, hps⟩ := ihs
obtain ⟨κ, hk, q, hq, hqdisj, hqcover, hqt⟩ := iht
let := hi
let := hk
have hr := inter_partition p q hpdisj hqdisj hpcover hqcover
refine ⟨ι × κ, inferInstance, fun a => p a.1 ∩ q a.2,
fun a => ⟨(hp a.1).1.inter (hq a.2).1, (hp a.1).2.inter (hq a.2).2⟩,
hr.1, hr.2, ?_⟩
intro a
rcases hps a.1 with h | h
· exact Or.inl (inter_subset_left.trans (h.trans subset_union_left))
· rcases hqt a.2 with k | k
· exact Or.inl (inter_subset_right.trans (k.trans subset_union_right))
· right
intro x hx hst
rcases hst with hsx | htx
· exact h hx.1 hsx
· exact k hx.2 htx
| compl s hs ih =>
obtain ⟨ι, hi, p, hp, hpd, hpc, hps⟩ := ih
refine ⟨ι, hi, p, hp, hpd, hpc, fun i => ?_⟩
rcases hps i with h | h
· right
simpa only [compl_compl] using h
· exact Or.inl h
EtaleCohomology.finite_constructible_partition
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
open Set Topology
universe u v
variable {X : Type u} [TopologicalSpace X]
namespace EtaleCohomology
EtaleCohomology.exists_finite_locallyClosed_partition
DocumentationA finite family of constructible sets has a common finite disjoint locally closed constructible partition of the ambient space. Each piece has constant membership in every member of the family.
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
open Set Topology
universe u v
variable {X : Type u} [TopologicalSpace X]
namespace EtaleCohomology
Topology.IsConstructible.exists_finite_disjoint_locallyClosed_cover
DocumentationA constructible set is a finite disjoint union of locally closed constructible subsets, without additional hypotheses on the ambient space.
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
open Set Topology
universe u v
variable {X : Type u} [TopologicalSpace X]
namespace Topology