Documentation

Mathlib.Topology.UniformSpace.Completion

Hausdorff completions of uniform spaces #

The goal is to construct a left-adjoint to the inclusion of complete Hausdorff uniform spaces into all uniform spaces. Any uniform space α gets a completion Completion α and a morphism (i.e. uniformly continuous map) (↑) : α → Completion α which solves the universal mapping problem of factorizing morphisms from α to any complete Hausdorff uniform space β. It means any uniformly continuous f : α → β gives rise to a unique morphism Completion.extension f : Completion α → β such that f = Completion.extension f ∘ (↑). Actually Completion.extension f is defined for all maps from α to β but it has the desired properties only if f is uniformly continuous.

Beware that (↑) is not injective if α is not Hausdorff. But its image is always dense. The adjoint functor acting on morphisms is then constructed by the usual abstract nonsense. For every uniform spaces α and β, it turns f : α → β into a morphism Completion.map f : Completion α → Completion β such that (↑) ∘ f = (Completion.map f) ∘ (↑) provided f is uniformly continuous. This construction is compatible with composition.

In this file we introduce the following concepts:

References #

This formalization is mostly based on N. Bourbaki: General Topology I. M. James: Topologies and Uniformities From a slightly different perspective in order to reuse material in Topology.UniformSpace.Basic.

def CauchyFilter (α : Type u) [UniformSpace α] :

Space of Cauchy filters

This is essentially the completion of a uniform space. The embeddings are the neighbourhood filters. This space is not minimal, the separated uniform space (i.e. quotiented on the intersection of all entourages) is necessary for this.

