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

Commit 09f6989

Browse files
committed
chore(analysis/normed_space/banach): move more to the continuous_linear_map NS (#11263)
## Rename * `open_mapping` → `continuous_linear_map.is_open_map`; * `open_mapping_affine` → `affine_map.is_open_map`; ### New lemmas * `continuous_linear_map.quotient_map`, * `continuous_linear_map.interior_preimage`, * `continuous_linear_map.closure_preimage`, * `continuous_linear_map.frontier_preimage`.
1 parent 60e279b commit 09f6989

File tree

4 files changed

+37
-20
lines changed

4 files changed

+37
-20
lines changed

docs/overview.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ Analysis:
248248
finite dimensional normed spaces over complete normed fields are complete: 'submodule.complete_of_finite_dimensional'
249249
Heine-Borel theorem (finite dimensional normed spaces are proper): 'finite_dimensional.proper'
250250
norm of a continuous linear map: 'linear_map.mk_continuous'
251-
Banach open mapping theorem: 'open_mapping'
251+
Banach open mapping theorem: 'continuous_linear_map.is_open_map'
252252
absolutely convergent series in Banach spaces: 'summable_of_summable_norm'
253253
Hahn-Banach theorem: 'exists_extension_norm_eq'
254254
dual of a normed space: 'normed_space.dual'

docs/undergrad.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ Topology:
413413
Normed vector spaces on $\R$ and $\C$:
414414
topology on a normed vector space: 'semi_normed_space.has_bounded_smul'
415415
equivalent norms: ''
416-
Banach open mapping theorem: 'open_mapping'
416+
Banach open mapping theorem: 'continuous_linear_map.is_open_map'
417417
equivalence of norms in finite dimension: 'linear_equiv.to_continuous_linear_equiv'
418418
norms $\lVert\cdot\rVert_p$ on $\R^n$ and $\C^n$: 'pi_Lp.normed_space'
419419
absolutely convergent series in Banach spaces: 'summable_of_summable_norm'

src/analysis/normed_space/add_torsor_bases.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ variables (b : affine_basis ι 𝕜 P)
3232

3333
@[continuity]
3434
lemma continuous_barycentric_coord (i : ι) : continuous (b.coord i) :=
35-
affine_map.continuous_of_finite_dimensional _
35+
(b.coord i).continuous_of_finite_dimensional
3636

3737
local attribute [instance] finite_dimensional.complete
3838

3939
lemma is_open_map_barycentric_coord [nontrivial ι] (i : ι) :
4040
is_open_map (b.coord i) :=
41-
open_mapping_affine (continuous_barycentric_coord b i) (b.surjective_coord i)
41+
(b.coord i).is_open_map (continuous_barycentric_coord b i) (b.surjective_coord i)
4242

4343
end barycentric
4444

src/analysis/normed_space/banach.lean

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ noncomputable instance (f : E ≃L[𝕜] F) :
6464

6565
variable [complete_space F]
6666

67+
namespace continuous_linear_map
6768
/--
6869
First step of the proof of the Banach open mapping theorem (using completeness of `F`):
6970
by Baire's theorem, there exists a ball in `E` whose image closure has nonempty interior.
@@ -194,14 +195,14 @@ begin
194195
... = 2 * C * ∥y∥ : by rw [tsum_geometric_two, mul_assoc]
195196
... ≤ 2 * C * ∥y∥ + ∥y∥ : le_add_of_nonneg_right (norm_nonneg y)
196197
... = (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,
198199
{ assume n,
199200
induction n with n IH,
200201
{ simp [f.map_zero] },
201202
{ 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) :=
203204
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)) :=
205206
(f.continuous.tendsto _).comp this,
206207
simp only [fsumeq] at L₁,
207208
have L₂ : tendsto (λn, y - (h^[n]) y) at_top (𝓝 (y - 0)),
@@ -218,7 +219,7 @@ end
218219

219220
/-- The Banach open mapping theorem: a surjective bounded linear map between Banach spaces is
220221
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 :=
222223
begin
223224
assume s hs,
224225
rcases exists_preimage_norm_le f surj with ⟨C, Cpos, hC⟩,
@@ -240,20 +241,30 @@ begin
240241
exact set.mem_image_of_mem _ (hε this)
241242
end
242243

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*}
244248
[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) :
246250
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)
253254

254255
/-! ### Applications of the Banach open mapping theorem -/
255256

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
257268

258269
lemma exists_nonlinear_right_inverse_of_surjective (f : E →L[𝕜] F) (hsurj : f.range = ⊤) :
259270
∃ (fsymm : nonlinear_right_inverse f), 0 < fsymm.nnnorm :=
@@ -285,6 +296,8 @@ end continuous_linear_map
285296

286297
namespace linear_equiv
287298

299+
variables [complete_space E]
300+
288301
/-- If a bounded linear map is a bijection, then its inverse is also a bounded linear map. -/
289302
@[continuity]
290303
theorem continuous_symm (e : E ≃ₗ[𝕜] F) (h : continuous e) :
@@ -294,7 +307,7 @@ begin
294307
intros s hs,
295308
rw [← e.image_eq_preimage],
296309
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
298311
end
299312

300313
/-- Associating to a linear equivalence between Banach spaces a continuous linear equivalence when
@@ -317,7 +330,9 @@ end linear_equiv
317330

318331
namespace continuous_linear_equiv
319332

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
321336
to a continuous linear equivalence. -/
322337
noncomputable def of_bijective (f : E →L[𝕜] F) (hinj : f.ker = ⊥) (hsurj : f.range = ⊤) :
323338
E ≃L[𝕜] F :=
@@ -344,6 +359,8 @@ end continuous_linear_equiv
344359

345360
namespace continuous_linear_map
346361

362+
variables [complete_space E]
363+
347364
/-- Intermediate definition used to show
348365
`continuous_linear_map.closed_complemented_range_of_is_compl_of_ker_eq_bot`.
349366
@@ -375,7 +392,7 @@ lemma closed_complemented_range_of_is_compl_of_ker_eq_bot (f : E →L[𝕜] F) (
375392
(h : is_compl f.range G) (hG : is_closed (G : set F)) (hker : f.ker = ⊥) :
376393
is_closed (f.range : set F) :=
377394
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,
379396
let g := coprod_subtypeL_equiv_of_is_compl f h hker,
380397
rw congr_arg coe (range_eq_map_coprod_subtypeL_equiv_of_is_compl f h hker ),
381398
apply g.to_homeomorph.is_closed_image.2,

0 commit comments

Comments
 (0)