Zulip Chat Archive
Stream: Is there code for X?
Topic: continuous bilinear map
Floris van Doorn (Feb 17 2022 at 11:37):
Is there a bilinear version of docs#continuous_linear_map or a bundled version of docs#is_bounded_bilinear_map? Or is someone working on this?
I'm realizing I need to generalize convolution
to take a bilinear map as extra argument.
Yaël Dillies (Feb 17 2022 at 11:38):
I am semi-working on this with #11909 in the sense that we'll need this to do it the proper way.
Yaël Dillies (Feb 17 2022 at 11:39):
And, indeed, is_bounded_bilinear_map
is the only thing that we have.
Yaël Dillies (Feb 17 2022 at 11:41):
However, it's still unclear to me whether currying works already.
Floris van Doorn (Feb 17 2022 at 11:45):
I think using the curried version doesn't buy you much, since I still want to use all the lemmas that you'd prove for a continuous_bilinear_map
, (e.g. add_right
, smul_right
, "if f
and g
are continuous, then x ↦ L (f x) (g x)
is continuous", ...)
Frédéric Dupuis (Feb 17 2022 at 14:46):
The curried version is the right object, but most of the relevant API might indeed be missing. One can at least convert using docs#continuous_linear_map.is_bounded_bilinear_map though.
Floris van Doorn (Feb 17 2022 at 15:59):
Good. I have indeed now written a little bit of API for the curried version, along the lines of
namespace continuous_linear_map
lemma map_add_left (L : E →L[ℝ] E' →L[ℝ] F) {x x' : E} {y : E'} : L (x + x') y = L x y + L x' y :=
by rw [L.map_add, add_apply]
lemma map_add_right (L : E →L[ℝ] E' →L[ℝ] F) {x : E} {y y' : E'} : L x (y + y') = L x y + L x y' :=
(L x).map_add y y'
lemma map_smul_left (L : E →L[ℝ] E' →L[ℝ] F) {c : ℝ} {x : E} {y : E'} : L (c • x) y = c • L x y :=
by rw [L.map_smul, smul_apply]
lemma map_smul_right (L : E →L[ℝ] E' →L[ℝ] F) {c : ℝ} {x : E} {y : E'} : L x (c • y) = c • L x y :=
(L x).map_smul c y
[...]
Floris van Doorn (Feb 17 2022 at 16:01):
(of course, I will generalize ℝ
to 𝕜
and maybe →L
to →SL
in the version I PR)
Eric Wieser (Feb 17 2022 at 18:09):
map_add₂
might be a better name to match docs#linear_map.map_add₂
Eric Wieser (Feb 17 2022 at 18:09):
.. which obviously the linkifier doesn't link correctly... https://leanprover-community.github.io/mathlib_docs/find/linear_map.map_add%E2%82%82
Floris van Doorn (Feb 22 2022 at 12:12):
This should be easy from things in the library, but I cannot find a reasonably close result.
import analysis.normed_space.operator_norm
variables {𝕜 E₁ E₂ E₃ : Type*}
variables [nondiscrete_normed_field 𝕜]
variables [normed_group E₁] [normed_space 𝕜 E₁]
variables [normed_group E₂] [normed_space 𝕜 E₂]
variables [normed_group E₃] [normed_space 𝕜 E₃]
open function
lemma continuous₂ (L : E₁ →L[𝕜] E₂ →L[𝕜] E₃) : continuous (uncurry (λ x y, L x y)) :=
by { sorry }
Patrick Massot (Feb 22 2022 at 13:08):
import analysis.normed_space.operator_norm
import analysis.normed_space.bounded_linear_maps
variables {𝕜 E₁ E₂ E₃ : Type*}
variables [nondiscrete_normed_field 𝕜]
variables [normed_group E₁] [normed_space 𝕜 E₁]
variables [normed_group E₂] [normed_space 𝕜 E₂]
variables [normed_group E₃] [normed_space 𝕜 E₃]
open function
lemma continuous₂ (L : E₁ →L[𝕜] E₂ →L[𝕜] E₃) : continuous (uncurry (λ x y, L x y)) :=
L.is_bounded_bilinear_map.continuous
Patrick Massot (Feb 22 2022 at 13:08):
@Floris van Doorn
Floris van Doorn (Feb 22 2022 at 13:21):
Oh yes, of course. Thanks!
Last updated: Dec 20 2023 at 11:08 UTC