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

Commit 2d54a70

Browse files
urkudmergify[bot]
authored andcommitted
feat(analysis/normed_space): prove more lemmas, rename some old lemmas (#1733)
Renamed lemmas: * `norm_triangle` → `norm_add_le` * `norm_triangle_sub` → `norm_sub_le` * `norm_triangle_sum` → `norm_sum_le` * `norm_reverse_triangle'` → `norm_sub_norm_le` * `norm_reverse_triangle`: deleted; was a duplicate of `abs_norm_sub_norm_le` * `nnorm_triangle` → `nnorm_add_le` New lemmas: * `dist_add_left`, `dist_add_right`, `dist_neg_neg`, dist_sub_left`, dist_sub_right`, `dist_smul`, `dist_add_add_le`, `dist_sub_sub_le`: operate with distances without rewriting them as norms. * `norm_add_le_of_le`, `dist_add_add_le_of_le`, `dist_sub_sub_le_of_le`, `norm_sum_le_of_le` : chain a triangle-like inequality with an appropriate estimates on the right hand side. Also simplify a few proofs and fix a typo in a comment.
1 parent f95c01e commit 2d54a70

File tree

13 files changed

+109
-97
lines changed

13 files changed

+109
-97
lines changed

archive/sensitivity.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ begin
421421
{ dsimp only [φ],
422422
erw [(f $ m+1).map_finsupp_total, (ε q).map_finsupp_total, finsupp.total_apply] ; apply_instance }
423423
... ≤ (coeffs y).support.sum (λ p,
424-
|(coeffs y p) * (ε q $ φ $ e p)| ) : norm_triangle_sum _ $ λ p, coeffs y p * _
424+
|(coeffs y p) * (ε q $ φ $ e p)| ) : norm_sum_le _ $ λ p, coeffs y p * _
425425
... = (coeffs y).support.sum (λ p, |coeffs y p| * ite (q.adjacent p) 1 0) : by simp only [abs_mul, f_matrix]
426426
... = ((coeffs y).support.filter (Q.adjacent q)).sum (λ p, |coeffs y p| ) : by simp [finset.sum_filter]
427427
... ≤ ((coeffs y).support.filter (Q.adjacent q)).sum (λ p, |coeffs y q| ) : finset.sum_le_sum (λ p _, H_max p)

src/analysis/asymptotics.lean

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -302,9 +302,8 @@ begin
302302
filter_upwards [hc₁, hc₂],
303303
intros x hx₁ hx₂,
304304
show ∥f₁ x + f₂ x∥ ≤ (c₁ + c₂) * ∥g x∥,
305-
apply le_trans (norm_triangle _ _),
306305
rw add_mul,
307-
exact add_le_add hx₁ hx₂
306+
exact norm_add_le_of_le hx₁ hx₂
308307
end
309308

310309
theorem is_o.add {f₁ f₂ : α → β} {g : α → γ} {l : filter α} (h₁ : is_o f₁ g l) (h₂ : is_o f₂ g l) :
@@ -313,8 +312,7 @@ begin
313312
intros c cpos,
314313
filter_upwards [h₁ (c / 2) (half_pos cpos), h₂ (c / 2) (half_pos cpos)],
315314
intros x hx₁ hx₂, dsimp at hx₁ hx₂,
316-
apply le_trans (norm_triangle _ _),
317-
apply le_trans (add_le_add hx₁ hx₂),
315+
apply le_trans (norm_add_le_of_le hx₁ hx₂),
318316
rw [←mul_add, ←two_mul, ←mul_assoc, div_mul_cancel _ two_ne_zero]
319317
end
320318

