Documentation

Mathlib.Analysis.Calculus.FDeriv.OfCompLeft

Inverse function theorem, the "easy half" #

In this file we prove several versions of the following theorem. Consider three functions f : F โ†’ G, g : E โ†’ F, and h : E โ†’ G, together with "candidate derivatives" f' : F โ†’L[๐•œ] G, g' : E โ†’L[๐•œ] F, and h' : E โ†’L[๐•œ] G. Suppose that

Then g has derivative g' at a. We prove these theorems for different differentiability predicates, then specialize it to the cases when f' is a linear equivalence and/or h = id.

Left inverse #

In this section, we prove that g has derivative f'โปยน โˆ˜ h' whenever h = f โˆ˜ g has derivative h' and f'โปยน is a left inverse to f'.

theorem HasFDerivAtFilter.of_comp_of_leftInverse {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] [NormedAddCommGroup G] [NormedSpace ๐•œ G] {g : E โ†’ F} {f : F โ†’ G} {h : E โ†’ G} {f' : F โ†’L[๐•œ] G} {h' : E โ†’L[๐•œ] G} {f'symm : G โ†’L[๐•œ] F} {lE : Filter (E ร— E)} {lF : Filter (F ร— F)} (hg : Filter.Tendsto (Prod.map g g) lE lF) (hf : HasFDerivAtFilter f f' lF) (hh : HasFDerivAtFilter h h' lE) (hcomp : Prod.map (f โˆ˜ g) (f โˆ˜ g) =แถ [lE] Prod.map h h) (hf'symm : Function.LeftInverse โ‡‘f'symm โ‡‘f') :
HasFDerivAtFilter g (f'symm โˆ˜SL h') lE
theorem HasFDerivWithinAt.of_comp_of_leftInverse {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] [NormedAddCommGroup G] [NormedSpace ๐•œ G] {g : E โ†’ F} {f : F โ†’ G} {h : E โ†’ G} {f' : F โ†’L[๐•œ] G} {h' : E โ†’L[๐•œ] G} {f'symm : G โ†’L[๐•œ] F} {a : E} {s : Set E} {t : Set F} (hst : Filter.Tendsto g (nhdsWithin a s) (nhdsWithin (g a) t)) (hf : HasFDerivWithinAt f f' t (g a)) (hh : HasFDerivWithinAt h h' s a) (hcomp : f โˆ˜ g =แถ [nhdsWithin a s] h) (hf'symm : Function.LeftInverse โ‡‘f'symm โ‡‘f') (ha : a โˆˆ s) :
HasFDerivWithinAt g (f'symm โˆ˜SL h') s a
theorem HasFDerivAt.of_comp_of_leftInverse {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] [NormedAddCommGroup G] [NormedSpace ๐•œ G] {g : E โ†’ F} {f : F โ†’ G} {h : E โ†’ G} {f' : F โ†’L[๐•œ] G} {h' : E โ†’L[๐•œ] G} {f'symm : G โ†’L[๐•œ] F} {a : E} (hgc : ContinuousAt g a) (hf : HasFDerivAt f f' (g a)) (hh : HasFDerivAt h h' a) (hcomp : f โˆ˜ g =แถ [nhds a] h) (hf'symm : Function.LeftInverse โ‡‘f'symm โ‡‘f') :
HasFDerivAt g (f'symm โˆ˜SL h') a
theorem HasStrictFDerivAt.of_comp_of_leftInverse {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] [NormedAddCommGroup G] [NormedSpace ๐•œ G] {g : E โ†’ F} {f : F โ†’ G} {h : E โ†’ G} {f' : F โ†’L[๐•œ] G} {h' : E โ†’L[๐•œ] G} {f'symm : G โ†’L[๐•œ] F} {a : E} (hgc : ContinuousAt g a) (hf : HasStrictFDerivAt f f' (g a)) (hh : HasStrictFDerivAt h h' a) (hcomp : f โˆ˜ g =แถ [nhds a] h) (hf'symm : Function.LeftInverse โ‡‘f'symm โ‡‘f') :

Embedding #

In this section we show that g has derivative g' provided that h = f โˆ˜ g has derivative f' โˆ˜ g', where f' is a topological embedding.

