[step:Establish the integral framework and the reduction map on roots]Since $f \in \mathbb{Z}[t]$ is monic of degree $n$ with splitting field $E$ over $\mathbb{Q}$, the roots $\alpha_1, \ldots, \alpha_n \in E$ of $f$ are algebraic integers (roots of a monic polynomial with integer coefficients). Hence $\alpha_1, \ldots, \alpha_n \in \mathcal{O}_E$, where $\mathcal{O}_E$ denotes the ring of integers of $E$.
The Galois group $G = \operatorname{Gal}(E/\mathbb{Q})$ embeds into $S_n$ via the action of $G$ on the roots: each $\sigma \in G$ permutes $\{\alpha_1, \ldots, \alpha_n\}$, and the map $G \hookrightarrow S_n$ sending $\sigma$ to the induced permutation is an injective group homomorphism (injective because $E = \mathbb{Q}(\alpha_1, \ldots, \alpha_n)$, so an automorphism is determined by its action on the roots).
Let $\mathfrak{p}$ be a prime ideal of $\mathcal{O}_E$ lying over $(p)$, i.e., $\mathfrak{p} \cap \mathbb{Z} = (p)$. The quotient $k_{\mathfrak{p}} := \mathcal{O}_E / \mathfrak{p}$ is a finite field of characteristic $p$. Define the reduction map
\begin{align*}
\pi: \mathcal{O}_E &\to k_{\mathfrak{p}} \\
x &\mapsto x + \mathfrak{p}.
\end{align*}
Since $\alpha_1, \ldots, \alpha_n \in \mathcal{O}_E$, their reductions $\bar{\alpha}_i := \pi(\alpha_i)$ are well-defined elements of $k_{\mathfrak{p}}$.
We verify that $\bar{\alpha}_1, \ldots, \bar{\alpha}_n$ are the roots of $\bar{f}$ in $k_{\mathfrak{p}}$. Since $f(\alpha_i) = 0$ in $\mathcal{O}_E$ and $\pi$ is a ring homomorphism sending each coefficient $c \in \mathbb{Z}$ to its residue class $c + p\mathbb{Z} \in \mathbb{F}_p \subset k_{\mathfrak{p}}$, we obtain
\begin{align*}
\bar{f}(\bar{\alpha}_i) = \pi(f(\alpha_i)) = \pi(0) = 0 \quad \text{for each } i \in \{1, \ldots, n\}.
\end{align*}
Since $\bar{f}$ has degree $n$ (it is monic of degree $n$ by the assumption that $f$ is monic of degree $n$ and the leading coefficient $1$ is nonzero modulo $p$), $\bar{f}$ has at most $n$ roots in $k_{\mathfrak{p}}$. Since $\bar{f}$ is separable by hypothesis, it has exactly $n$ distinct roots. The elements $\bar{\alpha}_1, \ldots, \bar{\alpha}_n$ are $n$ roots of $\bar{f}$ in $k_{\mathfrak{p}}$, and they must be distinct (since $\bar{f}$ has exactly $n$ distinct roots and we have exhibited $n$ of them). Therefore the map
\begin{align*}
\{\alpha_1, \ldots, \alpha_n\} &\to \{\text{roots of } \bar{f} \text{ in } k_{\mathfrak{p}}\} \\
\alpha_i &\mapsto \bar{\alpha}_i
\end{align*}
is a bijection.
Moreover, $k_{\mathfrak{p}}$ is generated over $\mathbb{F}_p$ by $\bar{\alpha}_1, \ldots, \bar{\alpha}_n$ (since $\mathcal{O}_E = \mathbb{Z}[\alpha_1, \ldots, \alpha_n, \beta_1, \ldots, \beta_s]$ for some additional algebraic integers $\beta_j$, and $k_{\mathfrak{p}}$ is generated over $\mathbb{F}_p$ by the images of these generators; but $k_{\mathfrak{p}}$ contains a splitting field of $\bar{f}$ over $\mathbb{F}_p$, and for our purposes it suffices to work within the subfield $\bar{E} := \mathbb{F}_p(\bar{\alpha}_1, \ldots, \bar{\alpha}_n) \subset k_{\mathfrak{p}}$, which is the splitting field of $\bar{f}$ over $\mathbb{F}_p$).[/step]