Uniform Boundedness Principle

lean4-prooffunctional-analysisvisualization
supnTnx<  (x)supnTn<\sup_n \|T_n x\| < \infty\;(\forall x) \Rightarrow \sup_n \|T_n\| < \infty

Statement

(Banach–Steinhaus Theorem.) Let EE be a Banach space, FF a normed space, and {Tι}ιI\{T_\iota\}_{\iota \in I} a family of bounded linear operators Tι:EFT_\iota : E \to F. If

supιITιx<for every xE,\sup_{\iota \in I} \|T_\iota x\| < \infty \quad \text{for every } x \in E,

then the operator norms are uniformly bounded:

supιITι<.\sup_{\iota \in I} \|T_\iota\| < \infty.

Pointwise boundedness (a condition on each vector xx) automatically upgrades to a uniform bound on all operators.

Visualization

Counterexample anatomy — why completeness is essential. On c00c_{00} (finitely supported sequences, incomplete), define Tn(x)=nxnT_n(x) = n x_n:

x = (x₁, x₂, x₃, ...) ∈ c₀₀

T_n(x) = n · x_n

Pointwise: for each fixed x, only finitely many x_n ≠ 0,
           so sup_n |T_n(x)| = sup_n n|x_n| < ∞.

But ‖T_n‖ = n → ∞.   (Not uniformly bounded!)

On a complete space this cannot happen. Numerical trace on 2\ell^2 with a convergent family:

nnTnT_n (truncation to first nn coords)Tnx\|T_n x\| for x=(1/k2)x = (1/k^2)Tn\|T_n\|
1(x1,0,0,)(x_1, 0, 0, \ldots)1111
2(x1,x2,0,)(x_1, x_2, 0, \ldots)1+1/16\sqrt{1 + 1/16}11
5projection to 5 coordsk=15k4\sqrt{\sum_{k=1}^5 k^{-4}}11
\inftyidentityπ2/6\pi^2/611

Here supnTn=1<\sup_n \|T_n\| = 1 < \infty, consistent with UBP. The principle would fire if any supnTnx\sup_n \|T_n x\| were infinite — on a Banach space that cannot happen pointwise.

Proof Sketch

  1. Define sets. For each M>0M > 0 let AM={xE:supιTιxM}A_M = \{x \in E : \sup_\iota \|T_\iota x\| \le M\}.
  2. Closed sets. Each AMA_M is closed (intersection of closed sets {x:TιxM}\{x : \|T_\iota x\| \le M\}).
  3. Baire's theorem. Since E=MNAME = \bigcup_{M \in \mathbb{N}} A_M and EE is complete, some AMA_M has non-empty interior: Br(x0)AMB_r(x_0) \subseteq A_M.
  4. Symmetry trick. For any yBr(0)y \in B_r(0) and any ι\iota:
TιyTι(y+x0)+Tιx0M+M=2M.\|T_\iota y\| \le \|T_\iota(y + x_0)\| + \|T_\iota x_0\| \le M + M = 2M.
  1. Scale. Any xx with x1\|x\| \le 1 can be rescaled into Br(0)B_r(0), giving Tιx2M/r\|T_\iota x\| \le 2M/r for all ι\iota.

Connections

  • Closed Graph TheoremClosed Graph Theoremgraph(T) closedT continuous\mathrm{graph}(T) \text{ closed} \Rightarrow T \text{ continuous}A linear map between Banach spaces with closed graph is automatically continuousRead more → — both theorems use Baire's category theorem on Banach spaces; UBP uses it for a family, Closed Graph for a single operator.
  • Cauchy–Schwarz InequalityCauchy–Schwarz Inequalityu,vuv|\langle u, v \rangle| \leq \|u\| \, \|v\|The inner product of two vectors is bounded by the product of their normsRead more → — in Hilbert spaces, uniform boundedness combines with Cauchy–Schwarz to bound sesquilinear forms.
  • Spectral Radius FormulaSpectral Radius Formular(a)=limnan1/nr(a) = \lim_{n\to\infty} \|a^n\|^{1/n}The spectral radius equals the limit of the nth root of the operator norm of the nth power (Gelfand's formula)Read more → — operator norms bounded by the spectral radius formula (Gelfand) give a quantitative form of UBP for Banach algebras.
  • Monotone Convergence TheoremMonotone Convergence Theoremf monotone,  supnf(n)<    f(n)supnf(n)f \text{ monotone},\; \sup_n f(n) < \infty \implies f(n) \to \sup_n f(n)A bounded monotone sequence of reals always converges — the supremum is the limitRead more → — in measure theory, both MCT and UBP serve as "upgrade" theorems: pointwise properties become uniform ones.

Lean4 Proof

import Mathlib.Analysis.Normed.Operator.BanachSteinhaus

/-- **Banach–Steinhaus / Uniform Boundedness Principle**:
    a pointwise-bounded family of continuous linear maps on a Banach space
    has uniformly bounded norms. Direct alias of `banach_steinhaus`. -/
theorem uniform_boundedness_principle {ι : Type*} {E F : Type*}
    [SeminormedAddCommGroup E] [NormedSpace  E] [CompleteSpace E]
    [SeminormedAddCommGroup F] [NormedSpace  F]
    (g : ι  E L[] F)
    (h :  x, BddAbove (Set.range fun i => ‖g i x‖)) :
    BddAbove (Set.range fun i => ‖g i‖) :=
  banach_steinhaus h