[proofplan]
Two assertions: $\operatorname{Ind}^G_H \psi$ is a class function on $G$, and its value at the identity is $|G : H|\,\psi(1)$. For class-functionality we show $\operatorname{Ind}^G_H \psi(zgz^{-1}) = \operatorname{Ind}^G_H \psi(g)$ for all $z, g \in G$ by reindexing the defining sum. Substituting $x' = z^{-1}x$ in $\sum_{x \in G} \mathring{\psi}(x^{-1}(zgz^{-1})x)$ converts the conjugate inside $\mathring{\psi}$ from $x^{-1}(zgz^{-1})x$ to $(x')^{-1} g (x')$, and since $x \mapsto z^{-1}x$ is a bijection of $G$, the sum is unchanged. For the value at the identity, every conjugate $x^{-1} \cdot 1 \cdot x = 1$ lies in $H$, so $\mathring{\psi}(1) = \psi(1)$ contributes $|G|$ identical terms; dividing by $|H|$ gives $|G : H|\,\psi(1)$.
[/proofplan]
[step:Set up the zero extension $\mathring{\psi}$ and the defining formula for $\operatorname{Ind}^G_H \psi$]
Let $\psi: H \to \mathbb{C}$ be a class function on $H$. The **zero extension** of $\psi$ is the function
\begin{align*}
\mathring{\psi}: G &\to \mathbb{C} \\
y &\mapsto \begin{cases} \psi(y) & \text{if } y \in H, \\ 0 & \text{if } y \in G \setminus H. \end{cases}
\end{align*}
The induced class function is defined by
\begin{align*}
\operatorname{Ind}^G_H \psi: G &\to \mathbb{C} \\
g &\mapsto \frac{1}{|H|} \sum_{x \in G} \mathring{\psi}(x^{-1} g x).
\end{align*}
The sum is finite (over the finite group $G$) and the result is well-defined as a complex-valued function of $g \in G$. To prove the theorem we must verify (i) $\operatorname{Ind}^G_H \psi$ is constant on each $G$-conjugacy class, i.e., $\operatorname{Ind}^G_H \psi(zgz^{-1}) = \operatorname{Ind}^G_H \psi(g)$ for all $z, g \in G$, and (ii) $\operatorname{Ind}^G_H \psi(1) = |G : H|\,\psi(1)$.
[/step]
[step:Verify class-functionality by the substitution $x' = z^{-1}x$]
Fix $z, g \in G$. By the defining formula,
\begin{align*}
\operatorname{Ind}^G_H \psi(zgz^{-1}) = \frac{1}{|H|} \sum_{x \in G} \mathring{\psi}\bigl(x^{-1} (zgz^{-1}) x\bigr) = \frac{1}{|H|} \sum_{x \in G} \mathring{\psi}\bigl((z^{-1} x)^{-1}\, g\, (z^{-1} x)\bigr),
\end{align*}
using the algebraic identity $x^{-1}(zgz^{-1})x = (z^{-1}x)^{-1}\, g\, (z^{-1}x)$ in $G$.
Substitute $x' = z^{-1} x$. The map
\begin{align*}
G &\to G \\
x &\mapsto z^{-1} x
\end{align*}
is a bijection (its inverse is $x' \mapsto z x'$, since $z(z^{-1}x) = x$). So as $x$ ranges over $G$, $x'$ ranges over $G$, and the sum over $x$ is the same as the sum over $x'$:
\begin{align*}
\frac{1}{|H|} \sum_{x \in G} \mathring{\psi}\bigl((z^{-1} x)^{-1}\, g\, (z^{-1} x)\bigr) = \frac{1}{|H|} \sum_{x' \in G} \mathring{\psi}\bigl((x')^{-1}\, g\, x'\bigr) = \operatorname{Ind}^G_H \psi(g).
\end{align*}
Hence $\operatorname{Ind}^G_H \psi(zgz^{-1}) = \operatorname{Ind}^G_H \psi(g)$ for all $z, g \in G$, so $\operatorname{Ind}^G_H \psi \in \mathcal{C}(G)$.
[guided]
The verification of class-functionality is a one-line reindexing once the algebraic identity $x^{-1}(zgz^{-1})x = (z^{-1}x)^{-1}\, g\, (z^{-1}x)$ is in hand. This identity is a routine computation in $G$:
\begin{align*}
(z^{-1}x)^{-1}\, g\, (z^{-1}x) = x^{-1} z\, g\, z^{-1} x = x^{-1}(zgz^{-1})x.
\end{align*}
The substitution $x' = z^{-1}x$ replaces the entire sum with the same sum reindexed. Why is this valid? Because left multiplication by $z^{-1}$ is a bijection of $G$ — every element of $G$ appears exactly once as $z^{-1}x$ when $x$ ranges over $G$. So $\sum_{x \in G} f(z^{-1}x) = \sum_{x' \in G} f(x')$ for any function $f$ on $G$.
Applied here with $f(\cdot) = \mathring{\psi}((\cdot)^{-1} g (\cdot))$:
\begin{align*}
\sum_{x \in G} \mathring{\psi}\bigl((z^{-1}x)^{-1} g (z^{-1}x)\bigr) = \sum_{x' \in G} \mathring{\psi}\bigl((x')^{-1} g\, x'\bigr).
\end{align*}
Dividing both sides by $|H|$ gives $\operatorname{Ind}^G_H \psi(zgz^{-1}) = \operatorname{Ind}^G_H \psi(g)$.
**Why a sum over all of $G$ rather than over a transversal?** The sum over $G$ is the natural symmetric form: it is manifestly invariant under the substitution $x \mapsto z^{-1}x$, which is what makes the class-functionality argument so short. (If we had defined induction by summing over coset representatives, we would have to chase how the change of variable interacts with the choice of representatives — a bookkeeping nuisance. The factor $\frac{1}{|H|}$ in front compensates for the over-counting: each conjugate $x^{-1}gx$ that lies in $H$ is hit exactly $|H|$ times as $x$ ranges over a single coset.)
This is the same structural reason why averaging over a group always preserves group-invariance — the sum-over-the-group construction is invariant under translations.
[/guided]
[/step]
[step:Evaluate $\operatorname{Ind}^G_H \psi(1) = |G : H|\,\psi(1)$ from the constant summand at $g = 1$]
Set $g = 1$ in the defining formula. For every $x \in G$, the conjugate is
\begin{align*}
x^{-1} \cdot 1 \cdot x = x^{-1} x = 1 \in H.
\end{align*}
Since $1 \in H$, the zero extension takes the value $\mathring{\psi}(1) = \psi(1)$ at every term of the sum. Hence
\begin{align*}
\operatorname{Ind}^G_H \psi(1) = \frac{1}{|H|} \sum_{x \in G} \mathring{\psi}(x^{-1} \cdot 1 \cdot x) = \frac{1}{|H|} \sum_{x \in G} \psi(1) = \frac{1}{|H|} \cdot |G| \cdot \psi(1) = \frac{|G|}{|H|}\, \psi(1).
\end{align*}
By Lagrange's theorem $\frac{|G|}{|H|} = |G : H|$, so
\begin{align*}
\operatorname{Ind}^G_H \psi(1) = |G : H|\, \psi(1),
\end{align*}
as claimed. Combining Steps 2 and 3 establishes both assertions of the theorem.
[/step]