# The Borel sigma-algebra on Polish spaces #

We discuss several results pertaining to the relationship between the topology and the Borel structure on Polish spaces.

## Main definitions and results #

First, we define standard Borel spaces.

• A StandardBorelSpace α is a typeclass for measurable spaces which arise as the Borel sets of some Polish topology.

Next, we define the class of analytic sets and establish its basic properties.

• MeasureTheory.AnalyticSet s: a set in a topological space is analytic if it is the continuous image of a Polish space. Equivalently, it is empty, or the image of ℕ → ℕ.
• MeasureTheory.AnalyticSet.image_of_continuous: a continuous image of an analytic set is analytic.
• MeasurableSet.analyticSet: in a Polish space, any Borel-measurable set is analytic.

Then, we show Lusin's theorem that two disjoint analytic sets can be separated by Borel sets.

• MeasurablySeparable s t states that there exists a measurable set containing s and disjoint from t.
• AnalyticSet.measurablySeparable shows that two disjoint analytic sets are separated by a Borel set.

We then prove the Lusin-Souslin theorem that a continuous injective image of a Borel subset of a Polish space is Borel. The proof of this nontrivial result relies on the above results on analytic sets.

• MeasurableSet.image_of_continuousOn_injOn asserts that, if s is a Borel measurable set in a Polish space, then the image of s under a continuous injective map is still Borel measurable.
• Continuous.measurableEmbedding states that a continuous injective map on a Polish space is a measurable embedding for the Borel sigma-algebra.
• ContinuousOn.measurableEmbedding is the same result for a map restricted to a measurable set on which it is continuous.
• Measurable.measurableEmbedding states that a measurable injective map from a standard Borel space to a second-countable topological space is a measurable embedding.
• isClopenable_iff_measurableSet: in a Polish space, a set is clopenable (i.e., it can be made open and closed by using a finer Polish topology) if and only if it is Borel-measurable.

We use this to prove several versions of the Borel isomorphism theorem.

• PolishSpace.measurableEquivOfNotCountable : Any two uncountable standard Borel spaces are Borel isomorphic.
• PolishSpace.Equiv.measurableEquiv : Any two standard Borel spaces of the same cardinality are Borel isomorphic.

### Standard Borel Spaces #

class StandardBorelSpace (α : Type u_1) [] :

A standard Borel space is a measurable space arising as the Borel sets of some Polish topology. This is useful in situations where a space has no natural topology or the natural topology in a space is non-Polish.

To endow a standard Borel space α with a compatible Polish topology, use letI := upgradeStandardBorel α. One can then use eq_borel_upgradeStandardBorel α to rewrite the MeasurableSpace α instance to borel α t, where t is the new topology.

• polish : ∃ (x : ),

There exists a compatible Polish topology.

Instances
theorem StandardBorelSpace.polish {α : Type u_1} [] [self : ] :
∃ (x : ),

There exists a compatible Polish topology.

class UpgradedStandardBorel (α : Type u_1) extends , , , :
Type u_1

A convenience class similar to UpgradedPolishSpace. No instance should be registered. Instead one should use letI := upgradeStandardBorel α.

Instances
noncomputable def upgradeStandardBorel (α : Type u_1) [] [h : ] :

Use as letI := upgradeStandardBorel α to endow a standard Borel space α with a compatible Polish topology.

Warning: following this with borelize α will cause an error. Instead, one can rewrite with eq_borel_upgradeStandardBorel α. TODO: fix the corresponding bug in borelize.

Equations
• = (fun (τ : ) (x : ) => UpgradedStandardBorel.mk) ()
Instances For
theorem eq_borel_upgradeStandardBorel (α : Type u_1) [] :
inst✝¹ =

The MeasurableSpace α instance on a StandardBorelSpace α is equal to the borel sets of upgradeStandardBorel α.

instance standardBorel_of_polish {α : Type u_1} [] [τ : ] [] [] :
Equations
• =
instance countablyGenerated_of_standardBorel {α : Type u_1} [] :
Equations
• =
Equations
• =
instance StandardBorelSpace.prod {α : Type u_1} [] {β : Type u_2} [] :

