Skip to content
The Lumenary
First-year graduateGraduate 140 min

Descriptive set theory

Classifying sets of reals by how they can be defined — the Borel hierarchy, analytic sets, Suslin's theorem and the perfect set property, where topology, set theory and logic meet.

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

Lebesgue's mistake

In 1905 Henri Lebesgue, studying functions "representable analytically", asserted in passing that the projection of a Borel subset of the plane onto a line is again Borel. The proof looked routine: projection commutes with unions. It does not commute with intersections, and around 1916 Mikhail Suslin, a student of Nikolai Lusin in Moscow, found the error. He defined the class of analytic sets — projections of Borel sets — and proved that it is strictly larger than the class of Borel sets, while still behaving well: every uncountable analytic set has the cardinality of the continuum.

This launched descriptive set theory: the study of definable sets of reals and of other Polish spaces, organised by the complexity of their definitions. Its guiding theme is that definable sets are well behaved — no definable set should be a counterexample to the continuum hypothesis, or non-measurable — and its methods combine point-set topology, set theory and logic. Today it is also a tool: it measures the complexity of classification problems in algebra and dynamics, and it explains which constructions in analysis need the axiom of choice.

IntuitionH

Complexity as quantifiers

Membership in an open subset of R\R is witnessed by finite information: x∈Ux \in U because some rational interval around xx lies in UU — an existential quantifier over N\N. A closed set is the complement: x∈Fx \in F if no finite approximation refutes it — a universal quantifier over N\N. Each further alternation of quantifiers over N\N climbs a level of the Borel hierarchy: GδG_\delta sets are "∀n ∃m\forall n\, \exists m", FσδF_{\sigma\delta} sets are "∀n ∃m ∀k\forall n\, \exists m\, \forall k", and so on transfinitely.

A projection adds a quantifier over a whole real: x∈π[B]x \in \pi[B] iff there exists yy with (x,y)∈B(x, y) \in B. That is a different kind of quantifier — a search through uncountably many candidates — and it is why projections escape the Borel sets. In Baire space NN\N^\N such a search is a search for an infinite branch through a tree.

∅01000110000…0010…010…100…
A closed subset of Cantor space $2^\N$ is the set of infinite branches of a tree of finite binary strings. Here: the sequences with at most one $1$. Its branches are $000\ldots$ and the sequences $0\cdots 0 1 0 0 \ldots$; every branch except $000\ldots$ is isolated, so this closed set is countable.
DefinitionsH

Polish spaces, trees and hierarchies

Definition— Polish space

A topological space is Polish if it is separable and completely metrisable. Examples: Rn\R^n, [0,1][0, 1], C\C, every separable Banach space, Baire space N=NN\mathcal N = \N^\N and Cantor space C=2N\mathcal C = 2^\N (product topologies), and the irrationals R∖Q\R \setminus \Q, which are homeomorphic to N\mathcal N via continued fractions. Countable products and GδG_\delta subspaces of Polish spaces are Polish. Q\Q is not Polish (by the Baire category theorem).

Definition— trees

A tree on a set AA is a set TT of finite sequences from AA closed under initial segments; its body [T][T] is the set of infinite sequences all of whose initial segments lie in TT. TT is pruned if every node has a proper extension in TT, and well-founded if [T]=∅[T] = \varnothing. The basic open sets of ANA^\N are Ns={x:s⊂x}N_s = \{x : s \subset x\}. The closed subsets of ANA^\N are exactly the bodies of (pruned) trees: F=[TF]F = [T_F] with TF={x↾n:x∈F,n∈N}T_F = \{x \restriction n : x \in F, n \in \N\}.

Definition— the Borel hierarchy

In a metrisable space XX, let Σ10\Sigma^0_1 be the open sets; for 1≤α<ω11 \le \alpha \lt \omega_1 let Πα0\Pi^0_\alpha be the complements of Σα0\Sigma^0_\alpha sets, and let Σα0\Sigma^0_\alpha (for α>1\alpha \gt 1) consist of countable unions of sets in ⋃β<αΠβ0\bigcup_{\beta \lt \alpha} \Pi^0_\beta. Put Δα0=Σα0∩Πα0\Delta^0_\alpha = \Sigma^0_\alpha \cap \Pi^0_\alpha. So Π10\Pi^0_1 = closed, Σ20=Fσ\Sigma^0_2 = F_\sigma, Π20=Gδ\Pi^0_2 = G_\delta. The Borel sets — the smallest σ\sigma-algebra containing the open sets — are ⋃α<ω1Σα0\bigcup_{\alpha \lt \omega_1} \Sigma^0_\alpha. (These are the classical "boldface" classes, often printed in bold.)

Definition— analytic, coanalytic, projective

A subset AA of a Polish space XX is analytic (Σ11\Sigma^1_1) if it is empty or a continuous image of N\mathcal N; equivalently, the projection of a closed subset of X×NX \times \mathcal N, or of a Borel subset of X×YX \times Y for some Polish YY. It is coanalytic (Π11\Pi^1_1) if its complement is analytic, and Δ11=Σ11∩Π11\Delta^1_1 = \Sigma^1_1 \cap \Pi^1_1. The projective hierarchy continues: Σn+11\Sigma^1_{n+1} sets are projections of Πn1\Pi^1_n sets, Πn+11\Pi^1_{n+1} their complements.