Instances For
    def CauchyFilter.gen {α : Type u} [UniformSpace α] (s : SetRel α α) :

    The pairs of Cauchy filters generated by a set.

    Instances For
      theorem CauchyFilter.mem_uniformity {α : Type u} [UniformSpace α] {s : Set (CauchyFilter α × CauchyFilter α)} :
      s uniformity (CauchyFilter α) tuniformity α, gen t s
      theorem CauchyFilter.basis_uniformity {α : Type u} [UniformSpace α] {ι : Sort u_1} {p : ιProp} {s : ιSetRel α α} (h : (uniformity α).HasBasis p s) :
      theorem CauchyFilter.mem_uniformity' {α : Type u} [UniformSpace α] {s : Set (CauchyFilter α × CauchyFilter α)} :
      s uniformity (CauchyFilter α) tuniformity α, ∀ (f g : CauchyFilter α), t f ×ˢ g(f, g) s
      def CauchyFilter.pureCauchy {α : Type u} [UniformSpace α] (a : α) :

      Embedding of α into its completion CauchyFilter α

      Instances For
        theorem CauchyFilter.nonempty_cauchyFilter_iff {α : Type u} [UniformSpace α] :
        Nonempty (CauchyFilter α) Nonempty α
        @[implicit_reducible]
        instance CauchyFilter.instInhabited {α : Type u} [UniformSpace α] [Inhabited α] :
        Inhabited (CauchyFilter α)
        instance CauchyFilter.instNonempty {α : Type u} [UniformSpace α] [h : Nonempty α] :
        Nonempty (CauchyFilter α)
        noncomputable def CauchyFilter.extend {α : Type u} [UniformSpace α] {β : Type v} [UniformSpace β] (f : αβ) :
        CauchyFilter αβ

        Extend a uniformly continuous function α → β to a function CauchyFilter α → β. Outputs junk when f is not uniformly continuous.

        Instances For
          theorem CauchyFilter.extend_pureCauchy {α : Type u} [UniformSpace α] {β : Type v} [UniformSpace β] [T0Space β] {f : αβ} (hf : UniformContinuous f) (a : α) :
          extend f (pureCauchy a) = f a
          theorem CauchyFilter.inseparable_iff_of_le_nhds {α : Type u} [UniformSpace α] {f g : CauchyFilter α} {a b : α} (ha : f nhds a) (hb : g nhds b) :
          theorem CauchyFilter.cauchyFilter_eq {α : Type u_1} [UniformSpace α] [CompleteSpace α] [T0Space α] {f g : CauchyFilter α} :
          (↑f).lim = (↑g).lim Inseparable f g

          Hausdorff completion of α

          Instances For
            @[implicit_reducible]
            instance UniformSpace.Completion.inhabited (α : Type u_1) [UniformSpace α] [Inhabited α] :
            Inhabited (Completion α)

            The map from a uniform space to its completion.

            Instances For
              @[implicit_reducible]
              instance UniformSpace.Completion.instCoe (α : Type u_1) [UniformSpace α] :
              Coe α (Completion α)

              Automatic coercion from α to its completion. Not always injective.

              theorem UniformSpace.Completion.comap_coe_eq_uniformity (α : Type u_1) [UniformSpace α] :
              Filter.comap (fun (p : α × α) => (p.1, p.2)) (uniformity (Completion α)) = uniformity α

              The Hausdorff completion as an abstract completion.

              Instances For
                @[simp]
                theorem UniformSpace.Completion.coe_inj {α : Type u_1} [UniformSpace α] [T0Space α] {a b : α} :
                a = b a = b

                The uniform bijection between a complete space and its uniform completion.

                Instances For
                  theorem UniformSpace.Completion.denseRange_coe₂ {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] :
                  DenseRange fun (x : α × β) => (x.1, x.2)
                  theorem UniformSpace.Completion.denseRange_coe₃ {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {γ : Type u_3} [UniformSpace γ] :
                  DenseRange fun (x : α × β × γ) => (x.1, x.2.1, x.2.2)
                  theorem UniformSpace.Completion.induction_on {α : Type u_1} [UniformSpace α] {p : Completion αProp} (a : Completion α) (hp : IsClosed {a : Completion α | p a}) (ih : ∀ (a : α), p a) :
                  p a
                  theorem UniformSpace.Completion.induction_on₂ {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {p : Completion αCompletion βProp} (a : Completion α) (b : Completion β) (hp : IsClosed {x : Completion α × Completion β | p x.1 x.2}) (ih : ∀ (a : α) (b : β), p a b) :
                  p a b
                  theorem UniformSpace.Completion.induction_on₃ {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {γ : Type u_3} [UniformSpace γ] {p : Completion αCompletion βCompletion γProp} (a : Completion α) (b : Completion β) (c : Completion γ) (hp : IsClosed {x : Completion α × Completion β × Completion γ | p x.1 x.2.1 x.2.2}) (ih : ∀ (a : α) (b : β) (c : γ), p a b c) :
                  p a b c
                  theorem UniformSpace.Completion.ext {α : Type u_1} [UniformSpace α] {Y : Type u_4} [TopologicalSpace Y] [T2Space Y] {f g : Completion αY} (hf : Continuous f) (hg : Continuous g) (h : ∀ (a : α), f a = g a) :
                  f = g
                  theorem UniformSpace.Completion.ext' {α : Type u_1} [UniformSpace α] {Y : Type u_4} [TopologicalSpace Y] [T2Space Y] {f g : Completion αY} (hf : Continuous f) (hg : Continuous g) (h : ∀ (a : α), f a = g a) (a : Completion α) :
                  f a = g a
                  noncomputable def UniformSpace.Completion.extension {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] (f : αβ) :
                  Completion αβ

                  "Extension" to the completion. It is defined for any map f but returns an arbitrary constant value if f is not uniformly continuous

                  Instances For
                    theorem UniformSpace.Completion.extension_coe {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {f : αβ} [T0Space β] (hf : UniformContinuous f) (a : α) :
                    theorem UniformSpace.Completion.inseparable_extension_coe {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {f : αβ} (hf : UniformContinuous f) (x : α) :
                    theorem UniformSpace.Completion.extension_unique {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {f : αβ} [T0Space β] [CompleteSpace β] (hf : UniformContinuous f) {g : Completion αβ} (hg : UniformContinuous g) (h : ∀ (a : α), f a = g a) :
                    noncomputable def UniformSpace.Completion.map {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] (f : αβ) :

                    Completion functor acting on morphisms

                    Instances For
                      theorem UniformSpace.Completion.map_coe {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {f : αβ} (hf : UniformContinuous f) (a : α) :
                      Completion.map f a = (f a)
                      theorem UniformSpace.Completion.map_unique {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {f : αβ} {g : Completion αCompletion β} (hg : UniformContinuous g) (h : ∀ (a : α), (f a) = g a) :
                      theorem UniformSpace.Completion.extension_map {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {γ : Type u_3} [UniformSpace γ] [CompleteSpace γ] [T0Space γ] {f : βγ} {g : αβ} (hf : UniformContinuous f) (hg : UniformContinuous g) :
                      theorem UniformSpace.Completion.map_comp {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {γ : Type u_3} [UniformSpace γ] {g : βγ} {f : αβ} (hg : UniformContinuous g) (hf : UniformContinuous f) :
                      noncomputable def UniformSpace.Completion.mapEquiv {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] (e : α ≃ᵤ β) :

                      The uniform isomorphism between two completions of isomorphic uniform spaces.

                      Instances For
                        @[simp]
                        theorem UniformSpace.Completion.mapEquiv_symm {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] (e : α ≃ᵤ β) :
                        @[simp]
                        theorem UniformSpace.Completion.mapEquiv_coe {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] (e : α ≃ᵤ β) (a : α) :
                        (mapEquiv e) a = (e a)

                        The isomorphism between the completion of a uniform space and the completion of its separation quotient.

                        Instances For
                          noncomputable def UniformSpace.Completion.extension₂ {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {γ : Type u_3} [UniformSpace γ] (f : αβγ) :
                          Completion αCompletion βγ

                          Extend a two variable map to the Hausdorff completions.

                          Instances For
                            theorem UniformSpace.Completion.extension₂_coe_coe {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {γ : Type u_3} [UniformSpace γ] {f : αβγ} [T0Space γ] (hf : UniformContinuous₂ f) (a : α) (b : β) :
                            Completion.extension₂ f a b = f a b
                            noncomputable def UniformSpace.Completion.map₂ {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {γ : Type u_3} [UniformSpace γ] (f : αβγ) :

                            Lift a two variable map to the Hausdorff completions.

                            Instances For
                              theorem UniformSpace.Completion.continuous_map₂ {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {γ : Type u_3} [UniformSpace γ] {δ : Type u_4} [TopologicalSpace δ] {f : αβγ} {a : δCompletion α} {b : δCompletion β} (ha : Continuous a) (hb : Continuous b) :
                              Continuous fun (d : δ) => Completion.map₂ f (a d) (b d)
                              theorem UniformSpace.Completion.map₂_coe_coe {α : Type u_1} [UniformSpace α] {β : Type u_2} [UniformSpace β] {γ : Type u_3} [UniformSpace γ] (a : α) (b : β) (f : αβγ) (hf : UniformContinuous₂ f) :
                              Completion.map₂ f a b = (f a b)