[proofplan]
The proof uses the standard structure theorem for Cartan subalgebras of finite-dimensional semisimple Lie algebras over algebraically closed fields of characteristic $0$: such a Cartan subalgebra is abelian, consists of semisimple elements, and equals its own zero weight space. Since the commuting operators $\operatorname{ad}(h)$ are diagonalizable, they are simultaneously diagonalizable on $\mathfrak{g}$, giving a direct sum of common eigenspaces. The zero common eigenspace is exactly $\mathfrak{h}$, and the roots span $\mathfrak{h}^*$ because any element of $\mathfrak{h}$ annihilated by all roots would lie in the center of the semisimple Lie algebra.
[/proofplan]
[step:Use semisimplicity to make the Cartan subalgebra toral]
We use the following standard structure result for Cartan subalgebras in semisimple Lie algebras over algebraically closed fields of characteristic $0$: if $\mathfrak{g}$ is finite-dimensional and semisimple, and $\mathfrak{h}\subset\mathfrak{g}$ is a Cartan subalgebra, then $\mathfrak{h}$ is abelian, every element of $\mathfrak{h}$ is semisimple in the adjoint representation, and
\begin{align*}
\{x\in\mathfrak{g} : [h,x]=0 \text{ for every } h\in\mathfrak{h}\}
=
\mathfrak{h}.
\end{align*}
(citing a result not yet in the wiki: Cartan subalgebras of semisimple Lie algebras are toral and self-centralizing)
Thus, for every $h\in\mathfrak{h}$, the [linear map](/page/Linear%20Map)
\begin{align*}
\operatorname{ad}(h):\mathfrak{g}&\to\mathfrak{g}\\
x&\mapsto [h,x]
\end{align*}
is diagonalizable over $k$.
[guided]
The point of the semisimplicity hypothesis is that Cartan subalgebras behave like maximal diagonal subalgebras. We use the standard theorem saying that, over an algebraically closed field of characteristic $0$, a Cartan subalgebra $\mathfrak{h}$ of a finite-dimensional semisimple Lie algebra $\mathfrak{g}$ is abelian and consists of adjoint-semisimple elements. In concrete terms, this means that for each $h\in\mathfrak{h}$ the operator
\begin{align*}
\operatorname{ad}(h):\mathfrak{g}&\to\mathfrak{g}\\
x&\mapsto [h,x]
\end{align*}
is diagonalizable over $k$.
The same structure theorem also gives the self-centralizing property
\begin{align*}
\{x\in\mathfrak{g} : [h,x]=0 \text{ for every } h\in\mathfrak{h}\}
=
\mathfrak{h}.
\end{align*}
This identity will later identify the zero root space with $\mathfrak{h}$. Without this input, simultaneous diagonalization would still produce a zero eigenspace, but it would not identify that eigenspace with the Cartan subalgebra.
[/guided]
[/step]
[step:Simultaneously diagonalize the adjoint action of $\mathfrak{h}$]
For $h_1,h_2\in\mathfrak{h}$, the Jacobi identity and $[h_1,h_2]=0$ give
\begin{align*}
[\operatorname{ad}(h_1),\operatorname{ad}(h_2)]
=
\operatorname{ad}([h_1,h_2])
=
0.
\end{align*}
Thus the family
\begin{align*}
\{\operatorname{ad}(h):h\in\mathfrak{h}\}\subset \operatorname{End}_k(\mathfrak{g})
\end{align*}
is a commuting family of diagonalizable linear operators on the finite-dimensional $k$-[vector space](/page/Vector%20Space) $\mathfrak{g}$. Since $k$ is algebraically closed, the standard simultaneous diagonalization theorem for commuting diagonalizable operators applies. Hence $\mathfrak{g}$ decomposes as a direct sum of common eigenspaces:
\begin{align*}
\mathfrak{g}
=
\bigoplus_{\alpha\in\mathfrak{h}^*} \mathfrak{g}_{\alpha},
\end{align*}
where only finitely many summands are nonzero, and where
\begin{align*}
\mathfrak{g}_{\alpha}
=
\{x\in\mathfrak{g}:[h,x]=\alpha(h)x\text{ for every }h\in\mathfrak{h}\}.
\end{align*}
[guided]
Because $\mathfrak{h}$ is abelian, the adjoint operators attached to its elements commute. Indeed, for $h_1,h_2\in\mathfrak{h}$, the commutator of the two endomorphisms $\operatorname{ad}(h_1)$ and $\operatorname{ad}(h_2)$ is computed by the Jacobi identity:
\begin{align*}
[\operatorname{ad}(h_1),\operatorname{ad}(h_2)]
=
\operatorname{ad}([h_1,h_2]).
\end{align*}
Since $[h_1,h_2]=0$, this gives
\begin{align*}
[\operatorname{ad}(h_1),\operatorname{ad}(h_2)]
=
0.
\end{align*}
We already know that each $\operatorname{ad}(h)$ is diagonalizable over $k$. Therefore the family
\begin{align*}
\{\operatorname{ad}(h):h\in\mathfrak{h}\}
\end{align*}
is a commuting family of diagonalizable endomorphisms of the finite-dimensional vector space $\mathfrak{g}$. The simultaneous diagonalization theorem says that such a family admits a basis of common eigenvectors. Equivalently, $\mathfrak{g}$ is the direct sum of the common eigenspaces
\begin{align*}
\mathfrak{g}_{\alpha}
=
\{x\in\mathfrak{g}:[h,x]=\alpha(h)x\text{ for every }h\in\mathfrak{h}\},
\end{align*}
where $\alpha$ ranges over the linear functionals on $\mathfrak{h}$ that occur as joint eigenvalues. Therefore
\begin{align*}
\mathfrak{g}
=
\bigoplus_{\alpha\in\mathfrak{h}^*}\mathfrak{g}_{\alpha}.
\end{align*}
Only finitely many summands are nonzero because $\mathfrak{g}$ is finite-dimensional.
[/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*}
The self-centralizing property of Cartan subalgebras in semisimple Lie algebras gives
\begin{align*}
\mathfrak{g}_0=\mathfrak{h}.
\end{align*}
Separating the zero functional from the nonzero functionals with nonzero eigenspace gives
\begin{align*}
\mathfrak{g}
=
\mathfrak{h}
\oplus
\bigoplus_{\alpha\in\Phi}\mathfrak{g}_{\alpha}.
\end{align*}
This proves the root space decomposition.
[guided]
The zero functional $0\in\mathfrak{h}^*$ gives the common eigenspace
\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 of $\mathfrak{h}$ in $\mathfrak{g}$. The structure theorem for Cartan subalgebras in semisimple Lie algebras says that this centralizer is $\mathfrak{h}$ itself:
\begin{align*}
\mathfrak{g}_0=\mathfrak{h}.
\end{align*}
The remaining nonzero common eigenspaces are indexed precisely by
\begin{align*}
\Phi
=
\{\alpha\in\mathfrak{h}^*\setminus\{0\}:\mathfrak{g}_{\alpha}\neq\{0\}\}.
\end{align*}
Thus the 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*}
Because the decomposition came from simultaneous diagonalization, the sum is direct.
[/guided]
[/step]
[step:Show that the roots span the dual of the Cartan subalgebra]
Let
\begin{align*}
V
=
\operatorname{span}_k(\Phi)\subseteq\mathfrak{h}^*
\end{align*}
be the $k$-linear span of the roots. Suppose $V\neq\mathfrak{h}^*$. Since $\mathfrak{h}$ is finite-dimensional, 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$.
For $x\in\mathfrak{h}$, we have $[h_0,x]=0$ because $\mathfrak{h}$ is abelian. For $x\in\mathfrak{g}_{\alpha}$ with $\alpha\in\Phi$, the definition of $\mathfrak{g}_{\alpha}$ gives
\begin{align*}
[h_0,x]=\alpha(h_0)x=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}$. Define the center of $\mathfrak{g}$ by
\begin{align*}
Z(\mathfrak{g})
=
\{z\in\mathfrak{g}:[z,y]=0\text{ for every }y\in\mathfrak{g}\}.
\end{align*}
Then $h_0\in Z(\mathfrak{g})$.
Since $\mathfrak{g}$ is semisimple, its center is zero. Therefore $h_0=0$, contradicting the choice of $h_0\neq 0$. Hence $V=\mathfrak{h}^*$, so $\Phi$ spans $\mathfrak{h}^*$.
[guided]
We now prove that the roots do not miss any direction in $\mathfrak{h}^*$. Define
\begin{align*}
V
=
\operatorname{span}_k(\Phi)\subseteq\mathfrak{h}^*.
\end{align*}
Assume, for contradiction, that $V\neq\mathfrak{h}^*$. Since $\mathfrak{h}$ is finite-dimensional, this means there is a nonzero vector $h_0\in\mathfrak{h}$ annihilated by every functional in $V$. In particular,
\begin{align*}
\alpha(h_0)=0
\end{align*}
for every root $\alpha\in\Phi$.
We show that $h_0$ commutes with every element of $\mathfrak{g}$. First, if $x\in\mathfrak{h}$, then
\begin{align*}
[h_0,x]=0
\end{align*}
because $\mathfrak{h}$ is abelian. Second, if $x\in\mathfrak{g}_{\alpha}$ for some $\alpha\in\Phi$, then the defining property of the root space gives
\begin{align*}
[h_0,x]=\alpha(h_0)x.
\end{align*}
But $\alpha(h_0)=0$, so
\begin{align*}
[h_0,x]=0.
\end{align*}
The root space decomposition already proved says that every $y\in\mathfrak{g}$ has a unique decomposition
\begin{align*}
y
=
x_0+\sum_{\alpha\in\Phi}x_{\alpha},
\end{align*}
where $x_0\in\mathfrak{h}$, $x_{\alpha}\in\mathfrak{g}_{\alpha}$, and all but finitely many $x_{\alpha}$ are zero. By bilinearity of the Lie bracket,
\begin{align*}
[h_0,y]
=
[h_0,x_0]+\sum_{\alpha\in\Phi}[h_0,x_{\alpha}]
=
0.
\end{align*}
Define the center of $\mathfrak{g}$ by
\begin{align*}
Z(\mathfrak{g})
=
\{z\in\mathfrak{g}:[z,y]=0\text{ for every }y\in\mathfrak{g}\}.
\end{align*}
Thus $h_0\in Z(\mathfrak{g})$.
A semisimple Lie algebra has zero center. To justify this, define the solvable radical of $\mathfrak{g}$ to be the largest solvable ideal of $\mathfrak{g}$. If $z\in Z(\mathfrak{g})$, then the one-dimensional subspace $kz$ is an ideal because $[y,z]=0\in kz$ for every $y\in\mathfrak{g}$. It is abelian, hence solvable, so it is contained in the solvable radical of $\mathfrak{g}$. Semisimplicity means that this solvable radical is zero. Therefore $Z(\mathfrak{g})=\{0\}$, and so $h_0=0$. This contradicts the construction of $h_0$ as a nonzero element of $\mathfrak{h}$. Hence $V=\mathfrak{h}^*$.
[/guided]
[/step]
[step:Collect the diagonal action and the decomposition]
The simultaneous diagonalization step shows that every operator $\operatorname{ad}(h)$ with $h\in\mathfrak{h}$ acts diagonally on the decomposition
\begin{align*}
\mathfrak{g}
=
\mathfrak{h}
\oplus
\bigoplus_{\alpha\in\Phi}\mathfrak{g}_{\alpha}.
\end{align*}
Indeed, $\operatorname{ad}(h)$ acts by the scalar $0$ on $\mathfrak{h}=\mathfrak{g}_0$ and by the scalar $\alpha(h)$ on each root space $\mathfrak{g}_{\alpha}$. The preceding steps prove $\mathfrak{g}_0=\mathfrak{h}$, the displayed direct sum decomposition, diagonalizability of every $\operatorname{ad}(h)$, and spanning of $\mathfrak{h}^*$ by $\Phi$.
[/step]