mathlib documentation

topology.uniform_space.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 (ie. uniformly continuous map) coe : α → 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 ∘ coe. 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 coe 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 coe ∘ f = (completion.map f) ∘ coe 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.uniform_space.basic.

def Cauchy (α : Type u) [uniform_space α] :
Type u

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.

Equations
def Cauchy.gen {α : Type u} [uniform_space α] :
set × α)set (Cauchy α × Cauchy α)

Equations
@[instance]
def Cauchy.uniform_space {α : Type u} [uniform_space α] :

Equations
theorem Cauchy.mem_uniformity {α : Type u} [uniform_space α] {s : set (Cauchy α × Cauchy α)} :
s 𝓤 (Cauchy α) ∃ (t : set × α)) (H : t 𝓤 α), Cauchy.gen t s

theorem Cauchy.mem_uniformity' {α : Type u} [uniform_space α] {s : set (Cauchy α × Cauchy α)} :
s 𝓤 (Cauchy α) ∃ (t : set × α)) (H : t 𝓤 α), ∀ (f g : Cauchy α), t f.val ×ᶠ g.val(f, g) s

def Cauchy.pure_cauchy {α : Type u} [uniform_space α] :
α → Cauchy α

Embedding of α into its completion Cauchy α

Equations
@[instance]
def Cauchy.complete_space {α : Type u} [uniform_space α] :

@[instance]
def Cauchy.inhabited {α : Type u} [uniform_space α] [inhabited α] :

Equations
@[instance]
def Cauchy.nonempty {α : Type u} [uniform_space α] [h : nonempty α] :

def Cauchy.extend {α : Type u} [uniform_space α] {β : Type v} [uniform_space β] :
(α → β)Cauchy α → β

Equations
theorem Cauchy.extend_pure_cauchy {α : Type u} [uniform_space α] {β : Type v} [uniform_space β] [separated_space β] {f : α → β} (hf : uniform_continuous f) (a : α) :

theorem Cauchy.uniform_continuous_extend {α : Type u} [uniform_space α] {β : Type v} [uniform_space β] [separated_space β] [complete_space β] {f : α → β} :

theorem Cauchy.Cauchy_eq {α : Type u_1} [inhabited α] [uniform_space α] [complete_space α] [separated_space α] {f g : Cauchy α} :
Lim f.val = Lim g.val (f, g) 𝓢 (Cauchy α)

def uniform_space.completion (α : Type u_1) [uniform_space α] :
Type u_1

Hausdorff completion of α

Equations
@[instance]

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

Equations
theorem uniform_space.completion.dense_range_coe₂ {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] :
dense_range (λ (x : α × β), ((x.fst), (x.snd)))

theorem uniform_space.completion.dense_range_coe₃ {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {γ : Type u_3} [uniform_space γ] :
dense_range (λ (x : α × β × γ), ((x.fst), (x.snd.fst), (x.snd.snd)))

theorem uniform_space.completion.induction_on {α : Type u_1} [uniform_space α] {p : uniform_space.completion α → Prop} (a : uniform_space.completion α) :
is_closed {a : uniform_space.completion α | p a}(∀ (a : α), p a)p a

theorem uniform_space.completion.induction_on₂ {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {p : uniform_space.completion αuniform_space.completion β → Prop} (a : uniform_space.completion α) (b : uniform_space.completion β) :
is_closed {x : uniform_space.completion α × uniform_space.completion β | p x.fst x.snd}(∀ (a : α) (b : β), p a b)p a b

theorem uniform_space.completion.induction_on₃ {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {γ : Type u_3} [uniform_space γ] {p : uniform_space.completion αuniform_space.completion βuniform_space.completion γ → Prop} (a : uniform_space.completion α) (b : uniform_space.completion β) (c : uniform_space.completion γ) :
is_closed {x : uniform_space.completion α × uniform_space.completion β × uniform_space.completion γ | p x.fst x.snd.fst x.snd.snd}(∀ (a : α) (b : β) (c : γ), p a b c)p a b c

theorem uniform_space.completion.ext {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] [t2_space β] {f g : uniform_space.completion α → β} :
continuous fcontinuous g(∀ (a : α), f a = g a)f = g

def uniform_space.completion.extension {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] :
(α → β)uniform_space.completion α → β

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

Equations
@[simp]
theorem uniform_space.completion.extension_coe {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {f : α → β} [separated_space β] (hf : uniform_continuous f) (a : α) :

theorem uniform_space.completion.extension_unique {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {f : α → β} [separated_space β] [complete_space β] (hf : uniform_continuous f) {g : uniform_space.completion α → β} :
uniform_continuous g(∀ (a : α), f a = g a)uniform_space.completion.extension f = g

def uniform_space.completion.map {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] :

Completion functor acting on morphisms

Equations
theorem uniform_space.completion.continuous_map {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {f : α → β} :

@[simp]
theorem uniform_space.completion.map_coe {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {f : α → β} (hf : uniform_continuous f) (a : α) :

theorem uniform_space.completion.map_unique {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {f : α → β} {g : uniform_space.completion αuniform_space.completion β} :
uniform_continuous g(∀ (a : α), (f a) = g a)uniform_space.completion.map f = g

theorem uniform_space.completion.map_comp {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {γ : Type u_3} [uniform_space γ] {g : β → γ} {f : α → β} :

@[simp]
theorem uniform_space.completion.extension₂_coe_coe {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {γ : Type u_3} [uniform_space γ] {f : α → β → γ} [separated_space γ] (hf : uniform_continuous₂ f) (a : α) (b : β) :

theorem uniform_space.completion.uniform_continuous_map₂ {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {γ : Type u_3} [uniform_space γ] (f : α → β → γ) :

theorem uniform_space.completion.continuous_map₂ {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {γ : Type u_3} [uniform_space γ] {δ : Type u_4} [topological_space δ] {f : α → β → γ} {a : δ → uniform_space.completion α} {b : δ → uniform_space.completion β} :
continuous acontinuous bcontinuous (λ (d : δ), uniform_space.completion.map₂ f (a d) (b d))

theorem uniform_space.completion.map₂_coe_coe {α : Type u_1} [uniform_space α] {β : Type u_2} [uniform_space β] {γ : Type u_3} [uniform_space γ] (a : α) (b : β) (f : α → β → γ) :