@@ -16,6 +16,17 @@ extension is trivial) or `ℂ`. We formulate the extension uniformly, by assumin
16
16
We motivate the form of the extension as follows. Note that `fc : F →ₗ[𝕜] 𝕜` is determined fully by
17
17
`Re fc`: for all `x : F`, `fc (I • x) = I * fc x`, so `Im (fc x) = -Re (fc (I • x))`. Therefore,
18
18
given an `fr : F →ₗ[ℝ] ℝ`, we define `fc x = fr x - fr (I • x) * I`.
19
+
20
+ ## Main definitions
21
+
22
+ * `linear_map.extend_to_𝕜`
23
+ * `continuous_linear_map.extend_to_𝕜`
24
+
25
+ ## Implementation details
26
+
27
+ For convenience, the main definitions above operate in terms of `restrict_scalars ℝ 𝕜 F`.
28
+ Alternate forms which operate on `[is_scalar_tower ℝ 𝕜 F]` instead are provided with a primed name.
29
+
19
30
-/
20
31
21
32
open is_R_or_C
@@ -25,7 +36,8 @@ local notation `abs𝕜` := @is_R_or_C.abs 𝕜 _
25
36
26
37
/-- Extend `fr : F →ₗ[ℝ] ℝ` to `F →ₗ[𝕜] 𝕜` in a way that will also be continuous and have its norm
27
38
bounded by `∥fr∥` if `fr` is continuous. -/
28
- noncomputable def linear_map.extend_to_𝕜 (fr : (restrict_scalars ℝ 𝕜 F) →ₗ[ℝ] ℝ) : F →ₗ[𝕜] 𝕜 :=
39
+ noncomputable def linear_map.extend_to_𝕜'
40
+ [semimodule ℝ F] [is_scalar_tower ℝ 𝕜 F] (fr : F →ₗ[ℝ] ℝ) : F →ₗ[𝕜] 𝕜 :=
29
41
begin
30
42
let fc : F → 𝕜 := λ x, (fr x : 𝕜) - (I : 𝕜) * (fr ((I : 𝕜) • x)),
31
43
have add : ∀ x y : F, fc (x + y) = fc x + fc y,
@@ -40,10 +52,11 @@ begin
40
52
{ assume c x,
41
53
rw [← of_real_mul],
42
54
congr' 1 ,
43
- exact fr.map_smul c x },
55
+ rw [is_R_or_C.of_real_alg, smul_assoc, fr.map_smul, algebra.id.smul_eq_mul, one_smul] },
44
56
have smul_ℝ : ∀ (c : ℝ) (x : F), fc ((c : 𝕜) • x) = (c : 𝕜) * fc x,
45
57
{ assume c x,
46
58
simp only [fc, A],
59
+ rw A c x,
47
60
rw [smul_smul, mul_comm I (c : 𝕜), ← smul_smul, A, mul_sub],
48
61
ring },
49
62
have smul_I : ∀ x : F, fc ((I : 𝕜) • x) = (I : 𝕜) * fc x,
@@ -60,11 +73,15 @@ begin
60
73
exact { to_fun := fc, map_add' := add, map_smul' := smul_𝕜 }
61
74
end
62
75
76
+ lemma linear_map.extend_to_𝕜'_apply [semimodule ℝ F] [is_scalar_tower ℝ 𝕜 F]
77
+ (fr : F →ₗ[ℝ] ℝ) (x : F) :
78
+ fr.extend_to_𝕜' x = (fr x : 𝕜) - (I : 𝕜) * fr ((I : 𝕜) • x) := rfl
79
+
63
80
/-- The norm of the extension is bounded by `∥fr∥`. -/
64
- lemma norm_bound (fr : (restrict_scalars ℝ 𝕜 F) →L[ℝ] ℝ) (x : F) :
65
- ∥fr.to_linear_map.extend_to_𝕜 x ∥ ≤ ∥fr∥ * ∥x∥ :=
81
+ lemma norm_bound [normed_space ℝ F] [is_scalar_tower ℝ 𝕜 F] (fr : F →L[ℝ] ℝ) (x : F) :
82
+ ∥( fr.to_linear_map.extend_to_𝕜' x : 𝕜) ∥ ≤ ∥fr∥ * ∥x∥ :=
66
83
begin
67
- let lm := fr.to_linear_map.extend_to_𝕜,
84
+ let lm : F →ₗ[𝕜] 𝕜 : = fr.to_linear_map.extend_to_𝕜' ,
68
85
-- We aim to find a `t : 𝕜` such that
69
86
-- * `lm (t • x) = fr (t • x)` (so `lm (t • x) = t * lm x ∈ ℝ`)
70
87
-- * `∥lm x∥ = ∥lm (t • x)∥` (so `t.abs` must be 1)
81
98
is_R_or_C.abs_div, is_R_or_C.abs_abs, h],
82
99
have h1 : (fr (t • x) : 𝕜) = lm (t • x),
83
100
{ apply ext,
84
- { simp only [lm, of_real_re, linear_map.extend_to_𝕜, mul_re, I_re, of_real_im, zero_mul,
85
- linear_map.coe_mk, add_monoid_hom.map_sub, sub_zero, mul_zero],
101
+ { simp only [lm, of_real_re, linear_map.extend_to_𝕜'_apply , mul_re, I_re, of_real_im, zero_mul,
102
+ add_monoid_hom.map_sub, sub_zero, mul_zero],
86
103
refl },
87
104
{ symmetry,
88
105
calc im (lm (t • x))
@@ -102,6 +119,26 @@ begin
102
119
end
103
120
104
121
/-- Extend `fr : F →L[ℝ] ℝ` to `F →L[𝕜] 𝕜`. -/
122
+ noncomputable def continuous_linear_map.extend_to_𝕜' [normed_space ℝ F] [is_scalar_tower ℝ 𝕜 F]
123
+ (fr : F →L[ℝ] ℝ) :
124
+ F →L[𝕜] 𝕜 :=
125
+ fr.to_linear_map.extend_to_𝕜'.mk_continuous (∥fr∥) (norm_bound _)
126
+
127
+ lemma continuous_linear_map.extend_to_𝕜'_apply [normed_space ℝ F] [is_scalar_tower ℝ 𝕜 F]
128
+ (fr : F →L[ℝ] ℝ) (x : F) :
129
+ fr.extend_to_𝕜' x = (fr x : 𝕜) - (I : 𝕜) * fr ((I : 𝕜) • x) := rfl
130
+
131
+ /-- Extend `fr : restrict_scalars ℝ 𝕜 F →ₗ[ℝ] ℝ` to `F →ₗ[𝕜] 𝕜`. -/
132
+ noncomputable def linear_map.extend_to_𝕜 (fr : (restrict_scalars ℝ 𝕜 F) →ₗ[ℝ] ℝ) : F →ₗ[𝕜] 𝕜 :=
133
+ fr.extend_to_𝕜'
134
+
135
+ lemma linear_map.extend_to_𝕜_apply (fr : (restrict_scalars ℝ 𝕜 F) →ₗ[ℝ] ℝ) (x : F) :
136
+ fr.extend_to_𝕜 x = (fr x : 𝕜) - (I : 𝕜) * fr ((I : 𝕜) • x) := rfl
137
+
138
+ /-- Extend `fr : restrict_scalars ℝ 𝕜 F →L[ℝ] ℝ` to `F →L[𝕜] 𝕜`. -/
105
139
noncomputable def continuous_linear_map.extend_to_𝕜 (fr : (restrict_scalars ℝ 𝕜 F) →L[ℝ] ℝ) :
106
140
F →L[𝕜] 𝕜 :=
107
- fr.to_linear_map.extend_to_𝕜.mk_continuous ∥fr∥ (norm_bound _)
141
+ fr.extend_to_𝕜'
142
+
143
+ lemma continuous_linear_map.extend_to_𝕜_apply (fr : (restrict_scalars ℝ 𝕜 F) →L[ℝ] ℝ) (x : F) :
144
+ fr.extend_to_𝕜 x = (fr x : 𝕜) - (I : 𝕜) * fr ((I : 𝕜) • x) := rfl
0 commit comments