Definition— perfect set property

A set is perfect if it is closed, non-empty and has no isolated points. A set AA has the perfect set property if it is countable or contains a perfect subset. A non-empty perfect subset of a Polish space contains a homeomorphic copy of C\mathcal C, so it has cardinality 2ℵ02^{\aleph_0}; hence no set with the perfect set property is a counterexample to CH.

Explore

The hierarchy at a glance

Hooked arrows are inclusions, all proper in any uncountable Polish space (Lebesgue, using universal sets). The Borel hierarchy has ω1\omega_1 levels; above it come the projective classes, starting with the analytic and coanalytic sets, whose intersection is exactly the Borel sets by Suslin's theorem.

Σ10\Sigma^0_1
Π10\Pi^0_1
Δ20\Delta^0_2
Σ20\Sigma^0_2
Π20\Pi^0_2
Δ30\Delta^0_3
Δ11\Delta^1_1
Σ11\Sigma^1_1
Π11\Pi^1_1
⋯\cdots
The Borel hierarchy (open, closed, FσF_\sigma, GδG_\delta, …, through all countable ordinals) and the first projective classes. Δ11\Delta^1_1 is the class of Borel sets.

Try placing sets on the diagram as you read: a closed interval, Q\Q, the irrationals, the set of sequences in 2N2^\N with infinitely many 11s, the set of everywhere-differentiable functions in C[0,1]C[0, 1].

Worked examplesH

Locating sets

Example— Rationals and irrationals

Q⊆R\Q \subseteq \R is a countable union of closed singletons, so it is Σ20\Sigma^0_2. It is not Π20\Pi^0_2: the irrationals are a dense GδG_\delta, and if Q\Q were a GδG_\delta too, the Baire category theorem would make the empty set Q∩(R∖Q)\Q \cap (\R \setminus \Q) dense. Dually the irrationals are Π20\Pi^0_2 but not Σ20\Sigma^0_2. (The formal section proves this in Lean.)

Example— Sets of sequences

In 2N2^\N: {x:x(0)=1}\{x : x(0) = 1\} is clopen; {x:∃n x(n)=1}\{x : \exists n\, x(n) = 1\} is open, not closed; {x:x has infinitely many 1s}=⋂n⋃m>n{x:x(m)=1}\{x : x \text{ has infinitely many } 1\text{s}\} = \bigcap_n \bigcup_{m \gt n} \{x : x(m) = 1\} is Π20\Pi^0_2, and by the same Baire category argument not Σ20\Sigma^0_2; the set of xx whose averages 1n∑i<nx(i)\frac1n \sum_{i \lt n} x(i) converge to 12\frac12 is Π30\Pi^0_3 ("for every kk there is NN such that for all n≥Nn \ge N the average is within 1/k1/k").

Example— Beyond Borel

Coding trees on N\N by points of 2N<N2^{\N^{\lt\N}}, the set IF\mathrm{IF} of ill-founded trees (those with an infinite branch) is analytic: T∈IFT \in \mathrm{IF} iff ∃x∈N  ∀n  x↾n∈T\exists x \in \mathcal N\; \forall n\; x \restriction n \in T. The set WF\mathrm{WF} of well-founded trees is coanalytic. Neither is Borel; they are complete for their classes. Mazurkiewicz (1936) showed that the set of everywhere-differentiable functions in C[0,1]C[0, 1] is coanalytic but not Borel — a natural set of analysis beyond the Borel hierarchy.

ProofH

The perfect set theorem and Suslin's theorem

Throughout, XX is a Polish space with a compatible complete metric dd.

Theorem— Perfect set theorem for analytic sets (Suslin 1917)

Every uncountable analytic set A⊆XA \subseteq X contains a homeomorphic copy of C\mathcal C. In particular it contains a perfect set and has cardinality 2ℵ02^{\aleph_0}.

Proof

Let A=f[N]A = f[\mathcal N] with f:N→Xf : \mathcal N \to X continuous. Let UU be the union of all basic open sets NsN_s with f[Ns]f[N_s] countable; f[U]f[U] is countable, being a countable union of countable sets. Put F=N∖UF = \mathcal N \setminus U, a closed set, non-empty since AA is uncountable.

Key property: if Ns∩F≠∅N_s \cap F \neq \varnothing then f[Ns∩F]f[N_s \cap F] is uncountable. Otherwise f[Ns]⊆f[Ns∩F]∪f[U]f[N_s] \subseteq f[N_s \cap F] \cup f[U] would be countable, so Ns⊆UN_s \subseteq U, contradicting Ns∩F≠∅N_s \cap F \neq \varnothing.

We assign to each finite binary string uu a finite sequence su∈N<Ns_u \in \N^{\lt\N} with Nsu∩F≠∅N_{s_u} \cap F \neq \varnothing. Let s∅=∅s_\varnothing = \varnothing. Given sus_u, the key property gives y0,y1∈Nsu∩Fy_0, y_1 \in N_{s_u} \cap F with f(y0)≠f(y1)f(y_0) \neq f(y_1). Choose disjoint closed balls B0∋f(y0)B_0 \ni f(y_0) and B1∋f(y1)B_1 \ni f(y_1) of radius at most 2−∣u∣2^{-|u|}. By continuity of ff at yiy_i there is a proper extension su⌢is_{u\frown i} of sus_u with yi∈Nsu⌢iy_i \in N_{s_{u\frown i}} and f[Nsu⌢i]⊆Bif[N_{s_{u\frown i}}] \subseteq B_i.

