@@ -28,7 +28,7 @@ variables {E : Type*} [normed_space k E]
28
28
variables {F : Type *} [normed_space k F]
29
29
variables {G : Type *} [normed_space k G]
30
30
31
- structure is_bounded_linear_map { k : Type *}
31
+ structure is_bounded_linear_map ( k : Type *)
32
32
[normed_field k] {E : Type *} [normed_space k E] {F : Type *} [normed_space k F] (L : E → F)
33
33
extends is_linear_map k L : Prop :=
34
34
(bound : ∃ M, M > 0 ∧ ∀ x : E, ∥ L x ∥ ≤ M * ∥ x ∥)
@@ -37,79 +37,80 @@ include k
37
37
38
38
lemma is_linear_map.with_bound
39
39
{L : E → F} (hf : is_linear_map k L) (M : ℝ) (h : ∀ x : E, ∥ L x ∥ ≤ M * ∥ x ∥) :
40
- is_bounded_linear_map L :=
40
+ is_bounded_linear_map k L :=
41
41
⟨ hf, classical.by_cases
42
42
(assume : M ≤ 0 , ⟨1 , zero_lt_one, assume x,
43
43
le_trans (h x) $ mul_le_mul_of_nonneg_right (le_trans this zero_le_one) (norm_nonneg x)⟩)
44
44
(assume : ¬ M ≤ 0 , ⟨M, lt_of_not_ge this , h⟩)⟩
45
45
46
46
namespace is_bounded_linear_map
47
47
48
- def to_linear_map (f : E → F) (h : is_bounded_linear_map f) : E →ₗ[k] F :=
48
+ def to_linear_map (f : E → F) (h : is_bounded_linear_map k f) : E →ₗ[k] F :=
49
49
(is_linear_map.mk' _ h.to_is_linear_map)
50
50
51
- lemma zero : is_bounded_linear_map (λ (x:E), (0 :F)) :=
51
+ lemma zero : is_bounded_linear_map k (λ (x:E), (0 :F)) :=
52
52
(0 : E →ₗ F).is_linear.with_bound 0 $ by simp [le_refl]
53
53
54
- lemma id : is_bounded_linear_map (λ (x:E), x) :=
54
+ lemma id : is_bounded_linear_map k (λ (x:E), x) :=
55
55
linear_map.id.is_linear.with_bound 1 $ by simp [le_refl]
56
56
57
- lemma smul {f : E → F} (c : k) : is_bounded_linear_map f → is_bounded_linear_map (λ e, c • f e)
57
+ set_option class.instance_max_depth 40
58
+ lemma smul {f : E → F} (c : k) : is_bounded_linear_map k f → is_bounded_linear_map k (λ e, c • f e)
58
59
| ⟨hf, ⟨M, hM, h⟩⟩ := (c • hf.mk' f).is_linear.with_bound (∥c∥ * M) $ assume x,
59
60
calc ∥c • f x∥ = ∥c∥ * ∥f x∥ : norm_smul c (f x)
60
61
... ≤ ∥c∥ * (M * ∥x∥) : mul_le_mul_of_nonneg_left (h x) (norm_nonneg c)
61
62
... = (∥c∥ * M) * ∥x∥ : (mul_assoc _ _ _).symm
62
63
63
- lemma neg {f : E → F} (hf : is_bounded_linear_map f) : is_bounded_linear_map (λ e, -f e) :=
64
+ lemma neg {f : E → F} (hf : is_bounded_linear_map k f) : is_bounded_linear_map k (λ e, -f e) :=
64
65
begin
65
66
rw show (λ e, -f e) = (λ e, (-1 : k) • f e), { funext, simp },
66
67
exact smul (-1 ) hf
67
68
end
68
69
69
70
lemma add {f : E → F} {g : E → F} :
70
- is_bounded_linear_map f → is_bounded_linear_map g → is_bounded_linear_map (λ e, f e + g e)
71
+ is_bounded_linear_map k f → is_bounded_linear_map k g → is_bounded_linear_map k (λ e, f e + g e)
71
72
| ⟨hlf, Mf, hMf, hf⟩ ⟨hlg, Mg, hMg, hg⟩ := (hlf.mk' _ + hlg.mk' _).is_linear.with_bound (Mf + Mg) $ assume x,
72
73
calc ∥f x + g x∥ ≤ ∥f x∥ + ∥g x∥ : norm_triangle _ _
73
74
... ≤ Mf * ∥x∥ + Mg * ∥x∥ : add_le_add (hf x) (hg x)
74
75
... ≤ (Mf + Mg) * ∥x∥ : by rw add_mul
75
76
76
- lemma sub {f : E → F} {g : E → F} (hf : is_bounded_linear_map f) (hg : is_bounded_linear_map g) :
77
- is_bounded_linear_map (λ e, f e - g e) := add hf (neg hg)
77
+ lemma sub {f : E → F} {g : E → F} (hf : is_bounded_linear_map k f) (hg : is_bounded_linear_map k g) :
78
+ is_bounded_linear_map k (λ e, f e - g e) := add hf (neg hg)
78
79
79
80
lemma comp {f : E → F} {g : F → G} :
80
- is_bounded_linear_map g → is_bounded_linear_map f → is_bounded_linear_map (g ∘ f)
81
+ is_bounded_linear_map k g → is_bounded_linear_map k f → is_bounded_linear_map k (g ∘ f)
81
82
| ⟨hlg, Mg, hMg, hg⟩ ⟨hlf, Mf, hMf, hf⟩ := ((hlg.mk' _).comp (hlf.mk' _)).is_linear.with_bound (Mg * Mf) $ assume x,
82
83
calc ∥g (f x)∥ ≤ Mg * ∥f x∥ : hg _
83
84
... ≤ Mg * (Mf * ∥x∥) : mul_le_mul_of_nonneg_left (hf _) (le_of_lt hMg)
84
85
... = Mg * Mf * ∥x∥ : (mul_assoc _ _ _).symm
85
86
86
- lemma tendsto {L : E → F} (x : E) : is_bounded_linear_map L → L →_{x} (L x)
87
+ lemma tendsto {L : E → F} (x : E) : is_bounded_linear_map k L → L →_{x} (L x)
87
88
| ⟨hL, M, hM, h_ineq⟩ := tendsto_iff_norm_tendsto_zero.2 $
88
89
squeeze_zero (assume e, norm_nonneg _)
89
90
(assume e, calc ∥L e - L x∥ = ∥hL.mk' L (e - x)∥ : by rw (hL.mk' _).map_sub e x; refl
90
91
... ≤ M*∥e-x∥ : h_ineq (e-x))
91
92
(suffices (λ (e : E), M * ∥e - x∥) →_{x} (M * 0 ), by simpa,
92
93
tendsto_mul tendsto_const_nhds (lim_norm _))
93
94
94
- lemma continuous {L : E → F} (hL : is_bounded_linear_map L) : continuous L :=
95
+ lemma continuous {L : E → F} (hL : is_bounded_linear_map k L) : continuous L :=
95
96
continuous_iff_continuous_at.2 $ assume x, hL.tendsto x
96
97
97
- lemma lim_zero_bounded_linear_map {L : E → F} (H : is_bounded_linear_map L) : (L →_{0 } 0 ) :=
98
+ lemma lim_zero_bounded_linear_map {L : E → F} (H : is_bounded_linear_map k L) : (L →_{0 } 0 ) :=
98
99
(H.1 .mk' _).map_zero ▸ continuous_iff_continuous_at.1 H.continuous 0
99
100
100
101
section
101
102
open asymptotics filter
102
103
103
- theorem is_O_id {L : E → F} (h : is_bounded_linear_map L) (l : filter E) :
104
+ theorem is_O_id {L : E → F} (h : is_bounded_linear_map k L) (l : filter E) :
104
105
is_O L (λ x, x) l :=
105
106
let ⟨M, Mpos, hM⟩ := h.bound in
106
107
⟨M, Mpos, mem_sets_of_superset univ_mem_sets (λ x _, hM x)⟩
107
108
108
- theorem is_O_comp {L : F → G} (h : is_bounded_linear_map L)
109
+ theorem is_O_comp {L : F → G} (h : is_bounded_linear_map k L)
109
110
{f : E → F} (l : filter E) : is_O (λ x', L (f x')) f l :=
110
111
((h.is_O_id ⊤).comp _).mono (map_le_iff_le_comap.mp lattice.le_top)
111
112
112
- theorem is_O_sub {L : E → F} (h : is_bounded_linear_map L) (l : filter E) (x : E) :
113
+ theorem is_O_sub {L : E → F} (h : is_bounded_linear_map k L) (l : filter E) (x : E) :
113
114
is_O (λ x', L (x' - x)) (λ x', x' - x) l :=
114
115
is_O_comp h l
115
116
@@ -120,7 +121,7 @@ end is_bounded_linear_map
120
121
-- Next lemma is stated for real normed space but it would work as soon as the base field is an extension of ℝ
121
122
lemma bounded_continuous_linear_map
122
123
{E : Type *} [normed_space ℝ E] {F : Type *} [normed_space ℝ F] {L : E → F}
123
- (lin : is_linear_map ℝ L) (cont : continuous L) : is_bounded_linear_map L :=
124
+ (lin : is_linear_map ℝ L) (cont : continuous L) : is_bounded_linear_map ℝ L :=
124
125
let ⟨δ, δ_pos, hδ⟩ := exists_delta_of_continuous cont zero_lt_one 0 in
125
126
have HL0 : L 0 = 0 , from (lin.mk' _).map_zero,
126
127
have H : ∀{a}, ∥a∥ ≤ δ → ∥L a∥ < 1 , by simpa only [HL0, dist_zero_right] using hδ,
0 commit comments