topology.algebra.equicontinuityMathlib.Topology.Algebra.Equicontinuity

This file has been ported!

Changes since the initial port

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.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -28,7 +28,7 @@ theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Topologica
   by
   letI : CoeFun hom fun _ => G → M := DFunLike.hasCoeToFun
   rw [equicontinuous_iff_continuous]
-  rw [equicontinuousAt_iff_continuousAt] at hf 
+  rw [equicontinuousAt_iff_continuousAt] at hf
   let φ : G →* ι → M :=
     { toFun := swap (coeFn ∘ F)
       map_one' := by ext <;> exact map_one _
@@ -46,7 +46,7 @@ theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Uni
   by
   letI : CoeFun hom fun _ => G → M := DFunLike.hasCoeToFun
   rw [uniformEquicontinuous_iff_uniformContinuous]
-  rw [equicontinuousAt_iff_continuousAt] at hf 
+  rw [equicontinuousAt_iff_continuousAt] at hf
   let φ : G →* ι → M :=
     { toFun := swap (coeFn ∘ F)
       map_one' := by ext <;> exact map_one _
Diff
@@ -26,7 +26,7 @@ theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Topologica
     [MonoidHomClass hom G M] (F : ι → hom) (hf : EquicontinuousAt (coeFn ∘ F) (1 : G)) :
     Equicontinuous (coeFn ∘ F) :=
   by
-  letI : CoeFun hom fun _ => G → M := FunLike.hasCoeToFun
+  letI : CoeFun hom fun _ => G → M := DFunLike.hasCoeToFun
   rw [equicontinuous_iff_continuous]
   rw [equicontinuousAt_iff_continuousAt] at hf 
   let φ : G →* ι → M :=
@@ -44,7 +44,7 @@ theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Uni
     [UniformSpace M] [Group G] [Group M] [UniformGroup G] [UniformGroup M] [MonoidHomClass hom G M]
     (F : ι → hom) (hf : EquicontinuousAt (coeFn ∘ F) (1 : G)) : UniformEquicontinuous (coeFn ∘ F) :=
   by
-  letI : CoeFun hom fun _ => G → M := FunLike.hasCoeToFun
+  letI : CoeFun hom fun _ => G → M := DFunLike.hasCoeToFun
   rw [uniformEquicontinuous_iff_uniformContinuous]
   rw [equicontinuousAt_iff_continuousAt] at hf 
   let φ : G →* ι → M :=
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2022 Anatole Dedecker. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker
 -/
-import Mathbin.Topology.Algebra.UniformConvergence
+import Topology.Algebra.UniformConvergence
 
 #align_import topology.algebra.equicontinuity from "leanprover-community/mathlib"@"781cb2eed038c4caf53bdbd8d20a95e5822d77df"
 
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2022 Anatole Dedecker. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker
-
-! This file was ported from Lean 3 source module topology.algebra.equicontinuity
-! leanprover-community/mathlib commit 781cb2eed038c4caf53bdbd8d20a95e5822d77df
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Topology.Algebra.UniformConvergence
 
+#align_import topology.algebra.equicontinuity from "leanprover-community/mathlib"@"781cb2eed038c4caf53bdbd8d20a95e5822d77df"
+
 /-!
 # Algebra-related equicontinuity criterions
 
Diff
@@ -22,6 +22,7 @@ open Function
 
 open scoped UniformConvergence
 
+#print equicontinuous_of_equicontinuousAt_one /-
 @[to_additive]
 theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [TopologicalSpace G]
     [UniformSpace M] [Group G] [Group M] [TopologicalGroup G] [UniformGroup M]
@@ -38,7 +39,9 @@ theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Topologica
   exact continuous_of_continuousAt_one φ hf
 #align equicontinuous_of_equicontinuous_at_one equicontinuous_of_equicontinuousAt_one
 #align equicontinuous_of_equicontinuous_at_zero equicontinuous_of_equicontinuousAt_zero
+-/
 
+#print uniformEquicontinuous_of_equicontinuousAt_one /-
 @[to_additive]
 theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [UniformSpace G]
     [UniformSpace M] [Group G] [Group M] [UniformGroup G] [UniformGroup M] [MonoidHomClass hom G M]
@@ -54,4 +57,5 @@ theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Uni
   exact uniformContinuous_of_continuousAt_one φ hf
 #align uniform_equicontinuous_of_equicontinuous_at_one uniformEquicontinuous_of_equicontinuousAt_one
 #align uniform_equicontinuous_of_equicontinuous_at_zero uniformEquicontinuous_of_equicontinuousAt_zero
+-/
 
Diff
@@ -30,7 +30,7 @@ theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Topologica
   by
   letI : CoeFun hom fun _ => G → M := FunLike.hasCoeToFun
   rw [equicontinuous_iff_continuous]
-  rw [equicontinuousAt_iff_continuousAt] at hf
+  rw [equicontinuousAt_iff_continuousAt] at hf 
   let φ : G →* ι → M :=
     { toFun := swap (coeFn ∘ F)
       map_one' := by ext <;> exact map_one _
@@ -46,7 +46,7 @@ theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Uni
   by
   letI : CoeFun hom fun _ => G → M := FunLike.hasCoeToFun
   rw [uniformEquicontinuous_iff_uniformContinuous]
-  rw [equicontinuousAt_iff_continuousAt] at hf
+  rw [equicontinuousAt_iff_continuousAt] at hf 
   let φ : G →* ι → M :=
     { toFun := swap (coeFn ∘ F)
       map_one' := by ext <;> exact map_one _
Diff
@@ -20,7 +20,7 @@ import Mathbin.Topology.Algebra.UniformConvergence
 
 open Function
 
-open UniformConvergence
+open scoped UniformConvergence
 
 @[to_additive]
 theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [TopologicalSpace G]
Diff
@@ -22,12 +22,6 @@ open Function
 
 open UniformConvergence
 
-/- warning: equicontinuous_of_equicontinuous_at_one -> equicontinuous_of_equicontinuousAt_one is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {G : Type.{u2}} {M : Type.{u3}} {hom : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} G] [_inst_2 : UniformSpace.{u3} M] [_inst_3 : Group.{u2} G] [_inst_4 : Group.{u3} M] [_inst_5 : TopologicalGroup.{u2} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u3} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u1, u2, u3} ι G M _inst_1 _inst_2 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F) (OfNat.ofNat.{u2} G 1 (OfNat.mk.{u2} G 1 (One.one.{u2} G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))))))) -> (Equicontinuous.{u1, u2, u3} ι G M _inst_1 _inst_2 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F))
-but is expected to have type
-  forall {ι : Type.{u4}} {G : Type.{u3}} {M : Type.{u2}} {hom : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} G] [_inst_2 : UniformSpace.{u2} M] [_inst_3 : Group.{u3} G] [_inst_4 : Group.{u2} M] [_inst_5 : TopologicalGroup.{u3} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u2} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u4, u3, u2} ι G M _inst_1 _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F) (OfNat.ofNat.{u3} G 1 (One.toOfNat1.{u3} G (InvOneClass.toOne.{u3} G (DivInvOneMonoid.toInvOneClass.{u3} G (DivisionMonoid.toDivInvOneMonoid.{u3} G (Group.toDivisionMonoid.{u3} G _inst_3))))))) -> (Equicontinuous.{u4, u3, u2} ι G M _inst_1 _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F))
-Case conversion may be inaccurate. Consider using '#align equicontinuous_of_equicontinuous_at_one equicontinuous_of_equicontinuousAt_oneₓ'. -/
 @[to_additive]
 theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [TopologicalSpace G]
     [UniformSpace M] [Group G] [Group M] [TopologicalGroup G] [UniformGroup M]
