[proofplan]
The real case follows immediately from the [Real Hahn-Banach Theorem](/theorems/2627): a semi-norm is positively homogeneous and subadditive, and $g \le |g| \le p$ produces a real-linear extension $f \le p$, after which symmetry of the semi-norm upgrades $f \le p$ to $|f| \le p$. The complex case is reduced to the real case via the Bohnenblust-Sobczyk identity $f(x) = f_1(x) - i f_1(ix)$, which expresses any $\mathbb{C}$-linear functional through its real part. Applying the real Hahn-Banach theorem to $\operatorname{Re}(g)$ yields a real-linear extension $f_1$, and the identity defines a complex-linear extension $f$. The bound $|f(x)| \le p(x)$ is recovered by rotating $x$ by a unit phase $\lambda$ that aligns $f(x)$ with the real axis.
[/proofplan]
[step:Treat the real case via direct application of the Real Hahn-Banach Theorem]
Suppose $\mathbb{F} = \mathbb{R}$. A semi-norm $p$ satisfies $p(\lambda x) = |\lambda| p(x)$ for all $\lambda \in \mathbb{R}$, $x \in X$, and the triangle inequality $p(x + y) \le p(x) + p(y)$. In particular $p$ is positively homogeneous (taking $\lambda \ge 0$) and subadditive. The hypothesis gives $g(y) \le |g(y)| \le p(y)$ for all $y \in Y$, so the [Real Hahn-Banach Theorem](/theorems/2627) — whose hypotheses (positive homogeneity, subadditivity, real subspace, dominated linear $g$) are all met — yields a real-linear extension $f: X \to \mathbb{R}$ of $g$ with
\begin{align*}
f(x) \le p(x) \qquad \text{for all } x \in X.
\end{align*}
To upgrade this to $|f(x)| \le p(x)$, evaluate at $-x$: linearity of $f$ gives $f(-x) = -f(x)$, while a semi-norm satisfies $p(-x) = |-1| p(x) = p(x)$. So
\begin{align*}
-f(x) = f(-x) \le p(-x) = p(x),
\end{align*}
i.e. $f(x) \ge -p(x)$. Combining, $|f(x)| \le p(x)$ for all $x \in X$. This proves the theorem in the real case.
[/step]
[step:Reduce the complex case to the real case via the real-part construction]
Now suppose $\mathbb{F} = \mathbb{C}$. The vector space $X$ may also be regarded as a real vector space (by restriction of scalars). Every $\mathbb{C}$-linear functional $f: X \to \mathbb{C}$ decomposes as
\begin{align*}
f(x) = f_1(x) + i f_2(x), \qquad f_1, f_2: X \to \mathbb{R} \text{ are } \mathbb{R}\text{-linear},
\end{align*}
where $f_1 = \operatorname{Re}(f)$, $f_2 = \operatorname{Im}(f)$. The constraint of complex linearity gives $f(ix) = i f(x)$, i.e.
\begin{align*}
f_1(ix) + i f_2(ix) = i\bigl(f_1(x) + i f_2(x)\bigr) = -f_2(x) + i f_1(x).
\end{align*}
Equating real parts: $f_1(ix) = -f_2(x)$, i.e. $f_2(x) = -f_1(ix)$. Substituting into the decomposition yields the **Bohnenblust-Sobczyk identity**
\begin{align*}
f(x) = f_1(x) - i f_1(ix), \qquad f_1 = \operatorname{Re}(f).
\end{align*}
Conversely, given any $\mathbb{R}$-linear $f_1: X \to \mathbb{R}$, the formula $f(x) := f_1(x) - i f_1(ix)$ defines a $\mathbb{C}$-linear functional with real part $f_1$, as we verify in the next step.
[guided]
A complex-linear functional satisfies the strong constraint $f(ix) = i f(x)$, which couples the real and imaginary parts of $f$. We are looking for a way to apply the *real* Hahn-Banach theorem to the complex problem. The natural strategy is to reduce a complex linear functional to a single real-valued object — its real part — and recover the imaginary part from the linearity constraint.
Writing $f = f_1 + i f_2$ with $f_1, f_2$ real-linear, the equation $f(ix) = i f(x)$ becomes
\begin{align*}
f_1(ix) + i f_2(ix) = i f_1(x) - f_2(x),
\end{align*}
and equating real parts gives $f_2(x) = -f_1(ix)$. So the imaginary part is determined by the real part via the action of multiplication by $i$ on the underlying real vector space. Substituting back:
\begin{align*}
f(x) = f_1(x) - i f_1(ix),
\end{align*}
the **Bohnenblust-Sobczyk identity**. The crucial observation is that this is a *bijection* between $\mathbb{R}$-linear functionals $X \to \mathbb{R}$ and $\mathbb{C}$-linear functionals $X \to \mathbb{C}$. So we have reduced the existence of a $\mathbb{C}$-linear extension of $g$ to the existence of an $\mathbb{R}$-linear extension of $\operatorname{Re}(g)$.
[/guided]
[/step]
[step:Apply the real case to $\operatorname{Re}(g)$ and define the complex extension via the Bohnenblust-Sobczyk identity]
Define
\begin{align*}
g_1: Y &\to \mathbb{R}, \\
y &\mapsto \operatorname{Re}(g(y)).
\end{align*}
Since $g$ is $\mathbb{C}$-linear, $g_1$ is $\mathbb{R}$-linear (regarding $Y$ as a real subspace of $X$). Moreover
\begin{align*}
|g_1(y)| = |\operatorname{Re}(g(y))| \le |g(y)| \le p(y) \qquad \text{for all } y \in Y.
\end{align*}
By the real case (proved in the first step), there exists an $\mathbb{R}$-linear extension $f_1: X \to \mathbb{R}$ of $g_1$ with $|f_1(x)| \le p(x)$ for all $x \in X$. Define
\begin{align*}
f: X &\to \mathbb{C}, \\
x &\mapsto f_1(x) - i f_1(ix).
\end{align*}
We verify three properties.
**$f$ is $\mathbb{C}$-linear.** Real linearity in $x$ is inherited from $\mathbb{R}$-linearity of $f_1$. For multiplication by $i$:
\begin{align*}
f(ix) = f_1(ix) - i f_1(i \cdot ix) = f_1(ix) - i f_1(-x) = f_1(ix) + i f_1(x) = i\bigl(f_1(x) - i f_1(ix)\bigr) = i f(x),
\end{align*}
using $\mathbb{R}$-linearity of $f_1$ to write $f_1(-x) = -f_1(x)$. Combined with real linearity, $f$ is $\mathbb{C}$-linear.
**$f|_Y = g$.** For $y \in Y$, the Bohnenblust-Sobczyk identity applied to $g$ itself gives $g(y) = \operatorname{Re}(g(y)) - i \operatorname{Re}(g(iy)) = g_1(y) - i g_1(iy)$. Since $f_1|_Y = g_1$ and $iy \in Y$ (as $Y$ is a $\mathbb{C}$-subspace, hence stable under multiplication by $i$), we have $f_1(iy) = g_1(iy)$. Therefore
\begin{align*}
f(y) = f_1(y) - i f_1(iy) = g_1(y) - i g_1(iy) = g(y).
\end{align*}
[/step]
[step:Bound $|f(x)|$ by rotating to the real axis]
Fix $x \in X$. We prove $|f(x)| \le p(x)$.
If $f(x) = 0$, the bound is immediate. Otherwise pick a unit-modulus complex number $\lambda \in \mathbb{C}$ with $|\lambda| = 1$ and $\lambda f(x) = |f(x)|$ (concretely $\lambda = \overline{f(x)}/|f(x)|$). Then
\begin{align*}
|f(x)| = \lambda f(x) = f(\lambda x),
\end{align*}
where the last equality uses $\mathbb{C}$-linearity of $f$. Now $|f(x)|$ is a real number, so taking real parts of both sides:
\begin{align*}
|f(x)| = \operatorname{Re}\bigl(f(\lambda x)\bigr) = f_1(\lambda x).
\end{align*}
By the bound $|f_1| \le p$ on $X$ (from the real case applied earlier):
\begin{align*}
|f(x)| = f_1(\lambda x) \le |f_1(\lambda x)| \le p(\lambda x).
\end{align*}
Finally, since $p$ is a semi-norm and $|\lambda| = 1$, $p(\lambda x) = |\lambda| p(x) = p(x)$. Combining:
\begin{align*}
|f(x)| \le p(x).
\end{align*}
[guided]
The bound $|f_1(x)| \le p(x)$ from the real case is a *real* bound, but we need a *complex* modulus bound on $f$. The way to convert one to the other is the **rotation trick**: any complex number $w \ne 0$ can be rotated to its modulus by multiplying by $\lambda := \overline{w}/|w|$, which has $|\lambda| = 1$ and $\lambda w = |w|$.
Apply this to $w = f(x)$: choose $\lambda$ with $|\lambda| = 1$ and $\lambda f(x) = |f(x)|$. By $\mathbb{C}$-linearity, $f(\lambda x) = \lambda f(x) = |f(x)| \in \mathbb{R}_{\ge 0}$. So $f(\lambda x)$ has zero imaginary part, and
\begin{align*}
|f(x)| = f(\lambda x) = \operatorname{Re}(f(\lambda x)) = f_1(\lambda x).
\end{align*}
Now we apply the real bound to $\lambda x$:
\begin{align*}
|f(x)| = f_1(\lambda x) \le |f_1(\lambda x)| \le p(\lambda x) = |\lambda| p(x) = p(x),
\end{align*}
using that $p$ is a semi-norm and hence absolutely homogeneous. The final step requires the full semi-norm hypothesis $p(\lambda x) = |\lambda| p(x)$ for *complex* scalars; positive homogeneity alone (which is all we used in the real case) would not suffice here.
[/guided]
[/step]
[step:Assemble the conclusion]
In the real case (first step) we constructed a real-linear extension $f$ of $g$ with $|f(x)| \le p(x)$. In the complex case (third and fourth steps), $f: X \to \mathbb{C}$ is $\mathbb{C}$-linear, $f|_Y = g$, and $|f(x)| \le p(x)$ for all $x \in X$. In both cases $f$ is the dominated linear extension claimed by the theorem.
[/step]