# mathlibdocumentation

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:

• Cauchy α the uniform completion of the uniform space α (using Cauchy filters). These are not minimal filters.

• completion α := quotient (separation_setoid (Cauchy α)) the Hausdorff completion.

## 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)  :
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
Instances for Cauchy
def Cauchy.gen {α : Type u} (s : set × α)) :

The pairs of Cauchy filters generated by a set.

Equations
theorem Cauchy.monotone_gen {α : Type u}  :
@[protected, instance]
def Cauchy.uniform_space {α : Type u}  :
Equations
theorem Cauchy.mem_uniformity {α : Type u} {s : set (Cauchy α × Cauchy α)} :
s uniformity (Cauchy α) ∃ (t : set × α)) (H : t , s
theorem Cauchy.mem_uniformity' {α : Type u} {s : set (Cauchy α × Cauchy α)} :
s uniformity (Cauchy α) ∃ (t : set × α)) (H : t , ∀ (f g : Cauchy α), t f.val.prod g.val(f, g) s
def Cauchy.pure_cauchy {α : Type u} (a : α) :

Embedding of α into its completion Cauchy α

Equations
theorem Cauchy.uniform_inducing_pure_cauchy {α : Type u}  :
theorem Cauchy.uniform_embedding_pure_cauchy {α : Type u}  :
theorem Cauchy.dense_range_pure_cauchy {α : Type u}  :
theorem Cauchy.dense_inducing_pure_cauchy {α : Type u}  :
theorem Cauchy.dense_embedding_pure_cauchy {α : Type u}  :
theorem Cauchy.nonempty_Cauchy_iff {α : Type u}  :
@[protected, instance]
def Cauchy.complete_space {α : Type u}  :
@[protected, instance]
def Cauchy.inhabited {α : Type u} [inhabited α] :
Equations
@[protected, instance]
def Cauchy.nonempty {α : Type u} [h : nonempty α] :
noncomputable def Cauchy.extend {α : Type u} {β : Type v} (f : α → β) :
→ β

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

Equations
theorem Cauchy.extend_pure_cauchy {α : Type u} {β : Type v} {f : α → β} (hf : uniform_continuous f) (a : α) :
= f a
theorem Cauchy.uniform_continuous_extend {α : Type u} {β : Type v} {f : α → β} :
theorem Cauchy.Cauchy_eq {α : Type u_1} [inhabited α] {f g : Cauchy α} :
Lim f.val = Lim g.val (f, g)
theorem Cauchy.separated_pure_cauchy_injective {α : Type u_1} [s : separated_space α] :
function.injective (λ (a : α),
@[protected, instance]
def uniform_space.completion (α : Type u_1)  :
Type u_1

Hausdorff completion of α

Equations
Instances for uniform_space.completion
@[protected, instance]
def uniform_space.completion.inhabited (α : Type u_1) [inhabited α] :
Equations
@[protected, instance]
def uniform_space.completion.uniform_space (α : Type u_1)  :
Equations
@[protected, instance]
def uniform_space.completion.complete_space (α : Type u_1)  :
@[protected, instance]
@[protected, instance]
def uniform_space.completion.t3_space (α : Type u_1)  :
@[protected, instance]
def uniform_space.completion.has_coe_t (α : Type u_1)  :

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

Equations
@[protected]
theorem uniform_space.completion.coe_eq (α : Type u_1)  :
theorem uniform_space.completion.comap_coe_eq_uniformity (α : Type u_1)  :
filter.comap (λ (p : α × α), ((p.fst), (p.snd))) =
theorem uniform_space.completion.dense_range_coe {α : Type u_1}  :
def uniform_space.completion.cpkg {α : Type u_1}  :

The Haudorff completion as an abstract completion.

Equations
@[protected, instance]
Equations
theorem uniform_space.completion.continuous_coe (α : Type u_1)  :
theorem uniform_space.completion.coe_injective (α : Type u_1)  :
@[protected, instance]
theorem uniform_space.completion.dense_range_coe₂ {α : Type u_1} {β : Type u_2}  :
dense_range (λ (x : α × β), ((x.fst), (x.snd)))
theorem uniform_space.completion.dense_range_coe₃ {α : Type u_1} {β : Type u_2} {γ : Type u_3}  :
dense_range (λ (x : α × β × γ), ((x.fst), (x.snd.fst), (x.snd.snd)))
theorem uniform_space.completion.induction_on {α : Type u_1} {p : → Prop} (a : uniform_space.completion α) (hp : is_closed {a : | p a}) (ih : ∀ (a : α), p a) :
p a
theorem uniform_space.completion.induction_on₂ {α : Type u_1} {β : Type u_2} {p : → Prop} (a : uniform_space.completion α) (b : uniform_space.completion β) (hp : is_closed {x : | p x.fst x.snd}) (ih : ∀ (a : α) (b : β), p a b) :
p a b
theorem uniform_space.completion.induction_on₃ {α : Type u_1} {β : Type u_2} {γ : Type u_3} {p : → Prop} (a : uniform_space.completion α) (b : uniform_space.completion β) (c : uniform_space.completion γ) (hp : is_closed {x : | p x.fst x.snd.fst x.snd.snd}) (ih : ∀ (a : α) (b : β) (c : γ), p a b c) :
p a b c
theorem uniform_space.completion.ext {α : Type u_1} {Y : Type u_2} [t2_space Y] {f g : → Y} (hf : continuous f) (hg : continuous g) (h : ∀ (a : α), f a = g a) :
f = g
theorem uniform_space.completion.ext' {α : Type u_1} {Y : Type u_2} [t2_space Y] {f g : → Y} (hf : continuous f) (hg : continuous g) (h : ∀ (a : α), f a = g a) (a : uniform_space.completion α) :
f a = g a
@[protected]
noncomputable def uniform_space.completion.extension {α : Type u_1} {β : Type u_2} (f : α → β) :

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

Equations
theorem uniform_space.completion.uniform_continuous_extension {α : Type u_1} {β : Type u_2} {f : α → β}  :
theorem uniform_space.completion.continuous_extension {α : Type u_1} {β : Type u_2} {f : α → β}  :
@[simp]
theorem uniform_space.completion.extension_coe {α : Type u_1} {β : Type u_2} {f : α → β} (hf : uniform_continuous f) (a : α) :
theorem uniform_space.completion.extension_unique {α : Type u_1} {β : Type u_2} {f : α → β} (hf : uniform_continuous f) {g : → β} (hg : uniform_continuous g) (h : ∀ (a : α), f a = g a) :
@[simp]
theorem uniform_space.completion.extension_comp_coe {α : Type u_1} {β : Type u_2} {f : → β} (hf : uniform_continuous f) :
@[protected]
noncomputable def uniform_space.completion.map {α : Type u_1} {β : Type u_2} (f : α → β) :

Completion functor acting on morphisms

Equations
theorem uniform_space.completion.uniform_continuous_map {α : Type u_1} {β : Type u_2} {f : α → β} :
theorem uniform_space.completion.continuous_map {α : Type u_1} {β : Type u_2} {f : α → β} :
@[simp]
theorem uniform_space.completion.map_coe {α : Type u_1} {β : Type u_2} {f : α → β} (hf : uniform_continuous f) (a : α) :
= (f a)
theorem uniform_space.completion.map_unique {α : Type u_1} {β : Type u_2} {f : α → β} (hg : uniform_continuous g) (h : ∀ (a : α), (f a) = g a) :
@[simp]
theorem uniform_space.completion.map_id {α : Type u_1}  :
theorem uniform_space.completion.extension_map {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : β → γ} {g : α → β} (hf : uniform_continuous f) (hg : uniform_continuous g) :
theorem uniform_space.completion.map_comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} {g : β → γ} {f : α → β} (hg : uniform_continuous g) (hf : uniform_continuous f) :

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

Equations
@[protected]
noncomputable def uniform_space.completion.extension₂ {α : Type u_1} {β : Type u_2} {γ : Type u_3} (f : α → β → γ) :

Extend a two variable map to the Hausdorff completions.

Equations
@[simp]
theorem uniform_space.completion.extension₂_coe_coe {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β → γ} (hf : uniform_continuous₂ f) (a : α) (b : β) :
= f a b
theorem uniform_space.completion.uniform_continuous_extension₂ {α : Type u_1} {β : Type u_2} {γ : Type u_3} (f : α → β → γ)  :
@[protected]
noncomputable def uniform_space.completion.map₂ {α : Type u_1} {β : Type u_2} {γ : Type u_3} (f : α → β → γ) :

Lift a two variable map to the Hausdorff completions.

Equations
theorem uniform_space.completion.uniform_continuous_map₂ {α : Type u_1} {β : Type u_2} {γ : Type u_3} (f : α → β → γ) :
theorem uniform_space.completion.continuous_map₂ {α : Type u_1} {β : Type u_2} {γ : Type u_3} {δ : Type u_4} {f : α → β → γ} {a : δ → } {b : δ → } (ha : continuous a) (hb : continuous b) :
continuous (λ (d : δ), (b d))
theorem uniform_space.completion.map₂_coe_coe {α : Type u_1} {β : Type u_2} {γ : Type u_3} (a : α) (b : β) (f : α → β → γ) (hf : uniform_continuous₂ f) :
= (f a b)