@@ -45,12 +39,6 @@ theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Topologica
 #align equicontinuous_of_equicontinuous_at_one equicontinuous_of_equicontinuousAt_one
 #align equicontinuous_of_equicontinuous_at_zero equicontinuous_of_equicontinuousAt_zero
 
-/- warning: uniform_equicontinuous_of_equicontinuous_at_one -> uniformEquicontinuous_of_equicontinuousAt_one is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {G : Type.{u2}} {M : Type.{u3}} {hom : Type.{u4}} [_inst_1 : UniformSpace.{u2} G] [_inst_2 : UniformSpace.{u3} M] [_inst_3 : Group.{u2} G] [_inst_4 : Group.{u3} M] [_inst_5 : UniformGroup.{u2} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u3} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u1, u2, u3} ι G M (UniformSpace.toTopologicalSpace.{u2} G _inst_1) _inst_2 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F) (OfNat.ofNat.{u2} G 1 (OfNat.mk.{u2} G 1 (One.one.{u2} G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))))))) -> (UniformEquicontinuous.{u1, u3, u2} ι M G _inst_2 _inst_1 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F))
-but is expected to have type
-  forall {ι : Type.{u4}} {G : Type.{u3}} {M : Type.{u2}} {hom : Type.{u1}} [_inst_1 : UniformSpace.{u3} G] [_inst_2 : UniformSpace.{u2} M] [_inst_3 : Group.{u3} G] [_inst_4 : Group.{u2} M] [_inst_5 : UniformGroup.{u3} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u2} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u4, u3, u2} ι G M (UniformSpace.toTopologicalSpace.{u3} G _inst_1) _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F) (OfNat.ofNat.{u3} G 1 (One.toOfNat1.{u3} G (InvOneClass.toOne.{u3} G (DivInvOneMonoid.toInvOneClass.{u3} G (DivisionMonoid.toDivInvOneMonoid.{u3} G (Group.toDivisionMonoid.{u3} G _inst_3))))))) -> (UniformEquicontinuous.{u4, u2, u3} ι M G _inst_2 _inst_1 (Function.comp.{succ u4, succ u1, max (succ u3) (succ u2)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F))
-Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous_of_equicontinuous_at_one uniformEquicontinuous_of_equicontinuousAt_oneₓ'. -/
 @[to_additive]
 theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [UniformSpace G]
     [UniformSpace M] [Group G] [Group M] [UniformGroup G] [UniformGroup M] [MonoidHomClass hom G M]
Diff
@@ -26,7 +26,7 @@ open UniformConvergence
 lean 3 declaration is
   forall {ι : Type.{u1}} {G : Type.{u2}} {M : Type.{u3}} {hom : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} G] [_inst_2 : UniformSpace.{u3} M] [_inst_3 : Group.{u2} G] [_inst_4 : Group.{u3} M] [_inst_5 : TopologicalGroup.{u2} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u3} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u1, u2, u3} ι G M _inst_1 _inst_2 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F) (OfNat.ofNat.{u2} G 1 (OfNat.mk.{u2} G 1 (One.one.{u2} G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))))))) -> (Equicontinuous.{u1, u2, u3} ι G M _inst_1 _inst_2 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F))
 but is expected to have type