src/analysis/calculus/mean_value.lean

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,14 @@ begin
7373
hs ⟨hε xε, xI⟩,
7474
have I : ∥f x - f k∥ ≤ D * (x-k) := calc
7575
∥f x - f k∥ = ∥g (x-k) + h x∥ : by { congr' 1, simp only [h], abel }
76-
... ≤ ∥g (x-k)∥ + ∥h x∥ : norm_triangle _ _
77-
... ≤ ∥g∥ * ∥x-k∥ + (D-C) * ∥x-k∥ : add_le_add (g.le_op_norm _) Ih
76+
... ≤ ∥g∥ * ∥x-k∥ + (D-C) * ∥x-k∥ : norm_add_le_of_le (g.le_op_norm _) Ih
7877
... ≤ C * ∥x-k∥ + (D-C) * ∥x-k∥ :
7978
add_le_add_right (mul_le_mul_of_nonneg_right (bound k k_mem_K.1) (norm_nonneg _)) _
8079
... = D * ∥x-k∥ : by ring
8180
... = D * (x-k) : by simp [norm, abs_of_nonneg (le_of_lt (half_pos δpos))],
8281
have : ∥f x - f 0∥ ≤ D * x := calc
8382
∥f x - f 0∥ = ∥(f x - f k) + (f k - f 0)∥ : by { congr' 1, abel }
84-
... ≤ ∥f x - f k∥ + ∥f k - f 0∥ : norm_triangle _ _
85-
... ≤ D * (x - k) + D * k : add_le_add I (k_mem_K.2)
83+
... ≤ D * (x - k) + D * k : norm_add_le_of_le I (k_mem_K.2)
8684
... = D * x : by ring,
8785
have xK : x ∈ K := ⟨xI, this⟩,
8886
have : x ≤ k := le_cSup ⟨1, λy hy, hy.1.2⟩ xK,

src/analysis/convex.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,7 @@ begin
763763
... = ∥a • (x - z) + b • (y - z)∥ :
764764
by rw [add_smul, smul_sub, smul_sub]; simp
765765
... ≤ ∥a • (x - z)∥ + ∥b • (y - z)∥ :
766-
norm_triangle (a • (x - z)) (b • (y - z))
766+
norm_add_le (a • (x - z)) (b • (y - z))
767767
... = a * dist x z + b * dist y z :
768768
by simp [norm_smul, normed_group.dist_eq, real.norm_eq_abs, abs_of_nonneg ha, abs_of_nonneg hb]
769769
end

src/analysis/normed_space/banach.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ begin
7272
∥f x - d • y∥ = ∥f x₁ - (a + d • y) - (f x₂ - a)∥ :
7373
by { congr' 1, simp only [x, lin.map_sub], abel }
7474
... ≤ ∥f x₁ - (a + d • y)∥ + ∥f x₂ - a∥ :
75-
norm_triangle_sub
75+
norm_sub_le _ _
7676
... ≤ δ + δ : begin
7777
apply add_le_add,
7878
{ rw [← dist_eq_norm, dist_comm], exact le_of_lt h₁ },
@@ -97,7 +97,7 @@ begin
9797
∥d⁻¹ • x∥ = ∥d∥⁻¹ * ∥x₁ - x₂∥ : by rw [norm_smul, normed_field.norm_inv]
9898
... ≤ ((ε / 2)⁻¹ * ∥c∥ * ∥y∥) * (n + n) : begin
9999
refine mul_le_mul dinv _ (norm_nonneg _) _,
100-
{ exact le_trans (norm_triangle_sub) (add_le_add (le_of_lt hx₁) (le_of_lt hx₂)) },
100+
{ exact le_trans (norm_sub_le _ _) (add_le_add (le_of_lt hx₁) (le_of_lt hx₂)) },
101101
{ apply mul_nonneg (mul_nonneg _ (norm_nonneg _)) (norm_nonneg _),
102102
exact inv_nonneg.2 (le_of_lt (half_pos εpos)) }
103103
end

src/analysis/normed_space/basic.lean

Lines changed: 79 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -83,83 +83,104 @@ lemma dist_eq_norm (g h : α) : dist g h = ∥g - h∥ :=
8383
normed_group.dist_eq _ _
8484

8585
@[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]
8787

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₂)
93134

94135
@[simp] lemma norm_nonneg (g : α) : 0 ≤ ∥g∥ :=
95136
by { rw[←dist_zero_right], exact dist_nonneg }
96137

97138
lemma norm_eq_zero (g : α) : ∥g∥ = 0 ↔ g = 0 :=
98139
by { rw[←dist_zero_right], exact dist_eq_zero }
99140

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
101145

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) }
104149

