Closed Graph Theorem

lean4-prooffunctional-analysisvisualization
graph(T) closedT continuous\mathrm{graph}(T) \text{ closed} \Rightarrow T \text{ continuous}

Statement

Let EE and FF be Banach spaces and T:EFT : E \to F a linear map. If the graph of TT,

graph(T)={(x,Tx):xE}E×F,\mathrm{graph}(T) = \{(x, Tx) : x \in E\} \subseteq E \times F,

is a closed subset of E×FE \times F, then TT is bounded (continuous).

Closedness of the graph means: whenever xnxx_n \to x in EE and TxnyTx_n \to y in FF, it follows that y=Txy = Tx.

Visualization

Trace the sequence criterion for a 2×22 \times 2 matrix operator T:R2R2T : \mathbb{R}^2 \to \mathbb{R}^2, Tv=AvTv = Av:

Sequence: x_n → x in ℝ²,   T(x_n) → y in ℝ²

x_n = (1 + 1/n, 2 + 1/n)  →  x = (1, 2)

A = <a class="concept-link" data-concept="3, 0], [0, 1">3, 0], [0, 1</a>
T(x_n) = (3 + 3/n, 2 + 1/n)  →  (3, 2) = T(1, 2) = y   ✓

graph(T) closed: (x_n, T(x_n)) → (x, y) and y = Tx ✓
nnxnx_nTxnTx_nlimit
1(2,3)(2, 3)(6,3)(6, 3)
2(1.5,2.5)(1.5, 2.5)(4.5,2.5)(4.5, 2.5)
5(1.2,2.2)(1.2, 2.2)(3.6,2.2)(3.6, 2.2)
\infty(1,2)(1, 2)(3,2)(3, 2)TxTx

The limit point (1,2),(3,2)(1,2), (3,2) lies on the graph: T(1,2)=(3,2)T(1,2) = (3,2). Graph is closed, so TT is continuous.

Contrast: T(x)=1/xT(x) = 1/x on (0,1)(0,1) has a non-closed graph (the point (0,)(0, \infty) is a limit not in the graph), and TT is not continuous at 00.

Proof Sketch

  1. Product Banach space. E×FE \times F with norm (x,y)=max(x,y)\|(x,y)\| = \max(\|x\|, \|y\|) is a Banach space.
  2. Graph is a subspace. G=graph(T)G = \mathrm{graph}(T) is a linear subspace of E×FE \times F.
  3. GG is complete. A closed subspace of a Banach space is itself a Banach space (complete).
  4. Projection maps. The projection π1:GE\pi_1 : G \to E, π1(x,Tx)=x\pi_1(x, Tx) = x, is a bijective bounded linear map.
  5. Open Mapping Theorem. π1\pi_1 is bijective between Banach spaces, so by the Open Mapping TheoremOpen Mapping Theorem (Banach)T:EF bounded, surjectiveT is an open mapT : E \twoheadrightarrow F \text{ bounded, surjective} \Rightarrow T \text{ is an open map}A surjective bounded linear map between Banach spaces maps open sets to open setsRead more →, its inverse π11:EG\pi_1^{-1} : E \to G is bounded.
  6. Continuity of TT. Write T=π2π11T = \pi_2 \circ \pi_1^{-1}; both factors are bounded.

Connections

  • Open Mapping Theorem (Banach)Open Mapping Theorem (Banach)T:EF bounded, surjectiveT is an open mapT : E \twoheadrightarrow F \text{ bounded, surjective} \Rightarrow T \text{ is an open map}A surjective bounded linear map between Banach spaces maps open sets to open setsRead more → — the Closed Graph Theorem is deduced directly from it via the projection argument.
  • Hahn–Banach TheoremHahn–Banach Theoremg:ER,  gp=f,  g=f\exists\, g : E \to \mathbb{R},\; g|_p = f,\; \|g\| = \|f\|A bounded linear functional on a subspace of a normed space extends to the whole space with the same normRead more → — together with the Open Mapping Theorem and Uniform Boundedness, these four results form the four pillars of functional analysis.
  • Bolzano–Weierstrass TheoremBolzano–Weierstrass Theorembounded (xn)Rn    convergent subsequence\text{bounded } (x_n) \subseteq \mathbb{R}^n \implies \exists\, \text{convergent subsequence}Every bounded sequence in ℝⁿ has a convergent subsequenceRead more → — the sequential characterisation of closed sets used here is the infinite-dimensional cousin of Bolzano–Weierstrass convergence.
  • Spectral TheoremSpectral TheoremA=QΛQT  (real symmetric case)A = Q \Lambda Q^T \;\text{(real symmetric case)}Every real symmetric matrix is orthogonally diagonalizableRead more → — the Closed Graph Theorem ensures that many unbounded operators (e.g., differential operators with closed graph) still admit spectral decompositions.

Lean4 Proof

import Mathlib.Analysis.Normed.Operator.Banach

/-- **Closed Graph Theorem**: a linear map with closed graph between Banach spaces is continuous.
    Direct alias of `LinearMap.continuous_of_isClosed_graph` in Mathlib. -/
theorem closed_graph_theorem {E F : Type*}
    [NormedAddCommGroup E] [NormedSpace  E] [CompleteSpace E]
    [NormedAddCommGroup F] [NormedSpace  F] [CompleteSpace F]
    (g : E ₗ[] F) (hg : IsClosed (g.graph : Set (E × F))) :
    Continuous g :=
  g.continuous_of_isClosed_graph hg