A product of two standard Borel spaces is standard Borel.

Equations
• =
instance StandardBorelSpace.pi_countable {ι : Type u_3} [] {α : ιType u_4} [(n : ι) → MeasurableSpace (α n)] [∀ (n : ι), StandardBorelSpace (α n)] :
StandardBorelSpace ((n : ι) → α n)

A product of countably many standard Borel spaces is standard Borel.

Equations
• =

### Analytic sets #

theorem MeasureTheory.AnalyticSet_def {α : Type u_3} [] (s : Set α) :
= (s = ∃ (f : ()α), = s)
@[irreducible]
def MeasureTheory.AnalyticSet {α : Type u_3} [] (s : Set α) :

An analytic set is a set which is the continuous image of some Polish space. There are several equivalent characterizations of this definition. For the definition, we pick one that avoids universe issues: a set is analytic if and only if it is a continuous image of ℕ → ℕ (or if it is empty). The above more usual characterization is given in analyticSet_iff_exists_polishSpace_range.

Warning: these are analytic sets in the context of descriptive set theory (which is why they are registered in the namespace MeasureTheory). They have nothing to do with analytic sets in the context of complex analysis.

Equations
Instances For
theorem MeasureTheory.analyticSet_range_of_polishSpace {α : Type u_1} [] {β : Type u_3} [] [] {f : βα} (f_cont : ) :
theorem IsOpen.analyticSet_image {α : Type u_1} [] {β : Type u_3} [] [] {s : Set β} (hs : ) {f : βα} (f_cont : ) :

The image of an open set under a continuous map is analytic.

theorem MeasureTheory.analyticSet_iff_exists_polishSpace_range {α : Type u_1} [] {s : Set α} :
∃ (β : Type) (h : ) (_ : ) (f : βα), = s

A set is analytic if and only if it is the continuous image of some Polish space.

theorem MeasureTheory.AnalyticSet.image_of_continuousOn {α : Type u_1} [] {β : Type u_3} [] {s : Set α} (hs : ) {f : αβ} (hf : ) :

The continuous image of an analytic set is analytic

theorem MeasureTheory.AnalyticSet.image_of_continuous {α : Type u_1} [] {β : Type u_3} [] {s : Set α} (hs : ) {f : αβ} (hf : ) :
theorem MeasureTheory.AnalyticSet.iInter {α : Type u_1} {ι : Type u_2} [] [hι : ] [] [] {s : ιSet α} (hs : ∀ (n : ι), ) :
MeasureTheory.AnalyticSet (⋂ (n : ι), s n)

A countable intersection of analytic sets is analytic.

theorem MeasureTheory.AnalyticSet.iUnion {α : Type u_1} {ι : Type u_2} [] [] {s : ιSet α} (hs : ∀ (n : ι), ) :
MeasureTheory.AnalyticSet (⋃ (n : ι), s n)

A countable union of analytic sets is analytic.

theorem IsClosed.analyticSet {α : Type u_1} [] [] {s : Set α} (hs : ) :
theorem MeasurableSet.isClopenable {α : Type u_1} [] [] [] [] {s : Set α} (hs : ) :

Given a Borel-measurable set in a Polish space, there exists a finer Polish topology making it clopen. This is in fact an equivalence, see isClopenable_iff_measurableSet.

theorem MeasurableSet.analyticSet {α : Type u_3} [t : ] [] [] [] {s : Set α} (hs : ) :

A Borel-measurable set in a Polish space is analytic.

theorem Measurable.exists_continuous {α : Type u_3} {β : Type u_4} [t : ] [] [] [] [tβ : ] [] {f : αβ} [] (hf : ) :
t't,

Given a Borel-measurable function from a Polish space to a second-countable space, there exists a finer Polish topology on the source space for which the function is continuous.

theorem MeasurableSet.analyticSet_image {X : Type u_3} {Y : Type u_4} [] [] [] {f : XY} [] {s : Set X} (hs : ) (hf : ) :

The image of a measurable set in a standard Borel space under a measurable map is an analytic set.

theorem MeasureTheory.AnalyticSet.preimage {X : Type u_3} {Y : Type u_4} [] [] [] [] {s : Set Y} (hs : ) {f : XY} (hf : ) :

