Skip to content
The Lumenary
First-year graduateGraduate 140 min

Axiomatic set theory: hierarchy, cardinal arithmetic and L

The universe of sets as a transfinite tower VαV_\alpha, what ZFC can and cannot decide about 2κ2^\kappa, and Gödel's constructible universe LL, in which the continuum hypothesis holds.

Formally verified · 13 LeanComputationally tested · 1 PythonAI-drafted · awaiting human reviewMathematically reviewed: Awaiting human review
MotivationH

What does the universe of sets look like?

The axioms of ZFC were written down to avoid paradoxes and to support ordinary mathematics. Two questions remain once they are in place. Is there a picture behind the axioms — a structure they describe? And which natural questions do they settle? The most famous is Cantor's continuum problem: is 2ℵ0=ℵ12^{\aleph_0} = \aleph_1? It was the first of Hilbert's problems in 1900.

The answer to the first question is the cumulative hierarchy: start from nothing, form all subsets, and repeat transfinitely. The second question has a two-part answer. ZFC proves some striking restrictions on the function κ↦2κ\kappa \mapsto 2^\kappa — for instance 2ℵ0≠ℵω2^{\aleph_0} \neq \aleph_\omega — but Gödel (1938) built a model, the constructible universe LL, in which 2κ=κ+2^\kappa = \kappa^+ for every infinite κ\kappa, and Cohen (1963) built models where 2ℵ02^{\aleph_0} is as large as one likes, subject to König's restriction. This lesson develops the hierarchy, the cardinal arithmetic that ZFC does decide, the reflection principle, and Gödel's LL; forcing supplies the other half.

IntuitionH

Building the universe in stages

At stage 00 there is nothing. At each successor stage, form every subset of what exists so far. At limit stages, gather everything built so far. The sets are exactly the things that appear at some stage. Foundation says there is nothing else: no set is built from itself, and every chain x0∋x1∋x2∋⋯x_0 \ni x_1 \ni x_2 \ni \cdots ends.

Gödel's LL is a thinner universe built the same way, except that at each successor stage we keep only the subsets that are definable from what exists so far. It contains every ordinal — the "spine" of VV — but as few subsets as possible.

V_ωV_αV_α+1LVOrd∅
The cumulative hierarchy $V = \bigcup_\alpha V_\alpha$ grows upwards along the ordinals; each level $V_{\alpha+1}$ is the power set of $V_\alpha$. The constructible universe $L$ (shaded) has the same ordinals but keeps only definable subsets at each stage. Whether $V = L$ is not decided by ZFC.
DefinitionsH

Definitions

We work in ZF, adding choice where stated, and use von Neumann ordinals and cardinals as initial ordinals (see ordinals and cardinals and the axiom of choice). Recall transfinite recursion: for every class function GG there is a unique class function FF on the ordinals with F(α)=G(F↾α)F(\alpha) = G(F \restriction \alpha) for all α\alpha.

Definition— cumulative hierarchy and rank

By transfinite recursion, V0=∅V_0 = \varnothing, Vα+1=P(Vα)V_{\alpha+1} = \mathcal{P}(V_\alpha), and Vλ=⋃α<λVαV_\lambda = \bigcup_{\alpha \lt \lambda} V_\alpha for limit λ\lambda. The rank of a set xx that lies in some VβV_\beta is the least α\alpha with x⊆Vαx \subseteq V_\alpha (equivalently x∈Vα+1x \in V_{\alpha+1}). One checks that rank⁡(x)=sup⁡{rank⁡(y)+1:y∈x}\operatorname{rank}(x) = \sup\{\operatorname{rank}(y) + 1 : y \in x\}.

Definition— cofinality; regular and singular

A subset XX of a limit ordinal α\alpha is cofinal if it is unbounded in α\alpha. The cofinality cf⁡(α)\operatorname{cf}(\alpha) is the least order type of a cofinal subset of α\alpha; it is always a regular cardinal. An infinite cardinal κ\kappa is regular if cf⁡(κ)=κ\operatorname{cf}(\kappa) = \kappa and singular otherwise.

Definition— cardinal exponentiation, GCH

For cardinals, κλ=∣λκ∣\kappa^\lambda = |{}^\lambda\kappa|, the number of functions λ→κ\lambda \to \kappa; κ+\kappa^+ is the least cardinal above κ\kappa. The continuum hypothesis CH says 2ℵ0=ℵ12^{\aleph_0} = \aleph_1; the generalised continuum hypothesis GCH says 2κ=κ+2^\kappa = \kappa^+ for every infinite cardinal κ\kappa.

Definition— relativisation and absoluteness

For a class MM and formula φ\varphi, the relativisation φM\varphi^M is obtained by bounding every quantifier by MM. A formula φ(xˉ)\varphi(\bar x) is absolute for MM if φM(aˉ)↔φ(aˉ)\varphi^M(\bar a) \leftrightarrow \varphi(\bar a) for all aˉ∈M\bar a \in M. Every Δ0\Delta_0 formula (all quantifiers bounded, ∃y∈z\exists y \in z) is absolute for every transitive class. "xx is an ordinal", "x=ωx = \omega", "ff is a function" are absolute for transitive models of ZF; "xx is uncountable" and "y=P(x)y = \mathcal{P}(x)" are not.

Definition— the constructible universe

For a set AA, Def⁡(A)\operatorname{Def}(A) is the set of X⊆AX \subseteq A definable over the structure (A,∈)(A, \in) by a first-order formula with parameters from AA. Then L0=∅L_0 = \varnothing, Lα+1=Def⁡(Lα)L_{\alpha+1} = \operatorname{Def}(L_\alpha), Lλ=⋃α<λLαL_\lambda = \bigcup_{\alpha \lt \lambda} L_\alpha for limit λ\lambda, and L=⋃αLαL = \bigcup_\alpha L_\alpha. The axiom of constructibility is the statement V=LV = L, that is, ∀x ∃α  x∈Lα\forall x\, \exists \alpha\; x \in L_\alpha.