For z∈Cz \in \mathcal C, the sequences sz↾ns_{z \restriction n} extend one another and their lengths increase, so they converge to a point yz∈Ny_z \in \mathcal N; since each Nsz↾nN_{s_{z\restriction n}} meets the closed set FF, yz∈Fy_z \in F. The map g(z)=f(yz)g(z) = f(y_z) is continuous. It is injective: if z≠z′z \neq z' first differ at place nn, then g(z)g(z) and g(z′)g(z') lie in the two disjoint balls chosen at stage u=z↾nu = z \restriction n. As C\mathcal C is compact, gg is a homeomorphism onto g[C]⊆Ag[\mathcal C] \subseteq A, a compact set without isolated points.

∎

So no analytic set is a counterexample to CH. For closed sets this is the Cantor–Bendixson theorem; for Borel sets it was proved by Alexandrov and by Hausdorff (1916).

Two sets P,QP, Q are Borel-separated if some Borel set CC satisfies P⊆CP \subseteq C and C∩Q=∅C \cap Q = \varnothing.

Theorem— Lemma (separation is countably additive)

If P=⋃mPmP = \bigcup_m P_m, Q=⋃nQnQ = \bigcup_n Q_n, and each PmP_m is Borel-separated from each QnQ_n, then PP is Borel-separated from QQ.

Proof

If CmnC_{mn} separates PmP_m from QnQ_n, then C=⋃m⋂nCmnC = \bigcup_m \bigcap_n C_{mn} is Borel, contains every PmP_m, and is disjoint from every QnQ_n.

∎

Theorem— Lusin separation theorem (1927)

If AA and BB are disjoint analytic subsets of XX, there is a Borel set CC with A⊆CA \subseteq C and C∩B=∅C \cap B = \varnothing.

Proof

We may assume A=f[N]A = f[\mathcal N] and B=g[N]B = g[\mathcal N] with f,gf, g continuous. Suppose AA and BB are not Borel-separated. Since f[Ns]=⋃if[Ns⌢i]f[N_s] = \bigcup_i f[N_{s \frown i}] and g[Nt]=⋃jg[Nt⌢j]g[N_t] = \bigcup_j g[N_{t \frown j}], the lemma shows: if f[Ns]f[N_s] and g[Nt]g[N_t] are not Borel-separated, then neither are f[Ns⌢i]f[N_{s\frown i}] and g[Nt⌢j]g[N_{t \frown j}] for some i,ji, j. Starting from s=t=∅s = t = \varnothing we obtain x,y∈Nx, y \in \mathcal N such that f[Nx↾n]f[N_{x \restriction n}] and g[Ny↾n]g[N_{y \restriction n}] are not Borel-separated for any nn. But f(x)∈Af(x) \in A and g(y)∈Bg(y) \in B are distinct, so they have disjoint open neighbourhoods VV and WW; by continuity, for large nn, f[Nx↾n]⊆Vf[N_{x \restriction n}] \subseteq V and g[Ny↾n]⊆Wg[N_{y \restriction n}] \subseteq W, and the open set VV separates them — a contradiction.

∎

Theorem— Suslin's theorem (1917)

A subset of a Polish space is Borel if and only if it is both analytic and coanalytic: Δ11=\Delta^1_1 = Borel.

Proof

