Documentation

Mathlib.Topology.UniformSpace.AbstractCompletion

Abstract theory of Hausdorff completions of uniform spaces #

This file characterizes Hausdorff completions of a uniform space α as complete Hausdorff spaces equipped with a map from α which has dense image and induce the original uniform structure on α. Assuming these properties we "extend" uniformly continuous maps from α to complete Hausdorff spaces to the completions of α. This is the universal property expected from a completion. It is then used to extend uniformly continuous maps from α to α' to maps between completions of α and α'.

This file does not construct any such completion, it only study consequences of their existence. The first advantage is that formal properties are clearly highlighted without interference from construction details. The second advantage is that this framework can then be used to compare different completion constructions. See Topology/UniformSpace/CompareReals for an example. Of course the comparison comes from the universal property as usual.

A general explicit construction of completions is done in UniformSpace/Completion, leading to a functor from uniform spaces to complete Hausdorff uniform spaces that is left adjoint to the inclusion, see UniformSpace/UniformSpaceCat for the category packaging.

Implementation notes #

A tiny technical advantage of using a characteristic predicate such as the properties listed in AbstractCompletion instead of stating the universal property is that the universal property derived from the predicate is more universe polymorphic.

References #

We don't know any traditional text discussing this. Real world mathematics simply silently identify the results of any two constructions that lead to something one could reasonably call a completion.

Tags #

uniform spaces, completion, universal property

structure AbstractCompletion (α : Type u) [UniformSpace α] :
Type (max u (v + 1))

A completion of α is the data of a complete separated uniform space and a map from α with dense range and inducing the original uniform structure on α.

  • space : Type v

    The underlying space of the completion.

  • coe : αself.space

    A map from a space to its completion.

  • uniformStruct : UniformSpace self.space

    The completion carries a uniform structure.

  • complete : CompleteSpace self.space

    The completion is complete.

  • separation : T0Space self.space

    The completion is a T₀ space.

  • isUniformInducing : IsUniformInducing self.coe

    The map into the completion is uniform-inducing.

  • dense : DenseRange self.coe

    The map into the completion has dense range.

