Implicit Function Theorem

lean4-proofcalculusvisualization
F(x0,y0)=0,  yF invertible    y=φ(x) locallyF(x_0,y_0)=0,\;\partial_y F\text{ invertible}\implies y=\varphi(x)\text{ locally}

Statement

Let F:Rn×RmRmF : \mathbb{R}^n \times \mathbb{R}^m \to \mathbb{R}^m be continuously differentiable near (x0,y0)(x_0, y_0) with F(x0,y0)=0F(x_0, y_0) = 0. If the partial derivative yF(x0,y0)\partial_y F(x_0, y_0) is an invertible linear map, then there exist open neighborhoods Ux0U \ni x_0 and Vy0V \ni y_0 and a unique C1C^1 function φ:UV\varphi : U \to V such that

F(x,φ(x))=0for all xUF(x, \varphi(x)) = 0 \quad \text{for all } x \in U

Moreover φ(x0)=y0\varphi(x_0) = y_0 and the derivative of φ\varphi is given by

Dφ(x)=(yF(x,φ(x)))1xF(x,φ(x))D\varphi(x) = -(\partial_y F(x, \varphi(x)))^{-1} \circ \partial_x F(x, \varphi(x))

Visualization

Example: F(x,y)=x2+y21=0F(x, y) = x^2 + y^2 - 1 = 0 (unit circle) near (0,1)(0, 1).

Here yF=2y\partial_y F = 2y, which at (0,1)(0, 1) gives 202 \neq 0 (invertible). The IFT guarantees y=φ(x)y = \varphi(x) locally. Indeed φ(x)=1x2\varphi(x) = \sqrt{1 - x^2} near x=0x = 0:

  y
  1 |        *         ← (0,1): varphi(0)=1
    |      *   *
    |    *       *     ← implicit curve x²+y²=1
    |  *           *
  0 |*               *
    +-+--+--+--+--+--+-
     -1  0           1   x
xxφ(x)=1x2\varphi(x) = \sqrt{1-x^2}φ(x)=x/1x2\varphi'(x) = -x/\sqrt{1-x^2}
0.01.0000.000
0.30.9540.314-0.314
0.60.8000.750-0.750

The derivative formula: φ(x)=xFyF=2x2φ(x)=xφ(x)\varphi'(x) = -\frac{\partial_x F}{\partial_y F} = -\frac{2x}{2\varphi(x)} = -\frac{x}{\varphi(x)}, matching x/1x2-x/\sqrt{1-x^2}.

Proof Sketch

  1. Reduce to IFT: Define Φ(x,y)=(x,F(x,y))\Phi(x, y) = (x, F(x, y)). Then DΦ(x0,y0)D\Phi(x_0, y_0) is block-triangular with blocks id\mathrm{id} and yF(x0,y0)\partial_y F(x_0, y_0), hence invertible.
  2. Apply Inverse Function Theorem: Φ\Phi is a local C1C^1 diffeomorphism near (x0,y0)(x_0, y_0). Its local inverse Φ1\Phi^{-1} takes (x,0)(x,φ(x))(x, 0) \mapsto (x, \varphi(x)) for the implicit function φ\varphi.
  3. Uniqueness: If F(x,y)=0=F(x,y)F(x, y) = 0 = F(x, y') in a small enough neighborhood, the contracting-map argument shows y=yy = y'.
  4. Derivative formula: Differentiating F(x,φ(x))=0F(x, \varphi(x)) = 0 by the Chain Rule gives the formula for DφD\varphi.

Connections

  • Inverse Function TheoremInverse Function Theoremf(a)0    g:  g(f(x))=x near af'(a)\neq 0\implies\exists\,g:\;g(f(x))=x\text{ near }aA smooth map with invertible derivative at a point is locally a diffeomorphismRead more → — the IFT is a direct consequence: apply the IFT to Φ(x,y)=(x,F(x,y))\Phi(x,y) = (x, F(x,y))
  • Chain RuleChain Ruleddx[f(g(x))]=f(g(x))g(x)\frac{d}{dx}[f(g(x))] = f'(g(x)) \cdot g'(x)Differentiate composite functions by peeling layersRead more → — differentiating F(x,φ(x))=0F(x, \varphi(x)) = 0 implicitly uses the chain rule to derive DφD\varphi
  • Cauchy's Mean Value TheoremCauchy's Mean Value Theoremc(a,b):  (g(b)g(a))f(c)=(f(b)f(a))g(c)\exists\,c\in(a,b):\;(g(b)-g(a))f'(c)=(f(b)-f(a))g'(c)A two-function generalization of the Mean Value Theorem relating derivative ratios to function value ratiosRead more → — related MVT machinery underlies the local diffeomorphism step in the proof

Lean4 Proof

import Mathlib.Analysis.Calculus.ImplicitContDiff

-- We state the smooth implicit function theorem using Mathlib's `IsContDiffImplicitAt`.
-- For F : E × F → G with invertible partial derivative in F at (a, b),
-- Mathlib provides `IsContDiffImplicitAt.implicitFunction` satisfying F(x, phi(x)) = 0 locally.

/-- The smooth Implicit Function Theorem: given F(a,b)=0 and invertible partial derivative,
    there exists a local smooth implicit function. This aliases Mathlib's framework. -/
theorem implicit_function_theorem
    {E F G : Type*}
    [NormedAddCommGroup E] [NormedSpace  E]
    [NormedAddCommGroup F] [NormedSpace  F] [CompleteSpace F]
    [NormedAddCommGroup G] [NormedSpace  G]
    {n : ∞} {f : E × F  G} {f' : E × F L[] G} {a : E × F}
    (h : IsContDiffImplicitAt n f f' a) :
    ᶠ x in nhds a.1, f (x, h.implicitFunction x) = f a := by
  exact h.map_implicitFunction_eq