Inverse function theorem #
In this file we prove the inverse function theorem. It says that if a map f : E → F
has an invertible strict derivative f' at a, then it is locally invertible,
and the inverse function has derivative f' ⁻¹.
We define has_strict_deriv_at.to_local_homeomorph that repacks a function f
with a hf : has_strict_fderiv_at f f' a, f' : E ≃L[𝕜] F, into a local_homeomorph.
The to_fun of this local_homeomorph is defeq to f, so one can apply theorems
about local_homeomorph to hf.to_local_homeomorph f, and get statements about f.
Then we define has_strict_fderiv_at.local_inverse to be the inv_fun of this local_homeomorph,
and prove two versions of the inverse function theorem:
-
has_strict_fderiv_at.to_local_inverse: iffhas an invertible derivativef'atain the strict sense (hf), thenhf.local_inverse f f' ahas derivativef'.symmatf ain the strict sense; -
has_strict_fderiv_at.to_local_left_inverse: iffhas an invertible derivativef'atain the strict sense andgis locally left inverse tofneara, thenghas derivativef'.symmatf ain the strict sense.
In the one-dimensional case we reformulate these theorems in terms of has_strict_deriv_at and
f'⁻¹.
We also reformulate the theorems in terms of cont_diff, to give that C^k (respectively,
smooth) inputs give C^k (smooth) inverses. These versions require that continuous
differentiability implies strict differentiability; this is false over a general field, true over
ℝ or ℂ and implemented here assuming is_R_or_C 𝕂.
Some related theorems, providing the derivative and higher regularity assuming that we already know
the inverse function, are formulated in fderiv.lean, deriv.lean, and cont_diff.lean.
Notations #
In the section about approximates_linear_on we introduce some local notation to make formulas
shorter:
- by
Nwe denote∥f'⁻¹∥; - by
gwe denote the auxiliary contracting mapx ↦ x + f'.symm (y - f x)used to prove that{x | f x = y}is nonempty.
Tags #
derivative, strictly differentiable, continuously differentiable, smooth, inverse function
Non-linear maps close to affine maps #
In this section we study a map f such that ∥f x - f y - f' (x - y)∥ ≤ c * ∥x - y∥ on an open set
s, where f' : E →L[𝕜] F is a continuous linear map and c is suitably small. Maps of this type
behave like f a + f' (x - a) near each a ∈ s.
When f' is onto, we show that f is locally onto.
When f' is a continuous linear equiv, we show that f is a homeomorphism
between s and f '' s. More precisely, we define approximates_linear_on.to_local_homeomorph to
be a local_homeomorph with to_fun = f, source = s, and target = f '' s.
Maps of this type naturally appear in the proof of the inverse function theorem (see next section),
and approximates_linear_on.to_local_homeomorph will imply that the locally inverse function
exists.
We define this auxiliary notion to split the proof of the inverse function theorem into small lemmas. This approach makes it possible
-
to prove a lower estimate on the size of the domain of the inverse function;
-
to reuse parts of the proofs in the case if a function is not strictly differentiable. E.g., for a function
f : E × F → Gwith estimates onf x y₁ - f x y₂but not onf x₁ y - f x₂ y.
We say that f approximates a continuous linear map f' on s with constant c,
if ∥f x - f y - f' (x - y)∥ ≤ c * ∥x - y∥ whenever x, y ∈ s.
This predicate is defined to facilitate the splitting of the inverse function theorem into small lemmas. Some of these lemmas can be useful, e.g., to prove that the inverse function is defined on a specific set.
First we prove some properties of a function that approximates_linear_on a (not necessarily
invertible) continuous linear map.
Alias of the reverse direction of approximates_linear_on.approximates_linear_on_iff_lipschitz_on_with.
Alias of the forward direction of approximates_linear_on.approximates_linear_on_iff_lipschitz_on_with.
We prove that a function which is linearly approximated by a continuous linear map with a nonlinear right inverse is locally onto. This will apply to the case where the approximating map is a linear equivalence, for the local inverse theorem, but also whenever the approximating map is onto, by Banach's open mapping theorem.
If a function is linearly approximated by a continuous linear map with a (possibly nonlinear) right inverse, then it is locally onto: a ball of an explicit radius is included in the image of the map.
From now on we assume that f approximates an invertible continuous linear map f : E ≃L[𝕜] F.
We also assume that either E = {0}, or c < ∥f'⁻¹∥⁻¹. We use N as an abbreviation for ∥f'⁻¹∥.
A map approximating a linear equivalence on a set defines a local equivalence on this set.
Should not be used outside of this file, because it is superseded by to_local_homeomorph below.
This is a first step towards the inverse function.
Equations
- hf.to_local_equiv hc = set.inj_on.to_local_equiv f s _
The inverse function is continuous on f '' s. Use properties of local_homeomorph instead.
The inverse function is approximated linearly on f '' s by f'.symm.
Given a function f that approximates a linear equivalence on an open set s,
returns a local homeomorph with to_fun = f and source = s.
Equations
- approximates_linear_on.to_local_homeomorph f s hf hc hs = {to_local_equiv := hf.to_local_equiv hc, open_source := hs, open_target := _, continuous_to_fun := _, continuous_inv_fun := _}
A function f that approximates a linear equivalence on the whole space is a homeomorphism.
Equations
- approximates_linear_on.to_homeomorph f hf hc = (approximates_linear_on.to_local_homeomorph f set.univ hf hc approximates_linear_on.to_homeomorph._proof_27).to_homeomorph_of_source_eq_univ_target_eq_univ _ _
In a real vector space, a function f that approximates a linear equivalence on a subset s
can be extended to a homeomorphism of the whole space.
Inverse function theorem #
Now we prove the inverse function theorem. Let f : E → F be a map defined on a complete vector
space E. Assume that f has an invertible derivative f' : E ≃L[𝕜] F at a : E in the strict
sense. Then f approximates f' in the sense of approximates_linear_on on an open neighborhood
of a, and we can apply approximates_linear_on.to_local_homeomorph to construct the inverse
function.
If f has derivative f' at a in the strict sense and c > 0, then f approximates f'
with constant c on some neighborhood of a.
Given a function with an invertible strict derivative at a, returns a local_homeomorph
with to_fun = f and a ∈ source. This is a part of the inverse function theorem.
The other part has_strict_fderiv_at.to_local_inverse states that the inverse function
of this local_homeomorph has derivative f'.symm.
Equations
- has_strict_fderiv_at.to_local_homeomorph f hf = approximates_linear_on.to_local_homeomorph f (classical.some _) _ has_strict_fderiv_at.to_local_homeomorph._proof_21 _
Given a function f with an invertible derivative, returns a function that is locally inverse
to f.
Equations
- has_strict_fderiv_at.local_inverse f f' a hf = ⇑((has_strict_fderiv_at.to_local_homeomorph f hf).symm)
If f has an invertible derivative f' at a in the sense of strict differentiability (hf),
then the inverse function hf.local_inverse f has derivative f'.symm at f a.
If f : E → F has an invertible derivative f' at a in the sense of strict differentiability
and g (f x) = x in a neighborhood of a, then g has derivative f'.symm at f a.
For a version assuming f (g y) = y and continuity of g at f a but not [complete_space E]
see of_local_left_inverse.
If a function has an invertible strict derivative at all points, then it is an open map.
Inverse function theorem, 1D case #
In this case we prove a version of the inverse function theorem for maps f : 𝕜 → 𝕜.
We use continuous_linear_equiv.units_equiv_aut to translate has_strict_deriv_at f f' a and
f' ≠ 0 into has_strict_fderiv_at f (_ : 𝕜 ≃L[𝕜] 𝕜) a.
A function that is inverse to f near a.
Equations
- has_strict_deriv_at.local_inverse f f' a hf hf' = has_strict_fderiv_at.local_inverse f (⇑(continuous_linear_equiv.units_equiv_aut 𝕜) (units.mk0 f' hf')) a _
If a function has a non-zero strict derivative at all points, then it is an open map.
Inverse function theorem, smooth case #
Given a cont_diff function over 𝕂 (which is ℝ or ℂ) with an invertible
derivative at a, returns a local_homeomorph with to_fun = f and a ∈ source.
Equations
Given a cont_diff function over 𝕂 (which is ℝ or ℂ) with an invertible derivative
at a, returns a function that is locally inverse to f.
Equations
- hf.local_inverse hf' hn = has_strict_fderiv_at.local_inverse f f' a _
Given a cont_diff function over 𝕂 (which is ℝ or ℂ) with an invertible derivative
at a, the inverse function (produced by cont_diff.to_local_homeomorph) is
also cont_diff.