Skip to content

feat: define Submodule.IsTopCompl#38547

Open
ADedecker wants to merge 24 commits intoleanprover-community:masterfrom
ADedecker:AD_top_compl
Open

feat: define Submodule.IsTopCompl#38547
ADedecker wants to merge 24 commits intoleanprover-community:masterfrom
ADedecker:AD_top_compl

Conversation

@ADedecker
Copy link
Copy Markdown
Member

@ADedecker ADedecker commented Apr 26, 2026

Right now, Mathlib defines Submodule.ClosedComplemented. Submodule.IsTopCompl is the more precise version saying that two subspaces are topological complements to each other.


Open in Gitpod

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 26, 2026

PR summary 452dba9608

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
362 files Mathlib.AlgebraicGeometry.EllipticCurve.LFunction Mathlib.Analysis.Analytic.Binomial Mathlib.Analysis.CStarAlgebra.ApproximateUnit Mathlib.Analysis.CStarAlgebra.CStarMatrix Mathlib.Analysis.CStarAlgebra.CompletelyPositiveMap Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.Basic Mathlib.Analysis.CStarAlgebra.ContinuousFunctionalCalculus.Order Mathlib.Analysis.CStarAlgebra.Fuglede Mathlib.Analysis.CStarAlgebra.GelfandDuality Mathlib.Analysis.CStarAlgebra.GelfandNaimarkSegal Mathlib.Analysis.CStarAlgebra.Hom Mathlib.Analysis.CStarAlgebra.Module.Constructions Mathlib.Analysis.CStarAlgebra.Module.Defs Mathlib.Analysis.CStarAlgebra.PositiveLinearMap Mathlib.Analysis.CStarAlgebra.Projection Mathlib.Analysis.CStarAlgebra.SpecialFunctions.PosPart Mathlib.Analysis.CStarAlgebra.Spectrum Mathlib.Analysis.CStarAlgebra.Unitary.Connected Mathlib.Analysis.CStarAlgebra.Unitary.Span Mathlib.Analysis.Calculus.ImplicitContDiff Mathlib.Analysis.Calculus.ImplicitFunction.Bivariate Mathlib.Analysis.Calculus.ImplicitFunction.ProdDomain Mathlib.Analysis.Calculus.Implicit Mathlib.Analysis.Calculus.LineDeriv.IntegrationByParts Mathlib.Analysis.Calculus.LogDerivUniformlyOn Mathlib.Analysis.Calculus.Rademacher Mathlib.Analysis.Calculus.Taylor Mathlib.Analysis.Complex.AbsMax Mathlib.Analysis.Complex.BorelCaratheodory Mathlib.Analysis.Complex.CauchyIntegral Mathlib.Analysis.Complex.Hadamard Mathlib.Analysis.Complex.Harmonic.Analytic Mathlib.Analysis.Complex.Harmonic.Liouville Mathlib.Analysis.Complex.Harmonic.MeanValue Mathlib.Analysis.Complex.Harmonic.Poisson Mathlib.Analysis.Complex.HasPrimitives Mathlib.Analysis.Complex.JensenFormula Mathlib.Analysis.Complex.Liouville Mathlib.Analysis.Complex.LocallyUniformLimit Mathlib.Analysis.Complex.MeanValue Mathlib.Analysis.Complex.OpenMapping Mathlib.Analysis.Complex.Periodic Mathlib.Analysis.Complex.PhragmenLindelof Mathlib.Analysis.Complex.Poisson Mathlib.Analysis.Complex.Polynomial.Basic Mathlib.Analysis.Complex.Polynomial.GaussLucas Mathlib.Analysis.Complex.Polynomial.UnitTrinomial Mathlib.Analysis.Complex.Positivity Mathlib.Analysis.Complex.RemovableSingularity Mathlib.Analysis.Complex.Schwarz Mathlib.Analysis.Complex.SummableUniformlyOn Mathlib.Analysis.Complex.TaylorSeries Mathlib.Analysis.Complex.UpperHalfPlane.Exp Mathlib.Analysis.Complex.UpperHalfPlane.Manifold Mathlib.Analysis.Complex.UpperHalfPlane.Measure Mathlib.Analysis.Complex.ValueDistribution.CharacteristicFunction Mathlib.Analysis.Complex.ValueDistribution.FirstMainTheorem Mathlib.Analysis.Complex.ValueDistribution.LogCounting.Asymptotic Mathlib.Analysis.Complex.ValueDistribution.LogCounting.Basic Mathlib.Analysis.Complex.ValueDistribution.Proximity.Basic Mathlib.Analysis.Convex.Integral Mathlib.Analysis.Distribution.AEEqOfIntegralContDiff Mathlib.Analysis.Distribution.FourierMultiplier Mathlib.Analysis.Distribution.FourierSchwartz Mathlib.Analysis.Distribution.SchwartzSpace.Basic Mathlib.Analysis.Distribution.SchwartzSpace.Deriv Mathlib.Analysis.Distribution.SchwartzSpace.Fourier Mathlib.Analysis.Distribution.SchwartzSpace Mathlib.Analysis.Distribution.Sobolev Mathlib.Analysis.Distribution.Support Mathlib.Analysis.Distribution.TemperateGrowth Mathlib.Analysis.Distribution.TemperedDistribution Mathlib.Analysis.Fourier.AddCircleMulti Mathlib.Analysis.Fourier.AddCircle Mathlib.Analysis.Fourier.Convolution Mathlib.Analysis.Fourier.FourierTransformDeriv Mathlib.Analysis.Fourier.Inversion Mathlib.Analysis.Fourier.LpSpace Mathlib.Analysis.Fourier.PoissonSummation Mathlib.Analysis.Fourier.ZMod Mathlib.Analysis.FunctionalSpaces.SobolevInequality Mathlib.Analysis.InnerProductSpace.Harmonic.Constructions Mathlib.Analysis.InnerProductSpace.StandardSubspace Mathlib.Analysis.InnerProductSpace.StarOrder Mathlib.Analysis.MellinInversion Mathlib.Analysis.MellinTransform Mathlib.Analysis.Meromorphic.Complex Mathlib.Analysis.Normed.Algebra.Basic Mathlib.Analysis.Normed.Algebra.GelfandFormula Mathlib.Analysis.Normed.Algebra.GelfandMazur Mathlib.Analysis.Normed.Module.Complemented Mathlib.Analysis.Normed.Module.ContinuousInverse Mathlib.Analysis.Normed.Module.DoubleDual Mathlib.Analysis.Normed.Module.Dual Mathlib.Analysis.Normed.Module.HahnBanach Mathlib.Analysis.Normed.Module.MultipliableUniformlyOn Mathlib.Analysis.Normed.Module.WeakDual Mathlib.Analysis.Normed.Ring.InfiniteProd Mathlib.Analysis.ODE.PicardLindelof Mathlib.Analysis.Polynomial.Factorization Mathlib.Analysis.Polynomial.Fourier Mathlib.Analysis.Polynomial.MahlerMeasure Mathlib.Analysis.Real.Pi.Irrational Mathlib.Analysis.Real.Pi.Leibniz Mathlib.Analysis.Real.Pi.Wallis Mathlib.Analysis.SpecialFunctions.Complex.Analytic Mathlib.Analysis.SpecialFunctions.Complex.Arctan Mathlib.Analysis.SpecialFunctions.Complex.CircleAddChar Mathlib.Analysis.SpecialFunctions.Complex.LogBounds Mathlib.Analysis.SpecialFunctions.ContinuousFunctionalCalculus.ExpLog.Order Mathlib.Analysis.SpecialFunctions.ContinuousFunctionalCalculus.Rpow.IntegralRepresentation Mathlib.Analysis.SpecialFunctions.ContinuousFunctionalCalculus.Rpow.Order Mathlib.Analysis.SpecialFunctions.ContinuousFunctionalCalculus.Rpow.RingInverseOrder Mathlib.Analysis.SpecialFunctions.Elliptic.Weierstrass Mathlib.Analysis.SpecialFunctions.Gamma.Basic Mathlib.Analysis.SpecialFunctions.Gamma.Beta Mathlib.Analysis.SpecialFunctions.Gamma.BohrMollerup Mathlib.Analysis.SpecialFunctions.Gamma.Deligne Mathlib.Analysis.SpecialFunctions.Gamma.Deriv Mathlib.Analysis.SpecialFunctions.Gamma.Digamma Mathlib.Analysis.SpecialFunctions.Gaussian.FourierTransform Mathlib.Analysis.SpecialFunctions.Gaussian.GaussianIntegral Mathlib.Analysis.SpecialFunctions.Gaussian.PoissonSummation Mathlib.Analysis.SpecialFunctions.ImproperIntegrals Mathlib.Analysis.SpecialFunctions.Integrability.Basic Mathlib.Analysis.SpecialFunctions.Integrability.LogMeromorphic Mathlib.Analysis.SpecialFunctions.Integrals.Basic Mathlib.Analysis.SpecialFunctions.Integrals.LogTrigonometric Mathlib.Analysis.SpecialFunctions.Integrals.PosLogEqCircleAverage Mathlib.Analysis.SpecialFunctions.JapaneseBracket Mathlib.Analysis.SpecialFunctions.Log.Summable Mathlib.Analysis.SpecialFunctions.MulExpNegMulSqIntegral Mathlib.Analysis.SpecialFunctions.NonIntegrable Mathlib.Analysis.SpecialFunctions.Pow.Integral Mathlib.Analysis.SpecialFunctions.Stirling Mathlib.Analysis.SpecialFunctions.Trigonometric.Chebyshev.ChebyshevGauss Mathlib.Analysis.SpecialFunctions.Trigonometric.Chebyshev.Orthogonality Mathlib.Analysis.SpecialFunctions.Trigonometric.Cotangent Mathlib.Analysis.SpecialFunctions.Trigonometric.EulerSineProd Mathlib.Analysis.SumIntegralExpDecay Mathlib.Geometry.Manifold.Complex Mathlib.Geometry.Manifold.IntegralCurve.ExistUnique Mathlib.Geometry.Manifold.IntegralCurve.UniformTime Mathlib.Geometry.Manifold.Riemannian.Basic Mathlib.InformationTheory.KullbackLeibler.Basic Mathlib.InformationTheory.KullbackLeibler.ChainRule Mathlib.InformationTheory.KullbackLeibler.KLFun Mathlib.LinearAlgebra.QuadraticForm.Complex Mathlib.MeasureTheory.Constructions.HaarToSphere Mathlib.MeasureTheory.Function.AEEqOfIntegral Mathlib.MeasureTheory.Function.ConditionalExpectation.Basic Mathlib.MeasureTheory.Function.ConditionalExpectation.CondJensen Mathlib.MeasureTheory.Function.ConditionalExpectation.CondexpL1 Mathlib.MeasureTheory.Function.ConditionalExpectation.CondexpL2 Mathlib.MeasureTheory.Function.ConditionalExpectation.Indicator Mathlib.MeasureTheory.Function.ConditionalExpectation.LebesgueBochner Mathlib.MeasureTheory.Function.ConditionalExpectation.PullOut Mathlib.MeasureTheory.Function.ConditionalExpectation.RadonNikodym Mathlib.MeasureTheory.Function.ConditionalExpectation.Real Mathlib.MeasureTheory.Function.ConditionalExpectation.Unique Mathlib.MeasureTheory.Function.ConditionalLExpectation Mathlib.MeasureTheory.Function.ConvergenceInDistribution Mathlib.MeasureTheory.Function.FactorsThrough Mathlib.MeasureTheory.Integral.CircleAverage Mathlib.MeasureTheory.Integral.CircleIntegral Mathlib.MeasureTheory.Integral.CircleTransform Mathlib.MeasureTheory.Integral.ExpDecay Mathlib.MeasureTheory.Integral.Gamma Mathlib.MeasureTheory.Integral.IntegralEqImproper Mathlib.MeasureTheory.Integral.IntervalIntegral.ContDiff Mathlib.MeasureTheory.Integral.IntervalIntegral.DistLEIntegral Mathlib.MeasureTheory.Integral.IntervalIntegral.FundThmCalculus Mathlib.MeasureTheory.Integral.IntervalIntegral.IntegrationByParts Mathlib.MeasureTheory.Integral.IntervalIntegral.TrapezoidalRule Mathlib.MeasureTheory.Integral.PeakFunction Mathlib.MeasureTheory.Integral.TorusIntegral Mathlib.MeasureTheory.Measure.CharacteristicFunction.Basic Mathlib.MeasureTheory.Measure.CharacteristicFunction.TaylorExpansion Mathlib.MeasureTheory.Measure.CharacteristicFunction Mathlib.MeasureTheory.Measure.Decomposition.IntegralRNDeriv Mathlib.MeasureTheory.Measure.FiniteMeasureExt Mathlib.MeasureTheory.Measure.IntegralCharFun Mathlib.MeasureTheory.Measure.Lebesgue.VolumeOfBalls Mathlib.MeasureTheory.Measure.LevyConvergence Mathlib.MeasureTheory.VectorMeasure.Decomposition.Lebesgue Mathlib.MeasureTheory.VectorMeasure.Decomposition.RadonNikodym Mathlib.MeasureTheory.VectorMeasure.WithDensity Mathlib.NumberTheory.AbelSummation Mathlib.NumberTheory.Chebyshev Mathlib.NumberTheory.DirichletCharacter.GaussSum Mathlib.NumberTheory.EulerProduct.DirichletLSeries Mathlib.NumberTheory.FLT.Three Mathlib.NumberTheory.Fermat Mathlib.NumberTheory.GaussSum Mathlib.NumberTheory.Harmonic.Bounds Mathlib.NumberTheory.Harmonic.GammaDeriv Mathlib.NumberTheory.Harmonic.ZetaAsymp Mathlib.NumberTheory.Height.NumberField Mathlib.NumberTheory.JacobiSum.Basic Mathlib.NumberTheory.LSeries.AbstractFuncEq Mathlib.NumberTheory.LSeries.Deriv Mathlib.NumberTheory.LSeries.DirichletContinuation Mathlib.NumberTheory.LSeries.Dirichlet Mathlib.NumberTheory.LSeries.HurwitzZetaEven Mathlib.NumberTheory.LSeries.HurwitzZetaOdd Mathlib.NumberTheory.LSeries.HurwitzZetaValues Mathlib.NumberTheory.LSeries.HurwitzZeta Mathlib.NumberTheory.LSeries.MellinEqDirichlet Mathlib.NumberTheory.LSeries.Nonvanishing Mathlib.NumberTheory.LSeries.Positivity Mathlib.NumberTheory.LSeries.PrimesInAP Mathlib.NumberTheory.LSeries.RiemannZeta Mathlib.NumberTheory.LSeries.SumCoeff Mathlib.NumberTheory.LSeries.ZMod Mathlib.NumberTheory.LSeries.ZetaZeros Mathlib.NumberTheory.LegendreSymbol.AddCharacter Mathlib.NumberTheory.LegendreSymbol.JacobiSymbol Mathlib.NumberTheory.LegendreSymbol.QuadraticChar.GaussSum Mathlib.NumberTheory.LegendreSymbol.QuadraticReciprocity Mathlib.NumberTheory.LucasLehmer Mathlib.NumberTheory.MahlerMeasure Mathlib.NumberTheory.ModularForms.Basic Mathlib.NumberTheory.ModularForms.Bounds Mathlib.NumberTheory.ModularForms.CuspFormSubmodule Mathlib.NumberTheory.ModularForms.DedekindEta Mathlib.NumberTheory.ModularForms.Delta Mathlib.NumberTheory.ModularForms.Derivative Mathlib.NumberTheory.ModularForms.Discriminant Mathlib.NumberTheory.ModularForms.EisensteinSeries.Basic Mathlib.NumberTheory.ModularForms.EisensteinSeries.E2.Defs Mathlib.NumberTheory.ModularForms.EisensteinSeries.E2.MDifferentiable Mathlib.NumberTheory.ModularForms.EisensteinSeries.E2.Summable Mathlib.NumberTheory.ModularForms.EisensteinSeries.E2.Transform Mathlib.NumberTheory.ModularForms.EisensteinSeries.MDifferentiable Mathlib.NumberTheory.ModularForms.EisensteinSeries.QExpansion Mathlib.NumberTheory.ModularForms.JacobiTheta.Bounds Mathlib.NumberTheory.ModularForms.JacobiTheta.Manifold Mathlib.NumberTheory.ModularForms.JacobiTheta.OneVariable Mathlib.NumberTheory.ModularForms.JacobiTheta.TwoVariable Mathlib.NumberTheory.ModularForms.LevelOne Mathlib.NumberTheory.ModularForms.NormTrace Mathlib.NumberTheory.ModularForms.Petersson Mathlib.NumberTheory.ModularForms.QExpansion Mathlib.NumberTheory.NumberField.AdeleRing Mathlib.NumberTheory.NumberField.CMField Mathlib.NumberTheory.NumberField.CanonicalEmbedding.Basic Mathlib.NumberTheory.NumberField.CanonicalEmbedding.ConvexBody Mathlib.NumberTheory.NumberField.CanonicalEmbedding.FundamentalCone Mathlib.NumberTheory.NumberField.CanonicalEmbedding.NormLeOne Mathlib.NumberTheory.NumberField.CanonicalEmbedding.PolarCoord Mathlib.NumberTheory.NumberField.ClassNumber Mathlib.NumberTheory.NumberField.Completion.FinitePlace Mathlib.NumberTheory.NumberField.Completion.InfinitePlace Mathlib.NumberTheory.NumberField.Completion.LiesOverInstances Mathlib.NumberTheory.NumberField.Completion.Ramification Mathlib.NumberTheory.NumberField.Cyclotomic.Basic Mathlib.NumberTheory.NumberField.Cyclotomic.Embeddings Mathlib.NumberTheory.NumberField.Cyclotomic.Galois Mathlib.NumberTheory.NumberField.Cyclotomic.Ideal Mathlib.NumberTheory.NumberField.Cyclotomic.PID Mathlib.NumberTheory.NumberField.Cyclotomic.Three Mathlib.NumberTheory.NumberField.DedekindZeta Mathlib.NumberTheory.NumberField.Discriminant.Basic Mathlib.NumberTheory.NumberField.Discriminant.Different Mathlib.NumberTheory.NumberField.EquivReindex Mathlib.NumberTheory.NumberField.FinitePlaces Mathlib.NumberTheory.NumberField.House Mathlib.NumberTheory.NumberField.Ideal.Asymptotics Mathlib.NumberTheory.NumberField.Ideal.Basic Mathlib.NumberTheory.NumberField.InfiniteAdeleRing Mathlib.NumberTheory.NumberField.InfinitePlace.Basic Mathlib.NumberTheory.NumberField.InfinitePlace.Completion Mathlib.NumberTheory.NumberField.InfinitePlace.Embeddings Mathlib.NumberTheory.NumberField.InfinitePlace.Ramification Mathlib.NumberTheory.NumberField.InfinitePlace.TotallyRealComplex Mathlib.NumberTheory.NumberField.ProductFormula Mathlib.NumberTheory.NumberField.Units.Basic Mathlib.NumberTheory.NumberField.Units.DirichletTheorem Mathlib.NumberTheory.NumberField.Units.Regulator Mathlib.NumberTheory.Transcendental.Lindemann.AnalyticalPart Mathlib.NumberTheory.ZetaValues Mathlib.Probability.BorelCantelli Mathlib.Probability.CDF Mathlib.Probability.CentralLimitTheorem Mathlib.Probability.Combinatorics.BinomialRandomGraph.Defs Mathlib.Probability.CondVar Mathlib.Probability.ConditionalExpectation Mathlib.Probability.Distributions.Beta Mathlib.Probability.Distributions.Binomial Mathlib.Probability.Distributions.Cauchy Mathlib.Probability.Distributions.Exponential Mathlib.Probability.Distributions.Gamma Mathlib.Probability.Distributions.Gaussian.Basic Mathlib.Probability.Distributions.Gaussian.CharFun Mathlib.Probability.Distributions.Gaussian.Fernique Mathlib.Probability.Distributions.Gaussian.HasGaussianLaw.Basic Mathlib.Probability.Distributions.Gaussian.HasGaussianLaw.Def Mathlib.Probability.Distributions.Gaussian.HasGaussianLaw.Independence Mathlib.Probability.Distributions.Gaussian.IsGaussianProcess.Basic Mathlib.Probability.Distributions.Gaussian.IsGaussianProcess.Def Mathlib.Probability.Distributions.Gaussian.IsGaussianProcess.Independence Mathlib.Probability.Distributions.Gaussian.Multivariate Mathlib.Probability.Distributions.Gaussian.Real Mathlib.Probability.Distributions.Pareto Mathlib.Probability.Distributions.Poisson.PoissonLimitThm Mathlib.Probability.Distributions.SetBernoulli Mathlib.Probability.Distributions.TwoValued Mathlib.Probability.HasLawExists Mathlib.Probability.HasLaw Mathlib.Probability.IdentDistribIndep Mathlib.Probability.IdentDistrib Mathlib.Probability.Independence.BoundedContinuousFunction Mathlib.Probability.Independence.CharacteristicFunction Mathlib.Probability.Independence.Conditional Mathlib.Probability.Independence.InfinitePi Mathlib.Probability.Independence.Integration Mathlib.Probability.Independence.Process.HasIndepIncrements.IsGaussianProcess Mathlib.Probability.Independence.ZeroOne Mathlib.Probability.Kernel.CompProdEqIff Mathlib.Probability.Kernel.Composition.AbsolutelyContinuous Mathlib.Probability.Kernel.CondDistrib Mathlib.Probability.Kernel.Condexp Mathlib.Probability.Kernel.Disintegration.CDFToKernel Mathlib.Probability.Kernel.Disintegration.CondCDF Mathlib.Probability.Kernel.Disintegration.Density Mathlib.Probability.Kernel.Disintegration.Integral Mathlib.Probability.Kernel.Disintegration.StandardBorel Mathlib.Probability.Kernel.Disintegration.Unique Mathlib.Probability.Kernel.IonescuTulcea.Traj Mathlib.Probability.Kernel.Posterior Mathlib.Probability.Kernel.RadonNikodym Mathlib.Probability.Kernel.Representation Mathlib.Probability.Martingale.Basic Mathlib.Probability.Martingale.BorelCantelli Mathlib.Probability.Martingale.Centering Mathlib.Probability.Martingale.Convergence Mathlib.Probability.Martingale.OptionalSampling Mathlib.Probability.Martingale.OptionalStopping Mathlib.Probability.Martingale.Upcrossing Mathlib.Probability.Moments.Basic Mathlib.Probability.Moments.ComplexMGF Mathlib.Probability.Moments.CovarianceBilinDual Mathlib.Probability.Moments.CovarianceBilin Mathlib.Probability.Moments.Covariance Mathlib.Probability.Moments.MGFAnalytic Mathlib.Probability.Moments.SubGaussian Mathlib.Probability.Moments.Tilted Mathlib.Probability.Moments.Variance Mathlib.Probability.Notation Mathlib.Probability.Process.Adapted Mathlib.Probability.Process.Filtration Mathlib.Probability.Process.FiniteDimensionalLaws Mathlib.Probability.Process.HittingTime Mathlib.Probability.Process.LocalProperty Mathlib.Probability.Process.PartitionFiltration Mathlib.Probability.Process.Predictable Mathlib.Probability.Process.Stopping Mathlib.Probability.ProductMeasure Mathlib.Probability.StrongLaw Mathlib.RingTheory.Polynomial.Selmer Mathlib.Tactic.NormNum.LegendreSymbol Mathlib.Tactic
1
Mathlib.Topology.Algebra.Module.Complement (new file) 1217

