topology.algebra.equicontinuity
⟷
Mathlib.Topology.Algebra.Equicontinuity
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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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 _
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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 _
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/2f8347015b12b0864dfaf366ec4909eb70c78740
@@ -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.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/28b2a92f2996d28e580450863c130955de0ed398
@@ -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.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/2f8347015b12b0864dfaf366ec4909eb70c78740
@@ -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.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cc5dd6244981976cc9da7afc4eee5682b037a013
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
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.
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]
.
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_param
s, [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 sometimesThis 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.
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 outParam
s 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.)
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>
@@ -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]
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -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
@@ -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
-/
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.
@@ -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
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file