-  forall {ι : Type.{u4}} {G : Type.{u3}} {M : Type.{u2}} {hom : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} G] [_inst_2 : UniformSpace.{u2} M] [_inst_3 : Group.{u3} G] [_inst_4 : Group.{u2} M] [_inst_5 : TopologicalGroup.{u3} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u2} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u4, u3, u2} ι G M _inst_1 _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F) (OfNat.ofNat.{u3} G 1 (One.toOfNat1.{u3} G (InvOneClass.toOne.{u3} G (DivInvOneMonoid.toInvOneClass.{u3} G (DivisionMonoid.toDivInvOneMonoid.{u3} G (Group.toDivisionMonoid.{u3} G _inst_3))))))) -> (Equicontinuous.{u4, u3, u2} ι G M _inst_1 _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F))
+  forall {ι : Type.{u4}} {G : Type.{u3}} {M : Type.{u2}} {hom : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} G] [_inst_2 : UniformSpace.{u2} M] [_inst_3 : Group.{u3} G] [_inst_4 : Group.{u2} M] [_inst_5 : TopologicalGroup.{u3} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u2} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u4, u3, u2} ι G M _inst_1 _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F) (OfNat.ofNat.{u3} G 1 (One.toOfNat1.{u3} G (InvOneClass.toOne.{u3} G (DivInvOneMonoid.toInvOneClass.{u3} G (DivisionMonoid.toDivInvOneMonoid.{u3} G (Group.toDivisionMonoid.{u3} G _inst_3))))))) -> (Equicontinuous.{u4, u3, u2} ι G M _inst_1 _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F))
 Case conversion may be inaccurate. Consider using '#align equicontinuous_of_equicontinuous_at_one equicontinuous_of_equicontinuousAt_oneₓ'. -/
 @[to_additive]
 theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [TopologicalSpace G]