Declarations diff

+ ClosedComplemented.complement
+ ClosedComplemented.exists_isClosed_isCompl
+ ClosedComplemented.exists_isTopCompl
+ ClosedComplemented.isClosed
+ ClosedComplemented.isClosed_complement
+ ClosedComplemented.isCompl_complement
+ ClosedComplemented.isTopCompl_complement
+ IsCompl.isIdempotentElem_projection
+ IsCompl.isTopCompl_iff
+ IsCompl.isTopCompl_iff_linearProjOfIsCompl
+ IsCompl.projection_add_projection_eq_id
+ IsCompl.projection_apply_of_mem_right
+ IsCompl.projection_apply_right
+ IsCompl.projection_eq_id_sub_projection
+ IsTopCompl
+ IsTopCompl.closedComplemented
+ IsTopCompl.coe_projectionOnto_apply
+ IsTopCompl.continuous_linearProjOfIsCompl
+ IsTopCompl.isClosed
+ IsTopCompl.isClosed'
+ IsTopCompl.isIdempotentElem_projection
+ IsTopCompl.isQuotientMap_projectionOnto
+ IsTopCompl.ker_projection
+ IsTopCompl.ker_projectionOnto
+ IsTopCompl.projection
+ IsTopCompl.projectionOnto
+ IsTopCompl.projectionOnto_apply_eq_zero_iff
+ IsTopCompl.projectionOnto_apply_eq_zero_of_mem_right
+ IsTopCompl.projectionOnto_apply_left
+ IsTopCompl.projectionOnto_apply_right
+ IsTopCompl.projectionOnto_surjective
+ IsTopCompl.projection_add_projection_eq_id
+ IsTopCompl.projection_add_projection_eq_self
+ IsTopCompl.projection_apply
+ IsTopCompl.projection_apply_eq_zero_iff
+ IsTopCompl.projection_apply_eq_zero_of_mem_right
+ IsTopCompl.projection_apply_left
+ IsTopCompl.projection_apply_mem
+ IsTopCompl.projection_apply_right
+ IsTopCompl.projection_eq_id_sub_projection
+ IsTopCompl.projection_eq_self_iff
+ IsTopCompl.projection_eq_self_sub_projection
+ IsTopCompl.range_projection
+ IsTopCompl.range_projectionOnto
+ IsTopCompl.symm
+ IsTopCompl.t2Space
+ IsTopCompl.t3Space
+ IsTopCompl.toLinearMap_projection
+ IsTopCompl.toLinearMap_projectionOnto
+ _root_.ContinuousLinearMap.IsIdempotentElem.eq_isTopCompl_projection
+ _root_.ContinuousLinearMap.IsIdempotentElem.isTopCompl
+ _root_.ContinuousLinearMap.closedComplemented_ker_of_rightInverse
+ _root_.ContinuousLinearMap.closedComplemented_range_of_leftInverse
+ _root_.ContinuousLinearMap.isIdempotentElem_iff_eq_isTopCompl_projection_range_ker
+ _root_.ContinuousLinearMap.isTopCompl_of_proj
+ _root_.ContinuousLinearMap.isTopCompl_range_ker_of_leftInverse
+ closedComplemented_iff_exists_isTopCompl
+ isTopCompl_bot_top
+ isTopCompl_top_bot
+ linearProjOfIsCompl_apply_of_mem_right
- ContinuousLinearMap.closedComplemented_ker_of_rightInverse
- complement
- exists_isClosed_isCompl
- isClosed
- isClosed_complement
- isCompl_complement

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.