Instances For

    If α is complete, then it is an abstract completion of itself.

    Equations
    Instances For
      theorem AbstractCompletion.induction_on {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {p : pkg.spaceProp} (a : pkg.space) (hp : IsClosed {a : pkg.space | p a}) (ih : ∀ (a : α), p (pkg.coe a)) :
      p a
      theorem AbstractCompletion.funext {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [TopologicalSpace β] [T2Space β] {f g : pkg.spaceβ} (hf : Continuous f) (hg : Continuous g) (h : ∀ (a : α), f (pkg.coe a) = g (pkg.coe a)) :
      f = g
      def AbstractCompletion.extend {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (f : αβ) :
      pkg.spaceβ

      Extension of maps to completions

      Equations
      Instances For
        theorem AbstractCompletion.extend_def {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] {f : αβ} (hf : UniformContinuous f) :
        pkg.extend f = .extend f
        theorem AbstractCompletion.extend_coe {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] {f : αβ} [T2Space β] (hf : UniformContinuous f) (a : α) :
        pkg.extend f (pkg.coe a) = f a
        theorem AbstractCompletion.continuous_extend {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] {f : αβ} [CompleteSpace β] :
        theorem AbstractCompletion.extend_unique {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] {f : αβ} [CompleteSpace β] [T0Space β] (hf : UniformContinuous f) {g : pkg.spaceβ} (hg : UniformContinuous g) (h : ∀ (a : α), f a = g (pkg.coe a)) :
        pkg.extend f = g
        @[simp]
        theorem AbstractCompletion.extend_comp_coe {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] [CompleteSpace β] [T0Space β] {f : pkg.spaceβ} (hf : UniformContinuous f) :
        pkg.extend (f pkg.coe) = f
        def AbstractCompletion.map {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{vβ, uβ} β) (f : αβ) :
        pkg.spacepkg'.space

        Lifting maps to completions

        Equations
        Instances For
          theorem AbstractCompletion.continuous_map {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{vβ, uβ} β) (f : αβ) :
          Continuous (pkg.map pkg' f)
          @[simp]
          theorem AbstractCompletion.map_coe {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{vβ, uβ} β) {f : αβ} (hf : UniformContinuous f) (a : α) :
          pkg.map pkg' f (pkg.coe a) = pkg'.coe (f a)
          theorem AbstractCompletion.map_unique {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{vβ, uβ} β) {f : αβ} {g : pkg.spacepkg'.space} (hg : UniformContinuous g) (h : ∀ (a : α), pkg'.coe (f a) = g (pkg.coe a)) :
          pkg.map pkg' f = g
          @[simp]
          theorem AbstractCompletion.extend_map {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{vβ, uβ} β) {γ : Type uγ} [UniformSpace γ] [CompleteSpace γ] [T0Space γ] {f : βγ} {g : αβ} (hf : UniformContinuous f) (hg : UniformContinuous g) :
          pkg'.extend f pkg.map pkg' g = pkg.extend (f g)
          theorem AbstractCompletion.map_comp {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{vβ, uβ} β) {γ : Type uγ} [UniformSpace γ] (pkg'' : AbstractCompletion.{vγ, uγ} γ) {g : βγ} {f : αβ} (hg : UniformContinuous g) (hf : UniformContinuous f) :
          pkg'.map pkg'' g pkg.map pkg' f = pkg.map pkg'' (g f)

          The comparison map between two completions of the same uniform space.

          Equations
          Instances For
            theorem AbstractCompletion.compare_coe {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) (pkg' : AbstractCompletion.{vα', uα} α) (a : α) :
            pkg.compare pkg' (pkg.coe a) = pkg'.coe a

            The uniform bijection between two completions of the same uniform space.

            Equations
            • pkg.compareEquiv pkg' = { toFun := pkg.compare pkg', invFun := pkg'.compare pkg, left_inv := , right_inv := , uniformContinuous_toFun := , uniformContinuous_invFun := }
            Instances For
              theorem AbstractCompletion.compare_comp_eq_compare {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) (pkg' : AbstractCompletion.{vα', uα} α) (γ : Type uγ) [TopologicalSpace γ] [T3Space γ] {f : αγ} (cont_f : Continuous f) :
              (∀ (a : pkg.space), Filter.Tendsto f (Filter.comap pkg.coe (nhds a)) (nhds (.extend f a))).extend f pkg'.compare pkg = .extend f

              Products of completions

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def AbstractCompletion.extend₂ {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{vβ, uβ} β) {γ : Type uγ} [UniformSpace γ] (f : αβγ) :
                pkg.spacepkg'.spaceγ

                Extend two variable map to completions.

                Equations
                Instances For
                  theorem AbstractCompletion.extension₂_coe_coe {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{vβ, uβ} β) {γ : Type uγ} [UniformSpace γ] [T0Space γ] {f : αβγ} (hf : UniformContinuous (Function.uncurry f)) (a : α) (b : β) :
                  pkg.extend₂ pkg' f (pkg.coe a) (pkg'.coe b) = f a b
                  def AbstractCompletion.map₂ {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{u_1, uβ} β) {γ : Type uγ} [UniformSpace γ] (pkg'' : AbstractCompletion.{vγ, uγ} γ) (f : αβγ) :
                  pkg.spacepkg'.spacepkg''.space

                  Lift two variable maps to completions.

                  Equations
                  Instances For
                    theorem AbstractCompletion.uniformContinuous_map₂ {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{u_1, uβ} β) {γ : Type uγ} [UniformSpace γ] (pkg'' : AbstractCompletion.{vγ, uγ} γ) (f : αβγ) :
                    UniformContinuous₂ (pkg.map₂ pkg' pkg'' f)
                    theorem AbstractCompletion.continuous_map₂ {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{u_2, uβ} β) {γ : Type uγ} [UniformSpace γ] (pkg'' : AbstractCompletion.{vγ, uγ} γ) {δ : Type u_1} [TopologicalSpace δ] {f : αβγ} {a : δpkg.space} {b : δpkg'.space} (ha : Continuous a) (hb : Continuous b) :
                    Continuous fun (d : δ) => pkg.map₂ pkg' pkg'' f (a d) (b d)
                    theorem AbstractCompletion.map₂_coe_coe {α : Type uα} [UniformSpace α] (pkg : AbstractCompletion.{vα, uα} α) {β : Type uβ} [UniformSpace β] (pkg' : AbstractCompletion.{u_1, uβ} β) {γ : Type uγ} [UniformSpace γ] (pkg'' : AbstractCompletion.{vγ, uγ} γ) (a : α) (b : β) (f : αβγ) (hf : UniformContinuous₂ f) :
                    pkg.map₂ pkg' pkg'' f (pkg.coe a) (pkg'.coe b) = pkg''.coe (f a b)