@@ -4,13 +4,14 @@ Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Patrick Massot, Johannes Hölzl
5
5
6
6
! This file was ported from Lean 3 source module analysis.normed_space.basic
7
- ! leanprover-community/mathlib commit f9dd3204df14a0749cd456fac1e6849dfe7d2b88
7
+ ! leanprover-community/mathlib commit ba5ff5ad5d120fb0ef094ad2994967e9bfaf5112
8
8
! Please do not edit these lines, except to modify the commit id
9
9
! if you have ported upstream changes.
10
10
-/
11
11
import Mathlib.Algebra.Algebra.Pi
12
12
import Mathlib.Algebra.Algebra.RestrictScalars
13
13
import Mathlib.Analysis.Normed.Field.Basic
14
+ import Mathlib.Analysis.Normed.MulAction
14
15
import Mathlib.Data.Real.Sqrt
15
16
import Mathlib.Topology.Algebra.Module.Basic
16
17
@@ -53,47 +54,18 @@ end Prio
53
54
54
55
variable [NormedField α] [SeminormedAddCommGroup β]
55
56
56
- -- note: while these are currently strictly weaker than the versions without `le`, they will cease
57
- -- to be if we eventually generalize `NormedSpace` from `NormedField α` to `NormedRing α`.
58
- section LE
59
-
60
- theorem norm_smul_le [NormedSpace α β] (r : α) (x : β) : ‖r • x‖ ≤ ‖r‖ * ‖x‖ :=
61
- NormedSpace.norm_smul_le _ _
62
- #align norm_smul_le norm_smul_le
63
-
64
- theorem nnnorm_smul_le [NormedSpace α β] (s : α) (x : β) : ‖s • x‖₊ ≤ ‖s‖₊ * ‖x‖₊ :=
65
- norm_smul_le s x
66
- #align nnnorm_smul_le nnnorm_smul_le
67
-
68
- theorem dist_smul_le [NormedSpace α β] (s : α) (x y : β) : dist (s • x) (s • y) ≤ ‖s‖ * dist x y :=
69
- by simpa only [dist_eq_norm, ← smul_sub] using norm_smul_le _ _
70
- #align dist_smul_le dist_smul_le
71
-
72
- theorem nndist_smul_le [NormedSpace α β] (s : α) (x y : β) :
73
- nndist (s • x) (s • y) ≤ ‖s‖₊ * nndist x y :=
74
- dist_smul_le s x y
75
- #align nndist_smul_le nndist_smul_le
76
-
77
- end LE
78
-
79
57
-- see Note [lower instance priority]
80
- instance (priority := 100 ) NormedSpace.boundedSMul [NormedSpace α β] : BoundedSMul α β where
81
- dist_smul_pair' x y₁ y₂ := by simpa [dist_eq_norm, smul_sub] using norm_smul_le x (y₁ - y₂)
82
- dist_pair_smul' x₁ x₂ y := by simpa [dist_eq_norm, sub_smul] using norm_smul_le (x₁ - x₂) y
58
+ instance (priority := 100 ) NormedSpace.boundedSMul [NormedSpace α β] : BoundedSMul α β :=
59
+ BoundedSMul.of_norm_smul_le NormedSpace.norm_smul_le
83
60
#align normed_space.has_bounded_smul NormedSpace.boundedSMul
84
61
85
62
instance NormedField.toNormedSpace : NormedSpace α α where norm_smul_le a b := norm_mul_le a b
86
63
#align normed_field.to_normed_space NormedField.toNormedSpace
87
64
88
- theorem norm_smul [NormedSpace α β] (s : α) (x : β) : ‖s • x‖ = ‖s‖ * ‖x‖ := by
89
- by_cases h : s = 0
90
- · simp [h]
91
- · refine' le_antisymm (norm_smul_le s x) _
92
- calc
93
- ‖s‖ * ‖x‖ = ‖s‖ * ‖s⁻¹ • s • x‖ := by rw [inv_smul_smul₀ h]
94
- _ ≤ ‖s‖ * (‖s⁻¹‖ * ‖s • x‖) := (mul_le_mul_of_nonneg_left (norm_smul_le _ _) (norm_nonneg _))
95
- _ = ‖s • x‖ := by rw [norm_inv, ← mul_assoc, mul_inv_cancel (mt norm_eq_zero.1 h), one_mul]
96
- #align norm_smul norm_smul
65
+ -- shortcut instance
66
+ instance NormedField.to_boundedSMul : BoundedSMul α α :=
67
+ NormedSpace.boundedSMul
68
+ #align normed_field.to_has_bounded_smul NormedField.to_boundedSMul
97
69
98
70
theorem norm_zsmul (α) [NormedField α] [NormedSpace α β] (n : ℤ) (x : β) :
99
71
‖n • x‖ = ‖(n : α)‖ * ‖x‖ := by rw [← norm_smul, ← Int.smul_one_eq_coe, smul_assoc, one_smul]
@@ -109,23 +81,6 @@ theorem inv_norm_smul_mem_closed_unit_ball [NormedSpace ℝ β] (x : β) :
109
81
div_self_le_one]
110
82
#align inv_norm_smul_mem_closed_unit_ball inv_norm_smul_mem_closed_unit_ball
111
83
112
- theorem dist_smul₀ [NormedSpace α β] (s : α) (x y : β) : dist (s • x) (s • y) = ‖s‖ * dist x y := by
113
- simp only [dist_eq_norm, (norm_smul _ _).symm, smul_sub]
114
- #align dist_smul₀ dist_smul₀
115
-
116
- theorem nnnorm_smul [NormedSpace α β] (s : α) (x : β) : ‖s • x‖₊ = ‖s‖₊ * ‖x‖₊ :=
117
- NNReal.eq <| norm_smul s x
118
- #align nnnorm_smul nnnorm_smul
119
-
120
- theorem nndist_smul₀ [NormedSpace α β] (s : α) (x y : β) :
121
- nndist (s • x) (s • y) = ‖s‖₊ * nndist x y :=
122
- NNReal.eq <| dist_smul₀ s x y
123
- #align nndist_smul₀ nndist_smul₀
124
-
125
- theorem lipschitzWith_smul [NormedSpace α β] (s : α) : LipschitzWith ‖s‖₊ ((· • ·) s : β → β) :=
126
- lipschitzWith_iff_dist_le_mul.2 fun x y => by rw [dist_smul₀, coe_nnnorm]
127
- #align lipschitz_with_smul lipschitzWith_smul
128
-
129
84
theorem norm_smul_of_nonneg [NormedSpace ℝ β] {t : ℝ} (ht : 0 ≤ t) (x : β) : ‖t • x‖ = t * ‖x‖ := by
130
85
rw [norm_smul, Real.norm_eq_abs, abs_of_nonneg ht]
131
86
#align norm_smul_of_nonneg norm_smul_of_nonneg
@@ -291,7 +246,7 @@ instance Pi.normedSpace {E : ι → Type _} [Fintype ι] [∀ i, SeminormedAddCo
291
246
norm_smul_le a f := by
292
247
simp_rw [← coe_nnnorm, ← NNReal.coe_mul, NNReal.coe_le_coe, Pi.nnnorm_def,
293
248
NNReal.mul_finset_sup]
294
- exact Finset.sup_mono_fun fun _ _ => norm_smul_le _ _
249
+ exact Finset.sup_mono_fun fun _ _ => norm_smul_le a _
295
250
#align pi.normed_space Pi.normedSpace
296
251
297
252
instance MulOpposite.normedSpace : NormedSpace α Eᵐᵒᵖ :=
0 commit comments