Worked examplesH

Examples

Example— The first stages

∣V0∣,∣V1∣,∣V2∣,∣V3∣,∣V4∣,∣V5∣=0,1,2,4,16,65536|V_0|, |V_1|, |V_2|, |V_3|, |V_4|, |V_5| = 0, 1, 2, 4, 16, 65536, since ∣Vn+1∣=2∣Vn∣|V_{n+1}| = 2^{|V_n|}. The set VωV_\omega consists of the hereditarily finite sets; with the inherited membership it satisfies every axiom of ZFC except infinity. Vω+ωV_{\omega+\omega} satisfies Zermelo's axioms (ZC) but not replacement: the function n↦ω+nn \mapsto \omega + n on ω\omega is definable there, but its range {ω+n:n∈ω}\{\omega + n : n \in \omega\} has rank ω+ω\omega + \omega, so it is not in Vω+ωV_{\omega+\omega}. All the usual objects of analysis — R\R, C\C, Lebesgue measure on R\R — have codings of rank below ω+ω\omega + \omega. If κ\kappa is strongly inaccessible, Vκ⊨ZFCV_\kappa \models \mathsf{ZFC} (see large cardinals).

Example— Cofinalities

cf⁡(ω)=cf⁡(ω+ω)=cf⁡(ω2)=ω\operatorname{cf}(\omega) = \operatorname{cf}(\omega + \omega) = \operatorname{cf}(\omega^2) = \omega. With choice, every successor cardinal ℵα+1\aleph_{\alpha+1} is regular, since a union of at most ℵα\aleph_\alpha sets each of size at most ℵα\aleph_\alpha has size at most ℵα\aleph_\alpha. But ℵω=sup⁡nℵn\aleph_\omega = \sup_n \aleph_n is singular with cf⁡(ℵω)=ω\operatorname{cf}(\aleph_\omega) = \omega, and cf⁡(ℵω1)=ω1\operatorname{cf}(\aleph_{\omega_1}) = \omega_1. In general cf⁡(ℵλ)=cf⁡(λ)\operatorname{cf}(\aleph_\lambda) = \operatorname{cf}(\lambda) for limit λ\lambda.

Example— Ranks

Each ordinal has rank equal to itself; rank⁡({∅})=1\operatorname{rank}(\{\varnothing\}) = 1; the Kuratowski pair (a,b)={{a},{a,b}}(a, b) = \{\{a\}, \{a, b\}\} has rank max⁡(rank⁡a,rank⁡b)+2\max(\operatorname{rank} a, \operatorname{rank} b) + 2. Ln=VnL_n = V_n for all finite nn (every subset of a finite set is definable with parameters) and Lω=VωL_\omega = V_\omega, but Lω+1L_{\omega+1} is countable — there are only countably many formulas and finite parameter lists — while Vω+1=P(Vω)V_{\omega+1} = \mathcal{P}(V_\omega) is uncountable.

ProofH

Every set has a rank

Theorem— Theorem 1

(a) Each VαV_\alpha is transitive, and β≤α\beta \le \alpha implies Vβ⊆VαV_\beta \subseteq V_\alpha. (b) (ZF) Every set belongs to some VαV_\alpha.

Proof

(a) By induction on α\alpha we show that VαV_\alpha is transitive and contains every VβV_\beta, β<α\beta \lt \alpha, as a subset. Limits are clear, since unions of transitive sets are transitive. For Vα+1=P(Vα)V_{\alpha+1} = \mathcal{P}(V_\alpha): transitivity of VαV_\alpha means each y∈Vαy \in V_\alpha satisfies y⊆Vαy \subseteq V_\alpha, i.e. y∈Vα+1y \in V_{\alpha+1}; so Vα⊆Vα+1V_\alpha \subseteq V_{\alpha+1}. And if y∈x∈Vα+1y \in x \in V_{\alpha+1} then y∈Vα⊆Vα+1y \in V_\alpha \subseteq V_{\alpha+1}, so Vα+1V_{\alpha+1} is transitive.

(b) Suppose some set xx lies in no VαV_\alpha. Let TT be the transitive closure of {x}\{x\} (it exists by replacement and union: T=⋃nTnT = \bigcup_n T_n with T0={x}T_0 = \{x\}, Tn+1=⋃TnT_{n+1} = \bigcup T_n). The set B={y∈T:y∉⋃αVα}B = \{y \in T : y \notin \bigcup_\alpha V_\alpha\} is non-empty, so by foundation it has an ∈\in-minimal element yy. Every z∈yz \in y lies in TT (transitivity) and not in BB (minimality), so z∈Vαzz \in V_{\alpha_z} for a least ordinal αz\alpha_z. By replacement, {αz:z∈y}\{\alpha_z : z \in y\} is a set, so α=sup⁡{αz+1:z∈y}\alpha = \sup\{\alpha_z + 1 : z \in y\} is an ordinal. By (a), every z∈yz \in y lies in VαV_\alpha; so y⊆Vαy \subseteq V_\alpha and y∈Vα+1y \in V_{\alpha+1} — a contradiction.

∎

So V=⋃αVαV = \bigcup_\alpha V_\alpha, and the rank function is defined everywhere. Since y∈xy \in x implies rank⁡(y)<rank⁡(x)\operatorname{rank}(y) \lt \operatorname{rank}(x), there are no ∈\in-cycles. Over the other axioms, foundation is in fact equivalent to V=⋃αVαV = \bigcup_\alpha V_\alpha: (b) gives one direction, and for the other, an element of least rank in a non-empty set is ∈\in-minimal. Rank is the standard tool for proofs by ∈\in-induction and for cutting proper classes down to sets ("Scott's trick": replace an equivalence class by its elements of least rank).

ProofH

Cofinality and König's theorem

What does ZFC decide about 2κ2^\kappa? Cantor: 2κ>κ2^\kappa \gt \kappa. Monotonicity: κ≤λ\kappa \le \lambda implies 2κ≤2λ2^\kappa \le 2^\lambda. And one more restriction, due to Julius König (1905).