@@ -49,7 +49,7 @@ theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Topologica
 lean 3 declaration is
   forall {ι : Type.{u1}} {G : Type.{u2}} {M : Type.{u3}} {hom : Type.{u4}} [_inst_1 : UniformSpace.{u2} G] [_inst_2 : UniformSpace.{u3} M] [_inst_3 : Group.{u2} G] [_inst_4 : Group.{u3} M] [_inst_5 : UniformGroup.{u2} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u3} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u1, u2, u3} ι G M (UniformSpace.toTopologicalSpace.{u2} G _inst_1) _inst_2 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F) (OfNat.ofNat.{u2} G 1 (OfNat.mk.{u2} G 1 (One.one.{u2} G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))))))) -> (UniformEquicontinuous.{u1, u3, u2} ι M G _inst_2 _inst_1 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F))
 but is expected to have type
-  forall {ι : Type.{u4}} {G : Type.{u3}} {M : Type.{u2}} {hom : Type.{u1}} [_inst_1 : UniformSpace.{u3} G] [_inst_2 : UniformSpace.{u2} M] [_inst_3 : Group.{u3} G] [_inst_4 : Group.{u2} M] [_inst_5 : UniformGroup.{u3} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u2} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u4, u3, u2} ι G M (UniformSpace.toTopologicalSpace.{u3} G _inst_1) _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F) (OfNat.ofNat.{u3} G 1 (One.toOfNat1.{u3} G (InvOneClass.toOne.{u3} G (DivInvOneMonoid.toInvOneClass.{u3} G (DivisionMonoid.toDivInvOneMonoid.{u3} G (Group.toDivisionMonoid.{u3} G _inst_3))))))) -> (UniformEquicontinuous.{u4, u2, u3} ι M G _inst_2 _inst_1 (Function.comp.{succ u4, succ u1, max (succ u3) (succ u2)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F))
+  forall {ι : Type.{u4}} {G : Type.{u3}} {M : Type.{u2}} {hom : Type.{u1}} [_inst_1 : UniformSpace.{u3} G] [_inst_2 : UniformSpace.{u2} M] [_inst_3 : Group.{u3} G] [_inst_4 : Group.{u2} M] [_inst_5 : UniformGroup.{u3} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u2} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u4, u3, u2} ι G M (UniformSpace.toTopologicalSpace.{u3} G _inst_1) _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F) (OfNat.ofNat.{u3} G 1 (One.toOfNat1.{u3} G (InvOneClass.toOne.{u3} G (DivInvOneMonoid.toInvOneClass.{u3} G (DivisionMonoid.toDivInvOneMonoid.{u3} G (Group.toDivisionMonoid.{u3} G _inst_3))))))) -> (UniformEquicontinuous.{u4, u2, u3} ι M G _inst_2 _inst_1 (Function.comp.{succ u4, succ u1, max (succ u3) (succ u2)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F))
 Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous_of_equicontinuous_at_one uniformEquicontinuous_of_equicontinuousAt_oneₓ'. -/
 @[to_additive]
 theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [UniformSpace G]
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker
 
 ! This file was ported from Lean 3 source module topology.algebra.equicontinuity
-! leanprover-community/mathlib commit 01ad394a11bf06b950232720cf7e8fc6b22f0d6a
+! leanprover-community/mathlib commit 781cb2eed038c4caf53bdbd8d20a95e5822d77df
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -12,6 +12,9 @@ import Mathbin.Topology.Algebra.UniformConvergence
 
 /-!
 # Algebra-related equicontinuity criterions
+
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
 -/
 
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker
 
 ! This file was ported from Lean 3 source module topology.algebra.equicontinuity
-! leanprover-community/mathlib commit 781cb2eed038c4caf53bdbd8d20a95e5822d77df
+! leanprover-community/mathlib commit 01ad394a11bf06b950232720cf7e8fc6b22f0d6a
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -12,9 +12,6 @@ import Mathbin.Topology.Algebra.UniformConvergence
 
 /-!
 # Algebra-related equicontinuity criterions
-
-> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
-> Any changes to this file require a corresponding PR to mathlib4.
 -/
 
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker
 
 ! This file was ported from Lean 3 source module topology.algebra.equicontinuity
-! leanprover-community/mathlib commit 01ad394a11bf06b950232720cf7e8fc6b22f0d6a
+! leanprover-community/mathlib commit 781cb2eed038c4caf53bdbd8d20a95e5822d77df
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -12,6 +12,9 @@ import Mathbin.Topology.Algebra.UniformConvergence
 
 /-!
 # Algebra-related equicontinuity criterions
+
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
 -/
 
 
Diff
@@ -19,6 +19,12 @@ open Function
 
 open UniformConvergence
 
+/- warning: equicontinuous_of_equicontinuous_at_one -> equicontinuous_of_equicontinuousAt_one is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {G : Type.{u2}} {M : Type.{u3}} {hom : Type.{u4}} [_inst_1 : TopologicalSpace.{u2} G] [_inst_2 : UniformSpace.{u3} M] [_inst_3 : Group.{u2} G] [_inst_4 : Group.{u3} M] [_inst_5 : TopologicalGroup.{u2} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u3} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u1, u2, u3} ι G M _inst_1 _inst_2 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F) (OfNat.ofNat.{u2} G 1 (OfNat.mk.{u2} G 1 (One.one.{u2} G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))))))) -> (Equicontinuous.{u1, u2, u3} ι G M _inst_1 _inst_2 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F))
+but is expected to have type
+  forall {ι : Type.{u4}} {G : Type.{u3}} {M : Type.{u2}} {hom : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} G] [_inst_2 : UniformSpace.{u2} M] [_inst_3 : Group.{u3} G] [_inst_4 : Group.{u2} M] [_inst_5 : TopologicalGroup.{u3} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u2} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u4, u3, u2} ι G M _inst_1 _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F) (OfNat.ofNat.{u3} G 1 (One.toOfNat1.{u3} G (InvOneClass.toOne.{u3} G (DivInvOneMonoid.toInvOneClass.{u3} G (DivisionMonoid.toDivInvOneMonoid.{u3} G (Group.toDivisionMonoid.{u3} G _inst_3))))))) -> (Equicontinuous.{u4, u3, u2} ι G M _inst_1 _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F))
+Case conversion may be inaccurate. Consider using '#align equicontinuous_of_equicontinuous_at_one equicontinuous_of_equicontinuousAt_oneₓ'. -/
 @[to_additive]
 theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [TopologicalSpace G]
     [UniformSpace M] [Group G] [Group M] [TopologicalGroup G] [UniformGroup M]
