MathlibAnnex/Topology/ClosureSpace/HullKernelTransforms.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
521cf6e5476d72243dd52dd678402dc6d65359e591a01b0834b6d9b2c9cb0b06- Bytes
- 7415
1/-2Copyright (c) 2026 Ryotaro Tanaka. All rights reserved.3Released under Apache 2.0 license as described in the file LICENSE.4Authors: Ryotaro Tanaka5-/6module78public import MathlibAnnex.Topology.ClosureSpace.ComponentKernel910/-!11# Hull-kernel models for the G- and P-transforms1213The P-transform's points are closed components in the original point set;14component-kernel points are intersections in the ambient set. Their bijection15preserves closure. The G-model keeps actual component subsets, and pulls back16component-kernel closure along their intersection map.17-/1819@[expose] public section2021set_option autoImplicit false2223universe u2425namespace ClosureSpace26namespace HullKernel2728variable {X : Type u} (F : Set (Set X)) (hF : Set.univ ∉ F)2930/-- The preimages of corresponding selections agree under the P-point equivalence. -/31theorem preimage_toComponentKernelPoint_image (T : Set (space F hF).PPoint) :32toComponentKernelPoint F hF ⁻¹' (pPointEquivComponentKernelPoint F hF '' T) =33(space F hF).toPPoint ⁻¹' T := by34apply Set.ext35intro I36change toComponentKernelPoint F hF I ∈ (pPointEquivComponentKernelPoint F hF '' T) ↔ _37rw [← pPointEquivComponentKernelPoint_toPPoint F hF I]38constructor39· rintro ⟨p, hp, heq⟩40have heq' := (pPointEquivComponentKernelPoint F hF).injective heq41change (space F hF).toPPoint I ∈ T42rw [← heq']43exact hp44· intro hI45exact ⟨(space F hF).toPPoint I, hI, rfl⟩4647/-- Closure membership is preserved in both directions, not merely on singletons. -/48theorem pPointEquivComponentKernelPoint_mem_closure_iff49(T : Set (space F hF).PPoint) (p : (space F hF).PPoint) :50pPointEquivComponentKernelPoint F hF p ∈51(componentKernelClosure F hF).closure (pPointEquivComponentKernelPoint F hF '' T) ↔52p ∈ (space F hF).pTransform.closure T := by53rcases p with ⟨p, I, rfl⟩54change pPointEquivComponentKernelPoint F hF ((space F hF).toPPoint I) ∈ _ ↔55(space F hF).componentClosure I ⊆56(space F hF).closure ((space F hF).toPPoint ⁻¹' T)57rw [pPointEquivComponentKernelPoint_toPPoint, mem_componentKernelClosure_iff,58preimage_toComponentKernelPoint_image]5960/-- Exact preservation of the complete P-closure formula. -/61theorem image_pPointEquivComponentKernelPoint_closure (T : Set (space F hF).PPoint) :62pPointEquivComponentKernelPoint F hF '' (space F hF).pTransform.closure T =63(componentKernelClosure F hF).closure (pPointEquivComponentKernelPoint F hF '' T) := by64apply Set.ext65intro J66constructor67· rintro ⟨p, hp, rfl⟩68exact (pPointEquivComponentKernelPoint_mem_closure_iff F hF T p).mpr hp69· intro hJ70obtain ⟨p, rfl⟩ := (pPointEquivComponentKernelPoint F hF).surjective J71exact ⟨p, (pPointEquivComponentKernelPoint_mem_closure_iff F hF T p).mp hJ, rfl⟩7273/-- The P-transform is homeomorphic to the family of component intersections. -/74def pPointHomeomorphComponentKernelPoint :75Homeomorph (space F hF).pTransform (componentKernelClosure F hF) :=76Homeomorph.ofImageClosure _ _ (pPointEquivComponentKernelPoint F hF)77(image_pPointEquivComponentKernelPoint_closure F hF)7879/-- Intersect an actual component subset to obtain a component-kernel point. -/80def componentPointToComponentKernelPoint (C : (space F hF).ComponentPoint) :81ComponentKernelPoint F hF :=82⟨kernel F C.val, by83obtain ⟨I, hI⟩ := C.property84exact ⟨I, congrArg (kernel F) hI⟩⟩8586@[simp]87theorem componentPointToComponentKernelPoint_toComponentPoint (I : F) :88componentPointToComponentKernelPoint F hF ((space F hF).toComponentPoint I) =89toComponentKernelPoint F hF I := rfl9091theorem componentPointToComponentKernelPoint_surjective :92Function.Surjective (componentPointToComponentKernelPoint F hF) := by93intro J94obtain ⟨I, rfl⟩ := toComponentKernelPoint_surjective F hF J95exact ⟨(space F hF).toComponentPoint I, rfl⟩9697/-- The concrete component model of the G-transform has pullback closure. -/98def componentPointClosure : ClosureSpace (space F hF).ComponentPoint :=99(componentKernelClosure F hF).induced (componentPointToComponentKernelPoint F hF)100101/-- Commutativity of the quotient/component/intersection square. -/102theorem componentPointToComponentKernelPoint_gPointEquivComponentPoint103(q : (space F hF).GPoint) :104componentPointToComponentKernelPoint F hF ((space F hF).gPointEquivComponentPoint q) =105pPointEquivComponentKernelPoint F hF ((space F hF).delta q) := by106refine Quotient.inductionOn q ?_107intro I108exact (pPointEquivComponentKernelPoint_toPPoint F hF I).symm109110/-- Naturality on image sets, with no injectivity claim for the intersection map. -/111theorem image_componentPointToComponentKernelPoint_gPointEquivComponentPoint112(S : Set (space F hF).GPoint) :113componentPointToComponentKernelPoint F hF '' ((space F hF).gPointEquivComponentPoint '' S) =114pPointEquivComponentKernelPoint F hF '' ((space F hF).delta '' S) := by115apply Set.ext116intro J117constructor118· rintro ⟨C, ⟨q, hq, rfl⟩, hJ⟩119exact ⟨(space F hF).delta q, ⟨q, hq, rfl⟩,120(componentPointToComponentKernelPoint_gPointEquivComponentPoint F hF q).symm.trans hJ⟩121· rintro ⟨p, ⟨q, hq, rfl⟩, hJ⟩122exact ⟨(space F hF).gPointEquivComponentPoint q, ⟨q, hq, rfl⟩,123(componentPointToComponentKernelPoint_gPointEquivComponentPoint F hF q).trans hJ⟩124125/-- The G-closure comparison follows from the actual P-homeomorphism and126commuting maps, without identifying the two point types by definitional equality. -/127theorem gPointEquivComponentPoint_mem_closure_iff128(S : Set (space F hF).GPoint) (q : (space F hF).GPoint) :129(space F hF).gPointEquivComponentPoint q ∈130(componentPointClosure F hF).closure ((space F hF).gPointEquivComponentPoint '' S) ↔131q ∈ (space F hF).gTransform.closure S := by132change componentPointToComponentKernelPoint F hF ((space F hF).gPointEquivComponentPoint q) ∈133(componentKernelClosure F hF).closure134(componentPointToComponentKernelPoint F hF ''135((space F hF).gPointEquivComponentPoint '' S)) ↔ _136rw [componentPointToComponentKernelPoint_gPointEquivComponentPoint,137image_componentPointToComponentKernelPoint_gPointEquivComponentPoint]138exact pPointEquivComponentKernelPoint_mem_closure_iff F hF139((space F hF).delta '' S) ((space F hF).delta q)140141/-- Exact preservation of G-closure under the quotient-to-subset equivalence. -/142theorem image_gPointEquivComponentPoint_closure (S : Set (space F hF).GPoint) :143(space F hF).gPointEquivComponentPoint '' (space F hF).gTransform.closure S =144(componentPointClosure F hF).closure ((space F hF).gPointEquivComponentPoint '' S) := by145apply Set.ext146intro C147constructor148· rintro ⟨q, hq, rfl⟩149exact (gPointEquivComponentPoint_mem_closure_iff F hF S q).mpr hq150· intro hC151obtain ⟨q, rfl⟩ := (space F hF).gPointEquivComponentPoint.surjective C152exact ⟨q, (gPointEquivComponentPoint_mem_closure_iff F hF S q).mp hC, rfl⟩153154/-- The G-transform is homeomorphic to the concrete component-set model. -/155noncomputable def gPointHomeomorphComponentPoint :156Homeomorph (space F hF).gTransform (componentPointClosure F hF) :=157Homeomorph.ofImageClosure _ _ (space F hF).gPointEquivComponentPoint158(image_gPointEquivComponentPoint_closure F hF)159160end HullKernel161end ClosureSpace