Preimage of an analytic set is an analytic set.

### Separating sets with measurable sets #

def MeasureTheory.MeasurablySeparable {α : Type u_3} [] (s : Set α) (t : Set α) :

Two sets u and v in a measurable space are measurably separable if there exists a measurable set containing u and disjoint from v. This is mostly interesting for Borel-separable sets.

Equations
Instances For
theorem MeasureTheory.MeasurablySeparable.iUnion {ι : Type u_2} [] {α : Type u_3} [] {s : ιSet α} {t : ιSet α} (h : ∀ (m n : ι), MeasureTheory.MeasurablySeparable (s m) (t n)) :
MeasureTheory.MeasurablySeparable (⋃ (n : ι), s n) (⋃ (m : ι), t m)
theorem MeasureTheory.measurablySeparable_range_of_disjoint {α : Type u_1} [] [] [] {f : ()α} {g : ()α} (hf : ) (hg : ) (h : Disjoint () ()) :

The hard part of the Lusin separation theorem saying that two disjoint analytic sets are contained in disjoint Borel sets (see the full statement in AnalyticSet.measurablySeparable). Here, we prove this when our analytic sets are the ranges of functions from ℕ → ℕ.

theorem MeasureTheory.AnalyticSet.measurablySeparable {α : Type u_1} [] [] [] {s : Set α} {t : Set α} (hs : ) (ht : ) (h : Disjoint s t) :

The Lusin separation theorem: if two analytic sets are disjoint, then they are contained in disjoint Borel sets.

theorem MeasureTheory.AnalyticSet.measurableSet_of_compl {α : Type u_1} [] [] [] {s : Set α} (hs : ) (hsc : ) :

Suslin's Theorem: in a Hausdorff topological space, an analytic set with an analytic complement is measurable.

### Measurability of preimages under measurable maps #

theorem Measurable.measurableSet_preimage_iff_of_surjective {X : Type u_3} {Z : Type u_5} [] [] {f : XZ} (hf : ) (hsurj : ) {s : Set Z} :

If f : X → Z is a surjective Borel measurable map from a standard Borel space to a countably separated measurable space, then the preimage of a set s is measurable if and only if the set is measurable. One implication is the definition of measurability, the other one heavily relies on X being a standard Borel space.

theorem Measurable.map_measurableSpace_eq {X : Type u_3} {Z : Type u_5} [] [] {f : XZ} (hf : ) (hsurj : ) :
MeasurableSpace.map f inst✝³ = inst✝¹
theorem Measurable.map_measurableSpace_eq_borel {X : Type u_3} {Y : Type u_4} [] [] [] [] {f : XY} (hf : ) (hsurj : ) :
MeasurableSpace.map f inst✝⁶ =
theorem Measurable.borelSpace_codomain {X : Type u_3} {Y : Type u_4} [] [] [] [] {f : XY} (hf : ) (hsurj : ) :
theorem Measurable.measurableSet_preimage_iff_preimage_val {X : Type u_3} {Z : Type u_5} [] [] {f : XZ} (hf : ) {s : Set Z} :

If f : X → Z is a Borel measurable map from a standard Borel space to a countably separated measurable space then the preimage of a set s is measurable if and only if the set is measurable in Set.range f.

theorem Measurable.measurableSet_preimage_iff_inter_range {X : Type u_3} {Z : Type u_5} [] [] {f : XZ} (hf : ) (hr : ) {s : Set Z} :

If f : X → Z is a Borel measurable map from a standard Borel space to a countably separated measurable space and the range of f is measurable, then the preimage of a set s is measurable if and only if the intesection with Set.range f is measurable.

theorem Measurable.measurable_comp_iff_restrict {X : Type u_3} {Z : Type u_5} {β : Type u_6} [] [] [] {f : XZ} (hf : ) {g : Zβ} :
Measurable (g f) Measurable (().restrict g)

If f : X → Z is a Borel measurable map from a standard Borel space to a countably separated measurable space, then for any measurable space β and g : Z → β, the composition g ∘ f is measurable if and only if the restriction of g to the range of f is measurable.