105150
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
111152

112153
lemma norm_le_zero_iff (g : α) : ∥g∥ ≤ 0 ↔ g = 0 :=
113154
by { rw[←dist_zero_right], exact dist_le_zero }
114155

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
124158

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₂)
130162

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 }
133165

134166
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)
143171

144172
lemma dist_norm_norm_le (g h : α) : dist ∥g∥ ∥h∥ ≤ ∥g - h∥ :=
145173
abs_norm_sub_norm_le g h
146174

147-
lemma norm_sub_rev (g h : α) : ∥g - h∥ = ∥h - g∥ :=
148-
by rw ←norm_neg; simp
149-
150175
lemma ball_0_eq (ε : ℝ) : ball (0:α) ε = {x | ∥x∥ < ε} :=
151176
set.ext $ assume a, by simp
152177

153178
theorem normed_group.tendsto_nhds_zero {f : γ → α} {l : filter γ} :
154179
tendsto f l (𝓝 0) ↔ ∀ ε > 0, { x | ∥ f x ∥ < ε } ∈ l :=
180+
metric.tendsto_nhds.trans $ forall_congr $ λ ε, forall_congr $ λ εgt0,
155181
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
163184
end
164185

165186
section nnnorm
@@ -177,8 +198,8 @@ by simp only [nnreal.eq_iff.symm, nnreal.coe_zero, coe_nnnorm, norm_eq_zero]
177198
@[simp] lemma nnnorm_zero : nnnorm (0 : α) = 0 :=
178199
nnreal.eq norm_zero
179200

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
182203

183204
@[simp] lemma nnnorm_neg (g : α) : nnnorm (-g) = nnnorm g :=
184205
nnreal.eq $ norm_neg g
@@ -257,7 +278,7 @@ begin
257278
refine ⟨metric.uniform_continuous_iff.2 $ assume ε hε, ⟨ε / 2, half_pos hε, assume a b h, _⟩⟩,
258279
rw [prod.dist_eq, max_lt_iff, dist_eq_norm, dist_eq_norm] at h,
259280
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 _ _
261282
... < ε / 2 + ε / 2 : add_lt_add h.1 h.2
262283
... = ε : add_halves _
263284
end
@@ -315,7 +336,7 @@ instance normed_ring_top_monoid [normed_ring α] : topological_monoid α :=
315336
begin
316337
apply squeeze_zero,
317338
{ intro, apply norm_nonneg },
318-
{ simp only [this], intro, apply norm_triangle },
339+
{ simp only [this], intro, apply norm_add_le },
319340
{ rw ←zero_add (0 : ℝ), apply tendsto_add,
320341
{ apply squeeze_zero,
321342
{ intro, apply norm_nonneg },
@@ -486,6 +507,9 @@ set_option class.instance_max_depth 43
486507
lemma norm_smul [normed_space α β] (s : α) (x : β) : ∥s • x∥ = ∥s∥ * ∥x∥ :=
487508
normed_space.norm_smul s x
488509

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+
489513
lemma nnnorm_smul [normed_space α β] (s : α) (x : β) : nnnorm (s • x) = nnnorm s * nnnorm x :=
490514
nnreal.eq $ norm_smul s x
491515

@@ -499,7 +523,7 @@ begin
499523
rw tendsto_iff_norm_tendsto_zero,
500524
have ineq := λ x : γ, calc
501525
∥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)
503527
... ≤ ∥f x - s∥*∥g x∥ + ∥s∥*∥g x - b∥ : by { rw [←smul_sub, ←sub_smul, norm_smul, norm_smul] },
504528
apply squeeze_zero,
505529
{ intro t, exact norm_nonneg _ },
@@ -614,7 +638,7 @@ summable_iff_vanishing_norm.2 $ assume ε hε,
614638
⟨s, assume t ht,
615639
have ∥t.sum g∥ < ε := hs t ht,
616640
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)) $
618642
by rwa [real.norm_eq_abs, abs_of_nonneg nn] at this
619643