@@ -34,8 +40,14 @@ theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Topologica
       map_mul' := fun a b => by ext <;> exact map_mul _ _ _ }
   exact continuous_of_continuousAt_one φ hf
 #align equicontinuous_of_equicontinuous_at_one equicontinuous_of_equicontinuousAt_one
-#align equicontinuous_of_equicontinuous_at_zero equicontinuous_of_equicontinuous_at_zero
+#align equicontinuous_of_equicontinuous_at_zero equicontinuous_of_equicontinuousAt_zero
 
+/- warning: uniform_equicontinuous_of_equicontinuous_at_one -> uniformEquicontinuous_of_equicontinuousAt_one is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {G : Type.{u2}} {M : Type.{u3}} {hom : Type.{u4}} [_inst_1 : UniformSpace.{u2} G] [_inst_2 : UniformSpace.{u3} M] [_inst_3 : Group.{u2} G] [_inst_4 : Group.{u3} M] [_inst_5 : UniformGroup.{u2} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u3} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u1, u2, u3} ι G M (UniformSpace.toTopologicalSpace.{u2} G _inst_1) _inst_2 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F) (OfNat.ofNat.{u2} G 1 (OfNat.mk.{u2} G 1 (One.one.{u2} G (MulOneClass.toHasOne.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))))))) -> (UniformEquicontinuous.{u1, u3, u2} ι M G _inst_2 _inst_1 (Function.comp.{succ u1, succ u4, max (succ u2) (succ u3)} ι hom (G -> M) (coeFn.{succ u4, max (succ u2) (succ u3)} hom (fun (ᾰ : hom) => G -> M) (FunLike.hasCoeToFun.{succ u4, succ u2, succ u3} hom G (fun (_x : G) => M) (MulHomClass.toFunLike.{u4, u2, u3} hom G M (MulOneClass.toHasMul.{u2} G (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3)))) (MulOneClass.toHasMul.{u3} M (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u4, u2, u3} hom G M (Monoid.toMulOneClass.{u2} G (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_3))) (Monoid.toMulOneClass.{u3} M (DivInvMonoid.toMonoid.{u3} M (Group.toDivInvMonoid.{u3} M _inst_4))) _inst_7)))) F))
+but is expected to have type
+  forall {ι : Type.{u4}} {G : Type.{u3}} {M : Type.{u2}} {hom : Type.{u1}} [_inst_1 : UniformSpace.{u3} G] [_inst_2 : UniformSpace.{u2} M] [_inst_3 : Group.{u3} G] [_inst_4 : Group.{u2} M] [_inst_5 : UniformGroup.{u3} G _inst_1 _inst_3] [_inst_6 : UniformGroup.{u2} M _inst_2 _inst_4] [_inst_7 : MonoidHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))] (F : ι -> hom), (EquicontinuousAt.{u4, u3, u2} ι G M (UniformSpace.toTopologicalSpace.{u3} G _inst_1) _inst_2 (Function.comp.{succ u4, succ u1, max (succ u2) (succ u3)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F) (OfNat.ofNat.{u3} G 1 (One.toOfNat1.{u3} G (InvOneClass.toOne.{u3} G (DivInvOneMonoid.toInvOneClass.{u3} G (DivisionMonoid.toDivInvOneMonoid.{u3} G (Group.toDivisionMonoid.{u3} G _inst_3))))))) -> (UniformEquicontinuous.{u4, u2, u3} ι M G _inst_2 _inst_1 (Function.comp.{succ u4, succ u1, max (succ u3) (succ u2)} ι hom (G -> M) (FunLike.coe.{succ u1, succ u3, succ u2} hom G (fun (ᾰ : G) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : G) => M) ᾰ) (MulHomClass.toFunLike.{u1, u3, u2} hom G M (MulOneClass.toMul.{u3} G (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3)))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4)))) (MonoidHomClass.toMulHomClass.{u1, u3, u2} hom G M (Monoid.toMulOneClass.{u3} G (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_3))) (Monoid.toMulOneClass.{u2} M (DivInvMonoid.toMonoid.{u2} M (Group.toDivInvMonoid.{u2} M _inst_4))) _inst_7))) F))
+Case conversion may be inaccurate. Consider using '#align uniform_equicontinuous_of_equicontinuous_at_one uniformEquicontinuous_of_equicontinuousAt_oneₓ'. -/
 @[to_additive]
 theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [UniformSpace G]
     [UniformSpace M] [Group G] [Group M] [UniformGroup G] [UniformGroup M] [MonoidHomClass hom G M]
