[Merged by Bors] - feat(Analysis/LocallyConvex/WeakDual): characterise the span of some functionals with continuity#27316
Conversation
PR summary a79ea2e63eImport changes exceeding 2%
|
| File | Base Count | Head Count | Change |
|---|---|---|---|
| Mathlib.Analysis.LocallyConvex.WeakDual | 1523 | 1786 | +263 (+17.27%) |
Import changes for all files
| Files | Import difference |
|---|---|
Mathlib.Analysis.LocallyConvex.WeakDual |
263 |
Declarations diff
+ continuous_iff
+ mem_span_iff_bound
+ mem_span_iff_continuous
+ mem_span_iff_continuous_of_finite
You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>
## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>The doc-module for script/declarations_diff.sh contains some details about this script.
No changes to technical debt.
You can run this locally as
./scripts/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).
|
Here is what I had in mind: variable {ι 𝕜 E F : Type*}
open Topology TopologicalSpace
open scoped NNReal
section
section TopologicalRing
variable [Finite ι] [Field 𝕜] [t𝕜 : TopologicalSpace 𝕜] [IsTopologicalRing 𝕜]
[AddCommGroup E] [Module 𝕜 E] [T0Space 𝕜]
theorem LinearMap.mem_span_iff_continuous_of_finite {f : ι → E →ₗ[𝕜] 𝕜} (φ : E →ₗ[𝕜] 𝕜) :
φ ∈ Submodule.span 𝕜 (Set.range f) ↔
Continuous[⨅ i, induced (f i) t𝕜, t𝕜] φ := by
let _ := ⨅ i, induced (f i) t𝕜
constructor
· exact Submodule.span_induction
(Set.forall_mem_range.mpr fun i ↦ continuous_iInf_dom continuous_induced_dom) continuous_zero
(fun _ _ _ _ ↦ .add) (fun c _ _ h ↦ h.const_smul c)
· intro φ_cont
refine mem_span_of_iInf_ker_le_ker fun x hx ↦ ?_
simp_rw [Submodule.mem_iInf, LinearMap.mem_ker] at hx ⊢
have : Inseparable x 0 := by
-- Maybe missing lemmas about `Inseparable`?
simp_rw [Inseparable, nhds_iInf, nhds_induced, hx, map_zero]
simpa only [map_zero] using (this.map φ_cont).eq
end TopologicalRing
section NontriviallyNormedField
variable [NontriviallyNormedField 𝕜] [AddCommGroup E] [Module 𝕜 E]
theorem LinearMap.mem_span_iff_continuous {f : ι → E →ₗ[𝕜] 𝕜} (φ : E →ₗ[𝕜] 𝕜) :
φ ∈ Submodule.span 𝕜 (Set.range f) ↔
Continuous[⨅ i, induced (f i) inferInstance, inferInstance] φ := by
letI t𝕜 : TopologicalSpace 𝕜 := inferInstance
let t := ⨅ i, induced (f i) t𝕜
constructor
-- TODO: is it worth factoring the first implication with `mem_span_iff_continuous_of_finite`?
· exact Submodule.span_induction
(Set.forall_mem_range.mpr fun i ↦ continuous_iInf_dom continuous_induced_dom) continuous_zero
(fun _ _ _ _ ↦ .add) (fun c _ _ h ↦ h.const_smul c)
· intro φ_cont
obtain ⟨s, hs⟩ : ∃ s : Finset ι, Continuous[⨅ i : s, induced (f i) t𝕜, t𝕜] φ := by
-- The following should be golfable by using/developping better API
have : φ ⁻¹' (Metric.ball 0 1) ∈ 𝓝 0 :=
φ_cont.continuousAt.tendsto (map_zero φ ▸ Metric.ball_mem_nhds (0 : 𝕜) one_pos)
rw [nhds_iInf, Filter.mem_iInf_finite] at this
rcases this with ⟨s, hs⟩
use s
let t' := ⨅ i : s, induced (f i) t𝕜
have : IsTopologicalAddGroup E :=
topologicalAddGroup_iInf fun _ ↦ topologicalAddGroup_induced _
have : ContinuousSMul 𝕜 E :=
continuousSMul_iInf fun _ ↦ continuousSMul_induced _
rw [Seminorm.continuous_iff_continuous_comp (norm_withSeminorms 𝕜 𝕜), forall_const]
refine Seminorm.continuous (r := 1) ?_
rwa [nhds_iInf, Seminorm.ball_comp, ball_normSeminorm, iInf_subtype, map_zero]
rw [← LinearMap.mem_span_iff_continuous_of_finite] at hs
exact Submodule.span_mono (Set.range_comp_subset_range _ _) hs
theorem LinearMap.mem_span_iff_bound [Nonempty ι] {f : ι → E →ₗ[𝕜] 𝕜} (φ : E →ₗ[𝕜] 𝕜) :
φ ∈ Submodule.span 𝕜 (Set.range f) ↔
∃ s : Finset ι, ∃ c : ℝ≥0, (normSeminorm 𝕜 𝕜).comp φ ≤
c • (s.sup fun i ↦ (normSeminorm 𝕜 𝕜).comp (f i)) := by
letI t𝕜 : TopologicalSpace 𝕜 := inferInstance
let t := ⨅ i, induced (f i) t𝕜
have : IsTopologicalAddGroup E := topologicalAddGroup_iInf fun _ ↦ topologicalAddGroup_induced _
have : WithSeminorms (fun i ↦ (normSeminorm 𝕜 𝕜).comp (f i)) := by
simp_rw [SeminormFamily.withSeminorms_iff_nhds_eq_iInf, nhds_iInf, nhds_induced, map_zero,
← comap_norm_nhds_zero (E := 𝕜), Filter.comap_comap]
rfl
rw [LinearMap.mem_span_iff_continuous]
constructor <;> intro H
· rw [Seminorm.continuous_iff_continuous_comp (norm_withSeminorms 𝕜 𝕜), forall_const] at H
rcases Seminorm.bound_of_continuous this _ H with ⟨s, C, -, hC⟩
exact ⟨s, C, hC⟩
· exact Seminorm.cont_withSeminorms_normedSpace _ this _ H
end NontriviallyNormedField
endAs you can see, this is not completely satisfying: while the core argument is (imho) much nicer, there is a lot of boilerplate due to lack of API around seminorms and the associated topologies... I'm pretty convinced that this is the right way to go, as it should just be assembling a few blocks to get the final result, but unfortunately it seems a bit more complicated with the current API... I will try to think about it, but, as a middle ground, could you at least include my first lemma and add a |
I'm able to use this to prove the Bipolar theorem (#26345) so it's fine with me. |
| variable [Finite ι] [Field 𝕜] [t𝕜 : TopologicalSpace 𝕜] [IsTopologicalRing 𝕜] | ||
| [AddCommGroup E] [Module 𝕜 E] [T0Space 𝕜] | ||
|
|
||
| theorem mem_span_iff_continuous_of_finite {f : ι → E →ₗ[𝕜] 𝕜} (φ : E →ₗ[𝕜] 𝕜) : |
There was a problem hiding this comment.
I think this lemma and the next one deserve a small docstring, ideally cross-referencing each other. Also, I would suggest moving this one lower (e.g in Mathlib.Topology.Algebra.Module.LinearMap), but I'm not sure how heavy the import load will get...
There was a problem hiding this comment.
Importing Mathlib.LinearAlgebra.Dual.Lemmas into Mathlib.Topology.Algebra.Module.LinearMap triggers the assert_not_exists Star.star in that file.
YaelDillies
left a comment
There was a problem hiding this comment.
Thanks!
maintainer delegate
|
🚀 Pull request has been placed on the maintainer queue by YaelDillies. |
|
✌️ mans0954 can now approve this pull request. To approve and merge a pull request, simply reply with |
Co-authored-by: Bryan Gin-ge Chen <[email protected]>
Co-authored-by: Bryan Gin-ge Chen <[email protected]>
Co-authored-by: Bryan Gin-ge Chen <[email protected]>
|
bors r+ |
…functionals with continuity (#27316) Sufficient and necessary conditions for a linear functional to be in the span of a finite set of linear functionals. This result is Rudin, Functional Analysis, Second edition, Lemma 3.9 (see also Bourbaki TVS, II.6 Proposition 5). A key application of this result is the proof that `WeakBilin.eval B` is surjective i.e. the dual of `E` with the weak topology is identified with `F`. Co-authored-by: Christopher Hoskin <[email protected]>
|
Pull request successfully merged into master. Build succeeded: |
…functionals with continuity (leanprover-community#27316) Sufficient and necessary conditions for a linear functional to be in the span of a finite set of linear functionals. This result is Rudin, Functional Analysis, Second edition, Lemma 3.9 (see also Bourbaki TVS, II.6 Proposition 5). A key application of this result is the proof that `WeakBilin.eval B` is surjective i.e. the dual of `E` with the weak topology is identified with `F`. Co-authored-by: Christopher Hoskin <[email protected]>
…functionals with continuity (leanprover-community#27316) Sufficient and necessary conditions for a linear functional to be in the span of a finite set of linear functionals. This result is Rudin, Functional Analysis, Second edition, Lemma 3.9 (see also Bourbaki TVS, II.6 Proposition 5). A key application of this result is the proof that `WeakBilin.eval B` is surjective i.e. the dual of `E` with the weak topology is identified with `F`. Co-authored-by: Christopher Hoskin <[email protected]>
…functionals with continuity (leanprover-community#27316) Sufficient and necessary conditions for a linear functional to be in the span of a finite set of linear functionals. This result is Rudin, Functional Analysis, Second edition, Lemma 3.9 (see also Bourbaki TVS, II.6 Proposition 5). A key application of this result is the proof that `WeakBilin.eval B` is surjective i.e. the dual of `E` with the weak topology is identified with `F`. Co-authored-by: Christopher Hoskin <[email protected]>
Sufficient and necessary conditions for a linear functional to be in the span of a finite set of linear functionals.
This result is Rudin, Functional Analysis, Second edition, Lemma 3.9 (see also Bourbaki TVS, II.6 Proposition 5).
A key application of this result is the proof that
WeakBilin.eval Bis surjective i.e. the dual ofEwith the weak topology is identified withF.