**Proof plan.** We show the left $H$-cosets partition $G$ into classes of equal size $|H|$, so their count $|G:H|$ satisfies $|G| = |H| \cdot |G:H|$.
**Step 1: Cosets partition $G$.**
[claim: Cosets Partition G]
The left $H$-cosets $\{gH : g \in G\}$ form a partition of $G$.
[/claim]
[proof]
Every $g \in G$ belongs to its own coset $gH$ (since $e \in H$, so $g = ge \in gH$). It remains to show cosets are either identical or disjoint. Suppose $g_1H \cap g_2H \neq \varnothing$, so $g_1h_1 = g_2h_2$ for some $h_1, h_2 \in H$. Then $g_2^{-1}g_1 = h_2h_1^{-1} \in H$, which implies $g_1H = g_2H$ (for any $g_1h \in g_1H$, write $g_1h = g_2(g_2^{-1}g_1)h \in g_2H$, and symmetrically). So distinct cosets are disjoint, and their union is $G$.
[/proof]
**Step 2: Each coset has exactly $|H|$ elements.**
[claim: Coset Bijection]
For any $g \in G$, the map $\varphi_g : H \to gH$ defined by $\varphi_g(h) = gh$ is a bijection.
[/claim]
[proof]
$\varphi_g$ is surjective by definition of $gH$. It is injective: if $gh_1 = gh_2$ then $h_1 = h_2$ by left-cancellation in $G$ (multiply on the left by $g^{-1}$).
[/proof]
**Step 3: Count.**
Since the cosets partition $G$ into $|G:H|$ disjoint subsets each of size $|H|$, we obtain
\begin{align*}
|G| = |H| \cdot |G:H|. \qquad \square
\end{align*}