[step:Encode a $\Sigma_k^P$ verifier by a bounded quantified Boolean formula]Let $L \in \Sigma_k^P$. We use the verifier characterization of $\Sigma_k^P$: for languages over $\{0,1\}^*$, membership is expressible by $k$ alternating certificate blocks, each of length bounded by a single polynomial in the input length, followed by a deterministic predicate decidable in polynomial time on the combined input. Therefore there exist a polynomial $p:\mathbb{N}\to\mathbb{N}$ and a deterministic polynomial-time predicate $R: \{0,1\}^* \times \{0,1\}^* \times \cdots \times \{0,1\}^* \to \{0,1\}$ with $k+1$ inputs such that, for every $x \in \{0,1\}^*$,
\begin{align*}
x \in L \iff \exists y_1 \in \{0,1\}^{p(|x|)}\, \forall y_2 \in \{0,1\}^{p(|x|)}\, \cdots\, Q_k y_k \in \{0,1\}^{p(|x|)}\, R(x,y_1,\dots,y_k)=1.
\end{align*}
Choose a deterministic Turing machine $M$ deciding $R$ in time $t(n)$, where $t:\mathbb{N}\to\mathbb{N}$ is a polynomial and $n$ denotes the total input length. For each fixed $x$, introduce Boolean variable blocks $Y_1,\dots,Y_k$ encoding $y_1,\dots,y_k$, each of length $p(|x|)$. Also introduce a Boolean block $Z$ whose assignments encode complete computation tableaus of $M$ on input $(x,Y_1,\dots,Y_k)$ for $t((k+1)p(|x|)+|x|)$ time steps.
By the standard local-tableau encoding for deterministic polynomial-time Turing-machine computations, applied to the fixed deterministic machine $M$ and the time bound $t((k+1)p(|x|)+|x|)$, the tableau has polynomial size in $|x|$ because $t$ and $p$ are polynomials, and the local consistency constraints are constructible in time polynomial in $|x|$. Thus there are quantifier-free Boolean formulas
\begin{align*}
H_x(Y_1,\dots,Y_k,Z)
\end{align*}
and
\begin{align*}
A_x(Z)
\end{align*}
such that, for every tuple $(y_1,\dots,y_k)$ and every tableau encoding $z$, the formula $H_x(y_1,\dots,y_k,z)$ is true exactly when $z$ is the valid computation history of $M$ on input $(x,y_1,\dots,y_k)$, and $A_x(z)$ is true exactly when the final configuration encoded in $z$ is accepting. Since $M$ is deterministic, for every fixed tuple $(x,y_1,\dots,y_k)$ there is exactly one valid tableau $z^*(x,y_1,\dots,y_k)$, and
\begin{align*}
R(x,y_1,\dots,y_k)=1 \iff H_x(y_1,\dots,y_k,z^*) \wedge A_x(z^*).
\end{align*}
If $Q_k=\exists$, define the quantified Boolean formula
\begin{align*}
\Phi_x = \exists Y_1\, \forall Y_2\, \cdots\, \exists (Y_k,Z)\, \bigl(H_x(Y_1,\dots,Y_k,Z) \wedge A_x(Z)\bigr).
\end{align*}
For each fixed tuple $(y_1,\dots,y_k)$, the final existential quantifier over $Z$ is true exactly when there exists a valid accepting computation history of $M$ on that input, which is equivalent to $R(x,y_1,\dots,y_k)=1$.
If $Q_k=\forall$, define
\begin{align*}
\Phi_x = \exists Y_1\, \forall Y_2\, \cdots\, \forall (Y_k,Z)\, \bigl(\neg H_x(Y_1,\dots,Y_k,Z) \vee A_x(Z)\bigr).
\end{align*}
For each fixed tuple $(y_1,\dots,y_k)$, the final universal quantifier over $Z$ asserts that every tableau is either invalid or accepting. All invalid tableaus satisfy the implication automatically, and the unique valid tableau is among the universally quantified assignments. Thus the final universal condition is true exactly when the unique valid computation history is accepting, again equivalent to $R(x,y_1,\dots,y_k)=1$.
In both cases the map $x \mapsto \Phi_x$ is computable in time polynomial in $|x|$, the formula $\Phi_x$ has exactly $k$ alternating quantifier blocks, begins with an existential block, and satisfies
\begin{align*}
x \in L \iff \Phi_x \in \mathrm{QSAT}_k^\exists.
\end{align*}
Therefore every language in $\Sigma_k^P$ many-one reduces to $\mathrm{QSAT}_k^\exists$, so $\mathrm{QSAT}_k^\exists$ is $\Sigma_k^P$-hard.[/step]