Theorem— König's theorem

(ZFC) For every infinite cardinal κ\kappa: (i) κ<κcf⁡(κ)\kappa \lt \kappa^{\operatorname{cf}(\kappa)}; (ii) cf⁡(2κ)>κ\operatorname{cf}(2^\kappa) \gt \kappa. In particular 2ℵ0≠ℵω2^{\aleph_0} \neq \aleph_\omega.

Proof

(i) Let μ=cf⁡(κ)\mu = \operatorname{cf}(\kappa) and fix an increasing sequence (αi)i<μ(\alpha_i)_{i \lt \mu} cofinal in κ\kappa. Then κ=⋃i<μαi\kappa = \bigcup_{i \lt \mu} \alpha_i with ∣αi∣<κ|\alpha_i| \lt \kappa. Let (fβ)β<κ(f_\beta)_{\beta \lt \kappa} be any κ\kappa-sequence of functions μ→κ\mu \to \kappa; we find a function g:μ→κg : \mu \to \kappa not in it. For each i<μi \lt \mu, the set {fβ(i):β<αi}\{f_\beta(i) : \beta \lt \alpha_i\} has size at most ∣αi∣<κ|\alpha_i| \lt \kappa, so let g(i)g(i) be the least element of κ\kappa not in it. If β<κ\beta \lt \kappa, choose ii with β<αi\beta \lt \alpha_i; then g(i)≠fβ(i)g(i) \neq f_\beta(i). So no map κ→μκ\kappa \to {}^\mu\kappa is onto, and κ<κμ\kappa \lt \kappa^\mu (clearly κ≤κμ\kappa \le \kappa^\mu).

(ii) Let λ=2κ\lambda = 2^\kappa and suppose cf⁡(λ)≤κ\operatorname{cf}(\lambda) \le \kappa. By (i) applied to λ\lambda,

λ<λcf⁡(λ)≤λκ=(2κ)κ=2κ⋅κ=2κ=λ,\lambda \lt \lambda^{\operatorname{cf}(\lambda)} \le \lambda^\kappa = (2^\kappa)^\kappa = 2^{\kappa \cdot \kappa} = 2^\kappa = \lambda,

a contradiction. Finally cf⁡(ℵω)=ω\operatorname{cf}(\aleph_\omega) = \omega, while cf⁡(2ℵ0)>ℵ0\operatorname{cf}(2^{\aleph_0}) \gt \aleph_0.

∎

Remarkably, this is essentially all that ZFC proves about 2κ2^\kappa for regular κ\kappa: by Easton's theorem (1970), any class function FF on regular cardinals that is non-decreasing and satisfies cf⁡(F(κ))>κ\operatorname{cf}(F(\kappa)) \gt \kappa can be the function κ↦2κ\kappa \mapsto 2^\kappa in some forcing extension. For singular cardinals ZFC proves much more — Silver's theorem (1974) that GCH cannot first fail at a singular cardinal of uncountable cofinality, and Shelah's pcf bound 2ℵω<ℵω42^{\aleph_\omega} \lt \aleph_{\omega_4} when ℵω\aleph_\omega is a strong limit.

ProofH

Reflection

Theorem— Reflection principle (Montague 1961; Lévy 1960)

For any finitely many formulas φ1,…,φn\varphi_1, \dots, \varphi_n, ZF proves: for every ordinal β\beta there is a limit ordinal α>β\alpha \gt \beta such that each φi\varphi_i is absolute between VαV_\alpha and VV.

Proof

Close the list under subformulas; it suffices to handle formulas built from atomic ones by ¬\neg, ∧\wedge and ∃\exists. For each formula ∃y ψ(xˉ,y)\exists y\, \psi(\bar x, y) in the list define a class function FψF_\psi on finite tuples: Fψ(xˉ)F_\psi(\bar x) is the least ordinal γ\gamma such that, if some yy satisfies ψ(xˉ,y)\psi(\bar x, y), then some y∈Vγy \in V_\gamma does (it exists by Theorem 1). Put α0=β+1\alpha_0 = \beta + 1 and let αk+1\alpha_{k+1} be greater than αk\alpha_k and than every Fψ(xˉ)F_\psi(\bar x) with xˉ\bar x in VαkV_{\alpha_k} — a set of ordinals, by replacement. Let α=sup⁡kαk\alpha = \sup_k \alpha_k, a limit ordinal. Now show by induction on formulas that each one is absolute for VαV_\alpha: atomic formulas are absolute, the cases ¬\neg and ∧\wedge are immediate, and for ∃y ψ\exists y\, \psi: if xˉ∈Vα\bar x \in V_\alpha, then xˉ∈Vαk\bar x \in V_{\alpha_k} for some kk, so if some yy satisfies ψ(xˉ,y)\psi(\bar x, y) then one lies in Vαk+1⊆VαV_{\alpha_{k+1}} \subseteq V_\alpha, and by the induction hypothesis ψVα(xˉ,y)\psi^{V_\alpha}(\bar x, y); the converse direction is immediate from the induction hypothesis. (This is the Tarski–Vaught criterion.)

∎

Since φVα\varphi^{V_\alpha} is equivalent to "(Vα,∈)⊨φ(V_\alpha, \in) \models \varphi" for the formalised satisfaction relation of set-sized structures, reflection gives: for every finite set Φ\Phi of axioms of ZF, ZF proves "Φ\Phi has a model", hence Con(Φ)\mathrm{Con}(\Phi). If ZF were finitely axiomatisable, it would prove its own consistency, contradicting Gödel's second theorem. So, if ZF is consistent, it is not finitely axiomatisable (Montague 1961). Reflection is also the key to showing that LL satisfies separation.

ProofH

Gödel's constructible universe

Theorem— Gödel (1938)

(ZF) LL is a transitive proper class containing all ordinals, and LL satisfies ZF+(V=L)\mathsf{ZF} + (V = L). Moreover ZF+(V=L)\mathsf{ZF} + (V = L) proves AC and GCH. Consequently, if ZF is consistent, so is ZFC+GCH\mathsf{ZFC} + \mathsf{GCH}.

