MathlibAnnex/Analysis/CStarAlgebra/Spectrum/Topology.lean
Exact source · gss-v0.5.0
Fixed commit original · Raw UTF-8 source · Back to GSS Companion
Select a source link from a manuscript to highlight its exact range.
Technical identity
- Commit
ac405356bb98afed954da9b9c795d23cc8d5d149- SHA-256
efe915f4a1a6c239aa14c7a0df55acc2783948f57fb78aba79916e4b3f926497- Bytes
- 7732
1/-2Copyright (c) 2026 Ryotaro Tanaka. All rights reserved.3Released under Apache 2.0 license as described in the file LICENSE.4Authors: Ryotaro Tanaka5-/6import MathlibAnnex.Analysis.CStarAlgebra.Spectrum.Primitive7import MathlibAnnex.Topology.ClosureSpace.HullKernel8import MathlibAnnex.Topology.ClosureSpace.TopologicalMaps910/-!11# Ordinary hull-kernel and irreducible-spectrum topologies1213Finite-union preservation is proved using meet-primality of the actual14representation kernels. T0 by itself would not suffice. Empty selections15have the genuine top ideal as their intersection. The topology on the16irreducible spectrum is the pullback along kappa, not the quotient of any17weak-star topology and not a topology transported from geometric spectra.18-/1920set_option autoImplicit false21noncomputable section22open Set2324namespace MathlibAnnex.Analysis.CStarAlgebra2526universe u27variable (A : Type u) [NonUnitalCStarAlgebra A] [PartialOrder A] [StarOrderedRing A]2829/-- The hull-kernel closure on the independently constructed primitive family. -/30def primitiveSpectrumClosure : ClosureSpace (PrimitiveSpectrum A) :=31ClosureSpace.HullKernel.space (primitiveKernelFamily A) (univ_notMem_primitiveKernelFamily A)3233namespace PrimitiveSpectrum34variable {A}3536/-- The intersection of the ACTUAL two-sided ideals selected by S. -/37def kernelIntersection (S : Set (PrimitiveSpectrum A)) : TwoSidedIdeal A :=38⨅ P : S, P.val.toTwoSidedIdeal3940@[simp]41theorem mem_kernelIntersection (S : Set (PrimitiveSpectrum A)) (a : A) :42a ∈ kernelIntersection S ↔ ∀ P : PrimitiveSpectrum A, P ∈ S → a ∈ P.val := by43simp only [kernelIntersection, TwoSidedIdeal.mem_iInf, mem_toTwoSidedIdeal, Subtype.forall]4445@[simp]46theorem kernelIntersection_empty : kernelIntersection (∅ : Set (PrimitiveSpectrum A)) = ⊤ := by47apply TwoSidedIdeal.ext48intro a49simp only [mem_kernelIntersection, Set.mem_empty_iff_false, false_implies, implies_true,50TwoSidedIdeal.mem_top]5152theorem kernelIntersection_union (S T : Set (PrimitiveSpectrum A)) :53kernelIntersection (S ∪ T) = kernelIntersection S ⊓ kernelIntersection T := by54apply TwoSidedIdeal.ext55intro a56simp only [mem_kernelIntersection, TwoSidedIdeal.mem_inf, Set.mem_union]57constructor58· intro h59exact ⟨fun P hP => h P (Or.inl hP), fun P hP => h P (Or.inr hP)⟩60· rintro ⟨hS, hT⟩ P (hP | hP)61· exact hS P hP62· exact hT P hP6364theorem coe_kernelIntersection (S : Set (PrimitiveSpectrum A)) :65(kernelIntersection S : Set A) = ClosureSpace.HullKernel.kernel (primitiveKernelFamily A) S := by66ext a67exact mem_kernelIntersection S a6869theorem mem_primitiveSpectrumClosure_iff (S : Set (PrimitiveSpectrum A)) (P : PrimitiveSpectrum A) :70P ∈ (primitiveSpectrumClosure A).closure S ↔ kernelIntersection S ≤ P.toTwoSidedIdeal := by71change ClosureSpace.HullKernel.kernel (primitiveKernelFamily A) S ⊆ P.val ↔ _72rw [← coe_kernelIntersection, ← P.coe_toTwoSidedIdeal]73rfl7475end PrimitiveSpectrum7677/-- The nontrivial topological axiom follows from actual primitive-kernel78meet-primality. No order-generating assumption on ALL two-sided ideals is needed. -/79theorem primitiveSpectrumClosure_union (S T : Set (PrimitiveSpectrum A)) :80(primitiveSpectrumClosure A).closure (S ∪ T) =81(primitiveSpectrumClosure A).closure S ∪ (primitiveSpectrumClosure A).closure T := by82ext P83rw [PrimitiveSpectrum.mem_primitiveSpectrumClosure_iff,84PrimitiveSpectrum.kernelIntersection_union, P.inf_le_toTwoSidedIdeal_iff,85Set.mem_union, PrimitiveSpectrum.mem_primitiveSpectrumClosure_iff,86PrimitiveSpectrum.mem_primitiveSpectrumClosure_iff]8788theorem isTopologizable_primitiveSpectrumClosure : (primitiveSpectrumClosure A).IsTopologizable :=89primitiveSpectrumClosure_union A9091/-- The usual hull-kernel topology on actual primitive kernels. -/92instance PrimitiveSpectrum.instTopologicalSpace : TopologicalSpace (PrimitiveSpectrum A) :=93(primitiveSpectrumClosure A).toTopologicalSpace (isTopologizable_primitiveSpectrumClosure A)9495/-- The ordinary topological closure is literally the hull of the kernel. -/96theorem closure_primitiveSpectrum (S : Set (PrimitiveSpectrum A)) :97_root_.closure S = {P | ∀ a : A, (∀ Q : PrimitiveSpectrum A, Q ∈ S → a ∈ Q.val) → a ∈ P.val} :=98ClosureSpace.closure_toTopologicalSpace _ _ S99100/-- The equivalent ideal-valued ordinary closure formula. -/101theorem mem_closure_primitiveSpectrum_iff (S : Set (PrimitiveSpectrum A)) (P : PrimitiveSpectrum A) :102P ∈ _root_.closure S ↔ PrimitiveSpectrum.kernelIntersection S ≤ P.toTwoSidedIdeal := by103rw [ClosureSpace.closure_toTopologicalSpace]104exact PrimitiveSpectrum.mem_primitiveSpectrumClosure_iff S P105106/-- The independent irreducible-spectrum closure is induced by the actual kappa. -/107def irreducibleSpectrumClosure : ClosureSpace (IrreducibleSpectrum A) :=108(primitiveSpectrumClosure A).induced IrreducibleSpectrum.kernel109110theorem isTopologizable_irreducibleSpectrumClosure :111(irreducibleSpectrumClosure A).IsTopologizable :=112ClosureSpace.isTopologizable_induced (isTopologizable_primitiveSpectrumClosure A) _113114/-- The pullback closure written without image or preimage notation. -/115theorem irreducibleSpectrumClosure_closure (S : Set (IrreducibleSpectrum A)) :116(irreducibleSpectrumClosure A).closure S =117{q | ∀ a : A, (∀ r : IrreducibleSpectrum A, r ∈ S →118a ∈ (IrreducibleSpectrum.kernel r).val) → a ∈ (IrreducibleSpectrum.kernel q).val} := by119ext q120change (∀ a : A, (∀ P : PrimitiveSpectrum A,121P ∈ IrreducibleSpectrum.kernel '' S → a ∈ P.val) →122a ∈ (IrreducibleSpectrum.kernel q).val) ↔ _123constructor124· intro h a ha125apply h a126rintro P ⟨r, hr, rfl⟩127exact ha r hr128· intro h a ha129exact h a (fun r hr => ha (IrreducibleSpectrum.kernel r) ⟨r, hr, rfl⟩)130131/-- The spectrum topology, constructed from the kernel pullback. -/132instance IrreducibleSpectrum.instTopologicalSpace : TopologicalSpace (IrreducibleSpectrum A) :=133(irreducibleSpectrumClosure A).toTopologicalSpace (isTopologizable_irreducibleSpectrumClosure A)134135/-- This equality rules out accidentally using the pure-state quotient topology. -/136theorem irreducibleSpectrum_topology_eq_induced :137(IrreducibleSpectrum.instTopologicalSpace A) =138TopologicalSpace.induced IrreducibleSpectrum.kernel (PrimitiveSpectrum.instTopologicalSpace A) :=139ClosureSpace.toTopologicalSpace_induced _ (isTopologizable_primitiveSpectrumClosure A) _140141theorem closure_irreducibleSpectrum (S : Set (IrreducibleSpectrum A)) :142_root_.closure S = IrreducibleSpectrum.kernel ⁻¹'143_root_.closure (IrreducibleSpectrum.kernel '' S) := by144rw [ClosureSpace.closure_toTopologicalSpace, ClosureSpace.closure_toTopologicalSpace]145rfl146147/-- Ordinary continuity of kappa, with no injectivity assertion. -/148theorem continuous_irreducibleSpectrum_kernel :149Continuous (IrreducibleSpectrum.kernel : IrreducibleSpectrum A → PrimitiveSpectrum A) := by150apply (ClosureSpace.continuous_toTopologicalSpace_iff _ _151(isTopologizable_irreducibleSpectrumClosure A)152(isTopologizable_primitiveSpectrumClosure A) _).2153exact ClosureSpace.continuous_induced _ _154155/-- Surjectivity, rather than injectivity, gives the exact image-closure identity. -/156theorem image_closure_irreducibleSpectrum_kernel (S : Set (IrreducibleSpectrum A)) :157IrreducibleSpectrum.kernel '' _root_.closure S =158_root_.closure (IrreducibleSpectrum.kernel '' S) := by159rw [ClosureSpace.closure_toTopologicalSpace, ClosureSpace.closure_toTopologicalSpace]160exact ClosureSpace.image_induced_closure _ _ IrreducibleSpectrum.kernel_surjective S161162end MathlibAnnex.Analysis.CStarAlgebra