@@ -5,13 +5,7 @@ Authors: Michael Rothgang
55-/
66module
77
8- public import Mathlib.Algebra.Order.BigOperators.Expect
9- public import Mathlib.Algebra.Order.Field.Power
10- public import Mathlib.Data.EReal.Inv
11- public import Mathlib.Data.Real.Sqrt
12- public import Mathlib.Logic.Equiv.PartialEquiv
13- public import Mathlib.Tactic.ContinuousFunctionalCalculus
14- public import Mathlib.Tactic.Positivity
8+ public import Mathlib.Analysis.Normed.Operator.Banach
159public import Mathlib.Topology.Algebra.Module.FiniteDimension
1610
1711/-! # Continuous linear maps with a continuous left/right inverse
@@ -23,6 +17,12 @@ linear equivalences, and a sufficient criterion in finite dimension: a surjectiv
2317finite-dimensional space always admits a continuous right inverse; an injective linear map on a
2418finite-dimensional space always admits a continuous left inverse.
2519
20+ We also prove an equivalent characterisation of admitting a continuous left inverse: `f` admits a
21+ continuous left inverse if and only if it is injective, has closed range and its range admits a
22+ closed complement. This characterisation is used to extract a complement from immersions, for use
23+ in the regular value theorem. (For submersions, there is a natural choice of complement, and an
24+ analogous statement is not necessary.)
25+
2626This concept is used to give an equivalent definition of immersions and submersions of manifolds.
2727
2828## Main definitions and results
@@ -31,6 +31,16 @@ This concept is used to give an equivalent definition of immersions and submersi
3131 which is a continuous linear map itself
3232* `ContinuousLinearMap.HasRightInverse`: a continuous linear map admits a right inverse
3333 which is a continuous linear map itself
34+
35+ * `ContinuousLinearMap.HasLeftInverse.isClosed_range`: if `f` has a continuous left inverse,
36+ its range is closed
37+ * `ContinuousLinearMap.HasLeftInverse.closedComplemented_range`: if `f` has a continuous left
38+ inverse, its range admits a closed complement
39+ * `ContinuousLinearMap.HasLeftInverse.complement`: a choice of closed complement for `range f`
40+ * `ContinuousLinearMap.HasLeftInverse.of_injective_of_isClosed_range_of_closedComplement_range`:
41+ if `f` is injective and has closed range with a closed complement, it admits a continuous left
42+ inverse
43+
3444* `ContinuousLinearEquiv.hasRightInverse` and `ContinuousLinearEquiv.hasRightInverse`:
3545 a continuous linear equivalence admits a continuous left (resp. right) inverse
3646* `ContinuousLinearMap.HasLeftInverse.comp`, `ContinuousLinearMap.HasRightInverse.comp`:
@@ -56,8 +66,6 @@ This concept is used to give an equivalent definition of immersions and submersi
5666* Suppose `E` and `F` are Banach and `f : E → F` is Fredholm.
5767 If `f` is surjective, it has a continuous right inverse.
5868 If `f` is injective, it has a continuout left inverse.
59- * `f` has a continuous left inverse if and only if it is injective, has closed range,
60- and its range admits a closed complement
6169
6270 -/
6371
@@ -185,6 +193,72 @@ lemma of_injective_of_finiteDimensional [CompleteSpace 𝕜] [FiniteDimensional
185193
186194end NontriviallyNormedField
187195
196+ /-! An equivalent characterisation of maps with a continuous left inverse -/
197+ section Ring
198+
199+ -- The next lemmas assume we are working over a ring.
200+ variable {R E E' F F' G : Type *} [Ring R]
201+ [TopologicalSpace E] [AddCommGroup E] [Module R E]
202+ [TopologicalSpace F] [AddCommGroup F] [Module R F] {f : E →L[R] F}
203+
204+ /-- If `f` has a continuous left inverse, its range admits a closed complement. -/
205+ lemma closedComplemented_range (hf : f.HasLeftInverse) : Submodule.ClosedComplemented f.range := by
206+ -- Idea of proof: let g be a left inverse for f. Then ker g is a closed subspace of F,
207+ -- and a complement to range f.
208+ -- Mathlib's definition of closed complement takes a continuous projection to f.range instead
209+ -- of a complementary subspace: consider `f.comp g` instead, which is continuous as both maps are,
210+ -- and idempotent as a continuous left inverse.
211+ use (f.comp hf.leftInverse).codRestrict f.range (by intro y; simp)
212+ rintro ⟨y, x, rfl⟩
213+ ext
214+ simp only [coe_coe, coe_codRestrict_apply, coe_comp', Function.comp_apply]
215+ rw [hf.leftInverse_leftInverse]
216+
217+ section
218+
219+ variable [T1Space F]
220+
221+ lemma isClosed_range (hf : f.HasLeftInverse) [IsTopologicalAddGroup F] :
222+ IsClosed (range f) := by
223+ -- `range f = ker (f ∘ g - id)` is closed since `f ∘ g - id` is continuous.
224+ rw [← f.range_toLinearMap, ← f.coe_range,
225+ f.range_eq_ker_of_leftInverse (hf.leftInverse_leftInverse)]
226+ exact ((f.comp hf.leftInverse) - (ContinuousLinearMap.id R F)).isClosed_ker
227+
228+ /-- Choice of a closed complement of `range f` -/
229+ def complement (h : f.HasLeftInverse) : Submodule R F :=
230+ h.closedComplemented_range.complement
231+
232+ lemma isClosed_complement (h : f.HasLeftInverse) : IsClosed (X := F) h.complement :=
233+ h.closedComplemented_range.isClosed_complement
234+
235+ lemma isCompl_complement (h : f.HasLeftInverse) : IsCompl f.range h.complement :=
236+ h.closedComplemented_range.isCompl_complement
237+
238+ end
239+
240+ end Ring
241+
242+ section
243+
244+ variable {R E F : Type *} [NontriviallyNormedField R]
245+ [NormedAddCommGroup E] [NormedSpace R E] [CompleteSpace E]
246+ [NormedAddCommGroup F] [NormedSpace R F] [CompleteSpace F]
247+
248+ /-- A continuous linear map between Banach spaces has a continuous left inverse if it isjective,
249+ has closed range and its range has a closed complement. -/
250+ lemma of_injective_of_isClosed_range_of_closedComplement_range {f : E →L[R] F}
251+ (hf : Injective f) (hf' : IsClosed (range f)) (hf'' : Submodule.ClosedComplemented f.range) :
252+ f.HasLeftInverse := by
253+ have : (f.rangeRestrict).ker = ⊥ := by
254+ rw [ker_codRestrict]; exact LinearMap.ker_eq_bot.mpr hf
255+ -- We compose the continuous inverse of `f : E → range f` with the projection `p : F → range f`.
256+ obtain ⟨p, hp⟩ := hf''
257+ refine ⟨(f.leftInverse_of_injective_of_isClosed_range hf hf').comp p, fun x ↦ ?_⟩
258+ simpa [hp ⟨f x, by simp⟩] using f.rangeRestrict.leftInverse_apply_of_inj this x
259+
260+ end
261+
188262end HasLeftInverse
189263
190264namespace HasRightInverse
@@ -214,7 +288,7 @@ lemma _root_.ContinuousLinearEquiv.hasRightInverse (f : E ≃L[R] F) :
214288 ext y
215289 exact f.injective <| by simpa using f.hasRightInverse.rightInverse_rightInverse y
216290
217- /-- An invertible continuous linear map splits . -/
291+ /-- An invertible continuous linear map has a continuous right inverse . -/
218292lemma of_isInvertible (hf : IsInvertible f) : f.HasRightInverse := by
219293 obtain ⟨e, rfl⟩ := hf
220294 exact e.hasRightInverse
0 commit comments