We outline the proof; Jech (2003, chapter 13) and Kunen (1980, chapters V–VI) give it in full.

  1. LL is a transitive class model. Each LαL_\alpha is transitive, Lα∩Ord=αL_\alpha \cap \mathrm{Ord} = \alpha, and α∈Lα+1\alpha \in L_{\alpha+1} (the ordinals of LαL_\alpha form a definable subset). Extensionality and foundation hold in any transitive class; pairing, union and infinity are routine.
  2. Separation and replacement in LL use reflection: given φ\varphi and a∈Lβa \in L_\beta, reflect φL\varphi^L to some LαL_\alpha with α>β\alpha \gt \beta (the reflection principle holds for the hierarchy LαL_\alpha as for VαV_\alpha); then {x∈a:φL(x)}={x∈a:φLα(x)}\{x \in a : \varphi^L(x)\} = \{x \in a : \varphi^{L_\alpha}(x)\} is definable over LαL_\alpha, so it lies in Lα+1L_{\alpha+1}. Power set: for a∈La \in L, the set P(a)∩L\mathcal{P}(a) \cap L is contained in some LγL_\gamma by replacement, and P(a)∩L∈Lγ+1\mathcal{P}(a) \cap L \in L_{\gamma+1} serves as the power set of aa inside LL.
  3. Absoluteness. The operation A↦Def⁡(A)A \mapsto \operatorname{Def}(A), and hence α↦Lα\alpha \mapsto L_\alpha, is defined by a formula that is absolute for transitive models of ZF. So computing LL inside LL gives LL again: L⊨V=LL \models V = L.
  4. V=LV = L implies AC. Define a well-order <L\lt_L: x<Lyx \lt_L y if xx appears at an earlier stage LαL_\alpha, or at the same stage via an earlier pair (formula, parameters), using the well-order of LαL_\alpha already defined. It is a definable global well-order.
  5. V=LV = L implies GCH. The heart is the condensation lemma: if X≺(Lδ,∈)X \prec (L_\delta, \in) with δ\delta a limit ordinal, the transitive (Mostowski) collapse of XX is some LγL_\gamma with γ≤δ\gamma \le \delta. Given x⊆κx \subseteq \kappa, pick a limit δ\delta with x∈Lδx \in L_\delta and, by Löwenheim–Skolem, X≺LδX \prec L_\delta of size κ\kappa with κ∪{x}⊆X\kappa \cup \{x\} \subseteq X. The collapse fixes each element of κ\kappa, hence fixes xx, and has the form LγL_\gamma with ∣γ∣≤κ|\gamma| \le \kappa. So x∈Lκ+x \in L_{\kappa^+}. Thus P(κ)⊆Lκ+\mathcal{P}(\kappa) \subseteq L_{\kappa^+}, which has cardinality κ+\kappa^+, and 2κ=κ+2^\kappa = \kappa^+.
  6. Relative consistency. Steps 1–5 are proofs in ZF of each axiom of ZFC+GCH\mathsf{ZFC} + \mathsf{GCH} relativised to LL. So a proof of a contradiction from ZFC+GCH\mathsf{ZFC} + \mathsf{GCH} would relativise to a proof of a contradiction from ZF. This argument is purely syntactic: it needs no set model of ZF.

Note

Relative versus absolute. Gödel's theorem proves Con(ZF)→Con(ZFC+GCH)\mathrm{Con}(\mathsf{ZF}) \to \mathrm{Con}(\mathsf{ZFC} + \mathsf{GCH}), for instance in PA\mathsf{PA}. It does not prove Con(ZFC+GCH)\mathrm{Con}(\mathsf{ZFC} + \mathsf{GCH}) outright — and nothing formalisable in ZFC can (by Gödel's second theorem), unless ZFC is inconsistent.

Formal mathematicsF

The hierarchy and König's theorem in Lean

Mathlib models ZFC sets as the type ZFSet, built from well-founded trees; foundation is therefore a theorem, and Mathlib defines the von Neumann hierarchy and the rank function. The recursion equations of the hierarchy:

vonNeumann_succLean 4Applies a library theoremFormally verified
/-- The successor step of the cumulative hierarchy: `V_{α+1} = 𝒫(V_α)`.
This applies Mathlib's `ZFSet.vonNeumann_add_one`. -/
theorem vonNeumann_succ (α : Ordinal) :
    ZFSet.vonNeumann (α + 1) = ZFSet.powerset (ZFSet.vonNeumann α) :=
  ZFSet.vonNeumann_add_one α
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor
vonNeumann_limitLean 4Applies a library theoremFormally verified
/-- The limit step: for a limit ordinal `λ` (or `0`), `V_λ = ⋃_{α<λ} V_α`.
This applies Mathlib's `ZFSet.vonNeumann_of_isSuccPrelimit`. -/
theorem vonNeumann_limit {l : Ordinal} (h : Order.IsSuccPrelimit l) :
    ZFSet.vonNeumann l = ZFSet.iUnion fun α : Set.Iio l => ZFSet.vonNeumann α :=
  ZFSet.vonNeumann_of_isSuccPrelimit h
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor

Every set appears in the hierarchy (Theorem 1(b)) — the one-line proof shows how much work the rank function does:

