1
1
/-
2
2
Copyright (c) 2021 Yury Kudryashov. All rights reserved.
3
3
Released under Apache 2.0 license as described in the file LICENSE.
4
- Authors: Yury Kudryashov
4
+ Authors: Yury Kudryashov, Frédéric Dupuis, Heather Macbeth
5
5
-/
6
6
import analysis.normed_space.basic
7
7
8
8
/-!
9
- # Linear isometries
9
+ # (Semi-)linear isometries
10
10
11
- In this file we define `linear_isometry R E F` (notation: `E →ₗᵢ[R] F`) to be a linear isometric
12
- embedding of `E` into `F` and `linear_isometry_equiv` (notation: `E ≃ₗᵢ[R] F`) to be a linear
13
- isometric equivalence between `E` and `F`.
11
+ In this file we define `linear_isometry σ₁₂ E E₂` (notation: `E →ₛₗᵢ[σ₁₂] E₂`) to be a semilinear
12
+ isometric embedding of `E` into `E₂` and `linear_isometry_equiv` (notation: `E ≃ₛₗᵢ[σ₁₂] E₂`) to be
13
+ a semilinear isometric equivalence between `E` and `E₂`. The notation for the associated purely
14
+ linear concepts is `E →ₗᵢ[R] E₂`, `E ≃ₗᵢ[R] E₂`.
14
15
15
16
We also prove some trivial lemmas and provide convenience constructors.
16
17
@@ -19,34 +20,48 @@ theory for `semi_normed_space` and we specialize to `normed_space` when needed.
19
20
-/
20
21
open function set
21
22
22
- variables {R E F G G' E₁ : Type *} [semiring R]
23
- [semi_normed_group E] [semi_normed_group F] [semi_normed_group G] [semi_normed_group G']
24
- [module R E] [module R F] [module R G] [module R G']
25
- [normed_group E₁] [module R E₁]
26
-
27
- /-- An `R`-linear isometric embedding of one normed `R`-module into another. -/
28
- structure linear_isometry (R E F : Type *) [semiring R] [semi_normed_group E]
29
- [semi_normed_group F] [module R E] [module R F] extends E →ₗ[R] F :=
23
+ variables {R R₂ R₃ R₄ E E₂ E₃ E₄ F : Type *} [semiring R] [semiring R₂] [semiring R₃] [semiring R₄]
24
+ {σ₁₂ : R →+* R₂} {σ₂₁ : R₂ →+* R} {σ₁₃ : R →+* R₃} {σ₃₁ : R₃ →+* R} {σ₁₄ : R →+* R₄}
25
+ {σ₄₁ : R₄ →+* R} {σ₂₃ : R₂ →+* R₃} {σ₃₂ : R₃ →+* R₂} {σ₂₄ : R₂ →+* R₄} {σ₄₂ : R₄ →+* R₂}
26
+ {σ₃₄ : R₃ →+* R₄} {σ₄₃ : R₄ →+* R₃}
27
+ [ring_hom_inv_pair σ₁₂ σ₂₁] [ring_hom_inv_pair σ₂₁ σ₁₂]
28
+ [ring_hom_inv_pair σ₁₃ σ₃₁] [ring_hom_inv_pair σ₃₁ σ₁₃]
29
+ [ring_hom_inv_pair σ₂₃ σ₃₂] [ring_hom_inv_pair σ₃₂ σ₂₃]
30
+ [ring_hom_inv_pair σ₁₄ σ₄₁] [ring_hom_inv_pair σ₄₁ σ₁₄]
31
+ [ring_hom_inv_pair σ₂₄ σ₄₂] [ring_hom_inv_pair σ₄₂ σ₂₄]
32
+ [ring_hom_inv_pair σ₃₄ σ₄₃] [ring_hom_inv_pair σ₄₃ σ₃₄]
33
+ [ring_hom_comp_triple σ₁₂ σ₂₃ σ₁₃] [ring_hom_comp_triple σ₁₂ σ₂₄ σ₁₄]
34
+ [ring_hom_comp_triple σ₂₃ σ₃₄ σ₂₄] [ring_hom_comp_triple σ₁₃ σ₃₄ σ₁₄]
35
+ [ring_hom_comp_triple σ₃₂ σ₂₁ σ₃₁] [ring_hom_comp_triple σ₄₂ σ₂₁ σ₄₁]
36
+ [ring_hom_comp_triple σ₄₃ σ₃₂ σ₄₂] [ring_hom_comp_triple σ₄₃ σ₃₁ σ₄₁]
37
+ [semi_normed_group E] [semi_normed_group E₂] [semi_normed_group E₃] [semi_normed_group E₄]
38
+ [module R E] [module R₂ E₂] [module R₃ E₃] [module R₄ E₄]
39
+ [normed_group F] [module R F]
40
+
41
+ /-- A `σ₁₂`-semilinear isometric embedding of a normed `R`-module into an `R₂`-module. -/
42
+ structure linear_isometry (σ₁₂ : R →+* R₂) (E E₂ : Type *) [semi_normed_group E]
43
+ [semi_normed_group E₂] [module R E] [module R₂ E₂] extends E →ₛₗ[σ₁₂] E₂ :=
30
44
(norm_map' : ∀ x, ∥to_linear_map x∥ = ∥x∥)
31
45
32
- notation E ` →ₗᵢ[`:25 R:25 `] `:0 F:0 := linear_isometry R E F
46
+ notation E ` →ₛₗᵢ[`:25 σ₁₂:25 `] `:0 E₂:0 := linear_isometry σ₁₂ E E₂
47
+ notation E ` →ₗᵢ[`:25 R:25 `] `:0 E₂:0 := linear_isometry (ring_hom.id R) E E₂
33
48
34
49
namespace linear_isometry
35
50
36
51
/-- We use `f₁` when we need the domain to be a `normed_space`. -/
37
- variables (f : E →ₗᵢ[R] F ) (f₁ : E₁ →ₗᵢ[R] F )
52
+ variables (f : E →ₛₗᵢ[σ₁₂] E₂ ) (f₁ : F →ₛₗᵢ[σ₁₂] E₂ )
38
53
39
- instance : has_coe_to_fun (E →ₗᵢ[R] F ) := ⟨_, λ f, f.to_fun⟩
54
+ instance : has_coe_to_fun (E →ₛₗᵢ[σ₁₂] E₂ ) := ⟨_, λ f, f.to_fun⟩
40
55
41
56
@[simp] lemma coe_to_linear_map : ⇑f.to_linear_map = f := rfl
42
57
43
- lemma to_linear_map_injective : injective (to_linear_map : (E →ₗᵢ[R] F ) → (E →ₗ[R] F ))
58
+ lemma to_linear_map_injective : injective (to_linear_map : (E →ₛₗᵢ[σ₁₂] E₂ ) → (E →ₛₗ[σ₁₂] E₂ ))
44
59
| ⟨f, _⟩ ⟨g, _⟩ rfl := rfl
45
60
46
- lemma coe_fn_injective : injective (λ (f : E →ₗᵢ[R] F ) (x : E), f x) :=
61
+ lemma coe_fn_injective : injective (λ (f : E →ₛₗᵢ[σ₁₂] E₂ ) (x : E), f x) :=
47
62
linear_map.coe_injective.comp to_linear_map_injective
48
63
49
- @[ext] lemma ext {f g : E →ₗᵢ[R] F } (h : ∀ x, f x = g x) : f = g :=
64
+ @[ext] lemma ext {f g : E →ₛₗᵢ[σ₁₂] E₂ } (h : ∀ x, f x = g x) : f = g :=
50
65
coe_fn_injective $ funext h
51
66
52
67
@[simp] lemma map_zero : f 0 = 0 := f.to_linear_map.map_zero
@@ -55,7 +70,10 @@ coe_fn_injective $ funext h
55
70
56
71
@[simp] lemma map_sub (x y : E) : f (x - y) = f x - f y := f.to_linear_map.map_sub x y
57
72
58
- @[simp] lemma map_smul (c : R) (x : E) : f (c • x) = c • f x := f.to_linear_map.map_smul c x
73
+ @[simp] lemma map_smulₛₗ (c : R) (x : E) : f (c • x) = σ₁₂ c • f x := f.to_linear_map.map_smulₛₗ c x
74
+
75
+ @[simp] lemma map_smul [module R E₂] (f : E →ₗᵢ[R] E₂) (c : R) (x : E) : f (c • x) = c • f x :=
76
+ f.to_linear_map.map_smul c x
59
77
60
78
@[simp] lemma norm_map (x : E) : ∥f x∥ = ∥x∥ := f.norm_map' x
61
79
@@ -69,9 +87,9 @@ f.to_linear_map.to_add_monoid_hom.isometry_of_norm f.norm_map
69
87
70
88
protected lemma injective : injective f₁ := f₁.isometry.injective
71
89
72
- @[simp] lemma map_eq_iff {x y : E₁ } : f₁ x = f₁ y ↔ x = y := f₁.injective.eq_iff
90
+ @[simp] lemma map_eq_iff {x y : F } : f₁ x = f₁ y ↔ x = y := f₁.injective.eq_iff
73
91
74
- lemma map_ne {x y : E₁ } (h : x ≠ y) : f₁ x ≠ f₁ y := f₁.injective.ne h
92
+ lemma map_ne {x y : F } (h : x ≠ y) : f₁ x ≠ f₁ y := f₁.injective.ne h
75
93
76
94
protected lemma lipschitz : lipschitz_with 1 f := f.isometry.lipschitz
77
95
@@ -92,7 +110,7 @@ lemma diam_range : metric.diam (range f) = metric.diam (univ : set E) :=
92
110
f.isometry.diam_range
93
111
94
112
/-- Interpret a linear isometry as a continuous linear map. -/
95
- def to_continuous_linear_map : E →L[R] F := ⟨f.to_linear_map, f.continuous⟩
113
+ def to_continuous_linear_map : E →SL[σ₁₂] E₂ := ⟨f.to_linear_map, f.continuous⟩
96
114
97
115
@[simp] lemma coe_to_continuous_linear_map : ⇑f.to_continuous_linear_map = f := rfl
98
116
@@ -112,20 +130,24 @@ def id : E →ₗᵢ[R] E := ⟨linear_map.id, λ x, rfl⟩
112
130
instance : inhabited (E →ₗᵢ[R] E) := ⟨id⟩
113
131
114
132
/-- Composition of linear isometries. -/
115
- def comp (g : F →ₗᵢ[R] G ) (f : E →ₗᵢ[R] F ) : E →ₗᵢ[R] G :=
133
+ def comp (g : E₂ →ₛₗᵢ[σ₂₃] E₃ ) (f : E →ₛₗᵢ[σ₁₂] E₂ ) : E →ₛₗᵢ[σ₁₃] E₃ :=
116
134
⟨g.to_linear_map.comp f.to_linear_map, λ x, (g.norm_map _).trans (f.norm_map _)⟩
117
135
118
- @[simp] lemma coe_comp (g : F →ₗᵢ[R] G) (f : E →ₗᵢ[R] F) :
136
+ include σ₁₃
137
+ @[simp] lemma coe_comp (g : E₂ →ₛₗᵢ[σ₂₃] E₃) (f : E →ₛₗᵢ[σ₁₂] E₂) :
119
138
⇑(g.comp f) = g ∘ f :=
120
139
rfl
140
+ omit σ₁₃
121
141
122
- @[simp] lemma id_comp : (id : F →ₗᵢ[R] F ).comp f = f := ext $ λ x, rfl
142
+ @[simp] lemma id_comp : (id : E₂ →ₗᵢ[R₂] E₂ ).comp f = f := ext $ λ x, rfl
123
143
124
144
@[simp] lemma comp_id : f.comp id = f := ext $ λ x, rfl
125
145
126
- lemma comp_assoc (f : G →ₗᵢ[R] G') (g : F →ₗᵢ[R] G) (h : E →ₗᵢ[R] F) :
146
+ include σ₁₃ σ₂₄ σ₁₄
147
+ lemma comp_assoc (f : E₃ →ₛₗᵢ[σ₃₄] E₄) (g : E₂ →ₛₗᵢ[σ₂₃] E₃) (h : E →ₛₗᵢ[σ₁₂] E₂) :
127
148
(f.comp g).comp h = f.comp (g.comp h) :=
128
149
rfl
150
+ omit σ₁₃ σ₂₄ σ₁₄
129
151
130
152
instance : monoid (E →ₗᵢ[R] E) :=
131
153
{ one := id,
@@ -165,55 +187,59 @@ ker_subtype _
165
187
166
188
end submodule
167
189
168
- /-- A linear isometric equivalence between two normed vector spaces. -/
169
- structure linear_isometry_equiv (R E F : Type *) [semiring R] [semi_normed_group E]
170
- [semi_normed_group F] [module R E] [module R F] extends E ≃ₗ[R] F :=
190
+ /-- A semilinear isometric equivalence between two normed vector spaces. -/
191
+ structure linear_isometry_equiv (σ₁₂ : R →+* R₂) {σ₂₁ : R₂ →+* R} [ring_hom_inv_pair σ₁₂ σ₂₁]
192
+ [ring_hom_inv_pair σ₂₁ σ₁₂] (E E₂ : Type *) [semi_normed_group E] [semi_normed_group E₂]
193
+ [module R E] [module R₂ E₂] extends E ≃ₛₗ[σ₁₂] E₂ :=
171
194
(norm_map' : ∀ x, ∥to_linear_equiv x∥ = ∥x∥)
172
195
173
- notation E ` ≃ₗᵢ[`:25 R:25 `] `:0 F:0 := linear_isometry_equiv R E F
196
+ notation E ` ≃ₛₗᵢ[`:25 σ₁₂:25 `] `:0 E₂:0 := linear_isometry_equiv σ₁₂ E E₂
197
+ notation E ` ≃ₗᵢ[`:25 R:25 `] `:0 E₂:0 := linear_isometry_equiv (ring_hom.id R) E E₂
174
198
175
199
namespace linear_isometry_equiv
176
200
177
- variables (e : E ≃ₗᵢ[R] F )
201
+ variables (e : E ≃ₛₗᵢ[σ₁₂] E₂ )
178
202
179
- instance : has_coe_to_fun (E ≃ₗᵢ[R] F) := ⟨_, λ f, f.to_fun⟩
203
+ include σ₂₁
204
+ instance : has_coe_to_fun (E ≃ₛₗᵢ[σ₁₂] E₂) := ⟨_, λ f, f.to_fun⟩
180
205
181
- @[simp] lemma coe_mk (e : E ≃ₗ[R] F ) (he : ∀ x, ∥e x∥ = ∥x∥) :
206
+ @[simp] lemma coe_mk (e : E ≃ₛₗ[σ₁₂] E₂ ) (he : ∀ x, ∥e x∥ = ∥x∥) :
182
207
⇑(mk e he) = e :=
183
208
rfl
184
209
185
- @[simp] lemma coe_to_linear_equiv (e : E ≃ₗᵢ[R] F ) : ⇑e.to_linear_equiv = e := rfl
210
+ @[simp] lemma coe_to_linear_equiv (e : E ≃ₛₗᵢ[σ₁₂] E₂ ) : ⇑e.to_linear_equiv = e := rfl
186
211
187
- lemma to_linear_equiv_injective : injective (to_linear_equiv : (E ≃ₗᵢ[R] F ) → (E ≃ₗ[R] F ))
212
+ lemma to_linear_equiv_injective : injective (to_linear_equiv : (E ≃ₛₗᵢ[σ₁₂] E₂ ) → (E ≃ₛₗ[σ₁₂] E₂ ))
188
213
| ⟨e, _⟩ ⟨_, _⟩ rfl := rfl
189
214
190
- @[ext] lemma ext {e e' : E ≃ₗᵢ[R] F } (h : ∀ x, e x = e' x) : e = e' :=
215
+ @[ext] lemma ext {e e' : E ≃ₛₗᵢ[σ₁₂] E₂ } (h : ∀ x, e x = e' x) : e = e' :=
191
216
to_linear_equiv_injective $ linear_equiv.ext h
192
217
193
218
/-- Construct a `linear_isometry_equiv` from a `linear_equiv` and two inequalities:
194
219
`∀ x, ∥e x∥ ≤ ∥x∥` and `∀ y, ∥e.symm y∥ ≤ ∥y∥`. -/
195
- def of_bounds (e : E ≃ₗ[R] F) (h₁ : ∀ x, ∥e x∥ ≤ ∥x∥) (h₂ : ∀ y, ∥e.symm y∥ ≤ ∥y∥) : E ≃ₗᵢ[R] F :=
220
+ def of_bounds (e : E ≃ₛₗ[σ₁₂] E₂) (h₁ : ∀ x, ∥e x∥ ≤ ∥x∥) (h₂ : ∀ y, ∥e.symm y∥ ≤ ∥y∥) :
221
+ E ≃ₛₗᵢ[σ₁₂] E₂ :=
196
222
⟨e, λ x, le_antisymm (h₁ x) $ by simpa only [e.symm_apply_apply] using h₂ (e x)⟩
197
223
198
224
@[simp] lemma norm_map (x : E) : ∥e x∥ = ∥x∥ := e.norm_map' x
199
225
200
226
/-- Reinterpret a `linear_isometry_equiv` as a `linear_isometry`. -/
201
- def to_linear_isometry : E →ₗᵢ[R] F := ⟨e.1 , e.2 ⟩
227
+ def to_linear_isometry : E →ₛₗᵢ[σ₁₂] E₂ := ⟨e.1 , e.2 ⟩
202
228
203
229
@[simp] lemma coe_to_linear_isometry : ⇑e.to_linear_isometry = e := rfl
204
230
205
231
protected lemma isometry : isometry e := e.to_linear_isometry.isometry
206
232
207
233
/-- Reinterpret a `linear_isometry_equiv` as an `isometric`. -/
208
- def to_isometric : E ≃ᵢ F := ⟨e.to_linear_equiv.to_equiv, e.isometry⟩
234
+ def to_isometric : E ≃ᵢ E₂ := ⟨e.to_linear_equiv.to_equiv, e.isometry⟩
209
235
210
236
@[simp] lemma coe_to_isometric : ⇑e.to_isometric = e := rfl
211
237
212
- lemma range_eq_univ (e : E ≃ₗᵢ[R] F ) : set.range e = set.univ :=
238
+ lemma range_eq_univ (e : E ≃ₛₗᵢ[σ₁₂] E₂ ) : set.range e = set.univ :=
213
239
by { rw ← coe_to_isometric, exact isometric.range_eq_univ _, }
214
240
215
241
/-- Reinterpret a `linear_isometry_equiv` as an `homeomorph`. -/
216
- def to_homeomorph : E ≃ₜ F := e.to_isometric.to_homeomorph
242
+ def to_homeomorph : E ≃ₜ E₂ := e.to_isometric.to_homeomorph
217
243
218
244
@[simp] lemma coe_to_homeomorph : ⇑e.to_homeomorph = e := rfl
219
245
@@ -225,12 +251,14 @@ protected lemma continuous_within_at {s x} : continuous_within_at e s x :=
225
251
e.continuous.continuous_within_at
226
252
227
253
/-- Interpret a `linear_isometry_equiv` as a continuous linear equiv. -/
228
- def to_continuous_linear_equiv : E ≃L[R] F :=
254
+ def to_continuous_linear_equiv : E ≃SL[σ₁₂] E₂ :=
229
255
{ .. e.to_linear_isometry.to_continuous_linear_map,
230
256
.. e.to_homeomorph }
231
257
232
258
@[simp] lemma coe_to_continuous_linear_equiv : ⇑e.to_continuous_linear_equiv = e := rfl
233
259
260
+ omit σ₂₁
261
+
234
262
variables (R E)
235
263
236
264
/-- Identity map as a `linear_isometry_equiv`. -/
@@ -243,11 +271,11 @@ instance : inhabited (E ≃ₗᵢ[R] E) := ⟨refl R E⟩
243
271
@[simp] lemma coe_refl : ⇑(refl R E) = id := rfl
244
272
245
273
/-- The inverse `linear_isometry_equiv`. -/
246
- def symm : F ≃ₗᵢ[R ] E :=
274
+ def symm : E₂ ≃ₛₗᵢ[σ₂₁ ] E :=
247
275
⟨e.to_linear_equiv.symm,
248
276
λ x, (e.norm_map _).symm.trans $ congr_arg norm $ e.to_linear_equiv.apply_symm_apply x⟩
249
277
250
- @[simp] lemma apply_symm_apply (x : F ) : e (e.symm x) = x := e.to_linear_equiv.apply_symm_apply x
278
+ @[simp] lemma apply_symm_apply (x : E₂ ) : e (e.symm x) = x := e.to_linear_equiv.apply_symm_apply x
251
279
@[simp] lemma symm_apply_apply (x : E) : e.symm (e x) = x := e.to_linear_equiv.symm_apply_apply x
252
280
@[simp] lemma map_eq_zero_iff {x : E} : e x = 0 ↔ x = 0 := e.to_linear_equiv.map_eq_zero_iff
253
281
@[simp] lemma symm_symm : e.symm.symm = e := ext $ λ x, rfl
@@ -256,23 +284,31 @@ def symm : F ≃ₗᵢ[R] E :=
256
284
@[simp] lemma to_isometric_symm : e.to_isometric.symm = e.symm.to_isometric := rfl
257
285
@[simp] lemma to_homeomorph_symm : e.to_homeomorph.symm = e.symm.to_homeomorph := rfl
258
286
287
+ include σ₃₁ σ₃₂
259
288
/-- Composition of `linear_isometry_equiv`s as a `linear_isometry_equiv`. -/
260
- def trans (e' : F ≃ₗᵢ[R] G ) : E ≃ₗᵢ[R] G :=
289
+ def trans (e' : E₂ ≃ₛₗᵢ[σ₂₃] E₃ ) : E ≃ₛₗᵢ[σ₁₃] E₃ :=
261
290
⟨e.to_linear_equiv.trans e'.to_linear_equiv, λ x, (e'.norm_map _).trans (e.norm_map _)⟩
262
291
263
- @[simp] lemma coe_trans (e₁ : E ≃ₗᵢ[R] F) (e₂ : F ≃ₗᵢ[R] G) : ⇑(e₁.trans e₂) = e₂ ∘ e₁ := rfl
264
- @[simp] lemma trans_refl : e.trans (refl R F) = e := ext $ λ x, rfl
292
+ include σ₁₃ σ₂₁
293
+ @[simp] lemma coe_trans (e₁ : E ≃ₛₗᵢ[σ₁₂] E₂) (e₂ : E₂ ≃ₛₗᵢ[σ₂₃] E₃) : ⇑(e₁.trans e₂) = e₂ ∘ e₁ :=
294
+ rfl
295
+ omit σ₁₃ σ₂₁ σ₃₁ σ₃₂
296
+
297
+ @[simp] lemma trans_refl : e.trans (refl R₂ E₂) = e := ext $ λ x, rfl
265
298
@[simp] lemma refl_trans : (refl R E).trans e = e := ext $ λ x, rfl
266
299
@[simp] lemma trans_symm : e.trans e.symm = refl R E := ext e.symm_apply_apply
267
- @[simp] lemma symm_trans : e.symm.trans e = refl R F := ext e.apply_symm_apply
300
+ @[simp] lemma symm_trans : e.symm.trans e = refl R₂ E₂ := ext e.apply_symm_apply
268
301
269
- @[simp] lemma coe_symm_trans (e₁ : E ≃ₗᵢ[R] F) (e₂ : F ≃ₗᵢ[R] G) :
302
+ include σ₁₃ σ₂₁ σ₃₂ σ₃₁
303
+ @[simp] lemma coe_symm_trans (e₁ : E ≃ₛₗᵢ[σ₁₂] E₂) (e₂ : E₂ ≃ₛₗᵢ[σ₂₃] E₃) :
270
304
⇑(e₁.trans e₂).symm = e₁.symm ∘ e₂.symm :=
271
305
rfl
272
306
273
- lemma trans_assoc (eEF : E ≃ₗᵢ[R] F) (eFG : F ≃ₗᵢ[R] G) (eGG' : G ≃ₗᵢ[R] G') :
274
- eEF.trans (eFG.trans eGG') = (eEF.trans eFG).trans eGG' :=
307
+ include σ₁₄ σ₄₁ σ₄₂ σ₄₃ σ₂₄
308
+ lemma trans_assoc (eEE₂ : E ≃ₛₗᵢ[σ₁₂] E₂) (eE₂E₃ : E₂ ≃ₛₗᵢ[σ₂₃] E₃) (eE₃E₄ : E₃ ≃ₛₗᵢ[σ₃₄] E₄) :
309
+ eEE₂.trans (eE₂E₃.trans eE₃E₄) = (eEE₂.trans eE₂E₃).trans eE₃E₄ :=
275
310
rfl
311
+ omit σ₂₁ σ₃₁ σ₄₁ σ₃₂ σ₄₂ σ₄₃ σ₁₃ σ₂₄ σ₁₄
276
312
277
313
instance : group (E ≃ₗᵢ[R] E) :=
278
314
{ mul := λ e₁ e₂, e₂.trans e₁,
@@ -287,25 +323,32 @@ instance : group (E ≃ₗᵢ[R] E) :=
287
323
@[simp] lemma coe_mul (e e' : E ≃ₗᵢ[R] E) : ⇑(e * e') = e ∘ e' := rfl
288
324
@[simp] lemma coe_inv (e : E ≃ₗᵢ[R] E) : ⇑(e⁻¹) = e.symm := rfl
289
325
326
+ include σ₂₁
327
+
290
328
/-- Reinterpret a `linear_isometry_equiv` as a `continuous_linear_equiv`. -/
291
- instance : has_coe_t (E ≃ₗᵢ[R] F ) (E ≃L[R] F ) :=
329
+ instance : has_coe_t (E ≃ₛₗᵢ[σ₁₂] E₂ ) (E ≃SL[σ₁₂] E₂ ) :=
292
330
⟨λ e, ⟨e.to_linear_equiv, e.continuous, e.to_isometric.symm.continuous⟩⟩
293
331
294
- instance : has_coe_t (E ≃ₗᵢ[R] F ) (E →L[R] F ) := ⟨λ e, ↑(e : E ≃L[R] F )⟩
332
+ instance : has_coe_t (E ≃ₛₗᵢ[σ₁₂] E₂ ) (E →SL[σ₁₂] E₂ ) := ⟨λ e, ↑(e : E ≃SL[σ₁₂] E₂ )⟩
295
333
296
- @[simp] lemma coe_coe : ⇑(e : E ≃L[R] F ) = e := rfl
334
+ @[simp] lemma coe_coe : ⇑(e : E ≃SL[σ₁₂] E₂ ) = e := rfl
297
335
298
- @[simp] lemma coe_coe' : ((e : E ≃L[R] F ) : E →L[R] F ) = e := rfl
336
+ @[simp] lemma coe_coe' : ((e : E ≃SL[σ₁₂] E₂ ) : E →SL[σ₁₂] E₂ ) = e := rfl
299
337
300
- @[simp] lemma coe_coe'' : ⇑(e : E →L[R] F) = e := rfl
338
+ @[simp] lemma coe_coe'' : ⇑(e : E →SL[σ₁₂] E₂) = e := rfl
339
+
340
+ omit σ₂₁
301
341
302
342
@[simp] lemma map_zero : e 0 = 0 := e.1 .map_zero
303
343
304
344
@[simp] lemma map_add (x y : E) : e (x + y) = e x + e y := e.1 .map_add x y
305
345
306
346
@[simp] lemma map_sub (x y : E) : e (x - y) = e x - e y := e.1 .map_sub x y
307
347
308
- @[simp] lemma map_smul (c : R) (x : E) : e (c • x) = c • e x := e.1 .map_smul c x
348
+ @[simp] lemma map_smulₛₗ (c : R) (x : E) : e (c • x) = σ₁₂ c • e x := e.1 .map_smulₛₗ c x
349
+
350
+ @[simp] lemma map_smul [module R E₂] {e : E ≃ₗᵢ[R] E₂} (c : R) (x : E) : e (c • x) = c • e x :=
351
+ e.1 .map_smul c x
309
352
310
353
@[simp] lemma nnnorm_map (x : E) : nnnorm (e x) = nnnorm x := e.to_linear_isometry.nnnorm_map x
311
354
@@ -343,12 +386,14 @@ e.isometry.comp_continuous_on_iff
343
386
continuous (e ∘ f) ↔ continuous f :=
344
387
e.isometry.comp_continuous_iff
345
388
389
+ include σ₂₁
346
390
/-- Construct a linear isometry equiv from a surjective linear isometry. -/
347
- noncomputable def of_surjective (f : E₁ →ₗᵢ[R] F )
391
+ noncomputable def of_surjective (f : F →ₛₗᵢ[σ₁₂] E₂ )
348
392
(hfr : function.surjective f) :
349
- E₁ ≃ₗᵢ[R] F :=
393
+ F ≃ₛₗᵢ[σ₁₂] E₂ :=
350
394
{ norm_map' := f.norm_map,
351
395
.. linear_equiv.of_bijective f.to_linear_map f.injective hfr }
396
+ omit σ₂₁
352
397
353
398
variables (R)
354
399
/-- The negation operation on a normed space `E`, considered as a linear isometry equivalence. -/
0 commit comments