No changes to technical debt.

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@themathqueen
Copy link
Copy Markdown
Collaborator

ping me when this is ready; I'd like to review this :)

@ADedecker ADedecker added t-topology Topological spaces, uniform spaces, metric spaces, filters t-analysis Analysis (normed *, calculus) labels Apr 27, 2026
@ADedecker ADedecker added the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Apr 27, 2026
@ADedecker ADedecker marked this pull request as ready for review April 27, 2026 13:25
@ADedecker
Copy link
Copy Markdown
Member Author

@themathqueen CI will probably fail a few times because of import stuff, but otherwise this is ready for review!

Comment on lines +148 to +151
protected noncomputable def IsTopCompl.projectionOnto (h : IsTopCompl p q) : M →L[R] p :=
⟨p.linearProjOfIsCompl q h.isCompl, by
rw [IsInducing.subtypeVal.continuous_iff]
exact h.continuous_projection⟩
Copy link
Copy Markdown
Member Author

@ADedecker ADedecker Apr 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not the standard name, but I claim that it should be. I think the Onto is the best way to distinguish between the two forms of a projection.

So I claim we shoud have:

  • IsCompl.projection / IsCompl.projectionOnto
  • Submodule.orthogonalProjectionOnto / Submodule.orthogonalProjection

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So you're proposing these changes, right?

  • Submodule.linearProjOfIsCompl -> Submodule.IsCompl.projectionOnto,
  • Submodule.orthogonalProjection -> Submodule.orthogonalProjectionOnto,
  • Submodule.starProjection -> Submodule.orthogonalProjection

