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_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 between1
and2
. 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: Dec 20 2023 at 11:08 UTC