@@ -64,6 +64,7 @@ noncomputable instance (f : E ≃L[𝕜] F) :
64
64
65
65
variable [complete_space F]
66
66
67
+ namespace continuous_linear_map
67
68
/--
68
69
First step of the proof of the Banach open mapping theorem (using completeness of `F`):
69
70
by Baire's theorem, there exists a ball in `E` whose image closure has nonempty interior.
@@ -194,14 +195,14 @@ begin
194
195
... = 2 * C * ∥y∥ : by rw [tsum_geometric_two, mul_assoc]
195
196
... ≤ 2 * C * ∥y∥ + ∥y∥ : le_add_of_nonneg_right (norm_nonneg y)
196
197
... = (2 * C + 1 ) * ∥y∥ : by ring,
197
- have fsumeq : ∀n:ℕ, f (∑ i in range n, u i) = y - (h^[n]) y,
198
+ have fsumeq : ∀n:ℕ, f (∑ i in finset. range n, u i) = y - (h^[n]) y,
198
199
{ assume n,
199
200
induction n with n IH,
200
201
{ simp [f.map_zero] },
201
202
{ rw [sum_range_succ, f.map_add, IH, iterate_succ', sub_add] } },
202
- have : tendsto (λn, ∑ i in range n, u i) at_top (𝓝 x) :=
203
+ have : tendsto (λn, ∑ i in finset. range n, u i) at_top (𝓝 x) :=
203
204
su.has_sum.tendsto_sum_nat,
204
- have L₁ : tendsto (λn, f (∑ i in range n, u i)) at_top (𝓝 (f x)) :=
205
+ have L₁ : tendsto (λn, f (∑ i in finset. range n, u i)) at_top (𝓝 (f x)) :=
205
206
(f.continuous.tendsto _).comp this ,
206
207
simp only [fsumeq] at L₁,
207
208
have L₂ : tendsto (λn, y - (h^[n]) y) at_top (𝓝 (y - 0 )),
218
219
219
220
/-- The Banach open mapping theorem: a surjective bounded linear map between Banach spaces is
220
221
open. -/
221
- theorem open_mapping (surj : surjective f) : is_open_map f :=
222
+ protected theorem is_open_map (surj : surjective f) : is_open_map f :=
222
223
begin
223
224
assume s hs,
224
225
rcases exists_preimage_norm_le f surj with ⟨C, Cpos, hC⟩,
@@ -240,20 +241,30 @@ begin
240
241
exact set.mem_image_of_mem _ (hε this )
241
242
end
242
243
243
- lemma open_mapping_affine {P Q : Type *}
244
+ protected theorem quotient_map (surj : surjective f) : quotient_map f :=
245
+ (f.is_open_map surj).to_quotient_map f.continuous surj
246
+
247
+ lemma _root_.affine_map.is_open_map {P Q : Type *}
244
248
[metric_space P] [normed_add_torsor E P] [metric_space Q] [normed_add_torsor F Q]
245
- { f : P →ᵃ[𝕜] Q} (hf : continuous f) (surj : surjective f) :
249
+ ( f : P →ᵃ[𝕜] Q) (hf : continuous f) (surj : surjective f) :
246
250
is_open_map f :=
247
- begin
248
- rw ← affine_map.is_open_map_linear_iff,
249
- exact open_mapping
250
- { cont := affine_map.continuous_linear_iff.mpr hf, .. f.linear }
251
- (f.surjective_iff_linear_surjective.mpr surj),
252
- end
251
+ affine_map.is_open_map_linear_iff.mp $ continuous_linear_map.is_open_map
252
+ { cont := affine_map.continuous_linear_iff.mpr hf, .. f.linear }
253
+ (f.surjective_iff_linear_surjective.mpr surj)
253
254
254
255
/-! ### Applications of the Banach open mapping theorem -/
255
256
256
- namespace continuous_linear_map
257
+ lemma interior_preimage (hsurj : surjective f) (s : set F) :
258
+ interior (f ⁻¹' s) = f ⁻¹' (interior s) :=
259
+ ((f.is_open_map hsurj).preimage_interior_eq_interior_preimage f.continuous s).symm
260
+
261
+ lemma closure_preimage (hsurj : surjective f) (s : set F) :
262
+ closure (f ⁻¹' s) = f ⁻¹' (closure s) :=
263
+ ((f.is_open_map hsurj).preimage_closure_eq_closure_preimage f.continuous s).symm
264
+
265
+ lemma frontier_preimage (hsurj : surjective f) (s : set F) :
266
+ frontier (f ⁻¹' s) = f ⁻¹' (frontier s) :=
267
+ ((f.is_open_map hsurj).preimage_frontier_eq_frontier_preimage f.continuous s).symm
257
268
258
269
lemma exists_nonlinear_right_inverse_of_surjective (f : E →L[𝕜] F) (hsurj : f.range = ⊤) :
259
270
∃ (fsymm : nonlinear_right_inverse f), 0 < fsymm.nnnorm :=
@@ -285,6 +296,8 @@ end continuous_linear_map
285
296
286
297
namespace linear_equiv
287
298
299
+ variables [complete_space E]
300
+
288
301
/-- If a bounded linear map is a bijection, then its inverse is also a bounded linear map. -/
289
302
@[continuity]
290
303
theorem continuous_symm (e : E ≃ₗ[𝕜] F) (h : continuous e) :
@@ -294,7 +307,7 @@ begin
294
307
intros s hs,
295
308
rw [← e.image_eq_preimage],
296
309
rw [← e.coe_coe] at h ⊢,
297
- exact open_mapping ⟨↑e, h⟩ e.surjective s hs
310
+ exact continuous_linear_map.is_open_map ⟨↑e, h⟩ e.surjective s hs
298
311
end
299
312
300
313
/-- Associating to a linear equivalence between Banach spaces a continuous linear equivalence when
@@ -317,7 +330,9 @@ end linear_equiv
317
330
318
331
namespace continuous_linear_equiv
319
332
320
- /-- Convert a bijective continuous linear map `f : E →L[𝕜] F` between two Banach spaces
333
+ variables [complete_space E]
334
+
335
+ /-- Convert a bijective continuous linear map `f : E →L[𝕜] F` from a Banach space to a normed space
321
336
to a continuous linear equivalence. -/
322
337
noncomputable def of_bijective (f : E →L[𝕜] F) (hinj : f.ker = ⊥) (hsurj : f.range = ⊤) :
323
338
E ≃L[𝕜] F :=
@@ -344,6 +359,8 @@ end continuous_linear_equiv
344
359
345
360
namespace continuous_linear_map
346
361
362
+ variables [complete_space E]
363
+
347
364
/-- Intermediate definition used to show
348
365
`continuous_linear_map.closed_complemented_range_of_is_compl_of_ker_eq_bot`.
349
366
@@ -375,7 +392,7 @@ lemma closed_complemented_range_of_is_compl_of_ker_eq_bot (f : E →L[𝕜] F) (
375
392
(h : is_compl f.range G) (hG : is_closed (G : set F)) (hker : f.ker = ⊥) :
376
393
is_closed (f.range : set F) :=
377
394
begin
378
- haveI : complete_space G := complete_space_coe_iff_is_complete. 2 hG.is_complete ,
395
+ haveI : complete_space G := hG.complete_space_coe ,
379
396
let g := coprod_subtypeL_equiv_of_is_compl f h hker,
380
397
rw congr_arg coe (range_eq_map_coprod_subtypeL_equiv_of_is_compl f h hker ),
381
398
apply g.to_homeomorph.is_closed_image.2 ,
0 commit comments