Zulip Chat Archive
Stream: Is there code for X?
Topic: linear_map_bound_of_ball_bound
Kalle KytΓΆlΓ€ (Oct 19 2021 at 17:33):
Do the following exist? Can they be proven under meaningful more general assumptions than [is_R_or_C π]?
import tactic
import analysis.normed_space.dual
open metric
variables {π : Type*} [is_R_or_C π]
variables {E : Type*} [normed_group E] [normed_space π E]
lemma linear_map_bound_of_sphere_bound
{r : β} (r_pos : 0 < r) (c : β) (f : E ββ[π] π)
(h : β z β sphere (0 : E) r, β₯ f z β₯ β€ c) (z : E) :
β₯ f z β₯ β€ c / r * β₯ z β₯ := sorry
lemma linear_map_bound_of_ball_bound
{r : β} (r_pos : 0 < r) (c : β) (f : E ββ[π] π)
(h : β z β closed_ball (0 : E) r, β₯ f z β₯ β€ c) :
β (z : E), β₯ f z β₯ β€ c / r * β₯ z β₯ := sorry
Kalle KytΓΆlΓ€ (Oct 19 2021 at 17:33):
I am asking because in a proof of the Banach-Alaoglu theorem I had to resort to the following very clumsy way... Something better should exist, right?
import tactic
import analysis.normed_space.dual
open metric
variables {π : Type*} [is_R_or_C π]
variables {E : Type*} [normed_group E] [normed_space π E]
lemma linear_map_bound_of_sphere_bound
{r : β} (r_pos : 0 < r) (c : β) (f : E ββ[π] π)
(h : β z β sphere (0 : E) r, β₯ f z β₯ β€ c) (z : E) : β₯ f z β₯ β€ c / r * β₯ z β₯ :=
begin
by_cases z_zero : z = 0,
{ rw z_zero, simp only [linear_map.map_zero, norm_zero, mul_zero], },
have norm_z_eq : β₯(β₯ z β₯ : π)β₯ = β₯ z β₯ := norm_norm' π E z,
have norm_r_eq : β₯(r : π)β₯ = r,
{ rw [is_R_or_C.norm_eq_abs, is_R_or_C.abs_of_real],
exact abs_of_pos r_pos, },
set zβ := (r * β₯ z β₯β»ΒΉ : π) β’ z with hzβ,
have norm_f_zβ : β₯ f zβ β₯ β€ c,
{ apply h zβ,
rw [mem_sphere_zero_iff_norm, hzβ, norm_smul, normed_field.norm_mul],
simp only [normed_field.norm_inv],
rw [norm_z_eq, mul_assoc, inv_mul_cancel (norm_pos_iff.mpr z_zero).ne.symm, mul_one],
unfold_coes,
simp only [norm_algebra_map_eq, ring_hom.to_fun_eq_coe],
exact abs_of_pos r_pos, },
have r_ne_zero : (r : π) β 0 := (algebra_map β π).map_ne_zero.mpr r_pos.ne.symm,
have eq : f z = β₯ z β₯ / r * (f zβ),
{ rw [hzβ, linear_map.map_smul, smul_eq_mul],
rw [β mul_assoc, β mul_assoc, div_mul_cancel _ r_ne_zero, mul_inv_cancel, one_mul],
simp only [z_zero, is_R_or_C.of_real_eq_zero, norm_eq_zero, ne.def, not_false_iff], },
rw [eq, normed_field.norm_mul, normed_field.norm_div, norm_z_eq, norm_r_eq,
div_mul_eq_mul_div, div_mul_eq_mul_div, mul_comm],
apply div_le_div _ _ r_pos rfl.ge,
{ exact mul_nonneg ((norm_nonneg _).trans norm_f_zβ) (norm_nonneg z), },
apply mul_le_mul norm_f_zβ rfl.le (norm_nonneg z) ((norm_nonneg _).trans norm_f_zβ),
end
lemma linear_map_bound_of_ball_bound
{r : β} (r_pos : 0 < r) (c : β) (f : E ββ[π] π)
(h : β z β closed_ball (0 : E) r, β₯ f z β₯ β€ c) :
β (z : E), β₯ f z β₯ β€ c / r * β₯ z β₯ :=
begin
apply linear_map_bound_of_sphere_bound r_pos c f,
exact Ξ» z hz, h z hz.le,
end
Patrick Massot (Oct 19 2021 at 19:23):
There is stuff that is at least related to this in src/analysis/normed_space/operator_norm.lean. Search for shell
Sebastien Gouezel (Oct 19 2021 at 20:11):
docs#continuous_linear_map.op_norm_le_of_ball
Sebastien Gouezel (Oct 19 2021 at 20:13):
Sorry, it's not the right form, it assumes a bound β₯f xβ₯ β€ C * β₯xβ₯.
Kalle KytΓΆlΓ€ (Oct 19 2021 at 20:14):
I had found linear_map.bound_of_shell, which is indeed morally quite similar to the linear_map_bound_of_sphere_bound above, and which works more generally under the assumption [nondiscrete_normed_field π]. By contrast, I don't think linear_map_bound_of_sphere_bound would work in this generality, since one can't necessarily rescale by exactly the norm (there might not be scalars of the desired norm). I also didn't find great ways of using these "shell"-lemmas for my purpose. (Although I must say that after I decided to give up the generality of [nondiscrete_normed_field π], I also didn't try hard to use the "shell"-lemmas, as they appear overly complicated for π=β or π=β).
Kalle KytΓΆlΓ€ (Oct 19 2021 at 20:14):
So I believe linear_map_bound_of_sphere_bound is useful when π=β or π=β. But I do view linear_map_bound_of_ball_bound more fundamental, and it is not as obvious that it doesn't generalize. That said, with some trying I failed to generalize it to [nondiscrete_normed_field π] --- I never work with such fields, but e.g. one property that I would have liked was β₯ n β’ x β₯ = n * β₯ x β₯ for n : β and x : π, which obviously fails for positive characteristic... This is partly why I asked for meaningful generalizations of the second lemma --- perhaps there are people to whom positive characteristic nondiscrete normed fields exist (to me they very nearly don't :stuck_out_tongue_wink:).
Sebastien Gouezel (Oct 19 2021 at 20:18):
linear_map_bound_of_ball_bound is not true over a general nondiscrete normed field, for the same reason as the shell one. Think of the case where there is no element of norm between 1 and 2. Then if you have the assumptions of your lemma with r = 3/2, in fact it is only speaking of points in the ball of radius 1.
Sebastien Gouezel (Oct 19 2021 at 20:19):
Probably the right way to state general lemmas is to introduce a quantity a which would be the infimum of the norms of elements of norm > 1, and get statements in term of this (where there would be a loss of a constant compared to the real or complex case, which would be exactly a). But it also makes sense to just state and prove your lemmas over is_R_or_C, I think.
Kalle KytΓΆlΓ€ (Oct 19 2021 at 20:21):
Thank you @Sebastien Gouezel!
If these lemmas are done assuming [is_R_or_C π] then my question is a golfing challenge :golf:.
Kalle KytΓΆlΓ€ (Oct 19 2021 at 21:02):
[EDIT: Sorry, what I say below doesn't show what I said it did...]
Sebastien Gouezel said:
linear_map_bound_of_ball_boundis not true over a general nondiscrete normed field, for the same reason as the shell one. Think of the case where there is no element of norm between1and2. Then if you have the assumptions of your lemma withr = 3/2, in fact it is only speaking of points in the ball of radius1.
This one I didn't quite understand... I thought [EDIT: incorrectly] that the combination of the following shows that there are always elements of norm between and for any :
example (π : Type*) [nondiscrete_normed_field π] (x : π) (x_ne_zero : x β 0) :
β₯ xβ»ΒΉ β₯ = β₯ x β₯β»ΒΉ := normed_field.norm_inv _
example (π : Type*) [nondiscrete_normed_field π] (Ξ΅ : β) (Ξ΅_pos : 0 < Ξ΅) :
β (x : π), 1 - Ξ΅ < β₯ x β₯ β§ β₯ x β₯ < 1 + Ξ΅ :=
begin
rcases normed_field.exists_norm_lt π Ξ΅_pos with β¨z, β¨norm_z_pos, norm_z_ltβ©β©,
use 1+z,
split,
{ have key := le_trans (le_abs_self (β₯(1 : π)β₯ - β₯-zβ₯)) (abs_norm_sub_norm_le (1 : π) (-z)),
simp at key,
apply lt_of_lt_of_le _ key,
linarith, },
{ apply lt_of_le_of_lt (norm_add_le (1 : π) z) _,
simp,
assumption, },
end
But as I said, I don't really work with nondiscrete normed fields that do not satisfy the assumption [is_R_or_C π].
Kalle KytΓΆlΓ€ (Oct 19 2021 at 21:20):
Sorry about the above thoughtless post.
Anyway, following SΓ©bastien's comment that [is_R_or_C π]-generality makes some sense, I think I will soon PR the Banach-Alaoglu. Golfing the lemmas in that generality will then anyway be done either before or during the review...
(Actually, perhaps Banach-Alaoglu holds under weaker assumptions than [is_R_or_C π]. How about [nondiscrete_normed_field π] [proper_space π]? Anyways, I think I have formally proven that I am confused about such fields, so someone else can generalize later :smile:.)
Kalle KytΓΆlΓ€ (Oct 20 2021 at 14:31):
In order to keep the review more manageable to both me and the reviewers, I separated the above lemmas from the Banach-Alaoglu PR. Very sorry that I did not manage to get nicer proofs yet! I hope someone generous reviewer is willing to help golf them (provided they are deemed worthy in mathlib in the first place). Thank you in advance!
Last updated: May 02 2025 at 03:31 UTC