620644
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)
625649
(continuous_norm.tendsto _).comp (has_sum_tsum $ summable_of_summable_norm hf),
626650
have h₂ : tendsto (λs:finset ι, s.sum (λi, ∥f i∥)) at_top (𝓝 (∑ i, ∥f i∥)) :=
627651
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 _ _
629653

630654
end summable
631655

src/analysis/normed_space/bounded_linear_maps.lean

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,8 @@ lemma add (hf : is_bounded_linear_map 𝕜 f) (hg : is_bounded_linear_map 𝕜 g
9595
let ⟨hlf, Mf, hMfp, hMf⟩ := hf in
9696
let ⟨hlg, Mg, hMgp, hMg⟩ := hg in
9797
(hlf.mk' _ + hlg.mk' _).is_linear.with_bound (Mf + Mg) $ assume x,
98-
calc ∥f x + g x∥ ≤ ∥f x∥ + ∥g x∥ : norm_triangle _ _
99-
... ≤ Mf * ∥x∥ + Mg * ∥x∥ : add_le_add (hMf x) (hMg x)
100-
... ≤ (Mf + Mg) * ∥x∥ : by rw add_mul
98+
calc ∥f x + g x∥ ≤ Mf * ∥x∥ + Mg * ∥x∥ : norm_add_le_of_le (hMf x) (hMg x)
99+
... ≤ (Mf + Mg) * ∥x∥ : by rw add_mul
101100

102101
lemma sub (hf : is_bounded_linear_map 𝕜 f) (hg : is_bounded_linear_map 𝕜 g) :
103102
is_bounded_linear_map 𝕜 (λ e, f e - g e) := add hf (neg hg)
@@ -287,8 +286,7 @@ def is_bounded_bilinear_map.deriv (h : is_bounded_bilinear_map 𝕜 f) (p : E ×
287286
rcases h.bound with ⟨C, Cpos, hC⟩,
288287
refine ⟨C * ∥p.1∥ + C * ∥p.2∥, λq, _⟩,
289288
calc ∥f (p.1, q.2) + f (q.1, p.2)∥
290-
≤ ∥f (p.1, q.2)∥ + ∥f (q.1, p.2)∥ : norm_triangle _ _
291-
... ≤ C * ∥p.1∥ * ∥q.2∥ + C * ∥q.1∥ * ∥p.2∥ : add_le_add (hC _ _) (hC _ _)
289+
≤ C * ∥p.1∥ * ∥q.2∥ + C * ∥q.1∥ * ∥p.2∥ : norm_add_le_of_le (hC _ _) (hC _ _)
292290
... ≤ C * ∥p.1∥ * ∥q∥ + C * ∥q∥ * ∥p.2∥ : begin
293291
apply add_le_add,
294292
exact mul_le_mul_of_nonneg_left (le_max_right _ _) (mul_nonneg (le_of_lt Cpos) (norm_nonneg _)),
@@ -317,8 +315,7 @@ begin
317315
{ refine continuous_linear_map.op_norm_le_bound _
318316
(mul_nonneg (add_nonneg (le_of_lt Cpos) (le_of_lt Cpos)) (norm_nonneg _)) (λq, _),
319317
calc ∥f (p.1, q.2) + f (q.1, p.2)∥
320-
≤ ∥f (p.1, q.2)∥ + ∥f (q.1, p.2)∥ : norm_triangle _ _
321-
... ≤ C * ∥p.1∥ * ∥q.2∥ + C * ∥q.1∥ * ∥p.2∥ : add_le_add (hC _ _) (hC _ _)
318+
≤ C * ∥p.1∥ * ∥q.2∥ + C * ∥q.1∥ * ∥p.2∥ : norm_add_le_of_le (hC _ _) (hC _ _)
322319
... ≤ C * ∥p∥ * ∥q∥ + C * ∥q∥ * ∥p∥ : by apply_rules [add_le_add, mul_le_mul, norm_nonneg,
323320
le_of_lt Cpos, le_refl, le_max_left, le_max_right, mul_nonneg, norm_nonneg, norm_nonneg,
324321
norm_nonneg]

src/analysis/normed_space/operator_norm.lean

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,10 @@ lemma op_norm_le_bound {M : ℝ} (hMp: 0 ≤ M) (hM : ∀ x, ∥f x∥ ≤ M *
221221
Inf_le _ bounds_bdd_below ⟨hMp, hM⟩
222222

223223
/-- The operator norm satisfies the triangle inequality. -/
224-
theorem op_norm_triangle : ∥f + g∥ ≤ ∥f∥ + ∥g∥ :=
224+
theorem op_norm_add_le : ∥f + g∥ ≤ ∥f∥ + ∥g∥ :=
225225
Inf_le _ bounds_bdd_below
226226
⟨add_nonneg (op_norm_nonneg _) (op_norm_nonneg _), λ x, by { rw add_mul,
227-
calc _ ≤ ∥f x∥ + ∥g x∥ : norm_triangle _ _
228-
... ≤ _ : add_le_add (le_op_norm _ _) (le_op_norm _ _) }⟩
227+
exact norm_add_le_of_le (le_op_norm _ _) (le_op_norm _ _) }⟩
229228

230229
/-- An operator is zero iff its norm vanishes. -/
231230
theorem op_norm_zero_iff : ∥f∥ = 0 ↔ f = 0 :=
@@ -274,7 +273,7 @@ lemma op_norm_neg : ∥-f∥ = ∥f∥ := calc
274273
/-- Continuous linear maps themselves form a normed space with respect to
275274
the operator norm. -/
276275
instance to_normed_group : normed_group (E →L[𝕜] F) :=
277-
normed_group.of_core _ ⟨op_norm_zero_iff, op_norm_triangle, op_norm_neg⟩
276+
normed_group.of_core _ ⟨op_norm_zero_iff, op_norm_add_le, op_norm_neg⟩
278277

279278
/- The next instance should be found automatically, but it is not.
280279
TODO: fix me -/

src/data/padics/padic_integers.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ instance : normed_ring ℤ_[p] :=
139139
instance padic_norm_z.is_absolute_value : is_absolute_value (λ z : ℤ_[p], ∥z∥) :=
140140
{ abv_nonneg := norm_nonneg,
141141
abv_eq_zero := λ ⟨_, _⟩, by simp [norm_eq_zero, padic_int.zero_def],
142-
abv_add := λ ⟨_,_⟩ ⟨_, _⟩, norm_triangle _ _,
142+
abv_add := λ ⟨_,_⟩ ⟨_, _⟩, norm_add_le _ _,
143143
abv_mul := λ _ _, by unfold norm; simp [padic_norm_z] }
144144

145145
protected lemma padic_int.pmul_comm : ∀ z1 z2 : ℤ_[p], z1*z2 = z2*z1

src/data/padics/padic_numbers.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ p-adic norm. We show that the p-adic norm on ℚ extends to ℚ_p, that ℚ is e
1919
## Important definitions
2020
2121
* `padic` : the type of p-adic numbers
22-
* `padic_norm_e` : the rational ralued p-adic norm on ℚ_p
22+
* `padic_norm_e` : the rational valued p-adic norm on ℚ_p
2323
2424
## Notation
2525
@@ -728,7 +728,7 @@ instance : normed_field ℚ_[p] :=
728728
instance : is_absolute_value (λ a : ℚ_[p], ∥a∥) :=
729729
{ abv_nonneg := norm_nonneg,
730730
abv_eq_zero := norm_eq_zero,
731-
abv_add := norm_triangle,
731+
abv_add := norm_add_le,
732732
abv_mul := by simp [has_norm.norm, padic_norm_e.mul'] }
733733

734734
theorem rat_dense {p : ℕ} {hp : p.prime} (q : ℚ_[p]) {ε : ℝ} (hε : ε > 0) :

0 commit comments

Comments
 (0)