theorem Measurable.measurable_comp_iff_of_surjective {X : Type u_3} {Z : Type u_5} {β : Type u_6} [] [] [] {f : XZ} (hf : ) (hsurj : ) {g : Zβ} :

If f : X → Z is a surjective Borel measurable map from a standard Borel space to a countably separated measurable space, then for any measurable space α and g : Z → α, the composition g ∘ f is measurable if and only if g is measurable.

theorem Continuous.map_eq_borel {X : Type u_3} {Y : Type u_4} [] [] [] [] [] [] {f : XY} (hf : ) (hsurj : ) :
MeasurableSpace.map f inst✝⁴ =
theorem Continuous.map_borel_eq {X : Type u_3} {Y : Type u_4} [] [] [] [] {f : XY} (hf : ) (hsurj : ) :
=
instance Quotient.borelSpace {X : Type u_3} [] [] [] [] {s : } [T0Space ()] :
Equations
• =
instance AddCosetSpace.borelSpace {G : Type u_3} [] [] [] [] [] {N : } [T2Space (G N)] [SecondCountableTopology (G N)] :
Equations
• =
instance CosetSpace.borelSpace {G : Type u_3} [] [] [] [] [] {N : } [T2Space (G N)] [SecondCountableTopology (G N)] :

When the subgroup N < G is not necessarily Normal, we have a CosetSpace as opposed to QuotientGroup (the next instance). TODO: typeclass inference should normally find this, but currently doesn't. E.g., MeasurableSMul G (G ⧸ Γ) fails to synthesize, even though G ⧸ Γ is the quotient of G by the action of Γ; it seems unable to pick up the BorelSpace instance.

Equations
• =
instance QuotientAddGroup.borelSpace {G : Type u_3} [] [] [] [] [] {N : } [N.Normal] [IsClosed N] :
Equations
• =
instance QuotientGroup.borelSpace {G : Type u_3} [] [] [] [] [] [] {N : } [N.Normal] [IsClosed N] :
Equations
• =

### Injective images of Borel sets #

theorem MeasureTheory.measurableSet_range_of_continuous_injective {γ : Type u_3} {β : Type u_4} [] [] [] [] [] {f : γβ} (f_cont : ) (f_inj : ) :

The Lusin-Souslin theorem: the range of a continuous injective function defined on a Polish space is Borel-measurable.

theorem IsClosed.measurableSet_image_of_continuousOn_injOn {γ : Type u_3} [] [] {β : Type u_4} [] [] [] {s : Set γ} (hs : ) {f : γβ} (f_cont : ) (f_inj : ) :
theorem MeasurableSet.image_of_continuousOn_injOn {γ : Type u_3} {β : Type u_5} [tβ : ] [] [] {s : Set γ} {f : γβ} [tγ : ] [] [] [] (hs : ) (f_cont : ) (f_inj : ) :

The Lusin-Souslin theorem: if s is Borel-measurable in a Polish space, then its image under a continuous injective map is also Borel-measurable.

theorem MeasurableSet.image_of_measurable_injOn {γ : Type u_3} {α : Type u_4} [] {s : Set γ} {f : γα} [] (hs : ) (f_meas : ) (f_inj : ) :

The Lusin-Souslin theorem: if s is Borel-measurable in a standard Borel space, then its image under a measurable injective map taking values in a countably separate measurable space is also Borel-measurable.

theorem Continuous.measurableEmbedding {γ : Type u_3} {β : Type u_5} [tβ : ] [] [] {f : γβ} [] [] [] [] [] (f_cont : ) (f_inj : ) :

An injective continuous function on a Polish space is a measurable embedding.

theorem ContinuousOn.measurableEmbedding {γ : Type u_3} {β : Type u_5} [tβ : ] [] [] {s : Set γ} {f : γβ} [] [] [] [] [] (hs : ) (f_cont : ) (f_inj : ) :
MeasurableEmbedding (s.restrict f)

If s is Borel-measurable in a Polish space and f is continuous injective on s, then the restriction of f to s is a measurable embedding.

theorem Measurable.measurableEmbedding {γ : Type u_3} {α : Type u_4} [] {f : γα} [] (f_meas : ) (f_inj : ) :

