@@ -208,22 +208,23 @@ class normed_ring (α : Type*) extends has_norm α, ring α, metric_space α :=
208
208
209
209
instance normed_ring.to_normed_group [β : normed_ring α] : normed_group α := { ..β }
210
210
211
- lemma norm_mul {α : Type *} [normed_ring α] (a b : α) : (∥a*b∥) ≤ (∥a∥) * (∥b∥) :=
211
+ lemma norm_mul_le {α : Type *} [normed_ring α] (a b : α) : (∥a*b∥) ≤ (∥a∥) * (∥b∥) :=
212
212
normed_ring.norm_mul _ _
213
213
214
- lemma norm_pow {α : Type *} [normed_ring α] (a : α) : ∀ {n : ℕ}, n > 0 → ∥a^n∥ ≤ ∥a∥^n
214
+ lemma norm_pow_le {α : Type *} [normed_ring α] (a : α) : ∀ {n : ℕ}, n > 0 → ∥a^n∥ ≤ ∥a∥^n
215
215
| 1 h := by simp
216
216
| (n+2 ) h :=
217
- le_trans (norm_mul a (a^(n+1 )))
217
+ le_trans (norm_mul_le a (a^(n+1 )))
218
218
(mul_le_mul (le_refl _)
219
- (norm_pow (nat.succ_pos _)) (norm_nonneg _) (norm_nonneg _))
219
+ (norm_pow_le (nat.succ_pos _)) (norm_nonneg _) (norm_nonneg _))
220
220
221
221
instance prod.normed_ring [normed_ring α] [normed_ring β] : normed_ring (α × β) :=
222
222
{ norm_mul := assume x y,
223
223
calc
224
224
∥x * y∥ = ∥(x.1 *y.1 , x.2 *y.2 )∥ : rfl
225
225
... = (max ∥x.1 *y.1 ∥ ∥x.2 *y.2 ∥) : rfl
226
- ... ≤ (max (∥x.1 ∥*∥y.1 ∥) (∥x.2 ∥*∥y.2 ∥)) : max_le_max (norm_mul (x.1 ) (y.1 )) (norm_mul (x.2 ) (y.2 ))
226
+ ... ≤ (max (∥x.1 ∥*∥y.1 ∥) (∥x.2 ∥*∥y.2 ∥)) :
227
+ max_le_max (norm_mul_le (x.1 ) (y.1 )) (norm_mul_le (x.2 ) (y.2 ))
227
228
... = (max (∥x.1 ∥*∥y.1 ∥) (∥y.2 ∥*∥x.2 ∥)) : by simp[mul_comm]
228
229
... ≤ (max (∥x.1 ∥) (∥x.2 ∥)) * (max (∥y.2 ∥) (∥y.1 ∥)) : by { apply max_mul_mul_le_max_mul_max; simp [norm_nonneg] }
229
230
... = (max (∥x.1 ∥) (∥x.2 ∥)) * (max (∥y.1 ∥) (∥y.2 ∥)) : by simp[max_comm]
@@ -243,7 +244,7 @@ instance normed_ring_top_monoid [normed_ring α] : topological_monoid α :=
243
244
{ apply squeeze_zero,
244
245
{ intro, apply norm_nonneg },
245
246
{ intro t, show ∥t.fst * t.snd - t.fst * x.snd∥ ≤ ∥t.fst∥ * ∥t.snd - x.snd∥,
246
- rw ←mul_sub, apply norm_mul },
247
+ rw ←mul_sub, apply norm_mul_le },
247
248
{ rw ←mul_zero (∥x.fst∥), apply tendsto_mul,
248
249
{ apply continuous_iff_continuous_at.1 ,
249
250
apply continuous.comp,
@@ -255,7 +256,7 @@ instance normed_ring_top_monoid [normed_ring α] : topological_monoid α :=
255
256
{ apply squeeze_zero,
256
257
{ intro, apply norm_nonneg },
257
258
{ intro t, show ∥t.fst * x.snd - x.fst * x.snd∥ ≤ ∥t.fst - x.fst∥ * ∥x.snd∥,
258
- rw ←sub_mul, apply norm_mul },
259
+ rw ←sub_mul, apply norm_mul_le },
259
260
{ rw ←zero_mul (∥x.snd∥), apply tendsto_mul,
260
261
{ apply tendsto_iff_norm_tendsto_zero.1 ,
261
262
apply continuous_iff_continuous_at.1 ,
@@ -283,6 +284,19 @@ have ∥(1 : α)∥ * ∥(1 : α)∥ = ∥(1 : α)∥ * 1, by calc
283
284
... = ∥(1 : α)∥ * 1 : by simp,
284
285
eq_of_mul_eq_mul_left (ne_of_gt ((norm_pos_iff _).2 (by simp))) this
285
286
287
+ @[simp] lemma norm_mul [normed_field α] (a b : α) : ∥a * b∥ = ∥a∥ * ∥b∥ :=
288
+ normed_field.norm_mul a b
289
+
290
+ instance normed_field.is_monoid_hom_norm [normed_field α] : is_monoid_hom (norm : α → ℝ) :=
291
+ ⟨norm_one, norm_mul⟩
292
+
293
+ @[simp] lemma norm_pow [normed_field α] (a : α) : ∀ (n : ℕ), ∥a^n∥ = ∥a∥^n :=
294
+ is_monoid_hom.map_pow norm a
295
+
296
+ @[simp] lemma norm_prod {β : Type *} [normed_field α] (s : finset β) (f : β → α) :
297
+ ∥s.prod f∥ = s.prod (λb, ∥f b∥) :=
298
+ eq.symm (finset.prod_hom norm)
299
+
286
300
@[simp] lemma norm_div {α : Type *} [normed_field α] (a b : α) : ∥a/b∥ = ∥a∥/∥b∥ :=
287
301
if hb : b = 0 then by simp [hb] else
288
302
begin
294
308
@[simp] lemma norm_inv {α : Type *} [normed_field α] (a : α) : ∥a⁻¹∥ = ∥a∥⁻¹ :=
295
309
by simp only [inv_eq_one_div, norm_div, norm_one]
296
310
297
- @[simp] lemma normed_field.norm_pow {α : Type *} [normed_field α] (a : α) :
298
- ∀ n : ℕ, ∥a^n∥ = ∥a∥^n
299
- | 0 := by simp
300
- | (k+1 ) := calc
301
- ∥a ^ (k + 1 )∥ = ∥a*(a^k)∥ : rfl
302
- ... = ∥a∥*∥a^k∥ : by rw normed_field.norm_mul
303
- ... = ∥a∥ ^ (k + 1 ) : by rw normed_field.norm_pow; simp [pow, monoid.pow]
304
-
305
311
instance : normed_field ℝ :=
306
312
{ norm := λ x, abs x,
307
313
dist_eq := assume x y, rfl,
0 commit comments