Documentation

Mathlib.Topology.MetricSpace.Polish

Polish spaces #

A topological space is Polish if its topology is second-countable and there exists a compatible complete metric. This is the class of spaces that is well-behaved with respect to measure theory. In this file, we establish the basic properties of Polish spaces.

Main definitions and results #

A fundamental property of Polish spaces is that one can put finer topologies, still Polish, with additional properties:

Basic properties of Polish spaces #

A Polish space is a topological space with second countable topology, that can be endowed with a metric for which it is complete.

To endow a Polish space with a complete metric space structure, do letI := upgradeIsCompletelyMetrizable α.

Instances

    Any nonempty Polish space is the continuous image of the fundamental space ℕ → ℕ.

    theorem Topology.IsClosedEmbedding.polishSpace {α : Type u_1} {β : Type u_2} [TopologicalSpace α] [TopologicalSpace β] [PolishSpace β] {f : α → β} (hf : IsClosedEmbedding f) :

    Given a closed embedding into a Polish space, the source space is also Polish.

    theorem Equiv.polishSpace_induced {α : Type u_1} {β : Type u_2} [t : TopologicalSpace β] [PolishSpace β] (f : α ≃ β) :

    Pulling back a Polish topology under an equiv gives again a Polish topology.

    theorem IsClosed.polishSpace {α : Type u_1} [TopologicalSpace α] [PolishSpace α] {s : Set α} (hs : IsClosed s) :

    A closed subset of a Polish space is also Polish.

    theorem CompletePseudometrizable.iInf {α : Type u_1} {ι : Type u_3} [Countable ι] {t : ι → TopologicalSpace α} (ht₀ : ∃ (t₀ : TopologicalSpace α), T2Space α ∧ ∀ (i : ι), t i ≤ t₀) (ht : ∀ (i : ι), ∃ (u : UniformSpace α), CompleteSpace α ∧ (uniformity α).IsCountablyGenerated ∧ u.toTopologicalSpace = t i) :
    theorem PolishSpace.iInf {α : Type u_1} {ι : Type u_3} [Countable ι] {t : ι → TopologicalSpace α} (ht₀ : ∃ (i₀ : ι), ∀ (i : ι), t i ≤ t i₀) (ht : ∀ (i : ι), PolishSpace α) :
    theorem PolishSpace.exists_polishSpace_forall_le {α : Type u_1} {ι : Type u_3} [Countable ι] [t : TopologicalSpace α] [p : PolishSpace α] (m : ι → TopologicalSpace α) (hm : ∀ (n : ι), m n ≤ t) (h'm : ∀ (n : ι), PolishSpace α) :
    ∃ (t' : TopologicalSpace α), (∀ (n : ι), t' ≤ m n) ∧ t' ≤ t ∧ PolishSpace α

    Given a Polish space, and countably many finer Polish topologies, there exists another Polish topology which is finer than all of them.

    @[deprecated "No replacement" (since := "2026-10-14")]

    A type synonym for a subset s of a metric space, on which we will construct another metric for which it will be complete.

    Equations
    Instances For
      @[instance_reducible, deprecated "No replacement" (since := "2026-10-14")]
      noncomputable instance TopologicalSpace.Opens.CompleteCopy.instDist {α : Type u_1} [MetricSpace α] {s : Opens α} :

      A distance on an open subset s of a metric space, designed to make it complete. It is given by dist' x y = dist x y + |1 / dist x sᶜ - 1 / dist y sᶜ|, where the second term blows up close to the boundary to ensure that Cauchy sequences for dist' remain well inside s.

      Equations
      @[deprecated "No replacement" (since := "2026-10-14")]
      theorem TopologicalSpace.Opens.CompleteCopy.dist_eq {α : Type u_1} [MetricSpace α] {s : Opens α} (x y : s.CompleteCopy) :
      dist x y = dist ↑x ↑y + |1 / Metric.infDist (↑x) (↑s)ᶜ - 1 / Metric.infDist (↑y) (↑s)ᶜ|
      @[deprecated "No replacement" (since := "2026-10-14")]
      theorem TopologicalSpace.Opens.CompleteCopy.dist_val_le_dist {α : Type u_1} [MetricSpace α] {s : Opens α} (x y : s.CompleteCopy) :
      dist ↑x ↑y ≤ dist x y
      @[instance_reducible, deprecated "No replacement" (since := "2026-10-14")]
      Equations
      @[deprecated "No replacement" (since := "2026-10-14")]
      @[deprecated "No replacement" (since := "2026-10-14")]
      @[instance_reducible, deprecated "No replacement" (since := "2026-10-14")]

      A metric space structure on a subset s of a metric space, designed to make it complete if s is open. It is given by dist' x y = dist x y + |1 / dist x sᶜ - 1 / dist y sᶜ|, where the second term blows up close to the boundary to ensure that Cauchy sequences for dist' remain well inside s.

      This definition ensures the TopologicalSpace structure on TopologicalSpace.Opens.CompleteCopy s is definitionally equal to the original one.

      Equations
      @[deprecated "No replacement" (since := "2026-10-14")]

      A Gδ subset of a Polish space is Polish #

      In particular, an open subset of a Polish space is Polish.

      To prove this fact, we follow a proof attributed to A. Bernshteyn. We homeomorphically map a Gδ subset of α to a subset of α × (ℕ → ℝ≥0), which is closed and thus Polish.

      noncomputable def GδEmbedding.gδEmbedding {α : Type u_1} [MetricSpace α] {ι : Type u_3} (U : ι → Set α) (x : ↑(⋂ (i : ι), U i)) :
      α × (ι → NNReal)

      The map x ↦ (x, fun i ↦ d(x, U iᶜ)⁻¹) from ⋂ i, U i into α × (ι → ℝ≥0). When the U i are open, this is a closed embedding: the i-th coordinate of the second component blows up as x approaches the boundary of U i, so that the boundary is sent "to infinity". This guarantees limit points will have their first coordinates within all of the U i.

      Equations
      Instances For
        theorem GδEmbedding.inv_infEDist_compl_ne_top {α : Type u_1} [MetricSpace α] {ι : Type u_3} {U : ι → Set α} (hUo : ∀ (i : ι), IsOpen (U i)) (x : ↑(⋂ (i : ι), U i)) (i : ι) :
        theorem GδEmbedding.continuous_gδEmbedding {α : Type u_1} [MetricSpace α] {ι : Type u_3} {U : ι → Set α} (hUo : ∀ (i : ι), IsOpen (U i)) :
        theorem GδEmbedding.range_gδEmbedding {α : Type u_1} [MetricSpace α] {ι : Type u_3} {U : ι → Set α} (hUo : ∀ (i : ι), IsOpen (U i)) :
        Set.range (gδEmbedding U) = {q : α × (ι → NNReal) | ∀ (i : ι), (Metric.infEDist q.1 (U i)ᶜ)⁻¹ = ↑(q.2 i)}

        This characterization of the range of gδEmbedding as an intersection makes it easy to show that the range is closed.

        theorem GδEmbedding.isClosedEmbedding_gδEmbedding {α : Type u_1} [MetricSpace α] {ι : Type u_3} {U : ι → Set α} (hUo : ∀ (i : ι), IsOpen (U i)) :

        A Gδ subset of a completely metrizable space is also completely metrizable.

        theorem IsGδ.polishSpace {α : Type u_4} [TopologicalSpace α] [PolishSpace α] {s : Set α} (hs : IsGδ s) :

        A Gδ subset of a Polish space is also Polish.

        An open subset of a completely metrizable space is also completely metrizable.

        theorem IsOpen.polishSpace {α : Type u_4} [TopologicalSpace α] [PolishSpace α] {s : Set α} (hs : IsOpen s) :

        An open subset of a Polish space is also Polish.

        Clopenable sets in Polish spaces #

        def PolishSpace.IsClopenable {α : Type u_1} [t : TopologicalSpace α] (s : Set α) :

        A set in a topological space is clopenable if there exists a finer Polish topology for which this set is open and closed. It turns out that this notion is equivalent to being Borel-measurable, but this is nontrivial (see isClopenable_iff_measurableSet).

        Equations
        Instances For

          Given a closed set s in a Polish space, one can construct a finer Polish topology for which s is both open and closed.

          theorem PolishSpace.IsClopenable.iUnion {α : Type u_1} [t : TopologicalSpace α] [PolishSpace α] {s : ℕ → Set α} (hs : ∀ (n : ℕ), IsClopenable (s n)) :
          IsClopenable (⋃ (n : ℕ), s n)