Open Mapping Theorem (Complex)
Statement
Let be a connected open set and holomorphic and non-constant. Then is an open map: for every open set , the image is open in .
Visualization
on the unit disk .
Domain (open disk): Image f(D):
Imaginary Imaginary
| |
-1--+--1 open disk -1--+--1 open disk
| |z| < 1 | |w| < 1
| |
The map takes every open subset of to an open subset. For example, the upper half-disk maps to — which is open.
Contrast with real analysis: The real map on maps to , 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 wraps angles by , so neighborhoods of map surjectively onto neighborhoods of . At the map is two-to-one but still locally surjective onto a neighborhood of .
Proof Sketch
- Suppose is non-constant and holomorphic near .
- Write where and .
- By continuity, is non-vanishing near , and wraps a small circle around around exactly times (winding number ).
- Rouché's theorem shows: for small enough, has exactly roots near . So every near is in .
- Hence contains a neighborhood of , so is open.
Connections
The Open Mapping Theorem immediately gives the Maximum Modulus PrincipleMaximum Modulus PrincipleA non-constant holomorphic function on a connected open set cannot attain its maximum modulus at an interior point.Read more →: if achieves an interior maximum, then maps a neighborhood of that point onto an open set containing — but open sets have points with larger modulus, contradiction. The theorem also implies the Fundamental Theorem of AlgebraFundamental Theorem of AlgebraEvery non-constant polynomial with complex coefficients has at least one root in ℂRead more → (polynomials are open maps on , and is connected, so the image is all of ).
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