topology.uniform_space.equiv
⟷
Mathlib.Topology.UniformSpace.Equiv
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -4,9 +4,9 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Patrick Massot, Sébastien Gouëzel, Zhouhang Zhou, Reid Barton,
Anatole Dedecker
-/
-import Mathbin.Topology.Homeomorph
-import Mathbin.Topology.UniformSpace.UniformEmbedding
-import Mathbin.Topology.UniformSpace.Pi
+import Topology.Homeomorph
+import Topology.UniformSpace.UniformEmbedding
+import Topology.UniformSpace.Pi
#align_import topology.uniform_space.equiv from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -3,16 +3,13 @@ Copyright (c) 2022 Anatole Dedecker. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Patrick Massot, Sébastien Gouëzel, Zhouhang Zhou, Reid Barton,
Anatole Dedecker
-
-! This file was ported from Lean 3 source module topology.uniform_space.equiv
-! leanprover-community/mathlib commit 34ee86e6a59d911a8e4f89b68793ee7577ae79c7
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.Homeomorph
import Mathbin.Topology.UniformSpace.UniformEmbedding
import Mathbin.Topology.UniformSpace.Pi
+#align_import topology.uniform_space.equiv from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
+
/-!
# Uniform isomorphisms
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -47,7 +47,6 @@ structure UniformEquiv (α : Type _) (β : Type _) [UniformSpace α] [UniformSpa
#align uniform_equiv UniformEquiv
-/
--- mathport name: «expr ≃ᵤ »
infixl:25 " ≃ᵤ " => UniformEquiv
namespace UniformEquiv
@@ -57,10 +56,12 @@ variable [UniformSpace α] [UniformSpace β] [UniformSpace γ] [UniformSpace δ]
instance : CoeFun (α ≃ᵤ β) fun _ => α → β :=
⟨fun e => e.toEquiv⟩
+#print UniformEquiv.uniformEquiv_mk_coe /-
@[simp]
theorem uniformEquiv_mk_coe (a : Equiv α β) (b c) : (UniformEquiv.mk a b c : α → β) = a :=
rfl
#align uniform_equiv.uniform_equiv_mk_coe UniformEquiv.uniformEquiv_mk_coe
+-/
#print UniformEquiv.symm /-
/-- Inverse of a uniform isomorphism. -/
@@ -90,24 +91,32 @@ def Simps.symm_apply (h : α ≃ᵤ β) : β → α :=
initialize_simps_projections UniformEquiv (to_equiv_to_fun → apply, to_equiv_inv_fun → symm_apply,
-toEquiv)
+#print UniformEquiv.coe_toEquiv /-
@[simp]
theorem coe_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv = h :=
rfl
#align uniform_equiv.coe_to_equiv UniformEquiv.coe_toEquiv
+-/
+#print UniformEquiv.coe_symm_toEquiv /-
@[simp]
theorem coe_symm_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv.symm = h.symm :=
rfl
#align uniform_equiv.coe_symm_to_equiv UniformEquiv.coe_symm_toEquiv
+-/
+#print UniformEquiv.toEquiv_injective /-
theorem toEquiv_injective : Function.Injective (toEquiv : α ≃ᵤ β → α ≃ β)
| ⟨e, h₁, h₂⟩, ⟨e', h₁', h₂'⟩, rfl => rfl
#align uniform_equiv.to_equiv_injective UniformEquiv.toEquiv_injective
+-/
+#print UniformEquiv.ext /-
@[ext]
theorem ext {h h' : α ≃ᵤ β} (H : ∀ x, h x = h' x) : h = h' :=
toEquiv_injective <| Equiv.ext H
#align uniform_equiv.ext UniformEquiv.ext
+-/
#print UniformEquiv.refl /-
/-- Identity map as a uniform isomorphism. -/
@@ -130,16 +139,20 @@ protected def trans (h₁ : α ≃ᵤ β) (h₂ : β ≃ᵤ γ) : α ≃ᵤ γ
#align uniform_equiv.trans UniformEquiv.trans
-/
+#print UniformEquiv.trans_apply /-
@[simp]
theorem trans_apply (h₁ : α ≃ᵤ β) (h₂ : β ≃ᵤ γ) (a : α) : h₁.trans h₂ a = h₂ (h₁ a) :=
rfl
#align uniform_equiv.trans_apply UniformEquiv.trans_apply
+-/
+#print UniformEquiv.uniformEquiv_mk_coe_symm /-
@[simp]
theorem uniformEquiv_mk_coe_symm (a : Equiv α β) (b c) :
((UniformEquiv.mk a b c).symm : β → α) = a.symm :=
rfl
#align uniform_equiv.uniform_equiv_mk_coe_symm UniformEquiv.uniformEquiv_mk_coe_symm
+-/
#print UniformEquiv.refl_symm /-
@[simp]
@@ -148,24 +161,32 @@ theorem refl_symm : (UniformEquiv.refl α).symm = UniformEquiv.refl α :=
#align uniform_equiv.refl_symm UniformEquiv.refl_symm
-/
+#print UniformEquiv.uniformContinuous /-
protected theorem uniformContinuous (h : α ≃ᵤ β) : UniformContinuous h :=
h.uniformContinuous_toFun
#align uniform_equiv.uniform_continuous UniformEquiv.uniformContinuous
+-/
+#print UniformEquiv.continuous /-
@[continuity]
protected theorem continuous (h : α ≃ᵤ β) : Continuous h :=
h.UniformContinuous.Continuous
#align uniform_equiv.continuous UniformEquiv.continuous
+-/
+#print UniformEquiv.uniformContinuous_symm /-
protected theorem uniformContinuous_symm (h : α ≃ᵤ β) : UniformContinuous h.symm :=
h.uniformContinuous_invFun
#align uniform_equiv.uniform_continuous_symm UniformEquiv.uniformContinuous_symm
+-/
+#print UniformEquiv.continuous_symm /-
-- otherwise `by continuity` can't prove continuity of `h.to_equiv.symm`
@[continuity]
protected theorem continuous_symm (h : α ≃ᵤ β) : Continuous h.symm :=
h.uniformContinuous_symm.Continuous
#align uniform_equiv.continuous_symm UniformEquiv.continuous_symm
+-/
#print UniformEquiv.toHomeomorph /-
/-- A uniform isomorphism as a homeomorphism. -/
@@ -177,28 +198,39 @@ protected def toHomeomorph (e : α ≃ᵤ β) : α ≃ₜ β :=
#align uniform_equiv.to_homeomorph UniformEquiv.toHomeomorph
-/
+#print UniformEquiv.apply_symm_apply /-
@[simp]
theorem apply_symm_apply (h : α ≃ᵤ β) (x : β) : h (h.symm x) = x :=
h.toEquiv.apply_symm_apply x
#align uniform_equiv.apply_symm_apply UniformEquiv.apply_symm_apply
+-/
+#print UniformEquiv.symm_apply_apply /-
@[simp]
theorem symm_apply_apply (h : α ≃ᵤ β) (x : α) : h.symm (h x) = x :=
h.toEquiv.symm_apply_apply x
#align uniform_equiv.symm_apply_apply UniformEquiv.symm_apply_apply
+-/
+#print UniformEquiv.bijective /-
protected theorem bijective (h : α ≃ᵤ β) : Function.Bijective h :=
h.toEquiv.Bijective
#align uniform_equiv.bijective UniformEquiv.bijective
+-/
+#print UniformEquiv.injective /-
protected theorem injective (h : α ≃ᵤ β) : Function.Injective h :=
h.toEquiv.Injective
#align uniform_equiv.injective UniformEquiv.injective
+-/
+#print UniformEquiv.surjective /-
protected theorem surjective (h : α ≃ᵤ β) : Function.Surjective h :=
h.toEquiv.Surjective
#align uniform_equiv.surjective UniformEquiv.surjective
+-/
+#print UniformEquiv.changeInv /-
/-- Change the uniform equiv `f` to make the inverse function definitionally equal to `g`. -/
def changeInv (f : α ≃ᵤ β) (g : β → α) (hg : Function.RightInverse g f) : α ≃ᵤ β :=
have : g = f.symm :=
@@ -213,52 +245,73 @@ def changeInv (f : α ≃ᵤ β) (g : β → α) (hg : Function.RightInverse g f
uniformContinuous_toFun := f.UniformContinuous
uniformContinuous_invFun := by convert f.symm.uniform_continuous }
#align uniform_equiv.change_inv UniformEquiv.changeInv
+-/
+#print UniformEquiv.symm_comp_self /-
@[simp]
theorem symm_comp_self (h : α ≃ᵤ β) : ⇑h.symm ∘ ⇑h = id :=
funext h.symm_apply_apply
#align uniform_equiv.symm_comp_self UniformEquiv.symm_comp_self
+-/
+#print UniformEquiv.self_comp_symm /-
@[simp]
theorem self_comp_symm (h : α ≃ᵤ β) : ⇑h ∘ ⇑h.symm = id :=
funext h.apply_symm_apply
#align uniform_equiv.self_comp_symm UniformEquiv.self_comp_symm
+-/
+#print UniformEquiv.range_coe /-
@[simp]
theorem range_coe (h : α ≃ᵤ β) : range h = univ :=
h.Surjective.range_eq
#align uniform_equiv.range_coe UniformEquiv.range_coe
+-/
+#print UniformEquiv.image_symm /-
theorem image_symm (h : α ≃ᵤ β) : image h.symm = preimage h :=
funext h.symm.toEquiv.image_eq_preimage
#align uniform_equiv.image_symm UniformEquiv.image_symm
+-/
+#print UniformEquiv.preimage_symm /-
theorem preimage_symm (h : α ≃ᵤ β) : preimage h.symm = image h :=
(funext h.toEquiv.image_eq_preimage).symm
#align uniform_equiv.preimage_symm UniformEquiv.preimage_symm
+-/
+#print UniformEquiv.image_preimage /-
@[simp]
theorem image_preimage (h : α ≃ᵤ β) (s : Set β) : h '' (h ⁻¹' s) = s :=
h.toEquiv.image_preimage s
#align uniform_equiv.image_preimage UniformEquiv.image_preimage
+-/
+#print UniformEquiv.preimage_image /-
@[simp]
theorem preimage_image (h : α ≃ᵤ β) (s : Set α) : h ⁻¹' (h '' s) = s :=
h.toEquiv.preimage_image s
#align uniform_equiv.preimage_image UniformEquiv.preimage_image
+-/
+#print UniformEquiv.uniformInducing /-
protected theorem uniformInducing (h : α ≃ᵤ β) : UniformInducing h :=
uniformInducing_of_compose h.UniformContinuous h.symm.UniformContinuous <| by
simp only [symm_comp_self, uniformInducing_id]
#align uniform_equiv.uniform_inducing UniformEquiv.uniformInducing
+-/
+#print UniformEquiv.comap_eq /-
theorem comap_eq (h : α ≃ᵤ β) : UniformSpace.comap h ‹_› = ‹_› := by
ext : 1 <;> exact h.uniform_inducing.comap_uniformity
#align uniform_equiv.comap_eq UniformEquiv.comap_eq
+-/
+#print UniformEquiv.uniformEmbedding /-
protected theorem uniformEmbedding (h : α ≃ᵤ β) : UniformEmbedding h :=
⟨h.UniformInducing, h.Injective⟩
#align uniform_equiv.uniform_embedding UniformEquiv.uniformEmbedding
+-/
#print UniformEquiv.ofUniformEmbedding /-
/-- Uniform equiv given a uniform embedding. -/
@@ -281,6 +334,7 @@ def setCongr {s t : Set α} (h : s = t) : s ≃ᵤ t
#align uniform_equiv.set_congr UniformEquiv.setCongr
-/
+#print UniformEquiv.prodCongr /-
/-- Product of two uniform isomorphisms. -/
def prodCongr (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) : α × γ ≃ᵤ β × δ
where
@@ -292,22 +346,28 @@ def prodCongr (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) : α × γ ≃ᵤ β
(h₂.symm.UniformContinuous.comp uniformContinuous_snd)
toEquiv := h₁.toEquiv.prodCongr h₂.toEquiv
#align uniform_equiv.prod_congr UniformEquiv.prodCongr
+-/
+#print UniformEquiv.prodCongr_symm /-
@[simp]
theorem prodCongr_symm (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) :
(h₁.prodCongr h₂).symm = h₁.symm.prodCongr h₂.symm :=
rfl
#align uniform_equiv.prod_congr_symm UniformEquiv.prodCongr_symm
+-/
+#print UniformEquiv.coe_prodCongr /-
@[simp]
theorem coe_prodCongr (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) : ⇑(h₁.prodCongr h₂) = Prod.map h₁ h₂ :=
rfl
#align uniform_equiv.coe_prod_congr UniformEquiv.coe_prodCongr
+-/
section
variable (α β γ)
+#print UniformEquiv.prodComm /-
/-- `α × β` is uniformly isomorphic to `β × α`. -/
def prodComm : α × β ≃ᵤ β × α
where
@@ -315,17 +375,23 @@ def prodComm : α × β ≃ᵤ β × α
uniformContinuous_invFun := uniformContinuous_snd.prod_mk uniformContinuous_fst
toEquiv := Equiv.prodComm α β
#align uniform_equiv.prod_comm UniformEquiv.prodComm
+-/
+#print UniformEquiv.prodComm_symm /-
@[simp]
theorem prodComm_symm : (prodComm α β).symm = prodComm β α :=
rfl
#align uniform_equiv.prod_comm_symm UniformEquiv.prodComm_symm
+-/
+#print UniformEquiv.coe_prodComm /-
@[simp]
theorem coe_prodComm : ⇑(prodComm α β) = Prod.swap :=
rfl
#align uniform_equiv.coe_prod_comm UniformEquiv.coe_prodComm
+-/
+#print UniformEquiv.prodAssoc /-
/-- `(α × β) × γ` is uniformly isomorphic to `α × (β × γ)`. -/
def prodAssoc : (α × β) × γ ≃ᵤ α × β × γ
where
@@ -337,7 +403,9 @@ def prodAssoc : (α × β) × γ ≃ᵤ α × β × γ
(uniformContinuous_snd.comp uniformContinuous_snd)
toEquiv := Equiv.prodAssoc α β γ
#align uniform_equiv.prod_assoc UniformEquiv.prodAssoc
+-/
+#print UniformEquiv.prodPunit /-
/-- `α × {*}` is uniformly isomorphic to `α`. -/
@[simps (config := { fullyApplied := false }) apply]
def prodPunit : α × PUnit ≃ᵤ α where
@@ -345,16 +413,21 @@ def prodPunit : α × PUnit ≃ᵤ α where
uniformContinuous_toFun := uniformContinuous_fst
uniformContinuous_invFun := uniformContinuous_id.prod_mk uniformContinuous_const
#align uniform_equiv.prod_punit UniformEquiv.prodPunit
+-/
+#print UniformEquiv.punitProd /-
/-- `{*} × α` is uniformly isomorphic to `α`. -/
def punitProd : PUnit × α ≃ᵤ α :=
(prodComm _ _).trans (prodPunit _)
#align uniform_equiv.punit_prod UniformEquiv.punitProd
+-/
+#print UniformEquiv.coe_punitProd /-
@[simp]
theorem coe_punitProd : ⇑(punitProd α) = Prod.snd :=
rfl
#align uniform_equiv.coe_punit_prod UniformEquiv.coe_punitProd
+-/
#print UniformEquiv.ulift /-
/-- Uniform equivalence between `ulift α` and `α`. -/
@@ -382,6 +455,7 @@ def funUnique (ι α : Type _) [Unique ι] [UniformSpace α] : (ι → α) ≃
#align uniform_equiv.fun_unique UniformEquiv.funUnique
-/
+#print UniformEquiv.piFinTwo /-
/-- Uniform isomorphism between dependent functions `Π i : fin 2, α i` and `α 0 × α 1`. -/
@[simps (config := { fullyApplied := false })]
def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i) ≃ᵤ α 0 × α 1
@@ -391,13 +465,17 @@ def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i
uniformContinuous_invFun :=
uniformContinuous_pi.mpr <| Fin.forall_fin_two.2 ⟨uniformContinuous_fst, uniformContinuous_snd⟩
#align uniform_equiv.pi_fin_two UniformEquiv.piFinTwo
+-/
+#print UniformEquiv.finTwoArrow /-
/-- Uniform isomorphism between `α² = fin 2 → α` and `α × α`. -/
@[simps (config := { fullyApplied := false })]
def finTwoArrow : (Fin 2 → α) ≃ᵤ α × α :=
{ piFinTwo fun _ => α with toEquiv := finTwoArrowEquiv α }
#align uniform_equiv.fin_two_arrow UniformEquiv.finTwoArrow
+-/
+#print UniformEquiv.image /-
/-- A subset of a uniform space is uniformly isomorphic to its image under a uniform isomorphism.
-/
def image (e : α ≃ᵤ β) (s : Set α) : s ≃ᵤ e '' s
@@ -407,6 +485,7 @@ def image (e : α ≃ᵤ β) (s : Set α) : s ≃ᵤ e '' s
(e.symm.UniformContinuous.comp uniformContinuous_subtype_val).subtype_mk _
toEquiv := e.toEquiv.image s
#align uniform_equiv.image UniformEquiv.image
+-/
end UniformEquiv
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -206,7 +206,6 @@ def changeInv (f : α ≃ᵤ β) (g : β → α) (hg : Function.RightInverse g f
calc
g x = f.symm (f (g x)) := (f.left_inv (g x)).symm
_ = f.symm x := by rw [hg x]
-
{ toFun := f
invFun := g
left_inv := by convert f.left_inv
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -41,7 +41,7 @@ variable {α : Type u} {β : Type _} {γ : Type _} {δ : Type _}
/-- Uniform isomorphism between `α` and `β` -/
@[nolint has_nonempty_instance]
structure UniformEquiv (α : Type _) (β : Type _) [UniformSpace α] [UniformSpace β] extends
- α ≃ β where
+ α ≃ β where
uniformContinuous_toFun : UniformContinuous to_fun
uniformContinuous_invFun : UniformContinuous inv_fun
#align uniform_equiv UniformEquiv
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -57,12 +57,6 @@ variable [UniformSpace α] [UniformSpace β] [UniformSpace γ] [UniformSpace δ]
instance : CoeFun (α ≃ᵤ β) fun _ => α → β :=
⟨fun e => e.toEquiv⟩
-/- warning: uniform_equiv.uniform_equiv_mk_coe -> UniformEquiv.uniformEquiv_mk_coe is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : UniformContinuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (c : UniformContinuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)), Eq.{max (succ u1) (succ u2)} ((fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) a)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : UniformContinuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : UniformContinuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) (UniformEquiv.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.uniform_equiv_mk_coe UniformEquiv.uniformEquiv_mk_coeₓ'. -/
@[simp]
theorem uniformEquiv_mk_coe (a : Equiv α β) (b c) : (UniformEquiv.mk a b c : α → β) = a :=
rfl
@@ -96,44 +90,20 @@ def Simps.symm_apply (h : α ≃ᵤ β) : β → α :=
initialize_simps_projections UniformEquiv (to_equiv_to_fun → apply, to_equiv_inv_fun → symm_apply,
-toEquiv)
-/- warning: uniform_equiv.coe_to_equiv -> UniformEquiv.coe_toEquiv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) (UniformEquiv.toEquiv.{u1, u2} α β _inst_1 _inst_2 h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (UniformEquiv.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.coe_to_equiv UniformEquiv.coe_toEquivₓ'. -/
@[simp]
theorem coe_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv = h :=
rfl
#align uniform_equiv.coe_to_equiv UniformEquiv.coe_toEquiv
-/- warning: uniform_equiv.coe_symm_to_equiv -> UniformEquiv.coe_symm_toEquiv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (β -> α) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β (UniformEquiv.toEquiv.{u1, u2} α β _inst_1 _inst_2 h))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (UniformEquiv.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.coe_symm_to_equiv UniformEquiv.coe_symm_toEquivₓ'. -/
@[simp]
theorem coe_symm_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv.symm = h.symm :=
rfl
#align uniform_equiv.coe_symm_to_equiv UniformEquiv.coe_symm_toEquiv
-/- warning: uniform_equiv.to_equiv_injective -> UniformEquiv.toEquiv_injective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β], Function.Injective.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (Equiv.{succ u1, succ u2} α β) (UniformEquiv.toEquiv.{u1, u2} α β _inst_1 _inst_2)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β], Function.Injective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) (Equiv.{succ u2, succ u1} α β) (UniformEquiv.toEquiv.{u2, u1} α β _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.to_equiv_injective UniformEquiv.toEquiv_injectiveₓ'. -/
theorem toEquiv_injective : Function.Injective (toEquiv : α ≃ᵤ β → α ≃ β)
| ⟨e, h₁, h₂⟩, ⟨e', h₁', h₂'⟩, rfl => rfl
#align uniform_equiv.to_equiv_injective UniformEquiv.toEquiv_injective
-/- warning: uniform_equiv.ext -> UniformEquiv.ext is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] {h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2} {h' : UniformEquiv.{u1, u2} α β _inst_1 _inst_2}, (forall (x : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h' x)) -> (Eq.{max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) h h')
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] {h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2} {h' : UniformEquiv.{u2, u1} α β _inst_1 _inst_2}, (forall (x : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h' x)) -> (Eq.{max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) h h')
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.ext UniformEquiv.extₓ'. -/
@[ext]
theorem ext {h h' : α ≃ᵤ β} (H : ∀ x, h x = h' x) : h = h' :=
toEquiv_injective <| Equiv.ext H
@@ -160,23 +130,11 @@ protected def trans (h₁ : α ≃ᵤ β) (h₂ : β ≃ᵤ γ) : α ≃ᵤ γ
#align uniform_equiv.trans UniformEquiv.trans
-/
-/- warning: uniform_equiv.trans_apply -> UniformEquiv.trans_apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] [_inst_3 : UniformSpace.{u3} γ] (h₁ : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (h₂ : UniformEquiv.{u2, u3} β γ _inst_2 _inst_3) (a : α), Eq.{succ u3} γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (UniformEquiv.{u1, u3} α γ _inst_1 _inst_3) (fun (_x : UniformEquiv.{u1, u3} α γ _inst_1 _inst_3) => α -> γ) (UniformEquiv.hasCoeToFun.{u1, u3} α γ _inst_1 _inst_3) (UniformEquiv.trans.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 h₁ h₂) a) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (UniformEquiv.{u2, u3} β γ _inst_2 _inst_3) (fun (_x : UniformEquiv.{u2, u3} β γ _inst_2 _inst_3) => β -> γ) (UniformEquiv.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3) h₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h₁ a))
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u2}} {γ : Type.{u1}} [_inst_1 : UniformSpace.{u3} α] [_inst_2 : UniformSpace.{u2} β] [_inst_3 : UniformSpace.{u1} γ] (h₁ : UniformEquiv.{u3, u2} α β _inst_1 _inst_2) (h₂ : UniformEquiv.{u2, u1} β γ _inst_2 _inst_3) (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => γ) a) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (UniformEquiv.{u3, u1} α γ _inst_1 _inst_3) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => γ) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u1), succ u3, succ u1} (UniformEquiv.{u3, u1} α γ _inst_1 _inst_3) α γ (EquivLike.toEmbeddingLike.{max (succ u3) (succ u1), succ u3, succ u1} (UniformEquiv.{u3, u1} α γ _inst_1 _inst_3) α γ (UniformEquiv.instEquivLikeUniformEquiv.{u3, u1} α γ _inst_1 _inst_3))) (UniformEquiv.trans.{u3, u2, u1} α β γ _inst_1 _inst_2 _inst_3 h₁ h₂) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} β γ _inst_2 _inst_3) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => γ) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} β γ _inst_2 _inst_3) β γ (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} β γ _inst_2 _inst_3) β γ (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} β γ _inst_2 _inst_3))) h₂ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (UniformEquiv.{u3, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (UniformEquiv.{u3, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (UniformEquiv.{u3, u2} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u3, u2} α β _inst_1 _inst_2))) h₁ a))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.trans_apply UniformEquiv.trans_applyₓ'. -/
@[simp]
theorem trans_apply (h₁ : α ≃ᵤ β) (h₂ : β ≃ᵤ γ) (a : α) : h₁.trans h₂ a = h₂ (h₁ a) :=
rfl
#align uniform_equiv.trans_apply UniformEquiv.trans_apply
-/- warning: uniform_equiv.uniform_equiv_mk_coe_symm -> UniformEquiv.uniformEquiv_mk_coe_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : UniformContinuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (c : UniformContinuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)), Eq.{max (succ u2) (succ u1)} ((fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β a))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : UniformContinuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : UniformContinuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : β), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) a) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 (UniformEquiv.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.uniform_equiv_mk_coe_symm UniformEquiv.uniformEquiv_mk_coe_symmₓ'. -/
@[simp]
theorem uniformEquiv_mk_coe_symm (a : Equiv α β) (b c) :
((UniformEquiv.mk a b c).symm : β → α) = a.symm :=
@@ -190,43 +148,19 @@ theorem refl_symm : (UniformEquiv.refl α).symm = UniformEquiv.refl α :=
#align uniform_equiv.refl_symm UniformEquiv.refl_symm
-/
-/- warning: uniform_equiv.uniform_continuous -> UniformEquiv.uniformContinuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), UniformContinuous.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), UniformContinuous.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.uniform_continuous UniformEquiv.uniformContinuousₓ'. -/
protected theorem uniformContinuous (h : α ≃ᵤ β) : UniformContinuous h :=
h.uniformContinuous_toFun
#align uniform_equiv.uniform_continuous UniformEquiv.uniformContinuous
-/- warning: uniform_equiv.continuous -> UniformEquiv.continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Continuous.{u1, u2} α β (UniformSpace.toTopologicalSpace.{u1} α _inst_1) (UniformSpace.toTopologicalSpace.{u2} β _inst_2) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Continuous.{u2, u1} α β (UniformSpace.toTopologicalSpace.{u2} α _inst_1) (UniformSpace.toTopologicalSpace.{u1} β _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.continuous UniformEquiv.continuousₓ'. -/
@[continuity]
protected theorem continuous (h : α ≃ᵤ β) : Continuous h :=
h.UniformContinuous.Continuous
#align uniform_equiv.continuous UniformEquiv.continuous
-/- warning: uniform_equiv.uniform_continuous_symm -> UniformEquiv.uniformContinuous_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), UniformContinuous.{u2, u1} β α _inst_2 _inst_1 (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), UniformContinuous.{u1, u2} β α _inst_2 _inst_1 (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.uniform_continuous_symm UniformEquiv.uniformContinuous_symmₓ'. -/
protected theorem uniformContinuous_symm (h : α ≃ᵤ β) : UniformContinuous h.symm :=
h.uniformContinuous_invFun
#align uniform_equiv.uniform_continuous_symm UniformEquiv.uniformContinuous_symm
-/- warning: uniform_equiv.continuous_symm -> UniformEquiv.continuous_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Continuous.{u2, u1} β α (UniformSpace.toTopologicalSpace.{u2} β _inst_2) (UniformSpace.toTopologicalSpace.{u1} α _inst_1) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Continuous.{u1, u2} β α (UniformSpace.toTopologicalSpace.{u1} β _inst_2) (UniformSpace.toTopologicalSpace.{u2} α _inst_1) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.continuous_symm UniformEquiv.continuous_symmₓ'. -/
-- otherwise `by continuity` can't prove continuity of `h.to_equiv.symm`
@[continuity]
protected theorem continuous_symm (h : α ≃ᵤ β) : Continuous h.symm :=
@@ -243,64 +177,28 @@ protected def toHomeomorph (e : α ≃ᵤ β) : α ≃ₜ β :=
#align uniform_equiv.to_homeomorph UniformEquiv.toHomeomorph
-/
-/- warning: uniform_equiv.apply_symm_apply -> UniformEquiv.apply_symm_apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (x : β), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h) x)) x
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2) (x : β), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (a : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h) x)) x
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.apply_symm_apply UniformEquiv.apply_symm_applyₓ'. -/
@[simp]
theorem apply_symm_apply (h : α ≃ᵤ β) (x : β) : h (h.symm x) = x :=
h.toEquiv.apply_symm_apply x
#align uniform_equiv.apply_symm_apply UniformEquiv.apply_symm_apply
-/- warning: uniform_equiv.symm_apply_apply -> UniformEquiv.symm_apply_apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (x : α), Eq.{succ u1} α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h x)) x
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2) (x : α), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (a : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h x)) x
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.symm_apply_apply UniformEquiv.symm_apply_applyₓ'. -/
@[simp]
theorem symm_apply_apply (h : α ≃ᵤ β) (x : α) : h.symm (h x) = x :=
h.toEquiv.symm_apply_apply x
#align uniform_equiv.symm_apply_apply UniformEquiv.symm_apply_apply
-/- warning: uniform_equiv.bijective -> UniformEquiv.bijective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Function.Bijective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Function.Bijective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.bijective UniformEquiv.bijectiveₓ'. -/
protected theorem bijective (h : α ≃ᵤ β) : Function.Bijective h :=
h.toEquiv.Bijective
#align uniform_equiv.bijective UniformEquiv.bijective
-/- warning: uniform_equiv.injective -> UniformEquiv.injective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Function.Injective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Function.Injective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.injective UniformEquiv.injectiveₓ'. -/
protected theorem injective (h : α ≃ᵤ β) : Function.Injective h :=
h.toEquiv.Injective
#align uniform_equiv.injective UniformEquiv.injective
-/- warning: uniform_equiv.surjective -> UniformEquiv.surjective is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Function.Surjective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Function.Surjective.{succ u2, succ u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.surjective UniformEquiv.surjectiveₓ'. -/
protected theorem surjective (h : α ≃ᵤ β) : Function.Surjective h :=
h.toEquiv.Surjective
#align uniform_equiv.surjective UniformEquiv.surjective
-/- warning: uniform_equiv.change_inv -> UniformEquiv.changeInv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (f : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (g : β -> α), (Function.RightInverse.{succ u1, succ u2} α β g (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f)) -> (UniformEquiv.{u1, u2} α β _inst_1 _inst_2)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (f : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (g : β -> α), (Function.RightInverse.{succ u1, succ u2} α β g (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} α β _inst_1 _inst_2))) f)) -> (UniformEquiv.{u1, u2} α β _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.change_inv UniformEquiv.changeInvₓ'. -/
/-- Change the uniform equiv `f` to make the inverse function definitionally equal to `g`. -/
def changeInv (f : α ≃ᵤ β) (g : β → α) (hg : Function.RightInverse g f) : α ≃ᵤ β :=
have : g = f.symm :=
@@ -317,108 +215,48 @@ def changeInv (f : α ≃ᵤ β) (g : β → α) (hg : Function.RightInverse g f
uniformContinuous_invFun := by convert f.symm.uniform_continuous }
#align uniform_equiv.change_inv UniformEquiv.changeInv
-/- warning: uniform_equiv.symm_comp_self -> UniformEquiv.symm_comp_self is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u1} (α -> α) (Function.comp.{succ u1, succ u2, succ u1} α β α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)) (id.{succ u1} α)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (α -> α) (Function.comp.{succ u2, succ u1, succ u2} α β α (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)) (id.{succ u2} α)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.symm_comp_self UniformEquiv.symm_comp_selfₓ'. -/
@[simp]
theorem symm_comp_self (h : α ≃ᵤ β) : ⇑h.symm ∘ ⇑h = id :=
funext h.symm_apply_apply
#align uniform_equiv.symm_comp_self UniformEquiv.symm_comp_self
-/- warning: uniform_equiv.self_comp_symm -> UniformEquiv.self_comp_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u2} (β -> β) (Function.comp.{succ u2, succ u1, succ u2} β α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h))) (id.{succ u2} β)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (β -> β) (Function.comp.{succ u1, succ u2, succ u1} β α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h))) (id.{succ u1} β)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.self_comp_symm UniformEquiv.self_comp_symmₓ'. -/
@[simp]
theorem self_comp_symm (h : α ≃ᵤ β) : ⇑h ∘ ⇑h.symm = id :=
funext h.apply_symm_apply
#align uniform_equiv.self_comp_symm UniformEquiv.self_comp_symm
-/- warning: uniform_equiv.range_coe -> UniformEquiv.range_coe is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u2} (Set.{u2} β) (Set.range.{u2, succ u1} β α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)) (Set.univ.{u2} β)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u1} (Set.{u1} β) (Set.range.{u1, succ u2} β α (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)) (Set.univ.{u1} β)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.range_coe UniformEquiv.range_coeₓ'. -/
@[simp]
theorem range_coe (h : α ≃ᵤ β) : range h = univ :=
h.Surjective.range_eq
#align uniform_equiv.range_coe UniformEquiv.range_coe
-/- warning: uniform_equiv.image_symm -> UniformEquiv.image_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} ((Set.{u2} β) -> (Set.{u1} α)) (Set.image.{u2, u1} β α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h))) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} ((Set.{u1} β) -> (Set.{u2} α)) (Set.image.{u1, u2} β α (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h))) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.image_symm UniformEquiv.image_symmₓ'. -/
theorem image_symm (h : α ≃ᵤ β) : image h.symm = preimage h :=
funext h.symm.toEquiv.image_eq_preimage
#align uniform_equiv.image_symm UniformEquiv.image_symm
-/- warning: uniform_equiv.preimage_symm -> UniformEquiv.preimage_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} ((Set.{u1} α) -> (Set.{u2} β)) (Set.preimage.{u2, u1} β α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h))) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} ((Set.{u2} α) -> (Set.{u1} β)) (Set.preimage.{u1, u2} β α (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h))) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.preimage_symm UniformEquiv.preimage_symmₓ'. -/
theorem preimage_symm (h : α ≃ᵤ β) : preimage h.symm = image h :=
(funext h.toEquiv.image_eq_preimage).symm
#align uniform_equiv.preimage_symm UniformEquiv.preimage_symm
-/- warning: uniform_equiv.image_preimage -> UniformEquiv.image_preimage is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u2} β), Eq.{succ u2} (Set.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) s
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u1} β), Eq.{succ u1} (Set.{u1} β) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h) s)) s
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.image_preimage UniformEquiv.image_preimageₓ'. -/
@[simp]
theorem image_preimage (h : α ≃ᵤ β) (s : Set β) : h '' (h ⁻¹' s) = s :=
h.toEquiv.image_preimage s
#align uniform_equiv.image_preimage UniformEquiv.image_preimage
-/- warning: uniform_equiv.preimage_image -> UniformEquiv.preimage_image is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) s)) s
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2) (s : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h) (Set.image.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h) s)) s
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.preimage_image UniformEquiv.preimage_imageₓ'. -/
@[simp]
theorem preimage_image (h : α ≃ᵤ β) (s : Set α) : h ⁻¹' (h '' s) = s :=
h.toEquiv.preimage_image s
#align uniform_equiv.preimage_image UniformEquiv.preimage_image
-/- warning: uniform_equiv.uniform_inducing -> UniformEquiv.uniformInducing is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), UniformInducing.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), UniformInducing.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.uniform_inducing UniformEquiv.uniformInducingₓ'. -/
protected theorem uniformInducing (h : α ≃ᵤ β) : UniformInducing h :=
uniformInducing_of_compose h.UniformContinuous h.symm.UniformContinuous <| by
simp only [symm_comp_self, uniformInducing_id]
#align uniform_equiv.uniform_inducing UniformEquiv.uniformInducing
-/- warning: uniform_equiv.comap_eq -> UniformEquiv.comap_eq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{succ u1} (UniformSpace.{u1} α) (UniformSpace.comap.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h) _inst_2) _inst_1
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{succ u2} (UniformSpace.{u2} α) (UniformSpace.comap.{u2, u1} α β (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h) _inst_2) _inst_1
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.comap_eq UniformEquiv.comap_eqₓ'. -/
theorem comap_eq (h : α ≃ᵤ β) : UniformSpace.comap h ‹_› = ‹_› := by
ext : 1 <;> exact h.uniform_inducing.comap_uniformity
#align uniform_equiv.comap_eq UniformEquiv.comap_eq
-/- warning: uniform_equiv.uniform_embedding -> UniformEquiv.uniformEmbedding is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), UniformEmbedding.{u1, u2} α β _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), UniformEmbedding.{u2, u1} α β _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.uniform_embedding UniformEquiv.uniformEmbeddingₓ'. -/
protected theorem uniformEmbedding (h : α ≃ᵤ β) : UniformEmbedding h :=
⟨h.UniformInducing, h.Injective⟩
#align uniform_equiv.uniform_embedding UniformEquiv.uniformEmbedding
@@ -444,12 +282,6 @@ def setCongr {s t : Set α} (h : s = t) : s ≃ᵤ t
#align uniform_equiv.set_congr UniformEquiv.setCongr
-/
-/- warning: uniform_equiv.prod_congr -> UniformEquiv.prodCongr is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] [_inst_3 : UniformSpace.{u3} γ] [_inst_4 : UniformSpace.{u4} δ], (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) -> (UniformEquiv.{u3, u4} γ δ _inst_3 _inst_4) -> (UniformEquiv.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.uniformSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.uniformSpace.{u2, u4} β δ _inst_2 _inst_4))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] [_inst_3 : UniformSpace.{u3} γ] [_inst_4 : UniformSpace.{u4} δ], (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) -> (UniformEquiv.{u3, u4} γ δ _inst_3 _inst_4) -> (UniformEquiv.{max u3 u1, max u4 u2} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (instUniformSpaceProd.{u1, u3} α γ _inst_1 _inst_3) (instUniformSpaceProd.{u2, u4} β δ _inst_2 _inst_4))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.prod_congr UniformEquiv.prodCongrₓ'. -/
/-- Product of two uniform isomorphisms. -/
def prodCongr (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) : α × γ ≃ᵤ β × δ
where
@@ -462,24 +294,12 @@ def prodCongr (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) : α × γ ≃ᵤ β
toEquiv := h₁.toEquiv.prodCongr h₂.toEquiv
#align uniform_equiv.prod_congr UniformEquiv.prodCongr
-/- warning: uniform_equiv.prod_congr_symm -> UniformEquiv.prodCongr_symm is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] [_inst_3 : UniformSpace.{u3} γ] [_inst_4 : UniformSpace.{u4} δ] (h₁ : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (h₂ : UniformEquiv.{u3, u4} γ δ _inst_3 _inst_4), Eq.{max (succ (max u2 u4)) (succ (max u1 u3))} (UniformEquiv.{max u2 u4, max u1 u3} (Prod.{u2, u4} β δ) (Prod.{u1, u3} α γ) (Prod.uniformSpace.{u2, u4} β δ _inst_2 _inst_4) (Prod.uniformSpace.{u1, u3} α γ _inst_1 _inst_3)) (UniformEquiv.symm.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.uniformSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.uniformSpace.{u2, u4} β δ _inst_2 _inst_4) (UniformEquiv.prodCongr.{u1, u2, u3, u4} α β γ δ _inst_1 _inst_2 _inst_3 _inst_4 h₁ h₂)) (UniformEquiv.prodCongr.{u2, u1, u4, u3} β α δ γ _inst_2 _inst_1 _inst_4 _inst_3 (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h₁) (UniformEquiv.symm.{u3, u4} γ δ _inst_3 _inst_4 h₂))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {δ : Type.{u1}} [_inst_1 : UniformSpace.{u4} α] [_inst_2 : UniformSpace.{u3} β] [_inst_3 : UniformSpace.{u2} γ] [_inst_4 : UniformSpace.{u1} δ] (h₁ : UniformEquiv.{u4, u3} α β _inst_1 _inst_2) (h₂ : UniformEquiv.{u2, u1} γ δ _inst_3 _inst_4), Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (UniformEquiv.{max u3 u1, max u4 u2} (Prod.{u3, u1} β δ) (Prod.{u4, u2} α γ) (instUniformSpaceProd.{u3, u1} β δ _inst_2 _inst_4) (instUniformSpaceProd.{u4, u2} α γ _inst_1 _inst_3)) (UniformEquiv.symm.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instUniformSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instUniformSpaceProd.{u3, u1} β δ _inst_2 _inst_4) (UniformEquiv.prodCongr.{u4, u3, u2, u1} α β γ δ _inst_1 _inst_2 _inst_3 _inst_4 h₁ h₂)) (UniformEquiv.prodCongr.{u3, u4, u1, u2} β α δ γ _inst_2 _inst_1 _inst_4 _inst_3 (UniformEquiv.symm.{u4, u3} α β _inst_1 _inst_2 h₁) (UniformEquiv.symm.{u2, u1} γ δ _inst_3 _inst_4 h₂))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.prod_congr_symm UniformEquiv.prodCongr_symmₓ'. -/
@[simp]
theorem prodCongr_symm (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) :
(h₁.prodCongr h₂).symm = h₁.symm.prodCongr h₂.symm :=
rfl
#align uniform_equiv.prod_congr_symm UniformEquiv.prodCongr_symm
-/- warning: uniform_equiv.coe_prod_congr -> UniformEquiv.coe_prodCongr is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] [_inst_3 : UniformSpace.{u3} γ] [_inst_4 : UniformSpace.{u4} δ] (h₁ : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (h₂ : UniformEquiv.{u3, u4} γ δ _inst_3 _inst_4), Eq.{max (succ (max u1 u3)) (succ (max u2 u4))} ((Prod.{u1, u3} α γ) -> (Prod.{u2, u4} β δ)) (coeFn.{max (succ (max u1 u3)) (succ (max u2 u4)), max (succ (max u1 u3)) (succ (max u2 u4))} (UniformEquiv.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.uniformSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.uniformSpace.{u2, u4} β δ _inst_2 _inst_4)) (fun (_x : UniformEquiv.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.uniformSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.uniformSpace.{u2, u4} β δ _inst_2 _inst_4)) => (Prod.{u1, u3} α γ) -> (Prod.{u2, u4} β δ)) (UniformEquiv.hasCoeToFun.{max u1 u3, max u2 u4} (Prod.{u1, u3} α γ) (Prod.{u2, u4} β δ) (Prod.uniformSpace.{u1, u3} α γ _inst_1 _inst_3) (Prod.uniformSpace.{u2, u4} β δ _inst_2 _inst_4)) (UniformEquiv.prodCongr.{u1, u2, u3, u4} α β γ δ _inst_1 _inst_2 _inst_3 _inst_4 h₁ h₂)) (Prod.map.{u1, u2, u3, u4} α β γ δ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h₁) (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ u4)} (UniformEquiv.{u3, u4} γ δ _inst_3 _inst_4) (fun (_x : UniformEquiv.{u3, u4} γ δ _inst_3 _inst_4) => γ -> δ) (UniformEquiv.hasCoeToFun.{u3, u4} γ δ _inst_3 _inst_4) h₂))
-but is expected to have type
- forall {α : Type.{u4}} {β : Type.{u3}} {γ : Type.{u2}} {δ : Type.{u1}} [_inst_1 : UniformSpace.{u4} α] [_inst_2 : UniformSpace.{u3} β] [_inst_3 : UniformSpace.{u2} γ] [_inst_4 : UniformSpace.{u1} δ] (h₁ : UniformEquiv.{u4, u3} α β _inst_1 _inst_2) (h₂ : UniformEquiv.{u2, u1} γ δ _inst_3 _inst_4), Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (forall (ᾰ : Prod.{u4, u2} α γ), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u4, u2} α γ) => Prod.{u3, u1} β δ) ᾰ) (FunLike.coe.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1), max (succ u4) (succ u2), max (succ u3) (succ u1)} (UniformEquiv.{max u2 u4, max u1 u3} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instUniformSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instUniformSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (fun (_x : Prod.{u4, u2} α γ) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u4, u2} α γ) => Prod.{u3, u1} β δ) _x) (EmbeddingLike.toFunLike.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1), max (succ u4) (succ u2), max (succ u3) (succ u1)} (UniformEquiv.{max u2 u4, max u1 u3} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instUniformSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instUniformSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (EquivLike.toEmbeddingLike.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1), max (succ u4) (succ u2), max (succ u3) (succ u1)} (UniformEquiv.{max u2 u4, max u1 u3} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instUniformSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instUniformSpaceProd.{u3, u1} β δ _inst_2 _inst_4)) (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (UniformEquiv.instEquivLikeUniformEquiv.{max u4 u2, max u3 u1} (Prod.{u4, u2} α γ) (Prod.{u3, u1} β δ) (instUniformSpaceProd.{u4, u2} α γ _inst_1 _inst_3) (instUniformSpaceProd.{u3, u1} β δ _inst_2 _inst_4)))) (UniformEquiv.prodCongr.{u4, u3, u2, u1} α β γ δ _inst_1 _inst_2 _inst_3 _inst_4 h₁ h₂)) (Prod.map.{u4, u3, u2, u1} α β γ δ (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (UniformEquiv.{u4, u3} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u4) (succ u3), succ u4, succ u3} (UniformEquiv.{u4, u3} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u4) (succ u3), succ u4, succ u3} (UniformEquiv.{u4, u3} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u4, u3} α β _inst_1 _inst_2))) h₁) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} γ δ _inst_3 _inst_4) γ (fun (_x : γ) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : γ) => δ) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} γ δ _inst_3 _inst_4) γ δ (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} γ δ _inst_3 _inst_4) γ δ (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} γ δ _inst_3 _inst_4))) h₂))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.coe_prod_congr UniformEquiv.coe_prodCongrₓ'. -/
@[simp]
theorem coe_prodCongr (h₁ : α ≃ᵤ β) (h₂ : γ ≃ᵤ δ) : ⇑(h₁.prodCongr h₂) = Prod.map h₁ h₂ :=
rfl
@@ -489,12 +309,6 @@ section
variable (α β γ)
-/- warning: uniform_equiv.prod_comm -> UniformEquiv.prodComm is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) (β : Type.{u2}) [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β], UniformEquiv.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.uniformSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.uniformSpace.{u2, u1} β α _inst_2 _inst_1)
-but is expected to have type
- forall (α : Type.{u1}) (β : Type.{u2}) [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β], UniformEquiv.{max u2 u1, max u1 u2} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (instUniformSpaceProd.{u1, u2} α β _inst_1 _inst_2) (instUniformSpaceProd.{u2, u1} β α _inst_2 _inst_1)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.prod_comm UniformEquiv.prodCommₓ'. -/
/-- `α × β` is uniformly isomorphic to `β × α`. -/
def prodComm : α × β ≃ᵤ β × α
where
@@ -503,34 +317,16 @@ def prodComm : α × β ≃ᵤ β × α
toEquiv := Equiv.prodComm α β
#align uniform_equiv.prod_comm UniformEquiv.prodComm
-/- warning: uniform_equiv.prod_comm_symm -> UniformEquiv.prodComm_symm is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) (β : Type.{u2}) [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β], Eq.{max (succ (max u2 u1)) (succ (max u1 u2))} (UniformEquiv.{max u2 u1, max u1 u2} (Prod.{u2, u1} β α) (Prod.{u1, u2} α β) (Prod.uniformSpace.{u2, u1} β α _inst_2 _inst_1) (Prod.uniformSpace.{u1, u2} α β _inst_1 _inst_2)) (UniformEquiv.symm.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.uniformSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.uniformSpace.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.prodComm.{u1, u2} α β _inst_1 _inst_2)) (UniformEquiv.prodComm.{u2, u1} β α _inst_2 _inst_1)
-but is expected to have type
- forall (α : Type.{u2}) (β : Type.{u1}) [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β], Eq.{max (succ u2) (succ u1)} (UniformEquiv.{max u2 u1, max u2 u1} (Prod.{u1, u2} β α) (Prod.{u2, u1} α β) (instUniformSpaceProd.{u1, u2} β α _inst_2 _inst_1) (instUniformSpaceProd.{u2, u1} α β _inst_1 _inst_2)) (UniformEquiv.symm.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instUniformSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instUniformSpaceProd.{u1, u2} β α _inst_2 _inst_1) (UniformEquiv.prodComm.{u2, u1} α β _inst_1 _inst_2)) (UniformEquiv.prodComm.{u1, u2} β α _inst_2 _inst_1)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.prod_comm_symm UniformEquiv.prodComm_symmₓ'. -/
@[simp]
theorem prodComm_symm : (prodComm α β).symm = prodComm β α :=
rfl
#align uniform_equiv.prod_comm_symm UniformEquiv.prodComm_symm
-/- warning: uniform_equiv.coe_prod_comm -> UniformEquiv.coe_prodComm is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) (β : Type.{u2}) [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β], Eq.{max (succ (max u1 u2)) (succ (max u2 u1))} ((Prod.{u1, u2} α β) -> (Prod.{u2, u1} β α)) (coeFn.{max (succ (max u1 u2)) (succ (max u2 u1)), max (succ (max u1 u2)) (succ (max u2 u1))} (UniformEquiv.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.uniformSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.uniformSpace.{u2, u1} β α _inst_2 _inst_1)) (fun (_x : UniformEquiv.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.uniformSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.uniformSpace.{u2, u1} β α _inst_2 _inst_1)) => (Prod.{u1, u2} α β) -> (Prod.{u2, u1} β α)) (UniformEquiv.hasCoeToFun.{max u1 u2, max u2 u1} (Prod.{u1, u2} α β) (Prod.{u2, u1} β α) (Prod.uniformSpace.{u1, u2} α β _inst_1 _inst_2) (Prod.uniformSpace.{u2, u1} β α _inst_2 _inst_1)) (UniformEquiv.prodComm.{u1, u2} α β _inst_1 _inst_2)) (Prod.swap.{u1, u2} α β)
-but is expected to have type
- forall (α : Type.{u2}) (β : Type.{u1}) [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β], Eq.{max (succ u2) (succ u1)} (forall (ᾰ : Prod.{u2, u1} α β), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u2, u1} α β) => Prod.{u1, u2} β α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{max u1 u2, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instUniformSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instUniformSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (fun (_x : Prod.{u2, u1} α β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u2, u1} α β) => Prod.{u1, u2} β α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{max u1 u2, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instUniformSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instUniformSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{max u1 u2, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instUniformSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instUniformSpaceProd.{u1, u2} β α _inst_2 _inst_1)) (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (UniformEquiv.instEquivLikeUniformEquiv.{max u2 u1, max u2 u1} (Prod.{u2, u1} α β) (Prod.{u1, u2} β α) (instUniformSpaceProd.{u2, u1} α β _inst_1 _inst_2) (instUniformSpaceProd.{u1, u2} β α _inst_2 _inst_1)))) (UniformEquiv.prodComm.{u2, u1} α β _inst_1 _inst_2)) (Prod.swap.{u2, u1} α β)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.coe_prod_comm UniformEquiv.coe_prodCommₓ'. -/
@[simp]
theorem coe_prodComm : ⇑(prodComm α β) = Prod.swap :=
rfl
#align uniform_equiv.coe_prod_comm UniformEquiv.coe_prodComm
-/- warning: uniform_equiv.prod_assoc -> UniformEquiv.prodAssoc is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) (β : Type.{u2}) (γ : Type.{u3}) [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] [_inst_3 : UniformSpace.{u3} γ], UniformEquiv.{max (max u1 u2) u3, max u1 u2 u3} (Prod.{max u1 u2, u3} (Prod.{u1, u2} α β) γ) (Prod.{u1, max u2 u3} α (Prod.{u2, u3} β γ)) (Prod.uniformSpace.{max u1 u2, u3} (Prod.{u1, u2} α β) γ (Prod.uniformSpace.{u1, u2} α β _inst_1 _inst_2) _inst_3) (Prod.uniformSpace.{u1, max u2 u3} α (Prod.{u2, u3} β γ) _inst_1 (Prod.uniformSpace.{u2, u3} β γ _inst_2 _inst_3))
-but is expected to have type
- forall (α : Type.{u1}) (β : Type.{u2}) (γ : Type.{u3}) [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] [_inst_3 : UniformSpace.{u3} γ], UniformEquiv.{max u3 u2 u1, max (max u3 u2) u1} (Prod.{max u2 u1, u3} (Prod.{u1, u2} α β) γ) (Prod.{u1, max u3 u2} α (Prod.{u2, u3} β γ)) (instUniformSpaceProd.{max u1 u2, u3} (Prod.{u1, u2} α β) γ (instUniformSpaceProd.{u1, u2} α β _inst_1 _inst_2) _inst_3) (instUniformSpaceProd.{u1, max u2 u3} α (Prod.{u2, u3} β γ) _inst_1 (instUniformSpaceProd.{u2, u3} β γ _inst_2 _inst_3))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.prod_assoc UniformEquiv.prodAssocₓ'. -/
/-- `(α × β) × γ` is uniformly isomorphic to `α × (β × γ)`. -/
def prodAssoc : (α × β) × γ ≃ᵤ α × β × γ
where
@@ -543,12 +339,6 @@ def prodAssoc : (α × β) × γ ≃ᵤ α × β × γ
toEquiv := Equiv.prodAssoc α β γ
#align uniform_equiv.prod_assoc UniformEquiv.prodAssoc
-/- warning: uniform_equiv.prod_punit -> UniformEquiv.prodPunit is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : UniformSpace.{u1} α], UniformEquiv.{max u1 u2, u1} (Prod.{u1, u2} α PUnit.{succ u2}) α (Prod.uniformSpace.{u1, u2} α PUnit.{succ u2} _inst_1 PUnit.uniformSpace.{u2}) _inst_1
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : UniformSpace.{u1} α], UniformEquiv.{max u2 u1, u1} (Prod.{u1, u2} α PUnit.{succ u2}) α (instUniformSpaceProd.{u1, u2} α PUnit.{succ u2} _inst_1 instUniformSpacePUnit.{u2}) _inst_1
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.prod_punit UniformEquiv.prodPunitₓ'. -/
/-- `α × {*}` is uniformly isomorphic to `α`. -/
@[simps (config := { fullyApplied := false }) apply]
def prodPunit : α × PUnit ≃ᵤ α where
@@ -557,23 +347,11 @@ def prodPunit : α × PUnit ≃ᵤ α where
uniformContinuous_invFun := uniformContinuous_id.prod_mk uniformContinuous_const
#align uniform_equiv.prod_punit UniformEquiv.prodPunit
-/- warning: uniform_equiv.punit_prod -> UniformEquiv.punitProd is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : UniformSpace.{u1} α], UniformEquiv.{max u2 u1, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (Prod.uniformSpace.{u2, u1} PUnit.{succ u2} α PUnit.uniformSpace.{u2} _inst_1) _inst_1
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : UniformSpace.{u1} α], UniformEquiv.{max u1 u2, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (instUniformSpaceProd.{u2, u1} PUnit.{succ u2} α instUniformSpacePUnit.{u2} _inst_1) _inst_1
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.punit_prod UniformEquiv.punitProdₓ'. -/
/-- `{*} × α` is uniformly isomorphic to `α`. -/
def punitProd : PUnit × α ≃ᵤ α :=
(prodComm _ _).trans (prodPunit _)
#align uniform_equiv.punit_prod UniformEquiv.punitProd
-/- warning: uniform_equiv.coe_punit_prod -> UniformEquiv.coe_punitProd is a dubious translation:
-lean 3 declaration is
- forall (α : Type.{u1}) [_inst_1 : UniformSpace.{u1} α], Eq.{max (succ (max u2 u1)) (succ u1)} ((Prod.{u2, u1} PUnit.{succ u2} α) -> α) (coeFn.{max (succ (max u2 u1)) (succ u1), max (succ (max u2 u1)) (succ u1)} (UniformEquiv.{max u2 u1, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (Prod.uniformSpace.{u2, u1} PUnit.{succ u2} α PUnit.uniformSpace.{u2} _inst_1) _inst_1) (fun (_x : UniformEquiv.{max u2 u1, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (Prod.uniformSpace.{u2, u1} PUnit.{succ u2} α PUnit.uniformSpace.{u2} _inst_1) _inst_1) => (Prod.{u2, u1} PUnit.{succ u2} α) -> α) (UniformEquiv.hasCoeToFun.{max u2 u1, u1} (Prod.{u2, u1} PUnit.{succ u2} α) α (Prod.uniformSpace.{u2, u1} PUnit.{succ u2} α PUnit.uniformSpace.{u2} _inst_1) _inst_1) (UniformEquiv.punitProd.{u1, u2} α _inst_1)) (Prod.snd.{u2, u1} PUnit.{succ u2} α)
-but is expected to have type
- forall (α : Type.{u2}) [_inst_1 : UniformSpace.{u2} α], Eq.{max (succ u2) (succ u1)} (forall (ᾰ : Prod.{u1, u2} PUnit.{succ u1} α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u1, u2} PUnit.{succ u1} α) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (UniformEquiv.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instUniformSpaceProd.{u1, u2} PUnit.{succ u1} α instUniformSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) (fun (_x : Prod.{u1, u2} PUnit.{succ u1} α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Prod.{u1, u2} PUnit.{succ u1} α) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (UniformEquiv.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instUniformSpaceProd.{u1, u2} PUnit.{succ u1} α instUniformSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), max (succ u2) (succ u1), succ u2} (UniformEquiv.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instUniformSpaceProd.{u1, u2} PUnit.{succ u1} α instUniformSpacePUnit.{u1} _inst_1) _inst_1) (Prod.{u1, u2} PUnit.{succ u1} α) α (UniformEquiv.instEquivLikeUniformEquiv.{max u2 u1, u2} (Prod.{u1, u2} PUnit.{succ u1} α) α (instUniformSpaceProd.{u1, u2} PUnit.{succ u1} α instUniformSpacePUnit.{u1} _inst_1) _inst_1))) (UniformEquiv.punitProd.{u2, u1} α _inst_1)) (Prod.snd.{u1, u2} PUnit.{succ u1} α)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.coe_punit_prod UniformEquiv.coe_punitProdₓ'. -/
@[simp]
theorem coe_punitProd : ⇑(punitProd α) = Prod.snd :=
rfl
@@ -605,12 +383,6 @@ def funUnique (ι α : Type _) [Unique ι] [UniformSpace α] : (ι → α) ≃
#align uniform_equiv.fun_unique UniformEquiv.funUnique
-/
-/- warning: uniform_equiv.pi_fin_two -> UniformEquiv.piFinTwo is a dubious translation:
-lean 3 declaration is
- forall (α : (Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> Type.{u1}) [_inst_5 : forall (i : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))), UniformSpace.{u1} (α i)], UniformEquiv.{u1, u1} (forall (i : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))), α i) (Prod.{u1, u1} (α (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) UniformEquiv.piFinTwo._proof_1))))) (α (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (One.one.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasOneOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) UniformEquiv.piFinTwo._proof_2)))))) (Pi.uniformSpace.{u1, 0} (Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (fun (i : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) => α i) (fun (i : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) => _inst_5 i)) (Prod.uniformSpace.{u1, u1} (α (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) UniformEquiv.piFinTwo._proof_1))))) (α (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (One.one.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasOneOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) UniformEquiv.piFinTwo._proof_2))))) (_inst_5 (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 0 (Zero.zero.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasZeroOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) UniformEquiv.piFinTwo._proof_1))))) (_inst_5 (OfNat.ofNat.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (OfNat.mk.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) 1 (One.one.{0} (Fin (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))) (Fin.hasOneOfNeZero (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)) UniformEquiv.piFinTwo._proof_2))))))
-but is expected to have type
- forall (α : (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) -> Type.{u1}) [_inst_5 : forall (i : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))), UniformSpace.{u1} (α i)], UniformEquiv.{u1, u1} (forall (i : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))), α i) (Prod.{u1, u1} (α (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (α (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))))) (Pi.uniformSpace.{u1, 0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (fun (i : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) => α i) (fun (i : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) => _inst_5 i)) (instUniformSpaceProd.{u1, u1} (α (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (α (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (_inst_5 (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 0 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 0 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))) (_inst_5 (OfNat.ofNat.{0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) 1 (Fin.instOfNatFin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)) 1 (NeZero.succ (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))))))
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.pi_fin_two UniformEquiv.piFinTwoₓ'. -/
/-- Uniform isomorphism between dependent functions `Π i : fin 2, α i` and `α 0 × α 1`. -/
@[simps (config := { fullyApplied := false })]
def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i) ≃ᵤ α 0 × α 1
@@ -621,24 +393,12 @@ def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i
uniformContinuous_pi.mpr <| Fin.forall_fin_two.2 ⟨uniformContinuous_fst, uniformContinuous_snd⟩
#align uniform_equiv.pi_fin_two UniformEquiv.piFinTwo
-/- warning: uniform_equiv.fin_two_arrow -> UniformEquiv.finTwoArrow is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : UniformSpace.{u1} α], UniformEquiv.{u1, u1} ((Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) -> α) (Prod.{u1, u1} α α) (Pi.uniformSpace.{u1, 0} (Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) (fun (ᾰ : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) => α) (fun (i : Fin (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne))))) => _inst_1)) (Prod.uniformSpace.{u1, u1} α α _inst_1 _inst_1)
-but is expected to have type
- forall (α : Type.{u1}) [_inst_1 : UniformSpace.{u1} α], UniformEquiv.{u1, u1} ((Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) -> α) (Prod.{u1, u1} α α) (Pi.uniformSpace.{u1, 0} (Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) (fun (ᾰ : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) => α) (fun (i : Fin (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2))) => _inst_1)) (instUniformSpaceProd.{u1, u1} α α _inst_1 _inst_1)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.fin_two_arrow UniformEquiv.finTwoArrowₓ'. -/
/-- Uniform isomorphism between `α² = fin 2 → α` and `α × α`. -/
@[simps (config := { fullyApplied := false })]
def finTwoArrow : (Fin 2 → α) ≃ᵤ α × α :=
{ piFinTwo fun _ => α with toEquiv := finTwoArrowEquiv α }
#align uniform_equiv.fin_two_arrow UniformEquiv.finTwoArrow
-/- warning: uniform_equiv.image -> UniformEquiv.image is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (e : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), UniformEquiv.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} α) Type.{u1} (Set.hasCoeToSort.{u1} α) s) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} β) Type.{u2} (Set.hasCoeToSort.{u2} β) (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) e) s)) (Subtype.uniformSpace.{u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) x s) _inst_1) (Subtype.uniformSpace.{u2} β (fun (x : β) => Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) x (Set.image.{u1, u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) e) s)) _inst_2)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (e : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (s : Set.{u1} α), UniformEquiv.{u1, u2} (Set.Elem.{u1} α s) (Set.Elem.{u2} β (Set.image.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} α β _inst_1 _inst_2))) e) s)) (instUniformSpaceSubtype.{u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x s) _inst_1) (instUniformSpaceSubtype.{u2} β (fun (x : β) => Membership.mem.{u2, u2} β (Set.{u2} β) (Set.instMembershipSet.{u2} β) x (Set.image.{u1, u2} α β (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} α β _inst_1 _inst_2))) e) s)) _inst_2)
-Case conversion may be inaccurate. Consider using '#align uniform_equiv.image UniformEquiv.imageₓ'. -/
/-- A subset of a uniform space is uniformly isomorphic to its image under a uniform isomorphism.
-/
def image (e : α ≃ᵤ β) (s : Set α) : s ≃ᵤ e '' s
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -61,7 +61,7 @@ instance : CoeFun (α ≃ᵤ β) fun _ => α → β :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : UniformContinuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (c : UniformContinuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)), Eq.{max (succ u1) (succ u2)} ((fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) a)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : UniformContinuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : UniformContinuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) (UniformEquiv.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : UniformContinuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : UniformContinuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) (UniformEquiv.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
Case conversion may be inaccurate. Consider using '#align uniform_equiv.uniform_equiv_mk_coe UniformEquiv.uniformEquiv_mk_coeₓ'. -/
@[simp]
theorem uniformEquiv_mk_coe (a : Equiv α β) (b c) : (UniformEquiv.mk a b c : α → β) = a :=
@@ -100,7 +100,7 @@ initialize_simps_projections UniformEquiv (to_equiv_to_fun → apply, to_equiv_i
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) (UniformEquiv.toEquiv.{u1, u2} α β _inst_1 _inst_2 h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (UniformEquiv.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (UniformEquiv.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align uniform_equiv.coe_to_equiv UniformEquiv.coe_toEquivₓ'. -/
@[simp]
theorem coe_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv = h :=
@@ -111,7 +111,7 @@ theorem coe_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv = h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (β -> α) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β (UniformEquiv.toEquiv.{u1, u2} α β _inst_1 _inst_2 h))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (UniformEquiv.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (UniformEquiv.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h))
Case conversion may be inaccurate. Consider using '#align uniform_equiv.coe_symm_to_equiv UniformEquiv.coe_symm_toEquivₓ'. -/
@[simp]
theorem coe_symm_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv.symm = h.symm :=
@@ -175,7 +175,7 @@ theorem trans_apply (h₁ : α ≃ᵤ β) (h₂ : β ≃ᵤ γ) (a : α) : h₁.
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : UniformContinuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (c : UniformContinuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)), Eq.{max (succ u2) (succ u1)} ((fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β a))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : UniformContinuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : UniformContinuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : β), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) a) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 (UniformEquiv.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : UniformContinuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : UniformContinuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : β), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) a) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 (UniformEquiv.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
Case conversion may be inaccurate. Consider using '#align uniform_equiv.uniform_equiv_mk_coe_symm UniformEquiv.uniformEquiv_mk_coe_symmₓ'. -/
@[simp]
theorem uniformEquiv_mk_coe_symm (a : Equiv α β) (b c) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -61,7 +61,7 @@ instance : CoeFun (α ≃ᵤ β) fun _ => α → β :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : UniformContinuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (c : UniformContinuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)), Eq.{max (succ u1) (succ u2)} ((fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c)) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) a)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : UniformContinuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : UniformContinuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) (UniformEquiv.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : UniformContinuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : UniformContinuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : α), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) (UniformEquiv.mk.{u2, u1} α β _inst_1 _inst_2 a b c)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) a)
Case conversion may be inaccurate. Consider using '#align uniform_equiv.uniform_equiv_mk_coe UniformEquiv.uniformEquiv_mk_coeₓ'. -/
@[simp]
theorem uniformEquiv_mk_coe (a : Equiv α β) (b c) : (UniformEquiv.mk a b c : α → β) = a :=
@@ -100,7 +100,7 @@ initialize_simps_projections UniformEquiv (to_equiv_to_fun → apply, to_equiv_i
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} α β) (fun (_x : Equiv.{succ u1, succ u2} α β) => α -> β) (Equiv.hasCoeToFun.{succ u1, succ u2} α β) (UniformEquiv.toEquiv.{u1, u2} α β _inst_1 _inst_2 h)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (UniformEquiv.{u1, u2} α β _inst_1 _inst_2) (fun (_x : UniformEquiv.{u1, u2} α β _inst_1 _inst_2) => α -> β) (UniformEquiv.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) h)
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (UniformEquiv.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} α β) (UniformEquiv.toEquiv.{u2, u1} α β _inst_1 _inst_2 h)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : α) => β) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (UniformEquiv.{u2, u1} α β _inst_1 _inst_2) α β (UniformEquiv.instEquivLikeUniformEquiv.{u2, u1} α β _inst_1 _inst_2))) h)
Case conversion may be inaccurate. Consider using '#align uniform_equiv.coe_to_equiv UniformEquiv.coe_toEquivₓ'. -/
@[simp]
theorem coe_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv = h :=
@@ -111,7 +111,7 @@ theorem coe_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv = h :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (h : UniformEquiv.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (β -> α) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β (UniformEquiv.toEquiv.{u1, u2} α β _inst_1 _inst_2 h))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 h))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (UniformEquiv.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (h : UniformEquiv.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : β), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β (UniformEquiv.toEquiv.{u2, u1} α β _inst_1 _inst_2 h))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 h))
Case conversion may be inaccurate. Consider using '#align uniform_equiv.coe_symm_to_equiv UniformEquiv.coe_symm_toEquivₓ'. -/
@[simp]
theorem coe_symm_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv.symm = h.symm :=
@@ -175,7 +175,7 @@ theorem trans_apply (h₁ : α ≃ᵤ β) (h₂ : β ≃ᵤ γ) (a : α) : h₁.
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : UniformSpace.{u1} α] [_inst_2 : UniformSpace.{u2} β] (a : Equiv.{succ u1, succ u2} α β) (b : UniformContinuous.{u1, u2} α β _inst_1 _inst_2 (Equiv.toFun.{succ u1, succ u2} α β a)) (c : UniformContinuous.{u2, u1} β α _inst_2 _inst_1 (Equiv.invFun.{succ u1, succ u2} α β a)), Eq.{max (succ u2) (succ u1)} ((fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (UniformEquiv.{u2, u1} β α _inst_2 _inst_1) (fun (_x : UniformEquiv.{u2, u1} β α _inst_2 _inst_1) => β -> α) (UniformEquiv.hasCoeToFun.{u2, u1} β α _inst_2 _inst_1) (UniformEquiv.symm.{u1, u2} α β _inst_1 _inst_2 (UniformEquiv.mk.{u1, u2} α β _inst_1 _inst_2 a b c))) (coeFn.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2), max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} β α) (fun (_x : Equiv.{succ u2, succ u1} β α) => β -> α) (Equiv.hasCoeToFun.{succ u2, succ u1} β α) (Equiv.symm.{succ u1, succ u2} α β a))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : UniformContinuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : UniformContinuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : β), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) a) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 (UniformEquiv.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : UniformSpace.{u2} α] [_inst_2 : UniformSpace.{u1} β] (a : Equiv.{succ u2, succ u1} α β) (b : UniformContinuous.{u2, u1} α β _inst_1 _inst_2 (Equiv.toFun.{succ u2, succ u1} α β a)) (c : UniformContinuous.{u1, u2} β α _inst_2 _inst_1 (Equiv.invFun.{succ u2, succ u1} α β a)), Eq.{max (succ u2) (succ u1)} (forall (a : β), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) a) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β (fun (_x : β) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : β) => α) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (UniformEquiv.{u1, u2} β α _inst_2 _inst_1) β α (UniformEquiv.instEquivLikeUniformEquiv.{u1, u2} β α _inst_2 _inst_1))) (UniformEquiv.symm.{u2, u1} α β _inst_1 _inst_2 (UniformEquiv.mk.{u2, u1} α β _inst_1 _inst_2 a b c))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (Equiv.{succ u1, succ u2} β α) β (fun (_x : β) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : β) => α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u2} β α) (Equiv.symm.{succ u2, succ u1} α β a))
Case conversion may be inaccurate. Consider using '#align uniform_equiv.uniform_equiv_mk_coe_symm UniformEquiv.uniformEquiv_mk_coe_symmₓ'. -/
@[simp]
theorem uniformEquiv_mk_coe_symm (a : Equiv α β) (b c) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -32,7 +32,7 @@ variable {α : Type u} {β : Type*} {γ : Type*} {δ : Type*}
-- not all spaces are homeomorphic to each other
/-- Uniform isomorphism between `α` and `β` -/
---@[nolint has_nonempty_instance] -- Porting note: missing linter?
+--@[nolint has_nonempty_instance] -- Porting note(#5171): linter not yet ported
structure UniformEquiv (α : Type*) (β : Type*) [UniformSpace α] [UniformSpace β] extends
α ≃ β where
/-- Uniform continuity of the function -/
@@ -212,7 +212,7 @@ theorem self_comp_symm (h : α ≃ᵤ β) : (h : α → β) ∘ h.symm = id :=
funext h.apply_symm_apply
#align uniform_equiv.self_comp_symm UniformEquiv.self_comp_symm
--- @[simp] -- Porting note: `simp` can prove this `simp only [Equiv.range_eq_univ]`
+-- @[simp] -- Porting note (#10618): `simp` can prove this `simp only [Equiv.range_eq_univ]`
theorem range_coe (h : α ≃ᵤ β) : range h = univ :=
h.surjective.range_eq
#align uniform_equiv.range_coe UniformEquiv.range_coe
@@ -225,12 +225,12 @@ theorem preimage_symm (h : α ≃ᵤ β) : preimage h.symm = image h :=
(funext h.toEquiv.image_eq_preimage).symm
#align uniform_equiv.preimage_symm UniformEquiv.preimage_symm
--- @[simp] -- Porting note: `simp` can prove this `simp only [Equiv.image_preimage]`
+-- @[simp] -- Porting note (#10618): `simp` can prove this `simp only [Equiv.image_preimage]`
theorem image_preimage (h : α ≃ᵤ β) (s : Set β) : h '' (h ⁻¹' s) = s :=
h.toEquiv.image_preimage s
#align uniform_equiv.image_preimage UniformEquiv.image_preimage
---@[simp] -- Porting note: `simp` can prove this `simp only [Equiv.preimage_image]`
+--@[simp] -- Porting note (#10618): `simp` can prove this `simp only [Equiv.preimage_image]`
theorem preimage_image (h : α ≃ᵤ β) (s : Set α) : h ⁻¹' (h '' s) = s :=
h.toEquiv.preimage_image s
#align uniform_equiv.preimage_image UniformEquiv.preimage_image
FunLike
to DFunLike
(#9785)
This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.
This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:
sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@@ -57,7 +57,7 @@ instance : EquivLike (α ≃ᵤ β) α β where
inv := fun h => h.toEquiv.symm
left_inv := fun h => h.left_inv
right_inv := fun h => h.right_inv
- coe_injective' := fun _ _ H _ => toEquiv_injective <| FunLike.ext' H
+ coe_injective' := fun _ _ H _ => toEquiv_injective <| DFunLike.ext' H
@[simp]
theorem uniformEquiv_mk_coe (a : Equiv α β) (b c) : (UniformEquiv.mk a b c : α → β) = a :=
@@ -348,7 +348,7 @@ theorem coe_punitProd : ⇑(punitProd α) = Prod.snd :=
@[simps! apply toEquiv]
def piCongrLeft {ι ι' : Type*} {β : ι' → Type*} [∀ j, UniformSpace (β j)]
(e : ι ≃ ι') : (∀ i, β (e i)) ≃ᵤ ∀ j, β j where
- uniformContinuous_toFun := uniformContinuous_pi.mpr <| e.forall_congr_left.mp <| fun i ↦ by
+ uniformContinuous_toFun := uniformContinuous_pi.mpr <| e.forall_congr_left.mp fun i ↦ by
simpa only [Equiv.toFun_as_coe, Equiv.piCongrLeft_apply_apply] using
Pi.uniformContinuous_proj _ i
uniformContinuous_invFun := Pi.uniformContinuous_precomp' _ e
Use .asFn
and .lemmasOnly
as simps
configuration options.
For reference, these are defined here:
@@ -101,7 +101,7 @@ theorem ext {h h' : α ≃ᵤ β} (H : ∀ x, h x = h' x) : h = h' :=
#align uniform_equiv.ext UniformEquiv.ext
/-- Identity map as a uniform isomorphism. -/
-@[simps! (config := { fullyApplied := false }) apply]
+@[simps! (config := .asFn) apply]
protected def refl (α : Type*) [UniformSpace α] : α ≃ᵤ α
where
uniformContinuous_toFun := uniformContinuous_id
@@ -326,7 +326,7 @@ def prodAssoc : (α × β) × γ ≃ᵤ α × β × γ
#align uniform_equiv.prod_assoc UniformEquiv.prodAssoc
/-- `α × {*}` is uniformly isomorphic to `α`. -/
-@[simps! (config := { fullyApplied := false }) apply]
+@[simps! (config := .asFn) apply]
def prodPunit : α × PUnit ≃ᵤ α where
toEquiv := Equiv.prodPUnit α
uniformContinuous_toFun := uniformContinuous_fst
@@ -391,7 +391,7 @@ def ulift : ULift.{v, u} α ≃ᵤ α :=
end
/-- If `ι` has a unique element, then `ι → α` is uniformly isomorphic to `α`. -/
-@[simps! (config := { fullyApplied := false })]
+@[simps! (config := .asFn)]
def funUnique (ι α : Type*) [Unique ι] [UniformSpace α] : (ι → α) ≃ᵤ α
where
toEquiv := Equiv.funUnique ι α
@@ -400,7 +400,7 @@ def funUnique (ι α : Type*) [Unique ι] [UniformSpace α] : (ι → α) ≃ᵤ
#align uniform_equiv.fun_unique UniformEquiv.funUnique
/-- Uniform isomorphism between dependent functions `Π i : Fin 2, α i` and `α 0 × α 1`. -/
-@[simps! (config := { fullyApplied := false })]
+@[simps! (config := .asFn)]
def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i) ≃ᵤ α 0 × α 1
where
toEquiv := piFinTwoEquiv α
@@ -411,7 +411,7 @@ def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i
/-- Uniform isomorphism between `α² = Fin 2 → α` and `α × α`. -/
-- Porting note: made `α` explicit
-@[simps! (config := { fullyApplied := false })]
+@[simps! (config := .asFn)]
def finTwoArrow (α : Type*) [UniformSpace α] : (Fin 2 → α) ≃ᵤ α × α :=
{ piFinTwo fun _ => α with toEquiv := finTwoArrowEquiv α }
#align uniform_equiv.fin_two_arrow UniformEquiv.finTwoArrow
Equiv.toFun_as_coe_apply
(#7902)
This simp
lemma was added during the port but tagged as probably unnecessary after fixing https://github.com/leanprover/lean4/issues/1937. This PR confirms it is indeed no longer necessary. The only proofs that needed fixing were the one explicitly calling the new simp lemma.
The porting note can go too.
@@ -349,7 +349,7 @@ theorem coe_punitProd : ⇑(punitProd α) = Prod.snd :=
def piCongrLeft {ι ι' : Type*} {β : ι' → Type*} [∀ j, UniformSpace (β j)]
(e : ι ≃ ι') : (∀ i, β (e i)) ≃ᵤ ∀ j, β j where
uniformContinuous_toFun := uniformContinuous_pi.mpr <| e.forall_congr_left.mp <| fun i ↦ by
- simpa only [Equiv.toFun_as_coe_apply, Equiv.piCongrLeft_apply_apply] using
+ simpa only [Equiv.toFun_as_coe, Equiv.piCongrLeft_apply_apply] using
Pi.uniformContinuous_proj _ i
uniformContinuous_invFun := Pi.uniformContinuous_precomp' _ e
toEquiv := Equiv.piCongrLeft _ e
@@ -343,6 +343,41 @@ theorem coe_punitProd : ⇑(punitProd α) = Prod.snd :=
rfl
#align uniform_equiv.coe_punit_prod UniformEquiv.coe_punitProd
+/-- `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 where
+ uniformContinuous_toFun := uniformContinuous_pi.mpr <| e.forall_congr_left.mp <| fun i ↦ by
+ simpa only [Equiv.toFun_as_coe_apply, Equiv.piCongrLeft_apply_apply] using
+ Pi.uniformContinuous_proj _ i
+ uniformContinuous_invFun := Pi.uniformContinuous_precomp' _ e
+ toEquiv := Equiv.piCongrLeft _ e
+
+/-- `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 where
+ uniformContinuous_toFun := Pi.uniformContinuous_postcomp' _ fun i ↦ (F i).uniformContinuous
+ uniformContinuous_invFun := Pi.uniformContinuous_postcomp' _ fun i ↦ (F i).symm.uniformContinuous
+ toEquiv := Equiv.piCongrRight fun i => (F i).toEquiv
+
+@[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 :=
+ rfl
+
+/-- `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₂ :=
+ (UniformEquiv.piCongrRight F).trans (UniformEquiv.piCongrLeft e)
+
/-- Uniform equivalence between `ULift α` and `α`. -/
def ulift : ULift.{v, u} α ≃ᵤ α :=
{ Equiv.ulift with
@@ -355,7 +390,7 @@ def ulift : ULift.{v, u} α ≃ᵤ α :=
end
-/-- If `ι` has a unique element, then `ι → α` is homeomorphic to `α`. -/
+/-- If `ι` has a unique element, then `ι → α` is uniformly isomorphic to `α`. -/
@[simps! (config := { fullyApplied := false })]
def funUnique (ι α : Type*) [Unique ι] [UniformSpace α] : (ι → α) ≃ᵤ α
where
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -28,12 +28,12 @@ open Set Filter
universe u v
-variable {α : Type u} {β : Type _} {γ : Type _} {δ : Type _}
+variable {α : Type u} {β : Type*} {γ : Type*} {δ : Type*}
-- not all spaces are homeomorphic to each other
/-- Uniform isomorphism between `α` and `β` -/
--@[nolint has_nonempty_instance] -- Porting note: missing linter?
-structure UniformEquiv (α : Type _) (β : Type _) [UniformSpace α] [UniformSpace β] extends
+structure UniformEquiv (α : Type*) (β : Type*) [UniformSpace α] [UniformSpace β] extends
α ≃ β where
/-- Uniform continuity of the function -/
uniformContinuous_toFun : UniformContinuous toFun
@@ -102,7 +102,7 @@ theorem ext {h h' : α ≃ᵤ β} (H : ∀ x, h x = h' x) : h = h' :=
/-- Identity map as a uniform isomorphism. -/
@[simps! (config := { fullyApplied := false }) apply]
-protected def refl (α : Type _) [UniformSpace α] : α ≃ᵤ α
+protected def refl (α : Type*) [UniformSpace α] : α ≃ᵤ α
where
uniformContinuous_toFun := uniformContinuous_id
uniformContinuous_invFun := uniformContinuous_id
@@ -357,7 +357,7 @@ end
/-- If `ι` has a unique element, then `ι → α` is homeomorphic to `α`. -/
@[simps! (config := { fullyApplied := false })]
-def funUnique (ι α : Type _) [Unique ι] [UniformSpace α] : (ι → α) ≃ᵤ α
+def funUnique (ι α : Type*) [Unique ι] [UniformSpace α] : (ι → α) ≃ᵤ α
where
toEquiv := Equiv.funUnique ι α
uniformContinuous_toFun := Pi.uniformContinuous_proj _ _
@@ -377,7 +377,7 @@ def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i
/-- Uniform isomorphism between `α² = Fin 2 → α` and `α × α`. -/
-- Porting note: made `α` explicit
@[simps! (config := { fullyApplied := false })]
-def finTwoArrow (α : Type _) [UniformSpace α] : (Fin 2 → α) ≃ᵤ α × α :=
+def finTwoArrow (α : Type*) [UniformSpace α] : (Fin 2 → α) ≃ᵤ α × α :=
{ piFinTwo fun _ => α with toEquiv := finTwoArrowEquiv α }
#align uniform_equiv.fin_two_arrow UniformEquiv.finTwoArrow
@@ -3,16 +3,13 @@ Copyright (c) 2022 Anatole Dedecker. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Patrick Massot, Sébastien Gouëzel, Zhouhang Zhou, Reid Barton,
Anatole Dedecker
-
-! This file was ported from Lean 3 source module topology.uniform_space.equiv
-! leanprover-community/mathlib commit 4c19a16e4b705bf135cf9a80ac18fcc99c438514
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.Homeomorph
import Mathlib.Topology.UniformSpace.UniformEmbedding
import Mathlib.Topology.UniformSpace.Pi
+#align_import topology.uniform_space.equiv from "leanprover-community/mathlib"@"4c19a16e4b705bf135cf9a80ac18fcc99c438514"
+
/-!
# Uniform isomorphisms
@@ -380,7 +380,7 @@ def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i
/-- Uniform isomorphism between `α² = Fin 2 → α` and `α × α`. -/
-- Porting note: made `α` explicit
@[simps! (config := { fullyApplied := false })]
-def finTwoArrow (α : Type _) [UniformSpace α]: (Fin 2 → α) ≃ᵤ α × α :=
+def finTwoArrow (α : Type _) [UniformSpace α] : (Fin 2 → α) ≃ᵤ α × α :=
{ piFinTwo fun _ => α with toEquiv := finTwoArrowEquiv α }
#align uniform_equiv.fin_two_arrow UniformEquiv.finTwoArrow
fix-comments.py
on all files.@@ -346,7 +346,7 @@ theorem coe_punitProd : ⇑(punitProd α) = Prod.snd :=
rfl
#align uniform_equiv.coe_punit_prod UniformEquiv.coe_punitProd
-/-- Uniform equivalence between `ulift α` and `α`. -/
+/-- Uniform equivalence between `ULift α` and `α`. -/
def ulift : ULift.{v, u} α ≃ᵤ α :=
{ Equiv.ulift with
uniformContinuous_toFun := uniformContinuous_comap
@@ -367,7 +367,7 @@ def funUnique (ι α : Type _) [Unique ι] [UniformSpace α] : (ι → α) ≃
uniformContinuous_invFun := uniformContinuous_pi.mpr fun _ => uniformContinuous_id
#align uniform_equiv.fun_unique UniformEquiv.funUnique
-/-- Uniform isomorphism between dependent functions `Π i : fin 2, α i` and `α 0 × α 1`. -/
+/-- Uniform isomorphism between dependent functions `Π i : Fin 2, α i` and `α 0 × α 1`. -/
@[simps! (config := { fullyApplied := false })]
def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i) ≃ᵤ α 0 × α 1
where
@@ -377,7 +377,7 @@ def piFinTwo (α : Fin 2 → Type u) [∀ i, UniformSpace (α i)] : (∀ i, α i
uniformContinuous_pi.mpr <| Fin.forall_fin_two.2 ⟨uniformContinuous_fst, uniformContinuous_snd⟩
#align uniform_equiv.pi_fin_two UniformEquiv.piFinTwo
-/-- Uniform isomorphism between `α² = fin 2 → α` and `α × α`. -/
+/-- Uniform isomorphism between `α² = Fin 2 → α` and `α × α`. -/
-- Porting note: made `α` explicit
@[simps! (config := { fullyApplied := false })]
def finTwoArrow (α : Type _) [UniformSpace α]: (Fin 2 → α) ≃ᵤ α × α :=
congr!
and improvement to convert
(#2566)
This introduces a tactic congr!
that is an analogue to mathlib 3's congr'
. It is a more insistent version of congr
that makes use of more congruence lemmas (including user congruence lemmas), propext
, funext
, and Subsingleton
instances. It also has a feature to lift reflexive relations to equalities. Along with funext
, the tactic does intros
, allowing congr!
to get access to function bodies; the introduced variables can be named using rename_i
if needed.
This also modifies convert
to use congr!
rather than congr
, which makes it work more like the mathlib3 version of the tactic.
@@ -200,7 +200,7 @@ def changeInv (f : α ≃ᵤ β) (g : β → α) (hg : Function.RightInverse g f
{ toFun := f
invFun := g
left_inv := by convert f.left_inv
- right_inv := by convert f.right_inv
+ right_inv := by convert f.right_inv using 1
uniformContinuous_toFun := f.uniformContinuous
uniformContinuous_invFun := by convert f.symm.uniformContinuous }
#align uniform_equiv.change_inv UniformEquiv.changeInv
@@ -86,8 +86,7 @@ def Simps.symm_apply (h : α ≃ᵤ β) : β → α :=
h.symm
#align uniform_equiv.simps.symm_apply UniformEquiv.Simps.symm_apply
-initialize_simps_projections UniformEquiv (toEquiv_toFun → apply, toEquiv_invFun → symm_apply,
- -toEquiv)
+initialize_simps_projections UniformEquiv (toFun → apply, invFun → symm_apply)
@[simp]
theorem coe_toEquiv (h : α ≃ᵤ β) : ⇑h.toEquiv = h :=
Restore the remaining @[continuity]
attributes that were ported while the continuity
tactic was in the works.
@@ -141,7 +141,7 @@ protected theorem uniformContinuous (h : α ≃ᵤ β) : UniformContinuous h :=
h.uniformContinuous_toFun
#align uniform_equiv.uniform_continuous UniformEquiv.uniformContinuous
---@[continuity] -- Porting note: missing attribute
+@[continuity]
protected theorem continuous (h : α ≃ᵤ β) : Continuous h :=
h.uniformContinuous.continuous
#align uniform_equiv.continuous UniformEquiv.continuous
@@ -151,7 +151,7 @@ protected theorem uniformContinuous_symm (h : α ≃ᵤ β) : UniformContinuous
#align uniform_equiv.uniform_continuous_symm UniformEquiv.uniformContinuous_symm
-- otherwise `by continuity` can't prove continuity of `h.to_equiv.symm`
---@[continuity] -- Porting note: missing attribute
+@[continuity]
protected theorem continuous_symm (h : α ≃ᵤ β) : Continuous h.symm :=
h.uniformContinuous_symm.continuous
#align uniform_equiv.continuous_symm UniformEquiv.continuous_symm
The unported dependencies are