An injective measurable function from a standard Borel space to a countably separated measurable space is a measurable embedding.

theorem MeasureTheory.borel_eq_borel_of_le {γ : Type u_3} {t : } {t' : } (ht : ) (ht' : ) (hle : t t') :
=

If one Polish topology on a type refines another, they have the same Borel sets.

theorem MeasureTheory.isClopenable_iff_measurableSet {γ : Type u_3} {s : Set γ} [tγ : ] [] [] [] :

In a Polish space, a set is clopenable if and only if it is Borel-measurable.

theorem MeasureTheory.measurableSet_tendsto_fun {ι : Type u_2} {γ : Type u_3} {β : Type u_5} [] [] [] {l : } [l.IsCountablyGenerated] [] {f : ιβγ} (hf : ∀ (i : ι), Measurable (f i)) {g : βγ} (hg : ) :
MeasurableSet {x : β | Filter.Tendsto (fun (n : ι) => f n x) l (nhds (g x))}

The set of points for which a sequence of measurable functions converges to a given function is measurable.

theorem MeasureTheory.measurableSet_exists_tendsto {ι : Type u_2} {γ : Type u_3} {β : Type u_5} [] [] [] [] [hγ : ] [] {l : } [l.IsCountablyGenerated] {f : ιβγ} (hf : ∀ (i : ι), Measurable (f i)) :
MeasurableSet {x : β | ∃ (c : γ), Filter.Tendsto (fun (n : ι) => f n x) l (nhds c)}

The set of points for which a measurable sequence of functions converges is measurable.

theorem MeasurableSet.isClopenable' {α : Type u_1} [] {s : Set α} (hs : ) :
∃ (x : ),

If s is a measurable set in a standard Borel space, there is a compatible Polish topology making s clopen.

theorem MeasurableSet.standardBorel {α : Type u_1} [] {s : Set α} (hs : ) :

A measurable subspace of a standard Borel space is standard Borel.

### The Borel Isomorphism Theorem #

noncomputable def PolishSpace.borelSchroederBernstein {α : Type u_1} {β : Type u_3} [] [] {f : αβ} {g : βα} (fmeas : ) (finj : ) (gmeas : ) (ginj : ) :
α ≃ᵐ β

If two standard Borel spaces admit Borel measurable injections to one another, then they are Borel isomorphic.

Equations
Instances For
noncomputable def PolishSpace.measurableEquivNatBoolOfNotCountable {α : Type u_1} [] (h : ) :
α ≃ᵐ ()

Any uncountable standard Borel space is Borel isomorphic to the Cantor space ℕ → Bool.

Equations
Instances For
noncomputable def PolishSpace.measurableEquivOfNotCountable {α : Type u_1} {β : Type u_3} [] [] (hα : ) (hβ : ) :
α ≃ᵐ β

The Borel Isomorphism Theorem: Any two uncountable standard Borel spaces are Borel isomorphic.

Equations
Instances For
noncomputable def PolishSpace.Equiv.measurableEquiv {α : Type u_1} {β : Type u_3} [] [] (e : α β) :
α ≃ᵐ β

The Borel Isomorphism Theorem: If two standard Borel spaces have the same cardinality, they are Borel isomorphic.

Equations
• = if h : then { toEquiv := e, measurable_toFun := , measurable_invFun := } else
Instances For
theorem MeasureTheory.exists_nat_measurableEquiv_range_coe_fin_of_finite (α : Type u_1) [] [] :
∃ (n : ), Nonempty (α ≃ᵐ (Set.range fun (x : Fin n) => x))
theorem MeasureTheory.exists_subset_real_measurableEquiv (α : Type u_1) [] :
∃ (s : ), Nonempty (α ≃ᵐ s)

Any standard Borel space is measurably equivalent to a subset of the reals.

theorem MeasureTheory.exists_measurableEmbedding_real (α : Type u_1) [] :
∃ (f : α),

Any standard Borel space embeds measurably into the reals.

noncomputable def MeasureTheory.embeddingReal (Ω : Type u_3) [] :
Ω

A measurable embedding of a standard Borel space into ℝ.

Equations
• = .choose
Instances For