Skip to content

Commit 982d40b

Browse files
committed
feat(Analysis/RieszLemma): convenience variant of Riesz lemma in RCLike (leanprover-community#35001)
While the other versions are more general, having a version which matches the usual informal statement of the Riesz lemma is helpful for users, and we add explicit signposting to the more general versions too. (My application here used an iterated version of this lemma, so having a fixed norm rather than just inequalities on it, is convenient)
1 parent 9bb16b0 commit 982d40b

1 file changed

Lines changed: 32 additions & 2 deletions

File tree

Mathlib/Analysis/Normed/Module/RieszLemma.lean

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Authors: Jean Lo, Yury Kudryashov
66
module
77

88
public import Mathlib.Analysis.Normed.Module.RCLike.Real
9+
public import Mathlib.Analysis.Normed.Module.RCLike.Basic
910
public import Mathlib.Analysis.Seminorm
1011
public import Mathlib.Topology.MetricSpace.HausdorffDistance
1112

@@ -19,6 +20,9 @@ is at least `r * ‖x‖` for any `r < 1`. This is `riesz_lemma`.
1920
In a nontrivially normed field (with an element `c` of norm `> 1`) and any `R > ‖c‖`, one can
2021
guarantee `‖x‖ ≤ R` and `‖x - y‖ ≥ 1` for any `y` in `F`. This is `riesz_lemma_of_norm_lt`.
2122
23+
For a normed space over an `RCLike` field, one can find an element of norm exactly `1` with the same
24+
property. This is `riesz_lemma_one`.
25+
2226
A further lemma, `Metric.closedBall_infDist_compl_subset_closure`, finds a *closed* ball within
2327
the closure of a set `s` of optimal distance from a point in `x` to the frontier of `s`.
2428
-/
@@ -39,7 +43,9 @@ vector with norm 1 whose distance to a closed proper subspace is
3943
arbitrarily close to 1. The statement here is in terms of multiples of
4044
norms, since in general the existence of an element of norm exactly 1
4145
is not guaranteed. For a variant giving an element with norm in `[1, R]`, see
42-
`riesz_lemma_of_norm_lt`. -/
46+
`riesz_lemma_of_norm_lt`, and for a variant giving an element with norm
47+
exactly one assuming stronger assumptions on the underlying field, see
48+
`riesz_lemma_of_lt_one`. -/
4349
theorem riesz_lemma {F : Subspace 𝕜 E} (hFc : IsClosed (F : Set E)) (hF : ∃ x : E, x ∉ F) {r : ℝ}
4450
(hr : r < 1) : ∃ x₀ : E, x₀ ∉ F ∧ ∀ y ∈ F, r * ‖x₀‖ ≤ ‖x₀ - y‖ := by
4551
classical
@@ -75,7 +81,9 @@ theorem riesz_lemma {F : Subspace 𝕜 E} (hFc : IsClosed (F : Set E)) (hF : ∃
7581
A version of Riesz lemma: given a strict closed subspace `F`, one may find an element of norm `≤ R`
7682
which is at distance at least `1` of every element of `F`. Here, `R` is any given constant
7783
strictly larger than the norm of an element of norm `> 1`. For a version without an `R`, see
78-
`riesz_lemma`.
84+
`riesz_lemma`, and for a variant giving an element with norm
85+
exactly one assuming stronger assumptions on the underlying field, see
86+
`riesz_lemma_of_lt_one`.
7987
8088
Since we are considering a general nontrivially normed field, there may be a gap in possible norms
8189
(for instance no element of norm in `(1,2)`). Hence, we cannot allow `R` arbitrarily close to `1`,
@@ -112,3 +120,25 @@ theorem Metric.closedBall_infDist_compl_subset_closure {x : F} {s : Set F} (hx :
112120
exact closure_mono (singleton_subset_iff.2 hx)
113121
· rw [← closure_ball x h₀]
114122
exact closure_mono ball_infDist_compl_subset
123+
124+
/--
125+
A version of Riesz lemma: given a proper closed subspace `F`, one may find an element of norm `1`
126+
which is at distance at least `r` of every element of `F`, for any `r < 1`.
127+
For a version with weaker assumptions on the underlying field, see `riesz_lemma` or
128+
`riesz_lemma_of_norm_lt`.
129+
-/
130+
theorem riesz_lemma_of_lt_one {𝕜 : Type*} [RCLike 𝕜]
131+
{E : Type*} [NormedAddCommGroup E] [NormedSpace 𝕜 E]
132+
{F : Subspace 𝕜 E} (hFc : IsClosed (F : Set E)) (hF : ∃ (x : E), x ∉ F) {r : ℝ} (hr : r < 1) :
133+
∃ x₀ ∉ F, ‖x₀‖ = 1 ∧ ∀ y ∈ F, r ≤ ‖x₀ - y‖ := by
134+
obtain ⟨x₀, hx₀, h⟩ := riesz_lemma hFc hF hr
135+
have hx₀' : x₀ ≠ 0 := by rintro rfl; simp at hx₀
136+
refine ⟨(‖x₀‖⁻¹ : 𝕜) • x₀, ?_, norm_smul_inv_norm hx₀', ?_⟩
137+
· rwa [Submodule.smul_mem_iff]
138+
simpa
139+
intro y hy
140+
have h₂ : ‖(‖x₀‖ : 𝕜)⁻¹ • (x₀ - (‖x₀‖ : 𝕜) • y)‖ = ‖x₀‖⁻¹ * ‖x₀ - (‖x₀‖ : 𝕜) • y‖ := by
141+
rw [norm_smul, norm_inv, norm_algebraMap', norm_norm]
142+
have h₁ := h ((‖x₀‖ : 𝕜) • y) (F.smul_mem _ hy)
143+
rwa [← le_inv_mul_iff₀' (by simpa), ← h₂, smul_sub, inv_smul_smul₀] at h₁
144+
simpa using hx₀'

0 commit comments

Comments
 (0)