[proofplan]
The key structural input is that, for a [semisimple Lie algebra](/page/Semisimple%20Lie%20Algebra) over an algebraically closed field of characteristic $0$, every [Cartan subalgebra](/page/Cartan%20Subalgebra) is toral: it is abelian and each of its elements acts semisimply in the adjoint representation. Once this is known, the commuting diagonalizable family $\{\operatorname{ad}(h) : h \in \mathfrak{h}\}$ admits a simultaneous eigenspace decomposition of $\mathfrak{g}$. The zero simultaneous eigenspace is the [centralizer](/page/Centralizer) of $\mathfrak{h}$, hence equals $\mathfrak{h}$ because a Cartan subalgebra is self-normalizing by definition. Finally, if the roots failed to span $\mathfrak{h}^*$, a nonzero element of $\mathfrak{h}$ would commute with every summand in the decomposition and therefore lie in the [center](/page/Center%20of%20a%20Lie%20Algebra) of $\mathfrak{g}$, contradicting semisimplicity.
[/proofplan]
[step:Use torality of the Cartan subalgebra to obtain commuting semisimple adjoint operators]
For each $h \in \mathfrak{h}$, define the adjoint operator
\begin{align*}
\operatorname{ad}(h): \mathfrak{g} &\to \mathfrak{g} \\
x &\mapsto [h,x].
\end{align*}
By the standard theorem that [Cartan subalgebras of semisimple Lie algebras are toral](/page/Cartan%20Subalgebras%20of%20Semisimple%20Lie%20Algebras%20Are%20Toral), $\mathfrak{h}$ is abelian and every $\operatorname{ad}(h)$ is diagonalizable on $\mathfrak{g}$. Hence for all $h_1,h_2 \in \mathfrak{h}$,
\begin{align*}
[\operatorname{ad}(h_1),\operatorname{ad}(h_2)]
= \operatorname{ad}([h_1,h_2])
= \operatorname{ad}(0)
= 0,
\end{align*}
so the family $\{\operatorname{ad}(h):h \in \mathfrak{h}\}$ is a commuting family of diagonalizable endomorphisms of the finite-dimensional $k$-[vector space](/page/Vector%20Space) $\mathfrak{g}$.
[guided]
For each $h \in \mathfrak{h}$, we use the adjoint representation of $\mathfrak{g}$. Thus the relevant [linear map](/page/Linear%20Map) is
\begin{align*}
\operatorname{ad}(h): \mathfrak{g} &\to \mathfrak{g} \\
x &\mapsto [h,x].
\end{align*}
The structural theorem needed here is the following standard fact: by [Cartan subalgebras of semisimple Lie algebras are toral](/page/Cartan%20Subalgebras%20of%20Semisimple%20Lie%20Algebras%20Are%20Toral), if $\mathfrak{g}$ is finite-dimensional and semisimple over an algebraically closed field of characteristic $0$, then every Cartan subalgebra $\mathfrak{h}$ is toral, meaning that $\mathfrak{h}$ is abelian and every $\operatorname{ad}(h)$ with $h \in \mathfrak{h}$ is diagonalizable on $\mathfrak{g}$.
This consumes the hypotheses that $k$ is algebraically closed, has characteristic $0$, and that $\mathfrak{g}$ is semisimple. Since $\mathfrak{h}$ is abelian, for any $h_1,h_2 \in \mathfrak{h}$ we have $[h_1,h_2]=0$. The adjoint representation satisfies
\begin{align*}
[\operatorname{ad}(h_1),\operatorname{ad}(h_2)]
= \operatorname{ad}([h_1,h_2]),
\end{align*}
so
\begin{align*}
[\operatorname{ad}(h_1),\operatorname{ad}(h_2)]
= \operatorname{ad}(0)
= 0.
\end{align*}
Thus the operators $\operatorname{ad}(h)$ commute with one another, and each is diagonalizable. This is exactly the linear algebra condition needed for simultaneous diagonalization.
[/guided]
[/step]
[step:Simultaneously diagonalize the adjoint action of $\mathfrak{h}$]
Since $\mathfrak{g}$ is finite-dimensional over the algebraically closed field $k$, and since the operators $\operatorname{ad}(h)$ for $h \in \mathfrak{h}$ commute and are diagonalizable, the simultaneous diagonalization theorem gives a direct sum decomposition
\begin{align*}
\mathfrak{g} = \bigoplus_{\alpha \in \mathfrak{h}^*} \mathfrak{g}_\alpha,
\end{align*}
where
\begin{align*}
\mathfrak{g}_\alpha = \{x \in \mathfrak{g} : \operatorname{ad}(h)(x)=\alpha(h)x \text{ for every } h \in \mathfrak{h}\}.
\end{align*}
Only finitely many of these summands are nonzero, because $\mathfrak{g}$ is finite-dimensional.
[guided]
We now apply the [simultaneous diagonalization theorem for commuting diagonalizable operators](/page/Simultaneous%20Diagonalization). The theorem applies because $\mathfrak{g}$ is a finite-dimensional vector space over the algebraically closed field $k$, and the previous step proved that the relevant endomorphisms commute and are diagonalizable. The vector space is $\mathfrak{g}$, and the commuting diagonalizable family is
\begin{align*}
\{\operatorname{ad}(h): h \in \mathfrak{h}\}.
\end{align*}
The theorem produces a decomposition of $\mathfrak{g}$ into common eigenspaces for this whole family.
A common eigenspace is indexed by a function $\alpha:\mathfrak{h}\to k$ recording the eigenvalue of each operator $\operatorname{ad}(h)$. Linearity of $\alpha$ follows from linearity of the adjoint representation: if $x \neq 0$ lies in a common eigenspace, then for $h_1,h_2 \in \mathfrak{h}$ and $a,b \in k$,
\begin{align*}
\operatorname{ad}(ah_1+bh_2)(x)
&= a\operatorname{ad}(h_1)(x)+b\operatorname{ad}(h_2)(x) \\
&= a\alpha(h_1)x+b\alpha(h_2)x \\
&= (a\alpha(h_1)+b\alpha(h_2))x.
\end{align*}
Thus the eigenvalue function is an element of $\mathfrak{h}^*$. Therefore the simultaneous eigenspaces are precisely
\begin{align*}
\mathfrak{g}_\alpha
=
\{x \in \mathfrak{g} : [h,x]=\alpha(h)x \text{ for every } h \in \mathfrak{h}\},
\end{align*}
and simultaneous diagonalization gives
\begin{align*}
\mathfrak{g} = \bigoplus_{\alpha \in \mathfrak{h}^*} \mathfrak{g}_\alpha.
\end{align*}
Because $\mathfrak{g}$ has finite dimension, only finitely many of these simultaneous eigenspaces can be nonzero.
[/guided]
[/step]
[step:Identify the zero root space with the Cartan subalgebra]
By definition,
\begin{align*}
\mathfrak{g}_0
=
\{x \in \mathfrak{g} : [h,x]=0 \text{ for every } h \in \mathfrak{h}\}.
\end{align*}
Thus $\mathfrak{g}_0 = C_{\mathfrak{g}}(\mathfrak{h})$, the [centralizer](/page/Centralizer) of $\mathfrak{h}$ in $\mathfrak{g}$. Since $\mathfrak{h}$ is a [Cartan subalgebra](/page/Cartan%20Subalgebra), it is self-normalizing by definition, so
\begin{align*}
N_{\mathfrak{g}}(\mathfrak{h})=\mathfrak{h}.
\end{align*}
Because every element commuting with $\mathfrak{h}$ normalizes $\mathfrak{h}$, we have
\begin{align*}
\mathfrak{g}_0
=
C_{\mathfrak{g}}(\mathfrak{h})
\subseteq
N_{\mathfrak{g}}(\mathfrak{h})
=
\mathfrak{h}.
\end{align*}
The reverse inclusion follows from $[\mathfrak{h},\mathfrak{h}]=0$, so $\mathfrak{h}=\mathfrak{g}_0$.
[guided]
The zero simultaneous eigenspace is
\begin{align*}
\mathfrak{g}_0
=
\{x \in \mathfrak{g} : [h,x]=0 \text{ for every } h \in \mathfrak{h}\}.
\end{align*}
This is exactly the [centralizer](/page/Centralizer) of $\mathfrak{h}$ in $\mathfrak{g}$, which we denote by
\begin{align*}
C_{\mathfrak{g}}(\mathfrak{h})
:=
\{x \in \mathfrak{g} : [x,h]=0 \text{ for every } h \in \mathfrak{h}\}.
\end{align*}
The sign in the bracket does not matter here, since $[x,h]=-[h,x]$.
By the definition of a [Cartan subalgebra](/page/Cartan%20Subalgebra), $\mathfrak{h}$ is self-normalizing. If
\begin{align*}
N_{\mathfrak{g}}(\mathfrak{h})
:=
\{x \in \mathfrak{g} : [x,\mathfrak{h}] \subseteq \mathfrak{h}\}
\end{align*}
denotes the normalizer of $\mathfrak{h}$ in $\mathfrak{g}$, then
\begin{align*}
N_{\mathfrak{g}}(\mathfrak{h})=\mathfrak{h}.
\end{align*}
Every element of the centralizer normalizes $\mathfrak{h}$, because $[x,\mathfrak{h}]=0 \subseteq \mathfrak{h}$. Therefore
\begin{align*}
\mathfrak{g}_0
=
C_{\mathfrak{g}}(\mathfrak{h})
\subseteq
N_{\mathfrak{g}}(\mathfrak{h})
=
\mathfrak{h}.
\end{align*}
Conversely, since $\mathfrak{h}$ is abelian, every $h_0 \in \mathfrak{h}$ satisfies $[h,h_0]=0$ for every $h \in \mathfrak{h}$, so $h_0 \in \mathfrak{g}_0$. Hence $\mathfrak{h}\subseteq \mathfrak{g}_0$, and together these inclusions give
\begin{align*}
\mathfrak{h}=\mathfrak{g}_0.
\end{align*}
[/guided]
[/step]
[step:Separate the zero weight from the nonzero roots]
Define
\begin{align*}
\Phi := \{\alpha \in \mathfrak{h}^* \setminus \{0\} : \mathfrak{g}_\alpha \neq 0\}.
\end{align*}
The simultaneous eigenspace decomposition and the identity $\mathfrak{g}_0=\mathfrak{h}$ give
\begin{align*}
\mathfrak{g}
=
\mathfrak{g}_0 \oplus \bigoplus_{\alpha \in \Phi}\mathfrak{g}_\alpha
=
\mathfrak{h} \oplus \bigoplus_{\alpha \in \Phi}\mathfrak{g}_\alpha.
\end{align*}
The sum is direct because it is the simultaneous eigenspace decomposition of a commuting diagonalizable family.
[guided]
The simultaneous diagonalization step decomposed $\mathfrak{g}$ into all simultaneous eigenspaces indexed by $\mathfrak{h}^*$. The zero functional $0 \in \mathfrak{h}^*$ gives the zero weight space $\mathfrak{g}_0$, and every nonzero functional $\alpha \in \mathfrak{h}^*$ with $\mathfrak{g}_\alpha \neq 0$ is, by definition, a root. Thus we define the root set by
\begin{align*}
\Phi := \{\alpha \in \mathfrak{h}^* \setminus \{0\} : \mathfrak{g}_\alpha \neq 0\}.
\end{align*}
Since the previous step proved $\mathfrak{g}_0=\mathfrak{h}$, the full simultaneous eigenspace decomposition becomes
\begin{align*}
\mathfrak{g}
=
\mathfrak{g}_0 \oplus \bigoplus_{\alpha \in \Phi}\mathfrak{g}_\alpha
=
\mathfrak{h} \oplus \bigoplus_{\alpha \in \Phi}\mathfrak{g}_\alpha.
\end{align*}
No additional independence argument is needed here: the directness of the sum is inherited from the simultaneous eigenspace decomposition, where distinct simultaneous eigenspaces for a commuting diagonalizable family have zero intersection.
[/guided]
[/step]
[step:Show that the roots span $\mathfrak{h}^*$]
Suppose that $\operatorname{span}_k(\Phi) \neq \mathfrak{h}^*$. Then there exists a nonzero element $h_0 \in \mathfrak{h}$ such that
\begin{align*}
\alpha(h_0)=0
\end{align*}
for every $\alpha \in \Phi$. Since $\mathfrak{h}$ is abelian, $[h_0,h]=0$ for every $h \in \mathfrak{h}$. If $x_\alpha \in \mathfrak{g}_\alpha$ with $\alpha \in \Phi$, then
\begin{align*}
[h_0,x_\alpha]=\alpha(h_0)x_\alpha=0.
\end{align*}
Using the direct sum decomposition
\begin{align*}
\mathfrak{g}
=
\mathfrak{h} \oplus \bigoplus_{\alpha \in \Phi}\mathfrak{g}_\alpha,
\end{align*}
it follows that $[h_0,y]=0$ for every $y \in \mathfrak{g}$. Hence $h_0 \in Z(\mathfrak{g})$, where
\begin{align*}
Z(\mathfrak{g}) := \{z \in \mathfrak{g} : [z,y]=0 \text{ for every } y \in \mathfrak{g}\}
\end{align*}
is the [center](/page/Center%20of%20a%20Lie%20Algebra) of $\mathfrak{g}$. Since $\mathfrak{g}$ is [semisimple](/page/Semisimple%20Lie%20Algebra), its center is zero, because $Z(\mathfrak{g})$ is an abelian ideal and semisimplicity excludes nonzero solvable ideals. Thus $h_0=0$, a contradiction. Therefore
\begin{align*}
\operatorname{span}_k(\Phi)=\mathfrak{h}^*.
\end{align*}
[guided]
We prove the spanning assertion by contradiction. Assume
\begin{align*}
\operatorname{span}_k(\Phi) \neq \mathfrak{h}^*.
\end{align*}
Because $\mathfrak{h}$ is finite-dimensional, the natural pairing between $\mathfrak{h}$ and $\mathfrak{h}^*$ is nondegenerate. Hence there exists a nonzero element $h_0 \in \mathfrak{h}$ such that
\begin{align*}
\alpha(h_0)=0
\end{align*}
for every $\alpha \in \Phi$.
We now show that $h_0$ commutes with every summand in the decomposition of $\mathfrak{g}$. First, since $\mathfrak{h}$ is abelian,
\begin{align*}
[h_0,h]=0
\end{align*}
for every $h \in \mathfrak{h}$. Second, if $\alpha \in \Phi$ and $x_\alpha \in \mathfrak{g}_\alpha$, then the definition of $\mathfrak{g}_\alpha$ gives
\begin{align*}
[h_0,x_\alpha]=\alpha(h_0)x_\alpha.
\end{align*}
By the choice of $h_0$, $\alpha(h_0)=0$, so
\begin{align*}
[h_0,x_\alpha]=0.
\end{align*}
Every element $y \in \mathfrak{g}$ has a unique decomposition
\begin{align*}
y = h + \sum_{\alpha \in \Phi} x_\alpha,
\end{align*}
where $h \in \mathfrak{h}$, each $x_\alpha \in \mathfrak{g}_\alpha$, and all but finitely many $x_\alpha$ are zero. Using bilinearity of the Lie bracket,
\begin{align*}
[h_0,y]
=
[h_0,h] + \sum_{\alpha \in \Phi}[h_0,x_\alpha]
=
0.
\end{align*}
Thus $h_0$ belongs to the [center](/page/Center%20of%20a%20Lie%20Algebra)
\begin{align*}
Z(\mathfrak{g})
:=
\{z \in \mathfrak{g} : [z,y]=0 \text{ for every } y \in \mathfrak{g}\}.
\end{align*}
Finally, a [semisimple Lie algebra](/page/Semisimple%20Lie%20Algebra) has zero center: indeed, $Z(\mathfrak{g})$ is an abelian ideal, hence a solvable ideal, and semisimplicity means that $\mathfrak{g}$ has no nonzero solvable ideals. Therefore $Z(\mathfrak{g})=0$, so $h_0=0$, contradicting the choice of $h_0 \neq 0$. We conclude that
\begin{align*}
\operatorname{span}_k(\Phi)=\mathfrak{h}^*.
\end{align*}
[/guided]
[/step]
[step:Conclude the root space decomposition and diagonal action]
The preceding steps prove
\begin{align*}
\mathfrak{g}
=
\mathfrak{h} \oplus \bigoplus_{\alpha \in \Phi}\mathfrak{g}_\alpha,
\end{align*}
with $\mathfrak{h}=\mathfrak{g}_0$. For every $h \in \mathfrak{h}$, the decomposition is an eigenspace decomposition for $\operatorname{ad}(h)$: the operator $\operatorname{ad}(h)$ acts by the scalar $0$ on $\mathfrak{h}$ and by the scalar $\alpha(h)$ on $\mathfrak{g}_\alpha$. Hence every $\operatorname{ad}(h)$ is diagonalizable on $\mathfrak{g}$, and the roots span $\mathfrak{h}^*$. This proves all assertions.
[/step]