Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 044f532

Browse files
committed
chore(analysis/normed_space/hahn_banach): remove norm' (#10527)
For a normed space over `ℝ`-algebra `𝕜`, `norm'` is currently defined to be `algebra_map ℝ 𝕜 ∥x∥`. I believe this was introduced before the `is_R_or_C` construct (including the coercion from `ℝ` to `𝕜` for `[is_R_or_C 𝕜]`) joined mathlib. Now that we have these things, it's easy to just say `(∥x∥ : 𝕜)` instead of `norm' 𝕜 ∥x∥`, so I don't really think `norm'` needs to exist any more. (In principle, `norm'` is more general, since it works for all `ℝ`-algebras `𝕜` rather than just `[is_R_or_C 𝕜]`. But I can only really think of applications in the`is_R_or_C` case, and that's the only way it's used in the library.)
1 parent 099fb0f commit 044f532

File tree

3 files changed

+14
-40
lines changed

3 files changed

+14
-40
lines changed

src/analysis/normed_space/dual.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ begin
8080
by_cases h : x = 0,
8181
{ simp only [h, hMp, norm_zero] },
8282
{ obtain ⟨f, hf⟩ : ∃ g : E →L[𝕜] 𝕜, _ := exists_dual_vector 𝕜 x h,
83-
calc ∥x∥ = ∥norm' 𝕜 x∥ : (norm_norm' _ _ _).symm
83+
calc ∥x∥ = ∥(∥x∥ : 𝕜)∥ : is_R_or_C.norm_coe_norm.symm
8484
... = ∥f x∥ : by rw hf.2
8585
... ≤ M * ∥f∥ : hM f
8686
... = M : by rw [hf.1, mul_one] }

src/analysis/normed_space/hahn_banach.lean

Lines changed: 11 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Yury Kudryashov, Heather Macbeth
55
-/
66
import analysis.convex.cone
7+
import analysis.normed_space.is_R_or_C
78
import analysis.normed_space.extend
89

910
/-!
@@ -23,32 +24,6 @@ of `𝕜`).
2324

2425
universes u v
2526

26-
/--
27-
The norm of `x` as an element of `𝕜` (a normed algebra over `ℝ`). This is needed in particular to
28-
state equalities of the form `g x = norm' 𝕜 x` when `g` is a linear function.
29-
30-
For the concrete cases of `ℝ` and `ℂ`, this is just `∥x∥` and `↑∥x∥`, respectively.
31-
-/
32-
noncomputable def norm' (𝕜 : Type*) [nondiscrete_normed_field 𝕜] [semi_normed_algebra ℝ 𝕜]
33-
{E : Type*} [semi_normed_group E] (x : E) : 𝕜 :=
34-
algebra_map ℝ 𝕜 ∥x∥
35-
36-
lemma norm'_def (𝕜 : Type*) [nondiscrete_normed_field 𝕜] [semi_normed_algebra ℝ 𝕜]
37-
{E : Type*} [semi_normed_group E] (x : E) :
38-
norm' 𝕜 x = (algebra_map ℝ 𝕜 ∥x∥) := rfl
39-
40-
lemma norm_norm'
41-
(𝕜 : Type*) [nondiscrete_normed_field 𝕜] [semi_normed_algebra ℝ 𝕜]
42-
(A : Type*) [semi_normed_group A]
43-
(x : A) : ∥norm' 𝕜 x∥ = ∥x∥ :=
44-
by rw [norm'_def, norm_algebra_map_eq, norm_norm]
45-
46-
@[simp] lemma norm'_eq_zero_iff
47-
(𝕜 : Type*) [nondiscrete_normed_field 𝕜] [semi_normed_algebra ℝ 𝕜]
48-
(A : Type*) [normed_group A] (x : A) :
49-
norm' 𝕜 x = 0 ↔ x = 0 :=
50-
by simp [norm', ← norm_eq_zero, norm_algebra_map_eq]
51-
5227
namespace real
5328
variables {E : Type*} [semi_normed_group E] [semi_normed_space ℝ E]
5429

@@ -127,41 +102,41 @@ variables {E : Type u} [normed_group E] [normed_space 𝕜 E]
127102
open continuous_linear_equiv submodule
128103
open_locale classical
129104

130-
lemma coord_norm' (x : E) (h : x ≠ 0) : ∥norm' 𝕜 x • coord 𝕜 x h∥ = 1 :=
131-
by rw [norm_smul, norm_norm', coord_norm, mul_inv_cancel (mt norm_eq_zero.mp h)]
105+
lemma coord_norm' {x : E} (h : x ≠ 0) : ∥(∥x∥ : 𝕜) • coord 𝕜 x h∥ = 1 :=
106+
by rw [norm_smul, is_R_or_C.norm_coe_norm, coord_norm, mul_inv_cancel (mt norm_eq_zero.mp h)]
132107

133108
/-- Corollary of Hahn-Banach. Given a nonzero element `x` of a normed space, there exists an
134109
element of the dual space, of norm `1`, whose value on `x` is `∥x∥`. -/
135-
theorem exists_dual_vector (x : E) (h : x ≠ 0) : ∃ g : E →L[𝕜] 𝕜, ∥g∥ = 1 ∧ g x = norm' 𝕜 x :=
110+
theorem exists_dual_vector (x : E) (h : x ≠ 0) : ∃ g : E →L[𝕜] 𝕜, ∥g∥ = 1 ∧ g x = ∥x∥ :=
136111
begin
137112
let p : submodule 𝕜 E := 𝕜 ∙ x,
138-
let f := norm' 𝕜 x • coord 𝕜 x h,
113+
let f := (∥x∥ : 𝕜) • coord 𝕜 x h,
139114
obtain ⟨g, hg⟩ := exists_extension_norm_eq p f,
140115
refine ⟨g, _, _⟩,
141116
{ rw [hg.2, coord_norm'] },
142117
{ calc g x = g (⟨x, mem_span_singleton_self x⟩ : 𝕜 ∙ x) : by rw coe_mk
143-
... = (norm' 𝕜 x • coord 𝕜 x h) (⟨x, mem_span_singleton_self x⟩ : 𝕜 ∙ x) : by rw ← hg.1
144-
... = norm' 𝕜 x : by simp }
118+
... = ((∥x∥ : 𝕜) • coord 𝕜 x h) (⟨x, mem_span_singleton_self x⟩ : 𝕜 ∙ x) : by rw ← hg.1
119+
... = ∥x∥ : by simp }
145120
end
146121

147122
/-- Variant of Hahn-Banach, eliminating the hypothesis that `x` be nonzero, and choosing
148123
the dual element arbitrarily when `x = 0`. -/
149124
theorem exists_dual_vector' [nontrivial E] (x : E) :
150-
∃ g : E →L[𝕜] 𝕜, ∥g∥ = 1 ∧ g x = norm' 𝕜 x :=
125+
∃ g : E →L[𝕜] 𝕜, ∥g∥ = 1 ∧ g x = ∥x∥ :=
151126
begin
152127
by_cases hx : x = 0,
153128
{ obtain ⟨y, hy⟩ := exists_ne (0 : E),
154-
obtain ⟨g, hg⟩ : ∃ g : E →L[𝕜] 𝕜, ∥g∥ = 1 ∧ g y = norm' 𝕜 y := exists_dual_vector 𝕜 y hy,
129+
obtain ⟨g, hg⟩ : ∃ g : E →L[𝕜] 𝕜, ∥g∥ = 1 ∧ g y = ∥y∥ := exists_dual_vector 𝕜 y hy,
155130
refine ⟨g, hg.left, _⟩,
156-
rw [norm'_def, hx, norm_zero, ring_hom.map_zero, continuous_linear_map.map_zero] },
131+
simp [hx] },
157132
{ exact exists_dual_vector 𝕜 x hx }
158133
end
159134

160135
/-- Variant of Hahn-Banach, eliminating the hypothesis that `x` be nonzero, but only ensuring that
161136
the dual element has norm at most `1` (this can not be improved for the trivial
162137
vector space). -/
163138
theorem exists_dual_vector'' (x : E) :
164-
∃ g : E →L[𝕜] 𝕜, ∥g∥ ≤ 1 ∧ g x = norm' 𝕜 x :=
139+
∃ g : E →L[𝕜] 𝕜, ∥g∥ ≤ 1 ∧ g x = ∥x∥ :=
165140
begin
166141
by_cases hx : x = 0,
167142
{ refine ⟨0, by simp, _⟩,

src/measure_theory/function/ae_eq_of_integral.lean

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,7 @@ lemma ae_eq_zero_of_forall_dual [normed_group E] [normed_space 𝕜 E]
7777
begin
7878
let u := dense_seq E,
7979
have hu : dense_range u := dense_range_dense_seq _,
80-
have : ∀ n, ∃ g : E →L[𝕜] 𝕜, ∥g∥ ≤ 1 ∧ g (u n) = norm' 𝕜 (u n) :=
81-
λ n, exists_dual_vector'' 𝕜 (u n),
80+
have : ∀ n, ∃ g : E →L[𝕜] 𝕜, ∥g∥ ≤ 1 ∧ g (u n) = ∥u n∥ := λ n, exists_dual_vector'' 𝕜 (u n),
8281
choose s hs using this,
8382
have A : ∀ (a : E), (∀ n, ⟪a, s n⟫ = (0 : 𝕜)) → a = 0,
8483
{ assume a ha,
@@ -98,7 +97,7 @@ begin
9897
... ≤ 1 * ∥u n - a∥ : continuous_linear_map.le_of_op_norm_le _ (hs n).1 _
9998
... < ∥a∥ / 2 : by { rw [one_mul], rwa dist_eq_norm' at hn }
10099
... < ∥u n∥ : I
101-
... = ∥s n (u n)∥ : by rw [(hs n).2, norm_norm'] },
100+
... = ∥s n (u n)∥ : by rw [(hs n).2, is_R_or_C.norm_coe_norm] },
102101
have hfs : ∀ n : ℕ, ∀ᵐ x ∂μ, ⟪f x, s n⟫ = (0 : 𝕜), from λ n, hf (s n),
103102
have hf' : ∀ᵐ x ∂μ, ∀ n : ℕ, ⟪f x, s n⟫ = (0 : 𝕜), by rwa ae_all_iff,
104103
exact hf'.mono (λ x hx, A (f x) hx),

0 commit comments

Comments
 (0)