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
: iff
has an invertible derivativef'
ata
in the strict sense (hf
), thenhf.local_inverse f f' a
has derivativef'.symm
atf a
in the strict sense;has_strict_fderiv_at.to_local_left_inverse
: iff
has an invertible derivativef'
ata
in the strict sense andg
is locally left inverse tof
neara
, theng
has derivativef'.symm
atf a
in the strict sense.
In the one-dimensional case we reformulate these theorems in terms of has_strict_deriv_at
and
f'โปยน
. Some other versions of the theorem assuming that we already know the inverse function are
formulated in fderiv.lean
and deriv.lean
Notations
In the section about approximates_linear_on
we introduce some local notation
to make formulas
shorter:
- by
N
we denoteโฅf'โปยนโฅ
; - by
g
we 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, inverse function
Non-linear maps approximating 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 equivalence and c < โฅf'โปยนโฅ
. Maps of this type
behave like f a + f' (x - a)
near each a โ s
.
If E
is a complete space, we prove that the image f '' s
is open, and 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 โ G
with 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.
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.
Now we prove that f '' s
is an open set. This follows from the fact that the restriction of f
on s
is an open map. More precisely, we show that the image of a closed ball $$\bar B(a, ฮต) โ s$$
under f
includes the closed ball $$\bar B\left(f(a), frac{ฮต}{โฅ{f'}โปยนโฅโปยน-c}\right)$$.
In order to do this, we introduce an auxiliary map $$g_y(x) = x + {f'}โปยน (y - f x)$$. Provided that
$$โฅy - f aโฅ โค frac{ฮต}{โฅ{f'}โปยนโฅโปยน-c}$$, we prove that $$g_y$$ contracts in $$\bar B(a, ฮต)$$ and f
sends the fixed point of $$g_y$$ to y
.
Iterations of this map converge to fโปยน y
. The formula is very similar to the one
used in Newton's method, but we use the same f'.symm
for all y
instead of evaluating
the derivative at each point along the orbit.
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 := _}
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_2 _
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
.
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 _