The ZFC Axioms
Where do sets come from? The naive answer — "any collection of things you can describe is a
set" — sounds harmless, and for a while everyone believed it. Then in 1901 Bertrand Russell asked a
single devastating question and the whole edifice fell over. Modern set theory rebuilt itself on a
short, careful list of rules: the Zermelo–Fraenkel axioms, plus the
Axiom of Choice — together
ZFC. Almost all of mathematics can be encoded inside them.
Russell's paradox. Let R be the set of all sets that do
not contain themselves: R = \{\, x : x \notin x \,\}. Now ask
whether R \in R. If it is, then by its own defining rule it isn't; if it
isn't, then it qualifies, so it is. Either way, contradiction —
R \in R \iff R \notin R. "Any describable collection is a set" is
simply false. ZFC dodges the paradox by never letting you form a set from a
property alone: you may only carve subsets out of a set you already have (Separation).
One idea: sets are built, not conjured
The single idea running through every ZFC axiom is this: you cannot summon a set from a
description — you must build it from sets you already have, starting from nothing. Each
axiom is a licensed construction move. Together they say which sets are allowed to exist, and the
paradoxes are locked out because there is no move that produces a "set of everything."
The universe is bootstrapped from the empty set. Everything — numbers, functions, the real line — is
ultimately a set of sets of sets of … the empty set. The natural numbers, for instance, are coded as
0 = \varnothing,\quad 1 = \{\varnothing\},\quad 2 = \{\varnothing, \{\varnothing\}\},\quad n+1 = n \cup \{n\}.
// Von Neumann numbers: each n is the set {0, 1, ..., n-1}, built from the empty set.
type FiniteSet = FiniteSet[]; // a set is a list of its members (each itself a set)
function vonNeumann(n: number): FiniteSet {
const s: FiniteSet = [];
for (let k = 0; k < n; k++) s.push(vonNeumann(k)); // n = {0, 1, ..., n-1}
return s;
}
const show = (s: FiniteSet): string => "{" + s.map(show).join(", ") + "}";
for (let n = 0; n <= 4; n++) console.log(n + " = " + show(vonNeumann(n)));
console.log("size of 4 as a set: " + vonNeumann(4).length + " members");
The axioms, in plain words
Here is the whole toolkit. Each line is a rule for when a set exists or when two sets are equal.
- Extensionality — two sets are equal exactly when they have the same members.
A set is nothing but its elements.
- Pairing — for any a, b there is a set
\{a, b\}.
- Union — for any set of sets, the set of all their members exists:
\bigcup A.
- Power Set — for any A the set of all its
subsets
\mathcal{P}(A) exists.
- Separation (a schema) — from a set A and a property
\varphi you may form the subset
\{\, x \in A : \varphi(x) \,\}. Never a "set of all
x with \varphi" — always carved from an
existing A.
- Replacement (a schema) — the image of a set under a definable function is a
set.
- Infinity — there exists an infinite set (one containing
\varnothing and closed under x \mapsto x \cup \{x\}),
giving \mathbb{N}.
- Foundation (Regularity) — every non-empty set has a
\in-minimal member; no set contains itself, no infinite descending
\in-chains.
- Choice — every collection of non-empty sets has a
choice function
picking one element from each.
The first eight (without Choice) are ZF; add Choice and you have ZFC.
Two of them — Separation and Replacement — are schemas: not single axioms but one
axiom for each property \varphi, so ZFC actually has infinitely many
axioms.
Why each guard matters
Separation is the paradox-killer. Russell's R = \{x : x \notin x\}
is forbidden because there is no ambient set to carve it from; the most you can form is
\{\, x \in A : x \notin x \,\} for some existing A,
and that harmlessly turns out to just not be an element of A.
Foundation outlaws the pathological x \in x directly.
Infinity is the one axiom that hands you an actually-infinite object — without it you
could only ever build finite sets. Power Set is what makes the tower of
ever-larger infinities possible.
Yes — and mathematicians fretted about it for decades. The other axioms feel like plain
book-keeping; Choice asserts a selection exists without giving any rule for making it. For
finitely many sets you don't need it, and even for infinitely many with a rule (pick the
smallest natural in each) you don't. You need Choice precisely when there's no describable way to
pick — e.g. one sock from each of infinitely many identical pairs. Gödel (1938) and Cohen (1963)
proved Choice can neither be proved nor disproved from ZF: it is independent. Most
mathematicians accept it, because giving it up breaks too many good theorems.
-
ZFC is not "all of mathematics is obviously true." By Gödel's incompleteness
theorems, ZFC (if consistent) can neither prove its own consistency nor settle every question —
the Continuum Hypothesis is the
famous undecidable one.
-
Separation ≠ Comprehension. The naive "set of all x
with property \varphi" (unrestricted comprehension) is exactly what
causes Russell's paradox. ZFC only allows bounded Separation:
\{x \in A : \varphi(x)\}, carved from a set already known to exist.