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 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.

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 11 and 1+Ξ΅1+\varepsilon for any Ξ΅>0\varepsilon > 0:

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):

#9827

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