After Gödel, the other half
Gödel's constructible universe (see axiomatic set theory) showed that the continuum hypothesis cannot be refuted from ZFC, if ZF is consistent. For twenty-five years nobody could show that it cannot be proved. The difficulty is that is the smallest possible model; to make large one must build models with more sets, and there was no method for adding sets to a model of ZFC while keeping all the axioms true.
In 1963 Paul Cohen found one. Starting from a countable transitive model , he adjoined a new set — a generic filter on a partial order of "conditions" — and showed that the resulting model still satisfies ZFC, has the same ordinals as , and can be arranged to satisfy . The method, forcing, has since shown hundreds of natural statements to be independent of ZFC, in set theory, topology, algebra and analysis.
Adjoining a generic object
We want to add to a new real number . We cannot describe inside — then it would already be in . Instead we describe the finite pieces of information about : the conditions are finite partial functions from to , and is stronger than if it extends it. A set of conditions is dense if every condition can be strengthened into : dense sets are requirements that a good should meet, such as " is decided" or " differs from the real somewhere". A filter is generic if it meets every dense set that can see. Then is total and different from every real in .
Statements about the new model are controlled by conditions: forces if holds in for every generic containing . The miracle of forcing is that this relation can be computed inside , so "knows" what its extensions will look like without being able to name the generic object.
Analogy, not a formal construction
Adjoining to produces the smallest field containing and , and every element of has a name with . Similarly is the smallest transitive model of ZFC containing and , and every element of has a name in . The analogy is loose: satisfies an equation over , whereas a generic is characterised by satisfying no special property describable in — it is "transcendental" over in the strongest sense.
Definitions
Definition— independence and relative consistency
A sentence is independent of ZFC if and . Since an inconsistent theory proves everything, independence implies , which ZFC cannot prove. So set theorists prove relative consistency statements such as , and "CH is independent" means: if ZFC is consistent, it neither proves nor refutes CH.
Definition— forcing notion, dense sets, generic filters
A forcing notion is a preorder with a largest element ; means " is stronger than ". Conditions are compatible if some satisfies and ; an antichain is a set of pairwise incompatible conditions. A set is dense if every has some in . A filter is a non-empty that is upward closed and in which any two elements have a common extension in . If is a model containing , a filter is -generic if it meets every dense set with .
Definition— countable transitive model
A countable transitive model (ctm) is a countable set , transitive (), such that satisfies the axioms in question (all of ZFC, or a large enough finite part — see the remark on metamathematics). Transitivity makes , ordinals, functions and finite sets mean the same in as in .
Definition— names and the generic extension
By recursion, a -name is a set of pairs where is a -name and ; let be the set of -names in . For a filter , the interpretation of a name is , and the generic extension is . Each has the check name with , and satisfies .
Definition— the forcing relation
For , a formula and names , means: for every -generic with , .
Definition— Cohen forcing and the ccc
For a set , is the set of finite partial functions from to , ordered by reverse inclusion ( iff ), with . Cohen forcing adding reals is . A forcing notion has the countable chain condition (ccc) if every antichain is countable.
Generic filters: existence, non-examples, Cohen reals
Theorem— Rasiowa–Sikorski lemma
If is a preorder, , and is a countable family of dense subsets of , there is a filter with meeting every . In particular, if is a ctm and , then -generic filters exist.
Proof
Enumerate . Put and, using density, choose with . Then is a filter (two members lie above and , hence both above ) and meets each at . If is countable, so is the family of dense sets belonging to .
∎
Example— Trivial forcing
If is finite, every filter contains a common extension of its finitely many members, and then ; so and . Forcing does something only when conditions keep splitting, as the next lemma shows.
Theorem— Lemma (generic filters are new)
Suppose every condition of has two incompatible extensions, and is -generic. Then .
Proof
If , then is in , and it is dense: any has incompatible extensions , and a filter cannot contain both, so one of them is in . But does not meet , contradicting genericity.
∎
The lemma also explains why we cannot simply force over the whole universe : there is no filter meeting every dense set, because is always dense. A ctm has only countably many dense sets, which Rasiowa–Sikorski can meet.
Theorem— Theorem (Cohen reals)
Let be a ctm, and an -generic filter. Then is a function from to , and .
Proof
Any two members of are compatible, so is a function. For , is dense and in , so meets it and . For , the set is dense (extend at a new point by ) and in ; a condition shows .
∎
The generic extension and the failure of CH
Theorem— Generic model theorem (Cohen 1963)
Let be a ctm of ZFC, a forcing notion and an -generic filter. Then is a ctm of ZFC, , , and have the same ordinals, and every transitive model of ZF containing contains .
Theorem— Forcing theorem
(Truth) if and only if for some . (Definability) For each , the relation — for and — is definable in .
Both are proved by defining, inside , a relation by recursion on formulas and on the ranks of names — for atomic formulas by a simultaneous recursion, and then iff no forces , iff for every name — and showing by induction that agrees with , using genericity at the negation step. The ZFC axioms in then follow: pairing, union and infinity by explicit names; separation and power set from definability of forcing; replacement from reflection in . Kunen (1980, chapter VII) gives every detail.
To make CH fail we need two more ingredients: a combinatorial lemma, and the fact that ccc forcing does not collapse cardinals.
Theorem— Δ-system lemma
Every uncountable family of finite sets has an uncountable subfamily that is a Δ-system: there is a finite set (the root) with for all distinct .
Proof
Uncountably many members of have the same size , so assume all do, and induct on . For , distinct singletons are pairwise disjoint (root ). For : if some point lies in uncountably many members, apply the induction hypothesis to and add back to the root. Otherwise every point lies in only countably many members; then choose for by recursion, each disjoint from — possible because this union is countable and only countably many members meet it. The are pairwise disjoint.
∎
Theorem— Lemma (Cohen forcing is ccc)
For every set , has the countable chain condition.
Proof
Let be uncountably many conditions. By the Δ-system lemma, uncountably many of the domains form a Δ-system with root . There are only functions , so uncountably many of these agree on . Any two of them agree where their domains overlap, so their union is a common extension: they are compatible. Hence there is no uncountable antichain.
∎
A ccc forcing preserves cardinals (and cofinalities). In outline: if maps into (with ), fix a name and a condition forcing that is such a function. In let be the set of for which some forces . Conditions forcing different values are incompatible, so by the ccc each is countable, and by the truth lemma. If in some mapped an infinite onto an -cardinal , then in the countable sets , , would cover , giving .
Theorem— Cohen (1963): Con(ZFC) implies Con(ZFC + ¬CH)
Let be a ctm of ZFC, let , and let be -generic for . Then .
Proof
Let (a function, total by density) and . For in the set of conditions with for some is dense and in , so . Hence is an injection, in , of into . By the ccc, preserves cardinals, so , and .
∎
Counting "nice names" shows more precisely that whenever . Combined with Gödel's : if ZFC is consistent, it neither proves nor refutes CH.
Note
Metamathematics. We do not know that a ctm of ZFC exists — its existence implies . The relative consistency proof avoids it: if proved a contradiction, the proof would use finitely many axioms . By reflection, Löwenheim–Skolem and the Mostowski collapse, ZFC proves that every finite fragment of ZFC has a ctm; choosing a fragment large enough that the argument above makes satisfy , ZFC would prove that has a model, hence is consistent — contradicting the assumed proof of a contradiction. Alternatively, Boolean-valued models (Scott, Solovay, Vopěnka) force over itself without any countable model.
What forcing has shown
- The continuum function. Easton (1970): for regular cardinals, can be any class function that is non-decreasing and satisfies (König's restriction) — forced by a class-sized product of Cohen-type forcings. At singular cardinals the picture is subtler (Silver, Shelah's pcf theory, and Magidor's and Gitik's large-cardinal forcing constructions).
- Suslin's hypothesis (a complete dense linear order without endpoints in which every family of pairwise disjoint open intervals is countable is isomorphic to ) is independent: Jech (1967) and Tennenbaum (1968) forced a Suslin line, and Solovay and Tennenbaum (1971) used iterated ccc forcing to make Suslin's hypothesis true.
- Martin's axiom (Martin and Solovay, 1970) — "for every ccc forcing and fewer than dense sets there is a filter meeting them all" — is consistent with CH and settles many questions of topology and analysis.
- Choice and measurability. Cohen also showed that AC is independent of ZF (using symmetric submodels). Solovay (1970), starting from an inaccessible cardinal, built a model of in which every set of reals is Lebesgue measurable.
- Algebra and analysis. Shelah's solution of Whitehead's problem (1974) and the Dales–Esterle / Solovay–Woodin results on automatic continuity show that questions of pure algebra and analysis can be independent.
- Forcing axioms. Shelah's proper forcing and the forcing axioms PFA and MM (Baumgartner; Foreman, Magidor and Shelah) decide many such questions; PFA implies (Todorčević; Veličković).
The combinatorics of genericity in Lean
Mathlib does not formalise forcing over models of ZFC. The Lean module formalises the combinatorial core of Cohen forcing, using conditions that are finite binary strings (equivalent, as a forcing, to ). It uses the extension order, in which p ≤ q means "q extends p"; in that order Mathlib's Order.Cofinal sets are the dense sets and Mathlib's Order.Ideals are the filters.
/-- **Cohen forcing**: a condition is a finite binary string `p = (p₀, …, p_{k-1})`, a finite
approximation to an infinite binary sequence ("a real"). -/
structure Cohen where
/-- The finite binary string. -/
bits : List Bool/-- The extension order: `p ≤ q` iff `p` is an initial segment (prefix) of `q`, i.e. `q` carries
at least as much information as `p`. -/
instance instPreorder : Preorder Cohen where
le p q := p.bits <+: q.bits
le_refl p := List.prefix_refl p.bits
le_trans _ _ _ := List.IsPrefix.trans/-- The `i`-th bit decided by the condition `p`, if `p` is long enough. -/
def bit (p : Cohen) (i : ℕ) : Option Bool := p.bits[i]?/-- Stronger conditions keep the decisions of weaker ones: if `p ≤ q` and `p` says bit `i` is
`b`, so does `q`. -/
theorem bit_mono {p q : Cohen} (h : p ≤ q) {i : ℕ} {b : Bool} (hb : bit p i = some b) :
bit q i = some b := by
obtain ⟨hi, rfl⟩ := List.getElem?_eq_some_iff.mp hb
exact List.prefix_iff_getElem?.mp h i hiThe two families of dense sets used in the proof of the Cohen-real theorem:
/-- For each `n`, the set of conditions that decide bit `n` is **dense**: any condition can be
extended (by padding with zeros) to one of length greater than `n`. -/
theorem decides_dense (n : ℕ) : IsCofinal {p : Cohen | (bit p n).isSome} := by
intro p
refine ⟨⟨p.bits ++ List.replicate (n + 1) false⟩, ?_, List.prefix_append _ _⟩
show (p.bits ++ List.replicate (n + 1) false)[n]?.isSome
rw [Option.isSome_iff_ne_none, Ne, List.getElem?_eq_none_iff, not_le,
List.length_append, List.length_replicate]
omega/-- For each real `x : ℕ → Bool`, the set of conditions that **disagree with `x` somewhere** is
dense: extend `p` by one bit, the opposite of `x` at position `length p`. Meeting this set is
how a generic real escapes `x` — a diagonal argument, one step at a time. -/
theorem avoids_dense (x : ℕ → Bool) : IsCofinal {p : Cohen | ∃ i, bit p i = some (!x i)} := by
intro p
refine ⟨⟨p.bits ++ [!x p.bits.length]⟩, ⟨p.bits.length, ?_⟩, List.prefix_append _ _⟩
show (p.bits ++ [!x p.bits.length])[p.bits.length]? = _
simp/-- The dense set "bit `n` is decided", bundled as a Mathlib `Order.Cofinal`. -/
def decides (n : ℕ) : Order.Cofinal Cohen := ⟨{p | (bit p n).isSome}, decides_dense n⟩/-- The dense set "disagrees with `x` somewhere", bundled as a Mathlib `Order.Cofinal`. -/
def avoids (x : ℕ → Bool) : Order.Cofinal Cohen :=
⟨{p | ∃ i, bit p i = some (!x i)}, avoids_dense x⟩Mathlib proves the Rasiowa–Sikorski lemma (Order.idealOfCofinals):
/-- **The Rasiowa–Sikorski lemma**: for any *countable* family of dense sets in a preorder there
is a filter (here: an `Order.Ideal` of the extension order) meeting all of them. Its proof
builds a sequence `p₀ ≤ p₁ ≤ ⋯` with `p_{n+1}` in the `n`-th dense set. This applies Mathlib's
`Order.idealOfCofinals` and `Order.cofinal_meets_idealOfCofinals`. -/
theorem rasiowa_sikorski {P : Type*} [Preorder P] (p : P) {ι : Type*} [Encodable ι]
(D : ι → Order.Cofinal P) : ∃ G : Order.Ideal P, p ∈ G ∧ ∀ i, ∃ q ∈ D i, q ∈ G :=
⟨Order.idealOfCofinals p D, Order.mem_idealOfCofinals p D,
Order.cofinal_meets_idealOfCofinals p D⟩A filter meeting every decides n determines a real, and meeting avoids x makes it different from x. With the countable list standing for the reals of a ctm , this is the Cohen-real theorem:
/-- **A generic filter determines a real.** If a filter `G` meets every dense set `decides n`,
the conditions in `G` are compatible finite approximations of a single real `g`: every bit
decided by a member of `G` is the corresponding bit of `g`.
Proof: choose `pₙ ∈ G` deciding bit `n` and let `g n` be that bit. If `p ∈ G` decides bit `n`
as `b`, then `p` and `pₙ` have a common extension `r ∈ G` (directedness), which decides bit `n`
both as `b` and as `g n`. -/
theorem generic_real (G : Order.Ideal Cohen) (hG : ∀ n, ∃ p ∈ decides n, p ∈ G) :
∃ g : ℕ → Bool, ∀ p ∈ G, ∀ i b, bit p i = some b → g i = b := by
choose q hqD hqG using hG
-- `q n ∈ G` decides bit `n`; read that bit off.
have hsome : ∀ n, ∃ b, bit (q n) n = some b := fun n => Option.isSome_iff_exists.mp (hqD n)
choose g hg using hsome
refine ⟨g, fun p hp i b hb => ?_⟩
obtain ⟨r, -, hpr, hqr⟩ := G.directed p hp (q i) (hqG i)
have h1 : bit r i = some b := bit_mono hpr hb
have h2 : bit r i = some (g i) := bit_mono hqr (hg i)
exact Option.some.inj (h2.symm.trans h1)/-- **Cohen reals are new.** For every countable list `x₀, x₁, …` of reals there is a real `g`
different from all of them — obtained, as in forcing, from a filter meeting the countably many
dense sets `decides n` and `avoids xₖ`. With the list taken to be the reals of a countable
transitive model `M`, this is the statement that the Cohen real of `M[G]` is not in `M`.
(Cantor's diagonal argument, rebuilt from genericity.) -/
theorem cohen_real_not_in_list (xs : ℕ → ℕ → Bool) : ∃ g : ℕ → Bool, ∀ k, g ≠ xs k := by
obtain ⟨G, -, hG⟩ := rasiowa_sikorski (⟨[]⟩ : Cohen)
(fun j : ℕ ⊕ ℕ => Sum.elim decides (fun k => avoids (xs k)) j)
obtain ⟨g, hg⟩ := generic_real G (fun n => hG (Sum.inl n))
refine ⟨g, fun k hk => ?_⟩
obtain ⟨p, ⟨i, hi⟩, hpG⟩ := hG (Sum.inr k)
have := hg p hpG i _ hi
rw [hk] at this
exact Bool.not_ne_self (xs k i) this.symmAnd the reason forcing starts from a countable model — no filter meets every dense set:
/-- **No filter meets every dense set.** For any filter `G`, the complement of `G` is dense, and
`G` does not meet it. Proof: any `p` has the two incompatible extensions `p⌢0` and `p⌢1`; a
filter cannot contain both (they have no common extension), so one lies outside `G`. This is why
forcing begins with a *countable* model `M`: we only ask `G` to meet the dense sets that belong
to `M`, and then `G ∉ M`. -/
theorem no_filter_meets_every_dense (G : Order.Ideal Cohen) :
∃ D : Set Cohen, IsCofinal D ∧ ∀ p ∈ D, p ∉ G := by
refine ⟨(G : Set Cohen)ᶜ, ?_, fun p hp => hp⟩
intro p
by_contra h
push Not at h
-- Both one-bit extensions of `p` would lie in `G` ...
have hin : ∀ b : Bool, (⟨p.bits ++ [b]⟩ : Cohen) ∈ (G : Set Cohen) := by
intro b
by_contra hb
exact h _ hb (List.prefix_append _ _)
-- ... so they would have a common extension `r`, forcing `p⌢1 = p⌢0`.
obtain ⟨r, -, h1, h2⟩ := G.directed _ (hin true) _ (hin false)
have hpre := List.prefix_of_prefix_length_le h1 h2 (by simp)
have heq := hpre.eq_of_length (by simp)
simp at heqNot formalised here: names, the forcing relation and the forcing theorem, , the Δ-system lemma, the ccc and preservation of cardinals. The full independence of CH has been formalised elsewhere: in Lean 3 by Jesse Michael Han and Floris van Doorn (the Flypitch project, 2019–2020, with Boolean-valued models) and in Isabelle/ZF by Emmanuel Gunther, Miguel Pagano, Pedro Sánchez Terraf and Matías Steinberg (with countable transitive models).
Building a generic real
The experiment runs the Rasiowa–Sikorski construction against a finite stand-in for a ground model: a list of reals given by rules (primes, squares, the Thue–Morse sequence, the binary digits of , and every eventually periodic sequence with short preperiod and period). It meets the dense sets "decide bit " and "disagree with " in turn, and checks that the resulting condition disagrees with every listed real. Then it checks the other half: the filter of initial segments of a real misses the dense set "disagree with ".
"""Building a Cohen generic real against a list of "ground model" reals.
In Cohen forcing a condition is a finite binary string, and a stronger
condition extends it. A dense set is a requirement that every condition can
be extended to meet: "decide bit n", or "disagree with the real x somewhere".
A filter meeting countably many dense sets is built step by step (the
Rasiowa-Sikorski lemma): extend the current condition into the next dense
set, forever.
Here the "ground model" is a finite stand-in: a list of reals given by rules
(some famous sequences, and every eventually periodic sequence with short
preperiod and period). We meet the dense sets "avoid x" for each listed real
and "decide bit n" for n < 32, interleaved, and check that the resulting
condition disagrees with every listed real - the generic real is new. Then
we check the other half of the story: the filter of initial segments of any
real g misses the dense set "disagree with g", so no filter meets every dense
set.
Runs unchanged in the browser (Pyodide) using only the standard library.
"""
from itertools import product
from math import isqrt
import textwrap
def _prime(n):
"""Trial-division primality test."""
return n >= 2 and all(n % d for d in range(2, isqrt(n) + 1))
def _eventually_periodic(pre, cycle):
"""The real pre + cycle + cycle + ... as a rule."""
return lambda n: pre[n] if n < len(pre) else cycle[(n - len(pre)) % len(cycle)]
def ground_reals():
"""A list of (name, rule) pairs standing in for the reals of a model M."""
reals = [
("primes", lambda n: int(_prime(n))),
("squares", lambda n: int(isqrt(n) ** 2 == n)),
("Thue-Morse", lambda n: bin(n).count("1") % 2),
("sqrt 2 digits", lambda n: isqrt(2 << (2 * (n + 1))) & 1),
]
for pre_len in range(3):
for cycle_len in range(1, 4):
for bits in product((0, 1), repeat=pre_len + cycle_len):
pre, cycle = bits[:pre_len], bits[pre_len:]
name = "".join(map(str, pre)) + "(" + "".join(map(str, cycle)) + ")"
reals.append((name, _eventually_periodic(pre, cycle)))
return reals
def meet_decide(p, n):
"""Extend p (if needed) so that it decides bit n, padding with zeros."""
return p + (0,) * max(0, n + 1 - len(p))
def disagreement(p, x):
"""A position where condition p disagrees with the real x, or None."""
return next((i for i, b in enumerate(p) if b != x(i)), None)
def meet_avoid(p, x):
"""Extend p (if needed) so that it disagrees with x somewhere."""
if disagreement(p, x) is not None:
return p
return p + (1 - x(len(p)),)
def build_generic(reals, bits):
"""Meet 'avoid x_k' and 'decide n' alternately; return the final condition
and the list of conditions p_0 <= p_1 <= ... that were built."""
p, chain = (), [()]
for step in range(max(len(reals), bits)):
if step < len(reals):
p = meet_avoid(p, reals[step][1])
chain.append(p)
if step < bits:
p = meet_decide(p, step)
chain.append(p)
return p, chain
def is_chain(conditions):
"""Is each condition an initial segment of the next (a descending chain)?"""
return all(q[:len(p)] == p for p, q in zip(conditions, conditions[1:]))
def main():
reals = ground_reals()
g, chain = build_generic(reals, 32)
print(f"Ground reals listed: {len(reals)} rules (some repeat a real)")
print(f"Dense sets met: {len(reals)} of the form 'avoid x', 32 'decide bit n'")
print(f"Conditions built: {len(chain)}, each extending the last: {is_chain(chain)}")
print(f"Generic condition, {len(g)} bits:")
text = "".join(map(str, g))
for start in range(0, len(text), 64):
print(" " + text[start:start + 64])
positions = [disagreement(g, x) for _, x in reals]
print(f"Disagrees with every listed real: {all(i is not None for i in positions)}")
for name, x in reals[:6]:
print(f" {name:<14} first disagreement at bit {disagreement(g, x)}")
print(f" ... and {len(reals) - 6} eventually periodic reals")
print()
real_g = _eventually_periodic(g, (0,))
misses = all(disagreement(g[:k], real_g) is None for k in range(len(g) + 1))
print("The filter of initial segments of g (padded with zeros) contains no")
print(f"condition disagreeing with g: {misses} - it misses that dense set.")
print()
print(textwrap.fill(
"Epistemic status: exact computation for a finite list of reals and "
"finitely many dense sets. It illustrates the Rasiowa-Sikorski "
"construction and why a generic real is new; the real theorem - that "
"for a countable transitive model M a generic G exists, G is not in M, "
"and M[G] satisfies ZFC - is proved in the lesson, not here.",
width=78,
))
if __name__ == "__main__":
main()This is exact evidence about one finite construction; the theorems — existence of generics over a ctm, , — are proved above.
Explore: genericity is diagonalisation
Meeting the dense set "disagree with " is one step of a diagonal argument. In the widget, the flipped diagonal escapes every listed sequence; a Cohen generic does the same against all the reals of , one dense set at a time, and also meets every other requirement that can formulate.
The diagonal machine
Here is a list of infinite 0–1 sequences (we can only show the start). The gold sequence d flips the diagonal.
| s1 | … | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| s2 | … | ||||||||||
| s3 | … | ||||||||||
| s4 | … | ||||||||||
| s5 | … | ||||||||||
| s6 | … | ||||||||||
| d | 1 | 0 | 1 | 0 | 0 | 1 | ? | ? | ? | ? | … |
Point at (or tab to) a row to see where d differs from it. Click any digit to change the list.
Add d to the list and a new d appears that is different again. No list — however long — can contain every sequence.
Notice the difference from Cantor's argument: Cantor builds one particular sequence from the list, whereas a generic real is not built from anything in ; any real that meets the countably many dense sets of will do.
Exercises
1. Forcing and independence
Warm-upHumanIn Cohen forcing (finite partial functions, stronger = larger), which of these sets are dense? Choose all that apply.
2. Forcing and independence
Warm-upHumanHow many conditions does have, i.e. how many partial functions from to are there (including the empty function )?
3. Forcing and independence
CoreHumanWhy does the classical presentation of forcing start from a countable transitive model ?
4. Forcing and independence
CoreHumanIn the proof that an -generic filter (for a forcing in which every condition has two incompatible extensions) is not in , which dense set does fail to meet if ?
5. Forcing and independence
CoreHumanThe proof that has the countable chain condition takes uncountably many conditions . What is the key step?
6. Forcing and independence
StretchHumanAssuming ZFC is consistent, which of these statements are independent of ZFC? Choose all that apply.
7. Forcing and independence
CoreFormalThe Lean file orders Cohen conditions by extension: p ≤ q means q extends p. In this order, what does Mathlib's Order.Ideal Cohen correspond to in forcing?
8. Forcing and independence
CoreFormalThe theorem no_filter_meets_every_dense (G : Order.Ideal Cohen) : ∃ D : Set Cohen, IsCofinal D ∧ ∀ p ∈ D, p ∉ G is proved with which witness D?
9. Forcing and independence
StretchComputationalWrite escape(reals, n): given a list of reals (functions from naturals to ) and , return a tuple of bits of length at least that disagrees with every listed real at some position. This is the Rasiowa–Sikorski construction for the dense sets 'decide bit ' () and 'disagree with '.
Common misconceptions
Misconception
"If CH is independent, the question is meaningless." Independence means that ZFC does not settle it. Some set theorists regard CH as having a definite truth value to be found by new, justified axioms (Gödel's view; Woodin's programme), others as having no single answer (Hamkins's multiverse view). Mathematically, independence is a precise theorem about provability.
Misconception
"Forcing needs a countable transitive model of ZFC to exist." Formal relative consistency proofs use ctms of finite fragments, which ZFC proves to exist, or Boolean-valued models, which need no countable model at all. The ctm presentation is a convenient fiction that can always be eliminated.
Misconception
" is with one new element." contains and everything definable from it and parameters in — the interpretations of all names — for instance many new reals in Cohen's model. It is the least transitive model of ZF containing .
Misconception
"Forcing shows that CH is false." Forcing produces models of CH; is a model of CH. Neither shows what is true "in "; together they show that ZFC proves neither.
Many ways of seeing
Topology— Generic means comeagre
Give the product topology. A dense set of Cohen conditions determines the open set , where is the basic clopen set of reals extending , and is dense in . Meeting means . So a Cohen real over lies in the intersection of countably many dense open sets, and the Rasiowa–Sikorski lemma is the Baire category theorem in disguise. Precisely, is Cohen-generic over if and only if belongs to no meagre Borel set coded in (Solovay). In general a forcing notion carries a topology whose regular open sets form the complete Boolean algebra , and forcing with is forcing with .
Probability— Random reals
Replace "meagre" by "measure zero": random forcing (Solovay, 1970) has as conditions the Borel subsets of of positive Lebesgue measure, ordered by inclusion. A random real over lies in no null Borel set coded in — it is "typical" in the sense of probability, passing every statistical test that can describe. Adding random reals also makes CH fail, but the resulting model differs from Cohen's: for instance, random forcing adds no Cohen real. The duality between category and measure (Oxtoby) becomes a duality between forcings.
Analysis— Independence in analysis
Is every algebra homomorphism from (continuous functions on a compact Hausdorff space) into a Banach algebra continuous? Kaplansky asked this. Dales and Esterle (independently, around 1976–78) showed that under CH there is a discontinuous one; Solovay and Woodin showed that it is consistent with ZFC that every such homomorphism is continuous. Forcing thus settled a question of functional analysis by showing it undecidable. Solovay's model, in which every set of reals is Lebesgue measurable (in ), shows that the use of choice in constructing non-measurable sets is unavoidable (see measure theory).
Category theory— Sheaves on the poset of conditions
Lawvere and Tierney recast Cohen's proof in topos theory (Tierney, 1972): take the category of sheaves on the poset for the double-negation (dense) topology. This is a Boolean topos with a natural number object and a monomorphism from the constant object on into the power object of , in which the internal continuum hypothesis fails. Mac Lane and Moerdijk (1992, chapter VI) present the independence of CH in this way. The topos has no points, the categorical form of "no filter meets every dense set": a generic filter is a point that exists only from the outside. See elementary topoi.
Logic— Boolean-valued models
Scott, Solovay and Vopěnka (1965–67) replaced the generic filter by truth values: for a complete Boolean algebra , the universe of -valued sets assigns to each sentence a value , with every axiom of ZFC receiving value . For , . Forcing becomes order: corresponds to . Quotienting by any ultrafilter gives a two-valued (possibly ill-founded) model; over a ctm with a generic ultrafilter one recovers .
Wonder Trail
Cantor's diagonal argument — the first step of every genericity argument — is explored for younger learners here.
Wonder Trail · Optional · never gradedHow many infinities?There are infinitely many counting numbers and infinitely many infinite 0–1 sequences. Are these two infinities the same size?Follow the trailHistory and context
- Paul Cohen announced the independence of CH and AC in 1963 (published in the Proceedings of the National Academy of Sciences, 1963–64) and received the Fields Medal in 1966; his book Set Theory and the Continuum Hypothesis appeared in 1966.
- Robert Solovay, Dana Scott and, independently in Prague, Petr Vopěnka developed Boolean-valued models (1965–67). Solovay's random reals and his measurable model followed in 1970.
- William Easton (1970) determined the possible values of at regular cardinals. Donald A. Martin and Solovay (1970) introduced Martin's axiom, and Solovay and Stanley Tennenbaum (1971) proved the consistency of Suslin's hypothesis; Thomas Jech and Tennenbaum had forced Suslin lines in 1967–68.
- Saharon Shelah developed proper forcing and solved Whitehead's problem (1974); Myles Tierney and F. William Lawvere reformulated the independence of CH in topos theory (1972); Stevo Todorčević, Boban Veličković and others analysed forcing axioms.
Further reading
- Kenneth Kunen, Set Theory: An Introduction to Independence Proofs (1980; revised edition Set Theory, 2011) — chapters VII–VIII, the standard first course.
- Thomas Jech, Set Theory (Third Millennium Edition, 2003) — chapters 14–15 and the later chapters on iterated forcing.
- Paul J. Cohen, Set Theory and the Continuum Hypothesis (1966).
- Nik Weaver, Forcing for Mathematicians (2014) — a short route for non-specialists.
- Timothy Y. Chow, "A beginner's guide to forcing" (2009) — the ideas without the technicalities.
- John L. Bell, Set Theory: Boolean-Valued Models and Independence Proofs (3rd edition, 2005).
- Saunders Mac Lane and Ieke Moerdijk, Sheaves in Geometry and Logic (1992), chapter VI.