Repository navigation
Conversation
Co-authored-by: Jireh Loreaux <loreaujy@gmail.com>
This reverts commit f8148c2.
Co-authored-by: Jireh Loreaux <loreaujy@gmail.com>
Co-authored-by: Jireh Loreaux <loreaujy@gmail.com>
…35422) This PR uses the material in Topology/Algebra/Module/WeakBilin.lean from the unfinished PR #26345 by @mans0954. Given a bilinear form `B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜`, every continuous functional on `E` endowed with the `σ(E, F; B)`-topology is of the form `x ↦ B(x, y)` for some `y : F`. The result doesn't generally seem to be named, but Narici-Beckenstein's "Topological Vector Spaces" calls it the "weak representation theorem", a term we have used for the docstring. Co-authored-by: David Gross <david.gross@thp.uni-koeln.de>
…eanprover-community#35422) This PR uses the material in Topology/Algebra/Module/WeakBilin.lean from the unfinished PR leanprover-community#26345 by @mans0954. Given a bilinear form `B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜`, every continuous functional on `E` endowed with the `σ(E, F; B)`-topology is of the form `x ↦ B(x, y)` for some `y : F`. The result doesn't generally seem to be named, but Narici-Beckenstein's "Topological Vector Spaces" calls it the "weak representation theorem", a term we have used for the docstring. Co-authored-by: David Gross <david.gross@thp.uni-koeln.de>
|
I've discussed with Filippo, and due to time constraints for him, I will take over this PR. |
|
This pull request has conflicts, please merge |
| map_smul' _ _ := by ext; simp | ||
|
|
||
| open LinearMap in | ||
| lemma dualEmbedding_injective_of_separatingRight {E F : Type*} [AddCommGroup E] [AddCommGroup F] |
There was a problem hiding this comment.
shouldn't this be eval instead of dualEmbedding?
| lemma dualEmbedding_injective_of_separatingRight {E F : Type*} [AddCommGroup E] [AddCommGroup F] | |
| lemma eval_injective_of_separatingRight {E F : Type*} [AddCommGroup E] [AddCommGroup F] |
There was a problem hiding this comment.
Maybe.
The lemma got merged as #35422. We took the name from the existing PR. Should we change it? @j-loreaux?
There was a problem hiding this comment.
I guess _root_.WeakBilin.eval_surjective would make sense.
faenuccio
left a comment
There was a problem hiding this comment.
I've left a bunch of comments, but beyond these it looks good to me.
| [AddCommMonoid F] [Module 𝕜 F] [SMul 𝕝 𝕜] [Module 𝕝 E] [s : IsScalarTower 𝕝 𝕜 E] | ||
| (B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜) : IsScalarTower 𝕝 𝕜 (WeakBilin B) := s | ||
|
|
||
| /-- The canonical linear equivalence (over `𝕝`) between `WeakBilin (B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜)` |
There was a problem hiding this comment.
| /-- The canonical linear equivalence (over `𝕝`) between `WeakBilin (B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜)` | |
| /-- The linear equivalence (over `𝕝`) between `WeakBilin (B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜)` |
| /- | ||
| When `B` is left-separating, the closure of the empty set is the singleton `{0}`. This is in | ||
| contrast to the closed absolutely convex hull of the empty set, which is again the empty set. | ||
| c.f. `closureOperator_polar_gc_nonempty` below. |
There was a problem hiding this comment.
| c.f. `closureOperator_polar_gc_nonempty` below. | |
| cf. `closureOperator_polar_gc_nonempty` below. |
| contrast to the closed absolutely convex hull of the empty set, which is again the empty set. | ||
| c.f. `closureOperator_polar_gc_nonempty` below. | ||
| -/ | ||
| example (B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜) (h : SeparatingLeft B) : |
|
|
||
| open WeakBilin | ||
| /- | ||
| The Bipolar Theorem: The bipolar of a set coincides with its closed absolutely convex hull. |
There was a problem hiding this comment.
I would add to this docstring some comment about the setting (what is 𝕜, what is E, what is B, etc) so that someone landing on the result can have a quick grasp of the situation.
| This fails when `s` is empty. Indeed, `closedAbsConvexHull (E := WeakBilin B) 𝕜 s` is the empty set, | ||
| but `B.polar_gc.closureOperator s` equals `{0}` when `B` is left separating (see example above). | ||
| -/ |
There was a problem hiding this comment.
| This fails when `s` is empty. Indeed, `closedAbsConvexHull (E := WeakBilin B) 𝕜 s` is the empty set, | |
| but `B.polar_gc.closureOperator s` equals `{0}` when `B` is left separating (see example above). | |
| -/ | |
| This fails when `s` is empty. Indeed, `closedAbsConvexHull (E := WeakBilin B) 𝕜 ∅` is the empty set, | |
| but `B.polar_gc.closureOperator ∅` equals `{0}` when `B` is left separating (see example above). | |
| -/ |
| RCLike.geometric_hahn_banach_closed_point (𝕜 := 𝕜) | ||
| (by rw [← convex_RCLike_iff_convex_real (K := 𝕜)]; exact absConvex_convexClosedHull.2) | ||
| isClosed_closedAbsConvexHull hx | ||
| -- `0` is in `(closedAbsConvexHull 𝕜) s` so `u` must be strictly positive |
There was a problem hiding this comment.
| -- `0` is in `(closedAbsConvexHull 𝕜) s` so `u` must be strictly positive | |
| -- `0` is in `(closedAbsConvexHull 𝕜) s` so `u` must be strictly positive. |
| have f_zero_lt_u : RCLike.re (f 0) < u := | ||
| (hf₁ 0) (absConvexHull_subset_closedAbsConvexHull zero_mem_absConvexHull) | ||
| rw [map_zero, map_zero] at f_zero_lt_u | ||
| -- Rescale `f` as `g` in order that for all `a` in `(closedAbsConvexHull 𝕜) s` `Re (g a) < 1` |
There was a problem hiding this comment.
| -- Rescale `f` as `g` in order that for all `a` in `(closedAbsConvexHull 𝕜) s` `Re (g a) < 1` | |
| -- Rescale `f` as `g` in order that for all `a` in `(closedAbsConvexHull 𝕜) s` `Re (g a) < 1`. |
| rw [fg, ContinuousLinearMap.coe_smul', Pi.smul_apply, RCLike.smul_re, one_div, | ||
| ← (inv_mul_cancel₀ (lt_iff_le_and_ne.mp f_zero_lt_u).2.symm)] | ||
| exact mul_lt_mul_of_pos_left ((hf₁ _) ha) (inv_pos_of_pos f_zero_lt_u) | ||
| -- The dual embedding is surjective, let `f₀` be the element of `F` corresponding to `g` |
There was a problem hiding this comment.
| -- The dual embedding is surjective, let `f₀` be the element of `F` corresponding to `g` | |
| -- The dual embedding is surjective, let `f₀` be the element of `F` corresponding to `g`: |
| exact mul_lt_mul_of_pos_left ((hf₁ _) ha) (inv_pos_of_pos f_zero_lt_u) | ||
| -- The dual embedding is surjective, let `f₀` be the element of `F` corresponding to `g` | ||
| obtain ⟨f₀, hf₀⟩ := (pairing B).dualEmbedding_surjective g | ||
| -- Then, by construction, `f₀` is in the polar of `s` |
There was a problem hiding this comment.
| -- Then, by construction, `f₀` is in the polar of `s` | |
| -- Then, by construction, `f₀` is in the polar of `s`. |
| ContinuousLinearMap.coe_smul', ContinuousLinearMap.coe_mk', Pi.smul_apply, | ||
| Algebra.mul_smul_comm] | ||
| rw [← smul_eq_mul, ← smul_assoc] | ||
| norm_cast | ||
| simp only [smul_eq_mul, mul_inv_cancel₀ (ne_of_lt f_zero_lt_u).symm, map_one, one_mul] | ||
| exact flip_apply .. |
There was a problem hiding this comment.
| ContinuousLinearMap.coe_smul', ContinuousLinearMap.coe_mk', Pi.smul_apply, | |
| Algebra.mul_smul_comm] | |
| rw [← smul_eq_mul, ← smul_assoc] | |
| norm_cast | |
| simp only [smul_eq_mul, mul_inv_cancel₀ (ne_of_lt f_zero_lt_u).symm, map_one, one_mul] | |
| exact flip_apply .. | |
| simp only [← RCLike.re_ofReal_mul, map_inv₀, ← u_smul_g_eq_f, ← hf₀, WeakBilin.eval, coe_mk, | |
| AddHom.coe_mk, ContinuousLinearMap.coe_smul', ContinuousLinearMap.coe_mk', Pi.smul_apply, | |
| Algebra.mul_smul_comm] | |
| rw [← smul_eq_mul, ← smul_assoc] | |
| norm_cast | |
| simp [mul_inv_cancel₀ (ne_of_lt f_zero_lt_u).symm, flip_apply] |
|
I have had some ideas about how to greatly improve the statement (as well as adding additional versions), but it requires a bigger refactor, so unfortunately this will sit a while longer, but it is on my TODO list with a relatively high priority. I will address the comments above when I finish the background changes required. |
…ject#17829) This PR proves the bipolar theorem for real and complex locally convex spaces. Characterize the closure of a nonempty absolutely convex set by the continuous linear functionals bounded by one on it, and identify the bipolar of any set with its closed absolutely convex hull after adjoining zero. Advance [BanachSpaceTheory/README.md, B1, “Duality and weak topologies”](https://github.com/TauCetiProject/TauCetiRoadmap/blob/main/BanachSpaceTheory/README.md#b1-duality-and-weak-topologies), specifically “Prove the bipolar theorem for absolutely convex sets.” This directly closes that named target using the merged polar and Hahn–Banach infrastructure. After this PR, outstanding B1 work includes Goldstine (TauCetiProject#17712), the norm double-annihilator theorem (TauCetiProject#16832), and the explicit compatible metric on separable dual balls. Open-work and recent-merge scans, focused bipolar searches, and searches of pinned Mathlib and Tau Ceti found no overlapping implementation. Cooperative claim registration returned the documented exit-2 fallback because canonical claim-ref writes were denied. Add `TauCeti/Analysis/LocallyConvex/Polar.lean` (66 lines) and `TauCeti/Analysis/LocallyConvex/Bipolar.lean` (111 lines): six theorems, with no new definitions, instances, or notation. The algebraic hull-invariance lemma works for any bilinear pairing of modules over an `RCLike` field, without topology or additive inverses. The bipolar theorems require neither completeness, separability, nor Hausdorffness. The arbitrary-set statement handles the empty set explicitly: Mathlib's absolutely convex hull of the empty set is empty, whereas a bipolar contains zero. Reuse `LinearMap.polar_AbsConvex`, the polar Galois connection, `RCLike.geometric_hahn_banach_closed_point`, and `RCLike.exists_norm_eq_mul_self`. The bipolar module cites Megginson, §2.6, and Christopher Hoskin's [Mathlib PR #26345](leanprover-community/mathlib4#26345), consulted for the bilinear-pairing formulation requested by the roadmap. No Mathlib infrastructure or external formalization is vendored. Read the shared protocol and all ten rubrics: scope, correctness, reuse, attribution, api-design, generality, placement, naming, documentation, and proof-quality. Self-review generalizes the algebraic hull lemma from the continuous dual to arbitrary bilinear pairings, weakens its additive assumptions to commutative monoids, and places it in the native `LinearMap` namespace in a separate polar module. The resulting API retains the separation witness, both bipolar forms, and a closed-hull membership criterion; the hull-invariance lemmas are registered for simplification. Repeated source searches found no existing replacement. Ordinary-import examples check a real open unit ball, a complex closed disk, the empty set, and a complex two-point hull. Foreground cache retrieval, the full library build, and the axiom audit pass. All 14 default environment linters report zero errors on the six new declarations. The whole-library style wrapper hits this host's command-line length limit; its unchanged header checker and Mathlib's text-style checker pass when run directly on the two new modules. Roadmap: BanachSpaceTheory <!--tauceti-target:v1 {"focus":"BanachSpaceTheory","id":"bipolar-theorem"}--> 🤖 Prepared with Codex
The bipolar theorem states that the polar of the polar of a set
sis equal to the closed absolutely convex hull ofs.The argument here follows Conway, Chapter V. 1.8.
This PR continues the work from #20843.
Original PR: #20843