I agree that these are better names (especially the first one).
Only problem with the latter two is that orthogonalProjection -> orthogonalProjectionOnto won't have a deprecation or anything (I guess we can add a note?).
But, how about we start with the first one? Then later we can change the orthogonal projections?

Start a Zulip thread about this, just in case anyone objects to this?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, these are my suggestions. I won't really have time to do this renaming though, but I'll start the discussion on Zulip in case you (or someone else) wants to proceed.

@github-actions github-actions Bot removed the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Apr 27, 2026
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean Outdated
@ocfnash
Copy link
Copy Markdown
Contributor

ocfnash commented Apr 29, 2026

I believe that @themathqueen is right that some renaming might be desirable but I'm happy to merge these changes as they stand.

With that in mind:
bors d=@themathqueen

@mathlib-bors
Copy link
Copy Markdown
Contributor

mathlib-bors Bot commented Apr 29, 2026

✌️ themathqueen can now approve this pull request. To approve and merge a pull request, simply reply with bors r+. More detailed instructions are available here.

@mathlib-triage mathlib-triage Bot added the delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). label Apr 29, 2026
@ADedecker
Copy link
Copy Markdown
Member Author

@ocfnash I think there is a misunderstanding : the names in this PR are not the standard one given to similar objects, but I think that they are better (and IIUC Monica agrees). Thus the renaming discussion is about the existing objects in Mathlib, rather than the ones introduced in this PR.

