@@ -83,83 +83,104 @@ lemma dist_eq_norm (g h : α) : dist g h = ∥g - h∥ :=
83
83
normed_group.dist_eq _ _
84
84
85
85
@[simp] lemma dist_zero_right (g : α) : dist g 0 = ∥g∥ :=
86
- by { rw [dist_eq_norm], simp }
86
+ by rw [dist_eq_norm, sub_zero]
87
87
88
- lemma norm_triangle (g h : α) : ∥g + h∥ ≤ ∥g∥ + ∥h∥ :=
89
- calc ∥g + h∥ = ∥g - (-h)∥ : by simp
90
- ... = dist g (-h) : by simp[dist_eq_norm]
91
- ... ≤ dist g 0 + dist 0 (-h) : by apply dist_triangle
92
- ... = ∥g∥ + ∥h∥ : by simp[dist_eq_norm]
88
+ lemma norm_sub_rev (g h : α) : ∥g - h∥ = ∥h - g∥ :=
89
+ by simpa only [dist_eq_norm] using dist_comm g h
90
+
91
+ @[simp] lemma norm_neg (g : α) : ∥-g∥ = ∥g∥ :=
92
+ by simpa using norm_sub_rev 0 g
93
+
94
+ @[simp] lemma dist_add_left (g h₁ h₂ : α) : dist (g + h₁) (g + h₂) = dist h₁ h₂ :=
95
+ by simp [dist_eq_norm]
96
+
97
+ @[simp] lemma dist_add_right (g₁ g₂ h : α) : dist (g₁ + h) (g₂ + h) = dist g₁ g₂ :=
98
+ by simp [dist_eq_norm]
99
+
100
+ @[simp] lemma dist_neg_neg (g h : α) : dist (-g) (-h) = dist g h :=
101
+ by simp only [dist_eq_norm, neg_sub_neg, norm_sub_rev]
102
+
103
+ @[simp] lemma dist_sub_left (g h₁ h₂ : α) : dist (g - h₁) (g - h₂) = dist h₁ h₂ :=
104
+ by simp only [sub_eq_add_neg, dist_add_left, dist_neg_neg]
105
+
106
+ @[simp] lemma dist_sub_right (g₁ g₂ h : α) : dist (g₁ - h) (g₂ - h) = dist g₁ g₂ :=
107
+ dist_add_right _ _ _
108
+
109
+ /-- Triangle inequality for the norm. -/
110
+ lemma norm_add_le (g h : α) : ∥g + h∥ ≤ ∥g∥ + ∥h∥ :=
111
+ by simpa [dist_eq_norm] using dist_triangle g 0 (-h)
112
+
113
+ lemma norm_add_le_of_le {g₁ g₂ : α} {n₁ n₂ : ℝ} (H₁ : ∥g₁∥ ≤ n₁) (H₂ : ∥g₂∥ ≤ n₂) :
114
+ ∥g₁ + g₂∥ ≤ n₁ + n₂ :=
115
+ le_trans (norm_add_le g₁ g₂) (add_le_add H₁ H₂)
116
+
117
+ lemma dist_add_add_le (g₁ g₂ h₁ h₂ : α) :
118
+ dist (g₁ + g₂) (h₁ + h₂) ≤ dist g₁ h₁ + dist g₂ h₂ :=
119
+ by simpa only [dist_add_left, dist_add_right] using dist_triangle (g₁ + g₂) (h₁ + g₂) (h₁ + h₂)
120
+
121
+ lemma dist_add_add_le_of_le {g₁ g₂ h₁ h₂ : α} {d₁ d₂ : ℝ}
122
+ (H₁ : dist g₁ h₁ ≤ d₁) (H₂ : dist g₂ h₂ ≤ d₂) :
123
+ dist (g₁ + g₂) (h₁ + h₂) ≤ d₁ + d₂ :=
124
+ le_trans (dist_add_add_le g₁ g₂ h₁ h₂) (add_le_add H₁ H₂)
125
+
126
+ lemma dist_sub_sub_le (g₁ g₂ h₁ h₂ : α) :
127
+ dist (g₁ - g₂) (h₁ - h₂) ≤ dist g₁ h₁ + dist g₂ h₂ :=
128
+ dist_neg_neg g₂ h₂ ▸ dist_add_add_le _ _ _ _
129
+
130
+ lemma dist_sub_sub_le_of_le {g₁ g₂ h₁ h₂ : α} {d₁ d₂ : ℝ}
131
+ (H₁ : dist g₁ h₁ ≤ d₁) (H₂ : dist g₂ h₂ ≤ d₂) :
132
+ dist (g₁ - g₂) (h₁ - h₂) ≤ d₁ + d₂ :=
133
+ le_trans (dist_sub_sub_le g₁ g₂ h₁ h₂) (add_le_add H₁ H₂)
93
134
94
135
@[simp] lemma norm_nonneg (g : α) : 0 ≤ ∥g∥ :=
95
136
by { rw[←dist_zero_right], exact dist_nonneg }
96
137
97
138
lemma norm_eq_zero (g : α) : ∥g∥ = 0 ↔ g = 0 :=
98
139
by { rw[←dist_zero_right], exact dist_eq_zero }
99
140
100
- @[simp] lemma norm_zero : ∥(0 :α)∥ = 0 := (norm_eq_zero _).2 (by simp)
141
+ @[simp] lemma norm_zero : ∥(0 :α)∥ = 0 := (norm_eq_zero _).2 rfl
142
+
143
+ lemma norm_sum_le {β} : ∀(s : finset β) (f : β → α), ∥s.sum f∥ ≤ s.sum (λa, ∥ f a ∥) :=
144
+ finset.le_sum_of_subadditive norm norm_zero norm_add_le
101
145
102
- lemma norm_triangle_sum {β} : ∀(s : finset β) (f : β → α), ∥s.sum f∥ ≤ s.sum (λa, ∥ f a ∥) :=
103
- finset.le_sum_of_subadditive norm norm_zero norm_triangle
146
+ lemma norm_sum_le_of_le {β} (s : finset β) {f : β → α} {n : β → ℝ} (h : ∀ b ∈ s, ∥f b∥ ≤ n b) :
147
+ ∥s.sum f∥ ≤ s.sum n :=
148
+ by { haveI := classical.dec_eq β, exact le_trans (norm_sum_le s f) (finset.sum_le_sum h) }
104
149
105
150
lemma norm_pos_iff (g : α) : 0 < ∥ g ∥ ↔ g ≠ 0 :=
106
- begin
107
- split ; intro h ; rw[←dist_zero_right] at *,
108
- { exact dist_pos.1 h },
109
- { exact dist_pos.2 h }
110
- end
151
+ dist_zero_right g ▸ dist_pos
111
152
112
153
lemma norm_le_zero_iff (g : α) : ∥g∥ ≤ 0 ↔ g = 0 :=
113
154
by { rw[←dist_zero_right], exact dist_le_zero }
114
155
115
- @[simp] lemma norm_neg (g : α) : ∥-g∥ = ∥g∥ :=
116
- calc ∥-g∥ = ∥0 - g∥ : by simp
117
- ... = dist 0 g : (dist_eq_norm 0 g).symm
118
- ... = dist g 0 : dist_comm _ _
119
- ... = ∥g - 0 ∥ : (dist_eq_norm g 0 )
120
- ... = ∥g∥ : by simp
121
-
122
- lemma norm_reverse_triangle' (a b : α) : ∥a∥ - ∥b∥ ≤ ∥a - b∥ :=
123
- by simpa using add_le_add (norm_triangle (a - b) (b)) (le_refl (-∥b∥))
156
+ lemma norm_sub_le (g h : α) : ∥g - h∥ ≤ ∥g∥ + ∥h∥ :=
157
+ by simpa [dist_eq_norm] using dist_triangle g 0 h
124
158
125
- lemma norm_reverse_triangle (a b : α) : abs(∥a∥ - ∥b∥) ≤ ∥a - b∥ :=
126
- suffices -(∥a∥ - ∥b∥) ≤ ∥a - b∥, from abs_le_of_le_of_neg_le (norm_reverse_triangle' a b) this ,
127
- calc -(∥a∥ - ∥b∥) = ∥b∥ - ∥a∥ : by abel
128
- ... ≤ ∥b - a∥ : norm_reverse_triangle' b a
129
- ... = ∥a - b∥ : by rw ← norm_neg (a - b); simp
159
+ lemma norm_sub_le_of_le {g₁ g₂ : α} {n₁ n₂ : ℝ} (H₁ : ∥g₁∥ ≤ n₁) (H₂ : ∥g₂∥ ≤ n₂) :
160
+ ∥g₁ - g₂∥ ≤ n₁ + n₂ :=
161
+ le_trans (norm_sub_le g₁ g₂) (add_le_add H₁ H₂)
130
162
131
- lemma norm_triangle_sub {a b : α} : ∥a - b∥ ≤ ∥a ∥ + ∥b ∥ :=
132
- by simpa only [sub_eq_add_neg, norm_neg] using norm_triangle a (-b)
163
+ lemma dist_le_norm_add_norm (g h : α) : dist g h ≤ ∥g ∥ + ∥h ∥ :=
164
+ by { rw dist_eq_norm, apply norm_sub_le }
133
165
134
166
lemma abs_norm_sub_norm_le (g h : α) : abs(∥g∥ - ∥h∥) ≤ ∥g - h∥ :=
135
- abs_le.2 $ and.intro
136
- (suffices -∥g - h∥ ≤ -(∥h∥ - ∥g∥), by simpa,
137
- neg_le_neg $ sub_right_le_of_le_add $
138
- calc ∥h∥ = ∥h - g + g∥ : by simp
139
- ... ≤ ∥h - g∥ + ∥g∥ : norm_triangle _ _
140
- ... = ∥-(g - h)∥ + ∥g∥ : by simp
141
- ... = ∥g - h∥ + ∥g∥ : by { rw [norm_neg (g-h)] })
142
- (sub_right_le_of_le_add $ calc ∥g∥ = ∥g - h + h∥ : by simp ... ≤ ∥g-h∥ + ∥h∥ : norm_triangle _ _)
167
+ by simpa [dist_eq_norm] using abs_dist_sub_le g h 0
168
+
169
+ lemma norm_sub_norm_le (g h : α) : ∥g∥ - ∥h∥ ≤ ∥g - h∥ :=
170
+ le_trans (le_abs_self _) (abs_norm_sub_norm_le g h)
143
171
144
172
lemma dist_norm_norm_le (g h : α) : dist ∥g∥ ∥h∥ ≤ ∥g - h∥ :=
145
173
abs_norm_sub_norm_le g h
146
174
147
- lemma norm_sub_rev (g h : α) : ∥g - h∥ = ∥h - g∥ :=
148
- by rw ←norm_neg; simp
149
-
150
175
lemma ball_0_eq (ε : ℝ) : ball (0 :α) ε = {x | ∥x∥ < ε} :=
151
176
set.ext $ assume a, by simp
152
177
153
178
theorem normed_group.tendsto_nhds_zero {f : γ → α} {l : filter γ} :
154
179
tendsto f l (𝓝 0 ) ↔ ∀ ε > 0 , { x | ∥ f x ∥ < ε } ∈ l :=
180
+ metric.tendsto_nhds.trans $ forall_congr $ λ ε, forall_congr $ λ εgt0,
155
181
begin
156
- rw [metric.tendsto_nhds], simp only [normed_group.dist_eq, sub_zero],
157
- split,
158
- { intros h ε εgt0,
159
- rcases h ε εgt0 with ⟨s, ssets, hs⟩,
160
- exact mem_sets_of_superset ssets hs },
161
- intros h ε εgt0,
162
- exact ⟨_, h ε εgt0, set.subset.refl _⟩
182
+ simp only [dist_zero_right],
183
+ exact exists_sets_subset_iff
163
184
end
164
185
165
186
section nnnorm
@@ -177,8 +198,8 @@ by simp only [nnreal.eq_iff.symm, nnreal.coe_zero, coe_nnnorm, norm_eq_zero]
177
198
@[simp] lemma nnnorm_zero : nnnorm (0 : α) = 0 :=
178
199
nnreal.eq norm_zero
179
200
180
- lemma nnnorm_triangle (g h : α) : nnnorm (g + h) ≤ nnnorm g + nnnorm h :=
181
- by simpa [ nnreal.coe_le] using norm_triangle g h
201
+ lemma nnnorm_add_le (g h : α) : nnnorm (g + h) ≤ nnnorm g + nnnorm h :=
202
+ nnreal.coe_le. 2 $ norm_add_le g h
182
203
183
204
@[simp] lemma nnnorm_neg (g : α) : nnnorm (-g) = nnnorm g :=
184
205
nnreal.eq $ norm_neg g
@@ -257,7 +278,7 @@ begin
257
278
refine ⟨metric.uniform_continuous_iff.2 $ assume ε hε, ⟨ε / 2 , half_pos hε, assume a b h, _⟩⟩,
258
279
rw [prod.dist_eq, max_lt_iff, dist_eq_norm, dist_eq_norm] at h,
259
280
calc dist (a.1 - a.2 ) (b.1 - b.2 ) = ∥(a.1 - b.1 ) - (a.2 - b.2 )∥ : by simp [dist_eq_norm]
260
- ... ≤ ∥a.1 - b.1 ∥ + ∥a.2 - b.2 ∥ : norm_triangle_sub
281
+ ... ≤ ∥a.1 - b.1 ∥ + ∥a.2 - b.2 ∥ : norm_sub_le _ _
261
282
... < ε / 2 + ε / 2 : add_lt_add h.1 h.2
262
283
... = ε : add_halves _
263
284
end
@@ -315,7 +336,7 @@ instance normed_ring_top_monoid [normed_ring α] : topological_monoid α :=
315
336
begin
316
337
apply squeeze_zero,
317
338
{ intro, apply norm_nonneg },
318
- { simp only [this ], intro, apply norm_triangle },
339
+ { simp only [this ], intro, apply norm_add_le },
319
340
{ rw ←zero_add (0 : ℝ), apply tendsto_add,
320
341
{ apply squeeze_zero,
321
342
{ intro, apply norm_nonneg },
@@ -486,6 +507,9 @@ set_option class.instance_max_depth 43
486
507
lemma norm_smul [normed_space α β] (s : α) (x : β) : ∥s • x∥ = ∥s∥ * ∥x∥ :=
487
508
normed_space.norm_smul s x
488
509
510
+ lemma dist_smul [normed_space α β] (s : α) (x y : β) : dist (s • x) (s • y) = ∥s∥ * dist x y :=
511
+ by simp only [dist_eq_norm, (norm_smul _ _).symm, smul_sub]
512
+
489
513
lemma nnnorm_smul [normed_space α β] (s : α) (x : β) : nnnorm (s • x) = nnnorm s * nnnorm x :=
490
514
nnreal.eq $ norm_smul s x
491
515
@@ -499,7 +523,7 @@ begin
499
523
rw tendsto_iff_norm_tendsto_zero,
500
524
have ineq := λ x : γ, calc
501
525
∥f x • g x - s • b∥ = ∥(f x • g x - s • g x) + (s • g x - s • b)∥ : by simp[add_assoc]
502
- ... ≤ ∥f x • g x - s • g x∥ + ∥s • g x - s • b∥ : norm_triangle (f x • g x - s • g x) (s • g x - s • b)
526
+ ... ≤ ∥f x • g x - s • g x∥ + ∥s • g x - s • b∥ : norm_add_le (f x • g x - s • g x) (s • g x - s • b)
503
527
... ≤ ∥f x - s∥*∥g x∥ + ∥s∥*∥g x - b∥ : by { rw [←smul_sub, ←sub_smul, norm_smul, norm_smul] },
504
528
apply squeeze_zero,
505
529
{ intro t, exact norm_nonneg _ },
@@ -614,7 +638,7 @@ summable_iff_vanishing_norm.2 $ assume ε hε,
614
638
⟨s, assume t ht,
615
639
have ∥t.sum g∥ < ε := hs t ht,
616
640
have nn : 0 ≤ t.sum g := finset.sum_nonneg (assume a _, le_trans (norm_nonneg _) (h a)),
617
- lt_of_le_of_lt (norm_triangle_sum t f) $ lt_of_le_of_lt (finset.sum_le_sum $ assume i _, h i) $
641
+ lt_of_le_of_lt (norm_sum_le_of_le t (λ i _, h i) ) $
618
642
by rwa [real.norm_eq_abs, abs_of_nonneg nn] at this ⟩
619
643
620
644
lemma summable_of_summable_norm {f : ι → α} (hf : summable (λa, ∥f a∥)) : summable f :=
@@ -625,7 +649,7 @@ have h₁ : tendsto (λs:finset ι, ∥s.sum f∥) at_top (𝓝 ∥(∑ i, f i)
625
649
(continuous_norm.tendsto _).comp (has_sum_tsum $ summable_of_summable_norm hf),
626
650
have h₂ : tendsto (λs:finset ι, s.sum (λi, ∥f i∥)) at_top (𝓝 (∑ i, ∥f i∥)) :=
627
651
has_sum_tsum hf,
628
- le_of_tendsto_of_tendsto at_top_ne_bot h₁ h₂ $ univ_mem_sets' $ assume s, norm_triangle_sum _ _
652
+ le_of_tendsto_of_tendsto at_top_ne_bot h₁ h₂ $ univ_mem_sets' $ assume s, norm_sum_le _ _
629
653
630
654
end summable
631
655
0 commit comments