@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Yury Kudryashov, Heather Macbeth
5
5
-/
6
6
import analysis.convex.cone
7
+ import analysis.normed_space.is_R_or_C
7
8
import analysis.normed_space.extend
8
9
9
10
/-!
@@ -23,32 +24,6 @@ of `𝕜`).
23
24
24
25
universes u v
25
26
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
-
52
27
namespace real
53
28
variables {E : Type *} [semi_normed_group E] [semi_normed_space ℝ E]
54
29
@@ -127,41 +102,41 @@ variables {E : Type u} [normed_group E] [normed_space 𝕜 E]
127
102
open continuous_linear_equiv submodule
128
103
open_locale classical
129
104
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)]
132
107
133
108
/-- Corollary of Hahn-Banach. Given a nonzero element `x` of a normed space, there exists an
134
109
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∥ :=
136
111
begin
137
112
let p : submodule 𝕜 E := 𝕜 ∙ x,
138
- let f := norm' 𝕜 x • coord 𝕜 x h,
113
+ let f := (∥x∥ : 𝕜) • coord 𝕜 x h,
139
114
obtain ⟨g, hg⟩ := exists_extension_norm_eq p f,
140
115
refine ⟨g, _, _⟩,
141
116
{ rw [hg.2 , coord_norm'] },
142
117
{ 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 }
145
120
end
146
121
147
122
/-- Variant of Hahn-Banach, eliminating the hypothesis that `x` be nonzero, and choosing
148
123
the dual element arbitrarily when `x = 0`. -/
149
124
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∥ :=
151
126
begin
152
127
by_cases hx : x = 0 ,
153
128
{ 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,
155
130
refine ⟨g, hg.left, _⟩,
156
- rw [norm'_def, hx, norm_zero, ring_hom.map_zero, continuous_linear_map.map_zero ] },
131
+ simp [hx ] },
157
132
{ exact exists_dual_vector 𝕜 x hx }
158
133
end
159
134
160
135
/-- Variant of Hahn-Banach, eliminating the hypothesis that `x` be nonzero, but only ensuring that
161
136
the dual element has norm at most `1` (this can not be improved for the trivial
162
137
vector space). -/
163
138
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∥ :=
165
140
begin
166
141
by_cases hx : x = 0 ,
167
142
{ refine ⟨0 , by simp, _⟩,
0 commit comments