[proofplan]
The cumulative hierarchy is defined by transfinite recursion: $V_0 = \varnothing$, $V_{\alpha+1} = \mathcal{P}(V_\alpha)$, and $V_\lambda = \bigcup_{\beta < \lambda} V_\beta$ at limits. Transitivity of $V_\alpha$ is a structural property preserved by each construction step, so the natural proof is transfinite induction on $\alpha$. The base case is immediate, the limit case uses the elementary fact that a union of transitive sets is transitive, and the successor case uses the key observation that **the power set of a transitive set is transitive** — because every subset of a transitive set is itself a subset of that transitive set.
[/proofplan]
[step:Set up transfinite induction on $\alpha$]
Recall the definition of the cumulative hierarchy by transfinite recursion on ordinals:
\begin{align*}
V_0 &= \varnothing, \\
V_{\alpha+1} &= \mathcal{P}(V_\alpha) \quad \text{for every ordinal } \alpha, \\
V_\lambda &= \bigcup_{\beta < \lambda} V_\beta \quad \text{for every limit ordinal } \lambda.
\end{align*}
We prove *$V_\alpha$ is transitive* by transfinite induction on $\alpha$. Recall a set $X$ is **transitive** iff $y \in z \in X \implies y \in X$, equivalently $z \in X \implies z \subseteq X$.
The transfinite induction scheme requires three cases: base ($\alpha = 0$), successor ($\alpha = \beta + 1$), and limit ($\alpha = \lambda$ limit).
[/step]
[step:Dispose of the base case $V_0 = \varnothing$]
The empty set $V_0 = \varnothing$ is transitive vacuously: the implication "$y \in z \in \varnothing \implies y \in \varnothing$" has no instances because $z \in \varnothing$ is false for every $z$.
[/step]
[step:Handle the successor step using transitivity of $V_\alpha$]
**Inductive hypothesis.** Fix an ordinal $\alpha$ and assume $V_\alpha$ is transitive.
**Goal.** Show $V_{\alpha+1} = \mathcal{P}(V_\alpha)$ is transitive.
Let $y \in z \in \mathcal{P}(V_\alpha)$. We show $y \in \mathcal{P}(V_\alpha)$, equivalently $y \subseteq V_\alpha$.
Since $z \in \mathcal{P}(V_\alpha)$, we have $z \subseteq V_\alpha$, so $y \in z$ implies $y \in V_\alpha$. By the inductive hypothesis $V_\alpha$ is transitive, so $y \in V_\alpha$ implies $y \subseteq V_\alpha$. Hence $y \in \mathcal{P}(V_\alpha) = V_{\alpha+1}$, as required.
[guided]
The successor step rests on a small but crucial point: **the power set of a transitive set is transitive**. Let us unpack why this is non-trivial but cleanly true.
We want to prove $V_{\alpha+1} = \mathcal{P}(V_\alpha)$ is transitive. Take an arbitrary "element of an element": $y \in z$ where $z \in \mathcal{P}(V_\alpha)$. We need $y \in \mathcal{P}(V_\alpha)$, i.e., $y \subseteq V_\alpha$.
**Unpack "element of $\mathcal{P}(V_\alpha)$".** $z \in \mathcal{P}(V_\alpha)$ means $z \subseteq V_\alpha$ — every member of $z$ is a member of $V_\alpha$. Applied to $y$: since $y \in z$, we have $y \in V_\alpha$.
**Use transitivity of $V_\alpha$ (the inductive hypothesis).** Transitivity says: every member of $V_\alpha$ is itself a **subset** of $V_\alpha$. Applied to $y$: since $y \in V_\alpha$, we have $y \subseteq V_\alpha$.
**Repackage.** $y \subseteq V_\alpha$ is exactly $y \in \mathcal{P}(V_\alpha) = V_{\alpha+1}$.
Notice the two uses of transitivity of $V_\alpha$ line up perfectly: *element of $V_\alpha$ $\implies$ subset of $V_\alpha$* is exactly the statement of transitivity, and we apply it to bridge the gap between "$y \in V_\alpha$" (what membership in $\mathcal{P}(V_\alpha)$ gives us one level down) and "$y \subseteq V_\alpha$" (what we need for $y \in \mathcal{P}(V_\alpha)$).
What would fail if $V_\alpha$ were not transitive? Nothing forces a member $y$ of a subset $z \subseteq V_\alpha$ to lie in $V_\alpha$ — only membership in $z$ is forced, and $y \in z$ gives $y \in V_\alpha$, but to then conclude $y \subseteq V_\alpha$ requires transitivity. Without it, $y$ could have elements outside $V_\alpha$, and $y \notin \mathcal{P}(V_\alpha)$.
[/guided]
[/step]
[step:Handle the limit step using the union-of-transitive-sets lemma]
**Inductive hypothesis.** Fix a limit ordinal $\lambda$ and assume $V_\beta$ is transitive for every $\beta < \lambda$.
**Goal.** Show $V_\lambda = \bigcup_{\beta < \lambda} V_\beta$ is transitive.
Let $y \in z \in V_\lambda$. By definition of the union, there exists $\beta < \lambda$ with $z \in V_\beta$. Since $V_\beta$ is transitive by the inductive hypothesis, $y \in z \in V_\beta$ implies $y \in V_\beta$. Hence
\begin{align*}
y \in V_\beta \subseteq \bigcup_{\gamma < \lambda} V_\gamma = V_\lambda.
\end{align*}
So $V_\lambda$ is transitive.
[/step]
[step:Combine the three cases via transfinite induction]
We have verified:
- $V_0$ is transitive (base case).
- If $V_\alpha$ is transitive, then $V_{\alpha+1}$ is transitive (successor case).
- If $V_\beta$ is transitive for every $\beta < \lambda$ (with $\lambda$ limit), then $V_\lambda$ is transitive (limit case).
By the principle of transfinite induction on the class of ordinals, $V_\alpha$ is transitive for every ordinal $\alpha$. $\square$
[/step]