A set is hereditarily finite if it is finite, all of its elements are finite, all elements of its elements are finite, and so on — every set in its transitive closure is finite. The collection of all hereditarily finite sets forms V_ω, the union of the first ω levels of the cumulative hierarchy: V₀ = ∅, V₁ = {∅}, V₂ = {∅, {∅}}, and so on. V_ω is a model of all ZFC axioms except the axiom of infinity (which it necessarily violates, since ω ∉ V_ω). This makes V_ω a concrete demonstration that the axiom of infinity is independent of the other axioms — without it, the set-theoretic universe can be entirely finite. V_ω also provides a natural bijection with the natural numbers via Ackermann coding, connecting finite set theory to arithmetic.
Build V₀ through V₅ explicitly, counting elements at each level (0, 1, 2, 4, 16, 65536). Verify that V_ω satisfies pairing, union, power set, separation, replacement, extensionality, regularity, and choice. Then show it fails infinity by observing that no element of V_ω is an inductive set. Explore Ackermann coding: assign each hereditarily finite set a natural number by treating its elements' codes as binary digit positions.
You know from the von Neumann ordinals that the cumulative hierarchy builds up set theory stage by stage: V₀ = ∅, and each subsequent stage Vₙ₊₁ = P(Vₙ) adds all subsets of what came before. The hereditarily finite sets are exactly the sets that appear in this hierarchy before step ω — the collection V_ω = V₀ ∪ V₁ ∪ V₂ ∪ ···. A set is hereditarily finite if it is finite, its elements are finite, the elements of those elements are finite, and so on all the way down. The "hereditarily" qualifier means finiteness is not just a surface property but penetrates the entire membership tree.
Building V_ω level by level gives a feel for how quickly it grows: V₀ = ∅ (0 elements), V₁ = {∅} (1 element), V₂ = {∅, {∅}} (2 elements), V₃ has 4 elements, V₄ has 16, V₅ has 65,536. Each level is the power set of the previous one — |Vₙ₊₁| = 2^|Vₙ| — so growth is doubly exponential. Despite this, V_ω itself is countably infinite: it is a countable union of finite sets, so it has the same cardinality as ℕ. And because the axiom of infinity asserts the existence of an inductive set — a set containing ∅ and closed under the successor operation — V_ω fails to satisfy this axiom: ω itself (the set of all natural numbers) is not in V_ω, so no inductive set exists within V_ω.
This makes V_ω a model of ZFC minus infinity. You can verify that it satisfies extensionality (sets are equal iff they have the same members), pairing (for any two elements, their unordered pair is in V_ω), union, power set (the power set of any hereditarily finite set is hereditarily finite), separation, replacement, regularity, and choice — all the ZFC axioms except infinity. The existence of this model proves that the axiom of infinity is independent of the remaining axioms: you cannot derive it from them (otherwise V_ω would satisfy it), and its negation is consistent with them (V_ω witnesses this).
The Ackermann coding connects V_ω to ℕ bijectively: assign each hereditarily finite set s a natural number code(s) = Σ_{x ∈ s} 2^{code(x)}. This works recursively because ∅ gets code 0, {∅} gets code 2⁰ = 1, {∅, {∅}} gets code 2⁰ + 2¹ = 3, and so on. The coding is a bijection V_ω ↔ ℕ that translates set membership (x ∈ y) into an arithmetic condition (the code(x)-th bit of code(y) is 1). This means the theory of V_ω is bi-interpretable with Peano arithmetic: any question about hereditarily finite sets can be translated into a question about natural numbers, and vice versa. Far from being a toy universe, V_ω encodes all of finite combinatorics, finite graphs, finite groups, and anything else built from finite structures — making it a foundational bridge between set theory and arithmetic.