feat: introduce an IsNormableSpace class - #42983
Conversation
PR summary 2caf3a4cddImport changes exceeding 2%
|
| File | Base Count | Head Count | Change |
|---|---|---|---|
| Mathlib.Topology.Algebra.Module.FiniteDimensionBilinear | 2038 | 2081 | +43 (+2.11%) |
| Mathlib.Topology.Algebra.Module.FiniteDimension | 2028 | 2062 | +34 (+1.68%) |
| Mathlib.Analysis.LocallyConvex.WithSeminorms | 1608 | 1611 | +3 (+0.19%) |
| Mathlib.Analysis.LocallyConvex.WeakDual | 1867 | 1870 | +3 (+0.16%) |
Import changes for all files
| Files | Import difference |
|---|---|
6 filesMathlib.Analysis.Convex.Cone.TensorProduct Mathlib.Analysis.LocallyConvex.Barrelled Mathlib.Analysis.LocallyConvex.WeakDual Mathlib.Analysis.LocallyConvex.WithSeminorms Mathlib.Topology.Category.DeltaGenerated Mathlib.Topology.Compactness.DeltaGeneratedSpace |
3 |
3 filesMathlib.Analysis.Convex.Cone.Dual Mathlib.Analysis.Convex.KreinMilman Mathlib.Analysis.LocallyConvex.Separation |
5 |
Mathlib.Analysis.Normed.Operator.Compact.FiniteDimension Mathlib.Topology.Algebra.Module.TopDualPairing |
31 |
3 filesMathlib.Analysis.Normed.Operator.Fredholm.Basic Mathlib.Analysis.Normed.Operator.Perturbation.StrictByFinite Mathlib.Topology.Algebra.Module.FiniteDimension |
34 |
Mathlib.Topology.Algebra.Module.FiniteDimensionBilinear |
43 |
Declarations diff (regex)
+ ContinuousLinearEquiv.PolynormableSpace
+ ContinuousLinearEquiv.isNormableSpace
+ IsNormableSpace
+ IsNormableSpace.seminorm
+ IsNormableSpace.toNormedSpace
+ IsNormableSpace.toSeminormedAddCommGroup
+ Topology.IsInducing.isNormableSpace
+ compSLₗ
+ exists_eq_compSLₗ
+ exists_eq_flipₗ
+ exists_eq_smulRightLₗ
+ flipₗ
+ instance [AddCommGroup F] [Module 𝕜 F] [TopologicalSpace F] [IsNormableSpace 𝕜 F] :
+ instance [IsNormableSpace 𝕜₂ F] {S : Submodule 𝕜₂ F} :
+ instance [NormedField 𝕜] [SeminormedAddCommGroup E] [NormedSpace 𝕜 E] : IsNormableSpace 𝕜 E
+ instance [h : IsNormableSpace 𝕜 E] : PolynormableSpace 𝕜 E := by
+ instance [h : PolynormableSpace 𝕜 E] : ContinuousSMul 𝕜 E
+ instance {E : ι → Type*} [Finite ι] [∀ i, AddCommGroup (E i)] [∀ i, Module 𝕜 (E i)]
+ instance {E F : Type*} [AddCommGroup E] [Module 𝕜 E] [TopologicalSpace E] [IsNormableSpace 𝕜 E]
+ isNormableSpace_of_finiteDimensional
+ isNormableSpace_of_t2Space_finiteDimensional
+ mkContinuous₂OfExists
+ smulRightLₗ
- instance [NormedField 𝕜] [SeminormedAddCommGroup E] [NormedSpace 𝕜 E] :
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.
Declarations diff (Lean)
✅ Lean-aware diff — post-build, computed from the Lean environment (commit
2caf3a4).
- +37 new declarations
- −2 removed declarations
+ContinuousLinearEquiv.PolynormableSpace
+ContinuousLinearEquiv.isNormableSpace
+ContinuousLinearMap.apply.congr_simp
+ContinuousLinearMap.compL.congr_simp
+ContinuousLinearMap.compSL.congr_simp
+ContinuousLinearMap.compSLₗ
+ContinuousLinearMap.compSLₗ.congr_simp
+ContinuousLinearMap.deriv₂.congr_simp
+ContinuousLinearMap.exists_eq_compSLₗ
+ContinuousLinearMap.exists_eq_flipₗ
+ContinuousLinearMap.exists_eq_smulRightLₗ
+ContinuousLinearMap.flipₗ
+ContinuousLinearMap.instIsNormableSpace
+ContinuousLinearMap.precompL.congr_simp
+ContinuousLinearMap.precompR.congr_simp
+ContinuousLinearMap.smulRightL.congr_simp
+ContinuousLinearMap.smulRightLₗ
+ContinuousLinearMap.smulRightLₗ_apply_apply
+IsNormableSpace
+IsNormableSpace.casesOn
+IsNormableSpace.mk
+IsNormableSpace.rec
+IsNormableSpace.recOn
+IsNormableSpace.seminorm
+IsNormableSpace.toNormedSpace
+IsNormableSpace.toSeminormedAddCommGroup
+IsNormableSpace.withSeminorms'
+LinearMap.mkContinuous₂OfExists
-LinearMap.mk₂'ₛₗ.congr_simp
+Topology.IsInducing.isNormableSpace
+instContinuousSMulOfPolynormableSpace
+instIsNormableSpace
+instIsNormableSpaceForallOfFinite
+instIsNormableSpaceProd
+instIsNormableSpaceSubtypeMemSubmodule
+instIsNormableSpaceTangentSpace
-instPolynormableSpace
+instPolynormableSpaceOfIsNormableSpace
+isNormableSpace_of_finiteDimensionalNo changes to strong technical debt.
No changes to weak technical debt.
Current commit 2caf3a4cdd
Reference commit b3e74c51c0
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
relativevalue is the weighted sum of the differences with weight given by the inverse of the current value of the statistic. - The
absolutevalue is therelativevalue divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).
| ``` | ||
| -/ | ||
| class NormableSpace [topology : TopologicalSpace E] where | ||
| withSeminorms' : ∃ (p : Seminorm 𝕜 E), WithSeminorms (fun (_ : Fin 1) ↦ p) |
There was a problem hiding this comment.
Usually I think we use Unit for these kinds of things since it's a definitional subsingleton (if x y : Unit then x is definitionally equal to y but the same is not true for Fin 1).
There was a problem hiding this comment.
Yes, indeed I started with Unit. But then I noticed that many places in this file use Fin 1, so for coherence I went for Fin 1 also. But I agree that Unit is just better, so let me change all of them.
|
!radar |
|
Benchmark results for b169fa2 against b3e74c5 are in. There are significant results. @sgouezel
Large changes (2✅)
Medium changes (5✅)
Small changes (39✅, 10🟥)
|
|
!radar |
|
Benchmark results for 7b4d8b0 against b3e74c5 are in. There are significant results. @sgouezel
Large changes (1✅, 6🟥)
Medium changes (4✅, 11🟥)
Small changes (28✅, 44🟥)
|
|
!radar |
|
Benchmark results for 91c3069 against b3e74c5 are in. There are significant results. @sgouezel
Large changes (2✅)
Medium changes (5✅)
Small changes (39✅, 13🟥)
|
|
!radar |
|
Benchmark results for 458426c against b3e74c5 are in. There are significant results. @sgouezel
Large changes (2🟥)
Medium changes (1✅, 3🟥)
Small changes (4✅, 15🟥)
|
|
!radar |
|
Benchmark results for 3defc9f against b3e74c5 are in. No significant results found. @sgouezel
Medium changes (1✅)
Small changes (6✅, 9🟥)
|
|
!radar |
|
Benchmark results for 6a79bb1 against b3e74c5 are in. There are significant results. @sgouezel
Large changes (2✅)
Medium changes (5✅)
Small changes (40✅, 11🟥)
|
felixpernegger
left a comment
There was a problem hiding this comment.
I think maybe you could include IsNormable => Topology.IsPseudoMetrizable instance?
|
It can't be an instance, because the field of scalars can not be guessed out of nothing when trying to prove |
This is relevant to be able to use functions like
ContinuousLinearMap.flipon tangent spaces, which are normable but not normed. See Zulip discussion at #Is there code for X? > Pulling back continuous inner product @ 💬This PR introduces a new typeclass
IsNormableSpace 𝕜 Emodelled onPolynormableSpace 𝕜 Eand establishes basic API. It extends basic bilinear functions (likeContinuousLinearMap.fliporContinuousLInearMap.bilinearComp) to normable spaces. It also shows that finite-dimensional spaces are normable, as well as spaces of continuous linear maps between normable spaces.