mem_vonNeumann_succ_rankLean 4Proved here from basic factsFormally verified
/-- **Every set appears in the hierarchy**, at the stage after its rank: `x ∈ V_{rank(x)+1}`.
Here `rank` is defined by ∈-recursion, `rank x = sup {rank y + 1 | y ∈ x}`, which is possible
because membership is well founded (the axiom of foundation); Mathlib shows `x ∈ V_α` iff
`rank x < α` (`ZFSet.mem_vonNeumann`). -/
theorem mem_vonNeumann_succ_rank (x : ZFSet) :
    x ∈ ZFSet.vonNeumann (Order.succ (ZFSet.rank x)) :=
  ZFSet.mem_vonNeumann.mpr (Order.lt_succ (ZFSet.rank x))
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor
exists_mem_vonNeumannLean 4Applies a library theoremFormally verified
/-- `V = ⋃_α V_α`: every set lies in some `V_α`. This applies `ZFSet.exists_mem_vonNeumann`. -/
theorem exists_mem_vonNeumann (x : ZFSet) : ∃ α, x ∈ ZFSet.vonNeumann α :=
  ZFSet.exists_mem_vonNeumann x
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor
not_mem_selfLean 4Proved here from basic factsFormally verified
/-- No set is a member of itself. Proof via rank: `y ∈ x` implies `rank y < rank x`, so `x ∈ x`
would give `rank x < rank x`. (Mathlib proves the same as `ZFSet.mem_irrefl`.) -/
theorem not_mem_self (x : ZFSet) : x ∉ x := fun h =>
  lt_irrefl _ (ZFSet.rank_lt_of_mem h)
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor
no_mem_two_cycleLean 4Proved here from basic factsFormally verified
/-- There are no membership 2-cycles `x ∈ y ∈ x`: their ranks would satisfy
`rank x < rank y < rank x`. The same argument excludes cycles of every length. -/
theorem no_mem_two_cycle (x y : ZFSet) : ¬ (x ∈ y ∧ y ∈ x) := fun ⟨hxy, hyx⟩ =>
  lt_irrefl _ ((ZFSet.rank_lt_of_mem hxy).trans (ZFSet.rank_lt_of_mem hyx))
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor
card_vonNeumannLean 4Applies a library theoremFormally verified
/-- The size of the hierarchy: `|V_α| = ℶ'_α` (Mathlib's `preBeth`: `0, 1, 2, 4, 16, …` for
finite `α`, and `ℶ_α` from `ω` on, since `V_{α+1} = 𝒫(V_α)` has `2^|V_α|` elements). This applies
`ZFSet.card_vonNeumann`. -/
theorem card_vonNeumann (α : Ordinal) : (ZFSet.vonNeumann α).card = preBeth α :=
  ZFSet.card_vonNeumann α
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor

König's inequality κ<κcf⁡κ\kappa \lt \kappa^{\operatorname{cf}\kappa} is in Mathlib; its corollary is proved here by the same calc chain as in part (ii) of the proof above. In Mathlib, c.ord.cof is the cofinality of the initial ordinal of the cardinal c.

