@@ -14,6 +14,7 @@ public import Mathlib.RingTheory.LocalRing.Basic
1414public import Mathlib.Topology.Algebra.Module.Determinant
1515public import Mathlib.Topology.Algebra.Module.ModuleTopology
1616public import Mathlib.Topology.Algebra.Module.Simple
17+ public import Mathlib.Topology.Algebra.Module.Complement
1718public import Mathlib.Topology.Algebra.SeparationQuotient.FiniteDimensional
1819public import Mathlib.Topology.Maps.Strict.Basic
1920
@@ -704,3 +705,45 @@ theorem HasCompactMulSupport.eq_one_or_finiteDimensional {X : Type*} [Topologica
704705 HasCompactSupport.eq_zero_or_finiteDimensional 𝕜 (X := Additive X) hf h'f
705706
706707end Riesz
708+
709+ section Compl
710+
711+ open Submodule
712+
713+ /-- If `p` is a closed subspace with finite codimension, then any algebraic complement `q` to `p`
714+ is a topological complement. -/
715+ theorem Submodule.IsCompl.isTopCompl_of_finiteDimensional_quotient {p q : Submodule 𝕜 E}
716+ (h : IsCompl p q) (hp : IsClosed (p : Set E)) [FiniteDimensional 𝕜 (E ⧸ p)] :
717+ IsTopCompl p q := by
718+ let φ : E ⧸ p →L[𝕜] q := (p.quotientEquivOfIsCompl q h).toLinearMap.toContinuousLinearMap
719+ have := (φ ∘L p.mkQL).isTopCompl_of_proj fun x ↦ by simp [φ]
720+ simpa [φ] using this.symm
721+
722+ /-- Assume that `p q : Submodule 𝕜 E` are algebraic complements. If `p` is closed and `q`
723+ has finite dimension, then they are in fact topological complements.
724+
725+ Note that this theorem does not help you to build a closed complement to a finite dimensional
726+ subspace. That requires the Hahn-Banach theorem, and you don't get much control over what the
727+ complement is. See `Submodule.ClosedComplemented.of_finiteDimensional`. -/
728+ theorem Submodule.IsCompl.isTopCompl_of_isClosed_of_finiteDimensional {p q : Submodule 𝕜 E}
729+ (h : IsCompl p q) (hp : IsClosed (p : Set E)) [hq : FiniteDimensional 𝕜 q] :
730+ IsTopCompl p q := by
731+ suffices FiniteDimensional 𝕜 (E ⧸ p) from h.isTopCompl_of_finiteDimensional_quotient hp
732+ exact (p.quotientEquivOfIsCompl q h).symm.finiteDimensional
733+
734+ theorem Submodule.ClosedComplemented.of_finiteDimensional_quotient {p : Submodule 𝕜 E}
735+ (hp : IsClosed (p : Set E)) [hq : FiniteDimensional 𝕜 (E ⧸ p)] : p.ClosedComplemented := by
736+ obtain ⟨q, hq⟩ : ∃ q, IsCompl p q := p.exists_isCompl
737+ exact hq.isTopCompl_of_finiteDimensional_quotient hp |>.closedComplemented
738+
739+ @ [deprecated (since := "2026-05-09" )]
740+ alias Submodule.ClosedComplemented.of_quotient_finiteDimensional :=
741+ Submodule.ClosedComplemented.of_finiteDimensional_quotient
742+
743+ omit [IsTopologicalAddGroup F] [ContinuousSMul 𝕜 F] in
744+ theorem ContinuousLinearMap.ker_closedComplemented_of_finiteDimensional_range [T2Space F]
745+ (f : E →L[𝕜] F) [FiniteDimensional 𝕜 f.range] : f.ker.ClosedComplemented := by
746+ suffices FiniteDimensional 𝕜 (E ⧸ f.ker) from .of_finiteDimensional_quotient f.isClosed_ker
747+ exact f.toLinearMap.quotKerEquivRange.symm.finiteDimensional
748+
749+ end Compl
0 commit comments