theorem HasFDerivAtFilter.of_comp_of_isEmbedding {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] [NormedAddCommGroup G] [NormedSpace ๐•œ G] {g : E โ†’ F} {f : F โ†’ G} {h : E โ†’ G} {g' : E โ†’L[๐•œ] F} {f' : F โ†’L[๐•œ] G} {lE : Filter (E ร— E)} {lF : Filter (F ร— F)} (hg : Filter.Tendsto (Prod.map g g) lE lF) (hf : HasFDerivAtFilter f f' lF) (hf' : Topology.IsEmbedding โ‡‘f') (hh : HasFDerivAtFilter h (f' โˆ˜SL g') lE) (hcomp : Prod.map (f โˆ˜ g) (f โˆ˜ g) =แถ [lE] Prod.map h h) :
theorem HasFDerivWithinAt.of_comp_of_isEmbedding {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] [NormedAddCommGroup G] [NormedSpace ๐•œ G] {g : E โ†’ F} {f : F โ†’ G} {h : E โ†’ G} {g' : E โ†’L[๐•œ] F} {f' : F โ†’L[๐•œ] G} {a : E} {s : Set E} {t : Set F} (hg : Filter.Tendsto g (nhdsWithin a s) (nhdsWithin (g a) t)) (hf : HasFDerivWithinAt f f' t (g a)) (hf' : Topology.IsEmbedding โ‡‘f') (hh : HasFDerivWithinAt h (f' โˆ˜SL g') s a) (hcomp : f โˆ˜ g =แถ [nhdsWithin a s] h) (ha : a โˆˆ s) :
theorem HasFDerivAt.of_comp_of_isEmbedding {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] [NormedAddCommGroup G] [NormedSpace ๐•œ G] {g : E โ†’ F} {f : F โ†’ G} {h : E โ†’ G} {g' : E โ†’L[๐•œ] F} {f' : F โ†’L[๐•œ] G} {a : E} (hg : ContinuousAt g a) (hf : HasFDerivAt f f' (g a)) (hf' : Topology.IsEmbedding โ‡‘f') (hh : HasFDerivAt h (f' โˆ˜SL g') a) (hcomp : f โˆ˜ g =แถ [nhds a] h) :
theorem HasStrictFDerivAt.of_comp_of_isEmbedding {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] [NormedAddCommGroup G] [NormedSpace ๐•œ G] {g : E โ†’ F} {f : F โ†’ G} {h : E โ†’ G} {g' : E โ†’L[๐•œ] F} {f' : F โ†’L[๐•œ] G} {a : E} (hg : ContinuousAt g a) (hf : HasStrictFDerivAt f f' (g a)) (hf' : Topology.IsEmbedding โ‡‘f') (hh : HasStrictFDerivAt h (f' โˆ˜SL g') a) (hcomp : f โˆ˜ g =แถ [nhds a] h) :

Local left inverse (equivalence) #

theorem HasFDerivAt.of_local_left_inverse {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {g : E โ†’ F} {f : F โ†’ E} {f' : F โ‰ƒL[๐•œ] E} {a : E} (hg : ContinuousAt g a) (hf : HasFDerivAt f (โ†‘f') (g a)) (hfg : โˆ€แถ  (y : E) in nhds a, f (g y) = y) :
HasFDerivAt g (โ†‘f'.symm) a

If f (g x) = x for x in some neighborhood of a, g is continuous at a, and f has an invertible derivative f' at g a, then g has the derivative f'โปยน at a.

This is one of the easy parts of the inverse function theorem: it assumes that we already have an inverse function.

theorem HasFDerivWithinAt.of_local_left_inverse {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {g : E โ†’ F} {f : F โ†’ E} {f' : F โ‰ƒL[๐•œ] E} {a : E} {s : Set E} {t : Set F} (hg : Filter.Tendsto g (nhdsWithin a s) (nhdsWithin (g a) t)) (hf : HasFDerivWithinAt f (โ†‘f') t (g a)) (ha : a โˆˆ s) (hfg : โˆ€แถ  (x : E) in nhdsWithin a s, f (g x) = x) :
HasFDerivWithinAt g (โ†‘f'.symm) s a

If f (g x) = x for x in a neighborhood of a within s, g maps a neighborhood of a within s to a neighborhood of g a within t, and f has an invertible derivative f' at g a within t, then g has the derivative f'โปยน at a within s.

This is one of the easy parts of the inverse function theorem: it assumes that we already have an inverse function.

theorem HasStrictFDerivAt.of_local_left_inverse {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {f : E โ†’ F} {f' : E โ‰ƒL[๐•œ] F} {g : F โ†’ E} {a : F} (hg : ContinuousAt g a) (hf : HasStrictFDerivAt f (โ†‘f') (g a)) (hfg : โˆ€แถ  (y : F) in nhds a, f (g y) = y) :
HasStrictFDerivAt g (โ†‘f'.symm) a

If f (g y) = y for y in some neighborhood of a, g is continuous at a, and f has an invertible derivative f' at g a in the strict sense, then g has the derivative f'โปยน at a in the strict sense.

This is one of the easy parts of the inverse function theorem: it assumes that we already have an inverse function.

theorem OpenPartialHomeomorph.hasStrictFDerivAt_symm {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] (f : OpenPartialHomeomorph E F) {f' : E โ‰ƒL[๐•œ] F} {a : F} (ha : a โˆˆ f.target) (htff' : HasStrictFDerivAt (โ†‘f) (โ†‘f') (โ†‘f.symm a)) :
HasStrictFDerivAt (โ†‘f.symm) (โ†‘f'.symm) a

If f is an open partial homeomorphism defined on a neighbourhood of f.symm a, and f has an invertible derivative f' in the sense of strict differentiability at f.symm a, then f.symm has the derivative f'โปยน at a.

This is one of the easy parts of the inverse function theorem: it assumes that we already have an inverse function.

theorem OpenPartialHomeomorph.hasFDerivAt_symm {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField ๐•œ] [NormedAddCommGroup E] [NormedSpace ๐•œ E] [NormedAddCommGroup F] [NormedSpace ๐•œ F] (f : OpenPartialHomeomorph E F) {f' : E โ‰ƒL[๐•œ] F} {a : F} (ha : a โˆˆ f.target) (htff' : HasFDerivAt (โ†‘f) (โ†‘f') (โ†‘f.symm a)) :
HasFDerivAt (โ†‘f.symm) (โ†‘f'.symm) a

If f is an open partial homeomorphism defined on a neighbourhood of f.symm a, and f has an invertible derivative f' at f.symm a, then f.symm has the derivative f'โปยน at a.

This is one of the easy parts of the inverse function theorem: it assumes that we already have an inverse function.