koenig_power_cofLean 4Applies a library theoremFormally verified
/-- **König's theorem**, in the form `κ < κ^cf(κ)` for infinite `κ`: an infinite cardinal is
smaller than the number of `cf(κ)`-sequences from it. (It follows from `∑ᵢ κᵢ < ∏ᵢ λᵢ` when
`κᵢ < λᵢ`, Mathlib's `Cardinal.sum_lt_prod`.) This applies `Cardinal.lt_power_cof_ord`; here
`c.ord.cof` is the cofinality of the initial ordinal of `c`. -/
theorem koenig_power_cof {κ : Cardinal} (hκ : ℵ₀ ≤ κ) : κ < κ ^ κ.ord.cof :=
  lt_power_cof_ord hκ
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor
koenig_cof_two_powerLean 4Proved here from basic factsFormally verified
/-- **König's corollary: `cf(2^κ) > κ`** for every infinite cardinal `κ`. Proof as in the lesson:
put `λ = 2^κ` and suppose `cf(λ) ≤ κ`. Then
`λ < λ^cf(λ) ≤ λ^κ = 2^(κ·κ) = 2^κ = λ`, a contradiction. -/
theorem koenig_cof_two_power {κ : Cardinal} (hκ : ℵ₀ ≤ κ) :
    κ < ((2 : Cardinal) ^ κ).ord.cof := by
  by_contra h
  push Not at h
  have hl : ℵ₀ ≤ (2 : Cardinal) ^ κ := hκ.trans (cantor κ).le
  have hne : (2 : Cardinal) ^ κ ≠ 0 := power_ne_zero κ two_ne_zero
  have hle : ((2 : Cardinal) ^ κ) ^ ((2 : Cardinal) ^ κ).ord.cof ≤ (2 : Cardinal) ^ κ :=
    calc ((2 : Cardinal) ^ κ) ^ ((2 : Cardinal) ^ κ).ord.cof
        ≤ ((2 : Cardinal) ^ κ) ^ κ := power_le_power_left hne h
      _ = (2 : Cardinal) ^ (κ * κ) := power_mul.symm
      _ = (2 : Cardinal) ^ κ := by rw [mul_eq_self hκ]
  exact absurd (koenig_power_cof hl) (not_lt.mpr hle)
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor
koenig_cof_two_power_libraryLean 4Applies a library theoremFormally verified
/-- The same corollary from Mathlib, for any base `b > 1`: `κ < cf(b^κ)`.
This applies `Cardinal.lt_cof_ord_power`. -/
theorem koenig_cof_two_power_library {κ : Cardinal} (hκ : ℵ₀ ≤ κ) :
    κ < ((2 : Cardinal) ^ κ).ord.cof :=
  lt_cof_ord_power hκ one_lt_two
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor
two_power_aleph0_ne_aleph_omegaLean 4Proved here from basic factsFormally verified
/-- **The continuum is not `ℵ_ω`.** The cardinal `ℵ_ω = sup {ℵₙ | n < ω}` has cofinality `ℵ₀`,
while König gives `cf(2^ℵ₀) > ℵ₀`. Here `ℵ_ω` is `ℵ_ ω` and its initial ordinal is `ω_ ω`, whose
cofinality equals that of `ω` (Mathlib's `Ordinal.cof_omega`). -/
theorem two_power_aleph0_ne_aleph_omega : (2 : Cardinal) ^ ℵ₀ ≠ ℵ_ ω := by
  intro h
  have hk := koenig_cof_two_power (le_refl ℵ₀)
  rw [h, ord_aleph, cof_omega isSuccLimit_omega0, cof_omega0] at hk
  exact lt_irrefl _ hk
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor

The statement of GCH, and the fact that it implies CH:

GCHLean 4Formally verified
/-- The **generalised continuum hypothesis**: `2^κ = κ⁺` for every infinite cardinal `κ`, where
`κ⁺ = Order.succ κ` is the next cardinal. Gödel showed that it holds in `L`, so it is consistent
with ZFC (if ZF is); Cohen showed that its negation is consistent too. -/
def GCH : Prop :=
  ∀ κ : Cardinal.{u}, ℵ₀ ≤ κ → 2 ^ κ = Order.succ κ
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor
gch_continuumLean 4Proved here from basic factsFormally verified
/-- GCH implies CH: `2^ℵ₀ = ℵ₁`, since the successor cardinal of `ℵ₀` is `ℵ₁`
(`Cardinal.succ_aleph0`). -/
theorem gch_continuum (h : GCH.{u}) : (2 : Cardinal.{u}) ^ ℵ₀ = ℵ₁ := by
  rw [h ℵ₀ le_rfl, succ_aleph0]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/AxiomaticSetTheory.leanTry it in the Lean web editor

Not formalised: LL, absoluteness, reflection and condensation — Mathlib has no formalised satisfaction relation for formulas of set theory inside ZFSet, and so neither Gödel's nor Cohen's theorem. A remark on foundations: Lean can construct a model of ZFC (the type ZFSet) without contradicting Gödel's second theorem because Lean's type theory, with its hierarchy of universes, is stronger than ZFC — its strength is roughly that of ZFC with inaccessible cardinals (Carneiro, 2019).

ComputationC

The finite stages, computed

Ackermann's coding identifies hereditarily finite sets with natural numbers: y∈xy \in x if and only if bit number yy of xx is 11. In this coding VkV_{k} is exactly the set of numbers below ∣Vk∣|V_k|, and the experiment checks the rank characterisation x∈Vk  ⟺  rank⁡(x)<kx \in V_k \iff \operatorname{rank}(x) \lt k, transitivity and foundation exhaustively for the 6553665536 sets of V5V_5.

The cumulative hierarchy V_0, ..., V_5 in Ackermann's codingPythonExact computationExhaustive finite checkComputationally tested
"""The first stages of the cumulative hierarchy, computed exactly.

The hereditarily finite sets - the members of V_omega - can be coded by natural
numbers (Ackermann 1937): the code of a set x is the sum of 2^code(y) over its
members y, so "y is a member of x" means "bit number code(y) of code(x) is 1".
The empty set has code 0, and every natural number codes exactly one set.

In this coding V_{k+1} = P(V_k) becomes a statement about numbers: the stage
V_k consists exactly of the codes below |V_k|, and |V_{k+1}| = 2^|V_k|. We
compute the stages up to V_5 (65536 sets), compute the rank of each set by the
recursion rank(x) = sup{rank(y) + 1 : y in x}, and check exhaustively that
x is in V_k iff rank(x) < k, that every stage is transitive, and that every
non-empty set in V_5 has an element disjoint from it (the axiom of foundation).

Runs unchanged in the browser (Pyodide) using only the standard library.
"""

from collections import Counter
from functools import lru_cache
import textwrap

def members(code):
    """Codes of the members of the set with this code (its 1-bits)."""
    if code < 0:
        raise ValueError("codes are natural numbers")
    return [y for y in range(code.bit_length()) if code >> y & 1]

def from_members(codes):
    """Code of the set whose members have the given codes."""
    return sum(1 << y for y in set(codes))

@lru_cache(maxsize=None)
def rank(code):
    """rank(x) = sup{rank(y) + 1 : y in x}, by recursion on membership."""
    return max((rank(y) + 1 for y in members(code)), default=0)

def stage_sizes(k):
    """|V_0|, ..., |V_k|, using |V_0| = 0 and |V_{j+1}| = 2^|V_j|."""
    sizes = [0]
    for _ in range(k):
        sizes.append(2 ** sizes[-1])
    return sizes

def stage(k):
    """The codes in V_k, built by iterating the power set from V_0 = {}.

    Each subset of the current stage (a bitmask s over its members) is coded
    incrementally: removing the lowest member of s gives a smaller subset.
    """
    current = []
    for _ in range(k):
        codes = [0] * (1 << len(current))
        for s in range(1, len(codes)):
            low = s & -s
            codes[s] = codes[s ^ low] + (1 << current[low.bit_length() - 1])
        current = sorted(codes)
    return current

def ranks_below(n):
    """rank(x) for every code x < n, by the same recursion: the rank of x is the
    larger of rank(x minus its least member y) and rank(y) + 1."""
    ranks = [0] * n
    for x in range(1, n):
        low = x & -x
        ranks[x] = max(ranks[x ^ low], ranks[low.bit_length() - 1] + 1)
    return ranks

def is_transitive(code):
    """Is every member of a member also a member?"""
    return all(y & ~code == 0 for y in members(code))

def has_minimal_member(code):
    """Foundation: a non-empty set has a member y with y and x disjoint."""
    return any(y & code == 0 for y in members(code))

def von_neumann(n):
    """Code of the von Neumann ordinal n = {0, 1, ..., n - 1}."""
    code = 0
    for _ in range(n):
        code += 1 << code
    return code

def show(code):
    """The set as nested braces, with 0 written as the empty set {}."""
    return "{" + ", ".join(show(y) for y in members(code)) + "}"

def main():
    sizes = stage_sizes(5)
    print(f"|V_0|, ..., |V_5| = {sizes}")
    v5 = stage(5)
    print(f"V_5 built by iterating the power set: {len(v5)} sets; "
          f"equal to codes 0..{sizes[5] - 1}: {v5 == list(range(sizes[5]))}")
    ranks = ranks_below(sizes[5])
    ok = all((ranks[c] < k) == (c < sizes[k]) for k in range(6)
             for c in range(sizes[5]))
    print(f"x in V_k  <=>  rank(x) < k, for all x in V_5 and k <= 5: {ok}")
    print(f"sets in V_5 by rank: {dict(sorted(Counter(ranks).items()))}")
    # The set V_k has the codes 0..|V_k|-1 as members, so its code is 2^|V_k| - 1.
    trans = all(is_transitive(2 ** sizes[k] - 1) for k in range(5))
    print(f"the sets V_0, ..., V_4 are transitive: {trans}")
    found = all(has_minimal_member(c) for c in range(1, sizes[5]))
    print(f"every non-empty x in V_5 has a member disjoint from x: {found}")
    print()
    print("Some codes:")
    for name, code in [("ordinal 2", von_neumann(2)), ("ordinal 3", von_neumann(3)),
                       ("ordinal 4", von_neumann(4)),
                       ("pair (0, 1)", from_members([from_members([0]),
                                                     from_members([0, 1])]))]:
        text = show(code) if len(show(code)) <= 40 else "(too long to print)"
        print(f"   {name:<11} code {code:>4}  rank {rank(code)}  {text}")
    print(f"   V_3 as a set: code {2 ** sizes[3] - 1}, {show(2 ** sizes[3] - 1)}")
    print()
    print(textwrap.fill(
        "Epistemic status: exact and exhaustive for the 65536 sets of V_5. It "
        "illustrates the theorems V_(k+1) = P(V_k) and 'x is in V_alpha iff "
        "rank(x) < alpha' at finite stages only; the infinite stages, and the "
        "fact that every set appears at some stage, are proved in the lesson "
        "from the axioms of replacement and foundation.",
        width=78,
    ))

if __name__ == "__main__":
    main()
Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.

This is exact evidence about finite stages only: the transfinite stages, and the fact that every set appears at some stage, are the theorems proved above.

Explore

Explore: building sets from nothing

The widget builds hereditarily finite sets — the members of VωV_\omega — as nested boxes. Start from the empty box and repeatedly form new sets from those on the shelf. Try to build all four elements of V3V_3: ∅\varnothing, {∅}\{\varnothing\}, {{∅}}\{\{\varnothing\}\} and {∅,{∅}}\{\varnothing, \{\varnothing\}\}. What is the rank of each? Which of them are ordinals?

Boxes inside boxes

Start with one empty box. Build new collections by putting boxes into boxes.

Select one box to wrap, or several to put together.

Exercises

Exercises

1. Axiomatic set theory: hierarchy, cardinal arithmetic and L

Warm-upHuman

How many elements does V5V_5 have? (Recall V0=∅V_0 = \varnothing and Vn+1=P(Vn)V_{n+1} = \mathcal{P}(V_n).)

2. Axiomatic set theory: hierarchy, cardinal arithmetic and L

CoreHuman

Assuming ZFC, which of these cardinals are singular? Choose all that apply.

Choose all that apply

3. Axiomatic set theory: hierarchy, cardinal arithmetic and L

CoreHuman

Which of these values of 2ℵ02^{\aleph_0} does ZFC rule out? Choose all that apply.

Choose all that apply

4. Axiomatic set theory: hierarchy, cardinal arithmetic and L

CoreHuman

In the proof that every set lies in some VαV_\alpha, we form α=sup⁡{αz+1:z∈y}\alpha = \sup\{\alpha_z + 1 : z \in y\}. Which axiom guarantees that this supremum exists?

Choose one

5. Axiomatic set theory: hierarchy, cardinal arithmetic and L

CoreHuman

What exactly did Gödel's work on LL establish?

Choose one

6. Axiomatic set theory: hierarchy, cardinal arithmetic and L

StretchHuman

Which axioms hold in (Vω+ω,∈)(V_{\omega+\omega}, \in)? Choose all that apply.

Choose all that apply

7. Axiomatic set theory: hierarchy, cardinal arithmetic and L

Warm-upFormal

Which Lean statement correctly formalises the generalised continuum hypothesis?

Choose one

8. Axiomatic set theory: hierarchy, cardinal arithmetic and L

CoreFormal

The Lean proof of two_power_aleph0_ne_aleph_omega rewrites the inequality ℵ0<cf⁡(2ℵ0)\aleph_0 \lt \operatorname{cf}(2^{\aleph_0}) using ord_aleph, cof_omega isSuccLimit_omega0 and cof_omega0. Which mathematical fact does this chain of rewrites establish?

Choose one

9. Axiomatic set theory: hierarchy, cardinal arithmetic and L

StretchComputational

In Ackermann's coding, the natural number xx codes the set whose members are the numbers yy with bit yy of xx equal to 11. Write rank(x), computing rank⁡(x)=sup⁡{rank⁡(y)+1:y∈x}\operatorname{rank}(x) = \sup\{\operatorname{rank}(y) + 1 : y \in x\} (and 00 for x=0x = 0).

Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.
Common misconceptionsH

Common misconceptions

Misconception

"LL is the universe of all sets." LL is an inner model. The axiom V=LV = L is consistent with ZFC (if ZF is) but not provable from it: by forcing, if ZF is consistent so is ZFC + V≠LV \neq L. Large cardinal axioms such as the existence of a measurable cardinal even imply V≠LV \neq L (Scott, 1961).

Misconception

"Gödel proved that GCH is consistent." He proved it is consistent relative to ZF: Con(ZF)→Con(ZFC+GCH)\mathrm{Con}(\mathsf{ZF}) \to \mathrm{Con}(\mathsf{ZFC} + \mathsf{GCH}). An absolute consistency proof is impossible within ZFC, by the second incompleteness theorem.

Misconception

"The continuum must be a regular cardinal." König forbids only cofinality ω\omega. 2ℵ0=ℵω12^{\aleph_0} = \aleph_{\omega_1}, a singular cardinal of cofinality ω1\omega_1, is consistent with ZFC.

Misconception

"Foundation is needed for ordinary mathematics." Almost nothing in ordinary mathematics uses it: one can work in ZFC without foundation, inside which the well-founded sets ⋃αVα\bigcup_\alpha V_\alpha form a model of full ZFC. Foundation's role is to make the universe exactly the cumulative hierarchy.

ViewpointsH

Many ways of seeing

Topology— Cofinality as a topological invariant

Give an ordinal λ+1\lambda + 1 the order topology. A limit ordinal λ\lambda is the limit of a sequence (αn)n∈ω(\alpha_n)_{n \in \omega} with αn<λ\alpha_n \lt \lambda exactly when cf⁡(λ)=ω\operatorname{cf}(\lambda) = \omega; more generally cf⁡(λ)\operatorname{cf}(\lambda) is the least cardinality of a set S⊆λS \subseteq \lambda with λ\lambda in its closure. The space [0,ω1)[0, \omega_1) is sequentially compact but not compact, because cf⁡(ω1)=ω1\operatorname{cf}(\omega_1) = \omega_1: every countable subset is bounded. Closed unbounded ("club") subsets of a regular uncountable κ\kappa are closed in this topology, and the club filter and stationary sets are basic tools of combinatorial set theory. See point-set topology.

Analysis— Where transfinite recursion came from

Cantor invented the transfinite ordinals in analysis. Studying sets of uniqueness for trigonometric series (1872), he iterated the derived set operation P↦P′P \mapsto P' (remove isolated points): P′,P′′,…,P(ω)=⋂nP(n),P(ω+1),…P', P'', \dots, P^{(\omega)} = \bigcap_n P^{(n)}, P^{(\omega+1)}, \dots — a transfinite recursion of exactly the kind that defines VαV_\alpha. For a closed set of reals the sequence stabilises at a countable ordinal (the Cantor–Bendixson rank), which leads to the perfect set theorem of descriptive set theory. In the other direction, V=LV = L decides questions of analysis that ZFC leaves open: in LL there is a non-Lebesgue-measurable set of reals that is Δ21\boldsymbol{\Delta}^1_2, a projection of the complement of a projection of a closed set.

Algebra— Whitehead's problem

An abelian group AA is a Whitehead group if every surjective homomorphism B→AB \to A with kernel Z\Z splits (Ext⁡(A,Z)=0\operatorname{Ext}(A, \Z) = 0). Free abelian groups are Whitehead, and Stein showed that countable Whitehead groups are free. Is every Whitehead group free? Shelah (1974) proved that this is independent of ZFC: under V=LV = L every Whitehead group is free, while under Martin's axiom with ¬CH\neg\mathrm{CH} there is a non-free Whitehead group of cardinality ℵ1\aleph_1. A question of pure algebra turned out to depend on the shape of the universe of sets (see homological algebra).

Category theory— Universes and structural set theory

Category theorists need "large" collections such as the category of all groups. Grothendieck's solution was a universe: a set closed under the ZFC operations. The uncountable Grothendieck universes are exactly the sets VκV_\kappa with κ\kappa strongly inaccessible, so "every set lies in a universe" is a large cardinal axiom. Lawvere's ETCS describes sets structurally, by the category of sets and functions (see elementary topoi); it captures much of ordinary mathematics but has no counterpart of the global membership tree, and is equiconsistent with a weak fragment of ZFC (bounded Zermelo set theory with choice). The cumulative hierarchy is a specifically material picture of sets.

Logic— Inner models

LL is the smallest inner model: any transitive proper class model of ZF contains it. Inner model theory builds larger canonical models, L[U]L[U] for a measurable cardinal and beyond, that can accommodate large cardinals while keeping LL's fine structure (Jensen, 1972). In LL itself Jensen's principle ♢\diamondsuit holds, giving a Suslin line — so Suslin's hypothesis fails in LL, another statement whose independence the forcing lesson completes.

Wonder Trails

Wonder Trail

The same tower of sets, built from empty boxes, is explored for young learners in this trail — useful if you ever explain VωV_\omega to a child.

Wonder Trail · Optional · never gradedBoxes inside boxesWhat is inside a box that contains only an empty box? Is it empty? And can every description you can think of make a collection?Follow the trail
History & global context

History and context

  • Georg Cantor created the theory of ordinals and cardinals (1872–1897) and posed the continuum hypothesis (1878). Julius König (Hungary) presented his result on cofinality in 1904–05, in a lecture that also claimed — wrongly — that the continuum cannot be well-ordered.
  • Felix Hausdorff introduced cofinality and singular and regular cardinals (1908) and stated GCH in terms of alephs. Ernst Zermelo axiomatised set theory in 1908; Abraham Fraenkel and Thoralf Skolem added replacement (1922); John von Neumann formulated foundation and the rank hierarchy (1925–29), and Zermelo's 1930 paper described the cumulative hierarchy and its levels VκV_\kappa as models.
  • Kurt Gödel announced the consistency of AC and GCH relative to ZF in 1938 and published the full proof in 1940. Wacław Sierpiński showed in 1947 that GCH implies AC over ZF.
  • Azriel Lévy (1960) and Richard Montague (1961) proved the reflection principle. Paul Cohen (1963) proved the independence of CH and AC; William Easton (1970) determined the possible behaviour of 2κ2^\kappa at regular cardinals.
  • Jack Silver (1974) and Saharon Shelah (from the 1970s) proved deep ZFC theorems about singular cardinals; Ronald Jensen (1972) developed the fine structure of LL.
Further reading

Further reading

  • Thomas Jech, Set Theory (Third Millennium Edition, 2003) — chapters 3, 5 and 12–13 for the hierarchy, cardinal arithmetic, reflection and LL.
  • Kenneth Kunen, Set Theory: An Introduction to Independence Proofs (1980; revised edition Set Theory, 2011) — chapters III–VI.
  • Keith J. Devlin, Constructibility (1984) — LL and its fine structure.
  • Akihiro Kanamori, The Higher Infinite (1994; 2nd edition 2003) — the large cardinal and inner model landscape.
  • Karel Hrbacek and Thomas Jech, Introduction to Set Theory (3rd edition, 1999) — background on ordinals and cardinals.