@@ -50,5 +62,5 @@ theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Uni
       map_mul' := fun a b => by ext <;> exact map_mul _ _ _ }
   exact uniformContinuous_of_continuousAt_one φ hf
 #align uniform_equicontinuous_of_equicontinuous_at_one uniformEquicontinuous_of_equicontinuousAt_one
-#align uniform_equicontinuous_of_equicontinuous_at_zero uniform_equicontinuous_of_equicontinuous_at_zero
+#align uniform_equicontinuous_of_equicontinuous_at_zero uniformEquicontinuous_of_equicontinuousAt_zero
 

Changes in mathlib4

mathlib3
mathlib4
refactor(Data/FunLike): use unbundled inheritance from FunLike (#8386)

The FunLike hierarchy is very big and gets scanned through each time we need a coercion (via the CoeFun instance). It looks like unbundled inheritance suits Lean 4 better here. The only class that still extends FunLike is EquivLike, since that has a custom coe_injective' field that is easier to implement. All other classes should take FunLike or EquivLike as a parameter.

Zulip thread

Important changes

Previously, morphism classes would be Type-valued and extend FunLike:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  extends FunLike F A B :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

After this PR, they should be Prop-valued and take FunLike as a parameter:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  [FunLike F A B] : Prop :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

(Note that A B stay marked as outParam even though they are not purely required to be so due to the FunLike parameter already filling them in. This is required to see through type synonyms, which is important in the category theory library. Also, I think keeping them as outParam is slightly faster.)

Similarly, MyEquivClass should take EquivLike as a parameter.

As a result, every mention of [MyHomClass F A B] should become [FunLike F A B] [MyHomClass F A B].

Remaining issues

Slower (failing) search

While overall this gives some great speedups, there are some cases that are noticeably slower. In particular, a failing application of a lemma such as map_mul is more expensive. This is due to suboptimal processing of arguments. For example:

variable [FunLike F M N] [Mul M] [Mul N] (f : F) (x : M) (y : M)

theorem map_mul [MulHomClass F M N] : f (x * y) = f x * f y

example [AddHomClass F A B] : f (x * y) = f x * f y := map_mul f _ _

Before this PR, applying map_mul f gives the goals [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Since M and N are out_params, [MulHomClass F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found.

After this PR, the goals become [FunLike F ?M ?N] [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Now [FunLike F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found, before trying MulHomClass F M N which fails. Since the Mul hierarchy is very big, this can be slow to fail, especially when there is no such Mul instance.

A long-term but harder to achieve solution would be to specify the order in which instance goals get solved. For example, we'd like to change the arguments to map_mul to look like [FunLike F M N] [Mul M] [Mul N] [highPriority <| MulHomClass F M N] because MulHomClass fails or succeeds much faster than the others.

As a consequence, the simpNF linter is much slower since by design it tries and fails to apply many map_ lemmas. The same issue occurs a few times in existing calls to simp [map_mul], where map_mul is tried "too soon" and fails. Thanks to the speedup of leanprover/lean4#2478 the impact is very limited, only in files that already were close to the timeout.

simp not firing sometimes

This affects map_smulₛₗ and related definitions. For simp lemmas Lean apparently uses a slightly different mechanism to find instances, so that rw can find every argument to map_smulₛₗ successfully but simp can't: leanprover/lean4#3701.

Missing instances due to unification failing

Especially in the category theory library, we might sometimes have a type A which is also accessible as a synonym (Bundled A hA).1. Instance synthesis doesn't always work if we have f : A →* B but x * y : (Bundled A hA).1 or vice versa. This seems to be mostly fixed by keeping A B as outParams in MulHomClass F A B. (Presumably because Lean will do a definitional check A =?= (Bundled A hA).1 instead of using the syntax in the discrimination tree.)

Workaround for issues

The timeouts can be worked around for now by specifying which map_mul we mean, either as map_mul f for some explicit f, or as e.g. MonoidHomClass.map_mul.

map_smulₛₗ not firing as simp lemma can be worked around by going back to the pre-FunLike situation and making LinearMap.map_smulₛₗ a simp lemma instead of the generic map_smulₛₗ. Writing simp [map_smulₛₗ _] also works.

Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -19,7 +19,7 @@ open UniformConvergence
 @[to_additive]
 theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type*} [TopologicalSpace G]
     [UniformSpace M] [Group G] [Group M] [TopologicalGroup G] [UniformGroup M]
-    [MonoidHomClass hom G M] (F : ι → hom)
+    [FunLike hom G M] [MonoidHomClass hom G M] (F : ι → hom)
     (hf : EquicontinuousAt ((↑) ∘ F) (1 : G)) :
     Equicontinuous ((↑) ∘ F) := by
   rw [equicontinuous_iff_continuous]
@@ -34,7 +34,8 @@ theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type*} [Topological
 
 @[to_additive]
 theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type*} [UniformSpace G]
-    [UniformSpace M] [Group G] [Group M] [UniformGroup G] [UniformGroup M] [MonoidHomClass hom G M]
+    [UniformSpace M] [Group G] [Group M] [UniformGroup G] [UniformGroup M]
+    [FunLike hom G M] [MonoidHomClass hom G M]
     (F : ι → hom) (hf : EquicontinuousAt ((↑) ∘ F) (1 : G)) :
     UniformEquicontinuous ((↑) ∘ F) := by
   rw [uniformEquicontinuous_iff_uniformContinuous]
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -17,7 +17,7 @@ open Function
 open UniformConvergence
 
 @[to_additive]
-theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [TopologicalSpace G]
+theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type*} [TopologicalSpace G]
     [UniformSpace M] [Group G] [Group M] [TopologicalGroup G] [UniformGroup M]
     [MonoidHomClass hom G M] (F : ι → hom)
     (hf : EquicontinuousAt ((↑) ∘ F) (1 : G)) :
@@ -33,7 +33,7 @@ theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Topologica
 #align equicontinuous_of_equicontinuous_at_zero equicontinuous_of_equicontinuousAt_zero
 
 @[to_additive]
-theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [UniformSpace G]
+theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type*} [UniformSpace G]
     [UniformSpace M] [Group G] [Group M] [UniformGroup G] [UniformGroup M] [MonoidHomClass hom G M]
     (F : ι → hom) (hf : EquicontinuousAt ((↑) ∘ F) (1 : G)) :
     UniformEquicontinuous ((↑) ∘ F) := by
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2022 Anatole Dedecker. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Anatole Dedecker
-
-! This file was ported from Lean 3 source module topology.algebra.equicontinuity
-! leanprover-community/mathlib commit 01ad394a11bf06b950232720cf7e8fc6b22f0d6a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Topology.Algebra.UniformConvergence
 
+#align_import topology.algebra.equicontinuity from "leanprover-community/mathlib"@"01ad394a11bf06b950232720cf7e8fc6b22f0d6a"
+
 /-!
 # Algebra-related equicontinuity criterions
 -/
chore: remove occurrences of semicolon after space (#5713)

This is the second half of the changes originally in #5699, removing all occurrences of ; after a space and implementing a linter rule to enforce it.

In most cases this 2-character substring has a space after it, so the following command was run first:

find . -type f -name "*.lean" -exec sed -i -E 's/ ; /; /g' {} \;

The remaining cases were few enough in number that they were done manually.

Diff
@@ -29,8 +29,8 @@ theorem equicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Topologica
   rw [equicontinuousAt_iff_continuousAt] at hf
   let φ : G →* (ι →ᵤ M) :=
     { toFun := swap ((↑) ∘ F)
-      map_one' := by dsimp [UniformFun] ; ext ; exact map_one _
-      map_mul' := fun a b => by dsimp [UniformFun] ; ext ; exact map_mul _ _ _ }
+      map_one' := by dsimp [UniformFun]; ext; exact map_one _
+      map_mul' := fun a b => by dsimp [UniformFun]; ext; exact map_mul _ _ _ }
   exact continuous_of_continuousAt_one φ hf
 #align equicontinuous_of_equicontinuous_at_one equicontinuous_of_equicontinuousAt_one
 #align equicontinuous_of_equicontinuous_at_zero equicontinuous_of_equicontinuousAt_zero
@@ -44,8 +44,8 @@ theorem uniformEquicontinuous_of_equicontinuousAt_one {ι G M hom : Type _} [Uni
   rw [equicontinuousAt_iff_continuousAt] at hf
   let φ : G →* (ι →ᵤ M) :=
     { toFun := swap ((↑) ∘ F)
-      map_one' := by dsimp [UniformFun] ; ext ; exact map_one _
-      map_mul' := fun a b => by dsimp [UniformFun] ; ext ; exact map_mul _ _ _ }
+      map_one' := by dsimp [UniformFun]; ext; exact map_one _
+      map_mul' := fun a b => by dsimp [UniformFun]; ext; exact map_mul _ _ _ }
   exact uniformContinuous_of_continuousAt_one φ hf
 #align uniform_equicontinuous_of_equicontinuous_at_one uniformEquicontinuous_of_equicontinuousAt_one
 #align uniform_equicontinuous_of_equicontinuous_at_zero uniformEquicontinuous_of_equicontinuousAt_zero
feat: port Topology.Algebra.Equicontinuity (#3841)

Co-authored-by: Johan Commelin <johan@commelin.net>

Dependencies 10 + 630

631 files ported (98.4%)
276602 lines ported (98.1%)
Show graph

The unported dependencies are

The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file