IsClosed (p : Set M) :=
h.symm.isClosed'

/-- If `p` and `q` are topological complements and `q` is closed, then `p` is Hausdorff. -/
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we say:

Suggested change
/-- If `p` and `q` are topological complements and `q` is closed, then `p` is Hausdorff. -/
/-- If `p` and `q` are topological complements and `q` is closed, then `p` is regular. -/

or else move this comment down to the instance below.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(I wrote this hours ago but accidentally left the review pending)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll move it to the theorem below, all of these axioms are equivalent anyways in this setting.

@ocfnash
Copy link
Copy Markdown
Contributor

ocfnash commented Apr 29, 2026

ocfnash I think there is a misunderstanding : the names in this PR are not the standard one given to similar objects, but I think that they are better (and IIUC Monica agrees). Thus the renaming discussion is about the existing objects in Mathlib, rather than the ones introduced in this PR.

Indeed this was already my understanding. The only reason I haven't sent this straight to bors was that I wanted to be sure Monica felt the conversation here was resolved.

@mathlib-triage mathlib-triage Bot added delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). and removed delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). labels Apr 29, 2026
Copy link
Copy Markdown
Collaborator

@themathqueen themathqueen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's a first round of comments. I'll do another round first thing tomorrow.
Before I forget, we'll want the IsTopCompl versions of Submodule.toLinearMap_orthogonalProjection_eq_linearProjOfIsCompl and Submodule.toLinearMap_starProjection_eq_isComplProjection.
I think it's fine if you do it in this PR, but also fine to keep it as a follow up, up to you.

