Open Mapping Theorem (Complex)

lean4-proofcomplex-analysisvisualization
f holomorphic, non-constant    f(U) open for every open Uf \text{ holomorphic, non-constant} \implies f(U) \text{ open for every open } U

Statement

Let UCU \subseteq \mathbb{C} be a connected open set and f:UCf : U \to \mathbb{C} holomorphic and non-constant. Then ff is an open map: for every open set VUV \subseteq U, the image f(V)f(V) is open in C\mathbb{C}.

Visualization

f(z)=z2f(z) = z^2 on the unit disk D={z<1}\mathbb{D} = \{|z| < 1\}.

Domain (open disk):                Image f(D):

  Imaginary                          Imaginary
      |                                  |
  -1--+--1   open disk                -1--+--1   open disk
      |       |z| < 1                     |       |w| < 1
      |                                   |

The map zz2z \mapsto z^2 takes every open subset of D\mathbb{D} to an open subset. For example, the upper half-disk {z<1,Im(z)>0}\{|z| < 1, \text{Im}(z) > 0\} maps to {w<1}[0,1)\{|w| < 1\} \setminus [0, 1) — which is open.

Contrast with real analysis: The real map xx2x \mapsto x^2 on (1,1)(-1, 1) maps to [0,1)[0, 1), which is NOT open. Complex holomorphicity is far more rigid.

Real analogy (fails openness):
  (-1, 1) --[x -> x^2]--> [0, 1)   NOT open!
  
Complex version (works):
  D (open) --[z -> z^2]--> D (open)  Open!

Why the difference? The map zz2z \mapsto z^2 wraps angles by 2×2\times, so neighborhoods of z0z_0 map surjectively onto neighborhoods of z02z_0^2. At z0=0z_0 = 0 the map is two-to-one but still locally surjective onto a neighborhood of 00.

Proof Sketch

  1. Suppose ff is non-constant and holomorphic near w0=f(z0)w_0 = f(z_0).
  2. Write f(z)w0=(zz0)mh(z)f(z) - w_0 = (z - z_0)^m h(z) where h(z0)0h(z_0) \ne 0 and m1m \ge 1.
  3. By continuity, hh is non-vanishing near z0z_0, and (zz0)m(z - z_0)^m wraps a small circle around z0z_0 around 00 exactly mm times (winding number mm).
  4. Rouché's theorem shows: for ww0|w - w_0| small enough, f(z)wf(z) - w has exactly mm roots near z0z_0. So every ww near w0w_0 is in f(U)f(U).
  5. Hence f(U)f(U) contains a neighborhood of w0w_0, so f(U)f(U) is open.

Connections

The Open Mapping Theorem immediately gives the Maximum Modulus PrincipleMaximum Modulus PrinciplemaxzUf(z)=maxzUf(z)\max_{z \in \overline{U}} |f(z)| = \max_{z \in \partial U} |f(z)|A non-constant holomorphic function on a connected open set cannot attain its maximum modulus at an interior point.Read more →: if f|f| achieves an interior maximum, then ff maps a neighborhood of that point onto an open set containing f(z0)f(z_0) — but open sets have points with larger modulus, contradiction. The theorem also implies the Fundamental Theorem of AlgebraFundamental Theorem of Algebradegp1,  pC[z]    z0C:p(z0)=0\deg p \geq 1,\; p \in \mathbb{C}[z] \implies \exists z_0 \in \mathbb{C}: p(z_0) = 0Every non-constant polynomial with complex coefficients has at least one root in ℂRead more → (polynomials are open maps on C\mathbb{C}, and C\mathbb{C} is connected, so the image is all of C\mathbb{C}).

Lean4 Proof

import Mathlib.Analysis.Complex.OpenMapping

open AnalyticOnNhd

/-- **Open Mapping Theorem**: a non-constant analytic function on a preconnected
    open set is either constant or an open map.
    Uses `AnalyticOnNhd.is_constant_or_isOpen` from Mathlib. -/
theorem open_mapping_complex {U : Set } {g :   }
    (hg : AnalyticOnNhd  g U)
    (hU : IsPreconnected U) :
    ( c,  z  U, g z = c)  IsOpenMap (U.restrict g) :=
  hg.is_constant_or_isOpen hU