File: Mathlib/Topology/UniformSpace/Equiv.lean

full_name: UniformEquiv.uniformContinuous_invFun
code: /-- Uniform isomorphism between `α` and `β` -/
--@[nolint has_nonempty_instance] -- Porting note(#5171): linter not yet ported
structure UniformEquiv (α : Type*) (β : Type*) [UniformSpace α] [UniformSpace β] extends
  α ≃ β where
  /-- Uniform continuity of the function -/
  uniformContinuous_toFun : UniformContinuous toFun
  /-- Uniform continuity of the inverse -/
  uniformContinuous_invFun : UniformContinuous invFun
goal: UniformContinuous self.invFun

full_name: UniformEquiv.uniformContinuous_toFun
code: /-- Uniform isomorphism between `α` and `β` -/
--@[nolint has_nonempty_instance] -- Porting note(#5171): linter not yet ported
structure UniformEquiv (α : Type*) (β : Type*) [UniformSpace α] [UniformSpace β] extends
  α ≃ β where
  /-- Uniform continuity of the function -/
  uniformContinuous_toFun : UniformContinuous toFun
  /-- Uniform continuity of the inverse -/
  uniformContinuous_invFun : UniformContinuous invFun
goal: UniformContinuous self.toFun

full_name: UniformEquiv
code: /-- Uniform isomorphism between `α` and `β` -/
--@[nolint has_nonempty_instance] -- Porting note(#5171): linter not yet ported
structure UniformEquiv (α : Type*) (β : Type*) [UniformSpace α] [UniformSpace β] extends
  α ≃ β where
  /-- Uniform continuity of the function -/
  uniformContinuous_toFun : UniformContinuous toFun
  /-- Uniform continuity of the inverse -/
  uniformContinuous_invFun : UniformContinuous invFun
goal: Type (max u_4 u_5)

full_name: _aux_Mathlib_Topology_UniformSpace_Equiv___unexpand_UniformEquiv_1
code: /-- Uniform isomorphism between `α` and `β` -/
infixl:25 " ≃ᵤ " => UniformEquiv
goal: Lean.PrettyPrinter.Unexpander

full_name: «_aux_Mathlib_Topology_UniformSpace_Equiv___macroRules_term_≃ᵤ__1»
code: /-- Uniform isomorphism between `α` and `β` -/
infixl:25 " ≃ᵤ " => UniformEquiv
goal: Lean.Macro

full_name: UniformEquiv.toEquiv_injective
code: theorem toEquiv_injective : Function.Injective (toEquiv : α ≃ᵤ β → α ≃ β)
  
goal: Function.Injective UniformEquiv.toEquiv

full_name: UniformEquiv.instEquivLike
code: instance : EquivLike (α ≃ᵤ β) α β 
goal: EquivLike (α ≃ᵤ β) α β

full_name: UniformEquiv.uniformEquiv_mk_coe
code: @[simp]
theorem uniformEquiv_mk_coe (a : Equiv α β) (b c) : (UniformEquiv.mk a b c : α → β) = a 
goal: ⇑{ toEquiv := a, uniformContinuous_toFun := b, uniformContinuous_invFun := c } = ⇑a

full_name: UniformEquiv.symm
code: /-- Inverse of a uniform isomorphism. -/
protected def symm (h : α ≃ᵤ β) : β ≃ᵤ α 
goal: β ≃ᵤ α

full_name: UniformEquiv.Simps.apply
code: /-- See Note [custom simps projection]. We need to specify this projection explicitly in this case,
  because it is a composition of multiple projections. -/
def Simps.apply (h : α ≃ᵤ β) : α → β 
goal: α → β

full_name: UniformEquiv.Simps.symm_apply
code: /-- See Note [custom simps projection] -/
def Simps.symm_apply (h : α ≃ᵤ β) : β → α 
goal: β → α

full_name: UniformEquiv.coe_toEquiv
code: @[simp]
theorem coe_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv = h 
goal: ⇑h.toEquiv = ⇑h

full_name: UniformEquiv.coe_symm_toEquiv
code: @[simp]
theorem coe_symm_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv.symm = h.symm 
goal: ⇑h.symm = ⇑h.symm

full_name: UniformEquiv.ext
code: @[ext]
theorem ext {h h' : α ≃ᵤ β} (H : ∀ x, h x = h' x) : h = h' 
goal: h = h'

full_name: UniformEquiv.refl_apply
code: /-- Identity map as a uniform isomorphism. -/
@[simps! (config := .asFn) apply]
protected def refl (α : Type*) [UniformSpace α] : α ≃ᵤ α 
goal: ⇑(UniformEquiv.refl α) = id

full_name: UniformEquiv.refl
code: /-- Identity map as a uniform isomorphism. -/
@[simps! (config := .asFn) apply]
protected def refl (α : Type*) [UniformSpace α] : α ≃ᵤ α 
goal: α ≃ᵤ α

full_name: UniformEquiv.trans
code: /-- Composition of two uniform isomorphisms. -/
protected def trans (h₁ : α ≃ᵤ β) (h₂ : β ≃ᵤ γ) : α ≃ᵤ γ 
goal: α ≃ᵤ γ

full_name: UniformEquiv.trans_apply
code: @[simp]
theorem trans_apply (h₁ : α ≃ᵤ β) (h₂ : β ≃ᵤ γ) (a : α) : h₁.trans h₂ a = h₂ (h₁ a) 
goal: (h₁.trans h₂) a = h₂ (h₁ a)

full_name: UniformEquiv.uniformEquiv_mk_coe_symm
code: @[simp]
theorem uniformEquiv_mk_coe_symm (a : Equiv α β) (b c) :
    ((UniformEquiv.mk a b c).symm : β → α) = a.symm 
goal: ⇑{ toEquiv := a, uniformContinuous_toFun := b, uniformContinuous_invFun := c }.symm = ⇑a.symm

full_name: UniformEquiv.refl_symm
code: @[simp]
theorem refl_symm : (UniformEquiv.refl α).symm = UniformEquiv.refl α 
goal: (UniformEquiv.refl α).symm = UniformEquiv.refl α

full_name: UniformEquiv.uniformContinuous
code: protected theorem uniformContinuous (h : α ≃ᵤ β) : UniformContinuous h 
goal: UniformContinuous ⇑h

full_name: UniformEquiv.continuous
code: @[continuity]
protected theorem continuous (h : α ≃ᵤ β) : Continuous h 
goal: Continuous ⇑h

full_name: UniformEquiv.uniformContinuous_symm
code: protected theorem uniformContinuous_symm (h : α ≃ᵤ β) : UniformContinuous h.symm 
goal: UniformContinuous ⇑h.symm

full_name: UniformEquiv.continuous_symm
code: @[continuity]
protected theorem continuous_symm (h : α ≃ᵤ β) : Continuous h.symm 
goal: Continuous ⇑h.symm

full_name: UniformEquiv.toHomeomorph
code: /-- A uniform isomorphism as a homeomorphism. -/
-- @[simps] -- Porting note: removed, `simps?` produced no `simp` lemmas
protected def toHomeomorph (e : α ≃ᵤ β) : α ≃ₜ β 
goal: α ≃ₜ β

full_name: UniformEquiv.toHomeomorph_apply
code: lemma toHomeomorph_apply (e : α ≃ᵤ β) : (e.toHomeomorph : α → β) = e 
goal: ⇑e.toHomeomorph = ⇑e

full_name: UniformEquiv.toHomeomorph_symm_apply
code: lemma toHomeomorph_symm_apply (e : α ≃ᵤ β) : (e.toHomeomorph.symm : β → α) = e.symm 
goal: ⇑e.toHomeomorph.symm = ⇑e.symm

full_name: UniformEquiv.apply_symm_apply
code: @[simp]
theorem apply_symm_apply (h : α ≃ᵤ β) (x : β) : h (h.symm x) = x 
goal: h (h.symm x) = x

full_name: UniformEquiv.symm_apply_apply
code: @[simp]
theorem symm_apply_apply (h : α ≃ᵤ β) (x : α) : h.symm (h x) = x 
goal: h.symm (h x) = x

full_name: UniformEquiv.bijective
code: protected theorem bijective (h : α ≃ᵤ β) : Function.Bijective h 
goal: Function.Bijective ⇑h

full_name: UniformEquiv.injective
code: protected theorem injective (h : α ≃ᵤ β) : Function.Injective h 
goal: Function.Injective ⇑h

full_name: UniformEquiv.surjective
code: protected theorem surjective (h : α ≃ᵤ β) : Function.Surjective h 
goal: Function.Surjective ⇑h

full_name: UniformEquiv.changeInv
code: /-- Change the uniform equiv `f` to make the inverse function definitionally equal to `g`. -/
def changeInv (f : α ≃ᵤ β) (g : β → α) (hg : Function.RightInverse g f) : α ≃ᵤ β 
goal: α ≃ᵤ β

full_name: UniformEquiv.symm_comp_self
code: @[simp]
theorem symm_comp_self (h : α ≃ᵤ β) : (h.symm : β → α) ∘ h = id 
goal: ⇑h.symm ∘ ⇑h = id

full_name: UniformEquiv.self_comp_symm
code: @[simp]
theorem self_comp_symm (h : α ≃ᵤ β) : (h : α → β) ∘ h.symm = id 
goal: ⇑h ∘ ⇑h.symm = id

full_name: UniformEquiv.range_coe
code: theorem range_coe (h : α ≃ᵤ β) : range h = univ 
goal: Set.range ⇑h = Set.univ

full_name: UniformEquiv.image_symm
code: theorem image_symm (h : α ≃ᵤ β) : image h.symm = preimage h 
goal: Set.image ⇑h.symm = Set.preimage ⇑h

full_name: UniformEquiv.preimage_symm
code: theorem preimage_symm (h : α ≃ᵤ β) : preimage h.symm = image h 
goal: Set.preimage ⇑h.symm = Set.image ⇑h

full_name: UniformEquiv.image_preimage
code: theorem image_preimage (h : α ≃ᵤ β) (s : Set β) : h '' (h ⁻¹' s) = s 
goal: ⇑h '' (⇑h ⁻¹' s) = s

full_name: UniformEquiv.preimage_image
code: theorem preimage_image (h : α ≃ᵤ β) (s : Set α) : h ⁻¹' (h '' s) = s 
goal: ⇑h ⁻¹' (⇑h '' s) = s

full_name: UniformEquiv.uniformInducing
code: protected theorem uniformInducing (h : α ≃ᵤ β) : UniformInducing h 
goal: UniformInducing ⇑h

full_name: UniformEquiv.comap_eq
code: theorem comap_eq (h : α ≃ᵤ β) : UniformSpace.comap h ‹_› = ‹_› 
goal: UniformSpace.comap (⇑h) inst✝ = inst✝¹

full_name: UniformEquiv.uniformEmbedding
code: protected theorem uniformEmbedding (h : α ≃ᵤ β) : UniformEmbedding h 
goal: UniformEmbedding ⇑h

full_name: UniformEquiv.completeSpace_iff
code: theorem completeSpace_iff (h : α ≃ᵤ β) : CompleteSpace α ↔ CompleteSpace β 
goal: CompleteSpace α ↔ CompleteSpace β

full_name: UniformEquiv.ofUniformEmbedding
code: /-- Uniform equiv given a uniform embedding. -/
noncomputable def ofUniformEmbedding (f : α → β) (hf : UniformEmbedding f) : α ≃ᵤ Set.range f 
goal: α ≃ᵤ ↑(Set.range f)

full_name: UniformEquiv.setCongr
code: /-- If two sets are equal, then they are uniformly equivalent. -/
def setCongr {s t : Set α} (h : s = t) : s ≃ᵤ t 
goal: ↑s ≃ᵤ ↑t

full_name: UniformEquiv.prodCongr
code: /-- Product of two uniform isomorphisms. -/
def prodCongr (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) : α × γ ≃ᵤ β × δ 
goal: α × γ ≃ᵤ β × δ

full_name: UniformEquiv.prodCongr_symm
code: @[simp]
theorem prodCongr_symm (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) :
    (h₁.prodCongr h₂).symm = h₁.symm.prodCongr h₂.symm 
goal: (h₁.prodCongr h₂).symm = h₁.symm.prodCongr h₂.symm

full_name: UniformEquiv.coe_prodCongr
code: @[simp]
theorem coe_prodCongr (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) : ⇑(h₁.prodCongr h₂) = Prod.map h₁ h₂ 
goal: ⇑(h₁.prodCongr h₂) = Prod.map ⇑h₁ ⇑h₂

full_name: UniformEquiv.prodComm
code: /-- `α × β` is uniformly isomorphic to `β × α`. -/
def prodComm : α × β ≃ᵤ β × α 
goal: α × β ≃ᵤ β × α

full_name: UniformEquiv.prodComm_symm
code: @[simp]
theorem prodComm_symm : (prodComm α β).symm = prodComm β α 
goal: (UniformEquiv.prodComm α β).symm = UniformEquiv.prodComm β α

full_name: UniformEquiv.coe_prodComm
code: @[simp]
theorem coe_prodComm : ⇑(prodComm α β) = Prod.swap 
goal: ⇑(UniformEquiv.prodComm α β) = Prod.swap

full_name: UniformEquiv.prodAssoc
code: /-- `(α × β) × γ` is uniformly isomorphic to `α × (β × γ)`. -/
def prodAssoc : (α × β) × γ ≃ᵤ α × β × γ 
goal: (α × β) × γ ≃ᵤ α × β × γ

full_name: UniformEquiv.prodPunit_apply
code: /-- `α × {*}` is uniformly isomorphic to `α`. -/
@[simps! (config := .asFn) apply]
def prodPunit : α × PUnit ≃ᵤ α 
goal: ⇑(UniformEquiv.prodPunit α) = fun p => p.1

full_name: UniformEquiv.prodPunit
code: /-- `α × {*}` is uniformly isomorphic to `α`. -/
@[simps! (config := .asFn) apply]
def prodPunit : α × PUnit ≃ᵤ α 
goal: α × PUnit.{u_4 + 1} ≃ᵤ α

full_name: UniformEquiv.punitProd
code: /-- `{*} × α` is uniformly isomorphic to `α`. -/
def punitProd : PUnit × α ≃ᵤ α 
goal: PUnit.{u_4 + 1} × α ≃ᵤ α

full_name: UniformEquiv.coe_punitProd
code: @[simp]
theorem coe_punitProd : ⇑(punitProd α) = Prod.snd 
goal: ⇑(UniformEquiv.punitProd α) = Prod.snd

full_name: UniformEquiv.piCongrLeft_toEquiv
code: /-- `Equiv.piCongrLeft` as a uniform isomorphism: this is the natural isomorphism
`Π i, β (e i) ≃ᵤ Π j, β j` obtained from a bijection `ι ≃ ι'`. -/
@[simps! apply toEquiv]
def piCongrLeft {ι ι' : Type*} {β : ι' → Type*} [∀ j, UniformSpace (β j)]
    (e : ι ≃ ι') : (∀ i, β (e i)) ≃ᵤ ∀ j, β j 
goal: (UniformEquiv.piCongrLeft e).toEquiv = Equiv.piCongrLeft β e

full_name: UniformEquiv.piCongrLeft
code: /-- `Equiv.piCongrLeft` as a uniform isomorphism: this is the natural isomorphism
`Π i, β (e i) ≃ᵤ Π j, β j` obtained from a bijection `ι ≃ ι'`. -/
@[simps! apply toEquiv]
def piCongrLeft {ι ι' : Type*} {β : ι' → Type*} [∀ j, UniformSpace (β j)]
    (e : ι ≃ ι') : (∀ i, β (e i)) ≃ᵤ ∀ j, β j 
goal: ((i : ι) → β (e i)) ≃ᵤ ((j : ι') → β j)

full_name: UniformEquiv.piCongrLeft_apply
code: /-- `Equiv.piCongrLeft` as a uniform isomorphism: this is the natural isomorphism
`Π i, β (e i) ≃ᵤ Π j, β j` obtained from a bijection `ι ≃ ι'`. -/
@[simps! apply toEquiv]
def piCongrLeft {ι ι' : Type*} {β : ι' → Type*} [∀ j, UniformSpace (β j)]
    (e : ι ≃ ι') : (∀ i, β (e i)) ≃ᵤ ∀ j, β j 
goal: ∀ (a : (b : ι) → β (e.symm.symm b)) (a_1 : ι'),
  (UniformEquiv.piCongrLeft e) a a_1 = (Equiv.piCongrLeft' β e.symm).symm a a_1

full_name: UniformEquiv.piCongrRight_apply
code: /-- `Equiv.piCongrRight` as a uniform isomorphism: this is the natural isomorphism
`Π i, β₁ i ≃ᵤ Π j, β₂ i` obtained from uniform isomorphisms `β₁ i ≃ᵤ β₂ i` for each `i`. -/
@[simps! apply toEquiv]
def piCongrRight {ι : Type*} {β₁ β₂ : ι → Type*} [∀ i, UniformSpace (β₁ i)]
    [∀ i, UniformSpace (β₂ i)] (F : ∀ i, β₁ i ≃ᵤ β₂ i) : (∀ i, β₁ i) ≃ᵤ ∀ i, β₂ i 
goal: (UniformEquiv.piCongrRight F) H a = (F a) (H a)

full_name: UniformEquiv.piCongrRight
code: /-- `Equiv.piCongrRight` as a uniform isomorphism: this is the natural isomorphism
`Π i, β₁ i ≃ᵤ Π j, β₂ i` obtained from uniform isomorphisms `β₁ i ≃ᵤ β₂ i` for each `i`. -/
@[simps! apply toEquiv]
def piCongrRight {ι : Type*} {β₁ β₂ : ι → Type*} [∀ i, UniformSpace (β₁ i)]
    [∀ i, UniformSpace (β₂ i)] (F : ∀ i, β₁ i ≃ᵤ β₂ i) : (∀ i, β₁ i) ≃ᵤ ∀ i, β₂ i 
goal: ((i : ι) → β₁ i) ≃ᵤ ((i : ι) → β₂ i)

full_name: UniformEquiv.piCongrRight_toEquiv
code: /-- `Equiv.piCongrRight` as a uniform isomorphism: this is the natural isomorphism
`Π i, β₁ i ≃ᵤ Π j, β₂ i` obtained from uniform isomorphisms `β₁ i ≃ᵤ β₂ i` for each `i`. -/
@[simps! apply toEquiv]
def piCongrRight {ι : Type*} {β₁ β₂ : ι → Type*} [∀ i, UniformSpace (β₁ i)]
    [∀ i, UniformSpace (β₂ i)] (F : ∀ i, β₁ i ≃ᵤ β₂ i) : (∀ i, β₁ i) ≃ᵤ ∀ i, β₂ i 
goal: (UniformEquiv.piCongrRight F).toEquiv = Equiv.piCongrRight fun i => (F i).toEquiv

full_name: UniformEquiv.piCongrRight_symm
code: @[simp]
theorem piCongrRight_symm {ι : Type*} {β₁ β₂ : ι → Type*} [∀ i, UniformSpace (β₁ i)]
    [∀ i, UniformSpace (β₂ i)] (F : ∀ i, β₁ i ≃ᵤ β₂ i) :
    (piCongrRight F).symm = piCongrRight fun i => (F i).symm 
goal: (UniformEquiv.piCongrRight F).symm = UniformEquiv.piCongrRight fun i => (F i).symm

full_name: UniformEquiv.piCongr
code: /-- `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₁ : ι₁`. -/
@[simps! apply toEquiv]
def piCongr {ι₁ ι₂ : Type*} {β₁ : ι₁ → Type*} {β₂ : ι₂ → Type*}
    [∀ i₁, UniformSpace (β₁ i₁)] [∀ i₂, UniformSpace (β₂ i₂)]
    (e : ι₁ ≃ ι₂) (F : ∀ i₁, β₁ i₁ ≃ᵤ β₂ (e i₁)) : (∀ i₁, β₁ i₁) ≃ᵤ ∀ i₂, β₂ i₂ 
goal: ((i₁ : ι₁) → β₁ i₁) ≃ᵤ ((i₂ : ι₂) → β₂ i₂)

full_name: UniformEquiv.piCongr_apply
code: /-- `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₁ : ι₁`. -/
@[simps! apply toEquiv]
def piCongr {ι₁ ι₂ : Type*} {β₁ : ι₁ → Type*} {β₂ : ι₂ → Type*}
    [∀ i₁, UniformSpace (β₁ i₁)] [∀ i₂, UniformSpace (β₂ i₂)]
    (e : ι₁ ≃ ι₂) (F : ∀ i₁, β₁ i₁ ≃ᵤ β₂ (e i₁)) : (∀ i₁, β₁ i₁) ≃ᵤ ∀ i₂, β₂ i₂ 
goal: ∀ (a : (i : ι₁) → β₁ i) (i₂ : ι₂),
  (UniformEquiv.piCongr e F) a i₂ = ⋯ ▸ (Equiv.piCongrRight fun i => (F i).toEquiv) a (e.symm i₂)

full_name: UniformEquiv.piCongr_toEquiv
code: /-- `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₁ : ι₁`. -/
@[simps! apply toEquiv]
def piCongr {ι₁ ι₂ : Type*} {β₁ : ι₁ → Type*} {β₂ : ι₂ → Type*}
    [∀ i₁, UniformSpace (β₁ i₁)] [∀ i₂, UniformSpace (β₂ i₂)]
    (e : ι₁ ≃ ι₂) (F : ∀ i₁, β₁ i₁ ≃ᵤ β₂ (e i₁)) : (∀ i₁, β₁ i₁) ≃ᵤ ∀ i₂, β₂ i₂ 
goal: (UniformEquiv.piCongr e F).toEquiv = (Equiv.piCongrRight fun i => (F i).toEquiv).trans (Equiv.piCongrLeft β₂ e)

full_name: UniformEquiv.ulift
code: /-- Uniform equivalence between `ULift α` and `α`. -/
def ulift : ULift.{v, u} α ≃ᵤ α 
goal: ULift.{v, u} α ≃ᵤ α

full_name: UniformEquiv.funUnique_apply
code: /-- If `ι` has a unique element, then `ι → α` is uniformly isomorphic to `α`. -/
@[simps! (config := .asFn)]
def funUnique (ι α : Type*) [Unique ι] [UniformSpace α] : (ι → α) ≃ᵤ α 
goal: ⇑(UniformEquiv.funUnique ι α) = fun f => f default

full_name: UniformEquiv.funUnique
code: /-- If `ι` has a unique element, then `ι → α` is uniformly isomorphic to `α`. -/
@[simps! (config := .asFn)]
def funUnique (ι α : Type*) [Unique ι] [UniformSpace α] : (ι → α) ≃ᵤ α 
goal: (ι → α) ≃ᵤ α

full_name: UniformEquiv.funUnique_symm_apply
code: /-- If `ι` has a unique element, then `ι → α` is uniformly isomorphic to `α`. -/
@[simps! (config := .asFn)]
def funUnique (ι α : Type*) [Unique ι] [UniformSpace α] : (ι → α) ≃ᵤ α 
goal: ⇑(UniformEquiv.funUnique ι α).symm = uniqueElim

full_name: UniformEquiv.piFinTwo
code: /-- Uniform isomorphism between dependent functions `Π i : Fin 2, α i` and `α 0 × α 1`. -/
@[simps! (config := .asFn)]
def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i) ≃ᵤ α 0 × α 1 
goal: ((i : Fin 2) → α i) ≃ᵤ α 0 × α 1

full_name: UniformEquiv.piFinTwo_symm_apply
code: /-- Uniform isomorphism between dependent functions `Π i : Fin 2, α i` and `α 0 × α 1`. -/
@[simps! (config := .asFn)]
def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i) ≃ᵤ α 0 × α 1 
goal: ⇑(UniformEquiv.piFinTwo α).symm = fun p => Fin.cons p.1 (Fin.cons p.2 finZeroElim)

full_name: UniformEquiv.piFinTwo_apply
code: /-- Uniform isomorphism between dependent functions `Π i : Fin 2, α i` and `α 0 × α 1`. -/
@[simps! (config := .asFn)]
def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i) ≃ᵤ α 0 × α 1 
goal: ⇑(UniformEquiv.piFinTwo α) = fun f => (f 0, f 1)

full_name: UniformEquiv.finTwoArrow_symm_apply
code: /-- Uniform isomorphism between `α² = Fin 2 → α` and `α × α`. -/
-- Porting note: made `α` explicit
@[simps! (config := .asFn)]
def finTwoArrow (α : Type*) [UniformSpace α] : (Fin 2 → α) ≃ᵤ α × α 
goal: ⇑(UniformEquiv.finTwoArrow α).symm = fun x => ![x.1, x.2]

full_name: UniformEquiv.finTwoArrow_apply
code: /-- Uniform isomorphism between `α² = Fin 2 → α` and `α × α`. -/
-- Porting note: made `α` explicit
@[simps! (config := .asFn)]
def finTwoArrow (α : Type*) [UniformSpace α] : (Fin 2 → α) ≃ᵤ α × α 
goal: ⇑(UniformEquiv.finTwoArrow α) = fun f => (f 0, f 1)

full_name: UniformEquiv.finTwoArrow
code: /-- Uniform isomorphism between `α² = Fin 2 → α` and `α × α`. -/
-- Porting note: made `α` explicit
@[simps! (config := .asFn)]
def finTwoArrow (α : Type*) [UniformSpace α] : (Fin 2 → α) ≃ᵤ α × α 
goal: (Fin 2 → α) ≃ᵤ α × α

full_name: UniformEquiv.image
code: /-- A subset of a uniform space is uniformly isomorphic to its image under a uniform isomorphism.
-/
def image (e : α ≃ᵤ β) (s : Set α) : s ≃ᵤ e '' s 
goal: ↑s ≃ᵤ ↑(⇑e '' s)

full_name: Equiv.toUniformEquivOfUniformInducing
code: /-- A uniform inducing equiv between uniform spaces is a uniform isomorphism. -/
-- @[simps] -- Porting note: removed, `simps?` produced no `simp` lemmas
def Equiv.toUniformEquivOfUniformInducing [UniformSpace α] [UniformSpace β] (f : α ≃ β)
    (hf : UniformInducing f) : α ≃ᵤ β 
goal: α ≃ᵤ β