Comment thread Mathlib/Topology/Algebra/Module/Complement.lean Outdated
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not call this file Projection?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not a huge fan. I know a significant portion of the file is dedicated to projections, but I really view it as being about topological complements.

Comment thread Mathlib/Topology/Algebra/Module/Complement.lean Outdated
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean Outdated
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean Outdated
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean
@ADedecker
Copy link
Copy Markdown
Member Author

I'm a bit short on time, so I'll leave the link with orthogonal projections for later.

@themathqueen
Copy link
Copy Markdown
Collaborator

themathqueen commented Apr 29, 2026

Do you want to add the continuous analogues for LinearMap.IsIdempotentElem.eq_isCompl_projection and LinearMap.isIdempotentElem_iff_eq_isCompl_projection_range_ker in this PR?

@ADedecker
Copy link
Copy Markdown
Member Author

I'm tempted to say that this is large enough already. There are a bunch other things which I left out, my main goal was to have a working definition and API.

Copy link
Copy Markdown
Collaborator

@themathqueen themathqueen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's another batch of comments. I'll have one final look in a few hours (please bear with me 🙏)

Comment thread Mathlib/Topology/Algebra/Module/Complement.lean
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean Outdated
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean
Comment thread Mathlib/LinearAlgebra/Projection.lean Outdated
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean Outdated
@ADedecker
Copy link
Copy Markdown
Member Author

