# Documentation

Mathlib.Topology.UniformSpace.Equiv

# Uniform isomorphisms #

This file defines uniform isomorphisms between two uniform spaces. They are bijections with both directions uniformly continuous. We denote uniform isomorphisms with the notation ≃ᵤ.

# Main definitions #

• UniformEquiv α β: The type of uniform isomorphisms from α to β. This type can be denoted using the following notation: α ≃ᵤ β.
structure UniformEquiv (α : Type u_4) (β : Type u_5) [] [] extends :
Type (max u_4 u_5)

Uniform isomorphism between α and β

Instances For

Uniform isomorphism between α and β

Instances For
theorem UniformEquiv.toEquiv_injective {α : Type u} {β : Type u_1} [] [] :
Function.Injective UniformEquiv.toEquiv
instance UniformEquiv.instEquivLikeUniformEquiv {α : Type u} {β : Type u_1} [] [] :
EquivLike (α ≃ᵤ β) α β
@[simp]
theorem UniformEquiv.uniformEquiv_mk_coe {α : Type u} {β : Type u_1} [] [] (a : α β) (b : UniformContinuous a.toFun) (c : UniformContinuous a.invFun) :
{ toEquiv := a, uniformContinuous_toFun := b, uniformContinuous_invFun := c } = a
def UniformEquiv.symm {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
β ≃ᵤ α

Inverse of a uniform isomorphism.

Instances For
def UniformEquiv.Simps.apply {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
αβ

See Note [custom simps projection]. We need to specify this projection explicitly in this case, because it is a composition of multiple projections.

Instances For
def UniformEquiv.Simps.symm_apply {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
βα

See Note [custom simps projection]

Instances For
@[simp]
theorem UniformEquiv.coe_toEquiv {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
h.toEquiv = h
@[simp]
theorem UniformEquiv.coe_symm_toEquiv {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
h.symm = ↑()
theorem UniformEquiv.ext {α : Type u} {β : Type u_1} [] [] {h : α ≃ᵤ β} {h' : α ≃ᵤ β} (H : ∀ (x : α), h x = h' x) :
h = h'
@[simp]
theorem UniformEquiv.refl_apply (α : Type u_4) [] :
↑() = id
def UniformEquiv.refl (α : Type u_4) [] :
α ≃ᵤ α

Identity map as a uniform isomorphism.

Instances For
def UniformEquiv.trans {α : Type u} {β : Type u_1} {γ : Type u_2} [] [] [] (h₁ : α ≃ᵤ β) (h₂ : β ≃ᵤ γ) :
α ≃ᵤ γ

Composition of two uniform isomorphisms.

Instances For
@[simp]
theorem UniformEquiv.trans_apply {α : Type u} {β : Type u_1} {γ : Type u_2} [] [] [] (h₁ : α ≃ᵤ β) (h₂ : β ≃ᵤ γ) (a : α) :
↑() a = h₂ (h₁ a)
@[simp]
theorem UniformEquiv.uniformEquiv_mk_coe_symm {α : Type u} {β : Type u_1} [] [] (a : α β) (b : UniformContinuous a.toFun) (c : UniformContinuous a.invFun) :
↑(UniformEquiv.symm { toEquiv := a, uniformContinuous_toFun := b, uniformContinuous_invFun := c }) = a.symm
@[simp]
theorem UniformEquiv.refl_symm {α : Type u} [] :
theorem UniformEquiv.uniformContinuous {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
theorem UniformEquiv.continuous {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
theorem UniformEquiv.uniformContinuous_symm {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
theorem UniformEquiv.continuous_symm {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
def UniformEquiv.toHomeomorph {α : Type u} {β : Type u_1} [] [] (e : α ≃ᵤ β) :
α ≃ₜ β

A uniform isomorphism as a homeomorphism.

Instances For
theorem UniformEquiv.toHomeomorph_apply {α : Type u} {β : Type u_1} [] [] (e : α ≃ᵤ β) :
= e
theorem UniformEquiv.toHomeomorph_symm_apply {α : Type u} {β : Type u_1} [] [] (e : α ≃ᵤ β) :
@[simp]
theorem UniformEquiv.apply_symm_apply {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) (x : β) :
h (↑() x) = x
@[simp]
theorem UniformEquiv.symm_apply_apply {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) (x : α) :
↑() (h x) = x
theorem UniformEquiv.bijective {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
theorem UniformEquiv.injective {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
theorem UniformEquiv.surjective {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
def UniformEquiv.changeInv {α : Type u} {β : Type u_1} [] [] (f : α ≃ᵤ β) (g : βα) (hg : ) :
α ≃ᵤ β

Change the uniform equiv f to make the inverse function definitionally equal to g.

Instances For
@[simp]
theorem UniformEquiv.symm_comp_self {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
↑() h = id
@[simp]
theorem UniformEquiv.self_comp_symm {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
h ↑() = id
theorem UniformEquiv.range_coe {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
= Set.univ
theorem UniformEquiv.image_symm {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
theorem UniformEquiv.preimage_symm {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
theorem UniformEquiv.image_preimage {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) (s : Set β) :
h '' (h ⁻¹' s) = s
theorem UniformEquiv.preimage_image {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) (s : Set α) :
h ⁻¹' (h '' s) = s
theorem UniformEquiv.uniformInducing {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
theorem UniformEquiv.comap_eq {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
UniformSpace.comap (h) inst✝ = inst✝¹
theorem UniformEquiv.uniformEmbedding {α : Type u} {β : Type u_1} [] [] (h : α ≃ᵤ β) :
noncomputable def UniformEquiv.ofUniformEmbedding {α : Type u} {β : Type u_1} [] [] (f : αβ) (hf : ) :
α ≃ᵤ ↑()

Uniform equiv given a uniform embedding.

Instances For
def UniformEquiv.setCongr {α : Type u} [] {s : Set α} {t : Set α} (h : s = t) :
s ≃ᵤ t

If two sets are equal, then they are uniformly equivalent.

Instances For
def UniformEquiv.prodCongr {α : Type u} {β : Type u_1} {γ : Type u_2} {δ : Type u_3} [] [] [] [] (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) :
α × γ ≃ᵤ β × δ

Product of two uniform isomorphisms.

Instances For
@[simp]
theorem UniformEquiv.prodCongr_symm {α : Type u} {β : Type u_1} {γ : Type u_2} {δ : Type u_3} [] [] [] [] (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) :
@[simp]
theorem UniformEquiv.coe_prodCongr {α : Type u} {β : Type u_1} {γ : Type u_2} {δ : Type u_3} [] [] [] [] (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) :
↑() = Prod.map h₁ h₂
def UniformEquiv.prodComm (α : Type u) (β : Type u_1) [] [] :
α × β ≃ᵤ β × α

α × β is uniformly isomorphic to β × α.

Instances For
@[simp]
theorem UniformEquiv.prodComm_symm (α : Type u) (β : Type u_1) [] [] :
@[simp]
theorem UniformEquiv.coe_prodComm (α : Type u) (β : Type u_1) [] [] :
↑() = Prod.swap
def UniformEquiv.prodAssoc (α : Type u) (β : Type u_1) (γ : Type u_2) [] [] [] :
(α × β) × γ ≃ᵤ α × β × γ

(α × β) × γ is uniformly isomorphic to α × (β × γ).

Instances For
@[simp]
theorem UniformEquiv.prodPunit_apply (α : Type u) [] :
= fun p => p.fst
def UniformEquiv.prodPunit (α : Type u) [] :

α × {*} is uniformly isomorphic to α.

Instances For
def UniformEquiv.punitProd (α : Type u) [] :
≃ᵤ α

{*} × α is uniformly isomorphic to α.

Instances For
@[simp]
theorem UniformEquiv.coe_punitProd (α : Type u) [] :
= Prod.snd
@[simp]
theorem UniformEquiv.piCongrLeft_apply {ι : Type u_4} {ι' : Type u_5} {β : ι'Type u_6} [(j : ι') → UniformSpace (β j)] (e : ι ι') :
∀ (a : (b : ι) → β (e.symm.symm b)) (a_1 : ι'), ↑() a a_1 = (Equiv.piCongrLeft' β e.symm).symm a a_1
@[simp]
theorem UniformEquiv.piCongrLeft_toEquiv {ι : Type u_4} {ι' : Type u_5} {β : ι'Type u_6} [(j : ι') → UniformSpace (β j)] (e : ι ι') :
().toEquiv =
def UniformEquiv.piCongrLeft {ι : Type u_4} {ι' : Type u_5} {β : ι'Type u_6} [(j : ι') → UniformSpace (β j)] (e : ι ι') :
((i : ι) → β (e i)) ≃ᵤ ((j : ι') → β j)

Equiv.piCongrLeft as a uniform isomorphism: this is the natural isomorphism Π i, β (e i) ≃ᵤ Π j, β j obtained from a bijection ι ≃ ι'.

Instances For
@[simp]
theorem UniformEquiv.piCongrRight_apply {ι : Type u_4} {β₁ : ιType u_5} {β₂ : ιType u_6} [(i : ι) → UniformSpace (β₁ i)] [(i : ι) → UniformSpace (β₂ i)] (F : (i : ι) → β₁ i ≃ᵤ β₂ i) (H : (a : ι) → (fun i => β₁ i) a) (a : ι) :
↑() H a = ↑(F a) (H a)
@[simp]
theorem UniformEquiv.piCongrRight_toEquiv {ι : Type u_4} {β₁ : ιType u_5} {β₂ : ιType u_6} [(i : ι) → UniformSpace (β₁ i)] [(i : ι) → UniformSpace (β₂ i)] (F : (i : ι) → β₁ i ≃ᵤ β₂ i) :
().toEquiv = Equiv.piCongrRight fun i => (F i).toEquiv
def UniformEquiv.piCongrRight {ι : Type u_4} {β₁ : ιType u_5} {β₂ : ιType u_6} [(i : ι) → UniformSpace (β₁ i)] [(i : ι) → UniformSpace (β₂ i)] (F : (i : ι) → β₁ i ≃ᵤ β₂ i) :
((i : ι) → β₁ i) ≃ᵤ ((i : ι) → β₂ i)

Equiv.piCongrRight as a uniform isomorphism: this is the natural isomorphism Π i, β₁ i ≃ᵤ Π j, β₂ i obtained from uniform isomorphisms β₁ i ≃ᵤ β₂ i for each i.

Instances For
@[simp]
theorem UniformEquiv.piCongrRight_symm {ι : Type u_4} {β₁ : ιType u_5} {β₂ : ιType u_6} [(i : ι) → UniformSpace (β₁ i)] [(i : ι) → UniformSpace (β₂ i)] (F : (i : ι) → β₁ i ≃ᵤ β₂ i) :
@[simp]
theorem UniformEquiv.piCongr_toEquiv {ι₁ : Type u_4} {ι₂ : Type u_5} {β₁ : ι₁Type u_6} {β₂ : ι₂Type u_7} [(i₁ : ι₁) → UniformSpace (β₁ i₁)] [(i₂ : ι₂) → UniformSpace (β₂ i₂)] (e : ι₁ ι₂) (F : (i₁ : ι₁) → β₁ i₁ ≃ᵤ β₂ (e i₁)) :
().toEquiv = (Equiv.piCongrRight fun i => (F i).toEquiv).trans ()
@[simp]
theorem UniformEquiv.piCongr_apply {ι₁ : Type u_4} {ι₂ : Type u_5} {β₁ : ι₁Type u_6} {β₂ : ι₂Type u_7} [(i₁ : ι₁) → UniformSpace (β₁ i₁)] [(i₂ : ι₂) → UniformSpace (β₂ i₂)] (e : ι₁ ι₂) (F : (i₁ : ι₁) → β₁ i₁ ≃ᵤ β₂ (e i₁)) :
∀ (a : (i : ι₁) → β₁ i) (i₂ : ι₂), ↑() a i₂ = (_ : e (e.symm i₂) = i₂)↑(Equiv.piCongrRight fun i => (F i).toEquiv) a (e.symm i₂)
def UniformEquiv.piCongr {ι₁ : Type u_4} {ι₂ : Type u_5} {β₁ : ι₁Type u_6} {β₂ : ι₂Type u_7} [(i₁ : ι₁) → UniformSpace (β₁ i₁)] [(i₂ : ι₂) → UniformSpace (β₂ i₂)] (e : ι₁ ι₂) (F : (i₁ : ι₁) → β₁ i₁ ≃ᵤ β₂ (e i₁)) :
((i₁ : ι₁) → β₁ i₁) ≃ᵤ ((i₂ : ι₂) → β₂ i₂)

Equiv.piCongr as a uniform isomorphism: this is the natural isomorphism Π i₁, β₁ i ≃ᵤ Π i₂, β₂ i₂ obtained from a bijection ι₁ ≃ ι₂ and isomorphisms β₁ i₁ ≃ᵤ β₂ (e i₁) for each i₁ : ι₁.

Instances For
def UniformEquiv.ulift (α : Type u) [] :
≃ᵤ α

Uniform equivalence between ULift α and α.

Instances For
@[simp]
theorem UniformEquiv.funUnique_apply (ι : Type u_4) (α : Type u_5) [] [] :
↑() = fun f => f default
@[simp]
theorem UniformEquiv.funUnique_symm_apply (ι : Type u_4) (α : Type u_5) [] [] :
↑() = fun x b => x
def UniformEquiv.funUnique (ι : Type u_4) (α : Type u_5) [] [] :
(ια) ≃ᵤ α

If ι has a unique element, then ι → α is uniformly isomorphic to α.

Instances For
@[simp]
theorem UniformEquiv.piFinTwo_symm_apply (α : Fin 2Type u) [(i : Fin 2) → UniformSpace (α i)] :
= fun p => Fin.cons p.fst (Fin.cons p.snd finZeroElim)
@[simp]
theorem UniformEquiv.piFinTwo_apply (α : Fin 2Type u) [(i : Fin 2) → UniformSpace (α i)] :
= fun f => (f 0, f 1)
def UniformEquiv.piFinTwo (α : Fin 2Type u) [(i : Fin 2) → UniformSpace (α i)] :
((i : Fin 2) → α i) ≃ᵤ α 0 × α 1

Uniform isomorphism between dependent functions Π i : Fin 2, α i and α 0 × α 1.

Instances For
@[simp]
theorem UniformEquiv.finTwoArrow_symm_apply (α : Type u_4) [] :
= fun x => ![x.fst, x.snd]
@[simp]
theorem UniformEquiv.finTwoArrow_apply (α : Type u_4) [] :
= fun f => (f 0, f 1)
def UniformEquiv.finTwoArrow (α : Type u_4) [] :
(Fin 2α) ≃ᵤ α × α

Uniform isomorphism between α² = Fin 2 → α and α × α.

Instances For
def UniformEquiv.image {α : Type u} {β : Type u_1} [] [] (e : α ≃ᵤ β) (s : Set α) :
s ≃ᵤ ↑(e '' s)

A subset of a uniform space is uniformly isomorphic to its image under a uniform isomorphism.

Instances For
def Equiv.toUniformEquivOfUniformInducing {α : Type u} {β : Type u_1} [] [] (f : α β) (hf : ) :
α ≃ᵤ β

A uniform inducing equiv between uniform spaces is a uniform isomorphism.

Instances For