Documentation

Mathlib.Topology.Compactification.OnePoint.Basic

The one-point compactification #

We construct the one-point compactification of an arbitrary topological space X and prove some properties inherited from X.

Main definitions #

Main results #

Tags #

one point compactification, Alexandroff compactification, compactness

Definition and basic properties #

In this section we define OnePoint X to be the disjoint union of X and ∞, implemented as Option X. Then we restate some lemmas about Option X for OnePoint X.

def OnePoint (X : Type u_3) :
Type u_3

The one-point extension of an arbitrary topological space X

Equations
Instances For
    @[implicit_reducible]
    instance instReprOnePoint {X : Type u_1} [Repr X] :

    The repr uses the notation from the OnePoint locale.

    Equations
    @[match_pattern]
    def OnePoint.infty {X : Type u_1} :

    The point at infinity

    Equations
    Instances For

      The point at infinity

      Equations
      Instances For
        @[match_pattern]
        def OnePoint.some {X : Type u_1} :
        X → OnePoint X

        Coercion from X to OnePoint X.

        Equations
        Instances For
          @[simp]
          theorem OnePoint.some_eq_iff {X : Type u_1} (x₁ x₂ : X) :
          ↑x₁ = ↑x₂ ↔ x₁ = x₂
          @[implicit_reducible]
          instance OnePoint.instCoeTC {X : Type u_1} :
          Equations
          @[implicit_reducible]
          Equations
          theorem OnePoint.forall {X : Type u_1} {p : OnePoint X → Prop} :
          (∀ (x : OnePoint X), p x) ↔ p infty ∧ ∀ (x : X), p ↑x
          theorem OnePoint.exists {X : Type u_1} {p : OnePoint X → Prop} :
          (∃ (x : OnePoint X), p x) ↔ p infty ∨ ∃ (x : X), p ↑x
          @[implicit_reducible]
          instance OnePoint.instFintype {X : Type u_1} [Fintype X] :
          Equations
          theorem OnePoint.coe_eq_coe {X : Type u_1} {x y : X} :
          ↑x = ↑y ↔ x = y
          @[simp]
          theorem OnePoint.coe_ne_infty {X : Type u_1} (x : X) :
          ↑x ≠ infty
          @[simp]
          theorem OnePoint.infty_ne_coe {X : Type u_1} (x : X) :
          infty ≠ ↑x
          def OnePoint.rec {X : Type u_1} {C : OnePoint X → Sort u_3} (infty : C infty) (coe : (x : X) → C ↑x) (z : OnePoint X) :
          C z

          Recursor for OnePoint using the preferred forms ∞ and ↑x.

          Equations
          Instances For
            @[inline]
            def OnePoint.elim {X : Type u_1} {Y : Type u_2} :
            OnePoint X → Y → (X → Y) → Y

            An elimination principle for OnePoint.

            Equations
            Instances For
              @[simp]
              theorem OnePoint.elim_infty {X : Type u_1} {Y : Type u_2} (y : Y) (f : X → Y) :
              infty.elim y f = y
              @[simp]
              theorem OnePoint.elim_some {X : Type u_1} {Y : Type u_2} (y : Y) (f : X → Y) (x : X) :
              (↑x).elim y f = f x
              @[deprecated "Use simp" (since := "2025-11-22")]
              theorem OnePoint.ne_infty_iff_exists {X : Type u_1} {x : OnePoint X} :
              x ≠ infty ↔ ∃ (y : X), ↑y = x
              instance OnePoint.canLift {X : Type u_1} :
              CanLift (OnePoint X) X some fun (x : OnePoint X) => x ≠ infty
              theorem OnePoint.infty_notMem_image_coe {X : Type u_1} {s : Set X} :
              infty ∉ some '' s
              def OnePoint.map {X : Type u_1} {Y : Type u_2} (f : X → Y) :

              Extend a map f : X → Y to a map OnePoint X → OnePoint Y by sending infinity to infinity.

              Equations
              Instances For
                @[simp]
                theorem OnePoint.map_infty {X : Type u_1} {Y : Type u_2} (f : X → Y) :
                @[simp]
                theorem OnePoint.map_some {X : Type u_1} {Y : Type u_2} (f : X → Y) (x : X) :
                OnePoint.map f ↑x = ↑(f x)
                @[simp]
                theorem OnePoint.map_id {X : Type u_1} :
                theorem OnePoint.map_comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} (f : Y → Z) (g : X → Y) :

                Topological space structure on OnePoint X #

                We define a topological space structure on OnePoint X so that s is open if and only if

                Then we reformulate this definition in a few different ways, and prove that (↑) : X → OnePoint X is an open embedding. If X is not a compact space, then we also prove that (↑) has dense range, so it is a dense embedding.

                @[implicit_reducible]
                Equations
                • One or more equations did not get rendered due to their size.
                @[simp]

                An open set in OnePoint X constructed from a closed compact set in X

                Equations
                Instances For
                  theorem OnePoint.infty_mem_opensOfCompl {X : Type u_1} [TopologicalSpace X] {s : Set X} (h₁ : IsClosed s) (h₂ : IsCompact s) :
                  infty ∈ opensOfCompl s h₁ h₂
                  theorem OnePoint.nhds_coe_eq {X : Type u_1} [TopologicalSpace X] (x : X) :
                  theorem OnePoint.nhdsWithin_coe_image {X : Type u_1} [TopologicalSpace X] (s : Set X) (x : X) :
                  instance OnePoint.nhdsNE_coe_neBot {X : Type u_1} [TopologicalSpace X] (x : X) [h : (nhdsWithin x {x}ᶜ).NeBot] :

                  If x is not an isolated point of X, then x : OnePoint X is not an isolated point of OnePoint X.

                  If X is a non-compact space, then ∞ is not an isolated point of OnePoint X.

                  @[instance 900]
                  instance OnePoint.nhdsNE_neBot {X : Type u_1} [TopologicalSpace X] [∀ (x : X), (nhdsWithin x {x}ᶜ).NeBot] [NoncompactSpace X] (x : OnePoint X) :
                  theorem OnePoint.le_nhds_infty {X : Type u_1} [TopologicalSpace X] {f : Filter (OnePoint X)} :
                  f ≤ nhds infty ↔ ∀ (s : Set X), IsClosed s → IsCompact s → some '' sᶜ ∪ {infty} ∈ f
                  theorem OnePoint.ultrafilter_le_nhds_infty {X : Type u_1} [TopologicalSpace X] {f : Ultrafilter (OnePoint X)} :
                  ↑f ≤ nhds infty ↔ ∀ (s : Set X), IsClosed s → IsCompact s → some '' s ∉ f
                  theorem OnePoint.tendsto_nhds_infty {X : Type u_1} [TopologicalSpace X] {α : Type u_3} {f : OnePoint X → α} {l : Filter α} :
                  Filter.Tendsto f (nhds infty) l ↔ ∀ s ∈ l, f infty ∈ s ∧ ∃ (t : Set X), IsClosed t ∧ IsCompact t ∧ Set.MapsTo (f ∘ some) tᶜ s
                  theorem OnePoint.continuousAt_infty {X : Type u_1} [TopologicalSpace X] {Y : Type u_3} [TopologicalSpace Y] {f : OnePoint X → Y} :
                  ContinuousAt f infty ↔ ∀ s ∈ nhds (f infty), ∃ (t : Set X), IsClosed t ∧ IsCompact t ∧ Set.MapsTo (f ∘ some) tᶜ s
                  theorem OnePoint.continuousAt_coe {X : Type u_1} [TopologicalSpace X] {Y : Type u_3} [TopologicalSpace Y] {f : OnePoint X → Y} {x : X} :
                  theorem OnePoint.continuous_iff {X : Type u_1} [TopologicalSpace X] {Y : Type u_3} [TopologicalSpace Y] (f : OnePoint X → Y) :
                  Continuous f ↔ Filter.Tendsto (fun (x : X) => f ↑x) (Filter.coclosedCompact X) (nhds (f infty)) ∧ Continuous fun (x : X) => f ↑x
                  def OnePoint.continuousMapMk {X : Type u_1} [TopologicalSpace X] {Y : Type u_3} [TopologicalSpace Y] (f : C(X, Y)) (y : Y) (h : Filter.Tendsto (⇑f) (Filter.coclosedCompact X) (nhds y)) :

                  A constructor for continuous maps out of a one point compactification, given a continuous map from the underlying space and a limit value at infinity.

                  Equations
                  Instances For

                    A constructor for continuous maps out of a one point compactification of a discrete space, given a map from the underlying space and a limit value at infinity.

                    Equations
                    Instances For
                      noncomputable def OnePoint.continuousMapDiscreteEquiv (X : Type u_1) [TopologicalSpace X] (Y : Type u_3) [DiscreteTopology X] [TopologicalSpace Y] [T2Space Y] [Infinite X] :
                      C(OnePoint X, Y) ≃ { f : X → Y // ∃ (L : Y), Filter.Tendsto (fun (x : X) => f x) Filter.cofinite (nhds L) }

                      Continuous maps out of the one point compactification of an infinite discrete space to a Hausdorff space correspond bijectively to "convergent" maps out of the discrete space.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        A constructor for continuous maps out of the one point compactification of ℕ, given a sequence and a limit value at infinity.

                        Equations
                        Instances For
                          noncomputable def OnePoint.continuousMapNatEquiv (Y : Type u_3) [TopologicalSpace Y] [T2Space Y] :
                          C(OnePoint ℕ, Y) ≃ { f : ℕ → Y // ∃ (L : Y), Filter.Tendsto (fun (x : ℕ) => f x) Filter.atTop (nhds L) }

                          Continuous maps out of the one point compactification of ℕ to a Hausdorff space Y correspond bijectively to convergent sequences in Y.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For

                            If X is not a compact space, then the natural embedding X → OnePoint X has dense range.

                            @[simp]
                            theorem OnePoint.specializes_coe {X : Type u_1} [TopologicalSpace X] {x y : X} :
                            ↑x ⤳ ↑y ↔ x ⤳ y
                            @[simp]
                            theorem OnePoint.inseparable_coe {X : Type u_1} [TopologicalSpace X] {x y : X} :
                            theorem OnePoint.inseparable_iff {X : Type u_1} [TopologicalSpace X] {x y : OnePoint X} :
                            Inseparable x y ↔ x = infty ∧ y = infty ∨ ∃ (x' : X), x = ↑x' ∧ ∃ (y' : X), y = ↑y' ∧ Inseparable x' y'

                            Compactness and separation properties #

                            In this section we prove that OnePoint X is a compact space; it is a T₀ (resp., T₁) space if the original space satisfies the same separation axiom. If the original space is a locally compact Hausdorff space, then OnePoint X is a normal (hence, T₃ and Hausdorff) space.

                            Finally, if the original space X is not compact and is a preconnected space, then OnePoint X is a connected space.

                            For any topological space X, its one point compactification is a compact space.

                            The one point compactification of a T0Space space is a T0Space.

                            The one point compactification of a T1Space space is a T1Space.

                            The one point compactification of a weakly locally compact R₁ space is a normal topological space.

                            If X is an infinite type with discrete topology (e.g., ℕ), then the identity map from CofiniteTopology (OnePoint X) to OnePoint X is not continuous.

                            noncomputable def OnePoint.equivOfIsEmbeddingOfRangeEq {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] [T2Space Y] [CompactSpace Y] (y : Y) (f : X → Y) (hf : Topology.IsEmbedding f) (hy : Set.range f = {y}ᶜ) :

                            If f embeds X into a compact Hausdorff space Y, and has exactly one point outside its range, then (Y, f) is the one-point compactification of X.

                            Equations
                            Instances For
                              @[simp]
                              theorem OnePoint.equivOfIsEmbeddingOfRangeEq_apply_coe {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] [T2Space Y] [CompactSpace Y] (y : Y) (f : X → Y) (hf : Topology.IsEmbedding f) (hy : Set.range f = {y}ᶜ) (x : X) :
                              (equivOfIsEmbeddingOfRangeEq y f hf hy) ↑x = f x
                              @[simp]

                              Extend a homeomorphism of topological spaces to the homeomorphism of their one point compactifications.

                              Equations
                              Instances For
                                @[simp]
                                theorem Homeomorph.onePointCongr_apply {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (h : X ≃ₜ Y) (a✝ : OnePoint X) :
                                h.onePointCongr a✝ = OnePoint.map (⇑h) a✝
                                @[simp]
                                theorem Homeomorph.onePointCongr_symm_apply {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (h : X ≃ₜ Y) (a✝ : OnePoint Y) :
                                h.onePointCongr.symm a✝ = OnePoint.map (⇑h.symm) a✝

                                A concrete counterexample shows that Continuous.homeoOfEquivCompactToT2 cannot be generalized from T2Space to T1Space.

                                Let α = OnePoint ℕ be the one-point compactification of ℕ, and let β be the same space OnePoint ℕ with the cofinite topology. Then α is compact, β is T1, and the identity map id : α → β is a continuous equivalence that is not a homeomorphism.