There's no rush!

@ADedecker
Copy link
Copy Markdown
Member Author

Ah, I remembered why I didn't put @[simp] on the ker/range_projection lemmas: because there is a coercion to LinearMap and simp knows what this coercion is, it can already prove them.

Copy link
Copy Markdown
Collaborator

@themathqueen themathqueen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, I think I'm happy with this. Thanks! Just some minor comments.

For the analogues I mentioned in the previous comments, I can do them after this PR if you want.

Comment thread Mathlib/LinearAlgebra/Projection.lean
Comment thread Mathlib/LinearAlgebra/Projection.lean Outdated
Comment thread Mathlib/LinearAlgebra/Projection.lean Outdated

end IsTopCompl

section ClosedComplemented
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how about namespaceing this instead of doing ClosedComplemented. throughout the section?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tend to prefer adding more ClosedComplemented to adding more _root_.Submodule., but if you feel strongly about it I'm fine with doing this change.

Comment thread Mathlib/Topology/Algebra/Module/Complement.lean
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean Outdated
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean Outdated
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean Outdated
Comment on lines +153 to +157
/-- If `h : IsTopCompl p q`, `h.projectionOnto` is the continuous linear projection `M →L[R] p`
along `q`. This is the continuous version of `Submodule.linearProjOfIsCompl`.

