[proofplan]
We embed the sequence into the bidual via the canonical isometry $\phi: X \to X^{**}$ and apply the Uniform Boundedness Principle to the family $\{\phi(x_n)\}_{n=1}^\infty \subset X^{**} = \mathcal{L}(X^*, \mathbb{R})$. [Weak convergence](/page/Weak%20Convergence) gives pointwise boundedness of this family on $X^*$, the Uniform Boundedness Principle (which requires completeness of $X^*$, always satisfied for a [dual space](/page/Dual%20Space)) promotes this to uniform boundedness in operator norm, and the isometry property $\|\phi(x_n)\|_{X^{**}} = \|x_n\|_X$ transfers the bound back to $X$.
[/proofplan]
[step:Embed the sequence into the bidual via the canonical isometry]
Define the canonical embedding
\begin{align*}
\phi: X &\to X^{**} \\
x &\mapsto \phi(x), \quad \text{where } \phi(x)(f) := f(x) \text{ for all } f \in X^*.
\end{align*}
By the [Canonical Embedding into the Bidual is an Isometry](/theorems/875), the map $\phi$ satisfies $\|\phi(x)\|_{X^{**}} = \|x\|_X$ for every $x \in X$. Each $\phi(x_n)$ is a bounded linear functional on $X^*$, so $\phi(x_n) \in X^{**} = \mathcal{L}(X^*, \mathbb{R})$.
[guided]
The idea is to view elements of $X$ as operators on $X^*$. Each $x \in X$ defines a linear functional on $X^*$ by the evaluation map $f \mapsto f(x)$. This is the canonical embedding $\phi: X \to X^{**}$.
Why is this useful? The Uniform Boundedness Principle applies to families of [bounded linear operators](/page/Linear%20Operators%20on%20Banach%20Spaces) between [Banach spaces](/page/Banach%20Space). The elements $x_n \in X$ are not operators, but their images $\phi(x_n) \in X^{**}$ are: each $\phi(x_n)$ is a bounded linear functional on $X^*$.
By the [Canonical Embedding into the Bidual is an Isometry](/theorems/875), $\phi$ preserves norms: $\|\phi(x_n)\|_{X^{**}} = \|x_n\|_X$. This means any bound on $\|\phi(x_n)\|_{X^{**}}$ translates directly to a bound on $\|x_n\|_X$, which is exactly what we want to prove.
[/guided]
[/step]
[step:Verify pointwise boundedness of the family $\{\phi(x_n)\}$ on $X^*$]
We claim that the family $\{\phi(x_n)\}_{n=1}^\infty \subset \mathcal{L}(X^*, \mathbb{R})$ is pointwise bounded. Fix $f \in X^*$. Since $x_n \rightharpoonup x$, the [Sequential Characterisation of Weak Convergence](/theorems/255) gives $f(x_n) \to f(x)$ as $n \to \infty$. Every convergent sequence in $\mathbb{R}$ is bounded, so
\begin{align*}
\sup_{n \in \mathbb{N}} |\phi(x_n)(f)| = \sup_{n \in \mathbb{N}} |f(x_n)| < \infty.
\end{align*}
Since $f \in X^*$ was arbitrary, the family $\{\phi(x_n)\}_{n=1}^\infty$ is pointwise bounded on $X^*$.
[guided]
The weak convergence hypothesis $x_n \rightharpoonup x$ means, by the [Sequential Characterisation of Weak Convergence](/theorems/255), that $f(x_n) \to f(x)$ for every $f \in X^*$.
For each fixed $f$, the sequence $\{f(x_n)\}_{n=1}^\infty$ is a convergent sequence of real numbers (with limit $f(x)$), hence bounded. In the language of the bidual, this says $|\phi(x_n)(f)| = |f(x_n)| \le M_f$ for some $M_f < \infty$ depending on $f$.
This is the pointwise boundedness condition: for each $f \in X^*$, $\sup_n |\phi(x_n)(f)| < \infty$. The bound $M_f$ depends on $f$ — different functionals may see different bounds. The Uniform Boundedness Principle will unify these into a single bound independent of $f$.
[/guided]
[/step]
[step:Apply the Uniform Boundedness Principle to obtain a uniform bound in operator norm]
The dual space $X^*$ is a Banach space (the dual of any [normed space](/page/Normed%20Vector%20Space) is complete). The family $\{\phi(x_n)\}_{n=1}^\infty \subset \mathcal{L}(X^*, \mathbb{R})$ consists of bounded [linear operators](/page/Linear%20Map) from the Banach space $X^*$ to the normed space $\mathbb{R}$, and this family is pointwise bounded by the previous step.
By the [Uniform Boundedness Principle](/theorems/549) — whose hypotheses are satisfied since $X^*$ is a Banach space (completeness of the domain), $\mathbb{R}$ is a normed space, and the family is pointwise bounded — we conclude
\begin{align*}
\sup_{n \in \mathbb{N}} \|\phi(x_n)\|_{X^{**}} < \infty.
\end{align*}
[guided]
The [Uniform Boundedness Principle](/theorems/549) requires three conditions:
1. The domain is a Banach space,
2. The codomain is a normed space,
3. The family of operators is pointwise bounded.
We verify each. The domain is $X^*$, which is a Banach space because the dual of any normed space is complete (this is a standard result: if $\{f_n\}$ is Cauchy in $X^*$, then $\{f_n(x)\}$ is Cauchy in $\mathbb{R}$ for each $x$, so $f(x) := \lim f_n(x)$ defines a bounded linear functional, and $f_n \to f$ in norm). The codomain is $\mathbb{R}$, which is a normed space. Pointwise boundedness was established in the previous step.
The conclusion of the Uniform Boundedness Principle is
\begin{align*}
\sup_{n \in \mathbb{N}} \|\phi(x_n)\|_{\mathcal{L}(X^*, \mathbb{R})} = \sup_{n \in \mathbb{N}} \|\phi(x_n)\|_{X^{**}} < \infty.
\end{align*}
This is the crucial upgrade: from "bounded at each point" to "bounded uniformly over the entire unit ball of $X^*$." The Uniform Boundedness Principle is the engine that makes this promotion possible, and it relies essentially on the Baire Category Theorem applied to $X^*$.
Note that we applied the Uniform Boundedness Principle to $X^*$, not to $X$. This is why the theorem statement requires $X$ to be a Banach space — not directly for the Uniform Boundedness Principle (which needs completeness of the domain of the operators), but because the operators live in $X^{**} = \mathcal{L}(X^*, \mathbb{R})$, and $X^*$ is always complete regardless. However, completeness of $X$ is used implicitly: the [weak topology](/page/Weak%20Topology) and its convergence properties are better-behaved in Banach spaces (for instance, the weak limit $x$ is guaranteed to exist in $X$).
[/guided]
[/step]
[step:Transfer the bidual bound back to $X$ via the isometry]
By the [Canonical Embedding into the Bidual is an Isometry](/theorems/875), $\|\phi(x_n)\|_{X^{**}} = \|x_n\|_X$ for each $n \in \mathbb{N}$. Therefore
\begin{align*}
\sup_{n \in \mathbb{N}} \|x_n\|_X = \sup_{n \in \mathbb{N}} \|\phi(x_n)\|_{X^{**}} < \infty.
\end{align*}
[guided]
The isometry property of the canonical embedding is what closes the argument. Since $\|\phi(x_n)\|_{X^{**}} = \|x_n\|_X$ for each $n$, the uniform bound on the bidual norms immediately becomes a uniform bound on the original norms:
\begin{align*}
\sup_{n \in \mathbb{N}} \|x_n\|_X = \sup_{n \in \mathbb{N}} \|\phi(x_n)\|_{X^{**}} < \infty.
\end{align*}
This completes the proof that $\{x_n\}$ is bounded in $X$.
It is worth noting the logical flow: we never used completeness of $X$ directly. We used completeness of $X^*$ (which holds for any normed $X$) to apply the Uniform Boundedness Principle, and the isometry of $\phi$ (which also holds for any normed $X$) to transfer the bound. The hypothesis that $X$ is a Banach space is consumed in the statement's assumption that $x_n \rightharpoonup x$ with $x \in X$ — in a non-complete space, a weakly [Cauchy sequence](/page/Cauchy%20Sequence) might not have a weak limit in $X$.
[/guided]
[/step]