Borel sets are analytic (the formal section cites Mathlib's proof: a Borel set is closed in a finer Polish topology, hence a continuous image of N\mathcal N), and so are their complements. Conversely, if AA and X∖AX \setminus A are analytic, the Lusin separation theorem gives a Borel CC with A⊆CA \subseteq C and C∩(X∖A)=∅C \cap (X \setminus A) = \varnothing, i.e. A=CA = C.

∎

Theorem— Theorem (Suslin): an analytic set that is not Borel

There is an analytic subset of N\mathcal N that is not coanalytic, hence not Borel.

Proof

(Sketch.) There is a universal analytic set U⊆N×N\mathcal U \subseteq \mathcal N \times \mathcal N: every analytic subset of N\mathcal N is a section Ua={x:(a,x)∈U}\mathcal U_a = \{x : (a, x) \in \mathcal U\}. (Code closed subsets of N×N\mathcal N \times \mathcal N by trees, and trees by points of N\mathcal N; then project.) The diagonal D={x:(x,x)∈U}D = \{x : (x, x) \in \mathcal U\} is analytic. If its complement were analytic, it would be Ua\mathcal U_a for some aa, and then a∈D  ⟺  (a,a)∈U  ⟺  a∈Ua  ⟺  a∉Da \in D \iff (a, a) \in \mathcal U \iff a \in \mathcal U_a \iff a \notin D.

∎

The same diagonal argument as in Cantor's and Gödel's theorems. Lebesgue's claim fails because projections can produce any analytic set — for instance, DD is the projection of a closed subset of N×N\mathcal N \times \mathcal N — while injective continuous images of Borel sets are Borel (the Lusin–Souslin theorem).

ExplanationH

Projective sets and the limits of ZFC

The good behaviour of analytic sets does not continue up the projective hierarchy in ZFC alone.

  • What ZFC proves. Σ11\Sigma^1_1 sets have the perfect set property (above), and Σ11\Sigma^1_1 and Π11\Pi^1_1 sets are Lebesgue measurable and have the property of Baire (Lusin, Sierpiński). Every uncountable Σ21\Sigma^1_2 set has cardinality ℵ1\aleph_1 or 2ℵ02^{\aleph_0} (a consequence of Shoenfield absoluteness and the analysis of Σ21\Sigma^1_2 sets as unions of ℵ1\aleph_1 Borel sets).
  • What V=LV = L gives. In Gödel's LL there is a Σ21\Sigma^1_2 well-order of the reals, hence a Δ21\Delta^1_2 set that is not Lebesgue measurable, and an uncountable Π11\Pi^1_1 set with no perfect subset. So ZFC cannot prove that Π11\Pi^1_1 sets have the perfect set property, nor that Δ21\Delta^1_2 sets are measurable (if ZFC is consistent).
  • What large cardinals give. Determinacy of infinite games is the unifying principle. Gale and Stewart (1953) showed open games are determined; Martin (1975) proved Borel determinacy in ZFC. Martin and Steel (1989) proved that if there are infinitely many Woodin cardinals then every projective set is determined (projective determinacy), and determinacy implies the perfect set property, Lebesgue measurability and the Baire property for all projective sets.

So the regularity of definable sets of reals, which ZFC establishes at the first level, is settled at all projective levels by large cardinal axioms — one of the strongest arguments for adopting them (see large cardinals).

Formal mathematicsF

Polish spaces and analytic sets in Lean

Mathlib has substantial descriptive set theory. Baire space is Polish, and closed sets in a metric space are GδG_\delta:

baire_space_polishLean 4Applies a library theoremFormally verified
/-- **Baire space** `𝒩 = ℕ^ℕ`, with the product of discrete topologies, is Polish (separable
and completely metrisable): a countable product of Polish spaces is Polish. Mathlib provides the
instance. -/
theorem baire_space_polish : PolishSpace (ℕ → ℕ) :=
  inferInstance
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor
closed_isGδLean 4Applies a library theoremFormally verified
/-- In a metric space every closed set `F` is `G_δ` (`Π⁰₂`): `F = ⋂ₙ {x | d(x, F) < 1/(n+1)}`.
So `Σ⁰₁ ∪ Π⁰₁ ⊆ Δ⁰₂`, the first step of the Borel hierarchy. This applies Mathlib's
`IsClosed.isGδ` (metric spaces are perfectly normal). -/
theorem closed_isGδ {s : Set ℝ} (hs : IsClosed s) : IsGδ s :=
  hs.isGδ
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor

The Baire category argument that Q\Q is not GδG_\delta, proved here from Mathlib's Dense.inter_of_Gδ:

rat_not_isGδLean 4Proved here from basic factsFormally verified
/-- **`ℚ` is not a `G_δ` subset of `ℝ`** (so it is `Σ⁰₂` but not `Π⁰₂`). Proof by the Baire
category theorem: the irrationals are a dense `G_δ` (intersection of the open dense sets
`ℝ ∖ {q}`); if `ℚ` were a `G_δ` too, the intersection of these two dense `G_δ` sets would be
dense — but it is empty. -/
theorem rat_not_isGδ : ¬ IsGδ (Set.range ((↑) : ℚ → ℝ)) := by
  intro h
  have hd := Dense.inter_of_Gδ h IsGδ.setOfPred_irrational Rat.denseRange_cast dense_irrational
  have hempty : Set.range ((↑) : ℚ → ℝ) ∩ {x | Irrational x} = ∅ := by
    ext x
    simp only [mem_inter_iff, mem_range, mem_empty_iff_false, iff_false, not_and]
    rintro ⟨q, rfl⟩ hq
    exact hq.ne_rat q rfl
  rw [hempty] at hd
  exact Set.not_nonempty_empty hd.nonempty
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor

Mathlib defines MeasureTheory.AnalyticSet as "empty or a continuous image of ℕ → ℕ". Borel sets are analytic, continuous images of analytic sets are analytic, and so projections of Borel sets are analytic:

borel_analyticLean 4Applies a library theoremFormally verified
/-- Every Borel subset of a Polish space is **analytic** (a continuous image of `ℕ^ℕ`, or empty).
This applies Mathlib's `MeasurableSet.analyticSet`. -/
theorem borel_analytic {X : Type*} [TopologicalSpace X] [PolishSpace X] [MeasurableSpace X]
    [BorelSpace X] {s : Set X} (hs : MeasurableSet s) : AnalyticSet s :=
  hs.analyticSet
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor
analytic_imageLean 4Applies a library theoremFormally verified
/-- Continuous images of analytic sets are analytic. This applies Mathlib's
`AnalyticSet.image_of_continuous`. -/
theorem analytic_image {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y] {s : Set X}
    (hs : AnalyticSet s) {f : X → Y} (hf : Continuous f) : AnalyticSet (f '' s) :=
  hs.image_of_continuous hf
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor
projection_analyticLean 4Proved here from basic factsFormally verified
/-- **Projections of Borel sets are analytic.** If `B ⊆ X × Y` is Borel (with `X`, `Y` Polish),
its projection `{x | ∃ y, (x, y) ∈ B}` is analytic: `B` is analytic and the projection is
continuous. Lebesgue (1905) claimed such projections are always Borel; Suslin (1917) found the
error — they need not be. -/
theorem projection_analytic {X Y : Type*} [TopologicalSpace X] [PolishSpace X]
    [MeasurableSpace X] [BorelSpace X] [TopologicalSpace Y] [PolishSpace Y]
    [MeasurableSpace Y] [BorelSpace Y] {B : Set (X × Y)} (hB : MeasurableSet B) :
    AnalyticSet (Prod.fst '' B) :=
  analytic_image (borel_analytic hB) continuous_fst
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor

The lemma that separation is countably additive, proved here with the separating set ⋃m⋂nCmn\bigcup_m \bigcap_n C_{mn} of the lesson; then Suslin's theorem, derived from Mathlib's Lusin separation theorem exactly as in the proof above, and Mathlib's own statement of it:

separation_iUnionLean 4Proved here from basic factsFormally verified
/-- **Separation is countably additive** (the lemma behind Lusin's separation theorem). If each
`P m` is separated from each `Q n` by a measurable (Borel) set `C m n`, then `⋃ₘ P m` is
separated from `⋃ₙ Q n` by `C = ⋃ₘ ⋂ₙ C m n`: it contains every `P m`, and a point of `Q n`
in `C` would lie in some `C m n`. (Mathlib's version is `MeasurablySeparable.iUnion`.) -/
theorem separation_iUnion {α : Type*} [MeasurableSpace α] {P Q : ℕ → Set α}
    (h : ∀ m n, MeasurablySeparable (P m) (Q n)) :
    MeasurablySeparable (⋃ m, P m) (⋃ n, Q n) := by
  choose C hPC hQC hC using h
  refine ⟨⋃ m, ⋂ n, C m n, ?_, ?_, ?_⟩
  · -- every `P m` lies in `⋂ n, C m n`
    exact Set.iUnion_mono fun m => Set.subset_iInter fun n => hPC m n
  · -- no point of `Q n` lies in any `⋂ n', C m n'`
    rw [Set.disjoint_iUnion_left]
    intro n
    rw [Set.disjoint_iUnion_right]
    intro m
    exact (hQC m n).mono_right (Set.iInter_subset _ n)
  · exact MeasurableSet.iUnion fun m => MeasurableSet.iInter fun n => hC m n
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor
suslin_from_lusinLean 4Proved here from basic factsFormally verified
/-- **Suslin's theorem, from the Lusin separation theorem.** If `A` and its complement are both
analytic, then `A` is Borel. Proof: `A` and `Aᶜ` are disjoint analytic sets, so by Lusin's
separation theorem (Mathlib's `AnalyticSet.measurablySeparable`) some Borel set `B` satisfies
`A ⊆ B` and `B ∩ Aᶜ = ∅`; the second condition says `B ⊆ A`, so `A = B` is Borel. -/
theorem suslin_from_lusin {X : Type*} [TopologicalSpace X] [T2Space X] [MeasurableSpace X]
    [OpensMeasurableSpace X] {A : Set X} (hA : AnalyticSet A) (hAc : AnalyticSet Aᶜ) :
    MeasurableSet A := by
  obtain ⟨B, hAB, hdisj, hB⟩ := hA.measurablySeparable hAc disjoint_compl_right
  have hBA : B ⊆ A := fun x hxB => by
    by_contra hxA
    exact Set.disjoint_left.mp hdisj hxA hxB
  rwa [Set.Subset.antisymm hAB hBA]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor
suslinLean 4Applies a library theoremFormally verified
/-- **Suslin's theorem** (Mathlib's version): Borel = analytic ∩ coanalytic. This applies
`AnalyticSet.measurableSet_of_compl`; the converse direction is `borel_analytic` applied to
`A` and to its (Borel) complement. -/
theorem suslin {X : Type*} [TopologicalSpace X] [T2Space X] [MeasurableSpace X]
    [OpensMeasurableSpace X] {A : Set X} (hA : AnalyticSet A) (hAc : AnalyticSet Aᶜ) :
    MeasurableSet A :=
  hA.measurableSet_of_compl hAc
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor
lusin_souslinLean 4Applies a library theoremFormally verified
/-- **Lusin–Souslin**: the image of a Borel set under an injective continuous map from a Polish
space is Borel — injectivity is exactly what fails in Lebesgue's projection argument. This
applies Mathlib's `MeasurableSet.image_of_continuousOn_injOn`. -/
theorem lusin_souslin {X Y : Type*} [TopologicalSpace X] [PolishSpace X] [MeasurableSpace X]
    [BorelSpace X] [TopologicalSpace Y] [T2Space Y] [MeasurableSpace Y] [OpensMeasurableSpace Y]
    {s : Set X} (hs : MeasurableSet s) {f : X → Y} (hf : Continuous f) (hinj : Set.InjOn f s) :
    MeasurableSet (f '' s) :=
  hs.image_of_continuousOn_injOn hf.continuousOn hinj
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor

The perfect set property for closed sets (via Cantor–Bendixson):

cantor_bendixsonLean 4Applies a library theoremFormally verified
/-- **Cantor–Bendixson**: every closed set in a second-countable space is the union of a countable
set and a perfect set. This applies Mathlib's `exists_countable_union_perfect_of_isClosed`. -/
theorem cantor_bendixson {X : Type*} [TopologicalSpace X] [SecondCountableTopology X]
    {C : Set X} (hC : IsClosed C) : ∃ V D : Set X, V.Countable ∧ Perfect D ∧ C = V ∪ D :=
  exists_countable_union_perfect_of_isClosed hC
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor
perfect_set_closedLean 4Applies a library theoremFormally verified
/-- **The perfect set property for closed sets**: an uncountable closed subset of a Polish space
contains a continuous injective image of Cantor space `2^ℕ`, hence has cardinality `2^ℵ₀`. So
no closed set is a counterexample to CH. This applies Mathlib's
`IsClosed.exists_nat_bool_injection_of_not_countable`. -/
theorem perfect_set_closed {X : Type*} [TopologicalSpace X] [PolishSpace X] {C : Set X}
    (hC : IsClosed C) (hunc : ¬ C.Countable) :
    ∃ f : (ℕ → Bool) → X, Set.range f ⊆ C ∧ Continuous f ∧ Function.Injective f :=
  hC.exists_nat_bool_injection_of_not_countable hunc
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/DescriptiveSetTheory.leanTry it in the Lean web editor

Not formalised (here or, as far as we know, in Mathlib): the Borel hierarchy Σα0\Sigma^0_\alpha itself (Mathlib has a related transfinite construction, MeasurableSpace.generateMeasurableRec, used to count Borel sets), the perfect set theorem for analytic sets proved above, universal sets and the existence of an analytic non-Borel set, and determinacy. Mathlib's Mathlib.SetTheory.Descriptive.Tree provides trees on a type as a starting point.

ComputationC

What finite trees can and cannot see

The experiment studies four closed subsets of 2N2^\N through their trees, truncated at finite depths: the full tree, the "golden" tree of strings with no two adjacent 11s (perfect), the tree of strings with at most two 11s (countable), and a "staircase" tree whose branches all have finitely many 11s (countable). For each it counts nodes and computes the splitting height — the height of the largest full binary tree embedded in the branching nodes.

Closed sets as trees: perfect versus countablePythonExact computationExhaustive finite checkComputationally tested
"""Closed sets of Cantor space as trees: what finite information can and cannot see.

Every closed subset of Cantor space 2^N is the set [T] of infinite branches of
a pruned tree T of finite binary strings. The perfect set theorem for closed
sets (Cantor-Bendixson) says [T] is either countable or contains a perfect
set - equivalently, T contains a copy of the full binary tree - and then has
cardinality 2^aleph_0.

We look at four trees, truncated at depth N:
  full       all strings                  [T] = 2^N, perfect
  golden     no two adjacent 1s           perfect, uncountable
  at most 2  at most two 1s               countable (Cantor-Bendixson rank 3)
  staircase  if the first 1 is at place j, countable (every branch has
             at most j further 1s         finitely many 1s)
For each we count the nodes at depth N, compute the splitting height (the
height of the largest full binary tree whose branching nodes are branching
nodes of T), and test whether every node branches somewhere above it.

The staircase tree is the point: its node counts and splitting heights are
exactly those of the golden tree, yet it has only countably many branches.
Finite truncations cannot tell a countable closed set from a perfect one.

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

from functools import lru_cache
import textwrap

def full(s):
    """Every binary string."""
    return True

def golden(s):
    """No two adjacent 1s (the golden-mean shift)."""
    return "11" not in s

def at_most_two(s):
    """At most two 1s."""
    return s.count("1") <= 2

def staircase(s):
    """If the first 1 is at position j, at most j further 1s follow it."""
    j = s.find("1")
    return j < 0 or s[j + 1:].count("1") <= j

TREES = [("full", full), ("golden", golden), ("at most 2", at_most_two),
         ("staircase", staircase)]

def level(tree, n):
    """The nodes of the tree at depth n (strings of length n)."""
    nodes = [""]
    for _ in range(n):
        nodes = [t + b for t in nodes for b in "01" if tree(t + b)]
    return nodes

def splitting_height(tree, n, node=""):
    """Height of the largest full binary tree embedded in the tree's branching
    nodes above ``node``, within depth n."""

    @lru_cache(maxsize=None)
    def height(t):
        if len(t) == n:
            return 0
        kids = [t + b for b in "01" if tree(t + b)]
        best = max(height(c) for c in kids)
        if len(kids) == 2:
            best = max(best, 1 + min(height(kids[0]), height(kids[1])))
        return best

    if not tree(node):
        raise ValueError("node is not in the tree")
    return height(node)

def every_node_branches(tree, n):
    """Does every node of depth <= n - 2 have a branching node above it within
    depth n? (A finite test of perfectness.)"""
    for depth in range(n - 1):
        for t in level(tree, depth):
            if splitting_height(tree, n, t) == 0:
                return False
    return True

def main():
    depths = (4, 8, 12, 16)
    print("Pruned trees T on {0,1}, truncated at depth N")
    print("              nodes at depth N           splitting height    every node")
    print("tree        " + "".join(f"{f'N={d}':>7}" for d in depths)
          + "     " + "".join(f"{d:>4}" for d in depths) + "    branches")
    for name, tree in TREES:
        counts = "".join(f"{len(level(tree, d)):>7}" for d in depths)
        heights = "".join(f"{splitting_height(tree, d):>4}" for d in depths)
        print(f"{name:<12}{counts}     {heights}    {every_node_branches(tree, 10)}")
    same = all(len(level(golden, d)) == len(level(staircase, d)) and
               splitting_height(golden, d) == splitting_height(staircase, d)
               for d in range(1, 17))
    print()
    print(f"golden and staircase agree on both statistics for N = 1..16: {same}")
    print("but [golden] is perfect (uncountable) while [staircase] is countable.")
    print()
    print(textwrap.fill(
        "Epistemic status: exact counts for finite truncations. The finite branch "
        "test detects that the 'at most 2' and staircase trees are not perfect, "
        "but neither statistic can decide whether a tree has uncountably many "
        "branches: that is a theorem about the infinite tree (here, every "
        "staircase branch has finitely many 1s). Hurewicz showed that the codes "
        "of countable closed sets form a coanalytic, non-Borel set.",
        width=78,
    ))

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

The staircase tree has exactly the same node counts and splitting heights as the golden tree at every depth checked, yet one body is countable and the other is perfect. Countability of [T][T] is a property of the infinite tree that finite information cannot decide — indeed (Hurewicz) the set of codes of countable closed sets is coanalytic but not Borel.

Exercises

Exercises

1. Descriptive set theory

Warm-upHuman

Where does Q\Q sit in the Borel hierarchy of R\R?

Choose one

2. Descriptive set theory

CoreHuman

Which of these spaces (with their usual topologies) are Polish? Choose all that apply.

Choose all that apply

3. Descriptive set theory

CoreHuman

Which kind of subset of R2\R^2 can have a projection onto the xx-axis that is not Borel?

Choose one

4. Descriptive set theory

CoreHuman

In the proof that an uncountable analytic set A=f[N]A = f[\mathcal N] contains a perfect set, why do we first remove the open set UU (the union of the NsN_s with f[Ns]f[N_s] countable)?

Choose one

5. Descriptive set theory

CoreHuman

Let X={0}∪{1n:n≥1}∪{1m+1n:m,n≥1}X = \{0\} \cup \{\tfrac1n : n \ge 1\} \cup \{\tfrac1m + \tfrac1n : m, n \ge 1\}, a closed subset of R\R. The derived set X′X' removes the isolated points. How many times must the derivative be applied before the empty set is reached (the Cantor–Bendixson rank of XX)?

6. Descriptive set theory

StretchHuman

Mazurkiewicz (1936) studied D={f∈C[0,1]:f is differentiable at every point}D = \{f \in C[0, 1] : f \text{ is differentiable at every point}\}, where C[0,1]C[0, 1] has the sup norm. Which statement is correct?

Choose one

7. Descriptive set theory

CoreFormal

Which Lean statement formalises (one direction of) Suslin's theorem in a Hausdorff space with Borel σ-algebra?

Choose one

8. Descriptive set theory

CoreFormal

The Lean proof of rat_not_isGδ applies Dense.inter_of_Gδ to two sets. What does it conclude, and why is that a contradiction?

Choose one

9. Descriptive set theory

StretchComputational

A tree on {0,1}\{0, 1\} is given by a predicate tree(s) on binary strings. Write split_height(tree, n): the height of the largest full binary tree whose branching nodes are branching nodes of the tree, within depth nn. Recursively, at a node tt of length nn the height is 00; otherwise it is the maximum of the children's heights and, if both children are in the tree, 1+min⁡1 + \min of their heights.

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

Common misconceptions

Misconception

"The projection of a Borel set is Borel." This was Lebesgue's error. Projections of Borel sets are analytic, and every analytic set arises this way, including non-Borel ones. (Projections of closed subsets of R2\R^2 happen to be Borel, because closed subsets of R2\R^2 are σ\sigma-compact; projections of GδG_\delta subsets of R2\R^2 already give every analytic set.)

Misconception

"Definable means computable." The classical (boldface) classes allow arbitrary real parameters: every singleton, and so every countable set, is Π10\Pi^0_1 or Σ20\Sigma^0_2, however uncomputable its points. The effective (lightface) hierarchies of Kleene — Σ10\Sigma^0_1 for computably enumerable, Δ11\Delta^1_1 for hyperarithmetic — refine the classical ones, and the classical classes are their relativisations to all parameters.

Misconception

"Every uncountable set of reals has cardinality 2ℵ02^{\aleph_0}." That is CH. What is true is that every uncountable analytic set (in particular every uncountable Borel or closed set) does.

Misconception

"Analytic sets are related to analytic functions." The name comes from Lebesgue's functions "représentables analytiquement"; Mathlib places them in the MeasureTheory namespace for this reason, with a warning in the documentation.

ViewpointsH

Many ways of seeing

Topology— Baire space is universal

Every non-empty Polish space is a continuous image of N\mathcal N, and every uncountable Polish space contains a homeomorphic copy of C\mathcal C. Kuratowski's isomorphism theorem says that any two uncountable Polish spaces are Borel isomorphic: up to Borel bijections there is exactly one uncountable standard Borel space. So from the measurable point of view R\R, [0,1]N[0, 1]^\N and N\mathcal N are the same, and topology is a tool for choosing convenient representatives — for example, every Borel set becomes clopen in a finer Polish topology with the same Borel sets. The Baire category theorem is the basic tool for proving that sets are not in a given class (see point-set topology).

Analysis— Measurability and uniformisation

Lusin proved that analytic sets are universally measurable: measurable for the completion of every σ\sigma-finite Borel measure. So measure theory extends beyond Borel sets in a controlled way (see measure theory). The Jankov–von Neumann uniformisation theorem says that an analytic subset of X×YX \times Y has a uniformising function measurable with respect to the σ\sigma-algebra generated by analytic sets; this measurable selection principle underpins dynamic programming, stochastic control and optimal transport. And descriptive set theory returns to Cantor's original question: Kechris and Louveau's work on sets of uniqueness for trigonometric series uses exactly these tools.

Probability— Classifying measure-preserving systems

Ergodic theory classifies measure-preserving transformations up to isomorphism. Ornstein (1970) classified Bernoulli shifts completely by entropy. In general the problem is intractable, and descriptive set theory makes this precise: Foreman, Rudolph and Weiss (2011) proved that the isomorphism relation on ergodic measure-preserving transformations of the unit interval is a complete analytic set, in particular not Borel — no countable Borel procedure can decide isomorphism, unlike the Bernoulli case.

Algebra— How hard is a classification problem?

An equivalence relation EE on a Polish space is Borel reducible to FF if a Borel map sends EE-classes to FF-classes injectively; this measures the complexity of classification problems. Countable structures (groups, graphs, fields) are coded by points of Polish spaces, and isomorphism becomes an analytic equivalence relation. Torsion-free abelian groups of rank 11 are classified by "types" (Baer), but Hjorth (1999) showed rank 22 is strictly harder, and Thomas (2003) showed that the classification problems for torsion-free abelian groups of rank nn strictly increase in complexity with nn. The Glimm–Effros dichotomy (Harrington, Kechris and Louveau, 1990) says that a Borel equivalence relation either admits countable invariants of a concrete kind or is at least as complex as eventual equality of binary sequences.

Logic— Effective descriptive set theory

Replacing "open" by "computably enumerable union of basic open sets" gives Kleene's lightface hierarchies: the arithmetical sets are the effective Borel sets of finite rank, and Kleene's theorem (1955) — the effective Suslin theorem — says that the lightface Δ11\Delta^1_1 sets of natural numbers are exactly the hyperarithmetic ones. Classical theorems follow by relativising effective ones to arbitrary parameters, an approach developed by Addison and Moschovakis. Set-theoretically, the regularity of projective sets is independent of ZFC and decided by determinacy axioms, as described above.

History & global context

History and context

  • Émile Borel (1898) introduced the sets now named after him while developing measure; René Baire (1899) classified functions by iterated pointwise limits; Henri Lebesgue (1905) studied Baire's classes, proved that the Borel hierarchy is proper, and made the error about projections.
  • Pavel Alexandrov and Felix Hausdorff (1916) proved that uncountable Borel sets have cardinality 2ℵ02^{\aleph_0}. Mikhail Suslin (1917), in Moscow, introduced analytic sets, proved that they have the perfect set property and that Borel = analytic ∩ coanalytic; he died of typhus in 1919, aged 24. Nikolai Lusin developed the theory and the separation theorem (1927) and defined the projective sets with Wacław Sierpiński (1925).
  • Polish spaces are named in honour of the Polish school of topology — Sierpiński, Kazimierz Kuratowski, Stefan Mazurkiewicz and others. Kurt Gödel (1938) observed that V=LV = L yields definable pathological sets.
  • Stephen Kleene (1955), John Addison and Yiannis Moschovakis built the effective theory; Donald A. Martin proved Borel determinacy (1975), and Martin and John Steel projective determinacy from Woodin cardinals (1989).
  • Since the 1990s, Alexander Kechris, Alain Louveau, Leo Harrington, Greg Hjorth, Simon Thomas and others have developed invariant descriptive set theory and its applications to classification in algebra and dynamics.
Further reading

Further reading

  • Alexander S. Kechris, Classical Descriptive Set Theory (1995) — the standard graduate text; the proofs above follow its chapters 3, 14 and 29.
  • Yiannis N. Moschovakis, Descriptive Set Theory (1980; 2nd edition 2009) — the effective approach and determinacy.
  • S. M. Srivastava, A Course on Borel Sets (1998) — a gentle, complete route through Borel and analytic sets.
  • Su Gao, Invariant Descriptive Set Theory (2009) — Borel equivalence relations and classification.
  • Thomas Jech, Set Theory (Third Millennium Edition, 2003), chapters 11 and 25 — the set-theoretic side.