See also `Submodule.IsTopCompl.projection` for the same projection as an element of `M →L[R] M`. -/
protected noncomputable def IsTopCompl.projectionOnto (h : IsTopCompl p q) : M →L[R] p :=
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As annoying as this would look like in the code, I think this and IsTopCompl.projection should have p and q explicit so that it doesn't pretty print IsTopCompl.projectionOnto ⋯ in some cases (it would look confusing to someone who didn't write it without opening the code). At least you'd still be able to use dot notation though, just needs to also have h.projectionOnto _ _ :(.

Same goes for IsCompl.projection (I'll fix this in a PR later tomorrow, or you could do it if you want). See for example, Submodule.toLinearMap_starProjection_eq_isComplProjection.

Suggested change
/-- If `h : IsTopCompl p q`, `h.projectionOnto` is the continuous linear projection `M →L[R] p`
along `q`. This is the continuous version of `Submodule.linearProjOfIsCompl`.
See also `Submodule.IsTopCompl.projection` for the same projection as an element of `M →L[R] M`. -/
protected noncomputable def IsTopCompl.projectionOnto (h : IsTopCompl p q) : M →L[R] p :=
variable (p q) in
/-- If `h : IsTopCompl p q`, `h.projectionOnto` is the continuous linear projection `M →L[R] p`
along `q`. This is the continuous version of `Submodule.linearProjOfIsCompl`.
See also `Submodule.IsTopCompl.projection` for the same projection as an element of `M →L[R] M`. -/
protected noncomputable def IsTopCompl.projectionOnto (h : IsTopCompl p q) : M →L[R] p :=

@themathqueen
Copy link
Copy Markdown
Collaborator

Ah, I remembered why I didn't put @[simp] on the ker/range_projection lemmas: because there is a coercion to LinearMap and simp knows what this coercion is, it can already prove them.

Oh yeah! My bad, I totally forgot that we fixed LinearMap.range/ker!

Comment thread Mathlib/Topology/Algebra/Module/Complement.lean
Comment thread Mathlib/Topology/Algebra/Module/Complement.lean Outdated
Co-authored-by: Monica Omar <23701951+themathqueen@users.noreply.github.com>
algebraic isomorphism `M ≃ p × q` is an homeomorphism.

Not all submodules of `M` admit such a topological complements (even if they admit algebraic
complements). In the litterature, such a submodule is called *topologically complemented*
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

literature

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, will fix!

Tip: for this kind of changes, you can write suggestions (see https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request) so that I can just click "accept" to implement it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). t-analysis Analysis (normed *, calculus) t-topology Topological spaces, uniform spaces, metric spaces, filters

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants